diff --git a/AGENTS.md b/AGENTS.md index a0f2db4..4c4e455 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,22 +2,24 @@ ## What this repo is -Thirty-six AI-generated disassemblies of NES ROMs, organized by mapper. 35 are promoted into the top-level `NROM/` and all verify **byte-identical for the whole ROM** (most recently Donkey Kong Jr. Math (U), Ice Climber (JE)/(U), Lode Runner (U), Pinball (JU), Popeye (JU) (PRG 1), Excitebike (JU), Raid on Bungeling Bay (U), Raid on Bungeling Bay (U) [a2], Pac-Man (U), Pac-Man (Tengen) (U), Pyramid (U), Hogan's Alley (JU) and Mario Bros (JU) on 2026-10-20); 857 more live under `_wip/` (30 mapper folders: `NROM`, `MMC1`, `UNROM`, `CNROM`, `MMC3`, `MMC5` and 24 more), all verifying **byte-identical for the whole ROM** as of 2026-10-20. All 36 promoted projects carry real disassemblies (Pass 1 or beyond); 856 of the 857 `_wip/` projects are **Pass 0 skeletons** (`prg.s` is a single `.incbin "prg.bin"`) and only `Golf (JU)` has a disassembly. The contract (stated in `PROMPTS.md` and verified by `make` in every project folder) is **byte-identical rebuilds**: `reconstructed.nes` must match the original ROM exactly. Not for distribution (`README.md`). +Forty-one AI-generated disassemblies of NES ROMs, organized by mapper. All 41 are promoted into the top-level mapper directories and all verify **byte-identical for the whole ROM** (most recently Golf (JU) and World Class Track Meet (U) on 2026-10-21); 851 more live under `_wip/` (29 mapper folders: `NROM`, `MMC1`, `UNROM`, `CNROM`, `MMC3`, `MMC5` and 23 more), all verifying **byte-identical for the whole ROM** as of 2026-10-21 (`make wip`: 851 of 851 built, 0 failures). All 41 promoted projects carry real disassemblies (Pass 1 or beyond); all 851 `_wip/` projects are **Pass 0 skeletons** (`prg.s` is a single `.incbin "prg.bin"`). The contract (stated in `PROMPTS.md` and verified by `make` in every project folder) is **byte-identical rebuilds**: `reconstructed.nes` must match the original ROM exactly. Not for distribution (`README.md`). ## Layout -- Projects live in a folder under **their mapper directory**: `NROM/`, `AOROM/`, `CNROM/`, `MMC1/`, `MMC3/`, `MMC5/`, `UNROM/`. Everything promoted so far is mapper 0 (16 KB PRG), so all promoted projects sit in `NROM/` — `AOROM`–`UNROM` are empty placeholders (2026-10-20). The pre-promotion tier mirrors the same structure at `_wip//` (currently 30 folders: `_wip/NROM/`, `_wip/MMC1/`, `_wip/UNROM/`, `_wip/CNROM/`, `_wip/MMC3/`, `_wip/MMC5/` and `_wip/MAPPER/` for every other mapper). AGENTS.md files written before 2026-10-20 say "top-level folder"; that location is now `//`. +- Projects live in a folder under **their mapper directory**: `NROM/`, `AOROM/`, `CNROM/`, `MMC1/`, `MMC3/`, `MMC5/`, `UNROM/`, `MAPPER8/`. The 41 promoted projects are 38 under `NROM/`, plus `CNROM/World Class Track Meet (U)` (mapper 3), `UNROM/Zanac (U)` (mapper 2) and `MAPPER8/Mermaids of Atlantis (U)` (mapper 8); `Xevious (U)` and `Volleyball (U)` are mapper 0 but have a 32 KB PRG, so `NROM/` also holds the only two mapper-0 projects that are not 16 KB. `AOROM`, `MMC1`, `MMC3` and `MMC5` are empty placeholders (2026-10-21). The pre-promotion tier mirrors the same structure at `_wip//` (currently 29 folders: `_wip/NROM/`, `_wip/MMC1/`, `_wip/UNROM/`, `_wip/CNROM/`, `_wip/MMC3/`, `_wip/MMC5/` and `_wip/MAPPER/` for every other mapper). AGENTS.md files written before 2026-10-20 say "top-level folder"; that location is now `//`. - **Each project folder is flat — there is no `copilot/` subfolder** (flattened 2026-10-20; commit history, root `README.md` and `TODO.md` predate the flatten and still say `copilot/...` — mentally strip the prefix). Every file sits in the project folder: `prg.s`, `header.s`, `chr.s`, `linker.cfg`, `symbols.inc`, `locals.inc`, `Makefile`, the `prg.bin`/`header.bin`/`chr.bin` splits, a built `rom.nes` copy/symlink of the original ROM, and a per-project `README.md` (power-on flow analysis — the file was called `OVERVIEW.md` before 2026-10-20). Bomberman (U)'s legacy `main.s` pre-standardization duplicate was removed 2026-10-20 (recoverable in git history) — every project's build source is `prg.s`. A few projects lack `prg.bin` (carve the PRG out of `rom.nes` instead). -- Root `Makefile` builds and verifies every project under all seven mapper directories: `make` (all), `make clean`, or `make ` for one tier, e.g. `make MMC3`. It loops with quoted sub-make invocations because project names contain spaces and parentheses, which break make-target names. It is non-parallel; each project's own `Makefile` verifies byte-identity before "Byte-identical ROM verified." is printed. -- Root `README.md` is the index for the **promoted** tier: vectors, build fixes, and summary for the 35 projects under `NROM/`. **Keep it in sync** when a project changes — its DK Jr. entries drifted badly before being corrected, and its vector column later turned out to have five rows wrong from copy-paste duplication. The **pre-promotion tier** (857 projects under `_wip/`) is indexed in `WIP.md`, which carries its layout, its quirks and its open work. +- Root `Makefile` builds and verifies every project under all eight mapper directories: `make` (all), `make clean`, or `make ` for one tier, e.g. `make MMC3`. It loops with quoted sub-make invocations because project names contain spaces and parentheses, which break make-target names. It is non-parallel; each project's own `Makefile` verifies byte-identity before "Byte-identical ROM verified." is printed. The `_wip/` pre-promotion tier is reached only through the separate `make wip` / `make wipclean` targets — `all`, `clean` and `` never touch it. **`WIP := _wip` at the top of the root `Makefile` is what makes those two targets work**: an empty `$(WIP)` expands the loop to `for m in /*/`, which walks the filesystem root instead of the tier. +- Root `CHANGELOG.md` is the repository's **running log** of every change, across **all** the projects. It has three parts: a **Pending** list at the top - the changes to be put in the next git commit - a **History** of the commits already made, and the **milestone index** at the end, which is the per-project pass history (one section per project with a row for each of the four milestones: **Pass 1** the code/data split, **Pass 2** the labels replaced by names, **Pass 3** the semantic naming, **Promotion** the move into the top-level mapper folder). **As work lands, a line goes into Pending; the next git commit's message is written from those entries, and they then move to History under the commit they went in with.** A milestone and its milestone-index row go in the same commit - the requirement is in `PROMPTS.md` ("Pass 3: Changelog entry"), and the checklist item is part of the promotion requirements. +- Root `README.md` is the index for the **promoted** tier: vectors, build fixes, and summary for the 41 promoted projects (38 under `NROM/`, plus `CNROM/World Class Track Meet (U)`, `UNROM/Zanac (U)` and `MAPPER8/Mermaids of Atlantis (U)`). **Keep it in sync** when a project changes — its DK Jr. entries drifted badly before being corrected, and its vector column later turned out to have five rows wrong from copy-paste duplication. The **pre-promotion tier** (851 projects under `_wip/`) is indexed in `WIP.md`, which carries its layout, its quirks and its open work. - `TODO.md` is the handoff: open work per project, plus the gotchas that cost real time. Read it before starting anything non-trivial. - `PROMPTS.md` is the workflow contract. `default_project.tar.gz` is the empty-project skeleton (flat: prg.s, symbols.inc, linker.cfg, Makefile, locals.inc). The master ROM store used to be `_ROMS/`; it was dissolved on 2026-10-20 and every ROM now lives in its own project folder under `_wip///`, so the ROM and its skeleton are side by side. -- `_tools/`: `nesdis.py` (Pass 1 tracer), `pass2.py` and `bytecode_dis.py` (Pass 2/3 emitters), `apply_symbols.py` (substitutes `symbols.inc`/`locals.inc` names into `prg.s` operands), `trace_stage_payload.py` (py65-based runtime tracer), `cdl_reclass.py` (Mesen-CDL-driven code/data split fix), `verify_pass1.py` (rebuild + re-trace check across the top-level projects), `audit_comment_tool.py` (adds canonical audit comments using tracer as ground truth), `repair_audit_comments.py` (repairs damaged audit trails — shifted/`??` comments — from the ca65 listing, validated against `prg.bin`), `apply_pass2_map.py` (applies an address→name Pass 2 map), `derive_branch_names.py` (derives the internal branch-target names), `apply_zp_aliases.py` (per-site zero-page alias substitution), `name_data_region.py` (names a data block, splitting the `.byte` row when needed), `resolve_raw_branches.py` (turns `bXX *+$NN` operands into labels), `align_audit_comments.py` (restores the canonical column-35 audit comment), `make_skeleton.py` (creates a byte-identical Pass 0 build skeleton for a project folder — splits the ROM, writes the ca65 sources, the linker config, the Makefile and the project README; refuses to overwrite an existing `prg.s` without `--force`), `splitnes.py`, `chr2gif.py`. +- `_tools/`: `nesdis.py` (Pass 1 tracer), `banked_dis.py` (Pass 1 tracer for a banked PRG — one segment per MMC3 bank, seeded from a Mesen CDL capture), `pass2.py` and `bytecode_dis.py` (Pass 2/3 emitters), `apply_symbols.py` (substitutes `symbols.inc`/`locals.inc` names into `prg.s` operands), `trace_stage_payload.py` (py65-based runtime tracer), `cdl_reclass.py` (Mesen-CDL-driven code/data split fix), `verify_pass1.py` (rebuild + re-trace check across the top-level projects), `audit_comment_tool.py` (adds canonical audit comments using tracer as ground truth), `repair_audit_comments.py` (repairs damaged audit trails — shifted/`??` comments — from the ca65 listing, validated against `prg.bin`), `apply_pass2_map.py` (applies an address→name Pass 2 map), `derive_branch_names.py` (derives the internal branch-target names), `describe_routines.py` (fills in the routine header blocks from the routine names), `apply_zp_aliases.py` (per-site zero-page alias substitution), `name_data_region.py` (names a data block, splitting the `.byte` row when needed), `resolve_raw_branches.py` (turns `bXX *+$NN` operands into labels), `align_audit_comments.py` (restores the canonical column-35 audit comment), `derive_clobbers.py` (derives the `; Clobbers:` block of every routine header — registers, flags and memory, with register preservation modelled), `make_skeleton.py` (creates a byte-identical Pass 0 build skeleton for a project folder — splits the ROM, writes the ca65 sources, the linker config, the Makefile and the project README; refuses to overwrite an existing `prg.s` without `--force`), `splitnes.py`, `chr2gif.py`. ## Commands ```bash make # repo root: build + verify every project (all mapper dirs) +make wip # repo root: build + verify every project under _wip/ cd "NROM/" && make # one project: builds reconstructed.nes, then cmp vs rom.nes python3 _tools/verify_pass1.py # rebuilds + re-traces the top-level projects ``` @@ -26,24 +28,28 @@ python3 _tools/verify_pass1.py # rebuilds + re-traces the top-level projects **There are two build tiers, and the difference is real.** Promoted projects (top-level `NROM/` etc.) compare the whole ROM against `rom.nes` in the project folder. Since 2026-10-20 the `_wip/` projects do the same — they carry `header.s`/`chr.s`, a HEADER/PRG/CHR `linker.cfg` and a `rom.nes`, and `make` compares the whole ROM. The real difference between the tiers is now **content, not plumbing**: a `_wip/` project may still be a Pass 0 skeleton (`prg.s` is a single `.incbin "prg.bin"`), so it is not promotable until it carries a real disassembly. -The root `Makefile` deliberately does **not** cover `_wip/`. Build the tier explicitly: +The root `Makefile` deliberately does **not** cover `_wip/` under `all`, `clean` or the per-mapper targets — those only ever touch the promoted tier. The pre-promotion tier has its own explicit targets: ```bash -for d in _wip/*/*/; do make -C "$d"; done +make wip # build + verify every _wip/// +make wipclean # clean the build artifacts in that tier ``` +(Equivalently, `for d in _wip/*/*/; do make -C "$d"; done` still works.) + ## Promoting a project out of `_wip/` 1. `git mv "_wip//" "/"` — everything is already flat, so nothing needs to move inside the folder. 2. The whole-ROM build is already in place (`header.s`/`chr.s`, the HEADER/PRG/CHR `linker.cfg` and `rom.nes`), so there is no Makefile or linker work left to do — promotion is `git mv` plus the disassembly work. This was still a manual step before 2026-10-20; `Lunar Pool (U)` (2026-10-18) and `Donkey Kong (JU)` (2026-10-19) are the worked examples, and DK (JU) also fixed a header-byte mirroring error in its project `README.md` (Vertical → Horizontal from byte 6 = `$00`). -3. `_tools/` paths: **now a no-op.** All project folders are the same two levels deep (`//` and `_wip///` alike), so `../../_tools/` is correct in both tiers. +3. `_tools/` paths: `../../_tools/` from a promoted project (`//`), but **`../../../_tools/` from a `_wip/` project** (`_wip///` is three levels deep, not two). `_tools/apply_pass2_map.py` and `_tools/derive_branch_names.py` take a `--bank-prefix` / bank-prefix argument for labels of banks that share a CPU window. 4. Verify `make`, then `make regen` if a regen pipeline exists. 5. Add it to the root `README.md` inventory and remove its row from `WIP.md`. +6. **Delete the old `_wip/` folder.** `git mv` moves only the *tracked* files, so the old folder survives with its untracked build artifacts (`*.o`, `reconstructed.nes`, `reconstructed.lbl`, `reconstructed.map`) and sometimes a stale `README.md`. A leftover folder counts as a project in every tier tally while having no source to build — `Xevious (U)` and `Zanac (U)` both left one behind on 2026-10-20, and both were cleaned up on 2026-10-21. ## Irreversible conventions (do not "clean up" past these) -- Every instruction carries a trailing audit comment with its CPU address, PRG offset and exact emitted bytes. **The canonical format is `; CPU:$C123 PRG:0123 AD 21 03` — all 33 top-level projects now use this exact format** (standardized 2026-10-19; Donkey Kong (JU) confirmed canonical at its promotion the same day). This is the byte-identity audit trail — preserve it even while renaming labels or restructuring files. The earlier gap (6 variants, 1,013 uncommented lines in Excitebike) was closed 2026-10-19 via `_tools/audit_comment_tool.py`; Excitebike's shifted/`??` damage was re-anchored 2026-10-20 via `_tools/repair_audit_comments.py` (listing-based, self-validating against `prg.bin`). +- Every instruction carries a trailing audit comment with its CPU address, PRG offset and exact emitted bytes. **The canonical format is `; CPU:$C123 PRG:0123 AD 21 03` — all 41 promoted projects now use this exact format** (standardized 2026-10-19; the last pre-canonical project, `Golf (JU)`, was converted at its Pass 2/3 and promotion on 2026-10-21, so no project in the tree uses the old `; C007: AD 02 20` spelling for its audit trail). This is the byte-identity audit trail — preserve it even while renaming labels or restructuring files. The earlier gap (6 variants, 1,013 uncommented lines in Excitebike) was closed 2026-10-19 via `_tools/audit_comment_tool.py`; Excitebike's shifted/`??` damage was re-anchored 2026-10-20 via `_tools/repair_audit_comments.py` (listing-based, self-validating against `prg.bin`). - The audit comment starts at **column 35**: `nesdis.py` pads each instruction to 31 characters before the `; `. A Pass 3 substitution that lengthens an operand pushes the comment right, so **re-align after substitutions** with `_tools/align_audit_comments.py` (whitespace-only — it cannot change the bytes). - Unreached/unresolved bytes stay as data (`Label_/Data/` `.byte` or `.incbin` blocks with ROM provenance), never deleted or reformatted. - Routine headers follow the template in `prg.s`: global + local description, parameters, returns, clobbers. @@ -53,11 +59,14 @@ for d in _wip/*/*/; do make -C "$d"; done ## Hard-won quirks (details in root `README.md` per-project "Build fix") -- **The `_wip/` tier is mostly a banked mapper with a PRG image larger than the 6502's address space.** Only 2 of its 857 projects have a 16 KB PRG; 151 have 32 KB, 523 have 128 KB and one (`Action 52 (U) [!]`) has 1.5 MB. Those projects link their MEMORY areas at **.nes file offsets** (HEADER at `$0000`, PRG at `$0010`, CHR after it) rather than at CPU addresses, which is both the only option and the honest model for a banked mapper. The 39 older `_wip/` projects keep the CPU-address layout (`$C000`/`$4000` or `$8000`/`$8000`) because their PRG really is one contiguous window. See "Two linker layouts" in `WIP.md`. +- **The `_wip/` tier is mostly a banked mapper with a PRG image larger than the 6502's address space.** Only 2 of its 851 projects have a 16 KB PRG; 149 have 32 KB, 522 have 128 KB and one (`Action 52 (U) [!]`) has 1.5 MB. Those projects link their MEMORY areas at **.nes file offsets** (HEADER at `$0000`, PRG at `$0010`, CHR after it) rather than at CPU addresses, which is both the only option and the honest model for a banked mapper. The 38 older `_wip/` projects keep the CPU-address layout (`$C000`/`$4000` or `$8000`/`$8000`) because their PRG really is one contiguous window. See "Two linker layouts" in `WIP.md`. - **The mapper comes from the iNES header**: byte 6's upper nybble is mapper bits 0-3, byte 7's upper nybble is mapper bits 4-7. `_wip/` uses the repo's board vocabulary where it exists (`NROM`, `MMC1`, `UNROM`, `CNROM`, `MMC3`, `MMC5`) and `MAPPER` for every other mapper. - **ld65 writes the output file in MEMORY *declaration* order, not address order.** The areas must be declared in the order the bytes appear in the `.nes` file: `HEADER, PRG, CHR, TRAILER`. +- **A banked PRG needs one MEMORY area per bank, and one segment per bank.** `Mermaids of Atlantis (U)` (mapper 8, 64 KB PRG) declares `PRG0`..`PRG7` at the eight file offsets and gives each segment its own `.org` for the CPU window the bank is visible at. The bytes land at the right file offset (the image is byte identical) *and* the assembler knows the CPU address of every label, so `jsr SomeRoutine` assembles to the right operand. A flat segment cannot do both: its addresses are file offsets, and a call would encode the file offset instead of the CPU address. Labels of a bank that shares its CPU window with another bank need a prefix (`Bank4_`..`Bank7_`); `_tools/apply_pass2_map.py` and `_tools/derive_branch_names.py` take a `--bank-prefix` / bank-prefix argument for that. +- **The MMC3's fixed bank is not always the last 8 KB of the PRG.** On real hardware $E000-$FFFF is the last bank, but a 64 KB MMC3 image can be built so the game expects another one: in `Mermaids of Atlantis (U)` the fixed bank is the *fourth* 8 KB bank (file $6000-$7FFF) - the text table the code reads at $F1D6 is there, and the image repeats the reset stub and the vectors at the end so it also boots on a mapper that fixes the last bank. The dump's own code settles the question: the NMI vector in the fixed bank names a handler that exists, and the copy at the end of the image names one that does not. - **Memory area sizes are hexadecimal.** `size = $127` is 295 bytes, not 127. -- **227 `_wip/` projects have no CHR at all** (the mapper supplies CHR RAM), so they have no `chr.bin` and no CHR area. Six have trailing bytes the header does not account for, reproduced by a `TRAILER: size = $007F` area — and the two `Wall Street Kid` dumps have 64 KB of trailing graphics data whose header size fields are simply wrong. +- **226 `_wip/` projects have no CHR at all** (the mapper supplies CHR RAM), so they have no `chr.bin` and no CHR area. Six have trailing bytes the header does not account for, reproduced by a `TRAILER: size = $007F` area — and the two `Wall Street Kid` dumps have 64 KB of trailing graphics data whose header size fields are simply wrong. +- **Header byte 6 bit 0 is the mirroring bit and nothing else is.** `0` = Horizontal, `1` = Vertical — the convention `README.md` states and every per-project README uses. Bit 1 is the battery flag, bit 2 the trainer flag and bit 3 four-screen VRAM; each has its own row. Folding the battery bit into the mirroring value is a bug that once made 56 battery-backed `_wip/` READMEs claim `Four-screen`. Also: **Pass 3 naming expectations for promotion are in `PROMPTS.md`** — every branch/jump target must carry a ROM-specific semantic name (no `Label_CXXXX`, no raw `$XXXX` operands), and comment/audit alignment is re-done after substitutions. @@ -65,7 +74,7 @@ Also: **Pass 3 naming expectations for promotion are in `PROMPTS.md`** — every - Zero pages are reused across modes; aliases may be required in `locals.inc` (e.g. `RandomStateAlt = $E4` beside `RandomState0 = $54`). - Donkey Kong Jr. is architecturally different: reset entry is $C66E, the reset path idles forever in an LFSR loop, and the entire frame state machine runs inside NMI. Its `DeferredTaskHandlerTable` entry 0 deliberately mirrors the IRQ vector word at $BFFE. - IRQ vectors often point at unused/data targets in these games — verify before assuming a handler is broken. -- Unlicensed titles break static-trace assumptions: Pyramid (U) pokes a mapper unlock at `$4100` (beyond the register space) despite a mapper-0 header, and dispatches through `jmp ($0002)` built from RAM — trace via its two queue tables (`$C3A6`, `$CCD5`), and do NOT fall-through-seed gaps that follow `rts`/`jmp`/`brk` (that misclassifies data as code). +- Unlicensed titles break static-trace assumptions: Pyramid (U) (Sachen) pokes a mapper unlock at `$4100` (beyond the register space) despite a mapper-0 header, and dispatches through `jmp ($0002)` built from RAM — trace via its two queue tables (`$C3A6`, `$CCD5`), and do NOT fall-through-seed gaps that follow `rts`/`jmp`/`brk` (that misclassifies data as code). - ROM filenames contain spaces **and parentheses** (e.g. `M.U.S.C.L.E. (U).nes`); builds `incbin` a space-free `rom.nes` in the project folder. Keep that copy/symlink working and don't rename it. Note that a name with spaces/parens is also what makes FCEUX hang headless — symlink it to a clean name and run under Xvfb. - `.gitignore` contains `ROMS/*` but the actual directory is `_ROMS` — the pattern matches nothing, so ROM binaries stay tracked. Check before committing large blobs. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..bd15bfc --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,520 @@ +# Changelog + +A running log of every change made in this repository. It covers **all** +of the projects - the promoted tier and the `_wip/` tier alike - and it is +also the staging area for the next commit. + +## How this file is used + +1. **As work lands**, a line goes into **Pending**: the project it touches + and what changed. Nothing else is needed - the entry is the record. +2. **At commit time**, the commit's message is written *from* the entries in + **Pending**. The entries are the summary of what the commit contains, so + the message and the log cannot drift apart. +3. **After the commit**, the entries move to **History** under the commit + they went in with, and **Pending** starts again empty. + +**Pending** - the list of changes to be put in the next git commit. +**History** - the running log of the commits that have already been made. +**The milestone index** at the end - the per-project pass history: which of +the four milestones each project has reached, and when. That part is a +status table rather than a log, and it is what `PROMPTS.md` asks for when a +project reaches a milestone. + +## Pending + +- **Docs** - tier counts refreshed to the post-promotion state across `AGENTS.md`, root `README.md`, `WIP.md`, `TODO.md` and `CHANGELOG.md`: **41 promoted projects** (38 under `NROM/`, plus `CNROM/World Class Track Meet (U)`, `UNROM/Zanac (U)` and `MAPPER8/Mermaids of Atlantis (U)`) and **851 `_wip/` projects**, every one of them a Pass 0 skeleton. The stale "39/40 promoted", "853 `_wip`", "`Golf (JU)` is still in `_wip/`" and "`Golf (JU)` is the last pre-canonical project" statements are corrected. +- **Root `README.md`** - the promoted inventory gained the missing `World Class Track Meet (U)` row (row 41, mapper 3, 32 KB PRG / 32 KB CHR), and the "All 38 are mapper 0 / 16 KB PRG" sentence is replaced with the actual split (36 of the 41 rows are mapper 0 / 16 KB; `Xevious (U)` and `Volleyball (U)` are 32 KB, `World Class Track Meet (U)` is mapper 3, `Zanac (U)` mapper 2 and `Mermaids of Atlantis (U)` mapper 8). + +## History + +Entries move here when the commit they describe is made, newest first. The +commit subject is the heading; the entries are the changes it carried. + +### 2026-10-21 - Xevious (U): re-split Pass 1 from the Mesen CDL and decode the data tables + +- **Xevious (U)** - Pass 1 re-split from the Mesen CDL (`xevious_mesen.cdl`) with `_tools/cdl_reclass.py`: 1,158 bytes data→code, 48 code→data, 42 labels emitted and 3 branch targets labelled; code 11,321→12,455 bytes (34.5%→38.0%), instructions 5,513→6,002. The 45 recovered entry points are named `Sub_XXXX`, so no `Label_XXXX` remains; six CDL-silent raw call operands are documented as residue. +- **Xevious (U)** - the 4,448-byte block at $A74B-$B8AA is split into six proven tables: `VramWritePtrTable` (15 pointers), `VramWriteData` (descriptors written to $2006/$2007), `DataStreamPtrTable` (16 pointers), `ObjTilePtrTable` (99 pointers), `ObjTileData` and `DataStreamData`. The $D833 pointer table is corrected to base $D833 (4 entries; the old `ObjCodePtrTable` at $D834 was one byte late). $F957-$FAF5 is split into `ObjSpeedTable`, `ObjSpeedTable2`, `SpriteLayoutPtrTable` (19 pointers) and `SpriteLayoutData`; $FEE6-$FF1C into `PaletteData` and `OamAttrTable`. `$F5D8` is decoded as `TextTileData` (font tile indices: PLAYER, GAME OVER, READY, SOLVALOU, LEFT, PAUSE); `$F53C` becomes `AttrAddrTable`, `$F89E` `HandlerPtrTable` and `$EF3B` `SpriteLayoutData2`. Project README rewritten with the corrected stats, a 32-entry table inventory and the Pass 1 residue. +- **_tools/cdl_reclass.py** - preserve the data label(s) that sit between a `; ---- data` header and its first `.byte` row when the block stays data. The $DF78 split dropped `Data_DF78`, which unchanged code still referenced, so the rebuild failed with an undefined symbol. +- **_tools/resolve_raw_branches.py** - handle negative relative offsets (`beq *-$0B`); the pattern only matched `*+$NN` and `*$NN`, so backward branches could not be resolved. + +### 2026-10-21 - Golf (JU) and World Class Track Meet (U): Pass 2/3 complete, promoted from `_wip/` + +- **World Class Track Meet (U)** - Pass 2 complete: all 884 `Label_` definitions replaced (651 semantic routine names + 233 `Sub_`), all 731 raw `$XXXX` jsr/jmp call operands resolved to symbolic labels, all branch targets given role-based names; `routinemap.tsv` added; `make` stays byte-identical. +- **World Class Track Meet (U)** - Pass 3 complete: 24 semantic zero-page aliases applied via `apply_symbols.py` (0 residue), 78 neutral `ZpXX` slots documented with reasons in `locals.inc`, all hardware-register operands use `symbols.inc` names, project README rewritten with Pass 2/Pass 3 sections and data-table inventory; project is ready for promotion out of `_wip/CNROM/`. +- **World Class Track Meet (U)** - project README now says what the five entries of the event table at $F796 line up with (the five *single* events of the six-item menu) and marks the sixth item, the "olympics", as not yet proven: the menu's own code is still outside the traced set, so the mode that schedules several of the five task slots at once is the expected answer, not a proven one. +- **Golf (JU)** - audit comments converted from pre-canonical (`; C000: A9 00`) to the canonical `; CPU:$C000 PRG:0000 A9 00` form at column 35 via `_tools/repair_audit_comments.py` then `_tools/align_audit_comments.py`; 4,156 comments re-aligned, comment/whitespace only, whole-ROM build stays byte-identical. +- **Golf (JU)** - 339 internal branch-target `Label_` labels given role-based names (`_Loop`, `_OnZero`, …) via `_tools/derive_branch_names.py` from `routinemap.tsv` and applied with `_tools/apply_pass2_map.py`; 10 fall-through-only labels keep their `Label_` definitions; 0 raw `$XXXX` branch/jump operands remain. +- **Golf (JU)** - 275 zero-page operands substituted with `locals.inc` aliases via `apply_symbols.py`; all hardware-register operands already symbolic; 0 multi-alias residue; no unexplained numeric operands left. +- **Golf (JU)** - project README updated: Pass 2/Pass 3 marked complete, audit-comment and Pass 3 sections rewritten, `routinemap.tsv` added; project is ready for promotion out of `_wip/NROM/`. +- **Golf (JU)** and **World Class Track Meet (U)** - promoted out of `_wip/` (`git mv` to `NROM/Golf (JU)/` and `CNROM/World Class Track Meet (U)/`); leftover `_wip/` folders removed; root `README.md` inventory rows added; `WIP.md` rows removed. +- **Xevious (U)** - runs of `$FF` padding replaced with `.res , $FF` in `prg.s`; whole-ROM build stays byte-identical. + +### 2026-10-21 - World Class Track Meet (U): Pass 1, the code/data split + +- **World Class Track Meet (U)** - Pass 1 done. The code/data split is 8,400 +- **World Class Track Meet (U)** - four dispatch tables had to be seeded by +- **World Class Track Meet (U)** - the tracer runs with `--undocumented`: the +- **World Class Track Meet (U)** - `$C0BE-$C0C5` is forced back to data: the +- **World Class Track Meet (U)** - `make pass1` regenerates `prg.s` and +- **_tools/nesdis.py** - new `--mapping-note` option, so the header's "PRG +- **Docs** - the project README records the split, the four dispatch tables, the + +### 2026-10-21 - Balloon Fight (JU): repair the audit trail and complete the routine headers + +- **Balloon Fight (JU)** - the per-instruction audit trail was repaired. 5,944 of + the 6,007 comments had been stale by two bytes since the three-byte `.byte "HAL"` + signature at $C082-$C084 was counted as one, so every comment from + `ResetInitializationData` ($C085) onward named the wrong CPU address and PRG + offset; the routine headers and the linker labels were right, so the source and + its own headers disagreed. The trail was rebuilt from the `ca65 -l` listing with + `_tools/repair_audit_comments.py` and every rewritten comment was re-checked + against `prg.bin`. +- **Balloon Fight (JU)** - the audit comments were moved into the canonical + column-35 field. They had sat two spaces after the mnemonic, with no column + discipline at all, unlike every other promoted project. +- **Balloon Fight (JU)** - all 63 routine headers now carry a `; Clobbers:` block, + so the headers carry the full template `AGENTS.md` describes. The blocks are + derived, not written by hand: `_tools/derive_clobbers.py` takes the opcode from + the audit comment's byte list, resolves the operand through `locals.inc` and + `symbols.inc` to name what is written, follows the real control flow, and models + register preservation - so `NmiHandler` reports *no register* and + `FlushPpuCommandPreserved` reports only A. +- **Balloon Fight (JU)** - `ReflectObjectYVelocity` and `UpdateSpecialObjectSystem` + moved out of `locals.inc` and became labels in `prg.s` at their real addresses. +- **_tools** - new `derive_clobbers.py`, which fills in the `; Clobbers:` block of + every routine header from the source. +- **_tools** - `align_audit_comments.py` had an off-by-one: it tested the + *indented* code length against 31 instead of against 35, so code texts of 28-31 + characters were never padded into the column. +- **Docs** - the project README gains the audit-trail and clobber sections, the + root README and `TODO.md` carry the same news, `AGENTS.md` and `PROMPTS.md` + describe this changelog's new shape, and `CHANGELOG.md` itself becomes the + running log with a pending list. +- **WIP.md** - `_wip/MAPPER8/` is gone; it held a copy of `Mermaids of Atlantis (U)` + that had already been promoted. + +--- + +## The milestone index + +The four milestones every project walks through, and the state of each +project against them. + +### The four milestones + +| Milestone | What it does | How it is checked | +|-----------|--------------|-------------------| +| **Pass 1** | The code/data split: every ROM byte is classified as an instruction or as data, with the audit comment (`; CPU:$C123 PRG:0123 AD 21 03`) on every instruction. | Every byte of the PRG image is accounted for exactly once, and the audit comments re-check against `prg.bin`. | +| **Pass 2** | The labels are replaced by names: the address-derived `Label_XXXX` definitions become semantic routine names, and the internal branch targets get role names (`_OnNonzero`, `_Loop`). | No `Label_XXXX` definition is left, no branch or jump operand is a raw `$XXXX`, and every label is defined exactly once. | +| **Pass 3** | The semantic naming: the data tables, the zero-page aliases and the hardware register operands get the names the dump proves, and the routine headers are written. | `apply_symbols.py` reports no unexplained residue, and every alias that is not proven is recorded with its reason. | +| **Promotion** | The project moves out of `_wip/` into its mapper folder with the whole-ROM build in place. | `make` in the project folder prints **Byte-identical ROM verified.** against `rom.nes`. | + +A project is only promoted when Pass 2 and Pass 3 are done, the promotion +requirements in `PROMPTS.md` are met, and the whole ROM rebuilds byte for +byte. `PROMPTS.md` is the contract; this file is the history. + +**On the dates.** A date is the day the repository records the milestone: +the commit that carried it, or the day the project README dates the work. +Where neither does, the milestone is dated to the wave it was committed +with - the 2026-10-15 build standardisation, the 2026-10-18 `_wip` pass-1 +wave, the 2026-10-19 naming wave, or the 2026-10-20 promotion wave. A +milestone that is still open says so in the row. + +### The tiers + +- **Promoted** — 41 projects in the top level `NROM/`, `CNROM/`, `UNROM/` and + `MAPPER8/` folders. Each one below has been through all four milestones + unless its entry says otherwise. +- **`_wip/`** — 851 projects that are still Pass 0 skeletons: `prg.s` is a + single `.incbin "prg.bin"`. They have a build and a byte-identical + rebuild, but no disassembly yet. `Golf (JU)` and `World Class Track Meet + (U)` were the tier's last two real disassemblies and were both promoted on + 2026-10-21, so no project in the tier carries one now. + +### Balloon Fight (JU) — `NROM/Balloon Fight (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-16 | First disassembly 2026-10-09; verified complete on the 16th: 5,303 instructions / 11,260 code bytes (68.7 %). The last two `.incbin` spans were turned into explicit classified bytes, so no ROM byte is hidden. | +| Pass 2 | 2026-10-19 | Every label renamed; the zero-page aliases written into `locals.inc`. | +| Pass 3 | 2026-10-19 | 125 hardware and 797 of 813 zero-page operands substituted; the 16 that stay numeric are recorded. 2026-10-21: the audit trail was repaired - 5,944 comments had been stale by two bytes since a three byte `.byte "HAL"` signature had been counted as one. 2026-10-21: every routine header now carries a derived `; Clobbers:` block (63 of 63), so the headers carry the full template - global, local, parameters, returns, clobbers. | +| Promotion | 2026-10-09 | In the top level from the start - there was no `_wip/` tier yet. The build and the per-project power-on README were standardised on 2026-10-15. | + +### Baseball (UE) — `NROM/Baseball (UE)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-09 | First disassembly; `prg.s` is the largest source in the set at 21,624 lines. | +| Pass 2 | 2026-10-19 | Labels renamed in the audit-comment standardisation wave. | +| Pass 3 | 2026-10-19 | 121 operands substituted (85 single-name + 36 hardware), zero residue. | +| Promotion | 2026-10-09 | In the top level from the start - there was no `_wip/` tier yet. The build and the per-project power-on README were standardised on 2026-10-15. | + +### Bomberman (U) — `NROM/Bomberman (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-09 | First disassembly. | +| Pass 2 | 2026-10-19 | Labels renamed. | +| Pass 3 | 2026-10-19 | 354 single-name and 8 site-resolved multi-alias operands applied, 24 table labels taken from the linker map. Residue recorded: 758 unnamed operands over 179 distinct addresses. | +| Promotion | 2026-10-09 | In the top level from the start - there was no `_wip/` tier yet. The build and the per-project power-on README were standardised on 2026-10-15. | The build fix: `RandomStateAlt = $E4` beside `RandomState0 = $54` for the reused zero page. | + +### Burger Time (U) — `NROM/Burger Time (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-09 | First disassembly; byte identical out of the box. | +| Pass 2 | 2026-10-19 | Labels renamed. | +| Pass 3 | 2026-10-19 | Symbols applied. | +| Promotion | 2026-10-09 | In the top level from the start - there was no `_wip/` tier yet. The build and the per-project power-on README were standardised on 2026-10-15. | + +### CIRCUS — `NROM/CIRCUS/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-16 | Full code/data classification; the main loop is a spin loop at $C057 and every frame's work runs in the NMI. | +| Pass 2 | 2026-10-16 | Semantic routine naming. | +| Pass 3 | 2026-10-19 | 118 operands substituted (38 single-name + 80 hardware); 23 multi-alias residues recorded. | +| Promotion | 2026-10-16 | Promoted out of `_wip/`; the menu text table at $C763 and the variant object machine at $DC3F-$FE7B documented. | + +### Clu Clu Land (JU) — `NROM/Clu Clu Land (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-09 | First disassembly. | +| Pass 2 | 2026-10-19 | Labels renamed. | +| Pass 3 | 2026-10-19 | Symbols applied. | +| Promotion | 2026-10-09 | In the top level from the start - there was no `_wip/` tier yet. The build and the per-project power-on README were standardised on 2026-10-15. | The build fix: a `bpl` the flat disassembler had mislabelled at $FAB4, written as `bne *-$1B` to reproduce the ROM bytes. | + +### Defender 2 (U) — `NROM/Defender 2 (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-09 | First disassembly. | +| Pass 2 | 2026-10-19 | Labels renamed. | +| Pass 3 | 2026-10-19 | Symbols applied. | +| Promotion | 2026-10-09 | In the top level from the start - there was no `_wip/` tier yet. The build and the per-project power-on README were standardised on 2026-10-15. | The build fix: the same `bpl` mislabel, at $E811. | + +### Donkey Kong (JU) — `NROM/Donkey Kong (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-18 | 6,014 instructions / 12,505 code bytes (76.3 %); the reset entry is at $C79E, not $C000. | +| Pass 2 | 2026-10-19 | All 919 `Label_XXXX` definitions named: 102 semantic routine names, 217 `SubC` entries and 600 derived internal branch targets. | +| Pass 3 | 2026-10-19 | 10 named data regions, 75 operands substituted. | +| Promotion | 2026-10-19 | `git mv` out of `_wip/`; the mirroring was corrected from Vertical to Horizontal (header byte 6 = $00). | + +### Donkey Kong 3 (JUE) — `NROM/Donkey Kong 3 (JUE)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-16 | The build was split into `header.s` / `prg.s` / `chr.s`, and a one byte branch-target bug was fixed: the `bne` at $C14C was labelled `StoreSelectedPlayerAndScreenFlags` instead of the routine at $C160, so the project had never actually built byte identical. | +| Pass 2 | 2026-10-19 | Labels renamed. | +| Pass 3 | 2026-10-19 | Symbols applied. | +| Promotion | 2026-10-15 | Top-level wave: the build was standardised and the project got its power-on README. | + +### Donkey Kong Jr. (JU) — `NROM/Donkey Kong Jr. (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-16 | Verified complete by a byte-accounting audit: all 16,384 PRG bytes are emitted exactly once (6,135 instructions + 3,889 `.byte` + 16 `.word`), with no audit-comment mismatch and no `.incbin` left. 75.4 % code. | +| Pass 2 | 2026-10-19 | Labels renamed. | +| Pass 3 | 2026-10-19 | The tables named - `DeferredTaskHandlerTable`, `HudDigitDescriptorTable` and the rest. | +| Promotion | 2026-10-16 | Promoted out of `_wip/`. Architecturally different from the rest: the reset idles in a PRNG loop and the whole frame state machine runs inside the NMI. | + +### Donkey Kong Jr. Math (U) — `NROM/Donkey Kong Jr. Math (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-19 | 6,589 instructions / 13,416 code bytes (81.9 %). | +| Pass 2 | 2026-10-19 | Restarted from the committed split after the 2026-10-18 draft map was audited and found to have no safely applicable row; 1,035 labels named (64 semantic + 295 `SubC` + 676 internal). | +| Pass 3 | 2026-10-19 | 18 data tables named, 13 semantic zero-page aliases, all multi-alias operands substituted. | +| Promotion | 2026-10-19 | Top level; the whole-ROM verify closed on 2026-10-20 after four call sites that named a back-branch block instead of the routine it belongs to were repointed. | + +### Duck Hunt (JUE) — `NROM/Duck Hunt (JUE)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-19 | 3,058 instructions / 6,152 code bytes (37.5 %). | +| Pass 2 | 2026-10-19 | Restarted from the committed split; 472 labels named (30 semantic + 428 `SubC` + 293 internal). | +| Pass 3 | 2026-10-19 | 20 data tables named, 18 semantic zero-page aliases. | +| Promotion | 2026-10-19 | Top level. | + +### Excitebike (JU) — `NROM/Excitebike (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-09 | First disassembly. | +| Pass 2 | 2026-10-19 | Labels renamed. | +| Pass 3 | 2026-10-19 | The audit comments were completed - 1,013 lines had none. 2026-10-20: the trail was re-anchored from the `ca65` listing (6,339 shifted comments and 4,401 doubled `??` forms) and all 58 raw `jsr`/`jmp` operands were given routine names. | +| Promotion | 2026-10-09 | In the top level from the start - there was no `_wip/` tier yet. The build and the per-project power-on README were standardised on 2026-10-15. | The build fix: two NMI operands that spend their byte on `$11` were emitted with the wrong shadow name. | + +### Golf (JU) — `_wip/NROM/Golf (JU)/` — *ready for promotion out of `_wip/`* + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | The whole-ROM compare was added: the project builds byte identical. 4,217 reachable instructions in `prg.s` (13,541 lines); all remaining `.incbin` spans confirmed data with zero code entry points. | +| Pass 2 | 2026-10-21 | All 112 subroutine entries named (4 semantic + 108 `SubC`); all jsr/jmp call sites symbolic, 0 raw `$XXXX` call operands; 339 of 349 internal branch targets given role-based names (`_Loop`, `_OnZero`, …); 10 fall-through-only labels keep their `Label_` definitions. | +| Pass 3 | 2026-10-21 | Audit comments canonical at column 35 (4,156 re-aligned via `_tools/repair_audit_comments.py` + `_tools/align_audit_comments.py`); all hardware-register operands use `symbols.inc` names; 275 zero-page operands substituted with `locals.inc` aliases via `apply_symbols.py`, 0 residue; every branch/jump target symbolic. | +| Promotion | — | Outstanding (awaiting `git mv` to `NROM/Golf (JU)/` plus root `README.md` inventory row). | + +### World Class Track Meet (U) — `_wip/CNROM/World Class Track Meet (U)/` — *ready for promotion out of `_wip/`* + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-21 | The code/data split is done: 8,400 instructions / 18,028 code bytes (55.0 %) of the 32 KB PRG, 884 routine entries, 55 data blocks, 102 zero-page aliases. The PRG is CNROM (mapper 3) and maps whole at $8000-$FFFF, so the linker moved the PRG segment from a file offset to $8000. Four dispatch tables had to be seeded by hand: the event table at $F796 (5 entries, read at $F780 and jumped to through `jmp ($001F)`) and three push-pointer tables - $BFC4 (16), $BFE4 (2) and $E5F2 (7) - which store the handler address *minus one*, because the handler is pushed and an `rts` lands on it. The tracer runs with `--undocumented`: the code uses undocumented NMOS opcodes as ordinary code. Seeding the tables takes the coverage from 27.8 % to 55.0 %. The rebuild is byte identical. | +| Pass 2 | 2026-10-21 | All 884 `Label_XXXX` definitions replaced: 651 semantic routine names (`Reset`, `NmiHandler`, `MainLoop`, `TaskDispatch`, `EventInit`, `EventTaskRun`, `SpriteSetup`, `ObjectState`, `SoundNote`, `OlympicsScheduler`, …) plus 233 `Sub_` address-derived residue. All 731 raw `$XXXX` jsr/jmp call operands resolved to symbolic labels; every branch target given a role-based name (`_Loop`, `_OnZero`, `_OnNonzero`, …); `routinemap.tsv` holds the address→name map. | +| Pass 3 | 2026-10-21 | 24 semantic zero-page aliases applied via `apply_symbols.py` (0 residue), 78 neutral `ZpXX` slots documented with reasons in `locals.inc`, all hardware-register operands use `symbols.inc` names, data-table inventory documented in the project README. | +| Promotion | — | Outstanding (awaiting `git mv` to `CNROM/World Class Track Meet (U)/` plus root `README.md` inventory row). | + +### Hogan's Alley (JU) — `NROM/Hogan's Alley (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | The static trace had classified only 41.8 % of the PRG as code. A merged Mesen CDL capture (five captures, 6,544 code bytes) moved 1,216 bytes from data to code and five the other way, taking the split to 49.1 %. | +| Pass 2 | 2026-10-20 | A fresh map from this dump's own committed split: 206 routine entries hand-named and 413 internal branch targets derived. | +| Pass 3 | 2026-10-20 | 60 semantic zero-page aliases, each applied only where its role is proven. | +| Promotion | 2026-10-20 | Top level. | + +### Ice Climber (JE) — `NROM/Ice Climber (JE)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-19 | 6,112 instructions / 12,230 code bytes (74.6 %). | +| Pass 2 | 2026-10-19 | Restarted from the committed split; 973 labels named (76 semantic + 212 `SubC` + 685 internal). | +| Pass 3 | 2026-10-19 | 9 semantic zero-page aliases, the hardware operands substituted, the data tables named. | +| Promotion | 2026-10-19 | Top level. The PRG and the header are byte identical to the (U) dump; only the CHR differs. | + +### Ice Climber (U) — `NROM/Ice Climber (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-19 | 6,112 instructions / 12,230 code bytes (74.6 %) - the same PRG as the (JE) dump. | +| Pass 2 | 2026-10-19 | 973 labels named. | +| Pass 3 | 2026-10-19 | 9 semantic zero-page aliases and the hardware operands substituted. | +| Promotion | 2026-10-19 | Top level, together with the (JE) dump. | + +### Joypad Test Cartridge (U) — `NROM/Joypad Test Cartridge (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-16 | Redone: the first pass claimed 282 instructions / 580 bytes (3.5 %), because the tracer halted on `DCP $3C20` - an undocumented opcode used as ordinary code - and filed 3,256 bytes of real code as data. Now 1,773 instructions / 3,836 bytes (23.4 %). | +| Pass 2 | 2026-10-19 | All 202 labels renamed and all 202 routine headers rewritten; the zero-page aliases written. | +| Pass 3 | 2026-10-19 | 47 hardware operands substituted, the data blocks named. | +| Promotion | 2026-10-16 | Promoted out of `_wip/`. | + +### Lode Runner (U) — `NROM/Lode Runner (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-18 | 11,057 lines, 627 label definitions, 52.6 % code, canonical audit comments. | +| Pass 2 | 2026-10-20 | All 627 labels renamed: 196 semantic routine entries plus 431 derived internal branch targets. | +| Pass 3 | 2026-10-20 | 85 operands substituted, 2 semantic zero-page aliases, the data tables named. | +| Promotion | 2026-10-20 | The whole-ROM build was added and the `_tools` paths moved. | + +### Lunar Pool (U) — `NROM/Lunar Pool (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-18 | The split was re-derived from a Mesen CDL capture (10,028 bytes of code) after a static trace alone had left most of the game unclassified: now 5,300 instructions / 11,077 bytes (67.6 %). | +| Pass 2 | 2026-10-18 | 705 labels named, zero `Label_` residue. | +| Pass 3 | 2026-10-18 | 33 data tables named, 38 semantic zero-page aliases; 45 operands substituted on 2026-10-19. | +| Promotion | 2026-10-18 | `git mv` out of `_wip/`; the power-on flow and the print-inline-string helper documented. | + +### Mario Bros (JU) — `NROM/Mario Bros (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | The committed split was a strict subset of the correct one - only 72.0 % was classified as code. A Mesen CDL capture (10,915 code bytes) showed 1,010 bytes the tracer had left as data were code, and two branch targets the capture never reached were forced by hand, so 1,067 bytes moved from data to code: 78.4 %. The engine's handler tables sit inline, right behind the `jsr` that reads them. | +| Pass 2 | 2026-10-20 | 206 routine entries and 519 internal branch targets, 931 `Label_XXXX` definitions gone, 51 raw call operands resolved. | +| Pass 3 | 2026-10-20 | 25 semantic zero-page aliases, each applied only where its role is proven. | +| Promotion | 2026-10-20 | Top level. | + +### Millipede (U) — `NROM/Millipede (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-18 | 14,744 lines, canonical audit comments, 74.6 % code. | +| Pass 2 | 2026-10-20 | All 839 address-derived labels renamed: 12 semantic routine names, 264 `SubC` entries and 577 internal branch targets. | +| Pass 3 | 2026-10-20 | 8 semantic zero-page aliases; the data tables named - `LevelData`, `ObjectInitData`, `AudioData`, `VectorPageData`. | +| Promotion | 2026-10-20 | The whole-ROM build was added and the `_tools` paths moved. | + +### MUSCLE (U) — `NROM/MUSCLE (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-16 | The bytecode VM layer was decoded: 40 opcodes handled through a table at $9237, so the "data" under the bytecode is code. 5,253 instructions. | +| Pass 2 | 2026-10-18 | The Pass 1/2/3 output written with the 42 bytecode listings above the `.byte` data. | +| Pass 3 | 2026-10-16 | The data names and the structures written. 2026-10-19: 220 operands substituted, zero residue. | +| Promotion | 2026-10-16 | Promoted out of `_wip/`. The one ROM in the set mapped low (PRG at $8000), and the only project with a `make regen` target that reproduces `prg.s` byte for byte. | + +### NES PowerPad Test Card (U) — `NROM/NES PowerPad Test Card (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-16 | A minimal test cartridge: the NMI reads the PowerPad over $4016 and updates the score and the lives, 7.2 % code. | +| Pass 2 | 2026-10-19 | Labels renamed with the PowerPad group. | +| Pass 3 | 2026-10-16 | The data tables and the `VramWrite` streams named. 2026-10-19: 89 hardware operands substituted, zero residue. | +| Promotion | 2026-10-16 | Promoted out of `_wip/`. | + +### Pac-Man (Tengen) (U) — `NROM/Pac-Man (Tengen) (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | Six command handlers recovered - 120 bytes the tracer had left as data, two of them mis-split across the `jmp $EF61` at $F01F and $F04F. 1,637 instruction lines covering 3,273 code bytes (20.0 %). The boot sequence is inline at $C033: this build has no boot code at $FF00. | +| Pass 2 | 2026-10-20 | A fresh map from this dump's own committed split - no name, map or file was carried over from the other Pac-Man dump. 227 labels (199 routine entries + 28 branch targets), zero `Label_` residue. | +| Pass 3 | 2026-10-20 | 30 semantic zero-page aliases, each applied only at the sites where the role is proven. | +| Promotion | 2026-10-20 | `git mv` out of `_wip/NROM/`. | + +### Pac-Man (U) — `NROM/Pac-Man (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | 19.6 % code; the boot code sits at $FF00, unlike the Tengen build. | +| Pass 2 | 2026-10-20 | 194 `Label_XXXX` definitions renamed to semantic routine entries plus derived internal branch targets, and all 49 `jsr`/`jmp` call sites resolved. | +| Pass 3 | 2026-10-20 | 119 operands substituted (101 hardware + 11 single-name + 7 multi-alias resolved per site). | +| Promotion | 2026-10-20 | `git mv` out of `_wip/NROM/`. | + +### Pac-Man (USA) (Namco) — `NROM/Pac-Man (USA) (Namco)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-09 | First disassembly. | +| Pass 2 | 2026-10-19 | Labels renamed. | +| Pass 3 | 2026-10-19 | 524 single-name operands substituted; 727 multi-alias residues left numeric and recorded (an address with two or more aliases, e.g. `$00` = `workPtr0`/`Zp00`). | +| Promotion | 2026-10-09 | In the top level from the start - there was no `_wip/` tier yet. The build and the per-project power-on README were standardised on 2026-10-15. | + +### Pinball (JU) — `NROM/Pinball (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-18 | 4,734 instructions / 9,756 code bytes (59.5 %) - a real disassembly, not a skeleton. | +| Pass 2 | 2026-10-18 | Substantial: 180 of 681 labels carry semantic names. The "Pass 2 complete" claim of that day was corrected on 2026-10-19 after an audit of the map. | +| Pass 3 | — | Drafted only: the zero-page aliases are not in `locals.inc` yet. | +| Promotion | 2026-10-20 | The whole-ROM build was added; the pass work is still open. | + +### Popeye (JU) (PRG 0) — `NROM/Popeye (JU) (PRG 0)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-18 | 14,875 lines, canonical audit comments, 72.3 % code, six routine entries seeded from table references. | +| Pass 2 | 2026-10-20 | All 878 labels renamed: 2 semantic entry names, 315 `SubC` entries and 561 internal branch targets. | +| Pass 3 | 2026-10-20 | 4 semantic zero-page aliases, 79 operands substituted, the data tables named - `LevelData`, `AudioData`, `VectorPageData`. | +| Promotion | 2026-10-15 | Top-level wave: the build was standardised and the project got its power-on README. | + +### Popeye (JU) (PRG 1) — `NROM/Popeye (JU) (PRG 1)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-18 | As the PRG 0 dump, but a different PRG binary. | +| Pass 2 | 2026-10-20 | All 878 labels renamed. | +| Pass 3 | 2026-10-20 | 4 semantic zero-page aliases and the data tables named. | +| Promotion | 2026-10-20 | Promoted out of `_wip/`. | + +### Pyramid (U) (Sachen) — `NROM/Pyramid (U) (Sachen)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | The committed split was a strict subset of the correct one: 828 bytes of code were still marked as data, because the tracer cannot follow a `jmp` that sits inside a data region. Re-tracing with the sixteen `jmp`-table targets, the $C800 boot mainline and six further hand-seeded starts recovered them, and lost no committed code byte. 39.6 % code. | +| Pass 2 | 2026-10-20 | 431 routine entries and the 32 data blocks named, 428 `Label_XXXX` definitions gone, 320 raw call operands resolved. | +| Pass 3 | 2026-10-20 | 24 semantic zero-page aliases, each applied only where its role is proven. | +| Promotion | 2026-10-20 | Top level; renamed to `Pyramid (U) (Sachen)` on 2026-10-21. The unlicensed boot pokes a mapper unlock at $4100 and dispatches through two queued-event tables. | + +### Raid on Bungeling Bay (U) — `NROM/Raid on Bungeling Bay (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | 64.6 % code. | +| Pass 2 | 2026-10-20 | Labels renamed in the same wave as the other 2026-10-20 promotions. | +| Pass 3 | 2026-10-20 | 11 semantic zero-page aliases added to `locals.inc`. | +| Promotion | 2026-10-20 | Top level. | + +### Raid on Bungeling Bay (U) [a2] — `NROM/Raid on Bungeling Bay (U) [a2]/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | 64.3 % code. A different PRG from the other dump - the two differ in mirroring only per the header, but the PRGs are separate builds. | +| Pass 2 | 2026-10-20 | Labels renamed. | +| Pass 3 | 2026-10-20 | 15 semantic zero-page aliases added to `locals.inc`. | +| Promotion | 2026-10-20 | Top level. | + +### Tennis (JU) — `NROM/Tennis (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-09 | First disassembly; byte identical out of the box. | +| Pass 2 | 2026-10-19 | Labels renamed. | +| Pass 3 | 2026-10-19 | 18 single-name operands substituted, zero residue. | +| Promotion | 2026-10-09 | In the top level from the start - there was no `_wip/` tier yet. The build and the per-project power-on README were standardised on 2026-10-15. | + +### Urban Champion (JU) — `NROM/Urban Champion (JU)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-18 | 2,716 instructions, 33.9 % code. | +| Pass 2 | 2026-10-18 | 436 labels named. | +| Pass 3 | 2026-10-19 | 10 semantic zero-page aliases, 70 operands substituted. | +| Promotion | 2026-10-18 | Promoted with the full-ROM build. | + +### Volleyball (U) — `NROM/Volleyball (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-21 | Every byte of the 32 KB PRG image accounted for as an instruction or an explicit `.byte` block: 11,395 instructions / 23,926 code bytes (73.0 %). | +| Pass 2 | 2026-10-21 | 1,989 labels named. | +| Pass 3 | 2026-10-21 | 37 named data blocks, zero residue. | +| Promotion | 2026-10-21 | Promoted out of `_wip/NROM/`. | + +### Wild Gunman (U) — `NROM/Wild Gunman (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-16 | Redone: the original tracer followed only the vectors and the direct calls and knew just the 151 documented opcodes, so it missed the runtime dispatch - the `pla` based computed goto puts the jump table inline right after the `jsr` - and filed about 4.9 KB of real code as data. 1,597 instructions / 3,352 bytes (20.5 %) became 3,956 / 8,085 (49.3 %). | +| Pass 2 | 2026-10-19 | All 733 labels carry names; zero `Label_Cxxxx` or `SubCxxxx` remain, and every entry point has a routine header. | +| Pass 3 | 2026-10-19 | The data tables named - `SpriteAttributeTable`, `NoteVolumeTable`, `VolumeEnvelopeTable`, `SpritePositionTable`; 76 operands substituted, zero residue. | +| Promotion | 2026-10-16 | Promoted out of `_wip/`. | + +### Xevious (U) — `NROM/Xevious (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | The static trace from the vectors reached only 13.6 % of the PRG. Declaring both jump tables with `--table` plus 92 hand-seeded entry points recovered the code behind the computed dispatch, reaching 34.5 %. Re-split on 2026-10-21 from the Mesen CDL (`_tools/cdl_reclass.py`): 1,158 data→code bytes, 38.0 % code, 6,002 instructions. | +| Pass 2 | 2026-10-20 | Every routine entry point has a semantic name and every raw `$XXXX` call operand was replaced. Re-checked after the 2026-10-21 re-split: the 45 recovered entries are named `Sub_XXXX`; six CDL-silent raw operands remain and are documented in the project README. | +| Pass 3 | 2026-10-20 | 32 named data tables (the $A74B-$B8AA block split into six proven tables on 2026-10-21) and about 20 semantic zero-page aliases. | +| Promotion | 2026-10-20 | Promoted out of `_wip/`. | + +### Zanac (U) — `UNROM/Zanac (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-20 | The static trace from the vectors reached only 37.9 % of bank 7; banks 0-6 are still raw `.byte` data, pending the bank-switch analysis. | +| Pass 2 | 2026-10-20 | 133 semantic entry points. | +| Pass 3 | 2026-10-20 | 26 named data tables and 14 semantic zero-page aliases. | +| Promotion | 2026-10-20 | Promoted out of `_wip/`; the only promoted UxROM project, with the fixed bank in its own segment. | + +### Mermaids of Atlantis (U) — `MAPPER8/Mermaids of Atlantis (U)/` + +| Milestone | Date | Note | +|-----------|------|------| +| Pass 1 | 2026-10-21 | Redone, bank-aware: the 64 KB PRG is eight 8 KB MMC3 banks, and each is traced separately with the CPU window it is visible at, seeded from a Mesen CDL capture. 8,075 bytes of code (12.3 %) in 494 routines, up from about 200 bytes. The image carries the reset stub and the vector table twice, and the fixed bank is the fourth 8 KB bank rather than the last. | +| Pass 2 | 2026-10-21 | Every label named, no `Label_XXXX` left and no raw `$XXXX` branch or jump operand left; the banks that share a CPU window carry a `Bank4_` .. `Bank7_` prefix. | +| Pass 3 | 2026-10-21 | 13 semantic zero-page aliases, the routine headers written, the data tables listed in the project README. | +| Promotion | 2026-10-20 | Promoted - but the build was broken: a half-applied Pass 2 rename left eight undefined symbols. Rebuilt and verified on 2026-10-21. | + +--- + +### Adding an entry + +**For a change to any project**, add a line to **Pending** at the top of this +file: name the project, and say what changed. When the commit is made, its +message is written from those lines, and they move to **History**. + +**For a project that reaches a milestone**, the milestone also gets a row in +the milestone index below, with the date and a sentence saying what the +milestone produced. The numbers that go in the row are the ones the project +README and the root `README.md` already carry: the instruction count, the +code coverage, the number of named labels, the number of semantic zero-page +aliases and the number of named data tables. A milestone that has not +happened gets a `-` in the date column and a note saying what is still open - +the point of the table is that a reader can see at a glance which projects +are done and which are not. diff --git a/CNROM/World Class Track Meet (U)/Makefile b/CNROM/World Class Track Meet (U)/Makefile new file mode 100644 index 0000000..cd02513 --- /dev/null +++ b/CNROM/World Class Track Meet (U)/Makefile @@ -0,0 +1,53 @@ +CA65 ?= ca65 +LD65 ?= ld65 +PYTHON ?= python3 +NESDIS ?= ../../../_tools/nesdis.py + +all: reconstructed.nes verify + +prg.o: prg.s symbols.inc locals.inc prg.bin + $(CA65) -g -o $@ $< + +header.o: header.s header.bin + $(CA65) -g -o $@ $< + +chr.o: chr.s chr.bin + $(CA65) -g -o $@ $< + +reconstructed.nes: header.o prg.o chr.o linker.cfg + $(LD65) -C linker.cfg -m reconstructed.map -Ln reconstructed.lbl -o $@ header.o prg.o chr.o + +verify: reconstructed.nes rom.nes + cmp reconstructed.nes rom.nes + @echo "Byte-identical ROM verified." + +# Regenerate prg.s from prg.bin. Every flag below is a documented +# classification decision, not a convenience; see the header block of prg.s +# and README.md. +# +# --undocumented the code uses undocumented NMOS opcodes as ordinary code +# --table 0xF796:5 the event dispatch table, read at $F780 and jumped to +# through `jmp ($001F)`; the values are direct addresses +# --extra-seed the 25 entries of the three push-pointer dispatch tables +# ($BFC4, $BFE4, $E5F2). Those tables store the handler +# address MINUS ONE, because the handler is pushed and an +# `rts` lands on it, so the seeds are the table values + 1 +# --data 0xC0BE:8 the dead IRQ vector area, forced back to data +PASS1_SEEDS = 0xBFF8,0xC00A,0xC015,0xC029,0xC037,0xC04F,0xC057,0xC07B,0xC083,0xC097,0xC0AD,0xC0C1,0xC0D1,0xC0F8,0xC129,0xC134,0xBFE8,0xBFF0,0xE0EF,0xE16D,0xE20D,0xE2DE,0xE42A,0xE52C + +pass1: + $(PYTHON) $(NESDIS) --prg prg.bin --base 0x8000 \ + --project "World Class Track Meet (U)" --out prg.s --locals locals.inc \ + --auto-seed --undocumented --table 0xF796:5 --data 0xC0BE:8 \ + --extra-seed "$(PASS1_SEEDS)" \ + --mapping-note 'CNROM, mapper 3: the whole 32 KB image is visible at $$8000-$$FFFF' \ + --provenance 'the PRG is 32 KB and maps whole at $$8000-$$FFFF (CNROM, mapper 3), so the linker puts the PRG segment at $$8000 rather than at a file offset' \ + --provenance 'dispatch table $$F796, 5 entries, read by `lda $$F796,y` at $$F780 and jumped to through `jmp ($$001F)`' \ + --provenance 'push-pointer dispatch tables $$BFC4 (16 entries), $$BFE4 (2) and $$E5F2 (7): the handler address is pushed and an `rts` lands on it, so each table stores the entry address MINUS ONE - the seeds above are the table values plus one' \ + --provenance 'the reason $$C0BE-$$C0C5 is data: the IRQ vector $$C0C0 points into the middle of the `jmp $$C047` at $$C0BE, and the game never executes CLI, so the vector is dead' \ + --provenance 'the tracer is run with --undocumented: the code uses undocumented opcodes as ordinary code (ANC $$37 at $$BFF8, RRA/RLA/SLO and the NOP forms elsewhere)' + +clean: + rm -f *.o reconstructed.nes reconstructed_prg.bin reconstructed.map reconstructed.lbl + +.PHONY: all verify clean pass1 diff --git a/CNROM/World Class Track Meet (U)/README.md b/CNROM/World Class Track Meet (U)/README.md new file mode 100644 index 0000000..a8d17e7 --- /dev/null +++ b/CNROM/World Class Track Meet (U)/README.md @@ -0,0 +1,163 @@ +# World Class Track Meet (U) + +## Status + +**Pass 1 + Pass 2 + Pass 3 complete (2026-10-21).** The code/data split, +the label naming and the semantic naming are all done: `prg.s` holds the +traced disassembly with the canonical audit comment +`; CPU:$XXXX PRG:XXXX AA BB` on every instruction, the build is +**byte-identical** to the original ROM, and every routine entry, branch +target and data reference uses a symbolic name. + +| | | +|---|---| +| Instructions | **8,400** | +| Code bytes | **18,028** of 32,768 (**55.0 %**) | +| Data bytes | 14,740 | +| Routine entries | **884, all named** (651 semantic + 233 `Sub_`) | +| Data blocks | 55 | +| Zero-page aliases | **102** (24 semantic + 78 neutral `ZpXX` with recorded reasons) | +| `Label_XXXX` definitions | **0** (all replaced) | +| Raw `$XXXX` jsr/jmp operands | **0** (all symbolic) | +| `prg.s` | 18,390 lines | + +`make` assembles `header.s`, `prg.s`, `chr.s`, links them with `ld65` and compares +the result against `rom.nes`: + +``` +Byte-identical ROM verified. +``` + +`make pass1` regenerates `prg.s` and `locals.inc` from `prg.bin`; it reproduces the +committed `prg.s` byte for byte. + +## ROM + +| Property | Value | +|----------|-------| +| Format | iNES | +| Mapper | 3 | +| Board | CNROM | +| Mirroring | Horizontal | +| Four-screen VRAM | no | +| Battery | no | +| PRG | 32 KB, at CPU $8000-$FFFF | +| CHR | 32 KB (4 x 8 KB) | +| Trainer | none | +| Footer | none | +| NMI vector | $F803 | +| RESET vector | $F6FD | +| IRQ vector | $C0C0 (dead — see below) | +| ROM file | `World Class Track Meet (U).nes` | +| SHA-256 | `d592d60690234cd9fb6b24a2c566740523bee90bbe7ac1171df3dfbde3ab4e39` | + +### Header notes + +- **The CHR size field is wrong.** Header byte 5 says 4 CHR pages (64 KB), but the + file holds 32 KB of CHR (`chr.bin` is 32,768 bytes and the whole file is 65,552 + bytes = 16 header + 32,768 PRG + 32,768 CHR). The dump therefore claims more + CHR than it carries. The build reproduces the file as it is, so the rebuild is + byte-identical either way. +- **Mapper 3 is CNROM: the PRG is not bank switched.** The whole 32 KB image is + visible at $8000-$FFFF, so the linker puts the PRG segment at $8000 + (`PRG: start = $8000, size = $8000`) rather than at a .nes file offset. The + Pass 0 skeleton's "the image is bank-switched; it does not fit the 6502 address + space" note was the skeleton's generic guess for a PRG larger than 16 KB and is + wrong for this board — $8000-$FFFF is 32 KB of address space, and CNROM fills it + with the whole image. + +## What the game is + +A Power Pad game: a menu of six items, the first five being single events and the +last one the "olympics" with several events in a row. The code agrees with that +shape: + +- The main loop at **$F74F** (`MainLoop`) runs **five** concurrent tasks. Each task + has a slot (`$00`-`$04` for the slot index, `$06`/`$01` for its state) and the loop + walks them, calling the task whose counter has run out. The five task entry points + live in the dispatch table at **$F796**: `$D32B`, `$8004`, `$924C`, `$A8C8`, + `$E0D5`. Each of them opens with its own state index (`ldx #$3B`, `ldx #$4B`, + `ldx #$5B`, …), which is what a per-event state block looks like. +- Those five entries line up with the five **single** events the menu offers. + The sixth item, the "olympics", is expected to be the mode that schedules + several of the five slots at once rather than a sixth slot - a five-slot + cooperative loop can do exactly that (`OlympicsScheduler` at `$E0D5`). +- The dispatch at **$F780** (`TaskDispatch`) is the only *computed* jump in the game: + `lda $F796,y` / `sta $1F` / `lda $F797,y` / `sta $20` / `jmp ($001F)`. The + tracer cannot follow it, so the table is seeded by hand. + +## Pass 2 — label naming (complete 2026-10-21) + +All 884 `Label_` definitions were replaced: + +- **651 semantic routine names** derived from observed ROM behavior: + `Reset`, `NmiHandler`, `MainLoop`, `GameModeTask`, `TaskDispatch`, + `EventInit`, `EventTaskRun`, `EventTaskB`, `EventTaskInit`, `SpriteSetup`, + `SpriteDraw`, `SpritePosition`, `SpriteTile`, `ObjectState`, `ObjectUpdate`, + `ObjectDraw`, `ObjectCollision`, `SoundNote`, `SoundChannelStep`, + `SoundChanInit`, `AudioChannelLoop`, `OlympicsScheduler`, `PaletteLoad`, + `PollControllers`, `ClearRam`, `ClearOam`, `ClearObjectSlot`, `DelayFrames`, + `EnableNmi`, `WaitVblankStart`, `WaitVblankEnd`, `TaskSlotStart`, …; +- **233 `Sub_` address-derived names** for entries whose role the dump + does not reveal (kept per the honest-residue convention, never guessed); +- All **731 raw `$XXXX` jsr/jmp call operands** resolved to symbolic labels; +- All branch targets (`beq`/`bne`/etc.) given role-based names + (`_Loop`, `_OnZero`, `_OnNonzero`, `_OnCarrySet`, …); +- `routinemap.tsv` holds the address→name map (hand-written routine names + + derived internal branch-target names from `_tools/derive_branch_names.py`). + +## Pass 3 — semantic naming (complete 2026-10-21) + +- **Zero-page aliases:** 24 behavioral names (`SlotState`, `PpuCtrlMirror`, + `PpuMaskMirror`, `TaskCount`, `TaskSlotOffset`, `TaskFrameTimer`, + `TaskFrameCounter`, `ScrollX`, `ScrollY`, `VblankFlag`, + `OlympicsFrameCounter`, `OlympicsEventIndex`, `GameMode`, …) applied at the + proven sites via `apply_symbols.py`; **78 remaining `ZpXX` neutral slots** + are genuinely undetermined after tracing (each byte is reused across + subsystems and/or indexed into an attribute array), each with a recorded + reason in `locals.inc`. +- **Hardware registers:** all PPU/APU/controller operands use `symbols.inc` + names; no raw `$2000`–`$4017` literals remain. +- **Data tables:** the named regions below are documented in `prg.s` with + their consuming instructions; compressed/opaque spans (Iwata-style sound + data, level data) remain as classified `.byte`/`.word` blocks rather than + guessy rewrites. + +## What is still data, and why + +The 14,740 bytes of data are the game's tables, and the tracer's own notes say +which instruction reads each one. The large ones: + +| Region | What it is | +|---|---| +| $B02A-$BE62 (3,641 bytes) | the sound driver: note tables, APU frequency tables and the instrument data the `Sound_*` routines read | +| $C434-$CF35 (2,818 bytes) | sprite and tile data, read with `,y`/`,x` indices | +| $D9CF-$E0D4 (1,798 bytes) | the 24-entry object-state table and the per-object parameter blocks | +| $F025-$F6FC (1,752 bytes) | the character/glyph table (`BAC0123456789:;<=>?PQRQS` is in there) | +| $FC78-$FFFF (904 bytes) | `$FF` padding, with the three vectors at $FFFA | + +The smaller unreferenced regions ($8B5A-$8D17, $8DA5-$9140, $9F33-$A02A, +$E996-$EB03) hold 16-bit tables that point into code the tracer has not +reached. Per the no-guessy-rewrites convention they stay as classified data +blocks until a consumer is identified. + +## Open work + +- **Promotion** to `NROM//` once ready, as `git mv` (all four milestones + Pass 1/2/3 are done; Promotion is the only remaining step). + +## Files + +| File | Purpose | +|------|---------| +| `prg.s` | Pass 3 disassembly (8,400 instructions + 55 data blocks, all labels named) | +| `routinemap.tsv` | Pass 2 address → name map (884 entries) | +| `header.s` | iNES header include | +| `chr.s` | CHR include | +| `prg.bin` | 32,768 bytes (32 KB) PRG image | +| `chr.bin` | 32,768 bytes (32 KB) CHR image | +| `rom.nes` | byte-identical copy of the original ROM | +| `linker.cfg` | HEADER / PRG / CHR memory areas, PRG at $8000 | +| `symbols.inc` | NES hardware register names | +| `locals.inc` | zero-page aliases (24 semantic + 78 neutral `ZpXX` with reasons) | +| `Makefile` | build, byte-identity check, and `make pass1` | diff --git a/_wip/CNROM/World Class Track Meet (U)/World Class Track Meet (U).nes b/CNROM/World Class Track Meet (U)/World Class Track Meet (U).nes similarity index 100% rename from _wip/CNROM/World Class Track Meet (U)/World Class Track Meet (U).nes rename to CNROM/World Class Track Meet (U)/World Class Track Meet (U).nes diff --git a/_wip/CNROM/World Class Track Meet (U)/chr.bin b/CNROM/World Class Track Meet (U)/chr.bin similarity index 100% rename from _wip/CNROM/World Class Track Meet (U)/chr.bin rename to CNROM/World Class Track Meet (U)/chr.bin diff --git a/NROM/Pyramid (U)/chr.s b/CNROM/World Class Track Meet (U)/chr.s similarity index 100% rename from NROM/Pyramid (U)/chr.s rename to CNROM/World Class Track Meet (U)/chr.s diff --git a/_wip/CNROM/World Class Track Meet (U)/header.bin b/CNROM/World Class Track Meet (U)/header.bin similarity index 100% rename from _wip/CNROM/World Class Track Meet (U)/header.bin rename to CNROM/World Class Track Meet (U)/header.bin diff --git a/NROM/Pyramid (U)/header.s b/CNROM/World Class Track Meet (U)/header.s similarity index 100% rename from NROM/Pyramid (U)/header.s rename to CNROM/World Class Track Meet (U)/header.s diff --git a/_wip/CNROM/World Class Track Meet (U)/linker.cfg b/CNROM/World Class Track Meet (U)/linker.cfg similarity index 64% rename from _wip/CNROM/World Class Track Meet (U)/linker.cfg rename to CNROM/World Class Track Meet (U)/linker.cfg index 538e3fe..e08f27c 100644 --- a/_wip/CNROM/World Class Track Meet (U)/linker.cfg +++ b/CNROM/World Class Track Meet (U)/linker.cfg @@ -1,7 +1,7 @@ MEMORY { HEADER: start = $0000, size = $0010, fill = yes; - PRG: start = $0010, size = $8000, fill = yes; - CHR: start = $8010, size = $8000, fill = yes; + PRG: start = $8000, size = $8000, fill = yes; + CHR: start = $0000, size = $8000, fill = yes; } SEGMENTS { HEADER: load = HEADER, type = ro; diff --git a/CNROM/World Class Track Meet (U)/locals.inc b/CNROM/World Class Track Meet (U)/locals.inc new file mode 100644 index 0000000..e7d8113 --- /dev/null +++ b/CNROM/World Class Track Meet (U)/locals.inc @@ -0,0 +1,128 @@ +; World Class Track Meet (U) application-specific RAM aliases - Pass 3 +; Generated from every direct zero-page operand in reachable code: +; ref counts are reads/writes, `where` lists the referencing addresses. +; Names below are behavioral names derived from observed ROM behavior. +; +; Semantic aliases (single, unambiguous role): +; $0C SlotState - per-object/task state slot; tested for zero (=inactive) +; $18 PpuCtrlMirror - PPUCTRL mirror written by NMI before $2000 +; $19 PpuMaskMirror - PPUMASK mirror written by NMI before $2001 +; $1D TaskCount - main-loop: number of active task slots (cmp #$05) +; $1E TaskSlotOffset- main-loop: per-slot base offset, advances by $10 +; $1A TaskFrameTimer- task frame wait: counts down to zero +; $1B TaskFrameCounter - task frame wait: increments each frame +; $27 ScrollX - horizontal scroll, written to PPUSCROLL by NMI +; $28 ScrollY - vertical scroll, written to PPUSCROLL by NMI +; $2E VblankFlag - set to #$80 during init, polled across game logic +; $2F OlympicsFrameCounter - Olympics scheduler frame counter (inc Zp2F) +; $80 OlympicsEventIndex - Olympics scheduler current event index (inc Zp80) +; $8C GameMode - current game mode, compared against #$02 in GameModeTask +; +; Neutral ZpXX entries - role genuinely undetermined after tracing. Each byte +; is reused across subsystems and/or indexed into an attribute array, so no +; single behavioral name is defensible. Kept as ZpXX per the "do not speculate" +; convention; each carries a recorded reason. + +SlotState = $0C ; 45 refs; reads=9 writes=36; used at $803C, 8040, 8152, 8180, +38 more +PpuCtrlMirror = $18 ; 18 refs; reads=10 writes=8; used at $96D4, D33B, D33F, E61C, +14 more +PpuMaskMirror = $19 ; 11 refs; reads=6 writes=5; used at $A079, A07D, A0F1, A0F5, +7 more +TaskCount = $1D ; 5 refs; reads=3 writes=2; used at $F755, F75F, F761, F76B +TaskSlotOffset = $1E ; 3 refs; reads=1 writes=2; used at $F751, F757, F75C +TaskFrameTimer = $1A ; 4 refs; reads=2 writes=2; used at $F7EC, F7F2, F8AB +TaskFrameCounter = $1B ; 2 refs; reads=1 writes=1; used at $F7EA +ScrollX = $27 ; 4 refs; reads=1 writes=3; used at $D361, E620, F828, F8CF +ScrollY = $28 ; 4 refs; reads=1 writes=3; used at $D363, E622, F82D, F8D4 +VblankFlag = $2E ; 19 refs; reads=14 writes=5; used at $8160, 81DE, 824F, 8485, +15 more +OlympicsFrameCounter = $2F ; 11 refs; reads=5 writes=6; used at $E0D7, E0EF, E119, E17F, +3 more +OlympicsEventIndex = $80 ; 15 refs; reads=11 writes=4; used at $E0D5, E0F6, E16D, E1C4, +10 more +GameMode = $8C ; 75 refs; reads=69 writes=6; used at $806C, 807D, 80B9, 80F3, +71 more + +Zp00 = $00 ; 50 refs; reads=27 writes=23; used at $C202, C21F, C224, C23C, +43 more ; REASON: reused as both the ClearRam indirect pointer ((Zp00),y) and a plain temp across game logic; no single role +Zp01 = $01 ; 19 refs; reads=7 writes=12; used at $C20B, C21B, F70F, F71E, +12 more ; REASON: reused as ClearRam pointer high byte and as an indexed attribute (Zp01,x) +Zp02 = $02 ; 25 refs; reads=12 writes=13; used at $C103, C105, C219, C222, +19 more ; REASON: reused across ClearRam, object math and controller shift code; no single role +Zp03 = $03 ; 30 refs; reads=13 writes=17; used at $C1A2, C1B8, C1E5, C1EB, +24 more ; REASON: reused as an X/Y temp and indexed attribute; role not unique +Zp04 = $04 ; 38 refs; reads=15 writes=23; used at $805F, 80CB, 811D, 814E, +34 more ; REASON: indexed object attribute array byte (Zp04,x); individual field role not determined +Zp05 = $05 ; 31 refs; reads=19 writes=12; used at $88E8, 88F4, 8924, 8B14, +26 more ; REASON: indexed object/sound attribute byte (Zp05,x) and indirect pointer base; role not unique +Zp06 = $06 ; 44 refs; reads=28 writes=16; used at $8012, 8016, 80D1, 843A, +40 more ; REASON: indexed object attribute byte (Zp06,x); aliases Zp51 storage when slot=$4B; role not unique +Zp07 = $07 ; 26 refs; reads=7 writes=19; used at $8106, 841D, 885B, 889B, +22 more ; REASON: indexed object attribute byte (Zp07,x); role not determined +Zp08 = $08 ; 129 refs; reads=62 writes=67; used at $8045, 8091, 81CC, 8216, +115 more ; REASON: both indexed object attribute (Zp08,x) and plain drawing temp (ObjectDraw); no single role +Zp09 = $09 ; 63 refs; reads=33 writes=30; used at $80D3, 84D4, 84F8, 8681, +53 more ; REASON: indexed object attribute byte (Zp09,x) and plain temp; role not unique +Zp0A = $0A ; 47 refs; reads=20 writes=27; used at $8436, 8965, 8B4D, 91A7, +40 more ; REASON: indexed object/sound attribute byte (Zp0A,x); role not determined +Zp0B = $0B ; 30 refs; reads=8 writes=22; used at $8433, 8969, 8A0A, 8B51, +25 more ; REASON: indexed object attribute byte (Zp0B,x); role not determined +Zp0D = $0D ; 43 refs; reads=11 writes=32; used at $8142, 8200, 822E, 8284, +39 more ; REASON: indexed object attribute byte (Zp0D,x); role not determined +Zp0E = $0E ; 53 refs; reads=42 writes=11; used at $80CD, 813B, 81B0, 81F9, +45 more ; REASON: indexed object attribute byte (Zp0E,x); role not determined +Zp0F = $0F ; 34 refs; reads=21 writes=13; used at $8110, 825C, 825E, 8375, +28 more ; REASON: indexed object attribute byte (Zp0F,x); role not determined +Zp10 = $10 ; 126 refs; reads=64 writes=62; used at $83EF, 83FF, 9544, 956C, +114 more ; REASON: reused as plain temp across game logic and NMI; no single role +Zp11 = $11 ; 78 refs; reads=22 writes=56; used at $9947, 9955, A59E, A5A7, +73 more ; REASON: reused across object drawing and sound code; role not unique +Zp12 = $12 ; 46 refs; reads=18 writes=28; used at $A5A2, A7F7, A831, D575, +41 more ; REASON: reused across subsystems; role not determined +Zp13 = $13 ; 30 refs; reads=7 writes=23; used at $A5A9, A810, A836, D579, +24 more ; REASON: reused across subsystems; role not determined +Zp14 = $14 ; 50 refs; reads=20 writes=30; used at $A5B3, A5B8, A5BA, D57D, +43 more ; REASON: reused across subsystems; role not determined +Zp15 = $15 ; 31 refs; reads=10 writes=21; used at $A5AD, A5BC, A5C0, D581, +24 more ; REASON: reused across subsystems; role not determined +Zp16 = $16 ; 33 refs; reads=13 writes=20; used at $D586, D5B9, D5DF, D612, +27 more ; REASON: reused across subsystems; role not determined +Zp17 = $17 ; 54 refs; reads=19 writes=35; used at $9550, 955A, 9561, 9563, +46 more ; REASON: reused across subsystems; role not determined +Zp1F = $1F ; 11 refs; reads=6 writes=5; used at $F783, F7A0, F7A4, F7B0, +6 more ; REASON: multi-role: TaskDispatch indirect-jump pointer, TaskSlotStart slot index, DelayFrames frame count +Zp20 = $20 ; 1 refs; reads=0 writes=1; used at $F788 ; REASON: single write only (TaskDispatch hi byte of indirect vector); role not determined +Zp23 = $23 ; 4 refs; reads=1 writes=3; used at $D61C, D67E, F939, F93F ; REASON: few writes across NMI palette and Olympics code; role not determined +Zp25 = $25 ; 4 refs; reads=1 writes=3; used at $F8E8, F8EF, F9AA, F9B0 ; REASON: few writes, FrameDelay parameter; role not determined +Zp26 = $26 ; 2 refs; reads=1 writes=1; used at $D379, F87B ; REASON: single read/write pair; role not determined +Zp29 = $29 ; 18 refs; reads=1 writes=17; used at $99B4, 9A15, 9A3E, 9A78, +14 more ; REASON: mostly-written sound/Olympics sequencing byte; role not determined +Zp2B = $2B ; 5 refs; reads=2 writes=3; used at $EFA2, EFAA, EFC8, F8F5 ; REASON: sound/NMI palette sequencing; role not determined +Zp2C = $2C ; 13 refs; reads=1 writes=12; used at $A173, A1E7, D372, D421, +9 more ; REASON: few reads, many writes across subsystems; role not determined +Zp2D = $2D ; 1 refs; reads=0 writes=1; used at $F847 ; REASON: single write only; role not determined +Zp32 = $32 ; 14 refs; reads=8 writes=6; used at $CF54, CF68, CFA3, CFA5, +9 more ; REASON: object/sound table indexing; role not determined +Zp33 = $33 ; 6 refs; reads=4 writes=2; used at $CF5A, CF6A, CFBE, CFDC, +2 more ; REASON: few references; role not determined +Zp34 = $34 ; 6 refs; reads=4 writes=2; used at $CF60, CF7D, CFC0, CFE2, +2 more ; REASON: few references; role not determined +Zp35 = $35 ; 7 refs; reads=4 writes=3; used at $CF66, CF7F, CFFB, D005, +3 more ; REASON: few references; role not determined +Zp37 = $37 ; 18 refs; reads=14 writes=4; used at $8166, 81E4, 825A, 849B, +14 more ; REASON: mostly-read sprite/object field; role not determined +Zp38 = $38 ; 5 refs; reads=4 writes=1; used at $8564, 8677, CF4B, CF56, +1 more ; REASON: mostly-read field; role not determined +Zp39 = $39 ; 13 refs; reads=2 writes=11; used at $A939, A978, A981, A9C0, +9 more ; REASON: reused across GameModeTask drawing code; role not determined +Zp3A = $3A ; 11 refs; reads=0 writes=11; used at $A93D, A97C, A985, A9C4, +7 more ; REASON: write-only across GameModeTask; role not determined +Zp3B = $3B ; 3 refs; reads=1 writes=2; used at $F7AC, F7B4, F7D7 ; REASON: TaskSlotStart slot-state byte; role not determined beyond that +Zp3C = $3C ; 1 refs; reads=0 writes=1; used at $F7BC ; REASON: single write only; role not determined +Zp3D = $3D ; 2 refs; reads=0 writes=2; used at $F7B6, F7BF ; REASON: two writes only; role not determined +Zp45 = $45 ; 1 refs; reads=1 writes=0; used at $D507 ; REASON: single read as indirect pointer ((Zp45),y); target not determined +Zp4F = $4F ; 5 refs; reads=3 writes=2; used at $9379, 942D, A448, A961, +1 more ; REASON: reused across object/sound code; role not determined +Zp51 = $51 ; 11 refs; reads=7 writes=4; used at $8059, 8509, 851F, 97EE, +7 more ; REASON: aliases Zp06,x storage when slot=$4B; role not unique +Zp57 = $57 ; 1 refs; reads=0 writes=1; used at $93FE ; REASON: single write only; role not determined +Zp59 = $59 ; 1 refs; reads=1 writes=0; used at $9434 ; REASON: single read only; role not determined +Zp5F = $5F ; 4 refs; reads=2 writes=2; used at $827A, 8325, A453, A9A9 ; REASON: few references across subsystems; role not determined +Zp61 = $61 ; 10 refs; reads=7 writes=3; used at $852B, 8539, 927E, 97F4, +6 more ; REASON: aliases object-table storage; role not unique +Zp67 = $67 ; 1 refs; reads=0 writes=1; used at $82F6 ; REASON: single write only; role not determined +Zp69 = $69 ; 1 refs; reads=1 writes=0; used at $8327 ; REASON: single read only; role not determined +Zp6F = $6F ; 6 refs; reads=4 writes=2; used at $A8CE, A8D2, AD0C, AD10 ; REASON: GameModeTask sound/event sequencing; role not determined +Zp71 = $71 ; 11 refs; reads=9 writes=2; used at $AE3D, AE3F, AE47, AE8F, +6 more ; REASON: mostly-read Olympics field; role not determined +Zp72 = $72 ; 9 refs; reads=7 writes=2; used at $AD31, AE4A, AE4F, AE58, +4 more ; REASON: shifted (rol) Olympics bit field; role not determined +Zp74 = $74 ; 3 refs; reads=1 writes=2; used at $A9F8, AA4E, AA5B ; REASON: few references; role not determined +Zp75 = $75 ; 3 refs; reads=1 writes=2; used at $AACD, AB25, AB32 ; REASON: few references; role not determined +Zp76 = $76 ; 13 refs; reads=11 writes=2; used at $A31A, A384, A8E8, A918, +8 more ; REASON: mostly-read counter (dec Zp76; ldy Zp76); role not determined +Zp77 = $77 ; 13 refs; reads=11 writes=2; used at $A342, A3C2, A8EC, A92F, +8 more ; REASON: mostly-read counter (dec Zp77; ldy Zp77); role not determined +Zp79 = $79 ; 5 refs; reads=3 writes=2; used at $A900, A911, A944, A952 ; REASON: decremented counter across GameModeTask; role not determined +Zp7A = $7A ; 10 refs; reads=6 writes=4; used at $A902, A928, A98C, A99A, +4 more ; REASON: decremented counter across GameModeTask; role not determined +Zp7D = $7D ; 3 refs; reads=1 writes=2; used at $E43C, E459, E66D ; REASON: few references in Olympics code; role not determined +Zp7E = $7E ; 4 refs; reads=1 writes=3; used at $E130, E1F0, E4C7, EF55 ; REASON: few references across subsystems; role not determined +Zp81 = $81 ; 17 refs; reads=6 writes=11; used at $E132, E18E, E1CA, E1CC, +10 more ; REASON: Olympics event parameter block; role not determined +Zp82 = $82 ; 18 refs; reads=10 writes=8; used at $E0F8, E110, E181, E190, +13 more ; REASON: Olympics event parameter block; role not determined +Zp83 = $83 ; 11 refs; reads=10 writes=1; used at $9995, 99FC, 9A5F, 9AA5, +7 more ; REASON: mostly-read (sbc Zp83 borrow) 16-bit math byte; role not determined +Zp84 = $84 ; 5 refs; reads=3 writes=2; used at $E134, E2EA, E321, E323 ; REASON: few references in Olympics code; role not determined +Zp85 = $85 ; 9 refs; reads=2 writes=7; used at $E0EA, E136, E253, E256, +4 more ; REASON: Olympics event parameter; role not determined +Zp86 = $86 ; 11 refs; reads=4 writes=7; used at $E0EC, E138, E2D1, E37D, +5 more ; REASON: Olympics event parameter; role not determined +Zp87 = $87 ; 18 refs; reads=11 writes=7; used at $E11F, E4E9, E4EE, E52C, +13 more ; REASON: Olympics event parameter block; role not determined +Zp88 = $88 ; 5 refs; reads=3 writes=2; used at $98DB, 9910, E2B8, E2BA ; REASON: few references; role not determined +Zp89 = $89 ; 12 refs; reads=8 writes=4; used at $E4D6, E554, E56F, E575, +7 more ; REASON: Olympics sound/event sequencing; role not determined +Zp8A = $8A ; 5 refs; reads=2 writes=3; used at $E4BA, E53A, E53E, E54F, +1 more ; REASON: few references; role not determined +Zp8B = $8B ; 11 refs; reads=2 writes=9; used at $A081, A094, A0F9, A133, +7 more ; REASON: NMI/flag byte (EventTaskInit writes Zp8B); role not determined +Zp8D = $8D ; 1 refs; reads=0 writes=1; used at $9A20 ; REASON: single write only; role not determined +Zp8F = $8F ; 11 refs; reads=5 writes=6; used at $C3CE, C3F5, C3F7, C3F9, +2 more ; REASON: sound driver counter (inc Zp8F x5); role not determined +Zp92 = $92 ; 42 refs; reads=24 writes=18; used at $BE7A, BE80, BEB5, BEB9, +38 more ; REASON: sound channel state byte (Zp92,x) cleared by ClearObjectSlot; field role not determined +Zp9A = $9A ; 8 refs; reads=4 writes=4; used at $BE96, BF70, BF74, BF7B, +3 more ; REASON: sound channel state byte (Zp9A,x); role not determined +ZpA2 = $A2 ; 9 refs; reads=6 writes=3; used at $BE98, BF77, C08C, C092, +5 more ; REASON: sound channel state byte (ZpA2,x); role not determined +ZpAA = $AA ; 13 refs; reads=7 writes=6; used at $BE9C, C09A, C0B6, C0BC, +9 more ; REASON: sound channel state byte (ZpAA,x); role not determined +ZpB2 = $B2 ; 5 refs; reads=2 writes=3; used at $BE9A, BF7D, BF81, C2CF ; REASON: sound channel state byte (ZpB2,x); role not determined +ZpBA = $BA ; 5 refs; reads=2 writes=3; used at $C1DE, C274, C320, C325, +1 more ; REASON: few references; role not determined +ZpC2 = $C2 ; 9 refs; reads=6 writes=3; used at $C1E7, C1EF, C27C, C282, +5 more ; REASON: sound channel state byte (ZpC2,x); role not determined +ZpCA = $CA ; 10 refs; reads=4 writes=6; used at $BE85, BF8B, C0C6, C0EE, +6 more ; REASON: sound driver state byte (ZpCA,x); role not determined +ZpD2 = $D2 ; 10 refs; reads=4 writes=6; used at $BE8C, BF8F, C0CA, C0F3, +5 more ; REASON: sound driver state byte (ZpD2,x); role not determined +ZpDA = $DA ; 3 refs; reads=1 writes=2; used at $BE87, C0C8, C129 ; REASON: sound driver state byte (ZpDA,x); role not determined +ZpE2 = $E2 ; 3 refs; reads=1 writes=2; used at $BE8E, C0CC, C12D ; REASON: sound driver state byte (ZpE2,x); role not determined +ZpEA = $EA ; 11 refs; reads=5 writes=6; used at $C070, C2A4, C33A, C340, +6 more ; REASON: sound channel state byte (ZpEA,x); role not determined +ZpF2 = $F2 ; 3 refs; reads=2 writes=1; used at $BF33, C040, C303 ; REASON: sound channel state byte (ZpF2,x); role not determined diff --git a/_wip/CNROM/World Class Track Meet (U)/prg.bin b/CNROM/World Class Track Meet (U)/prg.bin similarity index 100% rename from _wip/CNROM/World Class Track Meet (U)/prg.bin rename to CNROM/World Class Track Meet (U)/prg.bin diff --git a/CNROM/World Class Track Meet (U)/prg.s b/CNROM/World Class Track Meet (U)/prg.s new file mode 100644 index 0000000..5cd8223 --- /dev/null +++ b/CNROM/World Class Track Meet (U)/prg.s @@ -0,0 +1,18390 @@ +; World Class Track Meet (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=$F803 RESET=$F6FD IRQ=$C0C0 +; PRG mapped at $8000-$FFFF (CNROM, mapper 3: the whole 32 KB image is visible at $8000-$FFFF) +; +; Pass 1 trace provenance (the audit trail behind every classification below): +; dispatch table $F796, 5 x 16-bit entries, seeded as routine entries +; 3 further routine entries recovered from table references elsewhere in the image: +; $8A08, $8D18, $A02B +; entries seeded by hand after inspecting code-shaped but unreferenced blocks: +; $BFF8, $C00A, $C015, $C029, $C037, $C04F, $C057, $C07B, $C083, $C097, $C0AD, $C0C1, $C0D1, $C0F8, $C129, $C134, $BFE8, $BFF0, $E0EF, $E16D, $E20D, $E2DE, $E42A, $E52C +; $C0BE-$C0C5 forced back to data: the only path into it is a branch that is always taken +; the PRG is 32 KB and maps whole at $8000-$FFFF (CNROM, mapper 3), so the linker puts the PRG segment at $8000 rather than at a file offset +; dispatch table $F796, 5 entries, read by `lda $F796,y` at $F780 and jumped to through `jmp ($001F)` +; push-pointer dispatch tables $BFC4 (16 entries), $BFE4 (2) and $E5F2 (7): the handler address is pushed and an `rts` lands on it, so each table stores the entry address MINUS ONE - the seeds above are the table values plus one +; the reason $C0BE-$C0C5 is data: the IRQ vector $C0C0 points into the middle of the `jmp $C047` at $C0BE, and the game never executes CLI, so the vector is dead +; the tracer is run with --undocumented: the code uses undocumented opcodes as ordinary code (ANC $37 at $BFF8, RRA/RLA/SLO and the NOP forms elsewhere) +; indirect dispatch through zero page (not followed statically): +; jmp ($001F) at $F78A +; +.setcpu "6502" + +.include "symbols.inc" +.include "locals.inc" + +.segment "PRG" + +; ----------------------------------------------------------------------------- +; Routine: ShortDelay +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShortDelay: + dey ; CPU:$8000 PRG:0000 88 + bne ShortDelay ; CPU:$8001 PRG:0001 D0 FD + rts ; CPU:$8003 PRG:0003 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun: + ldx #$4B ; CPU:$8004 PRG:0004 A2 4B + lda $0308 ; CPU:$8006 PRG:0006 AD 08 03 + beq EventTaskRun_Loop ; CPU:$8009 PRG:0009 F0 10 + lda $0189 ; CPU:$800B PRG:000B AD 89 01 + and #$20 ; CPU:$800E PRG:000E 29 20 + beq EventTaskRun_Loop ; CPU:$8010 PRG:0010 F0 09 + lda Zp06,x ; CPU:$8012 PRG:0012 B5 06 + ora #$07 ; CPU:$8014 PRG:0014 09 07 + sta Zp06,x ; CPU:$8016 PRG:0016 95 06 + jmp SpriteDraw ; CPU:$8018 PRG:0018 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop: + lda #$00 ; CPU:$801B PRG:001B A9 00 + sta $0183 ; CPU:$801D PRG:001D 8D 83 01 + sta $0184 ; CPU:$8020 PRG:0020 8D 84 01 + lda #$15 ; CPU:$8023 PRG:0023 A9 15 + sta $0482 ; CPU:$8025 PRG:0025 8D 82 04 + lda #$1F ; CPU:$8028 PRG:0028 A9 1F + sta $0483 ; CPU:$802A PRG:002A 8D 83 04 + jsr Sub_981D ; CPU:$802D PRG:002D 20 1D 98 + jsr Sub_A3F7 ; CPU:$8030 PRG:0030 20 F7 A3 + jsr Sub_A31A ; CPU:$8033 PRG:0033 20 1A A3 + jsr Sub_A37E ; CPU:$8036 PRG:0036 20 7E A3 + jsr Sub_971A ; CPU:$8039 PRG:0039 20 1A 97 + lda SlotState,x ; CPU:$803C PRG:003C B5 0C + beq EventTaskRun_Loop3 ; CPU:$803E PRG:003E F0 19 + dec SlotState,x ; CPU:$8040 PRG:0040 D6 0C + jsr Sub_8627 ; CPU:$8042 PRG:0042 20 27 86 + lda Zp08,x ; CPU:$8045 PRG:0045 B5 08 + cmp #$06 ; CPU:$8047 PRG:0047 C9 06 + beq EventTaskRun_Loop2 ; CPU:$8049 PRG:0049 F0 05 + cmp #$01 ; CPU:$804B PRG:004B C9 01 + beq EventTaskRun_Loop2 ; CPU:$804D PRG:004D F0 01 + rts ; CPU:$804F PRG:004F 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop2: + lda #$01 ; CPU:$8050 PRG:0050 A9 01 + sta $0186 ; CPU:$8052 PRG:0052 8D 86 01 + sta $0469 ; CPU:$8055 PRG:0055 8D 69 04 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_OnNonzero: + rts ; CPU:$8058 PRG:0058 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop3: + lda Zp51 ; CPU:$8059 PRG:0059 A5 51 + and #$20 ; CPU:$805B PRG:005B 29 20 + bne EventTaskRun_OnNonzero ; CPU:$805D PRG:005D D0 F9 + lda Zp04,x ; CPU:$805F PRG:005F B5 04 + cmp #$05 ; CPU:$8061 PRG:0061 C9 05 + bcc EventTaskRun_Loop4 ; CPU:$8063 PRG:0063 90 03 + jmp Sub_8409 ; CPU:$8065 PRG:0065 4C 09 84 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop4: + cmp #$01 ; CPU:$8068 PRG:0068 C9 01 + bcc EventTaskRun_Loop6 ; CPU:$806A PRG:006A 90 0C + lda GameMode ; CPU:$806C PRG:006C A5 8C + cmp #$02 ; CPU:$806E PRG:006E C9 02 + bcs EventTaskRun_Loop5 ; CPU:$8070 PRG:0070 B0 03 + jmp Sub_81D3 ; CPU:$8072 PRG:0072 4C D3 81 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop5: + jmp Sub_8118 ; CPU:$8075 PRG:0075 4C 18 81 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop6: + lda #$E0 ; CPU:$8078 PRG:0078 A9 E0 + sta $0390 ; CPU:$807A PRG:007A 8D 90 03 + ldy GameMode ; CPU:$807D PRG:007D A4 8C + lda $83EB,y ; CPU:$807F PRG:007F B9 EB 83 + ldy #$03 ; CPU:$8082 PRG:0082 A0 03 + jsr AudioChannelLoop ; CPU:$8084 PRG:0084 20 63 BE + lda #$0F ; CPU:$8087 PRG:0087 A9 0F + sta $030C ; CPU:$8089 PRG:0089 8D 0C 03 + lda #$00 ; CPU:$808C PRG:008C A9 00 + sta $0186 ; CPU:$808E PRG:008E 8D 86 01 + sta Zp08,x ; CPU:$8091 PRG:0091 95 08 + lda $0391 ; CPU:$8093 PRG:0093 AD 91 03 + beq EventTaskRun_Loop7 ; CPU:$8096 PRG:0096 F0 0F + lda $0308 ; CPU:$8098 PRG:0098 AD 08 03 + beq EventTaskRun_Loop8 ; CPU:$809B PRG:009B F0 12 + lda $0392 ; CPU:$809D PRG:009D AD 92 03 + and #$7F ; CPU:$80A0 PRG:00A0 29 7F + bne EventTaskRun_Loop9 ; CPU:$80A2 PRG:00A2 D0 10 + jmp EventTaskRun_Loop8 ; CPU:$80A4 PRG:00A4 4C AF 80 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop7: + lda #$03 ; CPU:$80A7 PRG:00A7 A9 03 + sta $030C ; CPU:$80A9 PRG:00A9 8D 0C 03 + jmp EventTaskRun_Loop9 ; CPU:$80AC PRG:00AC 4C B4 80 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop8: + lda #$0C ; CPU:$80AF PRG:00AF A9 0C + sta $030C ; CPU:$80B1 PRG:00B1 8D 0C 03 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop9: + lda #$51 ; CPU:$80B4 PRG:00B4 A9 51 + sta $037E ; CPU:$80B6 PRG:00B6 8D 7E 03 + lda GameMode ; CPU:$80B9 PRG:00B9 A5 8C + cmp #$02 ; CPU:$80BB PRG:00BB C9 02 + bcs EventTaskRun_Loop10 ; CPU:$80BD PRG:00BD B0 05 + lda #$02 ; CPU:$80BF PRG:00BF A9 02 + jsr TaskSlotStart ; CPU:$80C1 PRG:00C1 20 A0 F7 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop10: + lda #$80 ; CPU:$80C4 PRG:00C4 A9 80 + sta $0413 ; CPU:$80C6 PRG:00C6 8D 13 04 + lda #$01 ; CPU:$80C9 PRG:00C9 A9 01 + sta Zp04,x ; CPU:$80CB PRG:00CB 95 04 + sta Zp0E,x ; CPU:$80CD PRG:00CD 95 0E + lda #$00 ; CPU:$80CF PRG:00CF A9 00 + sta Zp06,x ; CPU:$80D1 PRG:00D1 95 06 + sta Zp09,x ; CPU:$80D3 PRG:00D3 95 09 + sta $039B ; CPU:$80D5 PRG:00D5 8D 9B 03 + sta $046D ; CPU:$80D8 PRG:00D8 8D 6D 04 + sta $046E ; CPU:$80DB PRG:00DB 8D 6E 04 + sta $017B ; CPU:$80DE PRG:00DE 8D 7B 01 + sta $017C ; CPU:$80E1 PRG:00E1 8D 7C 01 + sta $046B ; CPU:$80E4 PRG:00E4 8D 6B 04 + sta $046C ; CPU:$80E7 PRG:00E7 8D 6C 04 + sta $0406 ; CPU:$80EA PRG:00EA 8D 06 04 + sta $0480 ; CPU:$80ED PRG:00ED 8D 80 04 + sta $0481 ; CPU:$80F0 PRG:00F0 8D 81 04 + lda GameMode ; CPU:$80F3 PRG:00F3 A5 8C + cmp #$02 ; CPU:$80F5 PRG:00F5 C9 02 + bcs EventTaskRun_Loop11 ; CPU:$80F7 PRG:00F7 B0 05 + lda #$00 ; CPU:$80F9 PRG:00F9 A9 00 + sta $0180 ; CPU:$80FB PRG:00FB 8D 80 01 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop11: + lda #$00 ; CPU:$80FE PRG:00FE A9 00 + sta $0181 ; CPU:$8100 PRG:0100 8D 81 01 + sta $040A ; CPU:$8103 PRG:0103 8D 0A 04 + sta Zp07,x ; CPU:$8106 PRG:0106 95 07 + sta $017A ; CPU:$8108 PRG:0108 8D 7A 01 + sta $017B ; CPU:$810B PRG:010B 8D 7B 01 + lda #$0C ; CPU:$810E PRG:010E A9 0C + sta Zp0F,x ; CPU:$8110 PRG:0110 95 0F + lda GameMode ; CPU:$8112 PRG:0112 A5 8C + cmp #$02 ; CPU:$8114 PRG:0114 C9 02 + bcc EventTaskRun_Loop16 ; CPU:$8116 PRG:0116 90 71 +; ----------------------------------------------------------------------------- +; Routine: Sub_8118 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8118: + lda #$0C ; CPU:$8118 PRG:0118 A9 0C + sta $030C ; CPU:$811A PRG:011A 8D 0C 03 + lda Zp04,x ; CPU:$811D PRG:011D B5 04 + cmp #$01 ; CPU:$811F PRG:011F C9 01 + bne EventTaskRun_Loop12 ; CPU:$8121 PRG:0121 D0 37 + jsr Sub_8AC7 ; CPU:$8123 PRG:0123 20 C7 8A + lda #$80 ; CPU:$8126 PRG:0126 A9 80 + sta $0405 ; CPU:$8128 PRG:0128 8D 05 04 + sta $0415 ; CPU:$812B PRG:012B 8D 15 04 + lda #$C0 ; CPU:$812E PRG:012E A9 C0 + sta $0414 ; CPU:$8130 PRG:0130 8D 14 04 + sta $0404 ; CPU:$8133 PRG:0133 8D 04 04 + lda #$00 ; CPU:$8136 PRG:0136 A9 00 + sta $0409 ; CPU:$8138 PRG:0138 8D 09 04 + lda Zp0E,x ; CPU:$813B PRG:013B B5 0E + sta $0478 ; CPU:$813D PRG:013D 8D 78 04 + lda #$4F ; CPU:$8140 PRG:0140 A9 4F + sta Zp0D,x ; CPU:$8142 PRG:0142 95 0D + jsr ObjectUpdate ; CPU:$8144 PRG:0144 20 92 A7 + lda #$0A ; CPU:$8147 PRG:0147 A9 0A + jsr ObjectDraw ; CPU:$8149 PRG:0149 20 6F A5 + lda #$02 ; CPU:$814C PRG:014C A9 02 + sta Zp04,x ; CPU:$814E PRG:014E 95 04 + lda #$20 ; CPU:$8150 PRG:0150 A9 20 + sta SlotState,x ; CPU:$8152 PRG:0152 95 0C + lda #$03 ; CPU:$8154 PRG:0154 A9 03 + jsr TaskSlotStart ; CPU:$8156 PRG:0156 20 A0 F7 + rts ; CPU:$8159 PRG:0159 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop12: + lda Zp04,x ; CPU:$815A PRG:015A B5 04 + cmp #$02 ; CPU:$815C PRG:015C C9 02 + bne EventTaskRun_Loop15 ; CPU:$815E PRG:015E D0 24 + lda VblankFlag ; CPU:$8160 PRG:0160 A5 2E + and #$80 ; CPU:$8162 PRG:0162 29 80 + bne EventTaskRun_Loop13 ; CPU:$8164 PRG:0164 D0 0A + lda Zp37 ; CPU:$8166 PRG:0166 A5 37 + and $030C ; CPU:$8168 PRG:0168 2D 0C 03 + cmp $030C ; CPU:$816B PRG:016B CD 0C 03 + bne EventTaskRun_Loop14 ; CPU:$816E PRG:016E D0 13 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop13: + jsr ClearObjectSlot ; CPU:$8170 PRG:0170 20 BF BE + lda #$26 ; CPU:$8173 PRG:0173 A9 26 + ldy #$01 ; CPU:$8175 PRG:0175 A0 01 + jsr AudioChannelLoop ; CPU:$8177 PRG:0177 20 63 BE + lda #$03 ; CPU:$817A PRG:017A A9 03 + sta Zp04,x ; CPU:$817C PRG:017C 95 04 + lda #$80 ; CPU:$817E PRG:017E A9 80 + sta SlotState,x ; CPU:$8180 PRG:0180 95 0C + rts ; CPU:$8182 PRG:0182 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop14: + rts ; CPU:$8183 PRG:0183 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop15: + lda #$05 ; CPU:$8184 PRG:0184 A9 05 + sta Zp04,x ; CPU:$8186 PRG:0186 95 04 + rts ; CPU:$8188 PRG:0188 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop16: + lda #$00 ; CPU:$8189 PRG:0189 A9 00 + sta $0108 ; CPU:$818B PRG:018B 8D 08 01 + sta $0109 ; CPU:$818E PRG:018E 8D 09 01 + lda #$03 ; CPU:$8191 PRG:0191 A9 03 + jsr TaskSlotStart ; CPU:$8193 PRG:0193 20 A0 F7 + lda #$68 ; CPU:$8196 PRG:0196 A9 68 + sta $0405 ; CPU:$8198 PRG:0198 8D 05 04 + sta $0415 ; CPU:$819B PRG:019B 8D 15 04 + lda #$C0 ; CPU:$819E PRG:019E A9 C0 + sta $0414 ; CPU:$81A0 PRG:01A0 8D 14 04 + sta $0404 ; CPU:$81A3 PRG:01A3 8D 04 04 + lda #$48 ; CPU:$81A6 PRG:01A6 A9 48 + sta $0435 ; CPU:$81A8 PRG:01A8 8D 35 04 + lda #$B0 ; CPU:$81AB PRG:01AB A9 B0 + sta $0434 ; CPU:$81AD PRG:01AD 8D 34 04 + lda Zp0E,x ; CPU:$81B0 PRG:01B0 B5 0E + sta $0478 ; CPU:$81B2 PRG:01B2 8D 78 04 + lda #$32 ; CPU:$81B5 PRG:01B5 A9 32 + jsr ObjectUpdate ; CPU:$81B7 PRG:01B7 20 92 A7 + lda #$0A ; CPU:$81BA PRG:01BA A9 0A + jsr ObjectDraw ; CPU:$81BC PRG:01BC 20 6F A5 + lda #$D3 ; CPU:$81BF PRG:01BF A9 D3 + jsr SpriteSetup ; CPU:$81C1 PRG:01C1 20 EF 83 + jsr Sub_9A41 ; CPU:$81C4 PRG:01C4 20 41 9A + lda #$00 ; CPU:$81C7 PRG:01C7 A9 00 + sta $0186 ; CPU:$81C9 PRG:01C9 8D 86 01 + sta Zp08,x ; CPU:$81CC PRG:01CC 95 08 + lda #$20 ; CPU:$81CE PRG:01CE A9 20 + sta SlotState,x ; CPU:$81D0 PRG:01D0 95 0C + rts ; CPU:$81D2 PRG:01D2 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_81D3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_81D3: + lda Zp04,x ; CPU:$81D3 PRG:01D3 B5 04 + cmp #$01 ; CPU:$81D5 PRG:01D5 C9 01 + bne EventTaskRun_Loop19 ; CPU:$81D7 PRG:01D7 D0 48 + lda #$00 ; CPU:$81D9 PRG:01D9 A9 00 + sta $0180 ; CPU:$81DB PRG:01DB 8D 80 01 + lda VblankFlag ; CPU:$81DE PRG:01DE A5 2E + and #$80 ; CPU:$81E0 PRG:01E0 29 80 + bne EventTaskRun_Loop17 ; CPU:$81E2 PRG:01E2 D0 0A + lda Zp37 ; CPU:$81E4 PRG:01E4 A5 37 + and $030C ; CPU:$81E6 PRG:01E6 2D 0C 03 + cmp $030C ; CPU:$81E9 PRG:01E9 CD 0C 03 + bne EventTaskRun_Loop18 ; CPU:$81EC PRG:01EC D0 2B +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop17: + jsr ClearObjectSlot ; CPU:$81EE PRG:01EE 20 BF BE + lda #$60 ; CPU:$81F1 PRG:01F1 A9 60 + sta SlotState,x ; CPU:$81F3 PRG:01F3 95 0C + lda #$02 ; CPU:$81F5 PRG:01F5 A9 02 + sta Zp04,x ; CPU:$81F7 PRG:01F7 95 04 + lda Zp0E,x ; CPU:$81F9 PRG:01F9 B5 0E + sta $0478 ; CPU:$81FB PRG:01FB 8D 78 04 + lda #$2C ; CPU:$81FE PRG:01FE A9 2C + sta Zp0D,x ; CPU:$8200 PRG:0200 95 0D + jsr ObjectUpdate ; CPU:$8202 PRG:0202 20 92 A7 + lda #$0A ; CPU:$8205 PRG:0205 A9 0A + jsr ObjectDraw ; CPU:$8207 PRG:0207 20 6F A5 + lda #$26 ; CPU:$820A PRG:020A A9 26 + ldy #$01 ; CPU:$820C PRG:020C A0 01 + jsr AudioChannelLoop ; CPU:$820E PRG:020E 20 63 BE + lda #$00 ; CPU:$8211 PRG:0211 A9 00 + sta $0186 ; CPU:$8213 PRG:0213 8D 86 01 + sta Zp08,x ; CPU:$8216 PRG:0216 95 08 + rts ; CPU:$8218 PRG:0218 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop18: + lda #$00 ; CPU:$8219 PRG:0219 A9 00 + sta $0186 ; CPU:$821B PRG:021B 8D 86 01 + sta Zp08,x ; CPU:$821E PRG:021E 95 08 + rts ; CPU:$8220 PRG:0220 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop19: + lda Zp04,x ; CPU:$8221 PRG:0221 B5 04 + cmp #$02 ; CPU:$8223 PRG:0223 C9 02 + bne EventTaskRun_Loop20 ; CPU:$8225 PRG:0225 D0 22 + lda Zp0E,x ; CPU:$8227 PRG:0227 B5 0E + sta $0478 ; CPU:$8229 PRG:0229 8D 78 04 + lda #$2D ; CPU:$822C PRG:022C A9 2D + sta Zp0D,x ; CPU:$822E PRG:022E 95 0D + jsr ObjectUpdate ; CPU:$8230 PRG:0230 20 92 A7 + lda #$0A ; CPU:$8233 PRG:0233 A9 0A + jsr ObjectDraw ; CPU:$8235 PRG:0235 20 6F A5 + lda #$03 ; CPU:$8238 PRG:0238 A9 03 + sta Zp04,x ; CPU:$823A PRG:023A 95 04 + lda #$1F ; CPU:$823C PRG:023C A9 1F + ldy #$02 ; CPU:$823E PRG:023E A0 02 + jsr AudioChannelLoop ; CPU:$8240 PRG:0240 20 63 BE + lda #$D4 ; CPU:$8243 PRG:0243 A9 D4 + jsr SpriteSetup ; CPU:$8245 PRG:0245 20 EF 83 + rts ; CPU:$8248 PRG:0248 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop20: + lda Zp04,x ; CPU:$8249 PRG:0249 B5 04 + cmp #$03 ; CPU:$824B PRG:024B C9 03 + bne EventTaskRun_Loop24 ; CPU:$824D PRG:024D D0 2E + lda VblankFlag ; CPU:$824F PRG:024F A5 2E + and #$80 ; CPU:$8251 PRG:0251 29 80 + bne EventTaskRun_Loop22 ; CPU:$8253 PRG:0253 D0 17 + lda $0391 ; CPU:$8255 PRG:0255 AD 91 03 + beq EventTaskRun_Loop21 ; CPU:$8258 PRG:0258 F0 0B + lda Zp37 ; CPU:$825A PRG:025A A5 37 + and Zp0F,x ; CPU:$825C PRG:025C 35 0F + cmp Zp0F,x ; CPU:$825E PRG:025E D5 0F + beq EventTaskRun_Loop22 ; CPU:$8260 PRG:0260 F0 0A + jmp Sub_82BA ; CPU:$8262 PRG:0262 4C BA 82 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop21: + lda $030C ; CPU:$8265 PRG:0265 AD 0C 03 + cmp #$0C ; CPU:$8268 PRG:0268 C9 0C + bne EventTaskRun_Loop23 ; CPU:$826A PRG:026A D0 10 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop22: + inc $0180 ; CPU:$826C PRG:026C EE 80 01 + lda $0180 ; CPU:$826F PRG:026F AD 80 01 + cmp #$60 ; CPU:$8272 PRG:0272 C9 60 + bne EventTaskRun_Loop23 ; CPU:$8274 PRG:0274 D0 06 + lda #$04 ; CPU:$8276 PRG:0276 A9 04 + sta Zp04,x ; CPU:$8278 PRG:0278 95 04 + sta Zp5F ; CPU:$827A PRG:027A 85 5F +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop23: + rts ; CPU:$827C PRG:027C 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop24 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop24: + lda Zp0E,x ; CPU:$827D PRG:027D B5 0E + sta $0478 ; CPU:$827F PRG:027F 8D 78 04 + lda #$2E ; CPU:$8282 PRG:0282 A9 2E + sta Zp0D,x ; CPU:$8284 PRG:0284 95 0D + jsr ObjectUpdate ; CPU:$8286 PRG:0286 20 92 A7 + lda #$00 ; CPU:$8289 PRG:0289 A9 00 + jsr ObjectDraw ; CPU:$828B PRG:028B 20 6F A5 + lda #$0A ; CPU:$828E PRG:028E A9 0A + sta SlotState,x ; CPU:$8290 PRG:0290 95 0C + lda #$05 ; CPU:$8292 PRG:0292 A9 05 + sta Zp04,x ; CPU:$8294 PRG:0294 95 04 + lda #$1B ; CPU:$8296 PRG:0296 A9 1B + ldy #$03 ; CPU:$8298 PRG:0298 A0 03 + jsr AudioChannelLoop ; CPU:$829A PRG:029A 20 63 BE + lda $0390 ; CPU:$829D PRG:029D AD 90 03 + and #$CF ; CPU:$82A0 PRG:02A0 29 CF + sta $0390 ; CPU:$82A2 PRG:02A2 8D 90 03 + lda #$05 ; CPU:$82A5 PRG:02A5 A9 05 + sta Zp04,x ; CPU:$82A7 PRG:02A7 95 04 + lda #$D5 ; CPU:$82A9 PRG:02A9 A9 D5 + jsr SpriteSetup ; CPU:$82AB PRG:02AB 20 EF 83 + lda GameMode ; CPU:$82AE PRG:02AE A5 8C + cmp #$01 ; CPU:$82B0 PRG:02B0 C9 01 + bne EventTaskRun_Loop25 ; CPU:$82B2 PRG:02B2 D0 05 + lda #$03 ; CPU:$82B4 PRG:02B4 A9 03 + sta $0384 ; CPU:$82B6 PRG:02B6 8D 84 03 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop25 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop25: + rts ; CPU:$82B9 PRG:02B9 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_82BA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_82BA: + lda #$2D ; CPU:$82BA PRG:02BA A9 2D + ldy #$03 ; CPU:$82BC PRG:02BC A0 03 + jsr AudioChannelLoop ; CPU:$82BE PRG:02BE 20 63 BE + lda #$D5 ; CPU:$82C1 PRG:02C1 A9 D5 + jsr SpriteSetup ; CPU:$82C3 PRG:02C3 20 EF 83 + lda #$08 ; CPU:$82C6 PRG:02C6 A9 08 + jsr DelayFrames ; CPU:$82C8 PRG:02C8 20 F5 F7 + lda #$D4 ; CPU:$82CB PRG:02CB A9 D4 + jsr SpriteSetup ; CPU:$82CD PRG:02CD 20 EF 83 + lda #$08 ; CPU:$82D0 PRG:02D0 A9 08 + jsr DelayFrames ; CPU:$82D2 PRG:02D2 20 F5 F7 + lda #$D5 ; CPU:$82D5 PRG:02D5 A9 D5 + jsr SpriteSetup ; CPU:$82D7 PRG:02D7 20 EF 83 + inc $0181 ; CPU:$82DA PRG:02DA EE 81 01 + lda Zp0E,x ; CPU:$82DD PRG:02DD B5 0E + sta $0478 ; CPU:$82DF PRG:02DF 8D 78 04 + lda #$31 ; CPU:$82E2 PRG:02E2 A9 31 + sta Zp0D,x ; CPU:$82E4 PRG:02E4 95 0D + jsr ObjectUpdate ; CPU:$82E6 PRG:02E6 20 92 A7 + lda #$01 ; CPU:$82E9 PRG:02E9 A9 01 + sta Zp04,x ; CPU:$82EB PRG:02EB 95 04 + jsr Sub_A937 ; CPU:$82ED PRG:02ED 20 37 A9 + ldx #$4B ; CPU:$82F0 PRG:02F0 A2 4B + lda #$40 ; CPU:$82F2 PRG:02F2 A9 40 + sta SlotState,x ; CPU:$82F4 PRG:02F4 95 0C + sta Zp67 ; CPU:$82F6 PRG:02F6 85 67 + lda #$E1 ; CPU:$82F8 PRG:02F8 A9 E1 + clc ; CPU:$82FA PRG:02FA 18 + adc $0181 ; CPU:$82FB PRG:02FB 6D 81 01 + sta $03BF ; CPU:$82FE PRG:02FE 8D BF 03 + lda #$20 ; CPU:$8301 PRG:0301 A9 20 + sta $03C0 ; CPU:$8303 PRG:0303 8D C0 03 + lda #$01 ; CPU:$8306 PRG:0306 A9 01 + sta $03C1 ; CPU:$8308 PRG:0308 8D C1 03 + lda #$73 ; CPU:$830B PRG:030B A9 73 + sta $03C2 ; CPU:$830D PRG:030D 8D C2 03 + lda #$80 ; CPU:$8310 PRG:0310 A9 80 + sta $03BE ; CPU:$8312 PRG:0312 8D BE 03 + lda #$10 ; CPU:$8315 PRG:0315 A9 10 + jsr DelayFrames ; CPU:$8317 PRG:0317 20 F5 F7 + lda #$35 ; CPU:$831A PRG:031A A9 35 + ldy #$04 ; CPU:$831C PRG:031C A0 04 + jsr EventState ; CPU:$831E PRG:031E 20 70 A8 + lda #$01 ; CPU:$8321 PRG:0321 A9 01 + sta Zp04,x ; CPU:$8323 PRG:0323 95 04 + sta Zp5F ; CPU:$8325 PRG:0325 85 5F + lda Zp69 ; CPU:$8327 PRG:0327 A5 69 + sta $0478 ; CPU:$8329 PRG:0329 8D 78 04 + lda #$08 ; CPU:$832C PRG:032C A9 08 + sta $0183 ; CPU:$832E PRG:032E 8D 83 01 + lda #$3F ; CPU:$8331 PRG:0331 A9 3F + jsr ObjectUpdate ; CPU:$8333 PRG:0333 20 92 A7 + lda #$01 ; CPU:$8336 PRG:0336 A9 01 + sta $0184 ; CPU:$8338 PRG:0338 8D 84 01 + lda #$19 ; CPU:$833B PRG:033B A9 19 + jsr SpritePosition ; CPU:$833D PRG:033D 20 5E 98 + lda #$00 ; CPU:$8340 PRG:0340 A9 00 + sta $0184 ; CPU:$8342 PRG:0342 8D 84 01 + sta $0183 ; CPU:$8345 PRG:0345 8D 83 01 + jsr Sub_A97F ; CPU:$8348 PRG:0348 20 7F A9 + ldx #$4B ; CPU:$834B PRG:034B A2 4B + lda $0181 ; CPU:$834D PRG:034D AD 81 01 + cmp #$03 ; CPU:$8350 PRG:0350 C9 03 + bne EventTaskRun_Loop26 ; CPU:$8352 PRG:0352 D0 03 + jmp Sub_8358 ; CPU:$8354 PRG:0354 4C 58 83 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop26 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop26: + rts ; CPU:$8357 PRG:0357 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_8358 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8358: + lda #$03 ; CPU:$8358 PRG:0358 A9 03 + sta $030C ; CPU:$835A PRG:035A 8D 0C 03 + lda Zp0E,x ; CPU:$835D PRG:035D B5 0E + sta $0478 ; CPU:$835F PRG:035F 8D 78 04 + lda #$35 ; CPU:$8362 PRG:0362 A9 35 + jsr ObjectUpdate ; CPU:$8364 PRG:0364 20 92 A7 + lda #$10 ; CPU:$8367 PRG:0367 A9 10 + jsr DelayFrames ; CPU:$8369 PRG:0369 20 F5 F7 + lda #$25 ; CPU:$836C PRG:036C A9 25 + ldy #$01 ; CPU:$836E PRG:036E A0 01 + jsr AudioChannelLoop ; CPU:$8370 PRG:0370 20 63 BE + lda #$06 ; CPU:$8373 PRG:0373 A9 06 + sta Zp0F ; CPU:$8375 PRG:0375 85 0F +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_OnNonzero2: + lda #$73 ; CPU:$8377 PRG:0377 A9 73 + sta $03C2 ; CPU:$8379 PRG:0379 8D C2 03 + sta $03C3 ; CPU:$837C PRG:037C 8D C3 03 + sta $03C4 ; CPU:$837F PRG:037F 8D C4 03 + lda #$03 ; CPU:$8382 PRG:0382 A9 03 + sta $03C1 ; CPU:$8384 PRG:0384 8D C1 03 + lda #$E2 ; CPU:$8387 PRG:0387 A9 E2 + sta $03BF ; CPU:$8389 PRG:0389 8D BF 03 + lda #$20 ; CPU:$838C PRG:038C A9 20 + sta $03C0 ; CPU:$838E PRG:038E 8D C0 03 + lda #$80 ; CPU:$8391 PRG:0391 A9 80 + sta $03BE ; CPU:$8393 PRG:0393 8D BE 03 + lda #$10 ; CPU:$8396 PRG:0396 A9 10 + jsr DelayFrames ; CPU:$8398 PRG:0398 20 F5 F7 + jsr Sub_83C6 ; CPU:$839B PRG:039B 20 C6 83 + dec Zp0F ; CPU:$839E PRG:039E C6 0F + bne EventTaskRun_OnNonzero2 ; CPU:$83A0 PRG:03A0 D0 D5 + jsr Sub_98DB ; CPU:$83A2 PRG:03A2 20 DB 98 + lda $0391 ; CPU:$83A5 PRG:03A5 AD 91 03 + bne EventTaskRun_Loop27 ; CPU:$83A8 PRG:03A8 D0 08 + lda $0392 ; CPU:$83AA PRG:03AA AD 92 03 + bne EventTaskRun_Loop27 ; CPU:$83AD PRG:03AD D0 03 + jmp SpriteDraw ; CPU:$83AF PRG:03AF 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop27 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop27: + jsr Sub_94BE ; CPU:$83B2 PRG:03B2 20 BE 94 + jsr Sub_94E3 ; CPU:$83B5 PRG:03B5 20 E3 94 + lda $0308 ; CPU:$83B8 PRG:03B8 AD 08 03 + beq EventTaskRun_Loop28 ; CPU:$83BB PRG:03BB F0 06 + lda #$01 ; CPU:$83BD PRG:03BD A9 01 + jsr TaskSlotStart ; CPU:$83BF PRG:03BF 20 A0 F7 + rts ; CPU:$83C2 PRG:03C2 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskRun_Loop28 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskRun_Loop28: + jmp SpriteDraw ; CPU:$83C3 PRG:03C3 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: Sub_83C6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_83C6: + lda #$03 ; CPU:$83C6 PRG:03C6 A9 03 + sta $03C2 ; CPU:$83C8 PRG:03C8 8D C2 03 + sta $03C3 ; CPU:$83CB PRG:03CB 8D C3 03 + sta $03C4 ; CPU:$83CE PRG:03CE 8D C4 03 + lda #$03 ; CPU:$83D1 PRG:03D1 A9 03 + sta $03C1 ; CPU:$83D3 PRG:03D3 8D C1 03 + lda #$E2 ; CPU:$83D6 PRG:03D6 A9 E2 + sta $03BF ; CPU:$83D8 PRG:03D8 8D BF 03 + lda #$20 ; CPU:$83DB PRG:03DB A9 20 + sta $03C0 ; CPU:$83DD PRG:03DD 8D C0 03 + lda #$80 ; CPU:$83E0 PRG:03E0 A9 80 + sta $03BE ; CPU:$83E2 PRG:03E2 8D BE 03 + lda #$10 ; CPU:$83E5 PRG:03E5 A9 10 + jsr DelayFrames ; CPU:$83E7 PRG:03E7 20 F5 F7 + rts ; CPU:$83EA PRG:03EA 60 +; ---- data $83EB-$83EE (4 bytes) ---- +; referenced by `lda $83EB,y` at $807F (operand $83EB falls inside this region) + .byte $03, $06, $09, $0C ; CPU:$83EB PRG:03EB 03 06 09 0C +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup: + sta Zp10 ; CPU:$83EF PRG:03EF 85 10 + lda $0183 ; CPU:$83F1 PRG:03F1 AD 83 01 + pha ; CPU:$83F4 PRG:03F4 48 + lda #$35 ; CPU:$83F5 PRG:03F5 A9 35 + sta $0478 ; CPU:$83F7 PRG:03F7 8D 78 04 + lda #$30 ; CPU:$83FA PRG:03FA A9 30 + sta $0183 ; CPU:$83FC PRG:03FC 8D 83 01 + lda Zp10 ; CPU:$83FF PRG:03FF A5 10 + jsr Sub_A789 ; CPU:$8401 PRG:0401 20 89 A7 + pla ; CPU:$8404 PRG:0404 68 + sta $0183 ; CPU:$8405 PRG:0405 8D 83 01 + rts ; CPU:$8408 PRG:0408 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_8409 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8409: + lda GameMode ; CPU:$8409 PRG:0409 A5 8C + cmp #$02 ; CPU:$840B PRG:040B C9 02 + bcs SpriteSetup_Loop ; CPU:$840D PRG:040D B0 07 + lda #$35 ; CPU:$840F PRG:040F A9 35 + ldy #$04 ; CPU:$8411 PRG:0411 A0 04 + jsr EventState ; CPU:$8413 PRG:0413 20 70 A8 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop: + lda #$01 ; CPU:$8416 PRG:0416 A9 01 + sta Zp0E,x ; CPU:$8418 PRG:0418 95 0E + jsr Sub_A48C ; CPU:$841A PRG:041A 20 8C A4 + lda Zp07,x ; CPU:$841D PRG:041D B5 07 + beq SpriteSetup_Loop4 ; CPU:$841F PRG:041F F0 19 + cmp #$01 ; CPU:$8421 PRG:0421 C9 01 + bne SpriteSetup_Loop2 ; CPU:$8423 PRG:0423 D0 03 + jmp Sub_88A8 ; CPU:$8425 PRG:0425 4C A8 88 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop2: + cmp #$03 ; CPU:$8428 PRG:0428 C9 03 + bne SpriteSetup_Loop3 ; CPU:$842A PRG:042A D0 03 + jmp Sub_8868 ; CPU:$842C PRG:042C 4C 68 88 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop3: + cmp #$05 ; CPU:$842F PRG:042F C9 05 + bne SpriteSetup_Loop4 ; CPU:$8431 PRG:0431 D0 07 + lda Zp0B,x ; CPU:$8433 PRG:0433 B5 0B + pha ; CPU:$8435 PRG:0435 48 + lda Zp0A,x ; CPU:$8436 PRG:0436 B5 0A + pha ; CPU:$8438 PRG:0438 48 + rts ; CPU:$8439 PRG:0439 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop4: + lda Zp06,x ; CPU:$843A PRG:043A B5 06 + and #$01 ; CPU:$843C PRG:043C 29 01 + beq SpriteSetup_Loop5 ; CPU:$843E PRG:043E F0 03 + jmp Sub_9D7B ; CPU:$8440 PRG:0440 4C 7B 9D +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop5: + ldy $0183 ; CPU:$8443 PRG:0443 AC 83 01 + lda $040A,y ; CPU:$8446 PRG:0446 B9 0A 04 + and #$04 ; CPU:$8449 PRG:0449 29 04 + beq SpriteSetup_Loop6 ; CPU:$844B PRG:044B F0 03 + jmp Sub_8D45 ; CPU:$844D PRG:044D 4C 45 8D +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop6: + lda GameMode ; CPU:$8450 PRG:0450 A5 8C + cmp #$02 ; CPU:$8452 PRG:0452 C9 02 + bcc SpriteSetup_Loop7 ; CPU:$8454 PRG:0454 90 10 + lda $046F ; CPU:$8456 PRG:0456 AD 6F 04 + cmp #$3A ; CPU:$8459 PRG:0459 C9 3A + bcc SpriteSetup_Loop7 ; CPU:$845B PRG:045B 90 09 + lda Zp06,x ; CPU:$845D PRG:045D B5 06 + and #$10 ; CPU:$845F PRG:045F 29 10 + bne SpriteSetup_Loop7 ; CPU:$8461 PRG:0461 D0 03 + jmp Sub_9141 ; CPU:$8463 PRG:0463 4C 41 91 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop7: + ldy $0183 ; CPU:$8466 PRG:0466 AC 83 01 + lda $040A,y ; CPU:$8469 PRG:0469 B9 0A 04 + and #$01 ; CPU:$846C PRG:046C 29 01 + beq SpriteSetup_Loop8 ; CPU:$846E PRG:046E F0 03 + jmp SpriteSetup_Loop29 ; CPU:$8470 PRG:0470 4C D3 85 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop8: + lda $039B ; CPU:$8473 PRG:0473 AD 9B 03 + beq SpriteSetup_Loop9 ; CPU:$8476 PRG:0476 F0 03 + jmp SpriteSetup_Loop24 ; CPU:$8478 PRG:0478 4C 47 85 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop9: + lda $0184 ; CPU:$847B PRG:047B AD 84 01 + bne SpriteSetup_Loop10 ; CPU:$847E PRG:047E D0 05 + lda $0391 ; CPU:$8480 PRG:0480 AD 91 03 + beq SpriteSetup_Loop11 ; CPU:$8483 PRG:0483 F0 06 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop10: + lda VblankFlag ; CPU:$8485 PRG:0485 A5 2E + and #$80 ; CPU:$8487 PRG:0487 29 80 + beq SpriteSetup_Loop12 ; CPU:$8489 PRG:0489 F0 03 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop11: + jmp EventTaskB_Loop21 ; CPU:$848B PRG:048B 4C 3B 95 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop12: + ldy $0183 ; CPU:$848E PRG:048E AC 83 01 + lda $040A,y ; CPU:$8491 PRG:0491 B9 0A 04 + and #$80 ; CPU:$8494 PRG:0494 29 80 + beq SpriteSetup_Loop13 ; CPU:$8496 PRG:0496 F0 03 + jmp Sub_84C5 ; CPU:$8498 PRG:0498 4C C5 84 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop13: + lda Zp37 ; CPU:$849B PRG:049B A5 37 + and Zp0F,x ; CPU:$849D PRG:049D 35 0F + sta Zp08 ; CPU:$849F PRG:049F 85 08 + lda Zp0F,x ; CPU:$84A1 PRG:04A1 B5 0F + and #$0F ; CPU:$84A3 PRG:04A3 29 0F + cmp Zp08 ; CPU:$84A5 PRG:04A5 C5 08 + bne SpriteSetup_Loop14 ; CPU:$84A7 PRG:04A7 D0 03 + jmp Sub_8677 ; CPU:$84A9 PRG:04A9 4C 77 86 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop14: + lda Zp0F,x ; CPU:$84AC PRG:04AC B5 0F + and #$0A ; CPU:$84AE PRG:04AE 29 0A + cmp Zp08 ; CPU:$84B0 PRG:04B0 C5 08 + bne SpriteSetup_Loop15 ; CPU:$84B2 PRG:04B2 D0 03 + jmp Sub_874E ; CPU:$84B4 PRG:04B4 4C 4E 87 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop15: + lda Zp0F,x ; CPU:$84B7 PRG:04B7 B5 0F + and #$05 ; CPU:$84B9 PRG:04B9 29 05 + cmp Zp08 ; CPU:$84BB PRG:04BB C5 08 + bne SpriteSetup_Loop16 ; CPU:$84BD PRG:04BD D0 03 + jmp Sub_879B ; CPU:$84BF PRG:04BF 4C 9B 87 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop16: + jmp Sub_8677 ; CPU:$84C2 PRG:04C2 4C 77 86 +; ----------------------------------------------------------------------------- +; Routine: Sub_84C5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_84C5: + lda GameMode ; CPU:$84C5 PRG:04C5 A5 8C + beq SpriteSetup_Loop17 ; CPU:$84C7 PRG:04C7 F0 08 + lda Zp37 ; CPU:$84C9 PRG:04C9 A5 37 + and Zp0F,x ; CPU:$84CB PRG:04CB 35 0F + sta Zp08 ; CPU:$84CD PRG:04CD 85 08 + beq SpriteSetup_Loop19 ; CPU:$84CF PRG:04CF F0 0D +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop17: + jsr Sub_A649 ; CPU:$84D1 PRG:04D1 20 49 A6 + lda Zp09,x ; CPU:$84D4 PRG:04D4 B5 09 + beq SpriteSetup_Loop18 ; CPU:$84D6 PRG:04D6 F0 03 + jmp Sub_87EA ; CPU:$84D8 PRG:04D8 4C EA 87 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop18: + jmp Sub_88F9 ; CPU:$84DB PRG:04DB 4C F9 88 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop19: + lda GameMode ; CPU:$84DE PRG:04DE A5 8C + cmp #$02 ; CPU:$84E0 PRG:04E0 C9 02 + bcs SpriteSetup_Loop24 ; CPU:$84E2 PRG:04E2 B0 63 + ldy $0183 ; CPU:$84E4 PRG:04E4 AC 83 01 + lda $0409,y ; CPU:$84E7 PRG:04E7 B9 09 04 + bne SpriteSetup_Loop21 ; CPU:$84EA PRG:04EA D0 3C + ldy $0184 ; CPU:$84EC PRG:04EC AC 84 01 + lda $017B,y ; CPU:$84EF PRG:04EF B9 7B 01 + clc ; CPU:$84F2 PRG:04F2 18 + adc #$02 ; CPU:$84F3 PRG:04F3 69 02 + sta $017B,y ; CPU:$84F5 PRG:04F5 99 7B 01 + lda Zp09,x ; CPU:$84F8 PRG:04F8 B5 09 + beq SpriteSetup_Loop20 ; CPU:$84FA PRG:04FA F0 16 + lda #$01 ; CPU:$84FC PRG:04FC A9 01 + ldy $0183 ; CPU:$84FE PRG:04FE AC 83 01 + sta $0409,y ; CPU:$8501 PRG:0501 99 09 04 + lda $0184 ; CPU:$8504 PRG:0504 AD 84 01 + bne SpriteSetup_Loop22 ; CPU:$8507 PRG:0507 D0 22 + lda Zp51 ; CPU:$8509 PRG:0509 A5 51 + and #$01 ; CPU:$850B PRG:050B 29 01 + bne SpriteSetup_Loop21 ; CPU:$850D PRG:050D D0 19 + jmp Sub_8ABC ; CPU:$850F PRG:050F 4C BC 8A +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop20: + lda #$01 ; CPU:$8512 PRG:0512 A9 01 + ldy $0183 ; CPU:$8514 PRG:0514 AC 83 01 + sta $0409,y ; CPU:$8517 PRG:0517 99 09 04 + lda $0184 ; CPU:$851A PRG:051A AD 84 01 + bne SpriteSetup_Loop23 ; CPU:$851D PRG:051D D0 1A + lda Zp51 ; CPU:$851F PRG:051F A5 51 + and #$01 ; CPU:$8521 PRG:0521 29 01 + bne SpriteSetup_Loop21 ; CPU:$8523 PRG:0523 D0 03 + jmp Sub_8908 ; CPU:$8525 PRG:0525 4C 08 89 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop21: + jmp SpriteSetup_Loop17 ; CPU:$8528 PRG:0528 4C D1 84 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop22: + lda Zp61 ; CPU:$852B PRG:052B A5 61 + and #$02 ; CPU:$852D PRG:052D 29 02 + bne SpriteSetup_Loop21 ; CPU:$852F PRG:052F D0 F7 + lda #$06 ; CPU:$8531 PRG:0531 A9 06 + sta $040E ; CPU:$8533 PRG:0533 8D 0E 04 + jmp Sub_8ABC ; CPU:$8536 PRG:0536 4C BC 8A +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop23: + lda Zp61 ; CPU:$8539 PRG:0539 A5 61 + and #$02 ; CPU:$853B PRG:053B 29 02 + bne SpriteSetup_Loop21 ; CPU:$853D PRG:053D D0 E9 + lda #$06 ; CPU:$853F PRG:053F A9 06 + sta $040E ; CPU:$8541 PRG:0541 8D 0E 04 + jmp Sub_8908 ; CPU:$8544 PRG:0544 4C 08 89 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop24 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop24: + lda $039B ; CPU:$8547 PRG:0547 AD 9B 03 + cmp #$0C ; CPU:$854A PRG:054A C9 0C + bcs SpriteSetup_Loop25 ; CPU:$854C PRG:054C B0 09 + lda GameMode ; CPU:$854E PRG:054E A5 8C + cmp #$03 ; CPU:$8550 PRG:0550 C9 03 + bne SpriteSetup_Loop25 ; CPU:$8552 PRG:0552 D0 03 + jmp Sub_8581 ; CPU:$8554 PRG:0554 4C 81 85 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop25 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop25: + lda Zp06,x ; CPU:$8557 PRG:0557 B5 06 + and #$40 ; CPU:$8559 PRG:0559 29 40 + bne SpriteSetup_Loop27 ; CPU:$855B PRG:055B D0 21 + lda $046F ; CPU:$855D PRG:055D AD 6F 04 + cmp #$28 ; CPU:$8560 PRG:0560 C9 28 + bcc SpriteSetup_Loop27 ; CPU:$8562 PRG:0562 90 1A + lda Zp38 ; CPU:$8564 PRG:0564 A5 38 + and Zp0F,x ; CPU:$8566 PRG:0566 35 0F + cmp #$04 ; CPU:$8568 PRG:0568 C9 04 + beq SpriteSetup_Loop26 ; CPU:$856A PRG:056A F0 09 + lda Zp06,x ; CPU:$856C PRG:056C B5 06 + ora #$40 ; CPU:$856E PRG:056E 09 40 + sta Zp06,x ; CPU:$8570 PRG:0570 95 06 + jmp Sub_8ADE ; CPU:$8572 PRG:0572 4C DE 8A +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop26 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop26: + lda Zp06,x ; CPU:$8575 PRG:0575 B5 06 + ora #$40 ; CPU:$8577 PRG:0577 09 40 + sta Zp06,x ; CPU:$8579 PRG:0579 95 06 + jmp Sub_8D42 ; CPU:$857B PRG:057B 4C 42 8D +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop27 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop27: + jmp SpriteSetup_Loop17 ; CPU:$857E PRG:057E 4C D1 84 +; ----------------------------------------------------------------------------- +; Routine: Sub_8581 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8581: + lda $046F ; CPU:$8581 PRG:0581 AD 6F 04 + cmp #$28 ; CPU:$8584 PRG:0584 C9 28 + bcs SpriteSetup_Loop28 ; CPU:$8586 PRG:0586 B0 03 + jmp SpriteSetup_Loop17 ; CPU:$8588 PRG:0588 4C D1 84 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop28 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop28: + lda $039B ; CPU:$858B PRG:058B AD 9B 03 + asl a ; CPU:$858E PRG:058E 0A + tay ; CPU:$858F PRG:058F A8 + iny ; CPU:$8590 PRG:0590 C8 + lda $859B,y ; CPU:$8591 PRG:0591 B9 9B 85 + pha ; CPU:$8594 PRG:0594 48 + dey ; CPU:$8595 PRG:0595 88 + lda $859B,y ; CPU:$8596 PRG:0596 B9 9B 85 + pha ; CPU:$8599 PRG:0599 48 + rts ; CPU:$859A PRG:059A 60 +; ---- data $859B-$85B2 (24 bytes) ---- +; referenced by `lda $859B,y` at $8591 (operand $859B falls inside this region) +; referenced by `lda $859B,y` at $8596 (operand $859B falls inside this region) + .byte $A4, $8D, $19, $8E, $65, $8E, $F7, $8E, $FD, $8E, $60, $8F, $B0, $8F, $FC, $8F ; CPU:$859B PRG:059B A4 8D 19 8E 65 8E F7 8E FD 8E 60 8F B0 8F FC 8F + .byte $0B, $90, $A8, $90, $E1, $90, $EC, $90 ; CPU:$85AB PRG:05AB 0B 90 A8 90 E1 90 EC 90 +; ----------------------------------------------------------------------------- +; Routine: Sub_85B3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_85B3: + ldy $0183 ; CPU:$85B3 PRG:05B3 AC 83 01 + lda $040A,y ; CPU:$85B6 PRG:05B6 B9 0A 04 + and #$FE ; CPU:$85B9 PRG:05B9 29 FE + sta $040A,y ; CPU:$85BB PRG:05BB 99 0A 04 + jmp Sub_85CC ; CPU:$85BE PRG:05BE 4C CC 85 +; ----------------------------------------------------------------------------- +; Routine: Sub_85C1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_85C1: + ldy $0183 ; CPU:$85C1 PRG:05C1 AC 83 01 + lda $040A,y ; CPU:$85C4 PRG:05C4 B9 0A 04 + ora #$01 ; CPU:$85C7 PRG:05C7 09 01 + sta $040A,y ; CPU:$85C9 PRG:05C9 99 0A 04 +; ----------------------------------------------------------------------------- +; Routine: Sub_85CC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_85CC: + lda GameMode ; CPU:$85CC PRG:05CC A5 8C + cmp #$02 ; CPU:$85CE PRG:05CE C9 02 + bcs SpriteSetup_Loop29 ; CPU:$85D0 PRG:05D0 B0 01 + rts ; CPU:$85D2 PRG:05D2 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop29 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop29: + lda Zp06,x ; CPU:$85D3 PRG:05D3 B5 06 + and #$10 ; CPU:$85D5 PRG:05D5 29 10 + beq SpriteSetup_Loop31 ; CPU:$85D7 PRG:05D7 F0 27 + lda $0433 ; CPU:$85D9 PRG:05D9 AD 33 04 + bne SpriteSetup_Loop30 ; CPU:$85DC PRG:05DC D0 0A + lda #$0F ; CPU:$85DE PRG:05DE A9 0F + ldy #$05 ; CPU:$85E0 PRG:05E0 A0 05 + jsr EventState ; CPU:$85E2 PRG:05E2 20 70 A8 + jmp SpriteSetup_Loop31 ; CPU:$85E5 PRG:05E5 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop30 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop30: + lda $0183 ; CPU:$85E8 PRG:05E8 AD 83 01 + pha ; CPU:$85EB PRG:05EB 48 + lda #$30 ; CPU:$85EC PRG:05EC A9 30 + sta $0183 ; CPU:$85EE PRG:05EE 8D 83 01 + lda #$0F ; CPU:$85F1 PRG:05F1 A9 0F + sta $0478 ; CPU:$85F3 PRG:05F3 8D 78 04 + lda $0436 ; CPU:$85F6 PRG:05F6 AD 36 04 + jsr Sub_A789 ; CPU:$85F9 PRG:05F9 20 89 A7 + pla ; CPU:$85FC PRG:05FC 68 + sta $0183 ; CPU:$85FD PRG:05FD 8D 83 01 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop31 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop31: + ldy $0183 ; CPU:$8600 PRG:0600 AC 83 01 + lda $040A,y ; CPU:$8603 PRG:0603 B9 0A 04 + and #$01 ; CPU:$8606 PRG:0606 29 01 + beq SpriteSetup_Loop32 ; CPU:$8608 PRG:0608 F0 08 + lda Zp08,x ; CPU:$860A PRG:060A B5 08 + beq SpriteSetup_Loop32 ; CPU:$860C PRG:060C F0 04 + cmp #$02 ; CPU:$860E PRG:060E C9 02 + bne SpriteSetup_Loop33 ; CPU:$8610 PRG:0610 D0 01 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop32 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop32: + rts ; CPU:$8612 PRG:0612 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop33 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop33: + cmp #$05 ; CPU:$8613 PRG:0613 C9 05 + bcs SpriteSetup_Loop34 ; CPU:$8615 PRG:0615 B0 09 + jsr SpriteSetup_Loop36 ; CPU:$8617 PRG:0617 20 4E 86 + lda #$01 ; CPU:$861A PRG:061A A9 01 + sta $0185 ; CPU:$861C PRG:061C 8D 85 01 + rts ; CPU:$861F PRG:061F 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop34 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop34: + lda #$02 ; CPU:$8620 PRG:0620 A9 02 + sta $0185 ; CPU:$8622 PRG:0622 8D 85 01 + rts ; CPU:$8625 PRG:0625 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_OnCarryClear +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_OnCarryClear: + rts ; CPU:$8626 PRG:0626 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_8627 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8627: + lda GameMode ; CPU:$8627 PRG:0627 A5 8C + cmp #$02 ; CPU:$8629 PRG:0629 C9 02 + bcc SpriteSetup_OnCarryClear ; CPU:$862B PRG:062B 90 F9 + lda Zp08,x ; CPU:$862D PRG:062D B5 08 + beq SpriteSetup_Loop37 ; CPU:$862F PRG:062F F0 2D + cmp #$02 ; CPU:$8631 PRG:0631 C9 02 + bne SpriteSetup_Loop35 ; CPU:$8633 PRG:0633 D0 01 + rts ; CPU:$8635 PRG:0635 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop35 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop35: + cmp #$05 ; CPU:$8636 PRG:0636 C9 05 + bcc SpriteSetup_Loop36 ; CPU:$8638 PRG:0638 90 14 + ldy $0183 ; CPU:$863A PRG:063A AC 83 01 + lda $040A,y ; CPU:$863D PRG:063D B9 0A 04 + and #$01 ; CPU:$8640 PRG:0640 29 01 + beq SpriteSetup_Loop37 ; CPU:$8642 PRG:0642 F0 1A + lda $0404,y ; CPU:$8644 PRG:0644 B9 04 04 + sec ; CPU:$8647 PRG:0647 38 + sbc #$01 ; CPU:$8648 PRG:0648 E9 01 + sta $0404,y ; CPU:$864A PRG:064A 99 04 04 + rts ; CPU:$864D PRG:064D 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop36 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop36: + lda $0404,y ; CPU:$864E PRG:064E B9 04 04 + cmp #$A0 ; CPU:$8651 PRG:0651 C9 A0 + bcs SpriteSetup_Loop38 ; CPU:$8653 PRG:0653 B0 0A + lda $0404,y ; CPU:$8655 PRG:0655 B9 04 04 + clc ; CPU:$8658 PRG:0658 18 + adc #$01 ; CPU:$8659 PRG:0659 69 01 + sta $0404,y ; CPU:$865B PRG:065B 99 04 04 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop37 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop37: + rts ; CPU:$865E PRG:065E 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop38 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop38: + rts ; CPU:$865F PRG:065F 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_8660 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8660: + lda $0183 ; CPU:$8660 PRG:0660 AD 83 01 + bne SpriteSetup_Loop39 ; CPU:$8663 PRG:0663 D0 09 + lda $0390 ; CPU:$8665 PRG:0665 AD 90 03 + and #$7F ; CPU:$8668 PRG:0668 29 7F + sta $0390 ; CPU:$866A PRG:066A 8D 90 03 + rts ; CPU:$866D PRG:066D 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop39 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop39: + lda $0390 ; CPU:$866E PRG:066E AD 90 03 + and #$BF ; CPU:$8671 PRG:0671 29 BF + sta $0390 ; CPU:$8673 PRG:0673 8D 90 03 + rts ; CPU:$8676 PRG:0676 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_8677 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8677: + lda Zp38 ; CPU:$8677 PRG:0677 A5 38 + and Zp0F,x ; CPU:$8679 PRG:0679 35 0F + beq SpriteSetup_Loop41 ; CPU:$867B PRG:067B F0 12 + cmp Zp0F,x ; CPU:$867D PRG:067D D5 0F + beq SpriteSetup_Loop41 ; CPU:$867F PRG:067F F0 0E + lda Zp09,x ; CPU:$8681 PRG:0681 B5 09 + beq SpriteSetup_Loop40 ; CPU:$8683 PRG:0683 F0 07 + cmp #$02 ; CPU:$8685 PRG:0685 C9 02 + beq SpriteSetup_Loop41 ; CPU:$8687 PRG:0687 F0 06 + jmp Sub_87EA ; CPU:$8689 PRG:0689 4C EA 87 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop40 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop40: + jmp Sub_88F9 ; CPU:$868C PRG:068C 4C F9 88 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop41 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop41: + ldy $0184 ; CPU:$868F PRG:068F AC 84 01 + lda $046B,y ; CPU:$8692 PRG:0692 B9 6B 04 + clc ; CPU:$8695 PRG:0695 18 + adc #$01 ; CPU:$8696 PRG:0696 69 01 + sta $046B,y ; CPU:$8698 PRG:0698 99 6B 04 + cmp #$0D ; CPU:$869B PRG:069B C9 0D + bcc SpriteSetup_Loop44 ; CPU:$869D PRG:069D 90 1B + lda GameMode ; CPU:$869F PRG:069F A5 8C + cmp #$02 ; CPU:$86A1 PRG:06A1 C9 02 + bcs SpriteSetup_Loop43 ; CPU:$86A3 PRG:06A3 B0 11 + lda $0184 ; CPU:$86A5 PRG:06A5 AD 84 01 + bne SpriteSetup_Loop42 ; CPU:$86A8 PRG:06A8 D0 06 + lda #$32 ; CPU:$86AA PRG:06AA A9 32 + sta Zp0D,x ; CPU:$86AC PRG:06AC 95 0D + bne SpriteSetup_Loop44 ; CPU:$86AE PRG:06AE D0 0A +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop42 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop42: + lda #$3F ; CPU:$86B0 PRG:06B0 A9 3F + sta Zp0D,x ; CPU:$86B2 PRG:06B2 95 0D + bne SpriteSetup_Loop44 ; CPU:$86B4 PRG:06B4 D0 04 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop43 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop43: + lda #$4F ; CPU:$86B6 PRG:06B6 A9 4F + sta Zp0D,x ; CPU:$86B8 PRG:06B8 95 0D +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop44 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop44: + jsr Sub_A649 ; CPU:$86BA PRG:06BA 20 49 A6 + lda #$00 ; CPU:$86BD PRG:06BD A9 00 + sta Zp08,x ; CPU:$86BF PRG:06BF 95 08 + lda #$01 ; CPU:$86C1 PRG:06C1 A9 01 + ldy $0183 ; CPU:$86C3 PRG:06C3 AC 83 01 + sta $0408,y ; CPU:$86C6 PRG:06C6 99 08 04 + lda Zp0E,x ; CPU:$86C9 PRG:06C9 B5 0E + sta $0478 ; CPU:$86CB PRG:06CB 8D 78 04 + lda Zp0D,x ; CPU:$86CE PRG:06CE B5 0D + jsr ObjectUpdate ; CPU:$86D0 PRG:06D0 20 92 A7 + lda #$02 ; CPU:$86D3 PRG:06D3 A9 02 + sta Zp09,x ; CPU:$86D5 PRG:06D5 95 09 + lda Zp0D,x ; CPU:$86D7 PRG:06D7 B5 0D + cmp #$3F ; CPU:$86D9 PRG:06D9 C9 3F + beq SpriteSetup_Loop45 ; CPU:$86DB PRG:06DB F0 0F + lda Zp0D,x ; CPU:$86DD PRG:06DD B5 0D + sec ; CPU:$86DF PRG:06DF 38 + sbc #$08 ; CPU:$86E0 PRG:06E0 E9 08 + tay ; CPU:$86E2 PRG:06E2 A8 + lda $8717,y ; CPU:$86E3 PRG:06E3 B9 17 87 + jsr SpritePosition ; CPU:$86E6 PRG:06E6 20 5E 98 + jmp Sub_86F1 ; CPU:$86E9 PRG:06E9 4C F1 86 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop45 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop45: + lda #$19 ; CPU:$86EC PRG:06EC A9 19 + jsr SpritePosition ; CPU:$86EE PRG:06EE 20 5E 98 +; ----------------------------------------------------------------------------- +; Routine: Sub_86F1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_86F1: + lda Zp0D,x ; CPU:$86F1 PRG:06F1 B5 0D + cmp #$32 ; CPU:$86F3 PRG:06F3 C9 32 + beq SpriteSetup_Loop46 ; CPU:$86F5 PRG:06F5 F0 14 + cmp #$3F ; CPU:$86F7 PRG:06F7 C9 3F + beq SpriteSetup_Loop46 ; CPU:$86F9 PRG:06F9 F0 10 + cmp #$4F ; CPU:$86FB PRG:06FB C9 4F + beq SpriteSetup_Loop46 ; CPU:$86FD PRG:06FD F0 0C + lda #$00 ; CPU:$86FF PRG:06FF A9 00 + jsr ObjectDraw ; CPU:$8701 PRG:0701 20 6F A5 + lda #$02 ; CPU:$8704 PRG:0704 A9 02 + sta SlotState,x ; CPU:$8706 PRG:0706 95 0C + jmp Sub_85B3 ; CPU:$8708 PRG:0708 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop46 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop46: + lda #$0A ; CPU:$870B PRG:070B A9 0A + jsr ObjectDraw ; CPU:$870D PRG:070D 20 6F A5 + lda #$02 ; CPU:$8710 PRG:0710 A9 02 + sta SlotState,x ; CPU:$8712 PRG:0712 95 0C + jmp Sub_85B3 ; CPU:$8714 PRG:0714 4C B3 85 +; ---- data $8717-$874D (55 bytes) ---- +; referenced by `lda $8717,y` at $86E3 (operand $8717 falls inside this region) + .byte $00, $01, $02, $03, $04, $05, $06, $07, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$8717 PRG:0717 00 01 02 03 04 05 06 07 00 00 00 00 00 00 00 00 + .byte $08, $09, $0A, $0B, $0C, $0D, $0E, $00, $00, $00, $00, $00, $00, $10, $11, $12 ; CPU:$8727 PRG:0727 08 09 0A 0B 0C 0D 0E 00 00 00 00 00 00 10 11 12 + .byte $13, $14, $15, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $1B, $1C ; CPU:$8737 PRG:0737 13 14 15 00 00 00 00 00 00 00 00 00 00 00 1B 1C + .byte $00, $00, $16, $17, $18, $1A, $19 ; CPU:$8747 PRG:0747 00 00 16 17 18 1A 19 +; ----------------------------------------------------------------------------- +; Routine: Sub_874E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_874E: + lda Zp09,x ; CPU:$874E PRG:074E B5 09 + bne SpriteSetup_Loop47 ; CPU:$8750 PRG:0750 D0 06 + jsr Sub_A649 ; CPU:$8752 PRG:0752 20 49 A6 + jmp Sub_875B ; CPU:$8755 PRG:0755 4C 5B 87 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop47 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop47: + jmp Sub_87EA ; CPU:$8758 PRG:0758 4C EA 87 +; ----------------------------------------------------------------------------- +; Routine: Sub_875B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_875B: + ldy $0183 ; CPU:$875B PRG:075B AC 83 01 + lda $0406,y ; CPU:$875E PRG:075E B9 06 04 + sta $047F ; CPU:$8761 PRG:0761 8D 7F 04 + lda #$00 ; CPU:$8764 PRG:0764 A9 00 + ldy $0184 ; CPU:$8766 PRG:0766 AC 84 01 + sta $046B,y ; CPU:$8769 PRG:0769 99 6B 04 + sta Zp08,x ; CPU:$876C PRG:076C 95 08 + lda #$00 ; CPU:$876E PRG:076E A9 00 + sta Zp09,x ; CPU:$8770 PRG:0770 95 09 + lda Zp0E,x ; CPU:$8772 PRG:0772 B5 0E + sta $0478 ; CPU:$8774 PRG:0774 8D 78 04 + lda #$00 ; CPU:$8777 PRG:0777 A9 00 + clc ; CPU:$8779 PRG:0779 18 + adc $047F ; CPU:$877A PRG:077A 6D 7F 04 + sta Zp0D,x ; CPU:$877D PRG:077D 95 0D + jsr ObjectUpdate ; CPU:$877F PRG:077F 20 92 A7 + lda #$00 ; CPU:$8782 PRG:0782 A9 00 + jsr SpritePosition ; CPU:$8784 PRG:0784 20 5E 98 + lda #$03 ; CPU:$8787 PRG:0787 A9 03 + ldy $0183 ; CPU:$8789 PRG:0789 AC 83 01 + sta $0188,y ; CPU:$878C PRG:078C 99 88 01 + lda #$00 ; CPU:$878F PRG:078F A9 00 + jsr ObjectDraw ; CPU:$8791 PRG:0791 20 6F A5 + lda #$02 ; CPU:$8794 PRG:0794 A9 02 + sta SlotState,x ; CPU:$8796 PRG:0796 95 0C + jmp Sub_85B3 ; CPU:$8798 PRG:0798 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: Sub_879B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_879B: + lda Zp09,x ; CPU:$879B PRG:079B B5 09 + cmp #$01 ; CPU:$879D PRG:079D C9 01 + bne SpriteSetup_Loop48 ; CPU:$879F PRG:079F D0 06 + jsr Sub_A649 ; CPU:$87A1 PRG:07A1 20 49 A6 + jmp Sub_87AA ; CPU:$87A4 PRG:07A4 4C AA 87 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop48 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop48: + jmp Sub_88F9 ; CPU:$87A7 PRG:07A7 4C F9 88 +; ----------------------------------------------------------------------------- +; Routine: Sub_87AA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_87AA: + lda #$00 ; CPU:$87AA PRG:07AA A9 00 + sta Zp08,x ; CPU:$87AC PRG:07AC 95 08 + ldy $0184 ; CPU:$87AE PRG:07AE AC 84 01 + sta $046B,y ; CPU:$87B1 PRG:07B1 99 6B 04 + lda #$01 ; CPU:$87B4 PRG:07B4 A9 01 + sta Zp09,x ; CPU:$87B6 PRG:07B6 95 09 + ldy $0183 ; CPU:$87B8 PRG:07B8 AC 83 01 + lda $0406,y ; CPU:$87BB PRG:07BB B9 06 04 + sta $047F ; CPU:$87BE PRG:07BE 8D 7F 04 + lda Zp0E,x ; CPU:$87C1 PRG:07C1 B5 0E + sta $0478 ; CPU:$87C3 PRG:07C3 8D 78 04 + lda #$04 ; CPU:$87C6 PRG:07C6 A9 04 + clc ; CPU:$87C8 PRG:07C8 18 + adc $047F ; CPU:$87C9 PRG:07C9 6D 7F 04 + sta Zp0D,x ; CPU:$87CC PRG:07CC 95 0D + jsr ObjectUpdate ; CPU:$87CE PRG:07CE 20 92 A7 + lda #$04 ; CPU:$87D1 PRG:07D1 A9 04 + jsr SpritePosition ; CPU:$87D3 PRG:07D3 20 5E 98 + lda #$04 ; CPU:$87D6 PRG:07D6 A9 04 + ldy $0183 ; CPU:$87D8 PRG:07D8 AC 83 01 + sta $0408,y ; CPU:$87DB PRG:07DB 99 08 04 + lda #$00 ; CPU:$87DE PRG:07DE A9 00 + jsr ObjectDraw ; CPU:$87E0 PRG:07E0 20 6F A5 + lda #$02 ; CPU:$87E3 PRG:07E3 A9 02 + sta SlotState,x ; CPU:$87E5 PRG:07E5 95 0C + jmp Sub_85B3 ; CPU:$87E7 PRG:07E7 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: Sub_87EA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_87EA: + lda #$00 ; CPU:$87EA PRG:07EA A9 00 + sta Zp09,x ; CPU:$87EC PRG:07EC 95 09 + lda #$00 ; CPU:$87EE PRG:07EE A9 00 + ldy $0184 ; CPU:$87F0 PRG:07F0 AC 84 01 + sta $0474,y ; CPU:$87F3 PRG:07F3 99 74 04 +; ----------------------------------------------------------------------------- +; Routine: Sub_87F6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_87F6: + jsr Sub_A614 ; CPU:$87F6 PRG:07F6 20 14 A6 + lda #$00 ; CPU:$87F9 PRG:07F9 A9 00 + jsr ObjectDraw ; CPU:$87FB PRG:07FB 20 6F A5 + lda #$1C ; CPU:$87FE PRG:07FE A9 1C + ldy #$01 ; CPU:$8800 PRG:0800 A0 01 + jsr AudioChannelLoop ; CPU:$8802 PRG:0802 20 63 BE + ldy $0183 ; CPU:$8805 PRG:0805 AC 83 01 + lda $0409,y ; CPU:$8808 PRG:0808 B9 09 04 + beq SpriteSetup_Loop49 ; CPU:$880B PRG:080B F0 12 + lda $0409,y ; CPU:$880D PRG:080D B9 09 04 + clc ; CPU:$8810 PRG:0810 18 + adc #$01 ; CPU:$8811 PRG:0811 69 01 + sta $0409,y ; CPU:$8813 PRG:0813 99 09 04 + cmp #$03 ; CPU:$8816 PRG:0816 C9 03 + bcc SpriteSetup_Loop49 ; CPU:$8818 PRG:0818 90 05 + lda #$00 ; CPU:$881A PRG:081A A9 00 + sta $0409,y ; CPU:$881C PRG:081C 99 09 04 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop49 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop49: + ldy $0184 ; CPU:$881F PRG:081F AC 84 01 + sta $046B,y ; CPU:$8822 PRG:0822 99 6B 04 + lda #$01 ; CPU:$8825 PRG:0825 A9 01 + sta $0186,y ; CPU:$8827 PRG:0827 99 86 01 + sta $0469,y ; CPU:$882A PRG:082A 99 69 04 + ldy $0183 ; CPU:$882D PRG:082D AC 83 01 + lda $0406,y ; CPU:$8830 PRG:0830 B9 06 04 + sta $047F ; CPU:$8833 PRG:0833 8D 7F 04 + lda #$05 ; CPU:$8836 PRG:0836 A9 05 + sta Zp08,x ; CPU:$8838 PRG:0838 95 08 + lda Zp0E,x ; CPU:$883A PRG:083A B5 0E + sta $0478 ; CPU:$883C PRG:083C 8D 78 04 + ldy $0184 ; CPU:$883F PRG:083F AC 84 01 + lda #$05 ; CPU:$8842 PRG:0842 A9 05 + clc ; CPU:$8844 PRG:0844 18 + adc $047F ; CPU:$8845 PRG:0845 6D 7F 04 + clc ; CPU:$8848 PRG:0848 18 + adc $0474,y ; CPU:$8849 PRG:0849 79 74 04 + sta Zp0D,x ; CPU:$884C PRG:084C 95 0D + jsr ObjectUpdate ; CPU:$884E PRG:084E 20 92 A7 + lda #$05 ; CPU:$8851 PRG:0851 A9 05 + jsr SpritePosition ; CPU:$8853 PRG:0853 20 5E 98 + jsr Sub_A68B ; CPU:$8856 PRG:0856 20 8B A6 + lda #$03 ; CPU:$8859 PRG:0859 A9 03 + sta Zp07,x ; CPU:$885B PRG:085B 95 07 + lda #$0D ; CPU:$885D PRG:085D A9 0D + ldy $0183 ; CPU:$885F PRG:085F AC 83 01 + sta $0408,y ; CPU:$8862 PRG:0862 99 08 04 + jmp Sub_85B3 ; CPU:$8865 PRG:0865 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: Sub_8868 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8868: + lda #$01 ; CPU:$8868 PRG:0868 A9 01 + jsr ObjectDraw ; CPU:$886A PRG:086A 20 6F A5 + ldy $0183 ; CPU:$886D PRG:086D AC 83 01 + lda $0406,y ; CPU:$8870 PRG:0870 B9 06 04 + sta $047F ; CPU:$8873 PRG:0873 8D 7F 04 + lda #$05 ; CPU:$8876 PRG:0876 A9 05 + sta Zp08,x ; CPU:$8878 PRG:0878 95 08 + lda Zp0E,x ; CPU:$887A PRG:087A B5 0E + sta $0478 ; CPU:$887C PRG:087C 8D 78 04 + ldy $0184 ; CPU:$887F PRG:087F AC 84 01 + lda #$06 ; CPU:$8882 PRG:0882 A9 06 + clc ; CPU:$8884 PRG:0884 18 + adc $047F ; CPU:$8885 PRG:0885 6D 7F 04 + clc ; CPU:$8888 PRG:0888 18 + adc $0474,y ; CPU:$8889 PRG:0889 79 74 04 + sta Zp0D,x ; CPU:$888C PRG:088C 95 0D + jsr ObjectUpdate ; CPU:$888E PRG:088E 20 92 A7 + lda #$06 ; CPU:$8891 PRG:0891 A9 06 + jsr SpritePosition ; CPU:$8893 PRG:0893 20 5E 98 + jsr Sub_A68B ; CPU:$8896 PRG:0896 20 8B A6 + lda #$01 ; CPU:$8899 PRG:0899 A9 01 + sta Zp07,x ; CPU:$889B PRG:089B 95 07 + lda #$0D ; CPU:$889D PRG:089D A9 0D + ldy $0183 ; CPU:$889F PRG:089F AC 83 01 + sta $0408,y ; CPU:$88A2 PRG:08A2 99 08 04 + jmp Sub_85B3 ; CPU:$88A5 PRG:08A5 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: Sub_88A8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_88A8: + lda #$00 ; CPU:$88A8 PRG:08A8 A9 00 + jsr ObjectDraw ; CPU:$88AA PRG:08AA 20 6F A5 + ldy $0184 ; CPU:$88AD PRG:08AD AC 84 01 + lda #$01 ; CPU:$88B0 PRG:08B0 A9 01 + sta $0186,y ; CPU:$88B2 PRG:08B2 99 86 01 + sta $0469,y ; CPU:$88B5 PRG:08B5 99 69 04 + ldy $0183 ; CPU:$88B8 PRG:08B8 AC 83 01 + lda $0406,y ; CPU:$88BB PRG:08BB B9 06 04 + sta $047F ; CPU:$88BE PRG:08BE 8D 7F 04 + lda #$05 ; CPU:$88C1 PRG:08C1 A9 05 + sta Zp08,x ; CPU:$88C3 PRG:08C3 95 08 + lda Zp0E,x ; CPU:$88C5 PRG:08C5 B5 0E + sta $0478 ; CPU:$88C7 PRG:08C7 8D 78 04 + ldy $0184 ; CPU:$88CA PRG:08CA AC 84 01 + lda #$07 ; CPU:$88CD PRG:08CD A9 07 + clc ; CPU:$88CF PRG:08CF 18 + adc $047F ; CPU:$88D0 PRG:08D0 6D 7F 04 + clc ; CPU:$88D3 PRG:08D3 18 + adc $0474,y ; CPU:$88D4 PRG:08D4 79 74 04 + sta Zp0D,x ; CPU:$88D7 PRG:08D7 95 0D + jsr ObjectUpdate ; CPU:$88D9 PRG:08D9 20 92 A7 + lda #$07 ; CPU:$88DC PRG:08DC A9 07 + jsr SpritePosition ; CPU:$88DE PRG:08DE 20 5E 98 + jsr Sub_A68B ; CPU:$88E1 PRG:08E1 20 8B A6 + lda #$00 ; CPU:$88E4 PRG:08E4 A9 00 + sta Zp07,x ; CPU:$88E6 PRG:08E6 95 07 + sta Zp05,x ; CPU:$88E8 PRG:08E8 95 05 + lda #$0D ; CPU:$88EA PRG:08EA A9 0D + ldy $0183 ; CPU:$88EC PRG:08EC AC 83 01 + sta $0408,y ; CPU:$88EF PRG:08EF 99 08 04 + lda #$00 ; CPU:$88F2 PRG:08F2 A9 00 + sta Zp05,x ; CPU:$88F4 PRG:08F4 95 05 + jmp Sub_85B3 ; CPU:$88F6 PRG:08F6 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: Sub_88F9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_88F9: + lda #$01 ; CPU:$88F9 PRG:08F9 A9 01 + sta Zp09,x ; CPU:$88FB PRG:08FB 95 09 + lda #$FC ; CPU:$88FD PRG:08FD A9 FC + ldy $0184 ; CPU:$88FF PRG:08FF AC 84 01 + sta $0474,y ; CPU:$8902 PRG:0902 99 74 04 + jmp Sub_87F6 ; CPU:$8905 PRG:0905 4C F6 87 +; ----------------------------------------------------------------------------- +; Routine: Sub_8908 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8908: + lda #$00 ; CPU:$8908 PRG:0908 A9 00 + ldy $0184 ; CPU:$890A PRG:090A AC 84 01 + sta $0474,y ; CPU:$890D PRG:090D 99 74 04 +; ----------------------------------------------------------------------------- +; Routine: Sub_8910 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8910: + ldy $0183 ; CPU:$8910 PRG:0910 AC 83 01 + lda $040A,y ; CPU:$8913 PRG:0913 B9 0A 04 + ora #$02 ; CPU:$8916 PRG:0916 09 02 + sta $040A,y ; CPU:$8918 PRG:0918 99 0A 04 + lda #$1E ; CPU:$891B PRG:091B A9 1E + ldy #$01 ; CPU:$891D PRG:091D A0 01 + jsr AudioChannelLoop ; CPU:$891F PRG:091F 20 63 BE + lda #$00 ; CPU:$8922 PRG:0922 A9 00 + sta Zp05,x ; CPU:$8924 PRG:0924 95 05 + ldy $0184 ; CPU:$8926 PRG:0926 AC 84 01 + lda #$01 ; CPU:$8929 PRG:0929 A9 01 + sta $0186,y ; CPU:$892B PRG:092B 99 86 01 + jsr Sub_A614 ; CPU:$892E PRG:092E 20 14 A6 + lda #$02 ; CPU:$8931 PRG:0931 A9 02 + jsr ObjectDraw ; CPU:$8933 PRG:0933 20 6F A5 + ldy $0183 ; CPU:$8936 PRG:0936 AC 83 01 + lda $0406,y ; CPU:$8939 PRG:0939 B9 06 04 + sta $047F ; CPU:$893C PRG:093C 8D 7F 04 + lda #$06 ; CPU:$893F PRG:093F A9 06 + sta Zp08,x ; CPU:$8941 PRG:0941 95 08 + lda Zp0E,x ; CPU:$8943 PRG:0943 B5 0E + sta $0478 ; CPU:$8945 PRG:0945 8D 78 04 + ldy $0184 ; CPU:$8948 PRG:0948 AC 84 01 + lda #$20 ; CPU:$894B PRG:094B A9 20 + clc ; CPU:$894D PRG:094D 18 + adc $047F ; CPU:$894E PRG:094E 6D 7F 04 + clc ; CPU:$8951 PRG:0951 18 + adc $0474,y ; CPU:$8952 PRG:0952 79 74 04 + sta Zp0D,x ; CPU:$8955 PRG:0955 95 0D + jsr ObjectUpdate ; CPU:$8957 PRG:0957 20 92 A7 + lda #$10 ; CPU:$895A PRG:095A A9 10 + jsr SpritePosition ; CPU:$895C PRG:095C 20 5E 98 + lda #$04 ; CPU:$895F PRG:095F A9 04 + sta SlotState,x ; CPU:$8961 PRG:0961 95 0C + lda #$71 ; CPU:$8963 PRG:0963 A9 71 + sta Zp0A,x ; CPU:$8965 PRG:0965 95 0A + lda #$89 ; CPU:$8967 PRG:0967 A9 89 + sta Zp0B,x ; CPU:$8969 PRG:0969 95 0B + lda #$05 ; CPU:$896B PRG:096B A9 05 + sta Zp07,x ; CPU:$896D PRG:096D 95 07 + jmp Sub_85B3 ; CPU:$896F PRG:096F 4C B3 85 +; ---- data $8972-$8A07 (150 bytes) ---- + .byte $A9, $02, $20, $6F, $A5, $AC, $83, $01, $B9, $04, $04, $38, $E9, $04, $99, $04 ; CPU:$8972 PRG:0972 A9 02 20 6F A5 AC 83 01 B9 04 04 38 E9 04 99 04 + .byte $04, $AC, $84, $01, $A9, $01, $99, $86, $01, $A9, $05, $95, $07, $A9, $03, $95 ; CPU:$8982 PRG:0982 04 AC 84 01 A9 01 99 86 01 A9 05 95 07 A9 03 95 + .byte $0C, $A9, $C6, $95, $0A, $A9, $89, $95, $0B, $A9, $05, $95, $08, $AC, $83, $01 ; CPU:$8992 PRG:0992 0C A9 C6 95 0A A9 89 95 0B A9 05 95 08 AC 83 01 + .byte $B9, $06, $04, $8D, $7F, $04, $AC, $84, $01, $B5, $0E, $8D, $78, $04, $A9, $20 ; CPU:$89A2 PRG:09A2 B9 06 04 8D 7F 04 AC 84 01 B5 0E 8D 78 04 A9 20 + .byte $18, $6D, $7F, $04, $18, $79, $74, $04, $95, $0D, $20, $92, $A7, $A9, $10, $20 ; CPU:$89B2 PRG:09B2 18 6D 7F 04 18 79 74 04 95 0D 20 92 A7 A9 10 20 + .byte $5E, $98, $4C, $B3, $85, $20, $14, $A6, $A9, $02, $20, $6F, $A5, $AC, $84, $01 ; CPU:$89C2 PRG:09C2 5E 98 4C B3 85 20 14 A6 A9 02 20 6F A5 AC 84 01 + .byte $A9, $01, $99, $86, $01, $A9, $05, $95, $08, $AC, $83, $01, $B9, $06, $04, $8D ; CPU:$89D2 PRG:09D2 A9 01 99 86 01 A9 05 95 08 AC 83 01 B9 06 04 8D + .byte $7F, $04, $AC, $84, $01, $B5, $0E, $8D, $78, $04, $A9, $21, $18, $6D, $7F, $04 ; CPU:$89E2 PRG:09E2 7F 04 AC 84 01 B5 0E 8D 78 04 A9 21 18 6D 7F 04 + .byte $18, $79, $74, $04, $95, $0D, $20, $92, $A7, $A9, $11, $20, $5E, $98, $A9, $04 ; CPU:$89F2 PRG:09F2 18 79 74 04 95 0D 20 92 A7 A9 11 20 5E 98 A9 04 + .byte $95, $0C, $A9, $12, $95, $0A ; CPU:$8A02 PRG:0A02 95 0C A9 12 95 0A +; ----------------------------------------------------------------------------- +; Routine: Sub_8A08 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8A08: + lda #$8A ; CPU:$8A08 PRG:0A08 A9 8A + sta Zp0B,x ; CPU:$8A0A PRG:0A0A 95 0B + lda #$05 ; CPU:$8A0C PRG:0A0C A9 05 + sta Zp07,x ; CPU:$8A0E PRG:0A0E 95 07 + jmp Sub_85B3 ; CPU:$8A10 PRG:0A10 4C B3 85 +; ---- data $8A13-$8ABB (169 bytes) ---- + .byte $A9, $02, $20, $6F, $A5, $AC, $84, $01, $A9, $01, $99, $86, $01, $A9, $5B, $95 ; CPU:$8A13 PRG:0A13 A9 02 20 6F A5 AC 84 01 A9 01 99 86 01 A9 5B 95 + .byte $0A, $A9, $8A, $95, $0B, $A9, $06, $95, $08, $A9, $05, $95, $07, $A9, $04, $95 ; CPU:$8A23 PRG:0A23 0A A9 8A 95 0B A9 06 95 08 A9 05 95 07 A9 04 95 + .byte $0C, $AC, $83, $01, $B9, $06, $04, $8D, $7F, $04, $AC, $84, $01, $B5, $0E, $8D ; CPU:$8A33 PRG:0A33 0C AC 83 01 B9 06 04 8D 7F 04 AC 84 01 B5 0E 8D + .byte $78, $04, $A9, $21, $18, $6D, $7F, $04, $18, $79, $74, $04, $95, $0D, $20, $92 ; CPU:$8A43 PRG:0A43 78 04 A9 21 18 6D 7F 04 18 79 74 04 95 0D 20 92 + .byte $A7, $A9, $11, $20, $5E, $98, $4C, $B3, $85, $20, $14, $A6, $A9, $02, $20, $6F ; CPU:$8A53 PRG:0A53 A7 A9 11 20 5E 98 4C B3 85 20 14 A6 A9 02 20 6F + .byte $A5, $AC, $83, $01, $B9, $04, $04, $18, $69, $04, $99, $04, $04, $AC, $84, $01 ; CPU:$8A63 PRG:0A63 A5 AC 83 01 B9 04 04 18 69 04 99 04 04 AC 84 01 + .byte $A9, $00, $99, $86, $01, $AC, $83, $01, $B9, $06, $04, $8D, $7F, $04, $AC, $84 ; CPU:$8A73 PRG:0A73 A9 00 99 86 01 AC 83 01 B9 06 04 8D 7F 04 AC 84 + .byte $01, $A9, $05, $95, $08, $B5, $0E, $8D, $78, $04, $A9, $22, $18, $6D, $7F, $04 ; CPU:$8A83 PRG:0A83 01 A9 05 95 08 B5 0E 8D 78 04 A9 22 18 6D 7F 04 + .byte $18, $79, $74, $04, $95, $0D, $20, $92, $A7, $A9, $12, $20, $5E, $98, $A9, $05 ; CPU:$8A93 PRG:0A93 18 79 74 04 95 0D 20 92 A7 A9 12 20 5E 98 A9 05 + .byte $95, $0C, $A9, $00, $95, $07, $AC, $83, $01, $B9, $0A, $04, $29, $FD, $99, $0A ; CPU:$8AA3 PRG:0AA3 95 0C A9 00 95 07 AC 83 01 B9 0A 04 29 FD 99 0A + .byte $04, $A9, $06, $99, $08, $04, $4C, $B3, $85 ; CPU:$8AB3 PRG:0AB3 04 A9 06 99 08 04 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: Sub_8ABC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8ABC: + lda #$03 ; CPU:$8ABC PRG:0ABC A9 03 + ldy $0184 ; CPU:$8ABE PRG:0ABE AC 84 01 + sta $0474,y ; CPU:$8AC1 PRG:0AC1 99 74 04 + jmp Sub_8910 ; CPU:$8AC4 PRG:0AC4 4C 10 89 +; ----------------------------------------------------------------------------- +; Routine: Sub_8AC7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8AC7: + lda $0184 ; CPU:$8AC7 PRG:0AC7 AD 84 01 + bne SpriteSetup_Loop50 ; CPU:$8ACA PRG:0ACA D0 09 + lda $0390 ; CPU:$8ACC PRG:0ACC AD 90 03 + ora #$80 ; CPU:$8ACF PRG:0ACF 09 80 + sta $0390 ; CPU:$8AD1 PRG:0AD1 8D 90 03 + rts ; CPU:$8AD4 PRG:0AD4 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop50 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop50: + lda $0390 ; CPU:$8AD5 PRG:0AD5 AD 90 03 + ora #$40 ; CPU:$8AD8 PRG:0AD8 09 40 + sta $0390 ; CPU:$8ADA PRG:0ADA 8D 90 03 + rts ; CPU:$8ADD PRG:0ADD 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_8ADE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8ADE: + lda GameMode ; CPU:$8ADE PRG:0ADE A5 8C + cmp #$02 ; CPU:$8AE0 PRG:0AE0 C9 02 + bne SpriteSetup_Loop51 ; CPU:$8AE2 PRG:0AE2 D0 06 + jsr Sub_A4E4 ; CPU:$8AE4 PRG:0AE4 20 E4 A4 + jsr Sub_A705 ; CPU:$8AE7 PRG:0AE7 20 05 A7 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop51 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop51: + lda Zp06,x ; CPU:$8AEA PRG:0AEA B5 06 + ora #$10 ; CPU:$8AEC PRG:0AEC 09 10 + sta Zp06,x ; CPU:$8AEE PRG:0AEE 95 06 + ldy $0184 ; CPU:$8AF0 PRG:0AF0 AC 84 01 + lda $046D,y ; CPU:$8AF3 PRG:0AF3 B9 6D 04 + clc ; CPU:$8AF6 PRG:0AF6 18 + adc #$02 ; CPU:$8AF7 PRG:0AF7 69 02 + sta $046D,y ; CPU:$8AF9 PRG:0AF9 99 6D 04 + lda #$6F ; CPU:$8AFC PRG:0AFC A9 6F + jsr Sub_A6F0 ; CPU:$8AFE PRG:0AFE 20 F0 A6 + lda #$02 ; CPU:$8B01 PRG:0B01 A9 02 + jsr ObjectDraw ; CPU:$8B03 PRG:0B03 20 6F A5 + lda #$28 ; CPU:$8B06 PRG:0B06 A9 28 + ldy #$01 ; CPU:$8B08 PRG:0B08 A0 01 + jsr AudioChannelLoop ; CPU:$8B0A PRG:0B0A 20 63 BE + lda #$00 ; CPU:$8B0D PRG:0B0D A9 00 + sta $0409 ; CPU:$8B0F PRG:0B0F 8D 09 04 + lda #$00 ; CPU:$8B12 PRG:0B12 A9 00 + sta Zp05,x ; CPU:$8B14 PRG:0B14 95 05 + ldy $0184 ; CPU:$8B16 PRG:0B16 AC 84 01 + lda #$01 ; CPU:$8B19 PRG:0B19 A9 01 + sta $0186 ; CPU:$8B1B PRG:0B1B 8D 86 01 + sta $0469 ; CPU:$8B1E PRG:0B1E 8D 69 04 + lda #$05 ; CPU:$8B21 PRG:0B21 A9 05 + sta Zp08,x ; CPU:$8B23 PRG:0B23 95 08 + ldy $0183 ; CPU:$8B25 PRG:0B25 AC 83 01 + lda $0404,y ; CPU:$8B28 PRG:0B28 B9 04 04 + sec ; CPU:$8B2B PRG:0B2B 38 + sbc #$04 ; CPU:$8B2C PRG:0B2C E9 04 + sta $0404,y ; CPU:$8B2E PRG:0B2E 99 04 04 + lda Zp0E,x ; CPU:$8B31 PRG:0B31 B5 0E + sta $0478 ; CPU:$8B33 PRG:0B33 8D 78 04 + lda #$40 ; CPU:$8B36 PRG:0B36 A9 40 + sta Zp0D,x ; CPU:$8B38 PRG:0B38 95 0D + jsr ObjectUpdate ; CPU:$8B3A PRG:0B3A 20 92 A7 + lda #$0B ; CPU:$8B3D PRG:0B3D A9 0B + sta $0478 ; CPU:$8B3F PRG:0B3F 8D 78 04 + lda #$60 ; CPU:$8B42 PRG:0B42 A9 60 + jsr Sub_A789 ; CPU:$8B44 PRG:0B44 20 89 A7 + lda #$07 ; CPU:$8B47 PRG:0B47 A9 07 + sta SlotState,x ; CPU:$8B49 PRG:0B49 95 0C + lda #$59 ; CPU:$8B4B PRG:0B4B A9 59 + sta Zp0A,x ; CPU:$8B4D PRG:0B4D 95 0A + lda #$8B ; CPU:$8B4F PRG:0B4F A9 8B + sta Zp0B,x ; CPU:$8B51 PRG:0B51 95 0B + lda #$05 ; CPU:$8B53 PRG:0B53 A9 05 + sta Zp07,x ; CPU:$8B55 PRG:0B55 95 07 + jmp Sub_85C1 ; CPU:$8B57 PRG:0B57 4C C1 85 +; ---- data $8B5A-$8D17 (446 bytes) ---- + .byte $AC, $84, $01, $B9, $6D, $04, $18, $69, $01, $99, $6D, $04, $A9, $02, $20, $6F ; CPU:$8B5A PRG:0B5A AC 84 01 B9 6D 04 18 69 01 99 6D 04 A9 02 20 6F + .byte $A5, $AC, $84, $01, $A9, $01, $8D, $86, $01, $8D, $69, $04, $A9, $06, $95, $08 ; CPU:$8B6A PRG:0B6A A5 AC 84 01 A9 01 8D 86 01 8D 69 04 A9 06 95 08 + .byte $B5, $0E, $8D, $78, $04, $A9, $41, $95, $0D, $20, $92, $A7, $A9, $0B, $8D, $78 ; CPU:$8B7A PRG:0B7A B5 0E 8D 78 04 A9 41 95 0D 20 92 A7 A9 0B 8D 78 + .byte $04, $A9, $61, $20, $89, $A7, $A9, $07, $95, $0C, $A9, $A2, $95, $0A, $A9, $8B ; CPU:$8B8A PRG:0B8A 04 A9 61 20 89 A7 A9 07 95 0C A9 A2 95 0A A9 8B + .byte $95, $0B, $A9, $05, $95, $07, $4C, $C1, $85, $AC, $84, $01, $B9, $6D, $04, $18 ; CPU:$8B9A PRG:0B9A 95 0B A9 05 95 07 4C C1 85 AC 84 01 B9 6D 04 18 + .byte $69, $02, $99, $6D, $04, $A9, $02, $20, $6F, $A5, $AC, $84, $01, $A9, $01, $8D ; CPU:$8BAA PRG:0BAA 69 02 99 6D 04 A9 02 20 6F A5 AC 84 01 A9 01 8D + .byte $86, $01, $8D, $69, $04, $A9, $06, $95, $08, $B5, $0E, $8D, $78, $04, $A9, $42 ; CPU:$8BBA PRG:0BBA 86 01 8D 69 04 A9 06 95 08 B5 0E 8D 78 04 A9 42 + .byte $95, $0D, $20, $92, $A7, $A9, $0B, $8D, $78, $04, $A9, $62, $20, $92, $A7, $A9 ; CPU:$8BCA PRG:0BCA 95 0D 20 92 A7 A9 0B 8D 78 04 A9 62 20 92 A7 A9 + .byte $09, $95, $0C, $A9, $EB, $95, $0A, $A9, $8B, $95, $0B, $A9, $05, $95, $07, $4C ; CPU:$8BDA PRG:0BDA 09 95 0C A9 EB 95 0A A9 8B 95 0B A9 05 95 07 4C + .byte $C1, $85, $AC, $84, $01, $B9, $6D, $04, $18, $69, $01, $99, $6D, $04, $A9, $03 ; CPU:$8BEA PRG:0BEA C1 85 AC 84 01 B9 6D 04 18 69 01 99 6D 04 A9 03 + .byte $20, $6F, $A5, $AC, $84, $01, $A9, $01, $8D, $86, $01, $8D, $69, $04, $A9, $06 ; CPU:$8BFA PRG:0BFA 20 6F A5 AC 84 01 A9 01 8D 86 01 8D 69 04 A9 06 + .byte $95, $08, $B5, $0E, $8D, $78, $04, $A9, $43, $95, $0D, $20, $92, $A7, $A9, $0B ; CPU:$8C0A PRG:0C0A 95 08 B5 0E 8D 78 04 A9 43 95 0D 20 92 A7 A9 0B + .byte $8D, $78, $04, $A9, $63, $20, $89, $A7, $A9, $0F, $95, $0C, $A9, $34, $95, $0A ; CPU:$8C1A PRG:0C1A 8D 78 04 A9 63 20 89 A7 A9 0F 95 0C A9 34 95 0A + .byte $A9, $8C, $95, $0B, $A9, $05, $95, $07, $4C, $C1, $85, $AC, $84, $01, $B9, $6D ; CPU:$8C2A PRG:0C2A A9 8C 95 0B A9 05 95 07 4C C1 85 AC 84 01 B9 6D + .byte $04, $18, $69, $01, $99, $6D, $04, $A9, $03, $20, $6F, $A5, $AC, $84, $01, $A9 ; CPU:$8C3A PRG:0C3A 04 18 69 01 99 6D 04 A9 03 20 6F A5 AC 84 01 A9 + .byte $01, $8D, $86, $01, $8D, $69, $04, $95, $08, $B5, $0E, $8D, $78, $04, $A9, $44 ; CPU:$8C4A PRG:0C4A 01 8D 86 01 8D 69 04 95 08 B5 0E 8D 78 04 A9 44 + .byte $95, $0D, $20, $92, $A7, $A9, $0B, $8D, $78, $04, $A9, $64, $20, $89, $A7, $A9 ; CPU:$8C5A PRG:0C5A 95 0D 20 92 A7 A9 0B 8D 78 04 A9 64 20 89 A7 A9 + .byte $06, $95, $0C, $A9, $7B, $95, $0A, $A9, $8C, $95, $0B, $A9, $05, $95, $07, $4C ; CPU:$8C6A PRG:0C6A 06 95 0C A9 7B 95 0A A9 8C 95 0B A9 05 95 07 4C + .byte $C1, $85, $AC, $84, $01, $B9, $6D, $04, $18, $69, $01, $99, $6D, $04, $A9, $03 ; CPU:$8C7A PRG:0C7A C1 85 AC 84 01 B9 6D 04 18 69 01 99 6D 04 A9 03 + .byte $20, $6F, $A5, $AC, $84, $01, $A9, $01, $8D, $86, $01, $8D, $69, $04, $95, $08 ; CPU:$8C8A PRG:0C8A 20 6F A5 AC 84 01 A9 01 8D 86 01 8D 69 04 95 08 + .byte $B5, $0E, $8D, $78, $04, $A9, $45, $95, $0D, $20, $92, $A7, $A9, $0B, $8D, $78 ; CPU:$8C9A PRG:0C9A B5 0E 8D 78 04 A9 45 95 0D 20 92 A7 A9 0B 8D 78 + .byte $04, $A9, $65, $20, $89, $A7, $A9, $06, $95, $0C, $A9, $C2, $95, $0A, $A9, $8C ; CPU:$8CAA PRG:0CAA 04 A9 65 20 89 A7 A9 06 95 0C A9 C2 95 0A A9 8C + .byte $95, $0B, $A9, $05, $95, $07, $4C, $C1, $85, $A5, $2E, $29, $80, $D0, $5A, $A5 ; CPU:$8CBA PRG:0CBA 95 0B A9 05 95 07 4C C1 85 A5 2E 29 80 D0 5A A5 + .byte $37, $35, $0F, $D0, $54, $EE, $09, $04, $AD, $09, $04, $C9, $0A, $90, $03, $4C ; CPU:$8CCA PRG:0CCA 37 35 0F D0 54 EE 09 04 AD 09 04 C9 0A 90 03 4C + .byte $41, $91, $AC, $84, $01, $B9, $6D, $04, $18, $69, $02, $99, $6D, $04, $A9, $04 ; CPU:$8CDA PRG:0CDA 41 91 AC 84 01 B9 6D 04 18 69 02 99 6D 04 A9 04 + .byte $20, $6F, $A5, $AC, $84, $01, $A9, $01, $99, $86, $01, $99, $69, $04, $95, $08 ; CPU:$8CEA PRG:0CEA 20 6F A5 AC 84 01 A9 01 99 86 01 99 69 04 95 08 + .byte $B5, $0E, $8D, $78, $04, $A9, $46, $95, $0D, $20, $92, $A7, $A9, $0B, $8D, $78 ; CPU:$8CFA PRG:0CFA B5 0E 8D 78 04 A9 46 95 0D 20 92 A7 A9 0B 8D 78 + .byte $04, $A9, $66, $20, $89, $A7, $A9, $07, $95, $0C, $A9, $C2, $95, $0A ; CPU:$8D0A PRG:0D0A 04 A9 66 20 89 A7 A9 07 95 0C A9 C2 95 0A +; ----------------------------------------------------------------------------- +; Routine: Sub_8D18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8D18: + lda #$8C ; CPU:$8D18 PRG:0D18 A9 8C + sta Zp0B,x ; CPU:$8D1A PRG:0D1A 95 0B + lda #$05 ; CPU:$8D1C PRG:0D1C A9 05 + sta Zp07,x ; CPU:$8D1E PRG:0D1E 95 07 + jmp Sub_85C1 ; CPU:$8D20 PRG:0D20 4C C1 85 +; ---- data $8D23-$8D41 (31 bytes) ---- + .byte $A9, $04, $20, $6F, $A5, $AD, $90, $03, $09, $20, $8D, $90, $03, $AC, $83, $01 ; CPU:$8D23 PRG:0D23 A9 04 20 6F A5 AD 90 03 09 20 8D 90 03 AC 83 01 + .byte $B9, $0A, $04, $09, $04, $99, $0A, $04, $A9, $00, $95, $07, $4C, $C1, $85 ; CPU:$8D33 PRG:0D33 B9 0A 04 09 04 99 0A 04 A9 00 95 07 4C C1 85 +; ----------------------------------------------------------------------------- +; Routine: Sub_8D42 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8D42: + jmp Sub_8ADE ; CPU:$8D42 PRG:0D42 4C DE 8A +; ----------------------------------------------------------------------------- +; Routine: Sub_8D45 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_8D45: + lda #$00 ; CPU:$8D45 PRG:0D45 A9 00 + sta $0469 ; CPU:$8D47 PRG:0D47 8D 69 04 + lda #$0B ; CPU:$8D4A PRG:0D4A A9 0B + ldy #$04 ; CPU:$8D4C PRG:0D4C A0 04 + jsr EventState ; CPU:$8D4E PRG:0D4E 20 70 A8 + lda #$24 ; CPU:$8D51 PRG:0D51 A9 24 + ldy #$01 ; CPU:$8D53 PRG:0D53 A0 01 + jsr AudioChannelLoop ; CPU:$8D55 PRG:0D55 20 63 BE + lda #$00 ; CPU:$8D58 PRG:0D58 A9 00 + jsr ObjectDraw ; CPU:$8D5A PRG:0D5A 20 6F A5 + lda #$A0 ; CPU:$8D5D PRG:0D5D A9 A0 + ldy $0183 ; CPU:$8D5F PRG:0D5F AC 83 01 + sta $0404,y ; CPU:$8D62 PRG:0D62 99 04 04 + lda #$00 ; CPU:$8D65 PRG:0D65 A9 00 + sta Zp08,x ; CPU:$8D67 PRG:0D67 95 08 + lda Zp0E,x ; CPU:$8D69 PRG:0D69 B5 0E + sta $0478 ; CPU:$8D6B PRG:0D6B 8D 78 04 + lda #$47 ; CPU:$8D6E PRG:0D6E A9 47 + sta Zp0D,x ; CPU:$8D70 PRG:0D70 95 0D + jsr ObjectUpdate ; CPU:$8D72 PRG:0D72 20 92 A7 + jsr Sub_8660 ; CPU:$8D75 PRG:0D75 20 60 86 + lda Zp06,x ; CPU:$8D78 PRG:0D78 B5 06 + ora #$03 ; CPU:$8D7A PRG:0D7A 09 03 + sta Zp06,x ; CPU:$8D7C PRG:0D7C 95 06 + lda $0473 ; CPU:$8D7E PRG:0D7E AD 73 04 + ora #$01 ; CPU:$8D81 PRG:0D81 09 01 + sta $0473 ; CPU:$8D83 PRG:0D83 8D 73 04 + lda #$60 ; CPU:$8D86 PRG:0D86 A9 60 + sta SlotState,x ; CPU:$8D88 PRG:0D88 95 0C + jsr Sub_9810 ; CPU:$8D8A PRG:0D8A 20 10 98 + lda $0181 ; CPU:$8D8D PRG:0D8D AD 81 01 + bne SpriteSetup_Loop52 ; CPU:$8D90 PRG:0D90 D0 01 + rts ; CPU:$8D92 PRG:0D92 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop52 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop52: + lda #$00 ; CPU:$8D93 PRG:0D93 A9 00 + sta $0384 ; CPU:$8D95 PRG:0D95 8D 84 03 + sta $0383 ; CPU:$8D98 PRG:0D98 8D 83 03 + sta $0382 ; CPU:$8D9B PRG:0D9B 8D 82 03 + sta $0471 ; CPU:$8D9E PRG:0D9E 8D 71 04 + sta $0472 ; CPU:$8DA1 PRG:0DA1 8D 72 04 + rts ; CPU:$8DA4 PRG:0DA4 60 +; ---- data $8DA5-$9140 (924 bytes) ---- + .byte $20, $E4, $A4, $20, $05, $A7, $AC, $84, $01, $B9, $6D, $04, $18, $69, $01, $99 ; CPU:$8DA5 PRG:0DA5 20 E4 A4 20 05 A7 AC 84 01 B9 6D 04 18 69 01 99 + .byte $6D, $04, $A9, $02, $20, $6F, $A5, $A9, $1E, $A0, $01, $20, $63, $BE, $A9, $00 ; CPU:$8DB5 PRG:0DB5 6D 04 A9 02 20 6F A5 A9 1E A0 01 20 63 BE A9 00 + .byte $8D, $09, $04, $B5, $06, $09, $10, $95, $06, $A9, $70, $20, $F0, $A6, $A9, $00 ; CPU:$8DC5 PRG:0DC5 8D 09 04 B5 06 09 10 95 06 A9 70 20 F0 A6 A9 00 + .byte $8D, $09, $04, $A9, $00, $95, $05, $20, $C7, $8A, $AC, $84, $01, $A9, $01, $99 ; CPU:$8DD5 PRG:0DD5 8D 09 04 A9 00 95 05 20 C7 8A AC 84 01 A9 01 99 + .byte $86, $01, $99, $69, $04, $AC, $83, $01, $B9, $04, $04, $38, $E9, $08, $99, $04 ; CPU:$8DE5 PRG:0DE5 86 01 99 69 04 AC 83 01 B9 04 04 38 E9 08 99 04 + .byte $04, $B5, $0E, $8D, $78, $04, $A9, $50, $95, $0D, $20, $92, $A7, $A9, $0B, $8D ; CPU:$8DF5 PRG:0DF5 04 B5 0E 8D 78 04 A9 50 95 0D 20 92 A7 A9 0B 8D + .byte $78, $04, $A9, $67, $20, $89, $A7, $A9, $08, $95, $0C, $EE, $9B, $03, $A9, $06 ; CPU:$8E05 PRG:0E05 78 04 A9 67 20 89 A7 A9 08 95 0C EE 9B 03 A9 06 + .byte $95, $08, $4C, $B3, $85, $AC, $84, $01, $B9, $6D, $04, $18, $69, $01, $99, $6D ; CPU:$8E15 PRG:0E15 95 08 4C B3 85 AC 84 01 B9 6D 04 18 69 01 99 6D + .byte $04, $A9, $03, $20, $6F, $A5, $AC, $83, $01, $B9, $04, $04, $38, $E9, $01, $99 ; CPU:$8E25 PRG:0E25 04 A9 03 20 6F A5 AC 83 01 B9 04 04 38 E9 01 99 + .byte $04, $04, $AC, $84, $01, $A9, $01, $99, $86, $01, $99, $69, $04, $B5, $0E, $8D ; CPU:$8E35 PRG:0E35 04 04 AC 84 01 A9 01 99 86 01 99 69 04 B5 0E 8D + .byte $78, $04, $A9, $51, $95, $0D, $20, $92, $A7, $A9, $0B, $8D, $78, $04, $A9, $68 ; CPU:$8E45 PRG:0E45 78 04 A9 51 95 0D 20 92 A7 A9 0B 8D 78 04 A9 68 + .byte $20, $89, $A7, $A9, $0A, $95, $0C, $EE, $9B, $03, $A9, $06, $95, $08, $4C, $B3 ; CPU:$8E55 PRG:0E55 20 89 A7 A9 0A 95 0C EE 9B 03 A9 06 95 08 4C B3 + .byte $85, $A5, $37, $35, $0F, $D0, $62, $EE, $09, $04, $AD, $09, $04, $C9, $0A, $90 ; CPU:$8E65 PRG:0E65 85 A5 37 35 0F D0 62 EE 09 04 AD 09 04 C9 0A 90 + .byte $03, $4C, $41, $91, $20, $14, $A6, $A9, $03, $20, $6F, $A5, $AC, $83, $01, $B9 ; CPU:$8E75 PRG:0E75 03 4C 41 91 20 14 A6 A9 03 20 6F A5 AC 83 01 B9 + .byte $04, $04, $38, $E9, $02, $99, $04, $04, $C9, $B0, $B0, $11, $A9, $B0, $99, $04 ; CPU:$8E85 PRG:0E85 04 04 38 E9 02 99 04 04 C9 B0 B0 11 A9 B0 99 04 + .byte $04, $AC, $84, $01, $B9, $6D, $04, $18, $69, $02, $99, $6D, $04, $AC, $84, $01 ; CPU:$8E95 PRG:0E95 04 AC 84 01 B9 6D 04 18 69 02 99 6D 04 AC 84 01 + .byte $A9, $01, $99, $86, $01, $99, $69, $04, $B5, $0E, $8D, $78, $04, $A9, $52, $95 ; CPU:$8EA5 PRG:0EA5 A9 01 99 86 01 99 69 04 B5 0E 8D 78 04 A9 52 95 + .byte $0D, $20, $92, $A7, $A9, $0B, $8D, $78, $04, $A9, $69, $20, $89, $A7, $A9, $03 ; CPU:$8EB5 PRG:0EB5 0D 20 92 A7 A9 0B 8D 78 04 A9 69 20 89 A7 A9 03 + .byte $95, $0C, $A9, $06, $95, $08, $4C, $B3, $85, $A9, $00, $20, $6F, $A5, $A9, $1C ; CPU:$8EC5 PRG:0EC5 95 0C A9 06 95 08 4C B3 85 A9 00 20 6F A5 A9 1C + .byte $A0, $01, $20, $63, $BE, $AD, $90, $03, $09, $20, $8D, $90, $03, $A9, $00, $95 ; CPU:$8ED5 PRG:0ED5 A0 01 20 63 BE AD 90 03 09 20 8D 90 03 A9 00 95 + .byte $08, $AC, $83, $01, $B9, $04, $04, $18, $69, $04, $99, $04, $04, $EE, $9B, $03 ; CPU:$8EE5 PRG:0EE5 08 AC 83 01 B9 04 04 18 69 04 99 04 04 EE 9B 03 + .byte $4C, $B3, $85, $EE, $9B, $03, $4C, $B3, $85, $A5, $37, $35, $0F, $F0, $2D, $A9 ; CPU:$8EF5 PRG:0EF5 4C B3 85 EE 9B 03 4C B3 85 A5 37 35 0F F0 2D A9 + .byte $00, $20, $6F, $A5, $AC, $84, $01, $A9, $00, $99, $86, $01, $99, $69, $04, $B5 ; CPU:$8F05 PRG:0F05 00 20 6F A5 AC 84 01 A9 00 99 86 01 99 69 04 B5 + .byte $0E, $8D, $78, $04, $A9, $53, $95, $0D, $20, $92, $A7, $A9, $0B, $8D, $78, $04 ; CPU:$8F15 PRG:0F15 0E 8D 78 04 A9 53 95 0D 20 92 A7 A9 0B 8D 78 04 + .byte $A9, $6A, $20, $89, $A7, $A9, $03, $95, $0C, $4C, $B3, $85, $A9, $00, $8D, $09 ; CPU:$8F25 PRG:0F25 A9 6A 20 89 A7 A9 03 95 0C 4C B3 85 A9 00 8D 09 + .byte $04, $AC, $84, $01, $B9, $6D, $04, $18, $69, $01, $99, $6D, $04, $A9, $02, $20 ; CPU:$8F35 PRG:0F35 04 AC 84 01 B9 6D 04 18 69 01 99 6D 04 A9 02 20 + .byte $6F, $A5, $A9, $1E, $A0, $01, $20, $63, $BE, $A9, $70, $20, $F0, $A6, $AD, $90 ; CPU:$8F45 PRG:0F45 6F A5 A9 1E A0 01 20 63 BE A9 70 20 F0 A6 AD 90 + .byte $03, $29, $DF, $8D, $90, $03, $EE, $9B, $03, $4C, $B3, $85, $AC, $84, $01, $B9 ; CPU:$8F55 PRG:0F55 03 29 DF 8D 90 03 EE 9B 03 4C B3 85 AC 84 01 B9 + .byte $6D, $04, $18, $69, $01, $99, $6D, $04, $A9, $02, $20, $6F, $A5, $A9, $00, $95 ; CPU:$8F65 PRG:0F65 6D 04 18 69 01 99 6D 04 A9 02 20 6F A5 A9 00 95 + .byte $05, $AC, $84, $01, $A9, $01, $99, $86, $01, $99, $69, $04, $AC, $83, $01, $B9 ; CPU:$8F75 PRG:0F75 05 AC 84 01 A9 01 99 86 01 99 69 04 AC 83 01 B9 + .byte $04, $04, $38, $E9, $08, $99, $04, $04, $B5, $0E, $8D, $78, $04, $A9, $54, $95 ; CPU:$8F85 PRG:0F85 04 04 38 E9 08 99 04 04 B5 0E 8D 78 04 A9 54 95 + .byte $0D, $20, $92, $A7, $A9, $0B, $8D, $78, $04, $A9, $6C, $20, $89, $A7, $A9, $08 ; CPU:$8F95 PRG:0F95 0D 20 92 A7 A9 0B 8D 78 04 A9 6C 20 89 A7 A9 08 + .byte $95, $0C, $EE, $9B, $03, $A9, $06, $95, $08, $4C, $B3, $85, $AC, $84, $01, $B9 ; CPU:$8FA5 PRG:0FA5 95 0C EE 9B 03 A9 06 95 08 4C B3 85 AC 84 01 B9 + .byte $6D, $04, $18, $69, $01, $99, $6D, $04, $A9, $03, $20, $6F, $A5, $AC, $83, $01 ; CPU:$8FB5 PRG:0FB5 6D 04 18 69 01 99 6D 04 A9 03 20 6F A5 AC 83 01 + .byte $B9, $04, $04, $38, $E9, $01, $99, $04, $04, $AC, $84, $01, $A9, $01, $99, $86 ; CPU:$8FC5 PRG:0FC5 B9 04 04 38 E9 01 99 04 04 AC 84 01 A9 01 99 86 + .byte $01, $99, $69, $04, $B5, $0E, $8D, $78, $04, $A9, $54, $95, $0D, $20, $92, $A7 ; CPU:$8FD5 PRG:0FD5 01 99 69 04 B5 0E 8D 78 04 A9 54 95 0D 20 92 A7 + .byte $A9, $0B, $8D, $78, $04, $A9, $6C, $20, $89, $A7, $A9, $08, $95, $0C, $EE, $9B ; CPU:$8FE5 PRG:0FE5 A9 0B 8D 78 04 A9 6C 20 89 A7 A9 08 95 0C EE 9B + .byte $03, $A9, $06, $95, $08, $4C, $B3, $85, $A9, $03, $20, $6F, $A5, $EE, $9B, $03 ; CPU:$8FF5 PRG:0FF5 03 A9 06 95 08 4C B3 85 A9 03 20 6F A5 EE 9B 03 + .byte $A9, $06, $95, $08, $4C, $B3, $85, $A5, $37, $35, $0F, $D0, $62, $EE, $09, $04 ; CPU:$9005 PRG:1005 A9 06 95 08 4C B3 85 A5 37 35 0F D0 62 EE 09 04 + .byte $AD, $09, $04, $C9, $0A, $90, $03, $4C, $41, $91, $20, $14, $A6, $A9, $03, $20 ; CPU:$9015 PRG:1015 AD 09 04 C9 0A 90 03 4C 41 91 20 14 A6 A9 03 20 + .byte $6F, $A5, $AC, $84, $01, $A9, $01, $99, $86, $01, $99, $69, $04, $AC, $83, $01 ; CPU:$9025 PRG:1025 6F A5 AC 84 01 A9 01 99 86 01 99 69 04 AC 83 01 + .byte $B9, $04, $04, $38, $E9, $02, $99, $04, $04, $C9, $A0, $B0, $11, $A9, $A0, $99 ; CPU:$9035 PRG:1035 B9 04 04 38 E9 02 99 04 04 C9 A0 B0 11 A9 A0 99 + .byte $04, $04, $AC, $84, $01, $B9, $6D, $04, $18, $69, $02, $99, $6D, $04, $B5, $0E ; CPU:$9045 PRG:1045 04 04 AC 84 01 B9 6D 04 18 69 02 99 6D 04 B5 0E + .byte $8D, $78, $04, $A9, $54, $95, $0D, $20, $92, $A7, $A9, $0B, $8D, $78, $04, $A9 ; CPU:$9055 PRG:1055 8D 78 04 A9 54 95 0D 20 92 A7 A9 0B 8D 78 04 A9 + .byte $6C, $20, $89, $A7, $A9, $03, $95, $0C, $A9, $06, $95, $08, $4C, $B3, $85, $A9 ; CPU:$9065 PRG:1065 6C 20 89 A7 A9 03 95 0C A9 06 95 08 4C B3 85 A9 + .byte $00, $20, $6F, $A5, $A9, $1C, $A0, $01, $20, $63, $BE, $AD, $90, $03, $09, $20 ; CPU:$9075 PRG:1075 00 20 6F A5 A9 1C A0 01 20 63 BE AD 90 03 09 20 + .byte $8D, $90, $03, $A9, $00, $95, $08, $AC, $83, $01, $B9, $04, $04, $18, $69, $04 ; CPU:$9085 PRG:1085 8D 90 03 A9 00 95 08 AC 83 01 B9 04 04 18 69 04 + .byte $99, $04, $04, $AC, $84, $01, $A9, $00, $99, $86, $01, $99, $69, $04, $EE, $9B ; CPU:$9095 PRG:1095 99 04 04 AC 84 01 A9 00 99 86 01 99 69 04 EE 9B + .byte $03, $4C, $B3, $85, $A9, $00, $20, $6F, $A5, $AC, $83, $01, $B9, $04, $04, $18 ; CPU:$90A5 PRG:10A5 03 4C B3 85 A9 00 20 6F A5 AC 83 01 B9 04 04 18 + .byte $69, $04, $AC, $84, $01, $A9, $01, $99, $86, $01, $99, $69, $04, $B5, $0E, $8D ; CPU:$90B5 PRG:10B5 69 04 AC 84 01 A9 01 99 86 01 99 69 04 B5 0E 8D + .byte $78, $04, $A9, $55, $95, $0D, $20, $92, $A7, $A9, $0B, $8D, $78, $04, $A9, $6D ; CPU:$90C5 PRG:10C5 78 04 A9 55 95 0D 20 92 A7 A9 0B 8D 78 04 A9 6D + .byte $20, $89, $A7, $A9, $08, $95, $0C, $EE, $9B, $03, $4C, $B3, $85, $A9, $00, $20 ; CPU:$90D5 PRG:10D5 20 89 A7 A9 08 95 0C EE 9B 03 4C B3 85 A9 00 20 + .byte $6F, $A5, $EE, $9B, $03, $4C, $B3, $85, $A5, $37, $35, $0F, $F0, $2D, $A9, $00 ; CPU:$90E5 PRG:10E5 6F A5 EE 9B 03 4C B3 85 A5 37 35 0F F0 2D A9 00 + .byte $20, $6F, $A5, $AC, $84, $01, $A9, $00, $99, $86, $01, $99, $69, $04, $A9, $03 ; CPU:$90F5 PRG:10F5 20 6F A5 AC 84 01 A9 00 99 86 01 99 69 04 A9 03 + .byte $95, $0C, $B5, $0E, $8D, $78, $04, $A9, $56, $95, $0D, $20, $92, $A7, $A9, $0B ; CPU:$9105 PRG:1105 95 0C B5 0E 8D 78 04 A9 56 95 0D 20 92 A7 A9 0B + .byte $8D, $78, $04, $A9, $6E, $20, $89, $A7, $4C, $B3, $85, $A9, $00, $95, $09, $A9 ; CPU:$9115 PRG:1115 8D 78 04 A9 6E 20 89 A7 4C B3 85 A9 00 95 09 A9 + .byte $06, $95, $08, $AC, $84, $01, $A9, $01, $99, $86, $01, $99, $69, $04, $AD, $90 ; CPU:$9125 PRG:1125 06 95 08 AC 84 01 A9 01 99 86 01 99 69 04 AD 90 + .byte $03, $29, $DF, $8D, $90, $03, $EE, $9B, $03, $4C, $B3, $85 ; CPU:$9135 PRG:1135 03 29 DF 8D 90 03 EE 9B 03 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: Sub_9141 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9141: + ldy $0183 ; CPU:$9141 PRG:1141 AC 83 01 + lda $0404,y ; CPU:$9144 PRG:1144 B9 04 04 + cmp #$B0 ; CPU:$9147 PRG:1147 C9 B0 + bcs SpriteSetup_Loop53 ; CPU:$9149 PRG:1149 B0 05 + lda #$B0 ; CPU:$914B PRG:114B A9 B0 + sta $0404,y ; CPU:$914D PRG:114D 99 04 04 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop53 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop53: + lda #$0A ; CPU:$9150 PRG:1150 A9 0A + jsr ObjectDraw ; CPU:$9152 PRG:1152 20 6F A5 + lda $0390 ; CPU:$9155 PRG:1155 AD 90 03 + ora #$20 ; CPU:$9158 PRG:1158 09 20 + sta $0390 ; CPU:$915A PRG:115A 8D 90 03 + lda #$0B ; CPU:$915D PRG:115D A9 0B + ldy #$05 ; CPU:$915F PRG:115F A0 05 + jsr EventState ; CPU:$9161 PRG:1161 20 70 A8 + lda #$00 ; CPU:$9164 PRG:1164 A9 00 + sta $0384 ; CPU:$9166 PRG:1166 8D 84 03 + sta $0383 ; CPU:$9169 PRG:1169 8D 83 03 + sta $0382 ; CPU:$916C PRG:116C 8D 82 03 + sta $0186 ; CPU:$916F PRG:116F 8D 86 01 + sta $0469 ; CPU:$9172 PRG:1172 8D 69 04 + sta Zp08,x ; CPU:$9175 PRG:1175 95 08 + sta $042B ; CPU:$9177 PRG:1177 8D 2B 04 + sta $0108 ; CPU:$917A PRG:117A 8D 08 01 + lda #$01 ; CPU:$917D PRG:117D A9 01 + sta $0181 ; CPU:$917F PRG:117F 8D 81 01 + lda #$27 ; CPU:$9182 PRG:1182 A9 27 + ldy #$01 ; CPU:$9184 PRG:1184 A0 01 + jsr AudioChannelLoop ; CPU:$9186 PRG:1186 20 63 BE + ldy $0183 ; CPU:$9189 PRG:1189 AC 83 01 + lda $0404,y ; CPU:$918C PRG:118C B9 04 04 + sec ; CPU:$918F PRG:118F 38 + sbc #$08 ; CPU:$9190 PRG:1190 E9 08 + sta $0404,y ; CPU:$9192 PRG:1192 99 04 04 + lda Zp0E,x ; CPU:$9195 PRG:1195 B5 0E + sta $0478 ; CPU:$9197 PRG:1197 8D 78 04 + lda #$5B ; CPU:$919A PRG:119A A9 5B + sta Zp0D,x ; CPU:$919C PRG:119C 95 0D + jsr ObjectUpdate ; CPU:$919E PRG:119E 20 92 A7 + lda #$0A ; CPU:$91A1 PRG:11A1 A9 0A + sta SlotState,x ; CPU:$91A3 PRG:11A3 95 0C + lda #$B3 ; CPU:$91A5 PRG:11A5 A9 B3 + sta Zp0A,x ; CPU:$91A7 PRG:11A7 95 0A + lda #$91 ; CPU:$91A9 PRG:11A9 A9 91 + sta Zp0B,x ; CPU:$91AB PRG:11AB 95 0B + lda #$05 ; CPU:$91AD PRG:11AD A9 05 + sta Zp07,x ; CPU:$91AF PRG:11AF 95 07 + jmp Sub_85B3 ; CPU:$91B1 PRG:11B1 4C B3 85 +; ---- data $91B4-$91CE (27 bytes) ---- + .byte $B5, $0E, $8D, $78, $04, $A9, $5C, $95, $0D, $20, $92, $A7, $A9, $80, $95, $0C ; CPU:$91B4 PRG:11B4 B5 0E 8D 78 04 A9 5C 95 0D 20 92 A7 A9 80 95 0C + .byte $B5, $06, $09, $03, $95, $06, $A9, $00, $95, $07, $60 ; CPU:$91C4 PRG:11C4 B5 06 09 03 95 06 A9 00 95 07 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_91CF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_91CF: + lda #$27 ; CPU:$91CF PRG:11CF A9 27 + ldy #$01 ; CPU:$91D1 PRG:11D1 A0 01 + jsr AudioChannelLoop ; CPU:$91D3 PRG:11D3 20 63 BE + lda #$0A ; CPU:$91D6 PRG:11D6 A9 0A + jsr ObjectDraw ; CPU:$91D8 PRG:11D8 20 6F A5 + lda $0184 ; CPU:$91DB PRG:11DB AD 84 01 + bne SpriteSetup_Loop54 ; CPU:$91DE PRG:11DE D0 36 + lda Zp0E,x ; CPU:$91E0 PRG:11E0 B5 0E + sta $0478 ; CPU:$91E2 PRG:11E2 8D 78 04 + lda #$57 ; CPU:$91E5 PRG:11E5 A9 57 + sta Zp0D,x ; CPU:$91E7 PRG:11E7 95 0D + jsr ObjectUpdate ; CPU:$91E9 PRG:11E9 20 92 A7 + lda #$08 ; CPU:$91EC PRG:11EC A9 08 + sta SlotState,x ; CPU:$91EE PRG:11EE 95 0C + lda #$FE ; CPU:$91F0 PRG:11F0 A9 FE + sta Zp0A,x ; CPU:$91F2 PRG:11F2 95 0A + lda #$91 ; CPU:$91F4 PRG:11F4 A9 91 + sta Zp0B,x ; CPU:$91F6 PRG:11F6 95 0B + lda #$05 ; CPU:$91F8 PRG:11F8 A9 05 + sta Zp07,x ; CPU:$91FA PRG:11FA 95 07 + jmp Sub_85B3 ; CPU:$91FC PRG:11FC 4C B3 85 +; ---- data $91FF-$9215 (23 bytes) ---- + .byte $B5, $0E, $8D, $78, $04, $A9, $58, $95, $0D, $20, $92, $A7, $A9, $0C, $95, $0C ; CPU:$91FF PRG:11FF B5 0E 8D 78 04 A9 58 95 0D 20 92 A7 A9 0C 95 0C + .byte $A9, $00, $95, $07, $4C, $B3, $85 ; CPU:$920F PRG:120F A9 00 95 07 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: SpriteSetup_Loop54 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteSetup_Loop54: + lda Zp0E,x ; CPU:$9216 PRG:1216 B5 0E + sta $0478 ; CPU:$9218 PRG:1218 8D 78 04 + lda #$59 ; CPU:$921B PRG:121B A9 59 + sta Zp0D,x ; CPU:$921D PRG:121D 95 0D + jsr ObjectUpdate ; CPU:$921F PRG:121F 20 92 A7 + lda #$08 ; CPU:$9222 PRG:1222 A9 08 + sta SlotState,x ; CPU:$9224 PRG:1224 95 0C + lda #$34 ; CPU:$9226 PRG:1226 A9 34 + sta Zp0A,x ; CPU:$9228 PRG:1228 95 0A + lda #$92 ; CPU:$922A PRG:122A A9 92 + sta Zp0B,x ; CPU:$922C PRG:122C 95 0B + lda #$05 ; CPU:$922E PRG:122E A9 05 + sta Zp07,x ; CPU:$9230 PRG:1230 95 07 + jmp Sub_85B3 ; CPU:$9232 PRG:1232 4C B3 85 +; ---- data $9235-$924B (23 bytes) ---- + .byte $B5, $0E, $8D, $78, $04, $A9, $58, $95, $0D, $20, $92, $A7, $A9, $0C, $95, $0C ; CPU:$9235 PRG:1235 B5 0E 8D 78 04 A9 58 95 0D 20 92 A7 A9 0C 95 0C + .byte $A9, $00, $95, $07, $4C, $B3, $85 ; CPU:$9245 PRG:1245 A9 00 95 07 4C B3 85 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB: + ldx #$5B ; CPU:$924C PRG:124C A2 5B + lda #$08 ; CPU:$924E PRG:124E A9 08 + sta $0183 ; CPU:$9250 PRG:1250 8D 83 01 + lda #$01 ; CPU:$9253 PRG:1253 A9 01 + sta $0184 ; CPU:$9255 PRG:1255 8D 84 01 + jsr Sub_A45F ; CPU:$9258 PRG:1258 20 5F A4 + jsr Sub_A3BC ; CPU:$925B PRG:125B 20 BC A3 + jsr Sub_971A ; CPU:$925E PRG:125E 20 1A 97 + lda SlotState,x ; CPU:$9261 PRG:1261 B5 0C + beq EventTaskB_Loop2 ; CPU:$9263 PRG:1263 F0 19 + dec SlotState,x ; CPU:$9265 PRG:1265 D6 0C + jsr Sub_8627 ; CPU:$9267 PRG:1267 20 27 86 + lda Zp08,x ; CPU:$926A PRG:126A B5 08 + cmp #$06 ; CPU:$926C PRG:126C C9 06 + beq EventTaskB_Loop ; CPU:$926E PRG:126E F0 05 + cmp #$01 ; CPU:$9270 PRG:1270 C9 01 + beq EventTaskB_Loop ; CPU:$9272 PRG:1272 F0 01 + rts ; CPU:$9274 PRG:1274 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop: + lda #$01 ; CPU:$9275 PRG:1275 A9 01 + sta $0187 ; CPU:$9277 PRG:1277 8D 87 01 + sta $046A ; CPU:$927A PRG:127A 8D 6A 04 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_OnNonzero: + rts ; CPU:$927D PRG:127D 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop2: + lda Zp61 ; CPU:$927E PRG:127E A5 61 + and #$20 ; CPU:$9280 PRG:1280 29 20 + bne EventTaskB_OnNonzero ; CPU:$9282 PRG:1282 D0 F9 + lda Zp04,x ; CPU:$9284 PRG:1284 B5 04 + cmp #$05 ; CPU:$9286 PRG:1286 C9 05 + bcc EventTaskB_Loop3 ; CPU:$9288 PRG:1288 90 03 + jmp Sub_94FF ; CPU:$928A PRG:128A 4C FF 94 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop3: + cmp #$01 ; CPU:$928D PRG:128D C9 01 + bcc EventTaskB_Loop4 ; CPU:$928F PRG:128F 90 03 + jmp Sub_92E2 ; CPU:$9291 PRG:1291 4C E2 92 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop4: + lda #$80 ; CPU:$9294 PRG:1294 A9 80 + sta $041B ; CPU:$9296 PRG:1296 8D 1B 04 + lda #$01 ; CPU:$9299 PRG:1299 A9 01 + sta Zp04,x ; CPU:$929B PRG:129B 95 04 + lda #$0B ; CPU:$929D PRG:129D A9 0B + sta Zp0E,x ; CPU:$929F PRG:129F 95 0E + lda #$00 ; CPU:$92A1 PRG:12A1 A9 00 + sta Zp06,x ; CPU:$92A3 PRG:12A3 95 06 + sta Zp09,x ; CPU:$92A5 PRG:12A5 95 09 + sta $0182 ; CPU:$92A7 PRG:12A7 8D 82 01 + sta $0412 ; CPU:$92AA PRG:12AA 8D 12 04 + sta Zp07,x ; CPU:$92AD PRG:12AD 95 07 + sta $017C ; CPU:$92AF PRG:12AF 8D 7C 01 + lda #$03 ; CPU:$92B2 PRG:12B2 A9 03 + sta Zp0F,x ; CPU:$92B4 PRG:12B4 95 0F + lda #$9C ; CPU:$92B6 PRG:12B6 A9 9C + sta $041D ; CPU:$92B8 PRG:12B8 8D 1D 04 + sta $040D ; CPU:$92BB PRG:12BB 8D 0D 04 + lda #$C0 ; CPU:$92BE PRG:12BE A9 C0 + sta $041C ; CPU:$92C0 PRG:12C0 8D 1C 04 + sta $040C ; CPU:$92C3 PRG:12C3 8D 0C 04 + lda Zp0E,x ; CPU:$92C6 PRG:12C6 B5 0E + sta $0478 ; CPU:$92C8 PRG:12C8 8D 78 04 + lda #$3F ; CPU:$92CB PRG:12CB A9 3F + jsr ObjectUpdate ; CPU:$92CD PRG:12CD 20 92 A7 + lda #$19 ; CPU:$92D0 PRG:12D0 A9 19 + jsr SpritePosition ; CPU:$92D2 PRG:12D2 20 5E 98 + lda #$0A ; CPU:$92D5 PRG:12D5 A9 0A + jsr ObjectDraw ; CPU:$92D7 PRG:12D7 20 6F A5 + lda #$20 ; CPU:$92DA PRG:12DA A9 20 + sta SlotState,x ; CPU:$92DC PRG:12DC 95 0C + jsr Sub_9A80 ; CPU:$92DE PRG:12DE 20 80 9A + rts ; CPU:$92E1 PRG:12E1 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_92E2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_92E2: + lda Zp04,x ; CPU:$92E2 PRG:12E2 B5 04 + cmp #$01 ; CPU:$92E4 PRG:12E4 C9 01 + bne EventTaskB_Loop7 ; CPU:$92E6 PRG:12E6 D0 37 + lda VblankFlag ; CPU:$92E8 PRG:12E8 A5 2E + and #$80 ; CPU:$92EA PRG:12EA 29 80 + bne EventTaskB_Loop5 ; CPU:$92EC PRG:12EC D0 0A + lda Zp37 ; CPU:$92EE PRG:12EE A5 37 + and $030C ; CPU:$92F0 PRG:12F0 2D 0C 03 + cmp $030C ; CPU:$92F3 PRG:12F3 CD 0C 03 + bne EventTaskB_Loop6 ; CPU:$92F6 PRG:12F6 D0 26 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop5: + lda #$60 ; CPU:$92F8 PRG:12F8 A9 60 + sta SlotState,x ; CPU:$92FA PRG:12FA 95 0C + lda #$02 ; CPU:$92FC PRG:12FC A9 02 + sta Zp04,x ; CPU:$92FE PRG:12FE 95 04 + lda Zp0E,x ; CPU:$9300 PRG:1300 B5 0E + sta $0478 ; CPU:$9302 PRG:1302 8D 78 04 + lda #$5D ; CPU:$9305 PRG:1305 A9 5D + sta Zp0D,x ; CPU:$9307 PRG:1307 95 0D + jsr ObjectUpdate ; CPU:$9309 PRG:1309 20 92 A7 + lda #$16 ; CPU:$930C PRG:130C A9 16 + jsr SpritePosition ; CPU:$930E PRG:130E 20 5E 98 + lda #$0A ; CPU:$9311 PRG:1311 A9 0A + jsr ObjectDraw ; CPU:$9313 PRG:1313 20 6F A5 + lda #$26 ; CPU:$9316 PRG:1316 A9 26 + ldy #$01 ; CPU:$9318 PRG:1318 A0 01 + jsr AudioChannelLoop ; CPU:$931A PRG:131A 20 63 BE + rts ; CPU:$931D PRG:131D 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop6: + rts ; CPU:$931E PRG:131E 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop7: + lda Zp04,x ; CPU:$931F PRG:131F B5 04 + cmp #$02 ; CPU:$9321 PRG:1321 C9 02 + bne EventTaskB_Loop9 ; CPU:$9323 PRG:1323 D0 22 + lda Zp0E,x ; CPU:$9325 PRG:1325 B5 0E + sta $0478 ; CPU:$9327 PRG:1327 8D 78 04 + lda #$5E ; CPU:$932A PRG:132A A9 5E + jsr ObjectUpdate ; CPU:$932C PRG:132C 20 92 A7 + lda #$0A ; CPU:$932F PRG:132F A9 0A + jsr ObjectDraw ; CPU:$9331 PRG:1331 20 6F A5 + lda #$03 ; CPU:$9334 PRG:1334 A9 03 + sta Zp04,x ; CPU:$9336 PRG:1336 95 04 + lda $030C ; CPU:$9338 PRG:1338 AD 0C 03 + cmp #$03 ; CPU:$933B PRG:133B C9 03 + bne EventTaskB_Loop8 ; CPU:$933D PRG:133D D0 07 + lda #$1F ; CPU:$933F PRG:133F A9 1F + ldy #$02 ; CPU:$9341 PRG:1341 A0 02 + jsr AudioChannelLoop ; CPU:$9343 PRG:1343 20 63 BE +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop8: + rts ; CPU:$9346 PRG:1346 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop9: + lda Zp04,x ; CPU:$9347 PRG:1347 B5 04 + cmp #$03 ; CPU:$9349 PRG:1349 C9 03 + bne EventTaskB_Loop12 ; CPU:$934B PRG:134B D0 2F + lda Zp37 ; CPU:$934D PRG:134D A5 37 + and Zp0F,x ; CPU:$934F PRG:134F 35 0F + cmp Zp0F,x ; CPU:$9351 PRG:1351 D5 0F + beq EventTaskB_Loop10 ; CPU:$9353 PRG:1353 F0 0F + lda $0308 ; CPU:$9355 PRG:1355 AD 08 03 + beq EventTaskB_Loop10 ; CPU:$9358 PRG:1358 F0 0A + lda $0392 ; CPU:$935A PRG:135A AD 92 03 + and #$7F ; CPU:$935D PRG:135D 29 7F + beq EventTaskB_Loop10 ; CPU:$935F PRG:135F F0 03 + jmp Sub_93BD ; CPU:$9361 PRG:1361 4C BD 93 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop10: + lda $030C ; CPU:$9364 PRG:1364 AD 0C 03 + cmp #$03 ; CPU:$9367 PRG:1367 C9 03 + bne EventTaskB_Loop11 ; CPU:$9369 PRG:1369 D0 10 + inc $0180 ; CPU:$936B PRG:136B EE 80 01 + lda $0180 ; CPU:$936E PRG:136E AD 80 01 + cmp #$60 ; CPU:$9371 PRG:1371 C9 60 + bne EventTaskB_Loop11 ; CPU:$9373 PRG:1373 D0 06 + lda #$04 ; CPU:$9375 PRG:1375 A9 04 + sta Zp04,x ; CPU:$9377 PRG:1377 95 04 + sta Zp4F ; CPU:$9379 PRG:1379 85 4F +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop11: + rts ; CPU:$937B PRG:137B 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop12: + lda Zp0E,x ; CPU:$937C PRG:137C B5 0E + sta $0478 ; CPU:$937E PRG:137E 8D 78 04 + lda #$5F ; CPU:$9381 PRG:1381 A9 5F + sta Zp0D,x ; CPU:$9383 PRG:1383 95 0D + jsr ObjectUpdate ; CPU:$9385 PRG:1385 20 92 A7 + lda #$18 ; CPU:$9388 PRG:1388 A9 18 + jsr SpritePosition ; CPU:$938A PRG:138A 20 5E 98 + lda #$00 ; CPU:$938D PRG:138D A9 00 + jsr ObjectDraw ; CPU:$938F PRG:138F 20 6F A5 + lda #$0A ; CPU:$9392 PRG:1392 A9 0A + sta SlotState,x ; CPU:$9394 PRG:1394 95 0C + lda $0390 ; CPU:$9396 PRG:1396 AD 90 03 + and #$CF ; CPU:$9399 PRG:1399 29 CF + sta $0390 ; CPU:$939B PRG:139B 8D 90 03 + lda GameMode ; CPU:$939E PRG:139E A5 8C + cmp #$01 ; CPU:$93A0 PRG:13A0 C9 01 + bne EventTaskB_Loop13 ; CPU:$93A2 PRG:13A2 D0 05 + lda #$03 ; CPU:$93A4 PRG:13A4 A9 03 + sta $0384 ; CPU:$93A6 PRG:13A6 8D 84 03 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop13: + lda #$05 ; CPU:$93A9 PRG:13A9 A9 05 + sta Zp04,x ; CPU:$93AB PRG:13AB 95 04 + lda $030C ; CPU:$93AD PRG:13AD AD 0C 03 + cmp #$03 ; CPU:$93B0 PRG:13B0 C9 03 + beq EventTaskB_Loop14 ; CPU:$93B2 PRG:13B2 F0 01 + rts ; CPU:$93B4 PRG:13B4 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop14: + lda #$1B ; CPU:$93B5 PRG:13B5 A9 1B + ldy #$03 ; CPU:$93B7 PRG:13B7 A0 03 + jsr AudioChannelLoop ; CPU:$93B9 PRG:13B9 20 63 BE + rts ; CPU:$93BC PRG:13BC 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_93BD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_93BD: + inc $0182 ; CPU:$93BD PRG:13BD EE 82 01 + lda #$2D ; CPU:$93C0 PRG:13C0 A9 2D + ldy #$03 ; CPU:$93C2 PRG:13C2 A0 03 + jsr AudioChannelLoop ; CPU:$93C4 PRG:13C4 20 63 BE + lda #$D5 ; CPU:$93C7 PRG:13C7 A9 D5 + jsr SpriteSetup ; CPU:$93C9 PRG:13C9 20 EF 83 + lda #$08 ; CPU:$93CC PRG:13CC A9 08 + jsr DelayFrames ; CPU:$93CE PRG:13CE 20 F5 F7 + lda #$D4 ; CPU:$93D1 PRG:13D1 A9 D4 + jsr SpriteSetup ; CPU:$93D3 PRG:13D3 20 EF 83 + lda #$08 ; CPU:$93D6 PRG:13D6 A9 08 + jsr DelayFrames ; CPU:$93D8 PRG:13D8 20 F5 F7 + lda #$D5 ; CPU:$93DB PRG:13DB A9 D5 + jsr SpriteSetup ; CPU:$93DD PRG:13DD 20 EF 83 + lda Zp0E,x ; CPU:$93E0 PRG:13E0 B5 0E + sta $0478 ; CPU:$93E2 PRG:13E2 8D 78 04 + lda #$3E ; CPU:$93E5 PRG:13E5 A9 3E + sta Zp0D,x ; CPU:$93E7 PRG:13E7 95 0D + jsr ObjectUpdate ; CPU:$93E9 PRG:13E9 20 92 A7 + lda #$01 ; CPU:$93EC PRG:13EC A9 01 + sta Zp04,x ; CPU:$93EE PRG:13EE 95 04 + jsr Sub_A97F ; CPU:$93F0 PRG:13F0 20 7F A9 + ldx #$5B ; CPU:$93F3 PRG:13F3 A2 5B + lda #$1A ; CPU:$93F5 PRG:13F5 A9 1A + jsr SpritePosition ; CPU:$93F7 PRG:13F7 20 5E 98 + lda #$40 ; CPU:$93FA PRG:13FA A9 40 + sta SlotState,x ; CPU:$93FC PRG:13FC 95 0C + sta Zp57 ; CPU:$93FE PRG:13FE 85 57 + lda #$FB ; CPU:$9400 PRG:1400 A9 FB + clc ; CPU:$9402 PRG:1402 18 + adc $0182 ; CPU:$9403 PRG:1403 6D 82 01 + sta $03BF ; CPU:$9406 PRG:1406 8D BF 03 + lda #$20 ; CPU:$9409 PRG:1409 A9 20 + sta $03C0 ; CPU:$940B PRG:140B 8D C0 03 + lda #$01 ; CPU:$940E PRG:140E A9 01 + sta $03C1 ; CPU:$9410 PRG:1410 8D C1 03 + lda #$73 ; CPU:$9413 PRG:1413 A9 73 + sta $03C2 ; CPU:$9415 PRG:1415 8D C2 03 + lda #$80 ; CPU:$9418 PRG:1418 A9 80 + sta $03BE ; CPU:$941A PRG:141A 8D BE 03 + lda #$10 ; CPU:$941D PRG:141D A9 10 + jsr DelayFrames ; CPU:$941F PRG:141F 20 F5 F7 + lda #$35 ; CPU:$9422 PRG:1422 A9 35 + ldy #$04 ; CPU:$9424 PRG:1424 A0 04 + jsr EventState ; CPU:$9426 PRG:1426 20 70 A8 + lda #$01 ; CPU:$9429 PRG:1429 A9 01 + sta Zp04,x ; CPU:$942B PRG:142B 95 04 + sta Zp4F ; CPU:$942D PRG:142D 85 4F + lda #$00 ; CPU:$942F PRG:142F A9 00 + sta $0183 ; CPU:$9431 PRG:1431 8D 83 01 + lda Zp59 ; CPU:$9434 PRG:1434 A5 59 + sta $0478 ; CPU:$9436 PRG:1436 8D 78 04 + lda #$32 ; CPU:$9439 PRG:1439 A9 32 + jsr ObjectUpdate ; CPU:$943B PRG:143B 20 92 A7 + lda #$08 ; CPU:$943E PRG:143E A9 08 + sta $0183 ; CPU:$9440 PRG:1440 8D 83 01 + jsr Sub_A937 ; CPU:$9443 PRG:1443 20 37 A9 + ldx #$5B ; CPU:$9446 PRG:1446 A2 5B + lda $0182 ; CPU:$9448 PRG:1448 AD 82 01 + cmp #$03 ; CPU:$944B PRG:144B C9 03 + bne EventTaskB_Loop15 ; CPU:$944D PRG:144D D0 03 + jmp Sub_9453 ; CPU:$944F PRG:144F 4C 53 94 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop15: + rts ; CPU:$9452 PRG:1452 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9453 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9453: + lda #$0C ; CPU:$9453 PRG:1453 A9 0C + sta $030C ; CPU:$9455 PRG:1455 8D 0C 03 + lda Zp0E,x ; CPU:$9458 PRG:1458 B5 0E + sta $0478 ; CPU:$945A PRG:145A 8D 78 04 + lda #$38 ; CPU:$945D PRG:145D A9 38 + jsr ObjectUpdate ; CPU:$945F PRG:145F 20 92 A7 + lda #$1C ; CPU:$9462 PRG:1462 A9 1C + jsr SpritePosition ; CPU:$9464 PRG:1464 20 5E 98 + lda #$10 ; CPU:$9467 PRG:1467 A9 10 + jsr DelayFrames ; CPU:$9469 PRG:1469 20 F5 F7 + lda #$25 ; CPU:$946C PRG:146C A9 25 + ldy #$01 ; CPU:$946E PRG:146E A0 01 + jsr AudioChannelLoop ; CPU:$9470 PRG:1470 20 63 BE + lda #$06 ; CPU:$9473 PRG:1473 A9 06 + sta Zp0F ; CPU:$9475 PRG:1475 85 0F +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_OnNonzero2: + lda #$73 ; CPU:$9477 PRG:1477 A9 73 + sta $03C2 ; CPU:$9479 PRG:1479 8D C2 03 + sta $03C3 ; CPU:$947C PRG:147C 8D C3 03 + sta $03C4 ; CPU:$947F PRG:147F 8D C4 03 + lda #$03 ; CPU:$9482 PRG:1482 A9 03 + sta $03C1 ; CPU:$9484 PRG:1484 8D C1 03 + lda #$FC ; CPU:$9487 PRG:1487 A9 FC + sta $03BF ; CPU:$9489 PRG:1489 8D BF 03 + lda #$20 ; CPU:$948C PRG:148C A9 20 + sta $03C0 ; CPU:$948E PRG:148E 8D C0 03 + lda #$80 ; CPU:$9491 PRG:1491 A9 80 + sta $03BE ; CPU:$9493 PRG:1493 8D BE 03 + lda #$10 ; CPU:$9496 PRG:1496 A9 10 + jsr DelayFrames ; CPU:$9498 PRG:1498 20 F5 F7 + jsr Sub_94BE ; CPU:$949B PRG:149B 20 BE 94 + dec Zp0F ; CPU:$949E PRG:149E C6 0F + bne EventTaskB_OnNonzero2 ; CPU:$94A0 PRG:14A0 D0 D5 + jsr Sub_9910 ; CPU:$94A2 PRG:14A2 20 10 99 + lda $0391 ; CPU:$94A5 PRG:14A5 AD 91 03 + bne EventTaskB_Loop16 ; CPU:$94A8 PRG:14A8 D0 08 + lda $0392 ; CPU:$94AA PRG:14AA AD 92 03 + bne EventTaskB_Loop16 ; CPU:$94AD PRG:14AD D0 03 + jmp SpriteDraw ; CPU:$94AF PRG:14AF 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop16: + jsr Sub_83C6 ; CPU:$94B2 PRG:14B2 20 C6 83 + jsr Sub_94E3 ; CPU:$94B5 PRG:14B5 20 E3 94 + lda #$01 ; CPU:$94B8 PRG:14B8 A9 01 + jsr TaskSlotStart ; CPU:$94BA PRG:14BA 20 A0 F7 + rts ; CPU:$94BD PRG:14BD 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_94BE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_94BE: + lda #$03 ; CPU:$94BE PRG:14BE A9 03 + sta $03C2 ; CPU:$94C0 PRG:14C0 8D C2 03 + sta $03C3 ; CPU:$94C3 PRG:14C3 8D C3 03 + sta $03C4 ; CPU:$94C6 PRG:14C6 8D C4 03 + lda #$03 ; CPU:$94C9 PRG:14C9 A9 03 + sta $03C1 ; CPU:$94CB PRG:14CB 8D C1 03 + lda #$FC ; CPU:$94CE PRG:14CE A9 FC + sta $03BF ; CPU:$94D0 PRG:14D0 8D BF 03 + lda #$20 ; CPU:$94D3 PRG:14D3 A9 20 + sta $03C0 ; CPU:$94D5 PRG:14D5 8D C0 03 + lda #$80 ; CPU:$94D8 PRG:14D8 A9 80 + sta $03BE ; CPU:$94DA PRG:14DA 8D BE 03 + lda #$10 ; CPU:$94DD PRG:14DD A9 10 + jsr DelayFrames ; CPU:$94DF PRG:14DF 20 F5 F7 + rts ; CPU:$94E2 PRG:14E2 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_94E3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_94E3: + lda #$80 ; CPU:$94E3 PRG:14E3 A9 80 + jsr DelayFrames ; CPU:$94E5 PRG:14E5 20 F5 F7 + lda Zp0E,x ; CPU:$94E8 PRG:14E8 B5 0E + ldy #$0A ; CPU:$94EA PRG:14EA A0 0A + jsr EventState ; CPU:$94EC PRG:14EC 20 70 A8 + lda #$01 ; CPU:$94EF PRG:14EF A9 01 + jsr TaskSlotClear ; CPU:$94F1 PRG:14F1 20 CA F7 + lda #$02 ; CPU:$94F4 PRG:14F4 A9 02 + jsr TaskSlotClear ; CPU:$94F6 PRG:14F6 20 CA F7 + lda #$03 ; CPU:$94F9 PRG:14F9 A9 03 + jsr TaskSlotClear ; CPU:$94FB PRG:14FB 20 CA F7 + rts ; CPU:$94FE PRG:14FE 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_94FF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_94FF: + lda #$0B ; CPU:$94FF PRG:14FF A9 0B + sta Zp0E,x ; CPU:$9501 PRG:1501 95 0E + lda Zp07,x ; CPU:$9503 PRG:1503 B5 07 + beq EventTaskB_Loop19 ; CPU:$9505 PRG:1505 F0 19 + cmp #$01 ; CPU:$9507 PRG:1507 C9 01 + bne EventTaskB_Loop17 ; CPU:$9509 PRG:1509 D0 03 + jmp Sub_88A8 ; CPU:$950B PRG:150B 4C A8 88 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop17: + cmp #$03 ; CPU:$950E PRG:150E C9 03 + bne EventTaskB_Loop18 ; CPU:$9510 PRG:1510 D0 03 + jmp Sub_8868 ; CPU:$9512 PRG:1512 4C 68 88 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop18: + cmp #$05 ; CPU:$9515 PRG:1515 C9 05 + bne EventTaskB_Loop19 ; CPU:$9517 PRG:1517 D0 07 + lda Zp0B,x ; CPU:$9519 PRG:1519 B5 0B + pha ; CPU:$951B PRG:151B 48 + lda Zp0A,x ; CPU:$951C PRG:151C B5 0A + pha ; CPU:$951E PRG:151E 48 + rts ; CPU:$951F PRG:151F 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop19: + lda Zp06,x ; CPU:$9520 PRG:1520 B5 06 + and #$02 ; CPU:$9522 PRG:1522 29 02 + beq EventTaskB_Loop20 ; CPU:$9524 PRG:1524 F0 03 + jmp Sub_9D7B ; CPU:$9526 PRG:1526 4C 7B 9D +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop20: + lda #$08 ; CPU:$9529 PRG:1529 A9 08 + sta $040E ; CPU:$952B PRG:152B 8D 0E 04 + lda $0308 ; CPU:$952E PRG:152E AD 08 03 + beq EventTaskB_Loop21 ; CPU:$9531 PRG:1531 F0 08 + lda $0392 ; CPU:$9533 PRG:1533 AD 92 03 + beq EventTaskB_Loop21 ; CPU:$9536 PRG:1536 F0 03 + jmp SpriteSetup_Loop5 ; CPU:$9538 PRG:1538 4C 43 84 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop21: + ldy $0184 ; CPU:$953B PRG:153B AC 84 01 + lda $046D,y ; CPU:$953E PRG:153E B9 6D 04 + lsr a ; CPU:$9541 PRG:1541 4A + lsr a ; CPU:$9542 PRG:1542 4A + lsr a ; CPU:$9543 PRG:1543 4A + sta Zp10 ; CPU:$9544 PRG:1544 85 10 + lda $0184 ; CPU:$9546 PRG:1546 AD 84 01 + bne EventTaskB_Loop22 ; CPU:$9549 PRG:1549 D0 0A + lda $0301 ; CPU:$954B PRG:154B AD 01 03 + and #$03 ; CPU:$954E PRG:154E 29 03 + sta Zp17 ; CPU:$9550 PRG:1550 85 17 + jmp EventTaskB_Loop23 ; CPU:$9552 PRG:1552 4C 63 95 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop22: + lda $0392 ; CPU:$9555 PRG:1555 AD 92 03 + and #$7F ; CPU:$9558 PRG:1558 29 7F + sta Zp17 ; CPU:$955A PRG:155A 85 17 + lda $0308 ; CPU:$955C PRG:155C AD 08 03 + bne EventTaskB_Loop23 ; CPU:$955F PRG:155F D0 02 + inc Zp17 ; CPU:$9561 PRG:1561 E6 17 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop23: + lda Zp17 ; CPU:$9563 PRG:1563 A5 17 + and #$7F ; CPU:$9565 PRG:1565 29 7F + asl a ; CPU:$9567 PRG:1567 0A + asl a ; CPU:$9568 PRG:1568 0A + asl a ; CPU:$9569 PRG:1569 0A + asl a ; CPU:$956A PRG:156A 0A + clc ; CPU:$956B PRG:156B 18 + adc Zp10 ; CPU:$956C PRG:156C 65 10 + tay ; CPU:$956E PRG:156E A8 + lda $964C,y ; CPU:$956F PRG:156F B9 4C 96 + ldy $0184 ; CPU:$9572 PRG:1572 AC 84 01 + sta $017B,y ; CPU:$9575 PRG:1575 99 7B 01 + lda GameMode ; CPU:$9578 PRG:1578 A5 8C + cmp #$01 ; CPU:$957A PRG:157A C9 01 + beq EventTaskB_Loop27 ; CPU:$957C PRG:157C F0 3E + cmp #$02 ; CPU:$957E PRG:157E C9 02 + bcc EventTaskB_Loop24 ; CPU:$9580 PRG:1580 90 03 + jmp Sub_9631 ; CPU:$9582 PRG:1582 4C 31 96 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop24 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop24: + ldy $0184 ; CPU:$9585 PRG:1585 AC 84 01 + lda $017B,y ; CPU:$9588 PRG:1588 B9 7B 01 + tay ; CPU:$958B PRG:158B A8 + lda $A690,y ; CPU:$958C PRG:158C B9 90 A6 + sta Zp05,x ; CPU:$958F PRG:158F 95 05 + ldy $0184 ; CPU:$9591 PRG:1591 AC 84 01 + lda $046D,y ; CPU:$9594 PRG:1594 B9 6D 04 + and #$02 ; CPU:$9597 PRG:1597 29 02 + bne EventTaskB_Loop25 ; CPU:$9599 PRG:1599 D0 03 + jmp Sub_95B2 ; CPU:$959B PRG:159B 4C B2 95 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop25 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop25: + lda $0303 ; CPU:$959E PRG:159E AD 03 03 + and #$07 ; CPU:$95A1 PRG:15A1 29 07 + tay ; CPU:$95A3 PRG:15A3 A8 + lda $0300,y ; CPU:$95A4 PRG:15A4 B9 00 03 + and #$01 ; CPU:$95A7 PRG:15A7 29 01 + sta Zp10 ; CPU:$95A9 PRG:15A9 85 10 + lda Zp05,x ; CPU:$95AB PRG:15AB B5 05 + clc ; CPU:$95AD PRG:15AD 18 + adc Zp10 ; CPU:$95AE PRG:15AE 65 10 + sta Zp05,x ; CPU:$95B0 PRG:15B0 95 05 +; ----------------------------------------------------------------------------- +; Routine: Sub_95B2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_95B2: + lda Zp09,x ; CPU:$95B2 PRG:15B2 B5 09 + beq EventTaskB_Loop26 ; CPU:$95B4 PRG:15B4 F0 03 + jmp Sub_87EA ; CPU:$95B6 PRG:15B6 4C EA 87 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop26 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop26: + jmp Sub_88F9 ; CPU:$95B9 PRG:15B9 4C F9 88 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop27 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop27: + lda $0184 ; CPU:$95BC PRG:15BC AD 84 01 + beq EventTaskB_Loop28 ; CPU:$95BF PRG:15BF F0 20 + ldy $0184 ; CPU:$95C1 PRG:15C1 AC 84 01 + lda $046D,y ; CPU:$95C4 PRG:15C4 B9 6D 04 + sta Zp10 ; CPU:$95C7 PRG:15C7 85 10 + ldy #$09 ; CPU:$95C9 PRG:15C9 A0 09 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_OnNonzero3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_OnNonzero3: + lda $95D7,y ; CPU:$95CB PRG:15CB B9 D7 95 + cmp Zp10 ; CPU:$95CE PRG:15CE C5 10 + beq EventTaskB_Loop29 ; CPU:$95D0 PRG:15D0 F0 2F + dey ; CPU:$95D2 PRG:15D2 88 + bne EventTaskB_OnNonzero3 ; CPU:$95D3 PRG:15D3 D0 F6 + jmp EventTaskB_Loop24 ; CPU:$95D5 PRG:15D5 4C 85 95 +; ---- data $95D8-$95E0 (9 bytes) ---- + .byte $05, $0F, $19, $23, $2D, $37, $41, $4B, $55 ; CPU:$95D8 PRG:15D8 05 0F 19 23 2D 37 41 4B 55 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop28 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop28: + ldy $0184 ; CPU:$95E1 PRG:15E1 AC 84 01 + lda $046D,y ; CPU:$95E4 PRG:15E4 B9 6D 04 + sta Zp10 ; CPU:$95E7 PRG:15E7 85 10 + ldy #$09 ; CPU:$95E9 PRG:15E9 A0 09 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_OnNonzero4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_OnNonzero4: + lda $95D7,y ; CPU:$95EB PRG:15EB B9 D7 95 + cmp Zp10 ; CPU:$95EE PRG:15EE C5 10 + beq EventTaskB_Loop29 ; CPU:$95F0 PRG:15F0 F0 0F + dey ; CPU:$95F2 PRG:15F2 88 + bne EventTaskB_OnNonzero4 ; CPU:$95F3 PRG:15F3 D0 F6 + jmp EventTaskB_Loop24 ; CPU:$95F5 PRG:15F5 4C 85 95 +; ---- data $95F8-$9600 (9 bytes) ---- + .byte $05, $0E, $18, $22, $2E, $37, $41, $4B, $55 ; CPU:$95F8 PRG:15F8 05 0E 18 22 2E 37 41 4B 55 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop29 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop29: + ldy $0184 ; CPU:$9601 PRG:1601 AC 84 01 + lda $017B,y ; CPU:$9604 PRG:1604 B9 7B 01 + clc ; CPU:$9607 PRG:1607 18 + adc #$02 ; CPU:$9608 PRG:1608 69 02 + sta $017B,y ; CPU:$960A PRG:160A 99 7B 01 + lda Zp09,x ; CPU:$960D PRG:160D B5 09 + beq EventTaskB_Loop30 ; CPU:$960F PRG:160F F0 10 + lda #$01 ; CPU:$9611 PRG:1611 A9 01 + ldy $0183 ; CPU:$9613 PRG:1613 AC 83 01 + sta $0409,y ; CPU:$9616 PRG:1616 99 09 04 + lda #$06 ; CPU:$9619 PRG:1619 A9 06 + sta $040E ; CPU:$961B PRG:161B 8D 0E 04 + jmp Sub_8ABC ; CPU:$961E PRG:161E 4C BC 8A +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop30 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop30: + lda #$01 ; CPU:$9621 PRG:1621 A9 01 + ldy $0183 ; CPU:$9623 PRG:1623 AC 83 01 + sta $0409,y ; CPU:$9626 PRG:1626 99 09 04 + lda #$06 ; CPU:$9629 PRG:1629 A9 06 + sta $040E ; CPU:$962B PRG:162B 8D 0E 04 + jmp Sub_8908 ; CPU:$962E PRG:162E 4C 08 89 +; ----------------------------------------------------------------------------- +; Routine: Sub_9631 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9631: + lda $0302 ; CPU:$9631 PRG:1631 AD 02 03 + and #$01 ; CPU:$9634 PRG:1634 29 01 + sta Zp10 ; CPU:$9636 PRG:1636 85 10 + lda #$19 ; CPU:$9638 PRG:1638 A9 19 + clc ; CPU:$963A PRG:163A 18 + adc Zp10 ; CPU:$963B PRG:163B 65 10 + sta Zp10 ; CPU:$963D PRG:163D 85 10 + lda $046D ; CPU:$963F PRG:163F AD 6D 04 + cmp Zp10 ; CPU:$9642 PRG:1642 C5 10 + beq EventTaskB_Loop31 ; CPU:$9644 PRG:1644 F0 03 + jmp EventTaskB_Loop24 ; CPU:$9646 PRG:1646 4C 85 95 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop31 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop31: + jmp SpriteSetup_Loop24 ; CPU:$9649 PRG:1649 4C 47 85 +; ---- data $964C-$96CB (128 bytes) ---- +; referenced by `lda $964C,y` at $956F (operand $964C falls inside this region) + .byte $0D, $0D, $0D, $10, $10, $0D, $0D, $10, $0D, $10, $0D, $10, $10, $10, $10, $10 ; CPU:$964C PRG:164C 0D 0D 0D 10 10 0D 0D 10 0D 10 0D 10 10 10 10 10 + .byte $0D, $0D, $0D, $0D, $0A, $0A, $0A, $0A, $0A, $0A, $0A, $0A, $0A, $0A, $0A, $0A ; CPU:$965C PRG:165C 0D 0D 0D 0D 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A + .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0A, $0A, $0A, $0A, $0A ; CPU:$966C PRG:166C 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0A 0A 0A 0A 0A + .byte $10, $0D, $10, $0D, $10, $0D, $10, $0D, $10, $0D, $10, $0D, $0D, $0D, $0D, $0D ; CPU:$967C PRG:167C 10 0D 10 0D 10 0D 10 0D 10 0D 10 0D 0D 0D 0D 0D + .byte $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10 ; CPU:$968C PRG:168C 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 + .byte $18, $18, $18, $18, $10, $10, $10, $10, $10, $10, $10, $0D, $0D, $0D, $0D, $0D ; CPU:$969C PRG:169C 18 18 18 18 10 10 10 10 10 10 10 0D 0D 0D 0D 0D + .byte $10, $10, $10, $18, $18, $18, $18, $18, $18, $18, $18, $15, $15, $15, $15, $15 ; CPU:$96AC PRG:16AC 10 10 10 18 18 18 18 18 18 18 18 15 15 15 15 15 + .byte $10, $14, $10, $14, $10, $14, $10, $10, $10, $10, $10, $0A, $0A, $0A, $0A, $0A ; CPU:$96BC PRG:16BC 10 14 10 14 10 14 10 10 10 10 10 0A 0A 0A 0A 0A +; ----------------------------------------------------------------------------- +; Routine: Sub_96CC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_96CC: + asl a ; CPU:$96CC PRG:16CC 0A + asl a ; CPU:$96CD PRG:16CD 0A + tay ; CPU:$96CE PRG:16CE A8 + lda $96E5,y ; CPU:$96CF PRG:16CF B9 E5 96 + ora #$30 ; CPU:$96D2 PRG:16D2 09 30 + sta PpuCtrlMirror ; CPU:$96D4 PRG:16D4 85 18 + lda $96E7,y ; CPU:$96D6 PRG:16D6 B9 E7 96 + sta Zp10 ; CPU:$96D9 PRG:16D9 85 10 + lda $96E8,y ; CPU:$96DB PRG:16DB B9 E8 96 + tay ; CPU:$96DE PRG:16DE A8 + lda Zp10 ; CPU:$96DF PRG:16DF A5 10 + jsr PaletteLoad ; CPU:$96E1 PRG:16E1 20 9D FA + rts ; CPU:$96E4 PRG:16E4 60 +; ---- data $96E5-$9719 (53 bytes) ---- +; referenced by `lda $96E5,y` at $96CF (operand $96E5 falls inside this region) +; referenced by `lda $96E7,y` at $96D6 (operand $96E7 falls inside this region) +; referenced by `lda $96E8,y` at $96DB (operand $96E8 falls inside this region) + .byte $11, $03, $4B, $F3, $11, $03, $6A, $F3, $11, $03, $86, $F3, $11, $03, $A3, $F3 ; CPU:$96E5 PRG:16E5 11 03 4B F3 11 03 6A F3 11 03 86 F3 11 03 A3 F3 + .byte $11, $03, $C0, $F3, $11, $03, $E5, $F3, $11, $03, $15, $F4, $11, $03, $28, $F4 ; CPU:$96F5 PRG:16F5 11 03 C0 F3 11 03 E5 F3 11 03 15 F4 11 03 28 F4 + .byte $11, $03, $43, $F4, $11, $03, $87, $F4, $11, $03, $F3, $F4, $11, $03, $73, $F5 ; CPU:$9705 PRG:1705 11 03 43 F4 11 03 87 F4 11 03 F3 F4 11 03 73 F5 + .byte $11, $03, $86, $F4, $00 ; CPU:$9715 PRG:1715 11 03 86 F4 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_971A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_971A: + lda GameMode ; CPU:$971A PRG:171A A5 8C + cmp #$02 ; CPU:$971C PRG:171C C9 02 + bcc EventTaskB_Loop32 ; CPU:$971E PRG:171E 90 01 + rts ; CPU:$9720 PRG:1720 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop32 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop32: + ldy $0184 ; CPU:$9721 PRG:1721 AC 84 01 + lda $030A,y ; CPU:$9724 PRG:1724 B9 0A 03 + beq EventTaskB_OnCarrySet ; CPU:$9727 PRG:1727 F0 48 + lda Zp06,x ; CPU:$9729 PRG:1729 B5 06 + and #$80 ; CPU:$972B PRG:172B 29 80 + bne EventTaskB_Loop34 ; CPU:$972D PRG:172D D0 43 + lda Zp06,x ; CPU:$972F PRG:172F B5 06 + ora #$80 ; CPU:$9731 PRG:1731 09 80 + sta Zp06,x ; CPU:$9733 PRG:1733 95 06 + lda $0184 ; CPU:$9735 PRG:1735 AD 84 01 + bne EventTaskB_Loop33 ; CPU:$9738 PRG:1738 D0 1D + lda $0390 ; CPU:$973A PRG:173A AD 90 03 + and #$7F ; CPU:$973D PRG:173D 29 7F + sta $0390 ; CPU:$973F PRG:173F 8D 90 03 + lda #$25 ; CPU:$9742 PRG:1742 A9 25 + ldy #$01 ; CPU:$9744 PRG:1744 A0 01 + jsr AudioChannelLoop ; CPU:$9746 PRG:1746 20 63 BE + jsr Sub_9810 ; CPU:$9749 PRG:1749 20 10 98 + lda $0473 ; CPU:$974C PRG:174C AD 73 04 + ora #$01 ; CPU:$974F PRG:174F 09 01 + sta $0473 ; CPU:$9751 PRG:1751 8D 73 04 + jmp EventTaskB_OnCarrySet ; CPU:$9754 PRG:1754 4C 71 97 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop33 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop33: + lda $0390 ; CPU:$9757 PRG:1757 AD 90 03 + and #$BF ; CPU:$975A PRG:175A 29 BF + sta $0390 ; CPU:$975C PRG:175C 8D 90 03 + lda #$25 ; CPU:$975F PRG:175F A9 25 + ldy #$01 ; CPU:$9761 PRG:1761 A0 01 + jsr AudioChannelLoop ; CPU:$9763 PRG:1763 20 63 BE + jsr Sub_9810 ; CPU:$9766 PRG:1766 20 10 98 + lda $0473 ; CPU:$9769 PRG:1769 AD 73 04 + ora #$02 ; CPU:$976C PRG:176C 09 02 + sta $0473 ; CPU:$976E PRG:176E 8D 73 04 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_OnCarrySet +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_OnCarrySet: + rts ; CPU:$9771 PRG:1771 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop34 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop34: + ldy $0183 ; CPU:$9772 PRG:1772 AC 83 01 + lda $0404,y ; CPU:$9775 PRG:1775 B9 04 04 + sec ; CPU:$9778 PRG:1778 38 + sbc #$03 ; CPU:$9779 PRG:1779 E9 03 + sta $0404,y ; CPU:$977B PRG:177B 99 04 04 + lda $0184 ; CPU:$977E PRG:177E AD 84 01 + beq EventTaskB_Loop35 ; CPU:$9781 PRG:1781 F0 20 + ldy $0183 ; CPU:$9783 PRG:1783 AC 83 01 + lda Zp06,x ; CPU:$9786 PRG:1786 B5 06 + and #$02 ; CPU:$9788 PRG:1788 29 02 + bne EventTaskB_Loop36 ; CPU:$978A PRG:178A D0 31 + ldy $0184 ; CPU:$978C PRG:178C AC 84 01 + lda #$01 ; CPU:$978F PRG:178F A9 01 + sta $0186,y ; CPU:$9791 PRG:1791 99 86 01 + ldy $0183 ; CPU:$9794 PRG:1794 AC 83 01 + lda $0405,y ; CPU:$9797 PRG:1797 B9 05 04 + sec ; CPU:$979A PRG:179A 38 + sbc #$01 ; CPU:$979B PRG:179B E9 01 + sta $0405,y ; CPU:$979D PRG:179D 99 05 04 + jmp EventTaskB_Loop36 ; CPU:$97A0 PRG:17A0 4C BD 97 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop35 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop35: + ldy $0183 ; CPU:$97A3 PRG:17A3 AC 83 01 + lda Zp06,x ; CPU:$97A6 PRG:17A6 B5 06 + and #$01 ; CPU:$97A8 PRG:17A8 29 01 + bne EventTaskB_Loop36 ; CPU:$97AA PRG:17AA D0 11 + lda $0405,y ; CPU:$97AC PRG:17AC B9 05 04 + clc ; CPU:$97AF PRG:17AF 18 + adc #$01 ; CPU:$97B0 PRG:17B0 69 01 + sta $0405,y ; CPU:$97B2 PRG:17B2 99 05 04 + ldy $0184 ; CPU:$97B5 PRG:17B5 AC 84 01 + lda #$01 ; CPU:$97B8 PRG:17B8 A9 01 + sta $0186,y ; CPU:$97BA PRG:17BA 99 86 01 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop36 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop36: + ldy $0183 ; CPU:$97BD PRG:17BD AC 83 01 + lda $0404,y ; CPU:$97C0 PRG:17C0 B9 04 04 + cmp #$A0 ; CPU:$97C3 PRG:17C3 C9 A0 + bcs EventTaskB_OnCarrySet ; CPU:$97C5 PRG:17C5 B0 AA + lda #$A0 ; CPU:$97C7 PRG:17C7 A9 A0 + sta $0404,y ; CPU:$97C9 PRG:17C9 99 04 04 + ldy $0184 ; CPU:$97CC PRG:17CC AC 84 01 + lda #$00 ; CPU:$97CF PRG:17CF A9 00 + sta $017B,y ; CPU:$97D1 PRG:17D1 99 7B 01 + ldy $0183 ; CPU:$97D4 PRG:17D4 AC 83 01 + lda $040A,y ; CPU:$97D7 PRG:17D7 B9 0A 04 + and #$7F ; CPU:$97DA PRG:17DA 29 7F + sta $040A,y ; CPU:$97DC PRG:17DC 99 0A 04 + lda $0184 ; CPU:$97DF PRG:17DF AD 84 01 + bne EventTaskB_Loop37 ; CPU:$97E2 PRG:17E2 D0 06 + lda #$01 ; CPU:$97E4 PRG:17E4 A9 01 + sta Zp10 ; CPU:$97E6 PRG:17E6 85 10 + bne EventTaskB_Loop38 ; CPU:$97E8 PRG:17E8 D0 04 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop37 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop37: + lda #$02 ; CPU:$97EA PRG:17EA A9 02 + sta Zp10 ; CPU:$97EC PRG:17EC 85 10 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop38 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop38: + lda Zp51 ; CPU:$97EE PRG:17EE A5 51 + ora Zp10 ; CPU:$97F0 PRG:17F0 05 10 + sta Zp51 ; CPU:$97F2 PRG:17F2 85 51 + lda Zp61 ; CPU:$97F4 PRG:17F4 A5 61 + ora Zp10 ; CPU:$97F6 PRG:17F6 05 10 + sta Zp61 ; CPU:$97F8 PRG:17F8 85 61 + lda Zp06,x ; CPU:$97FA PRG:17FA B5 06 + and #$03 ; CPU:$97FC PRG:17FC 29 03 + cmp #$01 ; CPU:$97FE PRG:17FE C9 01 + beq EventTaskB_Loop39 ; CPU:$9800 PRG:1800 F0 01 + rts ; CPU:$9802 PRG:1802 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop39 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop39: + lda Zp51 ; CPU:$9803 PRG:1803 A5 51 + ora #$08 ; CPU:$9805 PRG:1805 09 08 + sta Zp51 ; CPU:$9807 PRG:1807 85 51 + lda Zp61 ; CPU:$9809 PRG:1809 A5 61 + ora #$08 ; CPU:$980B PRG:180B 09 08 + sta Zp61 ; CPU:$980D PRG:180D 85 61 + rts ; CPU:$980F PRG:180F 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9810 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9810: + lda $0384 ; CPU:$9810 PRG:1810 AD 84 03 + sta $0471 ; CPU:$9813 PRG:1813 8D 71 04 + lda $0383 ; CPU:$9816 PRG:1816 AD 83 03 + sta $0472 ; CPU:$9819 PRG:1819 8D 72 04 + rts ; CPU:$981C PRG:181C 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_981D +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_981D: + lda Zp06,x ; CPU:$981D PRG:181D B5 06 + and #$03 ; CPU:$981F PRG:181F 29 03 + cmp #$03 ; CPU:$9821 PRG:1821 C9 03 + beq EventTaskB_Loop40 ; CPU:$9823 PRG:1823 F0 38 + lda $0384 ; CPU:$9825 PRG:1825 AD 84 03 + cmp #$60 ; CPU:$9828 PRG:1828 C9 60 + bcc EventTaskB_Loop40 ; CPU:$982A PRG:182A 90 31 + lda #$60 ; CPU:$982C PRG:182C A9 60 + sta $0384 ; CPU:$982E PRG:182E 8D 84 03 + lda Zp51 ; CPU:$9831 PRG:1831 A5 51 + ora #$03 ; CPU:$9833 PRG:1833 09 03 + sta Zp51 ; CPU:$9835 PRG:1835 85 51 + lda Zp61 ; CPU:$9837 PRG:1837 A5 61 + ora #$03 ; CPU:$9839 PRG:1839 09 03 + sta Zp61 ; CPU:$983B PRG:183B 85 61 + lda $0390 ; CPU:$983D PRG:183D AD 90 03 + ora #$20 ; CPU:$9840 PRG:1840 09 20 + and #$3F ; CPU:$9842 PRG:1842 29 3F + sta $0390 ; CPU:$9844 PRG:1844 8D 90 03 + lda GameMode ; CPU:$9847 PRG:1847 A5 8C + cmp #$02 ; CPU:$9849 PRG:1849 C9 02 + bcc EventTaskB_Loop40 ; CPU:$984B PRG:184B 90 10 + lda #$00 ; CPU:$984D PRG:184D A9 00 + sta $0384 ; CPU:$984F PRG:184F 8D 84 03 + lda #$25 ; CPU:$9852 PRG:1852 A9 25 + ldy #$01 ; CPU:$9854 PRG:1854 A0 01 + jsr AudioChannelLoop ; CPU:$9856 PRG:1856 20 63 BE + lda #$10 ; CPU:$9859 PRG:1859 A9 10 + sta SlotState,x ; CPU:$985B PRG:185B 95 0C +; ----------------------------------------------------------------------------- +; Routine: EventTaskB_Loop40 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskB_Loop40: + rts ; CPU:$985D PRG:185D 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition: + tay ; CPU:$985E PRG:185E A8 + lda $0308 ; CPU:$985F PRG:185F AD 08 03 + beq SpritePosition_Loop ; CPU:$9862 PRG:1862 F0 01 + rts ; CPU:$9864 PRG:1864 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop: + lda $0184 ; CPU:$9865 PRG:1865 AD 84 01 + bne SpritePosition_Loop2 ; CPU:$9868 PRG:1868 D0 01 + rts ; CPU:$986A PRG:186A 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop2: + lda $0392 ; CPU:$986B PRG:186B AD 92 03 + and #$7F ; CPU:$986E PRG:186E 29 7F + cmp #$05 ; CPU:$9870 PRG:1870 C9 05 + beq SpritePosition_Loop3 ; CPU:$9872 PRG:1872 F0 15 + and #$01 ; CPU:$9874 PRG:1874 29 01 + beq SpritePosition_Loop3 ; CPU:$9876 PRG:1876 F0 11 + lda #$0B ; CPU:$9878 PRG:1878 A9 0B + sta $0478 ; CPU:$987A PRG:187A 8D 78 04 + lda #$08 ; CPU:$987D PRG:187D A9 08 + sta $0183 ; CPU:$987F PRG:187F 8D 83 01 + lda $98BA,y ; CPU:$9882 PRG:1882 B9 BA 98 + jsr Sub_A789 ; CPU:$9885 PRG:1885 20 89 A7 + rts ; CPU:$9888 PRG:1888 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop3: + lda #$0B ; CPU:$9889 PRG:1889 A9 0B + sta $0478 ; CPU:$988B PRG:188B 8D 78 04 + lda #$08 ; CPU:$988E PRG:188E A9 08 + sta $0183 ; CPU:$9890 PRG:1890 8D 83 01 + lda $989A,y ; CPU:$9893 PRG:1893 B9 9A 98 + jsr Sub_A789 ; CPU:$9896 PRG:1896 20 89 A7 + rts ; CPU:$9899 PRG:1899 60 +; ---- data $989A-$98DA (65 bytes) ---- +; referenced by `lda $98BA,y` at $9882 (operand $98BA falls inside this region) +; referenced by `lda $989A,y` at $9893 (operand $989A falls inside this region) + .byte $77, $78, $79, $7A, $7B, $7C, $7D, $7E, $7F, $80, $81, $82, $83, $84, $85, $86 ; CPU:$989A PRG:189A 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 + .byte $87, $88, $89, $8A, $8B, $8C, $8D, $3C, $8E, $91, $92, $93, $94, $39, $59, $5A ; CPU:$98AA PRG:18AA 87 88 89 8A 8B 8C 8D 3C 8E 91 92 93 94 39 59 5A + .byte $95, $96, $97, $98, $99, $9A, $9B, $9C, $9D, $9E, $9F, $A0, $A1, $A2, $A3, $A4 ; CPU:$98BA PRG:18BA 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 + .byte $A5, $A6, $A7, $A8, $A9, $AA, $AB, $3C, $AC, $AF, $B0, $B1, $B2, $39, $59, $5A ; CPU:$98CA PRG:18CA A5 A6 A7 A8 A9 AA AB 3C AC AF B0 B1 B2 39 59 5A + .byte $60 ; CPU:$98DA PRG:18DA 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_98DB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_98DB: + lda Zp88 ; CPU:$98DB PRG:18DB A5 88 + clc ; CPU:$98DD PRG:18DD 18 + adc #$01 ; CPU:$98DE PRG:18DE 69 01 + sta Zp10 ; CPU:$98E0 PRG:18E0 85 10 + lda $0391 ; CPU:$98E2 PRG:18E2 AD 91 03 + beq SpritePosition_Loop4 ; CPU:$98E5 PRG:18E5 F0 17 + inc $0391 ; CPU:$98E7 PRG:18E7 EE 91 03 + lda GameMode ; CPU:$98EA PRG:18EA A5 8C + cmp #$02 ; CPU:$98EC PRG:18EC C9 02 + bcs SpritePosition_Loop4 ; CPU:$98EE PRG:18EE B0 0E + inc $0391 ; CPU:$98F0 PRG:18F0 EE 91 03 + lda $0391 ; CPU:$98F3 PRG:18F3 AD 91 03 + cmp $0392 ; CPU:$98F6 PRG:18F6 CD 92 03 + bne SpritePosition_Loop4 ; CPU:$98F9 PRG:18F9 D0 03 + inc $0391 ; CPU:$98FB PRG:18FB EE 91 03 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop4: + lda $0391 ; CPU:$98FE PRG:18FE AD 91 03 + cmp Zp10 ; CPU:$9901 PRG:1901 C5 10 + bcc SpritePosition_Loop5 ; CPU:$9903 PRG:1903 90 09 + lda #$00 ; CPU:$9905 PRG:1905 A9 00 + sta $0391 ; CPU:$9907 PRG:1907 8D 91 03 + rts ; CPU:$990A PRG:190A 60 +; ---- data $990B-$990D (3 bytes) ---- + .byte $8D, $91, $03 ; CPU:$990B PRG:190B 8D 91 03 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop5: + clc ; CPU:$990E PRG:190E 18 + rts ; CPU:$990F PRG:190F 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9910 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9910: + lda Zp88 ; CPU:$9910 PRG:1910 A5 88 + clc ; CPU:$9912 PRG:1912 18 + adc #$01 ; CPU:$9913 PRG:1913 69 01 + sta Zp10 ; CPU:$9915 PRG:1915 85 10 + lda $0392 ; CPU:$9917 PRG:1917 AD 92 03 + beq SpritePosition_Loop6 ; CPU:$991A PRG:191A F0 17 + inc $0392 ; CPU:$991C PRG:191C EE 92 03 + lda GameMode ; CPU:$991F PRG:191F A5 8C + cmp #$02 ; CPU:$9921 PRG:1921 C9 02 + bcs SpritePosition_Loop6 ; CPU:$9923 PRG:1923 B0 0E + inc $0392 ; CPU:$9925 PRG:1925 EE 92 03 + lda $0392 ; CPU:$9928 PRG:1928 AD 92 03 + cmp $0391 ; CPU:$992B PRG:192B CD 91 03 + bne SpritePosition_Loop6 ; CPU:$992E PRG:192E D0 03 + inc $0392 ; CPU:$9930 PRG:1930 EE 92 03 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop6: + lda $0392 ; CPU:$9933 PRG:1933 AD 92 03 + cmp Zp10 ; CPU:$9936 PRG:1936 C5 10 + bcc SpritePosition_Loop7 ; CPU:$9938 PRG:1938 90 05 + lda #$00 ; CPU:$993A PRG:193A A9 00 + sta $0392 ; CPU:$993C PRG:193C 8D 92 03 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop7: + clc ; CPU:$993F PRG:193F 18 + rts ; CPU:$9940 PRG:1940 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9941 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9941: + lda #$83 ; CPU:$9941 PRG:1941 A9 83 + sta Zp10 ; CPU:$9943 PRG:1943 85 10 + lda #$BD ; CPU:$9945 PRG:1945 A9 BD + sta Zp11 ; CPU:$9947 PRG:1947 85 11 + lda GameMode ; CPU:$9949 PRG:1949 A5 8C + cmp #$02 ; CPU:$994B PRG:194B C9 02 + bcc SpritePosition_Loop8 ; CPU:$994D PRG:194D 90 08 + lda #$A3 ; CPU:$994F PRG:194F A9 A3 + sta Zp10 ; CPU:$9951 PRG:1951 85 10 + lda #$BD ; CPU:$9953 PRG:1953 A9 BD + sta Zp11 ; CPU:$9955 PRG:1955 85 11 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop8: + ldy #$00 ; CPU:$9957 PRG:1957 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero: + lda (Zp10),y ; CPU:$9959 PRG:1959 B1 10 + sta $039C,y ; CPU:$995B PRG:195B 99 9C 03 + iny ; CPU:$995E PRG:195E C8 + cpy #$20 ; CPU:$995F PRG:195F C0 20 + bne SpritePosition_OnNonzero ; CPU:$9961 PRG:1961 D0 F6 + rts ; CPU:$9963 PRG:1963 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9964 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9964: + jsr Sub_9941 ; CPU:$9964 PRG:1964 20 41 99 + lda $0391 ; CPU:$9967 PRG:1967 AD 91 03 + jsr Sub_9C89 ; CPU:$996A PRG:196A 20 89 9C + ldy Zp0A ; CPU:$996D PRG:196D A4 0A + lda $A779,y ; CPU:$996F PRG:196F B9 79 A7 + sta $0421 ; CPU:$9972 PRG:1972 8D 21 04 + lda #$03 ; CPU:$9975 PRG:1975 A9 03 + sta $0420 ; CPU:$9977 PRG:1977 8D 20 04 + lda #$17 ; CPU:$997A PRG:197A A9 17 + sta $02F7 ; CPU:$997C PRG:197C 8D F7 02 + lda #$00 ; CPU:$997F PRG:197F A9 00 + sta $02F6 ; CPU:$9981 PRG:1981 8D F6 02 + lda #$0C ; CPU:$9984 PRG:1984 A9 0C + sta $02F5 ; CPU:$9986 PRG:1986 8D F5 02 + lda #$0F ; CPU:$9989 PRG:1989 A9 0F + sta $02F4 ; CPU:$998B PRG:198B 8D F4 02 + lda $0391 ; CPU:$998E PRG:198E AD 91 03 + clc ; CPU:$9991 PRG:1991 18 + adc #$01 ; CPU:$9992 PRG:1992 69 01 + sec ; CPU:$9994 PRG:1994 38 + sbc Zp83 ; CPU:$9995 PRG:1995 E5 83 + asl a ; CPU:$9997 PRG:1997 0A + asl a ; CPU:$9998 PRG:1998 0A + tay ; CPU:$9999 PRG:1999 A8 + lda $9AF0,y ; CPU:$999A PRG:199A B9 F0 9A + sta $03AD ; CPU:$999D PRG:199D 8D AD 03 + lda $9AF1,y ; CPU:$99A0 PRG:19A0 B9 F1 9A + sta $03AE ; CPU:$99A3 PRG:19A3 8D AE 03 + lda $9AF2,y ; CPU:$99A6 PRG:19A6 B9 F2 9A + sta $03AF ; CPU:$99A9 PRG:19A9 8D AF 03 + lda GameMode ; CPU:$99AC PRG:19AC A5 8C + cmp #$02 ; CPU:$99AE PRG:19AE C9 02 + bcc SpritePosition_Loop9 ; CPU:$99B0 PRG:19B0 90 05 + lda #$01 ; CPU:$99B2 PRG:19B2 A9 01 + sta Zp29 ; CPU:$99B4 PRG:19B4 85 29 + rts ; CPU:$99B6 PRG:19B6 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop9: + lda $0308 ; CPU:$99B7 PRG:19B7 AD 08 03 + beq SpritePosition_Loop10 ; CPU:$99BA PRG:19BA F0 08 + lda $0392 ; CPU:$99BC PRG:19BC AD 92 03 + and #$7F ; CPU:$99BF PRG:19BF 29 7F + jmp Sub_99CC ; CPU:$99C1 PRG:19C1 4C CC 99 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop10: + lda $0392 ; CPU:$99C4 PRG:19C4 AD 92 03 + and #$7F ; CPU:$99C7 PRG:19C7 29 7F + clc ; CPU:$99C9 PRG:19C9 18 + adc #$01 ; CPU:$99CA PRG:19CA 69 01 +; ----------------------------------------------------------------------------- +; Routine: Sub_99CC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_99CC: + jsr Sub_9C89 ; CPU:$99CC PRG:19CC 20 89 9C + ldy Zp0A ; CPU:$99CF PRG:19CF A4 0A + lda $A779,y ; CPU:$99D1 PRG:19D1 B9 79 A7 + sta $0432 ; CPU:$99D4 PRG:19D4 8D 32 04 + lda #$03 ; CPU:$99D7 PRG:19D7 A9 03 + sta $0431 ; CPU:$99D9 PRG:19D9 8D 31 04 + lda #$9F ; CPU:$99DC PRG:19DC A9 9F + sta $02FB ; CPU:$99DE PRG:19DE 8D FB 02 + lda #$03 ; CPU:$99E1 PRG:19E1 A9 03 + sta $02FA ; CPU:$99E3 PRG:19E3 8D FA 02 + lda #$0C ; CPU:$99E6 PRG:19E6 A9 0C + sta $02F9 ; CPU:$99E8 PRG:19E8 8D F9 02 + lda #$0F ; CPU:$99EB PRG:19EB A9 0F + sta $02F8 ; CPU:$99ED PRG:19ED 8D F8 02 + lda $0308 ; CPU:$99F0 PRG:19F0 AD 08 03 + beq SpritePosition_Loop11 ; CPU:$99F3 PRG:19F3 F0 23 + lda $0392 ; CPU:$99F5 PRG:19F5 AD 92 03 + clc ; CPU:$99F8 PRG:19F8 18 + adc #$01 ; CPU:$99F9 PRG:19F9 69 01 + sec ; CPU:$99FB PRG:19FB 38 + sbc Zp83 ; CPU:$99FC PRG:19FC E5 83 + asl a ; CPU:$99FE PRG:19FE 0A + asl a ; CPU:$99FF PRG:19FF 0A + tay ; CPU:$9A00 PRG:1A00 A8 + lda $9AF0,y ; CPU:$9A01 PRG:1A01 B9 F0 9A + sta $03B9 ; CPU:$9A04 PRG:1A04 8D B9 03 + lda $9AF1,y ; CPU:$9A07 PRG:1A07 B9 F1 9A + sta $03BA ; CPU:$9A0A PRG:1A0A 8D BA 03 + lda $9AF2,y ; CPU:$9A0D PRG:1A0D B9 F2 9A + sta $03BB ; CPU:$9A10 PRG:1A10 8D BB 03 + lda #$01 ; CPU:$9A13 PRG:1A13 A9 01 + sta Zp29 ; CPU:$9A15 PRG:1A15 85 29 + rts ; CPU:$9A17 PRG:1A17 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop11: + lda $0392 ; CPU:$9A18 PRG:1A18 AD 92 03 + and #$7F ; CPU:$9A1B PRG:1A1B 29 7F + clc ; CPU:$9A1D PRG:1A1D 18 + adc #$01 ; CPU:$9A1E PRG:1A1E 69 01 + sta Zp8D ; CPU:$9A20 PRG:1A20 85 8D + lda $0392 ; CPU:$9A22 PRG:1A22 AD 92 03 + and #$7F ; CPU:$9A25 PRG:1A25 29 7F + asl a ; CPU:$9A27 PRG:1A27 0A + asl a ; CPU:$9A28 PRG:1A28 0A + tay ; CPU:$9A29 PRG:1A29 A8 + lda $9B0C,y ; CPU:$9A2A PRG:1A2A B9 0C 9B + sta $03B9 ; CPU:$9A2D PRG:1A2D 8D B9 03 + lda $9B0D,y ; CPU:$9A30 PRG:1A30 B9 0D 9B + sta $03BA ; CPU:$9A33 PRG:1A33 8D BA 03 + lda $9B0E,y ; CPU:$9A36 PRG:1A36 B9 0E 9B + sta $03BB ; CPU:$9A39 PRG:1A39 8D BB 03 + lda #$01 ; CPU:$9A3C PRG:1A3C A9 01 + sta Zp29 ; CPU:$9A3E PRG:1A3E 85 29 + rts ; CPU:$9A40 PRG:1A40 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9A41 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9A41: + jsr Sub_9B23 ; CPU:$9A41 PRG:1A41 20 23 9B + lda #$17 ; CPU:$9A44 PRG:1A44 A9 17 + sta $02F7 ; CPU:$9A46 PRG:1A46 8D F7 02 + lda #$00 ; CPU:$9A49 PRG:1A49 A9 00 + sta $02F6 ; CPU:$9A4B PRG:1A4B 8D F6 02 + lda #$0C ; CPU:$9A4E PRG:1A4E A9 0C + sta $02F5 ; CPU:$9A50 PRG:1A50 8D F5 02 + lda #$0F ; CPU:$9A53 PRG:1A53 A9 0F + sta $02F4 ; CPU:$9A55 PRG:1A55 8D F4 02 + lda $0391 ; CPU:$9A58 PRG:1A58 AD 91 03 + clc ; CPU:$9A5B PRG:1A5B 18 + adc #$01 ; CPU:$9A5C PRG:1A5C 69 01 + sec ; CPU:$9A5E PRG:1A5E 38 + sbc Zp83 ; CPU:$9A5F PRG:1A5F E5 83 + asl a ; CPU:$9A61 PRG:1A61 0A + asl a ; CPU:$9A62 PRG:1A62 0A + tay ; CPU:$9A63 PRG:1A63 A8 + lda $9AF0,y ; CPU:$9A64 PRG:1A64 B9 F0 9A + sta $03AD ; CPU:$9A67 PRG:1A67 8D AD 03 + lda $9AF1,y ; CPU:$9A6A PRG:1A6A B9 F1 9A + sta $03AE ; CPU:$9A6D PRG:1A6D 8D AE 03 + lda $9AF2,y ; CPU:$9A70 PRG:1A70 B9 F2 9A + sta $03AF ; CPU:$9A73 PRG:1A73 8D AF 03 + lda #$01 ; CPU:$9A76 PRG:1A76 A9 01 + sta Zp29 ; CPU:$9A78 PRG:1A78 85 29 + lda #$01 ; CPU:$9A7A PRG:1A7A A9 01 + jsr DelayFrames ; CPU:$9A7C PRG:1A7C 20 F5 F7 + rts ; CPU:$9A7F PRG:1A7F 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9A80 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9A80: + jsr Sub_9BF5 ; CPU:$9A80 PRG:1A80 20 F5 9B + lda #$9F ; CPU:$9A83 PRG:1A83 A9 9F + sta $02FB ; CPU:$9A85 PRG:1A85 8D FB 02 + lda #$03 ; CPU:$9A88 PRG:1A88 A9 03 + sta $02FA ; CPU:$9A8A PRG:1A8A 8D FA 02 + lda #$0C ; CPU:$9A8D PRG:1A8D A9 0C + sta $02F9 ; CPU:$9A8F PRG:1A8F 8D F9 02 + lda #$0F ; CPU:$9A92 PRG:1A92 A9 0F + sta $02F8 ; CPU:$9A94 PRG:1A94 8D F8 02 + lda $0308 ; CPU:$9A97 PRG:1A97 AD 08 03 + beq SpritePosition_Loop12 ; CPU:$9A9A PRG:1A9A F0 2A + lda $0392 ; CPU:$9A9C PRG:1A9C AD 92 03 + and #$7F ; CPU:$9A9F PRG:1A9F 29 7F + clc ; CPU:$9AA1 PRG:1AA1 18 + adc #$01 ; CPU:$9AA2 PRG:1AA2 69 01 + sec ; CPU:$9AA4 PRG:1AA4 38 + sbc Zp83 ; CPU:$9AA5 PRG:1AA5 E5 83 + asl a ; CPU:$9AA7 PRG:1AA7 0A + asl a ; CPU:$9AA8 PRG:1AA8 0A + tay ; CPU:$9AA9 PRG:1AA9 A8 + lda $9AF0,y ; CPU:$9AAA PRG:1AAA B9 F0 9A + sta $03B9 ; CPU:$9AAD PRG:1AAD 8D B9 03 + lda $9AF1,y ; CPU:$9AB0 PRG:1AB0 B9 F1 9A + sta $03BA ; CPU:$9AB3 PRG:1AB3 8D BA 03 + lda $9AF2,y ; CPU:$9AB6 PRG:1AB6 B9 F2 9A + sta $03BB ; CPU:$9AB9 PRG:1AB9 8D BB 03 + lda #$01 ; CPU:$9ABC PRG:1ABC A9 01 + sta Zp29 ; CPU:$9ABE PRG:1ABE 85 29 + lda #$01 ; CPU:$9AC0 PRG:1AC0 A9 01 + jsr DelayFrames ; CPU:$9AC2 PRG:1AC2 20 F5 F7 + rts ; CPU:$9AC5 PRG:1AC5 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop12: + lda $0392 ; CPU:$9AC6 PRG:1AC6 AD 92 03 + and #$7F ; CPU:$9AC9 PRG:1AC9 29 7F + asl a ; CPU:$9ACB PRG:1ACB 0A + asl a ; CPU:$9ACC PRG:1ACC 0A + tay ; CPU:$9ACD PRG:1ACD A8 + lda $9B0C,y ; CPU:$9ACE PRG:1ACE B9 0C 9B + sta $03B9 ; CPU:$9AD1 PRG:1AD1 8D B9 03 + lda $9B0D,y ; CPU:$9AD4 PRG:1AD4 B9 0D 9B + sta $03BA ; CPU:$9AD7 PRG:1AD7 8D BA 03 + lda $9B0E,y ; CPU:$9ADA PRG:1ADA B9 0E 9B + sta $03BB ; CPU:$9ADD PRG:1ADD 8D BB 03 + lda #$19 ; CPU:$9AE0 PRG:1AE0 A9 19 + jsr SpritePosition ; CPU:$9AE2 PRG:1AE2 20 5E 98 + lda #$01 ; CPU:$9AE5 PRG:1AE5 A9 01 + sta Zp29 ; CPU:$9AE7 PRG:1AE7 85 29 + lda #$01 ; CPU:$9AE9 PRG:1AE9 A9 01 + jsr DelayFrames ; CPU:$9AEB PRG:1AEB 20 F5 F7 + rts ; CPU:$9AEE PRG:1AEE 60 +; ---- data $9AEF-$9B22 (52 bytes) ---- +; referenced by `lda $9AF0,y` at $999A (operand $9AF0 falls inside this region) +; referenced by `lda $9AF1,y` at $99A0 (operand $9AF1 falls inside this region) +; referenced by `lda $9AF2,y` at $99A6 (operand $9AF2 falls inside this region) +; referenced by `lda $9AF0,y` at $9A01 (operand $9AF0 falls inside this region) +; referenced by `lda $9AF1,y` at $9A07 (operand $9AF1 falls inside this region) +; referenced by `lda $9AF2,y` at $9A0D (operand $9AF2 falls inside this region) +; ... and 18 further references from decoded code + .byte $00, $0F, $36, $14, $00, $0F, $26, $30, $00, $0F, $26, $16, $00, $0F, $26, $21 ; CPU:$9AEF PRG:1AEF 00 0F 36 14 00 0F 26 30 00 0F 26 16 00 0F 26 21 + .byte $00, $0F, $26, $28, $00, $0F, $26, $1A, $00, $0F, $26, $25, $00, $0F, $26, $25 ; CPU:$9AFF PRG:1AFF 00 0F 26 28 00 0F 26 1A 00 0F 26 25 00 0F 26 25 + .byte $00, $0F, $17, $10, $00, $0F, $36, $2C, $00, $0F, $26, $28, $00, $0F, $36, $2A ; CPU:$9B0F PRG:1B0F 00 0F 17 10 00 0F 36 2C 00 0F 26 28 00 0F 36 2A + .byte $00, $0F, $17, $16 ; CPU:$9B1F PRG:1B1F 00 0F 17 16 +; ----------------------------------------------------------------------------- +; Routine: Sub_9B23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9B23: + txa ; CPU:$9B23 PRG:1B23 8A + pha ; CPU:$9B24 PRG:1B24 48 + lda $0391 ; CPU:$9B25 PRG:1B25 AD 91 03 + jsr Sub_9C89 ; CPU:$9B28 PRG:1B28 20 89 9C + ldy Zp0A ; CPU:$9B2B PRG:1B2B A4 0A + lda $A779,y ; CPU:$9B2D PRG:1B2D B9 79 A7 + sta $03C3 ; CPU:$9B30 PRG:1B30 8D C3 03 + lda #$03 ; CPU:$9B33 PRG:1B33 A9 03 + sta $03C2 ; CPU:$9B35 PRG:1B35 8D C2 03 + lda #$61 ; CPU:$9B38 PRG:1B38 A9 61 + sta $03BF ; CPU:$9B3A PRG:1B3A 8D BF 03 + lda #$20 ; CPU:$9B3D PRG:1B3D A9 20 + sta $03C0 ; CPU:$9B3F PRG:1B3F 8D C0 03 + lda #$0D ; CPU:$9B42 PRG:1B42 A9 0D + sta $03C1 ; CPU:$9B44 PRG:1B44 8D C1 03 + lda #$03 ; CPU:$9B47 PRG:1B47 A9 03 + sta $03C4 ; CPU:$9B49 PRG:1B49 8D C4 03 + lda $0391 ; CPU:$9B4C PRG:1B4C AD 91 03 + clc ; CPU:$9B4F PRG:1B4F 18 + adc #$01 ; CPU:$9B50 PRG:1B50 69 01 + sec ; CPU:$9B52 PRG:1B52 38 + sbc Zp83 ; CPU:$9B53 PRG:1B53 E5 83 + tay ; CPU:$9B55 PRG:1B55 A8 + lda #$00 ; CPU:$9B56 PRG:1B56 A9 00 + sta Zp08 ; CPU:$9B58 PRG:1B58 85 08 +; ----------------------------------------------------------------------------- +; Routine: Sub_9B5A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9B5A: + dey ; CPU:$9B5A PRG:1B5A 88 + cpy #$00 ; CPU:$9B5B PRG:1B5B C0 00 + beq SpritePosition_Loop13 ; CPU:$9B5D PRG:1B5D F0 0E + cpy #$FF ; CPU:$9B5F PRG:1B5F C0 FF + beq SpritePosition_Loop13 ; CPU:$9B61 PRG:1B61 F0 0A + lda Zp08 ; CPU:$9B63 PRG:1B63 A5 08 + clc ; CPU:$9B65 PRG:1B65 18 + adc #$0A ; CPU:$9B66 PRG:1B66 69 0A + sta Zp08 ; CPU:$9B68 PRG:1B68 85 08 + jmp Sub_9B5A ; CPU:$9B6A PRG:1B6A 4C 5A 9B +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop13: + lda $0391 ; CPU:$9B6D PRG:1B6D AD 91 03 + beq SpritePosition_Loop15 ; CPU:$9B70 PRG:1B70 F0 1C + ldy Zp08 ; CPU:$9B72 PRG:1B72 A4 08 + ldx #$00 ; CPU:$9B74 PRG:1B74 A2 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero2: + lda $04F4,y ; CPU:$9B76 PRG:1B76 B9 F4 04 + bne SpritePosition_Loop14 ; CPU:$9B79 PRG:1B79 D0 02 + lda #$03 ; CPU:$9B7B PRG:1B7B A9 03 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop14: + sta $03C5,x ; CPU:$9B7D PRG:1B7D 9D C5 03 + iny ; CPU:$9B80 PRG:1B80 C8 + inx ; CPU:$9B81 PRG:1B81 E8 + cpx #$0A ; CPU:$9B82 PRG:1B82 E0 0A + bne SpritePosition_OnNonzero2 ; CPU:$9B84 PRG:1B84 D0 F0 + pla ; CPU:$9B86 PRG:1B86 68 + tax ; CPU:$9B87 PRG:1B87 AA + lda #$80 ; CPU:$9B88 PRG:1B88 A9 80 + sta $03BE ; CPU:$9B8A PRG:1B8A 8D BE 03 + rts ; CPU:$9B8D PRG:1B8D 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop15: + ldy #$0A ; CPU:$9B8E PRG:1B8E A0 0A +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero3: + lda $9C7E,y ; CPU:$9B90 PRG:1B90 B9 7E 9C + sta $03C4,y ; CPU:$9B93 PRG:1B93 99 C4 03 + dey ; CPU:$9B96 PRG:1B96 88 + bne SpritePosition_OnNonzero3 ; CPU:$9B97 PRG:1B97 D0 F7 + pla ; CPU:$9B99 PRG:1B99 68 + tax ; CPU:$9B9A PRG:1B9A AA + lda #$80 ; CPU:$9B9B PRG:1B9B A9 80 + sta $03BE ; CPU:$9B9D PRG:1B9D 8D BE 03 + rts ; CPU:$9BA0 PRG:1BA0 60 +; ---- data $9BA1-$9BA4 (4 bytes) ---- + .byte $60, $68, $AA, $60 ; CPU:$9BA1 PRG:1BA1 60 68 AA 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnZero: + lda $0392 ; CPU:$9BA5 PRG:1BA5 AD 92 03 + and #$7F ; CPU:$9BA8 PRG:1BA8 29 7F + clc ; CPU:$9BAA PRG:1BAA 18 + adc #$01 ; CPU:$9BAB PRG:1BAB 69 01 + jsr Sub_9C89 ; CPU:$9BAD PRG:1BAD 20 89 9C + ldy Zp0A ; CPU:$9BB0 PRG:1BB0 A4 0A + lda $A779,y ; CPU:$9BB2 PRG:1BB2 B9 79 A7 + sta $03C3 ; CPU:$9BB5 PRG:1BB5 8D C3 03 + lda #$03 ; CPU:$9BB8 PRG:1BB8 A9 03 + sta $03C2 ; CPU:$9BBA PRG:1BBA 8D C2 03 + lda #$72 ; CPU:$9BBD PRG:1BBD A9 72 + sta $03BF ; CPU:$9BBF PRG:1BBF 8D BF 03 + lda #$20 ; CPU:$9BC2 PRG:1BC2 A9 20 + sta $03C0 ; CPU:$9BC4 PRG:1BC4 8D C0 03 + lda #$0D ; CPU:$9BC7 PRG:1BC7 A9 0D + sta $03C1 ; CPU:$9BC9 PRG:1BC9 8D C1 03 + lda #$03 ; CPU:$9BCC PRG:1BCC A9 03 + sta $03C4 ; CPU:$9BCE PRG:1BCE 8D C4 03 + lda $0392 ; CPU:$9BD1 PRG:1BD1 AD 92 03 + and #$7F ; CPU:$9BD4 PRG:1BD4 29 7F + asl a ; CPU:$9BD6 PRG:1BD6 0A + asl a ; CPU:$9BD7 PRG:1BD7 0A + asl a ; CPU:$9BD8 PRG:1BD8 0A + tay ; CPU:$9BD9 PRG:1BD9 A8 + ldx #$00 ; CPU:$9BDA PRG:1BDA A2 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero4: + lda $D8BA,y ; CPU:$9BDC PRG:1BDC B9 BA D8 + sta $03C5,x ; CPU:$9BDF PRG:1BDF 9D C5 03 + iny ; CPU:$9BE2 PRG:1BE2 C8 + inx ; CPU:$9BE3 PRG:1BE3 E8 + cpx #$08 ; CPU:$9BE4 PRG:1BE4 E0 08 + bne SpritePosition_OnNonzero4 ; CPU:$9BE6 PRG:1BE6 D0 F4 + pla ; CPU:$9BE8 PRG:1BE8 68 + tax ; CPU:$9BE9 PRG:1BE9 AA + lda #$80 ; CPU:$9BEA PRG:1BEA A9 80 + sta $03BE ; CPU:$9BEC PRG:1BEC 8D BE 03 + lda #$01 ; CPU:$9BEF PRG:1BEF A9 01 + jsr DelayFrames ; CPU:$9BF1 PRG:1BF1 20 F5 F7 + rts ; CPU:$9BF4 PRG:1BF4 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9BF5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9BF5: + txa ; CPU:$9BF5 PRG:1BF5 8A + pha ; CPU:$9BF6 PRG:1BF6 48 + lda $0308 ; CPU:$9BF7 PRG:1BF7 AD 08 03 + beq SpritePosition_OnZero ; CPU:$9BFA PRG:1BFA F0 A9 + lda $0392 ; CPU:$9BFC PRG:1BFC AD 92 03 + and #$7F ; CPU:$9BFF PRG:1BFF 29 7F + jsr Sub_9C89 ; CPU:$9C01 PRG:1C01 20 89 9C + ldy Zp0A ; CPU:$9C04 PRG:1C04 A4 0A + lda $A779,y ; CPU:$9C06 PRG:1C06 B9 79 A7 + sta $03C3 ; CPU:$9C09 PRG:1C09 8D C3 03 + lda #$03 ; CPU:$9C0C PRG:1C0C A9 03 + sta $03C2 ; CPU:$9C0E PRG:1C0E 8D C2 03 + lda #$72 ; CPU:$9C11 PRG:1C11 A9 72 + sta $03BF ; CPU:$9C13 PRG:1C13 8D BF 03 + lda #$20 ; CPU:$9C16 PRG:1C16 A9 20 + sta $03C0 ; CPU:$9C18 PRG:1C18 8D C0 03 + lda #$0D ; CPU:$9C1B PRG:1C1B A9 0D + sta $03C1 ; CPU:$9C1D PRG:1C1D 8D C1 03 + lda #$03 ; CPU:$9C20 PRG:1C20 A9 03 + sta $03C4 ; CPU:$9C22 PRG:1C22 8D C4 03 + lda $0392 ; CPU:$9C25 PRG:1C25 AD 92 03 + clc ; CPU:$9C28 PRG:1C28 18 + adc #$01 ; CPU:$9C29 PRG:1C29 69 01 + sec ; CPU:$9C2B PRG:1C2B 38 + sbc Zp83 ; CPU:$9C2C PRG:1C2C E5 83 + tay ; CPU:$9C2E PRG:1C2E A8 + lda #$00 ; CPU:$9C2F PRG:1C2F A9 00 + sta Zp08 ; CPU:$9C31 PRG:1C31 85 08 +; ----------------------------------------------------------------------------- +; Routine: Sub_9C33 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9C33: + dey ; CPU:$9C33 PRG:1C33 88 + cpy #$00 ; CPU:$9C34 PRG:1C34 C0 00 + beq SpritePosition_Loop16 ; CPU:$9C36 PRG:1C36 F0 0E + cpy #$FF ; CPU:$9C38 PRG:1C38 C0 FF + beq SpritePosition_Loop16 ; CPU:$9C3A PRG:1C3A F0 0A + lda Zp08 ; CPU:$9C3C PRG:1C3C A5 08 + clc ; CPU:$9C3E PRG:1C3E 18 + adc #$0A ; CPU:$9C3F PRG:1C3F 69 0A + sta Zp08 ; CPU:$9C41 PRG:1C41 85 08 + jmp Sub_9C33 ; CPU:$9C43 PRG:1C43 4C 33 9C +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop16: + lda $0392 ; CPU:$9C46 PRG:1C46 AD 92 03 + beq SpritePosition_Loop18 ; CPU:$9C49 PRG:1C49 F0 21 + ldy Zp08 ; CPU:$9C4B PRG:1C4B A4 08 + ldx #$00 ; CPU:$9C4D PRG:1C4D A2 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero5: + lda $04F4,y ; CPU:$9C4F PRG:1C4F B9 F4 04 + bne SpritePosition_Loop17 ; CPU:$9C52 PRG:1C52 D0 02 + lda #$03 ; CPU:$9C54 PRG:1C54 A9 03 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop17: + sta $03C5,x ; CPU:$9C56 PRG:1C56 9D C5 03 + iny ; CPU:$9C59 PRG:1C59 C8 + inx ; CPU:$9C5A PRG:1C5A E8 + cpx #$0A ; CPU:$9C5B PRG:1C5B E0 0A + bne SpritePosition_OnNonzero5 ; CPU:$9C5D PRG:1C5D D0 F0 + pla ; CPU:$9C5F PRG:1C5F 68 + tax ; CPU:$9C60 PRG:1C60 AA + lda #$80 ; CPU:$9C61 PRG:1C61 A9 80 + sta $03BE ; CPU:$9C63 PRG:1C63 8D BE 03 + lda #$01 ; CPU:$9C66 PRG:1C66 A9 01 + jsr DelayFrames ; CPU:$9C68 PRG:1C68 20 F5 F7 + rts ; CPU:$9C6B PRG:1C6B 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop18: + ldy #$0A ; CPU:$9C6C PRG:1C6C A0 0A +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero6: + lda $9C7E,y ; CPU:$9C6E PRG:1C6E B9 7E 9C + sta $03C4,y ; CPU:$9C71 PRG:1C71 99 C4 03 + dey ; CPU:$9C74 PRG:1C74 88 + bne SpritePosition_OnNonzero6 ; CPU:$9C75 PRG:1C75 D0 F7 + pla ; CPU:$9C77 PRG:1C77 68 + tax ; CPU:$9C78 PRG:1C78 AA + lda #$80 ; CPU:$9C79 PRG:1C79 A9 80 + sta $03BE ; CPU:$9C7B PRG:1C7B 8D BE 03 + rts ; CPU:$9C7E PRG:1C7E 60 +; ---- data $9C7F-$9C88 (10 bytes) ---- + .byte $03, $25, $31, $30, $33, $38, $37, $28, $36, $03 ; CPU:$9C7F PRG:1C7F 03 25 31 30 33 38 37 28 36 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_9C89 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9C89: + sta Zp0A ; CPU:$9C89 PRG:1C89 85 0A + cmp #$64 ; CPU:$9C8B PRG:1C8B C9 64 + bcc SpritePosition_Loop19 ; CPU:$9C8D PRG:1C8D 90 02 + lda #$63 ; CPU:$9C8F PRG:1C8F A9 63 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop19: + sta Zp09 ; CPU:$9C91 PRG:1C91 85 09 + lda #$0A ; CPU:$9C93 PRG:1C93 A9 0A + sta Zp08 ; CPU:$9C95 PRG:1C95 85 08 + lda #$00 ; CPU:$9C97 PRG:1C97 A9 00 + sta Zp0B ; CPU:$9C99 PRG:1C99 85 0B +; ----------------------------------------------------------------------------- +; Routine: Sub_9C9B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9C9B: + lda Zp09 ; CPU:$9C9B PRG:1C9B A5 09 + cmp Zp08 ; CPU:$9C9D PRG:1C9D C5 08 + bcc SpritePosition_Loop20 ; CPU:$9C9F PRG:1C9F 90 13 + inc Zp0B ; CPU:$9CA1 PRG:1CA1 E6 0B + lda Zp09 ; CPU:$9CA3 PRG:1CA3 A5 09 + sec ; CPU:$9CA5 PRG:1CA5 38 + sbc Zp08 ; CPU:$9CA6 PRG:1CA6 E5 08 + sta Zp0A ; CPU:$9CA8 PRG:1CA8 85 0A + lda Zp08 ; CPU:$9CAA PRG:1CAA A5 08 + clc ; CPU:$9CAC PRG:1CAC 18 + adc #$0A ; CPU:$9CAD PRG:1CAD 69 0A + sta Zp08 ; CPU:$9CAF PRG:1CAF 85 08 + jmp Sub_9C9B ; CPU:$9CB1 PRG:1CB1 4C 9B 9C +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop20: + sta Zp0A ; CPU:$9CB4 PRG:1CB4 85 0A + rts ; CPU:$9CB6 PRG:1CB6 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9CB7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9CB7: + jsr ClearObjectSlot ; CPU:$9CB7 PRG:1CB7 20 BF BE + lda #$01 ; CPU:$9CBA PRG:1CBA A9 01 + jsr DelayFrames ; CPU:$9CBC PRG:1CBC 20 F5 F7 + ldy #$00 ; CPU:$9CBF PRG:1CBF A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero7: + lda $0484,y ; CPU:$9CC1 PRG:1CC1 B9 84 04 + sta a:Zp9A,y ; CPU:$9CC4 PRG:1CC4 99 9A 00 + iny ; CPU:$9CC7 PRG:1CC7 C8 + cpy #$68 ; CPU:$9CC8 PRG:1CC8 C0 68 + bne SpritePosition_OnNonzero7 ; CPU:$9CCA PRG:1CCA D0 F5 + ldy #$00 ; CPU:$9CCC PRG:1CCC A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero8: + lda $04F4,y ; CPU:$9CCE PRG:1CCE B9 F4 04 + sta $010A,y ; CPU:$9CD1 PRG:1CD1 99 0A 01 + iny ; CPU:$9CD4 PRG:1CD4 C8 + cpy #$3C ; CPU:$9CD5 PRG:1CD5 C0 3C + bne SpritePosition_OnNonzero8 ; CPU:$9CD7 PRG:1CD7 D0 F5 + ldy #$00 ; CPU:$9CD9 PRG:1CD9 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero9: + lda $0554,y ; CPU:$9CDB PRG:1CDB B9 54 05 + sta $07C0,y ; CPU:$9CDE PRG:1CDE 99 C0 07 + iny ; CPU:$9CE1 PRG:1CE1 C8 + cpy #$06 ; CPU:$9CE2 PRG:1CE2 C0 06 + bne SpritePosition_OnNonzero9 ; CPU:$9CE4 PRG:1CE4 D0 F5 + ldy #$00 ; CPU:$9CE6 PRG:1CE6 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero10: + lda $055A,y ; CPU:$9CE8 PRG:1CE8 B9 5A 05 + sta a:$004B,y ; CPU:$9CEB PRG:1CEB 99 4B 00 + iny ; CPU:$9CEE PRG:1CEE C8 + cpy #$18 ; CPU:$9CEF PRG:1CEF C0 18 + bne SpritePosition_OnNonzero10 ; CPU:$9CF1 PRG:1CF1 D0 F5 + ldy #$00 ; CPU:$9CF3 PRG:1CF3 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero11: + lda $0572,y ; CPU:$9CF5 PRG:1CF5 B9 72 05 + sta $030A,y ; CPU:$9CF8 PRG:1CF8 99 0A 03 + iny ; CPU:$9CFB PRG:1CFB C8 + cpy #$18 ; CPU:$9CFC PRG:1CFC C0 18 + bne SpritePosition_OnNonzero11 ; CPU:$9CFE PRG:1CFE D0 F5 + ldy #$00 ; CPU:$9D00 PRG:1D00 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero12: + lda $0530,y ; CPU:$9D02 PRG:1D02 B9 30 05 + sta $033A,y ; CPU:$9D05 PRG:1D05 99 3A 03 + iny ; CPU:$9D08 PRG:1D08 C8 + cpy #$24 ; CPU:$9D09 PRG:1D09 C0 24 + bne SpritePosition_OnNonzero12 ; CPU:$9D0B PRG:1D0B D0 F5 + rts ; CPU:$9D0D PRG:1D0D 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9D0E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9D0E: + ldy #$00 ; CPU:$9D0E PRG:1D0E A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero13: + lda a:Zp9A,y ; CPU:$9D10 PRG:1D10 B9 9A 00 + sta $0484,y ; CPU:$9D13 PRG:1D13 99 84 04 + lda #$00 ; CPU:$9D16 PRG:1D16 A9 00 + sta a:Zp9A,y ; CPU:$9D18 PRG:1D18 99 9A 00 + iny ; CPU:$9D1B PRG:1D1B C8 + cpy #$68 ; CPU:$9D1C PRG:1D1C C0 68 + bne SpritePosition_OnNonzero13 ; CPU:$9D1E PRG:1D1E D0 F0 + ldy #$00 ; CPU:$9D20 PRG:1D20 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero14: + lda $010A,y ; CPU:$9D22 PRG:1D22 B9 0A 01 + sta $04F4,y ; CPU:$9D25 PRG:1D25 99 F4 04 + lda #$00 ; CPU:$9D28 PRG:1D28 A9 00 + sta $010A,y ; CPU:$9D2A PRG:1D2A 99 0A 01 + iny ; CPU:$9D2D PRG:1D2D C8 + cpy #$3C ; CPU:$9D2E PRG:1D2E C0 3C + bne SpritePosition_OnNonzero14 ; CPU:$9D30 PRG:1D30 D0 F0 + ldy #$00 ; CPU:$9D32 PRG:1D32 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero15: + lda $07C0,y ; CPU:$9D34 PRG:1D34 B9 C0 07 + sta $0554,y ; CPU:$9D37 PRG:1D37 99 54 05 + lda #$00 ; CPU:$9D3A PRG:1D3A A9 00 + sta $07C0,y ; CPU:$9D3C PRG:1D3C 99 C0 07 + iny ; CPU:$9D3F PRG:1D3F C8 + cpy #$06 ; CPU:$9D40 PRG:1D40 C0 06 + bne SpritePosition_OnNonzero15 ; CPU:$9D42 PRG:1D42 D0 F0 + ldy #$00 ; CPU:$9D44 PRG:1D44 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero16: + lda a:$004B,y ; CPU:$9D46 PRG:1D46 B9 4B 00 + sta $055A,y ; CPU:$9D49 PRG:1D49 99 5A 05 + lda #$00 ; CPU:$9D4C PRG:1D4C A9 00 + sta a:$004B,y ; CPU:$9D4E PRG:1D4E 99 4B 00 + iny ; CPU:$9D51 PRG:1D51 C8 + cpy #$18 ; CPU:$9D52 PRG:1D52 C0 18 + bne SpritePosition_OnNonzero16 ; CPU:$9D54 PRG:1D54 D0 F0 + ldy #$00 ; CPU:$9D56 PRG:1D56 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero17: + lda $030A,y ; CPU:$9D58 PRG:1D58 B9 0A 03 + sta $0572,y ; CPU:$9D5B PRG:1D5B 99 72 05 + lda #$00 ; CPU:$9D5E PRG:1D5E A9 00 + sta $030A,y ; CPU:$9D60 PRG:1D60 99 0A 03 + iny ; CPU:$9D63 PRG:1D63 C8 + cpy #$18 ; CPU:$9D64 PRG:1D64 C0 18 + bne SpritePosition_OnNonzero17 ; CPU:$9D66 PRG:1D66 D0 F0 + ldy #$00 ; CPU:$9D68 PRG:1D68 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero18: + lda $033A,y ; CPU:$9D6A PRG:1D6A B9 3A 03 + sta $0530,y ; CPU:$9D6D PRG:1D6D 99 30 05 + lda #$00 ; CPU:$9D70 PRG:1D70 A9 00 + sta $030A,y ; CPU:$9D72 PRG:1D72 99 0A 03 + iny ; CPU:$9D75 PRG:1D75 C8 + cpy #$24 ; CPU:$9D76 PRG:1D76 C0 24 + bne SpritePosition_OnNonzero18 ; CPU:$9D78 PRG:1D78 D0 F0 + rts ; CPU:$9D7A PRG:1D7A 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9D7B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9D7B: + lda Zp06,x ; CPU:$9D7B PRG:1D7B B5 06 + and #$04 ; CPU:$9D7D PRG:1D7D 29 04 + beq SpritePosition_Loop21 ; CPU:$9D7F PRG:1D7F F0 03 + jmp Sub_A04B ; CPU:$9D81 PRG:1D81 4C 4B A0 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop21: + lda Zp06,x ; CPU:$9D84 PRG:1D84 B5 06 + and #$07 ; CPU:$9D86 PRG:1D86 29 07 + cmp #$03 ; CPU:$9D88 PRG:1D88 C9 03 + bne SpritePosition_Loop22 ; CPU:$9D8A PRG:1D8A D0 03 + jmp Sub_9E65 ; CPU:$9D8C PRG:1D8C 4C 65 9E +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop22: + lda Zp06,x ; CPU:$9D8F PRG:1D8F B5 06 + and #$01 ; CPU:$9D91 PRG:1D91 29 01 + bne SpritePosition_Loop23 ; CPU:$9D93 PRG:1D93 D0 07 + lda Zp06,x ; CPU:$9D95 PRG:1D95 B5 06 + and #$02 ; CPU:$9D97 PRG:1D97 29 02 + bne SpritePosition_Loop25 ; CPU:$9D99 PRG:1D99 D0 63 + rts ; CPU:$9D9B PRG:1D9B 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop23: + lda $0184 ; CPU:$9D9C PRG:1D9C AD 84 01 + bne SpritePosition_Loop24 ; CPU:$9D9F PRG:1D9F D0 2D + lda #$00 ; CPU:$9DA1 PRG:1DA1 A9 00 + sta $0186 ; CPU:$9DA3 PRG:1DA3 8D 86 01 + lda #$01 ; CPU:$9DA6 PRG:1DA6 A9 01 + sta $0478 ; CPU:$9DA8 PRG:1DA8 8D 78 04 + lda #$36 ; CPU:$9DAB PRG:1DAB A9 36 + sta Zp0D,x ; CPU:$9DAD PRG:1DAD 95 0D + jsr ObjectUpdate ; CPU:$9DAF PRG:1DAF 20 92 A7 + lda #$0A ; CPU:$9DB2 PRG:1DB2 A9 0A + jsr ObjectDraw ; CPU:$9DB4 PRG:1DB4 20 6F A5 + lda #$40 ; CPU:$9DB7 PRG:1DB7 A9 40 + sta SlotState,x ; CPU:$9DB9 PRG:1DB9 95 0C + lda #$CE ; CPU:$9DBB PRG:1DBB A9 CE + sta Zp0A,x ; CPU:$9DBD PRG:1DBD 95 0A + lda #$9D ; CPU:$9DBF PRG:1DBF A9 9D + sta Zp0B,x ; CPU:$9DC1 PRG:1DC1 95 0B + lda #$05 ; CPU:$9DC3 PRG:1DC3 A9 05 + sta Zp07,x ; CPU:$9DC5 PRG:1DC5 95 07 + lda #$2A ; CPU:$9DC7 PRG:1DC7 A9 2A + ldy #$03 ; CPU:$9DC9 PRG:1DC9 A0 03 + jsr AudioChannelLoop ; CPU:$9DCB PRG:1DCB 20 63 BE +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop24 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop24: + rts ; CPU:$9DCE PRG:1DCE 60 +; ---- data $9DCF-$9DFD (47 bytes) ---- + .byte $B5, $06, $C9, $03, $F0, $24, $AD, $83, $01, $48, $A9, $00, $8D, $83, $01, $A9 ; CPU:$9DCF PRG:1DCF B5 06 C9 03 F0 24 AD 83 01 48 A9 00 8D 83 01 A9 + .byte $01, $8D, $78, $04, $A9, $34, $20, $92, $A7, $A9, $CE, $95, $0A, $A9, $9D, $95 ; CPU:$9DDF PRG:1DDF 01 8D 78 04 A9 34 20 92 A7 A9 CE 95 0A A9 9D 95 + .byte $0B, $68, $8D, $83, $01, $A9, $05, $95, $07, $60, $A9, $00, $95, $07, $60 ; CPU:$9DEF PRG:1DEF 0B 68 8D 83 01 A9 05 95 07 60 A9 00 95 07 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop25 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop25: + lda $0184 ; CPU:$9DFE PRG:1DFE AD 84 01 + beq SpritePosition_Loop26 ; CPU:$9E01 PRG:1E01 F0 2D + lda #$00 ; CPU:$9E03 PRG:1E03 A9 00 + sta $0187 ; CPU:$9E05 PRG:1E05 8D 87 01 + lda #$0B ; CPU:$9E08 PRG:1E08 A9 0B + sta $0478 ; CPU:$9E0A PRG:1E0A 8D 78 04 + lda #$39 ; CPU:$9E0D PRG:1E0D A9 39 + sta Zp0D,x ; CPU:$9E0F PRG:1E0F 95 0D + jsr ObjectUpdate ; CPU:$9E11 PRG:1E11 20 92 A7 + lda #$0A ; CPU:$9E14 PRG:1E14 A9 0A + jsr ObjectDraw ; CPU:$9E16 PRG:1E16 20 6F A5 + lda #$40 ; CPU:$9E19 PRG:1E19 A9 40 + sta SlotState,x ; CPU:$9E1B PRG:1E1B 95 0C + lda #$30 ; CPU:$9E1D PRG:1E1D A9 30 + sta Zp0A,x ; CPU:$9E1F PRG:1E1F 95 0A + lda #$9E ; CPU:$9E21 PRG:1E21 A9 9E + sta Zp0B,x ; CPU:$9E23 PRG:1E23 95 0B + lda #$05 ; CPU:$9E25 PRG:1E25 A9 05 + sta Zp07,x ; CPU:$9E27 PRG:1E27 95 07 + lda #$2A ; CPU:$9E29 PRG:1E29 A9 2A + ldy #$03 ; CPU:$9E2B PRG:1E2B A0 03 + jsr AudioChannelLoop ; CPU:$9E2D PRG:1E2D 20 63 BE +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop26 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop26: + rts ; CPU:$9E30 PRG:1E30 60 +; ---- data $9E31-$9E64 (52 bytes) ---- + .byte $B5, $06, $C9, $03, $F0, $29, $AD, $83, $01, $48, $A9, $08, $8D, $83, $01, $A9 ; CPU:$9E31 PRG:1E31 B5 06 C9 03 F0 29 AD 83 01 48 A9 08 8D 83 01 A9 + .byte $0B, $8D, $78, $04, $A9, $37, $20, $92, $A7, $A9, $1B, $20, $5E, $98, $68, $8D ; CPU:$9E41 PRG:1E41 0B 8D 78 04 A9 37 20 92 A7 A9 1B 20 5E 98 68 8D + .byte $83, $01, $A9, $30, $95, $0A, $A9, $9E, $95, $0B, $A9, $05, $95, $07, $60, $A9 ; CPU:$9E51 PRG:1E51 83 01 A9 30 95 0A A9 9E 95 0B A9 05 95 07 60 A9 + .byte $00, $95, $07, $60 ; CPU:$9E61 PRG:1E61 00 95 07 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_9E65 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_9E65: + lda GameMode ; CPU:$9E65 PRG:1E65 A5 8C + cmp #$02 ; CPU:$9E67 PRG:1E67 C9 02 + bcs SpritePosition_Loop28 ; CPU:$9E69 PRG:1E69 B0 4F + lda Zp06,x ; CPU:$9E6B PRG:1E6B B5 06 + and #$08 ; CPU:$9E6D PRG:1E6D 29 08 + bne SpritePosition_Loop27 ; CPU:$9E6F PRG:1E6F D0 22 + lda $0183 ; CPU:$9E71 PRG:1E71 AD 83 01 + pha ; CPU:$9E74 PRG:1E74 48 + lda #$00 ; CPU:$9E75 PRG:1E75 A9 00 + sta $0183 ; CPU:$9E77 PRG:1E77 8D 83 01 + lda #$01 ; CPU:$9E7A PRG:1E7A A9 01 + sta $0478 ; CPU:$9E7C PRG:1E7C 8D 78 04 + lda #$35 ; CPU:$9E7F PRG:1E7F A9 35 + jsr ObjectUpdate ; CPU:$9E81 PRG:1E81 20 92 A7 + pla ; CPU:$9E84 PRG:1E84 68 + sta $0183 ; CPU:$9E85 PRG:1E85 8D 83 01 + lda #$80 ; CPU:$9E88 PRG:1E88 A9 80 + sta SlotState,x ; CPU:$9E8A PRG:1E8A 95 0C + lda Zp06,x ; CPU:$9E8C PRG:1E8C B5 06 + ora #$04 ; CPU:$9E8E PRG:1E8E 09 04 + sta Zp06,x ; CPU:$9E90 PRG:1E90 95 06 + rts ; CPU:$9E92 PRG:1E92 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop27 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop27: + lda $0183 ; CPU:$9E93 PRG:1E93 AD 83 01 + pha ; CPU:$9E96 PRG:1E96 48 + lda #$08 ; CPU:$9E97 PRG:1E97 A9 08 + sta $0183 ; CPU:$9E99 PRG:1E99 8D 83 01 + lda #$0B ; CPU:$9E9C PRG:1E9C A9 0B + sta $0478 ; CPU:$9E9E PRG:1E9E 8D 78 04 + lda #$38 ; CPU:$9EA1 PRG:1EA1 A9 38 + jsr ObjectUpdate ; CPU:$9EA3 PRG:1EA3 20 92 A7 + lda #$1C ; CPU:$9EA6 PRG:1EA6 A9 1C + jsr SpritePosition ; CPU:$9EA8 PRG:1EA8 20 5E 98 + pla ; CPU:$9EAB PRG:1EAB 68 + sta $0183 ; CPU:$9EAC PRG:1EAC 8D 83 01 + lda #$80 ; CPU:$9EAF PRG:1EAF A9 80 + sta SlotState,x ; CPU:$9EB1 PRG:1EB1 95 0C + lda Zp06,x ; CPU:$9EB3 PRG:1EB3 B5 06 + ora #$04 ; CPU:$9EB5 PRG:1EB5 09 04 + sta Zp06,x ; CPU:$9EB7 PRG:1EB7 95 06 + rts ; CPU:$9EB9 PRG:1EB9 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop28 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop28: + lda GameMode ; CPU:$9EBA PRG:1EBA A5 8C + cmp #$03 ; CPU:$9EBC PRG:1EBC C9 03 + beq SpritePosition_Loop29 ; CPU:$9EBE PRG:1EBE F0 09 + lda $0384 ; CPU:$9EC0 PRG:1EC0 AD 84 03 + cmp #$07 ; CPU:$9EC3 PRG:1EC3 C9 07 + bcc SpritePosition_Loop31 ; CPU:$9EC5 PRG:1EC5 90 3D + bcs SpritePosition_Loop30 ; CPU:$9EC7 PRG:1EC7 B0 07 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop29 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop29: + lda $0384 ; CPU:$9EC9 PRG:1EC9 AD 84 03 + cmp #$0D ; CPU:$9ECC PRG:1ECC C9 0D + bcc SpritePosition_Loop31 ; CPU:$9ECE PRG:1ECE 90 34 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop30 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop30: + lda $0181 ; CPU:$9ED0 PRG:1ED0 AD 81 01 + bne SpritePosition_Loop31 ; CPU:$9ED3 PRG:1ED3 D0 2F + lda Zp0E,x ; CPU:$9ED5 PRG:1ED5 B5 0E + sta $0478 ; CPU:$9ED7 PRG:1ED7 8D 78 04 + lda #$2F ; CPU:$9EDA PRG:1EDA A9 2F + sta Zp0D,x ; CPU:$9EDC PRG:1EDC 95 0D + jsr ObjectUpdate ; CPU:$9EDE PRG:1EDE 20 92 A7 + lda #$0A ; CPU:$9EE1 PRG:1EE1 A9 0A + jsr ObjectDraw ; CPU:$9EE3 PRG:1EE3 20 6F A5 + lda #$20 ; CPU:$9EE6 PRG:1EE6 A9 20 + sta SlotState,x ; CPU:$9EE8 PRG:1EE8 95 0C + lda Zp06,x ; CPU:$9EEA PRG:1EEA B5 06 + ora #$04 ; CPU:$9EEC PRG:1EEC 09 04 + sta Zp06,x ; CPU:$9EEE PRG:1EEE 95 06 + lda #$32 ; CPU:$9EF0 PRG:1EF0 A9 32 + sta Zp0A,x ; CPU:$9EF2 PRG:1EF2 95 0A + lda #$9F ; CPU:$9EF4 PRG:1EF4 A9 9F + sta Zp0B,x ; CPU:$9EF6 PRG:1EF6 95 0B + lda #$05 ; CPU:$9EF8 PRG:1EF8 A9 05 + sta Zp07,x ; CPU:$9EFA PRG:1EFA 95 07 + lda #$2A ; CPU:$9EFC PRG:1EFC A9 2A + ldy #$03 ; CPU:$9EFE PRG:1EFE A0 03 + jsr AudioChannelLoop ; CPU:$9F00 PRG:1F00 20 63 BE + rts ; CPU:$9F03 PRG:1F03 60 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop31 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop31: + lda Zp0E,x ; CPU:$9F04 PRG:1F04 B5 0E + sta $0478 ; CPU:$9F06 PRG:1F06 8D 78 04 + lda #$30 ; CPU:$9F09 PRG:1F09 A9 30 + sta Zp0D,x ; CPU:$9F0B PRG:1F0B 95 0D + jsr ObjectUpdate ; CPU:$9F0D PRG:1F0D 20 92 A7 + lda #$0A ; CPU:$9F10 PRG:1F10 A9 0A + jsr ObjectDraw ; CPU:$9F12 PRG:1F12 20 6F A5 + lda #$20 ; CPU:$9F15 PRG:1F15 A9 20 + sta SlotState,x ; CPU:$9F17 PRG:1F17 95 0C + lda Zp06,x ; CPU:$9F19 PRG:1F19 B5 06 + ora #$04 ; CPU:$9F1B PRG:1F1B 09 04 + sta Zp06,x ; CPU:$9F1D PRG:1F1D 95 06 + lda #$32 ; CPU:$9F1F PRG:1F1F A9 32 + sta Zp0A,x ; CPU:$9F21 PRG:1F21 95 0A + lda #$9F ; CPU:$9F23 PRG:1F23 A9 9F + sta Zp0B,x ; CPU:$9F25 PRG:1F25 95 0B + lda #$05 ; CPU:$9F27 PRG:1F27 A9 05 + sta Zp07,x ; CPU:$9F29 PRG:1F29 95 07 + lda #$2A ; CPU:$9F2B PRG:1F2B A9 2A + ldy #$03 ; CPU:$9F2D PRG:1F2D A0 03 + jsr AudioChannelLoop ; CPU:$9F2F PRG:1F2F 20 63 BE + rts ; CPU:$9F32 PRG:1F32 60 +; ---- data $9F33-$A02A (248 bytes) ---- + .byte $AD, $81, $01, $F0, $03, $4C, $34, $A0, $86, $08, $AD, $80, $01, $0A, $A8, $0A ; CPU:$9F33 PRG:1F33 AD 81 01 F0 03 4C 34 A0 86 08 AD 80 01 0A A8 0A + .byte $0A, $AA, $AD, $91, $03, $29, $07, $38, $E9, $01, $0A, $0A, $0A, $0A, $85, $09 ; CPU:$9F43 PRG:1F43 0A AA AD 91 03 29 07 38 E9 01 0A 0A 0A 0A 85 09 + .byte $8A, $18, $65, $09, $AA, $B9, $6B, $A7, $8D, $BF, $03, $C8, $B9, $6B, $A7, $8D ; CPU:$9F53 PRG:1F53 8A 18 65 09 AA B9 6B A7 8D BF 03 C8 B9 6B A7 8D + .byte $C0, $03, $A9, $08, $8D, $C1, $03, $AD, $84, $03, $8D, $71, $04, $29, $0F, $A8 ; CPU:$9F63 PRG:1F63 C0 03 A9 08 8D C1 03 AD 84 03 8D 71 04 29 0F A8 + .byte $B9, $79, $A7, $8D, $C3, $03, $AD, $80, $01, $C9, $02, $B0, $06, $B9, $79, $A7 ; CPU:$9F73 PRG:1F73 B9 79 A7 8D C3 03 AD 80 01 C9 02 B0 06 B9 79 A7 + .byte $9D, $85, $04, $AD, $84, $03, $29, $F0, $4A, $4A, $4A, $4A, $A8, $B9, $79, $A7 ; CPU:$9F83 PRG:1F83 9D 85 04 AD 84 03 29 F0 4A 4A 4A 4A A8 B9 79 A7 + .byte $8D, $C2, $03, $AD, $80, $01, $C9, $02, $B0, $06, $B9, $79, $A7, $9D, $84, $04 ; CPU:$9F93 PRG:1F93 8D C2 03 AD 80 01 C9 02 B0 06 B9 79 A7 9D 84 04 + .byte $A9, $75, $8D, $C4, $03, $AD, $80, $01, $C9, $02, $B0, $05, $A9, $75, $9D, $86 ; CPU:$9FA3 PRG:1FA3 A9 75 8D C4 03 AD 80 01 C9 02 B0 05 A9 75 9D 86 + .byte $04, $AD, $83, $03, $8D, $72, $04, $29, $F0, $4A, $4A, $4A, $4A, $A8, $B9, $79 ; CPU:$9FB3 PRG:1FB3 04 AD 83 03 8D 72 04 29 F0 4A 4A 4A 4A A8 B9 79 + .byte $A7, $8D, $C5, $03, $AD, $80, $01, $C9, $02, $B0, $06, $B9, $79, $A7, $9D, $87 ; CPU:$9FC3 PRG:1FC3 A7 8D C5 03 AD 80 01 C9 02 B0 06 B9 79 A7 9D 87 + .byte $04, $AD, $83, $03, $29, $0F, $A8, $B9, $79, $A7, $8D, $C6, $03, $AD, $80, $01 ; CPU:$9FD3 PRG:1FD3 04 AD 83 03 29 0F A8 B9 79 A7 8D C6 03 AD 80 01 + .byte $C9, $02, $B0, $06, $B9, $79, $A7, $9D, $88, $04, $A9, $74, $8D, $C7, $03, $A9 ; CPU:$9FE3 PRG:1FE3 C9 02 B0 06 B9 79 A7 9D 88 04 A9 74 8D C7 03 A9 + .byte $76, $8D, $C8, $03, $AD, $80, $01, $C9, $02, $B0, $0A, $A9, $74, $9D, $89, $04 ; CPU:$9FF3 PRG:1FF3 76 8D C8 03 AD 80 01 C9 02 B0 0A A9 74 9D 89 04 + .byte $A9, $76, $9D, $8A, $04, $A9, $03, $8D, $C9, $03, $AD, $80, $01, $C9, $02, $B0 ; CPU:$A003 PRG:2003 A9 76 9D 8A 04 A9 03 8D C9 03 AD 80 01 C9 02 B0 + .byte $05, $A9, $03, $9D, $8B, $04, $A9, $80, $8D, $BE, $03, $A6, $08, $A9, $01, $20 ; CPU:$A013 PRG:2013 05 A9 03 9D 8B 04 A9 80 8D BE 03 A6 08 A9 01 20 + .byte $F5, $F7, $A9, $D0, $95, $0C, $A9, $00 ; CPU:$A023 PRG:2023 F5 F7 A9 D0 95 0C A9 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_A02B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A02B: + sta Zp07,x ; CPU:$A02B PRG:202B 95 07 + lda Zp06,x ; CPU:$A02D PRG:202D B5 06 + ora #$04 ; CPU:$A02F PRG:202F 09 04 + sta Zp06,x ; CPU:$A031 PRG:2031 95 06 + rts ; CPU:$A033 PRG:2033 60 +; ---- data $A034-$A04A (23 bytes) ---- + .byte $20, $1A, $A7, $A9, $00, $8D, $81, $01, $A9, $D0, $95, $0C, $A9, $00, $95, $07 ; CPU:$A034 PRG:2034 20 1A A7 A9 00 8D 81 01 A9 D0 95 0C A9 00 95 07 + .byte $B5, $06, $09, $04, $95, $06, $60 ; CPU:$A044 PRG:2044 B5 06 09 04 95 06 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A04B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A04B: + lda #$60 ; CPU:$A04B PRG:204B A9 60 + jsr DelayFrames ; CPU:$A04D PRG:204D 20 F5 F7 + lda GameMode ; CPU:$A050 PRG:2050 A5 8C + cmp #$02 ; CPU:$A052 PRG:2052 C9 02 + bcs SpritePosition_Loop32 ; CPU:$A054 PRG:2054 B0 03 + jmp Sub_A089 ; CPU:$A056 PRG:2056 4C 89 A0 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop32 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop32: + lda VblankFlag ; CPU:$A059 PRG:2059 A5 2E + and #$80 ; CPU:$A05B PRG:205B 29 80 + beq SpritePosition_Loop33 ; CPU:$A05D PRG:205D F0 03 + jmp SpriteDraw ; CPU:$A05F PRG:205F 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop33 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop33: + jsr Sub_98DB ; CPU:$A062 PRG:2062 20 DB 98 + bcc SpritePosition_Loop34 ; CPU:$A065 PRG:2065 90 12 + lda #$01 ; CPU:$A067 PRG:2067 A9 01 + sta $0391 ; CPU:$A069 PRG:2069 8D 91 03 + inc $0180 ; CPU:$A06C PRG:206C EE 80 01 + lda $0180 ; CPU:$A06F PRG:206F AD 80 01 + cmp #$03 ; CPU:$A072 PRG:2072 C9 03 + bcc SpritePosition_Loop34 ; CPU:$A074 PRG:2074 90 03 + jmp SpriteDraw ; CPU:$A076 PRG:2076 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop34 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop34: + lda PpuMaskMirror ; CPU:$A079 PRG:2079 A5 19 + and #$E7 ; CPU:$A07B PRG:207B 29 E7 + sta PpuMaskMirror ; CPU:$A07D PRG:207D 85 19 + lda #$00 ; CPU:$A07F PRG:207F A9 00 + sta Zp8B ; CPU:$A081 PRG:2081 85 8B + sta $0390 ; CPU:$A083 PRG:2083 8D 90 03 + jmp Sub_A114 ; CPU:$A086 PRG:2086 4C 14 A1 +; ----------------------------------------------------------------------------- +; Routine: Sub_A089 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A089: + lda VblankFlag ; CPU:$A089 PRG:2089 A5 2E + and #$80 ; CPU:$A08B PRG:208B 29 80 + beq SpritePosition_Loop35 ; CPU:$A08D PRG:208D F0 03 + jmp SpriteDraw ; CPU:$A08F PRG:208F 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop35 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop35: + lda #$00 ; CPU:$A092 PRG:2092 A9 00 + sta Zp8B ; CPU:$A094 PRG:2094 85 8B + lda $0308 ; CPU:$A096 PRG:2096 AD 08 03 + beq SpritePosition_Loop37 ; CPU:$A099 PRG:2099 F0 16 + jsr Sub_9910 ; CPU:$A09B PRG:209B 20 10 99 + jsr Sub_98DB ; CPU:$A09E PRG:209E 20 DB 98 + lda $0391 ; CPU:$A0A1 PRG:20A1 AD 91 03 + bne SpritePosition_Loop36 ; CPU:$A0A4 PRG:20A4 D0 08 + lda $0392 ; CPU:$A0A6 PRG:20A6 AD 92 03 + bne SpritePosition_Loop36 ; CPU:$A0A9 PRG:20A9 D0 03 + jmp SpriteDraw ; CPU:$A0AB PRG:20AB 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop36 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop36: + jmp SpritePosition_Loop41 ; CPU:$A0AE PRG:20AE 4C F1 A0 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop37 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop37: + lda Zp06,x ; CPU:$A0B1 PRG:20B1 B5 06 + and #$08 ; CPU:$A0B3 PRG:20B3 29 08 + bne SpritePosition_Loop39 ; CPU:$A0B5 PRG:20B5 D0 17 + lda $0392 ; CPU:$A0B7 PRG:20B7 AD 92 03 + and #$7F ; CPU:$A0BA PRG:20BA 29 7F + sec ; CPU:$A0BC PRG:20BC 38 + sbc #$01 ; CPU:$A0BD PRG:20BD E9 01 + cmp #$FF ; CPU:$A0BF PRG:20BF C9 FF + beq SpritePosition_Loop38 ; CPU:$A0C1 PRG:20C1 F0 08 + ora #$80 ; CPU:$A0C3 PRG:20C3 09 80 + sta $0392 ; CPU:$A0C5 PRG:20C5 8D 92 03 + jsr SpriteDraw_Loop2 ; CPU:$A0C8 PRG:20C8 20 6E A1 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop38 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop38: + jmp SpriteDraw ; CPU:$A0CB PRG:20CB 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop39 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop39: + jsr Sub_A169 ; CPU:$A0CE PRG:20CE 20 69 A1 + lda GameMode ; CPU:$A0D1 PRG:20D1 A5 8C + beq SpritePosition_Loop40 ; CPU:$A0D3 PRG:20D3 F0 18 + lda #$00 ; CPU:$A0D5 PRG:20D5 A9 00 + sta GameMode ; CPU:$A0D7 PRG:20D7 85 8C + inc $0392 ; CPU:$A0D9 PRG:20D9 EE 92 03 + lda $0392 ; CPU:$A0DC PRG:20DC AD 92 03 + and #$07 ; CPU:$A0DF PRG:20DF 29 07 + cmp #$06 ; CPU:$A0E1 PRG:20E1 C9 06 + bcc SpritePosition_Loop41 ; CPU:$A0E3 PRG:20E3 90 0C + lda #$80 ; CPU:$A0E5 PRG:20E5 A9 80 + sta $0392 ; CPU:$A0E7 PRG:20E7 8D 92 03 + jmp SpriteDraw ; CPU:$A0EA PRG:20EA 4C 2E A1 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop40 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop40: + lda #$01 ; CPU:$A0ED PRG:20ED A9 01 + sta GameMode ; CPU:$A0EF PRG:20EF 85 8C +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_Loop41 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_Loop41: + lda PpuMaskMirror ; CPU:$A0F1 PRG:20F1 A5 19 + and #$E7 ; CPU:$A0F3 PRG:20F3 29 E7 + sta PpuMaskMirror ; CPU:$A0F5 PRG:20F5 85 19 + lda #$00 ; CPU:$A0F7 PRG:20F7 A9 00 + sta Zp8B ; CPU:$A0F9 PRG:20F9 85 8B + sta $0390 ; CPU:$A0FB PRG:20FB 8D 90 03 + sta $0180 ; CPU:$A0FE PRG:20FE 8D 80 01 + sta $0181 ; CPU:$A101 PRG:2101 8D 81 01 + sta $030A ; CPU:$A104 PRG:2104 8D 0A 03 + sta $030B ; CPU:$A107 PRG:2107 8D 0B 03 + ldy #$00 ; CPU:$A10A PRG:210A A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpritePosition_OnNonzero19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpritePosition_OnNonzero19: + sta $0484,y ; CPU:$A10C PRG:210C 99 84 04 + iny ; CPU:$A10F PRG:210F C8 + cpy #$60 ; CPU:$A110 PRG:2110 C0 60 + bne SpritePosition_OnNonzero19 ; CPU:$A112 PRG:2112 D0 F8 +; ----------------------------------------------------------------------------- +; Routine: Sub_A114 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A114: + lda #$01 ; CPU:$A114 PRG:2114 A9 01 + jsr TaskSlotClear ; CPU:$A116 PRG:2116 20 CA F7 + lda #$03 ; CPU:$A119 PRG:2119 A9 03 + jsr TaskSlotClear ; CPU:$A11B PRG:211B 20 CA F7 + lda #$02 ; CPU:$A11E PRG:211E A9 02 + jsr TaskSlotClear ; CPU:$A120 PRG:2120 20 CA F7 + lda #$00 ; CPU:$A123 PRG:2123 A9 00 + jsr TaskSlotClear ; CPU:$A125 PRG:2125 20 CA F7 + lda #$00 ; CPU:$A128 PRG:2128 A9 00 + jsr TaskSlotStart ; CPU:$A12A PRG:212A 20 A0 F7 + rts ; CPU:$A12D PRG:212D 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw: + jsr ClearObjectSlot ; CPU:$A12E PRG:212E 20 BF BE + lda #$00 ; CPU:$A131 PRG:2131 A9 00 + sta Zp8B ; CPU:$A133 PRG:2133 85 8B + jsr EventInit ; CPU:$A135 PRG:2135 20 7C EF + jsr Sub_A114 ; CPU:$A138 PRG:2138 20 14 A1 + lda $0308 ; CPU:$A13B PRG:213B AD 08 03 + beq SpriteDraw_Loop ; CPU:$A13E PRG:213E F0 07 + lda VblankFlag ; CPU:$A140 PRG:2140 A5 2E + ora #$40 ; CPU:$A142 PRG:2142 09 40 + jmp Sub_A14B ; CPU:$A144 PRG:2144 4C 4B A1 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_Loop: + lda VblankFlag ; CPU:$A147 PRG:2147 A5 2E + ora #$50 ; CPU:$A149 PRG:2149 09 50 +; ----------------------------------------------------------------------------- +; Routine: Sub_A14B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A14B: + sta VblankFlag ; CPU:$A14B PRG:214B 85 2E + lda #$01 ; CPU:$A14D PRG:214D A9 01 + sta $0391 ; CPU:$A14F PRG:214F 8D 91 03 + lda #$00 ; CPU:$A152 PRG:2152 A9 00 + sta $0392 ; CPU:$A154 PRG:2154 8D 92 03 + sta $0180 ; CPU:$A157 PRG:2157 8D 80 01 + sta $0181 ; CPU:$A15A PRG:215A 8D 81 01 + sta $0390 ; CPU:$A15D PRG:215D 8D 90 03 + sta $030A ; CPU:$A160 PRG:2160 8D 0A 03 + sta $030B ; CPU:$A163 PRG:2163 8D 0B 03 + sta Zp8B ; CPU:$A166 PRG:2166 85 8B + rts ; CPU:$A168 PRG:2168 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A169 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A169: + lda GameMode ; CPU:$A169 PRG:2169 A5 8C + bne SpriteDraw_Loop2 ; CPU:$A16B PRG:216B D0 01 + rts ; CPU:$A16D PRG:216D 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_Loop2: + jsr EventInit ; CPU:$A16E PRG:216E 20 7C EF + lda #$02 ; CPU:$A171 PRG:2171 A9 02 + sta Zp2C ; CPU:$A173 PRG:2173 85 2C + jsr FrameDelay ; CPU:$A175 PRG:2175 20 E6 F8 + jsr Sub_FC4E ; CPU:$A178 PRG:2178 20 4E FC + lda #$03 ; CPU:$A17B PRG:217B A9 03 + jsr DelayFrames ; CPU:$A17D PRG:217D 20 F5 F7 + ldy #$00 ; CPU:$A180 PRG:2180 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_OnNonzero: + lda $BDC3,y ; CPU:$A182 PRG:2182 B9 C3 BD + sta $039C,y ; CPU:$A185 PRG:2185 99 9C 03 + iny ; CPU:$A188 PRG:2188 C8 + cpy #$20 ; CPU:$A189 PRG:2189 C0 20 + bne SpriteDraw_OnNonzero ; CPU:$A18B PRG:218B D0 F5 + lda #$01 ; CPU:$A18D PRG:218D A9 01 + sta Zp29 ; CPU:$A18F PRG:218F 85 29 + lda #$03 ; CPU:$A191 PRG:2191 A9 03 + jsr DelayFrames ; CPU:$A193 PRG:2193 20 F5 F7 + lda $0392 ; CPU:$A196 PRG:2196 AD 92 03 + and #$7F ; CPU:$A199 PRG:2199 29 7F + clc ; CPU:$A19B PRG:219B 18 + adc #$06 ; CPU:$A19C PRG:219C 69 06 + jsr Sub_96CC ; CPU:$A19E PRG:219E 20 CC 96 + lda #$03 ; CPU:$A1A1 PRG:21A1 A9 03 + jsr DelayFrames ; CPU:$A1A3 PRG:21A3 20 F5 F7 + jsr Sub_EFC6 ; CPU:$A1A6 PRG:21A6 20 C6 EF + lda $0392 ; CPU:$A1A9 PRG:21A9 AD 92 03 + and #$07 ; CPU:$A1AC PRG:21AC 29 07 + cmp #$05 ; CPU:$A1AE PRG:21AE C9 05 + beq SpriteDraw_Loop3 ; CPU:$A1B0 PRG:21B0 F0 0D + lda #$15 ; CPU:$A1B2 PRG:21B2 A9 15 + ldy #$03 ; CPU:$A1B4 PRG:21B4 A0 03 + jsr AudioChannelLoop ; CPU:$A1B6 PRG:21B6 20 63 BE + lda #$F0 ; CPU:$A1B9 PRG:21B9 A9 F0 + jsr DelayFrames ; CPU:$A1BB PRG:21BB 20 F5 F7 + rts ; CPU:$A1BE PRG:21BE 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_Loop3: + lda #$12 ; CPU:$A1BF PRG:21BF A9 12 + ldy #$03 ; CPU:$A1C1 PRG:21C1 A0 03 + jsr AudioChannelLoop ; CPU:$A1C3 PRG:21C3 20 63 BE + ldy #$07 ; CPU:$A1C6 PRG:21C6 A0 07 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_OnNonzero2: + lda #$F0 ; CPU:$A1C8 PRG:21C8 A9 F0 + jsr DelayFrames ; CPU:$A1CA PRG:21CA 20 F5 F7 + dey ; CPU:$A1CD PRG:21CD 88 + bne SpriteDraw_OnNonzero2 ; CPU:$A1CE PRG:21CE D0 F8 + lda #$5A ; CPU:$A1D0 PRG:21D0 A9 5A + jsr DelayFrames ; CPU:$A1D2 PRG:21D2 20 F5 F7 + rts ; CPU:$A1D5 PRG:21D5 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A1D6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A1D6: + lda GameMode ; CPU:$A1D6 PRG:21D6 A5 8C + beq SpriteDraw_Loop4 ; CPU:$A1D8 PRG:21D8 F0 01 + rts ; CPU:$A1DA PRG:21DA 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_Loop4: + lda #$00 ; CPU:$A1DB PRG:21DB A9 00 + ldy #$03 ; CPU:$A1DD PRG:21DD A0 03 + jsr AudioChannelLoop ; CPU:$A1DF PRG:21DF 20 63 BE + jsr EventInit ; CPU:$A1E2 PRG:21E2 20 7C EF + lda #$02 ; CPU:$A1E5 PRG:21E5 A9 02 + sta Zp2C ; CPU:$A1E7 PRG:21E7 85 2C + jsr FrameDelay ; CPU:$A1E9 PRG:21E9 20 E6 F8 + lda #$03 ; CPU:$A1EC PRG:21EC A9 03 + jsr DelayFrames ; CPU:$A1EE PRG:21EE 20 F5 F7 + ldy #$00 ; CPU:$A1F1 PRG:21F1 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_OnNonzero3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_OnNonzero3: + lda $BE43,y ; CPU:$A1F3 PRG:21F3 B9 43 BE + sta $039C,y ; CPU:$A1F6 PRG:21F6 99 9C 03 + iny ; CPU:$A1F9 PRG:21F9 C8 + cpy #$20 ; CPU:$A1FA PRG:21FA C0 20 + bne SpriteDraw_OnNonzero3 ; CPU:$A1FC PRG:21FC D0 F5 + lda $0392 ; CPU:$A1FE PRG:21FE AD 92 03 + and #$7F ; CPU:$A201 PRG:2201 29 7F + asl a ; CPU:$A203 PRG:2203 0A + asl a ; CPU:$A204 PRG:2204 0A + tay ; CPU:$A205 PRG:2205 A8 + lda $9B0C,y ; CPU:$A206 PRG:2206 B9 0C 9B + sta $03B9 ; CPU:$A209 PRG:2209 8D B9 03 + lda $9B0D,y ; CPU:$A20C PRG:220C B9 0D 9B + sta $03BA ; CPU:$A20F PRG:220F 8D BA 03 + lda $9B0E,y ; CPU:$A212 PRG:2212 B9 0E 9B + sta $03BB ; CPU:$A215 PRG:2215 8D BB 03 + lda #$01 ; CPU:$A218 PRG:2218 A9 01 + sta Zp29 ; CPU:$A21A PRG:221A 85 29 + lda #$03 ; CPU:$A21C PRG:221C A9 03 + jsr DelayFrames ; CPU:$A21E PRG:221E 20 F5 F7 + jsr Sub_EFC6 ; CPU:$A221 PRG:2221 20 C6 EF + lda #$78 ; CPU:$A224 PRG:2224 A9 78 + sta $0405 ; CPU:$A226 PRG:2226 8D 05 04 + lda #$80 ; CPU:$A229 PRG:2229 A9 80 + sta $0404 ; CPU:$A22B PRG:222B 8D 04 04 + lda $0392 ; CPU:$A22E PRG:222E AD 92 03 + and #$7F ; CPU:$A231 PRG:2231 29 7F + jsr Sub_96CC ; CPU:$A233 PRG:2233 20 CC 96 + lda #$05 ; CPU:$A236 PRG:2236 A9 05 + jsr DelayFrames ; CPU:$A238 PRG:2238 20 F5 F7 + lda #$00 ; CPU:$A23B PRG:223B A9 00 + jsr ObjectState ; CPU:$A23D PRG:223D 20 DD A2 + lda #$40 ; CPU:$A240 PRG:2240 A9 40 + jsr DelayFrames ; CPU:$A242 PRG:2242 20 F5 F7 + ldy #$04 ; CPU:$A245 PRG:2245 A0 04 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_OnNonzero4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_OnNonzero4: + lda #$01 ; CPU:$A247 PRG:2247 A9 01 + jsr ObjectState ; CPU:$A249 PRG:2249 20 DD A2 + lda #$08 ; CPU:$A24C PRG:224C A9 08 + jsr DelayFrames ; CPU:$A24E PRG:224E 20 F5 F7 + lda #$02 ; CPU:$A251 PRG:2251 A9 02 + jsr ObjectState ; CPU:$A253 PRG:2253 20 DD A2 + lda #$10 ; CPU:$A256 PRG:2256 A9 10 + jsr DelayFrames ; CPU:$A258 PRG:2258 20 F5 F7 + lda #$01 ; CPU:$A25B PRG:225B A9 01 + jsr ObjectState ; CPU:$A25D PRG:225D 20 DD A2 + lda #$07 ; CPU:$A260 PRG:2260 A9 07 + jsr DelayFrames ; CPU:$A262 PRG:2262 20 F5 F7 + dey ; CPU:$A265 PRG:2265 88 + bne SpriteDraw_OnNonzero4 ; CPU:$A266 PRG:2266 D0 DF + lda #$03 ; CPU:$A268 PRG:2268 A9 03 + jsr ObjectState ; CPU:$A26A PRG:226A 20 DD A2 + lda #$20 ; CPU:$A26D PRG:226D A9 20 + jsr DelayFrames ; CPU:$A26F PRG:226F 20 F5 F7 + ldy #$04 ; CPU:$A272 PRG:2272 A0 04 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_OnNonzero5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_OnNonzero5: + lda #$04 ; CPU:$A274 PRG:2274 A9 04 + jsr ObjectState ; CPU:$A276 PRG:2276 20 DD A2 + lda #$07 ; CPU:$A279 PRG:2279 A9 07 + jsr DelayFrames ; CPU:$A27B PRG:227B 20 F5 F7 + lda #$05 ; CPU:$A27E PRG:227E A9 05 + jsr ObjectState ; CPU:$A280 PRG:2280 20 DD A2 + lda #$0F ; CPU:$A283 PRG:2283 A9 0F + jsr DelayFrames ; CPU:$A285 PRG:2285 20 F5 F7 + lda #$04 ; CPU:$A288 PRG:2288 A9 04 + jsr ObjectState ; CPU:$A28A PRG:228A 20 DD A2 + lda #$07 ; CPU:$A28D PRG:228D A9 07 + jsr DelayFrames ; CPU:$A28F PRG:228F 20 F5 F7 + dey ; CPU:$A292 PRG:2292 88 + bne SpriteDraw_OnNonzero5 ; CPU:$A293 PRG:2293 D0 DF + lda #$03 ; CPU:$A295 PRG:2295 A9 03 + jsr ObjectState ; CPU:$A297 PRG:2297 20 DD A2 + lda #$10 ; CPU:$A29A PRG:229A A9 10 + jsr DelayFrames ; CPU:$A29C PRG:229C 20 F5 F7 + ldy #$04 ; CPU:$A29F PRG:229F A0 04 +; ----------------------------------------------------------------------------- +; Routine: SpriteDraw_OnNonzero6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteDraw_OnNonzero6: + lda #$06 ; CPU:$A2A1 PRG:22A1 A9 06 + jsr ObjectState ; CPU:$A2A3 PRG:22A3 20 DD A2 + lda #$07 ; CPU:$A2A6 PRG:22A6 A9 07 + jsr DelayFrames ; CPU:$A2A8 PRG:22A8 20 F5 F7 + lda #$07 ; CPU:$A2AB PRG:22AB A9 07 + jsr ObjectState ; CPU:$A2AD PRG:22AD 20 DD A2 + lda #$0F ; CPU:$A2B0 PRG:22B0 A9 0F + jsr DelayFrames ; CPU:$A2B2 PRG:22B2 20 F5 F7 + lda #$06 ; CPU:$A2B5 PRG:22B5 A9 06 + jsr ObjectState ; CPU:$A2B7 PRG:22B7 20 DD A2 + lda #$07 ; CPU:$A2BA PRG:22BA A9 07 + jsr DelayFrames ; CPU:$A2BC PRG:22BC 20 F5 F7 + dey ; CPU:$A2BF PRG:22BF 88 + bne SpriteDraw_OnNonzero6 ; CPU:$A2C0 PRG:22C0 D0 DF + lda #$03 ; CPU:$A2C2 PRG:22C2 A9 03 + jsr ObjectState ; CPU:$A2C4 PRG:22C4 20 DD A2 + lda #$10 ; CPU:$A2C7 PRG:22C7 A9 10 + jsr DelayFrames ; CPU:$A2C9 PRG:22C9 20 F5 F7 + lda #$00 ; CPU:$A2CC PRG:22CC A9 00 + jsr ObjectState ; CPU:$A2CE PRG:22CE 20 DD A2 + lda #$40 ; CPU:$A2D1 PRG:22D1 A9 40 + jsr DelayFrames ; CPU:$A2D3 PRG:22D3 20 F5 F7 + jsr Sub_FC4E ; CPU:$A2D6 PRG:22D6 20 4E FC + jsr EventInit ; CPU:$A2D9 PRG:22D9 20 7C EF + rts ; CPU:$A2DC PRG:22DC 60 +; ----------------------------------------------------------------------------- +; Routine: ObjectState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState: + sta Zp17 ; CPU:$A2DD PRG:22DD 85 17 + tya ; CPU:$A2DF PRG:22DF 98 + pha ; CPU:$A2E0 PRG:22E0 48 + lda Zp17 ; CPU:$A2E1 PRG:22E1 A5 17 + pha ; CPU:$A2E3 PRG:22E3 48 + ldy Zp17 ; CPU:$A2E4 PRG:22E4 A4 17 + lda #$01 ; CPU:$A2E6 PRG:22E6 A9 01 + sta $0478 ; CPU:$A2E8 PRG:22E8 8D 78 04 + lda #$00 ; CPU:$A2EB PRG:22EB A9 00 + sta $0183 ; CPU:$A2ED PRG:22ED 8D 83 01 + lda $A8C0,y ; CPU:$A2F0 PRG:22F0 B9 C0 A8 + jsr ObjectUpdate ; CPU:$A2F3 PRG:22F3 20 92 A7 + lda #$0B ; CPU:$A2F6 PRG:22F6 A9 0B + ldy #$05 ; CPU:$A2F8 PRG:22F8 A0 05 + jsr EventState ; CPU:$A2FA PRG:22FA 20 70 A8 + pla ; CPU:$A2FD PRG:22FD 68 + asl a ; CPU:$A2FE PRG:22FE 0A + asl a ; CPU:$A2FF PRG:22FF 0A + asl a ; CPU:$A300 PRG:2300 0A + sta Zp10 ; CPU:$A301 PRG:2301 85 10 + lda $0392 ; CPU:$A303 PRG:2303 AD 92 03 + and #$7F ; CPU:$A306 PRG:2306 29 7F + clc ; CPU:$A308 PRG:2308 18 + adc Zp10 ; CPU:$A309 PRG:2309 65 10 + tay ; CPU:$A30B PRG:230B A8 + lda #$0B ; CPU:$A30C PRG:230C A9 0B + sta $0478 ; CPU:$A30E PRG:230E 8D 78 04 + lda $A880,y ; CPU:$A311 PRG:2311 B9 80 A8 + jsr Sub_A789 ; CPU:$A314 PRG:2314 20 89 A7 + pla ; CPU:$A317 PRG:2317 68 + tay ; CPU:$A318 PRG:2318 A8 + rts ; CPU:$A319 PRG:2319 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A31A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A31A: + lda Zp76 ; CPU:$A31A PRG:231A A5 76 + cmp #$01 ; CPU:$A31C PRG:231C C9 01 + beq ObjectState_Loop ; CPU:$A31E PRG:231E F0 0E + lda $040A ; CPU:$A320 PRG:2320 AD 0A 04 + and #$02 ; CPU:$A323 PRG:2323 29 02 + beq ObjectState_Loop ; CPU:$A325 PRG:2325 F0 07 + lda #$00 ; CPU:$A327 PRG:2327 A9 00 + sta $0413 ; CPU:$A329 PRG:2329 8D 13 04 + beq ObjectState_Loop2 ; CPU:$A32C PRG:232C F0 05 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop: + lda #$80 ; CPU:$A32E PRG:232E A9 80 + sta $0413 ; CPU:$A330 PRG:2330 8D 13 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop2: + lda $0404 ; CPU:$A333 PRG:2333 AD 04 04 + clc ; CPU:$A336 PRG:2336 18 + adc #$06 ; CPU:$A337 PRG:2337 69 06 + sta $0414 ; CPU:$A339 PRG:2339 8D 14 04 + lda $0405 ; CPU:$A33C PRG:233C AD 05 04 + sta $0415 ; CPU:$A33F PRG:233F 8D 15 04 + lda Zp77 ; CPU:$A342 PRG:2342 A5 77 + cmp #$01 ; CPU:$A344 PRG:2344 C9 01 + beq ObjectState_Loop3 ; CPU:$A346 PRG:2346 F0 0E + lda $0412 ; CPU:$A348 PRG:2348 AD 12 04 + and #$02 ; CPU:$A34B PRG:234B 29 02 + beq ObjectState_Loop3 ; CPU:$A34D PRG:234D F0 07 + lda #$00 ; CPU:$A34F PRG:234F A9 00 + sta $041B ; CPU:$A351 PRG:2351 8D 1B 04 + beq ObjectState_Loop4 ; CPU:$A354 PRG:2354 F0 05 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop3: + lda #$80 ; CPU:$A356 PRG:2356 A9 80 + sta $041B ; CPU:$A358 PRG:2358 8D 1B 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop4: + lda $040C ; CPU:$A35B PRG:235B AD 0C 04 + clc ; CPU:$A35E PRG:235E 18 + adc #$06 ; CPU:$A35F PRG:235F 69 06 + sta $041C ; CPU:$A361 PRG:2361 8D 1C 04 + lda $040D ; CPU:$A364 PRG:2364 AD 0D 04 + sta $041D ; CPU:$A367 PRG:2367 8D 1D 04 + lda #$04 ; CPU:$A36A PRG:236A A9 04 + sta $0417 ; CPU:$A36C PRG:236C 8D 17 04 + sta $041F ; CPU:$A36F PRG:236F 8D 1F 04 + lda #$20 ; CPU:$A372 PRG:2372 A9 20 + sta $0418 ; CPU:$A374 PRG:2374 8D 18 04 + sta $0420 ; CPU:$A377 PRG:2377 8D 20 04 + jsr Sub_D077 ; CPU:$A37A PRG:237A 20 77 D0 + rts ; CPU:$A37D PRG:237D 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A37E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A37E: + lda GameMode ; CPU:$A37E PRG:237E A5 8C + cmp #$01 ; CPU:$A380 PRG:2380 C9 01 + bne ObjectState_Loop6 ; CPU:$A382 PRG:2382 D0 37 + lda Zp76 ; CPU:$A384 PRG:2384 A5 76 + cmp #$01 ; CPU:$A386 PRG:2386 C9 01 + beq ObjectState_Loop6 ; CPU:$A388 PRG:2388 F0 31 + lda $0413 ; CPU:$A38A PRG:238A AD 13 04 + and #$01 ; CPU:$A38D PRG:238D 29 01 + beq ObjectState_Loop6 ; CPU:$A38F PRG:238F F0 2A + lda #$00 ; CPU:$A391 PRG:2391 A9 00 + sta $017B ; CPU:$A393 PRG:2393 8D 7B 01 + sta $0385 ; CPU:$A396 PRG:2396 8D 85 03 + ldy $0183 ; CPU:$A399 PRG:2399 AC 83 01 + lda $0408,y ; CPU:$A39C PRG:239C B9 08 04 + cmp #$0D ; CPU:$A39F PRG:239F C9 0D + beq ObjectState_Loop5 ; CPU:$A3A1 PRG:23A1 F0 0E + cmp #$01 ; CPU:$A3A3 PRG:23A3 C9 01 + beq ObjectState_Loop5 ; CPU:$A3A5 PRG:23A5 F0 0A + cmp #$03 ; CPU:$A3A7 PRG:23A7 C9 03 + beq ObjectState_Loop5 ; CPU:$A3A9 PRG:23A9 F0 06 + cmp #$04 ; CPU:$A3AB PRG:23AB C9 04 + beq ObjectState_Loop5 ; CPU:$A3AD PRG:23AD F0 02 + bne ObjectState_Loop6 ; CPU:$A3AF PRG:23AF D0 0A +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop5: + lda $0303 ; CPU:$A3B1 PRG:23B1 AD 03 03 + and #$08 ; CPU:$A3B4 PRG:23B4 29 08 + beq ObjectState_Loop6 ; CPU:$A3B6 PRG:23B6 F0 03 + jmp Sub_91CF ; CPU:$A3B8 PRG:23B8 4C CF 91 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop6: + rts ; CPU:$A3BB PRG:23BB 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A3BC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A3BC: + lda GameMode ; CPU:$A3BC PRG:23BC A5 8C + cmp #$01 ; CPU:$A3BE PRG:23BE C9 01 + bne ObjectState_Loop8 ; CPU:$A3C0 PRG:23C0 D0 34 + lda Zp77 ; CPU:$A3C2 PRG:23C2 A5 77 + cmp #$01 ; CPU:$A3C4 PRG:23C4 C9 01 + beq ObjectState_Loop8 ; CPU:$A3C6 PRG:23C6 F0 2E + lda $041B ; CPU:$A3C8 PRG:23C8 AD 1B 04 + and #$01 ; CPU:$A3CB PRG:23CB 29 01 + beq ObjectState_Loop8 ; CPU:$A3CD PRG:23CD F0 27 + lda #$00 ; CPU:$A3CF PRG:23CF A9 00 + sta $017C ; CPU:$A3D1 PRG:23D1 8D 7C 01 + sta $0381 ; CPU:$A3D4 PRG:23D4 8D 81 03 + lda $0410 ; CPU:$A3D7 PRG:23D7 AD 10 04 + cmp #$0D ; CPU:$A3DA PRG:23DA C9 0D + beq ObjectState_Loop7 ; CPU:$A3DC PRG:23DC F0 0E + cmp #$01 ; CPU:$A3DE PRG:23DE C9 01 + beq ObjectState_Loop7 ; CPU:$A3E0 PRG:23E0 F0 0A + cmp #$03 ; CPU:$A3E2 PRG:23E2 C9 03 + beq ObjectState_Loop7 ; CPU:$A3E4 PRG:23E4 F0 06 + cmp #$04 ; CPU:$A3E6 PRG:23E6 C9 04 + beq ObjectState_Loop7 ; CPU:$A3E8 PRG:23E8 F0 02 + bne ObjectState_Loop8 ; CPU:$A3EA PRG:23EA D0 0A +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop7: + lda $0303 ; CPU:$A3EC PRG:23EC AD 03 03 + and #$08 ; CPU:$A3EF PRG:23EF 29 08 + beq ObjectState_Loop8 ; CPU:$A3F1 PRG:23F1 F0 03 + jmp Sub_91CF ; CPU:$A3F3 PRG:23F3 4C CF 91 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop8: + rts ; CPU:$A3F6 PRG:23F6 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A3F7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A3F7: + inc $017A ; CPU:$A3F7 PRG:23F7 EE 7A 01 + lda $017A ; CPU:$A3FA PRG:23FA AD 7A 01 + cmp #$3C ; CPU:$A3FD PRG:23FD C9 3C + bcc ObjectState_Loop9 ; CPU:$A3FF PRG:23FF 90 1D + lda $03BC ; CPU:$A401 PRG:2401 AD BC 03 + sta $017B ; CPU:$A404 PRG:2404 8D 7B 01 + sta $0385 ; CPU:$A407 PRG:2407 8D 85 03 + lda $03BD ; CPU:$A40A PRG:240A AD BD 03 + sta $017C ; CPU:$A40D PRG:240D 8D 7C 01 + sta $0381 ; CPU:$A410 PRG:2410 8D 81 03 + lda #$00 ; CPU:$A413 PRG:2413 A9 00 + sta $017A ; CPU:$A415 PRG:2415 8D 7A 01 + sta $03BC ; CPU:$A418 PRG:2418 8D BC 03 + sta $03BD ; CPU:$A41B PRG:241B 8D BD 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop9: + lda $017B ; CPU:$A41E PRG:241E AD 7B 01 + sec ; CPU:$A421 PRG:2421 38 + sbc #$07 ; CPU:$A422 PRG:2422 E9 07 + sta $0385 ; CPU:$A424 PRG:2424 8D 85 03 + bcs ObjectState_Loop10 ; CPU:$A427 PRG:2427 B0 05 + lda #$00 ; CPU:$A429 PRG:2429 A9 00 + sta $0385 ; CPU:$A42B PRG:242B 8D 85 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop10: + lda $017B ; CPU:$A42E PRG:242E AD 7B 01 + cmp #$05 ; CPU:$A431 PRG:2431 C9 05 + bcc ObjectState_Loop11 ; CPU:$A433 PRG:2433 90 0B + lda $040A ; CPU:$A435 PRG:2435 AD 0A 04 + ora #$80 ; CPU:$A438 PRG:2438 09 80 + sta $040A ; CPU:$A43A PRG:243A 8D 0A 04 + jmp Sub_A448 ; CPU:$A43D PRG:243D 4C 48 A4 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop11: + lda $040A ; CPU:$A440 PRG:2440 AD 0A 04 + and #$7F ; CPU:$A443 PRG:2443 29 7F + sta $040A ; CPU:$A445 PRG:2445 8D 0A 04 +; ----------------------------------------------------------------------------- +; Routine: Sub_A448 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A448: + lda Zp4F ; CPU:$A448 PRG:2448 A5 4F + cmp #$05 ; CPU:$A44A PRG:244A C9 05 + beq ObjectState_Loop12 ; CPU:$A44C PRG:244C F0 05 + lda #$00 ; CPU:$A44E PRG:244E A9 00 + sta $0385 ; CPU:$A450 PRG:2450 8D 85 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop12: + lda Zp5F ; CPU:$A453 PRG:2453 A5 5F + cmp #$05 ; CPU:$A455 PRG:2455 C9 05 + beq ObjectState_Loop13 ; CPU:$A457 PRG:2457 F0 05 + lda #$00 ; CPU:$A459 PRG:2459 A9 00 + sta $0381 ; CPU:$A45B PRG:245B 8D 81 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop13: + rts ; CPU:$A45E PRG:245E 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A45F +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A45F: + lda $017C ; CPU:$A45F PRG:245F AD 7C 01 + sec ; CPU:$A462 PRG:2462 38 + sbc #$07 ; CPU:$A463 PRG:2463 E9 07 + sta $0381 ; CPU:$A465 PRG:2465 8D 81 03 + bcs ObjectState_Loop14 ; CPU:$A468 PRG:2468 B0 05 + lda #$00 ; CPU:$A46A PRG:246A A9 00 + sta $0381 ; CPU:$A46C PRG:246C 8D 81 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop14: + lda $017C ; CPU:$A46F PRG:246F AD 7C 01 + cmp #$05 ; CPU:$A472 PRG:2472 C9 05 + bcc ObjectState_Loop15 ; CPU:$A474 PRG:2474 90 0B + lda $0412 ; CPU:$A476 PRG:2476 AD 12 04 + ora #$80 ; CPU:$A479 PRG:2479 09 80 + sta $0412 ; CPU:$A47B PRG:247B 8D 12 04 + jmp Sub_A448 ; CPU:$A47E PRG:247E 4C 48 A4 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop15: + lda $0412 ; CPU:$A481 PRG:2481 AD 12 04 + and #$7F ; CPU:$A484 PRG:2484 29 7F + sta $0412 ; CPU:$A486 PRG:2486 8D 12 04 + jmp Sub_A448 ; CPU:$A489 PRG:2489 4C 48 A4 +; ----------------------------------------------------------------------------- +; Routine: Sub_A48C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A48C: + lda GameMode ; CPU:$A48C PRG:248C A5 8C + cmp #$02 ; CPU:$A48E PRG:248E C9 02 + bcs ObjectState_Loop16 ; CPU:$A490 PRG:2490 B0 33 + lda Zp51 ; CPU:$A492 PRG:2492 A5 51 + and #$80 ; CPU:$A494 PRG:2494 29 80 + bne ObjectState_Loop16 ; CPU:$A496 PRG:2496 D0 2D + lda Zp61 ; CPU:$A498 PRG:2498 A5 61 + and #$80 ; CPU:$A49A PRG:249A 29 80 + bne ObjectState_Loop16 ; CPU:$A49C PRG:249C D0 27 + lda $046F ; CPU:$A49E PRG:249E AD 6F 04 + cmp $0470 ; CPU:$A4A1 PRG:24A1 CD 70 04 + beq ObjectState_Loop16 ; CPU:$A4A4 PRG:24A4 F0 1F + bcs ObjectState_Loop17 ; CPU:$A4A6 PRG:24A6 B0 1E + lda $0404 ; CPU:$A4A8 PRG:24A8 AD 04 04 + sta Zp08 ; CPU:$A4AB PRG:24AB 85 08 + lda #$C0 ; CPU:$A4AD PRG:24AD A9 C0 + sta $0404 ; CPU:$A4AF PRG:24AF 8D 04 04 + lda #$B8 ; CPU:$A4B2 PRG:24B2 A9 B8 + sta $040C ; CPU:$A4B4 PRG:24B4 8D 0C 04 + lda $0404 ; CPU:$A4B7 PRG:24B7 AD 04 04 + cmp Zp08 ; CPU:$A4BA PRG:24BA C5 08 + beq ObjectState_Loop16 ; CPU:$A4BC PRG:24BC F0 07 + lda #$2A ; CPU:$A4BE PRG:24BE A9 2A + ldy #$03 ; CPU:$A4C0 PRG:24C0 A0 03 + jsr AudioChannelLoop ; CPU:$A4C2 PRG:24C2 20 63 BE +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop16: + rts ; CPU:$A4C5 PRG:24C5 60 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop17: + lda $040C ; CPU:$A4C6 PRG:24C6 AD 0C 04 + sta Zp08 ; CPU:$A4C9 PRG:24C9 85 08 + lda #$C0 ; CPU:$A4CB PRG:24CB A9 C0 + sta $040C ; CPU:$A4CD PRG:24CD 8D 0C 04 + lda #$B8 ; CPU:$A4D0 PRG:24D0 A9 B8 + sta $0404 ; CPU:$A4D2 PRG:24D2 8D 04 04 + lda $040C ; CPU:$A4D5 PRG:24D5 AD 0C 04 + cmp Zp08 ; CPU:$A4D8 PRG:24D8 C5 08 + beq ObjectState_Loop18 ; CPU:$A4DA PRG:24DA F0 07 + lda #$2A ; CPU:$A4DC PRG:24DC A9 2A + ldy #$03 ; CPU:$A4DE PRG:24DE A0 03 + jsr AudioChannelLoop ; CPU:$A4E0 PRG:24E0 20 63 BE +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop18: + rts ; CPU:$A4E3 PRG:24E3 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A4E4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A4E4: + ldy $0184 ; CPU:$A4E4 PRG:24E4 AC 84 01 + lda $017B,y ; CPU:$A4E7 PRG:24E7 B9 7B 01 + and #$1F ; CPU:$A4EA PRG:24EA 29 1F + tay ; CPU:$A4EC PRG:24EC A8 + lda $A54B,y ; CPU:$A4ED PRG:24ED B9 4B A5 + sta $037E ; CPU:$A4F0 PRG:24F0 8D 7E 03 + lda $0184 ; CPU:$A4F3 PRG:24F3 AD 84 01 + bne ObjectState_Loop23 ; CPU:$A4F6 PRG:24F6 D0 4E + lda $0390 ; CPU:$A4F8 PRG:24F8 AD 90 03 + ora #$80 ; CPU:$A4FB PRG:24FB 09 80 + and #$CF ; CPU:$A4FD PRG:24FD 29 CF + sta $0390 ; CPU:$A4FF PRG:24FF 8D 90 03 + lda $0305 ; CPU:$A502 PRG:2502 AD 05 03 + and #$77 ; CPU:$A505 PRG:2505 29 77 + sta $0383 ; CPU:$A507 PRG:2507 8D 83 03 + lda #$00 ; CPU:$A50A PRG:250A A9 00 + sta $0382 ; CPU:$A50C PRG:250C 8D 82 03 + lda $030A ; CPU:$A50F PRG:250F AD 0A 03 + bne ObjectState_Loop20 ; CPU:$A512 PRG:2512 D0 13 + lda #$00 ; CPU:$A514 PRG:2514 A9 00 + sta $0384 ; CPU:$A516 PRG:2516 8D 84 03 + lda GameMode ; CPU:$A519 PRG:2519 A5 8C + cmp #$03 ; CPU:$A51B PRG:251B C9 03 + bne ObjectState_Loop19 ; CPU:$A51D PRG:251D D0 05 + lda #$03 ; CPU:$A51F PRG:251F A9 03 + sta $0384 ; CPU:$A521 PRG:2521 8D 84 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop19: + jmp ObjectState_Loop22 ; CPU:$A524 PRG:2524 4C 39 A5 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop20: + lda GameMode ; CPU:$A527 PRG:2527 A5 8C + cmp #$03 ; CPU:$A529 PRG:2529 C9 03 + bne ObjectState_Loop21 ; CPU:$A52B PRG:252B D0 07 + lda #$04 ; CPU:$A52D PRG:252D A9 04 + sta $0384 ; CPU:$A52F PRG:252F 8D 84 03 + bne ObjectState_Loop22 ; CPU:$A532 PRG:2532 D0 05 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop21: + lda #$01 ; CPU:$A534 PRG:2534 A9 01 + sta $0384 ; CPU:$A536 PRG:2536 8D 84 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop22: + ldy $0480 ; CPU:$A539 PRG:2539 AC 80 04 + lda $A547,y ; CPU:$A53C PRG:253C B9 47 A5 + clc ; CPU:$A53F PRG:253F 18 + adc $0384 ; CPU:$A540 PRG:2540 6D 84 03 + sta $0384 ; CPU:$A543 PRG:2543 8D 84 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectState_Loop23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectState_Loop23: + rts ; CPU:$A546 PRG:2546 60 +; ---- data $A547-$A56E (40 bytes) ---- +; referenced by `lda $A54B,y` at $A4ED (operand $A54B falls inside this region) +; referenced by `lda $A547,y` at $A53C (operand $A547 falls inside this region) + .byte $00, $00, $02, $03, $11, $31, $71, $81, $91, $22, $42, $62, $23, $43, $63, $83 ; CPU:$A547 PRG:2547 00 00 02 03 11 31 71 81 91 22 42 62 23 43 63 83 + .byte $44, $85, $36, $86, $37, $77, $28, $48, $58, $68, $78, $19, $29, $39, $49, $59 ; CPU:$A557 PRG:2557 44 85 36 86 37 77 28 48 58 68 78 19 29 39 49 59 + .byte $69, $69, $79, $79, $89, $89, $99, $99 ; CPU:$A567 PRG:2567 69 69 79 79 89 89 99 99 +; ----------------------------------------------------------------------------- +; Routine: ObjectDraw +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectDraw: + sta Zp08 ; CPU:$A56F PRG:256F 85 08 + ldy GameMode ; CPU:$A571 PRG:2571 A4 8C + lda $A5CC,y ; CPU:$A573 PRG:2573 B9 CC A5 + sta Zp09 ; CPU:$A576 PRG:2576 85 09 + lda $A5D0,y ; CPU:$A578 PRG:2578 B9 D0 A5 + sta Zp0A ; CPU:$A57B PRG:257B 85 0A + lda $0184 ; CPU:$A57D PRG:257D AD 84 01 + clc ; CPU:$A580 PRG:2580 18 + adc #$32 ; CPU:$A581 PRG:2581 69 32 + jsr Sub_FC39 ; CPU:$A583 PRG:2583 20 39 FC + lda $0184 ; CPU:$A586 PRG:2586 AD 84 01 + beq ObjectDraw_Loop ; CPU:$A589 PRG:2589 F0 07 + lda Zp08 ; CPU:$A58B PRG:258B A5 08 + clc ; CPU:$A58D PRG:258D 18 + adc #$05 ; CPU:$A58E PRG:258E 69 05 + sta Zp08 ; CPU:$A590 PRG:2590 85 08 +; ----------------------------------------------------------------------------- +; Routine: ObjectDraw_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectDraw_Loop: + ldy $0184 ; CPU:$A592 PRG:2592 AC 84 01 + lda $046F,y ; CPU:$A595 PRG:2595 B9 6F 04 + cmp Zp09 ; CPU:$A598 PRG:2598 C5 09 + bcc ObjectDraw_Loop2 ; CPU:$A59A PRG:259A 90 02 + lda Zp09 ; CPU:$A59C PRG:259C A5 09 +; ----------------------------------------------------------------------------- +; Routine: ObjectDraw_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectDraw_Loop2: + sta Zp11 ; CPU:$A59E PRG:259E 85 11 + lda #$2B ; CPU:$A5A0 PRG:25A0 A9 2B + sta Zp12 ; CPU:$A5A2 PRG:25A2 85 12 + lda Zp0A ; CPU:$A5A4 PRG:25A4 A5 0A + clc ; CPU:$A5A6 PRG:25A6 18 + adc Zp11 ; CPU:$A5A7 PRG:25A7 65 11 + sta Zp13 ; CPU:$A5A9 PRG:25A9 85 13 + lda #$A5 ; CPU:$A5AB PRG:25AB A9 A5 + sta Zp15 ; CPU:$A5AD PRG:25AD 85 15 + lda Zp08 ; CPU:$A5AF PRG:25AF A5 08 + asl a ; CPU:$A5B1 PRG:25B1 0A + asl a ; CPU:$A5B2 PRG:25B2 0A + sta Zp14 ; CPU:$A5B3 PRG:25B3 85 14 + lda #$D4 ; CPU:$A5B5 PRG:25B5 A9 D4 + clc ; CPU:$A5B7 PRG:25B7 18 + adc Zp14 ; CPU:$A5B8 PRG:25B8 65 14 + sta Zp14 ; CPU:$A5BA PRG:25BA 85 14 + lda Zp15 ; CPU:$A5BC PRG:25BC A5 15 + adc #$00 ; CPU:$A5BE PRG:25BE 69 00 + sta Zp15 ; CPU:$A5C0 PRG:25C0 85 15 + lda #$32 ; CPU:$A5C2 PRG:25C2 A9 32 + clc ; CPU:$A5C4 PRG:25C4 18 + adc $0184 ; CPU:$A5C5 PRG:25C5 6D 84 01 + jsr Sub_FB97 ; CPU:$A5C8 PRG:25C8 20 97 FB + rts ; CPU:$A5CB PRG:25CB 60 +; ---- data $A5CC-$A613 (72 bytes) ---- +; referenced by `lda $A5CC,y` at $A573 (operand $A5CC falls inside this region) +; referenced by `lda $A5D0,y` at $A578 (operand $A5D0 falls inside this region) + .byte $B0, $B0, $6E, $92, $26, $26, $2E, $0E, $00, $00, $00, $00, $00, $00, $02, $00 ; CPU:$A5CC PRG:25CC B0 B0 6E 92 26 26 2E 0E 00 00 00 00 00 00 02 00 + .byte $FF, $00, $04, $00, $FD, $00, $06, $00, $FF, $00, $08, $00, $00, $00, $00, $03 ; CPU:$A5DC PRG:25DC FF 00 04 00 FD 00 06 00 FF 00 08 00 00 00 00 03 + .byte $00, $00, $02, $03, $FF, $00, $04, $03, $FD, $00, $06, $03, $FF, $00, $08, $03 ; CPU:$A5EC PRG:25EC 00 00 02 03 FF 00 04 03 FD 00 06 03 FF 00 08 03 + .byte $00, $00, $C3, $00, $00, $00, $C3, $00, $00, $00, $C3, $00, $00, $00, $C3, $00 ; CPU:$A5FC PRG:25FC 00 00 C3 00 00 00 C3 00 00 00 C3 00 00 00 C3 00 + .byte $00, $00, $C3, $00, $00, $00, $C3, $03 ; CPU:$A60C PRG:260C 00 00 C3 00 00 00 C3 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_A614 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A614: + ldy $0184 ; CPU:$A614 PRG:2614 AC 84 01 + lda $046D,y ; CPU:$A617 PRG:2617 B9 6D 04 + clc ; CPU:$A61A PRG:261A 18 + adc #$01 ; CPU:$A61B PRG:261B 69 01 + sta $046D,y ; CPU:$A61D PRG:261D 99 6D 04 + lda $046F ; CPU:$A620 PRG:2620 AD 6F 04 + cmp $0470 ; CPU:$A623 PRG:2623 CD 70 04 + bcc ObjectDraw_Loop3 ; CPU:$A626 PRG:2626 90 08 + lda $046F ; CPU:$A628 PRG:2628 AD 6F 04 + sta Zp08 ; CPU:$A62B PRG:262B 85 08 + jmp Sub_A635 ; CPU:$A62D PRG:262D 4C 35 A6 +; ----------------------------------------------------------------------------- +; Routine: ObjectDraw_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectDraw_Loop3: + lda $0470 ; CPU:$A630 PRG:2630 AD 70 04 + sta Zp08 ; CPU:$A633 PRG:2633 85 08 +; ----------------------------------------------------------------------------- +; Routine: Sub_A635 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A635: + lda Zp08 ; CPU:$A635 PRG:2635 A5 08 + and #$1F ; CPU:$A637 PRG:2637 29 1F + cmp #$10 ; CPU:$A639 PRG:2639 C9 10 + beq ObjectDraw_Loop4 ; CPU:$A63B PRG:263B F0 06 + lda #$00 ; CPU:$A63D PRG:263D A9 00 + sta $0185 ; CPU:$A63F PRG:263F 8D 85 01 + rts ; CPU:$A642 PRG:2642 60 +; ----------------------------------------------------------------------------- +; Routine: ObjectDraw_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectDraw_Loop4: + lda #$01 ; CPU:$A643 PRG:2643 A9 01 + sta $0185 ; CPU:$A645 PRG:2645 8D 85 01 + rts ; CPU:$A648 PRG:2648 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A649 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A649: + ldy $0184 ; CPU:$A649 PRG:2649 AC 84 01 + lda $0391,y ; CPU:$A64C PRG:264C B9 91 03 + beq ObjectDraw_Loop6 ; CPU:$A64F PRG:264F F0 2D + and #$80 ; CPU:$A651 PRG:2651 29 80 + bne ObjectDraw_Loop6 ; CPU:$A653 PRG:2653 D0 29 + lda $0480,y ; CPU:$A655 PRG:2655 B9 80 04 + cmp #$01 ; CPU:$A658 PRG:2658 C9 01 + beq ObjectDraw_Loop5 ; CPU:$A65A PRG:265A F0 13 + cmp #$02 ; CPU:$A65C PRG:265C C9 02 + beq ObjectDraw_Loop6 ; CPU:$A65E PRG:265E F0 1E + ldy $0184 ; CPU:$A660 PRG:2660 AC 84 01 + lda $017B,y ; CPU:$A663 PRG:2663 B9 7B 01 + tay ; CPU:$A666 PRG:2666 A8 + lda $A6D0,y ; CPU:$A667 PRG:2667 B9 D0 A6 + sta Zp05,x ; CPU:$A66A PRG:266A 95 05 + jmp Sub_A68A ; CPU:$A66C PRG:266C 4C 8A A6 +; ----------------------------------------------------------------------------- +; Routine: ObjectDraw_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectDraw_Loop5: + ldy $0184 ; CPU:$A66F PRG:266F AC 84 01 + lda $017B,y ; CPU:$A672 PRG:2672 B9 7B 01 + tay ; CPU:$A675 PRG:2675 A8 + lda $A690,y ; CPU:$A676 PRG:2676 B9 90 A6 + sta Zp05,x ; CPU:$A679 PRG:2679 95 05 + jmp Sub_A68A ; CPU:$A67B PRG:267B 4C 8A A6 +; ----------------------------------------------------------------------------- +; Routine: ObjectDraw_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectDraw_Loop6: + ldy $0184 ; CPU:$A67E PRG:267E AC 84 01 + lda $017B,y ; CPU:$A681 PRG:2681 B9 7B 01 + tay ; CPU:$A684 PRG:2684 A8 + lda $A6B0,y ; CPU:$A685 PRG:2685 B9 B0 A6 + sta Zp05,x ; CPU:$A688 PRG:2688 95 05 +; ----------------------------------------------------------------------------- +; Routine: Sub_A68A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A68A: + rts ; CPU:$A68A PRG:268A 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A68B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A68B: + lda Zp05,x ; CPU:$A68B PRG:268B B5 05 + sta SlotState,x ; CPU:$A68D PRG:268D 95 0C + rts ; CPU:$A68F PRG:268F 60 +; ---- data $A690-$A6EF (96 bytes) ---- +; referenced by `lda $A690,y` at $958C (operand $A690 falls inside this region) +; referenced by `lda $A6D0,y` at $A667 (operand $A6D0 falls inside this region) +; referenced by `lda $A690,y` at $A676 (operand $A690 falls inside this region) +; referenced by `lda $A6B0,y` at $A685 (operand $A6B0 falls inside this region) + .byte $08, $08, $07, $07, $06, $06, $05, $05, $05, $05, $04, $04, $04, $03, $03, $03 ; CPU:$A690 PRG:2690 08 08 07 07 06 06 05 05 05 05 04 04 04 03 03 03 + .byte $02, $02, $02, $02, $02, $02, $02, $02, $01, $01, $01, $01, $01, $01, $01, $01 ; CPU:$A6A0 PRG:26A0 02 02 02 02 02 02 02 02 01 01 01 01 01 01 01 01 + .byte $07, $07, $06, $06, $05, $05, $04, $04, $04, $04, $03, $03, $03, $02, $02, $02 ; CPU:$A6B0 PRG:26B0 07 07 06 06 05 05 04 04 04 04 03 03 03 02 02 02 + .byte $02, $02, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$A6C0 PRG:26C0 02 02 01 01 01 01 01 01 00 00 00 00 00 00 00 00 + .byte $06, $06, $05, $05, $04, $04, $03, $03, $03, $03, $02, $02, $02, $01, $01, $01 ; CPU:$A6D0 PRG:26D0 06 06 05 05 04 04 03 03 03 03 02 02 02 01 01 01 + .byte $01, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$A6E0 PRG:26E0 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_A6F0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A6F0: + sta $0436 ; CPU:$A6F0 PRG:26F0 8D 36 04 + lda $0404 ; CPU:$A6F3 PRG:26F3 AD 04 04 + sta $0434 ; CPU:$A6F6 PRG:26F6 8D 34 04 + lda $0405 ; CPU:$A6F9 PRG:26F9 AD 05 04 + sta $0435 ; CPU:$A6FC PRG:26FC 8D 35 04 + lda #$01 ; CPU:$A6FF PRG:26FF A9 01 + sta $0433 ; CPU:$A701 PRG:2701 8D 33 04 + rts ; CPU:$A704 PRG:2704 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A705 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A705: + lda $046F ; CPU:$A705 PRG:2705 AD 6F 04 + cmp #$33 ; CPU:$A708 PRG:2708 C9 33 + bcs ObjectDraw_Loop7 ; CPU:$A70A PRG:270A B0 01 + rts ; CPU:$A70C PRG:270C 60 +; ----------------------------------------------------------------------------- +; Routine: ObjectDraw_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectDraw_Loop7: + lda #$29 ; CPU:$A70D PRG:270D A9 29 + ldy #$01 ; CPU:$A70F PRG:270F A0 01 + jsr AudioChannelLoop ; CPU:$A711 PRG:2711 20 63 BE + lda #$01 ; CPU:$A714 PRG:2714 A9 01 + sta $0181 ; CPU:$A716 PRG:2716 8D 81 01 + rts ; CPU:$A719 PRG:2719 60 +; ---- data $A71A-$A788 (111 bytes) ---- +; referenced by `lda $A779,y` at $996F (operand $A779 falls inside this region) +; referenced by `lda $A779,y` at $99D1 (operand $A779 falls inside this region) +; referenced by `lda $A779,y` at $9B2D (operand $A779 falls inside this region) +; referenced by `lda $A779,y` at $9BB2 (operand $A779 falls inside this region) +; referenced by `lda $A779,y` at $9C06 (operand $A779 falls inside this region) + .byte $AD, $80, $01, $0A, $A8, $0A, $0A, $AA, $AD, $91, $03, $38, $E5, $83, $0A, $0A ; CPU:$A71A PRG:271A AD 80 01 0A A8 0A 0A AA AD 91 03 38 E5 83 0A 0A + .byte $0A, $0A, $85, $08, $8A, $18, $65, $08, $AA, $B9, $6B, $A7, $8D, $BF, $03, $C8 ; CPU:$A72A PRG:272A 0A 0A 85 08 8A 18 65 08 AA B9 6B A7 8D BF 03 C8 + .byte $B9, $6B, $A7, $8D, $C0, $03, $A9, $08, $8D, $C1, $03, $8A, $18, $69, $08, $AA ; CPU:$A73A PRG:273A B9 6B A7 8D C0 03 A9 08 8D C1 03 8A 18 69 08 AA + .byte $A0, $08, $B9, $70, $A7, $99, $C1, $03, $AD, $80, $01, $C9, $02, $F0, $06, $B9 ; CPU:$A74A PRG:274A A0 08 B9 70 A7 99 C1 03 AD 80 01 C9 02 F0 06 B9 + .byte $70, $A7, $9D, $83, $04, $CA, $88, $D0, $E9, $A9, $80, $8D, $BE, $03, $A2, $4B ; CPU:$A75A PRG:275A 70 A7 9D 83 04 CA 88 D0 E9 A9 80 8D BE 03 A2 4B + .byte $60, $58, $20, $98, $20, $D8, $20, $2A, $31, $38, $2F, $03, $03, $03, $03, $10 ; CPU:$A76A PRG:276A 60 58 20 98 20 D8 20 2A 31 38 2F 03 03 03 03 10 + .byte $11, $12, $13, $14, $15, $16, $17, $18, $19, $10, $11, $12, $13, $14, $15 ; CPU:$A77A PRG:277A 11 12 13 14 15 16 17 18 19 10 11 12 13 14 15 +; ----------------------------------------------------------------------------- +; Routine: Sub_A789 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A789: + pha ; CPU:$A789 PRG:2789 48 + lda #$00 ; CPU:$A78A PRG:278A A9 00 + sta $047D ; CPU:$A78C PRG:278C 8D 7D 04 + jmp Sub_A7AC ; CPU:$A78F PRG:278F 4C AC A7 +; ----------------------------------------------------------------------------- +; Routine: ObjectUpdate +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectUpdate: + pha ; CPU:$A792 PRG:2792 48 + lda #$0A ; CPU:$A793 PRG:2793 A9 0A + sta $047D ; CPU:$A795 PRG:2795 8D 7D 04 + lda $0478 ; CPU:$A798 PRG:2798 AD 78 04 + sta $047E ; CPU:$A79B PRG:279B 8D 7E 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectUpdate_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectUpdate_OnNonzero: + lda $047E ; CPU:$A79E PRG:279E AD 7E 04 + jsr Sub_FC39 ; CPU:$A7A1 PRG:27A1 20 39 FC + inc $047E ; CPU:$A7A4 PRG:27A4 EE 7E 04 + dec $047D ; CPU:$A7A7 PRG:27A7 CE 7D 04 + bne ObjectUpdate_OnNonzero ; CPU:$A7AA PRG:27AA D0 F2 +; ----------------------------------------------------------------------------- +; Routine: Sub_A7AC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A7AC: + lda #$00 ; CPU:$A7AC PRG:27AC A9 00 + sta Zp09 ; CPU:$A7AE PRG:27AE 85 09 + pla ; CPU:$A7B0 PRG:27B0 68 + sta Zp08 ; CPU:$A7B1 PRG:27B1 85 08 + asl a ; CPU:$A7B3 PRG:27B3 0A + rol Zp09 ; CPU:$A7B4 PRG:27B4 26 09 + clc ; CPU:$A7B6 PRG:27B6 18 + adc Zp08 ; CPU:$A7B7 PRG:27B7 65 08 + sta Zp08 ; CPU:$A7B9 PRG:27B9 85 08 + lda Zp09 ; CPU:$A7BB PRG:27BB A5 09 + adc #$00 ; CPU:$A7BD PRG:27BD 69 00 + sta Zp09 ; CPU:$A7BF PRG:27BF 85 09 + lda #$62 ; CPU:$A7C1 PRG:27C1 A9 62 + clc ; CPU:$A7C3 PRG:27C3 18 + adc Zp08 ; CPU:$A7C4 PRG:27C4 65 08 + sta Zp08 ; CPU:$A7C6 PRG:27C6 85 08 + lda #$B0 ; CPU:$A7C8 PRG:27C8 A9 B0 + adc Zp09 ; CPU:$A7CA PRG:27CA 65 09 + sta Zp09 ; CPU:$A7CC PRG:27CC 85 09 + ldy #$00 ; CPU:$A7CE PRG:27CE A0 00 + lda (Zp08),y ; CPU:$A7D0 PRG:27D0 B1 08 + sta Zp0D ; CPU:$A7D2 PRG:27D2 85 0D + and #$0F ; CPU:$A7D4 PRG:27D4 29 0F + sta Zp0B ; CPU:$A7D6 PRG:27D6 85 0B + iny ; CPU:$A7D8 PRG:27D8 C8 + lda (Zp08),y ; CPU:$A7D9 PRG:27D9 B1 08 + sta Zp0E ; CPU:$A7DB PRG:27DB 85 0E + iny ; CPU:$A7DD PRG:27DD C8 + lda (Zp08),y ; CPU:$A7DE PRG:27DE B1 08 + sta Zp0F ; CPU:$A7E0 PRG:27E0 85 0F + lda Zp0B ; CPU:$A7E2 PRG:27E2 A5 0B + sta $047D ; CPU:$A7E4 PRG:27E4 8D 7D 04 + ldy #$00 ; CPU:$A7E7 PRG:27E7 A0 00 +; ----------------------------------------------------------------------------- +; Routine: ObjectUpdate_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectUpdate_OnNonzero2: + tya ; CPU:$A7E9 PRG:27E9 98 + pha ; CPU:$A7EA PRG:27EA 48 + jsr Sub_A82B ; CPU:$A7EB PRG:27EB 20 2B A8 + pla ; CPU:$A7EE PRG:27EE 68 + pha ; CPU:$A7EF PRG:27EF 48 + clc ; CPU:$A7F0 PRG:27F0 18 + adc $0478 ; CPU:$A7F1 PRG:27F1 6D 78 04 + asl a ; CPU:$A7F4 PRG:27F4 0A + asl a ; CPU:$A7F5 PRG:27F5 0A + tay ; CPU:$A7F6 PRG:27F6 A8 + lda Zp12 ; CPU:$A7F7 PRG:27F7 A5 12 + clc ; CPU:$A7F9 PRG:27F9 18 + adc $0479 ; CPU:$A7FA PRG:27FA 6D 79 04 + sta $0200,y ; CPU:$A7FD PRG:27FD 99 00 02 + lda $047B ; CPU:$A800 PRG:2800 AD 7B 04 + sta $0201,y ; CPU:$A803 PRG:2803 99 01 02 + lda $047C ; CPU:$A806 PRG:2806 AD 7C 04 + sta $0202,y ; CPU:$A809 PRG:2809 99 02 02 + lda $047A ; CPU:$A80C PRG:280C AD 7A 04 + clc ; CPU:$A80F PRG:280F 18 + adc Zp13 ; CPU:$A810 PRG:2810 65 13 + sta $0203,y ; CPU:$A812 PRG:2812 99 03 02 + pla ; CPU:$A815 PRG:2815 68 + tay ; CPU:$A816 PRG:2816 A8 + lda Zp0E ; CPU:$A817 PRG:2817 A5 0E + clc ; CPU:$A819 PRG:2819 18 + adc #$04 ; CPU:$A81A PRG:281A 69 04 + sta Zp0E ; CPU:$A81C PRG:281C 85 0E + lda Zp0F ; CPU:$A81E PRG:281E A5 0F + adc #$00 ; CPU:$A820 PRG:2820 69 00 + sta Zp0F ; CPU:$A822 PRG:2822 85 0F + iny ; CPU:$A824 PRG:2824 C8 + cpy $047D ; CPU:$A825 PRG:2825 CC 7D 04 + bne ObjectUpdate_OnNonzero2 ; CPU:$A828 PRG:2828 D0 BF + rts ; CPU:$A82A PRG:282A 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A82B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A82B: + ldy $0183 ; CPU:$A82B PRG:282B AC 83 01 + lda $0404,y ; CPU:$A82E PRG:282E B9 04 04 + sta Zp12 ; CPU:$A831 PRG:2831 85 12 + lda $0405,y ; CPU:$A833 PRG:2833 B9 05 04 + sta Zp13 ; CPU:$A836 PRG:2836 85 13 + ldy #$00 ; CPU:$A838 PRG:2838 A0 00 +; ----------------------------------------------------------------------------- +; Routine: ObjectUpdate_OnNonzero3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectUpdate_OnNonzero3: + lda (Zp0E),y ; CPU:$A83A PRG:283A B1 0E + sta $0479,y ; CPU:$A83C PRG:283C 99 79 04 + iny ; CPU:$A83F PRG:283F C8 + cpy #$04 ; CPU:$A840 PRG:2840 C0 04 + bne ObjectUpdate_OnNonzero3 ; CPU:$A842 PRG:2842 D0 F6 + dey ; CPU:$A844 PRG:2844 88 + lda Zp0D ; CPU:$A845 PRG:2845 A5 0D + and #$80 ; CPU:$A847 PRG:2847 29 80 + beq ObjectUpdate_Loop ; CPU:$A849 PRG:2849 F0 08 + lda $0479,y ; CPU:$A84B PRG:284B B9 79 04 + ora #$80 ; CPU:$A84E PRG:284E 09 80 + sta $0479,y ; CPU:$A850 PRG:2850 99 79 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectUpdate_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectUpdate_Loop: + lda Zp0D ; CPU:$A853 PRG:2853 A5 0D + and #$40 ; CPU:$A855 PRG:2855 29 40 + beq ObjectUpdate_Loop2 ; CPU:$A857 PRG:2857 F0 16 + lda $0479,y ; CPU:$A859 PRG:2859 B9 79 04 + and #$FC ; CPU:$A85C PRG:285C 29 FC + sta $0479,y ; CPU:$A85E PRG:285E 99 79 04 + lda Zp0D ; CPU:$A861 PRG:2861 A5 0D + and #$30 ; CPU:$A863 PRG:2863 29 30 + lsr a ; CPU:$A865 PRG:2865 4A + lsr a ; CPU:$A866 PRG:2866 4A + lsr a ; CPU:$A867 PRG:2867 4A + lsr a ; CPU:$A868 PRG:2868 4A + ora $0479,y ; CPU:$A869 PRG:2869 19 79 04 + sta $0479,y ; CPU:$A86C PRG:286C 99 79 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectUpdate_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectUpdate_Loop2: + rts ; CPU:$A86F PRG:286F 60 +; ----------------------------------------------------------------------------- +; Routine: EventState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventState: + sty Zp08 ; CPU:$A870 PRG:2870 84 08 + pha ; CPU:$A872 PRG:2872 48 + jsr Sub_FC39 ; CPU:$A873 PRG:2873 20 39 FC + pla ; CPU:$A876 PRG:2876 68 + clc ; CPU:$A877 PRG:2877 18 + adc #$01 ; CPU:$A878 PRG:2878 69 01 + ldy Zp08 ; CPU:$A87A PRG:287A A4 08 + dey ; CPU:$A87C PRG:287C 88 + bne EventState ; CPU:$A87D PRG:287D D0 F1 + rts ; CPU:$A87F PRG:287F 60 +; ---- data $A880-$A8C7 (72 bytes) ---- +; referenced by `lda $A8C0,y` at $A2F0 (operand $A8C0 falls inside this region) +; referenced by `lda $A880,y` at $A311 (operand $A880 falls inside this region) + .byte $C3, $CB, $BB, $CB, $C3, $C3, $00, $00, $C4, $CC, $BC, $CC, $C4, $C4, $00, $00 ; CPU:$A880 PRG:2880 C3 CB BB CB C3 C3 00 00 C4 CC BC CC C4 C4 00 00 + .byte $C5, $CD, $BD, $CD, $C5, $C5, $00, $00, $C6, $CE, $BE, $CE, $C6, $C6, $00, $00 ; CPU:$A890 PRG:2890 C5 CD BD CD C5 C5 00 00 C6 CE BE CE C6 C6 00 00 + .byte $C7, $CF, $BF, $CF, $C7, $C7, $00, $00, $C8, $D0, $C0, $D0, $C8, $C8, $00, $00 ; CPU:$A8A0 PRG:28A0 C7 CF BF CF C7 C7 00 00 C8 D0 C0 D0 C8 C8 00 00 + .byte $C9, $D1, $C1, $D1, $C9, $C9, $00, $00, $CA, $D2, $C2, $D2, $CA, $CA, $00, $00 ; CPU:$A8B0 PRG:28B0 C9 D1 C1 D1 C9 C9 00 00 CA D2 C2 D2 CA CA 00 00 + .byte $B3, $B4, $B5, $B6, $B7, $B8, $B9, $BA ; CPU:$A8C0 PRG:28C0 B3 B4 B5 B6 B7 B8 B9 BA +; ----------------------------------------------------------------------------- +; Routine: GameModeTask +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask: + lda GameMode ; CPU:$A8C8 PRG:28C8 A5 8C + cmp #$02 ; CPU:$A8CA PRG:28CA C9 02 + bcs GameModeTask_Loop ; CPU:$A8CC PRG:28CC B0 37 + lda Zp6F ; CPU:$A8CE PRG:28CE A5 6F + bne GameModeTask_Loop2 ; CPU:$A8D0 PRG:28D0 D0 36 + inc Zp6F ; CPU:$A8D2 PRG:28D2 E6 6F + lda #$00 ; CPU:$A8D4 PRG:28D4 A9 00 + sta $0423 ; CPU:$A8D6 PRG:28D6 8D 23 04 + sta $042B ; CPU:$A8D9 PRG:28D9 8D 2B 04 + lda #$05 ; CPU:$A8DC PRG:28DC A9 05 + sta $0429 ; CPU:$A8DE PRG:28DE 8D 29 04 + lda #$05 ; CPU:$A8E1 PRG:28E1 A9 05 + sta $0431 ; CPU:$A8E3 PRG:28E3 8D 31 04 + lda #$0A ; CPU:$A8E6 PRG:28E6 A9 0A + sta Zp76 ; CPU:$A8E8 PRG:28E8 85 76 + lda #$0A ; CPU:$A8EA PRG:28EA A9 0A + sta Zp77 ; CPU:$A8EC PRG:28EC 85 77 + lda #$04 ; CPU:$A8EE PRG:28EE A9 04 + sta $0427 ; CPU:$A8F0 PRG:28F0 8D 27 04 + sta $042F ; CPU:$A8F3 PRG:28F3 8D 2F 04 + lda #$08 ; CPU:$A8F6 PRG:28F6 A9 08 + sta $0428 ; CPU:$A8F8 PRG:28F8 8D 28 04 + sta $0430 ; CPU:$A8FB PRG:28FB 8D 30 04 + lda #$02 ; CPU:$A8FE PRG:28FE A9 02 + sta Zp79 ; CPU:$A900 PRG:2900 85 79 + sta Zp7A ; CPU:$A902 PRG:2902 85 7A + rts ; CPU:$A904 PRG:2904 60 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop: + jmp Sub_AD0C ; CPU:$A905 PRG:2905 4C 0C AD +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop2: + lda #$03 ; CPU:$A908 PRG:2908 A9 03 + sta Zp17 ; CPU:$A90A PRG:290A 85 17 + lda #$2B ; CPU:$A90C PRG:290C A9 2B + jsr SpriteTile ; CPU:$A90E PRG:290E 20 2B FC + lda Zp79 ; CPU:$A911 PRG:2911 A5 79 + beq GameModeTask_Loop3 ; CPU:$A913 PRG:2913 F0 03 + jsr Sub_A937 ; CPU:$A915 PRG:2915 20 37 A9 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop3: + lda Zp76 ; CPU:$A918 PRG:2918 A5 76 + beq GameModeTask_Loop4 ; CPU:$A91A PRG:291A F0 03 + jsr Sub_A9D0 ; CPU:$A91C PRG:291C 20 D0 A9 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop4: + lda #$03 ; CPU:$A91F PRG:291F A9 03 + sta Zp17 ; CPU:$A921 PRG:2921 85 17 + lda #$2E ; CPU:$A923 PRG:2923 A9 2E + jsr SpriteTile ; CPU:$A925 PRG:2925 20 2B FC + lda Zp7A ; CPU:$A928 PRG:2928 A5 7A + beq GameModeTask_Loop5 ; CPU:$A92A PRG:292A F0 03 + jsr Sub_A97F ; CPU:$A92C PRG:292C 20 7F A9 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop5: + lda Zp77 ; CPU:$A92F PRG:292F A5 77 + beq GameModeTask_Loop6 ; CPU:$A931 PRG:2931 F0 03 + jsr Sub_AAA5 ; CPU:$A933 PRG:2933 20 A5 AA +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop6: + rts ; CPU:$A936 PRG:2936 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A937 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A937: + lda #$39 ; CPU:$A937 PRG:2937 A9 39 + sta Zp39 ; CPU:$A939 PRG:2939 85 39 + lda #$B2 ; CPU:$A93B PRG:293B A9 B2 + sta Zp3A ; CPU:$A93D PRG:293D 85 3A + lda $0108 ; CPU:$A93F PRG:293F AD 08 01 + beq GameModeTask_Loop7 ; CPU:$A942 PRG:2942 F0 02 + dec Zp79 ; CPU:$A944 PRG:2944 C6 79 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop7: + lda #$2B ; CPU:$A946 PRG:2946 A9 2B + sta $0426 ; CPU:$A948 PRG:2948 8D 26 04 + lda #$03 ; CPU:$A94B PRG:294B A9 03 + sta Zp11 ; CPU:$A94D PRG:294D 85 11 + lda #$02 ; CPU:$A94F PRG:294F A9 02 + sec ; CPU:$A951 PRG:2951 38 + sbc Zp79 ; CPU:$A952 PRG:2952 E5 79 + tax ; CPU:$A954 PRG:2954 AA + lda $A9C7,x ; CPU:$A955 PRG:2955 BD C7 A9 + sta $0424 ; CPU:$A958 PRG:2958 8D 24 04 + lda $A9CA,x ; CPU:$A95B PRG:295B BD CA A9 + sta $0425 ; CPU:$A95E PRG:295E 8D 25 04 + lda Zp4F ; CPU:$A961 PRG:2961 A5 4F + cmp #$02 ; CPU:$A963 PRG:2963 C9 02 + beq GameModeTask_Loop8 ; CPU:$A965 PRG:2965 F0 08 + cmp #$03 ; CPU:$A967 PRG:2967 C9 03 + beq GameModeTask_Loop8 ; CPU:$A969 PRG:2969 F0 04 + lda #$00 ; CPU:$A96B PRG:296B A9 00 + beq GameModeTask_Loop9 ; CPU:$A96D PRG:296D F0 02 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop8: + lda #$01 ; CPU:$A96F PRG:296F A9 01 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop9: + ldy #$20 ; CPU:$A971 PRG:2971 A0 20 + jsr OamCopy ; CPU:$A973 PRG:2973 20 E3 FB + lda #$28 ; CPU:$A976 PRG:2976 A9 28 + sta Zp39 ; CPU:$A978 PRG:2978 85 39 + lda #$BA ; CPU:$A97A PRG:297A A9 BA + sta Zp3A ; CPU:$A97C PRG:297C 85 3A + rts ; CPU:$A97E PRG:297E 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A97F +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A97F: + lda #$39 ; CPU:$A97F PRG:297F A9 39 + sta Zp39 ; CPU:$A981 PRG:2981 85 39 + lda #$B2 ; CPU:$A983 PRG:2983 A9 B2 + sta Zp3A ; CPU:$A985 PRG:2985 85 3A + lda $0109 ; CPU:$A987 PRG:2987 AD 09 01 + beq GameModeTask_Loop10 ; CPU:$A98A PRG:298A F0 02 + dec Zp7A ; CPU:$A98C PRG:298C C6 7A +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop10: + lda #$2E ; CPU:$A98E PRG:298E A9 2E + sta $042E ; CPU:$A990 PRG:2990 8D 2E 04 + lda #$03 ; CPU:$A993 PRG:2993 A9 03 + sta Zp11 ; CPU:$A995 PRG:2995 85 11 + lda #$02 ; CPU:$A997 PRG:2997 A9 02 + sec ; CPU:$A999 PRG:2999 38 + sbc Zp7A ; CPU:$A99A PRG:299A E5 7A + tax ; CPU:$A99C PRG:299C AA + lda $A9C7,x ; CPU:$A99D PRG:299D BD C7 A9 + sta $042C ; CPU:$A9A0 PRG:29A0 8D 2C 04 + lda $A9CD,x ; CPU:$A9A3 PRG:29A3 BD CD A9 + sta $042D ; CPU:$A9A6 PRG:29A6 8D 2D 04 + lda Zp5F ; CPU:$A9A9 PRG:29A9 A5 5F + cmp #$02 ; CPU:$A9AB PRG:29AB C9 02 + beq GameModeTask_Loop11 ; CPU:$A9AD PRG:29AD F0 08 + cmp #$03 ; CPU:$A9AF PRG:29AF C9 03 + beq GameModeTask_Loop11 ; CPU:$A9B1 PRG:29B1 F0 04 + lda #$00 ; CPU:$A9B3 PRG:29B3 A9 00 + beq GameModeTask_Loop12 ; CPU:$A9B5 PRG:29B5 F0 02 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop11: + lda #$01 ; CPU:$A9B7 PRG:29B7 A9 01 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop12: + ldy #$28 ; CPU:$A9B9 PRG:29B9 A0 28 + jsr OamCopy ; CPU:$A9BB PRG:29BB 20 E3 FB + lda #$28 ; CPU:$A9BE PRG:29BE A9 28 + sta Zp39 ; CPU:$A9C0 PRG:29C0 85 39 + lda #$BA ; CPU:$A9C2 PRG:29C2 A9 BA + sta Zp3A ; CPU:$A9C4 PRG:29C4 85 3A + rts ; CPU:$A9C6 PRG:29C6 60 +; ---- data $A9C7-$A9CF (9 bytes) ---- +; referenced by `lda $A9C7,x` at $A955 (operand $A9C7 falls inside this region) +; referenced by `lda $A9CA,x` at $A95B (operand $A9CA falls inside this region) +; referenced by `lda $A9C7,x` at $A99D (operand $A9C7 falls inside this region) +; referenced by `lda $A9CD,x` at $A9A3 (operand $A9CD falls inside this region) +; referenced by `lda $A9C7,x` at $AD70 (operand $A9C7 falls inside this region) + .byte $D0, $DA, $E4, $68, $67, $66, $9C, $9D, $9E ; CPU:$A9C7 PRG:29C7 D0 DA E4 68 67 66 9C 9D 9E +; ----------------------------------------------------------------------------- +; Routine: Sub_A9D0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A9D0: + lda $0108 ; CPU:$A9D0 PRG:29D0 AD 08 01 + beq GameModeTask_Loop14 ; CPU:$A9D3 PRG:29D3 F0 2E + inc $0429 ; CPU:$A9D5 PRG:29D5 EE 29 04 + lda #$0D ; CPU:$A9D8 PRG:29D8 A9 0D + cmp $0429 ; CPU:$A9DA PRG:29DA CD 29 04 + bne GameModeTask_Loop13 ; CPU:$A9DD PRG:29DD D0 08 + lda $0423 ; CPU:$A9DF PRG:29DF AD 23 04 + ora #$80 ; CPU:$A9E2 PRG:29E2 09 80 + sta $0423 ; CPU:$A9E4 PRG:29E4 8D 23 04 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop13: + lda #$13 ; CPU:$A9E7 PRG:29E7 A9 13 + cmp $0429 ; CPU:$A9E9 PRG:29E9 CD 29 04 + bne GameModeTask_Loop14 ; CPU:$A9EC PRG:29EC D0 15 + lda $0423 ; CPU:$A9EE PRG:29EE AD 23 04 + and #$7E ; CPU:$A9F1 PRG:29F1 29 7E + sta $0423 ; CPU:$A9F3 PRG:29F3 8D 23 04 + lda #$00 ; CPU:$A9F6 PRG:29F6 A9 00 + sta Zp74 ; CPU:$A9F8 PRG:29F8 85 74 + dec Zp76 ; CPU:$A9FA PRG:29FA C6 76 + beq GameModeTask_Loop15 ; CPU:$A9FC PRG:29FC F0 35 + lda #$01 ; CPU:$A9FE PRG:29FE A9 01 + sta $0429 ; CPU:$AA00 PRG:2A00 8D 29 04 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop14: + lda $0482 ; CPU:$AA03 PRG:2A03 AD 82 04 + sta $0426 ; CPU:$AA06 PRG:2A06 8D 26 04 + lda #$0A ; CPU:$AA09 PRG:2A09 A9 0A + sta Zp11 ; CPU:$AA0B PRG:2A0B 85 11 + lda $0429 ; CPU:$AA0D PRG:2A0D AD 29 04 + sec ; CPU:$AA10 PRG:2A10 38 + sbc #$01 ; CPU:$AA11 PRG:2A11 E9 01 + pha ; CPU:$AA13 PRG:2A13 48 + asl a ; CPU:$AA14 PRG:2A14 0A + tax ; CPU:$AA15 PRG:2A15 AA + lda $AC8A,x ; CPU:$AA16 PRG:2A16 BD 8A AC + sta $0424 ; CPU:$AA19 PRG:2A19 8D 24 04 + lda $AC8B,x ; CPU:$AA1C PRG:2A1C BD 8B AC + clc ; CPU:$AA1F PRG:2A1F 18 + adc #$80 ; CPU:$AA20 PRG:2A20 69 80 + sta $0425 ; CPU:$AA22 PRG:2A22 8D 25 04 + pla ; CPU:$AA25 PRG:2A25 68 + tax ; CPU:$AA26 PRG:2A26 AA + ldy Zp76 ; CPU:$AA27 PRG:2A27 A4 76 + cpy #$01 ; CPU:$AA29 PRG:2A29 C0 01 + beq GameModeTask_Loop16 ; CPU:$AA2B PRG:2A2B F0 08 + lda $AC66,x ; CPU:$AA2D PRG:2A2D BD 66 AC + pha ; CPU:$AA30 PRG:2A30 48 + bpl GameModeTask_Loop17 ; CPU:$AA31 PRG:2A31 10 06 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop15: + beq GameModeTask_Loop23 ; CPU:$AA33 PRG:2A33 F0 65 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop16: + lda $AC78,x ; CPU:$AA35 PRG:2A35 BD 78 AC + pha ; CPU:$AA38 PRG:2A38 48 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop17: + lda $0423 ; CPU:$AA39 PRG:2A39 AD 23 04 + lsr a ; CPU:$AA3C PRG:2A3C 4A + bcc GameModeTask_Loop19 ; CPU:$AA3D PRG:2A3D 90 2C + pla ; CPU:$AA3F PRG:2A3F 68 + clc ; CPU:$AA40 PRG:2A40 18 + adc #$02 ; CPU:$AA41 PRG:2A41 69 02 + pha ; CPU:$AA43 PRG:2A43 48 + lda Zp76 ; CPU:$AA44 PRG:2A44 A5 76 + cmp #$01 ; CPU:$AA46 PRG:2A46 C9 01 + beq GameModeTask_Loop18 ; CPU:$AA48 PRG:2A48 F0 13 + lda GameMode ; CPU:$AA4A PRG:2A4A A5 8C + beq GameModeTask_Loop18 ; CPU:$AA4C PRG:2A4C F0 0F + lda Zp74 ; CPU:$AA4E PRG:2A4E A5 74 + bne GameModeTask_Loop18 ; CPU:$AA50 PRG:2A50 D0 0B + lda #$23 ; CPU:$AA52 PRG:2A52 A9 23 + ldy #$01 ; CPU:$AA54 PRG:2A54 A0 01 + jsr AudioChannelLoop ; CPU:$AA56 PRG:2A56 20 63 BE + lda #$01 ; CPU:$AA59 PRG:2A59 A9 01 + sta Zp74 ; CPU:$AA5B PRG:2A5B 85 74 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop18: + lda Zp76 ; CPU:$AA5D PRG:2A5D A5 76 + cmp #$01 ; CPU:$AA5F PRG:2A5F C9 01 + bne GameModeTask_Loop19 ; CPU:$AA61 PRG:2A61 D0 08 + lda #$01 ; CPU:$AA63 PRG:2A63 A9 01 + ora $030A ; CPU:$AA65 PRG:2A65 0D 0A 03 + sta $030A ; CPU:$AA68 PRG:2A68 8D 0A 03 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop19: + lda Zp76 ; CPU:$AA6B PRG:2A6B A5 76 + cmp #$01 ; CPU:$AA6D PRG:2A6D C9 01 + beq GameModeTask_Loop20 ; CPU:$AA6F PRG:2A6F F0 04 + lda GameMode ; CPU:$AA71 PRG:2A71 A5 8C + beq GameModeTask_Loop21 ; CPU:$AA73 PRG:2A73 F0 10 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop20: + pla ; CPU:$AA75 PRG:2A75 68 + ldy #$20 ; CPU:$AA76 PRG:2A76 A0 20 + jsr OamCopy ; CPU:$AA78 PRG:2A78 20 E3 FB + lda Zp76 ; CPU:$AA7B PRG:2A7B A5 76 + cmp #$01 ; CPU:$AA7D PRG:2A7D C9 01 + beq GameModeTask_Loop22 ; CPU:$AA7F PRG:2A7F F0 0F + jsr Sub_AB7C ; CPU:$AA81 PRG:2A81 20 7C AB + rts ; CPU:$AA84 PRG:2A84 60 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop21: + pla ; CPU:$AA85 PRG:2A85 68 + lda Zp76 ; CPU:$AA86 PRG:2A86 A5 76 + cmp #$01 ; CPU:$AA88 PRG:2A88 C9 01 + beq GameModeTask_Loop22 ; CPU:$AA8A PRG:2A8A F0 04 + jsr Sub_AB7C ; CPU:$AA8C PRG:2A8C 20 7C AB + rts ; CPU:$AA8F PRG:2A8F 60 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop22: + lda #$01 ; CPU:$AA90 PRG:2A90 A9 01 + sta Zp17 ; CPU:$AA92 PRG:2A92 85 17 + lda #$29 ; CPU:$AA94 PRG:2A94 A9 29 + jsr SpriteTile ; CPU:$AA96 PRG:2A96 20 2B FC + rts ; CPU:$AA99 PRG:2A99 60 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop23: + lda #$0A ; CPU:$AA9A PRG:2A9A A9 0A + sta Zp17 ; CPU:$AA9C PRG:2A9C 85 17 + lda $0482 ; CPU:$AA9E PRG:2A9E AD 82 04 + jsr SpriteTile ; CPU:$AAA1 PRG:2AA1 20 2B FC + rts ; CPU:$AAA4 PRG:2AA4 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AAA5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AAA5: + lda $0109 ; CPU:$AAA5 PRG:2AA5 AD 09 01 + beq GameModeTask_Loop25 ; CPU:$AAA8 PRG:2AA8 F0 2E + inc $0431 ; CPU:$AAAA PRG:2AAA EE 31 04 + lda #$0D ; CPU:$AAAD PRG:2AAD A9 0D + cmp $0431 ; CPU:$AAAF PRG:2AAF CD 31 04 + bne GameModeTask_Loop24 ; CPU:$AAB2 PRG:2AB2 D0 08 + lda $042B ; CPU:$AAB4 PRG:2AB4 AD 2B 04 + ora #$80 ; CPU:$AAB7 PRG:2AB7 09 80 + sta $042B ; CPU:$AAB9 PRG:2AB9 8D 2B 04 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop24 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop24: + lda #$13 ; CPU:$AABC PRG:2ABC A9 13 + cmp $0431 ; CPU:$AABE PRG:2ABE CD 31 04 + bne GameModeTask_Loop25 ; CPU:$AAC1 PRG:2AC1 D0 15 + lda $042B ; CPU:$AAC3 PRG:2AC3 AD 2B 04 + and #$7E ; CPU:$AAC6 PRG:2AC6 29 7E + sta $042B ; CPU:$AAC8 PRG:2AC8 8D 2B 04 + lda #$00 ; CPU:$AACB PRG:2ACB A9 00 + sta Zp75 ; CPU:$AACD PRG:2ACD 85 75 + dec Zp77 ; CPU:$AACF PRG:2ACF C6 77 + beq GameModeTask_Loop26 ; CPU:$AAD1 PRG:2AD1 F0 37 + lda #$01 ; CPU:$AAD3 PRG:2AD3 A9 01 + sta $0431 ; CPU:$AAD5 PRG:2AD5 8D 31 04 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop25 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop25: + lda $0483 ; CPU:$AAD8 PRG:2AD8 AD 83 04 + sta $042E ; CPU:$AADB PRG:2ADB 8D 2E 04 + lda #$4A ; CPU:$AADE PRG:2ADE A9 4A + sta Zp11 ; CPU:$AAE0 PRG:2AE0 85 11 + lda $0431 ; CPU:$AAE2 PRG:2AE2 AD 31 04 + sec ; CPU:$AAE5 PRG:2AE5 38 + sbc #$01 ; CPU:$AAE6 PRG:2AE6 E9 01 + pha ; CPU:$AAE8 PRG:2AE8 48 + asl a ; CPU:$AAE9 PRG:2AE9 0A + tax ; CPU:$AAEA PRG:2AEA AA + lda $AC8A,x ; CPU:$AAEB PRG:2AEB BD 8A AC + sta $042C ; CPU:$AAEE PRG:2AEE 8D 2C 04 + lda $AC8B,x ; CPU:$AAF1 PRG:2AF1 BD 8B AC + eor #$FF ; CPU:$AAF4 PRG:2AF4 49 FF + sec ; CPU:$AAF6 PRG:2AF6 38 + adc #$80 ; CPU:$AAF7 PRG:2AF7 69 80 + sta $042D ; CPU:$AAF9 PRG:2AF9 8D 2D 04 + pla ; CPU:$AAFC PRG:2AFC 68 + tax ; CPU:$AAFD PRG:2AFD AA + ldy Zp77 ; CPU:$AAFE PRG:2AFE A4 77 + cpy #$01 ; CPU:$AB00 PRG:2B00 C0 01 + beq GameModeTask_Loop27 ; CPU:$AB02 PRG:2B02 F0 08 + lda $AC66,x ; CPU:$AB04 PRG:2B04 BD 66 AC + pha ; CPU:$AB07 PRG:2B07 48 + bpl GameModeTask_Loop28 ; CPU:$AB08 PRG:2B08 10 06 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop26 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop26: + beq GameModeTask_Loop34 ; CPU:$AB0A PRG:2B0A F0 65 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop27 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop27: + lda $AC78,x ; CPU:$AB0C PRG:2B0C BD 78 AC + pha ; CPU:$AB0F PRG:2B0F 48 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop28 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop28: + lda $042B ; CPU:$AB10 PRG:2B10 AD 2B 04 + lsr a ; CPU:$AB13 PRG:2B13 4A + bcc GameModeTask_Loop30 ; CPU:$AB14 PRG:2B14 90 2C + pla ; CPU:$AB16 PRG:2B16 68 + clc ; CPU:$AB17 PRG:2B17 18 + adc #$02 ; CPU:$AB18 PRG:2B18 69 02 + pha ; CPU:$AB1A PRG:2B1A 48 + lda Zp77 ; CPU:$AB1B PRG:2B1B A5 77 + cmp #$01 ; CPU:$AB1D PRG:2B1D C9 01 + beq GameModeTask_Loop29 ; CPU:$AB1F PRG:2B1F F0 13 + lda GameMode ; CPU:$AB21 PRG:2B21 A5 8C + beq GameModeTask_Loop29 ; CPU:$AB23 PRG:2B23 F0 0F + lda Zp75 ; CPU:$AB25 PRG:2B25 A5 75 + bne GameModeTask_Loop29 ; CPU:$AB27 PRG:2B27 D0 0B + lda #$23 ; CPU:$AB29 PRG:2B29 A9 23 + ldy #$01 ; CPU:$AB2B PRG:2B2B A0 01 + jsr AudioChannelLoop ; CPU:$AB2D PRG:2B2D 20 63 BE + lda #$01 ; CPU:$AB30 PRG:2B30 A9 01 + sta Zp75 ; CPU:$AB32 PRG:2B32 85 75 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop29 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop29: + lda Zp77 ; CPU:$AB34 PRG:2B34 A5 77 + cmp #$01 ; CPU:$AB36 PRG:2B36 C9 01 + bne GameModeTask_Loop30 ; CPU:$AB38 PRG:2B38 D0 08 + lda #$01 ; CPU:$AB3A PRG:2B3A A9 01 + ora $030B ; CPU:$AB3C PRG:2B3C 0D 0B 03 + sta $030B ; CPU:$AB3F PRG:2B3F 8D 0B 03 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop30 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop30: + lda Zp77 ; CPU:$AB42 PRG:2B42 A5 77 + cmp #$01 ; CPU:$AB44 PRG:2B44 C9 01 + beq GameModeTask_Loop31 ; CPU:$AB46 PRG:2B46 F0 04 + lda GameMode ; CPU:$AB48 PRG:2B48 A5 8C + beq GameModeTask_Loop32 ; CPU:$AB4A PRG:2B4A F0 10 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop31 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop31: + pla ; CPU:$AB4C PRG:2B4C 68 + ldy #$28 ; CPU:$AB4D PRG:2B4D A0 28 + jsr OamCopy ; CPU:$AB4F PRG:2B4F 20 E3 FB + lda Zp77 ; CPU:$AB52 PRG:2B52 A5 77 + cmp #$01 ; CPU:$AB54 PRG:2B54 C9 01 + beq GameModeTask_Loop33 ; CPU:$AB56 PRG:2B56 F0 0F + jsr Sub_ABF0 ; CPU:$AB58 PRG:2B58 20 F0 AB + rts ; CPU:$AB5B PRG:2B5B 60 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop32 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop32: + pla ; CPU:$AB5C PRG:2B5C 68 + lda Zp77 ; CPU:$AB5D PRG:2B5D A5 77 + cmp #$01 ; CPU:$AB5F PRG:2B5F C9 01 + beq GameModeTask_Loop33 ; CPU:$AB61 PRG:2B61 F0 04 + jsr Sub_ABF0 ; CPU:$AB63 PRG:2B63 20 F0 AB + rts ; CPU:$AB66 PRG:2B66 60 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop33 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop33: + lda #$01 ; CPU:$AB67 PRG:2B67 A9 01 + sta Zp17 ; CPU:$AB69 PRG:2B69 85 17 + lda #$2A ; CPU:$AB6B PRG:2B6B A9 2A + jsr SpriteTile ; CPU:$AB6D PRG:2B6D 20 2B FC + rts ; CPU:$AB70 PRG:2B70 60 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop34 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop34: + lda #$0A ; CPU:$AB71 PRG:2B71 A9 0A + sta Zp17 ; CPU:$AB73 PRG:2B73 85 17 + lda $0483 ; CPU:$AB75 PRG:2B75 AD 83 04 + jsr SpriteTile ; CPU:$AB78 PRG:2B78 20 2B FC + rts ; CPU:$AB7B PRG:2B7B 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AB7C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AB7C: + lda #$92 ; CPU:$AB7C PRG:2B7C A9 92 + sta Zp39 ; CPU:$AB7E PRG:2B7E 85 39 + lda #$B0 ; CPU:$AB80 PRG:2B80 A9 B0 + sta Zp3A ; CPU:$AB82 PRG:2B82 85 3A + lda $0424 ; CPU:$AB84 PRG:2B84 AD 24 04 + pha ; CPU:$AB87 PRG:2B87 48 + lda $0425 ; CPU:$AB88 PRG:2B88 AD 25 04 + pha ; CPU:$AB8B PRG:2B8B 48 + lda $0426 ; CPU:$AB8C PRG:2B8C AD 26 04 + pha ; CPU:$AB8F PRG:2B8F 48 + lda #$29 ; CPU:$AB90 PRG:2B90 A9 29 + sta $0426 ; CPU:$AB92 PRG:2B92 8D 26 04 + lda #$01 ; CPU:$AB95 PRG:2B95 A9 01 + sta Zp11 ; CPU:$AB97 PRG:2B97 85 11 + lda $0429 ; CPU:$AB99 PRG:2B99 AD 29 04 + sec ; CPU:$AB9C PRG:2B9C 38 + sbc #$01 ; CPU:$AB9D PRG:2B9D E9 01 + pha ; CPU:$AB9F PRG:2B9F 48 + asl a ; CPU:$ABA0 PRG:2BA0 0A + tax ; CPU:$ABA1 PRG:2BA1 AA + lda $ACE8,x ; CPU:$ABA2 PRG:2BA2 BD E8 AC + sta $0424 ; CPU:$ABA5 PRG:2BA5 8D 24 04 + lda $ACE9,x ; CPU:$ABA8 PRG:2BA8 BD E9 AC + clc ; CPU:$ABAB PRG:2BAB 18 + adc #$80 ; CPU:$ABAC PRG:2BAC 69 80 + sta $0425 ; CPU:$ABAE PRG:2BAE 8D 25 04 + pla ; CPU:$ABB1 PRG:2BB1 68 + pha ; CPU:$ABB2 PRG:2BB2 48 + cmp #$0D ; CPU:$ABB3 PRG:2BB3 C9 0D + bcc GameModeTask_Loop35 ; CPU:$ABB5 PRG:2BB5 90 1A + lda #$0A ; CPU:$ABB7 PRG:2BB7 A9 0A + sbc Zp76 ; CPU:$ABB9 PRG:2BB9 E5 76 + sta Zp08 ; CPU:$ABBB PRG:2BBB 85 08 + asl a ; CPU:$ABBD PRG:2BBD 0A + asl a ; CPU:$ABBE PRG:2BBE 0A + clc ; CPU:$ABBF PRG:2BBF 18 + adc Zp08 ; CPU:$ABC0 PRG:2BC0 65 08 + sta Zp08 ; CPU:$ABC2 PRG:2BC2 85 08 + pla ; CPU:$ABC4 PRG:2BC4 68 + sec ; CPU:$ABC5 PRG:2BC5 38 + sbc #$0D ; CPU:$ABC6 PRG:2BC6 E9 0D + clc ; CPU:$ABC8 PRG:2BC8 18 + adc Zp08 ; CPU:$ABC9 PRG:2BC9 65 08 + tax ; CPU:$ABCB PRG:2BCB AA + lda $ACBB,x ; CPU:$ABCC PRG:2BCC BD BB AC + bpl GameModeTask_Loop36 ; CPU:$ABCF PRG:2BCF 10 05 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop35 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop35: + pla ; CPU:$ABD1 PRG:2BD1 68 + tax ; CPU:$ABD2 PRG:2BD2 AA + lda $ACAE,x ; CPU:$ABD3 PRG:2BD3 BD AE AC +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop36 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop36: + ldy #$20 ; CPU:$ABD6 PRG:2BD6 A0 20 + jsr OamCopy ; CPU:$ABD8 PRG:2BD8 20 E3 FB + pla ; CPU:$ABDB PRG:2BDB 68 + sta $0426 ; CPU:$ABDC PRG:2BDC 8D 26 04 + pla ; CPU:$ABDF PRG:2BDF 68 + sta $0425 ; CPU:$ABE0 PRG:2BE0 8D 25 04 + pla ; CPU:$ABE3 PRG:2BE3 68 + sta $0424 ; CPU:$ABE4 PRG:2BE4 8D 24 04 + lda #$28 ; CPU:$ABE7 PRG:2BE7 A9 28 + sta Zp39 ; CPU:$ABE9 PRG:2BE9 85 39 + lda #$BA ; CPU:$ABEB PRG:2BEB A9 BA + sta Zp3A ; CPU:$ABED PRG:2BED 85 3A + rts ; CPU:$ABEF PRG:2BEF 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_ABF0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_ABF0: + lda #$92 ; CPU:$ABF0 PRG:2BF0 A9 92 + sta Zp39 ; CPU:$ABF2 PRG:2BF2 85 39 + lda #$B0 ; CPU:$ABF4 PRG:2BF4 A9 B0 + sta Zp3A ; CPU:$ABF6 PRG:2BF6 85 3A + lda $042C ; CPU:$ABF8 PRG:2BF8 AD 2C 04 + pha ; CPU:$ABFB PRG:2BFB 48 + lda $042D ; CPU:$ABFC PRG:2BFC AD 2D 04 + pha ; CPU:$ABFF PRG:2BFF 48 + lda $042E ; CPU:$AC00 PRG:2C00 AD 2E 04 + pha ; CPU:$AC03 PRG:2C03 48 + lda #$2A ; CPU:$AC04 PRG:2C04 A9 2A + sta $042E ; CPU:$AC06 PRG:2C06 8D 2E 04 + lda #$01 ; CPU:$AC09 PRG:2C09 A9 01 + sta Zp11 ; CPU:$AC0B PRG:2C0B 85 11 + lda $0431 ; CPU:$AC0D PRG:2C0D AD 31 04 + sec ; CPU:$AC10 PRG:2C10 38 + sbc #$01 ; CPU:$AC11 PRG:2C11 E9 01 + pha ; CPU:$AC13 PRG:2C13 48 + asl a ; CPU:$AC14 PRG:2C14 0A + tax ; CPU:$AC15 PRG:2C15 AA + lda $ACE8,x ; CPU:$AC16 PRG:2C16 BD E8 AC + sta $042C ; CPU:$AC19 PRG:2C19 8D 2C 04 + lda $ACE9,x ; CPU:$AC1C PRG:2C1C BD E9 AC + eor #$FF ; CPU:$AC1F PRG:2C1F 49 FF + sec ; CPU:$AC21 PRG:2C21 38 + adc #$80 ; CPU:$AC22 PRG:2C22 69 80 + sta $042D ; CPU:$AC24 PRG:2C24 8D 2D 04 + pla ; CPU:$AC27 PRG:2C27 68 + pha ; CPU:$AC28 PRG:2C28 48 + cmp #$0D ; CPU:$AC29 PRG:2C29 C9 0D + bcc GameModeTask_Loop37 ; CPU:$AC2B PRG:2C2B 90 1A + lda #$0A ; CPU:$AC2D PRG:2C2D A9 0A + sbc Zp77 ; CPU:$AC2F PRG:2C2F E5 77 + sta Zp08 ; CPU:$AC31 PRG:2C31 85 08 + asl a ; CPU:$AC33 PRG:2C33 0A + asl a ; CPU:$AC34 PRG:2C34 0A + clc ; CPU:$AC35 PRG:2C35 18 + adc Zp08 ; CPU:$AC36 PRG:2C36 65 08 + sta Zp08 ; CPU:$AC38 PRG:2C38 85 08 + pla ; CPU:$AC3A PRG:2C3A 68 + sec ; CPU:$AC3B PRG:2C3B 38 + sbc #$0D ; CPU:$AC3C PRG:2C3C E9 0D + clc ; CPU:$AC3E PRG:2C3E 18 + adc Zp08 ; CPU:$AC3F PRG:2C3F 65 08 + tax ; CPU:$AC41 PRG:2C41 AA + lda $ACBB,x ; CPU:$AC42 PRG:2C42 BD BB AC + bpl GameModeTask_Loop38 ; CPU:$AC45 PRG:2C45 10 05 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop37 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop37: + pla ; CPU:$AC47 PRG:2C47 68 + tax ; CPU:$AC48 PRG:2C48 AA + lda $ACAE,x ; CPU:$AC49 PRG:2C49 BD AE AC +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop38 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop38: + ldy #$28 ; CPU:$AC4C PRG:2C4C A0 28 + jsr OamCopy ; CPU:$AC4E PRG:2C4E 20 E3 FB + pla ; CPU:$AC51 PRG:2C51 68 + sta $042E ; CPU:$AC52 PRG:2C52 8D 2E 04 + pla ; CPU:$AC55 PRG:2C55 68 + sta $042D ; CPU:$AC56 PRG:2C56 8D 2D 04 + pla ; CPU:$AC59 PRG:2C59 68 + sta $042C ; CPU:$AC5A PRG:2C5A 8D 2C 04 + lda #$28 ; CPU:$AC5D PRG:2C5D A9 28 + sta Zp39 ; CPU:$AC5F PRG:2C5F 85 39 + lda #$BA ; CPU:$AC61 PRG:2C61 A9 BA + sta Zp3A ; CPU:$AC63 PRG:2C63 85 3A + rts ; CPU:$AC65 PRG:2C65 60 +; ---- data $AC66-$AD0B (166 bytes) ---- +; referenced by `lda $AC8A,x` at $AA16 (operand $AC8A falls inside this region) +; referenced by `lda $AC8B,x` at $AA1C (operand $AC8B falls inside this region) +; referenced by `lda $AC66,x` at $AA2D (operand $AC66 falls inside this region) +; referenced by `lda $AC78,x` at $AA35 (operand $AC78 falls inside this region) +; referenced by `lda $AC8A,x` at $AAEB (operand $AC8A falls inside this region) +; referenced by `lda $AC8B,x` at $AAF1 (operand $AC8B falls inside this region) +; ... and 10 further references from decoded code + .byte $00, $00, $01, $01, $02, $02, $02, $03, $03, $04, $04, $05, $05, $06, $06, $07 ; CPU:$AC66 PRG:2C66 00 00 01 01 02 02 02 03 03 04 04 05 05 06 06 07 + .byte $07, $07, $0A, $0A, $0B, $0B, $0B, $0C, $0C, $0D, $0D, $0E, $0E, $0F, $0F, $10 ; CPU:$AC76 PRG:2C76 07 07 0A 0A 0B 0B 0B 0C 0C 0D 0D 0E 0E 0F 0F 10 + .byte $10, $11, $11, $11, $80, $F9, $81, $F9, $82, $F8, $83, $F8, $84, $F7, $86, $F6 ; CPU:$AC86 PRG:2C86 10 11 11 11 80 F9 81 F9 82 F8 83 F8 84 F7 86 F6 + .byte $88, $F5, $8A, $F4, $8E, $F2, $92, $F0, $96, $EE, $9C, $EA, $A2, $E8, $A8, $E3 ; CPU:$AC96 PRG:2C96 88 F5 8A F4 8E F2 92 F0 96 EE 9C EA A2 E8 A8 E3 + .byte $B0, $E0, $B8, $D9, $C2, $D5, $D0, $CF, $00, $00, $00, $00, $01, $01, $01, $01 ; CPU:$ACA6 PRG:2CA6 B0 E0 B8 D9 C2 D5 D0 CF 00 00 00 00 01 01 01 01 + .byte $01, $02, $02, $03, $03, $04, $04, $05, $05, $05, $04, $04, $06, $06, $06, $04 ; CPU:$ACB6 PRG:2CB6 01 02 02 03 03 04 04 05 05 05 04 04 06 06 06 04 + .byte $04, $07, $07, $07, $04, $04, $08, $08, $08, $04, $04, $09, $09, $09, $04, $04 ; CPU:$ACC6 PRG:2CC6 04 07 07 07 04 04 08 08 08 04 04 09 09 09 04 04 + .byte $0A, $0A, $0A, $04, $04, $0B, $0B, $0B, $04, $04, $0C, $0C, $0C, $04, $04, $0D ; CPU:$ACD6 PRG:2CD6 0A 0A 0A 04 04 0B 0B 0B 04 04 0C 0C 0C 04 04 0D + .byte $0D, $0D, $81, $F5, $82, $F4, $83, $F3, $84, $F2, $86, $F1, $88, $EF, $8A, $ED ; CPU:$ACE6 PRG:2CE6 0D 0D 81 F5 82 F4 83 F3 84 F2 86 F1 88 EF 8A ED + .byte $8C, $EC, $90, $E8, $95, $E4, $99, $E0, $A0, $DA, $A6, $D5, $AE, $CE, $B6, $C8 ; CPU:$ACF6 PRG:2CF6 8C EC 90 E8 95 E4 99 E0 A0 DA A6 D5 AE CE B6 C8 + .byte $C0, $BE, $CA, $B8, $D6, $AE ; CPU:$AD06 PRG:2D06 C0 BE CA B8 D6 AE +; ----------------------------------------------------------------------------- +; Routine: Sub_AD0C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AD0C: + lda Zp6F ; CPU:$AD0C PRG:2D0C A5 6F + bne GameModeTask_Loop39 ; CPU:$AD0E PRG:2D0E D0 24 + inc Zp6F ; CPU:$AD10 PRG:2D10 E6 6F + lda #$00 ; CPU:$AD12 PRG:2D12 A9 00 + sta $0423 ; CPU:$AD14 PRG:2D14 8D 23 04 + lda #$04 ; CPU:$AD17 PRG:2D17 A9 04 + sta $0427 ; CPU:$AD19 PRG:2D19 8D 27 04 + lda #$10 ; CPU:$AD1C PRG:2D1C A9 10 + sta $0428 ; CPU:$AD1E PRG:2D1E 8D 28 04 + lda #$15 ; CPU:$AD21 PRG:2D21 A9 15 + sta $042C ; CPU:$AD23 PRG:2D23 8D 2C 04 + lda #$00 ; CPU:$AD26 PRG:2D26 A9 00 + sta $042B ; CPU:$AD28 PRG:2D28 8D 2B 04 + lda #$02 ; CPU:$AD2B PRG:2D2B A9 02 + sta Zp7A ; CPU:$AD2D PRG:2D2D 85 7A + lda #$01 ; CPU:$AD2F PRG:2D2F A9 01 + sta Zp72 ; CPU:$AD31 PRG:2D31 85 72 + rts ; CPU:$AD33 PRG:2D33 60 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop39 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop39: + lda #$03 ; CPU:$AD34 PRG:2D34 A9 03 + sta Zp17 ; CPU:$AD36 PRG:2D36 85 17 + lda #$28 ; CPU:$AD38 PRG:2D38 A9 28 + jsr SpriteTile ; CPU:$AD3A PRG:2D3A 20 2B FC + lda Zp7A ; CPU:$AD3D PRG:2D3D A5 7A + beq GameModeTask_Loop40 ; CPU:$AD3F PRG:2D3F F0 03 + jsr Sub_AD52 ; CPU:$AD41 PRG:2D41 20 52 AD +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop40 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop40: + lda $046D ; CPU:$AD44 PRG:2D44 AD 6D 04 + cmp #$10 ; CPU:$AD47 PRG:2D47 C9 10 + bcc GameModeTask_Loop41 ; CPU:$AD49 PRG:2D49 90 06 + jsr Sub_AE14 ; CPU:$AD4B PRG:2D4B 20 14 AE + jsr Sub_AD86 ; CPU:$AD4E PRG:2D4E 20 86 AD +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop41 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop41: + rts ; CPU:$AD51 PRG:2D51 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AD52 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AD52: + lda #$39 ; CPU:$AD52 PRG:2D52 A9 39 + sta Zp39 ; CPU:$AD54 PRG:2D54 85 39 + lda #$B2 ; CPU:$AD56 PRG:2D56 A9 B2 + sta Zp3A ; CPU:$AD58 PRG:2D58 85 3A + lda $0108 ; CPU:$AD5A PRG:2D5A AD 08 01 + beq GameModeTask_Loop42 ; CPU:$AD5D PRG:2D5D F0 02 + dec Zp7A ; CPU:$AD5F PRG:2D5F C6 7A +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop42 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop42: + lda #$28 ; CPU:$AD61 PRG:2D61 A9 28 + sta $0426 ; CPU:$AD63 PRG:2D63 8D 26 04 + lda #$03 ; CPU:$AD66 PRG:2D66 A9 03 + sta Zp11 ; CPU:$AD68 PRG:2D68 85 11 + lda #$02 ; CPU:$AD6A PRG:2D6A A9 02 + sec ; CPU:$AD6C PRG:2D6C 38 + sbc Zp7A ; CPU:$AD6D PRG:2D6D E5 7A + tax ; CPU:$AD6F PRG:2D6F AA + lda $A9C7,x ; CPU:$AD70 PRG:2D70 BD C7 A9 + sec ; CPU:$AD73 PRG:2D73 38 + sbc #$08 ; CPU:$AD74 PRG:2D74 E9 08 + sta $0424 ; CPU:$AD76 PRG:2D76 8D 24 04 + lda #$80 ; CPU:$AD79 PRG:2D79 A9 80 + sta $0425 ; CPU:$AD7B PRG:2D7B 8D 25 04 + lda #$02 ; CPU:$AD7E PRG:2D7E A9 02 + ldy #$20 ; CPU:$AD80 PRG:2D80 A0 20 + jsr OamCopy ; CPU:$AD82 PRG:2D82 20 E3 FB + rts ; CPU:$AD85 PRG:2D85 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AD86 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AD86: + lda $042C ; CPU:$AD86 PRG:2D86 AD 2C 04 + beq GameModeTask_Loop44 ; CPU:$AD89 PRG:2D89 F0 1C + lda #$50 ; CPU:$AD8B PRG:2D8B A9 50 + sta Zp39 ; CPU:$AD8D PRG:2D8D 85 39 + lda #$BA ; CPU:$AD8F PRG:2D8F A9 BA + sta Zp3A ; CPU:$AD91 PRG:2D91 85 3A + lda #$80 ; CPU:$AD93 PRG:2D93 A9 80 + ora $0423 ; CPU:$AD95 PRG:2D95 0D 23 04 + sta $0423 ; CPU:$AD98 PRG:2D98 8D 23 04 + lda $042B ; CPU:$AD9B PRG:2D9B AD 2B 04 + beq GameModeTask_Loop43 ; CPU:$AD9E PRG:2D9E F0 03 + dec $042C ; CPU:$ADA0 PRG:2DA0 CE 2C 04 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop43 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop43: + jsr Sub_ADB1 ; CPU:$ADA3 PRG:2DA3 20 B1 AD + rts ; CPU:$ADA6 PRG:2DA6 60 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop44 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop44: + lda #$06 ; CPU:$ADA7 PRG:2DA7 A9 06 + sta Zp17 ; CPU:$ADA9 PRG:2DA9 85 17 + lda #$22 ; CPU:$ADAB PRG:2DAB A9 22 + jsr SpriteTile ; CPU:$ADAD PRG:2DAD 20 2B FC + rts ; CPU:$ADB0 PRG:2DB0 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_ADB1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_ADB1: + lda $0423 ; CPU:$ADB1 PRG:2DB1 AD 23 04 + lsr a ; CPU:$ADB4 PRG:2DB4 4A + bcc GameModeTask_Loop45 ; CPU:$ADB5 PRG:2DB5 90 0D + lda #$01 ; CPU:$ADB7 PRG:2DB7 A9 01 + sta $030A ; CPU:$ADB9 PRG:2DB9 8D 0A 03 + lda #$7E ; CPU:$ADBC PRG:2DBC A9 7E + and $0423 ; CPU:$ADBE PRG:2DBE 2D 23 04 + sta $0423 ; CPU:$ADC1 PRG:2DC1 8D 23 04 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop45 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop45: + lda #$22 ; CPU:$ADC4 PRG:2DC4 A9 22 + sta $0426 ; CPU:$ADC6 PRG:2DC6 8D 26 04 + lda #$06 ; CPU:$ADC9 PRG:2DC9 A9 06 + sta Zp11 ; CPU:$ADCB PRG:2DCB 85 11 + lda #$15 ; CPU:$ADCD PRG:2DCD A9 15 + sec ; CPU:$ADCF PRG:2DCF 38 + sbc $042C ; CPU:$ADD0 PRG:2DD0 ED 2C 04 + tax ; CPU:$ADD3 PRG:2DD3 AA + lda $ADFE,x ; CPU:$ADD4 PRG:2DD4 BD FE AD + sta $0424 ; CPU:$ADD7 PRG:2DD7 8D 24 04 + lda #$80 ; CPU:$ADDA PRG:2DDA A9 80 + sta $0425 ; CPU:$ADDC PRG:2DDC 8D 25 04 + lda $ADE8,x ; CPU:$ADDF PRG:2DDF BD E8 AD + ldy #$20 ; CPU:$ADE2 PRG:2DE2 A0 20 + jsr OamCopy ; CPU:$ADE4 PRG:2DE4 20 E3 FB + rts ; CPU:$ADE7 PRG:2DE7 60 +; ---- data $ADE8-$AE13 (44 bytes) ---- +; referenced by `lda $ADFE,x` at $ADD4 (operand $ADFE falls inside this region) +; referenced by `lda $ADE8,x` at $ADDF (operand $ADE8 falls inside this region) + .byte $00, $01, $02, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E ; CPU:$ADE8 PRG:2DE8 00 01 02 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E + .byte $0F, $10, $11, $12, $13, $14, $93, $95, $97, $99, $9B, $9D, $A0, $A3, $A6, $A9 ; CPU:$ADF8 PRG:2DF8 0F 10 11 12 13 14 93 95 97 99 9B 9D A0 A3 A6 A9 + .byte $AC, $AE, $B0, $B2, $B4, $B6, $BC, $C2, $C7, $CC, $D0, $D4 ; CPU:$AE08 PRG:2E08 AC AE B0 B2 B4 B6 BC C2 C7 CC D0 D4 +; ----------------------------------------------------------------------------- +; Routine: Sub_AE14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AE14: + lda #$DF ; CPU:$AE14 PRG:2E14 A9 DF + sta Zp39 ; CPU:$AE16 PRG:2E16 85 39 + lda #$B1 ; CPU:$AE18 PRG:2E18 A9 B1 + sta Zp3A ; CPU:$AE1A PRG:2E1A 85 3A + lda $042B ; CPU:$AE1C PRG:2E1C AD 2B 04 + beq GameModeTask_Loop47 ; CPU:$AE1F PRG:2E1F F0 2B + lda $0433 ; CPU:$AE21 PRG:2E21 AD 33 04 + beq GameModeTask_Loop46 ; CPU:$AE24 PRG:2E24 F0 17 + lda $0434 ; CPU:$AE26 PRG:2E26 AD 34 04 + clc ; CPU:$AE29 PRG:2E29 18 + adc #$04 ; CPU:$AE2A PRG:2E2A 69 04 + sta $0434 ; CPU:$AE2C PRG:2E2C 8D 34 04 + cmp #$CC ; CPU:$AE2F PRG:2E2F C9 CC + bcc GameModeTask_Loop46 ; CPU:$AE31 PRG:2E31 90 0A + lda #$00 ; CPU:$AE33 PRG:2E33 A9 00 + sta $0433 ; CPU:$AE35 PRG:2E35 8D 33 04 + lda #$F0 ; CPU:$AE38 PRG:2E38 A9 F0 + sta $0434 ; CPU:$AE3A PRG:2E3A 8D 34 04 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop46 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop46: + inc Zp71 ; CPU:$AE3D PRG:2E3D E6 71 + lda Zp71 ; CPU:$AE3F PRG:2E3F A5 71 + cmp #$04 ; CPU:$AE41 PRG:2E41 C9 04 + bne GameModeTask_Loop47 ; CPU:$AE43 PRG:2E43 D0 07 + lda #$00 ; CPU:$AE45 PRG:2E45 A9 00 + sta Zp71 ; CPU:$AE47 PRG:2E47 85 71 + sec ; CPU:$AE49 PRG:2E49 38 + rol Zp72 ; CPU:$AE4A PRG:2E4A 26 72 +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop47 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop47: + jsr Sub_AE86 ; CPU:$AE4C PRG:2E4C 20 86 AE + lda Zp72 ; CPU:$AE4F PRG:2E4F A5 72 + and #$02 ; CPU:$AE51 PRG:2E51 29 02 + beq GameModeTask_Loop48 ; CPU:$AE53 PRG:2E53 F0 03 + jsr Sub_AEC2 ; CPU:$AE55 PRG:2E55 20 C2 AE +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop48 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop48: + lda Zp72 ; CPU:$AE58 PRG:2E58 A5 72 + and #$04 ; CPU:$AE5A PRG:2E5A 29 04 + beq GameModeTask_Loop49 ; CPU:$AE5C PRG:2E5C F0 03 + jsr Sub_AEFE ; CPU:$AE5E PRG:2E5E 20 FE AE +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop49 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop49: + lda Zp72 ; CPU:$AE61 PRG:2E61 A5 72 + and #$08 ; CPU:$AE63 PRG:2E63 29 08 + beq GameModeTask_Loop50 ; CPU:$AE65 PRG:2E65 F0 03 + jsr Sub_AF3A ; CPU:$AE67 PRG:2E67 20 3A AF +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop50 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop50: + lda Zp72 ; CPU:$AE6A PRG:2E6A A5 72 + and #$10 ; CPU:$AE6C PRG:2E6C 29 10 + beq GameModeTask_Loop51 ; CPU:$AE6E PRG:2E6E F0 03 + jsr Sub_AF76 ; CPU:$AE70 PRG:2E70 20 76 AF +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop51 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop51: + lda Zp72 ; CPU:$AE73 PRG:2E73 A5 72 + and #$20 ; CPU:$AE75 PRG:2E75 29 20 + beq GameModeTask_Loop52 ; CPU:$AE77 PRG:2E77 F0 03 + jsr Sub_AFB2 ; CPU:$AE79 PRG:2E79 20 B2 AF +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop52 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop52: + lda Zp72 ; CPU:$AE7C PRG:2E7C A5 72 + and #$40 ; CPU:$AE7E PRG:2E7E 29 40 + beq GameModeTask_Loop53 ; CPU:$AE80 PRG:2E80 F0 03 + jsr Sub_AFEE ; CPU:$AE82 PRG:2E82 20 EE AF +; ----------------------------------------------------------------------------- +; Routine: GameModeTask_Loop53 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GameModeTask_Loop53: + rts ; CPU:$AE85 PRG:2E85 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AE86 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AE86: + lda #$14 ; CPU:$AE86 PRG:2E86 A9 14 + sta $0426 ; CPU:$AE88 PRG:2E88 8D 26 04 + lda #$01 ; CPU:$AE8B PRG:2E8B A9 01 + sta Zp11 ; CPU:$AE8D PRG:2E8D 85 11 + lda Zp71 ; CPU:$AE8F PRG:2E8F A5 71 + asl a ; CPU:$AE91 PRG:2E91 0A + tax ; CPU:$AE92 PRG:2E92 AA + ldy $B02A,x ; CPU:$AE93 PRG:2E93 BC 2A B0 + sty $0424 ; CPU:$AE96 PRG:2E96 8C 24 04 + lda $B02B,x ; CPU:$AE99 PRG:2E99 BD 2B B0 + pha ; CPU:$AE9C PRG:2E9C 48 + clc ; CPU:$AE9D PRG:2E9D 18 + adc #$80 ; CPU:$AE9E PRG:2E9E 69 80 + sta $0425 ; CPU:$AEA0 PRG:2EA0 8D 25 04 + lda #$00 ; CPU:$AEA3 PRG:2EA3 A9 00 + ldy #$20 ; CPU:$AEA5 PRG:2EA5 A0 20 + jsr OamCopy ; CPU:$AEA7 PRG:2EA7 20 E3 FB + lda #$1B ; CPU:$AEAA PRG:2EAA A9 1B + sta $0426 ; CPU:$AEAC PRG:2EAC 8D 26 04 + lda #$01 ; CPU:$AEAF PRG:2EAF A9 01 + sta Zp11 ; CPU:$AEB1 PRG:2EB1 85 11 + pla ; CPU:$AEB3 PRG:2EB3 68 + eor #$FF ; CPU:$AEB4 PRG:2EB4 49 FF + sec ; CPU:$AEB6 PRG:2EB6 38 + adc #$80 ; CPU:$AEB7 PRG:2EB7 69 80 + sta $0425 ; CPU:$AEB9 PRG:2EB9 8D 25 04 + lda #$00 ; CPU:$AEBC PRG:2EBC A9 00 + jsr OamCopy ; CPU:$AEBE PRG:2EBE 20 E3 FB + rts ; CPU:$AEC1 PRG:2EC1 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AEC2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AEC2: + lda #$15 ; CPU:$AEC2 PRG:2EC2 A9 15 + sta $0426 ; CPU:$AEC4 PRG:2EC4 8D 26 04 + lda #$01 ; CPU:$AEC7 PRG:2EC7 A9 01 + sta Zp11 ; CPU:$AEC9 PRG:2EC9 85 11 + lda Zp71 ; CPU:$AECB PRG:2ECB A5 71 + asl a ; CPU:$AECD PRG:2ECD 0A + tax ; CPU:$AECE PRG:2ECE AA + ldy $B032,x ; CPU:$AECF PRG:2ECF BC 32 B0 + sty $0424 ; CPU:$AED2 PRG:2ED2 8C 24 04 + lda $B033,x ; CPU:$AED5 PRG:2ED5 BD 33 B0 + pha ; CPU:$AED8 PRG:2ED8 48 + clc ; CPU:$AED9 PRG:2ED9 18 + adc #$80 ; CPU:$AEDA PRG:2EDA 69 80 + sta $0425 ; CPU:$AEDC PRG:2EDC 8D 25 04 + lda #$01 ; CPU:$AEDF PRG:2EDF A9 01 + ldy #$20 ; CPU:$AEE1 PRG:2EE1 A0 20 + jsr OamCopy ; CPU:$AEE3 PRG:2EE3 20 E3 FB + lda #$1C ; CPU:$AEE6 PRG:2EE6 A9 1C + sta $0426 ; CPU:$AEE8 PRG:2EE8 8D 26 04 + lda #$01 ; CPU:$AEEB PRG:2EEB A9 01 + sta Zp11 ; CPU:$AEED PRG:2EED 85 11 + pla ; CPU:$AEEF PRG:2EEF 68 + eor #$FF ; CPU:$AEF0 PRG:2EF0 49 FF + sec ; CPU:$AEF2 PRG:2EF2 38 + adc #$80 ; CPU:$AEF3 PRG:2EF3 69 80 + sta $0425 ; CPU:$AEF5 PRG:2EF5 8D 25 04 + lda #$01 ; CPU:$AEF8 PRG:2EF8 A9 01 + jsr OamCopy ; CPU:$AEFA PRG:2EFA 20 E3 FB + rts ; CPU:$AEFD PRG:2EFD 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AEFE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AEFE: + lda #$16 ; CPU:$AEFE PRG:2EFE A9 16 + sta $0426 ; CPU:$AF00 PRG:2F00 8D 26 04 + lda #$01 ; CPU:$AF03 PRG:2F03 A9 01 + sta Zp11 ; CPU:$AF05 PRG:2F05 85 11 + lda Zp71 ; CPU:$AF07 PRG:2F07 A5 71 + asl a ; CPU:$AF09 PRG:2F09 0A + tax ; CPU:$AF0A PRG:2F0A AA + lda $B03A,x ; CPU:$AF0B PRG:2F0B BD 3A B0 + sta $0424 ; CPU:$AF0E PRG:2F0E 8D 24 04 + lda $B03B,x ; CPU:$AF11 PRG:2F11 BD 3B B0 + pha ; CPU:$AF14 PRG:2F14 48 + clc ; CPU:$AF15 PRG:2F15 18 + adc #$80 ; CPU:$AF16 PRG:2F16 69 80 + sta $0425 ; CPU:$AF18 PRG:2F18 8D 25 04 + lda #$02 ; CPU:$AF1B PRG:2F1B A9 02 + ldy #$20 ; CPU:$AF1D PRG:2F1D A0 20 + jsr OamCopy ; CPU:$AF1F PRG:2F1F 20 E3 FB + lda #$1D ; CPU:$AF22 PRG:2F22 A9 1D + sta $0426 ; CPU:$AF24 PRG:2F24 8D 26 04 + lda #$01 ; CPU:$AF27 PRG:2F27 A9 01 + sta Zp11 ; CPU:$AF29 PRG:2F29 85 11 + pla ; CPU:$AF2B PRG:2F2B 68 + eor #$FF ; CPU:$AF2C PRG:2F2C 49 FF + sec ; CPU:$AF2E PRG:2F2E 38 + adc #$80 ; CPU:$AF2F PRG:2F2F 69 80 + sta $0425 ; CPU:$AF31 PRG:2F31 8D 25 04 + lda #$02 ; CPU:$AF34 PRG:2F34 A9 02 + jsr OamCopy ; CPU:$AF36 PRG:2F36 20 E3 FB + rts ; CPU:$AF39 PRG:2F39 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AF3A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AF3A: + lda #$17 ; CPU:$AF3A PRG:2F3A A9 17 + sta $0426 ; CPU:$AF3C PRG:2F3C 8D 26 04 + lda #$01 ; CPU:$AF3F PRG:2F3F A9 01 + sta Zp11 ; CPU:$AF41 PRG:2F41 85 11 + lda Zp71 ; CPU:$AF43 PRG:2F43 A5 71 + asl a ; CPU:$AF45 PRG:2F45 0A + tax ; CPU:$AF46 PRG:2F46 AA + lda $B042,x ; CPU:$AF47 PRG:2F47 BD 42 B0 + sta $0424 ; CPU:$AF4A PRG:2F4A 8D 24 04 + lda $B043,x ; CPU:$AF4D PRG:2F4D BD 43 B0 + pha ; CPU:$AF50 PRG:2F50 48 + clc ; CPU:$AF51 PRG:2F51 18 + adc #$80 ; CPU:$AF52 PRG:2F52 69 80 + sta $0425 ; CPU:$AF54 PRG:2F54 8D 25 04 + lda #$03 ; CPU:$AF57 PRG:2F57 A9 03 + ldy #$20 ; CPU:$AF59 PRG:2F59 A0 20 + jsr OamCopy ; CPU:$AF5B PRG:2F5B 20 E3 FB + lda #$1E ; CPU:$AF5E PRG:2F5E A9 1E + sta $0426 ; CPU:$AF60 PRG:2F60 8D 26 04 + lda #$01 ; CPU:$AF63 PRG:2F63 A9 01 + sta Zp11 ; CPU:$AF65 PRG:2F65 85 11 + pla ; CPU:$AF67 PRG:2F67 68 + eor #$FF ; CPU:$AF68 PRG:2F68 49 FF + sec ; CPU:$AF6A PRG:2F6A 38 + adc #$80 ; CPU:$AF6B PRG:2F6B 69 80 + sta $0425 ; CPU:$AF6D PRG:2F6D 8D 25 04 + lda #$03 ; CPU:$AF70 PRG:2F70 A9 03 + jsr OamCopy ; CPU:$AF72 PRG:2F72 20 E3 FB + rts ; CPU:$AF75 PRG:2F75 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AF76 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AF76: + lda #$18 ; CPU:$AF76 PRG:2F76 A9 18 + sta $0426 ; CPU:$AF78 PRG:2F78 8D 26 04 + lda #$01 ; CPU:$AF7B PRG:2F7B A9 01 + sta Zp11 ; CPU:$AF7D PRG:2F7D 85 11 + lda Zp71 ; CPU:$AF7F PRG:2F7F A5 71 + asl a ; CPU:$AF81 PRG:2F81 0A + tax ; CPU:$AF82 PRG:2F82 AA + lda $B04A,x ; CPU:$AF83 PRG:2F83 BD 4A B0 + sta $0424 ; CPU:$AF86 PRG:2F86 8D 24 04 + lda $B04B,x ; CPU:$AF89 PRG:2F89 BD 4B B0 + pha ; CPU:$AF8C PRG:2F8C 48 + clc ; CPU:$AF8D PRG:2F8D 18 + adc #$80 ; CPU:$AF8E PRG:2F8E 69 80 + sta $0425 ; CPU:$AF90 PRG:2F90 8D 25 04 + lda #$04 ; CPU:$AF93 PRG:2F93 A9 04 + ldy #$20 ; CPU:$AF95 PRG:2F95 A0 20 + jsr OamCopy ; CPU:$AF97 PRG:2F97 20 E3 FB + lda #$1F ; CPU:$AF9A PRG:2F9A A9 1F + sta $0426 ; CPU:$AF9C PRG:2F9C 8D 26 04 + lda #$01 ; CPU:$AF9F PRG:2F9F A9 01 + sta Zp11 ; CPU:$AFA1 PRG:2FA1 85 11 + pla ; CPU:$AFA3 PRG:2FA3 68 + eor #$FF ; CPU:$AFA4 PRG:2FA4 49 FF + sec ; CPU:$AFA6 PRG:2FA6 38 + adc #$80 ; CPU:$AFA7 PRG:2FA7 69 80 + sta $0425 ; CPU:$AFA9 PRG:2FA9 8D 25 04 + lda #$04 ; CPU:$AFAC PRG:2FAC A9 04 + jsr OamCopy ; CPU:$AFAE PRG:2FAE 20 E3 FB + rts ; CPU:$AFB1 PRG:2FB1 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AFB2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AFB2: + lda #$19 ; CPU:$AFB2 PRG:2FB2 A9 19 + sta $0426 ; CPU:$AFB4 PRG:2FB4 8D 26 04 + lda #$01 ; CPU:$AFB7 PRG:2FB7 A9 01 + sta Zp11 ; CPU:$AFB9 PRG:2FB9 85 11 + lda Zp71 ; CPU:$AFBB PRG:2FBB A5 71 + asl a ; CPU:$AFBD PRG:2FBD 0A + tax ; CPU:$AFBE PRG:2FBE AA + lda $B052,x ; CPU:$AFBF PRG:2FBF BD 52 B0 + sta $0424 ; CPU:$AFC2 PRG:2FC2 8D 24 04 + lda $B053,x ; CPU:$AFC5 PRG:2FC5 BD 53 B0 + pha ; CPU:$AFC8 PRG:2FC8 48 + clc ; CPU:$AFC9 PRG:2FC9 18 + adc #$80 ; CPU:$AFCA PRG:2FCA 69 80 + sta $0425 ; CPU:$AFCC PRG:2FCC 8D 25 04 + lda #$05 ; CPU:$AFCF PRG:2FCF A9 05 + ldy #$20 ; CPU:$AFD1 PRG:2FD1 A0 20 + jsr OamCopy ; CPU:$AFD3 PRG:2FD3 20 E3 FB + lda #$20 ; CPU:$AFD6 PRG:2FD6 A9 20 + sta $0426 ; CPU:$AFD8 PRG:2FD8 8D 26 04 + lda #$01 ; CPU:$AFDB PRG:2FDB A9 01 + sta Zp11 ; CPU:$AFDD PRG:2FDD 85 11 + pla ; CPU:$AFDF PRG:2FDF 68 + eor #$FF ; CPU:$AFE0 PRG:2FE0 49 FF + sec ; CPU:$AFE2 PRG:2FE2 38 + adc #$80 ; CPU:$AFE3 PRG:2FE3 69 80 + sta $0425 ; CPU:$AFE5 PRG:2FE5 8D 25 04 + lda #$05 ; CPU:$AFE8 PRG:2FE8 A9 05 + jsr OamCopy ; CPU:$AFEA PRG:2FEA 20 E3 FB + rts ; CPU:$AFED PRG:2FED 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_AFEE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_AFEE: + lda #$1A ; CPU:$AFEE PRG:2FEE A9 1A + sta $0426 ; CPU:$AFF0 PRG:2FF0 8D 26 04 + lda #$01 ; CPU:$AFF3 PRG:2FF3 A9 01 + sta Zp11 ; CPU:$AFF5 PRG:2FF5 85 11 + lda Zp71 ; CPU:$AFF7 PRG:2FF7 A5 71 + asl a ; CPU:$AFF9 PRG:2FF9 0A + tax ; CPU:$AFFA PRG:2FFA AA + lda $B05A,x ; CPU:$AFFB PRG:2FFB BD 5A B0 + sta $0424 ; CPU:$AFFE PRG:2FFE 8D 24 04 + lda $B05B,x ; CPU:$B001 PRG:3001 BD 5B B0 + pha ; CPU:$B004 PRG:3004 48 + clc ; CPU:$B005 PRG:3005 18 + adc #$80 ; CPU:$B006 PRG:3006 69 80 + sta $0425 ; CPU:$B008 PRG:3008 8D 25 04 + lda #$06 ; CPU:$B00B PRG:300B A9 06 + ldy #$20 ; CPU:$B00D PRG:300D A0 20 + jsr OamCopy ; CPU:$B00F PRG:300F 20 E3 FB + lda #$21 ; CPU:$B012 PRG:3012 A9 21 + sta $0426 ; CPU:$B014 PRG:3014 8D 26 04 + lda #$01 ; CPU:$B017 PRG:3017 A9 01 + sta Zp11 ; CPU:$B019 PRG:3019 85 11 + pla ; CPU:$B01B PRG:301B 68 + eor #$FF ; CPU:$B01C PRG:301C 49 FF + sec ; CPU:$B01E PRG:301E 38 + adc #$80 ; CPU:$B01F PRG:301F 69 80 + sta $0425 ; CPU:$B021 PRG:3021 8D 25 04 + lda #$06 ; CPU:$B024 PRG:3024 A9 06 + jsr OamCopy ; CPU:$B026 PRG:3026 20 E3 FB + rts ; CPU:$B029 PRG:3029 60 +; ---- data $B02A-$BE62 (3641 bytes) ---- +; referenced by `lda $BDC3,y` at $A182 (operand $BDC3 falls inside this region) +; referenced by `lda $BE43,y` at $A1F3 (operand $BE43 falls inside this region) +; referenced by `ldy $B02A,x` at $AE93 (operand $B02A falls inside this region) +; referenced by `lda $B02B,x` at $AE99 (operand $B02B falls inside this region) +; referenced by `ldy $B032,x` at $AECF (operand $B032 falls inside this region) +; referenced by `lda $B033,x` at $AED5 (operand $B033 falls inside this region) +; ... and 11 further references from decoded code + .byte $90, $F8, $92, $F6, $94, $F4, $96, $F2, $98, $F0, $9A, $EE, $9C, $EC, $9E, $EA ; CPU:$B02A PRG:302A 90 F8 92 F6 94 F4 96 F2 98 F0 9A EE 9C EC 9E EA + .byte $A0, $E8, $A2, $E6, $A4, $E4, $A6, $E2, $A8, $E0, $AA, $DE, $AC, $DC, $AE, $DA ; CPU:$B03A PRG:303A A0 E8 A2 E6 A4 E4 A6 E2 A8 E0 AA DE AC DC AE DA + .byte $B0, $D8, $B4, $D4, $B8, $D0, $BC, $CC, $C0, $C8, $C4, $C4, $C8, $C0, $CC, $BC ; CPU:$B04A PRG:304A B0 D8 B4 D4 B8 D0 BC CC C0 C8 C4 C4 C8 C0 CC BC + .byte $D0, $B8, $D4, $B4, $D8, $B0, $DC, $AC, $05, $E4, $B2, $05, $F8, $B2, $05, $0C ; CPU:$B05A PRG:305A D0 B8 D4 B4 D8 B0 DC AC 05 E4 B2 05 F8 B2 05 0C + .byte $B3, $05, $20, $B3, $05, $34, $B3, $05, $48, $B3, $05, $5C, $B3, $05, $70, $B3 ; CPU:$B06A PRG:306A B3 05 20 B3 05 34 B3 05 48 B3 05 5C B3 05 70 B3 + .byte $75, $E4, $B2, $75, $F8, $B2, $75, $0C, $B3, $75, $20, $B3, $75, $34, $B3, $75 ; CPU:$B07A PRG:307A 75 E4 B2 75 F8 B2 75 0C B3 75 20 B3 75 34 B3 75 + .byte $48, $B3, $75, $5C, $B3, $75, $70, $B3, $B0, $BB, $B5, $BB, $BA, $BB, $BF, $BB ; CPU:$B08A PRG:308A 48 B3 75 5C B3 75 70 B3 B0 BB B5 BB BA BB BF BB + .byte $C4, $BB, $E2, $BB, $E7, $BB, $EC, $BB, $F1, $BB, $F6, $BB, $FB, $BB, $00, $BC ; CPU:$B09A PRG:309A C4 BB E2 BB E7 BB EC BB F1 BB F6 BB FB BB 00 BC + .byte $05, $BC, $0A, $BC, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$B0AA PRG:30AA 05 BC 0A BC 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $73, $5C, $B3, $74, $70, $B3, $05, $84, $B3, $05, $98, $B3, $06, $AC ; CPU:$B0BA PRG:30BA 00 00 73 5C B3 74 70 B3 05 84 B3 05 98 B3 06 AC + .byte $B3, $05, $C4, $B3, $05, $D8, $B3, $06, $EC, $B3, $75, $84, $B3, $75, $98, $B3 ; CPU:$B0CA PRG:30CA B3 05 C4 B3 05 D8 B3 06 EC B3 75 84 B3 75 98 B3 + .byte $76, $AC, $B3, $75, $C4, $B3, $75, $D8, $B3, $76, $EC, $B3, $04, $04, $B4, $03 ; CPU:$B0DA PRG:30DA 76 AC B3 75 C4 B3 75 D8 B3 76 EC B3 04 04 B4 03 + .byte $14, $B4, $05, $20, $B4, $04, $34, $B4, $04, $44, $B4, $05, $54, $B4, $05, $68 ; CPU:$B0EA PRG:30EA 14 B4 05 20 B4 04 34 B4 04 44 B4 05 54 B4 05 68 + .byte $B4, $07, $7C, $B4, $04, $98, $B4, $04, $A8, $B4, $04, $B8, $B4, $74, $98, $B4 ; CPU:$B0FA PRG:30FA B4 07 7C B4 04 98 B4 04 A8 B4 04 B8 B4 74 98 B4 + .byte $74, $A8, $B4, $74, $B8, $B4, $77, $7C, $B4, $74, $04, $B4, $73, $14, $B4, $75 ; CPU:$B10A PRG:310A 74 A8 B4 74 B8 B4 77 7C B4 74 04 B4 73 14 B4 75 + .byte $20, $B4, $75, $54, $B4, $75, $68, $B4, $05, $C8, $B4, $06, $DC, $B4, $06, $F4 ; CPU:$B11A PRG:311A 20 B4 75 54 B4 75 68 B4 05 C8 B4 06 DC B4 06 F4 + .byte $B4, $06, $0C, $B5, $05, $24, $B5, $04, $38, $B5, $04, $48, $B5, $04, $58, $B5 ; CPU:$B12A PRG:312A B4 06 0C B5 05 24 B5 04 38 B5 04 48 B5 04 58 B5 + .byte $05, $68, $B5, $06, $7C, $B5, $06, $94, $B5, $06, $AC, $B5, $05, $C4, $B5, $04 ; CPU:$B13A PRG:313A 05 68 B5 06 7C B5 06 94 B5 06 AC B5 05 C4 B5 04 + .byte $D8, $B5, $04, $E8, $B5, $06, $F8, $B5, $05, $10, $B6, $05, $24, $B6, $05, $38 ; CPU:$B14A PRG:314A D8 B5 04 E8 B5 06 F8 B5 05 10 B6 05 24 B6 05 38 + .byte $B6, $05, $4C, $B6, $04, $60, $B6, $05, $70, $B6, $05, $84, $B6, $04, $98, $B6 ; CPU:$B15A PRG:315A B6 05 4C B6 04 60 B6 05 70 B6 05 84 B6 04 98 B6 + .byte $04, $A8, $B6, $74, $98, $B6, $74, $A8, $B6, $04, $B8, $B6, $04, $C8, $B6, $74 ; CPU:$B16A PRG:316A 04 A8 B6 74 98 B6 74 A8 B6 04 B8 B6 04 C8 B6 74 + .byte $D8, $B6, $73, $E8, $B6, $75, $F4, $B6, $02, $08, $B7, $02, $10, $B7, $02, $18 ; CPU:$B17A PRG:317A D8 B6 73 E8 B6 75 F4 B6 02 08 B7 02 10 B7 02 18 + .byte $B7, $02, $20, $B7, $02, $28, $B7, $02, $30, $B7, $02, $38, $B7, $02, $40, $B7 ; CPU:$B18A PRG:318A B7 02 20 B7 02 28 B7 02 30 B7 02 38 B7 02 40 B7 + .byte $02, $48, $B7, $02, $50, $B7, $02, $58, $B7, $02, $60, $B7, $02, $68, $B7, $02 ; CPU:$B19A PRG:319A 02 48 B7 02 50 B7 02 58 B7 02 60 B7 02 68 B7 02 + .byte $70, $B7, $02, $78, $B7, $01, $80, $B7, $01, $84, $B7, $06, $88, $B7, $06, $A0 ; CPU:$B1AA PRG:31AA 70 B7 02 78 B7 01 80 B7 01 84 B7 06 88 B7 06 A0 + .byte $B7, $56, $88, $B7, $56, $A0, $B7, $66, $88, $B7, $66, $A0, $B7, $02, $B8, $B7 ; CPU:$B1BA PRG:31BA B7 56 88 B7 56 A0 B7 66 88 B7 66 A0 B7 02 B8 B7 + .byte $02, $C0, $B7, $02, $C8, $B7, $02, $D0, $B7, $02, $D8, $B7, $02, $E0, $B7, $02 ; CPU:$B1CA PRG:31CA 02 C0 B7 02 C8 B7 02 D0 B7 02 D8 B7 02 E0 B7 02 + .byte $E8, $B7, $02, $F0, $B7, $14, $BC, $19, $BC, $1E, $BC, $23, $BC, $28, $BC, $2D ; CPU:$B1DA PRG:31DA E8 B7 02 F0 B7 14 BC 19 BC 1E BC 23 BC 28 BC 2D + .byte $BC, $32, $BC, $00, $00, $00, $00, $00, $00, $00, $02, $F0, $B7, $01, $F8, $B7 ; CPU:$B1EA PRG:31EA BC 32 BC 00 00 00 00 00 00 00 02 F0 B7 01 F8 B7 + .byte $01, $FC, $B7, $01, $00, $B8, $01, $04, $B8, $01, $08, $B8, $01, $0C, $B8, $01 ; CPU:$B1FA PRG:31FA 01 FC B7 01 00 B8 01 04 B8 01 08 B8 01 0C B8 01 + .byte $10, $B8, $01, $14, $B8, $01, $18, $B8, $01, $1C, $B8, $02, $20, $B8, $02, $28 ; CPU:$B20A PRG:320A 10 B8 01 14 B8 01 18 B8 01 1C B8 02 20 B8 02 28 + .byte $B8, $02, $30, $B8, $02, $38, $B8, $02, $40, $B8, $02, $48, $B8, $02, $50, $B8 ; CPU:$B21A PRG:321A B8 02 30 B8 02 38 B8 02 40 B8 02 48 B8 02 50 B8 + .byte $02, $58, $B8, $02, $60, $B8, $02, $68, $B8, $02, $70, $B8, $02, $78, $B8, $5C ; CPU:$B22A PRG:322A 02 58 B8 02 60 B8 02 68 B8 02 70 B8 02 78 B8 5C + .byte $BD, $69, $BD, $76, $BD, $00, $00, $00, $02, $58, $B8, $02, $60, $B8, $02, $68 ; CPU:$B23A PRG:323A BD 69 BD 76 BD 00 00 00 02 58 B8 02 60 B8 02 68 + .byte $B8, $02, $70, $B8, $02, $78, $B8, $01, $80, $B8, $01, $84, $B8, $01, $88, $B8 ; CPU:$B24A PRG:324A B8 02 70 B8 02 78 B8 01 80 B8 01 84 B8 01 88 B8 + .byte $01, $8C, $B8, $01, $90, $B8, $01, $94, $B8, $01, $98, $B8, $01, $9C, $B8, $01 ; CPU:$B25A PRG:325A 01 8C B8 01 90 B8 01 94 B8 01 98 B8 01 9C B8 01 + .byte $A0, $B8, $01, $A4, $B8, $02, $A8, $B8, $02, $B0, $B8, $02, $B8, $B8, $02, $C0 ; CPU:$B26A PRG:326A A0 B8 01 A4 B8 02 A8 B8 02 B0 B8 02 B8 B8 02 C0 + .byte $B8, $04, $C8, $B8, $02, $D8, $B8, $04, $E0, $B8, $07, $F0, $B8, $07, $0C, $B9 ; CPU:$B27A PRG:327A B8 04 C8 B8 02 D8 B8 04 E0 B8 07 F0 B8 07 0C B9 + .byte $08, $28, $B9, $07, $48, $B9, $08, $64, $B9, $02, $84, $B9, $02, $8C, $B9, $02 ; CPU:$B28A PRG:328A 08 28 B9 07 48 B9 08 64 B9 02 84 B9 02 8C B9 02 + .byte $94, $B9, $01, $9C, $B9, $01, $A0, $B9, $01, $A4, $B9, $01, $A8, $B9, $01, $AC ; CPU:$B29A PRG:329A 94 B9 01 9C B9 01 A0 B9 01 A4 B9 01 A8 B9 01 AC + .byte $B9, $02, $B0, $B9, $02, $B8, $B9, $02, $C0, $B9, $01, $C8, $B9, $01, $CC, $B9 ; CPU:$B2AA PRG:32AA B9 02 B0 B9 02 B8 B9 02 C0 B9 01 C8 B9 01 CC B9 + .byte $01, $D0, $B9, $01, $D4, $B9, $01, $D8, $B9, $02, $DC, $B9, $02, $E4, $B9, $02 ; CPU:$B2BA PRG:32BA 01 D0 B9 01 D4 B9 01 D8 B9 02 DC B9 02 E4 B9 02 + .byte $EC, $B9, $01, $F4, $B9, $01, $F8, $B9, $01, $FC, $B9, $01, $00, $BA, $01, $04 ; CPU:$B2CA PRG:32CA EC B9 01 F4 B9 01 F8 B9 01 FC B9 01 00 BA 01 04 + .byte $BA, $02, $08, $BA, $03, $10, $BA, $03, $1C, $BA, $F0, $F9, $00, $00, $F0, $01 ; CPU:$B2DA PRG:32DA BA 02 08 BA 03 10 BA 03 1C BA F0 F9 00 00 F0 01 + .byte $02, $00, $00, $01, $06, $00, $00, $F9, $04, $00, $10, $F9, $08, $00, $F0, $F8 ; CPU:$B2EA PRG:32EA 02 00 00 01 06 00 00 F9 04 00 10 F9 08 00 F0 F8 + .byte $0A, $00, $F0, $00, $0C, $00, $00, $00, $10, $00, $00, $F8, $0E, $00, $10, $F8 ; CPU:$B2FA PRG:32FA 0A 00 F0 00 0C 00 00 00 10 00 00 F8 0E 00 10 F8 + .byte $12, $00, $F0, $F8, $14, $00, $F0, $00, $16, $00, $00, $00, $1A, $00, $00, $F8 ; CPU:$B30A PRG:330A 12 00 F0 F8 14 00 F0 00 16 00 00 00 1A 00 00 F8 + .byte $18, $00, $10, $00, $1C, $00, $F0, $F8, $1E, $00, $F0, $00, $20, $00, $00, $00 ; CPU:$B31A PRG:331A 18 00 10 00 1C 00 F0 F8 1E 00 F0 00 20 00 00 00 + .byte $24, $00, $00, $F8, $22, $00, $10, $00, $26, $00, $F0, $F7, $02, $40, $F0, $FF ; CPU:$B32A PRG:332A 24 00 00 F8 22 00 10 00 26 00 F0 F7 02 40 F0 FF + .byte $00, $40, $00, $FF, $04, $40, $00, $F7, $06, $40, $10, $FF, $08, $40, $F0, $F8 ; CPU:$B33A PRG:333A 00 40 00 FF 04 40 00 F7 06 40 10 FF 08 40 F0 F8 + .byte $0C, $40, $F0, $00, $0A, $40, $00, $00, $0E, $40, $00, $F8, $10, $40, $10, $00 ; CPU:$B34A PRG:334A 0C 40 F0 00 0A 40 00 00 0E 40 00 F8 10 40 10 00 + .byte $12, $40, $F0, $F8, $16, $40, $F0, $00, $14, $40, $00, $00, $18, $40, $00, $F8 ; CPU:$B35A PRG:335A 12 40 F0 F8 16 40 F0 00 14 40 00 00 18 40 00 F8 + .byte $1A, $40, $10, $F8, $1C, $40, $F0, $F8, $20, $40, $F0, $00, $1E, $40, $00, $00 ; CPU:$B36A PRG:336A 1A 40 10 F8 1C 40 F0 F8 20 40 F0 00 1E 40 00 00 + .byte $22, $40, $00, $F8, $24, $40, $10, $F8, $26, $40, $F0, $FC, $4C, $00, $00, $FC ; CPU:$B37A PRG:337A 22 40 00 F8 24 40 10 F8 26 40 F0 FC 4C 00 00 FC + .byte $52, $00, $F0, $F4, $4A, $00, $F0, $04, $4E, $00, $00, $F4, $50, $00, $F0, $FC ; CPU:$B38A PRG:338A 52 00 F0 F4 4A 00 F0 04 4E 00 00 F4 50 00 F0 FC + .byte $56, $00, $00, $FC, $5C, $00, $F0, $F4, $54, $00, $F0, $04, $58, $00, $00, $F4 ; CPU:$B39A PRG:339A 56 00 00 FC 5C 00 F0 F4 54 00 F0 04 58 00 00 F4 + .byte $5A, $00, $F0, $FC, $60, $00, $00, $FC, $66, $00, $F0, $F4, $5E, $00, $F0, $04 ; CPU:$B3AA PRG:33AA 5A 00 F0 FC 60 00 00 FC 66 00 F0 F4 5E 00 F0 04 + .byte $62, $00, $00, $F4, $64, $00, $10, $FC, $68, $00, $F0, $FC, $4C, $40, $00, $FC ; CPU:$B3BA PRG:33BA 62 00 00 F4 64 00 10 FC 68 00 F0 FC 4C 40 00 FC + .byte $52, $40, $F0, $F4, $4E, $40, $F0, $04, $4A, $40, $00, $04, $50, $40, $F0, $FC ; CPU:$B3CA PRG:33CA 52 40 F0 F4 4E 40 F0 04 4A 40 00 04 50 40 F0 FC + .byte $56, $40, $00, $FC, $5C, $40, $F0, $F4, $58, $40, $F0, $04, $54, $40, $00, $04 ; CPU:$B3DA PRG:33DA 56 40 00 FC 5C 40 F0 F4 58 40 F0 04 54 40 00 04 + .byte $5A, $40, $F0, $FC, $60, $40, $00, $FC, $66, $40, $F0, $F4, $62, $40, $F0, $04 ; CPU:$B3EA PRG:33EA 5A 40 F0 FC 60 40 00 FC 66 40 F0 F4 62 40 F0 04 + .byte $5E, $40, $00, $04, $64, $40, $10, $FC, $68, $40, $F0, $FC, $28, $00, $00, $00 ; CPU:$B3FA PRG:33FA 5E 40 00 04 64 40 10 FC 68 40 F0 FC 28 00 00 00 + .byte $2C, $00, $00, $F8, $2A, $00, $10, $FC, $32, $00, $00, $00, $36, $00, $00, $F8 ; CPU:$B40A PRG:340A 2C 00 00 F8 2A 00 10 FC 32 00 00 00 36 00 00 F8 + .byte $34, $00, $10, $FC, $3A, $00, $F0, $FC, $3E, $00, $00, $FC, $44, $00, $FC, $F4 ; CPU:$B41A PRG:341A 34 00 10 FC 3A 00 F0 FC 3E 00 00 FC 44 00 FC F4 + .byte $3C, $00, $FC, $04, $40, $00, $10, $FC, $48, $00, $F6, $FC, $80, $00, $E6, $F8 ; CPU:$B42A PRG:342A 3C 00 FC 04 40 00 10 FC 48 00 F6 FC 80 00 E6 F8 + .byte $7C, $00, $E6, $00, $7E, $00, $06, $FC, $82, $00, $F6, $FC, $80, $00, $E6, $F8 ; CPU:$B43A PRG:343A 7C 00 E6 00 7E 00 06 FC 82 00 F6 FC 80 00 E6 F8 + .byte $84, $00, $E6, $00, $86, $00, $06, $FC, $82, $00, $EA, $F8, $A1, $00, $EA, $00 ; CPU:$B44A PRG:344A 84 00 E6 00 86 00 06 FC 82 00 EA F8 A1 00 EA 00 + .byte $A3, $00, $FA, $00, $A7, $00, $FA, $F8, $A5, $00, $0A, $FB, $A9, $00, $F0, $F8 ; CPU:$B45A PRG:345A A3 00 FA 00 A7 00 FA F8 A5 00 0A FB A9 00 F0 F8 + .byte $AD, $00, $F0, $00, $AF, $00, $00, $00, $B3, $00, $00, $F8, $B1, $00, $10, $FB ; CPU:$B46A PRG:346A AD 00 F0 00 AF 00 00 00 B3 00 00 F8 B1 00 10 FB + .byte $B5, $00, $00, $FC, $BF, $00, $F0, $F4, $B9, $00, $F0, $FC, $BB, $00, $F0, $04 ; CPU:$B47A PRG:347A B5 00 00 FC BF 00 F0 F4 B9 00 F0 FC BB 00 F0 04 + .byte $B9, $40, $00, $F4, $BD, $00, $00, $04, $BD, $40, $10, $FC, $C1, $00, $F0, $F8 ; CPU:$B48A PRG:348A B9 40 00 F4 BD 00 00 04 BD 40 10 FC C1 00 F0 F8 + .byte $8E, $00, $F0, $00, $90, $00, $00, $FC, $92, $00, $10, $FC, $94, $00, $F0, $F8 ; CPU:$B49A PRG:349A 8E 00 F0 00 90 00 00 FC 92 00 10 FC 94 00 F0 F8 + .byte $96, $00, $F0, $00, $98, $00, $00, $FC, $92, $00, $10, $FC, $94, $00, $00, $FC ; CPU:$B4AA PRG:34AA 96 00 F0 00 98 00 00 FC 92 00 10 FC 94 00 00 FC + .byte $9C, $00, $F0, $F8, $9A, $00, $F0, $00, $9A, $40, $10, $FC, $9E, $00, $00, $FC ; CPU:$B4BA PRG:34BA 9C 00 F0 F8 9A 00 F0 00 9A 40 10 FC 9E 00 00 FC + .byte $2E, $00, $F0, $F4, $28, $00, $F0, $FC, $2A, $00, $F0, $04, $2C, $00, $10, $FC ; CPU:$B4CA PRG:34CA 2E 00 F0 F4 28 00 F0 FC 2A 00 F0 04 2C 00 10 FC + .byte $30, $00, $00, $FC, $38, $00, $F0, $F4, $32, $00, $F0, $FC, $34, $00, $F0, $04 ; CPU:$B4DA PRG:34DA 30 00 00 FC 38 00 F0 F4 32 00 F0 FC 34 00 F0 04 + .byte $36, $00, $10, $FC, $3C, $00, $00, $04, $3A, $00, $00, $FC, $44, $00, $F0, $F4 ; CPU:$B4EA PRG:34EA 36 00 10 FC 3C 00 00 04 3A 00 00 FC 44 00 F0 F4 + .byte $3E, $00, $F0, $FC, $40, $00, $F0, $04, $42, $00, $10, $FC, $48, $00, $00, $04 ; CPU:$B4FA PRG:34FA 3E 00 F0 FC 40 00 F0 04 42 00 10 FC 48 00 00 04 + .byte $46, $00, $00, $FC, $52, $00, $F0, $F4, $4C, $00, $F0, $FC, $4E, $00, $F0, $04 ; CPU:$B50A PRG:350A 46 00 00 FC 52 00 F0 F4 4C 00 F0 FC 4E 00 F0 04 + .byte $50, $00, $10, $FC, $54, $00, $E0, $F4, $4A, $00, $00, $FC, $5E, $00, $E0, $F4 ; CPU:$B51A PRG:351A 50 00 10 FC 54 00 E0 F4 4A 00 00 FC 5E 00 E0 F4 + .byte $56, $00, $F0, $F4, $58, $00, $F0, $FC, $5A, $00, $F0, $04, $5C, $00, $00, $00 ; CPU:$B52A PRG:352A 56 00 F0 F4 58 00 F0 FC 5A 00 F0 04 5C 00 00 00 + .byte $66, $00, $F0, $F8, $60, $00, $F0, $00, $62, $00, $00, $F8, $64, $00, $00, $00 ; CPU:$B53A PRG:353A 66 00 F0 F8 60 00 F0 00 62 00 00 F8 64 00 00 00 + .byte $6A, $00, $00, $F8, $68, $00, $10, $00, $6E, $00, $10, $F8, $6C, $00, $00, $00 ; CPU:$B54A PRG:354A 6A 00 00 F8 68 00 10 00 6E 00 10 F8 6C 00 00 00 + .byte $F7, $00, $00, $F8, $F5, $00, $10, $00, $FB, $00, $10, $F8, $F9, $00, $00, $FC ; CPU:$B55A PRG:355A F7 00 00 F8 F5 00 10 00 FB 00 10 F8 F9 00 00 FC + .byte $2E, $40, $F0, $F4, $2C, $40, $F0, $FC, $2A, $40, $F0, $04, $28, $40, $10, $FC ; CPU:$B56A PRG:356A 2E 40 F0 F4 2C 40 F0 FC 2A 40 F0 04 28 40 10 FC + .byte $30, $40, $00, $FC, $38, $40, $F0, $F4, $36, $40, $F0, $FC, $34, $40, $F0, $04 ; CPU:$B57A PRG:357A 30 40 00 FC 38 40 F0 F4 36 40 F0 FC 34 40 F0 04 + .byte $32, $40, $10, $FC, $3C, $40, $00, $F4, $3A, $40, $00, $FC, $44, $40, $F0, $F4 ; CPU:$B58A PRG:358A 32 40 10 FC 3C 40 00 F4 3A 40 00 FC 44 40 F0 F4 + .byte $42, $40, $F0, $FC, $40, $40, $F0, $04, $3E, $40, $10, $FC, $48, $40, $00, $F4 ; CPU:$B59A PRG:359A 42 40 F0 FC 40 40 F0 04 3E 40 10 FC 48 40 00 F4 + .byte $46, $40, $00, $FC, $52, $40, $E0, $04, $4A, $40, $F0, $F4, $50, $40, $F0, $FC ; CPU:$B5AA PRG:35AA 46 40 00 FC 52 40 E0 04 4A 40 F0 F4 50 40 F0 FC + .byte $4E, $40, $F0, $04, $4C, $40, $10, $FC, $54, $40, $00, $FC, $5E, $40, $E0, $04 ; CPU:$B5BA PRG:35BA 4E 40 F0 04 4C 40 10 FC 54 40 00 FC 5E 40 E0 04 + .byte $56, $40, $F0, $F4, $5C, $40, $F0, $FC, $5A, $40, $F0, $04, $58, $40, $00, $FC ; CPU:$B5CA PRG:35CA 56 40 F0 F4 5C 40 F0 FC 5A 40 F0 04 58 40 00 FC + .byte $64, $40, $F0, $F4, $62, $40, $F0, $FC, $60, $40, $00, $F4, $66, $40, $00, $00 ; CPU:$B5DA PRG:35DA 64 40 F0 F4 62 40 F0 FC 60 40 00 F4 66 40 00 00 + .byte $68, $40, $00, $F8, $6A, $40, $10, $00, $6C, $40, $10, $F8, $6E, $40, $00, $00 ; CPU:$B5EA PRG:35EA 68 40 00 F8 6A 40 10 00 6C 40 10 F8 6E 40 00 00 + .byte $76, $00, $F0, $F8, $70, $00, $F0, $00, $72, $00, $00, $F8, $74, $00, $10, $F8 ; CPU:$B5FA PRG:35FA 76 00 F0 F8 70 00 F0 00 72 00 00 F8 74 00 10 F8 + .byte $78, $00, $10, $00, $7A, $00, $00, $FC, $8E, $00, $F0, $F4, $88, $00, $F0, $FC ; CPU:$B60A PRG:360A 78 00 10 00 7A 00 00 FC 8E 00 F0 F4 88 00 F0 FC + .byte $8A, $00, $F0, $04, $8C, $00, $10, $FC, $90, $00, $00, $FC, $96, $00, $F0, $F4 ; CPU:$B61A PRG:361A 8A 00 F0 04 8C 00 10 FC 90 00 00 FC 96 00 F0 F4 + .byte $92, $00, $F0, $FC, $8A, $00, $F0, $04, $94, $00, $10, $FC, $98, $00, $00, $FC ; CPU:$B62A PRG:362A 92 00 F0 FC 8A 00 F0 04 94 00 10 FC 98 00 00 FC + .byte $9C, $00, $F0, $F4, $88, $00, $F0, $FC, $8A, $00, $F0, $04, $9A, $00, $10, $FC ; CPU:$B63A PRG:363A 9C 00 F0 F4 88 00 F0 FC 8A 00 F0 04 9A 00 10 FC + .byte $9E, $00, $00, $FC, $A4, $00, $F0, $F4, $A0, $00, $F0, $FC, $8A, $00, $F0, $04 ; CPU:$B64A PRG:364A 9E 00 00 FC A4 00 F0 F4 A0 00 F0 FC 8A 00 F0 04 + .byte $A2, $00, $10, $FC, $A6, $00, $00, $FC, $AC, $00, $F0, $F4, $A8, $00, $F0, $FC ; CPU:$B65A PRG:365A A2 00 10 FC A6 00 00 FC AC 00 F0 F4 A8 00 F0 FC + .byte $8A, $00, $F0, $04, $AA, $00, $00, $FC, $9C, $40, $F0, $F4, $9A, $40, $F0, $FC ; CPU:$B66A PRG:366A 8A 00 F0 04 AA 00 00 FC 9C 40 F0 F4 9A 40 F0 FC + .byte $8A, $40, $F0, $04, $88, $40, $10, $FC, $9E, $40, $00, $FC, $A4, $40, $F0, $F4 ; CPU:$B67A PRG:367A 8A 40 F0 04 88 40 10 FC 9E 40 00 FC A4 40 F0 F4 + .byte $A2, $40, $F0, $FC, $8A, $40, $F0, $04, $A0, $40, $10, $FC, $A6, $40, $00, $FC ; CPU:$B68A PRG:368A A2 40 F0 FC 8A 40 F0 04 A0 40 10 FC A6 40 00 FC + .byte $82, $00, $00, $F4, $80, $00, $00, $04, $88, $00, $10, $FC, $8A, $00, $FB, $FC ; CPU:$B69A PRG:369A 82 00 00 F4 80 00 00 04 88 00 10 FC 8A 00 FB FC + .byte $C8, $00, $0B, $F4, $BE, $00, $0B, $FC, $C0, $00, $0B, $04, $C6, $00, $00, $FC ; CPU:$B6AA PRG:36AA C8 00 0B F4 BE 00 0B FC C0 00 0B 04 C6 00 00 FC + .byte $B0, $00, $00, $F4, $AE, $00, $00, $04, $B2, $00, $10, $FC, $B4, $00, $FB, $FC ; CPU:$B6BA PRG:36BA B0 00 00 F4 AE 00 00 04 B2 00 10 FC B4 00 FB FC + .byte $BC, $00, $0B, $F4, $B6, $00, $0B, $FC, $B8, $00, $0B, $04, $BA, $00, $F0, $FC ; CPU:$B6CA PRG:36CA BC 00 0B F4 B6 00 0B FC B8 00 0B 04 BA 00 F0 FC + .byte $28, $00, $00, $F8, $2C, $40, $00, $00, $2A, $40, $10, $FC, $32, $40, $00, $F8 ; CPU:$B6DA PRG:36DA 28 00 00 F8 2C 40 00 00 2A 40 10 FC 32 40 00 F8 + .byte $36, $40, $00, $00, $34, $40, $10, $FC, $3A, $40, $F0, $FC, $3E, $40, $00, $FC ; CPU:$B6EA PRG:36EA 36 40 00 00 34 40 10 FC 3A 40 F0 FC 3E 40 00 FC + .byte $44, $40, $FC, $F4, $40, $40, $FC, $04, $3C, $40, $10, $FC, $48, $40, $1D, $F8 ; CPU:$B6FA PRG:36FA 44 40 FC F4 40 40 FC 04 3C 40 10 FC 48 40 1D F8 + .byte $41, $00, $1D, $00, $41, $40, $25, $F9, $41, $00, $25, $00, $41, $40, $2C, $FA ; CPU:$B70A PRG:370A 41 00 1D 00 41 40 25 F9 41 00 25 00 41 40 2C FA + .byte $41, $00, $2C, $FF, $41, $40, $30, $FA, $41, $00, $30, $FE, $41, $40, $32, $FA ; CPU:$B71A PRG:371A 41 00 2C FF 41 40 30 FA 41 00 30 FE 41 40 32 FA + .byte $41, $00, $32, $FE, $41, $40, $0E, $FA, $41, $00, $0E, $FF, $41, $40, $16, $FA ; CPU:$B72A PRG:372A 41 00 32 FE 41 40 0E FA 41 00 0E FF 41 40 16 FA + .byte $41, $00, $16, $00, $41, $40, $1D, $F8, $41, $00, $1D, $00, $41, $40, $21, $F9 ; CPU:$B73A PRG:373A 41 00 16 00 41 40 1D F8 41 00 1D 00 41 40 21 F9 + .byte $41, $00, $21, $00, $41, $40, $25, $F9, $41, $00, $25, $FF, $41, $40, $19, $F8 ; CPU:$B74A PRG:374A 41 00 21 00 41 40 25 F9 41 00 25 FF 41 40 19 F8 + .byte $41, $00, $19, $00, $41, $40, $1D, $F9, $41, $00, $1D, $00, $41, $40, $25, $FA ; CPU:$B75A PRG:375A 41 00 19 00 41 40 1D F9 41 00 1D 00 41 40 25 FA + .byte $41, $00, $25, $FF, $41, $40, $1D, $F9, $41, $00, $1D, $00, $41, $40, $19, $F8 ; CPU:$B76A PRG:376A 41 00 25 FF 41 40 1D F9 41 00 1D 00 41 40 19 F8 + .byte $41, $00, $19, $00, $41, $40, $1B, $00, $43, $00, $1B, $00, $43, $40, $00, $00 ; CPU:$B77A PRG:377A 41 00 19 00 41 40 1B 00 43 00 1B 00 43 40 00 00 + .byte $E7, $20, $F0, $F8, $E1, $00, $F0, $00, $E3, $00, $00, $F8, $E5, $20, $10, $F8 ; CPU:$B78A PRG:378A E7 20 F0 F8 E1 00 F0 00 E3 00 00 F8 E5 20 10 F8 + .byte $E9, $00, $10, $00, $EB, $00, $00, $00, $F3, $20, $F0, $F8, $ED, $00, $F0, $00 ; CPU:$B79A PRG:379A E9 00 10 00 EB 00 00 00 F3 20 F0 F8 ED 00 F0 00 + .byte $EF, $00, $00, $F8, $F1, $20, $10, $F8, $E9, $00, $10, $00, $EB, $00, $F0, $F9 ; CPU:$B7AA PRG:37AA EF 00 00 F8 F1 20 10 F8 E9 00 10 00 EB 00 F0 F9 + .byte $2E, $03, $F0, $01, $38, $03, $F0, $F8, $42, $03, $F0, $00, $46, $03, $F0, $F8 ; CPU:$B7BA PRG:37BA 2E 03 F0 01 38 03 F0 F8 42 03 F0 00 46 03 F0 F8 + .byte $A0, $03, $F0, $00, $A2, $03, $F0, $F8, $A4, $03, $F0, $00, $A6, $03, $F0, $F7 ; CPU:$B7CA PRG:37CA A0 03 F0 00 A2 03 F0 F8 A4 03 F0 00 A6 03 F0 F7 + .byte $38, $43, $F0, $FF, $2E, $43, $F0, $F8, $46, $43, $F0, $00, $42, $43, $F0, $F8 ; CPU:$B7DA PRG:37DA 38 43 F0 FF 2E 43 F0 F8 46 43 F0 00 42 43 F0 F8 + .byte $A2, $43, $F0, $00, $A0, $43, $F0, $F8, $A6, $43, $F0, $00, $A4, $43, $F0, $FC ; CPU:$B7EA PRG:37EA A2 43 F0 00 A0 43 F0 F8 A6 43 F0 00 A4 43 F0 FC + .byte $A8, $03, $F0, $FC, $AA, $03, $F0, $FC, $AC, $03, $F0, $FC, $A8, $43, $F0, $FC ; CPU:$B7FA PRG:37FA A8 03 F0 FC AA 03 F0 FC AC 03 F0 FC A8 43 F0 FC + .byte $AA, $43, $F0, $FC, $AC, $43, $F0, $FC, $AE, $03, $F0, $FC, $B0, $03, $F0, $FC ; CPU:$B80A PRG:380A AA 43 F0 FC AC 43 F0 FC AE 03 F0 FC B0 03 F0 FC + .byte $AE, $43, $F0, $FC, $B0, $43, $F0, $F8, $B2, $03, $F0, $00, $B4, $03, $EA, $F8 ; CPU:$B81A PRG:381A AE 43 F0 FC B0 43 F0 F8 B2 03 F0 00 B4 03 EA F8 + .byte $B6, $03, $EA, $00, $B8, $03, $F0, $F8, $8C, $03, $F0, $00, $FE, $03, $F0, $F8 ; CPU:$B82A PRG:382A B6 03 EA 00 B8 03 F0 F8 8C 03 F0 00 FE 03 F0 F8 + .byte $93, $03, $F0, $00, $D3, $03, $F0, $F9, $7F, $03, $F0, $01, $97, $03, $F0, $F8 ; CPU:$B83A PRG:383A 93 03 F0 00 D3 03 F0 F9 7F 03 F0 01 97 03 F0 F8 + .byte $99, $03, $F0, $00, $9B, $03, $F0, $F8, $9D, $03, $F0, $00, $9F, $03, $F0, $F8 ; CPU:$B84A PRG:384A 99 03 F0 00 9B 03 F0 F8 9D 03 F0 00 9F 03 F0 F8 + .byte $73, $03, $F0, $00, $AB, $03, $F0, $F7, $97, $43, $F0, $FF, $7F, $43, $F0, $F8 ; CPU:$B85A PRG:385A 73 03 F0 00 AB 03 F0 F7 97 43 F0 FF 7F 43 F0 F8 + .byte $9B, $43, $F0, $00, $99, $43, $F0, $F8, $9F, $43, $F0, $00, $9D, $43, $F0, $F8 ; CPU:$B86A PRG:386A 9B 43 F0 00 99 43 F0 F8 9F 43 F0 00 9D 43 F0 F8 + .byte $AB, $43, $F0, $00, $73, $43, $F0, $FC, $B7, $03, $F0, $FC, $B9, $03, $F0, $FC ; CPU:$B87A PRG:387A AB 43 F0 00 73 43 F0 FC B7 03 F0 FC B9 03 F0 FC + .byte $BB, $03, $F0, $FC, $B7, $43, $F0, $FC, $B9, $43, $F0, $FC, $BB, $43, $F0, $FC ; CPU:$B88A PRG:388A BB 03 F0 FC B7 43 F0 FC B9 43 F0 FC BB 43 F0 FC + .byte $BD, $03, $F0, $FC, $BF, $03, $F0, $FC, $BD, $03, $F0, $FC, $BF, $43, $F0, $F8 ; CPU:$B89A PRG:389A BD 03 F0 FC BF 03 F0 FC BD 03 F0 FC BF 43 F0 F8 + .byte $C5, $03, $F0, $00, $C7, $03, $EA, $F8, $C1, $03, $EA, $00, $C3, $03, $F0, $F8 ; CPU:$B8AA PRG:38AA C5 03 F0 00 C7 03 EA F8 C1 03 EA 00 C3 03 F0 F8 + .byte $D5, $03, $F0, $00, $D7, $03, $F0, $F8, $D9, $03, $F0, $00, $DB, $03, $00, $00 ; CPU:$B8BA PRG:38BA D5 03 F0 00 D7 03 F0 F8 D9 03 F0 00 DB 03 00 00 + .byte $6C, $03, $00, $F8, $6A, $03, $10, $F8, $6E, $03, $10, $00, $70, $03, $10, $F8 ; CPU:$B8CA PRG:38CA 6C 03 00 F8 6A 03 10 F8 6E 03 10 00 70 03 10 F8 + .byte $3A, $03, $10, $00, $3C, $03, $10, $F0, $42, $03, $10, $F8, $44, $03, $10, $00 ; CPU:$B8DA PRG:38DA 3A 03 10 00 3C 03 10 F0 42 03 10 F8 44 03 10 00 + .byte $46, $03, $10, $08, $48, $03, $04, $02, $22, $03, $04, $12, $26, $03, $14, $FA ; CPU:$B8EA PRG:38EA 46 03 10 08 48 03 04 02 22 03 04 12 26 03 14 FA + .byte $28, $03, $14, $02, $2A, $03, $14, $0A, $2C, $03, $14, $12, $2E, $03, $14, $1A ; CPU:$B8FA PRG:38FA 28 03 14 02 2A 03 14 0A 2C 03 14 12 2E 03 14 1A + .byte $30, $03, $04, $0A, $00, $03, $04, $1A, $04, $03, $14, $FA, $0A, $03, $14, $02 ; CPU:$B90A PRG:390A 30 03 04 0A 00 03 04 1A 04 03 14 FA 0A 03 14 02 + .byte $0C, $03, $14, $0A, $06, $03, $14, $12, $08, $03, $14, $1A, $0E, $03, $04, $0A ; CPU:$B91A PRG:391A 0C 03 14 0A 06 03 14 12 08 03 14 1A 0E 03 04 0A + .byte $10, $03, $04, $1A, $14, $03, $14, $FA, $1A, $03, $14, $02, $1C, $03, $14, $0A ; CPU:$B92A PRG:392A 10 03 04 1A 14 03 14 FA 1A 03 14 02 1C 03 14 0A + .byte $16, $03, $14, $12, $18, $03, $14, $1A, $1E, $03, $14, $22, $20, $03, $04, $FA ; CPU:$B93A PRG:393A 16 03 14 12 18 03 14 1A 1E 03 14 22 20 03 04 FA + .byte $04, $43, $04, $0A, $00, $43, $14, $FA, $0E, $43, $14, $02, $08, $43, $14, $0A ; CPU:$B94A PRG:394A 04 43 04 0A 00 43 14 FA 0E 43 14 02 08 43 14 0A + .byte $06, $43, $14, $12, $0C, $43, $14, $1A, $0A, $43, $04, $FA, $14, $43, $04, $0A ; CPU:$B95A PRG:395A 06 43 14 12 0C 43 14 1A 0A 43 04 FA 14 43 04 0A + .byte $10, $43, $14, $FA, $1E, $43, $14, $02, $18, $43, $14, $0A, $16, $43, $14, $12 ; CPU:$B96A PRG:396A 10 43 14 FA 1E 43 14 02 18 43 14 0A 16 43 14 12 + .byte $1C, $43, $14, $1A, $1A, $43, $14, $F2, $20, $43, $F0, $F8, $66, $03, $F0, $00 ; CPU:$B97A PRG:397A 1C 43 14 1A 1A 43 14 F2 20 43 F0 F8 66 03 F0 00 + .byte $68, $03, $00, $F8, $36, $03, $00, $00, $38, $03, $00, $F8, $3E, $03, $00, $00 ; CPU:$B98A PRG:398A 68 03 00 F8 36 03 00 00 38 03 00 F8 3E 03 00 00 + .byte $40, $03, $04, $0A, $24, $03, $04, $12, $02, $03, $04, $12, $12, $03, $04, $02 ; CPU:$B99A PRG:399A 40 03 04 0A 24 03 04 12 02 03 04 12 12 03 04 02 + .byte $02, $43, $04, $02, $12, $43, $F0, $F8, $72, $03, $F0, $00, $74, $03, $00, $F8 ; CPU:$B9AA PRG:39AA 02 43 04 02 12 43 F0 F8 72 03 F0 00 74 03 00 F8 + .byte $50, $03, $00, $00, $52, $03, $00, $F8, $54, $03, $00, $00, $56, $03, $04, $0A ; CPU:$B9BA PRG:39BA 50 03 00 00 52 03 00 F8 54 03 00 00 56 03 04 0A + .byte $4E, $03, $04, $12, $4A, $03, $04, $12, $4C, $03, $04, $02, $4A, $43, $04, $02 ; CPU:$B9CA PRG:39CA 4E 03 04 12 4A 03 04 12 4C 03 04 02 4A 43 04 02 + .byte $4C, $43, $F0, $F8, $76, $03, $F0, $00, $78, $03, $00, $F8, $5E, $03, $00, $00 ; CPU:$B9DA PRG:39DA 4C 43 F0 F8 76 03 F0 00 78 03 00 F8 5E 03 00 00 + .byte $60, $03, $00, $F8, $62, $03, $00, $00, $64, $03, $04, $0A, $5C, $03, $04, $12 ; CPU:$B9EA PRG:39EA 60 03 00 F8 62 03 00 00 64 03 04 0A 5C 03 04 12 + .byte $58, $03, $04, $12, $5A, $03, $04, $02, $58, $43, $04, $02, $5A, $43, $00, $00 ; CPU:$B9FA PRG:39FA 58 03 04 12 5A 03 04 02 58 43 04 02 5A 43 00 00 + .byte $6C, $01, $F0, $00, $6A, $01, $00, $00, $70, $01, $F0, $00, $6E, $01, $E0, $00 ; CPU:$BA0A PRG:3A0A 6C 01 F0 00 6A 01 00 00 70 01 F0 00 6E 01 E0 00 + .byte $72, $01, $00, $00, $70, $01, $F0, $00, $6E, $01, $E0, $FE, $74, $01, $7A, $BA ; CPU:$BA1A PRG:3A1A 72 01 00 00 70 01 F0 00 6E 01 E0 FE 74 01 7A BA + .byte $7F, $BA, $84, $BA, $89, $BA, $8E, $BA, $97, $BA, $A0, $BA, $C1, $BA, $7A, $BA ; CPU:$BA2A PRG:3A2A 7F BA 84 BA 89 BA 8E BA 97 BA A0 BA C1 BA 7A BA + .byte $EA, $BA, $FB, $BA, $04, $BB, $11, $BB, $22, $BB, $37, $BB, $48, $BB, $59, $BB ; CPU:$BA3A PRG:3A3A EA BA FB BA 04 BB 11 BB 22 BB 37 BB 48 BB 59 BB + .byte $76, $BB, $93, $BB, $93, $BB, $37, $BC, $3C, $BC, $45, $BC, $52, $BC, $5F, $BC ; CPU:$BA4A PRG:3A4A 76 BB 93 BB 93 BB 37 BC 3C BC 45 BC 52 BC 5F BC + .byte $68, $BC, $71, $BC, $7A, $BC, $83, $BC, $8C, $BC, $9D, $BC, $AA, $BC, $B7, $BC ; CPU:$BA5A PRG:3A5A 68 BC 71 BC 7A BC 83 BC 8C BC 9D BC AA BC B7 BC + .byte $C4, $BC, $D1, $BC, $E2, $BC, $F3, $BC, $04, $BD, $19, $BD, $2E, $BD, $43, $BD ; CPU:$BA6A PRG:3A6A C4 BC D1 BC E2 BC F3 BC 04 BD 19 BD 2E BD 43 BD + .byte $01, $00, $FB, $CE, $02, $01, $00, $FC, $CC, $02, $01, $00, $FE, $CA, $02, $01 ; CPU:$BA7A PRG:3A7A 01 00 FB CE 02 01 00 FC CC 02 01 00 FE CA 02 01 + .byte $00, $00, $95, $02, $02, $01, $02, $FA, $02, $01, $00, $FA, $42, $02, $04, $07 ; CPU:$BA8A PRG:3A8A 00 00 95 02 02 01 02 FA 02 01 00 FA 42 02 04 07 + .byte $C4, $02, $04, $FF, $C2, $02, $08, $F0, $FF, $EA, $02, $F0, $0F, $EA, $42, $F0 ; CPU:$BA9A PRG:3A9A C4 02 04 FF C2 02 08 F0 FF EA 02 F0 0F EA 42 F0 + .byte $07, $EC, $02, $00, $FF, $EE, $02, $00, $0F, $EE, $42, $00, $07, $FC, $82, $10 ; CPU:$BAAA PRG:3AAA 07 EC 02 00 FF EE 02 00 0F EE 42 00 07 FC 82 10 + .byte $FB, $F0, $02, $10, $0F, $F2, $02, $0A, $00, $00, $E2, $02, $00, $18, $E2, $42 ; CPU:$BABA PRG:3ABA FB F0 02 10 0F F2 02 0A 00 00 E2 02 00 18 E2 42 + .byte $00, $08, $FC, $82, $00, $10, $FC, $82, $F0, $00, $DE, $02, $F0, $18, $DE, $42 ; CPU:$BACA PRG:3ACA 00 08 FC 82 00 10 FC 82 F0 00 DE 02 F0 18 DE 42 + .byte $F0, $08, $E0, $02, $F0, $10, $E0, $42, $10, $FA, $E6, $02, $10, $18, $E8, $02 ; CPU:$BADA PRG:3ADA F0 08 E0 02 F0 10 E0 42 10 FA E6 02 10 18 E8 02 + .byte $04, $00, $00, $D0, $02, $00, $08, $D2, $02, $00, $10, $D2, $02, $00, $18, $D6 ; CPU:$BAEA PRG:3AEA 04 00 00 D0 02 00 08 D2 02 00 10 D2 02 00 18 D6 + .byte $02, $02, $00, $FB, $81, $01, $10, $00, $8D, $21, $03, $00, $FB, $83, $01, $10 ; CPU:$BAFA PRG:3AFA 02 02 00 FB 81 01 10 00 8D 21 03 00 FB 83 01 10 + .byte $FF, $8D, $21, $10, $03, $8D, $21, $04, $00, $F9, $83, $01, $09, $F9, $81, $81 ; CPU:$BB0A PRG:3B0A FF 8D 21 10 03 8D 21 04 00 F9 83 01 09 F9 81 81 + .byte $10, $FE, $8D, $21, $10, $02, $8D, $21, $05, $00, $F8, $83, $01, $08, $F8, $83 ; CPU:$BB1A PRG:3B1A 10 FE 8D 21 10 02 8D 21 05 00 F8 83 01 08 F8 83 + .byte $81, $10, $FC, $8D, $21, $10, $01, $8D, $21, $10, $06, $8D, $21, $04, $00, $F4 ; CPU:$BB2A PRG:3B2A 81 10 FC 8D 21 10 01 8D 21 10 06 8D 21 04 00 F4 + .byte $85, $01, $10, $FC, $8D, $21, $10, $02, $8D, $21, $10, $07, $8D, $21, $04, $00 ; CPU:$BB3A PRG:3B3A 85 01 10 FC 8D 21 10 02 8D 21 10 07 8D 21 04 00 + .byte $EF, $87, $01, $10, $FA, $8D, $21, $10, $02, $8D, $21, $10, $0A, $8D, $21, $07 ; CPU:$BB4A PRG:3B4A EF 87 01 10 FA 8D 21 10 02 8D 21 10 0A 8D 21 07 + .byte $F4, $E9, $89, $01, $00, $E9, $8B, $01, $00, $E4, $8F, $01, $F0, $E9, $01, $01 ; CPU:$BB5A PRG:3B5A F4 E9 89 01 00 E9 8B 01 00 E4 8F 01 F0 E9 01 01 + .byte $10, $F7, $F4, $21, $10, $0D, $F4, $21, $10, $02, $F4, $21, $07, $F0, $E9, $89 ; CPU:$BB6A PRG:3B6A 10 F7 F4 21 10 0D F4 21 10 02 F4 21 07 F0 E9 89 + .byte $01, $00, $E9, $8B, $01, $00, $E1, $8F, $01, $EC, $E9, $01, $01, $10, $F9, $F4 ; CPU:$BB7A PRG:3B7A 01 00 E9 8B 01 00 E1 8F 01 EC E9 01 01 10 F9 F4 + .byte $21, $10, $07, $F4, $21, $10, $15, $F4, $21, $07, $F0, $E5, $89, $01, $00, $E5 ; CPU:$BB8A PRG:3B8A 21 10 07 F4 21 10 15 F4 21 07 F0 E5 89 01 00 E5 + .byte $8B, $01, $00, $DD, $8F, $01, $F0, $E5, $91, $41, $10, $F7, $F4, $21, $10, $17 ; CPU:$BB9A PRG:3B9A 8B 01 00 DD 8F 01 F0 E5 91 41 10 F7 F4 21 10 17 + .byte $F4, $21, $10, $07, $F4, $21, $01, $00, $F9, $C9, $02, $01, $00, $F9, $CB, $02 ; CPU:$BBAA PRG:3BAA F4 21 10 07 F4 21 01 00 F9 C9 02 01 00 F9 CB 02 + .byte $01, $00, $FA, $CD, $02, $01, $00, $FA, $CF, $02, $01, $0A, $FB, $D1, $02, $01 ; CPU:$BBBA PRG:3BBA 01 00 FA CD 02 01 00 FA CF 02 01 0A FB D1 02 01 + .byte $0A, $FB, $D3, $02, $01, $0A, $FB, $D5, $02, $01, $0A, $FB, $D7, $02, $01, $0A ; CPU:$BBCA PRG:3BCA 0A FB D3 02 01 0A FB D5 02 01 0A FB D7 02 01 0A + .byte $FB, $D9, $02, $01, $0A, $FB, $DB, $02, $01, $08, $FC, $DD, $02, $01, $08, $FC ; CPU:$BBDA PRG:3BDA FB D9 02 01 0A FB DB 02 01 08 FC DD 02 01 08 FC + .byte $DF, $02, $01, $08, $FC, $E1, $02, $01, $08, $FC, $E3, $02, $01, $08, $FC, $E5 ; CPU:$BBEA PRG:3BEA DF 02 01 08 FC E1 02 01 08 FC E3 02 01 08 FC E5 + .byte $02, $01, $08, $FC, $E7, $02, $01, $08, $FC, $E9, $02, $01, $08, $FC, $EB, $02 ; CPU:$BBFA PRG:3BFA 02 01 08 FC E7 02 01 08 FC E9 02 01 08 FC EB 02 + .byte $01, $08, $FC, $ED, $02, $01, $08, $FC, $EF, $02, $01, $F0, $FF, $C0, $01, $01 ; CPU:$BC0A PRG:3C0A 01 08 FC ED 02 01 08 FC EF 02 01 F0 FF C0 01 01 + .byte $F0, $FF, $C2, $01, $01, $F0, $FF, $C4, $01, $01, $F0, $FF, $C6, $01, $01, $F0 ; CPU:$BC1A PRG:3C1A F0 FF C2 01 01 F0 FF C4 01 01 F0 FF C6 01 01 F0 + .byte $FE, $C8, $01, $01, $F0, $FE, $CA, $01, $01, $F0, $FE, $CC, $01, $01, $F1, $F9 ; CPU:$BC2A PRG:3C2A FE C8 01 01 F0 FE CA 01 01 F0 FE CC 01 01 F1 F9 + .byte $EE, $01, $02, $F1, $F8, $EE, $01, $F1, $00, $EE, $41, $03, $F1, $F7, $EE, $01 ; CPU:$BC3A PRG:3C3A EE 01 02 F1 F8 EE 01 F1 00 EE 41 03 F1 F7 EE 01 + .byte $F1, $F9, $EE, $01, $F1, $FB, $EE, $01, $03, $F1, $F6, $EE, $01, $F1, $FB, $F0 ; CPU:$BC4A PRG:3C4A F1 F9 EE 01 F1 FB EE 01 03 F1 F6 EE 01 F1 FB F0 + .byte $01, $F1, $02, $EE, $41, $02, $F1, $F8, $F0, $01, $F1, $00, $F0, $41, $02, $F2 ; CPU:$BC5A PRG:3C5A 01 F1 02 EE 41 02 F1 F8 F0 01 F1 00 F0 41 02 F2 + .byte $FB, $F2, $01, $F2, $FD, $F2, $01, $02, $F2, $FA, $F2, $01, $F2, $FE, $F2, $01 ; CPU:$BC6A PRG:3C6A FB F2 01 F2 FD F2 01 02 F2 FA F2 01 F2 FE F2 01 + .byte $02, $F2, $F9, $F2, $01, $F2, $FF, $F2, $01, $02, $F2, $F8, $F2, $01, $F2, $00 ; CPU:$BC7A PRG:3C7A 02 F2 F9 F2 01 F2 FF F2 01 02 F2 F8 F2 01 F2 00 + .byte $F2, $01, $04, $F2, $F8, $F2, $01, $F2, $00, $F2, $01, $F2, $F7, $EE, $41, $F2 ; CPU:$BC8A PRG:3C8A F2 01 04 F2 F8 F2 01 F2 00 F2 01 F2 F7 EE 41 F2 + .byte $07, $EE, $41, $03, $F2, $F7, $F2, $01, $F2, $FC, $F2, $01, $F2, $01, $F2, $01 ; CPU:$BC9A PRG:3C9A 07 EE 41 03 F2 F7 F2 01 F2 FC F2 01 F2 01 F2 01 + .byte $03, $F3, $F6, $F4, $01, $F3, $FC, $F4, $01, $F3, $02, $F4, $01, $03, $F3, $F5 ; CPU:$BCAA PRG:3CAA 03 F3 F6 F4 01 F3 FC F4 01 F3 02 F4 01 03 F3 F5 + .byte $F4, $01, $F3, $FC, $F4, $01, $F3, $03, $F4, $01, $03, $F3, $F4, $9F, $01, $F3 ; CPU:$BCBA PRG:3CBA F4 01 F3 FC F4 01 F3 03 F4 01 03 F3 F4 9F 01 F3 + .byte $FC, $F4, $01, $F3, $04, $9F, $41, $04, $F3, $F3, $9F, $01, $F3, $F8, $F4, $01 ; CPU:$BCCA PRG:3CCA FC F4 01 F3 04 9F 41 04 F3 F3 9F 01 F3 F8 F4 01 + .byte $F3, $00, $F4, $01, $F3, $05, $9F, $41, $04, $F3, $F2, $F4, $01, $F3, $F8, $F4 ; CPU:$BCDA PRG:3CDA F3 00 F4 01 F3 05 9F 41 04 F3 F2 F4 01 F3 F8 F4 + .byte $01, $F3, $00, $F4, $01, $F3, $06, $F4, $01, $04, $F4, $F0, $A1, $01, $F4, $F8 ; CPU:$BCEA PRG:3CEA 01 F3 00 F4 01 F3 06 F4 01 04 F4 F0 A1 01 F4 F8 + .byte $F6, $01, $F4, $00, $F6, $01, $F4, $08, $A1, $41, $05, $F4, $EF, $A1, $01, $F4 ; CPU:$BCFA PRG:3CFA F6 01 F4 00 F6 01 F4 08 A1 41 05 F4 EF A1 01 F4 + .byte $F4, $F6, $01, $F4, $FC, $F6, $01, $F4, $04, $F6, $01, $F4, $09, $A1, $41, $05 ; CPU:$BD0A PRG:3D0A F4 F6 01 F4 FC F6 01 F4 04 F6 01 F4 09 A1 41 05 + .byte $F5, $ED, $A3, $01, $F5, $F4, $F8, $01, $F5, $FC, $F8, $01, $F5, $04, $F8, $01 ; CPU:$BD1A PRG:3D1A F5 ED A3 01 F5 F4 F8 01 F5 FC F8 01 F5 04 F8 01 + .byte $F5, $0B, $A3, $41, $05, $F6, $EC, $C5, $01, $F6, $F4, $FA, $01, $F6, $FC, $FA ; CPU:$BD2A PRG:3D2A F5 0B A3 41 05 F6 EC C5 01 F6 F4 FA 01 F6 FC FA + .byte $01, $F6, $04, $FA, $01, $F6, $0C, $C5, $41, $06, $F7, $E9, $C7, $01, $F7, $F0 ; CPU:$BD3A PRG:3D3A 01 F6 04 FA 01 F6 0C C5 41 06 F7 E9 C7 01 F7 F0 + .byte $9B, $01, $F7, $F8, $9B, $01, $F7, $00, $9B, $01, $F7, $08, $9B, $01, $F7, $0F ; CPU:$BD4A PRG:3D4A 9B 01 F7 F8 9B 01 F7 00 9B 01 F7 08 9B 01 F7 0F + .byte $C7, $41, $03, $00, $F4, $F4, $02, $00, $FC, $F4, $02, $00, $04, $F4, $02, $03 ; CPU:$BD5A PRG:3D5A C7 41 03 00 F4 F4 02 00 FC F4 02 00 04 F4 02 03 + .byte $00, $F4, $30, $02, $00, $FC, $F4, $02, $00, $04, $30, $42, $03, $00, $F4, $F4 ; CPU:$BD6A PRG:3D6A 00 F4 30 02 00 FC F4 02 00 04 30 42 03 00 F4 F4 + .byte $01, $00, $FC, $F4, $01, $00, $04, $F4, $01, $06, $1A, $0A, $0A, $06, $1A, $0A ; CPU:$BD7A PRG:3D7A 01 00 FC F4 01 00 04 F4 01 06 1A 0A 0A 06 1A 0A + .byte $0A, $06, $0F, $30, $12, $06, $0F, $30, $00, $06, $0F, $26, $30, $06, $0F, $16 ; CPU:$BD8A PRG:3D8A 0A 06 0F 30 12 06 0F 30 00 06 0F 26 30 06 0F 16 + .byte $36, $06, $12, $26, $30, $06, $0F, $27, $21, $1A, $06, $00, $0F, $1A, $0A, $0A ; CPU:$BD9A PRG:3D9A 36 06 12 26 30 06 0F 27 21 1A 06 00 0F 1A 0A 0A + .byte $1A, $1A, $06, $30, $12, $1A, $0F, $30, $00, $1A, $0F, $26, $30, $1A, $16, $0F ; CPU:$BDAA PRG:3DAA 1A 1A 06 30 12 1A 0F 30 00 1A 0F 26 30 1A 16 0F + .byte $30, $1A, $12, $00, $00, $1A, $26, $28, $30, $0F, $16, $02, $30, $0F, $18, $28 ; CPU:$BDBA PRG:3DBA 30 1A 12 00 00 1A 26 28 30 0F 16 02 30 0F 18 28 + .byte $38, $0F, $00, $10, $30, $0F, $07, $17, $27, $0F, $00, $00, $00, $0F, $00, $00 ; CPU:$BDCA PRG:3DCA 38 0F 00 10 30 0F 07 17 27 0F 00 00 00 0F 00 00 + .byte $00, $0F, $00, $00, $00, $0F, $00, $00, $00, $11, $37, $2A, $21, $11, $16, $19 ; CPU:$BDDA PRG:3DDA 00 0F 00 00 00 0F 00 00 00 11 37 2A 21 11 16 19 + .byte $30, $11, $0F, $00, $30, $11, $19, $00, $30, $11, $16, $02, $30, $11, $07, $16 ; CPU:$BDEA PRG:3DEA 30 11 0F 00 30 11 19 00 30 11 16 02 30 11 07 16 + .byte $27, $11, $16, $00, $01, $11, $00, $19, $30, $0F, $16, $30, $0F, $0F, $21, $28 ; CPU:$BDFA PRG:3DFA 27 11 16 00 01 11 00 19 30 0F 16 30 0F 0F 21 28 + .byte $1A, $0F, $25, $30, $0F, $0F, $17, $30, $0F, $0F, $00, $00, $25, $0F, $00, $00 ; CPU:$BE0A PRG:3E0A 1A 0F 25 30 0F 0F 17 30 0F 0F 00 00 25 0F 00 00 + .byte $25, $0F, $00, $00, $25, $0F, $00, $00, $25, $06, $00, $30, $0F, $06, $0F, $00 ; CPU:$BE1A PRG:3E1A 25 0F 00 00 25 0F 00 00 25 06 00 30 0F 06 0F 00 + .byte $12, $06, $16, $30, $12, $06, $1A, $30, $0F, $06, $0F, $26, $30, $06, $0F, $36 ; CPU:$BE2A PRG:3E2A 12 06 16 30 12 06 1A 30 0F 06 0F 26 30 06 0F 36 + .byte $16, $06, $0F, $17, $21, $06, $00, $00, $00, $0A, $16, $02, $30, $0A, $18, $28 ; CPU:$BE3A PRG:3E3A 16 06 0F 17 21 06 00 00 00 0A 16 02 30 0A 18 28 + .byte $38, $0A, $00, $10, $30, $0A, $07, $17, $27, $0A, $00, $00, $00, $0A, $00, $00 ; CPU:$BE4A PRG:3E4A 38 0A 00 10 30 0A 07 17 27 0A 00 00 00 0A 00 00 + .byte $00, $0A, $00, $00, $00, $0A, $0F, $26, $30 ; CPU:$BE5A PRG:3E5A 00 0A 00 00 00 0A 0F 26 30 +; ----------------------------------------------------------------------------- +; Routine: AudioChannelLoop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AudioChannelLoop: + jsr SoundChanInit ; CPU:$BE63 PRG:3E63 20 DD BE +; ----------------------------------------------------------------------------- +; Routine: AudioChannelLoop_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AudioChannelLoop_OnNonzero: + lda Zp08 ; CPU:$BE66 PRG:3E66 A5 08 + jsr SoundChannelStep ; CPU:$BE68 PRG:3E68 20 75 BE + inc Zp08 ; CPU:$BE6B PRG:3E6B E6 08 + dec Zp0A ; CPU:$BE6D PRG:3E6D C6 0A + bne AudioChannelLoop_OnNonzero ; CPU:$BE6F PRG:3E6F D0 F5 + jsr Sub_BEE4 ; CPU:$BE71 PRG:3E71 20 E4 BE + rts ; CPU:$BE74 PRG:3E74 60 +; ----------------------------------------------------------------------------- +; Routine: SoundChannelStep +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChannelStep: + asl a ; CPU:$BE75 PRG:3E75 0A + tay ; CPU:$BE76 PRG:3E76 A8 + ldx $C438,y ; CPU:$BE77 PRG:3E77 BE 38 C4 + lda Zp92,x ; CPU:$BE7A PRG:3E7A B5 92 + and #$40 ; CPU:$BE7C PRG:3E7C 29 40 + ora #$80 ; CPU:$BE7E PRG:3E7E 09 80 + sta Zp92,x ; CPU:$BE80 PRG:3E80 95 92 + lda $C498,y ; CPU:$BE82 PRG:3E82 B9 98 C4 + sta ZpCA,x ; CPU:$BE85 PRG:3E85 95 CA + sta ZpDA,x ; CPU:$BE87 PRG:3E87 95 DA + lda $C499,y ; CPU:$BE89 PRG:3E89 B9 99 C4 + sta ZpD2,x ; CPU:$BE8C PRG:3E8C 95 D2 + sta ZpE2,x ; CPU:$BE8E PRG:3E8E 95 E2 + txa ; CPU:$BE90 PRG:3E90 8A + asl a ; CPU:$BE91 PRG:3E91 0A + asl a ; CPU:$BE92 PRG:3E92 0A + tay ; CPU:$BE93 PRG:3E93 A8 + lda #$00 ; CPU:$BE94 PRG:3E94 A9 00 + sta Zp9A,x ; CPU:$BE96 PRG:3E96 95 9A + sta ZpA2,x ; CPU:$BE98 PRG:3E98 95 A2 + sta ZpB2,x ; CPU:$BE9A PRG:3E9A 95 B2 + sta ZpAA,x ; CPU:$BE9C PRG:3E9C 95 AA + sta $0122,x ; CPU:$BE9E PRG:3E9E 9D 22 01 + sta $0152,y ; CPU:$BEA1 PRG:3EA1 99 52 01 + sta $0153,y ; CPU:$BEA4 PRG:3EA4 99 53 01 + sta $0154,y ; CPU:$BEA7 PRG:3EA7 99 54 01 + sta $0155,y ; CPU:$BEAA PRG:3EAA 99 55 01 + cpx #$04 ; CPU:$BEAD PRG:3EAD E0 04 + bcc SoundChannelStep_Loop ; CPU:$BEAF PRG:3EAF 90 0A + txa ; CPU:$BEB1 PRG:3EB1 8A + sbc #$04 ; CPU:$BEB2 PRG:3EB2 E9 04 + tax ; CPU:$BEB4 PRG:3EB4 AA + lda Zp92,x ; CPU:$BEB5 PRG:3EB5 B5 92 + ora #$40 ; CPU:$BEB7 PRG:3EB7 09 40 + sta Zp92,x ; CPU:$BEB9 PRG:3EB9 95 92 +; ----------------------------------------------------------------------------- +; Routine: SoundChannelStep_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChannelStep_Loop: + jsr Sub_C3C2 ; CPU:$BEBB PRG:3EBB 20 C2 C3 + rts ; CPU:$BEBE PRG:3EBE 60 +; ----------------------------------------------------------------------------- +; Routine: ClearObjectSlot +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearObjectSlot: + sta Zp08 ; CPU:$BEBF PRG:3EBF 85 08 + stx Zp09 ; CPU:$BEC1 PRG:3EC1 86 09 + sty Zp0A ; CPU:$BEC3 PRG:3EC3 84 0A + lda #$00 ; CPU:$BEC5 PRG:3EC5 A9 00 + ldx #$07 ; CPU:$BEC7 PRG:3EC7 A2 07 +; ----------------------------------------------------------------------------- +; Routine: ClearObjectSlot_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearObjectSlot_OnNonnegative: + sta Zp92,x ; CPU:$BEC9 PRG:3EC9 95 92 + dex ; CPU:$BECB PRG:3ECB CA + bpl ClearObjectSlot_OnNonnegative ; CPU:$BECC PRG:3ECC 10 FB + ldx #$03 ; CPU:$BECE PRG:3ECE A2 03 +; ----------------------------------------------------------------------------- +; Routine: ClearObjectSlot_OnNonnegative2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearObjectSlot_OnNonnegative2: + jsr Sub_C3D4 ; CPU:$BED0 PRG:3ED0 20 D4 C3 + dex ; CPU:$BED3 PRG:3ED3 CA + bpl ClearObjectSlot_OnNonnegative2 ; CPU:$BED4 PRG:3ED4 10 FA + ldy Zp0A ; CPU:$BED6 PRG:3ED6 A4 0A + ldx Zp09 ; CPU:$BED8 PRG:3ED8 A6 09 + lda Zp08 ; CPU:$BEDA PRG:3EDA A5 08 + rts ; CPU:$BEDC PRG:3EDC 60 +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit: + sta Zp08 ; CPU:$BEDD PRG:3EDD 85 08 + stx Zp09 ; CPU:$BEDF PRG:3EDF 86 09 + sty Zp0A ; CPU:$BEE1 PRG:3EE1 84 0A + rts ; CPU:$BEE3 PRG:3EE3 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_BEE4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_BEE4: + lda Zp08 ; CPU:$BEE4 PRG:3EE4 A5 08 + ldx Zp09 ; CPU:$BEE6 PRG:3EE6 A6 09 + ldy Zp0A ; CPU:$BEE8 PRG:3EE8 A4 0A + rts ; CPU:$BEEA PRG:3EEA 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_BEEB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_BEEB: + lda #$C0 ; CPU:$BEEB PRG:3EEB A9 C0 + sta APUFRAMECOUNTER ; CPU:$BEED PRG:3EED 8D 17 40 + ldx #$07 ; CPU:$BEF0 PRG:3EF0 A2 07 +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_OnNonnegative: + lda Zp92,x ; CPU:$BEF2 PRG:3EF2 B5 92 + asl a ; CPU:$BEF4 PRG:3EF4 0A + bcc SoundChanInit_Loop ; CPU:$BEF5 PRG:3EF5 90 09 + stx Zp07 ; CPU:$BEF7 PRG:3EF7 86 07 + txa ; CPU:$BEF9 PRG:3EF9 8A + pha ; CPU:$BEFA PRG:3EFA 48 + jsr Sub_BF04 ; CPU:$BEFB PRG:3EFB 20 04 BF + pla ; CPU:$BEFE PRG:3EFE 68 + tax ; CPU:$BEFF PRG:3EFF AA +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_Loop: + dex ; CPU:$BF00 PRG:3F00 CA + bpl SoundChanInit_OnNonnegative; CPU:$BF01 PRG:3F01 10 EF + rts ; CPU:$BF03 PRG:3F03 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_BF04 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_BF04: + lda Zp92,x ; CPU:$BF04 PRG:3F04 B5 92 + and #$04 ; CPU:$BF06 PRG:3F06 29 04 + beq SoundChanInit_Loop3 ; CPU:$BF08 PRG:3F08 F0 1B + lda $010A,x ; CPU:$BF0A PRG:3F0A BD 0A 01 + and #$0F ; CPU:$BF0D PRG:3F0D 29 0F + bne SoundChanInit_Loop2 ; CPU:$BF0F PRG:3F0F D0 11 + jsr Sub_C33A ; CPU:$BF11 PRG:3F11 20 3A C3 + lda $0112,x ; CPU:$BF14 PRG:3F14 BD 12 01 + and #$0F ; CPU:$BF17 PRG:3F17 29 0F + ora $010A,x ; CPU:$BF19 PRG:3F19 1D 0A 01 + sta $010A,x ; CPU:$BF1C PRG:3F1C 9D 0A 01 + jmp SoundChanInit_Loop3 ; CPU:$BF1F PRG:3F1F 4C 25 BF +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_Loop2: + dec $010A,x ; CPU:$BF22 PRG:3F22 DE 0A 01 +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_Loop3: + lda Zp92,x ; CPU:$BF25 PRG:3F25 B5 92 + and #$02 ; CPU:$BF27 PRG:3F27 29 02 + beq SoundChanInit_Loop5 ; CPU:$BF29 PRG:3F29 F0 15 + lda $0172,x ; CPU:$BF2B PRG:3F2B BD 72 01 + bne SoundChanInit_Loop4 ; CPU:$BF2E PRG:3F2E D0 0D + jsr Sub_C2FF ; CPU:$BF30 PRG:3F30 20 FF C2 + lda ZpF2,x ; CPU:$BF33 PRG:3F33 B5 F2 + and #$07 ; CPU:$BF35 PRG:3F35 29 07 + sta $0172,x ; CPU:$BF37 PRG:3F37 9D 72 01 + jmp SoundChanInit_Loop5 ; CPU:$BF3A PRG:3F3A 4C 40 BF +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_Loop4: + dec $0172,x ; CPU:$BF3D PRG:3F3D DE 72 01 +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_Loop5: + lda Zp92,x ; CPU:$BF40 PRG:3F40 B5 92 + lsr a ; CPU:$BF42 PRG:3F42 4A + bcc SoundChanInit_Loop8 ; CPU:$BF43 PRG:3F43 90 2B + and #$10 ; CPU:$BF45 PRG:3F45 29 10 + bne SoundChanInit_Loop8 ; CPU:$BF47 PRG:3F47 D0 27 + lda $012A,x ; CPU:$BF49 PRG:3F49 BD 2A 01 + and #$0F ; CPU:$BF4C PRG:3F4C 29 0F + bne SoundChanInit_Loop7 ; CPU:$BF4E PRG:3F4E D0 1D + jsr Sub_C2D3 ; CPU:$BF50 PRG:3F50 20 D3 C2 + lda $012A,x ; CPU:$BF53 PRG:3F53 BD 2A 01 + adc #$10 ; CPU:$BF56 PRG:3F56 69 10 + cmp #$80 ; CPU:$BF58 PRG:3F58 C9 80 + bcs SoundChanInit_Loop6 ; CPU:$BF5A PRG:3F5A B0 03 + sta $012A,x ; CPU:$BF5C PRG:3F5C 9D 2A 01 +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_Loop6: + lda $0100,x ; CPU:$BF5F PRG:3F5F BD 00 01 + and #$0F ; CPU:$BF62 PRG:3F62 29 0F + ora $012A,x ; CPU:$BF64 PRG:3F64 1D 2A 01 + sta $012A,x ; CPU:$BF67 PRG:3F67 9D 2A 01 + jmp SoundChanInit_Loop8 ; CPU:$BF6A PRG:3F6A 4C 70 BF +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_Loop7: + dec $012A,x ; CPU:$BF6D PRG:3F6D DE 2A 01 +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_Loop8: + lda Zp9A,x ; CPU:$BF70 PRG:3F70 B5 9A + beq SoundChanInit_Loop9 ; CPU:$BF72 PRG:3F72 F0 03 + dec Zp9A,x ; CPU:$BF74 PRG:3F74 D6 9A + rts ; CPU:$BF76 PRG:3F76 60 +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_Loop9: + lda ZpA2,x ; CPU:$BF77 PRG:3F77 B5 A2 + and #$0F ; CPU:$BF79 PRG:3F79 29 0F + sta Zp9A,x ; CPU:$BF7B PRG:3F7B 95 9A + lda ZpB2,x ; CPU:$BF7D PRG:3F7D B5 B2 + beq SoundNote ; CPU:$BF7F PRG:3F7F F0 08 + dec ZpB2,x ; CPU:$BF81 PRG:3F81 D6 B2 + rts ; CPU:$BF83 PRG:3F83 60 +; ----------------------------------------------------------------------------- +; Routine: SoundChanInit_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundChanInit_OnZero: + lda #$01 ; CPU:$BF84 PRG:3F84 A9 01 + jsr ObjectCollision ; CPU:$BF86 PRG:3F86 20 C2 C2 +; ----------------------------------------------------------------------------- +; Routine: SoundNote +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote: + ldx Zp07 ; CPU:$BF89 PRG:3F89 A6 07 + lda ZpCA,x ; CPU:$BF8B PRG:3F8B B5 CA + sta Zp05 ; CPU:$BF8D PRG:3F8D 85 05 + lda ZpD2,x ; CPU:$BF8F PRG:3F8F B5 D2 + sta Zp06 ; CPU:$BF91 PRG:3F91 85 06 + ldy #$00 ; CPU:$BF93 PRG:3F93 A0 00 + lda (Zp05),y ; CPU:$BF95 PRG:3F95 B1 05 + cmp #$CF ; CPU:$BF97 PRG:3F97 C9 CF + beq SoundChanInit_OnZero ; CPU:$BF99 PRG:3F99 F0 E9 + cmp #$C0 ; CPU:$BF9B PRG:3F9B C9 C0 + bcs SoundNote_Loop ; CPU:$BF9D PRG:3F9D B0 03 + jmp Sub_C189 ; CPU:$BF9F PRG:3F9F 4C 89 C1 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop: + cmp #$F0 ; CPU:$BFA2 PRG:3FA2 C9 F0 + bcs SoundNote_Loop2 ; CPU:$BFA4 PRG:3FA4 B0 0F + and #$01 ; CPU:$BFA6 PRG:3FA6 29 01 + asl a ; CPU:$BFA8 PRG:3FA8 0A + tax ; CPU:$BFA9 PRG:3FA9 AA + lda $BFE5,x ; CPU:$BFAA PRG:3FAA BD E5 BF + pha ; CPU:$BFAD PRG:3FAD 48 + lda $BFE4,x ; CPU:$BFAE PRG:3FAE BD E4 BF + pha ; CPU:$BFB1 PRG:3FB1 48 + ldx Zp07 ; CPU:$BFB2 PRG:3FB2 A6 07 + rts ; CPU:$BFB4 PRG:3FB4 60 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop2: + and #$0F ; CPU:$BFB5 PRG:3FB5 29 0F + asl a ; CPU:$BFB7 PRG:3FB7 0A + tax ; CPU:$BFB8 PRG:3FB8 AA + lda $BFC5,x ; CPU:$BFB9 PRG:3FB9 BD C5 BF + pha ; CPU:$BFBC PRG:3FBC 48 + lda $BFC4,x ; CPU:$BFBD PRG:3FBD BD C4 BF + pha ; CPU:$BFC0 PRG:3FC0 48 + ldx Zp07 ; CPU:$BFC1 PRG:3FC1 A6 07 + rts ; CPU:$BFC3 PRG:3FC3 60 +; ---- data $BFC4-$BFE7 (36 bytes) ---- +; referenced by `lda $BFE5,x` at $BFAA (operand $BFE5 falls inside this region) +; referenced by `lda $BFE4,x` at $BFAE (operand $BFE4 falls inside this region) +; referenced by `lda $BFC5,x` at $BFB9 (operand $BFC5 falls inside this region) +; referenced by `lda $BFC4,x` at $BFBD (operand $BFC4 falls inside this region) + .byte $F7, $BF, $09, $C0, $14, $C0, $28, $C0, $36, $C0, $4E, $C0, $56, $C0, $7A, $C0 ; CPU:$BFC4 PRG:3FC4 F7 BF 09 C0 14 C0 28 C0 36 C0 4E C0 56 C0 7A C0 + .byte $82, $C0, $96, $C0, $AC, $C0, $C0, $C0, $D0, $C0, $F7, $C0, $28, $C1, $33, $C1 ; CPU:$BFD4 PRG:3FD4 82 C0 96 C0 AC C0 C0 C0 D0 C0 F7 C0 28 C1 33 C1 + .byte $E7, $BF, $EF, $BF ; CPU:$BFE4 PRG:3FE4 E7 BF EF BF +; ----------------------------------------------------------------------------- +; Routine: Sub_BFE8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_BFE8: + lda Zp92,x ; CPU:$BFE8 PRG:3FE8 B5 92 + ora #$10 ; CPU:$BFEA PRG:3FEA 09 10 + sta Zp92,x ; CPU:$BFEC PRG:3FEC 95 92 + bne SoundNote_OnNonzero ; CPU:$BFEE PRG:3FEE D0 3F +; ----------------------------------------------------------------------------- +; Routine: Sub_BFF0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_BFF0: + lda Zp92,x ; CPU:$BFF0 PRG:3FF0 B5 92 + and #$EF ; CPU:$BFF2 PRG:3FF2 29 EF + sta Zp92,x ; CPU:$BFF4 PRG:3FF4 95 92 + bne SoundNote_OnNonzero ; CPU:$BFF6 PRG:3FF6 D0 37 +; ----------------------------------------------------------------------------- +; Routine: Sub_BFF8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_BFF8: + iny ; CPU:$BFF8 PRG:3FF8 C8 + lda (Zp05),y ; CPU:$BFF9 PRG:3FF9 B1 05 + beq SoundNote_Loop3 ; CPU:$BFFB PRG:3FFB F0 03 + sta $0122,x ; CPU:$BFFD PRG:3FFD 9D 22 01 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop3: + lda $0122,x ; CPU:$C000 PRG:4000 BD 22 01 + ora #$80 ; CPU:$C003 PRG:4003 09 80 + sta $0122,x ; CPU:$C005 PRG:4005 9D 22 01 + bne SoundNote_Loop4 ; CPU:$C008 PRG:4008 D0 3D +; ----------------------------------------------------------------------------- +; Routine: Sub_C00A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C00A: + lda $0122,x ; CPU:$C00A PRG:400A BD 22 01 + and #$7F ; CPU:$C00D PRG:400D 29 7F + sta $0122,x ; CPU:$C00F PRG:400F 9D 22 01 + jmp SoundNote_OnNonzero ; CPU:$C012 PRG:4012 4C 2F C0 +; ----------------------------------------------------------------------------- +; Routine: Sub_C015 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C015: + lda Zp92,x ; CPU:$C015 PRG:4015 B5 92 + ora #$01 ; CPU:$C017 PRG:4017 09 01 + sta Zp92,x ; CPU:$C019 PRG:4019 95 92 + iny ; CPU:$C01B PRG:401B C8 + lda (Zp05),y ; CPU:$C01C PRG:401C B1 05 + sta $0100,x ; CPU:$C01E PRG:401E 9D 00 01 + and #$0F ; CPU:$C021 PRG:4021 29 0F + sta $012A,x ; CPU:$C023 PRG:4023 9D 2A 01 + jmp SoundNote_Loop4 ; CPU:$C026 PRG:4026 4C 47 C0 +; ----------------------------------------------------------------------------- +; Routine: Sub_C029 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C029: + lda Zp92,x ; CPU:$C029 PRG:4029 B5 92 + and #$FE ; CPU:$C02B PRG:402B 29 FE + sta Zp92,x ; CPU:$C02D PRG:402D 95 92 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_OnNonzero: + lda #$01 ; CPU:$C02F PRG:402F A9 01 + jsr ObjectCollision ; CPU:$C031 PRG:4031 20 C2 C2 + jmp SoundNote ; CPU:$C034 PRG:4034 4C 89 BF +; ----------------------------------------------------------------------------- +; Routine: Sub_C037 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C037: + lda Zp92,x ; CPU:$C037 PRG:4037 B5 92 + ora #$02 ; CPU:$C039 PRG:4039 09 02 + sta Zp92,x ; CPU:$C03B PRG:403B 95 92 + iny ; CPU:$C03D PRG:403D C8 + lda (Zp05),y ; CPU:$C03E PRG:403E B1 05 + sta ZpF2,x ; CPU:$C040 PRG:4040 95 F2 + and #$07 ; CPU:$C042 PRG:4042 29 07 + sta $0172,x ; CPU:$C044 PRG:4044 9D 72 01 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop4: + lda #$02 ; CPU:$C047 PRG:4047 A9 02 + jsr ObjectCollision ; CPU:$C049 PRG:4049 20 C2 C2 + jmp SoundNote ; CPU:$C04C PRG:404C 4C 89 BF +; ----------------------------------------------------------------------------- +; Routine: Sub_C04F +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C04F: + lda Zp92,x ; CPU:$C04F PRG:404F B5 92 + and #$FD ; CPU:$C051 PRG:4051 29 FD + sta Zp92,x ; CPU:$C053 PRG:4053 95 92 + bne SoundNote_OnNonzero ; CPU:$C055 PRG:4055 D0 D8 +; ----------------------------------------------------------------------------- +; Routine: Sub_C057 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C057: + lda Zp92,x ; CPU:$C057 PRG:4057 B5 92 + ora #$04 ; CPU:$C059 PRG:4059 09 04 + sta Zp92,x ; CPU:$C05B PRG:405B 95 92 + iny ; CPU:$C05D PRG:405D C8 + lda (Zp05),y ; CPU:$C05E PRG:405E B1 05 + pha ; CPU:$C060 PRG:4060 48 + sta $0112,x ; CPU:$C061 PRG:4061 9D 12 01 + and #$0F ; CPU:$C064 PRG:4064 29 0F + sta $010A,x ; CPU:$C066 PRG:4066 9D 0A 01 + pla ; CPU:$C069 PRG:4069 68 + and #$F0 ; CPU:$C06A PRG:406A 29 F0 + tay ; CPU:$C06C PRG:406C A8 + lda $CE36,y ; CPU:$C06D PRG:406D B9 36 CE + sta ZpEA,x ; CPU:$C070 PRG:4070 95 EA + lda $CE37,y ; CPU:$C072 PRG:4072 B9 37 CE + sta $011A,x ; CPU:$C075 PRG:4075 9D 1A 01 + jmp SoundNote_Loop4 ; CPU:$C078 PRG:4078 4C 47 C0 +; ----------------------------------------------------------------------------- +; Routine: Sub_C07B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C07B: + lda Zp92,x ; CPU:$C07B PRG:407B B5 92 + and #$FB ; CPU:$C07D PRG:407D 29 FB + sta Zp92,x ; CPU:$C07F PRG:407F 95 92 + bne SoundNote_OnNonzero ; CPU:$C081 PRG:4081 D0 AC +; ----------------------------------------------------------------------------- +; Routine: Sub_C083 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C083: + iny ; CPU:$C083 PRG:4083 C8 + lda (Zp05),y ; CPU:$C084 PRG:4084 B1 05 + and #$0F ; CPU:$C086 PRG:4086 29 0F + sta Zp9A,x ; CPU:$C088 PRG:4088 95 9A + sta Zp04 ; CPU:$C08A PRG:408A 85 04 + lda ZpA2,x ; CPU:$C08C PRG:408C B5 A2 + and #$F0 ; CPU:$C08E PRG:408E 29 F0 + ora Zp04 ; CPU:$C090 PRG:4090 05 04 + sta ZpA2,x ; CPU:$C092 PRG:4092 95 A2 + jmp SoundNote_Loop4 ; CPU:$C094 PRG:4094 4C 47 C0 +; ----------------------------------------------------------------------------- +; Routine: Sub_C097 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C097: + iny ; CPU:$C097 PRG:4097 C8 + lda (Zp05),y ; CPU:$C098 PRG:4098 B1 05 + sta ZpAA,x ; CPU:$C09A PRG:409A 95 AA + asl a ; CPU:$C09C PRG:409C 0A + asl a ; CPU:$C09D PRG:409D 0A + asl a ; CPU:$C09E PRG:409E 0A + asl a ; CPU:$C09F PRG:409F 0A + sta Zp04 ; CPU:$C0A0 PRG:40A0 85 04 + lda ZpA2,x ; CPU:$C0A2 PRG:40A2 B5 A2 + and #$0F ; CPU:$C0A4 PRG:40A4 29 0F + ora Zp04 ; CPU:$C0A6 PRG:40A6 05 04 + sta ZpA2,x ; CPU:$C0A8 PRG:40A8 95 A2 + jmp SoundNote_Loop4 ; CPU:$C0AA PRG:40AA 4C 47 C0 +; ----------------------------------------------------------------------------- +; Routine: Sub_C0AD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C0AD: + iny ; CPU:$C0AD PRG:40AD C8 + lda (Zp05),y ; CPU:$C0AE PRG:40AE B1 05 + asl a ; CPU:$C0B0 PRG:40B0 0A + asl a ; CPU:$C0B1 PRG:40B1 0A + asl a ; CPU:$C0B2 PRG:40B2 0A + asl a ; CPU:$C0B3 PRG:40B3 0A + sta Zp04 ; CPU:$C0B4 PRG:40B4 85 04 + lda ZpAA,x ; CPU:$C0B6 PRG:40B6 B5 AA + and #$0F ; CPU:$C0B8 PRG:40B8 29 0F + ora Zp04 ; CPU:$C0BA PRG:40BA 05 04 + sta ZpAA,x ; CPU:$C0BC PRG:40BC 95 AA +; ---- data $C0BE-$C0C5 (8 bytes) ---- + .byte $4C, $47, $C0, $A9, $01, $20, $C2, $C2 ; CPU:$C0BE PRG:40BE 4C 47 C0 A9 01 20 C2 C2 + lda ZpCA,x ; CPU:$C0C6 PRG:40C6 B5 CA + sta ZpDA,x ; CPU:$C0C8 PRG:40C8 95 DA + lda ZpD2,x ; CPU:$C0CA PRG:40CA B5 D2 + sta ZpE2,x ; CPU:$C0CC PRG:40CC 95 E2 + jmp SoundNote ; CPU:$C0CE PRG:40CE 4C 89 BF +; ----------------------------------------------------------------------------- +; Routine: Sub_C0D1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C0D1: + lda Zp92,x ; CPU:$C0D1 PRG:40D1 B5 92 + and #$08 ; CPU:$C0D3 PRG:40D3 29 08 + beq SoundNote_Loop5 ; CPU:$C0D5 PRG:40D5 F0 0E + lda Zp92,x ; CPU:$C0D7 PRG:40D7 B5 92 + and #$F7 ; CPU:$C0D9 PRG:40D9 29 F7 + sta Zp92,x ; CPU:$C0DB PRG:40DB 95 92 + lda #$03 ; CPU:$C0DD PRG:40DD A9 03 + jsr ObjectCollision ; CPU:$C0DF PRG:40DF 20 C2 C2 + jmp SoundNote ; CPU:$C0E2 PRG:40E2 4C 89 BF +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop5: + lda Zp92,x ; CPU:$C0E5 PRG:40E5 B5 92 + ora #$08 ; CPU:$C0E7 PRG:40E7 09 08 + sta Zp92,x ; CPU:$C0E9 PRG:40E9 95 92 + iny ; CPU:$C0EB PRG:40EB C8 + lda (Zp05),y ; CPU:$C0EC PRG:40EC B1 05 + sta ZpCA,x ; CPU:$C0EE PRG:40EE 95 CA + iny ; CPU:$C0F0 PRG:40F0 C8 + lda (Zp05),y ; CPU:$C0F1 PRG:40F1 B1 05 + sta ZpD2,x ; CPU:$C0F3 PRG:40F3 95 D2 + jmp SoundNote ; CPU:$C0F5 PRG:40F5 4C 89 BF +; ----------------------------------------------------------------------------- +; Routine: Sub_C0F8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C0F8: + lda #$03 ; CPU:$C0F8 PRG:40F8 A9 03 + jsr ObjectCollision ; CPU:$C0FA PRG:40FA 20 C2 C2 + txa ; CPU:$C0FD PRG:40FD 8A + asl a ; CPU:$C0FE PRG:40FE 0A + asl a ; CPU:$C0FF PRG:40FF 0A + tay ; CPU:$C100 PRG:4100 A8 + lda #$04 ; CPU:$C101 PRG:4101 A9 04 + sta Zp02 ; CPU:$C103 PRG:4103 85 02 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_OnNonzero2: + dec Zp02 ; CPU:$C105 PRG:4105 C6 02 + bmi SoundNote_Loop7 ; CPU:$C107 PRG:4107 30 1D + lda $0152,y ; CPU:$C109 PRG:4109 B9 52 01 + beq SoundNote_Loop6 ; CPU:$C10C PRG:410C F0 03 + iny ; CPU:$C10E PRG:410E C8 + bne SoundNote_OnNonzero2 ; CPU:$C10F PRG:410F D0 F4 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop6: + lda ZpCA,x ; CPU:$C111 PRG:4111 B5 CA + sta $0132,y ; CPU:$C113 PRG:4113 99 32 01 + lda ZpD2,x ; CPU:$C116 PRG:4116 B5 D2 + sta $0152,y ; CPU:$C118 PRG:4118 99 52 01 + ldy #$01 ; CPU:$C11B PRG:411B A0 01 + lda (Zp05),y ; CPU:$C11D PRG:411D B1 05 + sta ZpCA,x ; CPU:$C11F PRG:411F 95 CA + iny ; CPU:$C121 PRG:4121 C8 + lda (Zp05),y ; CPU:$C122 PRG:4122 B1 05 + sta ZpD2,x ; CPU:$C124 PRG:4124 95 D2 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop7: + jmp SoundNote ; CPU:$C126 PRG:4126 4C 89 BF +; ----------------------------------------------------------------------------- +; Routine: Sub_C129 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C129: + lda ZpDA,x ; CPU:$C129 PRG:4129 B5 DA + sta ZpCA,x ; CPU:$C12B PRG:412B 95 CA + lda ZpE2,x ; CPU:$C12D PRG:412D B5 E2 + sta ZpD2,x ; CPU:$C12F PRG:412F 95 D2 + jmp SoundNote ; CPU:$C131 PRG:4131 4C 89 BF +; ----------------------------------------------------------------------------- +; Routine: Sub_C134 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C134: + txa ; CPU:$C134 PRG:4134 8A + asl a ; CPU:$C135 PRG:4135 0A + asl a ; CPU:$C136 PRG:4136 0A + tay ; CPU:$C137 PRG:4137 A8 + lda $0152,y ; CPU:$C138 PRG:4138 B9 52 01 + ora $0153,y ; CPU:$C13B PRG:413B 19 53 01 + ora $0154,y ; CPU:$C13E PRG:413E 19 54 01 + ora $0155,y ; CPU:$C141 PRG:4141 19 55 01 + bne SoundNote_Loop9 ; CPU:$C144 PRG:4144 D0 23 + lda Zp92,x ; CPU:$C146 PRG:4146 B5 92 + and #$40 ; CPU:$C148 PRG:4148 29 40 + sta Zp92,x ; CPU:$C14A PRG:414A 95 92 + jsr Sub_C2BF ; CPU:$C14C PRG:414C 20 BF C2 + cpx #$04 ; CPU:$C14F PRG:414F E0 04 + bcc SoundNote_Loop8 ; CPU:$C151 PRG:4151 90 15 + txa ; CPU:$C153 PRG:4153 8A + sbc #$04 ; CPU:$C154 PRG:4154 E9 04 + tax ; CPU:$C156 PRG:4156 AA + lda Zp92,x ; CPU:$C157 PRG:4157 B5 92 + and #$BF ; CPU:$C159 PRG:4159 29 BF + sta Zp92,x ; CPU:$C15B PRG:415B 95 92 + asl a ; CPU:$C15D PRG:415D 0A + bcc SoundNote_Loop8 ; CPU:$C15E PRG:415E 90 08 + jsr Sub_C3FF ; CPU:$C160 PRG:4160 20 FF C3 + lda ZpAA,x ; CPU:$C163 PRG:4163 B5 AA + jsr ObjectCollision_Loop11 ; CPU:$C165 PRG:4165 20 DD C3 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop8: + rts ; CPU:$C168 PRG:4168 60 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop9: + iny ; CPU:$C169 PRG:4169 C8 + iny ; CPU:$C16A PRG:416A C8 + iny ; CPU:$C16B PRG:416B C8 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_OnNonnegative: + lda $0152,y ; CPU:$C16C PRG:416C B9 52 01 + bne SoundNote_Loop10 ; CPU:$C16F PRG:416F D0 03 + dey ; CPU:$C171 PRG:4171 88 + bpl SoundNote_OnNonnegative ; CPU:$C172 PRG:4172 10 F8 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop10: + lda $0132,y ; CPU:$C174 PRG:4174 B9 32 01 + sta ZpCA,x ; CPU:$C177 PRG:4177 95 CA + lda $0152,y ; CPU:$C179 PRG:4179 B9 52 01 + sta ZpD2,x ; CPU:$C17C PRG:417C 95 D2 + lda #$00 ; CPU:$C17E PRG:417E A9 00 + sta $0132,y ; CPU:$C180 PRG:4180 99 32 01 + sta $0152,y ; CPU:$C183 PRG:4183 99 52 01 + jmp SoundNote ; CPU:$C186 PRG:4186 4C 89 BF +; ----------------------------------------------------------------------------- +; Routine: Sub_C189 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C189: + jsr Sub_C2CC ; CPU:$C189 PRG:4189 20 CC C2 + cmp #$40 ; CPU:$C18C PRG:418C C9 40 + bcc SoundNote_Loop13 ; CPU:$C18E PRG:418E 90 30 + cmp #$80 ; CPU:$C190 PRG:4190 C9 80 + bcs SoundNote_Loop12 ; CPU:$C192 PRG:4192 B0 26 + jsr Sub_C2BF ; CPU:$C194 PRG:4194 20 BF C2 + lda Zp92,x ; CPU:$C197 PRG:4197 B5 92 + ora #$20 ; CPU:$C199 PRG:4199 09 20 + sta Zp92,x ; CPU:$C19B PRG:419B 95 92 + txa ; CPU:$C19D PRG:419D 8A + cmp #$04 ; CPU:$C19E PRG:419E C9 04 + bcc SoundNote_Loop12 ; CPU:$C1A0 PRG:41A0 90 18 + stx Zp03 ; CPU:$C1A2 PRG:41A2 86 03 + sbc #$04 ; CPU:$C1A4 PRG:41A4 E9 04 + tax ; CPU:$C1A6 PRG:41A6 AA + lda Zp92,x ; CPU:$C1A7 PRG:41A7 B5 92 + and #$BF ; CPU:$C1A9 PRG:41A9 29 BF + sta Zp92,x ; CPU:$C1AB PRG:41AB 95 92 + asl a ; CPU:$C1AD PRG:41AD 0A + bcc SoundNote_Loop11 ; CPU:$C1AE PRG:41AE 90 08 + jsr Sub_C3FF ; CPU:$C1B0 PRG:41B0 20 FF C3 + lda ZpAA,x ; CPU:$C1B3 PRG:41B3 B5 AA + jsr ObjectCollision_Loop11 ; CPU:$C1B5 PRG:41B5 20 DD C3 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop11: + ldx Zp03 ; CPU:$C1B8 PRG:41B8 A6 03 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop12: + lda #$01 ; CPU:$C1BA PRG:41BA A9 01 + jsr ObjectCollision ; CPU:$C1BC PRG:41BC 20 C2 C2 + rts ; CPU:$C1BF PRG:41BF 60 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop13: + txa ; CPU:$C1C0 PRG:41C0 8A + cmp #$04 ; CPU:$C1C1 PRG:41C1 C9 04 + bcc SoundNote_Loop14 ; CPU:$C1C3 PRG:41C3 90 0B + sbc #$04 ; CPU:$C1C5 PRG:41C5 E9 04 + tay ; CPU:$C1C7 PRG:41C7 A8 + lda a:Zp92,y ; CPU:$C1C8 PRG:41C8 B9 92 00 + ora #$40 ; CPU:$C1CB PRG:41CB 09 40 + sta a:Zp92,y ; CPU:$C1CD PRG:41CD 99 92 00 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop14: + ldy #$01 ; CPU:$C1D0 PRG:41D0 A0 01 + lda Zp92,x ; CPU:$C1D2 PRG:41D2 B5 92 + and #$DF ; CPU:$C1D4 PRG:41D4 29 DF + sta Zp92,x ; CPU:$C1D6 PRG:41D6 95 92 + and #$10 ; CPU:$C1D8 PRG:41D8 29 10 + bne SoundNote_Loop15 ; CPU:$C1DA PRG:41DA D0 1D + lda (Zp05),y ; CPU:$C1DC PRG:41DC B1 05 + sta ZpBA,x ; CPU:$C1DE PRG:41DE 95 BA + iny ; CPU:$C1E0 PRG:41E0 C8 + lda (Zp05),y ; CPU:$C1E1 PRG:41E1 B1 05 + and #$0F ; CPU:$C1E3 PRG:41E3 29 0F + sta Zp03 ; CPU:$C1E5 PRG:41E5 85 03 + lda ZpC2,x ; CPU:$C1E7 PRG:41E7 B5 C2 + and #$F0 ; CPU:$C1E9 PRG:41E9 29 F0 + ora Zp03 ; CPU:$C1EB PRG:41EB 05 03 + ora #$08 ; CPU:$C1ED PRG:41ED 09 08 + sta ZpC2,x ; CPU:$C1EF PRG:41EF 95 C2 + lda #$03 ; CPU:$C1F1 PRG:41F1 A9 03 + jsr ObjectCollision ; CPU:$C1F3 PRG:41F3 20 C2 C2 + jmp Sub_C289 ; CPU:$C1F6 PRG:41F6 4C 89 C2 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop15: + lda $0122,x ; CPU:$C1F9 PRG:41F9 BD 22 01 + and #$80 ; CPU:$C1FC PRG:41FC 29 80 + beq SoundNote_Loop19 ; CPU:$C1FE PRG:41FE F0 4D + lda (Zp05),y ; CPU:$C200 PRG:4200 B1 05 + sta Zp00 ; CPU:$C202 PRG:4202 85 00 + lda $0122,x ; CPU:$C204 PRG:4204 BD 22 01 + and #$3F ; CPU:$C207 PRG:4207 29 3F + beq SoundNote_Loop19 ; CPU:$C209 PRG:4209 F0 42 + sta Zp01 ; CPU:$C20B PRG:420B 85 01 + lda $0122,x ; CPU:$C20D PRG:420D BD 22 01 + and #$40 ; CPU:$C210 PRG:4210 29 40 + beq SoundNote_Loop16 ; CPU:$C212 PRG:4212 F0 02 + lda #$FE ; CPU:$C214 PRG:4214 A9 FE +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop16: + clc ; CPU:$C216 PRG:4216 18 + adc #$01 ; CPU:$C217 PRG:4217 69 01 + sta Zp02 ; CPU:$C219 PRG:4219 85 02 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_OnCarryClear +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_OnCarryClear: + dec Zp01 ; CPU:$C21B PRG:421B C6 01 + bmi SoundNote_Loop18 ; CPU:$C21D PRG:421D 30 24 + lda Zp00 ; CPU:$C21F PRG:421F A5 00 + clc ; CPU:$C221 PRG:4221 18 + adc Zp02 ; CPU:$C222 PRG:4222 65 02 + sta Zp00 ; CPU:$C224 PRG:4224 85 00 + and #$0F ; CPU:$C226 PRG:4226 29 0F + cmp #$0C ; CPU:$C228 PRG:4228 C9 0C + bcc SoundNote_OnCarryClear ; CPU:$C22A PRG:422A 90 EF + lda #$03 ; CPU:$C22C PRG:422C A9 03 + sta Zp03 ; CPU:$C22E PRG:422E 85 03 + lda $0122,x ; CPU:$C230 PRG:4230 BD 22 01 + asl a ; CPU:$C233 PRG:4233 0A + bpl SoundNote_Loop17 ; CPU:$C234 PRG:4234 10 04 + lda #$FB ; CPU:$C236 PRG:4236 A9 FB + sta Zp03 ; CPU:$C238 PRG:4238 85 03 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop17: + lda Zp03 ; CPU:$C23A PRG:423A A5 03 + adc Zp00 ; CPU:$C23C PRG:423C 65 00 + sta Zp00 ; CPU:$C23E PRG:423E 85 00 + jmp SoundNote_OnCarryClear ; CPU:$C240 PRG:4240 4C 1B C2 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop18: + lda Zp00 ; CPU:$C243 PRG:4243 A5 00 + cmp #$10 ; CPU:$C245 PRG:4245 C9 10 + bcc SoundNote_Loop19 ; CPU:$C247 PRG:4247 90 04 + cmp #$61 ; CPU:$C249 PRG:4249 C9 61 + bcc SoundNote_Loop20 ; CPU:$C24B PRG:424B 90 02 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop19: + lda (Zp05),y ; CPU:$C24D PRG:424D B1 05 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop20: + sta Zp00 ; CPU:$C24F PRG:424F 85 00 + and #$0F ; CPU:$C251 PRG:4251 29 0F + asl a ; CPU:$C253 PRG:4253 0A + tay ; CPU:$C254 PRG:4254 A8 + lda $CD9E,y ; CPU:$C255 PRG:4255 B9 9E CD + sta Zp02 ; CPU:$C258 PRG:4258 85 02 + lda $CD9F,y ; CPU:$C25A PRG:425A B9 9F CD + sta Zp03 ; CPU:$C25D PRG:425D 85 03 + lda Zp00 ; CPU:$C25F PRG:425F A5 00 + lsr a ; CPU:$C261 PRG:4261 4A + lsr a ; CPU:$C262 PRG:4262 4A + lsr a ; CPU:$C263 PRG:4263 4A + lsr a ; CPU:$C264 PRG:4264 4A + sta Zp00 ; CPU:$C265 PRG:4265 85 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_C267 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C267: + dec Zp00 ; CPU:$C267 PRG:4267 C6 00 + beq SoundNote_Loop21 ; CPU:$C269 PRG:4269 F0 07 + lsr Zp03 ; CPU:$C26B PRG:426B 46 03 + ror Zp02 ; CPU:$C26D PRG:426D 66 02 + jmp Sub_C267 ; CPU:$C26F PRG:426F 4C 67 C2 +; ----------------------------------------------------------------------------- +; Routine: SoundNote_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SoundNote_Loop21: + lda Zp02 ; CPU:$C272 PRG:4272 A5 02 + sta ZpBA,x ; CPU:$C274 PRG:4274 95 BA + lda Zp03 ; CPU:$C276 PRG:4276 A5 03 + ora #$08 ; CPU:$C278 PRG:4278 09 08 + sta Zp03 ; CPU:$C27A PRG:427A 85 03 + lda ZpC2,x ; CPU:$C27C PRG:427C B5 C2 + and #$F0 ; CPU:$C27E PRG:427E 29 F0 + ora Zp03 ; CPU:$C280 PRG:4280 05 03 + sta ZpC2,x ; CPU:$C282 PRG:4282 95 C2 + lda #$02 ; CPU:$C284 PRG:4284 A9 02 + jsr ObjectCollision ; CPU:$C286 PRG:4286 20 C2 C2 +; ----------------------------------------------------------------------------- +; Routine: Sub_C289 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C289: + jsr Sub_C3FF ; CPU:$C289 PRG:4289 20 FF C3 + lda $0100,x ; CPU:$C28C PRG:428C BD 00 01 + and #$0F ; CPU:$C28F PRG:428F 29 0F + sta $012A,x ; CPU:$C291 PRG:4291 9D 2A 01 + lda $0112,x ; CPU:$C294 PRG:4294 BD 12 01 + pha ; CPU:$C297 PRG:4297 48 + and #$0F ; CPU:$C298 PRG:4298 29 0F + sta $010A,x ; CPU:$C29A PRG:429A 9D 0A 01 + pla ; CPU:$C29D PRG:429D 68 + and #$F0 ; CPU:$C29E PRG:429E 29 F0 + tay ; CPU:$C2A0 PRG:42A0 A8 + lda $CE36,y ; CPU:$C2A1 PRG:42A1 B9 36 CE + sta ZpEA,x ; CPU:$C2A4 PRG:42A4 95 EA + lda $CE37,y ; CPU:$C2A6 PRG:42A6 B9 37 CE + sta $011A,x ; CPU:$C2A9 PRG:42A9 9D 1A 01 + lda ZpAA,x ; CPU:$C2AC PRG:42AC B5 AA + and #$F0 ; CPU:$C2AE PRG:42AE 29 F0 + sta ZpAA,x ; CPU:$C2B0 PRG:42B0 95 AA + lda ZpA2,x ; CPU:$C2B2 PRG:42B2 B5 A2 + lsr a ; CPU:$C2B4 PRG:42B4 4A + lsr a ; CPU:$C2B5 PRG:42B5 4A + lsr a ; CPU:$C2B6 PRG:42B6 4A + lsr a ; CPU:$C2B7 PRG:42B7 4A + ora ZpAA,x ; CPU:$C2B8 PRG:42B8 15 AA + sta ZpAA,x ; CPU:$C2BA PRG:42BA 95 AA + jmp ObjectCollision_Loop11 ; CPU:$C2BC PRG:42BC 4C DD C3 +; ----------------------------------------------------------------------------- +; Routine: Sub_C2BF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C2BF: + jmp Sub_C3D4 ; CPU:$C2BF PRG:42BF 4C D4 C3 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision: + clc ; CPU:$C2C2 PRG:42C2 18 + adc ZpCA,x ; CPU:$C2C3 PRG:42C3 75 CA + sta ZpCA,x ; CPU:$C2C5 PRG:42C5 95 CA + bcc ObjectCollision_Loop ; CPU:$C2C7 PRG:42C7 90 02 + inc ZpD2,x ; CPU:$C2C9 PRG:42C9 F6 D2 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop: + rts ; CPU:$C2CB PRG:42CB 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_C2CC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C2CC: + pha ; CPU:$C2CC PRG:42CC 48 + and #$3F ; CPU:$C2CD PRG:42CD 29 3F + sta ZpB2,x ; CPU:$C2CF PRG:42CF 95 B2 + pla ; CPU:$C2D1 PRG:42D1 68 + rts ; CPU:$C2D2 PRG:42D2 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_C2D3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C2D3: + lda $0100,x ; CPU:$C2D3 PRG:42D3 BD 00 01 + and #$F0 ; CPU:$C2D6 PRG:42D6 29 F0 + lsr a ; CPU:$C2D8 PRG:42D8 4A + sta Zp03 ; CPU:$C2D9 PRG:42D9 85 03 + lda $012A,x ; CPU:$C2DB PRG:42DB BD 2A 01 + lsr a ; CPU:$C2DE PRG:42DE 4A + lsr a ; CPU:$C2DF PRG:42DF 4A + lsr a ; CPU:$C2E0 PRG:42E0 4A + lsr a ; CPU:$C2E1 PRG:42E1 4A + clc ; CPU:$C2E2 PRG:42E2 18 + adc Zp03 ; CPU:$C2E3 PRG:42E3 65 03 + tay ; CPU:$C2E5 PRG:42E5 A8 + lda ZpAA,x ; CPU:$C2E6 PRG:42E6 B5 AA + and #$0F ; CPU:$C2E8 PRG:42E8 29 0F + adc $CDB6,y ; CPU:$C2EA PRG:42EA 79 B6 CD + cmp #$10 ; CPU:$C2ED PRG:42ED C9 10 + bcs ObjectCollision_Loop2 ; CPU:$C2EF PRG:42EF B0 0D + sta Zp03 ; CPU:$C2F1 PRG:42F1 85 03 + lda ZpAA,x ; CPU:$C2F3 PRG:42F3 B5 AA + and #$F0 ; CPU:$C2F5 PRG:42F5 29 F0 + ora Zp03 ; CPU:$C2F7 PRG:42F7 05 03 + sta ZpAA,x ; CPU:$C2F9 PRG:42F9 95 AA + jsr ObjectCollision_Loop11 ; CPU:$C2FB PRG:42FB 20 DD C3 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop2: + rts ; CPU:$C2FE PRG:42FE 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_C2FF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C2FF: + lda #$00 ; CPU:$C2FF PRG:42FF A9 00 + sta Zp03 ; CPU:$C301 PRG:4301 85 03 + lda ZpF2,x ; CPU:$C303 PRG:4303 B5 F2 + sta Zp00 ; CPU:$C305 PRG:4305 85 00 + and #$78 ; CPU:$C307 PRG:4307 29 78 + lsr a ; CPU:$C309 PRG:4309 4A + lsr a ; CPU:$C30A PRG:430A 4A + lsr a ; CPU:$C30B PRG:430B 4A + adc #$01 ; CPU:$C30C PRG:430C 69 01 +; ----------------------------------------------------------------------------- +; Routine: Sub_C30E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C30E: + sta Zp02 ; CPU:$C30E PRG:430E 85 02 + ldy Zp00 ; CPU:$C310 PRG:4310 A4 00 + bpl ObjectCollision_Loop3 ; CPU:$C312 PRG:4312 10 0C + eor #$FF ; CPU:$C314 PRG:4314 49 FF + adc #$01 ; CPU:$C316 PRG:4316 69 01 + sta Zp02 ; CPU:$C318 PRG:4318 85 02 + lda #$FF ; CPU:$C31A PRG:431A A9 FF + adc #$00 ; CPU:$C31C PRG:431C 69 00 + sta Zp03 ; CPU:$C31E PRG:431E 85 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop3: + lda ZpBA,x ; CPU:$C320 PRG:4320 B5 BA + clc ; CPU:$C322 PRG:4322 18 + adc Zp02 ; CPU:$C323 PRG:4323 65 02 + sta ZpBA,x ; CPU:$C325 PRG:4325 95 BA + lda ZpC2,x ; CPU:$C327 PRG:4327 B5 C2 + and #$F8 ; CPU:$C329 PRG:4329 29 F8 + sta Zp02 ; CPU:$C32B PRG:432B 85 02 + lda ZpC2,x ; CPU:$C32D PRG:432D B5 C2 + adc Zp03 ; CPU:$C32F PRG:432F 65 03 + and #$07 ; CPU:$C331 PRG:4331 29 07 + ora Zp02 ; CPU:$C333 PRG:4333 05 02 + sta ZpC2,x ; CPU:$C335 PRG:4335 95 C2 + jmp Sub_C3FF ; CPU:$C337 PRG:4337 4C FF C3 +; ----------------------------------------------------------------------------- +; Routine: Sub_C33A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C33A: + lda ZpEA,x ; CPU:$C33A PRG:433A B5 EA + and #$0F ; CPU:$C33C PRG:433C 29 0F + beq ObjectCollision_Loop4 ; CPU:$C33E PRG:433E F0 03 + dec ZpEA,x ; CPU:$C340 PRG:4340 D6 EA + rts ; CPU:$C342 PRG:4342 60 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop4: + lda #$00 ; CPU:$C343 PRG:4343 A9 00 + sta Zp03 ; CPU:$C345 PRG:4345 85 03 + lda $0112,x ; CPU:$C347 PRG:4347 BD 12 01 + and #$F0 ; CPU:$C34A PRG:434A 29 F0 + sta Zp02 ; CPU:$C34C PRG:434C 85 02 + lda $010A,x ; CPU:$C34E PRG:434E BD 0A 01 + and #$F0 ; CPU:$C351 PRG:4351 29 F0 + lsr a ; CPU:$C353 PRG:4353 4A + lsr a ; CPU:$C354 PRG:4354 4A + lsr a ; CPU:$C355 PRG:4355 4A + adc Zp02 ; CPU:$C356 PRG:4356 65 02 + tay ; CPU:$C358 PRG:4358 A8 + lda $CE36,y ; CPU:$C359 PRG:4359 B9 36 CE + and #$0F ; CPU:$C35C PRG:435C 29 0F + ora ZpEA,x ; CPU:$C35E PRG:435E 15 EA + sta ZpEA,x ; CPU:$C360 PRG:4360 95 EA + lda $011A,x ; CPU:$C362 PRG:4362 BD 1A 01 + and #$F0 ; CPU:$C365 PRG:4365 29 F0 + beq ObjectCollision_Loop5 ; CPU:$C367 PRG:4367 F0 0A + lda $011A,x ; CPU:$C369 PRG:4369 BD 1A 01 + sbc #$0F ; CPU:$C36C PRG:436C E9 0F + sta $011A,x ; CPU:$C36E PRG:436E 9D 1A 01 + bcs ObjectCollision_Loop9 ; CPU:$C371 PRG:4371 B0 3F +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop5: + lda $011A,x ; CPU:$C373 PRG:4373 BD 1A 01 + and #$0F ; CPU:$C376 PRG:4376 29 0F + beq ObjectCollision_Loop6 ; CPU:$C378 PRG:4378 F0 16 + dec $011A,x ; CPU:$C37A PRG:437A DE 1A 01 + lda $CE37,y ; CPU:$C37D PRG:437D B9 37 CE + and #$F0 ; CPU:$C380 PRG:4380 29 F0 + ora $011A,x ; CPU:$C382 PRG:4382 1D 1A 01 + sta $011A,x ; CPU:$C385 PRG:4385 9D 1A 01 + lda ZpEA,x ; CPU:$C388 PRG:4388 B5 EA + eor #$80 ; CPU:$C38A PRG:438A 49 80 + sta ZpEA,x ; CPU:$C38C PRG:438C 95 EA + bcc ObjectCollision_Loop9 ; CPU:$C38E PRG:438E 90 22 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop6: + lda $010A,x ; CPU:$C390 PRG:4390 BD 0A 01 + adc #$10 ; CPU:$C393 PRG:4393 69 10 + sta $010A,x ; CPU:$C395 PRG:4395 9D 0A 01 + cmp #$80 ; CPU:$C398 PRG:4398 C9 80 + bcc ObjectCollision_Loop7 ; CPU:$C39A PRG:439A 90 09 + and #$7F ; CPU:$C39C PRG:439C 29 7F + sta $010A,x ; CPU:$C39E PRG:439E 9D 0A 01 + ldy Zp02 ; CPU:$C3A1 PRG:43A1 A4 02 + bcs ObjectCollision_Loop8 ; CPU:$C3A3 PRG:43A3 B0 02 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop7: + iny ; CPU:$C3A5 PRG:43A5 C8 + iny ; CPU:$C3A6 PRG:43A6 C8 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop8: + lda $CE36,y ; CPU:$C3A7 PRG:43A7 B9 36 CE + sta ZpEA,x ; CPU:$C3AA PRG:43AA 95 EA + lda $CE37,y ; CPU:$C3AC PRG:43AC B9 37 CE + sta $011A,x ; CPU:$C3AF PRG:43AF 9D 1A 01 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop9: + lda ZpEA,x ; CPU:$C3B2 PRG:43B2 B5 EA + sta Zp00 ; CPU:$C3B4 PRG:43B4 85 00 + and #$70 ; CPU:$C3B6 PRG:43B6 29 70 + bne ObjectCollision_Loop10 ; CPU:$C3B8 PRG:43B8 D0 01 + rts ; CPU:$C3BA PRG:43BA 60 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop10: + lsr a ; CPU:$C3BB PRG:43BB 4A + lsr a ; CPU:$C3BC PRG:43BC 4A + lsr a ; CPU:$C3BD PRG:43BD 4A + lsr a ; CPU:$C3BE PRG:43BE 4A + jmp Sub_C30E ; CPU:$C3BF PRG:43BF 4C 0E C3 +; ----------------------------------------------------------------------------- +; Routine: Sub_C3C2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C3C2: + ldy #$00 ; CPU:$C3C2 PRG:43C2 A0 00 + jsr Sub_C419 ; CPU:$C3C4 PRG:43C4 20 19 C4 + lda #$30 ; CPU:$C3C7 PRG:43C7 A9 30 + jsr a:$008E ; CPU:$C3C9 PRG:43C9 20 8E 00 + lda #$00 ; CPU:$C3CC PRG:43CC A9 00 + inc Zp8F ; CPU:$C3CE PRG:43CE E6 8F + jsr a:$008E ; CPU:$C3D0 PRG:43D0 20 8E 00 + rts ; CPU:$C3D3 PRG:43D3 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_C3D4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C3D4: + txa ; CPU:$C3D4 PRG:43D4 8A + and #$03 ; CPU:$C3D5 PRG:43D5 29 03 + eor #$02 ; CPU:$C3D7 PRG:43D7 49 02 + beq ObjectCollision_Loop11 ; CPU:$C3D9 PRG:43D9 F0 02 + lda #$30 ; CPU:$C3DB PRG:43DB A9 30 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop11: + sta Zp02 ; CPU:$C3DD PRG:43DD 85 02 + ldy #$00 ; CPU:$C3DF PRG:43DF A0 00 + jsr Sub_C419 ; CPU:$C3E1 PRG:43E1 20 19 C4 + lda Zp92,x ; CPU:$C3E4 PRG:43E4 B5 92 + and #$40 ; CPU:$C3E6 PRG:43E6 29 40 + bne ObjectCollision_Loop12 ; CPU:$C3E8 PRG:43E8 D0 14 + lda Zp02 ; CPU:$C3EA PRG:43EA A5 02 + jsr a:$008E ; CPU:$C3EC PRG:43EC 20 8E 00 + bne ObjectCollision_Loop12 ; CPU:$C3EF PRG:43EF D0 0D + lda ZpC2,x ; CPU:$C3F1 PRG:43F1 B5 C2 + ora #$18 ; CPU:$C3F3 PRG:43F3 09 18 + inc Zp8F ; CPU:$C3F5 PRG:43F5 E6 8F + inc Zp8F ; CPU:$C3F7 PRG:43F7 E6 8F + inc Zp8F ; CPU:$C3F9 PRG:43F9 E6 8F + jsr a:$008E ; CPU:$C3FB PRG:43FB 20 8E 00 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop12: + rts ; CPU:$C3FE PRG:43FE 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_C3FF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C3FF: + lda Zp92,x ; CPU:$C3FF PRG:43FF B5 92 + and #$40 ; CPU:$C401 PRG:4401 29 40 + bne ObjectCollision_Loop13 ; CPU:$C403 PRG:4403 D0 13 + ldy #$02 ; CPU:$C405 PRG:4405 A0 02 + jsr Sub_C419 ; CPU:$C407 PRG:4407 20 19 C4 + lda ZpBA,x ; CPU:$C40A PRG:440A B5 BA + jsr a:$008E ; CPU:$C40C PRG:440C 20 8E 00 + lda ZpC2,x ; CPU:$C40F PRG:440F B5 C2 + inc Zp8F ; CPU:$C411 PRG:4411 E6 8F + and #$0F ; CPU:$C413 PRG:4413 29 0F + jsr a:$008E ; CPU:$C415 PRG:4415 20 8E 00 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop13: + rts ; CPU:$C418 PRG:4418 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_C419 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_C419: + sty Zp00 ; CPU:$C419 PRG:4419 84 00 + ldy #$04 ; CPU:$C41B PRG:441B A0 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_OnNonzero: + lda $C433,y ; CPU:$C41D PRG:441D B9 33 C4 + sta a:Zp8D,y ; CPU:$C420 PRG:4420 99 8D 00 + dey ; CPU:$C423 PRG:4423 88 + bne ObjectCollision_OnNonzero ; CPU:$C424 PRG:4424 D0 F7 + txa ; CPU:$C426 PRG:4426 8A + cmp #$04 ; CPU:$C427 PRG:4427 C9 04 + bcc ObjectCollision_Loop14 ; CPU:$C429 PRG:4429 90 02 + sbc #$04 ; CPU:$C42B PRG:442B E9 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop14: + asl a ; CPU:$C42D PRG:442D 0A + asl a ; CPU:$C42E PRG:442E 0A + adc Zp00 ; CPU:$C42F PRG:442F 65 00 + sta Zp8F ; CPU:$C431 PRG:4431 85 8F + rts ; CPU:$C433 PRG:4433 60 +; ---- data $C434-$CF35 (2818 bytes) ---- +; referenced by `ldx $C438,y` at $BE77 (operand $C438 falls inside this region) +; referenced by `lda $C498,y` at $BE82 (operand $C498 falls inside this region) +; referenced by `lda $C499,y` at $BE89 (operand $C499 falls inside this region) +; referenced by `lda $CE36,y` at $C06D (operand $CE36 falls inside this region) +; referenced by `lda $CE37,y` at $C072 (operand $CE37 falls inside this region) +; referenced by `lda $CD9E,y` at $C255 (operand $CD9E falls inside this region) +; ... and 8 further references from decoded code + .byte $8D, $00, $40, $60, $00, $00, $01, $01, $02, $02, $00, $03, $01, $04, $02, $05 ; CPU:$C434 PRG:4434 8D 00 40 60 00 00 01 01 02 02 00 03 01 04 02 05 + .byte $00, $06, $01, $07, $02, $08, $00, $09, $01, $0A, $02, $0B, $00, $0C, $01, $0D ; CPU:$C444 PRG:4444 00 06 01 07 02 08 00 09 01 0A 02 0B 00 0C 01 0D + .byte $02, $0E, $00, $0F, $01, $10, $02, $11, $00, $12, $01, $13, $02, $14, $00, $15 ; CPU:$C454 PRG:4454 02 0E 00 0F 01 10 02 11 00 12 01 13 02 14 00 15 + .byte $01, $16, $02, $17, $00, $18, $01, $19, $02, $1A, $03, $1B, $01, $1C, $00, $1D ; CPU:$C464 PRG:4464 01 16 02 17 00 18 01 19 02 1A 03 1B 01 1C 00 1D + .byte $00, $1E, $02, $1F, $00, $20, $03, $21, $03, $22, $00, $23, $03, $24, $04, $25 ; CPU:$C474 PRG:4474 00 1E 02 1F 00 20 03 21 03 22 00 23 03 24 04 25 + .byte $00, $26, $01, $27, $00, $28, $01, $29, $03, $2A, $00, $2B, $05, $2C, $03, $2D ; CPU:$C484 PRG:4484 00 26 01 27 00 28 01 29 03 2A 00 2B 05 2C 03 2D + .byte $01, $2E, $00, $2F, $F8, $C4, $8B, $C5, $35, $C6, $B5, $C6, $0D, $C7, $65, $C7 ; CPU:$C494 PRG:4494 01 2E 00 2F F8 C4 8B C5 35 C6 B5 C6 0D C7 65 C7 + .byte $A0, $C7, $DC, $C7, $04, $C8, $40, $C8, $55, $C8, $BC, $C8, $E2, $C8, $28, $C9 ; CPU:$C4A4 PRG:44A4 A0 C7 DC C7 04 C8 40 C8 55 C8 BC C8 E2 C8 28 C9 + .byte $6E, $C9, $A2, $C9, $C6, $C9, $28, $CA, $A5, $CA, $D9, $CA, $48, $CB, $9A, $CB ; CPU:$C4B4 PRG:44B4 6E C9 A2 C9 C6 C9 28 CA A5 CA D9 CA 48 CB 9A CB + .byte $CB, $CB, $FC, $CB, $2B, $CC, $2C, $CC, $2D, $CC, $2E, $CC, $3A, $CC, $44, $CC ; CPU:$C4C4 PRG:44C4 CB CB FC CB 2B CC 2C CC 2D CC 2E CC 3A CC 44 CC + .byte $50, $CC, $60, $CC, $66, $CC, $99, $CC, $9A, $CC, $A8, $CC, $B4, $CC, $C2, $CC ; CPU:$C4D4 PRG:44D4 50 CC 60 CC 66 CC 99 CC 9A CC A8 CC B4 CC C2 CC + .byte $CA, $CC, $D6, $CC, $0E, $CD, $1E, $CD, $26, $CD, $6B, $CD, $77, $CD, $87, $CD ; CPU:$C4E4 PRG:44E4 CA CC D6 CC 0E CD 1E CD 26 CD 6B CD 77 CD 87 CD + .byte $8E, $CD, $96, $CD, $F8, $02, $F9, $B6, $F2, $62, $C0, $FD, $7A, $C5, $FD, $7A ; CPU:$C4F4 PRG:44F4 8E CD 96 CD F8 02 F9 B6 F2 62 C0 FD 7A C5 FD 7A + .byte $C5, $FD, $7A, $C5, $03, $50, $03, $4B, $03, $49, $03, $4B, $43, $01, $49, $41 ; CPU:$C504 PRG:4504 C5 FD 7A C5 03 50 03 4B 03 49 03 4B 43 01 49 41 + .byte $01, $4B, $01, $4B, $41, $01, $4B, $FB, $F9, $B6, $F2, $94, $03, $44, $03, $44 ; CPU:$C514 PRG:4514 01 4B 01 4B 41 01 4B FB F9 B6 F2 94 03 44 03 44 + .byte $03, $49, $07, $47, $03, $44, $03, $40, $03, $44, $03, $45, $03, $44, $03, $42 ; CPU:$C524 PRG:4524 03 49 07 47 03 44 03 40 03 44 03 45 03 44 03 42 + .byte $03, $44, $8F, $03, $44, $03, $44, $03, $50, $07, $4B, $03, $44, $03, $47, $03 ; CPU:$C534 PRG:4534 03 44 8F 03 44 03 44 03 50 07 4B 03 44 03 47 03 + .byte $49, $03, $4B, $03, $50, $03, $4B, $03, $49, $8F, $F9, $B4, $03, $39, $03, $37 ; CPU:$C544 PRG:4544 49 03 4B 03 50 03 4B 03 49 8F F9 B4 03 39 03 37 + .byte $03, $39, $07, $34, $03, $32, $03, $34, $07, $30, $03, $29, $03, $30, $03, $32 ; CPU:$C554 PRG:4554 03 39 07 34 03 32 03 34 07 30 03 29 03 30 03 32 + .byte $07, $34, $07, $37, $03, $39, $03, $37, $03, $39, $07, $40, $03, $3B, $03, $39 ; CPU:$C564 PRG:4564 07 34 07 37 03 39 03 37 03 39 07 40 03 3B 03 39 + .byte $03, $37, $03, $39, $5B, $FE, $03, $50, $03, $50, $03, $50, $03, $50, $03, $50 ; CPU:$C574 PRG:4574 03 37 03 39 5B FE 03 50 03 50 03 50 03 50 03 50 + .byte $03, $50, $03, $50, $03, $50, $FF, $F8, $02, $F9, $B2, $C0, $F2, $94, $FD, $24 ; CPU:$C584 PRG:4584 03 50 03 50 03 50 FF F8 02 F9 B2 C0 F2 94 FD 24 + .byte $C6, $FD, $24, $C6, $FD, $24, $C6, $03, $40, $03, $3B, $03, $39, $07, $3B, $03 ; CPU:$C594 PRG:4594 C6 FD 24 C6 FD 24 C6 03 40 03 3B 03 39 07 3B 03 + .byte $39, $03, $3B, $01, $3B, $01, $3B, $FB, $F9, $B4, $03, $47, $03, $47, $03, $50 ; CPU:$C5A4 PRG:45A4 39 03 3B 01 3B 01 3B FB F9 B4 03 47 03 47 03 50 + .byte $07, $4B, $03, $47, $03, $44, $03, $47, $03, $49, $03, $47, $03, $45, $03, $47 ; CPU:$C5B4 PRG:45B4 07 4B 03 47 03 44 03 47 03 49 03 47 03 45 03 47 + .byte $8F, $03, $47, $03, $47, $03, $54, $07, $52, $03, $47, $03, $4B, $03, $50, $03 ; CPU:$C5C4 PRG:45C4 8F 03 47 03 47 03 54 07 52 03 47 03 4B 03 50 03 + .byte $52, $03, $54, $03, $52, $03, $50, $8F, $F2, $64, $03, $50, $03, $4B, $03, $50 ; CPU:$C5D4 PRG:45D4 52 03 54 03 52 03 50 8F F2 64 03 50 03 4B 03 50 + .byte $07, $47, $03, $45, $03, $47, $07, $44, $03, $40, $03, $44, $03, $45, $07, $47 ; CPU:$C5E4 PRG:45E4 07 47 03 45 03 47 07 44 03 40 03 44 03 45 07 47 + .byte $03, $4B, $01, $4B, $01, $4B, $03, $50, $03, $4B, $03, $50, $07, $54, $03, $52 ; CPU:$C5F4 PRG:45F4 03 4B 01 4B 01 4B 03 50 03 4B 03 50 07 54 03 52 + .byte $03, $50, $03, $4B, $03, $50, $43, $02, $34, $02, $38, $02, $3B, $02, $42, $01 ; CPU:$C604 PRG:4604 03 50 03 4B 03 50 43 02 34 02 38 02 3B 02 42 01 + .byte $44, $01, $48, $01, $4B, $01, $52, $00, $54, $00, $58, $00, $5B, $00, $62, $FE ; CPU:$C614 PRG:4614 44 01 48 01 4B 01 52 00 54 00 58 00 5B 00 62 FE + .byte $03, $40, $03, $40, $03, $40, $03, $40, $03, $40, $03, $40, $03, $40, $03, $40 ; CPU:$C624 PRG:4624 03 40 03 40 03 40 03 40 03 40 03 40 03 40 03 40 + .byte $FF, $F8, $02, $F9, $65, $C0, $F0, $0C, $FD, $7F, $C6, $FD, $7F, $C6, $FD, $7F ; CPU:$C634 PRG:4634 FF F8 02 F9 65 C0 F0 0C FD 7F C6 FD 7F C6 FD 7F + .byte $C6, $03, $20, $03, $22, $03, $24, $07, $1B, $03, $22, $07, $24, $FB, $F9, $66 ; CPU:$C644 PRG:4644 C6 03 20 03 22 03 24 07 1B 03 22 07 24 FB F9 66 + .byte $FD, $90, $C6, $FD, $90, $C6, $FD, $90, $C6, $03, $20, $03, $20, $03, $24, $03 ; CPU:$C654 PRG:4654 FD 90 C6 FD 90 C6 FD 90 C6 03 20 03 20 03 24 03 + .byte $27, $43, $03, $20, $01, $24, $01, $24, $03, $29, $F9, $7D, $FA, $00, $FD, $A2 ; CPU:$C664 PRG:4664 27 43 03 20 01 24 01 24 03 29 F9 7D FA 00 FD A2 + .byte $C6, $FD, $A2, $C6, $FD, $A2, $C6, $03, $19, $5B, $FE, $03, $20, $03, $20, $03 ; CPU:$C674 PRG:4674 C6 FD A2 C6 FD A2 C6 03 19 5B FE 03 20 03 20 03 + .byte $24, $03, $27, $03, $20, $03, $20, $03, $24, $03, $27, $FF, $03, $20, $03, $20 ; CPU:$C684 PRG:4684 24 03 27 03 20 03 20 03 24 03 27 FF 03 20 03 20 + .byte $03, $24, $03, $27, $43, $03, $20, $01, $24, $01, $24, $03, $27, $FF, $03, $19 ; CPU:$C694 PRG:4694 03 24 03 27 43 03 20 01 24 01 24 03 27 FF 03 19 + .byte $03, $29, $03, $19, $03, $29, $01, $19, $01, $19, $03, $29, $03, $19, $03, $29 ; CPU:$C6A4 PRG:46A4 03 29 03 19 03 29 01 19 01 19 03 29 03 19 03 29 + .byte $FF, $F8, $02, $F9, $B4, $F2, $94, $C0, $4F, $4F, $4F, $FB, $01, $47, $01, $49 ; CPU:$C6B4 PRG:46B4 FF F8 02 F9 B4 F2 94 C0 4F 4F 4F FB 01 47 01 49 + .byte $03, $4B, $01, $49, $01, $4B, $03, $50, $01, $4B, $01, $50, $03, $52, $01, $50 ; CPU:$C6C4 PRG:46C4 03 4B 01 49 01 4B 03 50 01 4B 01 50 03 52 01 50 + .byte $01, $52, $03, $54, $01, $57, $01, $54, $01, $50, $01, $52, $41, $01, $54, $01 ; CPU:$C6D4 PRG:46D4 01 52 03 54 01 57 01 54 01 50 01 52 41 01 54 01 + .byte $59, $41, $0F, $59, $01, $57, $01, $55, $03, $57, $03, $54, $03, $57, $03, $52 ; CPU:$C6E4 PRG:46E4 59 41 0F 59 01 57 01 55 03 57 03 54 03 57 03 52 + .byte $03, $50, $03, $52, $03, $54, $01, $57, $01, $54, $03, $50, $03, $52, $03, $54 ; CPU:$C6F4 PRG:46F4 03 50 03 52 03 54 01 57 01 54 03 50 03 52 03 54 + .byte $03, $59, $03, $57, $03, $55, $03, $59, $FE, $F8, $02, $F9, $B4, $F2, $A4, $C0 ; CPU:$C704 PRG:4704 03 59 03 57 03 55 03 59 FE F8 02 F9 B4 F2 A4 C0 + .byte $4F, $4F, $4F, $FB, $01, $34, $01, $35, $03, $37, $01, $35, $01, $37, $03, $39 ; CPU:$C714 PRG:4714 4F 4F 4F FB 01 34 01 35 03 37 01 35 01 37 03 39 + .byte $01, $37, $01, $39, $03, $3B, $01, $39, $01, $3B, $03, $40, $01, $44, $01, $40 ; CPU:$C724 PRG:4724 01 37 01 39 03 3B 01 39 01 3B 03 40 01 44 01 40 + .byte $01, $39, $01, $3B, $41, $01, $40, $01, $45, $41, $0F, $45, $01, $47, $01, $45 ; CPU:$C734 PRG:4734 01 39 01 3B 41 01 40 01 45 41 0F 45 01 47 01 45 + .byte $03, $47, $03, $44, $03, $47, $03, $42, $03, $40, $03, $42, $03, $44, $01, $44 ; CPU:$C744 PRG:4744 03 47 03 44 03 47 03 42 03 40 03 42 03 44 01 44 + .byte $01, $40, $03, $39, $03, $3B, $03, $40, $03, $45, $03, $44, $03, $42, $03, $45 ; CPU:$C754 PRG:4754 01 40 03 39 03 3B 03 40 03 45 03 44 03 42 03 45 + .byte $FE, $F8, $02, $F9, $32, $C0, $4F, $4F, $4F, $FB, $07, $37, $07, $39, $07, $3B ; CPU:$C764 PRG:4764 FE F8 02 F9 32 C0 4F 4F 4F FB 07 37 07 39 07 3B + .byte $07, $40, $03, $44, $07, $39, $01, $3B, $01, $40, $0F, $45, $03, $37, $03, $3B ; CPU:$C774 PRG:4774 07 40 03 44 07 39 01 3B 01 40 0F 45 03 37 03 3B + .byte $03, $39, $03, $40, $03, $3B, $03, $42, $03, $40, $03, $44, $03, $42, $03, $45 ; CPU:$C784 PRG:4784 03 39 03 40 03 3B 03 42 03 40 03 44 03 42 03 45 + .byte $03, $44, $03, $47, $03, $49, $03, $47, $03, $49, $43, $FE, $F8, $00, $F9, $77 ; CPU:$C794 PRG:4794 03 44 03 47 03 49 03 47 03 49 43 FE F8 00 F9 77 + .byte $F2, $74, $C0, $4F, $4F, $4F, $FB, $07, $44, $07, $42, $07, $3B, $0F, $42, $07 ; CPU:$C7A4 PRG:47A4 F2 74 C0 4F 4F 4F FB 07 44 07 42 07 3B 0F 42 07 + .byte $44, $57, $07, $44, $07, $42, $07, $3B, $0F, $42, $07, $44, $4F, $37, $47, $07 ; CPU:$C7B4 PRG:47B4 44 57 07 44 07 42 07 3B 0F 42 07 44 4F 37 47 07 + .byte $46, $07, $44, $07, $41, $0F, $44, $07, $46, $57, $07, $46, $07, $44, $07, $41 ; CPU:$C7C4 PRG:47C4 46 07 44 07 41 0F 44 07 46 57 07 46 07 44 07 41 + .byte $0F, $44, $07, $46, $4F, $37, $49, $FE, $F8, $00, $F9, $B4, $F2, $A4, $C0, $4F ; CPU:$C7D4 PRG:47D4 0F 44 07 46 4F 37 49 FE F8 00 F9 B4 F2 A4 C0 4F + .byte $4F, $4F, $FB, $17, $54, $17, $52, $17, $4B, $17, $52, $17, $54, $0F, $52, $37 ; CPU:$C7E4 PRG:47E4 4F 4F FB 17 54 17 52 17 4B 17 52 17 54 0F 52 37 + .byte $54, $17, $56, $17, $54, $17, $51, $17, $54, $17, $56, $0F, $54, $37, $56, $FE ; CPU:$C7F4 PRG:47F4 54 17 56 17 54 17 51 17 54 17 56 0F 54 37 56 FE + .byte $F8, $00, $F9, $2A, $C0, $4F, $4F, $4F, $FB, $FD, $20, $C8, $FD, $31, $C8, $F0 ; CPU:$C804 PRG:4804 F8 00 F9 2A C0 4F 4F 4F FB FD 20 C8 FD 31 C8 F0 + .byte $02, $FD, $20, $C8, $F1, $F0, $02, $FD, $31, $C8, $F1, $FE, $0F, $34, $07, $34 ; CPU:$C814 PRG:4814 02 FD 20 C8 F1 F0 02 FD 31 C8 F1 FE 0F 34 07 34 + .byte $0F, $34, $07, $34, $0F, $34, $07, $34, $0F, $34, $07, $34, $FF, $17, $37, $0F ; CPU:$C824 PRG:4824 0F 34 07 34 0F 34 07 34 0F 34 07 34 FF 17 37 0F + .byte $34, $07, $34, $0F, $34, $07, $34, $0F, $34, $07, $34, $FF, $F8, $03, $F9, $B7 ; CPU:$C834 PRG:4834 34 07 34 0F 34 07 34 0F 34 07 34 FF F8 03 F9 B7 + .byte $F2, $94, $C0, $4F, $4F, $4F, $FB, $F0, $0C, $FD, $67, $C8, $03, $47, $43, $F1 ; CPU:$C844 PRG:4844 F2 94 C0 4F 4F 4F FB F0 0C FD 67 C8 03 47 43 F1 + .byte $FE, $F8, $03, $F9, $73, $F2, $34, $C0, $4F, $4F, $4F, $FB, $FD, $67, $C8, $03 ; CPU:$C854 PRG:4854 FE F8 03 F9 73 F2 34 C0 4F 4F 4F FB FD 67 C8 03 + .byte $52, $43, $FE, $FD, $9D, $C8, $03, $44, $03, $42, $43, $FD, $9D, $C8, $03, $40 ; CPU:$C864 PRG:4864 52 43 FE FD 9D C8 03 44 03 42 43 FD 9D C8 03 40 + .byte $03, $50, $43, $01, $42, $01, $3B, $01, $40, $01, $41, $03, $42, $01, $3B, $01 ; CPU:$C874 PRG:4874 03 50 43 01 42 01 3B 01 40 01 41 03 42 01 3B 01 + .byte $42, $41, $01, $42, $41, $01, $3B, $01, $44, $05, $43, $01, $42, $01, $42, $03 ; CPU:$C884 PRG:4884 42 41 01 42 41 01 3B 01 44 05 43 01 42 01 42 03 + .byte $3B, $03, $40, $03, $42, $03, $44, $43, $FF, $03, $32, $03, $42, $03, $2B, $01 ; CPU:$C894 PRG:4894 3B 03 40 03 42 03 44 43 FF 03 32 03 42 03 2B 01 + .byte $3B, $03, $30, $01, $30, $03, $40, $03, $29, $41, $01, $32, $81, $01, $32, $03 ; CPU:$C8A4 PRG:48A4 3B 03 30 01 30 03 40 03 29 41 01 32 81 01 32 03 + .byte $42, $03, $2B, $03, $3B, $03, $30, $FF, $F8, $03, $F9, $25, $C0, $4F, $4F, $4F ; CPU:$C8B4 PRG:48B4 42 03 2B 03 3B 03 30 FF F8 03 F9 25 C0 4F 4F 4F + .byte $FB, $03, $32, $43, $03, $37, $41, $03, $30, $01, $30, $03, $30, $03, $34, $43 ; CPU:$C8C4 PRG:48C4 FB 03 32 43 03 37 41 03 30 01 30 03 30 03 34 43 + .byte $03, $32, $43, $03, $37, $43, $03, $30, $03, $34, $03, $32, $43, $FE, $F8, $02 ; CPU:$C8D4 PRG:48D4 03 32 43 03 37 43 03 30 03 34 03 32 43 FE F8 02 + .byte $F9, $B8, $F2, $84, $C0, $4F, $4F, $4F, $FB, $07, $52, $05, $4B, $01, $50, $03 ; CPU:$C8E4 PRG:48E4 F9 B8 F2 84 C0 4F 4F 4F FB 07 52 05 4B 01 50 03 + .byte $52, $03, $4B, $03, $50, $03, $52, $07, $54, $05, $50, $01, $52, $03, $54, $03 ; CPU:$C8F4 PRG:48F4 52 03 4B 03 50 03 52 07 54 05 50 01 52 03 54 03 + .byte $52, $03, $50, $03, $4B, $07, $56, $05, $52, $01, $54, $03, $56, $03, $52, $03 ; CPU:$C904 PRG:4904 52 03 50 03 4B 07 56 05 52 01 54 03 56 03 52 03 + .byte $54, $03, $56, $03, $57, $03, $57, $03, $56, $03, $54, $03, $52, $03, $50, $03 ; CPU:$C914 PRG:4914 54 03 56 03 57 03 57 03 56 03 54 03 52 03 50 03 + .byte $4B, $03, $49, $FE, $F8, $02, $F9, $B4, $F2, $94, $C0, $4F, $4F, $4F, $FB, $07 ; CPU:$C924 PRG:4924 4B 03 49 FE F8 02 F9 B4 F2 94 C0 4F 4F 4F FB 07 + .byte $3B, $05, $37, $01, $39, $03, $3B, $03, $37, $03, $39, $03, $3B, $07, $40, $05 ; CPU:$C934 PRG:4934 3B 05 37 01 39 03 3B 03 37 03 39 03 3B 07 40 05 + .byte $39, $01, $3B, $03, $40, $03, $3B, $03, $39, $03, $37, $07, $42, $05, $3B, $01 ; CPU:$C944 PRG:4944 39 01 3B 03 40 03 3B 03 39 03 37 07 42 05 3B 01 + .byte $40, $03, $42, $03, $3B, $03, $40, $03, $42, $03, $44, $03, $44, $03, $42, $03 ; CPU:$C954 PRG:4954 40 03 42 03 3B 03 40 03 42 03 44 03 44 03 42 03 + .byte $40, $03, $3B, $03, $39, $03, $37, $03, $36, $FE, $F8, $02, $F9, $4A, $C0, $4F ; CPU:$C964 PRG:4964 40 03 3B 03 39 03 37 03 36 FE F8 02 F9 4A C0 4F + .byte $4F, $4F, $FB, $07, $27, $07, $2B, $07, $32, $03, $2B, $03, $27, $FD, $97, $C9 ; CPU:$C974 PRG:4974 4F 4F FB 07 27 07 2B 07 32 03 2B 03 27 FD 97 C9 + .byte $F0, $02, $FD, $97, $C9, $F1, $07, $30, $07, $34, $03, $37, $03, $34, $03, $30 ; CPU:$C984 PRG:4984 F0 02 FD 97 C9 F1 07 30 07 34 03 37 03 34 03 30 + .byte $03, $29, $FE, $07, $29, $07, $30, $07, $34, $03, $30, $03, $29, $FF, $F8, $00 ; CPU:$C994 PRG:4994 03 29 FE 07 29 07 30 07 34 03 30 03 29 FF F8 00 + .byte $F9, $B6, $F2, $D4, $C0, $F0, $07, $FD, $52, $CA, $FD, $63, $CA, $F1, $F0, $0C ; CPU:$C9A4 PRG:49A4 F9 B6 F2 D4 C0 F0 07 FD 52 CA FD 63 CA F1 F0 0C + .byte $FD, $72, $CA, $4D, $77, $1B, $35, $FD, $72, $CA, $4D, $77, $1B, $35, $FD, $8F ; CPU:$C9B4 PRG:49B4 FD 72 CA 4D 77 1B 35 FD 72 CA 4D 77 1B 35 FD 8F + .byte $CA, $FE, $F8, $00, $F9, $B6, $F2, $D4, $C0, $06, $44, $06, $44, $06, $44, $06 ; CPU:$C9C4 PRG:49C4 CA FE F8 00 F9 B6 F2 D4 C0 06 44 06 44 06 44 06 + .byte $44, $0D, $44, $0D, $47, $1B, $45, $1B, $44, $06, $44, $06, $44, $06, $44, $06 ; CPU:$C9D4 PRG:49D4 44 0D 44 0D 47 1B 45 1B 44 06 44 06 44 06 44 06 + .byte $44, $0D, $44, $0D, $47, $37, $45, $FD, $07, $CA, $FD, $07, $CA, $1B, $37, $1B ; CPU:$C9E4 PRG:49E4 44 0D 44 0D 47 37 45 FD 07 CA FD 07 CA 1B 37 1B + .byte $3B, $1B, $42, $0D, $44, $1B, $39, $0D, $39, $1B, $40, $1B, $44, $1B, $46, $37 ; CPU:$C9F4 PRG:49F4 3B 1B 42 0D 44 1B 39 0D 39 1B 40 1B 44 1B 46 37 + .byte $47, $B7, $FE, $06, $34, $06, $35, $06, $37, $06, $39, $4D, $06, $35, $06, $37 ; CPU:$CA04 PRG:4A04 47 B7 FE 06 34 06 35 06 37 06 39 4D 06 35 06 37 + .byte $06, $39, $06, $3B, $4D, $06, $37, $06, $39, $06, $3B, $06, $40, $0D, $42, $4D ; CPU:$CA14 PRG:4A14 06 39 06 3B 4D 06 37 06 39 06 3B 06 40 0D 42 4D + .byte $77, $1B, $42, $FF, $F8, $00, $F9, $18, $C0, $FD, $52, $CA, $FD, $63, $CA, $F0 ; CPU:$CA24 PRG:4A24 77 1B 42 FF F8 00 F9 18 C0 FD 52 CA FD 63 CA F0 + .byte $0C, $FD, $72, $CA, $14, $15, $14, $15, $1B, $15, $1B, $35, $FD, $72, $CA, $14 ; CPU:$CA34 PRG:4A34 0C FD 72 CA 14 15 14 15 1B 15 1B 35 FD 72 CA 14 + .byte $15, $14, $15, $1B, $15, $1B, $35, $F1, $F9, $68, $FD, $8F, $CA, $FE, $06, $40 ; CPU:$CA44 PRG:4A44 15 14 15 1B 15 1B 35 F1 F9 68 FD 8F CA FE 06 40 + .byte $06, $40, $06, $40, $06, $40, $0D, $40, $0D, $44, $1B, $42, $1B, $40, $FF, $06 ; CPU:$CA54 PRG:4A54 06 40 06 40 06 40 0D 40 0D 44 1B 42 1B 40 FF 06 + .byte $40, $06, $40, $06, $40, $06, $40, $0D, $40, $0D, $44, $37, $42, $FF, $06, $27 ; CPU:$CA64 PRG:4A64 40 06 40 06 40 06 40 0D 40 0D 44 37 42 FF 06 27 + .byte $06, $29, $06, $2B, $06, $30, $4D, $06, $29, $06, $2B, $06, $30, $06, $32, $4D ; CPU:$CA74 PRG:4A74 06 29 06 2B 06 30 4D 06 29 06 2B 06 30 06 32 4D + .byte $06, $2B, $06, $30, $06, $32, $06, $34, $0D, $35, $FF, $1B, $30, $1B, $34, $1B ; CPU:$CA84 PRG:4A84 06 2B 06 30 06 32 06 34 0D 35 FF 1B 30 1B 34 1B + .byte $37, $0D, $39, $1B, $32, $0D, $32, $1B, $35, $1B, $39, $1B, $3B, $37, $40, $B7 ; CPU:$CA94 PRG:4A94 37 0D 39 1B 32 0D 32 1B 35 1B 39 1B 3B 37 40 B7 + .byte $FF, $F8, $00, $F9, $B8, $C0, $FD, $BE, $CA, $F2, $94, $F0, $0C, $FD, $5F, $CB ; CPU:$CAA4 PRG:4AA4 FF F8 00 F9 B8 C0 FD BE CA F2 94 F0 0C FD 5F CB + .byte $FD, $5F, $CB, $FC, $AD, $CA, $FC, $AD, $CA, $FE, $37, $37, $29, $34, $0D, $35 ; CPU:$CAB4 PRG:4AB4 FD 5F CB FC AD CA FC AD CA FE 37 37 29 34 0D 35 + .byte $37, $37, $37, $30, $0D, $32, $0D, $34, $0D, $35, $0D, $37, $1B, $35, $1B, $34 ; CPU:$CAC4 PRG:4AC4 37 37 37 30 0D 32 0D 34 0D 35 0D 37 1B 35 1B 34 + .byte $F3, $37, $32, $B7, $FF, $F8, $00, $F9, $B4, $C0, $37, $34, $29, $30, $0D, $32 ; CPU:$CAD4 PRG:4AD4 F3 37 32 B7 FF F8 00 F9 B4 C0 37 34 29 30 0D 32 + .byte $37, $34, $37, $27, $0D, $2B, $0D, $30, $0D, $32, $0D, $34, $1B, $32, $1B, $30 ; CPU:$CAE4 PRG:4AE4 37 34 37 27 0D 2B 0D 30 0D 32 0D 34 1B 32 1B 30 + .byte $F3, $37, $2B, $B7, $F2, $94, $FD, $07, $CB, $FD, $07, $CB, $FC, $F8, $CA, $FC ; CPU:$CAF4 PRG:4AF4 F3 37 2B B7 F2 94 FD 07 CB FD 07 CB FC F8 CA FC + .byte $F8, $CA, $FE, $0D, $34, $0D, $30, $0D, $37, $0D, $34, $0D, $35, $0D, $32, $0D ; CPU:$CB04 PRG:4B04 F8 CA FE 0D 34 0D 30 0D 37 0D 34 0D 35 0D 32 0D + .byte $34, $0D, $30, $0D, $32, $0D, $2B, $0D, $35, $0D, $32, $0D, $34, $0D, $30, $0D ; CPU:$CB14 PRG:4B14 34 0D 30 0D 32 0D 2B 0D 35 0D 32 0D 34 0D 30 0D + .byte $32, $0D, $2B, $0D, $30, $0D, $29, $0D, $34, $0D, $30, $0D, $32, $0D, $2B, $0D ; CPU:$CB24 PRG:4B24 32 0D 2B 0D 30 0D 29 0D 34 0D 30 0D 32 0D 2B 0D + .byte $30, $0D, $29, $0D, $2B, $0D, $27, $0D, $32, $0D, $2B, $0D, $30, $0D, $29, $0D ; CPU:$CB34 PRG:4B34 30 0D 29 0D 2B 0D 27 0D 32 0D 2B 0D 30 0D 29 0D + .byte $2B, $0D, $30, $FF, $F8, $00, $F9, $8A, $C0, $FD, $BE, $CA, $F9, $38, $FD, $5F ; CPU:$CB44 PRG:4B44 2B 0D 30 FF F8 00 F9 8A C0 FD BE CA F9 38 FD 5F + .byte $CB, $FD, $5F, $CB, $FC, $50, $CB, $FC, $50, $CB, $FE, $06, $34, $06, $32, $06 ; CPU:$CB54 PRG:4B54 CB FD 5F CB FC 50 CB FC 50 CB FE 06 34 06 32 06 + .byte $34, $06, $35, $0D, $34, $0D, $34, $0D, $32, $04, $32, $04, $34, $03, $32, $1B ; CPU:$CB64 PRG:4B64 34 06 35 0D 34 0D 34 0D 32 04 32 04 34 03 32 1B + .byte $30, $0D, $35, $0D, $34, $0D, $32, $0D, $30, $37, $32, $06, $34, $06, $35, $06 ; CPU:$CB74 PRG:4B74 30 0D 35 0D 34 0D 32 0D 30 37 32 06 34 06 35 06 + .byte $37, $06, $39, $0D, $37, $0D, $37, $1B, $40, $1B, $37, $0D, $35, $0D, $34, $14 ; CPU:$CB84 PRG:4B84 37 06 39 0D 37 0D 37 1B 40 1B 37 0D 35 0D 34 14 + .byte $32, $06, $30, $37, $30, $FF, $F8, $02, $F9, $B8, $F2, $94, $C0, $01, $40, $01 ; CPU:$CB94 PRG:4B94 32 06 30 37 30 FF F8 02 F9 B8 F2 94 C0 01 40 01 + .byte $44, $01, $45, $01, $46, $01, $47, $41, $01, $42, $01, $45, $01, $47, $01, $48 ; CPU:$CBA4 PRG:4BA4 44 01 45 01 46 01 47 41 01 42 01 45 01 47 01 48 + .byte $01, $49, $41, $01, $44, $01, $47, $01, $49, $01, $4A, $01, $4B, $41, $03, $4B ; CPU:$CBB4 PRG:4BB4 01 49 41 01 44 01 47 01 49 01 4A 01 4B 41 03 4B + .byte $41, $01, $B5, $43, $17, $50, $FF, $F8, $02, $F9, $B8, $F2, $94, $C0, $01, $44 ; CPU:$CBC4 PRG:4BC4 41 01 B5 43 17 50 FF F8 02 F9 B8 F2 94 C0 01 44 + .byte $01, $47, $01, $49, $01, $4A, $01, $4B, $41, $01, $45, $01, $49, $01, $4B, $01 ; CPU:$CBD4 PRG:4BD4 01 47 01 49 01 4A 01 4B 41 01 45 01 49 01 4B 01 + .byte $50, $01, $51, $41, $01, $47, $01, $4B, $01, $51, $01, $52, $01, $53, $41, $03 ; CPU:$CBE4 PRG:4BE4 50 01 51 41 01 47 01 4B 01 51 01 52 01 53 41 03 + .byte $53, $41, $01, $53, $43, $17, $54, $FF, $F8, $02, $F9, $5F, $C0, $01, $37, $01 ; CPU:$CBF4 PRG:4BF4 53 41 01 53 43 17 54 FF F8 02 F9 5F C0 01 37 01 + .byte $3B, $01, $40, $01, $41, $01, $42, $41, $01, $39, $01, $40, $01, $42, $01, $43 ; CPU:$CC04 PRG:4C04 3B 01 40 01 41 01 42 41 01 39 01 40 01 42 01 43 + .byte $01, $44, $41, $01, $3B, $01, $42, $01, $44, $01, $45, $01, $46, $41, $03, $46 ; CPU:$CC14 PRG:4C14 01 44 41 01 3B 01 42 01 44 01 45 01 46 41 03 46 + .byte $41, $01, $46, $43, $17, $47, $FF, $FF, $FF, $FF, $F8, $00, $C0, $F9, $3F, $F2 ; CPU:$CC24 PRG:4C24 41 01 46 43 17 47 FF FF FF FF F8 00 C0 F9 3F F2 + .byte $00, $F4, $03, $0F, $50, $FF, $F8, $00, $F9, $9E, $C0, $F4, $C0, $01, $31, $FF ; CPU:$CC34 PRG:4C34 00 F4 03 0F 50 FF F8 00 F9 9E C0 F4 C0 01 31 FF + .byte $F8, $00, $F9, $3F, $C0, $FA, $0B, $F4, $C0, $01, $20, $FF, $F8, $00, $F9, $0D ; CPU:$CC44 PRG:4C44 F8 00 F9 3F C0 FA 0B F4 C0 01 20 FF F8 00 F9 0D + .byte $C0, $FA, $0B, $F4, $F0, $F2, $C4, $F6, $00, $0F, $40, $FF, $F8, $00, $C0, $F9 ; CPU:$CC54 PRG:4C54 C0 FA 0B F4 F0 F2 C4 F6 00 0F 40 FF F8 00 C0 F9 + .byte $B0, $FF, $F8, $00, $C0, $F9, $BB, $00, $20, $00, $21, $00, $22, $00, $23, $00 ; CPU:$CC64 PRG:4C64 B0 FF F8 00 C0 F9 BB 00 20 00 21 00 22 00 23 00 + .byte $24, $00, $25, $00, $26, $00, $27, $F9, $FF, $40, $00, $24, $00, $25, $00, $26 ; CPU:$CC74 PRG:4C74 24 00 25 00 26 00 27 F9 FF 40 00 24 00 25 00 26 + .byte $00, $27, $00, $26, $00, $25, $00, $24, $00, $23, $00, $22, $00, $21, $00, $20 ; CPU:$CC84 PRG:4C84 00 27 00 26 00 25 00 24 00 23 00 22 00 21 00 20 + .byte $00, $1B, $00, $2A, $FF, $FF, $F8, $00, $C0, $F9, $3F, $F2, $00, $F4, $03, $10 ; CPU:$CC94 PRG:4C94 00 1B 00 2A FF FF F8 00 C0 F9 3F F2 00 F4 03 10 + .byte $59, $2F, $59, $FF, $F8, $00, $C0, $F9, $3F, $F4, $70, $F2, $02, $0F, $45, $FF ; CPU:$CCA4 PRG:4CA4 59 2F 59 FF F8 00 C0 F9 3F F4 70 F2 02 0F 45 FF + .byte $F8, $00, $F9, $0F, $C0, $FA, $03, $F4, $18, $F2, $C0, $1F, $60, $FF, $F8, $00 ; CPU:$CCB4 PRG:4CB4 F8 00 F9 0F C0 FA 03 F4 18 F2 C0 1F 60 FF F8 00 + .byte $C0, $F9, $3F, $1A, $32, $FF, $F8, $04, $F9, $0F, $C0, $FA, $0B, $F6, $00, $0B ; CPU:$CCC4 PRG:4CC4 C0 F9 3F 1A 32 FF F8 04 F9 0F C0 FA 0B F6 00 0B + .byte $60, $FF, $F8, $00, $C0, $F9, $BF, $F2, $61, $01, $34, $01, $2B, $01, $33, $01 ; CPU:$CCD4 PRG:4CD4 60 FF F8 00 C0 F9 BF F2 61 01 34 01 2B 01 33 01 + .byte $2A, $01, $32, $01, $29, $01, $31, $01, $28, $01, $30, $01, $27, $01, $2B, $01 ; CPU:$CCE4 PRG:4CE4 2A 01 32 01 29 01 31 01 28 01 30 01 27 01 2B 01 + .byte $26, $01, $2A, $01, $25, $01, $29, $01, $24, $01, $28, $01, $23, $01, $27, $01 ; CPU:$CCF4 PRG:4CF4 26 01 2A 01 25 01 29 01 24 01 28 01 23 01 27 01 + .byte $22, $01, $26, $01, $21, $01, $25, $01, $20, $FF, $F8, $00, $F9, $0D, $C0, $FA ; CPU:$CD04 PRG:4D04 22 01 26 01 21 01 25 01 20 FF F8 00 F9 0D C0 FA + .byte $0B, $F4, $A0, $F2, $C4, $F6, $00, $3F, $40, $FF, $F8, $00, $C0, $F9, $3F, $18 ; CPU:$CD14 PRG:4D14 0B F4 A0 F2 C4 F6 00 3F 40 FF F8 00 C0 F9 3F 18 + .byte $35, $FF, $F8, $00, $F9, $32, $01, $0F, $00, $F9, $34, $01, $0F, $00, $F9, $36 ; CPU:$CD24 PRG:4D24 35 FF F8 00 F9 32 01 0F 00 F9 34 01 0F 00 F9 36 + .byte $01, $0F, $00, $F9, $38, $01, $0E, $00, $F9, $3A, $01, $0E, $00, $F9, $3C, $01 ; CPU:$CD34 PRG:4D34 01 0F 00 F9 38 01 0E 00 F9 3A 01 0E 00 F9 3C 01 + .byte $0E, $00, $F9, $3E, $3F, $0D, $00, $9F, $F9, $3C, $0F, $0D, $00, $F9, $3A, $0F ; CPU:$CD44 PRG:4D44 0E 00 F9 3E 3F 0D 00 9F F9 3C 0F 0D 00 F9 3A 0F + .byte $0D, $00, $F9, $38, $0F, $0D, $00, $F9, $36, $07, $0D, $00, $F9, $34, $07, $0C ; CPU:$CD54 PRG:4D54 0D 00 F9 38 0F 0D 00 F9 36 07 0D 00 F9 34 07 0C + .byte $00, $F9, $32, $03, $0B, $00, $FF, $F8, $00, $C0, $F9, $B1, $F4, $00, $64, $1F ; CPU:$CD64 PRG:4D64 00 F9 32 03 0B 00 FF F8 00 C0 F9 B1 F4 00 64 1F + .byte $86, $47, $FF, $F8, $00, $C0, $F9, $B1, $F4, $00, $57, $2F, $84, $47, $F9, $B1 ; CPU:$CD74 PRG:4D74 86 47 FF F8 00 C0 F9 B1 F4 00 57 2F 84 47 F9 B1 + .byte $2F, $88, $FF, $FD, $2E, $CC, $FD, $2E, $CC, $FF, $FD, $3A, $CC, $4D, $FD, $3A ; CPU:$CD84 PRG:4D84 2F 88 FF FD 2E CC FD 2E CC FF FD 3A CC 4D FD 3A + .byte $CC, $FF, $FD, $44, $CC, $4D, $FD, $44, $CC, $FF, $AE, $06, $4E, $06, $F3, $05 ; CPU:$CD94 PRG:4D94 CC FF FD 44 CC 4D FD 44 CC FF AE 06 4E 06 F3 05 + .byte $9E, $05, $4D, $05, $01, $05, $B9, $04, $75, $04, $35, $04, $F8, $03, $BF, $03 ; CPU:$CDA4 PRG:4DA4 9E 05 4D 05 01 05 B9 04 75 04 35 04 F8 03 BF 03 + .byte $89, $03, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE ; CPU:$CDB4 PRG:4DB4 89 03 FE FE FE FE FE FE FE FE FE FE FE FE FE FE + .byte $FE, $0E, $FD, $FD, $FD, $FD, $03, $03, $03, $03, $02, $02, $02, $02, $02, $02 ; CPU:$CDC4 PRG:4DC4 FE 0E FD FD FD FD 03 03 03 03 02 02 02 02 02 02 + .byte $02, $FE, $02, $02, $02, $02, $02, $02, $02, $00, $03, $03, $03, $03, $FD, $FD ; CPU:$CDD4 PRG:4DD4 02 FE 02 02 02 02 02 02 02 00 03 03 03 03 FD FD + .byte $FD, $FD, $F8, $03, $FF, $FF, $00, $FF, $00, $FF, $FA, $03, $FE, $00, $00, $FF ; CPU:$CDE4 PRG:4DE4 FD FD F8 03 FF FF 00 FF 00 FF FA 03 FE 00 00 FF + .byte $FF, $00, $FC, $01, $00, $FF, $00, $FF, $FF, $00, $FE, $FE, $00, $00, $FF, $FF ; CPU:$CDF4 PRG:4DF4 FF 00 FC 01 00 FF 00 FF FF 00 FE FE 00 00 FF FF + .byte $FF, $00, $01, $FF, $FF, $00, $00, $00, $FE, $00, $02, $FE, $FF, $00, $00, $FF ; CPU:$CE04 PRG:4E04 FF 00 01 FF FF 00 00 00 FE 00 02 FE FF 00 00 FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FD, $FD, $FD, $00, $00, $00 ; CPU:$CE14 PRG:4E14 FF FF FF FF FF FF FF FF FF FF FD FD FD 00 00 00 + .byte $00, $FF, $FB, $02, $FF, $FF, $FF, $FF, $FE, $00, $FB, $FB, $05, $FB, $04, $FC ; CPU:$CE24 PRG:4E24 00 FF FB 02 FF FF FF FF FE 00 FB FB 05 FB 04 FC + .byte $03, $FD, $90, $01, $90, $01, $90, $01, $90, $01, $90, $01, $90, $01, $90, $01 ; CPU:$CE34 PRG:4E34 03 FD 90 01 90 01 90 01 90 01 90 01 90 01 90 01 + .byte $90, $01, $C0, $01, $C0, $01, $C0, $01, $C0, $01, $C0, $01, $C0, $01, $C0, $01 ; CPU:$CE44 PRG:4E44 90 01 C0 01 C0 01 C0 01 C0 01 C0 01 C0 01 C0 01 + .byte $C0, $01, $11, $01, $11, $01, $11, $01, $11, $01, $11, $01, $11, $01, $11, $01 ; CPU:$CE54 PRG:4E54 C0 01 11 01 11 01 11 01 11 01 11 01 11 01 11 01 + .byte $11, $01, $40, $01, $40, $01, $40, $01, $40, $01, $40, $01, $40, $01, $40, $01 ; CPU:$CE64 PRG:4E64 11 01 40 01 40 01 40 01 40 01 40 01 40 01 40 01 + .byte $40, $01, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11 ; CPU:$CE74 PRG:4E74 40 01 11 11 11 11 11 11 11 11 11 11 11 11 11 11 + .byte $11, $11, $40, $11, $40, $11, $40, $11, $40, $11, $40, $11, $40, $11, $40, $11 ; CPU:$CE84 PRG:4E84 11 11 40 11 40 11 40 11 40 11 40 11 40 11 40 11 + .byte $40, $11, $91, $11, $91, $11, $91, $11, $91, $11, $91, $11, $91, $11, $91, $11 ; CPU:$CE94 PRG:4E94 40 11 91 11 91 11 91 11 91 11 91 11 91 11 91 11 + .byte $91, $11, $C0, $11, $C0, $11, $C0, $11, $C0, $11, $C0, $11, $C0, $11, $C0, $11 ; CPU:$CEA4 PRG:4EA4 91 11 C0 11 C0 11 C0 11 C0 11 C0 11 C0 11 C0 11 + .byte $C0, $11, $9F, $01, $97, $01, $93, $01, $91, $01, $90, $01, $91, $01, $93, $01 ; CPU:$CEB4 PRG:4EB4 C0 11 9F 01 97 01 93 01 91 01 90 01 91 01 93 01 + .byte $97, $01, $CF, $01, $C7, $01, $C3, $01, $C1, $01, $C0, $01, $C1, $01, $C3, $01 ; CPU:$CEC4 PRG:4EC4 97 01 CF 01 C7 01 C3 01 C1 01 C0 01 C1 01 C3 01 + .byte $C7, $01, $1F, $01, $17, $01, $13, $01, $11, $01, $10, $01, $11, $01, $13, $01 ; CPU:$CED4 PRG:4ED4 C7 01 1F 01 17 01 13 01 11 01 10 01 11 01 13 01 + .byte $17, $01, $4F, $01, $47, $01, $43, $01, $41, $01, $40, $01, $41, $01, $43, $01 ; CPU:$CEE4 PRG:4EE4 17 01 4F 01 47 01 43 01 41 01 40 01 41 01 43 01 + .byte $47, $01, $0F, $01, $02, $01, $97, $03, $93, $07, $91, $0F, $90, $0F, $90, $0F ; CPU:$CEF4 PRG:4EF4 47 01 0F 01 02 01 97 03 93 07 91 0F 90 0F 90 0F + .byte $90, $0F, $CF, $01, $C7, $03, $C3, $07, $C1, $0F, $C0, $0F, $C0, $0F, $C0, $0F ; CPU:$CF04 PRG:4F04 90 0F CF 01 C7 03 C3 07 C1 0F C0 0F C0 0F C0 0F + .byte $C0, $0F, $0F, $01, $4F, $01, $47, $03, $43, $07, $41, $0F, $40, $0F, $40, $0F ; CPU:$CF14 PRG:4F14 C0 0F 0F 01 4F 01 47 03 43 07 41 0F 40 0F 40 0F + .byte $40, $0F, $4F, $01, $47, $03, $43, $07, $41, $0F, $40, $0F, $40, $0F, $40, $0F ; CPU:$CF24 PRG:4F24 40 0F 4F 01 47 03 43 07 41 0F 40 0F 40 0F 40 0F + .byte $40, $0F ; CPU:$CF34 PRG:4F34 40 0F +; ----------------------------------------------------------------------------- +; Routine: Sub_CF36 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_CF36: + txa ; CPU:$CF36 PRG:4F36 8A + pha ; CPU:$CF37 PRG:4F37 48 + tya ; CPU:$CF38 PRG:4F38 98 + pha ; CPU:$CF39 PRG:4F39 48 + lda #$01 ; CPU:$CF3A PRG:4F3A A9 01 + sta JOY1 ; CPU:$CF3C PRG:4F3C 8D 16 40 + lda #$00 ; CPU:$CF3F PRG:4F3F A9 00 + sta JOY1 ; CPU:$CF41 PRG:4F41 8D 16 40 + ldx #$00 ; CPU:$CF44 PRG:4F44 A2 00 + jsr Sub_CF97 ; CPU:$CF46 PRG:4F46 20 97 CF + lda Zp37 ; CPU:$CF49 PRG:4F49 A5 37 + sta Zp38 ; CPU:$CF4B PRG:4F4B 85 38 + jsr Sub_CFBA ; CPU:$CF4D PRG:4F4D 20 BA CF + lda Zp37 ; CPU:$CF50 PRG:4F50 A5 37 + and #$0C ; CPU:$CF52 PRG:4F52 29 0C + sta Zp32 ; CPU:$CF54 PRG:4F54 85 32 + lda Zp38 ; CPU:$CF56 PRG:4F56 A5 38 + and #$0C ; CPU:$CF58 PRG:4F58 29 0C + sta Zp33 ; CPU:$CF5A PRG:4F5A 85 33 + lda Zp37 ; CPU:$CF5C PRG:4F5C A5 37 + and #$03 ; CPU:$CF5E PRG:4F5E 29 03 + sta Zp34 ; CPU:$CF60 PRG:4F60 85 34 + lda Zp38 ; CPU:$CF62 PRG:4F62 A5 38 + and #$03 ; CPU:$CF64 PRG:4F64 29 03 + sta Zp35 ; CPU:$CF66 PRG:4F66 85 35 + lda Zp32 ; CPU:$CF68 PRG:4F68 A5 32 + cmp Zp33 ; CPU:$CF6A PRG:4F6A C5 33 + beq ObjectCollision_Loop15 ; CPU:$CF6C PRG:4F6C F0 0F + inc $03BC ; CPU:$CF6E PRG:4F6E EE BC 03 + lda $03BC ; CPU:$CF71 PRG:4F71 AD BC 03 + cmp #$20 ; CPU:$CF74 PRG:4F74 C9 20 + bcc ObjectCollision_Loop15 ; CPU:$CF76 PRG:4F76 90 05 + lda #$1F ; CPU:$CF78 PRG:4F78 A9 1F + sta $03BC ; CPU:$CF7A PRG:4F7A 8D BC 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop15: + lda Zp34 ; CPU:$CF7D PRG:4F7D A5 34 + cmp Zp35 ; CPU:$CF7F PRG:4F7F C5 35 + beq ObjectCollision_Loop16 ; CPU:$CF81 PRG:4F81 F0 0F + inc $03BD ; CPU:$CF83 PRG:4F83 EE BD 03 + lda $03BD ; CPU:$CF86 PRG:4F86 AD BD 03 + cmp #$20 ; CPU:$CF89 PRG:4F89 C9 20 + bcc ObjectCollision_Loop16 ; CPU:$CF8B PRG:4F8B 90 05 + lda #$1F ; CPU:$CF8D PRG:4F8D A9 1F + sta $03BD ; CPU:$CF8F PRG:4F8F 8D BD 03 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop16: + pla ; CPU:$CF92 PRG:4F92 68 + tay ; CPU:$CF93 PRG:4F93 A8 + pla ; CPU:$CF94 PRG:4F94 68 + tax ; CPU:$CF95 PRG:4F95 AA + rts ; CPU:$CF96 PRG:4F96 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CF97 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_CF97: + ldy #$08 ; CPU:$CF97 PRG:4F97 A0 08 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_OnNonzero2: + pha ; CPU:$CF99 PRG:4F99 48 + lda JOY1,x ; CPU:$CF9A PRG:4F9A BD 16 40 + lsr a ; CPU:$CF9D PRG:4F9D 4A + pla ; CPU:$CF9E PRG:4F9E 68 + rol a ; CPU:$CF9F PRG:4F9F 2A + dey ; CPU:$CFA0 PRG:4FA0 88 + bne ObjectCollision_OnNonzero2 ; CPU:$CFA1 PRG:4FA1 D0 F6 + stx Zp32 ; CPU:$CFA3 PRG:4FA3 86 32 + asl Zp32 ; CPU:$CFA5 PRG:4FA5 06 32 + ldx Zp32 ; CPU:$CFA7 PRG:4FA7 A6 32 + ldy $0188,x ; CPU:$CFA9 PRG:4FA9 BC 88 01 + sty Zp32 ; CPU:$CFAC PRG:4FAC 84 32 + sta $0188,x ; CPU:$CFAE PRG:4FAE 9D 88 01 + eor Zp32 ; CPU:$CFB1 PRG:4FB1 45 32 + and $0188,x ; CPU:$CFB3 PRG:4FB3 3D 88 01 + sta $0189,x ; CPU:$CFB6 PRG:4FB6 9D 89 01 + rts ; CPU:$CFB9 PRG:4FB9 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CFBA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_CFBA: + ldy #$00 ; CPU:$CFBA PRG:4FBA A0 00 + sty Zp32 ; CPU:$CFBC PRG:4FBC 84 32 + sty Zp33 ; CPU:$CFBE PRG:4FBE 84 33 + sty Zp34 ; CPU:$CFC0 PRG:4FC0 84 34 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_OnNonzero3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_OnNonzero3: + lda JOY2 ; CPU:$CFC2 PRG:4FC2 AD 17 40 + pha ; CPU:$CFC5 PRG:4FC5 48 + and #$08 ; CPU:$CFC6 PRG:4FC6 29 08 + jsr Sub_D054 ; CPU:$CFC8 PRG:4FC8 20 54 D0 + pla ; CPU:$CFCB PRG:4FCB 68 + and #$10 ; CPU:$CFCC PRG:4FCC 29 10 + jsr Sub_D054 ; CPU:$CFCE PRG:4FCE 20 54 D0 + cpy #$10 ; CPU:$CFD1 PRG:4FD1 C0 10 + bne ObjectCollision_OnNonzero3 ; CPU:$CFD3 PRG:4FD3 D0 ED + jsr Sub_CFF9 ; CPU:$CFD5 PRG:4FD5 20 F9 CF + lda Zp32 ; CPU:$CFD8 PRG:4FD8 A5 32 + sta Zp37 ; CPU:$CFDA PRG:4FDA 85 37 + lda Zp33 ; CPU:$CFDC PRG:4FDC A5 33 + ora Zp37 ; CPU:$CFDE PRG:4FDE 05 37 + sta Zp37 ; CPU:$CFE0 PRG:4FE0 85 37 + lda Zp34 ; CPU:$CFE2 PRG:4FE2 A5 34 + ora Zp37 ; CPU:$CFE4 PRG:4FE4 05 37 + sta Zp37 ; CPU:$CFE6 PRG:4FE6 85 37 + lda GameMode ; CPU:$CFE8 PRG:4FE8 A5 8C + cmp #$02 ; CPU:$CFEA PRG:4FEA C9 02 + bcc ObjectCollision_Loop17 ; CPU:$CFEC PRG:4FEC 90 0A + lda Zp37 ; CPU:$CFEE PRG:4FEE A5 37 + and #$03 ; CPU:$CFF0 PRG:4FF0 29 03 + asl a ; CPU:$CFF2 PRG:4FF2 0A + asl a ; CPU:$CFF3 PRG:4FF3 0A + ora Zp37 ; CPU:$CFF4 PRG:4FF4 05 37 + sta Zp37 ; CPU:$CFF6 PRG:4FF6 85 37 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop17: + rts ; CPU:$CFF8 PRG:4FF8 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CFF9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_CFF9: + lda #$0C ; CPU:$CFF9 PRG:4FF9 A9 0C + sta Zp35 ; CPU:$CFFB PRG:4FFB 85 35 + lda GameMode ; CPU:$CFFD PRG:4FFD A5 8C + cmp #$02 ; CPU:$CFFF PRG:4FFF C9 02 + bcc ObjectCollision_Loop18 ; CPU:$D001 PRG:5001 90 04 + lda #$0F ; CPU:$D003 PRG:5003 A9 0F + sta Zp35 ; CPU:$D005 PRG:5005 85 35 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop18: + lda $0480 ; CPU:$D007 PRG:5007 AD 80 04 + bne ObjectCollision_Loop21 ; CPU:$D00A PRG:500A D0 21 + lda Zp32 ; CPU:$D00C PRG:500C A5 32 + and Zp35 ; CPU:$D00E PRG:500E 25 35 + beq ObjectCollision_Loop19 ; CPU:$D010 PRG:5010 F0 05 + lda #$01 ; CPU:$D012 PRG:5012 A9 01 + sta $0480 ; CPU:$D014 PRG:5014 8D 80 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop19: + lda Zp33 ; CPU:$D017 PRG:5017 A5 33 + and Zp35 ; CPU:$D019 PRG:5019 25 35 + beq ObjectCollision_Loop20 ; CPU:$D01B PRG:501B F0 05 + lda #$02 ; CPU:$D01D PRG:501D A9 02 + sta $0480 ; CPU:$D01F PRG:501F 8D 80 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop20: + lda Zp34 ; CPU:$D022 PRG:5022 A5 34 + and Zp35 ; CPU:$D024 PRG:5024 25 35 + beq ObjectCollision_Loop21 ; CPU:$D026 PRG:5026 F0 05 + lda #$03 ; CPU:$D028 PRG:5028 A9 03 + sta $0480 ; CPU:$D02A PRG:502A 8D 80 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop21: + lda $0481 ; CPU:$D02D PRG:502D AD 81 04 + bne ObjectCollision_Loop24 ; CPU:$D030 PRG:5030 D0 21 + lda Zp32 ; CPU:$D032 PRG:5032 A5 32 + and #$03 ; CPU:$D034 PRG:5034 29 03 + beq ObjectCollision_Loop22 ; CPU:$D036 PRG:5036 F0 05 + lda #$01 ; CPU:$D038 PRG:5038 A9 01 + sta $0481 ; CPU:$D03A PRG:503A 8D 81 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop22: + lda Zp33 ; CPU:$D03D PRG:503D A5 33 + and #$03 ; CPU:$D03F PRG:503F 29 03 + beq ObjectCollision_Loop23 ; CPU:$D041 PRG:5041 F0 05 + lda #$02 ; CPU:$D043 PRG:5043 A9 02 + sta $0481 ; CPU:$D045 PRG:5045 8D 81 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop23: + lda Zp34 ; CPU:$D048 PRG:5048 A5 34 + and #$03 ; CPU:$D04A PRG:504A 29 03 + beq ObjectCollision_Loop24 ; CPU:$D04C PRG:504C F0 05 + lda #$03 ; CPU:$D04E PRG:504E A9 03 + sta $0481 ; CPU:$D050 PRG:5050 8D 81 04 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop24 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop24: + rts ; CPU:$D053 PRG:5053 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D054 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D054: + beq ObjectCollision_Loop25 ; CPU:$D054 PRG:5054 F0 0F + lda $D067,y ; CPU:$D056 PRG:5056 B9 67 D0 + and #$03 ; CPU:$D059 PRG:5059 29 03 + tax ; CPU:$D05B PRG:505B AA + lda $D067,y ; CPU:$D05C PRG:505C B9 67 D0 + lsr a ; CPU:$D05F PRG:505F 4A + lsr a ; CPU:$D060 PRG:5060 4A + ora Zp32,x ; CPU:$D061 PRG:5061 15 32 + sta Zp32,x ; CPU:$D063 PRG:5063 95 32 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop25 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop25: + iny ; CPU:$D065 PRG:5065 C8 + rts ; CPU:$D066 PRG:5066 60 +; ---- data $D067-$D076 (16 bytes) ---- +; referenced by `lda $D067,y` at $D056 (operand $D067 falls inside this region) +; referenced by `lda $D067,y` at $D05C (operand $D067 falls inside this region) + .byte $12, $06, $22, $0A, $21, $04, $20, $05, $11, $00, $10, $00, $08, $00, $09, $00 ; CPU:$D067 PRG:5067 12 06 22 0A 21 04 20 05 11 00 10 00 08 00 09 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_D077 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D077: + txa ; CPU:$D077 PRG:5077 8A + pha ; CPU:$D078 PRG:5078 48 + ldx #$10 ; CPU:$D079 PRG:5079 A2 10 + ldy #$20 ; CPU:$D07B PRG:507B A0 20 + lda #$01 ; CPU:$D07D PRG:507D A9 01 + jsr Sub_D08E ; CPU:$D07F PRG:507F 20 8E D0 + ldx #$18 ; CPU:$D082 PRG:5082 A2 18 + ldy #$28 ; CPU:$D084 PRG:5084 A0 28 + lda #$01 ; CPU:$D086 PRG:5086 A9 01 + jsr Sub_D08E ; CPU:$D088 PRG:5088 20 8E D0 + pla ; CPU:$D08B PRG:508B 68 + tax ; CPU:$D08C PRG:508C AA + rts ; CPU:$D08D PRG:508D 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D08E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D08E: + sta Zp10 ; CPU:$D08E PRG:508E 85 10 + lda $0403,x ; CPU:$D090 PRG:5090 BD 03 04 + bpl ObjectCollision_Loop27 ; CPU:$D093 PRG:5093 10 19 + ror a ; CPU:$D095 PRG:5095 6A + bcs ObjectCollision_Loop27 ; CPU:$D096 PRG:5096 B0 16 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_OnNonzero4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_OnNonzero4: + lda $0403,y ; CPU:$D098 PRG:5098 B9 03 04 + bpl ObjectCollision_Loop26 ; CPU:$D09B PRG:509B 10 08 + ror a ; CPU:$D09D PRG:509D 6A + bcs ObjectCollision_Loop26 ; CPU:$D09E PRG:509E B0 05 + jsr Sub_D0AF ; CPU:$D0A0 PRG:50A0 20 AF D0 + bcc ObjectCollision_Loop27 ; CPU:$D0A3 PRG:50A3 90 09 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop26 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop26: + tya ; CPU:$D0A5 PRG:50A5 98 + clc ; CPU:$D0A6 PRG:50A6 18 + adc #$08 ; CPU:$D0A7 PRG:50A7 69 08 + tay ; CPU:$D0A9 PRG:50A9 A8 + dec Zp10 ; CPU:$D0AA PRG:50AA C6 10 + bne ObjectCollision_OnNonzero4 ; CPU:$D0AC PRG:50AC D0 EA +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop27 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop27: + rts ; CPU:$D0AE PRG:50AE 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D0AF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D0AF: + sec ; CPU:$D0AF PRG:50AF 38 + lda $0404,x ; CPU:$D0B0 PRG:50B0 BD 04 04 + sbc $0404,y ; CPU:$D0B3 PRG:50B3 F9 04 04 + bcs ObjectCollision_Loop28 ; CPU:$D0B6 PRG:50B6 B0 05 + eor #$FF ; CPU:$D0B8 PRG:50B8 49 FF + adc #$01 ; CPU:$D0BA PRG:50BA 69 01 + sec ; CPU:$D0BC PRG:50BC 38 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop28 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop28: + sbc $0407,x ; CPU:$D0BD PRG:50BD FD 07 04 + bcc ObjectCollision_Loop29 ; CPU:$D0C0 PRG:50C0 90 05 + sbc $0407,y ; CPU:$D0C2 PRG:50C2 F9 07 04 + bcs ObjectCollision_Loop32 ; CPU:$D0C5 PRG:50C5 B0 29 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop29 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop29: + sec ; CPU:$D0C7 PRG:50C7 38 + lda $0405,x ; CPU:$D0C8 PRG:50C8 BD 05 04 + sbc $0405,y ; CPU:$D0CB PRG:50CB F9 05 04 + bcs ObjectCollision_Loop30 ; CPU:$D0CE PRG:50CE B0 05 + eor #$FF ; CPU:$D0D0 PRG:50D0 49 FF + adc #$01 ; CPU:$D0D2 PRG:50D2 69 01 + sec ; CPU:$D0D4 PRG:50D4 38 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop30 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop30: + sbc $0408,x ; CPU:$D0D5 PRG:50D5 FD 08 04 + bcc ObjectCollision_Loop31 ; CPU:$D0D8 PRG:50D8 90 05 + sbc $0408,y ; CPU:$D0DA PRG:50DA F9 08 04 + bcs ObjectCollision_Loop32 ; CPU:$D0DD PRG:50DD B0 11 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop31 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop31: + lda $0403,x ; CPU:$D0DF PRG:50DF BD 03 04 + eor #$81 ; CPU:$D0E2 PRG:50E2 49 81 + sta $0403,x ; CPU:$D0E4 PRG:50E4 9D 03 04 + lda $0403,y ; CPU:$D0E7 PRG:50E7 B9 03 04 + eor #$81 ; CPU:$D0EA PRG:50EA 49 81 + sta $0403,y ; CPU:$D0EC PRG:50EC 99 03 04 + clc ; CPU:$D0EF PRG:50EF 18 +; ----------------------------------------------------------------------------- +; Routine: ObjectCollision_Loop32 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ObjectCollision_Loop32: + rts ; CPU:$D0F0 PRG:50F0 60 +; ----------------------------------------------------------------------------- +; Routine: PollControllers +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers: + lda $0300 ; CPU:$D0F1 PRG:50F1 AD 00 03 + and #$02 ; CPU:$D0F4 PRG:50F4 29 02 + sta Zp10 ; CPU:$D0F6 PRG:50F6 85 10 + lda $0301 ; CPU:$D0F8 PRG:50F8 AD 01 03 + and #$02 ; CPU:$D0FB PRG:50FB 29 02 + eor Zp10 ; CPU:$D0FD PRG:50FD 45 10 + clc ; CPU:$D0FF PRG:50FF 18 + beq PollControllers_Loop ; CPU:$D100 PRG:5100 F0 01 + sec ; CPU:$D102 PRG:5102 38 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop: + ror $0300 ; CPU:$D103 PRG:5103 6E 00 03 + ror $0301 ; CPU:$D106 PRG:5106 6E 01 03 + ror $0302 ; CPU:$D109 PRG:5109 6E 02 03 + ror $0303 ; CPU:$D10C PRG:510C 6E 03 03 + ror $0304 ; CPU:$D10F PRG:510F 6E 04 03 + ror $0305 ; CPU:$D112 PRG:5112 6E 05 03 + ror $0306 ; CPU:$D115 PRG:5115 6E 06 03 + ror $0307 ; CPU:$D118 PRG:5118 6E 07 03 + rts ; CPU:$D11B PRG:511B 60 +; ---- data $D11C-$D13A (31 bytes) ---- + .byte $A0, $00, $A5, $14, $F0, $14, $B1, $10, $91, $12, $E6, $10, $D0, $02, $E6, $11 ; CPU:$D11C PRG:511C A0 00 A5 14 F0 14 B1 10 91 12 E6 10 D0 02 E6 11 + .byte $E6, $12, $D0, $02, $E6, $13, $C6, $14, $D0, $EC, $C6, $15, $10, $E8, $60 ; CPU:$D12C PRG:512C E6 12 D0 02 E6 13 C6 14 D0 EC C6 15 10 E8 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D13B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D13B: + jsr Sub_D15A ; CPU:$D13B PRG:513B 20 5A D1 + jsr Sub_D17E ; CPU:$D13E PRG:513E 20 7E D1 + lda $0380 ; CPU:$D141 PRG:5141 AD 80 03 + bne PollControllers_Loop2 ; CPU:$D144 PRG:5144 D0 0B + jsr Sub_D1AE ; CPU:$D146 PRG:5146 20 AE D1 + jsr Sub_D221 ; CPU:$D149 PRG:5149 20 21 D2 + lda #$20 ; CPU:$D14C PRG:514C A9 20 + sta $0380 ; CPU:$D14E PRG:514E 8D 80 03 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop2: + dec $0380 ; CPU:$D151 PRG:5151 CE 80 03 + lda #$01 ; CPU:$D154 PRG:5154 A9 01 + sta $039A ; CPU:$D156 PRG:5156 8D 9A 03 + rts ; CPU:$D159 PRG:5159 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D15A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D15A: + lda $0390 ; CPU:$D15A PRG:515A AD 90 03 + and #$20 ; CPU:$D15D PRG:515D 29 20 + bne PollControllers_Loop3 ; CPU:$D15F PRG:515F D0 1C + lda #$82 ; CPU:$D161 PRG:5161 A9 82 + sta Zp0A ; CPU:$D163 PRG:5163 85 0A + lda #$03 ; CPU:$D165 PRG:5165 A9 03 + sta Zp0B ; CPU:$D167 PRG:5167 85 0B + ldx #$05 ; CPU:$D169 PRG:5169 A2 05 + lda $037E ; CPU:$D16B PRG:516B AD 7E 03 + jsr Sub_D25D ; CPU:$D16E PRG:516E 20 5D D2 + lda $0384 ; CPU:$D171 PRG:5171 AD 84 03 + cmp #$61 ; CPU:$D174 PRG:5174 C9 61 + bcc PollControllers_Loop3 ; CPU:$D176 PRG:5176 90 05 + lda #$60 ; CPU:$D178 PRG:5178 A9 60 + sta $0384 ; CPU:$D17A PRG:517A 8D 84 03 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop3: + rts ; CPU:$D17D PRG:517D 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D17E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D17E: + lda $0384 ; CPU:$D17E PRG:517E AD 84 03 + sta Zp08 ; CPU:$D181 PRG:5181 85 08 + lda $0383 ; CPU:$D183 PRG:5183 AD 83 03 + sta Zp09 ; CPU:$D186 PRG:5186 85 09 + lda $0390 ; CPU:$D188 PRG:5188 AD 90 03 + and #$10 ; CPU:$D18B PRG:518B 29 10 + bne PollControllers_Loop4 ; CPU:$D18D PRG:518D D0 0C + lda $0390 ; CPU:$D18F PRG:518F AD 90 03 + and #$80 ; CPU:$D192 PRG:5192 29 80 + beq PollControllers_Loop4 ; CPU:$D194 PRG:5194 F0 05 + ldx #$0D ; CPU:$D196 PRG:5196 A2 0D + jsr Sub_D2BE ; CPU:$D198 PRG:5198 20 BE D2 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop4: + lda $0390 ; CPU:$D19B PRG:519B AD 90 03 + and #$40 ; CPU:$D19E PRG:519E 29 40 + beq PollControllers_Loop5 ; CPU:$D1A0 PRG:51A0 F0 0B + lda GameMode ; CPU:$D1A2 PRG:51A2 A5 8C + cmp #$02 ; CPU:$D1A4 PRG:51A4 C9 02 + bcs PollControllers_Loop5 ; CPU:$D1A6 PRG:51A6 B0 05 + ldx #$08 ; CPU:$D1A8 PRG:51A8 A2 08 + jsr Sub_D2BE ; CPU:$D1AA PRG:51AA 20 BE D2 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop5: + rts ; CPU:$D1AD PRG:51AD 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D1AE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D1AE: + lda $0390 ; CPU:$D1AE PRG:51AE AD 90 03 + and #$80 ; CPU:$D1B1 PRG:51B1 29 80 + beq PollControllers_Loop6 ; CPU:$D1B3 PRG:51B3 F0 0D + lda #$8A ; CPU:$D1B5 PRG:51B5 A9 8A + sta Zp0A ; CPU:$D1B7 PRG:51B7 85 0A + lda #$03 ; CPU:$D1B9 PRG:51B9 A9 03 + sta Zp0B ; CPU:$D1BB PRG:51BB 85 0B + ldx #$04 ; CPU:$D1BD PRG:51BD A2 04 + jsr Sub_D1DD ; CPU:$D1BF PRG:51BF 20 DD D1 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop6: + lda $0390 ; CPU:$D1C2 PRG:51C2 AD 90 03 + and #$40 ; CPU:$D1C5 PRG:51C5 29 40 + beq PollControllers_Loop7 ; CPU:$D1C7 PRG:51C7 F0 13 + lda GameMode ; CPU:$D1C9 PRG:51C9 A5 8C + cmp #$02 ; CPU:$D1CB PRG:51CB C9 02 + bcs PollControllers_Loop7 ; CPU:$D1CD PRG:51CD B0 0D + lda #$86 ; CPU:$D1CF PRG:51CF A9 86 + sta Zp0A ; CPU:$D1D1 PRG:51D1 85 0A + lda #$03 ; CPU:$D1D3 PRG:51D3 A9 03 + sta Zp0B ; CPU:$D1D5 PRG:51D5 85 0B + ldx #$00 ; CPU:$D1D7 PRG:51D7 A2 00 + jsr Sub_D1DD ; CPU:$D1D9 PRG:51D9 20 DD D1 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop7: + rts ; CPU:$D1DC PRG:51DC 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D1DD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D1DD: + stx Zp0D ; CPU:$D1DD PRG:51DD 86 0D + lda #$00 ; CPU:$D1DF PRG:51DF A9 00 + sta $0386,x ; CPU:$D1E1 PRG:51E1 9D 86 03 + sta $0387,x ; CPU:$D1E4 PRG:51E4 9D 87 03 + lda $0381,x ; CPU:$D1E7 PRG:51E7 BD 81 03 + beq PollControllers_Loop8 ; CPU:$D1EA PRG:51EA F0 0E +; ----------------------------------------------------------------------------- +; Routine: PollControllers_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_OnNonzero: + ldx #$04 ; CPU:$D1EC PRG:51EC A2 04 + lda #$50 ; CPU:$D1EE PRG:51EE A9 50 + jsr Sub_D25D ; CPU:$D1F0 PRG:51F0 20 5D D2 + ldx Zp0D ; CPU:$D1F3 PRG:51F3 A6 0D + dec $0381,x ; CPU:$D1F5 PRG:51F5 DE 81 03 + bne PollControllers_OnNonzero ; CPU:$D1F8 PRG:51F8 D0 F2 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop8: + lda $0386,x ; CPU:$D1FA PRG:51FA BD 86 03 + pha ; CPU:$D1FD PRG:51FD 48 + lda $0387,x ; CPU:$D1FE PRG:51FE BD 87 03 + pha ; CPU:$D201 PRG:5201 48 + lda $0388,x ; CPU:$D202 PRG:5202 BD 88 03 + ldx #$04 ; CPU:$D205 PRG:5205 A2 04 + jsr Sub_D25D ; CPU:$D207 PRG:5207 20 5D D2 + ldx Zp0D ; CPU:$D20A PRG:520A A6 0D + lda $0389,x ; CPU:$D20C PRG:520C BD 89 03 + ldx #$02 ; CPU:$D20F PRG:520F A2 02 + inc Zp0A ; CPU:$D211 PRG:5211 E6 0A + jsr Sub_D25D ; CPU:$D213 PRG:5213 20 5D D2 + ldx Zp0D ; CPU:$D216 PRG:5216 A6 0D + pla ; CPU:$D218 PRG:5218 68 + sta $0389,x ; CPU:$D219 PRG:5219 9D 89 03 + pla ; CPU:$D21C PRG:521C 68 + sta $0388,x ; CPU:$D21D PRG:521D 9D 88 03 + rts ; CPU:$D220 PRG:5220 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D221 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D221: + lda $0390 ; CPU:$D221 PRG:5221 AD 90 03 + and #$80 ; CPU:$D224 PRG:5224 29 80 + beq PollControllers_Loop9 ; CPU:$D226 PRG:5226 F0 05 + ldx #$04 ; CPU:$D228 PRG:5228 A2 04 + jsr Sub_D240 ; CPU:$D22A PRG:522A 20 40 D2 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop9: + lda GameMode ; CPU:$D22D PRG:522D A5 8C + cmp #$02 ; CPU:$D22F PRG:522F C9 02 + bcs PollControllers_Loop10 ; CPU:$D231 PRG:5231 B0 0C + lda $0390 ; CPU:$D233 PRG:5233 AD 90 03 + and #$40 ; CPU:$D236 PRG:5236 29 40 + beq PollControllers_Loop10 ; CPU:$D238 PRG:5238 F0 05 + ldx #$00 ; CPU:$D23A PRG:523A A2 00 + jsr Sub_D240 ; CPU:$D23C PRG:523C 20 40 D2 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop10: + rts ; CPU:$D23F PRG:523F 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D240 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D240: + lda $0387,x ; CPU:$D240 PRG:5240 BD 87 03 + sta Zp08 ; CPU:$D243 PRG:5243 85 08 + lda $0386,x ; CPU:$D245 PRG:5245 BD 86 03 + sta Zp09 ; CPU:$D248 PRG:5248 85 09 + lsr Zp08 ; CPU:$D24A PRG:524A 46 08 + ror Zp09 ; CPU:$D24C PRG:524C 66 09 + lsr Zp08 ; CPU:$D24E PRG:524E 46 08 + ror Zp09 ; CPU:$D250 PRG:5250 66 09 + lsr Zp08 ; CPU:$D252 PRG:5252 46 08 + ror Zp09 ; CPU:$D254 PRG:5254 66 09 + lsr Zp08 ; CPU:$D256 PRG:5256 46 08 + ror Zp09 ; CPU:$D258 PRG:5258 66 09 + jmp Sub_D2BE ; CPU:$D25A PRG:525A 4C BE D2 +; ----------------------------------------------------------------------------- +; Routine: Sub_D25D +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D25D: + sta Zp09 ; CPU:$D25D PRG:525D 85 09 + stx SlotState ; CPU:$D25F PRG:525F 86 0C + txa ; CPU:$D261 PRG:5261 8A + ldx #$00 ; CPU:$D262 PRG:5262 A2 00 + lsr a ; CPU:$D264 PRG:5264 4A + bcc PollControllers_Loop11 ; CPU:$D265 PRG:5265 90 02 + ldx #$02 ; CPU:$D267 PRG:5267 A2 02 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop11: + lda Zp09 ; CPU:$D269 PRG:5269 A5 09 + and $D2BA,x ; CPU:$D26B PRG:526B 3D BA D2 + sta Zp08 ; CPU:$D26E PRG:526E 85 08 + lda $D2BA,x ; CPU:$D270 PRG:5270 BD BA D2 + eor #$FF ; CPU:$D273 PRG:5273 49 FF + and Zp09 ; CPU:$D275 PRG:5275 25 09 + sta Zp09 ; CPU:$D277 PRG:5277 85 09 + ldy #$00 ; CPU:$D279 PRG:5279 A0 00 + clc ; CPU:$D27B PRG:527B 18 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_OnNonzero2: + lda (Zp0A),y ; CPU:$D27C PRG:527C B1 0A + and $D2BA,x ; CPU:$D27E PRG:527E 3D BA D2 + adc Zp08 ; CPU:$D281 PRG:5281 65 08 + bcs PollControllers_Loop12 ; CPU:$D283 PRG:5283 B0 05 + cmp $D2BB,x ; CPU:$D285 PRG:5285 DD BB D2 + bcc PollControllers_Loop13 ; CPU:$D288 PRG:5288 90 0F +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop12: + sbc $D2BB,x ; CPU:$D28A PRG:528A FD BB D2 + sec ; CPU:$D28D PRG:528D 38 + pha ; CPU:$D28E PRG:528E 48 + lda $D2BA,x ; CPU:$D28F PRG:528F BD BA D2 + and #$0F ; CPU:$D292 PRG:5292 29 0F + adc Zp09 ; CPU:$D294 PRG:5294 65 09 + sta Zp09 ; CPU:$D296 PRG:5296 85 09 + pla ; CPU:$D298 PRG:5298 68 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop13: + sta Zp08 ; CPU:$D299 PRG:5299 85 08 + lda $D2BA,x ; CPU:$D29B PRG:529B BD BA D2 + eor #$FF ; CPU:$D29E PRG:529E 49 FF + and (Zp0A),y ; CPU:$D2A0 PRG:52A0 31 0A + ora Zp08 ; CPU:$D2A2 PRG:52A2 05 08 + sta (Zp0A),y ; CPU:$D2A4 PRG:52A4 91 0A + lda Zp09 ; CPU:$D2A6 PRG:52A6 A5 09 + sta Zp08 ; CPU:$D2A8 PRG:52A8 85 08 + lda #$00 ; CPU:$D2AA PRG:52AA A9 00 + sta Zp09 ; CPU:$D2AC PRG:52AC 85 09 + txa ; CPU:$D2AE PRG:52AE 8A + beq PollControllers_Loop14 ; CPU:$D2AF PRG:52AF F0 01 + iny ; CPU:$D2B1 PRG:52B1 C8 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop14: + eor #$02 ; CPU:$D2B2 PRG:52B2 49 02 + tax ; CPU:$D2B4 PRG:52B4 AA + dec SlotState ; CPU:$D2B5 PRG:52B5 C6 0C + bne PollControllers_OnNonzero2 ; CPU:$D2B7 PRG:52B7 D0 C3 + rts ; CPU:$D2B9 PRG:52B9 60 +; ---- data $D2BA-$D2BD (4 bytes) ---- +; referenced by `and $D2BA,x` at $D26B (operand $D2BA falls inside this region) +; referenced by `lda $D2BA,x` at $D270 (operand $D2BA falls inside this region) +; referenced by `and $D2BA,x` at $D27E (operand $D2BA falls inside this region) +; referenced by `cmp $D2BB,x` at $D285 (operand $D2BB falls inside this region) +; referenced by `sbc $D2BB,x` at $D28A (operand $D2BB falls inside this region) +; referenced by `lda $D2BA,x` at $D28F (operand $D2BA falls inside this region) +; ... and 1 further references from decoded code + .byte $0F, $0A, $F0, $A0 ; CPU:$D2BA PRG:52BA 0F 0A F0 A0 +; ----------------------------------------------------------------------------- +; Routine: Sub_D2BE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D2BE: + cpx #$08 ; CPU:$D2BE PRG:52BE E0 08 + bcc PollControllers_Loop15 ; CPU:$D2C0 PRG:52C0 90 14 + lda Zp08 ; CPU:$D2C2 PRG:52C2 A5 08 + and #$F0 ; CPU:$D2C4 PRG:52C4 29 F0 + lsr a ; CPU:$D2C6 PRG:52C6 4A + lsr a ; CPU:$D2C7 PRG:52C7 4A + lsr a ; CPU:$D2C8 PRG:52C8 4A + tay ; CPU:$D2C9 PRG:52C9 A8 + lda $D317,y ; CPU:$D2CA PRG:52CA B9 17 D3 + sta $07E0,x ; CPU:$D2CD PRG:52CD 9D E0 07 + lda $D318,y ; CPU:$D2D0 PRG:52D0 B9 18 D3 + sta $07CE,x ; CPU:$D2D3 PRG:52D3 9D CE 07 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop15: + lda Zp08 ; CPU:$D2D6 PRG:52D6 A5 08 + and #$0F ; CPU:$D2D8 PRG:52D8 29 0F + asl a ; CPU:$D2DA PRG:52DA 0A + tay ; CPU:$D2DB PRG:52DB A8 + lda $D317,y ; CPU:$D2DC PRG:52DC B9 17 D3 + sta $07DF,x ; CPU:$D2DF PRG:52DF 9D DF 07 + lda $D318,y ; CPU:$D2E2 PRG:52E2 B9 18 D3 + sta $07CD,x ; CPU:$D2E5 PRG:52E5 9D CD 07 + lda Zp09 ; CPU:$D2E8 PRG:52E8 A5 09 + and #$F0 ; CPU:$D2EA PRG:52EA 29 F0 + lsr a ; CPU:$D2EC PRG:52EC 4A + lsr a ; CPU:$D2ED PRG:52ED 4A + lsr a ; CPU:$D2EE PRG:52EE 4A + tay ; CPU:$D2EF PRG:52EF A8 + lda $D317,y ; CPU:$D2F0 PRG:52F0 B9 17 D3 + cpx #$08 ; CPU:$D2F3 PRG:52F3 E0 08 + bcc PollControllers_Loop16 ; CPU:$D2F5 PRG:52F5 90 01 + dex ; CPU:$D2F7 PRG:52F7 CA +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop16: + sta $07DE,x ; CPU:$D2F8 PRG:52F8 9D DE 07 + lda $D318,y ; CPU:$D2FB PRG:52FB B9 18 D3 + sta $07CC,x ; CPU:$D2FE PRG:52FE 9D CC 07 + bcc PollControllers_Loop17 ; CPU:$D301 PRG:5301 90 01 + inx ; CPU:$D303 PRG:5303 E8 +; ----------------------------------------------------------------------------- +; Routine: PollControllers_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PollControllers_Loop17: + lda Zp09 ; CPU:$D304 PRG:5304 A5 09 + and #$0F ; CPU:$D306 PRG:5306 29 0F + asl a ; CPU:$D308 PRG:5308 0A + tay ; CPU:$D309 PRG:5309 A8 + lda $D317,y ; CPU:$D30A PRG:530A B9 17 D3 + sta $07DC,x ; CPU:$D30D PRG:530D 9D DC 07 + lda $D318,y ; CPU:$D310 PRG:5310 B9 18 D3 + sta $07CA,x ; CPU:$D313 PRG:5313 9D CA 07 + rts ; CPU:$D316 PRG:5316 60 +; ---- data $D317-$D32A (20 bytes) ---- +; referenced by `lda $D317,y` at $D2CA (operand $D317 falls inside this region) +; referenced by `lda $D318,y` at $D2D0 (operand $D318 falls inside this region) +; referenced by `lda $D317,y` at $D2DC (operand $D317 falls inside this region) +; referenced by `lda $D318,y` at $D2E2 (operand $D318 falls inside this region) +; referenced by `lda $D317,y` at $D2F0 (operand $D317 falls inside this region) +; referenced by `lda $D318,y` at $D2FB (operand $D318 falls inside this region) +; ... and 2 further references from decoded code + .byte $04, $05, $1B, $1C, $08, $09, $08, $0B, $0C, $0D, $0E, $0B, $0E, $0A, $04, $06 ; CPU:$D317 PRG:5317 04 05 1B 1C 08 09 08 0B 0C 0D 0E 0B 0E 0A 04 06 + .byte $07, $0A, $07, $0B ; CPU:$D327 PRG:5327 07 0A 07 0B +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit: + ldx #$3B ; CPU:$D32B PRG:532B A2 3B + lda Zp04,x ; CPU:$D32D PRG:532D B5 04 + beq EventTaskInit_Loop ; CPU:$D32F PRG:532F F0 03 + jmp Sub_D43B ; CPU:$D331 PRG:5331 4C 3B D4 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop: + lda #$00 ; CPU:$D334 PRG:5334 A9 00 + sta Zp8B ; CPU:$D336 PRG:5336 85 8B + jsr EventInit ; CPU:$D338 PRG:5338 20 7C EF + lda PpuCtrlMirror ; CPU:$D33B PRG:533B A5 18 + ora #$30 ; CPU:$D33D PRG:533D 09 30 + sta PpuCtrlMirror ; CPU:$D33F PRG:533F 85 18 + jsr FrameDelay ; CPU:$D341 PRG:5341 20 E6 F8 + jsr Sub_FC4E ; CPU:$D344 PRG:5344 20 4E FC + jsr Sub_9941 ; CPU:$D347 PRG:5347 20 41 99 + lda #$01 ; CPU:$D34A PRG:534A A9 01 + sta Zp29 ; CPU:$D34C PRG:534C 85 29 + lda #$02 ; CPU:$D34E PRG:534E A9 02 + jsr DelayFrames ; CPU:$D350 PRG:5350 20 F5 F7 + sta $017F ; CPU:$D353 PRG:5353 8D 7F 01 + sta $0185 ; CPU:$D356 PRG:5356 8D 85 01 + ldx #$3B ; CPU:$D359 PRG:5359 A2 3B + lda #$01 ; CPU:$D35B PRG:535B A9 01 + sta Zp04,x ; CPU:$D35D PRG:535D 95 04 + lda #$00 ; CPU:$D35F PRG:535F A9 00 + sta ScrollX ; CPU:$D361 PRG:5361 85 27 + sta ScrollY ; CPU:$D363 PRG:5363 85 28 + lda $0308 ; CPU:$D365 PRG:5365 AD 08 03 + bne EventTaskInit_Loop2 ; CPU:$D368 PRG:5368 D0 06 + jsr Sub_A1D6 ; CPU:$D36A PRG:536A 20 D6 A1 + jsr Sub_D8F2 ; CPU:$D36D PRG:536D 20 F2 D8 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop2: + lda #$04 ; CPU:$D370 PRG:5370 A9 04 + sta Zp2C ; CPU:$D372 PRG:5372 85 2C + ldy GameMode ; CPU:$D374 PRG:5374 A4 8C + lda $D437,y ; CPU:$D376 PRG:5376 B9 37 D4 + sta Zp26 ; CPU:$D379 PRG:5379 85 26 + jsr Sub_9CB7 ; CPU:$D37B PRG:537B 20 B7 9C + jsr Sub_D565 ; CPU:$D37E PRG:537E 20 65 D5 + jsr Sub_9D0E ; CPU:$D381 PRG:5381 20 0E 9D + lda #$00 ; CPU:$D384 PRG:5384 A9 00 + sta $017F ; CPU:$D386 PRG:5386 8D 7F 01 + sta $0185 ; CPU:$D389 PRG:5389 8D 85 01 + ldy #$24 ; CPU:$D38C PRG:538C A0 24 + lda #$03 ; CPU:$D38E PRG:538E A9 03 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero: + sta $07C9,y ; CPU:$D390 PRG:5390 99 C9 07 + dey ; CPU:$D393 PRG:5393 88 + bne EventTaskInit_OnNonzero ; CPU:$D394 PRG:5394 D0 FA + lda #$0F ; CPU:$D396 PRG:5396 A9 0F + sta $07CB ; CPU:$D398 PRG:5398 8D CB 07 + sta $07CF ; CPU:$D39B PRG:539B 8D CF 07 + sta $07D4 ; CPU:$D39E PRG:539E 8D D4 07 + sta $07D9 ; CPU:$D3A1 PRG:53A1 8D D9 07 + lda #$E0 ; CPU:$D3A4 PRG:53A4 A9 E0 + sta $0390 ; CPU:$D3A6 PRG:53A6 8D 90 03 + lda #$01 ; CPU:$D3A9 PRG:53A9 A9 01 + jsr DelayFrames ; CPU:$D3AB PRG:53AB 20 F5 F7 + ldx #$3B ; CPU:$D3AE PRG:53AE A2 3B + lda #$C9 ; CPU:$D3B0 PRG:53B0 A9 C9 + sta Zp0A,x ; CPU:$D3B2 PRG:53B2 95 0A + lda #$DC ; CPU:$D3B4 PRG:53B4 A9 DC + sta Zp0B,x ; CPU:$D3B6 PRG:53B6 95 0B + lda #$CF ; CPU:$D3B8 PRG:53B8 A9 CF + sta SlotState,x ; CPU:$D3BA PRG:53BA 95 0C + lda #$21 ; CPU:$D3BC PRG:53BC A9 21 + sta Zp0D,x ; CPU:$D3BE PRG:53BE 95 0D + lda #$01 ; CPU:$D3C0 PRG:53C0 A9 01 + jsr TaskSlotStart ; CPU:$D3C2 PRG:53C2 20 A0 F7 + lda #$00 ; CPU:$D3C5 PRG:53C5 A9 00 + sta $017D ; CPU:$D3C7 PRG:53C7 8D 7D 01 + lda #$28 ; CPU:$D3CA PRG:53CA A9 28 + and #$0F ; CPU:$D3CC PRG:53CC 29 0F + sta $017E ; CPU:$D3CE PRG:53CE 8D 7E 01 + ldx #$00 ; CPU:$D3D1 PRG:53D1 A2 00 + ldy #$81 ; CPU:$D3D3 PRG:53D3 A0 81 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero2: + sta $0403,x ; CPU:$D3D5 PRG:53D5 9D 03 04 + inx ; CPU:$D3D8 PRG:53D8 E8 + dey ; CPU:$D3D9 PRG:53D9 88 + bne EventTaskInit_OnNonzero2 ; CPU:$D3DA PRG:53DA D0 F9 + lda #$59 ; CPU:$D3DC PRG:53DC A9 59 + sta $0419 ; CPU:$D3DE PRG:53DE 8D 19 04 + lda #$00 ; CPU:$D3E1 PRG:53E1 A9 00 + sta $0389 ; CPU:$D3E3 PRG:53E3 8D 89 03 + sta $0388 ; CPU:$D3E6 PRG:53E6 8D 88 03 + sta $038D ; CPU:$D3E9 PRG:53E9 8D 8D 03 + sta $038C ; CPU:$D3EC PRG:53EC 8D 8C 03 + sta $0385 ; CPU:$D3EF PRG:53EF 8D 85 03 + sta $0381 ; CPU:$D3F2 PRG:53F2 8D 81 03 + sta $0384 ; CPU:$D3F5 PRG:53F5 8D 84 03 + sta $0471 ; CPU:$D3F8 PRG:53F8 8D 71 04 + sta $0383 ; CPU:$D3FB PRG:53FB 8D 83 03 + sta $0472 ; CPU:$D3FE PRG:53FE 8D 72 04 + sta $0382 ; CPU:$D401 PRG:5401 8D 82 03 + sta $046F ; CPU:$D404 PRG:5404 8D 6F 04 + sta $0470 ; CPU:$D407 PRG:5407 8D 70 04 + sta $0108 ; CPU:$D40A PRG:540A 8D 08 01 + sta $0109 ; CPU:$D40D PRG:540D 8D 09 01 + sta $0186 ; CPU:$D410 PRG:5410 8D 86 01 + sta $0187 ; CPU:$D413 PRG:5413 8D 87 01 + sta $0473 ; CPU:$D416 PRG:5416 8D 73 04 + jsr Sub_EFC6 ; CPU:$D419 PRG:5419 20 C6 EF + jsr Sub_FC63 ; CPU:$D41C PRG:541C 20 63 FC + lda #$04 ; CPU:$D41F PRG:541F A9 04 + sta Zp2C ; CPU:$D421 PRG:5421 85 2C + lda #$01 ; CPU:$D423 PRG:5423 A9 01 + sta Zp8B ; CPU:$D425 PRG:5425 85 8B + lda VblankFlag ; CPU:$D427 PRG:5427 A5 2E + bne EventTaskInit_Loop3 ; CPU:$D429 PRG:5429 D0 01 + rts ; CPU:$D42B PRG:542B 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop3: + lda #$01 ; CPU:$D42C PRG:542C A9 01 + sta $0391 ; CPU:$D42E PRG:542E 8D 91 03 + lda #$00 ; CPU:$D431 PRG:5431 A9 00 + sta $0392 ; CPU:$D433 PRG:5433 8D 92 03 + rts ; CPU:$D436 PRG:5436 60 +; ---- data $D437-$D43A (4 bytes) ---- +; referenced by `lda $D437,y` at $D376 (operand $D437 falls inside this region) + .byte $01, $01, $03, $03 ; CPU:$D437 PRG:5437 01 01 03 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_D43B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D43B: + inc Zp0E,x ; CPU:$D43B PRG:543B F6 0E + lda #$00 ; CPU:$D43D PRG:543D A9 00 + sta $0108 ; CPU:$D43F PRG:543F 8D 08 01 + sta $0109 ; CPU:$D442 PRG:5442 8D 09 01 + jsr Sub_FC63 ; CPU:$D445 PRG:5445 20 63 FC + lda #$04 ; CPU:$D448 PRG:5448 A9 04 + sta Zp2C ; CPU:$D44A PRG:544A 85 2C + lda #$01 ; CPU:$D44C PRG:544C A9 01 + sta Zp8B ; CPU:$D44E PRG:544E 85 8B + jsr Sub_D738 ; CPU:$D450 PRG:5450 20 38 D7 + lda Zp4F ; CPU:$D453 PRG:5453 A5 4F + bne EventTaskInit_Loop4 ; CPU:$D455 PRG:5455 D0 09 + lda #$00 ; CPU:$D457 PRG:5457 A9 00 + sta $0108 ; CPU:$D459 PRG:5459 8D 08 01 + sta $0109 ; CPU:$D45C PRG:545C 8D 09 01 + rts ; CPU:$D45F PRG:545F 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop4: + lda $0185 ; CPU:$D460 PRG:5460 AD 85 01 + beq EventTaskInit_Loop5 ; CPU:$D463 PRG:5463 F0 03 + jsr Sub_D686 ; CPU:$D465 PRG:5465 20 86 D6 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop5: + lda $0186 ; CPU:$D468 PRG:5468 AD 86 01 + beq EventTaskInit_Loop6 ; CPU:$D46B PRG:546B F0 29 + lda Zp0E,x ; CPU:$D46D PRG:546D B5 0E + and #$01 ; CPU:$D46F PRG:546F 29 01 + beq EventTaskInit_Loop6 ; CPU:$D471 PRG:5471 F0 23 + inc $0108 ; CPU:$D473 PRG:5473 EE 08 01 + lda $03A1 ; CPU:$D476 PRG:5476 AD A1 03 + pha ; CPU:$D479 PRG:5479 48 + lda $03A2 ; CPU:$D47A PRG:547A AD A2 03 + sta $03A1 ; CPU:$D47D PRG:547D 8D A1 03 + lda $03A3 ; CPU:$D480 PRG:5480 AD A3 03 + sta $03A2 ; CPU:$D483 PRG:5483 8D A2 03 + pla ; CPU:$D486 PRG:5486 68 + sta $03A3 ; CPU:$D487 PRG:5487 8D A3 03 + lda #$00 ; CPU:$D48A PRG:548A A9 00 + sta $0186 ; CPU:$D48C PRG:548C 8D 86 01 + inc $046F ; CPU:$D48F PRG:548F EE 6F 04 + lda #$02 ; CPU:$D492 PRG:5492 A9 02 + sta Zp29 ; CPU:$D494 PRG:5494 85 29 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop6: + lda GameMode ; CPU:$D496 PRG:5496 A5 8C + cmp #$02 ; CPU:$D498 PRG:5498 C9 02 + bcc EventTaskInit_Loop7 ; CPU:$D49A PRG:549A 90 1D + lda #$00 ; CPU:$D49C PRG:549C A9 00 + sta $042B ; CPU:$D49E PRG:549E 8D 2B 04 + lda $0469 ; CPU:$D4A1 PRG:54A1 AD 69 04 + beq EventTaskInit_Loop7 ; CPU:$D4A4 PRG:54A4 F0 13 + lda Zp03,x ; CPU:$D4A6 PRG:54A6 B5 03 + and #$40 ; CPU:$D4A8 PRG:54A8 29 40 + bne EventTaskInit_Loop8 ; CPU:$D4AA PRG:54AA D0 10 + lda $046D ; CPU:$D4AC PRG:54AC AD 6D 04 + cmp #$10 ; CPU:$D4AF PRG:54AF C9 10 + bcc EventTaskInit_Loop7 ; CPU:$D4B1 PRG:54B1 90 06 + lda Zp0E,x ; CPU:$D4B3 PRG:54B3 B5 0E + and #$01 ; CPU:$D4B5 PRG:54B5 29 01 + beq EventTaskInit_Loop9 ; CPU:$D4B7 PRG:54B7 F0 10 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop7: + jmp EventTaskInit_Loop11 ; CPU:$D4B9 PRG:54B9 4C 2F D5 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop8: + lda $0469 ; CPU:$D4BC PRG:54BC AD 69 04 + beq EventTaskInit_Loop7 ; CPU:$D4BF PRG:54BF F0 F8 + lda #$01 ; CPU:$D4C1 PRG:54C1 A9 01 + sta $042B ; CPU:$D4C3 PRG:54C3 8D 2B 04 + jmp EventTaskInit_Loop11 ; CPU:$D4C6 PRG:54C6 4C 2F D5 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop9: + lda #$00 ; CPU:$D4C9 PRG:54C9 A9 00 + sta $0469 ; CPU:$D4CB PRG:54CB 8D 69 04 + lda #$01 ; CPU:$D4CE PRG:54CE A9 01 + sta $042B ; CPU:$D4D0 PRG:54D0 8D 2B 04 + lda GameMode ; CPU:$D4D3 PRG:54D3 A5 8C + cmp #$03 ; CPU:$D4D5 PRG:54D5 C9 03 + bne EventTaskInit_Loop10 ; CPU:$D4D7 PRG:54D7 D0 0A + lda $046D ; CPU:$D4D9 PRG:54D9 AD 6D 04 + cmp #$22 ; CPU:$D4DC PRG:54DC C9 22 + bcs EventTaskInit_Loop10 ; CPU:$D4DE PRG:54DE B0 03 + jmp EventTaskInit_Loop11 ; CPU:$D4E0 PRG:54E0 4C 2F D5 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop10: + lda Zp09,x ; CPU:$D4E3 PRG:54E3 B5 09 + tay ; CPU:$D4E5 PRG:54E5 A8 + lda $DDE9,y ; CPU:$D4E6 PRG:54E6 B9 E9 DD + clc ; CPU:$D4E9 PRG:54E9 18 + adc SlotState,x ; CPU:$D4EA PRG:54EA 75 0C + sta SlotState,x ; CPU:$D4EC PRG:54EC 95 0C + sta $03BF ; CPU:$D4EE PRG:54EE 8D BF 03 + lda Zp0D,x ; CPU:$D4F1 PRG:54F1 B5 0D + adc #$00 ; CPU:$D4F3 PRG:54F3 69 00 + sta Zp0D,x ; CPU:$D4F5 PRG:54F5 95 0D + sta $03C0 ; CPU:$D4F7 PRG:54F7 8D C0 03 + lda Zp09,x ; CPU:$D4FA PRG:54FA B5 09 + tay ; CPU:$D4FC PRG:54FC A8 + lda $DE09,y ; CPU:$D4FD PRG:54FD B9 09 DE + sta Zp10 ; CPU:$D500 PRG:5500 85 10 + sta $03C1 ; CPU:$D502 PRG:5502 8D C1 03 + ldy #$00 ; CPU:$D505 PRG:5505 A0 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero3: + lda (Zp45),y ; CPU:$D507 PRG:5507 B1 45 + sta $03C2,y ; CPU:$D509 PRG:5509 99 C2 03 + iny ; CPU:$D50C PRG:550C C8 + cpy Zp10 ; CPU:$D50D PRG:550D C4 10 + bne EventTaskInit_OnNonzero3 ; CPU:$D50F PRG:550F D0 F6 + lda #$80 ; CPU:$D511 PRG:5511 A9 80 + sta $03BE ; CPU:$D513 PRG:5513 8D BE 03 + lda Zp0A,x ; CPU:$D516 PRG:5516 B5 0A + clc ; CPU:$D518 PRG:5518 18 + adc Zp10 ; CPU:$D519 PRG:5519 65 10 + sta Zp0A,x ; CPU:$D51B PRG:551B 95 0A + lda Zp0B,x ; CPU:$D51D PRG:551D B5 0B + adc #$00 ; CPU:$D51F PRG:551F 69 00 + sta Zp0B,x ; CPU:$D521 PRG:5521 95 0B + inc Zp09,x ; CPU:$D523 PRG:5523 F6 09 + lda Zp09,x ; CPU:$D525 PRG:5525 B5 09 + cmp #$20 ; CPU:$D527 PRG:5527 C9 20 + bcc EventTaskInit_Loop11 ; CPU:$D529 PRG:5529 90 04 + lda #$C0 ; CPU:$D52B PRG:552B A9 C0 + sta Zp03,x ; CPU:$D52D PRG:552D 95 03 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop11: + lda GameMode ; CPU:$D52F PRG:552F A5 8C + cmp #$02 ; CPU:$D531 PRG:5531 C9 02 + bcs EventTaskInit_Loop12 ; CPU:$D533 PRG:5533 B0 2E + lda $0187 ; CPU:$D535 PRG:5535 AD 87 01 + beq EventTaskInit_Loop12 ; CPU:$D538 PRG:5538 F0 29 + lda Zp0E,x ; CPU:$D53A PRG:553A B5 0E + and #$01 ; CPU:$D53C PRG:553C 29 01 + beq EventTaskInit_Loop12 ; CPU:$D53E PRG:553E F0 23 + inc $0109 ; CPU:$D540 PRG:5540 EE 09 01 + lda $039D ; CPU:$D543 PRG:5543 AD 9D 03 + pha ; CPU:$D546 PRG:5546 48 + lda $039E ; CPU:$D547 PRG:5547 AD 9E 03 + sta $039D ; CPU:$D54A PRG:554A 8D 9D 03 + lda $039F ; CPU:$D54D PRG:554D AD 9F 03 + sta $039E ; CPU:$D550 PRG:5550 8D 9E 03 + pla ; CPU:$D553 PRG:5553 68 + sta $039F ; CPU:$D554 PRG:5554 8D 9F 03 + inc $0470 ; CPU:$D557 PRG:5557 EE 70 04 + lda #$02 ; CPU:$D55A PRG:555A A9 02 + sta Zp29 ; CPU:$D55C PRG:555C 85 29 + lda #$00 ; CPU:$D55E PRG:555E A9 00 + sta $0187 ; CPU:$D560 PRG:5560 8D 87 01 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop12: + rts ; CPU:$D563 PRG:5563 60 +; ---- data $D564-$D564 (1 bytes) ---- + .byte $60 ; CPU:$D564 PRG:5564 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D565 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D565: + lda GameMode ; CPU:$D565 PRG:5565 A5 8C + asl a ; CPU:$D567 PRG:5567 0A + tay ; CPU:$D568 PRG:5568 A8 + lda $D9CF,y ; CPU:$D569 PRG:5569 B9 CF D9 + sta Zp10 ; CPU:$D56C PRG:556C 85 10 + lda $D9D0,y ; CPU:$D56E PRG:556E B9 D0 D9 + sta Zp11 ; CPU:$D571 PRG:5571 85 11 + lda #$BF ; CPU:$D573 PRG:5573 A9 BF + sta Zp12 ; CPU:$D575 PRG:5575 85 12 + lda #$04 ; CPU:$D577 PRG:5577 A9 04 + sta Zp13 ; CPU:$D579 PRG:5579 85 13 + lda #$DF ; CPU:$D57B PRG:557B A9 DF + sta Zp14 ; CPU:$D57D PRG:557D 85 14 + lda #$04 ; CPU:$D57F PRG:557F A9 04 + sta Zp15 ; CPU:$D581 PRG:5581 85 15 + lda $D9E7,y ; CPU:$D583 PRG:5583 B9 E7 D9 + sta Zp16 ; CPU:$D586 PRG:5586 85 16 + lda $D9E8,y ; CPU:$D588 PRG:5588 B9 E8 D9 + sta Zp17 ; CPU:$D58B PRG:558B 85 17 + lda #$09 ; CPU:$D58D PRG:558D A9 09 + sta Zp0F ; CPU:$D58F PRG:558F 85 0F + jsr Sub_D907 ; CPU:$D591 PRG:5591 20 07 D9 + lda GameMode ; CPU:$D594 PRG:5594 A5 8C + asl a ; CPU:$D596 PRG:5596 0A + tay ; CPU:$D597 PRG:5597 A8 + lda $D9CF,y ; CPU:$D598 PRG:5598 B9 CF D9 + sta Zp10 ; CPU:$D59B PRG:559B 85 10 + lda $D9D0,y ; CPU:$D59D PRG:559D B9 D0 D9 + sta Zp11 ; CPU:$D5A0 PRG:55A0 85 11 + lda Zp10 ; CPU:$D5A2 PRG:55A2 A5 10 + clc ; CPU:$D5A4 PRG:55A4 18 + adc #$10 ; CPU:$D5A5 PRG:55A5 69 10 + sta Zp12 ; CPU:$D5A7 PRG:55A7 85 12 + lda Zp11 ; CPU:$D5A9 PRG:55A9 A5 11 + adc #$00 ; CPU:$D5AB PRG:55AB 69 00 + sta Zp13 ; CPU:$D5AD PRG:55AD 85 13 + lda #$8F ; CPU:$D5AF PRG:55AF A9 8F + sta Zp14 ; CPU:$D5B1 PRG:55B1 85 14 + lda #$07 ; CPU:$D5B3 PRG:55B3 A9 07 + sta Zp15 ; CPU:$D5B5 PRG:55B5 85 15 + lda #$A0 ; CPU:$D5B7 PRG:55B7 A9 A0 + sta Zp16 ; CPU:$D5B9 PRG:55B9 85 16 + jsr Sub_D977 ; CPU:$D5BB PRG:55BB 20 77 D9 + lda GameMode ; CPU:$D5BE PRG:55BE A5 8C + asl a ; CPU:$D5C0 PRG:55C0 0A + tay ; CPU:$D5C1 PRG:55C1 A8 + lda $D9DF,y ; CPU:$D5C2 PRG:55C2 B9 DF D9 + sta Zp10 ; CPU:$D5C5 PRG:55C5 85 10 + lda $D9E0,y ; CPU:$D5C7 PRG:55C7 B9 E0 D9 + sta Zp11 ; CPU:$D5CA PRG:55CA 85 11 + lda #$BF ; CPU:$D5CC PRG:55CC A9 BF + sta Zp12 ; CPU:$D5CE PRG:55CE 85 12 + lda #$03 ; CPU:$D5D0 PRG:55D0 A9 03 + sta Zp13 ; CPU:$D5D2 PRG:55D2 85 13 + lda #$DF ; CPU:$D5D4 PRG:55D4 A9 DF + sta Zp14 ; CPU:$D5D6 PRG:55D6 85 14 + lda #$03 ; CPU:$D5D8 PRG:55D8 A9 03 + sta Zp15 ; CPU:$D5DA PRG:55DA 85 15 + lda $D9F7,y ; CPU:$D5DC PRG:55DC B9 F7 D9 + sta Zp16 ; CPU:$D5DF PRG:55DF 85 16 + lda $D9F8,y ; CPU:$D5E1 PRG:55E1 B9 F8 D9 + sta Zp17 ; CPU:$D5E4 PRG:55E4 85 17 + lda #$04 ; CPU:$D5E6 PRG:55E6 A9 04 + sta Zp0F ; CPU:$D5E8 PRG:55E8 85 0F + jsr Sub_D907 ; CPU:$D5EA PRG:55EA 20 07 D9 + lda GameMode ; CPU:$D5ED PRG:55ED A5 8C + asl a ; CPU:$D5EF PRG:55EF 0A + tay ; CPU:$D5F0 PRG:55F0 A8 + lda $D9DF,y ; CPU:$D5F1 PRG:55F1 B9 DF D9 + sta Zp10 ; CPU:$D5F4 PRG:55F4 85 10 + lda $D9E0,y ; CPU:$D5F6 PRG:55F6 B9 E0 D9 + sta Zp11 ; CPU:$D5F9 PRG:55F9 85 11 + lda Zp10 ; CPU:$D5FB PRG:55FB A5 10 + clc ; CPU:$D5FD PRG:55FD 18 + adc #$10 ; CPU:$D5FE PRG:55FE 69 10 + sta Zp12 ; CPU:$D600 PRG:5600 85 12 + lda Zp11 ; CPU:$D602 PRG:5602 A5 11 + adc #$00 ; CPU:$D604 PRG:5604 69 00 + sta Zp13 ; CPU:$D606 PRG:5606 85 13 + lda #$7F ; CPU:$D608 PRG:5608 A9 7F + sta Zp14 ; CPU:$D60A PRG:560A 85 14 + lda #$07 ; CPU:$D60C PRG:560C A9 07 + sta Zp15 ; CPU:$D60E PRG:560E 85 15 + lda #$40 ; CPU:$D610 PRG:5610 A9 40 + sta Zp16 ; CPU:$D612 PRG:5612 85 16 + jsr Sub_D977 ; CPU:$D614 PRG:5614 20 77 D9 + jsr Sub_D770 ; CPU:$D617 PRG:5617 20 70 D7 + lda #$01 ; CPU:$D61A PRG:561A A9 01 + sta Zp23 ; CPU:$D61C PRG:561C 85 23 + lda #$03 ; CPU:$D61E PRG:561E A9 03 + jsr DelayFrames ; CPU:$D620 PRG:5620 20 F5 F7 + lda GameMode ; CPU:$D623 PRG:5623 A5 8C + asl a ; CPU:$D625 PRG:5625 0A + tay ; CPU:$D626 PRG:5626 A8 + lda $D9D7,y ; CPU:$D627 PRG:5627 B9 D7 D9 + sta Zp10 ; CPU:$D62A PRG:562A 85 10 + lda $D9D8,y ; CPU:$D62C PRG:562C B9 D8 D9 + sta Zp11 ; CPU:$D62F PRG:562F 85 11 + lda #$BF ; CPU:$D631 PRG:5631 A9 BF + sta Zp12 ; CPU:$D633 PRG:5633 85 12 + lda #$03 ; CPU:$D635 PRG:5635 A9 03 + sta Zp13 ; CPU:$D637 PRG:5637 85 13 + lda #$DF ; CPU:$D639 PRG:5639 A9 DF + sta Zp14 ; CPU:$D63B PRG:563B 85 14 + lda #$03 ; CPU:$D63D PRG:563D A9 03 + sta Zp15 ; CPU:$D63F PRG:563F 85 15 + lda $D9EF,y ; CPU:$D641 PRG:5641 B9 EF D9 + sta Zp16 ; CPU:$D644 PRG:5644 85 16 + lda $D9F0,y ; CPU:$D646 PRG:5646 B9 F0 D9 + sta Zp17 ; CPU:$D649 PRG:5649 85 17 + lda #$07 ; CPU:$D64B PRG:564B A9 07 + sta Zp0F ; CPU:$D64D PRG:564D 85 0F + jsr Sub_D907 ; CPU:$D64F PRG:564F 20 07 D9 + lda GameMode ; CPU:$D652 PRG:5652 A5 8C + asl a ; CPU:$D654 PRG:5654 0A + tay ; CPU:$D655 PRG:5655 A8 + lda $D9D7,y ; CPU:$D656 PRG:5656 B9 D7 D9 + sta Zp10 ; CPU:$D659 PRG:5659 85 10 + lda $D9D8,y ; CPU:$D65B PRG:565B B9 D8 D9 + sta Zp11 ; CPU:$D65E PRG:565E 85 11 + lda Zp10 ; CPU:$D660 PRG:5660 A5 10 + clc ; CPU:$D662 PRG:5662 18 + adc #$10 ; CPU:$D663 PRG:5663 69 10 + sta Zp12 ; CPU:$D665 PRG:5665 85 12 + lda Zp11 ; CPU:$D667 PRG:5667 A5 11 + adc #$00 ; CPU:$D669 PRG:5669 69 00 + sta Zp13 ; CPU:$D66B PRG:566B 85 13 + lda #$7F ; CPU:$D66D PRG:566D A9 7F + sta Zp14 ; CPU:$D66F PRG:566F 85 14 + lda #$07 ; CPU:$D671 PRG:5671 A9 07 + sta Zp15 ; CPU:$D673 PRG:5673 85 15 + lda #$80 ; CPU:$D675 PRG:5675 A9 80 + sta Zp16 ; CPU:$D677 PRG:5677 85 16 + jsr Sub_D977 ; CPU:$D679 PRG:5679 20 77 D9 + lda #$02 ; CPU:$D67C PRG:567C A9 02 + sta Zp23 ; CPU:$D67E PRG:567E 85 23 + lda #$03 ; CPU:$D680 PRG:5680 A9 03 + jsr DelayFrames ; CPU:$D682 PRG:5682 20 F5 F7 + rts ; CPU:$D685 PRG:5685 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D686 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D686: + lda $0185 ; CPU:$D686 PRG:5686 AD 85 01 + cmp #$02 ; CPU:$D689 PRG:5689 C9 02 + bne EventTaskInit_Loop13 ; CPU:$D68B PRG:568B D0 03 + jmp Sub_D6F4 ; CPU:$D68D PRG:568D 4C F4 D6 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop13: + lda #$00 ; CPU:$D690 PRG:5690 A9 00 + sta $0185 ; CPU:$D692 PRG:5692 8D 85 01 + lda $017F ; CPU:$D695 PRG:5695 AD 7F 01 + cmp #$07 ; CPU:$D698 PRG:5698 C9 07 + bcs EventTaskInit_Loop15 ; CPU:$D69A PRG:569A B0 41 + lda $017E ; CPU:$D69C PRG:569C AD 7E 01 + and #$30 ; CPU:$D69F PRG:569F 29 30 + beq EventTaskInit_Loop14 ; CPU:$D6A1 PRG:56A1 F0 1F + lda $017D ; CPU:$D6A3 PRG:56A3 AD 7D 01 + clc ; CPU:$D6A6 PRG:56A6 18 + adc #$20 ; CPU:$D6A7 PRG:56A7 69 20 + sta $017D ; CPU:$D6A9 PRG:56A9 8D 7D 01 + lda $017E ; CPU:$D6AC PRG:56AC AD 7E 01 + adc #$00 ; CPU:$D6AF PRG:56AF 69 00 + and #$0F ; CPU:$D6B1 PRG:56B1 29 0F + sta $017E ; CPU:$D6B3 PRG:56B3 8D 7E 01 + lda $0419 ; CPU:$D6B6 PRG:56B6 AD 19 04 + sec ; CPU:$D6B9 PRG:56B9 38 + sbc #$04 ; CPU:$D6BA PRG:56BA E9 04 + sta $0419 ; CPU:$D6BC PRG:56BC 8D 19 04 + jmp Sub_D6D3 ; CPU:$D6BF PRG:56BF 4C D3 D6 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop14: + lda $0419 ; CPU:$D6C2 PRG:56C2 AD 19 04 + sec ; CPU:$D6C5 PRG:56C5 38 + sbc #$04 ; CPU:$D6C6 PRG:56C6 E9 04 + sta $0419 ; CPU:$D6C8 PRG:56C8 8D 19 04 + lda $017E ; CPU:$D6CB PRG:56CB AD 7E 01 + ora #$30 ; CPU:$D6CE PRG:56CE 09 30 + sta $017E ; CPU:$D6D0 PRG:56D0 8D 7E 01 +; ----------------------------------------------------------------------------- +; Routine: Sub_D6D3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D6D3: + inc $017F ; CPU:$D6D3 PRG:56D3 EE 7F 01 + lda $017F ; CPU:$D6D6 PRG:56D6 AD 7F 01 + cmp #$07 ; CPU:$D6D9 PRG:56D9 C9 07 + bcc EventTaskInit_Loop16 ; CPU:$D6DB PRG:56DB 90 16 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop15: + lda #$07 ; CPU:$D6DD PRG:56DD A9 07 + sta $017F ; CPU:$D6DF PRG:56DF 8D 7F 01 + lda #$60 ; CPU:$D6E2 PRG:56E2 A9 60 + sta $017D ; CPU:$D6E4 PRG:56E4 8D 7D 01 + lda #$28 ; CPU:$D6E7 PRG:56E7 A9 28 + and #$0F ; CPU:$D6E9 PRG:56E9 29 0F + sta $017E ; CPU:$D6EB PRG:56EB 8D 7E 01 + lda #$41 ; CPU:$D6EE PRG:56EE A9 41 + sta $0419 ; CPU:$D6F0 PRG:56F0 8D 19 04 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop16: + rts ; CPU:$D6F3 PRG:56F3 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D6F4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D6F4: + lda #$00 ; CPU:$D6F4 PRG:56F4 A9 00 + sta $0185 ; CPU:$D6F6 PRG:56F6 8D 85 01 + lda $017F ; CPU:$D6F9 PRG:56F9 AD 7F 01 + beq EventTaskInit_Loop17 ; CPU:$D6FC PRG:56FC F0 23 + cmp #$04 ; CPU:$D6FE PRG:56FE C9 04 + beq EventTaskInit_Loop17 ; CPU:$D700 PRG:5700 F0 1F + lda $017D ; CPU:$D702 PRG:5702 AD 7D 01 + sec ; CPU:$D705 PRG:5705 38 + sbc #$20 ; CPU:$D706 PRG:5706 E9 20 + sta $017D ; CPU:$D708 PRG:5708 8D 7D 01 + lda $0419 ; CPU:$D70B PRG:570B AD 19 04 + clc ; CPU:$D70E PRG:570E 18 + adc #$08 ; CPU:$D70F PRG:570F 69 08 + sta $0419 ; CPU:$D711 PRG:5711 8D 19 04 + dec $017F ; CPU:$D714 PRG:5714 CE 7F 01 + lda $017F ; CPU:$D717 PRG:5717 AD 7F 01 + beq EventTaskInit_Loop17 ; CPU:$D71A PRG:571A F0 05 + cmp #$04 ; CPU:$D71C PRG:571C C9 04 + beq EventTaskInit_Loop17 ; CPU:$D71E PRG:571E F0 01 + rts ; CPU:$D720 PRG:5720 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop17: + lda #$00 ; CPU:$D721 PRG:5721 A9 00 + sta $017D ; CPU:$D723 PRG:5723 8D 7D 01 + lda #$28 ; CPU:$D726 PRG:5726 A9 28 + and #$0F ; CPU:$D728 PRG:5728 29 0F + sta $017E ; CPU:$D72A PRG:572A 8D 7E 01 + lda #$59 ; CPU:$D72D PRG:572D A9 59 + sta $0419 ; CPU:$D72F PRG:572F 8D 19 04 + lda #$04 ; CPU:$D732 PRG:5732 A9 04 + sta $017F ; CPU:$D734 PRG:5734 8D 7F 01 + rts ; CPU:$D737 PRG:5737 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D738 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D738: + lda GameMode ; CPU:$D738 PRG:5738 A5 8C + cmp #$02 ; CPU:$D73A PRG:573A C9 02 + bcc EventTaskInit_Loop18 ; CPU:$D73C PRG:573C 90 1B + lda Zp0E,x ; CPU:$D73E PRG:573E B5 0E + and #$08 ; CPU:$D740 PRG:5740 29 08 + bne EventTaskInit_Loop19 ; CPU:$D742 PRG:5742 D0 16 + lda #$85 ; CPU:$D744 PRG:5744 A9 85 + sta $02E9 ; CPU:$D746 PRG:5746 8D E9 02 + lda $0419 ; CPU:$D749 PRG:5749 AD 19 04 + sta $02E8 ; CPU:$D74C PRG:574C 8D E8 02 + lda #$7B ; CPU:$D74F PRG:574F A9 7B + sta $02EB ; CPU:$D751 PRG:5751 8D EB 02 + lda #$03 ; CPU:$D754 PRG:5754 A9 03 + sta $02EA ; CPU:$D756 PRG:5756 8D EA 02 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop18: + rts ; CPU:$D759 PRG:5759 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop19: + lda #$87 ; CPU:$D75A PRG:575A A9 87 + sta $02E9 ; CPU:$D75C PRG:575C 8D E9 02 + lda $0419 ; CPU:$D75F PRG:575F AD 19 04 + sta $02E8 ; CPU:$D762 PRG:5762 8D E8 02 + lda #$7B ; CPU:$D765 PRG:5765 A9 7B + sta $02EB ; CPU:$D767 PRG:5767 8D EB 02 + lda #$03 ; CPU:$D76A PRG:576A A9 03 + sta $02EA ; CPU:$D76C PRG:576C 8D EA 02 + rts ; CPU:$D76F PRG:576F 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D770 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D770: + lda GameMode ; CPU:$D770 PRG:5770 A5 8C + cmp #$02 ; CPU:$D772 PRG:5772 C9 02 + bcc EventTaskInit_Loop22 ; CPU:$D774 PRG:5774 90 3D + lda $0391 ; CPU:$D776 PRG:5776 AD 91 03 + and #$07 ; CPU:$D779 PRG:5779 29 07 + sec ; CPU:$D77B PRG:577B 38 + sbc #$01 ; CPU:$D77C PRG:577C E9 01 + asl a ; CPU:$D77E PRG:577E 0A + asl a ; CPU:$D77F PRG:577F 0A + asl a ; CPU:$D780 PRG:5780 0A + asl a ; CPU:$D781 PRG:5781 0A + tax ; CPU:$D782 PRG:5782 AA + stx Zp0B ; CPU:$D783 PRG:5783 86 0B + lda Zp9A,x ; CPU:$D785 PRG:5785 B5 9A + bne EventTaskInit_Loop20 ; CPU:$D787 PRG:5787 D0 03 + jmp Sub_D7CF ; CPU:$D789 PRG:5789 4C CF D7 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop20: + ldx Zp0B ; CPU:$D78C PRG:578C A6 0B + ldy #$00 ; CPU:$D78E PRG:578E A0 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero4: + lda Zp9A,x ; CPU:$D790 PRG:5790 B5 9A + sta $0417,y ; CPU:$D792 PRG:5792 99 17 04 + inx ; CPU:$D795 PRG:5795 E8 + iny ; CPU:$D796 PRG:5796 C8 + cpy #$07 ; CPU:$D797 PRG:5797 C0 07 + bne EventTaskInit_OnNonzero4 ; CPU:$D799 PRG:5799 D0 F5 + ldx Zp0B ; CPU:$D79B PRG:579B A6 0B + lda ZpA2,x ; CPU:$D79D PRG:579D B5 A2 + beq EventTaskInit_Loop21 ; CPU:$D79F PRG:579F F0 0F + ldx Zp0B ; CPU:$D7A1 PRG:57A1 A6 0B + ldy #$00 ; CPU:$D7A3 PRG:57A3 A0 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero5: + lda ZpA2,x ; CPU:$D7A5 PRG:57A5 B5 A2 + sta $0457,y ; CPU:$D7A7 PRG:57A7 99 57 04 + inx ; CPU:$D7AA PRG:57AA E8 + iny ; CPU:$D7AB PRG:57AB C8 + cpy #$07 ; CPU:$D7AC PRG:57AC C0 07 + bne EventTaskInit_OnNonzero5 ; CPU:$D7AE PRG:57AE D0 F5 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop21: + jmp Sub_D7CF ; CPU:$D7B0 PRG:57B0 4C CF D7 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop22: + lda GameMode ; CPU:$D7B3 PRG:57B3 A5 8C + asl a ; CPU:$D7B5 PRG:57B5 0A + asl a ; CPU:$D7B6 PRG:57B6 0A + asl a ; CPU:$D7B7 PRG:57B7 0A + tay ; CPU:$D7B8 PRG:57B8 A8 + lda $D9FF,y ; CPU:$D7B9 PRG:57B9 B9 FF D9 + sta Zp10 ; CPU:$D7BC PRG:57BC 85 10 + ldx #$00 ; CPU:$D7BE PRG:57BE A2 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero6: + lda $DA00,y ; CPU:$D7C0 PRG:57C0 B9 00 DA + sta $040C,x ; CPU:$D7C3 PRG:57C3 9D 0C 04 + iny ; CPU:$D7C6 PRG:57C6 C8 + inx ; CPU:$D7C7 PRG:57C7 E8 + cpx Zp10 ; CPU:$D7C8 PRG:57C8 E4 10 + bne EventTaskInit_OnNonzero6 ; CPU:$D7CA PRG:57CA D0 F4 + jmp EventTaskInit_Loop23 ; CPU:$D7CC PRG:57CC 4C 01 D8 +; ----------------------------------------------------------------------------- +; Routine: Sub_D7CF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D7CF: + lda GameMode ; CPU:$D7CF PRG:57CF A5 8C + sec ; CPU:$D7D1 PRG:57D1 38 + sbc #$02 ; CPU:$D7D2 PRG:57D2 E9 02 + asl a ; CPU:$D7D4 PRG:57D4 0A + asl a ; CPU:$D7D5 PRG:57D5 0A + asl a ; CPU:$D7D6 PRG:57D6 0A + asl a ; CPU:$D7D7 PRG:57D7 0A + tay ; CPU:$D7D8 PRG:57D8 A8 + ldx #$00 ; CPU:$D7D9 PRG:57D9 A2 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero7: + lda $DA11,y ; CPU:$D7DB PRG:57DB B9 11 DA + sta $040D,x ; CPU:$D7DE PRG:57DE 9D 0D 04 + iny ; CPU:$D7E1 PRG:57E1 C8 + inx ; CPU:$D7E2 PRG:57E2 E8 + cpx #$07 ; CPU:$D7E3 PRG:57E3 E0 07 + bne EventTaskInit_OnNonzero7 ; CPU:$D7E5 PRG:57E5 D0 F4 + ldx #$00 ; CPU:$D7E7 PRG:57E7 A2 00 + iny ; CPU:$D7E9 PRG:57E9 C8 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero8: + lda $DA11,y ; CPU:$D7EA PRG:57EA B9 11 DA + sta $042D,x ; CPU:$D7ED PRG:57ED 9D 2D 04 + iny ; CPU:$D7F0 PRG:57F0 C8 + inx ; CPU:$D7F1 PRG:57F1 E8 + cpx #$07 ; CPU:$D7F2 PRG:57F2 E0 07 + bne EventTaskInit_OnNonzero8 ; CPU:$D7F4 PRG:57F4 D0 F4 + lda GameMode ; CPU:$D7F6 PRG:57F6 A5 8C + cmp #$03 ; CPU:$D7F8 PRG:57F8 C9 03 + bne EventTaskInit_Loop23 ; CPU:$D7FA PRG:57FA D0 05 + lda #$B9 ; CPU:$D7FC PRG:57FC A9 B9 + sta $04A7 ; CPU:$D7FE PRG:57FE 8D A7 04 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop23: + lda #$00 ; CPU:$D801 PRG:5801 A9 00 + sta Zp08 ; CPU:$D803 PRG:5803 85 08 + lda $0391 ; CPU:$D805 PRG:5805 AD 91 03 + clc ; CPU:$D808 PRG:5808 18 + adc #$01 ; CPU:$D809 PRG:5809 69 01 + sec ; CPU:$D80B PRG:580B 38 + sbc Zp83 ; CPU:$D80C PRG:580C E5 83 + tay ; CPU:$D80E PRG:580E A8 +; ----------------------------------------------------------------------------- +; Routine: Sub_D80F +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D80F: + dey ; CPU:$D80F PRG:580F 88 + cpy #$00 ; CPU:$D810 PRG:5810 C0 00 + beq EventTaskInit_Loop24 ; CPU:$D812 PRG:5812 F0 0E + cpy #$FF ; CPU:$D814 PRG:5814 C0 FF + beq EventTaskInit_Loop24 ; CPU:$D816 PRG:5816 F0 0A + lda Zp08 ; CPU:$D818 PRG:5818 A5 08 + clc ; CPU:$D81A PRG:581A 18 + adc #$0A ; CPU:$D81B PRG:581B 69 0A + sta Zp08 ; CPU:$D81D PRG:581D 85 08 + jmp Sub_D80F ; CPU:$D81F PRG:581F 4C 0F D8 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop24 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop24: + lda $0391 ; CPU:$D822 PRG:5822 AD 91 03 + beq EventTaskInit_Loop26 ; CPU:$D825 PRG:5825 F0 14 + ldy Zp08 ; CPU:$D827 PRG:5827 A4 08 + ldx #$00 ; CPU:$D829 PRG:5829 A2 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero9: + lda $010A,y ; CPU:$D82B PRG:582B B9 0A 01 + bne EventTaskInit_Loop25 ; CPU:$D82E PRG:582E D0 02 + lda #$03 ; CPU:$D830 PRG:5830 A9 03 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop25 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop25: + sta $0423,x ; CPU:$D832 PRG:5832 9D 23 04 + iny ; CPU:$D835 PRG:5835 C8 + inx ; CPU:$D836 PRG:5836 E8 + cpx #$0A ; CPU:$D837 PRG:5837 E0 0A + bne EventTaskInit_OnNonzero9 ; CPU:$D839 PRG:5839 D0 F0 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop26 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop26: + jsr Sub_9964 ; CPU:$D83B PRG:583B 20 64 99 + lda GameMode ; CPU:$D83E PRG:583E A5 8C + cmp #$02 ; CPU:$D840 PRG:5840 C9 02 + bcc EventTaskInit_Loop27 ; CPU:$D842 PRG:5842 90 03 + jmp Sub_D889 ; CPU:$D844 PRG:5844 4C 89 D8 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop27 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop27: + lda #$00 ; CPU:$D847 PRG:5847 A9 00 + sta Zp08 ; CPU:$D849 PRG:5849 85 08 + lda $0392 ; CPU:$D84B PRG:584B AD 92 03 + clc ; CPU:$D84E PRG:584E 18 + adc #$01 ; CPU:$D84F PRG:584F 69 01 + sec ; CPU:$D851 PRG:5851 38 + sbc Zp83 ; CPU:$D852 PRG:5852 E5 83 + tay ; CPU:$D854 PRG:5854 A8 +; ----------------------------------------------------------------------------- +; Routine: Sub_D855 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D855: + dey ; CPU:$D855 PRG:5855 88 + cpy #$00 ; CPU:$D856 PRG:5856 C0 00 + beq EventTaskInit_Loop28 ; CPU:$D858 PRG:5858 F0 0E + cpy #$FF ; CPU:$D85A PRG:585A C0 FF + beq EventTaskInit_Loop28 ; CPU:$D85C PRG:585C F0 0A + lda Zp08 ; CPU:$D85E PRG:585E A5 08 + clc ; CPU:$D860 PRG:5860 18 + adc #$0A ; CPU:$D861 PRG:5861 69 0A + sta Zp08 ; CPU:$D863 PRG:5863 85 08 + jmp Sub_D855 ; CPU:$D865 PRG:5865 4C 55 D8 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop28 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop28: + lda $0308 ; CPU:$D868 PRG:5868 AD 08 03 + beq EventTaskInit_Loop31 ; CPU:$D86B PRG:586B F0 30 + lda $0392 ; CPU:$D86D PRG:586D AD 92 03 + beq EventTaskInit_Loop30 ; CPU:$D870 PRG:5870 F0 1A + ldy Zp08 ; CPU:$D872 PRG:5872 A4 08 + ldx #$00 ; CPU:$D874 PRG:5874 A2 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero10: + lda $010A,y ; CPU:$D876 PRG:5876 B9 0A 01 + bne EventTaskInit_Loop29 ; CPU:$D879 PRG:5879 D0 02 + lda #$03 ; CPU:$D87B PRG:587B A9 03 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop29 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop29: + sta $0434,x ; CPU:$D87D PRG:587D 9D 34 04 + iny ; CPU:$D880 PRG:5880 C8 + inx ; CPU:$D881 PRG:5881 E8 + cpx #$0A ; CPU:$D882 PRG:5882 E0 0A + bne EventTaskInit_OnNonzero10 ; CPU:$D884 PRG:5884 D0 F0 + jsr Sub_9964 ; CPU:$D886 PRG:5886 20 64 99 +; ----------------------------------------------------------------------------- +; Routine: Sub_D889 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D889: + ldx #$3B ; CPU:$D889 PRG:5889 A2 3B + rts ; CPU:$D88B PRG:588B 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop30 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop30: + ldy #$0A ; CPU:$D88C PRG:588C A0 0A +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero11: + lda $9C7E,y ; CPU:$D88E PRG:588E B9 7E 9C + sta $0433,y ; CPU:$D891 PRG:5891 99 33 04 + dey ; CPU:$D894 PRG:5894 88 + bne EventTaskInit_OnNonzero11 ; CPU:$D895 PRG:5895 D0 F7 + jsr Sub_9964 ; CPU:$D897 PRG:5897 20 64 99 + ldx #$3B ; CPU:$D89A PRG:589A A2 3B + rts ; CPU:$D89C PRG:589C 60 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop31 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop31: + lda $0392 ; CPU:$D89D PRG:589D AD 92 03 + and #$0F ; CPU:$D8A0 PRG:58A0 29 0F + asl a ; CPU:$D8A2 PRG:58A2 0A + asl a ; CPU:$D8A3 PRG:58A3 0A + asl a ; CPU:$D8A4 PRG:58A4 0A + tax ; CPU:$D8A5 PRG:58A5 AA + ldy #$00 ; CPU:$D8A6 PRG:58A6 A0 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero12: + lda $D8BA,x ; CPU:$D8A8 PRG:58A8 BD BA D8 + sta $0434,y ; CPU:$D8AB PRG:58AB 99 34 04 + inx ; CPU:$D8AE PRG:58AE E8 + iny ; CPU:$D8AF PRG:58AF C8 + cpy #$08 ; CPU:$D8B0 PRG:58B0 C0 08 + bne EventTaskInit_OnNonzero12 ; CPU:$D8B2 PRG:58B2 D0 F4 + jsr Sub_9964 ; CPU:$D8B4 PRG:58B4 20 64 99 + ldx #$3B ; CPU:$D8B7 PRG:58B7 A2 3B + rts ; CPU:$D8B9 PRG:58B9 60 +; ---- data $D8BA-$D8F1 (56 bytes) ---- +; referenced by `lda $D8BA,y` at $9BDC (operand $D8BA falls inside this region) +; referenced by `lda $D8BA,x` at $D8A8 (operand $D8BA falls inside this region) + .byte $03, $37, $38, $36, $37, $2F, $28, $03, $03, $26, $28, $24, $36, $03, $03, $03 ; CPU:$D8BA PRG:58BA 03 37 38 36 37 2F 28 03 03 26 28 24 36 03 03 03 + .byte $03, $2B, $31, $36, $35, $28, $03, $03, $03, $36, $24, $26, $26, $2C, $37, $03 ; CPU:$D8CA PRG:58CA 03 2B 31 36 35 28 03 03 03 36 24 26 26 2C 37 03 + .byte $03, $26, $31, $26, $25, $24, $37, $03, $03, $25, $2B, $28, $28, $37, $24, $2B ; CPU:$D8DA PRG:58DA 03 26 31 26 25 24 37 03 03 25 2B 28 28 37 24 2B + .byte $03, $25, $2B, $28, $28, $37, $24, $2B ; CPU:$D8EA PRG:58EA 03 25 2B 28 28 37 24 2B +; ----------------------------------------------------------------------------- +; Routine: Sub_D8F2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D8F2: + ldy #$00 ; CPU:$D8F2 PRG:58F2 A0 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero13: + lda $D900,y ; CPU:$D8F4 PRG:58F4 B9 00 D9 + sta $04F4,y ; CPU:$D8F7 PRG:58F7 99 F4 04 + iny ; CPU:$D8FA PRG:58FA C8 + cpy #$07 ; CPU:$D8FB PRG:58FB C0 07 + bne EventTaskInit_OnNonzero13 ; CPU:$D8FD PRG:58FD D0 F5 + rts ; CPU:$D8FF PRG:58FF 60 +; ---- data $D900-$D906 (7 bytes) ---- +; referenced by `lda $D900,y` at $D8F4 (operand $D900 falls inside this region) + .byte $03, $33, $2F, $24, $3C, $28, $36 ; CPU:$D900 PRG:5900 03 33 2F 24 3C 28 36 +; ----------------------------------------------------------------------------- +; Routine: Sub_D907 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D907: + lda #$00 ; CPU:$D907 PRG:5907 A9 00 + sta Zp08 ; CPU:$D909 PRG:5909 85 08 + sta Zp09 ; CPU:$D90B PRG:590B 85 09 + sta Zp0A ; CPU:$D90D PRG:590D 85 0A +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero14: + ldy Zp09 ; CPU:$D90F PRG:590F A4 09 + lda (Zp10),y ; CPU:$D911 PRG:5911 B1 10 + and #$3F ; CPU:$D913 PRG:5913 29 3F + asl a ; CPU:$D915 PRG:5915 0A + asl a ; CPU:$D916 PRG:5916 0A + sta Zp0E ; CPU:$D917 PRG:5917 85 0E + iny ; CPU:$D919 PRG:5919 C8 + sty Zp09 ; CPU:$D91A PRG:591A 84 09 + ldy Zp0E ; CPU:$D91C PRG:591C A4 0E + lda (Zp16),y ; CPU:$D91E PRG:591E B1 16 + ldy Zp08 ; CPU:$D920 PRG:5920 A4 08 + sta (Zp12),y ; CPU:$D922 PRG:5922 91 12 + inc Zp0E ; CPU:$D924 PRG:5924 E6 0E + inc Zp08 ; CPU:$D926 PRG:5926 E6 08 + ldy Zp0E ; CPU:$D928 PRG:5928 A4 0E + lda (Zp16),y ; CPU:$D92A PRG:592A B1 16 + ldy Zp08 ; CPU:$D92C PRG:592C A4 08 + sta (Zp12),y ; CPU:$D92E PRG:592E 91 12 + inc Zp0E ; CPU:$D930 PRG:5930 E6 0E + dec Zp08 ; CPU:$D932 PRG:5932 C6 08 + ldy Zp0E ; CPU:$D934 PRG:5934 A4 0E + lda (Zp16),y ; CPU:$D936 PRG:5936 B1 16 + ldy Zp08 ; CPU:$D938 PRG:5938 A4 08 + sta (Zp14),y ; CPU:$D93A PRG:593A 91 14 + inc Zp08 ; CPU:$D93C PRG:593C E6 08 + inc Zp0E ; CPU:$D93E PRG:593E E6 0E + ldy Zp0E ; CPU:$D940 PRG:5940 A4 0E + lda (Zp16),y ; CPU:$D942 PRG:5942 B1 16 + ldy Zp08 ; CPU:$D944 PRG:5944 A4 08 + sta (Zp14),y ; CPU:$D946 PRG:5946 91 14 + inc Zp08 ; CPU:$D948 PRG:5948 E6 08 + lda Zp08 ; CPU:$D94A PRG:594A A5 08 + cmp #$20 ; CPU:$D94C PRG:594C C9 20 + bne EventTaskInit_OnNonzero14 ; CPU:$D94E PRG:594E D0 BF + lda #$00 ; CPU:$D950 PRG:5950 A9 00 + sta Zp08 ; CPU:$D952 PRG:5952 85 08 + lda Zp12 ; CPU:$D954 PRG:5954 A5 12 + clc ; CPU:$D956 PRG:5956 18 + adc #$40 ; CPU:$D957 PRG:5957 69 40 + sta Zp12 ; CPU:$D959 PRG:5959 85 12 + lda Zp13 ; CPU:$D95B PRG:595B A5 13 + adc #$00 ; CPU:$D95D PRG:595D 69 00 + sta Zp13 ; CPU:$D95F PRG:595F 85 13 + lda Zp14 ; CPU:$D961 PRG:5961 A5 14 + clc ; CPU:$D963 PRG:5963 18 + adc #$40 ; CPU:$D964 PRG:5964 69 40 + sta Zp14 ; CPU:$D966 PRG:5966 85 14 + lda Zp15 ; CPU:$D968 PRG:5968 A5 15 + adc #$00 ; CPU:$D96A PRG:596A 69 00 + sta Zp15 ; CPU:$D96C PRG:596C 85 15 + inc Zp0A ; CPU:$D96E PRG:596E E6 0A + lda Zp0A ; CPU:$D970 PRG:5970 A5 0A + cmp Zp0F ; CPU:$D972 PRG:5972 C5 0F + bne EventTaskInit_OnNonzero14 ; CPU:$D974 PRG:5974 D0 99 + rts ; CPU:$D976 PRG:5976 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D977 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D977: + ldy #$00 ; CPU:$D977 PRG:5977 A0 00 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_OnNonzero15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_OnNonzero15: + lda (Zp10),y ; CPU:$D979 PRG:5979 B1 10 + rol a ; CPU:$D97B PRG:597B 2A + rol a ; CPU:$D97C PRG:597C 2A + rol a ; CPU:$D97D PRG:597D 2A + and #$03 ; CPU:$D97E PRG:597E 29 03 + sty Zp08 ; CPU:$D980 PRG:5980 84 08 + ldy #$00 ; CPU:$D982 PRG:5982 A0 00 + sta (Zp14),y ; CPU:$D984 PRG:5984 91 14 + ldy Zp08 ; CPU:$D986 PRG:5986 A4 08 + lda (Zp12),y ; CPU:$D988 PRG:5988 B1 12 + sty Zp08 ; CPU:$D98A PRG:598A 84 08 + and #$C0 ; CPU:$D98C PRG:598C 29 C0 + lsr a ; CPU:$D98E PRG:598E 4A + lsr a ; CPU:$D98F PRG:598F 4A + ldy #$00 ; CPU:$D990 PRG:5990 A0 00 + ora (Zp14),y ; CPU:$D992 PRG:5992 11 14 + sta (Zp14),y ; CPU:$D994 PRG:5994 91 14 + ldy Zp08 ; CPU:$D996 PRG:5996 A4 08 + iny ; CPU:$D998 PRG:5998 C8 + lda (Zp10),y ; CPU:$D999 PRG:5999 B1 10 + and #$C0 ; CPU:$D99B PRG:599B 29 C0 + sty Zp08 ; CPU:$D99D PRG:599D 84 08 + ldy #$00 ; CPU:$D99F PRG:599F A0 00 + lsr a ; CPU:$D9A1 PRG:59A1 4A + lsr a ; CPU:$D9A2 PRG:59A2 4A + lsr a ; CPU:$D9A3 PRG:59A3 4A + lsr a ; CPU:$D9A4 PRG:59A4 4A + ora (Zp14),y ; CPU:$D9A5 PRG:59A5 11 14 + sta (Zp14),y ; CPU:$D9A7 PRG:59A7 91 14 + ldy Zp08 ; CPU:$D9A9 PRG:59A9 A4 08 + lda (Zp12),y ; CPU:$D9AB PRG:59AB B1 12 + and #$C0 ; CPU:$D9AD PRG:59AD 29 C0 + sty Zp08 ; CPU:$D9AF PRG:59AF 84 08 + ldy #$00 ; CPU:$D9B1 PRG:59B1 A0 00 + ora (Zp14),y ; CPU:$D9B3 PRG:59B3 11 14 + sta (Zp14),y ; CPU:$D9B5 PRG:59B5 91 14 + inc Zp14 ; CPU:$D9B7 PRG:59B7 E6 14 + bne EventTaskInit_Loop32 ; CPU:$D9B9 PRG:59B9 D0 02 + inc Zp15 ; CPU:$D9BB PRG:59BB E6 15 +; ----------------------------------------------------------------------------- +; Routine: EventTaskInit_Loop32 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventTaskInit_Loop32: + ldy Zp08 ; CPU:$D9BD PRG:59BD A4 08 + iny ; CPU:$D9BF PRG:59BF C8 + tya ; CPU:$D9C0 PRG:59C0 98 + and #$0F ; CPU:$D9C1 PRG:59C1 29 0F + bne EventTaskInit_OnNonzero15 ; CPU:$D9C3 PRG:59C3 D0 B4 + tya ; CPU:$D9C5 PRG:59C5 98 + clc ; CPU:$D9C6 PRG:59C6 18 + adc #$10 ; CPU:$D9C7 PRG:59C7 69 10 + tay ; CPU:$D9C9 PRG:59C9 A8 + cmp Zp16 ; CPU:$D9CA PRG:59CA C5 16 + bne EventTaskInit_OnNonzero15 ; CPU:$D9CC PRG:59CC D0 AB + rts ; CPU:$D9CE PRG:59CE 60 +; ---- data $D9CF-$E0D4 (1798 bytes) ---- +; referenced by `lda $DDE9,y` at $D4E6 (operand $DDE9 falls inside this region) +; referenced by `lda $DE09,y` at $D4FD (operand $DE09 falls inside this region) +; referenced by `lda $D9CF,y` at $D569 (operand $D9CF falls inside this region) +; referenced by `lda $D9D0,y` at $D56E (operand $D9D0 falls inside this region) +; referenced by `lda $D9E7,y` at $D583 (operand $D9E7 falls inside this region) +; referenced by `lda $D9E8,y` at $D588 (operand $D9E8 falls inside this region) +; ... and 18 further references from decoded code + .byte $31, $DA, $31, $DA, $29, $DE, $29, $DE, $C1, $DA, $C1, $DA, $B9, $DE, $B9, $DE ; CPU:$D9CF PRG:59CF 31 DA 31 DA 29 DE 29 DE C1 DA C1 DA B9 DE B9 DE + .byte $31, $DB, $31, $DB, $29, $DF, $29, $DF, $71, $DB, $71, $DB, $69, $DF, $69, $DF ; CPU:$D9DF PRG:59DF 31 DB 31 DB 29 DF 29 DF 71 DB 71 DB 69 DF 69 DF + .byte $01, $DC, $01, $DC, $01, $E0, $01, $E0, $A1, $DC, $A1, $DC, $8D, $E0, $8D, $E0 ; CPU:$D9EF PRG:59EF 01 DC 01 DC 01 E0 01 E0 A1 DC A1 DC 8D E0 8D E0 + .byte $07, $D5, $43, $45, $03, $40, $42, $41, $09, $44, $46, $45, $03, $47, $48, $4A ; CPU:$D9FF PRG:59FF 07 D5 43 45 03 40 42 41 09 44 46 45 03 47 48 4A + .byte $49, $4B, $03, $4C, $4E, $50, $52, $03, $03, $03, $03, $4D, $4F, $51, $53, $03 ; CPU:$DA0F PRG:5A0F 49 4B 03 4C 4E 50 52 03 03 03 03 4D 4F 51 53 03 + .byte $03, $03, $03, $54, $56, $58, $5A, $5C, $03, $03, $03, $55, $57, $59, $5B, $5D ; CPU:$DA1F PRG:5A1F 03 03 03 54 56 58 5A 5C 03 03 03 55 57 59 5B 5D + .byte $03, $03, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3 ; CPU:$DA2F PRG:5A2F 03 03 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 + .byte $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3 ; CPU:$DA3F PRG:5A3F A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 + .byte $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $A3 ; CPU:$DA4F PRG:5A4F A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 + .byte $A3, $A3, $40, $40, $40, $40, $40, $40, $47, $46, $14, $1A, $00, $00, $00, $00 ; CPU:$DA5F PRG:5A5F A3 A3 40 40 40 40 40 40 47 46 14 1A 00 00 00 00 + .byte $00, $00, $41, $41, $41, $41, $41, $41, $48, $4F, $15, $1B, $01, $01, $01, $01 ; CPU:$DA6F PRG:5A6F 00 00 41 41 41 41 41 41 48 4F 15 1B 01 01 01 01 + .byte $01, $01, $42, $42, $42, $42, $42, $49, $62, $50, $16, $22, $1C, $02, $02, $02 ; CPU:$DA7F PRG:5A7F 01 01 42 42 42 42 42 49 62 50 16 22 1C 02 02 02 + .byte $02, $02, $43, $43, $43, $43, $4B, $4A, $62, $51, $17, $22, $1D, $1E, $03, $03 ; CPU:$DA8F PRG:5A8F 02 02 43 43 43 43 4B 4A 62 51 17 22 1D 1E 03 03 + .byte $03, $03, $44, $44, $44, $4C, $4D, $62, $62, $52, $18, $22, $22, $1F, $20, $04 ; CPU:$DA9F PRG:5A9F 03 03 44 44 44 4C 4D 62 62 52 18 22 22 1F 20 04 + .byte $04, $04, $45, $45, $45, $4E, $62, $62, $62, $53, $19, $22, $22, $22, $21, $05 ; CPU:$DAAF PRG:5AAF 04 04 45 45 45 4E 62 62 62 53 19 22 22 22 21 05 + .byte $05, $05, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81 ; CPU:$DABF PRG:5ABF 05 05 81 81 81 81 81 81 81 81 81 81 81 81 81 81 + .byte $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81, $81 ; CPU:$DACF PRG:5ACF 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 + .byte $81, $81, $81, $97, $98, $81, $81, $81, $8B, $8C, $8D, $8E, $81, $81, $81, $A4 ; CPU:$DADF PRG:5ADF 81 81 81 97 98 81 81 81 8B 8C 8D 8E 81 81 81 A4 + .byte $A5, $81, $81, $99, $9A, $93, $92, $91, $8F, $90, $A2, $A3, $94, $95, $96, $A6 ; CPU:$DAEF PRG:5AEF A5 81 81 99 9A 93 92 91 8F 90 A2 A3 94 95 96 A6 + .byte $A7, $81, $80, $85, $87, $89, $87, $89, $80, $82, $8A, $80, $88, $86, $88, $86 ; CPU:$DAFF PRG:5AFF A7 81 80 85 87 89 87 89 80 82 8A 80 88 86 88 86 + .byte $84, $80, $83, $83, $83, $9E, $83, $A1, $83, $83, $83, $83, $A0, $83, $9F, $83 ; CPU:$DB0F PRG:5B0F 84 80 83 83 83 9E 83 A1 83 83 83 83 A0 83 9F 83 + .byte $83, $83, $C1, $C1, $C1, $DD, $C1, $C1, $C1, $DB, $DC, $C1, $C1, $C1, $DD, $C1 ; CPU:$DB1F PRG:5B1F 83 83 C1 C1 C1 DD C1 C1 C1 DB DC C1 C1 C1 DD C1 + .byte $C1, $C1, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 ; CPU:$DB2F PRG:5B2F C1 C1 80 80 80 80 80 80 80 80 80 80 80 80 80 80 + .byte $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 ; CPU:$DB3F PRG:5B3F 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 + .byte $80, $80, $80, $80, $81, $83, $84, $82, $80, $85, $80, $82, $80, $85, $80, $81 ; CPU:$DB4F PRG:5B4F 80 80 80 80 81 83 84 82 80 85 80 82 80 85 80 81 + .byte $83, $84, $86, $80, $87, $89, $89, $89, $89, $89, $89, $89, $89, $89, $89, $88 ; CPU:$DB5F PRG:5B5F 83 84 86 80 87 89 89 89 89 89 89 89 89 89 89 88 + .byte $80, $80, $38, $38, $3F, $3F, $44, $44, $45, $45, $40, $40, $02, $02, $01, $01 ; CPU:$DB6F PRG:5B6F 80 80 38 38 3F 3F 44 44 45 45 40 40 02 02 01 01 + .byte $03, $03, $02, $02, $47, $47, $51, $51, $03, $03, $39, $54, $3B, $56, $38, $38 ; CPU:$DB7F PRG:5B7F 03 03 02 02 47 47 51 51 03 03 39 54 3B 56 38 38 + .byte $3F, $3A, $3C, $3D, $3E, $00, $40, $41, $42, $43, $49, $00, $00, $00, $01, $48 ; CPU:$DB8F PRG:5B8F 3F 3A 3C 3D 3E 00 40 41 42 43 49 00 00 00 01 48 + .byte $03, $4A, $02, $02, $47, $4C, $4B, $00, $43, $00, $4E, $49, $4A, $00, $00, $58 ; CPU:$DB9F PRG:5B9F 03 4A 02 02 47 4C 4B 00 43 00 4E 49 4A 00 00 58 + .byte $00, $5A, $00, $5C, $00, $5E, $00, $60, $00, $03, $62, $02, $64, $47, $66, $51 ; CPU:$DBAF PRG:5BAF 00 5A 00 5C 00 5E 00 60 00 03 62 02 64 47 66 51 + .byte $52, $03, $55, $68, $57, $6A, $59, $00, $5B, $00, $5D, $00, $5F, $00, $61, $00 ; CPU:$DBBF PRG:5BBF 52 03 55 68 57 6A 59 00 5B 00 5D 00 5F 00 61 00 + .byte $03, $00, $02, $63, $47, $65, $51, $67, $03, $53, $38, $38, $6B, $3F, $6C, $6D ; CPU:$DBCF PRG:5BCF 03 00 02 63 47 65 51 67 03 53 38 38 6B 3F 6C 6D + .byte $00, $6F, $69, $40, $6E, $46, $00, $35, $00, $00, $36, $01, $4D, $03, $00, $4F ; CPU:$DBDF PRG:5BDF 00 6F 69 40 6E 46 00 35 00 00 36 01 4D 03 00 4F + .byte $00, $6E, $02, $02, $50, $47, $35, $37, $00, $4D, $00, $00, $00, $00, $03, $03 ; CPU:$DBEF PRG:5BEF 00 6E 02 02 50 47 35 37 00 4D 00 00 00 00 03 03 + .byte $03, $03, $04, $06, $06, $04, $03, $03, $03, $03, $04, $08, $06, $09, $04, $06 ; CPU:$DBFF PRG:5BFF 03 03 04 06 06 04 03 03 03 03 04 08 06 09 04 06 + .byte $70, $70, $0C, $0E, $0D, $0F, $10, $12, $11, $13, $34, $06, $06, $04, $04, $34 ; CPU:$DC0F PRG:5C0F 70 70 0C 0E 0D 0F 10 12 11 13 34 06 06 04 04 34 + .byte $06, $04, $04, $06, $34, $04, $04, $06, $06, $34, $0A, $06, $0B, $04, $03, $14 ; CPU:$DC1F PRG:5C1F 06 04 04 06 34 04 04 06 06 34 0A 06 0B 04 03 14 + .byte $03, $2A, $18, $1A, $19, $1B, $1C, $1E, $1D, $1F, $16, $03, $71, $03, $03, $2A ; CPU:$DC2F PRG:5C2F 03 2A 18 1A 19 1B 1C 1E 1D 1F 16 03 71 03 03 2A + .byte $03, $15, $20, $22, $21, $23, $03, $29, $03, $28, $03, $2B, $03, $28, $03, $2D ; CPU:$DC3F PRG:5C3F 03 15 20 22 21 23 03 29 03 28 03 2B 03 28 03 2D + .byte $03, $28, $03, $2C, $03, $28, $03, $2E, $03, $28, $03, $2F, $03, $28, $32, $25 ; CPU:$DC4F PRG:5C4F 03 28 03 2C 03 28 03 2E 03 28 03 2F 03 28 32 25 + .byte $30, $31, $32, $03, $30, $03, $30, $31, $03, $33, $30, $03, $03, $03, $03, $01 ; CPU:$DC5F PRG:5C5F 30 31 32 03 30 03 30 31 03 33 30 03 03 03 03 01 + .byte $03, $01, $01, $03, $01, $03, $01, $01, $01, $01, $04, $34, $70, $70, $34, $06 ; CPU:$DC6F PRG:5C6F 03 01 01 03 01 03 01 01 01 01 04 34 70 70 34 06 + .byte $70, $70, $0C, $0E, $70, $70, $10, $12, $70, $70, $24, $26, $23, $27, $71, $03 ; CPU:$DC7F PRG:5C7F 70 70 0C 0E 70 70 10 12 70 70 24 26 23 27 71 03 + .byte $17, $03, $03, $32, $03, $30, $25, $32, $31, $30, $03, $30, $03, $03, $31, $30 ; CPU:$DC8F PRG:5C8F 17 03 03 32 03 30 25 32 31 30 03 30 03 03 31 30 + .byte $33, $03, $03, $03, $03, $03, $03, $03, $0F, $03, $03, $03, $03, $0F, $03, $03 ; CPU:$DC9F PRG:5C9F 33 03 03 03 03 03 03 03 0F 03 03 03 03 0F 03 03 + .byte $1D, $1F, $03, $03, $1E, $03, $03, $03, $3D, $3F, $03, $03, $03, $72, $03, $03 ; CPU:$DCAF PRG:5CAF 1D 1F 03 03 1E 03 03 03 3D 3F 03 03 03 72 03 03 + .byte $03, $70, $03, $03, $70, $72, $03, $03, $70, $70, $3A, $80, $3C, $81, $3E, $61 ; CPU:$DCBF PRG:5CBF 03 70 03 03 70 72 03 03 70 70 3A 80 3C 81 3E 61 + .byte $50, $89, $33, $52, $88, $32, $39, $54, $8A, $8D, $3B, $56, $8B, $8E, $3D, $58 ; CPU:$DCCF PRG:5CCF 50 89 33 52 88 32 39 54 8A 8D 3B 56 8B 8E 3D 58 + .byte $8C, $8F, $00, $3F, $31, $31, $90, $00, $00, $51, $37, $37, $91, $00, $00, $53 ; CPU:$DCDF PRG:5CDF 8C 8F 00 3F 31 31 90 00 00 51 37 37 91 00 00 53 + .byte $38, $38, $92, $00, $57, $55, $02, $02, $93, $94, $59, $31, $31, $31, $31, $95 ; CPU:$DCEF PRG:5CEF 38 38 92 00 57 55 02 02 93 94 59 31 31 31 31 95 + .byte $5B, $37, $37, $37, $37, $96, $5D, $38, $38, $38, $38, $97, $5E, $02, $02, $02 ; CPU:$DCFF PRG:5CFF 5B 37 37 37 37 96 5D 38 38 38 38 97 5E 02 02 02 + .byte $02, $98, $63, $60, $37, $37, $37, $37, $37, $99, $64, $62, $02, $02, $02, $02 ; CPU:$DD0F PRG:5D0F 02 98 63 60 37 37 37 37 37 99 64 62 02 02 02 02 + .byte $02, $89, $67, $65, $37, $37, $37, $37, $37, $37, $7A, $7B, $68, $66, $02, $02 ; CPU:$DD1F PRG:5D1F 02 89 67 65 37 37 37 37 37 37 7A 7B 68 66 02 02 + .byte $02, $02, $02, $02, $8C, $8F, $00, $69, $37, $37, $37, $37, $37, $37, $37, $37 ; CPU:$DD2F PRG:5D2F 02 02 02 02 8C 8F 00 69 37 37 37 37 37 37 37 37 + .byte $7C, $00, $57, $6A, $02, $02, $02, $02, $02, $02, $02, $02, $93, $94, $6B, $6D ; CPU:$DD3F PRG:5D3F 7C 00 57 6A 02 02 02 02 02 02 02 02 93 94 6B 6D + .byte $37, $37, $37, $37, $37, $37, $37, $37, $37, $7D, $6C, $6E, $02, $02, $02, $02 ; CPU:$DD4F PRG:5D4F 37 37 37 37 37 37 37 37 37 7D 6C 6E 02 02 02 02 + .byte $02, $02, $02, $02, $02, $98, $6F, $71, $37, $37, $37, $37, $37, $37, $37, $37 ; CPU:$DD5F PRG:5D5F 02 02 02 02 02 98 6F 71 37 37 37 37 37 37 37 37 + .byte $37, $37, $83, $7E, $70, $72, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; CPU:$DD6F PRG:5D6F 37 37 83 7E 70 72 02 02 02 02 02 02 02 02 02 02 + .byte $02, $89, $67, $73, $37, $37, $37, $37, $37, $37, $37, $37, $37, $37, $37, $37 ; CPU:$DD7F PRG:5D7F 02 89 67 73 37 37 37 37 37 37 37 37 37 37 37 37 + .byte $7F, $7B, $68, $74, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; CPU:$DD8F PRG:5D8F 7F 7B 68 74 02 02 02 02 02 02 02 02 02 02 02 02 + .byte $8C, $8F, $00, $75, $77, $37, $37, $37, $37, $37, $37, $37, $37, $37, $37, $37 ; CPU:$DD9F PRG:5D9F 8C 8F 00 75 77 37 37 37 37 37 37 37 37 37 37 37 + .byte $37, $37, $82, $00, $57, $76, $78, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; CPU:$DDAF PRG:5DAF 37 37 82 00 57 76 78 02 02 02 02 02 02 02 02 02 + .byte $02, $02, $02, $02, $93, $94, $79, $5C, $37, $37, $37, $37, $37, $37, $37, $37 ; CPU:$DDBF PRG:5DBF 02 02 02 02 93 94 79 5C 37 37 37 37 37 37 37 37 + .byte $37, $37, $37, $37, $37, $37, $83, $30, $5A, $5F, $02, $02, $02, $02, $02, $02 ; CPU:$DDCF PRG:5DCF 37 37 37 37 37 37 83 30 5A 5F 02 02 02 02 02 02 + .byte $02, $02, $02, $02, $02, $02, $02, $02, $02, $98, $00, $00, $00, $00, $1F, $00 ; CPU:$DDDF PRG:5DDF 02 02 02 02 02 02 02 02 02 98 00 00 00 00 1F 00 + .byte $00, $00, $1F, $00, $00, $00, $20, $00, $00, $00, $1F, $00, $1F, $00, $1F, $00 ; CPU:$DDEF PRG:5DEF 00 00 1F 00 00 00 20 00 00 00 1F 00 1F 00 1F 00 + .byte $20, $00, $1F, $00, $1F, $00, $1F, $00, $20, $00, $02, $02, $02, $02, $04, $04 ; CPU:$DDFF PRG:5DFF 20 00 1F 00 1F 00 1F 00 20 00 02 02 02 02 04 04 + .byte $04, $04, $06, $06, $06, $06, $06, $06, $06, $06, $08, $08, $0A, $0A, $0C, $0C ; CPU:$DE0F PRG:5E0F 04 04 06 06 06 06 06 06 06 06 08 08 0A 0A 0C 0C + .byte $0C, $0C, $0E, $0E, $10, $10, $12, $12, $12, $12, $A5, $A5, $A5, $A5, $A5, $A5 ; CPU:$DE1F PRG:5E1F 0C 0C 0E 0E 10 10 12 12 12 12 A5 A5 A5 A5 A5 A5 + .byte $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5 ; CPU:$DE2F PRG:5E2F A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 + .byte $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5 ; CPU:$DE3F PRG:5E3F A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 + .byte $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $A5, $40, $40, $40, $40, $40, $43 ; CPU:$DE4F PRG:5E4F A5 A5 A5 A5 A5 A5 A5 A5 A5 A5 40 40 40 40 40 43 + .byte $44, $18, $19, $4E, $4F, $40, $40, $40, $40, $40, $41, $41, $41, $45, $46, $47 ; CPU:$DE5F PRG:5E5F 44 18 19 4E 4F 40 40 40 40 40 41 41 41 45 46 47 + .byte $1A, $1B, $1C, $1D, $50, $51, $52, $41, $41, $41, $42, $48, $49, $4A, $4B, $0B ; CPU:$DE6F PRG:5E6F 1A 1B 1C 1D 50 51 52 41 41 41 42 48 49 4A 4B 0B + .byte $1F, $20, $20, $21, $0B, $4B, $53, $54, $55, $42, $4C, $4D, $4B, $4B, $4B, $18 ; CPU:$DE7F PRG:5E7F 1F 20 20 21 0B 4B 53 54 55 42 4C 4D 4B 4B 4B 18 + .byte $20, $20, $20, $20, $19, $4B, $4B, $4B, $56, $57, $4B, $4B, $4B, $4B, $1A, $1B ; CPU:$DE8F PRG:5E8F 20 20 20 20 19 4B 4B 4B 56 57 4B 4B 4B 4B 1A 1B + .byte $20, $20, $20, $20, $1C, $1D, $4B, $4B, $4B, $4B, $4B, $4B, $4B, $0B, $1F, $20 ; CPU:$DE9F PRG:5E9F 20 20 20 20 1C 1D 4B 4B 4B 4B 4B 4B 4B 0B 1F 20 + .byte $20, $20, $20, $20, $20, $21, $0B, $4B, $4B, $4B, $94, $94, $94, $94, $94, $94 ; CPU:$DEAF PRG:5EAF 20 20 20 20 20 21 0B 4B 4B 4B 94 94 94 94 94 94 + .byte $94, $94, $94, $94, $94, $94, $94, $94, $94, $94, $94, $94, $94, $94, $94, $94 ; CPU:$DEBF PRG:5EBF 94 94 94 94 94 94 94 94 94 94 94 94 94 94 94 94 + .byte $94, $94, $94, $94, $94, $94, $94, $94, $94, $94, $96, $97, $98, $94, $95, $95 ; CPU:$DECF PRG:5ECF 94 94 94 94 94 94 94 94 94 94 96 97 98 94 95 95 + .byte $95, $88, $89, $94, $95, $95, $95, $9C, $9D, $9E, $99, $9A, $9B, $80, $84, $80 ; CPU:$DEDF PRG:5EDF 95 88 89 94 95 95 95 9C 9D 9E 99 9A 9B 80 84 80 + .byte $8A, $8B, $8C, $8D, $80, $85, $80, $9F, $A0, $A1, $81, $81, $81, $87, $81, $81 ; CPU:$DEEF PRG:5EEF 8A 8B 8C 8D 80 85 80 9F A0 A1 81 81 81 87 81 81 + .byte $8E, $8F, $8F, $90, $81, $81, $86, $81, $81, $81, $D4, $D4, $D4, $D4, $D4, $D4 ; CPU:$DEFF PRG:5EFF 8E 8F 8F 90 81 81 86 81 81 81 D4 D4 D4 D4 D4 D4 + .byte $91, $8F, $8F, $92, $D4, $D4, $D4, $D4, $D4, $D4, $D4, $D4, $D4, $E2, $D4, $D4 ; CPU:$DF0F PRG:5F0F 91 8F 8F 92 D4 D4 D4 D4 D4 D4 D4 D4 D4 E2 D4 D4 + .byte $82, $8F, $8F, $83, $D4, $D4, $E2, $D4, $D4, $D4, $80, $80, $80, $80, $80, $80 ; CPU:$DF1F PRG:5F1F 82 8F 8F 83 D4 D4 E2 D4 D4 D4 80 80 80 80 80 80 + .byte $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 ; CPU:$DF2F PRG:5F2F 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 + .byte $80, $80, $80, $80, $88, $89, $80, $8E, $8F, $90, $80, $80, $81, $82, $83, $84 ; CPU:$DF3F PRG:5F3F 80 80 80 80 88 89 80 8E 8F 90 80 80 81 82 83 84 + .byte $80, $85, $80, $80, $8A, $8B, $80, $8E, $8F, $90, $80, $86, $86, $86, $86, $86 ; CPU:$DF4F PRG:5F4F 80 85 80 80 8A 8B 80 8E 8F 90 80 86 86 86 86 86 + .byte $91, $87, $87, $87, $8C, $8D, $80, $8E, $8F, $90, $09, $09, $1A, $1A, $0D, $0D ; CPU:$DF5F PRG:5F5F 91 87 87 87 8C 8D 80 8E 8F 90 09 09 1A 1A 0D 0D + .byte $0E, $0E, $11, $11, $02, $02, $09, $09, $06, $07, $04, $05, $00, $00, $0D, $0D ; CPU:$DF6F PRG:5F6F 0E 0E 11 11 02 02 09 09 06 07 04 05 00 00 0D 0D + .byte $0E, $0F, $0A, $0B, $0C, $00, $08, $00, $00, $00, $11, $11, $02, $14, $11, $12 ; CPU:$DF7F PRG:5F7F 0E 0F 0A 0B 0C 00 08 00 00 00 11 11 02 14 11 12 + .byte $13, $00, $10, $00, $00, $00, $00, $00, $00, $00, $01, $17, $18, $19, $15, $16 ; CPU:$DF8F PRG:5F8F 13 00 10 00 00 00 00 00 00 00 01 17 18 19 15 16 + .byte $00, $00, $1B, $1C, $00, $00, $09, $09, $1D, $1E, $00, $1F, $00, $00, $20, $21 ; CPU:$DF9F PRG:5F9F 00 00 1B 1C 00 00 09 09 1D 1E 00 1F 00 00 20 21 + .byte $00, $22, $0D, $0D, $23, $0E, $00, $24, $00, $00, $25, $11, $00, $26, $11, $11 ; CPU:$DFAF PRG:5FAF 00 22 0D 0D 23 0E 00 24 00 00 25 11 00 26 11 11 + .byte $27, $02, $28, $29, $00, $00, $2A, $01, $2B, $2C, $00, $2D, $33, $2E, $35, $00 ; CPU:$DFBF PRG:5FBF 27 02 28 29 00 00 2A 01 2B 2C 00 2D 33 2E 35 00 + .byte $36, $32, $00, $00, $00, $2D, $2F, $01, $01, $01, $01, $34, $01, $01, $00, $00 ; CPU:$DFCF PRG:5FCF 36 32 00 00 00 2D 2F 01 01 01 01 34 01 01 00 00 + .byte $35, $00, $00, $00, $00, $33, $33, $2E, $2F, $01, $01, $01, $01, $01, $36, $32 ; CPU:$DFDF PRG:5FDF 35 00 00 00 00 33 33 2E 2F 01 01 01 01 01 36 32 + .byte $01, $34, $00, $00, $32, $00, $31, $2F, $30, $01, $34, $38, $01, $37, $03, $03 ; CPU:$DFEF PRG:5FEF 01 34 00 00 32 00 31 2F 30 01 34 38 01 37 03 03 + .byte $03, $03, $A4, $A6, $A6, $A4, $A4, $A6, $D5, $D5, $EC, $C8, $ED, $C8, $C8, $EE ; CPU:$DFFF PRG:5FFF 03 03 A4 A6 A6 A4 A4 A6 D5 D5 EC C8 ED C8 C8 EE + .byte $C8, $EF, $A4, $A7, $A6, $A4, $A7, $A6, $A6, $A4, $A4, $A7, $D5, $D5, $A7, $A6 ; CPU:$E00F PRG:600F C8 EF A4 A7 A6 A4 A7 A6 A6 A4 A4 A7 D5 D5 A7 A6 + .byte $D5, $D5, $CA, $CC, $E1, $CD, $CE, $CA, $CF, $E1, $A6, $A4, $A4, $E4, $E0, $C9 ; CPU:$E01F PRG:601F D5 D5 CA CC E1 CD CE CA CF E1 A6 A4 A4 E4 E0 C9 + .byte $E5, $C8, $CB, $E2, $C8, $E7, $A6, $A4, $E6, $A6, $F1, $E8, $F0, $E9, $C8, $C8 ; CPU:$E02F PRG:602F E5 C8 CB E2 C8 E7 A6 A4 E6 A6 F1 E8 F0 E9 C8 C8 + .byte $C8, $C8, $EA, $F3, $EB, $F2, $F0, $EC, $F0, $ED, $EE, $F2, $EF, $F2, $00, $00 ; CPU:$E03F PRG:603F C8 C8 EA F3 EB F2 F0 EC F0 ED EE F2 EF F2 00 00 + .byte $00, $00, $03, $03, $03, $03, $C1, $03, $BB, $03, $C0, $C2, $BE, $B9, $03, $03 ; CPU:$E04F PRG:604F 00 00 03 03 03 03 C1 03 BB 03 C0 C2 BE B9 03 03 + .byte $BD, $BF, $03, $03, $BC, $B4, $B9, $AD, $AF, $A9, $AF, $A9, $AA, $A8, $AA, $A8 ; CPU:$E05F PRG:605F BD BF 03 03 BC B4 B9 AD AF A9 AF A9 AA A8 AA A8 + .byte $A8, $A4, $03, $03, $B4, $B6, $03, $03, $B5, $B7, $B8, $BA, $B9, $AE, $A8, $AA ; CPU:$E06F PRG:606F A8 A4 03 03 B4 B6 03 03 B5 B7 B8 BA B9 AE A8 AA + .byte $A6, $A8, $A9, $AB, $A8, $AA, $AC, $B9, $A9, $AB, $01, $01, $01, $01, $03, $03 ; CPU:$E07F PRG:607F A6 A8 A9 AB A8 AA AC B9 A9 AB 01 01 01 01 03 03 + .byte $03, $03, $03, $03, $0F, $03, $03, $03, $1D, $1F, $03, $03, $1E, $03, $03, $03 ; CPU:$E08F PRG:608F 03 03 03 03 0F 03 03 03 1D 1F 03 03 1E 03 03 03 + .byte $03, $75, $03, $03, $75, $03, $03, $03, $79, $79, $03, $03, $71, $71, $03, $11 ; CPU:$E09F PRG:609F 03 75 03 03 75 03 03 03 79 79 03 03 71 71 03 11 + .byte $03, $03, $20, $03, $03, $03, $03, $12, $03, $03, $22, $03, $03, $03, $03, $13 ; CPU:$E0AF PRG:60AF 03 03 20 03 03 03 03 12 03 03 22 03 03 03 03 13 + .byte $03, $03, $21, $03, $03, $03, $75, $03, $03, $03, $03, $74, $03, $03, $76, $03 ; CPU:$E0BF PRG:60BF 03 03 21 03 03 03 75 03 03 03 03 74 03 03 76 03 + .byte $03, $03, $03, $03, $79, $71 ; CPU:$E0CF PRG:60CF 03 03 03 03 79 71 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler: + inc OlympicsEventIndex ; CPU:$E0D5 PRG:60D5 E6 80 + lda OlympicsFrameCounter ; CPU:$E0D7 PRG:60D7 A5 2F + asl a ; CPU:$E0D9 PRG:60D9 0A + tay ; CPU:$E0DA PRG:60DA A8 + lda $E5F3,y ; CPU:$E0DB PRG:60DB B9 F3 E5 + pha ; CPU:$E0DE PRG:60DE 48 + lda $E5F2,y ; CPU:$E0DF PRG:60DF B9 F2 E5 + pha ; CPU:$E0E2 PRG:60E2 48 + ldy #$00 ; CPU:$E0E3 PRG:60E3 A0 00 + lda $0189 ; CPU:$E0E5 PRG:60E5 AD 89 01 + beq OlympicsScheduler_Loop ; CPU:$E0E8 PRG:60E8 F0 04 + sty Zp85 ; CPU:$E0EA PRG:60EA 84 85 + sty Zp86 ; CPU:$E0EC PRG:60EC 84 86 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop: + rts ; CPU:$E0EE PRG:60EE 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E0EF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E0EF: + inc OlympicsFrameCounter ; CPU:$E0EF PRG:60EF E6 2F + jsr Sub_E60A ; CPU:$E0F1 PRG:60F1 20 0A E6 + lda #$00 ; CPU:$E0F4 PRG:60F4 A9 00 + sta OlympicsEventIndex ; CPU:$E0F6 PRG:60F6 85 80 + sta Zp82 ; CPU:$E0F8 PRG:60F8 85 82 + sta $0308 ; CPU:$E0FA PRG:60FA 8D 08 03 + sta GameMode ; CPU:$E0FD PRG:60FD 85 8C + sta $0398 ; CPU:$E0FF PRG:60FF 8D 98 03 + lda #$01 ; CPU:$E102 PRG:6102 A9 01 + sta $0394 ; CPU:$E104 PRG:6104 8D 94 03 + bne OlympicsScheduler_Loop2 ; CPU:$E107 PRG:6107 D0 0B +; ----------------------------------------------------------------------------- +; Routine: Sub_E109 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E109: + lda VblankFlag ; CPU:$E109 PRG:6109 A5 2E + bmi OlympicsScheduler_Loop3 ; CPU:$E10B PRG:610B 30 0A + lda $0308 ; CPU:$E10D PRG:610D AD 08 03 + sta Zp82 ; CPU:$E110 PRG:6110 85 82 + bne OlympicsScheduler_Loop3 ; CPU:$E112 PRG:6112 D0 03 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop2: + jsr Sub_E6A8 ; CPU:$E114 PRG:6114 20 A8 E6 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop3: + lda #$01 ; CPU:$E117 PRG:6117 A9 01 + sta OlympicsFrameCounter ; CPU:$E119 PRG:6119 85 2F + sta Zp83 ; CPU:$E11B PRG:611B 85 83 + lda #$06 ; CPU:$E11D PRG:611D A9 06 + sta Zp87 ; CPU:$E11F PRG:611F 85 87 + lda #$40 ; CPU:$E121 PRG:6121 A9 40 + sta $0396 ; CPU:$E123 PRG:6123 8D 96 03 + lda #$80 ; CPU:$E126 PRG:6126 A9 80 + sta VblankFlag ; CPU:$E128 PRG:6128 85 2E + lda #$04 ; CPU:$E12A PRG:612A A9 04 + sta Zp2C ; CPU:$E12C PRG:612C 85 2C + lda #$00 ; CPU:$E12E PRG:612E A9 00 + sta Zp7E ; CPU:$E130 PRG:6130 85 7E + sta Zp81 ; CPU:$E132 PRG:6132 85 81 + sta Zp84 ; CPU:$E134 PRG:6134 85 84 + sta Zp85 ; CPU:$E136 PRG:6136 85 85 + sta Zp86 ; CPU:$E138 PRG:6138 85 86 + ldx #$30 ; CPU:$E13A PRG:613A A2 30 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero: + sta $0559,x ; CPU:$E13C PRG:613C 9D 59 05 + dex ; CPU:$E13F PRG:613F CA + bne OlympicsScheduler_OnNonzero; CPU:$E140 PRG:6140 D0 FA + ldx #$24 ; CPU:$E142 PRG:6142 A2 24 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero2: + sta $052F,x ; CPU:$E144 PRG:6144 9D 2F 05 + dex ; CPU:$E147 PRG:6147 CA + bne OlympicsScheduler_OnNonzero2 ; CPU:$E148 PRG:6148 D0 FA + lda #$00 ; CPU:$E14A PRG:614A A9 00 + ldy #$03 ; CPU:$E14C PRG:614C A0 03 + jsr AudioChannelLoop ; CPU:$E14E PRG:614E 20 63 BE + jsr Sub_EF4C ; CPU:$E151 PRG:6151 20 4C EF + lda #$03 ; CPU:$E154 PRG:6154 A9 03 + ldx #$00 ; CPU:$E156 PRG:6156 A2 00 + ldy #$00 ; CPU:$E158 PRG:6158 A0 00 + sty Zp17 ; CPU:$E15A PRG:615A 84 17 + sty Zp16 ; CPU:$E15C PRG:615C 84 16 + jsr Sub_E943 ; CPU:$E15E PRG:615E 20 43 E9 + jsr Sub_E8FA ; CPU:$E161 PRG:6161 20 FA E8 + jsr Sub_E90B ; CPU:$E164 PRG:6164 20 0B E9 + jsr Sub_E90B ; CPU:$E167 PRG:6167 20 0B E9 + jmp OlympicsScheduler_Loop7 ; CPU:$E16A PRG:616A 4C AE E1 +; ----------------------------------------------------------------------------- +; Routine: Sub_E16D +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E16D: + lda OlympicsEventIndex ; CPU:$E16D PRG:616D A5 80 + and #$03 ; CPU:$E16F PRG:616F 29 03 + bne OlympicsScheduler_Loop4 ; CPU:$E171 PRG:6171 D0 05 + jsr Sub_E8FA ; CPU:$E173 PRG:6173 20 FA E8 + ldy #$00 ; CPU:$E176 PRG:6176 A0 00 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop4: + lda $0189 ; CPU:$E178 PRG:6178 AD 89 01 + and #$10 ; CPU:$E17B PRG:617B 29 10 + beq OlympicsScheduler_Loop6 ; CPU:$E17D PRG:617D F0 1E + inc OlympicsFrameCounter ; CPU:$E17F PRG:617F E6 2F + lda Zp82 ; CPU:$E181 PRG:6181 A5 82 + sta $0308 ; CPU:$E183 PRG:6183 8D 08 03 + beq OlympicsScheduler_Loop5 ; CPU:$E186 PRG:6186 F0 04 + tax ; CPU:$E188 PRG:6188 AA + lda $E5FF,x ; CPU:$E189 PRG:6189 BD FF E5 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop5: + sta GameMode ; CPU:$E18C PRG:618C 85 8C + sty Zp81 ; CPU:$E18E PRG:618E 84 81 + sty Zp82 ; CPU:$E190 PRG:6190 84 82 + lda $0308 ; CPU:$E192 PRG:6192 AD 08 03 + bne OlympicsScheduler_Loop10 ; CPU:$E195 PRG:6195 D0 53 + jsr Sub_E6A8 ; CPU:$E197 PRG:6197 20 A8 E6 + jmp Sub_E625 ; CPU:$E19A PRG:619A 4C 25 E6 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop6: + lda $0189 ; CPU:$E19D PRG:619D AD 89 01 + and #$20 ; CPU:$E1A0 PRG:61A0 29 20 + beq OlympicsScheduler_Loop9 ; CPU:$E1A2 PRG:61A2 F0 20 + inc Zp82 ; CPU:$E1A4 PRG:61A4 E6 82 + lda Zp82 ; CPU:$E1A6 PRG:61A6 A5 82 + cmp #$06 ; CPU:$E1A8 PRG:61A8 C9 06 + bcc OlympicsScheduler_Loop7 ; CPU:$E1AA PRG:61AA 90 02 + sty Zp82 ; CPU:$E1AC PRG:61AC 84 82 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop7: + ldx #$00 ; CPU:$E1AE PRG:61AE A2 00 + lda Zp82 ; CPU:$E1B0 PRG:61B0 A5 82 + cmp #$03 ; CPU:$E1B2 PRG:61B2 C9 03 + bcc OlympicsScheduler_Loop8 ; CPU:$E1B4 PRG:61B4 90 03 + sbc #$03 ; CPU:$E1B6 PRG:61B6 E9 03 + inx ; CPU:$E1B8 PRG:61B8 E8 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop8: + tay ; CPU:$E1B9 PRG:61B9 A8 + lda #$00 ; CPU:$E1BA PRG:61BA A9 00 + sta Zp16 ; CPU:$E1BC PRG:61BC 85 16 + sta Zp17 ; CPU:$E1BE PRG:61BE 85 17 + jsr Sub_E943 ; CPU:$E1C0 PRG:61C0 20 43 E9 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero3: + rts ; CPU:$E1C3 PRG:61C3 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop9: + lda OlympicsEventIndex ; CPU:$E1C4 PRG:61C4 A5 80 + and #$07 ; CPU:$E1C6 PRG:61C6 29 07 + bne OlympicsScheduler_OnNonzero3 ; CPU:$E1C8 PRG:61C8 D0 F9 + inc Zp81 ; CPU:$E1CA PRG:61CA E6 81 + lda Zp81 ; CPU:$E1CC PRG:61CC A5 81 + cmp #$8E ; CPU:$E1CE PRG:61CE C9 8E + bcc OlympicsScheduler_OnNonzero3 ; CPU:$E1D0 PRG:61D0 90 F1 + sty Zp81 ; CPU:$E1D2 PRG:61D2 84 81 + ldy $0309 ; CPU:$E1D4 PRG:61D4 AC 09 03 + sty GameMode ; CPU:$E1D7 PRG:61D7 84 8C + lda $E606,y ; CPU:$E1D9 PRG:61D9 B9 06 E6 + sta $0308 ; CPU:$E1DC PRG:61DC 8D 08 03 + lda $0309 ; CPU:$E1DF PRG:61DF AD 09 03 + eor #$02 ; CPU:$E1E2 PRG:61E2 49 02 + sta $0309 ; CPU:$E1E4 PRG:61E4 8D 09 03 + jmp Sub_E427 ; CPU:$E1E7 PRG:61E7 4C 27 E4 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop10: + lda #$04 ; CPU:$E1EA PRG:61EA A9 04 + sta Zp2C ; CPU:$E1EC PRG:61EC 85 2C + lda #$02 ; CPU:$E1EE PRG:61EE A9 02 + sta Zp7E ; CPU:$E1F0 PRG:61F0 85 7E + jsr Sub_EF4C ; CPU:$E1F2 PRG:61F2 20 4C EF + ldx $0394 ; CPU:$E1F5 PRG:61F5 AE 94 03 + dex ; CPU:$E1F8 PRG:61F8 CA + stx $0398 ; CPU:$E1F9 PRG:61F9 8E 98 03 + lda $0396 ; CPU:$E1FC PRG:61FC AD 96 03 + jsr Sub_E233 ; CPU:$E1FF PRG:61FF 20 33 E2 + ldy #$00 ; CPU:$E202 PRG:6202 A0 00 + sty Zp11 ; CPU:$E204 PRG:6204 84 11 + lda $0398 ; CPU:$E206 PRG:6206 AD 98 03 + jsr OlympicsScheduler_Loop68 ; CPU:$E209 PRG:6209 20 EB E8 + rts ; CPU:$E20C PRG:620C 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E20D +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E20D: + lda $0189 ; CPU:$E20D PRG:620D AD 89 01 + and #$10 ; CPU:$E210 PRG:6210 29 10 + beq OlympicsScheduler_Loop12 ; CPU:$E212 PRG:6212 F0 11 + lda $0394 ; CPU:$E214 PRG:6214 AD 94 03 + cmp #$06 ; CPU:$E217 PRG:6217 C9 06 + bcc OlympicsScheduler_Loop11 ; CPU:$E219 PRG:6219 90 02 + lda #$06 ; CPU:$E21B PRG:621B A9 06 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop11: + sta $0395 ; CPU:$E21D PRG:621D 8D 95 03 + inc OlympicsFrameCounter ; CPU:$E220 PRG:6220 E6 2F + jmp Sub_E2B2 ; CPU:$E222 PRG:6222 4C B2 E2 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop12: + lda $0189 ; CPU:$E225 PRG:6225 AD 89 01 + and #$20 ; CPU:$E228 PRG:6228 29 20 + beq OlympicsScheduler_Loop13 ; CPU:$E22A PRG:622A F0 19 + ldy $0398 ; CPU:$E22C PRG:622C AC 98 03 + iny ; CPU:$E22F PRG:622F C8 + sty $0394 ; CPU:$E230 PRG:6230 8C 94 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_E233 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E233: + lda #$B0 ; CPU:$E233 PRG:6233 A9 B0 + sta Zp10 ; CPU:$E235 PRG:6235 85 10 + lda #$20 ; CPU:$E237 PRG:6237 A9 20 + sta Zp11 ; CPU:$E239 PRG:6239 85 11 + ldx $0398 ; CPU:$E23B PRG:623B AE 98 03 + lda $EA01,x ; CPU:$E23E PRG:623E BD 01 EA + jsr Sub_EFD7 ; CPU:$E241 PRG:6241 20 D7 EF + rts ; CPU:$E244 PRG:6244 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop13: + lda $0189 ; CPU:$E245 PRG:6245 AD 89 01 + and #$03 ; CPU:$E248 PRG:6248 29 03 + bne OlympicsScheduler_Loop14 ; CPU:$E24A PRG:624A D0 13 + lda $0188 ; CPU:$E24C PRG:624C AD 88 01 + and #$03 ; CPU:$E24F PRG:624F 29 03 + beq OlympicsScheduler_Loop15 ; CPU:$E251 PRG:6251 F0 15 + inc Zp85 ; CPU:$E253 PRG:6253 E6 85 + tax ; CPU:$E255 PRG:6255 AA + lda Zp85 ; CPU:$E256 PRG:6256 A5 85 + and #$1F ; CPU:$E258 PRG:6258 29 1F + bne OlympicsScheduler_Loop15 ; CPU:$E25A PRG:625A D0 0C + sta Zp85 ; CPU:$E25C PRG:625C 85 85 + txa ; CPU:$E25E PRG:625E 8A +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop14: + ldx #$06 ; CPU:$E25F PRG:625F A2 06 + stx Zp10 ; CPU:$E261 PRG:6261 86 10 + sty Zp11 ; CPU:$E263 PRG:6263 84 11 + jsr Sub_E8C0 ; CPU:$E265 PRG:6265 20 C0 E8 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop15: + lda #$20 ; CPU:$E268 PRG:6268 A9 20 + sta $0367 ; CPU:$E26A PRG:626A 8D 67 03 + lda #$D0 ; CPU:$E26D PRG:626D A9 D0 + sta $0368 ; CPU:$E26F PRG:626F 8D 68 03 + lda #$00 ; CPU:$E272 PRG:6272 A9 00 + sta $0369 ; CPU:$E274 PRG:6274 8D 69 03 + lda #$FF ; CPU:$E277 PRG:6277 A9 FF + sta $036B ; CPU:$E279 PRG:6279 8D 6B 03 + bne OlympicsScheduler_Loop16 ; CPU:$E27C PRG:627C D0 12 +; ----------------------------------------------------------------------------- +; Routine: Sub_E27E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E27E: + ldy #$00 ; CPU:$E27E PRG:627E A0 00 + sty $0369 ; CPU:$E280 PRG:6280 8C 69 03 + sty $036D ; CPU:$E283 PRG:6283 8C 6D 03 + ldy #$FF ; CPU:$E286 PRG:6286 A0 FF + sty $036F ; CPU:$E288 PRG:6288 8C 6F 03 + lda #$77 ; CPU:$E28B PRG:628B A9 77 + sta $036E ; CPU:$E28D PRG:628D 8D 6E 03 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop16: + lda OlympicsEventIndex ; CPU:$E290 PRG:6290 A5 80 + and #$08 ; CPU:$E292 PRG:6292 29 08 + beq OlympicsScheduler_Loop17 ; CPU:$E294 PRG:6294 F0 02 + lda #$77 ; CPU:$E296 PRG:6296 A9 77 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop17: + sta $036A ; CPU:$E298 PRG:6298 8D 6A 03 + ldy #$03 ; CPU:$E29B PRG:629B A0 03 + lda #$67 ; CPU:$E29D PRG:629D A9 67 + jsr PaletteLoad ; CPU:$E29F PRG:629F 20 9D FA + rts ; CPU:$E2A2 PRG:62A2 60 +; ---- data $E2A3-$E2B1 (15 bytes) ---- + .byte $A9, $03, $85, $2F, $A9, $04, $85, $2C, $A9, $02, $85, $7E, $20, $4C, $EF ; CPU:$E2A3 PRG:62A3 A9 03 85 2F A9 04 85 2C A9 02 85 7E 20 4C EF +; ----------------------------------------------------------------------------- +; Routine: Sub_E2B2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E2B2: + sec ; CPU:$E2B2 PRG:62B2 38 + lda $0395 ; CPU:$E2B3 PRG:62B3 AD 95 03 + sbc Zp83 ; CPU:$E2B6 PRG:62B6 E5 83 + sta Zp88 ; CPU:$E2B8 PRG:62B8 85 88 + inc Zp88 ; CPU:$E2BA PRG:62BA E6 88 + lda OlympicsEventIndex ; CPU:$E2BC PRG:62BC A5 80 + ora #$08 ; CPU:$E2BE PRG:62BE 09 08 + sta OlympicsEventIndex ; CPU:$E2C0 PRG:62C0 85 80 + jsr OlympicsScheduler_Loop15 ; CPU:$E2C2 PRG:62C2 20 68 E2 + ldy #$00 ; CPU:$E2C5 PRG:62C5 A0 00 + sty $0396 ; CPU:$E2C7 PRG:62C7 8C 96 03 + sty $0398 ; CPU:$E2CA PRG:62CA 8C 98 03 + sty Zp82 ; CPU:$E2CD PRG:62CD 84 82 + sty Zp85 ; CPU:$E2CF PRG:62CF 84 85 + sty Zp86 ; CPU:$E2D1 PRG:62D1 84 86 + tya ; CPU:$E2D3 PRG:62D3 98 + iny ; CPU:$E2D4 PRG:62D4 C8 + sty $0397 ; CPU:$E2D5 PRG:62D5 8C 97 03 + sty Zp11 ; CPU:$E2D8 PRG:62D8 84 11 + dey ; CPU:$E2DA PRG:62DA 88 + jmp OlympicsScheduler_Loop68 ; CPU:$E2DB PRG:62DB 4C EB E8 +; ----------------------------------------------------------------------------- +; Routine: Sub_E2DE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E2DE: + lda $0189 ; CPU:$E2DE PRG:62DE AD 89 01 + and #$10 ; CPU:$E2E1 PRG:62E1 29 10 + beq OlympicsScheduler_Loop18 ; CPU:$E2E3 PRG:62E3 F0 05 + sty Zp82 ; CPU:$E2E5 PRG:62E5 84 82 + jmp Sub_E625 ; CPU:$E2E7 PRG:62E7 4C 25 E6 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop18: + lda Zp84 ; CPU:$E2EA PRG:62EA A5 84 + cmp $0395 ; CPU:$E2EC PRG:62EC CD 95 03 + bcs OlympicsScheduler_Loop20 ; CPU:$E2EF PRG:62EF B0 38 + lda OlympicsEventIndex ; CPU:$E2F1 PRG:62F1 A5 80 + and #$0F ; CPU:$E2F3 PRG:62F3 29 0F + bne OlympicsScheduler_Loop19 ; CPU:$E2F5 PRG:62F5 D0 31 + lda Zp82 ; CPU:$E2F7 PRG:62F7 A5 82 + lsr a ; CPU:$E2F9 PRG:62F9 4A + lsr a ; CPU:$E2FA PRG:62FA 4A + lsr a ; CPU:$E2FB PRG:62FB 4A + tax ; CPU:$E2FC PRG:62FC AA + pha ; CPU:$E2FD PRG:62FD 48 + lda $EA4F,x ; CPU:$E2FE PRG:62FE BD 4F EA + sta $036C ; CPU:$E301 PRG:6301 8D 6C 03 + adc #$25 ; CPU:$E304 PRG:6304 69 25 + sta Zp10 ; CPU:$E306 PRG:6306 85 10 + lda $EA50,x ; CPU:$E308 PRG:6308 BD 50 EA + sta $036B ; CPU:$E30B PRG:630B 8D 6B 03 + adc #$00 ; CPU:$E30E PRG:630E 69 00 + sta Zp11 ; CPU:$E310 PRG:6310 85 11 + ldy #$09 ; CPU:$E312 PRG:6312 A0 09 + lda #$77 ; CPU:$E314 PRG:6314 A9 77 + jsr Sub_EFD9 ; CPU:$E316 PRG:6316 20 D9 EF + pla ; CPU:$E319 PRG:6319 68 + tax ; CPU:$E31A PRG:631A AA + lda Zp82 ; CPU:$E31B PRG:631B A5 82 + adc #$10 ; CPU:$E31D PRG:631D 69 10 + sta Zp82 ; CPU:$E31F PRG:631F 85 82 + lda Zp84 ; CPU:$E321 PRG:6321 A5 84 + inc Zp84 ; CPU:$E323 PRG:6323 E6 84 + jsr Sub_E6CC ; CPU:$E325 PRG:6325 20 CC E6 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop19: + rts ; CPU:$E328 PRG:6328 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop20 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop20: + lda $0189 ; CPU:$E329 PRG:6329 AD 89 01 + and #$20 ; CPU:$E32C PRG:632C 29 20 + beq OlympicsScheduler_Loop21 ; CPU:$E32E PRG:632E F0 3F + lda $0396 ; CPU:$E330 PRG:6330 AD 96 03 + and #$F0 ; CPU:$E333 PRG:6333 29 F0 + lsr a ; CPU:$E335 PRG:6335 4A + lsr a ; CPU:$E336 PRG:6336 4A + lsr a ; CPU:$E337 PRG:6337 4A + sta Zp17 ; CPU:$E338 PRG:6338 85 17 + lsr a ; CPU:$E33A PRG:633A 4A + adc Zp83 ; CPU:$E33B PRG:633B 65 83 + jsr Sub_E85A ; CPU:$E33D PRG:633D 20 5A E8 + lda $0396 ; CPU:$E340 PRG:6340 AD 96 03 + and #$0F ; CPU:$E343 PRG:6343 29 0F + sta Zp16 ; CPU:$E345 PRG:6345 85 16 + tay ; CPU:$E347 PRG:6347 A8 + ldx $0398 ; CPU:$E348 PRG:6348 AE 98 03 + lda $EA33,x ; CPU:$E34B PRG:634B BD 33 EA + sta (Zp14),y ; CPU:$E34E PRG:634E 91 14 + pha ; CPU:$E350 PRG:6350 48 + ldx Zp17 ; CPU:$E351 PRG:6351 A6 17 + lda $EA4F,x ; CPU:$E353 PRG:6353 BD 4F EA + clc ; CPU:$E356 PRG:6356 18 + adc Zp16 ; CPU:$E357 PRG:6357 65 16 + adc #$05 ; CPU:$E359 PRG:6359 69 05 + sta Zp10 ; CPU:$E35B PRG:635B 85 10 + lda $EA50,x ; CPU:$E35D PRG:635D BD 50 EA + sta Zp11 ; CPU:$E360 PRG:6360 85 11 + pla ; CPU:$E362 PRG:6362 68 + jsr Sub_EFD7 ; CPU:$E363 PRG:6363 20 D7 EF + lda $0396 ; CPU:$E366 PRG:6366 AD 96 03 + sta $0397 ; CPU:$E369 PRG:6369 8D 97 03 + jmp Sub_E395 ; CPU:$E36C PRG:636C 4C 95 E3 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop21 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop21: + lda $0189 ; CPU:$E36F PRG:636F AD 89 01 + and #$C0 ; CPU:$E372 PRG:6372 29 C0 + bne OlympicsScheduler_Loop22 ; CPU:$E374 PRG:6374 D0 15 + lda $0188 ; CPU:$E376 PRG:6376 AD 88 01 + and #$C0 ; CPU:$E379 PRG:6379 29 C0 + beq OlympicsScheduler_Loop24 ; CPU:$E37B PRG:637B F0 56 + inc Zp86 ; CPU:$E37D PRG:637D E6 86 + tax ; CPU:$E37F PRG:637F AA + lda Zp86 ; CPU:$E380 PRG:6380 A5 86 + and #$1F ; CPU:$E382 PRG:6382 29 1F + bne OlympicsScheduler_Loop24 ; CPU:$E384 PRG:6384 D0 4D + sta Zp85 ; CPU:$E386 PRG:6386 85 85 + sta Zp86 ; CPU:$E388 PRG:6388 85 86 + txa ; CPU:$E38A PRG:638A 8A +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop22: + ldx $0396 ; CPU:$E38B PRG:638B AE 96 03 + stx $0397 ; CPU:$E38E PRG:638E 8E 97 03 + and #$80 ; CPU:$E391 PRG:6391 29 80 + beq OlympicsScheduler_Loop23 ; CPU:$E393 PRG:6393 F0 1F +; ----------------------------------------------------------------------------- +; Routine: Sub_E395 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E395: + inc $0396 ; CPU:$E395 PRG:6395 EE 96 03 + lda $0396 ; CPU:$E398 PRG:6398 AD 96 03 + and #$0F ; CPU:$E39B PRG:639B 29 0F + cmp #$0A ; CPU:$E39D PRG:639D C9 0A + bcc OlympicsScheduler_Loop24 ; CPU:$E39F PRG:639F 90 32 + lda $0396 ; CPU:$E3A1 PRG:63A1 AD 96 03 + adc #$05 ; CPU:$E3A4 PRG:63A4 69 05 + sta $0396 ; CPU:$E3A6 PRG:63A6 8D 96 03 + cmp Zp82 ; CPU:$E3A9 PRG:63A9 C5 82 + bcc OlympicsScheduler_Loop24 ; CPU:$E3AB PRG:63AB 90 26 + sbc Zp82 ; CPU:$E3AD PRG:63AD E5 82 + sta $0396 ; CPU:$E3AF PRG:63AF 8D 96 03 + bcs OlympicsScheduler_Loop24 ; CPU:$E3B2 PRG:63B2 B0 1F +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop23 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop23: + dec $0396 ; CPU:$E3B4 PRG:63B4 CE 96 03 + lda $0396 ; CPU:$E3B7 PRG:63B7 AD 96 03 + and #$0F ; CPU:$E3BA PRG:63BA 29 0F + cmp #$0A ; CPU:$E3BC PRG:63BC C9 0A + bcc OlympicsScheduler_Loop24 ; CPU:$E3BE PRG:63BE 90 13 + lda $0396 ; CPU:$E3C0 PRG:63C0 AD 96 03 + sbc #$06 ; CPU:$E3C3 PRG:63C3 E9 06 + sta $0396 ; CPU:$E3C5 PRG:63C5 8D 96 03 + cmp Zp82 ; CPU:$E3C8 PRG:63C8 C5 82 + bcc OlympicsScheduler_Loop24 ; CPU:$E3CA PRG:63CA 90 07 + lda Zp82 ; CPU:$E3CC PRG:63CC A5 82 + sbc #$07 ; CPU:$E3CE PRG:63CE E9 07 + sta $0396 ; CPU:$E3D0 PRG:63D0 8D 96 03 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop24 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop24: + lda $0396 ; CPU:$E3D3 PRG:63D3 AD 96 03 + ldx #$00 ; CPU:$E3D6 PRG:63D6 A2 00 + jsr Sub_E89F ; CPU:$E3D8 PRG:63D8 20 9F E8 + lda $0397 ; CPU:$E3DB PRG:63DB AD 97 03 + ldx #$04 ; CPU:$E3DE PRG:63DE A2 04 + jsr Sub_E89F ; CPU:$E3E0 PRG:63E0 20 9F E8 + jsr Sub_E27E ; CPU:$E3E3 PRG:63E3 20 7E E2 + ldy #$00 ; CPU:$E3E6 PRG:63E6 A0 00 + ldx #$1C ; CPU:$E3E8 PRG:63E8 A2 1C + stx Zp10 ; CPU:$E3EA PRG:63EA 86 10 + ldx #$01 ; CPU:$E3EC PRG:63EC A2 01 + stx Zp11 ; CPU:$E3EE PRG:63EE 86 11 + lda $0189 ; CPU:$E3F0 PRG:63F0 AD 89 01 + and #$0C ; CPU:$E3F3 PRG:63F3 29 0C + beq OlympicsScheduler_Loop26 ; CPU:$E3F5 PRG:63F5 F0 0E + and #$04 ; CPU:$E3F7 PRG:63F7 29 04 + lsr a ; CPU:$E3F9 PRG:63F9 4A + lsr a ; CPU:$E3FA PRG:63FA 4A + lsr a ; CPU:$E3FB PRG:63FB 4A + lda #$0E ; CPU:$E3FC PRG:63FC A9 0E + bcs OlympicsScheduler_Loop25 ; CPU:$E3FE PRG:63FE B0 02 + lda #$F2 ; CPU:$E400 PRG:6400 A9 F2 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop25 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop25: + jmp OlympicsScheduler_Loop65 ; CPU:$E402 PRG:6402 4C C6 E8 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop26 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop26: + lda $0189 ; CPU:$E405 PRG:6405 AD 89 01 + and #$03 ; CPU:$E408 PRG:6408 29 03 + bne OlympicsScheduler_Loop28 ; CPU:$E40A PRG:640A D0 18 + lda $0188 ; CPU:$E40C PRG:640C AD 88 01 + and #$03 ; CPU:$E40F PRG:640F 29 03 + beq OlympicsScheduler_Loop27 ; CPU:$E411 PRG:6411 F0 10 + tax ; CPU:$E413 PRG:6413 AA + inc Zp86 ; CPU:$E414 PRG:6414 E6 86 + lda Zp86 ; CPU:$E416 PRG:6416 A5 86 + and #$1F ; CPU:$E418 PRG:6418 29 1F + bne OlympicsScheduler_Loop27 ; CPU:$E41A PRG:641A D0 07 + sta Zp86 ; CPU:$E41C PRG:641C 85 86 + sta Zp85 ; CPU:$E41E PRG:641E 85 85 + txa ; CPU:$E420 PRG:6420 8A + bne OlympicsScheduler_Loop28 ; CPU:$E421 PRG:6421 D0 01 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop27 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop27: + rts ; CPU:$E423 PRG:6423 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop28 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop28: + jmp Sub_E8C0 ; CPU:$E424 PRG:6424 4C C0 E8 +; ----------------------------------------------------------------------------- +; Routine: Sub_E427 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E427: + jsr Sub_E62C ; CPU:$E427 PRG:6427 20 2C E6 +; ----------------------------------------------------------------------------- +; Routine: Sub_E42A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E42A: + lda $0390 ; CPU:$E42A PRG:642A AD 90 03 + and #$C0 ; CPU:$E42D PRG:642D 29 C0 + beq OlympicsScheduler_Loop29 ; CPU:$E42F PRG:642F F0 03 + jsr Sub_D13B ; CPU:$E431 PRG:6431 20 3B D1 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop29 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop29: + lda $0308 ; CPU:$E434 PRG:6434 AD 08 03 + beq OlympicsScheduler_Loop31 ; CPU:$E437 PRG:6437 F0 1D + lda $0473 ; CPU:$E439 PRG:6439 AD 73 04 + eor Zp7D ; CPU:$E43C PRG:643C 45 7D + and $0473 ; CPU:$E43E PRG:643E 2D 73 04 + ror a ; CPU:$E441 PRG:6441 6A + bcc OlympicsScheduler_Loop30 ; CPU:$E442 PRG:6442 90 09 + lda $0391 ; CPU:$E444 PRG:6444 AD 91 03 + jsr Sub_EB04 ; CPU:$E447 PRG:6447 20 04 EB + jmp OlympicsScheduler_Loop31 ; CPU:$E44A PRG:644A 4C 56 E4 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop30 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop30: + ror a ; CPU:$E44D PRG:644D 6A + bcc OlympicsScheduler_Loop31 ; CPU:$E44E PRG:644E 90 06 + lda $0392 ; CPU:$E450 PRG:6450 AD 92 03 + jsr Sub_EB04 ; CPU:$E453 PRG:6453 20 04 EB +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop31 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop31: + lda $0473 ; CPU:$E456 PRG:6456 AD 73 04 + sta Zp7D ; CPU:$E459 PRG:6459 85 7D + lda VblankFlag ; CPU:$E45B PRG:645B A5 2E + and #$50 ; CPU:$E45D PRG:645D 29 50 + bne OlympicsScheduler_Loop33 ; CPU:$E45F PRG:645F D0 0D + lda VblankFlag ; CPU:$E461 PRG:6461 A5 2E + bmi OlympicsScheduler_Loop32 ; CPU:$E463 PRG:6463 30 01 + rts ; CPU:$E465 PRG:6465 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop32 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop32: + lda $0189 ; CPU:$E466 PRG:6466 AD 89 01 + and #$10 ; CPU:$E469 PRG:6469 29 10 + bne OlympicsScheduler_Loop33 ; CPU:$E46B PRG:646B D0 01 + rts ; CPU:$E46D PRG:646D 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop33 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop33: + jsr ClearObjectSlot ; CPU:$E46E PRG:646E 20 BF BE + lda #$00 ; CPU:$E471 PRG:6471 A9 00 + jsr TaskSlotClear ; CPU:$E473 PRG:6473 20 CA F7 + lda #$01 ; CPU:$E476 PRG:6476 A9 01 + jsr TaskSlotClear ; CPU:$E478 PRG:6478 20 CA F7 + lda #$02 ; CPU:$E47B PRG:647B A9 02 + jsr TaskSlotClear ; CPU:$E47D PRG:647D 20 CA F7 + lda #$03 ; CPU:$E480 PRG:6480 A9 03 + jsr TaskSlotClear ; CPU:$E482 PRG:6482 20 CA F7 + lda #$00 ; CPU:$E485 PRG:6485 A9 00 + sta Zp8B ; CPU:$E487 PRG:6487 85 8B + sta Zp51 ; CPU:$E489 PRG:6489 85 51 + jsr Sub_E60A ; CPU:$E48B PRG:648B 20 0A E6 + ldy #$18 ; CPU:$E48E PRG:648E A0 18 + lda #$00 ; CPU:$E490 PRG:6490 A9 00 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero4: + sta $0402,y ; CPU:$E492 PRG:6492 99 02 04 + dey ; CPU:$E495 PRG:6495 88 + bne OlympicsScheduler_OnNonzero4 ; CPU:$E496 PRG:6496 D0 FA + lda VblankFlag ; CPU:$E498 PRG:6498 A5 2E + and #$90 ; CPU:$E49A PRG:649A 29 90 + bne OlympicsScheduler_Loop34 ; CPU:$E49C PRG:649C D0 06 + sta VblankFlag ; CPU:$E49E PRG:649E 85 2E + inc OlympicsFrameCounter ; CPU:$E4A0 PRG:64A0 E6 2F + bne OlympicsScheduler_Loop35 ; CPU:$E4A2 PRG:64A2 D0 03 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop34 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop34: + jmp Sub_E109 ; CPU:$E4A4 PRG:64A4 4C 09 E1 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop35 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop35: + lda $0308 ; CPU:$E4A7 PRG:64A7 AD 08 03 + bne OlympicsScheduler_Loop36 ; CPU:$E4AA PRG:64AA D0 03 + jmp Sub_E109 ; CPU:$E4AC PRG:64AC 4C 09 E1 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop36 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop36: + lda #$12 ; CPU:$E4AF PRG:64AF A9 12 + ldx $0308 ; CPU:$E4B1 PRG:64B1 AE 08 03 + cpx #$05 ; CPU:$E4B4 PRG:64B4 E0 05 + bcc OlympicsScheduler_Loop37 ; CPU:$E4B6 PRG:64B6 90 02 + lda #$0F ; CPU:$E4B8 PRG:64B8 A9 0F +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop37 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop37: + sta Zp8A ; CPU:$E4BA PRG:64BA 85 8A + ldy #$03 ; CPU:$E4BC PRG:64BC A0 03 + jsr AudioChannelLoop ; CPU:$E4BE PRG:64BE 20 63 BE + lda #$04 ; CPU:$E4C1 PRG:64C1 A9 04 + sta Zp2C ; CPU:$E4C3 PRG:64C3 85 2C + lda #$03 ; CPU:$E4C5 PRG:64C5 A9 03 + sta Zp7E ; CPU:$E4C7 PRG:64C7 85 7E + lda #$00 ; CPU:$E4C9 PRG:64C9 A9 00 + sta $0403 ; CPU:$E4CB PRG:64CB 8D 03 04 + sta $040B ; CPU:$E4CE PRG:64CE 8D 0B 04 + sta $0413 ; CPU:$E4D1 PRG:64D1 8D 13 04 + sta Zp81 ; CPU:$E4D4 PRG:64D4 85 81 + sta Zp89 ; CPU:$E4D6 PRG:64D6 85 89 + jsr Sub_EB4E ; CPU:$E4D8 PRG:64D8 20 4E EB + lda GameMode ; CPU:$E4DB PRG:64DB A5 8C + asl a ; CPU:$E4DD PRG:64DD 0A + asl a ; CPU:$E4DE PRG:64DE 0A + asl a ; CPU:$E4DF PRG:64DF 0A + ldx $0308 ; CPU:$E4E0 PRG:64E0 AE 08 03 + cpx #$05 ; CPU:$E4E3 PRG:64E3 E0 05 + bcc OlympicsScheduler_Loop38 ; CPU:$E4E5 PRG:64E5 90 02 + ora #$40 ; CPU:$E4E7 PRG:64E7 09 40 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop38 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop38: + sta Zp87 ; CPU:$E4E9 PRG:64E9 85 87 +; ----------------------------------------------------------------------------- +; Routine: Sub_E4EB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E4EB: + jsr Sub_EF4C ; CPU:$E4EB PRG:64EB 20 4C EF + lda Zp87 ; CPU:$E4EE PRG:64EE A5 87 + and #$38 ; CPU:$E4F0 PRG:64F0 29 38 + lsr a ; CPU:$E4F2 PRG:64F2 4A + lsr a ; CPU:$E4F3 PRG:64F3 4A + tay ; CPU:$E4F4 PRG:64F4 A8 + lda $EA7F,y ; CPU:$E4F5 PRG:64F5 B9 7F EA + sta Zp12 ; CPU:$E4F8 PRG:64F8 85 12 + lda $EA80,y ; CPU:$E4FA PRG:64FA B9 80 EA + sta Zp13 ; CPU:$E4FD PRG:64FD 85 13 + ldy #$00 ; CPU:$E4FF PRG:64FF A0 00 + lda (Zp12),y ; CPU:$E501 PRG:6501 B1 12 + sta $0367,y ; CPU:$E503 PRG:6503 99 67 03 + iny ; CPU:$E506 PRG:6506 C8 + lda (Zp12),y ; CPU:$E507 PRG:6507 B1 12 + sta $0367,y ; CPU:$E509 PRG:6509 99 67 03 + iny ; CPU:$E50C PRG:650C C8 + lda (Zp12),y ; CPU:$E50D PRG:650D B1 12 + sta $0367,y ; CPU:$E50F PRG:650F 99 67 03 + iny ; CPU:$E512 PRG:6512 C8 + sta Zp14 ; CPU:$E513 PRG:6513 85 14 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonnegative: + lda (Zp12),y ; CPU:$E515 PRG:6515 B1 12 + sta $0367,y ; CPU:$E517 PRG:6517 99 67 03 + iny ; CPU:$E51A PRG:651A C8 + dec Zp14 ; CPU:$E51B PRG:651B C6 14 + bpl OlympicsScheduler_OnNonnegative ; CPU:$E51D PRG:651D 10 F6 + lda #$FF ; CPU:$E51F PRG:651F A9 FF + sta $0367,y ; CPU:$E521 PRG:6521 99 67 03 + ldy #$03 ; CPU:$E524 PRG:6524 A0 03 + lda #$67 ; CPU:$E526 PRG:6526 A9 67 + jsr PaletteLoad ; CPU:$E528 PRG:6528 20 9D FA + rts ; CPU:$E52B PRG:652B 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E52C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E52C: + lda Zp87 ; CPU:$E52C PRG:652C A5 87 + bpl OlympicsScheduler_Loop40 ; CPU:$E52E PRG:652E 10 24 + lda $0189 ; CPU:$E530 PRG:6530 AD 89 01 + and #$10 ; CPU:$E533 PRG:6533 29 10 + beq OlympicsScheduler_Loop39 ; CPU:$E535 PRG:6535 F0 18 + jsr ClearObjectSlot ; CPU:$E537 PRG:6537 20 BF BE + lda Zp8A ; CPU:$E53A PRG:653A A5 8A + eor #$80 ; CPU:$E53C PRG:653C 49 80 + sta Zp8A ; CPU:$E53E PRG:653E 85 8A + bmi OlympicsScheduler_OnNonzero5 ; CPU:$E540 PRG:6540 30 11 + ldx #$00 ; CPU:$E542 PRG:6542 A2 00 + stx OlympicsEventIndex ; CPU:$E544 PRG:6544 86 80 + ldx #$1A ; CPU:$E546 PRG:6546 A2 1A + stx Zp81 ; CPU:$E548 PRG:6548 86 81 + ldy #$03 ; CPU:$E54A PRG:654A A0 03 + jsr AudioChannelLoop ; CPU:$E54C PRG:654C 20 63 BE +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop39 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop39: + lda Zp8A ; CPU:$E54F PRG:654F A5 8A + bpl OlympicsScheduler_Loop40 ; CPU:$E551 PRG:6551 10 01 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero5: + rts ; CPU:$E553 PRG:6553 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop40 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop40: + lda Zp89 ; CPU:$E554 PRG:6554 A5 89 + bmi OlympicsScheduler_Loop43 ; CPU:$E556 PRG:6556 30 3A + lda $0189 ; CPU:$E558 PRG:6558 AD 89 01 + and #$20 ; CPU:$E55B PRG:655B 29 20 + beq OlympicsScheduler_Loop44 ; CPU:$E55D PRG:655D F0 56 +; ----------------------------------------------------------------------------- +; Routine: Sub_E55F +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E55F: + lda $0308 ; CPU:$E55F PRG:655F AD 08 03 + cmp #$05 ; CPU:$E562 PRG:6562 C9 05 + beq OlympicsScheduler_Loop41 ; CPU:$E564 PRG:6564 F0 03 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero6: + jmp Sub_E109 ; CPU:$E566 PRG:6566 4C 09 E1 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop41 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop41: + ldx GameMode ; CPU:$E569 PRG:6569 A6 8C + cpx #$03 ; CPU:$E56B PRG:656B E0 03 + bcc OlympicsScheduler_Loop42 ; CPU:$E56D PRG:656D 90 18 + lda Zp89 ; CPU:$E56F PRG:656F A5 89 + bne OlympicsScheduler_OnNonzero6 ; CPU:$E571 PRG:6571 D0 F3 + ora #$80 ; CPU:$E573 PRG:6573 09 80 + sta Zp89 ; CPU:$E575 PRG:6575 85 89 + lda #$00 ; CPU:$E577 PRG:6577 A9 00 + sta Zp81 ; CPU:$E579 PRG:6579 85 81 + lda Zp87 ; CPU:$E57B PRG:657B A5 87 + ora #$80 ; CPU:$E57D PRG:657D 09 80 + sta Zp87 ; CPU:$E57F PRG:657F 85 87 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarryClear +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarryClear: + jsr Sub_ED9F ; CPU:$E581 PRG:6581 20 9F ED + jmp OlympicsScheduler_Loop46 ; CPU:$E584 PRG:6584 4C D2 E5 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop42 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop42: + ldy $E606,x ; CPU:$E587 PRG:6587 BC 06 E6 + lda $E600,y ; CPU:$E58A PRG:658A B9 00 E6 + sta GameMode ; CPU:$E58D PRG:658D 85 8C + jmp Sub_E625 ; CPU:$E58F PRG:658F 4C 25 E6 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop43 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop43: + lda OlympicsEventIndex ; CPU:$E592 PRG:6592 A5 80 + and #$1F ; CPU:$E594 PRG:6594 29 1F + bne OlympicsScheduler_OnNonzero5 ; CPU:$E596 PRG:6596 D0 BB + inc Zp81 ; CPU:$E598 PRG:6598 E6 81 + lda Zp81 ; CPU:$E59A PRG:659A A5 81 + cmp #$1B ; CPU:$E59C PRG:659C C9 1B + bcc OlympicsScheduler_OnNonzero5 ; CPU:$E59E PRG:659E 90 B3 + lda #$00 ; CPU:$E5A0 PRG:65A0 A9 00 + sta Zp81 ; CPU:$E5A2 PRG:65A2 85 81 + inc Zp89 ; CPU:$E5A4 PRG:65A4 E6 89 + lda Zp89 ; CPU:$E5A6 PRG:65A6 A5 89 + and #$7F ; CPU:$E5A8 PRG:65A8 29 7F + cmp $0394 ; CPU:$E5AA PRG:65AA CD 94 03 + bcc OlympicsScheduler_OnCarryClear ; CPU:$E5AD PRG:65AD 90 D2 + jsr Sub_EE52 ; CPU:$E5AF PRG:65AF 20 52 EE + jmp OlympicsScheduler_Loop46 ; CPU:$E5B2 PRG:65B2 4C D2 E5 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop44 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop44: + ldx Zp87 ; CPU:$E5B5 PRG:65B5 A6 87 + bmi OlympicsScheduler_Loop45 ; CPU:$E5B7 PRG:65B7 30 12 + lda OlympicsEventIndex ; CPU:$E5B9 PRG:65B9 A5 80 + and #$3F ; CPU:$E5BB PRG:65BB 29 3F + bne OlympicsScheduler_Loop46 ; CPU:$E5BD PRG:65BD D0 13 + txa ; CPU:$E5BF PRG:65BF 8A + and #$07 ; CPU:$E5C0 PRG:65C0 29 07 + tax ; CPU:$E5C2 PRG:65C2 AA + sta Zp0F ; CPU:$E5C3 PRG:65C3 85 0F + jsr Sub_EC8C ; CPU:$E5C5 PRG:65C5 20 8C EC + jmp OlympicsScheduler_Loop46 ; CPU:$E5C8 PRG:65C8 4C D2 E5 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop45 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop45: + lda OlympicsEventIndex ; CPU:$E5CB PRG:65CB A5 80 + bne OlympicsScheduler_Loop46 ; CPU:$E5CD PRG:65CD D0 03 + jsr Sub_ED5A ; CPU:$E5CF PRG:65CF 20 5A ED +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop46 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop46: + lda OlympicsEventIndex ; CPU:$E5D2 PRG:65D2 A5 80 + and #$0F ; CPU:$E5D4 PRG:65D4 29 0F + bne OlympicsScheduler_Loop49 ; CPU:$E5D6 PRG:65D6 D0 19 + inc Zp81 ; CPU:$E5D8 PRG:65D8 E6 81 + lda Zp87 ; CPU:$E5DA PRG:65DA A5 87 + and #$20 ; CPU:$E5DC PRG:65DC 29 20 + beq OlympicsScheduler_Loop47 ; CPU:$E5DE PRG:65DE F0 04 + lda #$6E ; CPU:$E5E0 PRG:65E0 A9 6E + bne OlympicsScheduler_Loop48 ; CPU:$E5E2 PRG:65E2 D0 02 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop47 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop47: + lda #$36 ; CPU:$E5E4 PRG:65E4 A9 36 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop48 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop48: + cmp Zp81 ; CPU:$E5E6 PRG:65E6 C5 81 + bcs OlympicsScheduler_Loop49 ; CPU:$E5E8 PRG:65E8 B0 07 + lda #$00 ; CPU:$E5EA PRG:65EA A9 00 + sta Zp81 ; CPU:$E5EC PRG:65EC 85 81 + jmp Sub_E55F ; CPU:$E5EE PRG:65EE 4C 5F E5 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop49 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop49: + rts ; CPU:$E5F1 PRG:65F1 60 +; ---- data $E5F2-$E609 (24 bytes) ---- +; referenced by `lda $E5F3,y` at $E0DB (operand $E5F3 falls inside this region) +; referenced by `lda $E5F2,y` at $E0DF (operand $E5F2 falls inside this region) +; referenced by `lda $E5FF,x` at $E189 (operand $E5FF falls inside this region) +; referenced by `lda $E606,y` at $E1D9 (operand $E606 falls inside this region) +; referenced by `ldy $E606,x` at $E587 (operand $E606 falls inside this region) +; referenced by `lda $E600,y` at $E58A (operand $E600 falls inside this region) +; ... and 1 further references from decoded code + .byte $EE, $E0, $6C, $E1, $0C, $E2, $DD, $E2, $DD, $E2, $29, $E4, $2B, $E5, $00, $02 ; CPU:$E5F2 PRG:65F2 EE E0 6C E1 0C E2 DD E2 DD E2 29 E4 2B E5 00 02 + .byte $01, $03, $00, $05, $01, $03, $02, $04 ; CPU:$E602 PRG:6602 01 03 00 05 01 03 02 04 +; ----------------------------------------------------------------------------- +; Routine: Sub_E60A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E60A: + jsr EventInit ; CPU:$E60A PRG:660A 20 7C EF + lda #$04 ; CPU:$E60D PRG:660D A9 04 + sta Zp2C ; CPU:$E60F PRG:660F 85 2C + jsr Sub_FC4E ; CPU:$E611 PRG:6611 20 4E FC + jsr FrameDelay ; CPU:$E614 PRG:6614 20 E6 F8 + jsr ClearObjectSlot ; CPU:$E617 PRG:6617 20 BF BE + lda #$30 ; CPU:$E61A PRG:661A A9 30 + sta PpuCtrlMirror ; CPU:$E61C PRG:661C 85 18 + lda #$00 ; CPU:$E61E PRG:661E A9 00 + sta ScrollX ; CPU:$E620 PRG:6620 85 27 + sta ScrollY ; CPU:$E622 PRG:6622 85 28 + rts ; CPU:$E624 PRG:6624 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E625 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E625: + lda #$00 ; CPU:$E625 PRG:6625 A9 00 + sta VblankFlag ; CPU:$E627 PRG:6627 85 2E + jsr ClearObjectSlot ; CPU:$E629 PRG:6629 20 BF BE +; ----------------------------------------------------------------------------- +; Routine: Sub_E62C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E62C: + lda #$05 ; CPU:$E62C PRG:662C A9 05 + sta OlympicsFrameCounter ; CPU:$E62E PRG:662E 85 2F + lda #$04 ; CPU:$E630 PRG:6630 A9 04 + sta Zp2C ; CPU:$E632 PRG:6632 85 2C + lda #$FF ; CPU:$E634 PRG:6634 A9 FF + ldx #$06 ; CPU:$E636 PRG:6636 A2 06 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero7: + sta $0553,x ; CPU:$E638 PRG:6638 9D 53 05 + dex ; CPU:$E63B PRG:663B CA + bne OlympicsScheduler_OnNonzero7 ; CPU:$E63C PRG:663C D0 FA + ldy #$24 ; CPU:$E63E PRG:663E A0 24 + lda #$03 ; CPU:$E640 PRG:6640 A9 03 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero8: + sta $07C9,y ; CPU:$E642 PRG:6642 99 C9 07 + dey ; CPU:$E645 PRG:6645 88 + bne OlympicsScheduler_OnNonzero8 ; CPU:$E646 PRG:6646 D0 FA + lda #$0F ; CPU:$E648 PRG:6648 A9 0F + sta $07CB ; CPU:$E64A PRG:664A 8D CB 07 + sta $07CF ; CPU:$E64D PRG:664D 8D CF 07 + sta $07D4 ; CPU:$E650 PRG:6650 8D D4 07 + sta $07D9 ; CPU:$E653 PRG:6653 8D D9 07 + lda #$00 ; CPU:$E656 PRG:6656 A9 00 + sta $0384 ; CPU:$E658 PRG:6658 8D 84 03 + sta $0383 ; CPU:$E65B PRG:665B 8D 83 03 + sta $0382 ; CPU:$E65E PRG:665E 8D 82 03 + sta $0388 ; CPU:$E661 PRG:6661 8D 88 03 + sta $0389 ; CPU:$E664 PRG:6664 8D 89 03 + sta $038C ; CPU:$E667 PRG:6667 8D 8C 03 + sta $038D ; CPU:$E66A PRG:666A 8D 8D 03 + sta Zp7D ; CPU:$E66D PRG:666D 85 7D + sta $0473 ; CPU:$E66F PRG:666F 8D 73 04 + ldy #$81 ; CPU:$E672 PRG:6672 A0 81 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero9: + sta $0402,y ; CPU:$E674 PRG:6674 99 02 04 + dey ; CPU:$E677 PRG:6677 88 + bne OlympicsScheduler_OnNonzero9 ; CPU:$E678 PRG:6678 D0 FA + ldy #$60 ; CPU:$E67A PRG:667A A0 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero10: + sta $0483,y ; CPU:$E67C PRG:667C 99 83 04 + dey ; CPU:$E67F PRG:667F 88 + bne OlympicsScheduler_OnNonzero10 ; CPU:$E680 PRG:6680 D0 FA + sta $0180 ; CPU:$E682 PRG:6682 8D 80 01 + lda #$01 ; CPU:$E685 PRG:6685 A9 01 + sta $0391 ; CPU:$E687 PRG:6687 8D 91 03 + lda #$00 ; CPU:$E68A PRG:668A A9 00 + ldx $0394 ; CPU:$E68C PRG:668C AE 94 03 + cpx #$02 ; CPU:$E68F PRG:668F E0 02 + bcc OlympicsScheduler_Loop50 ; CPU:$E691 PRG:6691 90 02 + lda #$02 ; CPU:$E693 PRG:6693 A9 02 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop50 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop50: + sta $0392 ; CPU:$E695 PRG:6695 8D 92 03 + lda $0308 ; CPU:$E698 PRG:6698 AD 08 03 + bne OlympicsScheduler_Loop51 ; CPU:$E69B PRG:669B D0 05 + lda #$80 ; CPU:$E69D PRG:669D A9 80 + sta $0392 ; CPU:$E69F PRG:669F 8D 92 03 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop51 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop51: + lda #$00 ; CPU:$E6A2 PRG:66A2 A9 00 + jsr TaskSlotStart ; CPU:$E6A4 PRG:66A4 20 A0 F7 + rts ; CPU:$E6A7 PRG:66A7 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E6A8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E6A8: + lda #$F4 ; CPU:$E6A8 PRG:66A8 A9 F4 + sta Zp12 ; CPU:$E6AA PRG:66AA 85 12 + lda #$04 ; CPU:$E6AC PRG:66AC A9 04 + sta Zp13 ; CPU:$E6AE PRG:66AE 85 13 + ldx #$06 ; CPU:$E6B0 PRG:66B0 A2 06 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarrySet +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarrySet: + lda #$00 ; CPU:$E6B2 PRG:66B2 A9 00 + ldy #$09 ; CPU:$E6B4 PRG:66B4 A0 09 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonnegative2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonnegative2: + sta (Zp12),y ; CPU:$E6B6 PRG:66B6 91 12 + dey ; CPU:$E6B8 PRG:66B8 88 + bpl OlympicsScheduler_OnNonnegative2 ; CPU:$E6B9 PRG:66B9 10 FB + dex ; CPU:$E6BB PRG:66BB CA + beq OlympicsScheduler_Loop52 ; CPU:$E6BC PRG:66BC F0 0D + lda Zp12 ; CPU:$E6BE PRG:66BE A5 12 + clc ; CPU:$E6C0 PRG:66C0 18 + adc #$0A ; CPU:$E6C1 PRG:66C1 69 0A + sta Zp12 ; CPU:$E6C3 PRG:66C3 85 12 + bcc OlympicsScheduler_OnCarrySet ; CPU:$E6C5 PRG:66C5 90 EB + inc Zp13 ; CPU:$E6C7 PRG:66C7 E6 13 + bcs OlympicsScheduler_OnCarrySet ; CPU:$E6C9 PRG:66C9 B0 E7 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop52 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop52: + rts ; CPU:$E6CB PRG:66CB 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E6CC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E6CC: + sta Zp10 ; CPU:$E6CC PRG:66CC 85 10 + lda $EA67,x ; CPU:$E6CE PRG:66CE BD 67 EA + sta $0367 ; CPU:$E6D1 PRG:66D1 8D 67 03 + lda $EA68,x ; CPU:$E6D4 PRG:66D4 BD 68 EA + sta $0368 ; CPU:$E6D7 PRG:66D7 8D 68 03 + lda #$00 ; CPU:$E6DA PRG:66DA A9 00 + sta $0369 ; CPU:$E6DC PRG:66DC 8D 69 03 + lda $EA74,x ; CPU:$E6DF PRG:66DF BD 74 EA + sta $036A ; CPU:$E6E2 PRG:66E2 8D 6A 03 + lda #$0E ; CPU:$E6E5 PRG:66E5 A9 0E + sta $036D ; CPU:$E6E7 PRG:66E7 8D 6D 03 + lda #$00 ; CPU:$E6EA PRG:66EA A9 00 + sta Zp11 ; CPU:$E6EC PRG:66EC 85 11 + sta Zp12 ; CPU:$E6EE PRG:66EE 85 12 + lda $EA73,x ; CPU:$E6F0 PRG:66F0 BD 73 EA + sta Zp13 ; CPU:$E6F3 PRG:66F3 85 13 + ldx #$07 ; CPU:$E6F5 PRG:66F5 A2 07 + lda #$1E ; CPU:$E6F7 PRG:66F7 A9 1E + jsr Sub_E709 ; CPU:$E6F9 PRG:66F9 20 09 E7 + lda #$FF ; CPU:$E6FC PRG:66FC A9 FF + sta $0367,x ; CPU:$E6FE PRG:66FE 9D 67 03 + ldy #$03 ; CPU:$E701 PRG:6701 A0 03 + lda #$67 ; CPU:$E703 PRG:6703 A9 67 + jsr PaletteLoad ; CPU:$E705 PRG:6705 20 9D FA + rts ; CPU:$E708 PRG:6708 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E709 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E709: + sta Zp16 ; CPU:$E709 PRG:6709 85 16 + lda #$00 ; CPU:$E70B PRG:670B A9 00 + sta Zp17 ; CPU:$E70D PRG:670D 85 17 + lda Zp10 ; CPU:$E70F PRG:670F A5 10 + clc ; CPU:$E711 PRG:6711 18 + adc #$01 ; CPU:$E712 PRG:6712 69 01 + jsr Sub_E880 ; CPU:$E714 PRG:6714 20 80 E8 + lda Zp11 ; CPU:$E717 PRG:6717 A5 11 + bmi OlympicsScheduler_Loop53 ; CPU:$E719 PRG:6719 30 10 + sta $0367,x ; CPU:$E71B PRG:671B 9D 67 03 + inx ; CPU:$E71E PRG:671E E8 + lda Zp13 ; CPU:$E71F PRG:671F A5 13 + sta $0367,x ; CPU:$E721 PRG:6721 9D 67 03 + inx ; CPU:$E724 PRG:6724 E8 + lda Zp11 ; CPU:$E725 PRG:6725 A5 11 + sta $0367,x ; CPU:$E727 PRG:6727 9D 67 03 + inx ; CPU:$E72A PRG:672A E8 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop53 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop53: + lda Zp10 ; CPU:$E72B PRG:672B A5 10 + clc ; CPU:$E72D PRG:672D 18 + adc #$01 ; CPU:$E72E PRG:672E 69 01 + jsr Sub_E85A ; CPU:$E730 PRG:6730 20 5A E8 + ldy #$00 ; CPU:$E733 PRG:6733 A0 00 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarryClear2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarryClear2: + lda (Zp14),y ; CPU:$E735 PRG:6735 B1 14 + bne OlympicsScheduler_Loop54 ; CPU:$E737 PRG:6737 D0 02 + ora Zp12 ; CPU:$E739 PRG:6739 05 12 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop54 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop54: + sta $0367,x ; CPU:$E73B PRG:673B 9D 67 03 + inx ; CPU:$E73E PRG:673E E8 + iny ; CPU:$E73F PRG:673F C8 + cpy #$0A ; CPU:$E740 PRG:6740 C0 0A + bcc OlympicsScheduler_OnCarryClear2 ; CPU:$E742 PRG:6742 90 F1 + rts ; CPU:$E744 PRG:6744 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E745 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E745: + sta Zp10 ; CPU:$E745 PRG:6745 85 10 + lda #$20 ; CPU:$E747 PRG:6747 A9 20 + sta $0367 ; CPU:$E749 PRG:6749 8D 67 03 + lda #$EA ; CPU:$E74C PRG:674C A9 EA + sta $0368 ; CPU:$E74E PRG:674E 8D 68 03 + lda #$0E ; CPU:$E751 PRG:6751 A9 0E + sta $0369 ; CPU:$E753 PRG:6753 8D 69 03 + lda #$03 ; CPU:$E756 PRG:6756 A9 03 + sta Zp11 ; CPU:$E758 PRG:6758 85 11 + sta Zp12 ; CPU:$E75A PRG:675A 85 12 + sta Zp13 ; CPU:$E75C PRG:675C 85 13 + ldx #$03 ; CPU:$E75E PRG:675E A2 03 + lda #$32 ; CPU:$E760 PRG:6760 A9 32 + jsr Sub_E709 ; CPU:$E762 PRG:6762 20 09 E7 + lda #$FF ; CPU:$E765 PRG:6765 A9 FF + sta $0367,x ; CPU:$E767 PRG:6767 9D 67 03 + ldy #$03 ; CPU:$E76A PRG:676A A0 03 + lda #$67 ; CPU:$E76C PRG:676C A9 67 + jsr PaletteLoad ; CPU:$E76E PRG:676E 20 9D FA + rts ; CPU:$E771 PRG:6771 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E772 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E772: + sta Zp10 ; CPU:$E772 PRG:6772 85 10 + lda $EA01,x ; CPU:$E774 PRG:6774 BD 01 EA + sta $036A ; CPU:$E777 PRG:6777 8D 6A 03 + txa ; CPU:$E77A PRG:677A 8A + asl a ; CPU:$E77B PRG:677B 0A + tax ; CPU:$E77C PRG:677C AA + lda $EA5C,x ; CPU:$E77D PRG:677D BD 5C EA + sta $0367 ; CPU:$E780 PRG:6780 8D 67 03 + lda $EA5B,x ; CPU:$E783 PRG:6783 BD 5B EA + sta $0368 ; CPU:$E786 PRG:6786 8D 68 03 + lda #$17 ; CPU:$E789 PRG:6789 A9 17 + sta $0369 ; CPU:$E78B PRG:678B 8D 69 03 + lda #$FF ; CPU:$E78E PRG:678E A9 FF + sta Zp11 ; CPU:$E790 PRG:6790 85 11 + lda #$03 ; CPU:$E792 PRG:6792 A9 03 + sta $036B ; CPU:$E794 PRG:6794 8D 6B 03 + sta $036C ; CPU:$E797 PRG:6797 8D 6C 03 + sta Zp12 ; CPU:$E79A PRG:679A 85 12 + sta Zp13 ; CPU:$E79C PRG:679C 85 13 + ldx #$06 ; CPU:$E79E PRG:679E A2 06 + lda #$32 ; CPU:$E7A0 PRG:67A0 A9 32 + jsr Sub_E709 ; CPU:$E7A2 PRG:67A2 20 09 E7 + lda Zp87 ; CPU:$E7A5 PRG:67A5 A5 87 + and #$38 ; CPU:$E7A7 PRG:67A7 29 38 + lsr a ; CPU:$E7A9 PRG:67A9 4A + lsr a ; CPU:$E7AA PRG:67AA 4A + lsr a ; CPU:$E7AB PRG:67AB 4A + sta Zp08 ; CPU:$E7AC PRG:67AC 85 08 +; ----------------------------------------------------------------------------- +; Routine: Sub_E7AE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E7AE: + lda Zp08 ; CPU:$E7AE PRG:67AE A5 08 + cmp #$05 ; CPU:$E7B0 PRG:67B0 C9 05 + bcc OlympicsScheduler_Loop55 ; CPU:$E7B2 PRG:67B2 90 02 + dec Zp08 ; CPU:$E7B4 PRG:67B4 C6 08 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop55 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop55: + lda #$03 ; CPU:$E7B6 PRG:67B6 A9 03 + sta $0367,x ; CPU:$E7B8 PRG:67B8 9D 67 03 + inx ; CPU:$E7BB PRG:67BB E8 + lda #$0A ; CPU:$E7BC PRG:67BC A9 0A + sta Zp16 ; CPU:$E7BE PRG:67BE 85 16 + lda #$14 ; CPU:$E7C0 PRG:67C0 A9 14 + sta Zp17 ; CPU:$E7C2 PRG:67C2 85 17 + lda Zp08 ; CPU:$E7C4 PRG:67C4 A5 08 + ldy Zp10 ; CPU:$E7C6 PRG:67C6 A4 10 + jsr Sub_EE6E ; CPU:$E7C8 PRG:67C8 20 6E EE + sty Zp11 ; CPU:$E7CB PRG:67CB 84 11 + cpy #$18 ; CPU:$E7CD PRG:67CD C0 18 + bcc OlympicsScheduler_Loop56 ; CPU:$E7CF PRG:67CF 90 10 + lda #$03 ; CPU:$E7D1 PRG:67D1 A9 03 + sta $0367,x ; CPU:$E7D3 PRG:67D3 9D 67 03 + inx ; CPU:$E7D6 PRG:67D6 E8 + sta $0367,x ; CPU:$E7D7 PRG:67D7 9D 67 03 + inx ; CPU:$E7DA PRG:67DA E8 + sta $0367,x ; CPU:$E7DB PRG:67DB 9D 67 03 + inx ; CPU:$E7DE PRG:67DE E8 + bne OlympicsScheduler_Loop57 ; CPU:$E7DF PRG:67DF D0 1C +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop56 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop56: + lda $0572,y ; CPU:$E7E1 PRG:67E1 B9 72 05 + ora $055A,y ; CPU:$E7E4 PRG:67E4 19 5A 05 + bne OlympicsScheduler_Loop58 ; CPU:$E7E7 PRG:67E7 D0 1E + lda #$03 ; CPU:$E7E9 PRG:67E9 A9 03 + sta $0367,x ; CPU:$E7EB PRG:67EB 9D 67 03 + inx ; CPU:$E7EE PRG:67EE E8 + lda #$F4 ; CPU:$E7EF PRG:67EF A9 F4 + sta $0367,x ; CPU:$E7F1 PRG:67F1 9D 67 03 + inx ; CPU:$E7F4 PRG:67F4 E8 + lda #$F5 ; CPU:$E7F5 PRG:67F5 A9 F5 + sta $0367,x ; CPU:$E7F7 PRG:67F7 9D 67 03 + inx ; CPU:$E7FA PRG:67FA E8 + lda #$F6 ; CPU:$E7FB PRG:67FB A9 F6 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop57 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop57: + sta $0367,x ; CPU:$E7FD PRG:67FD 9D 67 03 + inx ; CPU:$E800 PRG:6800 E8 + lda #$0A ; CPU:$E801 PRG:6801 A9 0A + sta Zp17 ; CPU:$E803 PRG:6803 85 17 + bne OlympicsScheduler_Loop59 ; CPU:$E805 PRG:6805 D0 12 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop58 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop58: + lda $0572,y ; CPU:$E807 PRG:6807 B9 72 05 + jsr Sub_E880 ; CPU:$E80A PRG:680A 20 80 E8 + lda #$0A ; CPU:$E80D PRG:680D A9 0A + sta Zp17 ; CPU:$E80F PRG:680F 85 17 + ldy Zp11 ; CPU:$E811 PRG:6811 A4 11 + lda $055A,y ; CPU:$E813 PRG:6813 B9 5A 05 + jsr Sub_E880 ; CPU:$E816 PRG:6816 20 80 E8 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop59 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop59: + lda #$03 ; CPU:$E819 PRG:6819 A9 03 + sta $0367,x ; CPU:$E81B PRG:681B 9D 67 03 + inx ; CPU:$E81E PRG:681E E8 + ldy Zp11 ; CPU:$E81F PRG:681F A4 11 + lda $0530,y ; CPU:$E821 PRG:6821 B9 30 05 + sta Zp10 ; CPU:$E824 PRG:6824 85 10 + cpy #$18 ; CPU:$E826 PRG:6826 C0 18 + bcc OlympicsScheduler_Loop60 ; CPU:$E828 PRG:6828 90 0B + lda $0536,y ; CPU:$E82A PRG:682A B9 36 05 + beq OlympicsScheduler_Loop61 ; CPU:$E82D PRG:682D F0 0A + tay ; CPU:$E82F PRG:682F A8 + lda $EA0A,y ; CPU:$E830 PRG:6830 B9 0A EA + bne OlympicsScheduler_Loop63 ; CPU:$E833 PRG:6833 D0 0F +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop60 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop60: + cmp #$A0 ; CPU:$E835 PRG:6835 C9 A0 + bcs OlympicsScheduler_Loop62 ; CPU:$E837 PRG:6837 B0 04 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop61 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop61: + lda #$03 ; CPU:$E839 PRG:6839 A9 03 + bne OlympicsScheduler_Loop63 ; CPU:$E83B PRG:683B D0 07 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop62 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop62: + sbc #$A0 ; CPU:$E83D PRG:683D E9 A0 + sta Zp10 ; CPU:$E83F PRG:683F 85 10 + lda $EA0B ; CPU:$E841 PRG:6841 AD 0B EA +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop63 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop63: + sta $0367,x ; CPU:$E844 PRG:6844 9D 67 03 + inx ; CPU:$E847 PRG:6847 E8 + lda Zp10 ; CPU:$E848 PRG:6848 A5 10 + jsr Sub_E880 ; CPU:$E84A PRG:684A 20 80 E8 + lda #$FF ; CPU:$E84D PRG:684D A9 FF + sta $0367,x ; CPU:$E84F PRG:684F 9D 67 03 + ldy #$03 ; CPU:$E852 PRG:6852 A0 03 + lda #$67 ; CPU:$E854 PRG:6854 A9 67 + jsr PaletteLoad ; CPU:$E856 PRG:6856 20 9D FA + rts ; CPU:$E859 PRG:6859 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E85A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E85A: + tay ; CPU:$E85A PRG:685A A8 + bne OlympicsScheduler_Loop64 ; CPU:$E85B PRG:685B D0 09 + lda #$7F ; CPU:$E85D PRG:685D A9 7F + sta Zp14 ; CPU:$E85F PRG:685F 85 14 + lda #$9C ; CPU:$E861 PRG:6861 A9 9C + sta Zp15 ; CPU:$E863 PRG:6863 85 15 + rts ; CPU:$E865 PRG:6865 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop64 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop64: + ldy #$00 ; CPU:$E866 PRG:6866 A0 00 + sty Zp15 ; CPU:$E868 PRG:6868 84 15 + asl a ; CPU:$E86A PRG:686A 0A + sta Zp14 ; CPU:$E86B PRG:686B 85 14 + asl a ; CPU:$E86D PRG:686D 0A + rol Zp15 ; CPU:$E86E PRG:686E 26 15 + asl a ; CPU:$E870 PRG:6870 0A + rol Zp15 ; CPU:$E871 PRG:6871 26 15 + adc Zp14 ; CPU:$E873 PRG:6873 65 14 + adc #$EA ; CPU:$E875 PRG:6875 69 EA + sta Zp14 ; CPU:$E877 PRG:6877 85 14 + lda Zp15 ; CPU:$E879 PRG:6879 A5 15 + adc #$04 ; CPU:$E87B PRG:687B 69 04 + sta Zp15 ; CPU:$E87D PRG:687D 85 15 + rts ; CPU:$E87F PRG:687F 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E880 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E880: + pha ; CPU:$E880 PRG:6880 48 + and #$F0 ; CPU:$E881 PRG:6881 29 F0 + lsr a ; CPU:$E883 PRG:6883 4A + lsr a ; CPU:$E884 PRG:6884 4A + lsr a ; CPU:$E885 PRG:6885 4A + lsr a ; CPU:$E886 PRG:6886 4A + adc Zp16 ; CPU:$E887 PRG:6887 65 16 + tay ; CPU:$E889 PRG:6889 A8 + lda $EA00,y ; CPU:$E88A PRG:688A B9 00 EA + sta $0367,x ; CPU:$E88D PRG:688D 9D 67 03 + inx ; CPU:$E890 PRG:6890 E8 + pla ; CPU:$E891 PRG:6891 68 + and #$0F ; CPU:$E892 PRG:6892 29 0F + adc Zp17 ; CPU:$E894 PRG:6894 65 17 + tay ; CPU:$E896 PRG:6896 A8 + lda $EA00,y ; CPU:$E897 PRG:6897 B9 00 EA + sta $0367,x ; CPU:$E89A PRG:689A 9D 67 03 + inx ; CPU:$E89D PRG:689D E8 + rts ; CPU:$E89E PRG:689E 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E89F +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E89F: + sta Zp11 ; CPU:$E89F PRG:689F 85 11 + and #$0F ; CPU:$E8A1 PRG:68A1 29 0F + sta Zp10 ; CPU:$E8A3 PRG:68A3 85 10 + lda Zp11 ; CPU:$E8A5 PRG:68A5 A5 11 + and #$F0 ; CPU:$E8A7 PRG:68A7 29 F0 + lsr a ; CPU:$E8A9 PRG:68A9 4A + lsr a ; CPU:$E8AA PRG:68AA 4A + lsr a ; CPU:$E8AB PRG:68AB 4A + tay ; CPU:$E8AC PRG:68AC A8 + lda $EA4F,y ; CPU:$E8AD PRG:68AD B9 4F EA + adc Zp10 ; CPU:$E8B0 PRG:68B0 65 10 + adc #$25 ; CPU:$E8B2 PRG:68B2 69 25 + sta $0368,x ; CPU:$E8B4 PRG:68B4 9D 68 03 + lda $EA50,y ; CPU:$E8B7 PRG:68B7 B9 50 EA + adc #$00 ; CPU:$E8BA PRG:68BA 69 00 + sta $0367,x ; CPU:$E8BC PRG:68BC 9D 67 03 + rts ; CPU:$E8BF PRG:68BF 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E8C0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E8C0: + and #$01 ; CPU:$E8C0 PRG:68C0 29 01 + bne OlympicsScheduler_Loop65 ; CPU:$E8C2 PRG:68C2 D0 02 + lda #$FF ; CPU:$E8C4 PRG:68C4 A9 FF +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop65 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop65: + sta Zp12 ; CPU:$E8C6 PRG:68C6 85 12 + clc ; CPU:$E8C8 PRG:68C8 18 + adc $0398 ; CPU:$E8C9 PRG:68C9 6D 98 03 + cmp Zp10 ; CPU:$E8CC PRG:68CC C5 10 + bcc OlympicsScheduler_Loop67 ; CPU:$E8CE PRG:68CE 90 10 + ldx Zp12 ; CPU:$E8D0 PRG:68D0 A6 12 + bmi OlympicsScheduler_Loop66 ; CPU:$E8D2 PRG:68D2 30 04 + sbc Zp10 ; CPU:$E8D4 PRG:68D4 E5 10 + bcs OlympicsScheduler_Loop67 ; CPU:$E8D6 PRG:68D6 B0 08 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop66 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop66: + lda Zp10 ; CPU:$E8D8 PRG:68D8 A5 10 + clc ; CPU:$E8DA PRG:68DA 18 + adc $0398 ; CPU:$E8DB PRG:68DB 6D 98 03 + adc Zp12 ; CPU:$E8DE PRG:68DE 65 12 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop67 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop67: + sta $0398 ; CPU:$E8E0 PRG:68E0 8D 98 03 + cmp #$0E ; CPU:$E8E3 PRG:68E3 C9 0E + bcc OlympicsScheduler_Loop68 ; CPU:$E8E5 PRG:68E5 90 04 + sbc #$0E ; CPU:$E8E7 PRG:68E7 E9 0E + ldy #$01 ; CPU:$E8E9 PRG:68E9 A0 01 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop68 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop68: + tax ; CPU:$E8EB PRG:68EB AA + lda #$00 ; CPU:$E8EC PRG:68EC A9 00 + sta Zp16 ; CPU:$E8EE PRG:68EE 85 16 + sta Zp17 ; CPU:$E8F0 PRG:68F0 85 17 + lda #$01 ; CPU:$E8F2 PRG:68F2 A9 01 + clc ; CPU:$E8F4 PRG:68F4 18 + adc Zp11 ; CPU:$E8F5 PRG:68F5 65 11 + jmp Sub_E943 ; CPU:$E8F7 PRG:68F7 4C 43 E9 +; ----------------------------------------------------------------------------- +; Routine: Sub_E8FA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E8FA: + lda OlympicsEventIndex ; CPU:$E8FA PRG:68FA A5 80 + and #$08 ; CPU:$E8FC PRG:68FC 29 08 + sta Zp17 ; CPU:$E8FE PRG:68FE 85 17 + lda #$04 ; CPU:$E900 PRG:6900 A9 04 + ldx #$00 ; CPU:$E902 PRG:6902 A2 00 + ldy #$00 ; CPU:$E904 PRG:6904 A0 00 + sty Zp16 ; CPU:$E906 PRG:6906 84 16 + jsr Sub_E943 ; CPU:$E908 PRG:6908 20 43 E9 +; ----------------------------------------------------------------------------- +; Routine: Sub_E90B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E90B: + lda Zp87 ; CPU:$E90B PRG:690B A5 87 + adc #$02 ; CPU:$E90D PRG:690D 69 02 + tax ; CPU:$E90F PRG:690F AA + and #$06 ; CPU:$E910 PRG:6910 29 06 + bne OlympicsScheduler_Loop69 ; CPU:$E912 PRG:6912 D0 04 + txa ; CPU:$E914 PRG:6914 8A + eor #$0B ; CPU:$E915 PRG:6915 49 0B + tax ; CPU:$E917 PRG:6917 AA +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop69 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop69: + txa ; CPU:$E918 PRG:6918 8A + sta Zp87 ; CPU:$E919 PRG:6919 85 87 + and #$01 ; CPU:$E91B PRG:691B 29 01 + asl a ; CPU:$E91D PRG:691D 0A + asl a ; CPU:$E91E PRG:691E 0A + sta Zp17 ; CPU:$E91F PRG:691F 85 17 + txa ; CPU:$E921 PRG:6921 8A + and #$06 ; CPU:$E922 PRG:6922 29 06 + pha ; CPU:$E924 PRG:6924 48 + tax ; CPU:$E925 PRG:6925 AA + lda $E9F8,x ; CPU:$E926 PRG:6926 BD F8 E9 + sta Zp16 ; CPU:$E929 PRG:6929 85 16 + tax ; CPU:$E92B PRG:692B AA + ldy #$00 ; CPU:$E92C PRG:692C A0 00 + lda #$05 ; CPU:$E92E PRG:692E A9 05 + jsr Sub_E943 ; CPU:$E930 PRG:6930 20 43 E9 + pla ; CPU:$E933 PRG:6933 68 + tax ; CPU:$E934 PRG:6934 AA + lda $E9F9,x ; CPU:$E935 PRG:6935 BD F9 E9 + sta Zp16 ; CPU:$E938 PRG:6938 85 16 + tax ; CPU:$E93A PRG:693A AA + ldy #$00 ; CPU:$E93B PRG:693B A0 00 + lda #$06 ; CPU:$E93D PRG:693D A9 06 + jsr Sub_E943 ; CPU:$E93F PRG:693F 20 43 E9 + rts ; CPU:$E942 PRG:6942 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_E943 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E943: + sty Zp10 ; CPU:$E943 PRG:6943 84 10 + stx Zp11 ; CPU:$E945 PRG:6945 86 11 + asl a ; CPU:$E947 PRG:6947 0A + asl a ; CPU:$E948 PRG:6948 0A + asl a ; CPU:$E949 PRG:6949 0A + tay ; CPU:$E94A PRG:694A A8 + lda $E996,y ; CPU:$E94B PRG:694B B9 96 E9 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarryClear3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarryClear3: + dec Zp10 ; CPU:$E94E PRG:694E C6 10 + bmi OlympicsScheduler_Loop70 ; CPU:$E950 PRG:6950 30 05 + adc $E998,y ; CPU:$E952 PRG:6952 79 98 E9 + bcc OlympicsScheduler_OnCarryClear3 ; CPU:$E955 PRG:6955 90 F7 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop70 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop70: + sta Zp12 ; CPU:$E957 PRG:6957 85 12 + lda $E997,y ; CPU:$E959 PRG:6959 B9 97 E9 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarryClear4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarryClear4: + dec Zp11 ; CPU:$E95C PRG:695C C6 11 + bmi OlympicsScheduler_Loop71 ; CPU:$E95E PRG:695E 30 05 + adc $E999,y ; CPU:$E960 PRG:6960 79 99 E9 + bcc OlympicsScheduler_OnCarryClear4 ; CPU:$E963 PRG:6963 90 F7 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop71 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop71: + sta Zp13 ; CPU:$E965 PRG:6965 85 13 + lda $E99A,y ; CPU:$E967 PRG:6967 B9 9A E9 + adc Zp17 ; CPU:$E96A PRG:696A 65 17 + sta Zp14 ; CPU:$E96C PRG:696C 85 14 + lda $E99B,y ; CPU:$E96E PRG:696E B9 9B E9 + adc #$00 ; CPU:$E971 PRG:6971 69 00 + sta Zp15 ; CPU:$E973 PRG:6973 85 15 + ldx $E99D,y ; CPU:$E975 PRG:6975 BE 9D E9 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonnegative3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonnegative3: + txa ; CPU:$E978 PRG:6978 8A + pha ; CPU:$E979 PRG:6979 48 + clc ; CPU:$E97A PRG:697A 18 + adc $E99C,y ; CPU:$E97B PRG:697B 79 9C E9 + adc Zp16 ; CPU:$E97E PRG:697E 65 16 + jsr Sub_FB97 ; CPU:$E980 PRG:6980 20 97 FB + lda Zp14 ; CPU:$E983 PRG:6983 A5 14 + clc ; CPU:$E985 PRG:6985 18 + adc #$04 ; CPU:$E986 PRG:6986 69 04 + sta Zp14 ; CPU:$E988 PRG:6988 85 14 + lda Zp15 ; CPU:$E98A PRG:698A A5 15 + adc #$00 ; CPU:$E98C PRG:698C 69 00 + sta Zp15 ; CPU:$E98E PRG:698E 85 15 + pla ; CPU:$E990 PRG:6990 68 + tax ; CPU:$E991 PRG:6991 AA + dex ; CPU:$E992 PRG:6992 CA + bpl OlympicsScheduler_OnNonnegative3 ; CPU:$E993 PRG:6993 10 E3 + rts ; CPU:$E995 PRG:6995 60 +; ---- data $E996-$EB03 (366 bytes) ---- +; referenced by `lda $EA01,x` at $E23E (operand $EA01 falls inside this region) +; referenced by `lda $EA4F,x` at $E2FE (operand $EA4F falls inside this region) +; referenced by `lda $EA50,x` at $E308 (operand $EA50 falls inside this region) +; referenced by `lda $EA33,x` at $E34B (operand $EA33 falls inside this region) +; referenced by `lda $EA4F,x` at $E353 (operand $EA4F falls inside this region) +; referenced by `lda $EA50,x` at $E35D (operand $EA50 falls inside this region) +; ... and 34 further references from decoded code + .byte $5A, $18, $10, $68, $CE, $E9, $00, $00, $A0, $48, $00, $08, $D2, $E9, $01, $00 ; CPU:$E996 PRG:6996 5A 18 10 68 CE E9 00 00 A0 48 00 08 D2 E9 01 00 + .byte $B0, $48, $10, $08, $D2, $E9, $01, $00, $D0, $D0, $00, $00, $D6, $E9, $01, $02 ; CPU:$E9A6 PRG:69A6 B0 48 10 08 D2 E9 01 00 D0 D0 00 00 D6 E9 01 02 + .byte $8F, $78, $00, $00, $E2, $E9, $04, $01, $A0, $30, $00, $10, $F2, $E9, $06, $00 ; CPU:$E9B6 PRG:69B6 8F 78 00 00 E2 E9 04 01 A0 30 00 10 F2 E9 06 00 + .byte $A0, $A8, $00, $10, $F2, $E9, $09, $00, $00, $00, $0E, $02, $F8, $00, $0A, $00 ; CPU:$E9C6 PRG:69C6 A0 A8 00 10 F2 E9 09 00 00 00 0E 02 F8 00 0A 00 + .byte $00, $00, $1A, $03, $00, $08, $1C, $03, $00, $10, $1E, $03, $00, $00, $F4, $01 ; CPU:$E9D6 PRG:69D6 00 00 1A 03 00 08 1C 03 00 10 1E 03 00 00 F4 01 + .byte $00, $08, $F6, $01, $00, $00, $F8, $01, $00, $08, $FA, $01, $00, $00, $F0, $00 ; CPU:$E9E6 PRG:69E6 00 08 F6 01 00 00 F8 01 00 08 FA 01 00 00 F0 00 + .byte $00, $00, $F2, $00, $00, $01, $01, $02, $02, $00, $10, $11, $12, $13, $14, $15 ; CPU:$E9F6 PRG:69F6 00 00 F2 00 00 01 01 02 02 00 10 11 12 13 14 15 + .byte $16, $17, $18, $19, $84, $85, $86, $87, $88, $89, $8A, $8B, $8C, $8D, $8E, $8F ; CPU:$EA06 PRG:6A06 16 17 18 19 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F + .byte $90, $91, $92, $93, $94, $95, $96, $97, $00, $69, $68, $B4, $D0, $D1, $D4, $00 ; CPU:$EA16 PRG:6A16 90 91 92 93 94 95 96 97 00 69 68 B4 D0 D1 D4 00 + .byte $00, $00, $00, $00, $6A, $B6, $D2, $D3, $D6, $00, $00, $00, $03, $24, $26, $25 ; CPU:$EA26 PRG:6A26 00 00 00 00 6A B6 D2 D3 D6 00 00 00 03 24 26 25 + .byte $27, $28, $2A, $29, $2B, $2C, $2E, $2D, $2F, $30, $32, $31, $33, $34, $36, $35 ; CPU:$EA36 PRG:6A36 27 28 2A 29 2B 2C 2E 2D 2F 30 32 31 33 34 36 35 + .byte $37, $38, $3A, $39, $3B, $3C, $3E, $1A, $00, $E9, $20, $29, $21, $69, $21, $A9 ; CPU:$EA46 PRG:6A46 37 38 3A 39 3B 3C 3E 1A 00 E9 20 29 21 69 21 A9 + .byte $21, $E9, $21, $29, $22, $24, $21, $44, $21, $64, $21, $84, $21, $A4, $21, $C4 ; CPU:$EA56 PRG:6A56 21 E9 21 29 22 24 21 44 21 64 21 84 21 A4 21 C4 + .byte $21, $23, $CB, $23, $D3, $23, $D3, $23, $DB, $23, $DB, $23, $E3, $02, $00, $01 ; CPU:$EA66 PRG:6A66 21 23 CB 23 D3 23 D3 23 DB 23 DB 23 E3 02 00 01 + .byte $00, $01, $10, $02, $01, $03, $11, $01, $02, $8B, $EA, $98, $EA, $A5, $EA, $B2 ; CPU:$EA76 PRG:6A76 00 01 10 02 01 03 11 01 02 8B EA 98 EA A5 EA B2 + .byte $EA, $BF, $EA, $CC, $EA, $20, $ED, $06, $D5, $43, $45, $03, $40, $42, $41, $03 ; CPU:$EA86 PRG:6A86 EA BF EA CC EA 20 ED 06 D5 43 45 03 40 42 41 03 + .byte $03, $03, $20, $EC, $08, $44, $46, $45, $03, $47, $48, $4A, $49, $4B, $03, $20 ; CPU:$EA96 PRG:6A96 03 03 20 EC 08 44 46 45 03 47 48 4A 49 4B 03 20 + .byte $ED, $07, $4C, $4E, $50, $52, $4D, $4F, $51, $53, $03, $03, $20, $EC, $08, $54 ; CPU:$EAA6 PRG:6AA6 ED 07 4C 4E 50 52 4D 4F 51 53 03 03 20 EC 08 54 + .byte $56, $58, $5A, $5C, $4D, $4F, $51, $53, $03, $20, $EC, $08, $D8, $D7, $D9, $DA ; CPU:$EAB6 PRG:6AB6 56 58 5A 5C 4D 4F 51 53 03 20 EC 08 D8 D7 D9 DA + .byte $DC, $DB, $DD, $DE, $DF, $FF, $21, $C9, $04, $37, $31, $37, $24, $2F, $03, $03 ; CPU:$EAC6 PRG:6AC6 DC DB DD DE DF FF 21 C9 04 37 31 37 24 2F 03 03 + .byte $03, $03, $03, $FF, $A0, $80, $B0, $68, $B0, $98, $8F, $22, $CC, $22, $D2, $22 ; CPU:$EAD6 PRG:6AD6 03 03 03 FF A0 80 B0 68 B0 98 8F 22 CC 22 D2 22 + .byte $FE, $FE, $0C, $00, $FE, $FE, $0C, $01, $FE, $FE, $0C, $02, $FE, $FE, $5F, $03 ; CPU:$EAE6 PRG:6AE6 FE FE 0C 00 FE FE 0C 01 FE FE 0C 02 FE FE 5F 03 + .byte $FE, $FE, $61, $03, $FE, $FE, $0C, $03, $30, $16, $21, $28, $1A, $25 ; CPU:$EAF6 PRG:6AF6 FE FE 61 03 FE FE 0C 03 30 16 21 28 1A 25 +; ----------------------------------------------------------------------------- +; Routine: Sub_EB04 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EB04: + beq OlympicsScheduler_Loop74 ; CPU:$EB04 PRG:6B04 F0 47 + tay ; CPU:$EB06 PRG:6B06 A8 + dey ; CPU:$EB07 PRG:6B07 88 + sty Zp17 ; CPU:$EB08 PRG:6B08 84 17 + lda GameMode ; CPU:$EB0A PRG:6B0A A5 8C + tax ; CPU:$EB0C PRG:6B0C AA + jsr Sub_EE6E ; CPU:$EB0D PRG:6B0D 20 6E EE + lda $055A,y ; CPU:$EB10 PRG:6B10 B9 5A 05 + ora $0572,y ; CPU:$EB13 PRG:6B13 19 72 05 + beq OlympicsScheduler_Loop73 ; CPU:$EB16 PRG:6B16 F0 23 + txa ; CPU:$EB18 PRG:6B18 8A + cmp #$02 ; CPU:$EB19 PRG:6B19 C9 02 + bcs OlympicsScheduler_Loop72 ; CPU:$EB1B PRG:6B1B B0 10 + lda $055A,y ; CPU:$EB1D PRG:6B1D B9 5A 05 + cmp $0472 ; CPU:$EB20 PRG:6B20 CD 72 04 + lda $0572,y ; CPU:$EB23 PRG:6B23 B9 72 05 + sbc $0471 ; CPU:$EB26 PRG:6B26 ED 71 04 + bcc OlympicsScheduler_Loop74 ; CPU:$EB29 PRG:6B29 90 22 + bcs OlympicsScheduler_Loop73 ; CPU:$EB2B PRG:6B2B B0 0E +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop72 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop72: + lda $0472 ; CPU:$EB2D PRG:6B2D AD 72 04 + cmp $055A,y ; CPU:$EB30 PRG:6B30 D9 5A 05 + lda $0471 ; CPU:$EB33 PRG:6B33 AD 71 04 + sbc $0572,y ; CPU:$EB36 PRG:6B36 F9 72 05 + bcc OlympicsScheduler_Loop74 ; CPU:$EB39 PRG:6B39 90 12 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop73 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop73: + lda $0471 ; CPU:$EB3B PRG:6B3B AD 71 04 + sta $0572,y ; CPU:$EB3E PRG:6B3E 99 72 05 + lda $0472 ; CPU:$EB41 PRG:6B41 AD 72 04 + sta $055A,y ; CPU:$EB44 PRG:6B44 99 5A 05 + jsr Sub_EE7A ; CPU:$EB47 PRG:6B47 20 7A EE + jsr Sub_EC0E ; CPU:$EB4A PRG:6B4A 20 0E EC +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop74 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop74: + rts ; CPU:$EB4D PRG:6B4D 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EB4E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EB4E: + ldy $0308 ; CPU:$EB4E PRG:6B4E AC 08 03 + cpy #$05 ; CPU:$EB51 PRG:6B51 C0 05 + bne OlympicsScheduler_Loop76 ; CPU:$EB53 PRG:6B53 D0 1F + lda GameMode ; CPU:$EB55 PRG:6B55 A5 8C + jsr Sub_EE6E ; CPU:$EB57 PRG:6B57 20 6E EE + ldx #$06 ; CPU:$EB5A PRG:6B5A A2 06 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero11: + lda $0530,y ; CPU:$EB5C PRG:6B5C B9 30 05 + sta Zp10 ; CPU:$EB5F PRG:6B5F 85 10 + clc ; CPU:$EB61 PRG:6B61 18 + lda $0547,x ; CPU:$EB62 PRG:6B62 BD 47 05 + jsr Sub_EBA5 ; CPU:$EB65 PRG:6B65 20 A5 EB + sta $0547,x ; CPU:$EB68 PRG:6B68 9D 47 05 + bcc OlympicsScheduler_Loop75 ; CPU:$EB6B PRG:6B6B 90 03 + inc $054D,x ; CPU:$EB6D PRG:6B6D FE 4D 05 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop75 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop75: + dey ; CPU:$EB70 PRG:6B70 88 + dex ; CPU:$EB71 PRG:6B71 CA + bne OlympicsScheduler_OnNonzero11 ; CPU:$EB72 PRG:6B72 D0 E8 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop76 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop76: + lda #$00 ; CPU:$EB74 PRG:6B74 A9 00 + sta Zp10 ; CPU:$EB76 PRG:6B76 85 10 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarryClear5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarryClear5: + ldy #$00 ; CPU:$EB78 PRG:6B78 A0 00 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarryClear6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarryClear6: + lda $0554,y ; CPU:$EB7A PRG:6B7A B9 54 05 + cmp Zp10 ; CPU:$EB7D PRG:6B7D C5 10 + beq OlympicsScheduler_Loop77 ; CPU:$EB7F PRG:6B7F F0 1A + iny ; CPU:$EB81 PRG:6B81 C8 + cpy $0394 ; CPU:$EB82 PRG:6B82 CC 94 03 + bcc OlympicsScheduler_OnCarryClear6 ; CPU:$EB85 PRG:6B85 90 F3 + ldy #$FF ; CPU:$EB87 PRG:6B87 A0 FF +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero12: + iny ; CPU:$EB89 PRG:6B89 C8 + cpy $0394 ; CPU:$EB8A PRG:6B8A CC 94 03 + bcs OlympicsScheduler_Loop77 ; CPU:$EB8D PRG:6B8D B0 0C + lda $0554,y ; CPU:$EB8F PRG:6B8F B9 54 05 + cmp #$FF ; CPU:$EB92 PRG:6B92 C9 FF + bne OlympicsScheduler_OnNonzero12 ; CPU:$EB94 PRG:6B94 D0 F3 + lda Zp10 ; CPU:$EB96 PRG:6B96 A5 10 + sta $0554,y ; CPU:$EB98 PRG:6B98 99 54 05 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop77 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop77: + inc Zp10 ; CPU:$EB9B PRG:6B9B E6 10 + lda Zp10 ; CPU:$EB9D PRG:6B9D A5 10 + cmp $0394 ; CPU:$EB9F PRG:6B9F CD 94 03 + bcc OlympicsScheduler_OnCarryClear5 ; CPU:$EBA2 PRG:6BA2 90 D4 + rts ; CPU:$EBA4 PRG:6BA4 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EBA5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EBA5: + php ; CPU:$EBA5 PRG:6BA5 08 + sta Zp11 ; CPU:$EBA6 PRG:6BA6 85 11 + and #$0F ; CPU:$EBA8 PRG:6BA8 29 0F + sta Zp12 ; CPU:$EBAA PRG:6BAA 85 12 + lda Zp10 ; CPU:$EBAC PRG:6BAC A5 10 + and #$0F ; CPU:$EBAE PRG:6BAE 29 0F + adc Zp12 ; CPU:$EBB0 PRG:6BB0 65 12 + cmp #$0A ; CPU:$EBB2 PRG:6BB2 C9 0A + lda #$00 ; CPU:$EBB4 PRG:6BB4 A9 00 + bcc OlympicsScheduler_Loop78 ; CPU:$EBB6 PRG:6BB6 90 02 + lda #$06 ; CPU:$EBB8 PRG:6BB8 A9 06 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop78 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop78: + plp ; CPU:$EBBA PRG:6BBA 28 + adc Zp10 ; CPU:$EBBB PRG:6BBB 65 10 + adc Zp11 ; CPU:$EBBD PRG:6BBD 65 11 + bcs OlympicsScheduler_Loop79 ; CPU:$EBBF PRG:6BBF B0 04 + cmp #$A0 ; CPU:$EBC1 PRG:6BC1 C9 A0 + bcc OlympicsScheduler_Loop80 ; CPU:$EBC3 PRG:6BC3 90 03 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop79 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop79: + adc #$5F ; CPU:$EBC5 PRG:6BC5 69 5F + sec ; CPU:$EBC7 PRG:6BC7 38 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop80 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop80: + rts ; CPU:$EBC8 PRG:6BC8 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EBC9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EBC9: + lda #$FF ; CPU:$EBC9 PRG:6BC9 A9 FF + sta $0554 ; CPU:$EBCB PRG:6BCB 8D 54 05 + sta $0555 ; CPU:$EBCE PRG:6BCE 8D 55 05 + sta $0556 ; CPU:$EBD1 PRG:6BD1 8D 56 05 + sta $0557 ; CPU:$EBD4 PRG:6BD4 8D 57 05 + sta $0558 ; CPU:$EBD7 PRG:6BD7 8D 58 05 + sta $0559 ; CPU:$EBDA PRG:6BDA 8D 59 05 + lda #$FF ; CPU:$EBDD PRG:6BDD A9 FF + sta Zp09 ; CPU:$EBDF PRG:6BDF 85 09 + lda #$48 ; CPU:$EBE1 PRG:6BE1 A9 48 + sta Zp0A ; CPU:$EBE3 PRG:6BE3 85 0A + lda #$05 ; CPU:$EBE5 PRG:6BE5 A9 05 + sta Zp0B ; CPU:$EBE7 PRG:6BE7 85 0B + lda #$4E ; CPU:$EBE9 PRG:6BE9 A9 4E + sta SlotState ; CPU:$EBEB PRG:6BEB 85 0C + lda #$05 ; CPU:$EBED PRG:6BED A9 05 + sta Zp0D ; CPU:$EBEF PRG:6BEF 85 0D + lda #$00 ; CPU:$EBF1 PRG:6BF1 A9 00 + sta Zp17 ; CPU:$EBF3 PRG:6BF3 85 17 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarryClear7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarryClear7: + ldx Zp17 ; CPU:$EBF5 PRG:6BF5 A6 17 + lda $0548,x ; CPU:$EBF7 PRG:6BF7 BD 48 05 + sta Zp14 ; CPU:$EBFA PRG:6BFA 85 14 + lda $054E,x ; CPU:$EBFC PRG:6BFC BD 4E 05 + sta Zp15 ; CPU:$EBFF PRG:6BFF 85 15 + jsr Sub_EC22 ; CPU:$EC01 PRG:6C01 20 22 EC + inc Zp17 ; CPU:$EC04 PRG:6C04 E6 17 + lda Zp17 ; CPU:$EC06 PRG:6C06 A5 17 + cmp $0394 ; CPU:$EC08 PRG:6C08 CD 94 03 + bcc OlympicsScheduler_OnCarryClear7 ; CPU:$EC0B PRG:6C0B 90 E8 + rts ; CPU:$EC0D PRG:6C0D 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EC0E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EC0E: + lda GameMode ; CPU:$EC0E PRG:6C0E A5 8C + sta Zp09 ; CPU:$EC10 PRG:6C10 85 09 + lda #$5A ; CPU:$EC12 PRG:6C12 A9 5A + sta Zp0A ; CPU:$EC14 PRG:6C14 85 0A + lda #$05 ; CPU:$EC16 PRG:6C16 A9 05 + sta Zp0B ; CPU:$EC18 PRG:6C18 85 0B + lda #$72 ; CPU:$EC1A PRG:6C1A A9 72 + sta SlotState ; CPU:$EC1C PRG:6C1C 85 0C + lda #$05 ; CPU:$EC1E PRG:6C1E A9 05 + sta Zp0D ; CPU:$EC20 PRG:6C20 85 0D +; ----------------------------------------------------------------------------- +; Routine: Sub_EC22 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EC22: + ldx #$FF ; CPU:$EC22 PRG:6C22 A2 FF +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarrySet2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarrySet2: + inx ; CPU:$EC24 PRG:6C24 E8 + cpx #$06 ; CPU:$EC25 PRG:6C25 E0 06 + bcs OlympicsScheduler_Loop86 ; CPU:$EC27 PRG:6C27 B0 62 + lda $0554,x ; CPU:$EC29 PRG:6C29 BD 54 05 + cmp Zp17 ; CPU:$EC2C PRG:6C2C C5 17 + beq OlympicsScheduler_Loop86 ; CPU:$EC2E PRG:6C2E F0 5B + cmp #$FF ; CPU:$EC30 PRG:6C30 C9 FF + beq OlympicsScheduler_Loop85 ; CPU:$EC32 PRG:6C32 F0 52 + sta Zp11 ; CPU:$EC34 PRG:6C34 85 11 + tay ; CPU:$EC36 PRG:6C36 A8 + lda Zp14 ; CPU:$EC37 PRG:6C37 A5 14 + ora Zp15 ; CPU:$EC39 PRG:6C39 05 15 + beq OlympicsScheduler_OnCarrySet2 ; CPU:$EC3B PRG:6C3B F0 E7 + lda Zp09 ; CPU:$EC3D PRG:6C3D A5 09 + bmi OlympicsScheduler_Loop81 ; CPU:$EC3F PRG:6C3F 30 03 + jsr Sub_EE6E ; CPU:$EC41 PRG:6C41 20 6E EE +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop81 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop81: + lda (Zp0A),y ; CPU:$EC44 PRG:6C44 B1 0A + ora (SlotState),y ; CPU:$EC46 PRG:6C46 11 0C + beq OlympicsScheduler_Loop83 ; CPU:$EC48 PRG:6C48 F0 1E + lda Zp09 ; CPU:$EC4A PRG:6C4A A5 09 + bmi OlympicsScheduler_Loop82 ; CPU:$EC4C PRG:6C4C 30 10 + cmp #$02 ; CPU:$EC4E PRG:6C4E C9 02 + bcs OlympicsScheduler_Loop82 ; CPU:$EC50 PRG:6C50 B0 0C + lda Zp14 ; CPU:$EC52 PRG:6C52 A5 14 + cmp (Zp0A),y ; CPU:$EC54 PRG:6C54 D1 0A + lda Zp15 ; CPU:$EC56 PRG:6C56 A5 15 + sbc (SlotState),y ; CPU:$EC58 PRG:6C58 F1 0C + bcs OlympicsScheduler_OnCarrySet2 ; CPU:$EC5A PRG:6C5A B0 C8 + bcc OlympicsScheduler_Loop83 ; CPU:$EC5C PRG:6C5C 90 0A +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop82 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop82: + lda (Zp0A),y ; CPU:$EC5E PRG:6C5E B1 0A + cmp Zp14 ; CPU:$EC60 PRG:6C60 C5 14 + lda (SlotState),y ; CPU:$EC62 PRG:6C62 B1 0C + sbc Zp15 ; CPU:$EC64 PRG:6C64 E5 15 + bcs OlympicsScheduler_OnCarrySet2 ; CPU:$EC66 PRG:6C66 B0 BC +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop83 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop83: + stx Zp10 ; CPU:$EC68 PRG:6C68 86 10 + lda $0554,x ; CPU:$EC6A PRG:6C6A BD 54 05 + sta Zp11 ; CPU:$EC6D PRG:6C6D 85 11 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero13: + cpx #$05 ; CPU:$EC6F PRG:6C6F E0 05 + beq OlympicsScheduler_Loop84 ; CPU:$EC71 PRG:6C71 F0 11 + lda Zp11 ; CPU:$EC73 PRG:6C73 A5 11 + cmp Zp17 ; CPU:$EC75 PRG:6C75 C5 17 + beq OlympicsScheduler_Loop84 ; CPU:$EC77 PRG:6C77 F0 0B + ldy $0555,x ; CPU:$EC79 PRG:6C79 BC 55 05 + sty Zp11 ; CPU:$EC7C PRG:6C7C 84 11 + sta $0555,x ; CPU:$EC7E PRG:6C7E 9D 55 05 + inx ; CPU:$EC81 PRG:6C81 E8 + bne OlympicsScheduler_OnNonzero13 ; CPU:$EC82 PRG:6C82 D0 EB +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop84 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop84: + ldx Zp10 ; CPU:$EC84 PRG:6C84 A6 10 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop85 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop85: + lda Zp17 ; CPU:$EC86 PRG:6C86 A5 17 + sta $0554,x ; CPU:$EC88 PRG:6C88 9D 54 05 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop86 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop86: + rts ; CPU:$EC8B PRG:6C8B 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EC8C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EC8C: + lda $0554,x ; CPU:$EC8C PRG:6C8C BD 54 05 + cmp #$FF ; CPU:$EC8F PRG:6C8F C9 FF + bne OlympicsScheduler_Loop87 ; CPU:$EC91 PRG:6C91 D0 03 + jmp Sub_ED53 ; CPU:$EC93 PRG:6C93 4C 53 ED +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop87 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop87: + jsr Sub_E772 ; CPU:$EC96 PRG:6C96 20 72 E7 + lda #$02 ; CPU:$EC99 PRG:6C99 A9 02 + jsr DelayFrames ; CPU:$EC9B PRG:6C9B 20 F5 F7 + lda Zp0F ; CPU:$EC9E PRG:6C9E A5 0F + cmp #$03 ; CPU:$ECA0 PRG:6CA0 C9 03 + bcc OlympicsScheduler_Loop88 ; CPU:$ECA2 PRG:6CA2 90 11 + tax ; CPU:$ECA4 PRG:6CA4 AA + ldy $0554,x ; CPU:$ECA5 PRG:6CA5 BC 54 05 + lda $EAFE,y ; CPU:$ECA8 PRG:6CA8 B9 FE EA + sta $03B6,x ; CPU:$ECAB PRG:6CAB 9D B6 03 + lda #$01 ; CPU:$ECAE PRG:6CAE A9 01 + sta Zp29 ; CPU:$ECB0 PRG:6CB0 85 29 + jmp Sub_ED35 ; CPU:$ECB2 PRG:6CB2 4C 35 ED +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop88 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop88: + asl a ; CPU:$ECB5 PRG:6CB5 0A + tay ; CPU:$ECB6 PRG:6CB6 A8 + lda $EAE1,y ; CPU:$ECB7 PRG:6CB7 B9 E1 EA + sta $0367 ; CPU:$ECBA PRG:6CBA 8D 67 03 + lda $EAE0,y ; CPU:$ECBD PRG:6CBD B9 E0 EA + sta $0368 ; CPU:$ECC0 PRG:6CC0 8D 68 03 + lda #$01 ; CPU:$ECC3 PRG:6CC3 A9 01 + sta $0369 ; CPU:$ECC5 PRG:6CC5 8D 69 03 + lda #$1E ; CPU:$ECC8 PRG:6CC8 A9 1E + sta Zp16 ; CPU:$ECCA PRG:6CCA 85 16 + lda #$28 ; CPU:$ECCC PRG:6CCC A9 28 + sta Zp17 ; CPU:$ECCE PRG:6CCE 85 17 + ldx Zp0F ; CPU:$ECD0 PRG:6CD0 A6 0F + lda $0554,x ; CPU:$ECD2 PRG:6CD2 BD 54 05 + sta Zp10 ; CPU:$ECD5 PRG:6CD5 85 10 + pha ; CPU:$ECD7 PRG:6CD7 48 + txa ; CPU:$ECD8 PRG:6CD8 8A + asl a ; CPU:$ECD9 PRG:6CD9 0A + asl a ; CPU:$ECDA PRG:6CDA 0A + asl a ; CPU:$ECDB PRG:6CDB 0A + tax ; CPU:$ECDC PRG:6CDC AA + lda Zp87 ; CPU:$ECDD PRG:6CDD A5 87 + asl a ; CPU:$ECDF PRG:6CDF 0A + bmi OlympicsScheduler_Loop91 ; CPU:$ECE0 PRG:6CE0 30 4F + lsr a ; CPU:$ECE2 PRG:6CE2 4A + and #$38 ; CPU:$ECE3 PRG:6CE3 29 38 + lsr a ; CPU:$ECE5 PRG:6CE5 4A + lsr a ; CPU:$ECE6 PRG:6CE6 4A + lsr a ; CPU:$ECE7 PRG:6CE7 4A + sta Zp08 ; CPU:$ECE8 PRG:6CE8 85 08 + cmp #$05 ; CPU:$ECEA PRG:6CEA C9 05 + bcc OlympicsScheduler_Loop89 ; CPU:$ECEC PRG:6CEC 90 02 + lda #$04 ; CPU:$ECEE PRG:6CEE A9 04 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop89 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop89: + ldy Zp10 ; CPU:$ECF0 PRG:6CF0 A4 10 + jsr Sub_EE6E ; CPU:$ECF2 PRG:6CF2 20 6E EE + lda $0530,y ; CPU:$ECF5 PRG:6CF5 B9 30 05 + sta Zp08 ; CPU:$ECF8 PRG:6CF8 85 08 + cpy #$18 ; CPU:$ECFA PRG:6CFA C0 18 + bcc OlympicsScheduler_Loop90 ; CPU:$ECFC PRG:6CFC 90 03 + lda $0536,y ; CPU:$ECFE PRG:6CFE B9 36 05 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop90 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop90: + ora Zp08 ; CPU:$ED01 PRG:6D01 05 08 + beq OlympicsScheduler_Loop91 ; CPU:$ED03 PRG:6D03 F0 2C + lda #$80 ; CPU:$ED05 PRG:6D05 A9 80 + sta $0403,x ; CPU:$ED07 PRG:6D07 9D 03 04 + lda #$00 ; CPU:$ED0A PRG:6D0A A9 00 + sta $040A,x ; CPU:$ED0C PRG:6D0C 9D 0A 04 + lda $0394 ; CPU:$ED0F PRG:6D0F AD 94 03 + cmp #$03 ; CPU:$ED12 PRG:6D12 C9 03 + bcc OlympicsScheduler_Loop91 ; CPU:$ED14 PRG:6D14 90 1B + inc Zp10 ; CPU:$ED16 PRG:6D16 E6 10 + lda Zp10 ; CPU:$ED18 PRG:6D18 A5 10 + asl a ; CPU:$ED1A PRG:6D1A 0A + asl a ; CPU:$ED1B PRG:6D1B 0A + asl a ; CPU:$ED1C PRG:6D1C 0A + asl a ; CPU:$ED1D PRG:6D1D 0A + ora Zp10 ; CPU:$ED1E PRG:6D1E 05 10 + ldx #$03 ; CPU:$ED20 PRG:6D20 A2 03 + jsr Sub_E880 ; CPU:$ED22 PRG:6D22 20 80 E8 + lda #$FF ; CPU:$ED25 PRG:6D25 A9 FF + sta $036C ; CPU:$ED27 PRG:6D27 8D 6C 03 + ldy #$03 ; CPU:$ED2A PRG:6D2A A0 03 + lda #$67 ; CPU:$ED2C PRG:6D2C A9 67 + jsr PaletteLoad ; CPU:$ED2E PRG:6D2E 20 9D FA +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop91 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop91: + pla ; CPU:$ED31 PRG:6D31 68 + jsr Sub_EE1B ; CPU:$ED32 PRG:6D32 20 1B EE +; ----------------------------------------------------------------------------- +; Routine: Sub_ED35 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_ED35: + lda Zp0F ; CPU:$ED35 PRG:6D35 A5 0F + tax ; CPU:$ED37 PRG:6D37 AA + asl a ; CPU:$ED38 PRG:6D38 0A + asl a ; CPU:$ED39 PRG:6D39 0A + asl a ; CPU:$ED3A PRG:6D3A 0A + adc #$40 ; CPU:$ED3B PRG:6D3B 69 40 + sta Zp12 ; CPU:$ED3D PRG:6D3D 85 12 + lda #$30 ; CPU:$ED3F PRG:6D3F A9 30 + sta Zp13 ; CPU:$ED41 PRG:6D41 85 13 + jsr Sub_EE3D ; CPU:$ED43 PRG:6D43 20 3D EE + jsr Sub_ED5A ; CPU:$ED46 PRG:6D46 20 5A ED + inc Zp87 ; CPU:$ED49 PRG:6D49 E6 87 + lda Zp87 ; CPU:$ED4B PRG:6D4B A5 87 + and #$07 ; CPU:$ED4D PRG:6D4D 29 07 + cmp #$06 ; CPU:$ED4F PRG:6D4F C9 06 + bcc OlympicsScheduler_Loop92 ; CPU:$ED51 PRG:6D51 90 06 +; ----------------------------------------------------------------------------- +; Routine: Sub_ED53 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_ED53: + lda Zp87 ; CPU:$ED53 PRG:6D53 A5 87 + ora #$80 ; CPU:$ED55 PRG:6D55 09 80 + sta Zp87 ; CPU:$ED57 PRG:6D57 85 87 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop92 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop92: + rts ; CPU:$ED59 PRG:6D59 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_ED5A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_ED5A: + lda $0394 ; CPU:$ED5A PRG:6D5A AD 94 03 + cmp #$03 ; CPU:$ED5D PRG:6D5D C9 03 + bcs OlympicsScheduler_Loop93 ; CPU:$ED5F PRG:6D5F B0 01 + rts ; CPU:$ED61 PRG:6D61 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop93 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop93: + ldy #$00 ; CPU:$ED62 PRG:6D62 A0 00 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarryClear8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarryClear8: + tya ; CPU:$ED64 PRG:6D64 98 + pha ; CPU:$ED65 PRG:6D65 48 + sta Zp10 ; CPU:$ED66 PRG:6D66 85 10 + asl a ; CPU:$ED68 PRG:6D68 0A + asl a ; CPU:$ED69 PRG:6D69 0A + sta $0183 ; CPU:$ED6A PRG:6D6A 8D 83 01 + tax ; CPU:$ED6D PRG:6D6D AA + adc Zp10 ; CPU:$ED6E PRG:6D6E 65 10 + adc #$01 ; CPU:$ED70 PRG:6D70 69 01 + sta $0478 ; CPU:$ED72 PRG:6D72 8D 78 04 + lda $0403,x ; CPU:$ED75 PRG:6D75 BD 03 04 + bpl OlympicsScheduler_Loop94 ; CPU:$ED78 PRG:6D78 10 1C + lda $EADA,y ; CPU:$ED7A PRG:6D7A B9 DA EA + sta $0404,x ; CPU:$ED7D PRG:6D7D 9D 04 04 + lda $EADB,y ; CPU:$ED80 PRG:6D80 B9 DB EA + sta $0405,x ; CPU:$ED83 PRG:6D83 9D 05 04 + lda $040A,x ; CPU:$ED86 PRG:6D86 BD 0A 04 + eor #$80 ; CPU:$ED89 PRG:6D89 49 80 + sta $040A,x ; CPU:$ED8B PRG:6D8B 9D 0A 04 + asl a ; CPU:$ED8E PRG:6D8E 0A + adc #$71 ; CPU:$ED8F PRG:6D8F 69 71 + adc Zp10 ; CPU:$ED91 PRG:6D91 65 10 + jsr ObjectUpdate ; CPU:$ED93 PRG:6D93 20 92 A7 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop94 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop94: + pla ; CPU:$ED96 PRG:6D96 68 + tay ; CPU:$ED97 PRG:6D97 A8 + iny ; CPU:$ED98 PRG:6D98 C8 + iny ; CPU:$ED99 PRG:6D99 C8 + cpy #$06 ; CPU:$ED9A PRG:6D9A C0 06 + bcc OlympicsScheduler_OnCarryClear8 ; CPU:$ED9C PRG:6D9C 90 C6 + rts ; CPU:$ED9E PRG:6D9E 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_ED9F +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_ED9F: + jsr Sub_EF4C ; CPU:$ED9F PRG:6D9F 20 4C EF + lda Zp89 ; CPU:$EDA2 PRG:6DA2 A5 89 + and #$7F ; CPU:$EDA4 PRG:6DA4 29 7F + jsr Sub_E745 ; CPU:$EDA6 PRG:6DA6 20 45 E7 + lda #$02 ; CPU:$EDA9 PRG:6DA9 A9 02 + jsr DelayFrames ; CPU:$EDAB PRG:6DAB 20 F5 F7 + lda #$00 ; CPU:$EDAE PRG:6DAE A9 00 + sta Zp0F ; CPU:$EDB0 PRG:6DB0 85 0F + lda Zp89 ; CPU:$EDB2 PRG:6DB2 A5 89 + and #$7F ; CPU:$EDB4 PRG:6DB4 29 7F + jsr Sub_EE1B ; CPU:$EDB6 PRG:6DB6 20 1B EE + lda #$31 ; CPU:$EDB9 PRG:6DB9 A9 31 + sta Zp12 ; CPU:$EDBB PRG:6DBB 85 12 + lda #$61 ; CPU:$EDBD PRG:6DBD A9 61 + sta Zp13 ; CPU:$EDBF PRG:6DBF 85 13 + jsr Sub_EE3D ; CPU:$EDC1 PRG:6DC1 20 3D EE + lda #$00 ; CPU:$EDC4 PRG:6DC4 A9 00 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnCarryClear9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnCarryClear9: + pha ; CPU:$EDC6 PRG:6DC6 48 + tax ; CPU:$EDC7 PRG:6DC7 AA + ldy $E600,x ; CPU:$EDC8 PRG:6DC8 BC 00 E6 + sty Zp08 ; CPU:$EDCB PRG:6DCB 84 08 + asl a ; CPU:$EDCD PRG:6DCD 0A + tax ; CPU:$EDCE PRG:6DCE AA + lda $EA5C,x ; CPU:$EDCF PRG:6DCF BD 5C EA + sta $0367 ; CPU:$EDD2 PRG:6DD2 8D 67 03 + lda $EA5B,x ; CPU:$EDD5 PRG:6DD5 BD 5B EA + clc ; CPU:$EDD8 PRG:6DD8 18 + adc #$05 ; CPU:$EDD9 PRG:6DD9 69 05 + sta $0368 ; CPU:$EDDB PRG:6DDB 8D 68 03 + tya ; CPU:$EDDE PRG:6DDE 98 + asl a ; CPU:$EDDF PRG:6DDF 0A + tay ; CPU:$EDE0 PRG:6DE0 A8 + lda $EA7F,y ; CPU:$EDE1 PRG:6DE1 B9 7F EA + sta Zp12 ; CPU:$EDE4 PRG:6DE4 85 12 + lda $EA80,y ; CPU:$EDE6 PRG:6DE6 B9 80 EA + sta Zp13 ; CPU:$EDE9 PRG:6DE9 85 13 + ldy #$02 ; CPU:$EDEB PRG:6DEB A0 02 + lda #$12 ; CPU:$EDED PRG:6DED A9 12 + sta $0367,y ; CPU:$EDEF PRG:6DEF 99 67 03 + iny ; CPU:$EDF2 PRG:6DF2 C8 + lda #$0A ; CPU:$EDF3 PRG:6DF3 A9 0A + sta Zp14 ; CPU:$EDF5 PRG:6DF5 85 14 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero14: + lda (Zp12),y ; CPU:$EDF7 PRG:6DF7 B1 12 + sta $0367,y ; CPU:$EDF9 PRG:6DF9 99 67 03 + iny ; CPU:$EDFC PRG:6DFC C8 + dec Zp14 ; CPU:$EDFD PRG:6DFD C6 14 + bne OlympicsScheduler_OnNonzero14 ; CPU:$EDFF PRG:6DFF D0 F6 + lda Zp89 ; CPU:$EE01 PRG:6E01 A5 89 + and #$7F ; CPU:$EE03 PRG:6E03 29 7F + sta Zp10 ; CPU:$EE05 PRG:6E05 85 10 + ldx #$0D ; CPU:$EE07 PRG:6E07 A2 0D + jsr Sub_E7AE ; CPU:$EE09 PRG:6E09 20 AE E7 + lda #$02 ; CPU:$EE0C PRG:6E0C A9 02 + jsr DelayFrames ; CPU:$EE0E PRG:6E0E 20 F5 F7 + pla ; CPU:$EE11 PRG:6E11 68 + cmp #$03 ; CPU:$EE12 PRG:6E12 C9 03 + adc #$01 ; CPU:$EE14 PRG:6E14 69 01 + cmp #$06 ; CPU:$EE16 PRG:6E16 C9 06 + bcc OlympicsScheduler_OnCarryClear9 ; CPU:$EE18 PRG:6E18 90 AC + rts ; CPU:$EE1A PRG:6E1A 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EE1B +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EE1B: + clc ; CPU:$EE1B PRG:6E1B 18 + adc #$01 ; CPU:$EE1C PRG:6E1C 69 01 + asl a ; CPU:$EE1E PRG:6E1E 0A + asl a ; CPU:$EE1F PRG:6E1F 0A + tay ; CPU:$EE20 PRG:6E20 A8 + lda Zp0F ; CPU:$EE21 PRG:6E21 A5 0F + asl a ; CPU:$EE23 PRG:6E23 0A + asl a ; CPU:$EE24 PRG:6E24 0A + tax ; CPU:$EE25 PRG:6E25 AA + lda $9AF0,y ; CPU:$EE26 PRG:6E26 B9 F0 9A + sta $03AD,x ; CPU:$EE29 PRG:6E29 9D AD 03 + lda $9AF1,y ; CPU:$EE2C PRG:6E2C B9 F1 9A + sta $03AE,x ; CPU:$EE2F PRG:6E2F 9D AE 03 + lda $9AF2,y ; CPU:$EE32 PRG:6E32 B9 F2 9A + sta $03AF,x ; CPU:$EE35 PRG:6E35 9D AF 03 + lda #$01 ; CPU:$EE38 PRG:6E38 A9 01 + sta Zp29 ; CPU:$EE3A PRG:6E3A 85 29 + rts ; CPU:$EE3C PRG:6E3C 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EE3D +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EE3D: + lda Zp0F ; CPU:$EE3D PRG:6E3D A5 0F + asl a ; CPU:$EE3F PRG:6E3F 0A + asl a ; CPU:$EE40 PRG:6E40 0A + adc #$E6 ; CPU:$EE41 PRG:6E41 69 E6 + sta Zp14 ; CPU:$EE43 PRG:6E43 85 14 + lda #$00 ; CPU:$EE45 PRG:6E45 A9 00 + adc #$EA ; CPU:$EE47 PRG:6E47 69 EA + sta Zp15 ; CPU:$EE49 PRG:6E49 85 15 + txa ; CPU:$EE4B PRG:6E4B 8A + adc #$1F ; CPU:$EE4C PRG:6E4C 69 1F + jsr Sub_FB97 ; CPU:$EE4E PRG:6E4E 20 97 FB + rts ; CPU:$EE51 PRG:6E51 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EE52 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EE52: + jsr Sub_EBC9 ; CPU:$EE52 PRG:6E52 20 C9 EB + lda Zp89 ; CPU:$EE55 PRG:6E55 A5 89 + and #$7F ; CPU:$EE57 PRG:6E57 29 7F + sta Zp89 ; CPU:$EE59 PRG:6E59 85 89 + lda #$20 ; CPU:$EE5B PRG:6E5B A9 20 + sta Zp87 ; CPU:$EE5D PRG:6E5D 85 87 + jsr ClearObjectSlot ; CPU:$EE5F PRG:6E5F 20 BF BE + lda #$12 ; CPU:$EE62 PRG:6E62 A9 12 + sta Zp8A ; CPU:$EE64 PRG:6E64 85 8A + ldy #$03 ; CPU:$EE66 PRG:6E66 A0 03 + jsr AudioChannelLoop ; CPU:$EE68 PRG:6E68 20 63 BE + jmp Sub_E4EB ; CPU:$EE6B PRG:6E6B 4C EB E4 +; ----------------------------------------------------------------------------- +; Routine: Sub_EE6E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EE6E: + sty Zp10 ; CPU:$EE6E PRG:6E6E 84 10 + asl a ; CPU:$EE70 PRG:6E70 0A + sta Zp11 ; CPU:$EE71 PRG:6E71 85 11 + asl a ; CPU:$EE73 PRG:6E73 0A + adc Zp11 ; CPU:$EE74 PRG:6E74 65 11 + adc Zp10 ; CPU:$EE76 PRG:6E76 65 10 + tay ; CPU:$EE78 PRG:6E78 A8 + rts ; CPU:$EE79 PRG:6E79 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EE7A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EE7A: + ldy Zp17 ; CPU:$EE7A PRG:6E7A A4 17 + lda GameMode ; CPU:$EE7C PRG:6E7C A5 8C + jsr Sub_EE6E ; CPU:$EE7E PRG:6E7E 20 6E EE + lda $055A,y ; CPU:$EE81 PRG:6E81 B9 5A 05 + sta Zp14 ; CPU:$EE84 PRG:6E84 85 14 + lda $0572,y ; CPU:$EE86 PRG:6E86 B9 72 05 + sta Zp15 ; CPU:$EE89 PRG:6E89 85 15 + ora Zp14 ; CPU:$EE8B PRG:6E8B 05 14 + bne OlympicsScheduler_Loop95 ; CPU:$EE8D PRG:6E8D D0 01 + rts ; CPU:$EE8F PRG:6E8F 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop95 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop95: + ldx #$00 ; CPU:$EE90 PRG:6E90 A2 00 + stx Zp10 ; CPU:$EE92 PRG:6E92 86 10 + stx Zp16 ; CPU:$EE94 PRG:6E94 86 16 + lda $055A,y ; CPU:$EE96 PRG:6E96 B9 5A 05 + lsr a ; CPU:$EE99 PRG:6E99 4A + lsr a ; CPU:$EE9A PRG:6E9A 4A + lsr a ; CPU:$EE9B PRG:6E9B 4A + lsr a ; CPU:$EE9C PRG:6E9C 4A + cmp #$05 ; CPU:$EE9D PRG:6E9D C9 05 + bcc OlympicsScheduler_Loop96 ; CPU:$EE9F PRG:6E9F 90 04 + sbc #$05 ; CPU:$EEA1 PRG:6EA1 E9 05 + ror Zp10 ; CPU:$EEA3 PRG:6EA3 66 10 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop96 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop96: + tax ; CPU:$EEA5 PRG:6EA5 AA +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero15: + dex ; CPU:$EEA6 PRG:6EA6 CA + bmi OlympicsScheduler_Loop97 ; CPU:$EEA7 PRG:6EA7 30 08 + lda Zp10 ; CPU:$EEA9 PRG:6EA9 A5 10 + adc #$1A ; CPU:$EEAB PRG:6EAB 69 1A + sta Zp10 ; CPU:$EEAD PRG:6EAD 85 10 + bne OlympicsScheduler_OnNonzero15 ; CPU:$EEAF PRG:6EAF D0 F5 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop97 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop97: + lda $0572,y ; CPU:$EEB1 PRG:6EB1 B9 72 05 + pha ; CPU:$EEB4 PRG:6EB4 48 + and #$0F ; CPU:$EEB5 PRG:6EB5 29 0F + sta Zp11 ; CPU:$EEB7 PRG:6EB7 85 11 + pla ; CPU:$EEB9 PRG:6EB9 68 + lsr a ; CPU:$EEBA PRG:6EBA 4A + lsr a ; CPU:$EEBB PRG:6EBB 4A + lsr a ; CPU:$EEBC PRG:6EBC 4A + lsr a ; CPU:$EEBD PRG:6EBD 4A + clc ; CPU:$EEBE PRG:6EBE 18 + tax ; CPU:$EEBF PRG:6EBF AA +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero16: + dex ; CPU:$EEC0 PRG:6EC0 CA + bmi OlympicsScheduler_Loop98 ; CPU:$EEC1 PRG:6EC1 30 08 + lda Zp11 ; CPU:$EEC3 PRG:6EC3 A5 11 + adc #$0A ; CPU:$EEC5 PRG:6EC5 69 0A + sta Zp11 ; CPU:$EEC7 PRG:6EC7 85 11 + bne OlympicsScheduler_OnNonzero16 ; CPU:$EEC9 PRG:6EC9 D0 F5 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop98 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop98: + lda GameMode ; CPU:$EECB PRG:6ECB A5 8C + tax ; CPU:$EECD PRG:6ECD AA + lda $EF40,x ; CPU:$EECE PRG:6ECE BD 40 EF + beq OlympicsScheduler_Loop99 ; CPU:$EED1 PRG:6ED1 F0 0D + pha ; CPU:$EED3 PRG:6ED3 48 + lda #$00 ; CPU:$EED4 PRG:6ED4 A9 00 + sec ; CPU:$EED6 PRG:6ED6 38 + sbc Zp10 ; CPU:$EED7 PRG:6ED7 E5 10 + sta Zp10 ; CPU:$EED9 PRG:6ED9 85 10 + pla ; CPU:$EEDB PRG:6EDB 68 + sbc Zp11 ; CPU:$EEDC PRG:6EDC E5 11 + sta Zp11 ; CPU:$EEDE PRG:6EDE 85 11 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop99 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop99: + txa ; CPU:$EEE0 PRG:6EE0 8A + asl a ; CPU:$EEE1 PRG:6EE1 0A + tax ; CPU:$EEE2 PRG:6EE2 AA + lda $EF44,x ; CPU:$EEE3 PRG:6EE3 BD 44 EF + sta Zp12 ; CPU:$EEE6 PRG:6EE6 85 12 + lda $EF45,x ; CPU:$EEE8 PRG:6EE8 BD 45 EF + sta Zp13 ; CPU:$EEEB PRG:6EEB 85 13 + jsr OlympicsScheduler_OnNonzero18 ; CPU:$EEED PRG:6EED 20 29 EF + ldx #$04 ; CPU:$EEF0 PRG:6EF0 A2 04 + lda Zp16 ; CPU:$EEF2 PRG:6EF2 A5 16 + cmp #$0A ; CPU:$EEF4 PRG:6EF4 C9 0A + bcs OlympicsScheduler_Loop100 ; CPU:$EEF6 PRG:6EF6 B0 2B +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero17: + asl Zp16 ; CPU:$EEF8 PRG:6EF8 06 16 + lsr Zp13 ; CPU:$EEFA PRG:6EFA 46 13 + ror Zp12 ; CPU:$EEFC PRG:6EFC 66 12 + dex ; CPU:$EEFE PRG:6EFE CA + bne OlympicsScheduler_OnNonzero17 ; CPU:$EEFF PRG:6EFF D0 F7 + jsr OlympicsScheduler_OnNonzero18 ; CPU:$EF01 PRG:6F01 20 29 EF + lda Zp16 ; CPU:$EF04 PRG:6F04 A5 16 + sta Zp10 ; CPU:$EF06 PRG:6F06 85 10 + lda #$00 ; CPU:$EF08 PRG:6F08 A9 00 + sta Zp11 ; CPU:$EF0A PRG:6F0A 85 11 + sta Zp13 ; CPU:$EF0C PRG:6F0C 85 13 + sta Zp16 ; CPU:$EF0E PRG:6F0E 85 16 + lda #$0A ; CPU:$EF10 PRG:6F10 A9 0A + sta Zp12 ; CPU:$EF12 PRG:6F12 85 12 + jsr OlympicsScheduler_OnNonzero18 ; CPU:$EF14 PRG:6F14 20 29 EF + lda Zp16 ; CPU:$EF17 PRG:6F17 A5 16 + asl a ; CPU:$EF19 PRG:6F19 0A + asl a ; CPU:$EF1A PRG:6F1A 0A + asl a ; CPU:$EF1B PRG:6F1B 0A + asl a ; CPU:$EF1C PRG:6F1C 0A + ora Zp10 ; CPU:$EF1D PRG:6F1D 05 10 + cmp #$A0 ; CPU:$EF1F PRG:6F1F C9 A0 + bcc OlympicsScheduler_Loop101 ; CPU:$EF21 PRG:6F21 90 02 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop100 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop100: + lda #$A0 ; CPU:$EF23 PRG:6F23 A9 A0 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop101 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop101: + sta $0530,y ; CPU:$EF25 PRG:6F25 99 30 05 + rts ; CPU:$EF28 PRG:6F28 60 +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_OnNonzero18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_OnNonzero18: + lda Zp10 ; CPU:$EF29 PRG:6F29 A5 10 + cmp Zp12 ; CPU:$EF2B PRG:6F2B C5 12 + lda Zp11 ; CPU:$EF2D PRG:6F2D A5 11 + sbc Zp13 ; CPU:$EF2F PRG:6F2F E5 13 + bcc OlympicsScheduler_Loop102 ; CPU:$EF31 PRG:6F31 90 0C + sta Zp11 ; CPU:$EF33 PRG:6F33 85 11 + lda Zp10 ; CPU:$EF35 PRG:6F35 A5 10 + sbc Zp12 ; CPU:$EF37 PRG:6F37 E5 12 + sta Zp10 ; CPU:$EF39 PRG:6F39 85 10 + inc Zp16 ; CPU:$EF3B PRG:6F3B E6 16 + bne OlympicsScheduler_OnNonzero18 ; CPU:$EF3D PRG:6F3D D0 EA +; ----------------------------------------------------------------------------- +; Routine: OlympicsScheduler_Loop102 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OlympicsScheduler_Loop102: + rts ; CPU:$EF3F PRG:6F3F 60 +; ---- data $EF40-$EF4B (12 bytes) ---- +; referenced by `lda $EF40,x` at $EECE (operand $EF40 falls inside this region) +; referenced by `lda $EF44,x` at $EEE3 (operand $EF44 falls inside this region) +; referenced by `lda $EF45,x` at $EEE8 (operand $EF45 falls inside this region) + .byte $3C, $3C, $00, $00, $08, $08, $88, $07, $6C, $01, $DD, $02 ; CPU:$EF40 PRG:6F40 3C 3C 00 00 08 08 88 07 6C 01 DD 02 +; ----------------------------------------------------------------------------- +; Routine: Sub_EF4C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EF4C: + jsr EventInit ; CPU:$EF4C PRG:6F4C 20 7C EF + jsr Sub_FC4E ; CPU:$EF4F PRG:6F4F 20 4E FC + jsr FrameDelay ; CPU:$EF52 PRG:6F52 20 E6 F8 + lda Zp7E ; CPU:$EF55 PRG:6F55 A5 7E + asl a ; CPU:$EF57 PRG:6F57 0A + asl a ; CPU:$EF58 PRG:6F58 0A + tay ; CPU:$EF59 PRG:6F59 A8 + lda $EFFC,y ; CPU:$EF5A PRG:6F5A B9 FC EF + sta PpuCtrlMirror ; CPU:$EF5D PRG:6F5D 85 18 + lda $EFFD,y ; CPU:$EF5F PRG:6F5F B9 FD EF + pha ; CPU:$EF62 PRG:6F62 48 + lda $EFFE,y ; CPU:$EF63 PRG:6F63 B9 FE EF + pha ; CPU:$EF66 PRG:6F66 48 + lda $EFFF,y ; CPU:$EF67 PRG:6F67 B9 FF EF + tay ; CPU:$EF6A PRG:6F6A A8 + pla ; CPU:$EF6B PRG:6F6B 68 + jsr PaletteLoad ; CPU:$EF6C PRG:6F6C 20 9D FA + lda #$02 ; CPU:$EF6F PRG:6F6F A9 02 + jsr DelayFrames ; CPU:$EF71 PRG:6F71 20 F5 F7 + pla ; CPU:$EF74 PRG:6F74 68 + jsr Sub_F00C ; CPU:$EF75 PRG:6F75 20 0C F0 + jsr Sub_EFC6 ; CPU:$EF78 PRG:6F78 20 C6 EF + rts ; CPU:$EF7B PRG:6F7B 60 +; ----------------------------------------------------------------------------- +; Routine: EventInit +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventInit: + lda PpuMaskMirror ; CPU:$EF7C PRG:6F7C A5 19 + and #$E7 ; CPU:$EF7E PRG:6F7E 29 E7 + sta PpuMaskMirror ; CPU:$EF80 PRG:6F80 85 19 + lda $039C ; CPU:$EF82 PRG:6F82 AD 9C 03 + pha ; CPU:$EF85 PRG:6F85 48 + lda #$0F ; CPU:$EF86 PRG:6F86 A9 0F + sta $039C ; CPU:$EF88 PRG:6F88 8D 9C 03 + sta $03A0 ; CPU:$EF8B PRG:6F8B 8D A0 03 + sta $03A4 ; CPU:$EF8E PRG:6F8E 8D A4 03 + sta $03A8 ; CPU:$EF91 PRG:6F91 8D A8 03 + sta $03AC ; CPU:$EF94 PRG:6F94 8D AC 03 + sta $03B0 ; CPU:$EF97 PRG:6F97 8D B0 03 + sta $03B4 ; CPU:$EF9A PRG:6F9A 8D B4 03 + sta $03B8 ; CPU:$EF9D PRG:6F9D 8D B8 03 + ldy #$00 ; CPU:$EFA0 PRG:6FA0 A0 00 + sty Zp2B ; CPU:$EFA2 PRG:6FA2 84 2B + iny ; CPU:$EFA4 PRG:6FA4 C8 + sty Zp29 ; CPU:$EFA5 PRG:6FA5 84 29 + jsr EnableNmi ; CPU:$EFA7 PRG:6FA7 20 DE F7 + inc Zp2B ; CPU:$EFAA PRG:6FAA E6 2B + pla ; CPU:$EFAC PRG:6FAC 68 + sta $039C ; CPU:$EFAD PRG:6FAD 8D 9C 03 + sta $03A0 ; CPU:$EFB0 PRG:6FB0 8D A0 03 + sta $03A4 ; CPU:$EFB3 PRG:6FB3 8D A4 03 + sta $03A8 ; CPU:$EFB6 PRG:6FB6 8D A8 03 + sta $03AC ; CPU:$EFB9 PRG:6FB9 8D AC 03 + sta $03B0 ; CPU:$EFBC PRG:6FBC 8D B0 03 + sta $03B4 ; CPU:$EFBF PRG:6FBF 8D B4 03 + sta $03B8 ; CPU:$EFC2 PRG:6FC2 8D B8 03 + rts ; CPU:$EFC5 PRG:6FC5 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EFC6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EFC6: + ldy #$00 ; CPU:$EFC6 PRG:6FC6 A0 00 + sty Zp2B ; CPU:$EFC8 PRG:6FC8 84 2B + iny ; CPU:$EFCA PRG:6FCA C8 + sty Zp29 ; CPU:$EFCB PRG:6FCB 84 29 + jsr EnableNmi ; CPU:$EFCD PRG:6FCD 20 DE F7 + lda PpuMaskMirror ; CPU:$EFD0 PRG:6FD0 A5 19 + ora #$18 ; CPU:$EFD2 PRG:6FD2 09 18 + sta PpuMaskMirror ; CPU:$EFD4 PRG:6FD4 85 19 + rts ; CPU:$EFD6 PRG:6FD6 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_EFD7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EFD7: + ldy #$00 ; CPU:$EFD7 PRG:6FD7 A0 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_EFD9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_EFD9: + ldx $038F ; CPU:$EFD9 PRG:6FD9 AE 8F 03 + sta $044A,x ; CPU:$EFDC PRG:6FDC 9D 4A 04 + lda Zp11 ; CPU:$EFDF PRG:6FDF A5 11 + sta $0447,x ; CPU:$EFE1 PRG:6FE1 9D 47 04 + inx ; CPU:$EFE4 PRG:6FE4 E8 + lda Zp10 ; CPU:$EFE5 PRG:6FE5 A5 10 + sta $0447,x ; CPU:$EFE7 PRG:6FE7 9D 47 04 + inx ; CPU:$EFEA PRG:6FEA E8 + tya ; CPU:$EFEB PRG:6FEB 98 + ora #$20 ; CPU:$EFEC PRG:6FEC 09 20 + sta $0447,x ; CPU:$EFEE PRG:6FEE 9D 47 04 + inx ; CPU:$EFF1 PRG:6FF1 E8 + inx ; CPU:$EFF2 PRG:6FF2 E8 + lda #$FF ; CPU:$EFF3 PRG:6FF3 A9 FF + sta $0447,x ; CPU:$EFF5 PRG:6FF5 9D 47 04 + stx $038F ; CPU:$EFF8 PRG:6FF8 8E 8F 03 + rts ; CPU:$EFFB PRG:6FFB 60 +; ---- data $EFFC-$F00B (16 bytes) ---- +; referenced by `lda $EFFC,y` at $EF5A (operand $EFFC falls inside this region) +; referenced by `lda $EFFD,y` at $EF5F (operand $EFFD falls inside this region) +; referenced by `lda $EFFE,y` at $EF63 (operand $EFFE falls inside this region) +; referenced by `lda $EFFF,y` at $EF67 (operand $EFFF falls inside this region) + .byte $20, $04, $25, $F0, $30, $01, $86, $F4, $30, $05, $A9, $F2, $30, $06, $BE, $F1 ; CPU:$EFFC PRG:6FFC 20 04 25 F0 30 01 86 F4 30 05 A9 F2 30 06 BE F1 +; ----------------------------------------------------------------------------- +; Routine: Sub_F00C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_F00C: + asl a ; CPU:$F00C PRG:700C 0A + asl a ; CPU:$F00D PRG:700D 0A + asl a ; CPU:$F00E PRG:700E 0A + asl a ; CPU:$F00F PRG:700F 0A + asl a ; CPU:$F010 PRG:7010 0A + tay ; CPU:$F011 PRG:7011 A8 + ldx #$20 ; CPU:$F012 PRG:7012 A2 20 +; ----------------------------------------------------------------------------- +; Routine: EventInit_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EventInit_OnNonzero: + lda $BD82,y ; CPU:$F014 PRG:7014 B9 82 BD + sta $039B,x ; CPU:$F017 PRG:7017 9D 9B 03 + dey ; CPU:$F01A PRG:701A 88 + dex ; CPU:$F01B PRG:701B CA + bne EventInit_OnNonzero ; CPU:$F01C PRG:701C D0 F6 + lda #$01 ; CPU:$F01E PRG:701E A9 01 + sta Zp29 ; CPU:$F020 PRG:7020 85 29 + jmp EnableNmi ; CPU:$F022 PRG:7022 4C DE F7 +; ---- data $F025-$F6FC (1752 bytes) ---- + .byte $20, $00, $7F, $15, $FF, $22, $C0, $7F, $02, $E6, $23, $20, $7F, $04, $BE, $20 ; CPU:$F025 PRG:7025 20 00 7F 15 FF 22 C0 7F 02 E6 23 20 7F 04 BE 20 + .byte $4C, $48, $01, $7B, $7C, $7D, $7E, $7F, $99, $9A, $9B, $9C, $8B, $8C, $8D, $8E ; CPU:$F035 PRG:7035 4C 48 01 7B 7C 7D 7E 7F 99 9A 9B 9C 8B 8C 8D 8E + .byte $8F, $9D, $9E, $9F, $A0, $20, $86, $54, $01, $20, $21, $22, $23, $24, $25, $26 ; CPU:$F045 PRG:7045 8F 9D 9E 9F A0 20 86 54 01 20 21 22 23 24 25 26 + .byte $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $40, $41, $42, $41, $43, $30, $31 ; CPU:$F055 PRG:7055 27 28 29 2A 2B 2C 2D 2E 2F 40 41 42 41 43 30 31 + .byte $32, $33, $34, $35, $36, $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $50, $51 ; CPU:$F065 PRG:7065 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 50 51 + .byte $52, $51, $53, $20, $C4, $57, $03, $44, $45, $45, $45, $45, $45, $45, $45, $45 ; CPU:$F075 PRG:7075 52 51 53 20 C4 57 03 44 45 45 45 45 45 45 45 45 + .byte $45, $45, $45, $64, $45, $65, $45, $74, $45, $75, $76, $45, $77, $45, $78, $46 ; CPU:$F085 PRG:7085 45 45 45 64 45 65 45 74 45 75 76 45 77 45 78 46 + .byte $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F, $60, $61, $70, $71, $72, $71, $84 ; CPU:$F095 PRG:7095 47 48 49 4A 4B 4C 4D 4E 4F 60 61 70 71 72 71 84 + .byte $85, $86, $87, $88, $FF, $7A, $A2, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E ; CPU:$F0A5 PRG:70A5 85 86 87 88 FF 7A A2 56 57 58 59 5A 5B 5C 5D 5E + .byte $5F, $62, $A3, $80, $81, $82, $83, $94, $95, $96, $97, $98, $89, $8A, $FF, $66 ; CPU:$F0B5 PRG:70B5 5F 62 A3 80 81 82 83 94 95 96 97 98 89 8A FF 66 + .byte $67, $68, $69, $6A, $6B, $6C, $6D, $6E, $6F, $63, $FF, $90, $91, $92, $93, $73 ; CPU:$F0C5 PRG:70C5 67 68 69 6A 6B 6C 6D 6E 6F 63 FF 90 91 92 93 73 + .byte $73, $73, $73, $73, $73, $73, $79, $20, $BB, $01, $54, $55, $21, $84, $09, $D3 ; CPU:$F0D5 PRG:70D5 73 73 73 73 73 73 79 20 BB 01 54 55 21 84 09 D3 + .byte $CE, $D4, $D1, $CD, $C0, $CC, $C4, $CD, $D3, $21, $91, $0B, $DA, $DA, $CE, $CC ; CPU:$F0E5 PRG:70E5 CE D4 D1 CD C0 CC C4 CD D3 21 91 0B DA DA CE CC + .byte $FF, $C7, $D4, $D1, $C3, $CB, $C4, $D2, $21, $C4, $08, $DA, $CE, $CE, $CC, $FF ; CPU:$F0F5 PRG:70F5 FF C7 D4 D1 C3 CB C4 D2 21 C4 08 DA CE CE CC FF + .byte $C3, $C0, $D2, $C7, $21, $D1, $0A, $D3, $D1, $C8, $CF, $CB, $C4, $FF, $C9, $D4 ; CPU:$F105 PRG:7105 C3 C0 D2 C7 21 D1 0A D3 D1 C8 CF CB C4 FF C9 D4 + .byte $CC, $CF, $22, $04, $08, $CB, $CE, $CD, $C6, $FF, $C9, $D4, $CC, $CF, $22, $11 ; CPU:$F115 PRG:7115 CC CF 22 04 08 CB CE CD C6 FF C9 D4 CC CF 22 11 + .byte $0B, $D3, $C7, $C4, $FF, $CE, $CB, $D8, $CC, $CF, $C8, $C2, $D2, $22, $8E, $03 ; CPU:$F125 PRG:7125 0B D3 C7 C4 FF CE CB D8 CC CF C8 C2 D2 22 8E 03 + .byte $E0, $E2, $E1, $E3, $22, $AC, $07, $E5, $E5, $E5, $DC, $DE, $E5, $E5, $E5, $22 ; CPU:$F135 PRG:7135 E0 E2 E1 E3 22 AC 07 E5 E5 E5 DC DE E5 E5 E5 22 + .byte $A0, $05, $E7, $E9, $EB, $EC, $ED, $EE, $22, $BA, $05, $EE, $ED, $EC, $E8, $EA ; CPU:$F145 PRG:7145 A0 05 E7 E9 EB EC ED EE 22 BA 05 EE ED EC E8 EA + .byte $E7, $22, $CE, $03, $DD, $E4, $E4, $DF, $22, $ED, $05, $DD, $E4, $E4, $E4, $E4 ; CPU:$F155 PRG:7155 E7 22 CE 03 DD E4 E4 DF 22 ED 05 DD E4 E4 E4 E4 + .byte $DF, $23, $0C, $07, $DD, $E4, $E4, $E4, $E4, $E4, $E4, $DF, $23, $22, $23, $BD ; CPU:$F165 PRG:7165 DF 23 0C 07 DD E4 E4 E4 E4 E4 E4 DF 23 22 23 BD + .byte $23, $28, $21, $BD, $23, $2C, $29, $BD, $23, $38, $21, $BD, $23, $3C, $23, $BD ; CPU:$F175 PRG:7175 23 28 21 BD 23 2C 29 BD 23 38 21 BD 23 3C 23 BD + .byte $23, $48, $0E, $10, $BE, $19, $17, $18, $18, $BE, $11, $12, $11, $13, $14, $11 ; CPU:$F185 PRG:7185 23 48 0E 10 BE 19 17 18 18 BE 11 12 11 13 14 11 + .byte $15, $16, $23, $C0, $67, $82, $08, $00, $23, $D8, $67, $81, $08, $55, $23, $E8 ; CPU:$F195 PRG:7195 15 16 23 C0 67 82 08 00 23 D8 67 81 08 55 23 E8 + .byte $07, $6F, $DA, $55, $FA, $FA, $55, $E5, $97, $23, $F0, $07, $5D, $57, $57, $5F ; CPU:$F1A5 PRG:71A5 07 6F DA 55 FA FA 55 E5 97 23 F0 07 5D 57 57 5F + .byte $5F, $57, $57, $5F, $23, $F8, $27, $55, $FF, $20, $00, $7F, $04, $03, $20, $46 ; CPU:$F1B5 PRG:71B5 5F 57 57 5F 23 F8 27 55 FF 20 00 7F 04 03 20 46 + .byte $82, $99, $98, $AF, $20, $4A, $82, $9C, $98, $AF, $20, $4E, $82, $9B, $98, $AF ; CPU:$F1C5 PRG:71C5 82 99 98 AF 20 4A 82 9C 98 AF 20 4E 82 9B 98 AF + .byte $20, $52, $82, $9A, $98, $AF, $20, $56, $82, $9D, $98, $AF, $20, $5A, $82, $9C ; CPU:$F1D5 PRG:71D5 20 52 82 9A 98 AF 20 56 82 9D 98 AF 20 5A 82 9C + .byte $98, $AF, $20, $85, $00, $B0, $20, $89, $00, $B0, $20, $8D, $00, $B0, $20, $91 ; CPU:$F1E5 PRG:71E5 98 AF 20 85 00 B0 20 89 00 B0 20 8D 00 B0 20 91 + .byte $00, $B0, $20, $95, $00, $B0, $20, $99, $00, $B0, $20, $C4, $77, $09, $03, $20 ; CPU:$F1F5 PRG:71F5 00 B0 20 95 00 B0 20 99 00 B0 20 C4 77 09 03 20 + .byte $A3, $AA, $01, $20, $DC, $A9, $01, $22, $03, $39, $01, $20, $A3, $39, $81, $22 ; CPU:$F205 PRG:7205 A3 AA 01 20 DC A9 01 22 03 39 01 20 A3 39 81 22 + .byte $23, $39, $83, $20, $A0, $02, $02, $02, $7C, $20, $BD, $02, $7E, $02, $02, $22 ; CPU:$F215 PRG:7215 23 39 83 20 A0 02 02 02 7C 20 BD 02 7E 02 02 22 + .byte $22, $00, $7D, $22, $3D, $00, $7F, $20, $C0, $61, $0B, $7A, $20, $DE, $61, $0B ; CPU:$F225 PRG:7225 22 00 7D 22 3D 00 7F 20 C0 61 0B 7A 20 DE 61 0B + .byte $7A, $20, $C2, $AA, $80, $20, $DD, $AA, $82, $22, $40, $3F, $02, $22, $60, $3F ; CPU:$F235 PRG:7235 7A 20 C2 AA 80 20 DD AA 82 22 40 3F 02 22 60 3F + .byte $7B, $23, $40, $7F, $03, $CD, $22, $EE, $03, $CC, $CE, $CE, $CF, $23, $0E, $03 ; CPU:$F245 PRG:7245 7B 23 40 7F 03 CD 22 EE 03 CC CE CE CF 23 0E 03 + .byte $AC, $A0, $A2, $AE, $23, $2B, $09, $CC, $CE, $CE, $AD, $A1, $A3, $B1, $CE, $CE ; CPU:$F255 PRG:7255 AC A0 A2 AE 23 2B 09 CC CE CE AD A1 A3 B1 CE CE + .byte $B7, $23, $4B, $09, $9E, $A4, $A6, $02, $02, $02, $02, $A8, $AA, $9F, $23, $6B ; CPU:$F265 PRG:7265 B7 23 4B 09 9E A4 A6 02 02 02 02 A8 AA 9F 23 6B + .byte $09, $9E, $A5, $A7, $02, $02, $02, $02, $A9, $AB, $B8, $23, $C0, $27, $AA, $23 ; CPU:$F275 PRG:7275 09 9E A5 A7 02 02 02 02 A9 AB B8 23 C0 27 AA 23 + .byte $C8, $60, $82, $08, $55, $23, $C9, $25, $05, $23, $D1, $65, $81, $08, $00, $23 ; CPU:$F285 PRG:7285 C8 60 82 08 55 23 C9 25 05 23 D1 65 81 08 00 23 + .byte $CF, $60, $82, $08, $55, $23, $E0, $27, $55, $23, $E8, $27, $00, $23, $F0, $67 ; CPU:$F295 PRG:7295 CF 60 82 08 55 23 E0 27 55 23 E8 27 00 23 F0 67 + .byte $81, $08, $FF, $FF, $20, $63, $39, $23, $23, $23, $39, $23, $20, $83, $B4, $23 ; CPU:$F2A5 PRG:72A5 81 08 FF FF 20 63 39 23 23 23 39 23 20 83 B4 23 + .byte $20, $9C, $B4, $23, $22, $69, $05, $11, $12, $13, $14, $15, $16, $22, $A9, $0D ; CPU:$F2B5 PRG:72B5 20 9C B4 23 22 69 05 11 12 13 14 15 16 22 A9 0D + .byte $24, $26, $25, $27, $28, $2A, $29, $2B, $2C, $2E, $2D, $2F, $30, $32, $22, $E9 ; CPU:$F2C5 PRG:72C5 24 26 25 27 28 2A 29 2B 2C 2E 2D 2F 30 32 22 E9 + .byte $0C, $31, $33, $34, $36, $35, $37, $38, $3A, $39, $3B, $3C, $3E, $1A, $23, $16 ; CPU:$F2D5 PRG:72D5 0C 31 33 34 36 35 37 38 3A 39 3B 3C 3E 1A 23 16 + .byte $00, $77, $20, $B1, $04, $F8, $FA, $F9, $FB, $FC, $23, $C9, $65, $84, $08, $00 ; CPU:$F2E5 PRG:72E5 00 77 20 B1 04 F8 FA F9 FB FC 23 C9 65 84 08 00 + .byte $23, $C0, $27, $FF, $23, $C8, $60, $84, $08, $FF, $23, $CF, $60, $84, $08, $FF ; CPU:$F2F5 PRG:72F5 23 C0 27 FF 23 C8 60 84 08 FF 23 CF 60 84 08 FF + .byte $23, $F0, $27, $FF, $23, $F8, $27, $00, $23, $D3, $00, $10, $23, $DB, $00, $11 ; CPU:$F305 PRG:7305 23 F0 27 FF 23 F8 27 00 23 D3 00 10 23 DB 00 11 + .byte $23, $E3, $00, $02, $FF, $11, $03, $E5, $F3, $11, $03, $C0, $F3, $11, $03, $A3 ; CPU:$F315 PRG:7315 23 E3 00 02 FF 11 03 E5 F3 11 03 C0 F3 11 03 A3 + .byte $F3, $11, $03, $86, $F3, $11, $03, $6A, $F3, $11, $03, $4B, $F3, $11, $03, $15 ; CPU:$F325 PRG:7325 F3 11 03 86 F3 11 03 6A F3 11 03 4B F3 11 03 15 + .byte $F4, $11, $03, $28, $F4, $11, $03, $43, $F4, $11, $03, $87, $F4, $11, $03, $F3 ; CPU:$F335 PRG:7335 F4 11 03 28 F4 11 03 43 F4 11 03 87 F4 11 03 F3 + .byte $F4, $11, $03, $73, $F5, $00, $20, $AD, $05, $37, $38, $36, $37, $2F, $28, $22 ; CPU:$F345 PRG:7345 F4 11 03 73 F5 00 20 AD 05 37 38 36 37 2F 28 22 + .byte $E7, $11, $2F, $28, $37, $1A, $35, $00, $2B, $24, $3A, $28, $00, $24, $00, $36 ; CPU:$F355 PRG:7355 E7 11 2F 28 37 1A 35 00 2B 24 3A 28 00 24 00 36 + .byte $24, $25, $28, $23, $FF, $20, $AE, $03, $26, $28, $24, $36, $22, $E7, $10, $2C ; CPU:$F365 PRG:7365 24 25 28 23 FF 20 AE 03 26 28 24 36 22 E7 10 2C + .byte $37, $1A, $35, $00, $30, $3C, $00, $37, $38, $36, $32, $00, $32, $31, $39, $23 ; CPU:$F375 PRG:7375 37 1A 35 00 30 3C 00 37 38 36 32 00 32 31 39 23 + .byte $FF, $20, $AD, $04, $2B, $31, $36, $35, $28, $22, $E7, $10, $2C, $00, $24, $30 ; CPU:$F385 PRG:7385 FF 20 AD 04 2B 31 36 35 28 22 E7 10 2C 00 24 30 + .byte $00, $36, $28, $24, $2F, $2F, $3C, $00, $2A, $24, $35, $37, $23, $FF, $20, $AD ; CPU:$F395 PRG:7395 00 36 28 24 2F 2F 3C 00 2A 24 35 37 23 FF 20 AD + .byte $05, $36, $24, $26, $26, $2C, $37, $22, $E8, $0F, $25, $24, $32, $00, $3C, $31 ; CPU:$F3A5 PRG:73A5 05 36 24 26 26 2C 37 22 E8 0F 25 24 32 00 3C 31 + .byte $38, $00, $26, $28, $24, $37, $00, $30, $28, $21, $FF, $20, $AD, $05, $26, $31 ; CPU:$F3B5 PRG:73B5 38 00 26 28 24 37 00 30 28 21 FF 20 AD 05 26 31 + .byte $26, $25, $24, $37, $22, $E4, $17, $25, $24, $32, $00, $3C, $31, $38, $00, $2D ; CPU:$F3C5 PRG:73C5 26 25 24 37 22 E4 17 25 24 32 00 3C 31 38 00 2D + .byte $28, $28, $33, $00, $38, $33, $00, $39, $2C, $37, $2B, $00, $30, $28, $21, $FF ; CPU:$F3D5 PRG:73D5 28 28 33 00 38 33 00 39 2C 37 2B 00 30 28 21 FF + .byte $20, $AC, $06, $25, $2B, $28, $28, $37, $24, $2B, $22, $C8, $0E, $2C, $2A, $00 ; CPU:$F3E5 PRG:73E5 20 AC 06 25 2B 28 28 37 24 2B 22 C8 0E 2C 2A 00 + .byte $3C, $31, $38, $00, $26, $28, $24, $37, $00, $30, $28, $20, $23, $08, $0F, $3C ; CPU:$F3F5 PRG:73F5 3C 31 38 00 26 28 24 37 00 30 28 20 23 08 0F 3C + .byte $31, $38, $1A, $36, $28, $00, $37, $2B, $28, $00, $26, $28, $35, $37, $23, $FF ; CPU:$F405 PRG:7405 31 38 1A 36 28 00 37 2B 28 00 26 28 35 37 23 FF + .byte $F6, $32, $61, $ED, $53, $F6, $F6, $6D, $23, $DB, $01, $C0, $30, $23, $E3, $01 ; CPU:$F415 PRG:7415 F6 32 61 ED 53 F6 F6 6D 23 DB 01 C0 30 23 E3 01 + .byte $CC, $33, $FF, $F6, $32, $61, $E9, $53, $F6, $61, $F1, $53, $F6, $F6, $6D, $23 ; CPU:$F425 PRG:7425 CC 33 FF F6 32 61 E9 53 F6 61 F1 53 F6 F6 6D 23 + .byte $DA, $03, $C0, $30, $80, $20, $23, $E2, $03, $CC, $33, $88, $22, $FF, $20, $C3 ; CPU:$F435 PRG:7435 DA 03 C0 30 80 20 23 E2 03 CC 33 88 22 FF 20 C3 + .byte $00, $F2, $20, $C4, $37, $EC, $20, $DC, $00, $EE, $20, $E3, $AF, $EF, $20, $FC ; CPU:$F445 PRG:7445 00 F2 20 C4 37 EC 20 DC 00 EE 20 E3 AF EF 20 FC + .byte $AF, $EF, $61, $2B, $6F, $F6, $61, $E5, $53, $F6, $61, $ED, $53, $F6, $61, $F5 ; CPU:$F455 PRG:7455 AF EF 61 2B 6F F6 61 E5 53 F6 61 ED 53 F6 61 F5 + .byte $53, $F6, $22, $E3, $00, $ED, $22, $E4, $37, $EC, $22, $FC, $00, $F0, $23, $D9 ; CPU:$F465 PRG:7465 53 F6 22 E3 00 ED 22 E4 37 EC 22 FC 00 F0 23 D9 + .byte $05, $C0, $30, $80, $20, $40, $10, $23, $E1, $05, $CC, $33, $88, $22, $44, $11 ; CPU:$F475 PRG:7475 05 C0 30 80 20 40 10 23 E1 05 CC 33 88 22 44 11 + .byte $FF, $00, $20, $83, $00, $F2, $20, $84, $37, $EC, $20, $9C, $00, $EE, $20, $A3 ; CPU:$F485 PRG:7485 FF 00 20 83 00 F2 20 84 37 EC 20 9C 00 EE 20 A3 + .byte $B3, $EF, $20, $BC, $B3, $EF, $60, $CB, $6F, $F6, $61, $65, $53, $F6, $61, $6D ; CPU:$F495 PRG:7495 B3 EF 20 BC B3 EF 60 CB 6F F6 61 65 53 F6 61 6D + .byte $53, $F6, $61, $75, $53, $F6, $62, $2D, $93, $F6, $23, $23, $00, $ED, $23, $24 ; CPU:$F4A5 PRG:74A5 53 F6 61 75 53 F6 62 2D 93 F6 23 23 00 ED 23 24 + .byte $37, $EC, $23, $3C, $00, $F0, $23, $C8, $60, $84, $08, $44, $23, $C9, $25, $05 ; CPU:$F4B5 PRG:74B5 37 EC 23 3C 00 F0 23 C8 60 84 08 44 23 C9 25 05 + .byte $23, $CF, $60, $84, $08, $11, $23, $D1, $05, $C0, $30, $80, $20, $40, $10, $23 ; CPU:$F4C5 PRG:74C5 23 CF 60 84 08 11 23 D1 05 C0 30 80 20 40 10 23 + .byte $D9, $05, $CC, $33, $88, $22, $44, $11, $23, $E3, $41, $81, $08, $FF, $FF, $CC ; CPU:$F4D5 PRG:74D5 D9 05 CC 33 88 22 44 11 23 E3 41 81 08 FF FF CC + .byte $33, $23, $F0, $00, $04, $23, $F1, $25, $05, $23, $F7, $00, $01, $FF, $20, $62 ; CPU:$F4E5 PRG:74E5 33 23 F0 00 04 23 F1 25 05 23 F7 00 01 FF 20 62 + .byte $00, $F2, $20, $63, $39, $EC, $20, $7D, $00, $EE, $20, $82, $B5, $EF, $20, $9D ; CPU:$F4F5 PRG:74F5 00 F2 20 63 39 EC 20 7D 00 EE 20 82 B5 EF 20 9D + .byte $B5, $EF, $60, $AB, $6F, $F6, $61, $45, $53, $F6, $61, $4D, $53, $F6, $61, $55 ; CPU:$F505 PRG:7505 B5 EF 60 AB 6F F6 61 45 53 F6 61 4D 53 F6 61 55 + .byte $53, $F6, $61, $F2, $BF, $F6, $62, $28, $93, $F6, $23, $42, $00, $ED, $23, $43 ; CPU:$F515 PRG:7515 53 F6 61 F2 BF F6 62 28 93 F6 23 42 00 ED 23 43 + .byte $39, $EC, $23, $5D, $00, $F0, $23, $C0, $00, $40, $23, $C1, $25, $50, $23, $C7 ; CPU:$F525 PRG:7525 39 EC 23 5D 00 F0 23 C0 00 40 23 C1 25 50 23 C7 + .byte $00, $10, $23, $C8, $60, $84, $08, $44, $23, $CF, $60, $84, $08, $11, $23, $D1 ; CPU:$F535 PRG:7535 00 10 23 C8 60 84 08 44 23 CF 60 84 08 11 23 D1 + .byte $05, $C0, $30, $80, $20, $40, $10, $23, $D9, $05, $0C, $03, $08, $82, $A4, $01 ; CPU:$F545 PRG:7545 05 C0 30 80 20 40 10 23 D9 05 0C 03 08 82 A4 01 + .byte $23, $E2, $03, $FF, $33, $88, $AA, $23, $EA, $03, $FF, $33, $88, $AA, $23, $F0 ; CPU:$F555 PRG:7555 23 E2 03 FF 33 88 AA 23 EA 03 FF 33 88 AA 23 F0 + .byte $00, $44, $23, $F1, $22, $50, $23, $F4, $03, $58, $5A, $50, $11, $FF, $20, $41 ; CPU:$F565 PRG:7565 00 44 23 F1 22 50 23 F4 03 58 5A 50 11 FF 20 41 + .byte $00, $F2, $20, $42, $3B, $EC, $20, $5E, $00, $EE, $20, $61, $B7, $EF, $20, $7E ; CPU:$F575 PRG:7575 00 F2 20 42 3B EC 20 5E 00 EE 20 61 B7 EF 20 7E + .byte $B7, $EF, $60, $8B, $6F, $F6, $61, $05, $53, $F6, $61, $0D, $53, $F6, $61, $15 ; CPU:$F585 PRG:7585 B7 EF 60 8B 6F F6 61 05 53 F6 61 0D 53 F6 61 15 + .byte $53, $F6, $21, $A5, $13, $3C, $31, $38, $00, $24, $36, $28, $00, $25, $2B, $24 ; CPU:$F595 PRG:7595 53 F6 21 A5 13 3C 31 38 00 24 36 28 00 25 2B 24 + .byte $30, $33, $2C, $31, $32, $22, $00, $A0, $A2, $21, $D6, $43, $0B, $00, $A1, $A3 ; CPU:$F5A5 PRG:75A5 30 33 2C 31 32 22 00 A0 A2 21 D6 43 0B 00 A1 A3 + .byte $00, $00, $00, $CC, $00, $C4, $C6, $C8, $CA, $C5, $C7, $C9, $CB, $BC, $BE, $C0 ; CPU:$F5B5 PRG:75B5 00 00 00 CC 00 C4 C6 C8 CA C5 C7 C9 CB BC BE C0 + .byte $C2, $BD, $BF, $C1, $C3, $B4, $B6, $B8, $BA, $B5, $B7, $B9, $BB, $AC, $AE, $B0 ; CPU:$F5C5 PRG:75C5 C2 BD BF C1 C3 B4 B6 B8 BA B5 B7 B9 BB AC AE B0 + .byte $B2, $AD, $AF, $B1, $B3, $A4, $A6, $A8, $AA, $A5, $A7, $A9, $AB, $62, $0D, $BF ; CPU:$F5D5 PRG:75D5 B2 AD AF B1 B3 A4 A6 A8 AA A5 A7 A9 AB 62 0D BF + .byte $F6, $62, $45, $93, $F6, $23, $61, $00, $ED, $23, $62, $3B, $EC, $23, $7E, $00 ; CPU:$F5E5 PRG:75E5 F6 62 45 93 F6 23 61 00 ED 23 62 3B EC 23 7E 00 + .byte $F0, $23, $C0, $27, $50, $23, $C8, $60, $84, $08, $11, $23, $CF, $60, $84, $08 ; CPU:$F5F5 PRG:75F5 F0 23 C0 27 50 23 C8 60 84 08 11 23 CF 60 84 08 + .byte $44, $23, $D1, $05, $CC, $33, $88, $22, $44, $11, $23, $DD, $01, $44, $11, $23 ; CPU:$F605 PRG:7605 44 23 D1 05 CC 33 88 22 44 11 23 DD 01 44 11 23 + .byte $E1, $05, $F0, $F0, $AA, $AA, $44, $11, $23, $E9, $05, $CC, $33, $88, $22, $44 ; CPU:$F615 PRG:7615 E1 05 F0 F0 AA AA 44 11 23 E9 05 CC 33 88 22 44 + .byte $11, $23, $F0, $07, $51, $5C, $53, $58, $52, $54, $51, $54, $FF, $20, $C5, $00 ; CPU:$F625 PRG:7625 11 23 F0 07 51 5C 53 58 52 54 51 54 FF 20 C5 00 + .byte $F2, $20, $C6, $33, $EC, $20, $DA, $00, $EE, $20, $E5, $AF, $EF, $22, $E5, $00 ; CPU:$F635 PRG:7635 F2 20 C6 33 EC 20 DA 00 EE 20 E5 AF EF 22 E5 00 + .byte $ED, $22, $E6, $33, $EC, $22, $FA, $00, $F0, $20, $FA, $AF, $EF, $FF, $45, $03 ; CPU:$F645 PRG:7645 ED 22 E6 33 EC 22 FA 00 F0 20 FA AF EF FF 45 03 + .byte $00, $44, $46, $48, $4A, $00, $54, $45, $47, $49, $4B, $56, $55, $4C, $4E, $50 ; CPU:$F655 PRG:7655 00 44 46 48 4A 00 54 45 47 49 4B 56 55 4C 4E 50 + .byte $52, $57, $00, $4D, $4F, $51, $53, $00, $21, $2B, $4A, $02, $D0, $D2, $D4, $D6 ; CPU:$F665 PRG:7665 52 57 00 4D 4F 51 53 00 21 2B 4A 02 D0 D2 D4 D6 + .byte $D8, $DA, $DC, $DE, $E0, $E2, $E9, $D1, $D3, $D5, $D7, $D9, $DB, $DD, $DF, $E1 ; CPU:$F675 PRG:7675 D8 DA DC DE E0 E2 E9 D1 D3 D5 D7 D9 DB DD DF E1 + .byte $E3, $00, $CE, $00, $CD, $CF, $E4, $E6, $E5, $E7, $E8, $EA, $EB, $FF, $45, $06 ; CPU:$F685 PRG:7685 E3 00 CE 00 CD CF E4 E6 E5 E7 E8 EA EB FF 45 06 + .byte $58, $5A, $5C, $5E, $60, $62, $59, $5B, $5D, $5F, $61, $63, $00, $66, $65, $67 ; CPU:$F695 PRG:7695 58 5A 5C 5E 60 62 59 5B 5D 5F 61 63 00 66 65 67 + .byte $64, $00, $00, $00, $68, $6A, $00, $00, $00, $74, $69, $6B, $76, $00, $00, $6C ; CPU:$F6A5 PRG:76A5 64 00 00 00 68 6A 00 00 00 74 69 6B 76 00 00 6C + .byte $6E, $70, $72, $00, $00, $6D, $6F, $71, $73, $00, $45, $09, $7C, $7E, $80, $82 ; CPU:$F6B5 PRG:76B5 6E 70 72 00 00 6D 6F 71 73 00 45 09 7C 7E 80 82 + .byte $84, $86, $7D, $7F, $81, $83, $85, $87, $88, $8A, $8C, $8E, $90, $92, $89, $8B ; CPU:$F6C5 PRG:76C5 84 86 7D 7F 81 83 85 87 88 8A 8C 8E 90 92 89 8B + .byte $8D, $8F, $91, $93, $00, $94, $96, $98, $9A, $00, $00, $95, $97, $99, $9B, $00 ; CPU:$F6D5 PRG:76D5 8D 8F 91 93 00 94 96 98 9A 00 00 95 97 99 9B 00 + .byte $00, $00, $68, $6A, $00, $00, $00, $74, $69, $6B, $76, $00, $00, $6C, $6E, $70 ; CPU:$F6E5 PRG:76E5 00 00 68 6A 00 00 00 74 69 6B 76 00 00 6C 6E 70 + .byte $72, $00, $00, $6D, $6F, $71, $73, $00 ; CPU:$F6F5 PRG:76F5 72 00 00 6D 6F 71 73 00 +; ----------------------------------------------------------------------------- +; Routine: Reset +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Reset: + sei ; CPU:$F6FD PRG:76FD 78 + cld ; CPU:$F6FE PRG:76FE D8 + lda #$10 ; CPU:$F6FF PRG:76FF A9 10 + sta PPUCTRL ; CPU:$F701 PRG:7701 8D 00 20 + ldx #$FF ; CPU:$F704 PRG:7704 A2 FF + txs ; CPU:$F706 PRG:7706 9A + jsr WaitVblankStart ; CPU:$F707 PRG:7707 20 D7 F8 + jsr WaitVblankStart ; CPU:$F70A PRG:770A 20 D7 F8 + ldy #$07 ; CPU:$F70D PRG:770D A0 07 + sty Zp01 ; CPU:$F70F PRG:770F 84 01 + ldy #$00 ; CPU:$F711 PRG:7711 A0 00 + sty Zp00 ; CPU:$F713 PRG:7713 84 00 + tya ; CPU:$F715 PRG:7715 98 + sta $0700 ; CPU:$F716 PRG:7716 8D 00 07 +; ----------------------------------------------------------------------------- +; Routine: ClearRam +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearRam: + sta (Zp00),y ; CPU:$F719 PRG:7719 91 00 + dey ; CPU:$F71B PRG:771B 88 + bne ClearRam ; CPU:$F71C PRG:771C D0 FB + dec Zp01 ; CPU:$F71E PRG:771E C6 01 + bpl ClearRam ; CPU:$F720 PRG:7720 10 F7 + lda #$00 ; CPU:$F722 PRG:7722 A9 00 + sta APUDMCDIRECT ; CPU:$F724 PRG:7724 8D 11 40 + jsr InitDisplay ; CPU:$F727 PRG:7727 20 BC F8 + jsr WaitVblankStart ; CPU:$F72A PRG:772A 20 D7 F8 + ldy #$04 ; CPU:$F72D PRG:772D A0 04 + lda $F8E1,y ; CPU:$F72F PRG:772F B9 E1 F8 + sta $F8E1,y ; CPU:$F732 PRG:7732 99 E1 F8 + jsr FrameDelay ; CPU:$F735 PRG:7735 20 E6 F8 + lda #$0F ; CPU:$F738 PRG:7738 A9 0F + sta APUSTATUS ; CPU:$F73A PRG:773A 8D 15 40 + lda #$80 ; CPU:$F73D PRG:773D A9 80 + sta VblankFlag ; CPU:$F73F PRG:773F 85 2E + ldy #$08 ; CPU:$F741 PRG:7741 A0 08 +; ----------------------------------------------------------------------------- +; Routine: ClearOam +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearOam: + tya ; CPU:$F743 PRG:7743 98 + sta $02FF,y ; CPU:$F744 PRG:7744 99 FF 02 + dey ; CPU:$F747 PRG:7747 88 + bne ClearOam ; CPU:$F748 PRG:7748 D0 F9 + lda #$04 ; CPU:$F74A PRG:774A A9 04 + jsr TaskSlotStart ; CPU:$F74C PRG:774C 20 A0 F7 +; ----------------------------------------------------------------------------- +; Routine: MainLoop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +MainLoop: + lda #$2B ; CPU:$F74F PRG:774F A9 2B + sta TaskSlotOffset ; CPU:$F751 PRG:7751 85 1E + lda #$FF ; CPU:$F753 PRG:7753 A9 FF + sta TaskCount ; CPU:$F755 PRG:7755 85 1D +; ----------------------------------------------------------------------------- +; Routine: MainLoop_NextSlot +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +MainLoop_NextSlot: + lda TaskSlotOffset ; CPU:$F757 PRG:7757 A5 1E + clc ; CPU:$F759 PRG:7759 18 + adc #$10 ; CPU:$F75A PRG:775A 69 10 + sta TaskSlotOffset ; CPU:$F75C PRG:775C 85 1E + tax ; CPU:$F75E PRG:775E AA + inc TaskCount ; CPU:$F75F PRG:775F E6 1D + lda TaskCount ; CPU:$F761 PRG:7761 A5 1D + cmp #$05 ; CPU:$F763 PRG:7763 C9 05 + bcs FrameEnd ; CPU:$F765 PRG:7765 B0 26 + lda Zp00,x ; CPU:$F767 PRG:7767 B5 00 + beq MainLoop_NextSlot ; CPU:$F769 PRG:7769 F0 EC + lda TaskCount ; CPU:$F76B PRG:776B A5 1D + and #$3F ; CPU:$F76D PRG:776D 29 3F + asl a ; CPU:$F76F PRG:776F 0A + tay ; CPU:$F770 PRG:7770 A8 + lda Zp01,x ; CPU:$F771 PRG:7771 B5 01 + beq MainLoop_RunTask ; CPU:$F773 PRG:7773 F0 05 + dec Zp01,x ; CPU:$F775 PRG:7775 D6 01 + jmp MainLoop_NextSlot ; CPU:$F777 PRG:7777 4C 57 F7 +; ----------------------------------------------------------------------------- +; Routine: MainLoop_RunTask +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +MainLoop_RunTask: + jsr TaskDispatch ; CPU:$F77A PRG:777A 20 80 F7 + jmp MainLoop_NextSlot ; CPU:$F77D PRG:777D 4C 57 F7 +; ----------------------------------------------------------------------------- +; Routine: TaskDispatch +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TaskDispatch: + lda $F796,y ; CPU:$F780 PRG:7780 B9 96 F7 + sta Zp1F ; CPU:$F783 PRG:7783 85 1F + lda $F797,y ; CPU:$F785 PRG:7785 B9 97 F7 + sta Zp20 ; CPU:$F788 PRG:7788 85 20 + jmp (Zp1F) ; CPU:$F78A PRG:778A 6C 1F 00 +; ----------------------------------------------------------------------------- +; Routine: FrameEnd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +FrameEnd: + jsr EnableNmi ; CPU:$F78D PRG:778D 20 DE F7 + jsr PollControllers ; CPU:$F790 PRG:7790 20 F1 D0 + jmp MainLoop ; CPU:$F793 PRG:7793 4C 4F F7 +; ---- data $F796-$F79F (10 bytes) ---- +; referenced by `lda $F796,y` at $F780 (operand $F796 falls inside this region) +; referenced by `lda $F797,y` at $F785 (operand $F797 falls inside this region) + .byte $2B, $D3, $04, $80, $4C, $92, $C8, $A8, $D5, $E0 ; CPU:$F796 PRG:7796 2B D3 04 80 4C 92 C8 A8 D5 E0 +; ----------------------------------------------------------------------------- +; Routine: TaskSlotStart +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TaskSlotStart: + sta Zp1F ; CPU:$F7A0 PRG:77A0 85 1F + txa ; CPU:$F7A2 PRG:77A2 8A + pha ; CPU:$F7A3 PRG:77A3 48 + lda Zp1F ; CPU:$F7A4 PRG:77A4 A5 1F + asl a ; CPU:$F7A6 PRG:77A6 0A + asl a ; CPU:$F7A7 PRG:77A7 0A + asl a ; CPU:$F7A8 PRG:77A8 0A + asl a ; CPU:$F7A9 PRG:77A9 0A + tax ; CPU:$F7AA PRG:77AA AA + sec ; CPU:$F7AB PRG:77AB 38 + lda Zp3B,x ; CPU:$F7AC PRG:77AC B5 3B + bmi TaskSlotStart_Loop ; CPU:$F7AE PRG:77AE 30 15 + lda Zp1F ; CPU:$F7B0 PRG:77B0 A5 1F + ora #$80 ; CPU:$F7B2 PRG:77B2 09 80 + sta Zp3B,x ; CPU:$F7B4 PRG:77B4 95 3B + sty Zp3D,x ; CPU:$F7B6 PRG:77B6 94 3D + ldy #$0D ; CPU:$F7B8 PRG:77B8 A0 0D + lda #$00 ; CPU:$F7BA PRG:77BA A9 00 + sta Zp3C,x ; CPU:$F7BC PRG:77BC 95 3C +; ----------------------------------------------------------------------------- +; Routine: TaskSlotStart_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TaskSlotStart_OnNonzero: + inx ; CPU:$F7BE PRG:77BE E8 + sta Zp3D,x ; CPU:$F7BF PRG:77BF 95 3D + dey ; CPU:$F7C1 PRG:77C1 88 + bne TaskSlotStart_OnNonzero ; CPU:$F7C2 PRG:77C2 D0 FA + clc ; CPU:$F7C4 PRG:77C4 18 +; ----------------------------------------------------------------------------- +; Routine: TaskSlotStart_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TaskSlotStart_Loop: + pla ; CPU:$F7C5 PRG:77C5 68 + tax ; CPU:$F7C6 PRG:77C6 AA + lda Zp1F ; CPU:$F7C7 PRG:77C7 A5 1F + rts ; CPU:$F7C9 PRG:77C9 60 +; ----------------------------------------------------------------------------- +; Routine: TaskSlotClear +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TaskSlotClear: + sta Zp1F ; CPU:$F7CA PRG:77CA 85 1F + txa ; CPU:$F7CC PRG:77CC 8A + pha ; CPU:$F7CD PRG:77CD 48 + lda Zp1F ; CPU:$F7CE PRG:77CE A5 1F + asl a ; CPU:$F7D0 PRG:77D0 0A + asl a ; CPU:$F7D1 PRG:77D1 0A + asl a ; CPU:$F7D2 PRG:77D2 0A + asl a ; CPU:$F7D3 PRG:77D3 0A + tax ; CPU:$F7D4 PRG:77D4 AA + lda #$00 ; CPU:$F7D5 PRG:77D5 A9 00 + sta Zp3B,x ; CPU:$F7D7 PRG:77D7 95 3B + pla ; CPU:$F7D9 PRG:77D9 68 + tax ; CPU:$F7DA PRG:77DA AA + lda Zp1F ; CPU:$F7DB PRG:77DB A5 1F + rts ; CPU:$F7DD PRG:77DD 60 +; ----------------------------------------------------------------------------- +; Routine: EnableNmi +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +EnableNmi: + lda PPUSTATUS ; CPU:$F7DE PRG:77DE AD 02 20 + lda PpuCtrlMirror ; CPU:$F7E1 PRG:77E1 A5 18 + ora #$80 ; CPU:$F7E3 PRG:77E3 09 80 + sta PpuCtrlMirror ; CPU:$F7E5 PRG:77E5 85 18 + sta PPUCTRL ; CPU:$F7E7 PRG:77E7 8D 00 20 +; ----------------------------------------------------------------------------- +; Routine: TaskFrameWait +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TaskFrameWait: + inc TaskFrameCounter ; CPU:$F7EA PRG:77EA E6 1B + lda TaskFrameTimer ; CPU:$F7EC PRG:77EC A5 1A + beq TaskFrameWait ; CPU:$F7EE PRG:77EE F0 FA + lda #$00 ; CPU:$F7F0 PRG:77F0 A9 00 + sta TaskFrameTimer ; CPU:$F7F2 PRG:77F2 85 1A + rts ; CPU:$F7F4 PRG:77F4 60 +; ----------------------------------------------------------------------------- +; Routine: DelayFrames +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DelayFrames: + sta Zp1F ; CPU:$F7F5 PRG:77F5 85 1F + txa ; CPU:$F7F7 PRG:77F7 8A + pha ; CPU:$F7F8 PRG:77F8 48 +; ----------------------------------------------------------------------------- +; Routine: DelayFrames_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DelayFrames_OnNonzero: + jsr EnableNmi ; CPU:$F7F9 PRG:77F9 20 DE F7 + dec Zp1F ; CPU:$F7FC PRG:77FC C6 1F + bne DelayFrames_OnNonzero ; CPU:$F7FE PRG:77FE D0 F9 + pla ; CPU:$F800 PRG:7800 68 + tax ; CPU:$F801 PRG:7801 AA + rts ; CPU:$F802 PRG:7802 60 +; ----------------------------------------------------------------------------- +; Routine: NmiHandler +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiHandler: + pha ; CPU:$F803 PRG:7803 48 + txa ; CPU:$F804 PRG:7804 8A + pha ; CPU:$F805 PRG:7805 48 + tya ; CPU:$F806 PRG:7806 98 + pha ; CPU:$F807 PRG:7807 48 + lda PPUSTATUS ; CPU:$F808 PRG:7808 AD 02 20 + lda PpuCtrlMirror ; CPU:$F80B PRG:780B A5 18 + and #$7F ; CPU:$F80D PRG:780D 29 7F + sta PPUCTRL ; CPU:$F80F PRG:780F 8D 00 20 + sta PpuCtrlMirror ; CPU:$F812 PRG:7812 85 18 + lda PpuMaskMirror ; CPU:$F814 PRG:7814 A5 19 + and #$E7 ; CPU:$F816 PRG:7816 29 E7 + sta PPUMASK ; CPU:$F818 PRG:7818 8D 01 20 + lda #$00 ; CPU:$F81B PRG:781B A9 00 + sta OAMADDR ; CPU:$F81D PRG:781D 8D 03 20 + lda #$02 ; CPU:$F820 PRG:7820 A9 02 + sta OAMDMA ; CPU:$F822 PRG:7822 8D 14 40 + jsr NmiPaletteUpdate ; CPU:$F825 PRG:7825 20 F5 F8 + lda ScrollX ; CPU:$F828 PRG:7828 A5 27 + sta PPUSCROLL ; CPU:$F82A PRG:782A 8D 05 20 + lda ScrollY ; CPU:$F82D PRG:782D A5 28 + sta PPUSCROLL ; CPU:$F82F PRG:782F 8D 05 20 + lda PpuMaskMirror ; CPU:$F832 PRG:7832 A5 19 + sta PPUMASK ; CPU:$F834 PRG:7834 8D 01 20 + lda Zp8B ; CPU:$F837 PRG:7837 A5 8B + beq NmiHandler_Loop ; CPU:$F839 PRG:7839 F0 04 + lda #$04 ; CPU:$F83B PRG:783B A9 04 + sta Zp2C ; CPU:$F83D PRG:783D 85 2C +; ----------------------------------------------------------------------------- +; Routine: NmiHandler_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiHandler_Loop: + ldy Zp2C ; CPU:$F83F PRG:783F A4 2C + beq NmiHandler_Loop2 ; CPU:$F841 PRG:7841 F0 0C + lda #$00 ; CPU:$F843 PRG:7843 A9 00 + sta Zp2C ; CPU:$F845 PRG:7845 85 2C + sty Zp2D ; CPU:$F847 PRG:7847 84 2D + lda $F8E1,y ; CPU:$F849 PRG:7849 B9 E1 F8 + sta $F8E1,y ; CPU:$F84C PRG:784C 99 E1 F8 +; ----------------------------------------------------------------------------- +; Routine: NmiHandler_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiHandler_Loop2: + lda Zp8B ; CPU:$F84F PRG:784F A5 8B + bne NmiHandler_OnNonzero ; CPU:$F851 PRG:7851 D0 06 + jsr Sub_CF36 ; CPU:$F853 PRG:7853 20 36 CF + jmp Sub_F8A8 ; CPU:$F856 PRG:7856 4C A8 F8 +; ----------------------------------------------------------------------------- +; Routine: NmiHandler_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiHandler_OnNonzero: + lda PPUSTATUS ; CPU:$F859 PRG:7859 AD 02 20 + and #$80 ; CPU:$F85C PRG:785C 29 80 + bne NmiHandler_OnNonzero ; CPU:$F85E PRG:785E D0 F9 + jsr Sub_CF36 ; CPU:$F860 PRG:7860 20 36 CF + ldy #$E0 ; CPU:$F863 PRG:7863 A0 E0 + jsr ShortDelay ; CPU:$F865 PRG:7865 20 00 80 +; ----------------------------------------------------------------------------- +; Routine: NmiHandler_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiHandler_OnZero: + lda PPUSTATUS ; CPU:$F868 PRG:7868 AD 02 20 + and #$40 ; CPU:$F86B PRG:786B 29 40 + beq NmiHandler_OnZero ; CPU:$F86D PRG:786D F0 F9 + lda $017E ; CPU:$F86F PRG:786F AD 7E 01 + sta PPUADDR ; CPU:$F872 PRG:7872 8D 06 20 + lda $017D ; CPU:$F875 PRG:7875 AD 7D 01 + sta PPUADDR ; CPU:$F878 PRG:7878 8D 06 20 + ldy Zp26 ; CPU:$F87B PRG:787B A4 26 + lda $F8E1,y ; CPU:$F87D PRG:787D B9 E1 F8 + sta $F8E1,y ; CPU:$F880 PRG:7880 99 E1 F8 + ldy #$FF ; CPU:$F883 PRG:7883 A0 FF + jsr ShortDelay ; CPU:$F885 PRG:7885 20 00 80 + jsr ShortDelay ; CPU:$F888 PRG:7888 20 00 80 + ldy #$FF ; CPU:$F88B PRG:788B A0 FF + jsr ShortDelay ; CPU:$F88D PRG:788D 20 00 80 + jsr ShortDelay ; CPU:$F890 PRG:7890 20 00 80 + jsr ShortDelay ; CPU:$F893 PRG:7893 20 00 80 + jsr ShortDelay ; CPU:$F896 PRG:7896 20 00 80 + jsr ShortDelay ; CPU:$F899 PRG:7899 20 00 80 + lda #$21 ; CPU:$F89C PRG:789C A9 21 + and #$0F ; CPU:$F89E PRG:789E 29 0F + sta PPUADDR ; CPU:$F8A0 PRG:78A0 8D 06 20 + lda #$C0 ; CPU:$F8A3 PRG:78A3 A9 C0 + sta PPUADDR ; CPU:$F8A5 PRG:78A5 8D 06 20 +; ----------------------------------------------------------------------------- +; Routine: Sub_F8A8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_F8A8: + jsr Sub_BEEB ; CPU:$F8A8 PRG:78A8 20 EB BE + inc TaskFrameTimer ; CPU:$F8AB PRG:78AB E6 1A + pla ; CPU:$F8AD PRG:78AD 68 + tay ; CPU:$F8AE PRG:78AE A8 + pla ; CPU:$F8AF PRG:78AF 68 + tax ; CPU:$F8B0 PRG:78B0 AA + lda PpuCtrlMirror ; CPU:$F8B1 PRG:78B1 A5 18 + ora #$80 ; CPU:$F8B3 PRG:78B3 09 80 + sta PpuCtrlMirror ; CPU:$F8B5 PRG:78B5 85 18 + sta PPUCTRL ; CPU:$F8B7 PRG:78B7 8D 00 20 + pla ; CPU:$F8BA PRG:78BA 68 + rti ; CPU:$F8BB PRG:78BB 40 +; ----------------------------------------------------------------------------- +; Routine: InitDisplay +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitDisplay: + lda #$30 ; CPU:$F8BC PRG:78BC A9 30 + sta PPUCTRL ; CPU:$F8BE PRG:78BE 8D 00 20 + sta PpuCtrlMirror ; CPU:$F8C1 PRG:78C1 85 18 + lda #$06 ; CPU:$F8C3 PRG:78C3 A9 06 + sta PPUMASK ; CPU:$F8C5 PRG:78C5 8D 01 20 + sta PpuMaskMirror ; CPU:$F8C8 PRG:78C8 85 19 + lda #$00 ; CPU:$F8CA PRG:78CA A9 00 + sta PPUSCROLL ; CPU:$F8CC PRG:78CC 8D 05 20 + sta ScrollX ; CPU:$F8CF PRG:78CF 85 27 + sta PPUSCROLL ; CPU:$F8D1 PRG:78D1 8D 05 20 + sta ScrollY ; CPU:$F8D4 PRG:78D4 85 28 + rts ; CPU:$F8D6 PRG:78D6 60 +; ----------------------------------------------------------------------------- +; Routine: WaitVblankStart +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WaitVblankStart: + lda PPUSTATUS ; CPU:$F8D7 PRG:78D7 AD 02 20 + bmi WaitVblankStart ; CPU:$F8DA PRG:78DA 30 FB +; ----------------------------------------------------------------------------- +; Routine: WaitVblankEnd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WaitVblankEnd: + lda PPUSTATUS ; CPU:$F8DC PRG:78DC AD 02 20 + bpl WaitVblankEnd ; CPU:$F8DF PRG:78DF 10 FB + rts ; CPU:$F8E1 PRG:78E1 60 +; ---- data $F8E2-$F8E5 (4 bytes) ---- + .byte $3C, $7A, $B5, $F3 ; CPU:$F8E2 PRG:78E2 3C 7A B5 F3 +; ----------------------------------------------------------------------------- +; Routine: FrameDelay +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +FrameDelay: + lda #$20 ; CPU:$F8E6 PRG:78E6 A9 20 + sta Zp25 ; CPU:$F8E8 PRG:78E8 85 25 + jsr EnableNmi ; CPU:$F8EA PRG:78EA 20 DE F7 + lda #$28 ; CPU:$F8ED PRG:78ED A9 28 + sta Zp25 ; CPU:$F8EF PRG:78EF 85 25 + jsr EnableNmi ; CPU:$F8F1 PRG:78F1 20 DE F7 + rts ; CPU:$F8F4 PRG:78F4 60 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate: + ldy Zp2B ; CPU:$F8F5 PRG:78F5 A4 2B + bne NmiPaletteUpdate_Loop ; CPU:$F8F7 PRG:78F7 D0 40 + ldy Zp29 ; CPU:$F8F9 PRG:78F9 A4 29 + beq NmiPaletteUpdate_Loop ; CPU:$F8FB PRG:78FB F0 3C + sty Zp00 ; CPU:$F8FD PRG:78FD 84 00 + lda PPUSTATUS ; CPU:$F8FF PRG:78FF AD 02 20 + lda PpuCtrlMirror ; CPU:$F902 PRG:7902 A5 18 + and #$FB ; CPU:$F904 PRG:7904 29 FB + sta PPUCTRL ; CPU:$F906 PRG:7906 8D 00 20 + ldy #$00 ; CPU:$F909 PRG:7909 A0 00 + lda #$3F ; CPU:$F90B PRG:790B A9 3F + sta PPUADDR ; CPU:$F90D PRG:790D 8D 06 20 + lda #$00 ; CPU:$F910 PRG:7910 A9 00 + sta PPUADDR ; CPU:$F912 PRG:7912 8D 06 20 + ldx #$20 ; CPU:$F915 PRG:7915 A2 20 + lda Zp00 ; CPU:$F917 PRG:7917 A5 00 + cmp #$02 ; CPU:$F919 PRG:7919 C9 02 + bne NmiPaletteUpdate_OnNonzero ; CPU:$F91B PRG:791B D0 02 + ldx #$10 ; CPU:$F91D PRG:791D A2 10 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_OnNonzero: + lda $039C,y ; CPU:$F91F PRG:791F B9 9C 03 + sta PPUDATA ; CPU:$F922 PRG:7922 8D 07 20 + iny ; CPU:$F925 PRG:7925 C8 + dex ; CPU:$F926 PRG:7926 CA + bne NmiPaletteUpdate_OnNonzero ; CPU:$F927 PRG:7927 D0 F6 + lda #$3F ; CPU:$F929 PRG:7929 A9 3F + sta PPUADDR ; CPU:$F92B PRG:792B 8D 06 20 + lda #$00 ; CPU:$F92E PRG:792E A9 00 + sta PPUADDR ; CPU:$F930 PRG:7930 8D 06 20 + sta PPUADDR ; CPU:$F933 PRG:7933 8D 06 20 + sta PPUADDR ; CPU:$F936 PRG:7936 8D 06 20 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop: + ldy Zp23 ; CPU:$F939 PRG:7939 A4 23 + beq NmiPaletteUpdate_Loop3 ; CPU:$F93B PRG:793B F0 33 + lda #$00 ; CPU:$F93D PRG:793D A9 00 + sta Zp23 ; CPU:$F93F PRG:793F 85 23 + lda PpuCtrlMirror ; CPU:$F941 PRG:7941 A5 18 + and #$FC ; CPU:$F943 PRG:7943 29 FC + sta PPUCTRL ; CPU:$F945 PRG:7945 8D 00 20 + lda #$BF ; CPU:$F948 PRG:7948 A9 BF + sta Zp02 ; CPU:$F94A PRG:794A 85 02 + lda #$03 ; CPU:$F94C PRG:794C A9 03 + sta Zp03 ; CPU:$F94E PRG:794E 85 03 + lda #$20 ; CPU:$F950 PRG:7950 A9 20 + dey ; CPU:$F952 PRG:7952 88 + beq NmiPaletteUpdate_Loop2 ; CPU:$F953 PRG:7953 F0 02 + lda #$28 ; CPU:$F955 PRG:7955 A9 28 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop2: + sta PPUADDR ; CPU:$F957 PRG:7957 8D 06 20 + lda #$00 ; CPU:$F95A PRG:795A A9 00 + sta PPUADDR ; CPU:$F95C PRG:795C 8D 06 20 + ldx #$04 ; CPU:$F95F PRG:795F A2 04 + ldy #$00 ; CPU:$F961 PRG:7961 A0 00 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_OnNonzero2: + lda (Zp02),y ; CPU:$F963 PRG:7963 B1 02 + sta PPUDATA ; CPU:$F965 PRG:7965 8D 07 20 + iny ; CPU:$F968 PRG:7968 C8 + bne NmiPaletteUpdate_OnNonzero2; CPU:$F969 PRG:7969 D0 F8 + inc Zp03 ; CPU:$F96B PRG:796B E6 03 + dex ; CPU:$F96D PRG:796D CA + bne NmiPaletteUpdate_OnNonzero2; CPU:$F96E PRG:796E D0 F3 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop3: + lda $03BE ; CPU:$F970 PRG:7970 AD BE 03 + bpl NmiPaletteUpdate_Loop4 ; CPU:$F973 PRG:7973 10 2E + lda PPUSTATUS ; CPU:$F975 PRG:7975 AD 02 20 + lda $03BE ; CPU:$F978 PRG:7978 AD BE 03 + and #$04 ; CPU:$F97B PRG:797B 29 04 + sta Zp00 ; CPU:$F97D PRG:797D 85 00 + lda PpuCtrlMirror ; CPU:$F97F PRG:797F A5 18 + and #$78 ; CPU:$F981 PRG:7981 29 78 + ora Zp00 ; CPU:$F983 PRG:7983 05 00 + sta PPUCTRL ; CPU:$F985 PRG:7985 8D 00 20 + lda $03C0 ; CPU:$F988 PRG:7988 AD C0 03 + sta PPUADDR ; CPU:$F98B PRG:798B 8D 06 20 + lda $03BF ; CPU:$F98E PRG:798E AD BF 03 + sta PPUADDR ; CPU:$F991 PRG:7991 8D 06 20 + ldy #$04 ; CPU:$F994 PRG:7994 A0 04 + ldx $03C1 ; CPU:$F996 PRG:7996 AE C1 03 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_OnNonzero3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_OnNonzero3: + lda $03BE,y ; CPU:$F999 PRG:7999 B9 BE 03 + sta PPUDATA ; CPU:$F99C PRG:799C 8D 07 20 + iny ; CPU:$F99F PRG:799F C8 + dex ; CPU:$F9A0 PRG:79A0 CA + bne NmiPaletteUpdate_OnNonzero3; CPU:$F9A1 PRG:79A1 D0 F6 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop4: + lda #$00 ; CPU:$F9A3 PRG:79A3 A9 00 + sta $03BE ; CPU:$F9A5 PRG:79A5 8D BE 03 + sta Zp29 ; CPU:$F9A8 PRG:79A8 85 29 + ldy Zp25 ; CPU:$F9AA PRG:79AA A4 25 + beq NmiPaletteUpdate_Loop5 ; CPU:$F9AC PRG:79AC F0 28 + lda #$00 ; CPU:$F9AE PRG:79AE A9 00 + sta Zp25 ; CPU:$F9B0 PRG:79B0 85 25 + lda PPUSTATUS ; CPU:$F9B2 PRG:79B2 AD 02 20 + lda PpuCtrlMirror ; CPU:$F9B5 PRG:79B5 A5 18 + and #$FB ; CPU:$F9B7 PRG:79B7 29 FB + sta PPUCTRL ; CPU:$F9B9 PRG:79B9 8D 00 20 + sty PPUADDR ; CPU:$F9BC PRG:79BC 8C 06 20 + lda #$00 ; CPU:$F9BF PRG:79BF A9 00 + sta PPUADDR ; CPU:$F9C1 PRG:79C1 8D 06 20 + ldy #$00 ; CPU:$F9C4 PRG:79C4 A0 00 + ldx #$04 ; CPU:$F9C6 PRG:79C6 A2 04 + lda #$00 ; CPU:$F9C8 PRG:79C8 A9 00 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_OnNonzero4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_OnNonzero4: + sta PPUDATA ; CPU:$F9CA PRG:79CA 8D 07 20 + dey ; CPU:$F9CD PRG:79CD 88 + bne NmiPaletteUpdate_OnNonzero4; CPU:$F9CE PRG:79CE D0 FA + dex ; CPU:$F9D0 PRG:79D0 CA + bne NmiPaletteUpdate_OnNonzero4; CPU:$F9D1 PRG:79D1 D0 F7 + lda PPUSTATUS ; CPU:$F9D3 PRG:79D3 AD 02 20 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop5: + lda $038E ; CPU:$F9D6 PRG:79D6 AD 8E 03 + beq NmiPaletteUpdate_Loop7 ; CPU:$F9D9 PRG:79D9 F0 24 + ldy #$00 ; CPU:$F9DB PRG:79DB A0 00 + sty $038E ; CPU:$F9DD PRG:79DD 8C 8E 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_F9E0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_F9E0: + ldy $038E ; CPU:$F9E0 PRG:79E0 AC 8E 03 + lda $0437,y ; CPU:$F9E3 PRG:79E3 B9 37 04 + sta Zp00 ; CPU:$F9E6 PRG:79E6 85 00 + iny ; CPU:$F9E8 PRG:79E8 C8 + lda $0437,y ; CPU:$F9E9 PRG:79E9 B9 37 04 + sta Zp01 ; CPU:$F9EC PRG:79EC 85 01 + ora Zp00 ; CPU:$F9EE PRG:79EE 05 00 + beq NmiPaletteUpdate_Loop6 ; CPU:$F9F0 PRG:79F0 F0 0A + iny ; CPU:$F9F2 PRG:79F2 C8 + sty $038E ; CPU:$F9F3 PRG:79F3 8C 8E 03 + jsr Sub_FABB ; CPU:$F9F6 PRG:79F6 20 BB FA + jmp Sub_F9E0 ; CPU:$F9F9 PRG:79F9 4C E0 F9 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop6: + sta $038E ; CPU:$F9FC PRG:79FC 8D 8E 03 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop7: + lda $038F ; CPU:$F9FF PRG:79FF AD 8F 03 + beq NmiPaletteUpdate_Loop8 ; CPU:$FA02 PRG:7A02 F0 10 + lda #$47 ; CPU:$FA04 PRG:7A04 A9 47 + sta Zp00 ; CPU:$FA06 PRG:7A06 85 00 + lda #$04 ; CPU:$FA08 PRG:7A08 A9 04 + sta Zp01 ; CPU:$FA0A PRG:7A0A 85 01 + jsr Sub_FABB ; CPU:$FA0C PRG:7A0C 20 BB FA + lda #$00 ; CPU:$FA0F PRG:7A0F A9 00 + sta $038F ; CPU:$FA11 PRG:7A11 8D 8F 03 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop8: + lda PPUSTATUS ; CPU:$FA14 PRG:7A14 AD 02 20 + ldx $039A ; CPU:$FA17 PRG:7A17 AE 9A 03 + beq NmiPaletteUpdate_Loop10 ; CPU:$FA1A PRG:7A1A F0 39 + lda #$00 ; CPU:$FA1C PRG:7A1C A9 00 + sta $039A ; CPU:$FA1E PRG:7A1E 8D 9A 03 + sta Zp00 ; CPU:$FA21 PRG:7A21 85 00 + lda PpuCtrlMirror ; CPU:$FA23 PRG:7A23 A5 18 + and #$FB ; CPU:$FA25 PRG:7A25 29 FB + sta PPUCTRL ; CPU:$FA27 PRG:7A27 8D 00 20 + ldy #$24 ; CPU:$FA2A PRG:7A2A A0 24 + lda GameMode ; CPU:$FA2C PRG:7A2C A5 8C + cmp #$02 ; CPU:$FA2E PRG:7A2E C9 02 + bcs NmiPaletteUpdate_Loop11 ; CPU:$FA30 PRG:7A30 B0 37 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_OnNonzero5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_OnNonzero5: + dex ; CPU:$FA32 PRG:7A32 CA + bne NmiPaletteUpdate_Loop9 ; CPU:$FA33 PRG:7A33 D0 17 + ldx Zp00 ; CPU:$FA35 PRG:7A35 A6 00 + inc Zp00 ; CPU:$FA37 PRG:7A37 E6 00 + lda #$20 ; CPU:$FA39 PRG:7A39 A9 20 + sta PPUADDR ; CPU:$FA3B PRG:7A3B 8D 06 20 + lda $FA95,x ; CPU:$FA3E PRG:7A3E BD 95 FA + sta PPUADDR ; CPU:$FA41 PRG:7A41 8D 06 20 + txa ; CPU:$FA44 PRG:7A44 8A + ldx #$04 ; CPU:$FA45 PRG:7A45 A2 04 + and #$02 ; CPU:$FA47 PRG:7A47 29 02 + bne NmiPaletteUpdate_Loop9 ; CPU:$FA49 PRG:7A49 D0 01 + inx ; CPU:$FA4B PRG:7A4B E8 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop9: + lda $07C9,y ; CPU:$FA4C PRG:7A4C B9 C9 07 + sta PPUDATA ; CPU:$FA4F PRG:7A4F 8D 07 20 + dey ; CPU:$FA52 PRG:7A52 88 + bne NmiPaletteUpdate_OnNonzero5; CPU:$FA53 PRG:7A53 D0 DD +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop10: + lda PPUSTATUS ; CPU:$FA55 PRG:7A55 AD 02 20 + rts ; CPU:$FA58 PRG:7A58 60 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_OnNonzero6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_OnNonzero6: + dey ; CPU:$FA59 PRG:7A59 88 + dey ; CPU:$FA5A PRG:7A5A 88 + dey ; CPU:$FA5B PRG:7A5B 88 + dey ; CPU:$FA5C PRG:7A5C 88 + beq NmiPaletteUpdate_Loop13 ; CPU:$FA5D PRG:7A5D F0 32 + txa ; CPU:$FA5F PRG:7A5F 8A + ldx #$01 ; CPU:$FA60 PRG:7A60 A2 01 + and #$02 ; CPU:$FA62 PRG:7A62 29 02 + beq NmiPaletteUpdate_Loop11 ; CPU:$FA64 PRG:7A64 F0 03 + dey ; CPU:$FA66 PRG:7A66 88 + beq NmiPaletteUpdate_Loop13 ; CPU:$FA67 PRG:7A67 F0 28 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop11: + dex ; CPU:$FA69 PRG:7A69 CA + bne NmiPaletteUpdate_Loop12 ; CPU:$FA6A PRG:7A6A D0 1C + ldx Zp00 ; CPU:$FA6C PRG:7A6C A6 00 + inc Zp00 ; CPU:$FA6E PRG:7A6E E6 00 + lda #$20 ; CPU:$FA70 PRG:7A70 A9 20 + sta PPUADDR ; CPU:$FA72 PRG:7A72 8D 06 20 + lda $FA95,x ; CPU:$FA75 PRG:7A75 BD 95 FA + sta PPUADDR ; CPU:$FA78 PRG:7A78 8D 06 20 + txa ; CPU:$FA7B PRG:7A7B 8A + and #$01 ; CPU:$FA7C PRG:7A7C 29 01 + bne NmiPaletteUpdate_OnNonzero6; CPU:$FA7E PRG:7A7E D0 D9 + txa ; CPU:$FA80 PRG:7A80 8A + ldx #$04 ; CPU:$FA81 PRG:7A81 A2 04 + and #$02 ; CPU:$FA83 PRG:7A83 29 02 + bne NmiPaletteUpdate_Loop12 ; CPU:$FA85 PRG:7A85 D0 01 + inx ; CPU:$FA87 PRG:7A87 E8 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop12: + lda $07C9,y ; CPU:$FA88 PRG:7A88 B9 C9 07 + sta PPUDATA ; CPU:$FA8B PRG:7A8B 8D 07 20 + dey ; CPU:$FA8E PRG:7A8E 88 + bne NmiPaletteUpdate_Loop11 ; CPU:$FA8F PRG:7A8F D0 D8 +; ----------------------------------------------------------------------------- +; Routine: NmiPaletteUpdate_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiPaletteUpdate_Loop13: + lda PPUSTATUS ; CPU:$FA91 PRG:7A91 AD 02 20 + rts ; CPU:$FA94 PRG:7A94 60 +; ---- data $FA95-$FA9C (8 bytes) ---- +; referenced by `lda $FA95,x` at $FA3E (operand $FA95 falls inside this region) +; referenced by `lda $FA95,x` at $FA75 (operand $FA95 falls inside this region) + .byte $89, $91, $82, $98, $A9, $B1, $A2, $B8 ; CPU:$FA95 PRG:7A95 89 91 82 98 A9 B1 A2 B8 +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad: + ldx $038E ; CPU:$FA9D PRG:7A9D AE 8E 03 + sta $0437,x ; CPU:$FAA0 PRG:7AA0 9D 37 04 + inx ; CPU:$FAA3 PRG:7AA3 E8 + tya ; CPU:$FAA4 PRG:7AA4 98 + sta $0437,x ; CPU:$FAA5 PRG:7AA5 9D 37 04 + inx ; CPU:$FAA8 PRG:7AA8 E8 + cpx #$FA ; CPU:$FAA9 PRG:7AA9 E0 FA + bne PaletteLoad_Loop ; CPU:$FAAB PRG:7AAB D0 02 + dex ; CPU:$FAAD PRG:7AAD CA + dex ; CPU:$FAAE PRG:7AAE CA +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop: + stx $038E ; CPU:$FAAF PRG:7AAF 8E 8E 03 + lda #$00 ; CPU:$FAB2 PRG:7AB2 A9 00 + sta $0437,x ; CPU:$FAB4 PRG:7AB4 9D 37 04 + sta $0438,x ; CPU:$FAB7 PRG:7AB7 9D 38 04 + rts ; CPU:$FABA PRG:7ABA 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_FABB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_FABB: + ldy #$00 ; CPU:$FABB PRG:7ABB A0 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_FABD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_FABD: + lda PPUSTATUS ; CPU:$FABD PRG:7ABD AD 02 20 + lda (Zp00),y ; CPU:$FAC0 PRG:7AC0 B1 00 + iny ; CPU:$FAC2 PRG:7AC2 C8 + tax ; CPU:$FAC3 PRG:7AC3 AA + bpl PaletteLoad_Loop3 ; CPU:$FAC4 PRG:7AC4 10 22 + cmp #$FF ; CPU:$FAC6 PRG:7AC6 C9 FF + bne PaletteLoad_Loop2 ; CPU:$FAC8 PRG:7AC8 D0 01 + rts ; CPU:$FACA PRG:7ACA 60 +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop2: + lda Zp01 ; CPU:$FACB PRG:7ACB A5 01 + pha ; CPU:$FACD PRG:7ACD 48 + lda Zp00 ; CPU:$FACE PRG:7ACE A5 00 + pha ; CPU:$FAD0 PRG:7AD0 48 + lda (Zp00),y ; CPU:$FAD1 PRG:7AD1 B1 00 + sta Zp00 ; CPU:$FAD3 PRG:7AD3 85 00 + stx Zp01 ; CPU:$FAD5 PRG:7AD5 86 01 + iny ; CPU:$FAD7 PRG:7AD7 C8 + tya ; CPU:$FAD8 PRG:7AD8 98 + pha ; CPU:$FAD9 PRG:7AD9 48 + jsr Sub_FABB ; CPU:$FADA PRG:7ADA 20 BB FA + pla ; CPU:$FADD PRG:7ADD 68 + tay ; CPU:$FADE PRG:7ADE A8 + pla ; CPU:$FADF PRG:7ADF 68 + sta Zp00 ; CPU:$FAE0 PRG:7AE0 85 00 + pla ; CPU:$FAE2 PRG:7AE2 68 + sta Zp01 ; CPU:$FAE3 PRG:7AE3 85 01 + jmp Sub_FABD ; CPU:$FAE5 PRG:7AE5 4C BD FA +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop3: + and #$3F ; CPU:$FAE8 PRG:7AE8 29 3F + sta Zp03 ; CPU:$FAEA PRG:7AEA 85 03 + lda (Zp00),y ; CPU:$FAEC PRG:7AEC B1 00 + sta Zp02 ; CPU:$FAEE PRG:7AEE 85 02 + iny ; CPU:$FAF0 PRG:7AF0 C8 + cpx #$40 ; CPU:$FAF1 PRG:7AF1 E0 40 + bcs PaletteLoad_Loop4 ; CPU:$FAF3 PRG:7AF3 B0 06 + jsr Sub_FB1E ; CPU:$FAF5 PRG:7AF5 20 1E FB + jmp Sub_FABD ; CPU:$FAF8 PRG:7AF8 4C BD FA +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop4: + lda Zp01 ; CPU:$FAFB PRG:7AFB A5 01 + pha ; CPU:$FAFD PRG:7AFD 48 + lda Zp00 ; CPU:$FAFE PRG:7AFE A5 00 + pha ; CPU:$FB00 PRG:7B00 48 + lda (Zp00),y ; CPU:$FB01 PRG:7B01 B1 00 + tax ; CPU:$FB03 PRG:7B03 AA + iny ; CPU:$FB04 PRG:7B04 C8 + lda (Zp00),y ; CPU:$FB05 PRG:7B05 B1 00 + sta Zp01 ; CPU:$FB07 PRG:7B07 85 01 + stx Zp00 ; CPU:$FB09 PRG:7B09 86 00 + iny ; CPU:$FB0B PRG:7B0B C8 + tya ; CPU:$FB0C PRG:7B0C 98 + pha ; CPU:$FB0D PRG:7B0D 48 + ldy #$00 ; CPU:$FB0E PRG:7B0E A0 00 + jsr Sub_FB1E ; CPU:$FB10 PRG:7B10 20 1E FB + pla ; CPU:$FB13 PRG:7B13 68 + tay ; CPU:$FB14 PRG:7B14 A8 + pla ; CPU:$FB15 PRG:7B15 68 + sta Zp00 ; CPU:$FB16 PRG:7B16 85 00 + pla ; CPU:$FB18 PRG:7B18 68 + sta Zp01 ; CPU:$FB19 PRG:7B19 85 01 + jmp Sub_FABD ; CPU:$FB1B PRG:7B1B 4C BD FA +; ----------------------------------------------------------------------------- +; Routine: Sub_FB1E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_FB1E: + lda (Zp00),y ; CPU:$FB1E PRG:7B1E B1 00 + tax ; CPU:$FB20 PRG:7B20 AA + and #$1F ; CPU:$FB21 PRG:7B21 29 1F + clc ; CPU:$FB23 PRG:7B23 18 + adc #$01 ; CPU:$FB24 PRG:7B24 69 01 + sta Zp04 ; CPU:$FB26 PRG:7B26 85 04 + txa ; CPU:$FB28 PRG:7B28 8A + asl a ; CPU:$FB29 PRG:7B29 0A + pha ; CPU:$FB2A PRG:7B2A 48 + lda PpuCtrlMirror ; CPU:$FB2B PRG:7B2B A5 18 + ora #$04 ; CPU:$FB2D PRG:7B2D 09 04 + ldx #$01 ; CPU:$FB2F PRG:7B2F A2 01 + bcs PaletteLoad_Loop5 ; CPU:$FB31 PRG:7B31 B0 04 + and #$FB ; CPU:$FB33 PRG:7B33 29 FB + ldx #$20 ; CPU:$FB35 PRG:7B35 A2 20 +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop5: + sta PPUCTRL ; CPU:$FB37 PRG:7B37 8D 00 20 + stx Zp06 ; CPU:$FB3A PRG:7B3A 86 06 + pla ; CPU:$FB3C PRG:7B3C 68 + asl a ; CPU:$FB3D PRG:7B3D 0A + sta Zp07 ; CPU:$FB3E PRG:7B3E 85 07 + lda #$00 ; CPU:$FB40 PRG:7B40 A9 00 + bcc PaletteLoad_Loop6 ; CPU:$FB42 PRG:7B42 90 0E + iny ; CPU:$FB44 PRG:7B44 C8 + lda (Zp00),y ; CPU:$FB45 PRG:7B45 B1 00 + bpl PaletteLoad_Loop6 ; CPU:$FB47 PRG:7B47 10 09 + and #$7F ; CPU:$FB49 PRG:7B49 29 7F + tax ; CPU:$FB4B PRG:7B4B AA + iny ; CPU:$FB4C PRG:7B4C C8 + lda (Zp00),y ; CPU:$FB4D PRG:7B4D B1 00 + sta Zp06 ; CPU:$FB4F PRG:7B4F 85 06 + txa ; CPU:$FB51 PRG:7B51 8A +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop6: + clc ; CPU:$FB52 PRG:7B52 18 + adc #$01 ; CPU:$FB53 PRG:7B53 69 01 + sta Zp05 ; CPU:$FB55 PRG:7B55 85 05 + iny ; CPU:$FB57 PRG:7B57 C8 +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_OnNonzero: + lda PPUSTATUS ; CPU:$FB58 PRG:7B58 AD 02 20 + lda Zp03 ; CPU:$FB5B PRG:7B5B A5 03 + sta PPUADDR ; CPU:$FB5D PRG:7B5D 8D 06 20 + lda Zp02 ; CPU:$FB60 PRG:7B60 A5 02 + sta PPUADDR ; CPU:$FB62 PRG:7B62 8D 06 20 + lda Zp07 ; CPU:$FB65 PRG:7B65 A5 07 + asl a ; CPU:$FB67 PRG:7B67 0A + ldx Zp04 ; CPU:$FB68 PRG:7B68 A6 04 +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_OnNonzero2: + lda (Zp00),y ; CPU:$FB6A PRG:7B6A B1 00 + sta PPUDATA ; CPU:$FB6C PRG:7B6C 8D 07 20 + bcs PaletteLoad_Loop7 ; CPU:$FB6F PRG:7B6F B0 01 + iny ; CPU:$FB71 PRG:7B71 C8 +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop7: + dex ; CPU:$FB72 PRG:7B72 CA + bne PaletteLoad_OnNonzero2 ; CPU:$FB73 PRG:7B73 D0 F5 + tya ; CPU:$FB75 PRG:7B75 98 + clc ; CPU:$FB76 PRG:7B76 18 + adc Zp00 ; CPU:$FB77 PRG:7B77 65 00 + sta Zp00 ; CPU:$FB79 PRG:7B79 85 00 + lda #$00 ; CPU:$FB7B PRG:7B7B A9 00 + tay ; CPU:$FB7D PRG:7B7D A8 + adc Zp01 ; CPU:$FB7E PRG:7B7E 65 01 + sta Zp01 ; CPU:$FB80 PRG:7B80 85 01 + lda Zp06 ; CPU:$FB82 PRG:7B82 A5 06 + adc Zp02 ; CPU:$FB84 PRG:7B84 65 02 + sta Zp02 ; CPU:$FB86 PRG:7B86 85 02 + tya ; CPU:$FB88 PRG:7B88 98 + adc Zp03 ; CPU:$FB89 PRG:7B89 65 03 + sta Zp03 ; CPU:$FB8B PRG:7B8B 85 03 + dec Zp05 ; CPU:$FB8D PRG:7B8D C6 05 + bne PaletteLoad_OnNonzero ; CPU:$FB8F PRG:7B8F D0 C7 + lda Zp07 ; CPU:$FB91 PRG:7B91 A5 07 + bpl PaletteLoad_Loop8 ; CPU:$FB93 PRG:7B93 10 01 + iny ; CPU:$FB95 PRG:7B95 C8 +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop8: + rts ; CPU:$FB96 PRG:7B96 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_FB97 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_FB97: + sta Zp10 ; CPU:$FB97 PRG:7B97 85 10 + txa ; CPU:$FB99 PRG:7B99 8A + pha ; CPU:$FB9A PRG:7B9A 48 + tya ; CPU:$FB9B PRG:7B9B 98 + pha ; CPU:$FB9C PRG:7B9C 48 + ldy #$00 ; CPU:$FB9D PRG:7B9D A0 00 + sty Zp11 ; CPU:$FB9F PRG:7B9F 84 11 + lda Zp10 ; CPU:$FBA1 PRG:7BA1 A5 10 + jsr Sub_FBAB ; CPU:$FBA3 PRG:7BA3 20 AB FB + pla ; CPU:$FBA6 PRG:7BA6 68 + tay ; CPU:$FBA7 PRG:7BA7 A8 + pla ; CPU:$FBA8 PRG:7BA8 68 + tax ; CPU:$FBA9 PRG:7BA9 AA + rts ; CPU:$FBAA PRG:7BAA 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_FBAB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_FBAB: + asl a ; CPU:$FBAB PRG:7BAB 0A + asl a ; CPU:$FBAC PRG:7BAC 0A + tax ; CPU:$FBAD PRG:7BAD AA + lda (Zp14),y ; CPU:$FBAE PRG:7BAE B1 14 + bit Zp11 ; CPU:$FBB0 PRG:7BB0 24 11 + bpl PaletteLoad_Loop9 ; CPU:$FBB2 PRG:7BB2 10 05 + eor #$FF ; CPU:$FBB4 PRG:7BB4 49 FF + sec ; CPU:$FBB6 PRG:7BB6 38 + adc #$F0 ; CPU:$FBB7 PRG:7BB7 69 F0 +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop9: + clc ; CPU:$FBB9 PRG:7BB9 18 + adc Zp12 ; CPU:$FBBA PRG:7BBA 65 12 + sta $0200,x ; CPU:$FBBC PRG:7BBC 9D 00 02 + iny ; CPU:$FBBF PRG:7BBF C8 + lda (Zp14),y ; CPU:$FBC0 PRG:7BC0 B1 14 + bit Zp11 ; CPU:$FBC2 PRG:7BC2 24 11 + bvc PaletteLoad_Loop10 ; CPU:$FBC4 PRG:7BC4 50 05 + eor #$FF ; CPU:$FBC6 PRG:7BC6 49 FF + sec ; CPU:$FBC8 PRG:7BC8 38 + adc #$F8 ; CPU:$FBC9 PRG:7BC9 69 F8 +; ----------------------------------------------------------------------------- +; Routine: PaletteLoad_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PaletteLoad_Loop10: + clc ; CPU:$FBCB PRG:7BCB 18 + adc Zp13 ; CPU:$FBCC PRG:7BCC 65 13 + sta $0203,x ; CPU:$FBCE PRG:7BCE 9D 03 02 + iny ; CPU:$FBD1 PRG:7BD1 C8 + lda (Zp14),y ; CPU:$FBD2 PRG:7BD2 B1 14 + sta $0201,x ; CPU:$FBD4 PRG:7BD4 9D 01 02 + iny ; CPU:$FBD7 PRG:7BD7 C8 + lda Zp11 ; CPU:$FBD8 PRG:7BD8 A5 11 + and #$C0 ; CPU:$FBDA PRG:7BDA 29 C0 + eor (Zp14),y ; CPU:$FBDC PRG:7BDC 51 14 + sta $0202,x ; CPU:$FBDE PRG:7BDE 9D 02 02 + iny ; CPU:$FBE1 PRG:7BE1 C8 + rts ; CPU:$FBE2 PRG:7BE2 60 +; ----------------------------------------------------------------------------- +; Routine: OamCopy +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OamCopy: + sta Zp17 ; CPU:$FBE3 PRG:7BE3 85 17 + tya ; CPU:$FBE5 PRG:7BE5 98 + pha ; CPU:$FBE6 PRG:7BE6 48 + lda $0404,y ; CPU:$FBE7 PRG:7BE7 B9 04 04 + sta Zp12 ; CPU:$FBEA PRG:7BEA 85 12 + lda $0405,y ; CPU:$FBEC PRG:7BEC B9 05 04 + sta Zp13 ; CPU:$FBEF PRG:7BEF 85 13 + lda $0406,y ; CPU:$FBF1 PRG:7BF1 B9 06 04 + sta Zp10 ; CPU:$FBF4 PRG:7BF4 85 10 + lda Zp17 ; CPU:$FBF6 PRG:7BF6 A5 17 + asl a ; CPU:$FBF8 PRG:7BF8 0A + tay ; CPU:$FBF9 PRG:7BF9 A8 + lda (Zp39),y ; CPU:$FBFA PRG:7BFA B1 39 + sta Zp14 ; CPU:$FBFC PRG:7BFC 85 14 + iny ; CPU:$FBFE PRG:7BFE C8 + lda (Zp39),y ; CPU:$FBFF PRG:7BFF B1 39 + sta Zp15 ; CPU:$FC01 PRG:7C01 85 15 + ldy #$00 ; CPU:$FC03 PRG:7C03 A0 00 + lda (Zp14),y ; CPU:$FC05 PRG:7C05 B1 14 + sta Zp17 ; CPU:$FC07 PRG:7C07 85 17 + iny ; CPU:$FC09 PRG:7C09 C8 + lda Zp17 ; CPU:$FC0A PRG:7C0A A5 17 + pha ; CPU:$FC0C PRG:7C0C 48 +; ----------------------------------------------------------------------------- +; Routine: OamCopy_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OamCopy_OnNonzero: + lda Zp10 ; CPU:$FC0D PRG:7C0D A5 10 + jsr Sub_FBAB ; CPU:$FC0F PRG:7C0F 20 AB FB + inc Zp10 ; CPU:$FC12 PRG:7C12 E6 10 + dec Zp17 ; CPU:$FC14 PRG:7C14 C6 17 + bne OamCopy_OnNonzero ; CPU:$FC16 PRG:7C16 D0 F5 + pla ; CPU:$FC18 PRG:7C18 68 + sta Zp17 ; CPU:$FC19 PRG:7C19 85 17 + pla ; CPU:$FC1B PRG:7C1B 68 + tay ; CPU:$FC1C PRG:7C1C A8 + lda Zp11 ; CPU:$FC1D PRG:7C1D A5 11 + and #$3F ; CPU:$FC1F PRG:7C1F 29 3F + sec ; CPU:$FC21 PRG:7C21 38 + sbc Zp17 ; CPU:$FC22 PRG:7C22 E5 17 + sta Zp17 ; CPU:$FC24 PRG:7C24 85 17 + beq OamCopy_Loop ; CPU:$FC26 PRG:7C26 F0 02 + bcs SpriteTile_OnNonzero ; CPU:$FC28 PRG:7C28 B0 03 +; ----------------------------------------------------------------------------- +; Routine: OamCopy_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +OamCopy_Loop: + rts ; CPU:$FC2A PRG:7C2A 60 +; ----------------------------------------------------------------------------- +; Routine: SpriteTile +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteTile: + sta Zp10 ; CPU:$FC2B PRG:7C2B 85 10 +; ----------------------------------------------------------------------------- +; Routine: SpriteTile_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteTile_OnNonzero: + lda Zp10 ; CPU:$FC2D PRG:7C2D A5 10 + jsr Sub_FC39 ; CPU:$FC2F PRG:7C2F 20 39 FC + inc Zp10 ; CPU:$FC32 PRG:7C32 E6 10 + dec Zp17 ; CPU:$FC34 PRG:7C34 C6 17 + bne SpriteTile_OnNonzero ; CPU:$FC36 PRG:7C36 D0 F5 + rts ; CPU:$FC38 PRG:7C38 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_FC39 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_FC39: + sta Zp10 ; CPU:$FC39 PRG:7C39 85 10 + txa ; CPU:$FC3B PRG:7C3B 8A + pha ; CPU:$FC3C PRG:7C3C 48 + lda Zp10 ; CPU:$FC3D PRG:7C3D A5 10 + jsr Sub_FC45 ; CPU:$FC3F PRG:7C3F 20 45 FC + pla ; CPU:$FC42 PRG:7C42 68 + tax ; CPU:$FC43 PRG:7C43 AA + rts ; CPU:$FC44 PRG:7C44 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_FC45 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_FC45: + asl a ; CPU:$FC45 PRG:7C45 0A + asl a ; CPU:$FC46 PRG:7C46 0A + tax ; CPU:$FC47 PRG:7C47 AA + lda #$F0 ; CPU:$FC48 PRG:7C48 A9 F0 + sta $0200,x ; CPU:$FC4A PRG:7C4A 9D 00 02 + rts ; CPU:$FC4D PRG:7C4D 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_FC4E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_FC4E: + lda #$40 ; CPU:$FC4E PRG:7C4E A9 40 + sta Zp10 ; CPU:$FC50 PRG:7C50 85 10 +; ----------------------------------------------------------------------------- +; Routine: SpriteTile_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SpriteTile_OnNonzero2: + dec Zp10 ; CPU:$FC52 PRG:7C52 C6 10 + lda Zp10 ; CPU:$FC54 PRG:7C54 A5 10 + jsr Sub_FC39 ; CPU:$FC56 PRG:7C56 20 39 FC + lda Zp10 ; CPU:$FC59 PRG:7C59 A5 10 + bne SpriteTile_OnNonzero2 ; CPU:$FC5B PRG:7C5B D0 F5 + lda #$01 ; CPU:$FC5D PRG:7C5D A9 01 + jsr DelayFrames ; CPU:$FC5F PRG:7C5F 20 F5 F7 + rts ; CPU:$FC62 PRG:7C62 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_FC63 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_FC63: + lda #$3F ; CPU:$FC63 PRG:7C63 A9 3F + sta $0200 ; CPU:$FC65 PRG:7C65 8D 00 02 + lda #$00 ; CPU:$FC68 PRG:7C68 A9 00 + sta $0203 ; CPU:$FC6A PRG:7C6A 8D 03 02 + lda #$FC ; CPU:$FC6D PRG:7C6D A9 FC + sta $0201 ; CPU:$FC6F PRG:7C6F 8D 01 02 + lda #$02 ; CPU:$FC72 PRG:7C72 A9 02 + sta $0202 ; CPU:$FC74 PRG:7C74 8D 02 02 + rts ; CPU:$FC77 PRG:7C77 60 +; ---- data $FC78-$FFFF (904 bytes) ---- + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC78 PRG:7C78 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC88 PRG:7C88 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC98 PRG:7C98 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCA8 PRG:7CA8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCB8 PRG:7CB8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCC8 PRG:7CC8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCD8 PRG:7CD8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCE8 PRG:7CE8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCF8 PRG:7CF8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD08 PRG:7D08 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD18 PRG:7D18 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD28 PRG:7D28 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD38 PRG:7D38 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD48 PRG:7D48 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD58 PRG:7D58 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD68 PRG:7D68 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD78 PRG:7D78 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD88 PRG:7D88 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD98 PRG:7D98 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDA8 PRG:7DA8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDB8 PRG:7DB8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDC8 PRG:7DC8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDD8 PRG:7DD8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDE8 PRG:7DE8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDF8 PRG:7DF8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE08 PRG:7E08 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE18 PRG:7E18 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE28 PRG:7E28 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE38 PRG:7E38 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE48 PRG:7E48 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE58 PRG:7E58 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE68 PRG:7E68 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE78 PRG:7E78 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE88 PRG:7E88 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE98 PRG:7E98 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEA8 PRG:7EA8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEB8 PRG:7EB8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEC8 PRG:7EC8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FED8 PRG:7ED8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEE8 PRG:7EE8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEF8 PRG:7EF8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF08 PRG:7F08 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF18 PRG:7F18 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF28 PRG:7F28 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF38 PRG:7F38 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF48 PRG:7F48 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF58 PRG:7F58 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF68 PRG:7F68 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF78 PRG:7F78 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF88 PRG:7F88 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF98 PRG:7F98 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFA8 PRG:7FA8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFB8 PRG:7FB8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFC8 PRG:7FC8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFD8 PRG:7FD8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFE8 PRG:7FE8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $03, $F8, $FD, $F6, $C0, $C0 ; CPU:$FFF8 PRG:7FF8 FF FF 03 F8 FD F6 C0 C0 diff --git a/_wip/CNROM/World Class Track Meet (U)/rom.nes b/CNROM/World Class Track Meet (U)/rom.nes similarity index 100% rename from _wip/CNROM/World Class Track Meet (U)/rom.nes rename to CNROM/World Class Track Meet (U)/rom.nes diff --git a/CNROM/World Class Track Meet (U)/routinemap.tsv b/CNROM/World Class Track Meet (U)/routinemap.tsv new file mode 100644 index 0000000..617b47a --- /dev/null +++ b/CNROM/World Class Track Meet (U)/routinemap.tsv @@ -0,0 +1,941 @@ + +F6FD Reset +F803 NmiHandler + +F719 ClearRam +F743 ClearOam +F74F MainLoop +F757 MainLoop_NextSlot +F77A MainLoop_RunTask +F780 TaskDispatch +F78D FrameEnd +F7DE EnableNmi +F7A0 TaskSlotStart +F7CA TaskSlotClear +F7EA TaskFrameWait +F8BC InitDisplay +F8D7 WaitVblankStart +F8DC WaitVblankEnd +F8E6 FrameDelay +F8F5 NmiPaletteUpdate +D0F1 PollControllers + +D32B EventTaskInit +8004 EventTaskRun +924C EventTaskB +A8C8 GameModeTask +E0D5 OlympicsScheduler + +F7F5 DelayFrames +BE63 AudioChannelLoop +A792 ObjectUpdate +A56F ObjectDraw +FBE3 OamCopy +985E SpritePosition +A2DD ObjectState +F7CA TaskSlotClear +A12E SpriteDraw +F7A0 TaskSlotStart +BEBF ClearObjectSlot +83EF SpriteSetup +FC2B SpriteTile +FA9D PaletteLoad +C2C2 ObjectCollision +BF89 SoundNote +A870 EventState +8000 ShortDelay + +EF7C EventInit +BE75 SoundChannelStep +BEDD SoundChanInit + +# ---- indirect-dispatch entry points (reached via push-pointer tables, +# not via direct jsr/jmp/branch; exact per-routine role not statically +# classified, so the address-derived Sub_ form is the honest residue) ---- +8A08 Sub_8A08 +8D18 Sub_8D18 +A02B Sub_A02B +BFE8 Sub_BFE8 +BFF0 Sub_BFF0 +BFF8 Sub_BFF8 +C00A Sub_C00A +C015 Sub_C015 +C029 Sub_C029 +C037 Sub_C037 +C04F Sub_C04F +C057 Sub_C057 +C07B Sub_C07B +C083 Sub_C083 +C097 Sub_C097 +C0AD Sub_C0AD +C0D1 Sub_C0D1 +C0F8 Sub_C0F8 +C129 Sub_C129 +C134 Sub_C134 +E0EF Sub_E0EF +E16D Sub_E16D +E20D Sub_E20D +E2DE Sub_E2DE +E42A Sub_E42A +E52C Sub_E52C + + +# ---- derived internal branch-target names ---- +8000 ShortDelay +8004 EventTaskRun +801B EventTaskRun_Loop +8050 EventTaskRun_Loop2 +8058 EventTaskRun_OnNonzero +8059 EventTaskRun_Loop3 +8068 EventTaskRun_Loop4 +8075 EventTaskRun_Loop5 +8078 EventTaskRun_Loop6 +80A7 EventTaskRun_Loop7 +80AF EventTaskRun_Loop8 +80B4 EventTaskRun_Loop9 +80C4 EventTaskRun_Loop10 +80FE EventTaskRun_Loop11 +8118 Sub_8118 +815A EventTaskRun_Loop12 +8170 EventTaskRun_Loop13 +8183 EventTaskRun_Loop14 +8184 EventTaskRun_Loop15 +8189 EventTaskRun_Loop16 +81D3 Sub_81D3 +81EE EventTaskRun_Loop17 +8219 EventTaskRun_Loop18 +8221 EventTaskRun_Loop19 +8249 EventTaskRun_Loop20 +8265 EventTaskRun_Loop21 +826C EventTaskRun_Loop22 +827C EventTaskRun_Loop23 +827D EventTaskRun_Loop24 +82B9 EventTaskRun_Loop25 +82BA Sub_82BA +8357 EventTaskRun_Loop26 +8358 Sub_8358 +8377 EventTaskRun_OnNonzero2 +83B2 EventTaskRun_Loop27 +83C3 EventTaskRun_Loop28 +83C6 Sub_83C6 +83EF SpriteSetup +8409 Sub_8409 +8416 SpriteSetup_Loop +8428 SpriteSetup_Loop2 +842F SpriteSetup_Loop3 +843A SpriteSetup_Loop4 +8443 SpriteSetup_Loop5 +8450 SpriteSetup_Loop6 +8466 SpriteSetup_Loop7 +8473 SpriteSetup_Loop8 +847B SpriteSetup_Loop9 +8485 SpriteSetup_Loop10 +848B SpriteSetup_Loop11 +848E SpriteSetup_Loop12 +849B SpriteSetup_Loop13 +84AC SpriteSetup_Loop14 +84B7 SpriteSetup_Loop15 +84C2 SpriteSetup_Loop16 +84C5 Sub_84C5 +84D1 SpriteSetup_Loop17 +84DB SpriteSetup_Loop18 +84DE SpriteSetup_Loop19 +8512 SpriteSetup_Loop20 +8528 SpriteSetup_Loop21 +852B SpriteSetup_Loop22 +8539 SpriteSetup_Loop23 +8547 SpriteSetup_Loop24 +8557 SpriteSetup_Loop25 +8575 SpriteSetup_Loop26 +857E SpriteSetup_Loop27 +8581 Sub_8581 +858B SpriteSetup_Loop28 +85B3 Sub_85B3 +85C1 Sub_85C1 +85CC Sub_85CC +85D3 SpriteSetup_Loop29 +85E8 SpriteSetup_Loop30 +8600 SpriteSetup_Loop31 +8612 SpriteSetup_Loop32 +8613 SpriteSetup_Loop33 +8620 SpriteSetup_Loop34 +8626 SpriteSetup_OnCarryClear +8627 Sub_8627 +8636 SpriteSetup_Loop35 +864E SpriteSetup_Loop36 +865E SpriteSetup_Loop37 +865F SpriteSetup_Loop38 +8660 Sub_8660 +866E SpriteSetup_Loop39 +8677 Sub_8677 +868C SpriteSetup_Loop40 +868F SpriteSetup_Loop41 +86B0 SpriteSetup_Loop42 +86B6 SpriteSetup_Loop43 +86BA SpriteSetup_Loop44 +86EC SpriteSetup_Loop45 +86F1 Sub_86F1 +870B SpriteSetup_Loop46 +874E Sub_874E +8758 SpriteSetup_Loop47 +875B Sub_875B +879B Sub_879B +87A7 SpriteSetup_Loop48 +87AA Sub_87AA +87EA Sub_87EA +87F6 Sub_87F6 +881F SpriteSetup_Loop49 +8868 Sub_8868 +88A8 Sub_88A8 +88F9 Sub_88F9 +8908 Sub_8908 +8910 Sub_8910 +8ABC Sub_8ABC +8AC7 Sub_8AC7 +8AD5 SpriteSetup_Loop50 +8ADE Sub_8ADE +8AEA SpriteSetup_Loop51 +8D42 Sub_8D42 +8D45 Sub_8D45 +8D93 SpriteSetup_Loop52 +9141 Sub_9141 +9150 SpriteSetup_Loop53 +91CF Sub_91CF +9216 SpriteSetup_Loop54 +924C EventTaskB +9275 EventTaskB_Loop +927D EventTaskB_OnNonzero +927E EventTaskB_Loop2 +928D EventTaskB_Loop3 +9294 EventTaskB_Loop4 +92E2 Sub_92E2 +92F8 EventTaskB_Loop5 +931E EventTaskB_Loop6 +931F EventTaskB_Loop7 +9346 EventTaskB_Loop8 +9347 EventTaskB_Loop9 +9364 EventTaskB_Loop10 +937B EventTaskB_Loop11 +937C EventTaskB_Loop12 +93A9 EventTaskB_Loop13 +93B5 EventTaskB_Loop14 +93BD Sub_93BD +9452 EventTaskB_Loop15 +9453 Sub_9453 +9477 EventTaskB_OnNonzero2 +94B2 EventTaskB_Loop16 +94BE Sub_94BE +94E3 Sub_94E3 +94FF Sub_94FF +950E EventTaskB_Loop17 +9515 EventTaskB_Loop18 +9520 EventTaskB_Loop19 +9529 EventTaskB_Loop20 +953B EventTaskB_Loop21 +9555 EventTaskB_Loop22 +9563 EventTaskB_Loop23 +9585 EventTaskB_Loop24 +959E EventTaskB_Loop25 +95B2 Sub_95B2 +95B9 EventTaskB_Loop26 +95BC EventTaskB_Loop27 +95CB EventTaskB_OnNonzero3 +95E1 EventTaskB_Loop28 +95EB EventTaskB_OnNonzero4 +9601 EventTaskB_Loop29 +9621 EventTaskB_Loop30 +9631 Sub_9631 +9649 EventTaskB_Loop31 +96CC Sub_96CC +971A Sub_971A +9721 EventTaskB_Loop32 +9757 EventTaskB_Loop33 +9771 EventTaskB_OnCarrySet +9772 EventTaskB_Loop34 +97A3 EventTaskB_Loop35 +97BD EventTaskB_Loop36 +97EA EventTaskB_Loop37 +97EE EventTaskB_Loop38 +9803 EventTaskB_Loop39 +9810 Sub_9810 +981D Sub_981D +985D EventTaskB_Loop40 +985E SpritePosition +9865 SpritePosition_Loop +986B SpritePosition_Loop2 +9889 SpritePosition_Loop3 +98DB Sub_98DB +98FE SpritePosition_Loop4 +990E SpritePosition_Loop5 +9910 Sub_9910 +9933 SpritePosition_Loop6 +993F SpritePosition_Loop7 +9941 Sub_9941 +9957 SpritePosition_Loop8 +9959 SpritePosition_OnNonzero +9964 Sub_9964 +99B7 SpritePosition_Loop9 +99C4 SpritePosition_Loop10 +99CC Sub_99CC +9A18 SpritePosition_Loop11 +9A41 Sub_9A41 +9A80 Sub_9A80 +9AC6 SpritePosition_Loop12 +9B23 Sub_9B23 +9B5A Sub_9B5A +9B6D SpritePosition_Loop13 +9B76 SpritePosition_OnNonzero2 +9B7D SpritePosition_Loop14 +9B8E SpritePosition_Loop15 +9B90 SpritePosition_OnNonzero3 +9BA5 SpritePosition_OnZero +9BDC SpritePosition_OnNonzero4 +9BF5 Sub_9BF5 +9C33 Sub_9C33 +9C46 SpritePosition_Loop16 +9C4F SpritePosition_OnNonzero5 +9C56 SpritePosition_Loop17 +9C6C SpritePosition_Loop18 +9C6E SpritePosition_OnNonzero6 +9C89 Sub_9C89 +9C91 SpritePosition_Loop19 +9C9B Sub_9C9B +9CB4 SpritePosition_Loop20 +9CB7 Sub_9CB7 +9CC1 SpritePosition_OnNonzero7 +9CCE SpritePosition_OnNonzero8 +9CDB SpritePosition_OnNonzero9 +9CE8 SpritePosition_OnNonzero10 +9CF5 SpritePosition_OnNonzero11 +9D02 SpritePosition_OnNonzero12 +9D0E Sub_9D0E +9D10 SpritePosition_OnNonzero13 +9D22 SpritePosition_OnNonzero14 +9D34 SpritePosition_OnNonzero15 +9D46 SpritePosition_OnNonzero16 +9D58 SpritePosition_OnNonzero17 +9D6A SpritePosition_OnNonzero18 +9D7B Sub_9D7B +9D84 SpritePosition_Loop21 +9D8F SpritePosition_Loop22 +9D9C SpritePosition_Loop23 +9DCE SpritePosition_Loop24 +9DFE SpritePosition_Loop25 +9E30 SpritePosition_Loop26 +9E65 Sub_9E65 +9E93 SpritePosition_Loop27 +9EBA SpritePosition_Loop28 +9EC9 SpritePosition_Loop29 +9ED0 SpritePosition_Loop30 +9F04 SpritePosition_Loop31 +A04B Sub_A04B +A059 SpritePosition_Loop32 +A062 SpritePosition_Loop33 +A079 SpritePosition_Loop34 +A089 Sub_A089 +A092 SpritePosition_Loop35 +A0AE SpritePosition_Loop36 +A0B1 SpritePosition_Loop37 +A0CB SpritePosition_Loop38 +A0CE SpritePosition_Loop39 +A0ED SpritePosition_Loop40 +A0F1 SpritePosition_Loop41 +A10C SpritePosition_OnNonzero19 +A114 Sub_A114 +A12E SpriteDraw +A147 SpriteDraw_Loop +A14B Sub_A14B +A169 Sub_A169 +A16E SpriteDraw_Loop2 +A182 SpriteDraw_OnNonzero +A1BF SpriteDraw_Loop3 +A1C8 SpriteDraw_OnNonzero2 +A1D6 Sub_A1D6 +A1DB SpriteDraw_Loop4 +A1F3 SpriteDraw_OnNonzero3 +A247 SpriteDraw_OnNonzero4 +A274 SpriteDraw_OnNonzero5 +A2A1 SpriteDraw_OnNonzero6 +A2DD ObjectState +A31A Sub_A31A +A32E ObjectState_Loop +A333 ObjectState_Loop2 +A356 ObjectState_Loop3 +A35B ObjectState_Loop4 +A37E Sub_A37E +A3B1 ObjectState_Loop5 +A3BB ObjectState_Loop6 +A3BC Sub_A3BC +A3EC ObjectState_Loop7 +A3F6 ObjectState_Loop8 +A3F7 Sub_A3F7 +A41E ObjectState_Loop9 +A42E ObjectState_Loop10 +A440 ObjectState_Loop11 +A448 Sub_A448 +A453 ObjectState_Loop12 +A45E ObjectState_Loop13 +A45F Sub_A45F +A46F ObjectState_Loop14 +A481 ObjectState_Loop15 +A48C Sub_A48C +A4C5 ObjectState_Loop16 +A4C6 ObjectState_Loop17 +A4E3 ObjectState_Loop18 +A4E4 Sub_A4E4 +A524 ObjectState_Loop19 +A527 ObjectState_Loop20 +A534 ObjectState_Loop21 +A539 ObjectState_Loop22 +A546 ObjectState_Loop23 +A56F ObjectDraw +A592 ObjectDraw_Loop +A59E ObjectDraw_Loop2 +A614 Sub_A614 +A630 ObjectDraw_Loop3 +A635 Sub_A635 +A643 ObjectDraw_Loop4 +A649 Sub_A649 +A66F ObjectDraw_Loop5 +A67E ObjectDraw_Loop6 +A68A Sub_A68A +A68B Sub_A68B +A6F0 Sub_A6F0 +A705 Sub_A705 +A70D ObjectDraw_Loop7 +A789 Sub_A789 +A792 ObjectUpdate +A79E ObjectUpdate_OnNonzero +A7AC Sub_A7AC +A7E9 ObjectUpdate_OnNonzero2 +A82B Sub_A82B +A83A ObjectUpdate_OnNonzero3 +A853 ObjectUpdate_Loop +A86F ObjectUpdate_Loop2 +A870 EventState +A8C8 GameModeTask +A905 GameModeTask_Loop +A908 GameModeTask_Loop2 +A918 GameModeTask_Loop3 +A91F GameModeTask_Loop4 +A92F GameModeTask_Loop5 +A936 GameModeTask_Loop6 +A937 Sub_A937 +A946 GameModeTask_Loop7 +A96F GameModeTask_Loop8 +A971 GameModeTask_Loop9 +A97F Sub_A97F +A98E GameModeTask_Loop10 +A9B7 GameModeTask_Loop11 +A9B9 GameModeTask_Loop12 +A9D0 Sub_A9D0 +A9E7 GameModeTask_Loop13 +AA03 GameModeTask_Loop14 +AA33 GameModeTask_Loop15 +AA35 GameModeTask_Loop16 +AA39 GameModeTask_Loop17 +AA5D GameModeTask_Loop18 +AA6B GameModeTask_Loop19 +AA75 GameModeTask_Loop20 +AA85 GameModeTask_Loop21 +AA90 GameModeTask_Loop22 +AA9A GameModeTask_Loop23 +AAA5 Sub_AAA5 +AABC GameModeTask_Loop24 +AAD8 GameModeTask_Loop25 +AB0A GameModeTask_Loop26 +AB0C GameModeTask_Loop27 +AB10 GameModeTask_Loop28 +AB34 GameModeTask_Loop29 +AB42 GameModeTask_Loop30 +AB4C GameModeTask_Loop31 +AB5C GameModeTask_Loop32 +AB67 GameModeTask_Loop33 +AB71 GameModeTask_Loop34 +AB7C Sub_AB7C +ABD1 GameModeTask_Loop35 +ABD6 GameModeTask_Loop36 +ABF0 Sub_ABF0 +AC47 GameModeTask_Loop37 +AC4C GameModeTask_Loop38 +AD0C Sub_AD0C +AD34 GameModeTask_Loop39 +AD44 GameModeTask_Loop40 +AD51 GameModeTask_Loop41 +AD52 Sub_AD52 +AD61 GameModeTask_Loop42 +AD86 Sub_AD86 +ADA3 GameModeTask_Loop43 +ADA7 GameModeTask_Loop44 +ADB1 Sub_ADB1 +ADC4 GameModeTask_Loop45 +AE14 Sub_AE14 +AE3D GameModeTask_Loop46 +AE4C GameModeTask_Loop47 +AE58 GameModeTask_Loop48 +AE61 GameModeTask_Loop49 +AE6A GameModeTask_Loop50 +AE73 GameModeTask_Loop51 +AE7C GameModeTask_Loop52 +AE85 GameModeTask_Loop53 +AE86 Sub_AE86 +AEC2 Sub_AEC2 +AEFE Sub_AEFE +AF3A Sub_AF3A +AF76 Sub_AF76 +AFB2 Sub_AFB2 +AFEE Sub_AFEE +BE63 AudioChannelLoop +BE66 AudioChannelLoop_OnNonzero +BE75 SoundChannelStep +BEBB SoundChannelStep_Loop +BEBF ClearObjectSlot +BEC9 ClearObjectSlot_OnNonnegative +BED0 ClearObjectSlot_OnNonnegative2 +BEDD SoundChanInit +BEE4 Sub_BEE4 +BEEB Sub_BEEB +BEF2 SoundChanInit_OnNonnegative +BF00 SoundChanInit_Loop +BF04 Sub_BF04 +BF22 SoundChanInit_Loop2 +BF25 SoundChanInit_Loop3 +BF3D SoundChanInit_Loop4 +BF40 SoundChanInit_Loop5 +BF5F SoundChanInit_Loop6 +BF6D SoundChanInit_Loop7 +BF70 SoundChanInit_Loop8 +BF77 SoundChanInit_Loop9 +BF84 SoundChanInit_OnZero +BF89 SoundNote +BFA2 SoundNote_Loop +BFB5 SoundNote_Loop2 +C000 SoundNote_Loop3 +C02F SoundNote_OnNonzero +C047 SoundNote_Loop4 +C0E5 SoundNote_Loop5 +C105 SoundNote_OnNonzero2 +C111 SoundNote_Loop6 +C126 SoundNote_Loop7 +C168 SoundNote_Loop8 +C169 SoundNote_Loop9 +C16C SoundNote_OnNonnegative +C174 SoundNote_Loop10 +C189 Sub_C189 +C1B8 SoundNote_Loop11 +C1BA SoundNote_Loop12 +C1C0 SoundNote_Loop13 +C1D0 SoundNote_Loop14 +C1F9 SoundNote_Loop15 +C216 SoundNote_Loop16 +C21B SoundNote_OnCarryClear +C23A SoundNote_Loop17 +C243 SoundNote_Loop18 +C24D SoundNote_Loop19 +C24F SoundNote_Loop20 +C267 Sub_C267 +C272 SoundNote_Loop21 +C289 Sub_C289 +C2BF Sub_C2BF +C2C2 ObjectCollision +C2CB ObjectCollision_Loop +C2CC Sub_C2CC +C2D3 Sub_C2D3 +C2FE ObjectCollision_Loop2 +C2FF Sub_C2FF +C30E Sub_C30E +C320 ObjectCollision_Loop3 +C33A Sub_C33A +C343 ObjectCollision_Loop4 +C373 ObjectCollision_Loop5 +C390 ObjectCollision_Loop6 +C3A5 ObjectCollision_Loop7 +C3A7 ObjectCollision_Loop8 +C3B2 ObjectCollision_Loop9 +C3BB ObjectCollision_Loop10 +C3C2 Sub_C3C2 +C3D4 Sub_C3D4 +C3DD ObjectCollision_Loop11 +C3FE ObjectCollision_Loop12 +C3FF Sub_C3FF +C418 ObjectCollision_Loop13 +C419 Sub_C419 +C41D ObjectCollision_OnNonzero +C42D ObjectCollision_Loop14 +CF36 Sub_CF36 +CF7D ObjectCollision_Loop15 +CF92 ObjectCollision_Loop16 +CF97 Sub_CF97 +CF99 ObjectCollision_OnNonzero2 +CFBA Sub_CFBA +CFC2 ObjectCollision_OnNonzero3 +CFF8 ObjectCollision_Loop17 +CFF9 Sub_CFF9 +D007 ObjectCollision_Loop18 +D017 ObjectCollision_Loop19 +D022 ObjectCollision_Loop20 +D02D ObjectCollision_Loop21 +D03D ObjectCollision_Loop22 +D048 ObjectCollision_Loop23 +D053 ObjectCollision_Loop24 +D054 Sub_D054 +D065 ObjectCollision_Loop25 +D077 Sub_D077 +D08E Sub_D08E +D098 ObjectCollision_OnNonzero4 +D0A5 ObjectCollision_Loop26 +D0AE ObjectCollision_Loop27 +D0AF Sub_D0AF +D0BD ObjectCollision_Loop28 +D0C7 ObjectCollision_Loop29 +D0D5 ObjectCollision_Loop30 +D0DF ObjectCollision_Loop31 +D0F0 ObjectCollision_Loop32 +D0F1 PollControllers +D103 PollControllers_Loop +D13B Sub_D13B +D151 PollControllers_Loop2 +D15A Sub_D15A +D17D PollControllers_Loop3 +D17E Sub_D17E +D19B PollControllers_Loop4 +D1AD PollControllers_Loop5 +D1AE Sub_D1AE +D1C2 PollControllers_Loop6 +D1DC PollControllers_Loop7 +D1DD Sub_D1DD +D1EC PollControllers_OnNonzero +D1FA PollControllers_Loop8 +D221 Sub_D221 +D22D PollControllers_Loop9 +D23F PollControllers_Loop10 +D240 Sub_D240 +D25D Sub_D25D +D269 PollControllers_Loop11 +D27C PollControllers_OnNonzero2 +D28A PollControllers_Loop12 +D299 PollControllers_Loop13 +D2B2 PollControllers_Loop14 +D2BE Sub_D2BE +D2D6 PollControllers_Loop15 +D2F8 PollControllers_Loop16 +D304 PollControllers_Loop17 +D32B EventTaskInit +D334 EventTaskInit_Loop +D370 EventTaskInit_Loop2 +D390 EventTaskInit_OnNonzero +D3D5 EventTaskInit_OnNonzero2 +D42C EventTaskInit_Loop3 +D43B Sub_D43B +D460 EventTaskInit_Loop4 +D468 EventTaskInit_Loop5 +D496 EventTaskInit_Loop6 +D4B9 EventTaskInit_Loop7 +D4BC EventTaskInit_Loop8 +D4C9 EventTaskInit_Loop9 +D4E3 EventTaskInit_Loop10 +D507 EventTaskInit_OnNonzero3 +D52F EventTaskInit_Loop11 +D563 EventTaskInit_Loop12 +D565 Sub_D565 +D686 Sub_D686 +D690 EventTaskInit_Loop13 +D6C2 EventTaskInit_Loop14 +D6D3 Sub_D6D3 +D6DD EventTaskInit_Loop15 +D6F3 EventTaskInit_Loop16 +D6F4 Sub_D6F4 +D721 EventTaskInit_Loop17 +D738 Sub_D738 +D759 EventTaskInit_Loop18 +D75A EventTaskInit_Loop19 +D770 Sub_D770 +D78C EventTaskInit_Loop20 +D790 EventTaskInit_OnNonzero4 +D7A5 EventTaskInit_OnNonzero5 +D7B0 EventTaskInit_Loop21 +D7B3 EventTaskInit_Loop22 +D7C0 EventTaskInit_OnNonzero6 +D7CF Sub_D7CF +D7DB EventTaskInit_OnNonzero7 +D7EA EventTaskInit_OnNonzero8 +D801 EventTaskInit_Loop23 +D80F Sub_D80F +D822 EventTaskInit_Loop24 +D82B EventTaskInit_OnNonzero9 +D832 EventTaskInit_Loop25 +D83B EventTaskInit_Loop26 +D847 EventTaskInit_Loop27 +D855 Sub_D855 +D868 EventTaskInit_Loop28 +D876 EventTaskInit_OnNonzero10 +D87D EventTaskInit_Loop29 +D889 Sub_D889 +D88C EventTaskInit_Loop30 +D88E EventTaskInit_OnNonzero11 +D89D EventTaskInit_Loop31 +D8A8 EventTaskInit_OnNonzero12 +D8F2 Sub_D8F2 +D8F4 EventTaskInit_OnNonzero13 +D907 Sub_D907 +D90F EventTaskInit_OnNonzero14 +D977 Sub_D977 +D979 EventTaskInit_OnNonzero15 +D9BD EventTaskInit_Loop32 +E0D5 OlympicsScheduler +E0EE OlympicsScheduler_Loop +E109 Sub_E109 +E114 OlympicsScheduler_Loop2 +E117 OlympicsScheduler_Loop3 +E13C OlympicsScheduler_OnNonzero +E144 OlympicsScheduler_OnNonzero2 +E178 OlympicsScheduler_Loop4 +E18C OlympicsScheduler_Loop5 +E19D OlympicsScheduler_Loop6 +E1AE OlympicsScheduler_Loop7 +E1B9 OlympicsScheduler_Loop8 +E1C3 OlympicsScheduler_OnNonzero3 +E1C4 OlympicsScheduler_Loop9 +E1EA OlympicsScheduler_Loop10 +E21D OlympicsScheduler_Loop11 +E225 OlympicsScheduler_Loop12 +E233 Sub_E233 +E245 OlympicsScheduler_Loop13 +E25F OlympicsScheduler_Loop14 +E268 OlympicsScheduler_Loop15 +E27E Sub_E27E +E290 OlympicsScheduler_Loop16 +E298 OlympicsScheduler_Loop17 +E2B2 Sub_E2B2 +E2EA OlympicsScheduler_Loop18 +E328 OlympicsScheduler_Loop19 +E329 OlympicsScheduler_Loop20 +E36F OlympicsScheduler_Loop21 +E38B OlympicsScheduler_Loop22 +E395 Sub_E395 +E3B4 OlympicsScheduler_Loop23 +E3D3 OlympicsScheduler_Loop24 +E402 OlympicsScheduler_Loop25 +E405 OlympicsScheduler_Loop26 +E423 OlympicsScheduler_Loop27 +E424 OlympicsScheduler_Loop28 +E427 Sub_E427 +E434 OlympicsScheduler_Loop29 +E44D OlympicsScheduler_Loop30 +E456 OlympicsScheduler_Loop31 +E466 OlympicsScheduler_Loop32 +E46E OlympicsScheduler_Loop33 +E492 OlympicsScheduler_OnNonzero4 +E4A4 OlympicsScheduler_Loop34 +E4A7 OlympicsScheduler_Loop35 +E4AF OlympicsScheduler_Loop36 +E4BA OlympicsScheduler_Loop37 +E4E9 OlympicsScheduler_Loop38 +E4EB Sub_E4EB +E515 OlympicsScheduler_OnNonnegative +E54F OlympicsScheduler_Loop39 +E553 OlympicsScheduler_OnNonzero5 +E554 OlympicsScheduler_Loop40 +E55F Sub_E55F +E566 OlympicsScheduler_OnNonzero6 +E569 OlympicsScheduler_Loop41 +E581 OlympicsScheduler_OnCarryClear +E587 OlympicsScheduler_Loop42 +E592 OlympicsScheduler_Loop43 +E5B5 OlympicsScheduler_Loop44 +E5CB OlympicsScheduler_Loop45 +E5D2 OlympicsScheduler_Loop46 +E5E4 OlympicsScheduler_Loop47 +E5E6 OlympicsScheduler_Loop48 +E5F1 OlympicsScheduler_Loop49 +E60A Sub_E60A +E625 Sub_E625 +E62C Sub_E62C +E638 OlympicsScheduler_OnNonzero7 +E642 OlympicsScheduler_OnNonzero8 +E674 OlympicsScheduler_OnNonzero9 +E67C OlympicsScheduler_OnNonzero10 +E695 OlympicsScheduler_Loop50 +E6A2 OlympicsScheduler_Loop51 +E6A8 Sub_E6A8 +E6B2 OlympicsScheduler_OnCarrySet +E6B6 OlympicsScheduler_OnNonnegative2 +E6CB OlympicsScheduler_Loop52 +E6CC Sub_E6CC +E709 Sub_E709 +E72B OlympicsScheduler_Loop53 +E735 OlympicsScheduler_OnCarryClear2 +E73B OlympicsScheduler_Loop54 +E745 Sub_E745 +E772 Sub_E772 +E7AE Sub_E7AE +E7B6 OlympicsScheduler_Loop55 +E7E1 OlympicsScheduler_Loop56 +E7FD OlympicsScheduler_Loop57 +E807 OlympicsScheduler_Loop58 +E819 OlympicsScheduler_Loop59 +E835 OlympicsScheduler_Loop60 +E839 OlympicsScheduler_Loop61 +E83D OlympicsScheduler_Loop62 +E844 OlympicsScheduler_Loop63 +E85A Sub_E85A +E866 OlympicsScheduler_Loop64 +E880 Sub_E880 +E89F Sub_E89F +E8C0 Sub_E8C0 +E8C6 OlympicsScheduler_Loop65 +E8D8 OlympicsScheduler_Loop66 +E8E0 OlympicsScheduler_Loop67 +E8EB OlympicsScheduler_Loop68 +E8FA Sub_E8FA +E90B Sub_E90B +E918 OlympicsScheduler_Loop69 +E943 Sub_E943 +E94E OlympicsScheduler_OnCarryClear3 +E957 OlympicsScheduler_Loop70 +E95C OlympicsScheduler_OnCarryClear4 +E965 OlympicsScheduler_Loop71 +E978 OlympicsScheduler_OnNonnegative3 +EB04 Sub_EB04 +EB2D OlympicsScheduler_Loop72 +EB3B OlympicsScheduler_Loop73 +EB4D OlympicsScheduler_Loop74 +EB4E Sub_EB4E +EB5C OlympicsScheduler_OnNonzero11 +EB70 OlympicsScheduler_Loop75 +EB74 OlympicsScheduler_Loop76 +EB78 OlympicsScheduler_OnCarryClear5 +EB7A OlympicsScheduler_OnCarryClear6 +EB89 OlympicsScheduler_OnNonzero12 +EB9B OlympicsScheduler_Loop77 +EBA5 Sub_EBA5 +EBBA OlympicsScheduler_Loop78 +EBC5 OlympicsScheduler_Loop79 +EBC8 OlympicsScheduler_Loop80 +EBC9 Sub_EBC9 +EBF5 OlympicsScheduler_OnCarryClear7 +EC0E Sub_EC0E +EC22 Sub_EC22 +EC24 OlympicsScheduler_OnCarrySet2 +EC44 OlympicsScheduler_Loop81 +EC5E OlympicsScheduler_Loop82 +EC68 OlympicsScheduler_Loop83 +EC6F OlympicsScheduler_OnNonzero13 +EC84 OlympicsScheduler_Loop84 +EC86 OlympicsScheduler_Loop85 +EC8B OlympicsScheduler_Loop86 +EC8C Sub_EC8C +EC96 OlympicsScheduler_Loop87 +ECB5 OlympicsScheduler_Loop88 +ECF0 OlympicsScheduler_Loop89 +ED01 OlympicsScheduler_Loop90 +ED31 OlympicsScheduler_Loop91 +ED35 Sub_ED35 +ED53 Sub_ED53 +ED59 OlympicsScheduler_Loop92 +ED5A Sub_ED5A +ED62 OlympicsScheduler_Loop93 +ED64 OlympicsScheduler_OnCarryClear8 +ED96 OlympicsScheduler_Loop94 +ED9F Sub_ED9F +EDC6 OlympicsScheduler_OnCarryClear9 +EDF7 OlympicsScheduler_OnNonzero14 +EE1B Sub_EE1B +EE3D Sub_EE3D +EE52 Sub_EE52 +EE6E Sub_EE6E +EE7A Sub_EE7A +EE90 OlympicsScheduler_Loop95 +EEA5 OlympicsScheduler_Loop96 +EEA6 OlympicsScheduler_OnNonzero15 +EEB1 OlympicsScheduler_Loop97 +EEC0 OlympicsScheduler_OnNonzero16 +EECB OlympicsScheduler_Loop98 +EEE0 OlympicsScheduler_Loop99 +EEF8 OlympicsScheduler_OnNonzero17 +EF23 OlympicsScheduler_Loop100 +EF25 OlympicsScheduler_Loop101 +EF29 OlympicsScheduler_OnNonzero18 +EF3F OlympicsScheduler_Loop102 +EF4C Sub_EF4C +EF7C EventInit +EFC6 Sub_EFC6 +EFD7 Sub_EFD7 +EFD9 Sub_EFD9 +F00C Sub_F00C +F014 EventInit_OnNonzero +F6FD Reset +F719 ClearRam +F743 ClearOam +F74F MainLoop +F757 MainLoop_NextSlot +F77A MainLoop_RunTask +F780 TaskDispatch +F78D FrameEnd +F7A0 TaskSlotStart +F7BE TaskSlotStart_OnNonzero +F7C5 TaskSlotStart_Loop +F7CA TaskSlotClear +F7DE EnableNmi +F7EA TaskFrameWait +F7F5 DelayFrames +F7F9 DelayFrames_OnNonzero +F803 NmiHandler +F83F NmiHandler_Loop +F84F NmiHandler_Loop2 +F859 NmiHandler_OnNonzero +F868 NmiHandler_OnZero +F8A8 Sub_F8A8 +F8BC InitDisplay +F8D7 WaitVblankStart +F8DC WaitVblankEnd +F8E6 FrameDelay +F8F5 NmiPaletteUpdate +F91F NmiPaletteUpdate_OnNonzero +F939 NmiPaletteUpdate_Loop +F957 NmiPaletteUpdate_Loop2 +F963 NmiPaletteUpdate_OnNonzero2 +F970 NmiPaletteUpdate_Loop3 +F999 NmiPaletteUpdate_OnNonzero3 +F9A3 NmiPaletteUpdate_Loop4 +F9CA NmiPaletteUpdate_OnNonzero4 +F9D6 NmiPaletteUpdate_Loop5 +F9E0 Sub_F9E0 +F9FC NmiPaletteUpdate_Loop6 +F9FF NmiPaletteUpdate_Loop7 +FA14 NmiPaletteUpdate_Loop8 +FA32 NmiPaletteUpdate_OnNonzero5 +FA4C NmiPaletteUpdate_Loop9 +FA55 NmiPaletteUpdate_Loop10 +FA59 NmiPaletteUpdate_OnNonzero6 +FA69 NmiPaletteUpdate_Loop11 +FA88 NmiPaletteUpdate_Loop12 +FA91 NmiPaletteUpdate_Loop13 +FA9D PaletteLoad +FAAF PaletteLoad_Loop +FABB Sub_FABB +FABD Sub_FABD +FACB PaletteLoad_Loop2 +FAE8 PaletteLoad_Loop3 +FAFB PaletteLoad_Loop4 +FB1E Sub_FB1E +FB37 PaletteLoad_Loop5 +FB52 PaletteLoad_Loop6 +FB58 PaletteLoad_OnNonzero +FB6A PaletteLoad_OnNonzero2 +FB72 PaletteLoad_Loop7 +FB96 PaletteLoad_Loop8 +FB97 Sub_FB97 +FBAB Sub_FBAB +FBB9 PaletteLoad_Loop9 +FBCB PaletteLoad_Loop10 +FBE3 OamCopy +FC0D OamCopy_OnNonzero +FC2A OamCopy_Loop +FC2B SpriteTile +FC2D SpriteTile_OnNonzero +FC39 Sub_FC39 +FC45 Sub_FC45 +FC4E Sub_FC4E +FC52 SpriteTile_OnNonzero2 +FC63 Sub_FC63 diff --git a/NROM/Pyramid (U)/symbols.inc b/CNROM/World Class Track Meet (U)/symbols.inc similarity index 100% rename from NROM/Pyramid (U)/symbols.inc rename to CNROM/World Class Track Meet (U)/symbols.inc diff --git a/MAPPER8/Mermaids of Atlantis (U)/Makefile b/MAPPER8/Mermaids of Atlantis (U)/Makefile index b254894..bb56769 100644 --- a/MAPPER8/Mermaids of Atlantis (U)/Makefile +++ b/MAPPER8/Mermaids of Atlantis (U)/Makefile @@ -19,7 +19,10 @@ verify: reconstructed.nes rom.nes cmp reconstructed.nes rom.nes @echo "Byte-identical ROM verified." +regen: + ./regen.sh + clean: rm -f *.o reconstructed.nes reconstructed_prg.bin reconstructed.map reconstructed.lbl -.PHONY: all verify clean +.PHONY: all verify clean regen diff --git a/MAPPER8/Mermaids of Atlantis (U)/README.md b/MAPPER8/Mermaids of Atlantis (U)/README.md index 7513052..efc9c03 100644 --- a/MAPPER8/Mermaids of Atlantis (U)/README.md +++ b/MAPPER8/Mermaids of Atlantis (U)/README.md @@ -1,61 +1,157 @@ # Mermaids of Atlantis (U) +*Imagineering, 1991 - "The Riddle of the Magic Bubble"* + ## Status -**Pass 1 complete.** The code/data split has been produced by `nesdis.py` and -the project builds byte-identical to the original ROM. `prg.s` now contains -traced code with audit comments and `.byte` data blocks for unreached bytes. - -`make` assembles `header.s`, `prg.s`, `chr.s`, links them with `ld65` and compares the -result against `rom.nes`: +**Pass 3 complete.** The code/data split comes from a Mesen Code Data +Logger capture, every routine and branch target carries a name, the +zero-page aliases that the dump proves are applied, and `make` rebuilds the +whole ROM byte for byte: ``` Byte-identical ROM verified. ``` +`prg.s` is 8 075 bytes of disassembled code out of the 64 KB PRG image +(12.3 %), in 494 routines. The rest of the image stays as `.byte` blocks +with their ROM provenance: the bytes the emulator never reached are not +guessed at. + ## ROM | Property | Value | |----------|-------| | Format | iNES | -| Mapper | 8 | -| Board | MAPPER8 | +| Mapper | 8 (MMC3) | +| PRG | 64 KB (8 x 8 KB banks), at file offset $0010 | +| CHR | 64 KB (8 x 8 KB banks) | | Mirroring | Vertical | -| Four-screen VRAM | no | -| Battery | no | -| PRG | 64 KB (4 x 16 KB), at file offset $0010 | -| CHR | 64 KB (8 x 8 KB) | | Trainer | none | -| Footer | none | -| NMI vector | $8189 | -| RESET vector | $FF00 | +| Reset vector | $FF00 | +| NMI vector | $808F (see "The two vector tables") | | IRQ vector | $8036 | | ROM file | `Mermaids of Atlantis (U).nes` | | SHA-256 | `53f5d22650063aba89b91762f133d1b6b2680c505b193d88a472580d09701122` | -### Header notes +## The banking -- none +The cartridge is an MMC3 with 64 KB of PRG - eight 8 KB banks. The file is +laid out in banks, and the game uses them like this: -## Open work +| Bank | File | CPU window | Role | +|------|------|------------|------| +| R0 | $0000-$1FFF | $8000-$9FFF | the game code, first half | +| R1 | $2000-$3FFF | $A000-$BFFF | the game code, first half | +| R2 | $4000-$5FFF | $C000-$DFFF | the game code, first half | +| R3 | $6000-$7FFF | $E000-$FFFF | **the fixed bank**: the reset stub, the vectors, the text table | +| R4 | $8000-$9FFF | $8000-$9FFF | the game code, second half | +| R5 | $A000-$BFFF | $A000-$BFFF | the game code, second half | +| R6 | $C000-$DFFF | $C000-$DFFF | unused | +| R7 | $E000-$FFFF | $E000-$FFFF | a second copy of the fixed bank's tail | -- **Pass 2** - replace the address-derived `Label_XXXX` names and the raw - `$XXXX` call operands. -- **Pass 3** - semantic zero-page aliases (applied only at the sites where - their role is proven) and named data tables. -- **Promotion** to `NROM//` once Pass 3 is done, as `git mv`. +The mapper register is written through the fixed bank: `SwitchPrgBank` +($FF70) does `ora #$30; sta $4100`, so the mode bits are forced on and the +bank number is the low three bits of A. `BankedCall` ($8004) is the game's +own far-call: it stores the handler index in `HandlerIndex` ($2D), switches +the PRG bank to the one in `PrgBankNumber` ($2C) and lets the caller fall +into the new bank's code at the same CPU address. + +Because two banks can be visible at the same CPU address, the disassembly +gives each bank its own label namespace: bank 0, 1, 2 and the fixed bank use +plain names, banks 4 to 7 use the `Bank4_` .. `Bank7_` prefixes. Every bank +has its own segment (`PRG0` .. `PRG7`) and its own `.org`, so the assembler +knows the CPU address of every label while the linker still writes the +bytes to the bank's file offset. + +## The two vector tables + +The image carries the reset stub and the vectors **twice**: + +| File | NMI | RESET | IRQ | +|------|-----|-------|-----| +| $7FFA (R3, the fixed bank) | $808F | $FF00 | $8036 | +| $FFFA (R7, the last bank) | $8189 | $FF00 | $8036 | + +The fixed bank is the one the CPU sees, so the live NMI vector is **$808F** +and the NMI handler is `NmiHandler` at $808F in bank 0. The copy at the end +of the image is what a mapper that fixes the *last* 8 KB of the PRG would +use; it names an NMI handler at $8189, which is a `BRK` in the first half of +the image. The two stubs are byte identical from $FF00 to $FF7F, and the +fixed bank carries one routine the last bank does not: `SwitchPrgBankKeepA` +at $FF80. + +## Power-on flow + +``` +$FF00 Reset ldx #$FF / txs / sei / cld + clears PPUCTRL and PPUMASK + SwitchPrgBank ($30) - the first PRG bank + WaitForBankSwitch - the bank switch counter +$FF2F SelectChrBanks picks the CHR banks of the first stage +$FF3E StartGame SwitchPrgBank ($30), StartBankSwitchDelay, + jmp $8036 +$8036 InitializeGame sei / cld / WaitForVBlank + clears the PPU and the work RAM + InitGameVariables - the sound, scroll and sprite registers +$8083 IdleWaitLoop inc IdleCounter / jmp $8083 - the game waits for the NMI +``` + +From then on the frame handler does the work: + +``` +$808F NmiHandler StartVramWrite when the tile set changed + UpdateNametable / UploadOam when the screen changed + writes PPUCTRL, PPUSCROLL and PPUMASK + ReadControllers - the pad bits + UpdateGameState - the mode machine + UpdateActorSprites / UpdateSprites + BankedCall ($02) - the sound engine + writes PPUCTRL and counts the frame +``` + +`$8036` is also the IRQ vector, so an interrupt re-runs the power-on path. + +## Data tables + +| Table | Where | What it holds | +|-------|-------|---------------| +| the digit and tile table | $F1D6, in the fixed bank | "0123456789" and the tile indices of the font | +| the bank switch table | $8026, in banks 0 and 4 | the bank numbers, eight per half | +| the handler jump tables | $8095 (bank 4), $9234, $C2AC | the addresses the dispatchers jump to | +| the sprite table | $0338 | the 16 sprite slots: tile, attributes, position | +| the actor table | $0358, $03A8 | the actors and the bubble slots | +| the player table | $0400 | the player's position and direction | +| the level script | $05E2-$05E9 | the stage, the wave and the timers | +| the sound tables | $0700-$07FF | the sound engine of the second half | ## Files | File | Purpose | |------|---------| -| `prg.s` | Pass 1 PRG disassembly (traced code + data blocks) | -| `header.s` | iNES header include | -| `chr.s` | CHR include | -| `prg.bin` | 65536 bytes (64 KB) PRG image | -| `chr.bin` | 65536 bytes (64 KB) CHR image | -| `rom.nes` | byte-identical copy of the original ROM | -| `linker.cfg` | HEADER / PRG / CHR memory areas | -| `symbols.inc` | NES hardware register names | -| `locals.inc` | zero-page aliases (5 ZpXX aliases at Pass 1) | -| `Makefile` | build and byte-identity check | +| `prg.s` | the disassembly, one segment per bank | +| `header.s` | the iNES header | +| `chr.s` | the CHR image | +| `prg.bin` | the 64 KB PRG image | +| `chr.bin` | the 64 KB CHR image | +| `rom.nes` | a copy of the original ROM | +| `linker.cfg` | one memory area per bank, at the file offsets | +| `symbols.inc` | the NES hardware register names | +| `locals.inc` | the zero-page aliases | +| `routinemap.tsv` | the hand-written Pass 2 names | +| `routinedesc.tsv` | the hand-written routine descriptions | +| `labelmap.tsv` | the full Pass 2 map (generated) | +| `regen.sh` | rebuilds `prg.s` from the ROM and the CDL capture | +| `Makefile` | the build and the byte-identity check | + +## Rebuilding + +``` +make # build and verify against rom.nes +./regen.sh # re-derive prg.s from the ROM and a Mesen CDL capture +``` + +`regen.sh` needs a Mesen CDL capture of the game; the file is not kept in +the repository. Take it with Mesen (load the ROM, play for a while, then +`mesen_cdl_file(action='save', memoryType='NesPrgRom', filepath=...)`) and +point `CDL=` at it. diff --git a/MAPPER8/Mermaids of Atlantis (U)/derived_names.tsv b/MAPPER8/Mermaids of Atlantis (U)/derived_names.tsv deleted file mode 100644 index b3bef9d..0000000 --- a/MAPPER8/Mermaids of Atlantis (U)/derived_names.tsv +++ /dev/null @@ -1,17 +0,0 @@ -label Label_801B Sub_801B_Entry_801B -label Label_8036 Sub_8036_Entry_8036 -label Label_8038 Sub_8036_OnNonnegative_8038 -label Label_8057 Sub_8036_JoinBranchPaths_8057 -label Label_8062 Sub_8036_OnNonzero_8062 -label Label_806B Sub_8036_OnCarrySet_806B -label Label_8083 Sub_8083_StoreAndContinue_8083 -label Label_8189 Sub_8083_Entry_8189 -label Label_FF2F Sub_8764_OnCarryClear_FF2F -label Label_FF3E Sub_FF3E_CallNext_FF3E -label Label_FF49 Sub_FF49_JumpNext_FF49 -label Label_FF4C Sub_FF4C_StoreAndContinue_FF4C -label Label_FF4E Sub_FF4C_OnNonzero_FF4E -label Label_FF50 Sub_FF4C_OnNonzero_FF50 -label Label_FF57 Sub_FF57_Return_FF57 -label Label_FF60 Sub_FF57_OnNonzero_FF60 -label Label_FF62 Sub_FF62_Return_FF62 diff --git a/MAPPER8/Mermaids of Atlantis (U)/derived_names2.tsv b/MAPPER8/Mermaids of Atlantis (U)/derived_names2.tsv deleted file mode 100644 index 8b13789..0000000 --- a/MAPPER8/Mermaids of Atlantis (U)/derived_names2.tsv +++ /dev/null @@ -1 +0,0 @@ - diff --git a/MAPPER8/Mermaids of Atlantis (U)/label_map.tsv b/MAPPER8/Mermaids of Atlantis (U)/label_map.tsv deleted file mode 100644 index 9cbe3ab..0000000 --- a/MAPPER8/Mermaids of Atlantis (U)/label_map.tsv +++ /dev/null @@ -1,17 +0,0 @@ -label Label_801B Sub_801B_Entry_801B -label Label_8036 Sub_8036_Entry_8036 -label Label_8038 Sub_8036_OnNonnegative_8038 -label Label_8057 Sub_8036_JoinBranchPaths_8057 -label Label_8062 Sub_8036_OnNonzero_8062 -label Label_806B Sub_8036_OnCarrySet_806B -label Label_8083 Sub_8083_StoreAndContinue_8083 -label Label_8189 Sub_8083_Entry_8189 -label Label_FF2F Sub_8764_OnCarryClear_FF2F -label Label_FF3E Sub_FF3E_CallNext_FF3E -label Label_FF49 Sub_FF49_JumpNext_FF49 -label Label_FF4C Sub_FF4C_StoreAndContinue_FF4C -label Label_FF4E Sub_FF4C_OnNonzero_FF4E -label Label_FF50 Sub_FF4C_OnNonzero_FF50 -label Label_FF57 Sub_FF57_Return_FF57 -label Label_FF60 Sub_FF57_OnNonzero_FF60 -label Label_FF62 Sub_FF62_Return_FF62 \ No newline at end of file diff --git a/MAPPER8/Mermaids of Atlantis (U)/labelmap.tsv b/MAPPER8/Mermaids of Atlantis (U)/labelmap.tsv new file mode 100644 index 0000000..fb4f7b5 --- /dev/null +++ b/MAPPER8/Mermaids of Atlantis (U)/labelmap.tsv @@ -0,0 +1,601 @@ + +FF00 Reset +FF2F SelectChrBanks +FF3E StartGame +FF49 WritePrgBankReg +FF4C DelayOuterLoop +FF50 DelayInnerLoop +FF57 WaitForBankSwitch +FF62 StartBankSwitchDelay +FF70 SwitchPrgBank +FF80 SwitchPrgBankKeepA + +8004 BankedCall +801B SelectPrgBankByIndex +8036 InitializeGame +8038 WaitForVBlank +8057 ClearRamLoop +8062 ClearRamPageDone +806B InitGameVariables +8083 IdleWaitLoop +808F NmiHandler +80A6 UploadOam +811C RunGameLogic +85DD TickAnimationCounter +8606 ApplyGraphicsMode +8A5F InitLevelState +8E34 CopyStackPage +9621 TickLevelTimer +97EC ResetLevelTimers +813F ReadControllers +814D ReadControllerBits +8173 DispatchByJumpTable +8188 ClearOamShadow +81B1 UpdateNametable +82E9 UpdateSprites +83C3 UpdateActorSprites +849D StartVramWrite +84A4 WriteVramTiles +89FC AnimatePalette +90A9 ReadPlayerInput +91AC BuildOamBuffer +9228 ClearSpriteSlots +962E LoadSpriteTable +967C SetGraphicsMode +9786 UpdateGameState +981B SetTablePointer + +AEC7 ClearBubbleSlots +BB4F ClearActorSlots +BB5B ClearActorTable +BB68 SoundTimerTick +BB7E PlaySoundEffect +BB94 LoadActorTemplate +BB9E CopyActorToSpriteTable +BBFA UpdatePlayerState +BC1C HandleDemoMode +BC38 HandlePlayerInput +BC44 CountPlayerFrames +BCF9 MovePlayer +BD26 ApplyPlayerDirection +BD70 ComputePlayerPosition +BDE1 StorePlayerSprite +BEE4 BuildBubbleTable +BF17 UpdateBubbles +BF53 PlayBubbleSound +BF67 SpawnBubble +BF83 DrawBubble +BF9A DispatchBubbleHandler +BFAF ResetLevel +BFBA ClearSpriteTable + +C000 ClearNametableRam +C00F PlayStageMusic +C2A7 DispatchLevelScript +C2BF ResetPpuAndLoadTiles +C3C8 SetVramPointer +C414 ClearSpriteEntry +C456 TickStageDelay +C505 UpdateStageMode +C62A DisablePpuRendering +CC11 SetPlayerActive +CC56 CheckPlayerActive +CCCF TickSoundOnEvenFrame +CD18 UpdateSoundEngine +CF32 CheckActorCount +D0E7 TickActorsOnEvenFrame +D1B0 InitPlayerPosition +D21A TickTimerOnEvenFrame +D2C0 ResetScrollOnEvenFrame +D507 InitBubbleState +D537 UpdateBubbleFrame +D563 TickHudOnEvenFrame +D5CF TickSpritesOnEvenFrame +D615 SetSoundChannels + + + +Bank4:800D Bank4_CallBankedHandler +Bank4:80A7 Bank4_StartVramWrite +Bank4:8161 Bank4_UpdateNametable +Bank5:A726 Bank5_UpdateSound +Bank5:A784 Bank5_ReadSoundTable +Bank5:AB50 Bank5_SetSoundMode +Bank7:FF70 Bank7_SwitchPrgBank + +# ---- derived internal branch-target names ---- +8004 BankedCall +801B SelectPrgBankByIndex +8025 Sub_8025 +8036 InitializeGame +8038 WaitForVBlank +8057 ClearRamLoop +8062 ClearRamPageDone +806B InitGameVariables +8083 IdleWaitLoop +808F NmiHandler +8097 NmiHandler_Loop +80A6 UploadOam +80BC UploadOam_Loop +80C4 UploadOam_Loop2 +811C RunGameLogic +813F ReadControllers +814D ReadControllerBits +8153 ReadControllerBits_OnNonzero +8173 DispatchByJumpTable +8188 ClearOamShadow +818C ClearOamShadow_OnNonzero +81B1 UpdateNametable +81B8 UpdateNametable_OnNonzero +81D7 UpdateNametable_OnCarryClear +81E4 UpdateNametable_OnNonzero2 +8204 UpdateNametable_Loop +820F UpdateNametable_Loop2 +8214 UpdateNametable_Loop3 +8215 UpdateNametable_OnNonzero3 +8270 UpdateNametable_Loop4 +8276 UpdateNametable_OnNonzero4 +829A UpdateNametable_OnNonzero5 +82A7 UpdateNametable_OnNonzero6 +82C8 Sub_82C8 +82E9 UpdateSprites +82F7 UpdateSprites_Loop +82F9 UpdateSprites_Loop2 +82FB UpdateSprites_OnCarryClear +8303 UpdateSprites_Loop3 +830C Sub_830C +8349 UpdateSprites_OnNonzero +8378 UpdateSprites_Loop4 +837B UpdateSprites_Loop5 +838B UpdateSprites_Loop6 +838D Sub_838D +839F UpdateSprites_Loop7 +83A1 Sub_83A1 +83C2 UpdateSprites_Loop8 +83C3 UpdateActorSprites +83C7 UpdateActorSprites_OnCarryClear +83CF UpdateActorSprites_Loop +840B UpdateActorSprites_OnNonzero +840C Sub_840C +8424 UpdateActorSprites_Loop2 +8451 UpdateActorSprites_Loop3 +848C Sub_848C +8492 UpdateActorSprites_OnNonzero2 +849D StartVramWrite +84A4 WriteVramTiles +84BF Sub_84BF +84D2 WriteVramTiles_Loop +84DB WriteVramTiles_Loop2 +84E3 Sub_84E3 +8534 WriteVramTiles_Loop3 +8552 Sub_8552 +855D Sub_855D +858A Sub_858A +85A7 Sub_85A7 +85C4 Sub_85C4 +85D2 WriteVramTiles_OnCarryClear +85DD TickAnimationCounter +85E4 TickAnimationCounter_Loop +8606 ApplyGraphicsMode +8663 Sub_8663 +8676 ApplyGraphicsMode_OnNonzero +867D ApplyGraphicsMode_OnZero +8686 ApplyGraphicsMode_OnNonzero2 +86D1 ApplyGraphicsMode_Loop +86F0 ApplyGraphicsMode_Loop2 +8709 ApplyGraphicsMode_Loop3 +872C ApplyGraphicsMode_Loop4 +8745 ApplyGraphicsMode_OnNonzero3 +874E ApplyGraphicsMode_Loop5 +89FC AnimatePalette +8A35 AnimatePalette_Loop +8A5F InitLevelState +8A66 InitLevelState_Loop +8A75 InitLevelState_OnNonzero +8A93 InitLevelState_OnNonzero2 +8AE1 Sub_8AE1 +8B0E InitLevelState_Loop2 +8E34 CopyStackPage +8E36 CopyStackPage_OnCarryClear +9084 Sub_9084 +90A9 ReadPlayerInput +90BB ReadPlayerInput_Loop +90C9 ReadPlayerInput_Loop2 +90D9 ReadPlayerInput_Loop3 +90EA ReadPlayerInput_Loop4 +90F6 ReadPlayerInput_Loop5 +90FC Sub_90FC +91AC BuildOamBuffer +91B4 BuildOamBuffer_OnCarryClear +91D7 BuildOamBuffer_OnNonzero +91F0 BuildOamBuffer_OnNonzero2 +920D BuildOamBuffer_Loop +920F BuildOamBuffer_Loop2 +9228 ClearSpriteSlots +922B ClearSpriteSlots_OnNonzero +9621 TickLevelTimer +962D TickLevelTimer_Loop +962E LoadSpriteTable +9634 LoadSpriteTable_OnCarryClear +964E LoadSpriteTable_Loop +9650 LoadSpriteTable_OnNonzero +9671 LoadSpriteTable_Loop2 +967C SetGraphicsMode +9687 SetGraphicsMode_Loop +9692 SetGraphicsMode_Loop2 +969C SetGraphicsMode_Loop3 +96A6 SetGraphicsMode_Loop4 +96AD SetGraphicsMode_OnCarryClear +96C8 SetGraphicsMode_Loop5 +96D9 SetGraphicsMode_Loop6 +96DF SetGraphicsMode_Loop7 +96E3 Sub_96E3 +9703 Sub_9703 +9706 SetGraphicsMode_OnCarryClear2 +970F Sub_970F +9712 SetGraphicsMode_OnCarryClear3 +9786 UpdateGameState +97A6 UpdateGameState_Loop +97AE UpdateGameState_Loop2 +97BA UpdateGameState_Loop3 +97C3 UpdateGameState_Loop4 +97C8 UpdateGameState_Loop5 +97DE UpdateGameState_Loop6 +97DF UpdateGameState_Loop7 +97EC ResetLevelTimers +97F3 ResetLevelTimers_Loop +981A ResetLevelTimers_Loop2 +981B SetTablePointer +9829 SetTablePointer_Loop +9830 SetTablePointer_OnCarryClear +9841 SetTablePointer_Loop2 +A78F Sub_A78F +AEC7 ClearBubbleSlots +AECA ClearBubbleSlots_OnCarryClear +BB4F ClearActorSlots +BB52 ClearActorSlots_OnCarryClear +BB5B ClearActorTable +BB68 SoundTimerTick +BB6E SoundTimerTick_Loop +BB7D SoundTimerTick_Loop2 +BB7E PlaySoundEffect +BB94 LoadActorTemplate +BB9E CopyActorToSpriteTable +BBA6 CopyActorToSpriteTable_OnNonzero +BBBA CopyActorToSpriteTable_Loop +BBFA UpdatePlayerState +BC09 UpdatePlayerState_Loop +BC11 Sub_BC11 +BC19 UpdatePlayerState_Loop2 +BC1C HandleDemoMode +BC38 HandlePlayerInput +BC44 CountPlayerFrames +BC56 CountPlayerFrames_Loop +BC5A CountPlayerFrames_Loop2 +BC68 CountPlayerFrames_Loop3 +BC84 CountPlayerFrames_Loop4 +BC8D CountPlayerFrames_Loop5 +BC98 CountPlayerFrames_Loop6 +BCA9 CountPlayerFrames_Loop7 +BCB8 CountPlayerFrames_Loop8 +BCD6 CountPlayerFrames_Loop9 +BCE1 CountPlayerFrames_Loop10 +BCF1 CountPlayerFrames_Loop11 +BCF9 MovePlayer +BD0B MovePlayer_Loop +BD21 MovePlayer_Loop2 +BD26 ApplyPlayerDirection +BD36 ApplyPlayerDirection_Loop +BD3E ApplyPlayerDirection_Loop2 +BD4F ApplyPlayerDirection_Loop3 +BD57 ApplyPlayerDirection_Loop4 +BD5F ApplyPlayerDirection_Loop5 +BD70 ComputePlayerPosition +BD88 ComputePlayerPosition_OnNonzero +BD9F ComputePlayerPosition_Loop +BDAD ComputePlayerPosition_Loop2 +BDBD ComputePlayerPosition_Loop3 +BDCC ComputePlayerPosition_OnCarrySet +BDCF ComputePlayerPosition_Loop4 +BDE1 StorePlayerSprite +BDF1 StorePlayerSprite_OnNonzero +BEE4 BuildBubbleTable +BEE8 BuildBubbleTable_OnCarryClear +BF17 UpdateBubbles +BF21 UpdateBubbles_OnCarryClear +BF29 UpdateBubbles_OnNonnegative +BF49 UpdateBubbles_Loop +BF53 PlayBubbleSound +BF59 PlayBubbleSound_Loop +BF67 SpawnBubble +BF73 SpawnBubble_Loop +BF83 DrawBubble +BF9A DispatchBubbleHandler +BFAF ResetLevel +BFBA ClearSpriteTable +BFDC ClearSpriteTable_Loop +BFE6 ClearSpriteTable_OnCarryClear +C000 ClearNametableRam +C006 ClearNametableRam_OnCarryClear +C00E ClearNametableRam_Loop +C00F PlayStageMusic +C015 PlayStageMusic_Loop +C019 PlayStageMusic_OnCarryClear +C035 PlayStageMusic_Loop2 +C061 Sub_C061 +C064 PlayStageMusic_OnCarryClear2 +C0F2 Sub_C0F2 +C100 PlayStageMusic_OnCarryClear3 +C10E PlayStageMusic_Loop3 +C136 PlayStageMusic_Loop4 +C140 Sub_C140 +C16E PlayStageMusic_Loop5 +C2A7 DispatchLevelScript +C2BF ResetPpuAndLoadTiles +C308 ResetPpuAndLoadTiles_OnNonzero +C319 ResetPpuAndLoadTiles_OnNonzero2 +C32B ResetPpuAndLoadTiles_Loop +C33E ResetPpuAndLoadTiles_Loop2 +C357 ResetPpuAndLoadTiles_OnCarryClear +C366 ResetPpuAndLoadTiles_OnNonzero3 +C37D ResetPpuAndLoadTiles_Loop3 +C3A5 ResetPpuAndLoadTiles_Loop4 +C3B7 ResetPpuAndLoadTiles_Loop5 +C3C3 ResetPpuAndLoadTiles_Loop6 +C3C8 SetVramPointer +C3E2 SetVramPointer_Loop +C40A SetVramPointer_Loop2 +C414 ClearSpriteEntry +C456 TickStageDelay +C460 TickStageDelay_Loop +C468 TickStageDelay_Loop2 +C505 UpdateStageMode +C513 UpdateStageMode_Loop +C519 UpdateStageMode_OnNonzero +C531 UpdateStageMode_Loop2 +C544 UpdateStageMode_Loop3 +C54A UpdateStageMode_OnCarryClear +C556 UpdateStageMode_Loop4 +C55B UpdateStageMode_Loop5 +C59E UpdateStageMode_Loop6 +C59F UpdateStageMode_Loop7 +C5D2 Sub_C5D2 +C62A DisablePpuRendering +C671 DisablePpuRendering_Loop +C68B DisablePpuRendering_OnCarryClear +C694 DisablePpuRendering_Loop2 +C6B7 Sub_C6B7 +C6BA DisablePpuRendering_OnCarryClear2 +C6C3 DisablePpuRendering_OnCarryClear3 +C7EA Sub_C7EA +C7FF DisablePpuRendering_Loop3 +C800 DisablePpuRendering_Loop4 +C80D DisablePpuRendering_Loop5 +C81D DisablePpuRendering_Loop6 +C839 DisablePpuRendering_Loop7 +C83A Sub_C83A +C840 DisablePpuRendering_Loop8 +CBC4 Sub_CBC4 +CBD9 DisablePpuRendering_Loop9 +CBE8 DisablePpuRendering_Loop10 +CBF8 DisablePpuRendering_Loop11 +CC11 SetPlayerActive +CC1D SetPlayerActive_Loop +CC48 SetPlayerActive_Loop2 +CC56 CheckPlayerActive +CC68 CheckPlayerActive_Loop +CC86 CheckPlayerActive_Loop2 +CC8B CheckPlayerActive_Loop3 +CC93 CheckPlayerActive_Loop4 +CCBC CheckPlayerActive_Loop5 +CCBD CheckPlayerActive_Loop6 +CCCF TickSoundOnEvenFrame +CCD5 TickSoundOnEvenFrame_Loop +CCDC TickSoundOnEvenFrame_Loop2 +CD02 TickSoundOnEvenFrame_Loop3 +CD18 UpdateSoundEngine +CD1C Sub_CD1C +CD27 UpdateSoundEngine_OnNonzero +CD52 UpdateSoundEngine_Loop +CD59 Sub_CD59 +CD6D UpdateSoundEngine_Loop2 +CD7E UpdateSoundEngine_Loop3 +CDA0 UpdateSoundEngine_OnCarryClear +CDB6 Sub_CDB6 +CDC8 UpdateSoundEngine_OnCarryClear2 +CDE2 UpdateSoundEngine_OnCarryClear3 +CDF0 Sub_CDF0 +CE01 UpdateSoundEngine_OnCarryClear4 +CE0D Sub_CE0D +CE13 UpdateSoundEngine_Loop4 +CE30 UpdateSoundEngine_OnNonzero2 +CE42 UpdateSoundEngine_Loop5 +CE51 UpdateSoundEngine_OnCarryClear5 +CE8B Sub_CE8B +CE91 UpdateSoundEngine_Loop6 +CE9A UpdateSoundEngine_OnNonzero3 +CEE0 UpdateSoundEngine_OnCarryClear6 +CF32 CheckActorCount +CF4D CheckActorCount_Loop +CF4F CheckActorCount_OnCarryClear +CF5D CheckActorCount_Loop2 +CF89 CheckActorCount_Loop3 +CF8F Sub_CF8F +CF9B CheckActorCount_Loop4 +CF9C CheckActorCount_Loop5 +CFFD Sub_CFFD +D001 CheckActorCount_OnCarryClear2 +D00E CheckActorCount_Loop6 +D015 CheckActorCount_Loop7 +D022 CheckActorCount_OnNonzero +D042 CheckActorCount_Loop8 +D046 Sub_D046 +D04E CheckActorCount_OnNonzero2 +D05B CheckActorCount_Loop9 +D07E CheckActorCount_Loop10 +D084 CheckActorCount_Loop11 +D08D CheckActorCount_Loop12 +D0A5 CheckActorCount_Loop13 +D0B3 CheckActorCount_Loop14 +D0D1 CheckActorCount_OnNonnegative +D0E2 CheckActorCount_Loop15 +D0E7 TickActorsOnEvenFrame +D0ED TickActorsOnEvenFrame_Loop +D106 TickActorsOnEvenFrame_Loop2 +D110 TickActorsOnEvenFrame_Loop3 +D112 TickActorsOnEvenFrame_OnCarryClear +D122 TickActorsOnEvenFrame_Loop4 +D12C TickActorsOnEvenFrame_OnNonzero +D15B TickActorsOnEvenFrame_Loop5 +D15F Sub_D15F +D16D TickActorsOnEvenFrame_OnNonnegative +D181 Sub_D181 +D183 TickActorsOnEvenFrame_OnNonnegative2 +D1B0 InitPlayerPosition +D1B8 InitPlayerPosition_OnCarryClear +D1C3 InitPlayerPosition_OnNonzero +D1D1 InitPlayerPosition_OnNonzero2 +D1E6 InitPlayerPosition_Loop +D1F8 InitPlayerPosition_Loop2 +D204 InitPlayerPosition_Loop3 +D219 InitPlayerPosition_Loop4 +D21A TickTimerOnEvenFrame +D220 TickTimerOnEvenFrame_Loop +D22A TickTimerOnEvenFrame_OnCarryClear +D22F TickTimerOnEvenFrame_OnCarrySet +D241 TickTimerOnEvenFrame_Loop2 +D24B TickTimerOnEvenFrame_OnZero +D27F TickTimerOnEvenFrame_Loop3 +D28A TickTimerOnEvenFrame_Loop4 +D294 TickTimerOnEvenFrame_Loop5 +D2AB TickTimerOnEvenFrame_Loop6 +D2AF TickTimerOnEvenFrame_Loop7 +D2C0 ResetScrollOnEvenFrame +D2C6 ResetScrollOnEvenFrame_Loop +D2CD ResetScrollOnEvenFrame_OnNonnegative +D2DC ResetScrollOnEvenFrame_Loop2 +D2E9 ResetScrollOnEvenFrame_OnNonzero +D2FB ResetScrollOnEvenFrame_Loop3 +D327 ResetScrollOnEvenFrame_OnNonzero2 +D339 ResetScrollOnEvenFrame_Loop4 +D33E ResetScrollOnEvenFrame_OnNonnegative2 +D34D ResetScrollOnEvenFrame_OnNonzero3 +D35F ResetScrollOnEvenFrame_Loop5 +D374 ResetScrollOnEvenFrame_OnCarryClear +D399 ResetScrollOnEvenFrame_OnCarryClear2 +D45E Sub_D45E +D464 ResetScrollOnEvenFrame_OnNonnegative3 +D470 ResetScrollOnEvenFrame_Loop6 +D485 ResetScrollOnEvenFrame_Loop7 +D4EE Sub_D4EE +D507 InitBubbleState +D50F InitBubbleState_OnNonzero +D52B InitBubbleState_Loop +D52C InitBubbleState_Loop2 +D537 UpdateBubbleFrame +D559 UpdateBubbleFrame_Loop +D55A UpdateBubbleFrame_Loop2 +D560 UpdateBubbleFrame_Loop3 +D563 TickHudOnEvenFrame +D569 TickHudOnEvenFrame_Loop +D595 Sub_D595 +D59B TickHudOnEvenFrame_OnNonzero +D5A5 TickHudOnEvenFrame_Loop2 +D5AF Sub_D5AF +D5B3 TickHudOnEvenFrame_OnNonzero2 +D5B4 TickHudOnEvenFrame_OnNonnegative +D5C0 TickHudOnEvenFrame_Loop3 +D5C6 TickHudOnEvenFrame_Loop4 +D5CF TickSpritesOnEvenFrame +D5D5 TickSpritesOnEvenFrame_Loop +D5E3 TickSpritesOnEvenFrame_OnNonnegative +D5EF TickSpritesOnEvenFrame_Loop2 +D609 TickSpritesOnEvenFrame_Loop3 +D60D TickSpritesOnEvenFrame_Loop4 +D615 SetSoundChannels +FF00 Reset +FF2F SelectChrBanks +FF3E StartGame +FF49 WritePrgBankReg +FF4C DelayOuterLoop +FF4E DelayOuterLoop_OnNonzero +FF50 DelayInnerLoop +FF57 WaitForBankSwitch +FF60 WaitForBankSwitch_Loop +FF62 StartBankSwitchDelay +FF70 SwitchPrgBank +FF80 SwitchPrgBankKeepA +Bank4:800D Bank4_CallBankedHandler +Bank4:801B Bank4_Sub_801B +Bank4:8088 Bank4_Sub_8088 +Bank4:80A7 Bank4_StartVramWrite +Bank4:80C9 Bank4_Sub_80C9 +Bank4:80E3 Bank4_Bank4_StartVramWrite_OnZero +Bank4:80F2 Bank4_Bank4_StartVramWrite_OnNonzero +Bank4:8100 Bank4_Bank4_StartVramWrite_Loop +Bank4:8107 Bank4_Bank4_StartVramWrite_OnNonzero2 +Bank4:8110 Bank4_Bank4_StartVramWrite_Loop2 +Bank4:8111 Bank4_Sub_8111 +Bank4:8117 Bank4_Bank4_StartVramWrite_Loop3 +Bank4:8118 Bank4_Sub_8118 +Bank4:8126 Bank4_Bank4_StartVramWrite_OnCarryClear +Bank4:8161 Bank4_UpdateNametable +Bank4:8167 Bank4_Bank4_UpdateNametable_OnZero +Bank4:817A Bank4_Bank4_UpdateNametable_OnNonzero +Bank4:8186 Bank4_Bank4_UpdateNametable_Loop +Bank5:A71A Bank5_Sub_OnZero +Bank5:A726 Bank5_UpdateSound +Bank5:A75B Bank5_Sub_A75B +Bank5:A768 Bank5_Bank5_UpdateSound_OnNonnegative +Bank5:A784 Bank5_ReadSoundTable +Bank5:A7FB Bank5_Bank5_ReadSoundTable_Loop +Bank5:A7FF Bank5_Sub_A7FF +Bank5:A817 Bank5_Bank5_ReadSoundTable_Loop2 +Bank5:A827 Bank5_Bank5_ReadSoundTable_Loop3 +Bank5:A828 Bank5_Bank5_ReadSoundTable_Loop4 +Bank5:A830 Bank5_Bank5_ReadSoundTable_OnZero +Bank5:A831 Bank5_Bank5_ReadSoundTable_Loop5 +Bank5:A839 Bank5_Bank5_ReadSoundTable_Loop6 +Bank5:A83C Bank5_Bank5_ReadSoundTable_Loop7 +Bank5:A858 Bank5_Bank5_ReadSoundTable_Loop8 +Bank5:A871 Bank5_Bank5_ReadSoundTable_Loop9 +Bank5:A87B Bank5_Bank5_ReadSoundTable_Loop10 +Bank5:A887 Bank5_Bank5_ReadSoundTable_OnCarryClear +Bank5:A892 Bank5_Bank5_ReadSoundTable_Loop11 +Bank5:A8A8 Bank5_Bank5_ReadSoundTable_Loop12 +Bank5:A8AF Bank5_Bank5_ReadSoundTable_Loop13 +Bank5:A8C7 Bank5_Bank5_ReadSoundTable_Loop14 +Bank5:A8CF Bank5_Bank5_ReadSoundTable_Loop15 +Bank5:A8D5 Bank5_Bank5_ReadSoundTable_Loop16 +Bank5:A8DC Bank5_Bank5_ReadSoundTable_Loop17 +Bank5:A8E8 Bank5_Bank5_ReadSoundTable_OnNonzero +Bank5:A8F1 Bank5_Bank5_ReadSoundTable_Loop18 +Bank5:A913 Bank5_Bank5_ReadSoundTable_OnZero2 +Bank5:A92B Bank5_Bank5_ReadSoundTable_Loop19 +Bank5:A932 Bank5_Bank5_ReadSoundTable_Loop20 +Bank5:A93E Bank5_Bank5_ReadSoundTable_Loop21 +Bank5:A954 Bank5_Bank5_ReadSoundTable_Loop22 +Bank5:A976 Bank5_Bank5_ReadSoundTable_Loop23 +Bank5:A989 Bank5_Bank5_ReadSoundTable_Loop24 +Bank5:A99C Bank5_Bank5_ReadSoundTable_Loop25 +Bank5:A9A9 Bank5_Bank5_ReadSoundTable_Loop26 +Bank5:A9B6 Bank5_Bank5_ReadSoundTable_Loop27 +Bank5:A9C3 Bank5_Sub_A9C3 +Bank5:A9D5 Bank5_Bank5_ReadSoundTable_Loop28 +Bank5:A9E9 Bank5_Sub_A9E9 +Bank5:AA05 Bank5_Bank5_ReadSoundTable_Loop29 +Bank5:AA15 Bank5_Bank5_ReadSoundTable_Loop30 +Bank5:AA4D Bank5_Bank5_ReadSoundTable_Loop31 +Bank5:AA53 Bank5_Bank5_ReadSoundTable_OnZero3 +Bank5:AA54 Bank5_Bank5_ReadSoundTable_OnZero4 +Bank5:AA66 Bank5_Bank5_ReadSoundTable_Loop32 +Bank5:AA7A Bank5_Sub_AA7A +Bank5:AA81 Bank5_Bank5_ReadSoundTable_OnNonzero2 +Bank5:AA8E Bank5_Bank5_ReadSoundTable_OnNonzero3 +Bank5:AAF1 Bank5_Sub_AAF1 +Bank5:AB11 Bank5_Sub_AB11 +Bank5:AB27 Bank5_Bank5_ReadSoundTable_OnNonzero4 +Bank5:AB43 Bank5_Bank5_ReadSoundTable_Loop33 +Bank5:AB46 Bank5_Bank5_ReadSoundTable_Loop34 +Bank5:AB50 Bank5_SetSoundMode +Bank7:FF70 Bank7_SwitchPrgBank diff --git a/MAPPER8/Mermaids of Atlantis (U)/linker.cfg b/MAPPER8/Mermaids of Atlantis (U)/linker.cfg index 50fc807..4fba50b 100644 --- a/MAPPER8/Mermaids of Atlantis (U)/linker.cfg +++ b/MAPPER8/Mermaids of Atlantis (U)/linker.cfg @@ -1,10 +1,24 @@ MEMORY { HEADER: start = $0000, size = $0010, fill = yes; - PRG: start = $0010, size = $10000, fill = yes; + PRG0: start = $0010, size = $2000, fill = yes; + PRG1: start = $2010, size = $2000, fill = yes; + PRG2: start = $4010, size = $2000, fill = yes; + PRG3: start = $6010, size = $2000, fill = yes; + PRG4: start = $8010, size = $2000, fill = yes; + PRG5: start = $A010, size = $2000, fill = yes; + PRG6: start = $C010, size = $2000, fill = yes; + PRG7: start = $E010, size = $2000, fill = yes; CHR: start = $10010, size = $10000, fill = yes; } SEGMENTS { HEADER: load = HEADER, type = ro; - PRG: load = PRG, type = ro; + PRG0: load = PRG0, type = ro; + PRG1: load = PRG1, type = ro; + PRG2: load = PRG2, type = ro; + PRG3: load = PRG3, type = ro; + PRG4: load = PRG4, type = ro; + PRG5: load = PRG5, type = ro; + PRG6: load = PRG6, type = ro; + PRG7: load = PRG7, type = ro; CHR: load = CHR, type = ro; } diff --git a/MAPPER8/Mermaids of Atlantis (U)/locals.inc b/MAPPER8/Mermaids of Atlantis (U)/locals.inc index 8fe924b..9c65f1e 100644 --- a/MAPPER8/Mermaids of Atlantis (U)/locals.inc +++ b/MAPPER8/Mermaids of Atlantis (U)/locals.inc @@ -1,37 +1,171 @@ -; Zero-page aliases for this project. -; Pass 1+ adds proven semantic names here; -; addresses whose role is not yet determined keep the neutral ZpXX -; form. +; Mermaids of Atlantis (U) - zero-page aliases. +; +; Pass 1 names every zero-page operand ZpXX; the names below are the +; semantic ones the dump proves. An address whose role is the same at +; every reference is renamed everywhere; an address the game reuses for +; several roles keeps the neutral ZpXX name and is listed at the end. +ButtonState1 = $26 ; player 1 button bits, read from $4016 +ButtonState2 = $27 ; player 2 button bits, read from $4017 +PrevButton1 = $28 ; player 1 buttons of the previous frame +PrevButton2 = $29 ; player 2 buttons of the previous frame +NewButton1 = $2A ; player 1 buttons pressed this frame +NewButton2 = $2B ; player 2 buttons pressed this frame +PrgBankNumber = $2C ; the MMC3 PRG bank the game switches to +HandlerIndex = $2D ; the index the banked call dispatches on +IdleCounter = $2F ; the counter the idle loop spins on +FrameCounter = $31 ; the frame counter, incremented at the end of the NMI +ControllerBits = $05 ; the eight button bits assembled by the pad reader +ControllerByte = $07 ; the raw byte read from $4016/$4017 +GameMode = $6A ; the game mode flag (0 = playing, 1 = demo) + +; --------------------------------------------------------------------------- +; The addresses below are used for more than one purpose in this dump, so +; they keep the neutral name. +; +; $00-$01 the RAM-clear pointer (and the banked-call scratch) +; $02 the PPUMASK shadow +; $06 the PRG bank shadow in the banked call +; $11-$14 indirect pointers: the VRAM pointer, the dispatch table pointer +; and the sound table pointer share the two pairs +; $19-$1F scroll, sprite and bubble coordinates, reused per actor +; $20-$2E per-actor scratch: the tile, the position and the frame counters +; $30-$3F per-actor state: the sprite index, the direction and the timers +; $40-$5F the level script variables: the stage, the wave and the score +; $60-$7F the game state: the mode flags, the player state and the timers +; $80-$9F the same, for the second half of the image +; $A0-$DF the sound engine state +; --------------------------------------------------------------------------- + +Zp2E = $2E Zp00 = $00 Zp01 = $01 Zp02 = $02 -Zp2F = $2F -Zp6A = $6A - -; --------------------------------------------------------------------------- -; Semantic zero-page aliases (Pass 3) -; -; Every alias below was read out of this dump's own code. An address whose -; role is the same at every reference is renamed everywhere; an address that -; is reused for several roles keeps the neutral ZpXX name outside the -; routines where the role is proven, and the per-site choice is recorded in -; sites.tsv. -; --------------------------------------------------------------------------- - -TempVar0 = $00 ; semantic alias for Zp00 (general-purpose zero-page temp, used at $804D,$8057,$806B) -TempVar1 = $01 ; semantic alias for Zp01 (general-purpose zero-page temp, used at $804F,$8062,$8066,$806D,$807D) -TempVar2 = $02 ; semantic alias for Zp02 (general-purpose zero-page temp, used at $8076) -LoopCounter = $2F ; semantic alias for Zp2F (incremented at $8083, likely frame/loop counter) -StatusByte = $6A ; semantic alias for Zp6A (stored at $8081, likely status/flags register) - -; Clean marker section placeholder - will be filled by tools if needed -; --------------------------------------------------------------------------- -; Semantic zero-page aliases (Pass 3) -; -; Every alias below was read out of this dump's own code. An address whose -; role is the same at every reference is renamed everywhere; an address that -; is reused for several roles keeps the neutral ZpXX name outside the -; routines where the role is proven, and the per-site choice is recorded in -; sites.tsv. -; --------------------------------------------------------------------------- +Zp03 = $03 +Zp04 = $04 +Zp06 = $06 +Zp08 = $08 +Zp09 = $09 +Zp10 = $10 +Zp11 = $11 +Zp12 = $12 +Zp13 = $13 +Zp14 = $14 +Zp15 = $15 +Zp16 = $16 +Zp17 = $17 +Zp18 = $18 +Zp19 = $19 +Zp1A = $1A +Zp1B = $1B +Zp1C = $1C +Zp1D = $1D +Zp1E = $1E +Zp1F = $1F +Zp20 = $20 +Zp21 = $21 +Zp22 = $22 +Zp23 = $23 +Zp24 = $24 +Zp25 = $25 +Zp30 = $30 +Zp32 = $32 +Zp33 = $33 +Zp34 = $34 +Zp35 = $35 +Zp36 = $36 +Zp37 = $37 +Zp38 = $38 +Zp39 = $39 +Zp3A = $3A +Zp3B = $3B +Zp3C = $3C +Zp3D = $3D +Zp3E = $3E +Zp3F = $3F +Zp40 = $40 +Zp41 = $41 +Zp42 = $42 +Zp46 = $46 +Zp47 = $47 +Zp48 = $48 +Zp49 = $49 +Zp4A = $4A +Zp4B = $4B +Zp4C = $4C +Zp4D = $4D +Zp4E = $4E +Zp52 = $52 +Zp56 = $56 +Zp58 = $58 +Zp59 = $59 +Zp5A = $5A +Zp5B = $5B +Zp5C = $5C +Zp5D = $5D +Zp5E = $5E +Zp5F = $5F +Zp60 = $60 +Zp61 = $61 +Zp62 = $62 +Zp63 = $63 +Zp64 = $64 +Zp65 = $65 +Zp66 = $66 +Zp67 = $67 +Zp68 = $68 +Zp69 = $69 +Zp6C = $6C +Zp6E = $6E +Zp6F = $6F +Zp70 = $70 +Zp71 = $71 +Zp72 = $72 +Zp73 = $73 +Zp74 = $74 +Zp75 = $75 +Zp76 = $76 +Zp78 = $78 +Zp7E = $7E +Zp80 = $80 +Zp85 = $85 +Zp86 = $86 +Zp91 = $91 +Zp93 = $93 +Zp94 = $94 +Zp95 = $95 +Zp96 = $96 +Zp97 = $97 +Zp99 = $99 +Zp9A = $9A +Zp9D = $9D +ZpA7 = $A7 +ZpAF = $AF +ZpB7 = $B7 +ZpB9 = $B9 +ZpBE = $BE +ZpC8 = $C8 +ZpC9 = $C9 +ZpCA = $CA +ZpCB = $CB +ZpCC = $CC +ZpCD = $CD +ZpCE = $CE +ZpCF = $CF +ZpD0 = $D0 +ZpD4 = $D4 +ZpD5 = $D5 +ZpD6 = $D6 +ZpD7 = $D7 +ZpD8 = $D8 +ZpD9 = $D9 +ZpDA = $DA +ZpDB = $DB +ZpDC = $DC +ZpDD = $DD +ZpDE = $DE +ZpDF = $DF +ZpE0 = $E0 +ZpE2 = $E2 +ZpE3 = $E3 +ZpE7 = $E7 diff --git a/MAPPER8/Mermaids of Atlantis (U)/prg.s b/MAPPER8/Mermaids of Atlantis (U)/prg.s index eddfc28..dd74578 100644 --- a/MAPPER8/Mermaids of Atlantis (U)/prg.s +++ b/MAPPER8/Mermaids of Atlantis (U)/prg.s @@ -1,2719 +1,9737 @@ ; Mermaids of Atlantis (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. ; -; The PRG image is bank-switched (mapper 8): -; Banks 0-2 switchable at CPU $8000-$BFFF -; Bank 3 fixed at CPU $C000-$FFFF -; Vectors: NMI=$8189 RESET=$FF00 IRQ=$8036 +; The PRG image is bank switched, so every bank is traced separately and is +; given the CPU window it is visible at. Labels carry a bank prefix when two +; banks share a window. ; ; Pass 1 trace provenance: -; Bank 3 (fixed at $C000-$FFFF): vectors at end of PRG image -; Bank 0 (at $8000-$BFFF): seeded at $8036 (RESET), $8189 (NMI) -; Banks 1-2: no traced code reachable from entry points, treated as data +; Code/data split taken from a Mesen Code Data Logger capture; the +; instruction boundaries and control flow come from the recursive tracer, +; seeded at every entry the CDL observed. ; +; ---- bank at file $0000-$1FFF, CPU $8000-$9FFF ---- +; 68 CDL code runs, 2468 bytes of code, 1184 instructions +; 5 CDL code runs not reached by the tracer (left as data): $008F, $011C, $0606, $0A5F, $17C8 +; indirect dispatch through zero page (not followed statically): +; jmp ($0011) at $8185 +; +; ---- bank at file $2000-$3FFF, CPU $A000-$BFFF ---- +; 21 CDL code runs, 921 bytes of code, 456 instructions +; +; ---- bank at file $4000-$5FFF, CPU $C000-$DFFF ---- +; 80 CDL code runs, 3364 bytes of code, 1643 instructions +; 4 CDL code runs not reached by the tracer (left as data): $42BF, $440A, $4531, $4FFD +; +; ---- bank at file $6000-$7FFF, CPU $E000-$FFFF ---- +; 8 CDL code runs, 119 bytes of code, 57 instructions +; +; ---- bank at file $8000-$9FFF, CPU $8000-$9FFF, label prefix 'Bank4' ---- +; 9 CDL code runs, 212 bytes of code, 102 instructions +; +; ---- bank at file $A000-$BFFF, CPU $A000-$BFFF, label prefix 'Bank5' ---- +; 13 CDL code runs, 985 bytes of code, 469 instructions +; +; ---- bank at file $C000-$DFFF, CPU $C000-$DFFF, label prefix 'Bank6' ---- +; 0 CDL code runs, 0 bytes of code, 0 instructions +; +; ---- bank at file $E000-$FFFF, CPU $E000-$FFFF, label prefix 'Bank7' ---- +; 1 CDL code runs, 6 bytes of code, 3 instructions .setcpu "6502" .include "symbols.inc" .include "locals.inc" -.segment "PRG" +.segment "PRG0" +.org $8000 - -vector_setup: -; ---- data $8000-$801A (27 bytes) ---- - .byte $EA, $EA, $86, $2C, $85, $2D, $A5, $2C, $09, $08, $20, $1B, $80, $20, $25, $80 ; CPU:$8000 PRG:0000 EA EA 86 2C 85 2D A5 2C 09 08 20 1B 80 20 25 80 - .byte $A5, $2C, $09, $08, $4C, $1B, $80, $85, $2C, $09, $00 ; CPU:$8010 PRG:0010 A5 2C 09 08 4C 1B 80 85 2C 09 00 +; ---- data $8000-$8003 (4 bytes) ---- + .byte $EA, $EA, $86, $2C ; CPU:$8000 PRG:0000 EA EA 86 2C ; ----------------------------------------------------------------------------- -; Routine: MainInit -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. +; Routine: BankedCall +; Global: Switches the PRG bank and dispatches to the handler the caller named. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. ; ----------------------------------------------------------------------------- -MainInit: +BankedCall: + sta HandlerIndex ; CPU:$8004 PRG:0004 85 2D + lda PrgBankNumber ; CPU:$8006 PRG:0006 A5 2C + ora #$08 ; CPU:$8008 PRG:0008 09 08 + jsr SelectPrgBankByIndex ; CPU:$800A PRG:000A 20 1B 80 + jsr Sub_8025 ; CPU:$800D PRG:000D 20 25 80 + lda PrgBankNumber ; CPU:$8010 PRG:0010 A5 2C + ora #$08 ; CPU:$8012 PRG:0012 09 08 + jmp SelectPrgBankByIndex ; CPU:$8014 PRG:0014 4C 1B 80 +; ---- data $8017-$801A (4 bytes) ---- + .byte $85, $2C, $09, $00 ; CPU:$8017 PRG:0017 85 2C 09 00 +; ----------------------------------------------------------------------------- +; Routine: SelectPrgBankByIndex +; Global: Switches the PRG bank to the one in X. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SelectPrgBankByIndex: tax ; CPU:$801B PRG:001B AA - jsr $FF70 ; CPU:$801C PRG:001C 20 70 FF + jsr SwitchPrgBank ; CPU:$801C PRG:001C 20 70 FF lda $8026,x ; CPU:$801F PRG:001F BD 26 80 sta $8026,x ; CPU:$8022 PRG:0022 9D 26 80 +; ----------------------------------------------------------------------------- +; Routine: Sub_8025 +; Global: Branch target inside Sub: taken when 8025. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_8025: rts ; CPU:$8025 PRG:0025 60 -index_table: ; ---- data $8026-$8035 (16 bytes) ---- ; referenced by `lda $8026,x` at $801F (operand $8026 falls inside this region) ; referenced by `sta $8026,x` at $8022 (operand $8026 falls inside this region) .byte $00, $01, $02, $03, $04, $05, $06, $07, $10, $11, $12, $13, $14, $15, $16, $17 ; CPU:$8026 PRG:0026 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 ; ----------------------------------------------------------------------------- -; Routine: ControlSetup -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. +; Routine: InitializeGame +; Global: Resets the CPU, the PPU and the work RAM, then idles for the NMI. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. ; ----------------------------------------------------------------------------- -ControlSetup: +InitializeGame: sei ; CPU:$8036 PRG:0036 78 cld ; CPU:$8037 PRG:0037 D8 ; ----------------------------------------------------------------------------- -; Routine: PollWait -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. +; Routine: WaitForVBlank +; Global: Spins until the PPU signals the start of vertical blank. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. ; ----------------------------------------------------------------------------- -PollWait: - lda $2002 ; CPU:$8038 PRG:0038 AD 02 20 - bpl Sub_PollWait ; CPU:$803B PRG:003B 10 FB +WaitForVBlank: + lda PPUSTATUS ; CPU:$8038 PRG:0038 AD 02 20 + bpl WaitForVBlank ; CPU:$803B PRG:003B 10 FB lda #$00 ; CPU:$803D PRG:003D A9 00 - sta $2000 ; CPU:$803F PRG:003F 8D 00 20 - sta $2001 ; CPU:$8042 PRG:0042 8D 01 20 + sta PPUCTRL ; CPU:$803F PRG:003F 8D 00 20 + sta PPUMASK ; CPU:$8042 PRG:0042 8D 01 20 ldx #$FF ; CPU:$8045 PRG:0045 A2 FF txs ; CPU:$8047 PRG:0047 9A lda #$00 ; CPU:$8048 PRG:0048 A9 00 - jsr MainInit ; CPU:$804A PRG:004A 20 1B 80 + jsr SelectPrgBankByIndex ; CPU:$804A PRG:004A 20 1B 80 lda #$00 ; CPU:$804D PRG:004D A9 00 sta Zp00 ; CPU:$804F PRG:004F 85 00 sta Zp01 ; CPU:$8051 PRG:0051 85 01 ldy #$02 ; CPU:$8053 PRG:0053 A0 02 ldx #$06 ; CPU:$8055 PRG:0055 A2 06 ; ----------------------------------------------------------------------------- -; Routine: DataLoop -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. +; Routine: ClearRamLoop +; Global: Clears the work RAM one 224 byte page at a time. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. ; ----------------------------------------------------------------------------- -DataLoop: +ClearRamLoop: sta (Zp00),y ; CPU:$8057 PRG:0057 91 00 iny ; CPU:$8059 PRG:0059 C8 cpx #$00 ; CPU:$805A PRG:005A E0 00 - bne Sub_CounterCheck ; CPU:$805C PRG:005C D0 04 + bne ClearRamPageDone ; CPU:$805C PRG:005C D0 04 cpy #$E0 ; CPU:$805E PRG:005E C0 E0 - bcs Sub_StateStore ; CPU:$8060 PRG:0060 B0 09 + bcs InitGameVariables ; CPU:$8060 PRG:0060 B0 09 ; ----------------------------------------------------------------------------- -; Routine: CounterCheck -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. +; Routine: ClearRamPageDone +; Global: Moves on to the next page of the RAM clear. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. ; ----------------------------------------------------------------------------- -CounterCheck: +ClearRamPageDone: cpy #$00 ; CPU:$8062 PRG:0062 C0 00 - bne Sub_DataLoop ; CPU:$8064 PRG:0064 D0 F1 + bne ClearRamLoop ; CPU:$8064 PRG:0064 D0 F1 inc Zp01 ; CPU:$8066 PRG:0066 E6 01 dex ; CPU:$8068 PRG:0068 CA - bpl Sub_DataLoop ; CPU:$8069 PRG:0069 10 EC + bpl ClearRamLoop ; CPU:$8069 PRG:0069 10 EC ; ----------------------------------------------------------------------------- -; Routine: StateStore -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. +; Routine: InitGameVariables +; Global: Sets the sound, scroll and sprite registers up. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. ; ----------------------------------------------------------------------------- -StateStore: +InitGameVariables: sta Zp00 ; CPU:$806B PRG:006B 85 00 sta Zp01 ; CPU:$806D PRG:006D 85 01 lda #$00 ; CPU:$806F PRG:006F A9 00 - sta $4015 ; CPU:$8071 PRG:0071 8D 15 40 + sta APUSTATUS ; CPU:$8071 PRG:0071 8D 15 40 lda #$1E ; CPU:$8074 PRG:0074 A9 1E sta Zp02 ; CPU:$8076 PRG:0076 85 02 lda #$88 ; CPU:$8078 PRG:0078 A9 88 - sta $2000 ; CPU:$807A PRG:007A 8D 00 20 + sta PPUCTRL ; CPU:$807A PRG:007A 8D 00 20 sta Zp01 ; CPU:$807D PRG:007D 85 01 lda #$01 ; CPU:$807F PRG:007F A9 01 - sta Zp6A ; CPU:$8081 PRG:0081 85 6A + sta GameMode ; CPU:$8081 PRG:0081 85 6A ; ----------------------------------------------------------------------------- -; Routine: CounterInc -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. +; Routine: IdleWaitLoop +; Global: The loop the game sits in between two NMI handlers. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. ; ----------------------------------------------------------------------------- -CounterInc: - inc Zp2F ; CPU:$8083 PRG:0083 E6 2F - jmp CounterInc ; CPU:$8085 PRG:0085 4C 83 80 -game_data: -; ---- data $8088-$8188 (257 bytes) ---- - .byte $08, $09, $0A, $0B, $0C, $0D, $0E, $AD, $B8, $03, $F0, $03, $20, $9D, $84, $AD ; CPU:$8088 PRG:0088 08 09 0A 0B 0C 0D 0E AD B8 03 F0 03 20 9D 84 AD - .byte $00, $03, $F0, $0A, $A0, $00, $A2, $00, $20, $70, $82, $4C, $C4, $80, $A9, $00 ; CPU:$8098 PRG:0098 00 03 F0 0A A0 00 A2 00 20 70 82 4C C4 80 A9 00 - .byte $8D, $03, $20, $A9, $02, $8D, $14, $40, $AD, $38, $03, $F0, $07, $A2, $00, $A0 ; CPU:$80A8 PRG:00A8 8D 03 20 A9 02 8D 14 40 AD 38 03 F0 07 A2 00 A0 - .byte $00, $20, $C8, $82, $AD, $B0, $01, $F0, $03, $20, $B1, $81, $A9, $08, $20, $04 ; CPU:$80B8 PRG:00B8 00 20 C8 82 AD B0 01 F0 03 20 B1 81 A9 08 20 04 - .byte $80, $A5, $01, $29, $7F, $8D, $00, $20, $A5, $03, $8D, $05, $20, $A5, $04, $8D ; CPU:$80C8 PRG:00C8 80 A5 01 29 7F 8D 00 20 A5 03 8D 05 20 A5 04 8D - .byte $05, $20, $A5, $02, $8D, $01, $20, $20, $3F, $81, $AD, $E5, $05, $F0, $0E, $A5 ; CPU:$80D8 PRG:00D8 05 20 A5 02 8D 01 20 20 3F 81 AD E5 05 F0 0E A5 - .byte $31, $29, $3F, $D0, $08, $AD, $E6, $05, $F0, $03, $CE, $E6, $05, $A9, $00, $8D ; CPU:$80E8 PRG:00E8 31 29 3F D0 08 AD E6 05 F0 03 CE E6 05 A9 00 8D - .byte $00, $03, $85, $36, $A5, $6A, $F0, $06, $20, $DD, $85, $4C, $1F, $81, $20, $88 ; CPU:$80F8 PRG:00F8 00 03 85 36 A5 6A F0 06 20 DD 85 4C 1F 81 20 88 - .byte $81, $AD, $E5, $05, $F0, $0E, $A9, $00, $85, $26, $85, $27, $85, $2B, $A5, $2A ; CPU:$8108 PRG:0108 81 AD E5 05 F0 0E A9 00 85 26 85 27 85 2B A5 2A - .byte $29, $10, $85, $2A, $20, $86, $97, $20, $C3, $83, $20, $E9, $82, $A9, $02, $20 ; CPU:$8118 PRG:0118 29 10 85 2A 20 86 97 20 C3 83 20 E9 82 A9 02 20 - .byte $04, $80, $AD, $02, $20, $AD, $DE, $03, $D0, $02, $A5, $01, $8D, $00, $20, $A9 ; CPU:$8128 PRG:0128 04 80 AD 02 20 AD DE 03 D0 02 A5 01 8D 00 20 A9 - .byte $00, $8D, $DE, $03, $E6, $31, $40, $A9, $01, $8D, $16, $40, $4A, $AA, $8D, $16 ; CPU:$8138 PRG:0138 00 8D DE 03 E6 31 40 A9 01 8D 16 40 4A AA 8D 16 - .byte $40, $20, $4D, $81, $E8, $A9, $00, $85, $05, $A0, $08, $48, $BD, $16, $40, $85 ; CPU:$8148 PRG:0148 40 20 4D 81 E8 A9 00 85 05 A0 08 48 BD 16 40 85 - .byte $07, $4A, $4A, $26, $05, $46, $07, $68, $2A, $88, $D0, $EF, $05, $05, $95, $26 ; CPU:$8158 PRG:0158 07 4A 4A 26 05 46 07 68 2A 88 D0 EF 05 05 95 26 - .byte $55, $28, $35, $26, $95, $2A, $B5, $26, $95, $28, $60, $0A, $A8, $68, $85, $13 ; CPU:$8168 PRG:0168 55 28 35 26 95 2A B5 26 95 28 60 0A A8 68 85 13 - .byte $68, $85, $14, $C8, $B1, $13, $85, $11, $C8, $B1, $13, $85, $12, $6C, $11, $00 ; CPU:$8178 PRG:0178 68 85 14 C8 B1 13 85 11 C8 B1 13 85 12 6C 11 00 - .byte $A0 ; CPU:$8188 PRG:0188 A0 +IdleWaitLoop: + inc IdleCounter ; CPU:$8083 PRG:0083 E6 2F + jmp IdleWaitLoop ; CPU:$8085 PRG:0085 4C 83 80 +; ---- data $8088-$808E (7 bytes) ---- + .byte $08, $09, $0A, $0B, $0C, $0D, $0E ; CPU:$8088 PRG:0088 08 09 0A 0B 0C 0D 0E ; ----------------------------------------------------------------------------- -; Routine: NMIEntry -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. +; Routine: NmiHandler +; Global: The frame handler: redraws the screen, reads the pad and runs the game. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. ; ----------------------------------------------------------------------------- -NMIEntry: - brk ; CPU:$8189 PRG:0189 00 -nmi_data: -; ---- data $818A-$BFFF (15990 bytes) ---- - .byte $A9, $F8, $99, $00, $02, $C8, $C8, $C8, $C8, $D0, $F7, $60, $0A, $0A, $18, $69 ; CPU:$818A PRG:018A A9 F8 99 00 02 C8 C8 C8 C8 D0 F7 60 0A 0A 18 69 - .byte $20, $A2, $00, $8D, $06, $20, $8E, $06, $20, $A0, $03, $A9, $FF, $8D, $07, $20 ; CPU:$819A PRG:019A 20 A2 00 8D 06 20 8E 06 20 A0 03 A9 FF 8D 07 20 - .byte $CA, $D0, $FA, $88, $10, $F7, $60, $A2, $00, $BD, $B0, $01, $F0, $5C, $85, $12 ; CPU:$81AA PRG:01AA CA D0 FA 88 10 F7 60 A2 00 BD B0 01 F0 5C 85 12 - .byte $BD, $B1, $01, $85, $11, $BD, $B2, $01, $85, $20, $85, $21, $BD, $B3, $01, $85 ; CPU:$81BA PRG:01BA BD B1 01 85 11 BD B2 01 85 20 85 21 BD B3 01 85 - .byte $22, $BD, $B4, $01, $85, $05, $BD, $B5, $01, $85, $06, $A0, $00, $AD, $02, $20 ; CPU:$81CA PRG:01CA 22 BD B4 01 85 05 BD B5 01 85 06 A0 00 AD 02 20 - .byte $A5, $12, $8D, $06, $20, $A5, $11, $8D, $06, $20, $B1, $05, $8D, $07, $20, $C8 ; CPU:$81DA PRG:01DA A5 12 8D 06 20 A5 11 8D 06 20 B1 05 8D 07 20 C8 - .byte $C6, $20, $D0, $F6, $C6, $22, $F0, $12, $A5, $21, $85, $20, $A5, $11, $18, $69 ; CPU:$81EA PRG:01EA C6 20 D0 F6 C6 22 F0 12 A5 21 85 20 A5 11 18 69 - .byte $20, $85, $11, $90, $D8, $E6, $12, $4C, $D7, $81, $E0, $06, $B0, $07, $A2, $06 ; CPU:$81FA PRG:01FA 20 85 11 90 D8 E6 12 4C D7 81 E0 06 B0 07 A2 06 - .byte $BD, $B0, $01, $D0, $A9, $A9, $00, $8D, $B0, $01, $60, $85, $11, $BD, $01, $03 ; CPU:$820A PRG:020A BD B0 01 D0 A9 A9 00 8D B0 01 60 85 11 BD 01 03 - .byte $85, $12, $BD, $02, $03, $85, $13, $BD, $03, $03, $85, $14, $E8, $E8, $E8, $E8 ; CPU:$821A PRG:021A 85 12 BD 02 03 85 13 BD 03 03 85 14 E8 E8 E8 E8 - .byte $A5, $12, $C9, $24, $F0, $40, $A0, $02, $AD, $02, $20, $A5, $12, $8D, $06, $20 ; CPU:$822A PRG:022A A5 12 C9 24 F0 40 A0 02 AD 02 20 A5 12 8D 06 20 - .byte $A5, $11, $8D, $06, $20, $B1, $13, $8D, $07, $20, $C8, $B1, $13, $8D, $07, $20 ; CPU:$823A PRG:023A A5 11 8D 06 20 B1 13 8D 07 20 C8 B1 13 8D 07 20 - .byte $C8, $A9, $20, $18, $65, $11, $85, $11, $A5, $12, $69, $00, $85, $12, $AD, $02 ; CPU:$824A PRG:024A C8 A9 20 18 65 11 85 11 A5 12 69 00 85 12 AD 02 - .byte $20, $A5, $12, $8D, $06, $20, $A5, $11, $8D, $06, $20, $B1, $13, $8D, $07, $20 ; CPU:$825A PRG:025A 20 A5 12 8D 06 20 A5 11 8D 06 20 B1 13 8D 07 20 - .byte $C8, $B1, $13, $8D, $07, $20, $BD, $00, $03, $D0, $A0, $60, $85, $11, $BD, $39 ; CPU:$826A PRG:026A C8 B1 13 8D 07 20 BD 00 03 D0 A0 60 85 11 BD 39 - .byte $03, $85, $12, $BD, $3A, $03, $85, $13, $BD, $3B, $03, $85, $14, $8A, $18, $69 ; CPU:$827A PRG:027A 03 85 12 BD 3A 03 85 13 BD 3B 03 85 14 8A 18 69 - .byte $04, $85, $22, $A0, $00, $B1, $13, $85, $21, $85, $1F, $C8, $B1, $13, $85, $25 ; CPU:$828A PRG:028A 04 85 22 A0 00 B1 13 85 21 85 1F C8 B1 13 85 25 - .byte $AE, $02, $20, $A5, $12, $8D, $06, $20, $A5, $11, $8D, $06, $20, $C8, $B1, $13 ; CPU:$829A PRG:029A AE 02 20 A5 12 8D 06 20 A5 11 8D 06 20 C8 B1 13 - .byte $8D, $07, $20, $C6, $1F, $D0, $F6, $A9, $20, $18, $65, $11, $85, $11, $A5, $12 ; CPU:$82AA PRG:02AA 8D 07 20 C6 1F D0 F6 A9 20 18 65 11 85 11 A5 12 - .byte $69, $00, $85, $12, $A5, $21, $85, $1F, $C6, $25, $D0, $D4, $A6, $22, $BD, $38 ; CPU:$82BA PRG:02BA 69 00 85 12 A5 21 85 1F C6 25 D0 D4 A6 22 BD 38 - .byte $03, $D0, $A9, $A9, $00, $85, $37, $8D, $38, $03, $60, $A9, $00, $A2, $08, $46 ; CPU:$82CA PRG:02CA 03 D0 A9 A9 00 85 37 8D 38 03 60 A9 00 A2 08 46 - .byte $13, $90, $03, $18, $65, $15, $4A, $66, $17, $CA, $D0, $F3, $85, $18, $60, $A2 ; CPU:$82DA PRG:02DA 13 90 03 18 65 15 4A 66 17 CA D0 F3 85 18 60 A2 - .byte $00, $86, $1F, $A5, $31, $29, $01, $D0, $04, $A9, $63, $D0, $02, $A9, $01, $85 ; CPU:$82EA PRG:02EA 00 86 1F A5 31 29 01 D0 04 A9 63 D0 02 A9 01 85 - .byte $1E, $BD, $58, $03, $F0, $03, $20, $0C, $83, $E6, $1F, $A6, $1F, $E0, $10, $90 ; CPU:$82FA PRG:02FA 1E BD 58 03 F0 03 20 0C 83 E6 1F A6 1F E0 10 90 - .byte $F0, $60, $BD, $A8, $03, $85, $30, $A5, $1F, $A8, $0A, $AA, $BD, $68, $03, $85 ; CPU:$830A PRG:030A F0 60 BD A8 03 85 30 A5 1F A8 0A AA BD 68 03 85 - .byte $11, $BD, $69, $03, $85, $12, $B9, $88, $03, $85, $05, $85, $09, $B9, $98, $03 ; CPU:$831A PRG:031A 11 BD 69 03 85 12 B9 88 03 85 05 85 09 B9 98 03 - .byte $85, $07, $A0, $00, $B1, $11, $85, $13, $C8, $B1, $11, $85, $14, $A0, $00, $B1 ; CPU:$832A PRG:032A 85 07 A0 00 B1 11 85 13 C8 B1 11 85 14 A0 00 B1 - .byte $13, $85, $1B, $85, $1C, $C8, $B1, $13, $85, $1D, $C8, $84, $20, $84, $22, $A5 ; CPU:$833A PRG:033A 13 85 1B 85 1C C8 B1 13 85 1D C8 84 20 84 22 A5 - .byte $1E, $0A, $0A, $AA, $A5, $07, $9D, $00, $02, $A5, $09, $9D, $03, $02, $A5, $30 ; CPU:$834A PRG:034A 1E 0A 0A AA A5 07 9D 00 02 A5 09 9D 03 02 A5 30 - .byte $9D, $02, $02, $A5, $30, $29, $40, $F0, $18, $A5, $20, $18, $65, $1C, $A8, $88 ; CPU:$835A PRG:035A 9D 02 02 A5 30 29 40 F0 18 A5 20 18 65 1C A8 88 - .byte $B1, $13, $9D, $01, $02, $C9, $FF, $D0, $05, $A9, $F8, $9D, $00, $02, $4C, $8D ; CPU:$836A PRG:036A B1 13 9D 01 02 C9 FF D0 05 A9 F8 9D 00 02 4C 8D - .byte $83, $A4, $22, $B1, $13, $9D, $01, $02, $C9, $FF, $D0, $05, $A9, $F8, $9D, $00 ; CPU:$837A PRG:037A 83 A4 22 B1 13 9D 01 02 C9 FF D0 05 A9 F8 9D 00 - .byte $02, $E6, $22, $A5, $09, $18, $69, $08, $85, $09, $A5, $31, $29, $01, $D0, $05 ; CPU:$838A PRG:038A 02 E6 22 A5 09 18 69 08 85 09 A5 31 29 01 D0 05 - .byte $C6, $1E, $4C, $A1, $83, $E6, $1E, $C6, $1C, $D0, $A4, $C6, $1D, $F0, $19, $A5 ; CPU:$839A PRG:039A C6 1E 4C A1 83 E6 1E C6 1C D0 A4 C6 1D F0 19 A5 - .byte $1B, $85, $1C, $18, $65, $20, $85, $20, $85, $22, $A5, $07, $18, $69, $08, $85 ; CPU:$83AA PRG:03AA 1B 85 1C 18 65 20 85 20 85 22 A5 07 18 69 08 85 - .byte $07, $A5, $05, $85, $09, $4C, $49, $83, $60, $A2, $00, $86, $1B, $BD, $58, $03 ; CPU:$83BA PRG:03BA 07 A5 05 85 09 4C 49 83 60 A2 00 86 1B BD 58 03 - .byte $F0, $03, $20, $0C, $84, $E6, $1B, $A6, $1B, $E0, $10, $90, $F0, $60, $A5, $31 ; CPU:$83CA PRG:03CA F0 03 20 0C 84 E6 1B A6 1B E0 10 90 F0 60 A5 31 - .byte $29, $3F, $D0, $2D, $BD, $68, $03, $85, $11, $BD, $69, $03, $85, $12, $A0, $02 ; CPU:$83DA PRG:03DA 29 3F D0 2D BD 68 03 85 11 BD 69 03 85 12 A0 02 - .byte $B1, $11, $C9, $FF, $D0, $09, $C8, $B1, $11, $C8, $C9, $FF, $D0, $01, $60, $A5 ; CPU:$83EA PRG:03EA B1 11 C9 FF D0 09 C8 B1 11 C8 C9 FF D0 01 60 A5 - .byte $1B, $0A, $AA, $BD, $68, $03, $18, $69, $02, $9D, $68, $03, $90, $03, $FE, $69 ; CPU:$83FA PRG:03FA 1B 0A AA BD 68 03 18 69 02 9D 68 03 90 03 FE 69 - .byte $03, $60, $A5, $31, $29, $0F, $D0, $F9, $A5, $1B, $0A, $AA, $BD, $68, $03, $18 ; CPU:$840A PRG:040A 03 60 A5 31 29 0F D0 F9 A5 1B 0A AA BD 68 03 18 - .byte $69, $02, $9D, $68, $03, $90, $03, $FE, $69, $03, $BD, $68, $03, $85, $11, $BD ; CPU:$841A PRG:041A 69 02 9D 68 03 90 03 FE 69 03 BD 68 03 85 11 BD - .byte $69, $03, $85, $12, $A0, $00, $B1, $11, $C9, $FF, $D0, $1B, $C8, $B1, $11, $C8 ; CPU:$842A PRG:042A 69 03 85 12 A0 00 B1 11 C9 FF D0 1B C8 B1 11 C8 - .byte $C9, $FF, $D0, $13, $A4, $1B, $B9, $58, $03, $0A, $A8, $B9, $16, $F2, $9D, $68 ; CPU:$843A PRG:043A C9 FF D0 13 A4 1B B9 58 03 0A A8 B9 16 F2 9D 68 - .byte $03, $B9, $17, $F2, $9D, $69, $03, $60, $A2, $00, $BD, $58, $03, $F0, $06, $E8 ; CPU:$844A PRG:044A 03 B9 17 F2 9D 69 03 60 A2 00 BD 58 03 F0 06 E8 - .byte $E0, $10, $90, $F6, $60, $A4, $11, $B9, $06, $F2, $9D, $A8, $03, $A5, $11, $9D ; CPU:$845A PRG:045A E0 10 90 F6 60 A4 11 B9 06 F2 9D A8 03 A5 11 9D - .byte $58, $03, $86, $1B, $0A, $A8, $B9, $36, $F2, $9D, $88, $03, $B9, $37, $F2, $9D ; CPU:$846A PRG:046A 58 03 86 1B 0A A8 B9 36 F2 9D 88 03 B9 37 F2 9D - .byte $98, $03, $8A, $0A, $AA, $B9, $16, $F2, $9D, $68, $03, $B9, $17, $F2, $9D, $69 ; CPU:$847A PRG:047A 98 03 8A 0A AA B9 16 F2 9D 68 03 B9 17 F2 9D 69 - .byte $03, $60, $A9, $40, $85, $1F, $A0, $00, $B1, $11, $99, $E2, $04, $C8, $C6, $1F ; CPU:$848A PRG:048A 03 60 A9 40 85 1F A0 00 B1 11 99 E2 04 C8 C6 1F - .byte $D0, $F6, $60, $AC, $02, $20, $A0, $23, $A2, $00, $8C, $06, $20, $8D, $06, $20 ; CPU:$849A PRG:049A D0 F6 60 AC 02 20 A0 23 A2 00 8C 06 20 8D 06 20 - .byte $E8, $BD, $B8, $03, $8D, $07, $20, $E8, $BD, $B8, $03, $D0, $ED, $A9, $00, $8D ; CPU:$84AA PRG:04AA E8 BD B8 03 8D 07 20 E8 BD B8 03 D0 ED A9 00 8D - .byte $B8, $03, $85, $38, $60, $85, $20, $0A, $AA, $BD, $2B, $F7, $85, $19, $BD, $2C ; CPU:$84BA PRG:04BA B8 03 85 38 60 85 20 0A AA BD 2B F7 85 19 BD 2C - .byte $F7, $85, $1A, $A5, $6F, $D0, $01, $60, $A5, $34, $D0, $05, $C6, $19, $C6, $19 ; CPU:$84CA PRG:04CA F7 85 1A A5 6F D0 01 60 A5 34 D0 05 C6 19 C6 19 - .byte $60, $A5, $19, $18, $69, $0E, $85, $19, $60, $A5, $19, $0A, $A5, $1A, $2A, $2A ; CPU:$84DA PRG:04DA 60 A5 19 18 69 0E 85 19 60 A5 19 0A A5 1A 2A 2A - .byte $2A, $2A, $29, $38, $85, $20, $A5, $19, $6A, $6A, $29, $07, $05, $20, $A8, $18 ; CPU:$84EA PRG:04EA 2A 2A 29 38 85 20 A5 19 6A 6A 29 07 05 20 A8 18 - .byte $69, $C0, $A6, $38, $9D, $B8, $03, $E6, $38, $A5, $19, $29, $42, $6A, $6A, $6A ; CPU:$84FA PRG:04FA 69 C0 A6 38 9D B8 03 E6 38 A5 19 29 42 6A 6A 6A - .byte $6A, $6A, $85, $20, $A5, $19, $6A, $29, $01, $05, $20, $29, $03, $AA, $A5, $1B ; CPU:$850A PRG:050A 6A 6A 85 20 A5 19 6A 29 01 05 20 29 03 AA A5 1B - .byte $C9, $03, $90, $16, $B9, $E2, $04, $1D, $4E, $85, $99, $E2, $04, $A6, $38, $9D ; CPU:$851A PRG:051A C9 03 90 16 B9 E2 04 1D 4E 85 99 E2 04 A6 38 9D - .byte $B8, $03, $A9, $00, $9D, $B9, $03, $E6, $38, $60, $B9, $E2, $04, $3D, $4A, $85 ; CPU:$852A PRG:052A B8 03 A9 00 9D B9 03 E6 38 60 B9 E2 04 3D 4A 85 - .byte $99, $E2, $04, $A6, $38, $9D, $B8, $03, $A9, $00, $9D, $B9, $03, $E6, $38, $60 ; CPU:$853A PRG:053A 99 E2 04 A6 38 9D B8 03 A9 00 9D B9 03 E6 38 60 - .byte $FC, $F3, $CF, $3F, $03, $0C, $30, $C0, $A5, $31, $65, $2F, $65, $3D, $29, $3F ; CPU:$854A PRG:054A FC F3 CF 3F 03 0C 30 C0 A5 31 65 2F 65 3D 29 3F - .byte $85, $3D, $60, $A5, $11, $A8, $A6, $12, $9D, $58, $03, $B9, $06, $F2, $9D, $A8 ; CPU:$855A PRG:055A 85 3D 60 A5 11 A8 A6 12 9D 58 03 B9 06 F2 9D A8 - .byte $03, $98, $0A, $A8, $B9, $36, $F2, $9D, $88, $03, $B9, $37, $F2, $9D, $98, $03 ; CPU:$856A PRG:056A 03 98 0A A8 B9 36 F2 9D 88 03 B9 37 F2 9D 98 03 - .byte $8A, $0A, $AA, $B9, $16, $F2, $9D, $68, $03, $B9, $17, $F2, $9D, $69, $03, $60 ; CPU:$857A PRG:057A 8A 0A AA B9 16 F2 9D 68 03 B9 17 F2 9D 69 03 60 - .byte $A6, $36, $A5, $19, $9D, $00, $03, $E8, $A5, $1A, $9D, $00, $03, $E8, $A5, $17 ; CPU:$858A PRG:058A A6 36 A5 19 9D 00 03 E8 A5 1A 9D 00 03 E8 A5 17 - .byte $9D, $00, $03, $E8, $A5, $18, $9D, $00, $03, $E8, $86, $36, $60, $A6, $37, $A5 ; CPU:$859A PRG:059A 9D 00 03 E8 A5 18 9D 00 03 E8 86 36 60 A6 37 A5 - .byte $19, $9D, $38, $03, $E8, $A5, $1A, $9D, $38, $03, $E8, $A5, $17, $9D, $38, $03 ; CPU:$85AA PRG:05AA 19 9D 38 03 E8 A5 1A 9D 38 03 E8 A5 17 9D 38 03 - .byte $E8, $A5, $18, $9D, $38, $03, $E8, $86, $37, $60, $AD, $02, $20, $A9, $3F, $8D ; CPU:$85BA PRG:05BA E8 A5 18 9D 38 03 E8 86 37 60 AD 02 20 A9 3F 8D - .byte $06, $20, $A9, $00, $8D, $06, $20, $A8, $B1, $11, $8D, $07, $20, $C8, $C0, $20 ; CPU:$85CA PRG:05CA 06 20 A9 00 8D 06 20 A8 B1 11 8D 07 20 C8 C0 20 - .byte $90, $F6, $60, $E6, $75, $A5, $6A, $D0, $01, $60, $20, $E9, $82, $A5, $6A, $20 ; CPU:$85DA PRG:05DA 90 F6 60 E6 75 A5 6A D0 01 60 20 E9 82 A5 6A 20 - .byte $73, $81, $E3, $85, $06, $86, $5F, $8A, $2A, $C6, $A7, $C2, $D8, $C6, $AF, $8B ; CPU:$85EA PRG:05EA 73 81 E3 85 06 86 5F 8A 2A C6 A7 C2 D8 C6 AF 8B - .byte $55, $8F, $42, $98, $B9, $94, $21, $96, $2E, $96, $1B, $97, $A5, $6C, $D0, $6C ; CPU:$85FA PRG:05FA 55 8F 42 98 B9 94 21 96 2E 96 1B 97 A5 6C D0 6C - .byte $A9, $00, $8D, $E7, $05, $8D, $E8, $05, $8D, $E9, $05, $A9, $02, $20, $88, $81 ; CPU:$860A PRG:060A A9 00 8D E7 05 8D E8 05 8D E9 05 A9 02 20 88 81 - .byte $E6, $6C, $A9, $00, $85, $75, $85, $76, $85, $2E, $A9, $00, $20, $04, $80, $A9 ; CPU:$861A PRG:061A E6 6C A9 00 85 75 85 76 85 2E A9 00 20 04 80 A9 - .byte $00, $8D, $01, $02, $A9, $C0, $8D, $03, $02, $A9, $45, $8D, $00, $02, $A9, $E0 ; CPU:$862A PRG:062A 00 8D 01 02 A9 C0 8D 03 02 A9 45 8D 00 02 A9 E0 - .byte $8D, $02, $02, $A9, $0F, $8D, $E6, $05, $8D, $E5, $05, $A5, $00, $D0, $07, $20 ; CPU:$863A PRG:063A 8D 02 02 A9 0F 8D E6 05 8D E5 05 A5 00 D0 07 20 - .byte $34, $8E, $A9, $01, $85, $00, $A2, $00, $20, $84, $90, $A9, $20, $85, $78, $A5 ; CPU:$864A PRG:064A 34 8E A9 01 85 00 A2 00 20 84 90 A9 20 85 78 A5 - .byte $01, $29, $88, $09, $88, $85, $01, $A9, $03, $8D, $DE, $00, $A9, $01, $8D, $DD ; CPU:$865A PRG:065A 01 29 88 09 88 85 01 A9 03 8D DE 00 A9 01 8D DD - .byte $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $60, $AD, $02, $20, $29 ; CPU:$866A PRG:066A 00 A9 05 20 04 80 A9 00 8D DD 00 60 AD 02 20 29 - .byte $40, $D0, $F9, $AD, $02, $20, $29, $40, $F0, $F9, $A0, $18, $88, $D0, $FD, $AD ; CPU:$867A PRG:067A 40 D0 F9 AD 02 20 29 40 F0 F9 A0 18 88 D0 FD AD - .byte $02, $20, $A9, $98, $8D, $DE, $03, $8D, $00, $20, $AD, $E6, $05, $D0, $38, $A9 ; CPU:$868A PRG:068A 02 20 A9 98 8D DE 03 8D 00 20 AD E6 05 D0 38 A9 - .byte $00, $85, $6C, $A9, $03, $85, $6A, $A9, $02, $85, $5B, $85, $5D, $85, $5A, $85 ; CPU:$869A PRG:069A 00 85 6C A9 03 85 6A A9 02 85 5B 85 5D 85 5A 85 - .byte $5C, $A9, $5A, $8D, $E6, $05, $A9, $00, $8D, $E2, $05, $8D, $E1, $05, $8D, $E4 ; CPU:$86AA PRG:06AA 5C A9 5A 8D E6 05 A9 00 8D E2 05 8D E1 05 8D E4 - .byte $05, $8D, $E3, $05, $A9, $00, $85, $95, $AD, $EF, $06, $29, $01, $85, $6F, $49 ; CPU:$86BA PRG:06BA 05 8D E3 05 A9 00 85 95 AD EF 06 29 01 85 6F 49 - .byte $01, $85, $96, $EE, $EF, $06, $60, $20, $FC, $89, $AD, $E9, $05, $D0, $53, $AD ; CPU:$86CA PRG:06CA 01 85 96 EE EF 06 60 20 FC 89 AD E9 05 D0 53 AD - .byte $E8, $05, $D0, $12, $A5, $2A, $C9, $20, $D0, $48, $A9, $01, $8D, $E8, $05, $A9 ; CPU:$86DA PRG:06DA E8 05 D0 12 A5 2A C9 20 D0 48 A9 01 8D E8 05 A9 - .byte $00, $85, $2A, $8D, $E7, $05, $AD, $E8, $05, $F0, $37, $AE, $E7, $05, $A5, $2A ; CPU:$86EA PRG:06EA 00 85 2A 8D E7 05 AD E8 05 F0 37 AE E7 05 A5 2A - .byte $F0, $30, $DD, $6E, $87, $F0, $08, $A9, $01, $8D, $E9, $05, $4C, $2C, $87, $EE ; CPU:$86FA PRG:06FA F0 30 DD 6E 87 F0 08 A9 01 8D E9 05 4C 2C 87 EE - .byte $E7, $05, $AD, $E7, $05, $C9, $0C, $90, $19, $A9, $01, $85, $99, $A9, $00, $85 ; CPU:$870A PRG:070A E7 05 AD E7 05 C9 0C 90 19 A9 01 85 99 A9 00 85 - .byte $91, $85, $97, $85, $6C, $8D, $E5, $05, $A9, $08, $85, $6A, $A9, $04, $20, $63 ; CPU:$871A PRG:071A 91 85 97 85 6C 8D E5 05 A9 08 85 6A A9 04 20 63 - .byte $86, $60, $A5, $2A, $29, $10, $F0, $1C, $E6, $6A, $A9, $00, $85, $6C, $8D, $B0 ; CPU:$872A PRG:072A 86 60 A5 2A 29 10 F0 1C E6 6A A9 00 85 6C 8D B0 - .byte $01, $A0, $00, $8C, $E5, $05, $8C, $E6, $05, $A9, $F8, $99, $00, $02, $C8, $C8 ; CPU:$873A PRG:073A 01 A0 00 8C E5 05 8C E6 05 A9 F8 99 00 02 C8 C8 - .byte $C8, $C8, $D0, $F7, $60, $01, $A5, $2A, $29, $10, $F0, $17, $A9, $00, $85, $6C ; CPU:$874A PRG:074A C8 C8 D0 F7 60 01 A5 2A 29 10 F0 17 A9 00 85 6C - .byte $85, $6A, $8D, $B0, $01, $8D, $00, $20, $8D, $01, $20, $A5, $01, $29, $88, $09 ; CPU:$875A PRG:075A 85 6A 8D B0 01 8D 00 20 8D 01 20 A5 01 29 88 09 - .byte $88, $85, $01, $60, $08, $08, $04, $04, $02, $02, $01, $01, $80, $80, $40, $40 ; CPU:$876A PRG:076A 88 85 01 60 08 08 04 04 02 02 01 01 80 80 40 40 - .byte $A2, $00, $A0, $00, $BD, $EC, $87, $99, $00, $02, $99, $F8, $02, $C8, $E8, $E0 ; CPU:$877A PRG:077A A2 00 A0 00 BD EC 87 99 00 02 99 F8 02 C8 E8 E0 - .byte $08, $90, $F1, $A9, $21, $8D, $FA, $02, $A9, $22, $8D, $FE, $02, $A0, $00, $A5 ; CPU:$878A PRG:078A 08 90 F1 A9 21 8D FA 02 A9 22 8D FE 02 A0 00 A5 - .byte $77, $C9, $40, $B0, $02, $A0, $F8, $0A, $AA, $BD, $F4, $87, $18, $69, $7A, $99 ; CPU:$879A PRG:079A 77 C9 40 B0 02 A0 F8 0A AA BD F4 87 18 69 7A 99 - .byte $03, $02, $BD, $F5, $87, $18, $69, $60, $99, $00, $02, $E6, $77, $A5, $77, $C9 ; CPU:$87AA PRG:07AA 03 02 BD F5 87 18 69 60 99 00 02 E6 77 A5 77 C9 - .byte $80, $90, $04, $A9, $00, $85, $77, $A0, $FC, $A5, $78, $C9, $40, $B0, $02, $A0 ; CPU:$87BA PRG:07BA 80 90 04 A9 00 85 77 A0 FC A5 78 C9 40 B0 02 A0 - .byte $04, $0A, $AA, $BD, $F4, $88, $18, $69, $7A, $99, $03, $02, $BD, $F5, $88, $18 ; CPU:$87CA PRG:07CA 04 0A AA BD F4 88 18 69 7A 99 03 02 BD F5 88 18 - .byte $69, $60, $99, $00, $02, $C6, $78, $A5, $78, $C9, $81, $90, $04, $A9, $7F, $85 ; CPU:$87DA PRG:07DA 69 60 99 00 02 C6 78 A5 78 C9 81 90 04 A9 7F 85 - .byte $78, $60, $F8, $BF, $01, $00, $F8, $BF, $02, $00, $45, $29, $44, $2A, $43, $2B ; CPU:$87EA PRG:07EA 78 60 F8 BF 01 00 F8 BF 02 00 45 29 44 2A 43 2B - .byte $42, $2B, $41, $2C, $3F, $2D, $3E, $2D, $3C, $2E, $3A, $2E, $38, $2E, $36, $2E ; CPU:$87FA PRG:07FA 42 2B 41 2C 3F 2D 3E 2D 3C 2E 3A 2E 38 2E 36 2E - .byte $33, $2E, $31, $2E, $2E, $2E, $2C, $2D, $29, $2D, $26, $2C, $23, $2C, $20, $2B ; CPU:$880A PRG:080A 33 2E 31 2E 2E 2E 2C 2D 29 2D 26 2C 23 2C 20 2B - .byte $1D, $2A, $1A, $29, $17, $28, $13, $27, $10, $25, $0C, $24, $09, $22, $06, $21 ; CPU:$881A PRG:081A 1D 2A 1A 29 17 28 13 27 10 25 0C 24 09 22 06 21 - .byte $02, $1F, $FF, $1E, $FB, $1C, $F8, $1A, $F4, $18, $F1, $16, $EE, $14, $EA, $12 ; CPU:$882A PRG:082A 02 1F FF 1E FB 1C F8 1A F4 18 F1 16 EE 14 EA 12 - .byte $E7, $10, $E4, $0E, $E1, $0C, $DE, $09, $DB, $07, $D8, $05, $D5, $03, $D2, $00 ; CPU:$883A PRG:083A E7 10 E4 0E E1 0C DE 09 DB 07 D8 05 D5 03 D2 00 - .byte $D0, $FE, $CD, $FC, $CB, $FA, $C9, $F7, $C7, $F5, $C5, $F3, $C3, $F1, $C1, $EF ; CPU:$884A PRG:084A D0 FE CD FC CB FA C9 F7 C7 F5 C5 F3 C3 F1 C1 EF - .byte $C0, $ED, $BE, $EB, $BD, $E9, $BC, $E7, $BB, $E5, $BB, $E3, $BA, $E1, $BA, $E0 ; CPU:$885A PRG:085A C0 ED BE EB BD E9 BC E7 BB E5 BB E3 BA E1 BA E0 - .byte $B9, $DE, $B9, $DD, $BA, $DB, $BA, $DA, $BA, $D9, $BB, $D7, $BC, $D6, $BD, $D5 ; CPU:$886A PRG:086A B9 DE B9 DD BA DB BA DA BA D9 BB D7 BC D6 BD D5 - .byte $BE, $D5, $BF, $D4, $C1, $D3, $C2, $D3, $C4, $D2, $C6, $D2, $C8, $D2, $CA, $D2 ; CPU:$887A PRG:087A BE D5 BF D4 C1 D3 C2 D3 C4 D2 C6 D2 C8 D2 CA D2 - .byte $CD, $D2, $CF, $D2, $D2, $D2, $D4, $D3, $D7, $D3, $DA, $D4, $DD, $D4, $E0, $D5 ; CPU:$888A PRG:088A CD D2 CF D2 D2 D2 D4 D3 D7 D3 DA D4 DD D4 E0 D5 - .byte $E3, $D6, $E6, $D7, $E9, $D8, $ED, $D9, $F0, $DB, $F4, $DC, $F7, $DE, $FA, $DF ; CPU:$889A PRG:089A E3 D6 E6 D7 E9 D8 ED D9 F0 DB F4 DC F7 DE FA DF - .byte $FE, $E1, $01, $E2, $05, $E4, $08, $E6, $0C, $E8, $0F, $EA, $12, $EC, $16, $EE ; CPU:$88AA PRG:08AA FE E1 01 E2 05 E4 08 E6 0C E8 0F EA 12 EC 16 EE - .byte $19, $F0, $1C, $F2, $1F, $F4, $22, $F7, $25, $F9, $28, $FB, $2B, $FD, $2E, $00 ; CPU:$88BA PRG:08BA 19 F0 1C F2 1F F4 22 F7 25 F9 28 FB 2B FD 2E 00 - .byte $30, $02, $33, $04, $35, $06, $37, $09, $39, $0B, $3B, $0D, $3D, $0F, $3F, $11 ; CPU:$88CA PRG:08CA 30 02 33 04 35 06 37 09 39 0B 3B 0D 3D 0F 3F 11 - .byte $40, $13, $42, $15, $43, $17, $44, $19, $45, $1B, $45, $1D, $46, $1F, $46, $20 ; CPU:$88DA PRG:08DA 40 13 42 15 43 17 44 19 45 1B 45 1D 46 1F 46 20 - .byte $47, $22, $47, $23, $46, $25, $46, $26, $46, $27, $BA, $27, $BA, $26, $BA, $25 ; CPU:$88EA PRG:08EA 47 22 47 23 46 25 46 26 46 27 BA 27 BA 26 BA 25 - .byte $B9, $23, $B9, $22, $BA, $20, $BA, $1F, $BB, $1D, $BB, $1B, $BC, $19, $BD, $17 ; CPU:$88FA PRG:08FA B9 23 B9 22 BA 20 BA 1F BB 1D BB 1B BC 19 BD 17 - .byte $BE, $15, $C0, $13, $C1, $11, $C3, $0F, $C5, $0D, $C7, $0B, $C9, $09, $CB, $06 ; CPU:$890A PRG:090A BE 15 C0 13 C1 11 C3 0F C5 0D C7 0B C9 09 CB 06 - .byte $CD, $04, $D0, $02, $D2, $00, $D5, $FD, $D8, $FB, $DB, $F9, $DE, $F7, $E1, $F4 ; CPU:$891A PRG:091A CD 04 D0 02 D2 00 D5 FD D8 FB DB F9 DE F7 E1 F4 - .byte $E4, $F2, $E7, $F0, $EA, $EE, $EE, $EC, $F1, $EA, $F4, $E8, $F8, $E6, $FB, $E4 ; CPU:$892A PRG:092A E4 F2 E7 F0 EA EE EE EC F1 EA F4 E8 F8 E6 FB E4 - .byte $FF, $E2, $02, $E1, $06, $DF, $09, $DE, $0C, $DC, $10, $DB, $13, $D9, $17, $D8 ; CPU:$893A PRG:093A FF E2 02 E1 06 DF 09 DE 0C DC 10 DB 13 D9 17 D8 - .byte $1A, $D7, $1D, $D6, $20, $D5, $23, $D4, $26, $D4, $29, $D3, $2C, $D3, $2E, $D2 ; CPU:$894A PRG:094A 1A D7 1D D6 20 D5 23 D4 26 D4 29 D3 2C D3 2E D2 - .byte $31, $D2, $33, $D2, $36, $D2, $38, $D2, $3A, $D2, $3C, $D2, $3E, $D3, $3F, $D3 ; CPU:$895A PRG:095A 31 D2 33 D2 36 D2 38 D2 3A D2 3C D2 3E D3 3F D3 - .byte $41, $D4, $42, $D5, $43, $D5, $44, $D6, $45, $D7, $46, $D9, $46, $DA, $46, $DB ; CPU:$896A PRG:096A 41 D4 42 D5 43 D5 44 D6 45 D7 46 D9 46 DA 46 DB - .byte $47, $DD, $47, $DE, $46, $E0, $46, $E1, $45, $E3, $45, $E5, $44, $E7, $43, $E9 ; CPU:$897A PRG:097A 47 DD 47 DE 46 E0 46 E1 45 E3 45 E5 44 E7 43 E9 - .byte $42, $EB, $40, $ED, $3F, $EF, $3D, $F1, $3B, $F3, $39, $F5, $37, $F7, $35, $FA ; CPU:$898A PRG:098A 42 EB 40 ED 3F EF 3D F1 3B F3 39 F5 37 F7 35 FA - .byte $33, $FC, $30, $FE, $2E, $00, $2B, $03, $28, $05, $25, $07, $22, $09, $1F, $0C ; CPU:$899A PRG:099A 33 FC 30 FE 2E 00 2B 03 28 05 25 07 22 09 1F 0C - .byte $1C, $0E, $19, $10, $16, $12, $12, $14, $0F, $16, $0C, $18, $08, $1A, $05, $1C ; CPU:$89AA PRG:09AA 1C 0E 19 10 16 12 12 14 0F 16 0C 18 08 1A 05 1C - .byte $01, $1E, $FE, $1F, $FA, $21, $F7, $22, $F4, $24, $F0, $25, $ED, $27, $E9, $28 ; CPU:$89BA PRG:09BA 01 1E FE 1F FA 21 F7 22 F4 24 F0 25 ED 27 E9 28 - .byte $E6, $29, $E3, $2A, $E0, $2B, $DD, $2C, $DA, $2C, $D7, $2D, $D4, $2D, $D2, $2E ; CPU:$89CA PRG:09CA E6 29 E3 2A E0 2B DD 2C DA 2C D7 2D D4 2D D2 2E - .byte $CF, $2E, $CD, $2E, $CA, $2E, $C8, $2E, $C6, $2E, $C4, $2E, $C2, $2D, $C1, $2D ; CPU:$89DA PRG:09DA CF 2E CD 2E CA 2E C8 2E C6 2E C4 2E C2 2D C1 2D - .byte $BF, $2C, $BE, $2B, $BD, $2B, $BC, $2A, $BB, $29, $0F, $A7, $2F, $A7, $4F, $A7 ; CPU:$89EA PRG:09EA BF 2C BE 2B BD 2B BC 2A BB 29 0F A7 2F A7 4F A7 - .byte $6F, $A7, $A5, $75, $29, $07, $D0, $33, $A5, $76, $C9, $04, $B0, $2D, $A9, $3F ; CPU:$89FA PRG:09FA 6F A7 A5 75 29 07 D0 33 A5 76 C9 04 B0 2D A9 3F - .byte $8D, $B0, $01, $A9, $00, $8D, $B1, $01, $A9, $10, $8D, $B2, $01, $A9, $01, $8D ; CPU:$8A0A PRG:0A0A 8D B0 01 A9 00 8D B1 01 A9 10 8D B2 01 A9 01 8D - .byte $B3, $01, $A5, $76, $0A, $AA, $BD, $F4, $89, $8D, $B4, $01, $BD, $F5, $89, $8D ; CPU:$8A1A PRG:0A1A B3 01 A5 76 0A AA BD F4 89 8D B4 01 BD F5 89 8D - .byte $B5, $01, $A9, $00, $8D, $B6, $01, $85, $75, $E6, $76, $60, $A5, $75, $C9, $20 ; CPU:$8A2A PRG:0A2A B5 01 A9 00 8D B6 01 85 75 E6 76 60 A5 75 C9 20 - .byte $90, $15, $A5, $76, $C9, $05, $B0, $0F, $E6, $76, $A2, $00, $BD, $52, $8A, $9D ; CPU:$8A3A PRG:0A3A 90 15 A5 76 C9 05 B0 0F E6 76 A2 00 BD 52 8A 9D - .byte $B0, $01, $E8, $E0, $0D, $90, $F5, $60, $23, $4A, $0F, $01, $A0, $94, $23, $26 ; CPU:$8A4A PRG:0A4A B0 01 E8 E0 0D 90 F5 60 23 4A 0F 01 A0 94 23 26 - .byte $03, $03, $AF, $94, $00, $A5, $6C, $F0, $03, $4C, $E1, $8A, $85, $95, $85, $96 ; CPU:$8A5A PRG:0A5A 03 03 AF 94 00 A5 6C F0 03 4C E1 8A 85 95 85 96 - .byte $8D, $E5, $05, $8D, $E6, $05, $85, $91, $AA, $A0, $14, $9D, $AC, $05, $E8, $88 ; CPU:$8A6A PRG:0A6A 8D E5 05 8D E6 05 85 91 AA A0 14 9D AC 05 E8 88 - .byte $D0, $F9, $20, $28, $92, $20, $88, $81, $20, $61, $C0, $20, $C7, $AE, $E6, $6C ; CPU:$8A7A PRG:0A7A D0 F9 20 28 92 20 88 81 20 61 C0 20 C7 AE E6 6C - .byte $A9, $02, $20, $88, $81, $A2, $00, $A9, $03, $9D, $02, $02, $E8, $E8, $E8, $E8 ; CPU:$8A8A PRG:0A8A A9 02 20 88 81 A2 00 A9 03 9D 02 02 E8 E8 E8 E8 - .byte $D0, $F7, $A2, $00, $20, $84, $90, $A9, $01, $85, $2E, $A9, $00, $20, $04, $80 ; CPU:$8A9A PRG:0A9A D0 F7 A2 00 20 84 90 A9 01 85 2E A9 00 20 04 80 +NmiHandler: + lda $03B8 ; CPU:$808F PRG:008F AD B8 03 + beq NmiHandler_Loop ; CPU:$8092 PRG:0092 F0 03 + jsr StartVramWrite ; CPU:$8094 PRG:0094 20 9D 84 +; ----------------------------------------------------------------------------- +; Routine: NmiHandler_Loop +; Global: Branch target inside NmiHandler: taken when the loop repeats. +; Local: Part of NmiHandler. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +NmiHandler_Loop: + lda $0300 ; CPU:$8097 PRG:0097 AD 00 03 + beq UploadOam ; CPU:$809A PRG:009A F0 0A + ldy #$00 ; CPU:$809C PRG:009C A0 00 + ldx #$00 ; CPU:$809E PRG:009E A2 00 + jsr UpdateNametable_Loop4 ; CPU:$80A0 PRG:00A0 20 70 82 + jmp UploadOam_Loop2 ; CPU:$80A3 PRG:00A3 4C C4 80 +; ----------------------------------------------------------------------------- +; Routine: UploadOam +; Global: Copies the sprite shadow into the OAM through the DMA register. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UploadOam: + lda #$00 ; CPU:$80A6 PRG:00A6 A9 00 + sta OAMADDR ; CPU:$80A8 PRG:00A8 8D 03 20 + lda #$02 ; CPU:$80AB PRG:00AB A9 02 + sta OAMDMA ; CPU:$80AD PRG:00AD 8D 14 40 + lda $0338 ; CPU:$80B0 PRG:00B0 AD 38 03 + beq UploadOam_Loop ; CPU:$80B3 PRG:00B3 F0 07 + ldx #$00 ; CPU:$80B5 PRG:00B5 A2 00 + ldy #$00 ; CPU:$80B7 PRG:00B7 A0 00 + jsr Sub_82C8 ; CPU:$80B9 PRG:00B9 20 C8 82 +; ----------------------------------------------------------------------------- +; Routine: UploadOam_Loop +; Global: Branch target inside UploadOam: taken when the loop repeats. +; Local: Part of UploadOam. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UploadOam_Loop: + lda $01B0 ; CPU:$80BC PRG:00BC AD B0 01 + beq UploadOam_Loop2 ; CPU:$80BF PRG:00BF F0 03 + jsr UpdateNametable ; CPU:$80C1 PRG:00C1 20 B1 81 +; ----------------------------------------------------------------------------- +; Routine: UploadOam_Loop2 +; Global: Branch target inside UploadOam: taken when Loop2. +; Local: Part of UploadOam. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UploadOam_Loop2: + lda #$08 ; CPU:$80C4 PRG:00C4 A9 08 + jsr BankedCall ; CPU:$80C6 PRG:00C6 20 04 80 +; ---- data $80C9-$811B (83 bytes) ---- + .byte $A5, $01, $29, $7F, $8D, $00, $20, $A5, $03, $8D, $05, $20, $A5, $04, $8D, $05 ; CPU:$80C9 PRG:00C9 A5 01 29 7F 8D 00 20 A5 03 8D 05 20 A5 04 8D 05 + .byte $20, $A5, $02, $8D, $01, $20, $20, $3F, $81, $AD, $E5, $05, $F0, $0E, $A5, $31 ; CPU:$80D9 PRG:00D9 20 A5 02 8D 01 20 20 3F 81 AD E5 05 F0 0E A5 31 + .byte $29, $3F, $D0, $08, $AD, $E6, $05, $F0, $03, $CE, $E6, $05, $A9, $00, $8D, $00 ; CPU:$80E9 PRG:00E9 29 3F D0 08 AD E6 05 F0 03 CE E6 05 A9 00 8D 00 + .byte $03, $85, $36, $A5, $6A, $F0, $06, $20, $DD, $85, $4C, $1F, $81, $20, $88, $81 ; CPU:$80F9 PRG:00F9 03 85 36 A5 6A F0 06 20 DD 85 4C 1F 81 20 88 81 + .byte $AD, $E5, $05, $F0, $0E, $A9, $00, $85, $26, $85, $27, $85, $2B, $A5, $2A, $29 ; CPU:$8109 PRG:0109 AD E5 05 F0 0E A9 00 85 26 85 27 85 2B A5 2A 29 + .byte $10, $85, $2A ; CPU:$8119 PRG:0119 10 85 2A +; ----------------------------------------------------------------------------- +; Routine: RunGameLogic +; Global: Runs the game logic for the current mode. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +RunGameLogic: + jsr UpdateGameState ; CPU:$811C PRG:011C 20 86 97 + jsr UpdateActorSprites ; CPU:$811F PRG:011F 20 C3 83 + jsr UpdateSprites ; CPU:$8122 PRG:0122 20 E9 82 + lda #$02 ; CPU:$8125 PRG:0125 A9 02 + jsr BankedCall ; CPU:$8127 PRG:0127 20 04 80 +; ---- data $812A-$813E (21 bytes) ---- + .byte $AD, $02, $20, $AD, $DE, $03, $D0, $02, $A5, $01, $8D, $00, $20, $A9, $00, $8D ; CPU:$812A PRG:012A AD 02 20 AD DE 03 D0 02 A5 01 8D 00 20 A9 00 8D + .byte $DE, $03, $E6, $31, $40 ; CPU:$813A PRG:013A DE 03 E6 31 40 +; ----------------------------------------------------------------------------- +; Routine: ReadControllers +; Global: Strobes the controller ports and reads both of them. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ReadControllers: + lda #$01 ; CPU:$813F PRG:013F A9 01 + sta JOY1 ; CPU:$8141 PRG:0141 8D 16 40 + lsr a ; CPU:$8144 PRG:0144 4A + tax ; CPU:$8145 PRG:0145 AA + sta JOY1 ; CPU:$8146 PRG:0146 8D 16 40 + jsr ReadControllerBits ; CPU:$8149 PRG:0149 20 4D 81 + inx ; CPU:$814C PRG:014C E8 +; ----------------------------------------------------------------------------- +; Routine: ReadControllerBits +; Global: Shifts one controller byte into the button bit mask. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ReadControllerBits: + lda #$00 ; CPU:$814D PRG:014D A9 00 + sta ControllerBits ; CPU:$814F PRG:014F 85 05 + ldy #$08 ; CPU:$8151 PRG:0151 A0 08 +; ----------------------------------------------------------------------------- +; Routine: ReadControllerBits_OnNonzero +; Global: Branch target inside ReadControllerBits: taken when the tested value is not zero. +; Local: Part of ReadControllerBits. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ReadControllerBits_OnNonzero: + pha ; CPU:$8153 PRG:0153 48 + lda JOY1,x ; CPU:$8154 PRG:0154 BD 16 40 + sta ControllerByte ; CPU:$8157 PRG:0157 85 07 + lsr a ; CPU:$8159 PRG:0159 4A + lsr a ; CPU:$815A PRG:015A 4A + rol ControllerBits ; CPU:$815B PRG:015B 26 05 + lsr ControllerByte ; CPU:$815D PRG:015D 46 07 + pla ; CPU:$815F PRG:015F 68 + rol a ; CPU:$8160 PRG:0160 2A + dey ; CPU:$8161 PRG:0161 88 + bne ReadControllerBits_OnNonzero ; CPU:$8162 PRG:0162 D0 EF + ora ControllerBits ; CPU:$8164 PRG:0164 05 05 + sta ButtonState1,x ; CPU:$8166 PRG:0166 95 26 + eor PrevButton1,x ; CPU:$8168 PRG:0168 55 28 + and ButtonState1,x ; CPU:$816A PRG:016A 35 26 + sta NewButton1,x ; CPU:$816C PRG:016C 95 2A + lda ButtonState1,x ; CPU:$816E PRG:016E B5 26 + sta PrevButton1,x ; CPU:$8170 PRG:0170 95 28 + rts ; CPU:$8172 PRG:0172 60 +; ----------------------------------------------------------------------------- +; Routine: DispatchByJumpTable +; Global: Jumps to the handler whose address follows the call. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DispatchByJumpTable: + asl a ; CPU:$8173 PRG:0173 0A + tay ; CPU:$8174 PRG:0174 A8 + pla ; CPU:$8175 PRG:0175 68 + sta Zp13 ; CPU:$8176 PRG:0176 85 13 + pla ; CPU:$8178 PRG:0178 68 + sta Zp14 ; CPU:$8179 PRG:0179 85 14 + iny ; CPU:$817B PRG:017B C8 + lda (Zp13),y ; CPU:$817C PRG:017C B1 13 + sta Zp11 ; CPU:$817E PRG:017E 85 11 + iny ; CPU:$8180 PRG:0180 C8 + lda (Zp13),y ; CPU:$8181 PRG:0181 B1 13 + sta Zp12 ; CPU:$8183 PRG:0183 85 12 + jmp ($0011) ; CPU:$8185 PRG:0185 6C 11 00 +; ----------------------------------------------------------------------------- +; Routine: ClearOamShadow +; Global: Fills the sprite shadow at $0200 with the "empty" value $F8. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearOamShadow: + ldy #$00 ; CPU:$8188 PRG:0188 A0 00 + lda #$F8 ; CPU:$818A PRG:018A A9 F8 +; ----------------------------------------------------------------------------- +; Routine: ClearOamShadow_OnNonzero +; Global: Branch target inside ClearOamShadow: taken when the tested value is not zero. +; Local: Part of ClearOamShadow. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearOamShadow_OnNonzero: + sta $0200,y ; CPU:$818C PRG:018C 99 00 02 + iny ; CPU:$818F PRG:018F C8 + iny ; CPU:$8190 PRG:0190 C8 + iny ; CPU:$8191 PRG:0191 C8 + iny ; CPU:$8192 PRG:0192 C8 + bne ClearOamShadow_OnNonzero ; CPU:$8193 PRG:0193 D0 F7 + rts ; CPU:$8195 PRG:0195 60 +; ---- data $8196-$81B0 (27 bytes) ---- + .byte $0A, $0A, $18, $69, $20, $A2, $00, $8D, $06, $20, $8E, $06, $20, $A0, $03, $A9 ; CPU:$8196 PRG:0196 0A 0A 18 69 20 A2 00 8D 06 20 8E 06 20 A0 03 A9 + .byte $FF, $8D, $07, $20, $CA, $D0, $FA, $88, $10, $F7, $60 ; CPU:$81A6 PRG:01A6 FF 8D 07 20 CA D0 FA 88 10 F7 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable +; Global: Rewrites the nametable entries that changed. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable: + ldx #$00 ; CPU:$81B1 PRG:01B1 A2 00 + lda $01B0,x ; CPU:$81B3 PRG:01B3 BD B0 01 + beq UpdateNametable_Loop3 ; CPU:$81B6 PRG:01B6 F0 5C +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_OnNonzero +; Global: Branch target inside UpdateNametable: taken when the tested value is not zero. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_OnNonzero: + sta Zp12 ; CPU:$81B8 PRG:01B8 85 12 + lda $01B1,x ; CPU:$81BA PRG:01BA BD B1 01 + sta Zp11 ; CPU:$81BD PRG:01BD 85 11 + lda $01B2,x ; CPU:$81BF PRG:01BF BD B2 01 + sta Zp20 ; CPU:$81C2 PRG:01C2 85 20 + sta Zp21 ; CPU:$81C4 PRG:01C4 85 21 + lda $01B3,x ; CPU:$81C6 PRG:01C6 BD B3 01 + sta Zp22 ; CPU:$81C9 PRG:01C9 85 22 + lda $01B4,x ; CPU:$81CB PRG:01CB BD B4 01 + sta ControllerBits ; CPU:$81CE PRG:01CE 85 05 + lda $01B5,x ; CPU:$81D0 PRG:01D0 BD B5 01 + sta Zp06 ; CPU:$81D3 PRG:01D3 85 06 + ldy #$00 ; CPU:$81D5 PRG:01D5 A0 00 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_OnCarryClear +; Global: Branch target inside UpdateNametable: taken when the addition or subtraction did not carry. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_OnCarryClear: + lda PPUSTATUS ; CPU:$81D7 PRG:01D7 AD 02 20 + lda Zp12 ; CPU:$81DA PRG:01DA A5 12 + sta PPUADDR ; CPU:$81DC PRG:01DC 8D 06 20 + lda Zp11 ; CPU:$81DF PRG:01DF A5 11 + sta PPUADDR ; CPU:$81E1 PRG:01E1 8D 06 20 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_OnNonzero2 +; Global: Branch target inside UpdateNametable: taken when OnNonzero2. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_OnNonzero2: + lda (ControllerBits),y ; CPU:$81E4 PRG:01E4 B1 05 + sta PPUDATA ; CPU:$81E6 PRG:01E6 8D 07 20 + iny ; CPU:$81E9 PRG:01E9 C8 + dec Zp20 ; CPU:$81EA PRG:01EA C6 20 + bne UpdateNametable_OnNonzero2 ; CPU:$81EC PRG:01EC D0 F6 + dec Zp22 ; CPU:$81EE PRG:01EE C6 22 + beq UpdateNametable_Loop ; CPU:$81F0 PRG:01F0 F0 12 + lda Zp21 ; CPU:$81F2 PRG:01F2 A5 21 + sta Zp20 ; CPU:$81F4 PRG:01F4 85 20 + lda Zp11 ; CPU:$81F6 PRG:01F6 A5 11 + clc ; CPU:$81F8 PRG:01F8 18 + adc #$20 ; CPU:$81F9 PRG:01F9 69 20 + sta Zp11 ; CPU:$81FB PRG:01FB 85 11 + bcc UpdateNametable_OnCarryClear ; CPU:$81FD PRG:01FD 90 D8 + inc Zp12 ; CPU:$81FF PRG:01FF E6 12 + jmp UpdateNametable_OnCarryClear ; CPU:$8201 PRG:0201 4C D7 81 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_Loop +; Global: Branch target inside UpdateNametable: taken when the loop repeats. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_Loop: + cpx #$06 ; CPU:$8204 PRG:0204 E0 06 + bcs UpdateNametable_Loop2 ; CPU:$8206 PRG:0206 B0 07 + ldx #$06 ; CPU:$8208 PRG:0208 A2 06 + lda $01B0,x ; CPU:$820A PRG:020A BD B0 01 + bne UpdateNametable_OnNonzero ; CPU:$820D PRG:020D D0 A9 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_Loop2 +; Global: Branch target inside UpdateNametable: taken when Loop2. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_Loop2: + lda #$00 ; CPU:$820F PRG:020F A9 00 + sta $01B0 ; CPU:$8211 PRG:0211 8D B0 01 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_Loop3 +; Global: Branch target inside UpdateNametable: taken when Loop3. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_Loop3: + rts ; CPU:$8214 PRG:0214 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_OnNonzero3 +; Global: Branch target inside UpdateNametable: taken when OnNonzero3. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_OnNonzero3: + sta Zp11 ; CPU:$8215 PRG:0215 85 11 + lda $0301,x ; CPU:$8217 PRG:0217 BD 01 03 + sta Zp12 ; CPU:$821A PRG:021A 85 12 + lda $0302,x ; CPU:$821C PRG:021C BD 02 03 + sta Zp13 ; CPU:$821F PRG:021F 85 13 + lda $0303,x ; CPU:$8221 PRG:0221 BD 03 03 + sta Zp14 ; CPU:$8224 PRG:0224 85 14 + inx ; CPU:$8226 PRG:0226 E8 + inx ; CPU:$8227 PRG:0227 E8 + inx ; CPU:$8228 PRG:0228 E8 + inx ; CPU:$8229 PRG:0229 E8 + lda Zp12 ; CPU:$822A PRG:022A A5 12 + cmp #$24 ; CPU:$822C PRG:022C C9 24 + beq UpdateNametable_Loop4 ; CPU:$822E PRG:022E F0 40 + ldy #$02 ; CPU:$8230 PRG:0230 A0 02 + lda PPUSTATUS ; CPU:$8232 PRG:0232 AD 02 20 + lda Zp12 ; CPU:$8235 PRG:0235 A5 12 + sta PPUADDR ; CPU:$8237 PRG:0237 8D 06 20 + lda Zp11 ; CPU:$823A PRG:023A A5 11 + sta PPUADDR ; CPU:$823C PRG:023C 8D 06 20 + lda (Zp13),y ; CPU:$823F PRG:023F B1 13 + sta PPUDATA ; CPU:$8241 PRG:0241 8D 07 20 + iny ; CPU:$8244 PRG:0244 C8 + lda (Zp13),y ; CPU:$8245 PRG:0245 B1 13 + sta PPUDATA ; CPU:$8247 PRG:0247 8D 07 20 + iny ; CPU:$824A PRG:024A C8 + lda #$20 ; CPU:$824B PRG:024B A9 20 + clc ; CPU:$824D PRG:024D 18 + adc Zp11 ; CPU:$824E PRG:024E 65 11 + sta Zp11 ; CPU:$8250 PRG:0250 85 11 + lda Zp12 ; CPU:$8252 PRG:0252 A5 12 + adc #$00 ; CPU:$8254 PRG:0254 69 00 + sta Zp12 ; CPU:$8256 PRG:0256 85 12 + lda PPUSTATUS ; CPU:$8258 PRG:0258 AD 02 20 + lda Zp12 ; CPU:$825B PRG:025B A5 12 + sta PPUADDR ; CPU:$825D PRG:025D 8D 06 20 + lda Zp11 ; CPU:$8260 PRG:0260 A5 11 + sta PPUADDR ; CPU:$8262 PRG:0262 8D 06 20 + lda (Zp13),y ; CPU:$8265 PRG:0265 B1 13 + sta PPUDATA ; CPU:$8267 PRG:0267 8D 07 20 + iny ; CPU:$826A PRG:026A C8 + lda (Zp13),y ; CPU:$826B PRG:026B B1 13 + sta PPUDATA ; CPU:$826D PRG:026D 8D 07 20 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_Loop4 +; Global: Branch target inside UpdateNametable: taken when Loop4. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_Loop4: + lda $0300,x ; CPU:$8270 PRG:0270 BD 00 03 + bne UpdateNametable_OnNonzero3 ; CPU:$8273 PRG:0273 D0 A0 + rts ; CPU:$8275 PRG:0275 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_OnNonzero4 +; Global: Branch target inside UpdateNametable: taken when OnNonzero4. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_OnNonzero4: + sta Zp11 ; CPU:$8276 PRG:0276 85 11 + lda $0339,x ; CPU:$8278 PRG:0278 BD 39 03 + sta Zp12 ; CPU:$827B PRG:027B 85 12 + lda $033A,x ; CPU:$827D PRG:027D BD 3A 03 + sta Zp13 ; CPU:$8280 PRG:0280 85 13 + lda $033B,x ; CPU:$8282 PRG:0282 BD 3B 03 + sta Zp14 ; CPU:$8285 PRG:0285 85 14 + txa ; CPU:$8287 PRG:0287 8A + clc ; CPU:$8288 PRG:0288 18 + adc #$04 ; CPU:$8289 PRG:0289 69 04 + sta Zp22 ; CPU:$828B PRG:028B 85 22 + ldy #$00 ; CPU:$828D PRG:028D A0 00 + lda (Zp13),y ; CPU:$828F PRG:028F B1 13 + sta Zp21 ; CPU:$8291 PRG:0291 85 21 + sta Zp1F ; CPU:$8293 PRG:0293 85 1F + iny ; CPU:$8295 PRG:0295 C8 + lda (Zp13),y ; CPU:$8296 PRG:0296 B1 13 + sta Zp25 ; CPU:$8298 PRG:0298 85 25 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_OnNonzero5 +; Global: Branch target inside UpdateNametable: taken when OnNonzero5. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_OnNonzero5: + ldx PPUSTATUS ; CPU:$829A PRG:029A AE 02 20 + lda Zp12 ; CPU:$829D PRG:029D A5 12 + sta PPUADDR ; CPU:$829F PRG:029F 8D 06 20 + lda Zp11 ; CPU:$82A2 PRG:02A2 A5 11 + sta PPUADDR ; CPU:$82A4 PRG:02A4 8D 06 20 +; ----------------------------------------------------------------------------- +; Routine: UpdateNametable_OnNonzero6 +; Global: Branch target inside UpdateNametable: taken when OnNonzero6. +; Local: Part of UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateNametable_OnNonzero6: + iny ; CPU:$82A7 PRG:02A7 C8 + lda (Zp13),y ; CPU:$82A8 PRG:02A8 B1 13 + sta PPUDATA ; CPU:$82AA PRG:02AA 8D 07 20 + dec Zp1F ; CPU:$82AD PRG:02AD C6 1F + bne UpdateNametable_OnNonzero6 ; CPU:$82AF PRG:02AF D0 F6 + lda #$20 ; CPU:$82B1 PRG:02B1 A9 20 + clc ; CPU:$82B3 PRG:02B3 18 + adc Zp11 ; CPU:$82B4 PRG:02B4 65 11 + sta Zp11 ; CPU:$82B6 PRG:02B6 85 11 + lda Zp12 ; CPU:$82B8 PRG:02B8 A5 12 + adc #$00 ; CPU:$82BA PRG:02BA 69 00 + sta Zp12 ; CPU:$82BC PRG:02BC 85 12 + lda Zp21 ; CPU:$82BE PRG:02BE A5 21 + sta Zp1F ; CPU:$82C0 PRG:02C0 85 1F + dec Zp25 ; CPU:$82C2 PRG:02C2 C6 25 + bne UpdateNametable_OnNonzero5 ; CPU:$82C4 PRG:02C4 D0 D4 + ldx Zp22 ; CPU:$82C6 PRG:02C6 A6 22 +; ----------------------------------------------------------------------------- +; Routine: Sub_82C8 +; Global: Branch target inside Sub: taken when 82C8. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_82C8: + lda $0338,x ; CPU:$82C8 PRG:02C8 BD 38 03 + bne UpdateNametable_OnNonzero4 ; CPU:$82CB PRG:02CB D0 A9 + lda #$00 ; CPU:$82CD PRG:02CD A9 00 + sta Zp37 ; CPU:$82CF PRG:02CF 85 37 + sta $0338 ; CPU:$82D1 PRG:02D1 8D 38 03 + rts ; CPU:$82D4 PRG:02D4 60 +; ---- data $82D5-$82E8 (20 bytes) ---- + .byte $A9, $00, $A2, $08, $46, $13, $90, $03, $18, $65, $15, $4A, $66, $17, $CA, $D0 ; CPU:$82D5 PRG:02D5 A9 00 A2 08 46 13 90 03 18 65 15 4A 66 17 CA D0 + .byte $F3, $85, $18, $60 ; CPU:$82E5 PRG:02E5 F3 85 18 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites +; Global: Walks the sixteen sprite slots and redraws the active ones. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites: + ldx #$00 ; CPU:$82E9 PRG:02E9 A2 00 + stx Zp1F ; CPU:$82EB PRG:02EB 86 1F + lda FrameCounter ; CPU:$82ED PRG:02ED A5 31 + and #$01 ; CPU:$82EF PRG:02EF 29 01 + bne UpdateSprites_Loop ; CPU:$82F1 PRG:02F1 D0 04 + lda #$63 ; CPU:$82F3 PRG:02F3 A9 63 + bne UpdateSprites_Loop2 ; CPU:$82F5 PRG:02F5 D0 02 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_Loop +; Global: Branch target inside UpdateSprites: taken when the loop repeats. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_Loop: + lda #$01 ; CPU:$82F7 PRG:02F7 A9 01 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_Loop2 +; Global: Branch target inside UpdateSprites: taken when Loop2. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_Loop2: + sta Zp1E ; CPU:$82F9 PRG:02F9 85 1E +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_OnCarryClear +; Global: Branch target inside UpdateSprites: taken when the addition or subtraction did not carry. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_OnCarryClear: + lda $0358,x ; CPU:$82FB PRG:02FB BD 58 03 + beq UpdateSprites_Loop3 ; CPU:$82FE PRG:02FE F0 03 + jsr Sub_830C ; CPU:$8300 PRG:0300 20 0C 83 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_Loop3 +; Global: Branch target inside UpdateSprites: taken when Loop3. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_Loop3: + inc Zp1F ; CPU:$8303 PRG:0303 E6 1F + ldx Zp1F ; CPU:$8305 PRG:0305 A6 1F + cpx #$10 ; CPU:$8307 PRG:0307 E0 10 + bcc UpdateSprites_OnCarryClear ; CPU:$8309 PRG:0309 90 F0 + rts ; CPU:$830B PRG:030B 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_830C +; Global: Branch target inside Sub: taken when 830C. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_830C: + lda $03A8,x ; CPU:$830C PRG:030C BD A8 03 + sta Zp30 ; CPU:$830F PRG:030F 85 30 + lda Zp1F ; CPU:$8311 PRG:0311 A5 1F + tay ; CPU:$8313 PRG:0313 A8 + asl a ; CPU:$8314 PRG:0314 0A + tax ; CPU:$8315 PRG:0315 AA + lda $0368,x ; CPU:$8316 PRG:0316 BD 68 03 + sta Zp11 ; CPU:$8319 PRG:0319 85 11 + lda $0369,x ; CPU:$831B PRG:031B BD 69 03 + sta Zp12 ; CPU:$831E PRG:031E 85 12 + lda $0388,y ; CPU:$8320 PRG:0320 B9 88 03 + sta ControllerBits ; CPU:$8323 PRG:0323 85 05 + sta Zp09 ; CPU:$8325 PRG:0325 85 09 + lda $0398,y ; CPU:$8327 PRG:0327 B9 98 03 + sta ControllerByte ; CPU:$832A PRG:032A 85 07 + ldy #$00 ; CPU:$832C PRG:032C A0 00 + lda (Zp11),y ; CPU:$832E PRG:032E B1 11 + sta Zp13 ; CPU:$8330 PRG:0330 85 13 + iny ; CPU:$8332 PRG:0332 C8 + lda (Zp11),y ; CPU:$8333 PRG:0333 B1 11 + sta Zp14 ; CPU:$8335 PRG:0335 85 14 + ldy #$00 ; CPU:$8337 PRG:0337 A0 00 + lda (Zp13),y ; CPU:$8339 PRG:0339 B1 13 + sta Zp1B ; CPU:$833B PRG:033B 85 1B + sta Zp1C ; CPU:$833D PRG:033D 85 1C + iny ; CPU:$833F PRG:033F C8 + lda (Zp13),y ; CPU:$8340 PRG:0340 B1 13 + sta Zp1D ; CPU:$8342 PRG:0342 85 1D + iny ; CPU:$8344 PRG:0344 C8 + sty Zp20 ; CPU:$8345 PRG:0345 84 20 + sty Zp22 ; CPU:$8347 PRG:0347 84 22 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_OnNonzero +; Global: Branch target inside UpdateSprites: taken when the tested value is not zero. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_OnNonzero: + lda Zp1E ; CPU:$8349 PRG:0349 A5 1E + asl a ; CPU:$834B PRG:034B 0A + asl a ; CPU:$834C PRG:034C 0A + tax ; CPU:$834D PRG:034D AA + lda ControllerByte ; CPU:$834E PRG:034E A5 07 + sta $0200,x ; CPU:$8350 PRG:0350 9D 00 02 + lda Zp09 ; CPU:$8353 PRG:0353 A5 09 + sta $0203,x ; CPU:$8355 PRG:0355 9D 03 02 + lda Zp30 ; CPU:$8358 PRG:0358 A5 30 + sta $0202,x ; CPU:$835A PRG:035A 9D 02 02 + lda Zp30 ; CPU:$835D PRG:035D A5 30 + and #$40 ; CPU:$835F PRG:035F 29 40 + beq UpdateSprites_Loop5 ; CPU:$8361 PRG:0361 F0 18 + lda Zp20 ; CPU:$8363 PRG:0363 A5 20 + clc ; CPU:$8365 PRG:0365 18 + adc Zp1C ; CPU:$8366 PRG:0366 65 1C + tay ; CPU:$8368 PRG:0368 A8 + dey ; CPU:$8369 PRG:0369 88 + lda (Zp13),y ; CPU:$836A PRG:036A B1 13 + sta $0201,x ; CPU:$836C PRG:036C 9D 01 02 + cmp #$FF ; CPU:$836F PRG:036F C9 FF + bne UpdateSprites_Loop4 ; CPU:$8371 PRG:0371 D0 05 + lda #$F8 ; CPU:$8373 PRG:0373 A9 F8 + sta $0200,x ; CPU:$8375 PRG:0375 9D 00 02 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_Loop4 +; Global: Branch target inside UpdateSprites: taken when Loop4. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_Loop4: + jmp Sub_838D ; CPU:$8378 PRG:0378 4C 8D 83 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_Loop5 +; Global: Branch target inside UpdateSprites: taken when Loop5. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_Loop5: + ldy Zp22 ; CPU:$837B PRG:037B A4 22 + lda (Zp13),y ; CPU:$837D PRG:037D B1 13 + sta $0201,x ; CPU:$837F PRG:037F 9D 01 02 + cmp #$FF ; CPU:$8382 PRG:0382 C9 FF + bne UpdateSprites_Loop6 ; CPU:$8384 PRG:0384 D0 05 + lda #$F8 ; CPU:$8386 PRG:0386 A9 F8 + sta $0200,x ; CPU:$8388 PRG:0388 9D 00 02 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_Loop6 +; Global: Branch target inside UpdateSprites: taken when Loop6. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_Loop6: + inc Zp22 ; CPU:$838B PRG:038B E6 22 +; ----------------------------------------------------------------------------- +; Routine: Sub_838D +; Global: Branch target inside Sub: taken when 838D. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_838D: + lda Zp09 ; CPU:$838D PRG:038D A5 09 + clc ; CPU:$838F PRG:038F 18 + adc #$08 ; CPU:$8390 PRG:0390 69 08 + sta Zp09 ; CPU:$8392 PRG:0392 85 09 + lda FrameCounter ; CPU:$8394 PRG:0394 A5 31 + and #$01 ; CPU:$8396 PRG:0396 29 01 + bne UpdateSprites_Loop7 ; CPU:$8398 PRG:0398 D0 05 + dec Zp1E ; CPU:$839A PRG:039A C6 1E + jmp Sub_83A1 ; CPU:$839C PRG:039C 4C A1 83 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_Loop7 +; Global: Branch target inside UpdateSprites: taken when Loop7. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_Loop7: + inc Zp1E ; CPU:$839F PRG:039F E6 1E +; ----------------------------------------------------------------------------- +; Routine: Sub_83A1 +; Global: Branch target inside Sub: taken when 83A1. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_83A1: + dec Zp1C ; CPU:$83A1 PRG:03A1 C6 1C + bne UpdateSprites_OnNonzero ; CPU:$83A3 PRG:03A3 D0 A4 + dec Zp1D ; CPU:$83A5 PRG:03A5 C6 1D + beq UpdateSprites_Loop8 ; CPU:$83A7 PRG:03A7 F0 19 + lda Zp1B ; CPU:$83A9 PRG:03A9 A5 1B + sta Zp1C ; CPU:$83AB PRG:03AB 85 1C + clc ; CPU:$83AD PRG:03AD 18 + adc Zp20 ; CPU:$83AE PRG:03AE 65 20 + sta Zp20 ; CPU:$83B0 PRG:03B0 85 20 + sta Zp22 ; CPU:$83B2 PRG:03B2 85 22 + lda ControllerByte ; CPU:$83B4 PRG:03B4 A5 07 + clc ; CPU:$83B6 PRG:03B6 18 + adc #$08 ; CPU:$83B7 PRG:03B7 69 08 + sta ControllerByte ; CPU:$83B9 PRG:03B9 85 07 + lda ControllerBits ; CPU:$83BB PRG:03BB A5 05 + sta Zp09 ; CPU:$83BD PRG:03BD 85 09 + jmp UpdateSprites_OnNonzero ; CPU:$83BF PRG:03BF 4C 49 83 +; ----------------------------------------------------------------------------- +; Routine: UpdateSprites_Loop8 +; Global: Branch target inside UpdateSprites: taken when Loop8. +; Local: Part of UpdateSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSprites_Loop8: + rts ; CPU:$83C2 PRG:03C2 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateActorSprites +; Global: Walks the actor slots and redraws their sprites. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateActorSprites: + ldx #$00 ; CPU:$83C3 PRG:03C3 A2 00 + stx Zp1B ; CPU:$83C5 PRG:03C5 86 1B +; ----------------------------------------------------------------------------- +; Routine: UpdateActorSprites_OnCarryClear +; Global: Branch target inside UpdateActorSprites: taken when the addition or subtraction did not carry. +; Local: Part of UpdateActorSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateActorSprites_OnCarryClear: + lda $0358,x ; CPU:$83C7 PRG:03C7 BD 58 03 + beq UpdateActorSprites_Loop ; CPU:$83CA PRG:03CA F0 03 + jsr Sub_840C ; CPU:$83CC PRG:03CC 20 0C 84 +; ----------------------------------------------------------------------------- +; Routine: UpdateActorSprites_Loop +; Global: Branch target inside UpdateActorSprites: taken when the loop repeats. +; Local: Part of UpdateActorSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateActorSprites_Loop: + inc Zp1B ; CPU:$83CF PRG:03CF E6 1B + ldx Zp1B ; CPU:$83D1 PRG:03D1 A6 1B + cpx #$10 ; CPU:$83D3 PRG:03D3 E0 10 + bcc UpdateActorSprites_OnCarryClear ; CPU:$83D5 PRG:03D5 90 F0 + rts ; CPU:$83D7 PRG:03D7 60 +; ---- data $83D8-$840A (51 bytes) ---- + .byte $A5, $31, $29, $3F, $D0, $2D, $BD, $68, $03, $85, $11, $BD, $69, $03, $85, $12 ; CPU:$83D8 PRG:03D8 A5 31 29 3F D0 2D BD 68 03 85 11 BD 69 03 85 12 + .byte $A0, $02, $B1, $11, $C9, $FF, $D0, $09, $C8, $B1, $11, $C8, $C9, $FF, $D0, $01 ; CPU:$83E8 PRG:03E8 A0 02 B1 11 C9 FF D0 09 C8 B1 11 C8 C9 FF D0 01 + .byte $60, $A5, $1B, $0A, $AA, $BD, $68, $03, $18, $69, $02, $9D, $68, $03, $90, $03 ; CPU:$83F8 PRG:03F8 60 A5 1B 0A AA BD 68 03 18 69 02 9D 68 03 90 03 + .byte $FE, $69, $03 ; CPU:$8408 PRG:0408 FE 69 03 +; ----------------------------------------------------------------------------- +; Routine: UpdateActorSprites_OnNonzero +; Global: Branch target inside UpdateActorSprites: taken when the tested value is not zero. +; Local: Part of UpdateActorSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateActorSprites_OnNonzero: + rts ; CPU:$840B PRG:040B 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_840C +; Global: Branch target inside Sub: taken when 840C. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_840C: + lda FrameCounter ; CPU:$840C PRG:040C A5 31 + and #$0F ; CPU:$840E PRG:040E 29 0F + bne UpdateActorSprites_OnNonzero ; CPU:$8410 PRG:0410 D0 F9 + lda Zp1B ; CPU:$8412 PRG:0412 A5 1B + asl a ; CPU:$8414 PRG:0414 0A + tax ; CPU:$8415 PRG:0415 AA + lda $0368,x ; CPU:$8416 PRG:0416 BD 68 03 + clc ; CPU:$8419 PRG:0419 18 + adc #$02 ; CPU:$841A PRG:041A 69 02 + sta $0368,x ; CPU:$841C PRG:041C 9D 68 03 + bcc UpdateActorSprites_Loop2 ; CPU:$841F PRG:041F 90 03 + inc $0369,x ; CPU:$8421 PRG:0421 FE 69 03 +; ----------------------------------------------------------------------------- +; Routine: UpdateActorSprites_Loop2 +; Global: Branch target inside UpdateActorSprites: taken when Loop2. +; Local: Part of UpdateActorSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateActorSprites_Loop2: + lda $0368,x ; CPU:$8424 PRG:0424 BD 68 03 + sta Zp11 ; CPU:$8427 PRG:0427 85 11 + lda $0369,x ; CPU:$8429 PRG:0429 BD 69 03 + sta Zp12 ; CPU:$842C PRG:042C 85 12 + ldy #$00 ; CPU:$842E PRG:042E A0 00 + lda (Zp11),y ; CPU:$8430 PRG:0430 B1 11 + cmp #$FF ; CPU:$8432 PRG:0432 C9 FF + bne UpdateActorSprites_Loop3 ; CPU:$8434 PRG:0434 D0 1B + iny ; CPU:$8436 PRG:0436 C8 + lda (Zp11),y ; CPU:$8437 PRG:0437 B1 11 + iny ; CPU:$8439 PRG:0439 C8 + cmp #$FF ; CPU:$843A PRG:043A C9 FF + bne UpdateActorSprites_Loop3 ; CPU:$843C PRG:043C D0 13 + ldy Zp1B ; CPU:$843E PRG:043E A4 1B + lda $0358,y ; CPU:$8440 PRG:0440 B9 58 03 + asl a ; CPU:$8443 PRG:0443 0A + tay ; CPU:$8444 PRG:0444 A8 + lda $F216,y ; CPU:$8445 PRG:0445 B9 16 F2 + sta $0368,x ; CPU:$8448 PRG:0448 9D 68 03 + lda $F217,y ; CPU:$844B PRG:044B B9 17 F2 + sta $0369,x ; CPU:$844E PRG:044E 9D 69 03 +; ----------------------------------------------------------------------------- +; Routine: UpdateActorSprites_Loop3 +; Global: Branch target inside UpdateActorSprites: taken when Loop3. +; Local: Part of UpdateActorSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateActorSprites_Loop3: + rts ; CPU:$8451 PRG:0451 60 +; ---- data $8452-$848B (58 bytes) ---- + .byte $A2, $00, $BD, $58, $03, $F0, $06, $E8, $E0, $10, $90, $F6, $60, $A4, $11, $B9 ; CPU:$8452 PRG:0452 A2 00 BD 58 03 F0 06 E8 E0 10 90 F6 60 A4 11 B9 + .byte $06, $F2, $9D, $A8, $03, $A5, $11, $9D, $58, $03, $86, $1B, $0A, $A8, $B9, $36 ; CPU:$8462 PRG:0462 06 F2 9D A8 03 A5 11 9D 58 03 86 1B 0A A8 B9 36 + .byte $F2, $9D, $88, $03, $B9, $37, $F2, $9D, $98, $03, $8A, $0A, $AA, $B9, $16, $F2 ; CPU:$8472 PRG:0472 F2 9D 88 03 B9 37 F2 9D 98 03 8A 0A AA B9 16 F2 + .byte $9D, $68, $03, $B9, $17, $F2, $9D, $69, $03, $60 ; CPU:$8482 PRG:0482 9D 68 03 B9 17 F2 9D 69 03 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_848C +; Global: Branch target inside Sub: taken when 848C. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_848C: + lda #$40 ; CPU:$848C PRG:048C A9 40 + sta Zp1F ; CPU:$848E PRG:048E 85 1F + ldy #$00 ; CPU:$8490 PRG:0490 A0 00 +; ----------------------------------------------------------------------------- +; Routine: UpdateActorSprites_OnNonzero2 +; Global: Branch target inside UpdateActorSprites: taken when OnNonzero2. +; Local: Part of UpdateActorSprites. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateActorSprites_OnNonzero2: + lda (Zp11),y ; CPU:$8492 PRG:0492 B1 11 + sta $04E2,y ; CPU:$8494 PRG:0494 99 E2 04 + iny ; CPU:$8497 PRG:0497 C8 + dec Zp1F ; CPU:$8498 PRG:0498 C6 1F + bne UpdateActorSprites_OnNonzero2 ; CPU:$849A PRG:049A D0 F6 + rts ; CPU:$849C PRG:049C 60 +; ----------------------------------------------------------------------------- +; Routine: StartVramWrite +; Global: Sets the PPU address for the next VRAM write. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +StartVramWrite: + ldy PPUSTATUS ; CPU:$849D PRG:049D AC 02 20 + ldy #$23 ; CPU:$84A0 PRG:04A0 A0 23 + ldx #$00 ; CPU:$84A2 PRG:04A2 A2 00 +; ----------------------------------------------------------------------------- +; Routine: WriteVramTiles +; Global: Writes the tile data to VRAM. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +WriteVramTiles: + sty PPUADDR ; CPU:$84A4 PRG:04A4 8C 06 20 + sta PPUADDR ; CPU:$84A7 PRG:04A7 8D 06 20 + inx ; CPU:$84AA PRG:04AA E8 + lda $03B8,x ; CPU:$84AB PRG:04AB BD B8 03 + sta PPUDATA ; CPU:$84AE PRG:04AE 8D 07 20 + inx ; CPU:$84B1 PRG:04B1 E8 + lda $03B8,x ; CPU:$84B2 PRG:04B2 BD B8 03 + bne WriteVramTiles ; CPU:$84B5 PRG:04B5 D0 ED + lda #$00 ; CPU:$84B7 PRG:04B7 A9 00 + sta $03B8 ; CPU:$84B9 PRG:04B9 8D B8 03 + sta Zp38 ; CPU:$84BC PRG:04BC 85 38 + rts ; CPU:$84BE PRG:04BE 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_84BF +; Global: Branch target inside Sub: taken when 84BF. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_84BF: + sta Zp20 ; CPU:$84BF PRG:04BF 85 20 + asl a ; CPU:$84C1 PRG:04C1 0A + tax ; CPU:$84C2 PRG:04C2 AA + lda $F72B,x ; CPU:$84C3 PRG:04C3 BD 2B F7 + sta Zp19 ; CPU:$84C6 PRG:04C6 85 19 + lda $F72C,x ; CPU:$84C8 PRG:04C8 BD 2C F7 + sta Zp1A ; CPU:$84CB PRG:04CB 85 1A + lda Zp6F ; CPU:$84CD PRG:04CD A5 6F + bne WriteVramTiles_Loop ; CPU:$84CF PRG:04CF D0 01 + rts ; CPU:$84D1 PRG:04D1 60 +; ----------------------------------------------------------------------------- +; Routine: WriteVramTiles_Loop +; Global: Branch target inside WriteVramTiles: taken when the loop repeats. +; Local: Part of WriteVramTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +WriteVramTiles_Loop: + lda Zp34 ; CPU:$84D2 PRG:04D2 A5 34 + bne WriteVramTiles_Loop2 ; CPU:$84D4 PRG:04D4 D0 05 + dec Zp19 ; CPU:$84D6 PRG:04D6 C6 19 + dec Zp19 ; CPU:$84D8 PRG:04D8 C6 19 + rts ; CPU:$84DA PRG:04DA 60 +; ----------------------------------------------------------------------------- +; Routine: WriteVramTiles_Loop2 +; Global: Branch target inside WriteVramTiles: taken when Loop2. +; Local: Part of WriteVramTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +WriteVramTiles_Loop2: + lda Zp19 ; CPU:$84DB PRG:04DB A5 19 + clc ; CPU:$84DD PRG:04DD 18 + adc #$0E ; CPU:$84DE PRG:04DE 69 0E + sta Zp19 ; CPU:$84E0 PRG:04E0 85 19 + rts ; CPU:$84E2 PRG:04E2 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_84E3 +; Global: Branch target inside Sub: taken when 84E3. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_84E3: + lda Zp19 ; CPU:$84E3 PRG:04E3 A5 19 + asl a ; CPU:$84E5 PRG:04E5 0A + lda Zp1A ; CPU:$84E6 PRG:04E6 A5 1A + rol a ; CPU:$84E8 PRG:04E8 2A + rol a ; CPU:$84E9 PRG:04E9 2A + rol a ; CPU:$84EA PRG:04EA 2A + rol a ; CPU:$84EB PRG:04EB 2A + and #$38 ; CPU:$84EC PRG:04EC 29 38 + sta Zp20 ; CPU:$84EE PRG:04EE 85 20 + lda Zp19 ; CPU:$84F0 PRG:04F0 A5 19 + ror a ; CPU:$84F2 PRG:04F2 6A + ror a ; CPU:$84F3 PRG:04F3 6A + and #$07 ; CPU:$84F4 PRG:04F4 29 07 + ora Zp20 ; CPU:$84F6 PRG:04F6 05 20 + tay ; CPU:$84F8 PRG:04F8 A8 + clc ; CPU:$84F9 PRG:04F9 18 + adc #$C0 ; CPU:$84FA PRG:04FA 69 C0 + ldx Zp38 ; CPU:$84FC PRG:04FC A6 38 + sta $03B8,x ; CPU:$84FE PRG:04FE 9D B8 03 + inc Zp38 ; CPU:$8501 PRG:0501 E6 38 + lda Zp19 ; CPU:$8503 PRG:0503 A5 19 + and #$42 ; CPU:$8505 PRG:0505 29 42 + ror a ; CPU:$8507 PRG:0507 6A + ror a ; CPU:$8508 PRG:0508 6A + ror a ; CPU:$8509 PRG:0509 6A + ror a ; CPU:$850A PRG:050A 6A + ror a ; CPU:$850B PRG:050B 6A + sta Zp20 ; CPU:$850C PRG:050C 85 20 + lda Zp19 ; CPU:$850E PRG:050E A5 19 + ror a ; CPU:$8510 PRG:0510 6A + and #$01 ; CPU:$8511 PRG:0511 29 01 + ora Zp20 ; CPU:$8513 PRG:0513 05 20 + and #$03 ; CPU:$8515 PRG:0515 29 03 + tax ; CPU:$8517 PRG:0517 AA + lda Zp1B ; CPU:$8518 PRG:0518 A5 1B + cmp #$03 ; CPU:$851A PRG:051A C9 03 + bcc WriteVramTiles_Loop3 ; CPU:$851C PRG:051C 90 16 + lda $04E2,y ; CPU:$851E PRG:051E B9 E2 04 + ora $854E,x ; CPU:$8521 PRG:0521 1D 4E 85 + sta $04E2,y ; CPU:$8524 PRG:0524 99 E2 04 + ldx Zp38 ; CPU:$8527 PRG:0527 A6 38 + sta $03B8,x ; CPU:$8529 PRG:0529 9D B8 03 + lda #$00 ; CPU:$852C PRG:052C A9 00 + sta $03B9,x ; CPU:$852E PRG:052E 9D B9 03 + inc Zp38 ; CPU:$8531 PRG:0531 E6 38 + rts ; CPU:$8533 PRG:0533 60 +; ----------------------------------------------------------------------------- +; Routine: WriteVramTiles_Loop3 +; Global: Branch target inside WriteVramTiles: taken when Loop3. +; Local: Part of WriteVramTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +WriteVramTiles_Loop3: + lda $04E2,y ; CPU:$8534 PRG:0534 B9 E2 04 + and $854A,x ; CPU:$8537 PRG:0537 3D 4A 85 + sta $04E2,y ; CPU:$853A PRG:053A 99 E2 04 + ldx Zp38 ; CPU:$853D PRG:053D A6 38 + sta $03B8,x ; CPU:$853F PRG:053F 9D B8 03 + lda #$00 ; CPU:$8542 PRG:0542 A9 00 + sta $03B9,x ; CPU:$8544 PRG:0544 9D B9 03 + inc Zp38 ; CPU:$8547 PRG:0547 E6 38 + rts ; CPU:$8549 PRG:0549 60 +; ---- data $854A-$8551 (8 bytes) ---- +; referenced by `ora $854E,x` at $8521 (operand $854E falls inside this region) +; referenced by `and $854A,x` at $8537 (operand $854A falls inside this region) + .byte $FC, $F3, $CF, $3F, $03, $0C, $30, $C0 ; CPU:$854A PRG:054A FC F3 CF 3F 03 0C 30 C0 +; ----------------------------------------------------------------------------- +; Routine: Sub_8552 +; Global: Branch target inside Sub: taken when 8552. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_8552: + lda FrameCounter ; CPU:$8552 PRG:0552 A5 31 + adc IdleCounter ; CPU:$8554 PRG:0554 65 2F + adc Zp3D ; CPU:$8556 PRG:0556 65 3D + and #$3F ; CPU:$8558 PRG:0558 29 3F + sta Zp3D ; CPU:$855A PRG:055A 85 3D + rts ; CPU:$855C PRG:055C 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_855D +; Global: Branch target inside Sub: taken when 855D. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_855D: + lda Zp11 ; CPU:$855D PRG:055D A5 11 + tay ; CPU:$855F PRG:055F A8 + ldx Zp12 ; CPU:$8560 PRG:0560 A6 12 + sta $0358,x ; CPU:$8562 PRG:0562 9D 58 03 + lda $F206,y ; CPU:$8565 PRG:0565 B9 06 F2 + sta $03A8,x ; CPU:$8568 PRG:0568 9D A8 03 + tya ; CPU:$856B PRG:056B 98 + asl a ; CPU:$856C PRG:056C 0A + tay ; CPU:$856D PRG:056D A8 + lda $F236,y ; CPU:$856E PRG:056E B9 36 F2 + sta $0388,x ; CPU:$8571 PRG:0571 9D 88 03 + lda $F237,y ; CPU:$8574 PRG:0574 B9 37 F2 + sta $0398,x ; CPU:$8577 PRG:0577 9D 98 03 + txa ; CPU:$857A PRG:057A 8A + asl a ; CPU:$857B PRG:057B 0A + tax ; CPU:$857C PRG:057C AA + lda $F216,y ; CPU:$857D PRG:057D B9 16 F2 + sta $0368,x ; CPU:$8580 PRG:0580 9D 68 03 + lda $F217,y ; CPU:$8583 PRG:0583 B9 17 F2 + sta $0369,x ; CPU:$8586 PRG:0586 9D 69 03 + rts ; CPU:$8589 PRG:0589 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_858A +; Global: Branch target inside Sub: taken when 858A. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_858A: + ldx Zp36 ; CPU:$858A PRG:058A A6 36 + lda Zp19 ; CPU:$858C PRG:058C A5 19 + sta $0300,x ; CPU:$858E PRG:058E 9D 00 03 + inx ; CPU:$8591 PRG:0591 E8 + lda Zp1A ; CPU:$8592 PRG:0592 A5 1A + sta $0300,x ; CPU:$8594 PRG:0594 9D 00 03 + inx ; CPU:$8597 PRG:0597 E8 + lda Zp17 ; CPU:$8598 PRG:0598 A5 17 + sta $0300,x ; CPU:$859A PRG:059A 9D 00 03 + inx ; CPU:$859D PRG:059D E8 + lda Zp18 ; CPU:$859E PRG:059E A5 18 + sta $0300,x ; CPU:$85A0 PRG:05A0 9D 00 03 + inx ; CPU:$85A3 PRG:05A3 E8 + stx Zp36 ; CPU:$85A4 PRG:05A4 86 36 + rts ; CPU:$85A6 PRG:05A6 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_85A7 +; Global: Branch target inside Sub: taken when 85A7. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_85A7: + ldx Zp37 ; CPU:$85A7 PRG:05A7 A6 37 + lda Zp19 ; CPU:$85A9 PRG:05A9 A5 19 + sta $0338,x ; CPU:$85AB PRG:05AB 9D 38 03 + inx ; CPU:$85AE PRG:05AE E8 + lda Zp1A ; CPU:$85AF PRG:05AF A5 1A + sta $0338,x ; CPU:$85B1 PRG:05B1 9D 38 03 + inx ; CPU:$85B4 PRG:05B4 E8 + lda Zp17 ; CPU:$85B5 PRG:05B5 A5 17 + sta $0338,x ; CPU:$85B7 PRG:05B7 9D 38 03 + inx ; CPU:$85BA PRG:05BA E8 + lda Zp18 ; CPU:$85BB PRG:05BB A5 18 + sta $0338,x ; CPU:$85BD PRG:05BD 9D 38 03 + inx ; CPU:$85C0 PRG:05C0 E8 + stx Zp37 ; CPU:$85C1 PRG:05C1 86 37 + rts ; CPU:$85C3 PRG:05C3 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_85C4 +; Global: Branch target inside Sub: taken when 85C4. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_85C4: + lda PPUSTATUS ; CPU:$85C4 PRG:05C4 AD 02 20 + lda #$3F ; CPU:$85C7 PRG:05C7 A9 3F + sta PPUADDR ; CPU:$85C9 PRG:05C9 8D 06 20 + lda #$00 ; CPU:$85CC PRG:05CC A9 00 + sta PPUADDR ; CPU:$85CE PRG:05CE 8D 06 20 + tay ; CPU:$85D1 PRG:05D1 A8 +; ----------------------------------------------------------------------------- +; Routine: WriteVramTiles_OnCarryClear +; Global: Branch target inside WriteVramTiles: taken when the addition or subtraction did not carry. +; Local: Part of WriteVramTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +WriteVramTiles_OnCarryClear: + lda (Zp11),y ; CPU:$85D2 PRG:05D2 B1 11 + sta PPUDATA ; CPU:$85D4 PRG:05D4 8D 07 20 + iny ; CPU:$85D7 PRG:05D7 C8 + cpy #$20 ; CPU:$85D8 PRG:05D8 C0 20 + bcc WriteVramTiles_OnCarryClear; CPU:$85DA PRG:05DA 90 F6 + rts ; CPU:$85DC PRG:05DC 60 +; ----------------------------------------------------------------------------- +; Routine: TickAnimationCounter +; Global: Advances the animation counter once per frame. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickAnimationCounter: + inc Zp75 ; CPU:$85DD PRG:05DD E6 75 + lda GameMode ; CPU:$85DF PRG:05DF A5 6A + bne TickAnimationCounter_Loop ; CPU:$85E1 PRG:05E1 D0 01 + rts ; CPU:$85E3 PRG:05E3 60 +; ----------------------------------------------------------------------------- +; Routine: TickAnimationCounter_Loop +; Global: Branch target inside TickAnimationCounter: taken when the loop repeats. +; Local: Part of TickAnimationCounter. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickAnimationCounter_Loop: + jsr UpdateSprites ; CPU:$85E4 PRG:05E4 20 E9 82 + lda GameMode ; CPU:$85E7 PRG:05E7 A5 6A + jsr DispatchByJumpTable ; CPU:$85E9 PRG:05E9 20 73 81 +; ---- data $85EC-$8605 (26 bytes) ---- + .byte $E3, $85, $06, $86, $5F, $8A, $2A, $C6, $A7, $C2, $D8, $C6, $AF, $8B, $55, $8F ; CPU:$85EC PRG:05EC E3 85 06 86 5F 8A 2A C6 A7 C2 D8 C6 AF 8B 55 8F + .byte $42, $98, $B9, $94, $21, $96, $2E, $96, $1B, $97 ; CPU:$85FC PRG:05FC 42 98 B9 94 21 96 2E 96 1B 97 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode +; Global: Switches the PPU to the graphics mode the level asks for. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode: + lda Zp6C ; CPU:$8606 PRG:0606 A5 6C + bne ApplyGraphicsMode_OnNonzero; CPU:$8608 PRG:0608 D0 6C + lda #$00 ; CPU:$860A PRG:060A A9 00 + sta $05E7 ; CPU:$860C PRG:060C 8D E7 05 + sta $05E8 ; CPU:$860F PRG:060F 8D E8 05 + sta $05E9 ; CPU:$8612 PRG:0612 8D E9 05 + lda #$02 ; CPU:$8615 PRG:0615 A9 02 + jsr ClearOamShadow ; CPU:$8617 PRG:0617 20 88 81 + inc Zp6C ; CPU:$861A PRG:061A E6 6C + lda #$00 ; CPU:$861C PRG:061C A9 00 + sta Zp75 ; CPU:$861E PRG:061E 85 75 + sta Zp76 ; CPU:$8620 PRG:0620 85 76 + sta Zp2E ; CPU:$8622 PRG:0622 85 2E + lda #$00 ; CPU:$8624 PRG:0624 A9 00 + jsr BankedCall ; CPU:$8626 PRG:0626 20 04 80 +; ---- data $8629-$8662 (58 bytes) ---- + .byte $A9, $00, $8D, $01, $02, $A9, $C0, $8D, $03, $02, $A9, $45, $8D, $00, $02, $A9 ; CPU:$8629 PRG:0629 A9 00 8D 01 02 A9 C0 8D 03 02 A9 45 8D 00 02 A9 + .byte $E0, $8D, $02, $02, $A9, $0F, $8D, $E6, $05, $8D, $E5, $05, $A5, $00, $D0, $07 ; CPU:$8639 PRG:0639 E0 8D 02 02 A9 0F 8D E6 05 8D E5 05 A5 00 D0 07 + .byte $20, $34, $8E, $A9, $01, $85, $00, $A2, $00, $20, $84, $90, $A9, $20, $85, $78 ; CPU:$8649 PRG:0649 20 34 8E A9 01 85 00 A2 00 20 84 90 A9 20 85 78 + .byte $A5, $01, $29, $88, $09, $88, $85, $01, $A9, $03 ; CPU:$8659 PRG:0659 A5 01 29 88 09 88 85 01 A9 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_8663 +; Global: Branch target inside Sub: taken when 8663. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_8663: + sta a:$00DE ; CPU:$8663 PRG:0663 8D DE 00 + lda #$01 ; CPU:$8666 PRG:0666 A9 01 + sta a:$00DD ; CPU:$8668 PRG:0668 8D DD 00 + lda #$05 ; CPU:$866B PRG:066B A9 05 + jsr BankedCall ; CPU:$866D PRG:066D 20 04 80 +; ---- data $8670-$8675 (6 bytes) ---- + .byte $A9, $00, $8D, $DD, $00, $60 ; CPU:$8670 PRG:0670 A9 00 8D DD 00 60 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode_OnNonzero +; Global: Branch target inside ApplyGraphicsMode: taken when the tested value is not zero. +; Local: Part of ApplyGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode_OnNonzero: + lda PPUSTATUS ; CPU:$8676 PRG:0676 AD 02 20 + and #$40 ; CPU:$8679 PRG:0679 29 40 + bne ApplyGraphicsMode_OnNonzero; CPU:$867B PRG:067B D0 F9 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode_OnZero +; Global: Branch target inside ApplyGraphicsMode: taken when the tested value is zero. +; Local: Part of ApplyGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode_OnZero: + lda PPUSTATUS ; CPU:$867D PRG:067D AD 02 20 + and #$40 ; CPU:$8680 PRG:0680 29 40 + beq ApplyGraphicsMode_OnZero ; CPU:$8682 PRG:0682 F0 F9 + ldy #$18 ; CPU:$8684 PRG:0684 A0 18 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode_OnNonzero2 +; Global: Branch target inside ApplyGraphicsMode: taken when OnNonzero2. +; Local: Part of ApplyGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode_OnNonzero2: + dey ; CPU:$8686 PRG:0686 88 + bne ApplyGraphicsMode_OnNonzero2 ; CPU:$8687 PRG:0687 D0 FD + lda PPUSTATUS ; CPU:$8689 PRG:0689 AD 02 20 + lda #$98 ; CPU:$868C PRG:068C A9 98 + sta $03DE ; CPU:$868E PRG:068E 8D DE 03 + sta PPUCTRL ; CPU:$8691 PRG:0691 8D 00 20 + lda $05E6 ; CPU:$8694 PRG:0694 AD E6 05 + bne ApplyGraphicsMode_Loop ; CPU:$8697 PRG:0697 D0 38 + lda #$00 ; CPU:$8699 PRG:0699 A9 00 + sta Zp6C ; CPU:$869B PRG:069B 85 6C + lda #$03 ; CPU:$869D PRG:069D A9 03 + sta GameMode ; CPU:$869F PRG:069F 85 6A + lda #$02 ; CPU:$86A1 PRG:06A1 A9 02 + sta Zp5B ; CPU:$86A3 PRG:06A3 85 5B + sta Zp5D ; CPU:$86A5 PRG:06A5 85 5D + sta Zp5A ; CPU:$86A7 PRG:06A7 85 5A + sta Zp5C ; CPU:$86A9 PRG:06A9 85 5C + lda #$5A ; CPU:$86AB PRG:06AB A9 5A + sta $05E6 ; CPU:$86AD PRG:06AD 8D E6 05 + lda #$00 ; CPU:$86B0 PRG:06B0 A9 00 + sta $05E2 ; CPU:$86B2 PRG:06B2 8D E2 05 + sta $05E1 ; CPU:$86B5 PRG:06B5 8D E1 05 + sta $05E4 ; CPU:$86B8 PRG:06B8 8D E4 05 + sta $05E3 ; CPU:$86BB PRG:06BB 8D E3 05 + lda #$00 ; CPU:$86BE PRG:06BE A9 00 + sta Zp95 ; CPU:$86C0 PRG:06C0 85 95 + lda $06EF ; CPU:$86C2 PRG:06C2 AD EF 06 + and #$01 ; CPU:$86C5 PRG:06C5 29 01 + sta Zp6F ; CPU:$86C7 PRG:06C7 85 6F + eor #$01 ; CPU:$86C9 PRG:06C9 49 01 + sta Zp96 ; CPU:$86CB PRG:06CB 85 96 + inc $06EF ; CPU:$86CD PRG:06CD EE EF 06 + rts ; CPU:$86D0 PRG:06D0 60 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode_Loop +; Global: Branch target inside ApplyGraphicsMode: taken when the loop repeats. +; Local: Part of ApplyGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode_Loop: + jsr AnimatePalette ; CPU:$86D1 PRG:06D1 20 FC 89 + lda $05E9 ; CPU:$86D4 PRG:06D4 AD E9 05 + bne ApplyGraphicsMode_Loop4 ; CPU:$86D7 PRG:06D7 D0 53 + lda $05E8 ; CPU:$86D9 PRG:06D9 AD E8 05 + bne ApplyGraphicsMode_Loop2 ; CPU:$86DC PRG:06DC D0 12 + lda NewButton1 ; CPU:$86DE PRG:06DE A5 2A + cmp #$20 ; CPU:$86E0 PRG:06E0 C9 20 + bne ApplyGraphicsMode_Loop4 ; CPU:$86E2 PRG:06E2 D0 48 + lda #$01 ; CPU:$86E4 PRG:06E4 A9 01 + sta $05E8 ; CPU:$86E6 PRG:06E6 8D E8 05 + lda #$00 ; CPU:$86E9 PRG:06E9 A9 00 + sta NewButton1 ; CPU:$86EB PRG:06EB 85 2A + sta $05E7 ; CPU:$86ED PRG:06ED 8D E7 05 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode_Loop2 +; Global: Branch target inside ApplyGraphicsMode: taken when Loop2. +; Local: Part of ApplyGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode_Loop2: + lda $05E8 ; CPU:$86F0 PRG:06F0 AD E8 05 + beq ApplyGraphicsMode_Loop4 ; CPU:$86F3 PRG:06F3 F0 37 + ldx $05E7 ; CPU:$86F5 PRG:06F5 AE E7 05 + lda NewButton1 ; CPU:$86F8 PRG:06F8 A5 2A + beq ApplyGraphicsMode_Loop4 ; CPU:$86FA PRG:06FA F0 30 + cmp $876E,x ; CPU:$86FC PRG:06FC DD 6E 87 + beq ApplyGraphicsMode_Loop3 ; CPU:$86FF PRG:06FF F0 08 + lda #$01 ; CPU:$8701 PRG:0701 A9 01 + sta $05E9 ; CPU:$8703 PRG:0703 8D E9 05 + jmp ApplyGraphicsMode_Loop4 ; CPU:$8706 PRG:0706 4C 2C 87 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode_Loop3 +; Global: Branch target inside ApplyGraphicsMode: taken when Loop3. +; Local: Part of ApplyGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode_Loop3: + inc $05E7 ; CPU:$8709 PRG:0709 EE E7 05 + lda $05E7 ; CPU:$870C PRG:070C AD E7 05 + cmp #$0C ; CPU:$870F PRG:070F C9 0C + bcc ApplyGraphicsMode_Loop4 ; CPU:$8711 PRG:0711 90 19 + lda #$01 ; CPU:$8713 PRG:0713 A9 01 + sta Zp99 ; CPU:$8715 PRG:0715 85 99 + lda #$00 ; CPU:$8717 PRG:0717 A9 00 + sta Zp91 ; CPU:$8719 PRG:0719 85 91 + sta Zp97 ; CPU:$871B PRG:071B 85 97 + sta Zp6C ; CPU:$871D PRG:071D 85 6C + sta $05E5 ; CPU:$871F PRG:071F 8D E5 05 + lda #$08 ; CPU:$8722 PRG:0722 A9 08 + sta GameMode ; CPU:$8724 PRG:0724 85 6A + lda #$04 ; CPU:$8726 PRG:0726 A9 04 + jsr Sub_8663 ; CPU:$8728 PRG:0728 20 63 86 + rts ; CPU:$872B PRG:072B 60 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode_Loop4 +; Global: Branch target inside ApplyGraphicsMode: taken when Loop4. +; Local: Part of ApplyGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode_Loop4: + lda NewButton1 ; CPU:$872C PRG:072C A5 2A + and #$10 ; CPU:$872E PRG:072E 29 10 + beq ApplyGraphicsMode_Loop5 ; CPU:$8730 PRG:0730 F0 1C + inc GameMode ; CPU:$8732 PRG:0732 E6 6A + lda #$00 ; CPU:$8734 PRG:0734 A9 00 + sta Zp6C ; CPU:$8736 PRG:0736 85 6C + sta $01B0 ; CPU:$8738 PRG:0738 8D B0 01 + ldy #$00 ; CPU:$873B PRG:073B A0 00 + sty $05E5 ; CPU:$873D PRG:073D 8C E5 05 + sty $05E6 ; CPU:$8740 PRG:0740 8C E6 05 + lda #$F8 ; CPU:$8743 PRG:0743 A9 F8 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode_OnNonzero3 +; Global: Branch target inside ApplyGraphicsMode: taken when OnNonzero3. +; Local: Part of ApplyGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode_OnNonzero3: + sta $0200,y ; CPU:$8745 PRG:0745 99 00 02 + iny ; CPU:$8748 PRG:0748 C8 + iny ; CPU:$8749 PRG:0749 C8 + iny ; CPU:$874A PRG:074A C8 + iny ; CPU:$874B PRG:074B C8 + bne ApplyGraphicsMode_OnNonzero3 ; CPU:$874C PRG:074C D0 F7 +; ----------------------------------------------------------------------------- +; Routine: ApplyGraphicsMode_Loop5 +; Global: Branch target inside ApplyGraphicsMode: taken when Loop5. +; Local: Part of ApplyGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyGraphicsMode_Loop5: + rts ; CPU:$874E PRG:074E 60 +; ---- data $874F-$89FB (685 bytes) ---- +; referenced by `cmp $876E,x` at $86FC (operand $876E falls inside this region) +; referenced by `lda $89F4,x` at $8A20 (operand $89F4 falls inside this region) +; referenced by `lda $89F5,x` at $8A26 (operand $89F5 falls inside this region) + .byte $01, $A5, $2A, $29, $10, $F0, $17, $A9, $00, $85, $6C, $85, $6A, $8D, $B0, $01 ; CPU:$874F PRG:074F 01 A5 2A 29 10 F0 17 A9 00 85 6C 85 6A 8D B0 01 + .byte $8D, $00, $20, $8D, $01, $20, $A5, $01, $29, $88, $09, $88, $85, $01, $60, $08 ; CPU:$875F PRG:075F 8D 00 20 8D 01 20 A5 01 29 88 09 88 85 01 60 08 + .byte $08, $04, $04, $02, $02, $01, $01, $80, $80, $40, $40, $A2, $00, $A0, $00, $BD ; CPU:$876F PRG:076F 08 04 04 02 02 01 01 80 80 40 40 A2 00 A0 00 BD + .byte $EC, $87, $99, $00, $02, $99, $F8, $02, $C8, $E8, $E0, $08, $90, $F1, $A9, $21 ; CPU:$877F PRG:077F EC 87 99 00 02 99 F8 02 C8 E8 E0 08 90 F1 A9 21 + .byte $8D, $FA, $02, $A9, $22, $8D, $FE, $02, $A0, $00, $A5, $77, $C9, $40, $B0, $02 ; CPU:$878F PRG:078F 8D FA 02 A9 22 8D FE 02 A0 00 A5 77 C9 40 B0 02 + .byte $A0, $F8, $0A, $AA, $BD, $F4, $87, $18, $69, $7A, $99, $03, $02, $BD, $F5, $87 ; CPU:$879F PRG:079F A0 F8 0A AA BD F4 87 18 69 7A 99 03 02 BD F5 87 + .byte $18, $69, $60, $99, $00, $02, $E6, $77, $A5, $77, $C9, $80, $90, $04, $A9, $00 ; CPU:$87AF PRG:07AF 18 69 60 99 00 02 E6 77 A5 77 C9 80 90 04 A9 00 + .byte $85, $77, $A0, $FC, $A5, $78, $C9, $40, $B0, $02, $A0, $04, $0A, $AA, $BD, $F4 ; CPU:$87BF PRG:07BF 85 77 A0 FC A5 78 C9 40 B0 02 A0 04 0A AA BD F4 + .byte $88, $18, $69, $7A, $99, $03, $02, $BD, $F5, $88, $18, $69, $60, $99, $00, $02 ; CPU:$87CF PRG:07CF 88 18 69 7A 99 03 02 BD F5 88 18 69 60 99 00 02 + .byte $C6, $78, $A5, $78, $C9, $81, $90, $04, $A9, $7F, $85, $78, $60, $F8, $BF, $01 ; CPU:$87DF PRG:07DF C6 78 A5 78 C9 81 90 04 A9 7F 85 78 60 F8 BF 01 + .byte $00, $F8, $BF, $02, $00, $45, $29, $44, $2A, $43, $2B, $42, $2B, $41, $2C, $3F ; CPU:$87EF PRG:07EF 00 F8 BF 02 00 45 29 44 2A 43 2B 42 2B 41 2C 3F + .byte $2D, $3E, $2D, $3C, $2E, $3A, $2E, $38, $2E, $36, $2E, $33, $2E, $31, $2E, $2E ; CPU:$87FF PRG:07FF 2D 3E 2D 3C 2E 3A 2E 38 2E 36 2E 33 2E 31 2E 2E + .byte $2E, $2C, $2D, $29, $2D, $26, $2C, $23, $2C, $20, $2B, $1D, $2A, $1A, $29, $17 ; CPU:$880F PRG:080F 2E 2C 2D 29 2D 26 2C 23 2C 20 2B 1D 2A 1A 29 17 + .byte $28, $13, $27, $10, $25, $0C, $24, $09, $22, $06, $21, $02, $1F, $FF, $1E, $FB ; CPU:$881F PRG:081F 28 13 27 10 25 0C 24 09 22 06 21 02 1F FF 1E FB + .byte $1C, $F8, $1A, $F4, $18, $F1, $16, $EE, $14, $EA, $12, $E7, $10, $E4, $0E, $E1 ; CPU:$882F PRG:082F 1C F8 1A F4 18 F1 16 EE 14 EA 12 E7 10 E4 0E E1 + .byte $0C, $DE, $09, $DB, $07, $D8, $05, $D5, $03, $D2, $00, $D0, $FE, $CD, $FC, $CB ; CPU:$883F PRG:083F 0C DE 09 DB 07 D8 05 D5 03 D2 00 D0 FE CD FC CB + .byte $FA, $C9, $F7, $C7, $F5, $C5, $F3, $C3, $F1, $C1, $EF, $C0, $ED, $BE, $EB, $BD ; CPU:$884F PRG:084F FA C9 F7 C7 F5 C5 F3 C3 F1 C1 EF C0 ED BE EB BD + .byte $E9, $BC, $E7, $BB, $E5, $BB, $E3, $BA, $E1, $BA, $E0, $B9, $DE, $B9, $DD, $BA ; CPU:$885F PRG:085F E9 BC E7 BB E5 BB E3 BA E1 BA E0 B9 DE B9 DD BA + .byte $DB, $BA, $DA, $BA, $D9, $BB, $D7, $BC, $D6, $BD, $D5, $BE, $D5, $BF, $D4, $C1 ; CPU:$886F PRG:086F DB BA DA BA D9 BB D7 BC D6 BD D5 BE D5 BF D4 C1 + .byte $D3, $C2, $D3, $C4, $D2, $C6, $D2, $C8, $D2, $CA, $D2, $CD, $D2, $CF, $D2, $D2 ; CPU:$887F PRG:087F D3 C2 D3 C4 D2 C6 D2 C8 D2 CA D2 CD D2 CF D2 D2 + .byte $D2, $D4, $D3, $D7, $D3, $DA, $D4, $DD, $D4, $E0, $D5, $E3, $D6, $E6, $D7, $E9 ; CPU:$888F PRG:088F D2 D4 D3 D7 D3 DA D4 DD D4 E0 D5 E3 D6 E6 D7 E9 + .byte $D8, $ED, $D9, $F0, $DB, $F4, $DC, $F7, $DE, $FA, $DF, $FE, $E1, $01, $E2, $05 ; CPU:$889F PRG:089F D8 ED D9 F0 DB F4 DC F7 DE FA DF FE E1 01 E2 05 + .byte $E4, $08, $E6, $0C, $E8, $0F, $EA, $12, $EC, $16, $EE, $19, $F0, $1C, $F2, $1F ; CPU:$88AF PRG:08AF E4 08 E6 0C E8 0F EA 12 EC 16 EE 19 F0 1C F2 1F + .byte $F4, $22, $F7, $25, $F9, $28, $FB, $2B, $FD, $2E, $00, $30, $02, $33, $04, $35 ; CPU:$88BF PRG:08BF F4 22 F7 25 F9 28 FB 2B FD 2E 00 30 02 33 04 35 + .byte $06, $37, $09, $39, $0B, $3B, $0D, $3D, $0F, $3F, $11, $40, $13, $42, $15, $43 ; CPU:$88CF PRG:08CF 06 37 09 39 0B 3B 0D 3D 0F 3F 11 40 13 42 15 43 + .byte $17, $44, $19, $45, $1B, $45, $1D, $46, $1F, $46, $20, $47, $22, $47, $23, $46 ; CPU:$88DF PRG:08DF 17 44 19 45 1B 45 1D 46 1F 46 20 47 22 47 23 46 + .byte $25, $46, $26, $46, $27, $BA, $27, $BA, $26, $BA, $25, $B9, $23, $B9, $22, $BA ; CPU:$88EF PRG:08EF 25 46 26 46 27 BA 27 BA 26 BA 25 B9 23 B9 22 BA + .byte $20, $BA, $1F, $BB, $1D, $BB, $1B, $BC, $19, $BD, $17, $BE, $15, $C0, $13, $C1 ; CPU:$88FF PRG:08FF 20 BA 1F BB 1D BB 1B BC 19 BD 17 BE 15 C0 13 C1 + .byte $11, $C3, $0F, $C5, $0D, $C7, $0B, $C9, $09, $CB, $06, $CD, $04, $D0, $02, $D2 ; CPU:$890F PRG:090F 11 C3 0F C5 0D C7 0B C9 09 CB 06 CD 04 D0 02 D2 + .byte $00, $D5, $FD, $D8, $FB, $DB, $F9, $DE, $F7, $E1, $F4, $E4, $F2, $E7, $F0, $EA ; CPU:$891F PRG:091F 00 D5 FD D8 FB DB F9 DE F7 E1 F4 E4 F2 E7 F0 EA + .byte $EE, $EE, $EC, $F1, $EA, $F4, $E8, $F8, $E6, $FB, $E4, $FF, $E2, $02, $E1, $06 ; CPU:$892F PRG:092F EE EE EC F1 EA F4 E8 F8 E6 FB E4 FF E2 02 E1 06 + .byte $DF, $09, $DE, $0C, $DC, $10, $DB, $13, $D9, $17, $D8, $1A, $D7, $1D, $D6, $20 ; CPU:$893F PRG:093F DF 09 DE 0C DC 10 DB 13 D9 17 D8 1A D7 1D D6 20 + .byte $D5, $23, $D4, $26, $D4, $29, $D3, $2C, $D3, $2E, $D2, $31, $D2, $33, $D2, $36 ; CPU:$894F PRG:094F D5 23 D4 26 D4 29 D3 2C D3 2E D2 31 D2 33 D2 36 + .byte $D2, $38, $D2, $3A, $D2, $3C, $D2, $3E, $D3, $3F, $D3, $41, $D4, $42, $D5, $43 ; CPU:$895F PRG:095F D2 38 D2 3A D2 3C D2 3E D3 3F D3 41 D4 42 D5 43 + .byte $D5, $44, $D6, $45, $D7, $46, $D9, $46, $DA, $46, $DB, $47, $DD, $47, $DE, $46 ; CPU:$896F PRG:096F D5 44 D6 45 D7 46 D9 46 DA 46 DB 47 DD 47 DE 46 + .byte $E0, $46, $E1, $45, $E3, $45, $E5, $44, $E7, $43, $E9, $42, $EB, $40, $ED, $3F ; CPU:$897F PRG:097F E0 46 E1 45 E3 45 E5 44 E7 43 E9 42 EB 40 ED 3F + .byte $EF, $3D, $F1, $3B, $F3, $39, $F5, $37, $F7, $35, $FA, $33, $FC, $30, $FE, $2E ; CPU:$898F PRG:098F EF 3D F1 3B F3 39 F5 37 F7 35 FA 33 FC 30 FE 2E + .byte $00, $2B, $03, $28, $05, $25, $07, $22, $09, $1F, $0C, $1C, $0E, $19, $10, $16 ; CPU:$899F PRG:099F 00 2B 03 28 05 25 07 22 09 1F 0C 1C 0E 19 10 16 + .byte $12, $12, $14, $0F, $16, $0C, $18, $08, $1A, $05, $1C, $01, $1E, $FE, $1F, $FA ; CPU:$89AF PRG:09AF 12 12 14 0F 16 0C 18 08 1A 05 1C 01 1E FE 1F FA + .byte $21, $F7, $22, $F4, $24, $F0, $25, $ED, $27, $E9, $28, $E6, $29, $E3, $2A, $E0 ; CPU:$89BF PRG:09BF 21 F7 22 F4 24 F0 25 ED 27 E9 28 E6 29 E3 2A E0 + .byte $2B, $DD, $2C, $DA, $2C, $D7, $2D, $D4, $2D, $D2, $2E, $CF, $2E, $CD, $2E, $CA ; CPU:$89CF PRG:09CF 2B DD 2C DA 2C D7 2D D4 2D D2 2E CF 2E CD 2E CA + .byte $2E, $C8, $2E, $C6, $2E, $C4, $2E, $C2, $2D, $C1, $2D, $BF, $2C, $BE, $2B, $BD ; CPU:$89DF PRG:09DF 2E C8 2E C6 2E C4 2E C2 2D C1 2D BF 2C BE 2B BD + .byte $2B, $BC, $2A, $BB, $29, $0F, $A7, $2F, $A7, $4F, $A7, $6F, $A7 ; CPU:$89EF PRG:09EF 2B BC 2A BB 29 0F A7 2F A7 4F A7 6F A7 +; ----------------------------------------------------------------------------- +; Routine: AnimatePalette +; Global: Cycles the palette entries of the animated tiles. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +AnimatePalette: + lda Zp75 ; CPU:$89FC PRG:09FC A5 75 + and #$07 ; CPU:$89FE PRG:09FE 29 07 + bne AnimatePalette_Loop ; CPU:$8A00 PRG:0A00 D0 33 + lda Zp76 ; CPU:$8A02 PRG:0A02 A5 76 + cmp #$04 ; CPU:$8A04 PRG:0A04 C9 04 + bcs AnimatePalette_Loop ; CPU:$8A06 PRG:0A06 B0 2D + lda #$3F ; CPU:$8A08 PRG:0A08 A9 3F + sta $01B0 ; CPU:$8A0A PRG:0A0A 8D B0 01 + lda #$00 ; CPU:$8A0D PRG:0A0D A9 00 + sta $01B1 ; CPU:$8A0F PRG:0A0F 8D B1 01 + lda #$10 ; CPU:$8A12 PRG:0A12 A9 10 + sta $01B2 ; CPU:$8A14 PRG:0A14 8D B2 01 + lda #$01 ; CPU:$8A17 PRG:0A17 A9 01 + sta $01B3 ; CPU:$8A19 PRG:0A19 8D B3 01 + lda Zp76 ; CPU:$8A1C PRG:0A1C A5 76 + asl a ; CPU:$8A1E PRG:0A1E 0A + tax ; CPU:$8A1F PRG:0A1F AA + lda $89F4,x ; CPU:$8A20 PRG:0A20 BD F4 89 + sta $01B4 ; CPU:$8A23 PRG:0A23 8D B4 01 + lda $89F5,x ; CPU:$8A26 PRG:0A26 BD F5 89 + sta $01B5 ; CPU:$8A29 PRG:0A29 8D B5 01 + lda #$00 ; CPU:$8A2C PRG:0A2C A9 00 + sta $01B6 ; CPU:$8A2E PRG:0A2E 8D B6 01 + sta Zp75 ; CPU:$8A31 PRG:0A31 85 75 + inc Zp76 ; CPU:$8A33 PRG:0A33 E6 76 +; ----------------------------------------------------------------------------- +; Routine: AnimatePalette_Loop +; Global: Branch target inside AnimatePalette: taken when the loop repeats. +; Local: Part of AnimatePalette. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +AnimatePalette_Loop: + rts ; CPU:$8A35 PRG:0A35 60 +; ---- data $8A36-$8A5E (41 bytes) ---- + .byte $A5, $75, $C9, $20, $90, $15, $A5, $76, $C9, $05, $B0, $0F, $E6, $76, $A2, $00 ; CPU:$8A36 PRG:0A36 A5 75 C9 20 90 15 A5 76 C9 05 B0 0F E6 76 A2 00 + .byte $BD, $52, $8A, $9D, $B0, $01, $E8, $E0, $0D, $90, $F5, $60, $23, $4A, $0F, $01 ; CPU:$8A46 PRG:0A46 BD 52 8A 9D B0 01 E8 E0 0D 90 F5 60 23 4A 0F 01 + .byte $A0, $94, $23, $26, $03, $03, $AF, $94, $00 ; CPU:$8A56 PRG:0A56 A0 94 23 26 03 03 AF 94 00 +; ----------------------------------------------------------------------------- +; Routine: InitLevelState +; Global: Sets up the state of a new level. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitLevelState: + lda Zp6C ; CPU:$8A5F PRG:0A5F A5 6C + beq InitLevelState_Loop ; CPU:$8A61 PRG:0A61 F0 03 + jmp Sub_8AE1 ; CPU:$8A63 PRG:0A63 4C E1 8A +; ----------------------------------------------------------------------------- +; Routine: InitLevelState_Loop +; Global: Branch target inside InitLevelState: taken when the loop repeats. +; Local: Part of InitLevelState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitLevelState_Loop: + sta Zp95 ; CPU:$8A66 PRG:0A66 85 95 + sta Zp96 ; CPU:$8A68 PRG:0A68 85 96 + sta $05E5 ; CPU:$8A6A PRG:0A6A 8D E5 05 + sta $05E6 ; CPU:$8A6D PRG:0A6D 8D E6 05 + sta Zp91 ; CPU:$8A70 PRG:0A70 85 91 + tax ; CPU:$8A72 PRG:0A72 AA + ldy #$14 ; CPU:$8A73 PRG:0A73 A0 14 +; ----------------------------------------------------------------------------- +; Routine: InitLevelState_OnNonzero +; Global: Branch target inside InitLevelState: taken when the tested value is not zero. +; Local: Part of InitLevelState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitLevelState_OnNonzero: + sta $05AC,x ; CPU:$8A75 PRG:0A75 9D AC 05 + inx ; CPU:$8A78 PRG:0A78 E8 + dey ; CPU:$8A79 PRG:0A79 88 + bne InitLevelState_OnNonzero ; CPU:$8A7A PRG:0A7A D0 F9 + jsr ClearSpriteSlots ; CPU:$8A7C PRG:0A7C 20 28 92 + jsr ClearOamShadow ; CPU:$8A7F PRG:0A7F 20 88 81 + jsr Sub_C061 ; CPU:$8A82 PRG:0A82 20 61 C0 + jsr ClearBubbleSlots ; CPU:$8A85 PRG:0A85 20 C7 AE + inc Zp6C ; CPU:$8A88 PRG:0A88 E6 6C + lda #$02 ; CPU:$8A8A PRG:0A8A A9 02 + jsr ClearOamShadow ; CPU:$8A8C PRG:0A8C 20 88 81 + ldx #$00 ; CPU:$8A8F PRG:0A8F A2 00 + lda #$03 ; CPU:$8A91 PRG:0A91 A9 03 +; ----------------------------------------------------------------------------- +; Routine: InitLevelState_OnNonzero2 +; Global: Branch target inside InitLevelState: taken when OnNonzero2. +; Local: Part of InitLevelState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitLevelState_OnNonzero2: + sta $0202,x ; CPU:$8A93 PRG:0A93 9D 02 02 + inx ; CPU:$8A96 PRG:0A96 E8 + inx ; CPU:$8A97 PRG:0A97 E8 + inx ; CPU:$8A98 PRG:0A98 E8 + inx ; CPU:$8A99 PRG:0A99 E8 + bne InitLevelState_OnNonzero2 ; CPU:$8A9A PRG:0A9A D0 F7 + ldx #$00 ; CPU:$8A9C PRG:0A9C A2 00 + jsr Sub_9084 ; CPU:$8A9E PRG:0A9E 20 84 90 + lda #$01 ; CPU:$8AA1 PRG:0AA1 A9 01 + sta Zp2E ; CPU:$8AA3 PRG:0AA3 85 2E + lda #$00 ; CPU:$8AA5 PRG:0AA5 A9 00 + jsr BankedCall ; CPU:$8AA7 PRG:0AA7 20 04 80 +; ---- data $8AAA-$8AE0 (55 bytes) ---- .byte $A9, $00, $AA, $9D, $00, $06, $E8, $D0, $FA, $A2, $00, $BD, $22, $93, $9D, $00 ; CPU:$8AAA PRG:0AAA A9 00 AA 9D 00 06 E8 D0 FA A2 00 BD 22 93 9D 00 .byte $02, $E8, $E0, $14, $90, $F5, $A9, $00, $85, $03, $A9, $EF, $85, $04, $A5, $01 ; CPU:$8ABA PRG:0ABA 02 E8 E0 14 90 F5 A9 00 85 03 A9 EF 85 04 A5 01 .byte $29, $E7, $09, $01, $85, $01, $A9, $03, $85, $9A, $A9, $00, $85, $5A, $A2, $00 ; CPU:$8ACA PRG:0ACA 29 E7 09 01 85 01 A9 03 85 9A A9 00 85 5A A2 00 - .byte $86, $5B, $A9, $05, $4C, $63, $86, $20, $A9, $90, $20, $FC, $90, $20, $AC, $91 ; CPU:$8ADA PRG:0ADA 86 5B A9 05 4C 63 86 20 A9 90 20 FC 90 20 AC 91 - .byte $A5, $2A, $29, $10, $F0, $1E, $E6, $6A, $A9, $00, $85, $6C, $A5, $70, $85, $5A ; CPU:$8AEA PRG:0AEA A5 2A 29 10 F0 1E E6 6A A9 00 85 6C A5 70 85 5A - .byte $85, $5C, $A5, $72, $85, $5B, $85, $5D, $20, $B7, $C6, $20, $4F, $BB, $20, $03 ; CPU:$8AFA PRG:0AFA 85 5C A5 72 85 5B 85 5D 20 B7 C6 20 4F BB 20 03 - .byte $97, $20, $0F, $97, $60, $81, $99, $81, $99, $81, $99, $81, $99, $81, $99, $81 ; CPU:$8B0A PRG:0B0A 97 20 0F 97 60 81 99 81 99 81 99 81 99 81 99 81 - .byte $99, $A5, $6C, $D0, $3D, $85, $75, $85, $92, $E6, $6C, $20, $88, $81, $A5, $91 ; CPU:$8B1A PRG:0B1A 99 A5 6C D0 3D 85 75 85 92 E6 6C 20 88 81 A5 91 - .byte $18, $69, $04, $85, $2E, $A9, $00, $20, $04, $80, $A5, $91, $4A, $18, $69, $02 ; CPU:$8B2A PRG:0B2A 18 69 04 85 2E A9 00 20 04 80 A5 91 4A 18 69 02 - .byte $AA, $20, $84, $90, $20, $28, $92, $A6, $91, $A5, $01, $29, $E6, $1D, $0F, $8B ; CPU:$8B3A PRG:0B3A AA 20 84 90 20 28 92 A6 91 A5 01 29 E6 1D 0F 8B - .byte $85, $01, $A9, $00, $85, $03, $85, $04, $A5, $99, $D0, $05, $A9, $04, $20, $63 ; CPU:$8B4A PRG:0B4A 85 01 A9 00 85 03 85 04 A5 99 D0 05 A9 04 20 63 - .byte $86, $60, $A9, $01, $20, $04, $80, $A5, $99, $D0, $2F, $A5, $2A, $29, $C0, $D0 ; CPU:$8B5A PRG:0B5A 86 60 A9 01 20 04 80 A5 99 D0 2F A5 2A 29 C0 D0 - .byte $06, $A5, $2B, $29, $C0, $F0, $22, $A9, $00, $85, $6C, $8D, $B0, $01, $A9, $04 ; CPU:$8B6A PRG:0B6A 06 A5 2B 29 C0 F0 22 A9 00 85 6C 8D B0 01 A9 04 - .byte $85, $6A, $E6, $91, $A5, $91, $C9, $0C, $D0, $07, $E6, $99, $A9, $06, $85, $6A ; CPU:$8B7A PRG:0B7A 85 6A E6 91 A5 91 C9 0C D0 07 E6 99 A9 06 85 6A - .byte $60, $A5, $01, $29, $88, $09, $88, $85, $01, $60, $E6, $97, $D0, $16, $A9, $00 ; CPU:$8B8A PRG:0B8A 60 A5 01 29 88 09 88 85 01 60 E6 97 D0 16 A9 00 - .byte $85, $6C, $E6, $91, $A5, $91, $C9, $0C, $90, $0A, $A9, $07, $85, $6A, $A9, $00 ; CPU:$8B9A PRG:0B9A 85 6C E6 91 A5 91 C9 0C 90 0A A9 07 85 6A A9 00 - .byte $85, $6C, $85, $99, $60, $A5, $6C, $D0, $67, $A5, $99, $D0, $09, $E6, $97, $A5 ; CPU:$8BAA PRG:0BAA 85 6C 85 99 60 A5 6C D0 67 A5 99 D0 09 E6 97 A5 - .byte $97, $C9, $70, $B0, $01, $60, $A9, $00, $85, $97, $E6, $6C, $20, $88, $81, $20 ; CPU:$8BBA PRG:0BBA 97 C9 70 B0 01 60 A9 00 85 97 E6 6C 20 88 81 20 - .byte $28, $92, $A2, $00, $20, $84, $90, $A9, $02, $85, $2E, $A9, $00, $20, $04, $80 ; CPU:$8BCA PRG:0BCA 28 92 A2 00 20 84 90 A9 02 85 2E A9 00 20 04 80 - .byte $A5, $01, $29, $E6, $09, $01, $85, $01, $A9, $00, $85, $03, $85, $04, $20, $4C ; CPU:$8BDA PRG:0BDA A5 01 29 E6 09 01 85 01 A9 00 85 03 85 04 20 4C - .byte $8C, $A9, $00, $AA, $85, $79, $85, $7A, $85, $8C, $85, $8D, $85, $8E, $85, $8F ; CPU:$8BEA PRG:0BEA 8C A9 00 AA 85 79 85 7A 85 8C 85 8D 85 8E 85 8F - .byte $85, $87, $BD, $2F, $8E, $95, $7D, $95, $83, $E8, $E0, $04, $90, $F4, $A5, $7F ; CPU:$8BFA PRG:0BFA 85 87 BD 2F 8E 95 7D 95 83 E8 E0 04 90 F4 A5 7F - .byte $85, $88, $85, $89, $A5, $80, $85, $8A, $85, $8B, $A9, $03, $20, $63, $86, $60 ; CPU:$8C0A PRG:0C0A 85 88 85 89 A5 80 85 8A 85 8B A9 03 20 63 86 60 - .byte $20, $42, $8E, $A5, $2A, $29, $10, $F0, $19, $A9, $02, $85, $6A, $A9, $00, $85 ; CPU:$8C1A PRG:0C1A 20 42 8E A5 2A 29 10 F0 19 A9 02 85 6A A9 00 85 - .byte $6C, $A5, $99, $F0, $0D, $A9, $08, $85, $6A, $A9, $00, $85, $91, $A9, $04, $20 ; CPU:$8C2A PRG:0C2A 6C A5 99 F0 0D A9 08 85 6A A9 00 85 91 A9 04 20 - .byte $63, $86, $60, $A0, $00, $BD, $AC, $05, $99, $90, $01, $E8, $C8, $C0, $0A, $90 ; CPU:$8C3A PRG:0C3A 63 86 60 A0 00 BD AC 05 99 90 01 E8 C8 C0 0A 90 - .byte $F4, $60, $A2, $0A, $86, $90, $20, $3D, $8C, $20, $7F, $8C, $A2, $00, $86, $90 ; CPU:$8C4A PRG:0C4A F4 60 A2 0A 86 90 20 3D 8C 20 7F 8C A2 00 86 90 - .byte $20, $3D, $8C, $20, $7F, $8C, $A5, $1D, $C5, $1C, $90, $18, $E6, $1D, $A5, $82 ; CPU:$8C5A PRG:0C5A 20 3D 8C 20 7F 8C A5 1D C5 1C 90 18 E6 1D A5 82 - .byte $18, $69, $40, $85, $82, $A5, $81, $69, $00, $85, $81, $A9, $0D, $18, $6D, $E0 ; CPU:$8C6A PRG:0C6A 18 69 40 85 82 A5 81 69 00 85 81 A9 0D 18 6D E0 - .byte $05, $8D, $E0, $05, $60, $A0, $00, $84, $11, $A2, $00, $BD, $94, $01, $F0, $18 ; CPU:$8C7A PRG:0C7A 05 8D E0 05 60 A0 00 84 11 A2 00 BD 94 01 F0 18 - .byte $B9, $07, $01, $30, $0D, $BD, $94, $01, $18, $69, $30, $D9, $07, $01, $F0, $11 ; CPU:$8C8A PRG:0C8A B9 07 01 30 0D BD 94 01 18 69 30 D9 07 01 F0 11 - .byte $90, $15, $20, $84, $8D, $4C, $D4, $8C, $B9, $07, $01, $30, $04, $C9, $31, $B0 ; CPU:$8C9A PRG:0C9A 90 15 20 84 8D 4C D4 8C B9 07 01 30 04 C9 31 B0 - .byte $06, $E8, $C8, $E0, $06, $90, $D4, $E6, $11, $A5, $11, $C9, $0A, $B0, $10, $A5 ; CPU:$8CAA PRG:0CAA 06 E8 C8 E0 06 90 D4 E6 11 A5 11 C9 0A B0 10 A5 - .byte $11, $85, $13, $A9, $0D, $85, $15, $20, $D5, $82, $A4, $17, $4C, $83, $8C, $A6 ; CPU:$8CBA PRG:0CBA 11 85 13 A9 0D 85 15 20 D5 82 A4 17 4C 83 8C A6 - .byte $90, $F0, $05, $85, $1D, $4C, $D4, $8C, $85, $1C, $A0, $00, $84, $25, $A2, $00 ; CPU:$8CCA PRG:0CCA 90 F0 05 85 1D 4C D4 8C 85 1C A0 00 84 25 A2 00 - .byte $86, $24, $8A, $0A, $AA, $BD, $78, $8D, $85, $07, $BD, $79, $8D, $85, $08, $A5 ; CPU:$8CDA PRG:0CDA 86 24 8A 0A AA BD 78 8D 85 07 BD 79 8D 85 08 A5 - .byte $25, $85, $13, $A9, $40, $85, $15, $20, $D5, $82, $A5, $07, $18, $65, $17, $8D ; CPU:$8CEA PRG:0CEA 25 85 13 A9 40 85 15 20 D5 82 A5 07 18 65 17 8D - .byte $B1, $01, $A5, $08, $65, $18, $8D, $B0, $01, $A5, $90, $F0, $08, $A4, $25, $C4 ; CPU:$8CFA PRG:0CFA B1 01 A5 08 65 18 8D B0 01 A5 90 F0 08 A4 25 C4 - .byte $1D, $D0, $20, $F0, $06, $A4, $25, $C4, $1C, $D0, $18, $A6, $24, $D0, $14, $A5 ; CPU:$8D0A PRG:0D0A 1D D0 20 F0 06 A4 25 C4 1C D0 18 A6 24 D0 14 A5 - .byte $90, $D0, $04, $A2, $00, $F0, $02, $A2, $06, $AD, $B0, $01, $95, $7B, $AD, $B1 ; CPU:$8D1A PRG:0D1A 90 D0 04 A2 00 F0 02 A2 06 AD B0 01 95 7B AD B1 - .byte $01, $95, $7C, $A6, $24, $BD, $7E, $8D, $85, $1B, $BD, $81, $8D, $8D, $B2, $01 ; CPU:$8D2A PRG:0D2A 01 95 7C A6 24 BD 7E 8D 85 1B BD 81 8D 8D B2 01 - .byte $A9, $01, $8D, $B3, $01, $A5, $25, $85, $13, $A9, $0D, $85, $15, $20, $D5, $82 ; CPU:$8D3A PRG:0D3A A9 01 8D B3 01 A5 25 85 13 A9 0D 85 15 20 D5 82 - .byte $A9, $00, $18, $65, $17, $65, $1B, $8D, $B4, $01, $A9, $01, $8D, $B5, $01, $A9 ; CPU:$8D4A PRG:0D4A A9 00 18 65 17 65 1B 8D B4 01 A9 01 8D B5 01 A9 - .byte $00, $8D, $B6, $01, $20, $B1, $81, $E6, $24, $A6, $24, $E0, $03, $B0, $03, $4C ; CPU:$8D5A PRG:0D5A 00 8D B6 01 20 B1 81 E6 24 A6 24 E0 03 B0 03 4C - .byte $DC, $8C, $E6, $25, $A5, $25, $C9, $0A, $B0, $03, $4C, $D8, $8C, $60, $27, $25 ; CPU:$8D6A PRG:0D6A DC 8C E6 25 A5 25 C9 0A B0 03 4C D8 8C 60 27 25 - .byte $2E, $25, $35, $25, $00, $03, $07, $03, $04, $06, $A6, $90, $F0, $07, $A5, $11 ; CPU:$8D7A PRG:0D7A 2E 25 35 25 00 03 07 03 04 06 A6 90 F0 07 A5 11 - .byte $85, $1D, $4C, $93, $8D, $A5, $11, $85, $1C, $85, $1E, $85, $13, $A9, $0D, $85 ; CPU:$8D8A PRG:0D8A 85 1D 4C 93 8D A5 11 85 1C 85 1E 85 13 A9 0D 85 - .byte $15, $20, $D5, $82, $A5, $17, $85, $22, $A6, $22, $E0, $75, $B0, $27, $A2, $08 ; CPU:$8D9A PRG:0D9A 15 20 D5 82 A5 17 85 22 A6 22 E0 75 B0 27 A2 08 - .byte $86, $11, $A5, $11, $85, $13, $A9, $0D, $85, $15, $20, $D5, $82, $A6, $17, $E4 ; CPU:$8DAA PRG:0DAA 86 11 A5 11 85 13 A9 0D 85 15 20 D5 82 A6 17 E4 - .byte $22, $90, $12, $A0, $00, $BD, $00, $01, $9D, $0D, $01, $E8, $C8, $C0, $0D, $90 ; CPU:$8DBA PRG:0DBA 22 90 12 A0 00 BD 00 01 9D 0D 01 E8 C8 C0 0D 90 - .byte $F4, $C6, $11, $10, $DD, $A2, $00, $A5, $90, $F0, $01, $E8, $A5, $22, $9D, $DF ; CPU:$8DCA PRG:0DCA F4 C6 11 10 DD A2 00 A5 90 F0 01 E8 A5 22 9D DF - .byte $05, $AA, $A9, $FF, $9D, $00, $01, $E8, $9D, $00, $01, $E8, $9D, $00, $01, $E8 ; CPU:$8DDA PRG:0DDA 05 AA A9 FF 9D 00 01 E8 9D 00 01 E8 9D 00 01 E8 - .byte $A0, $00, $84, $1E, $B9, $90, $01, $D0, $08, $A5, $1E, $D0, $04, $A9, $FF, $D0 ; CPU:$8DEA PRG:0DEA A0 00 84 1E B9 90 01 D0 08 A5 1E D0 04 A9 FF D0 - .byte $08, $E6, $1E, $B9, $90, $01, $18, $69, $30, $9D, $00, $01, $E8, $C8, $C0, $04 ; CPU:$8DFA PRG:0DFA 08 E6 1E B9 90 01 18 69 30 9D 00 01 E8 C8 C0 04 - .byte $90, $E2, $A0, $00, $84, $1E, $B9, $94, $01, $D0, $08, $A5, $1E, $D0, $04, $A9 ; CPU:$8E0A PRG:0E0A 90 E2 A0 00 84 1E B9 94 01 D0 08 A5 1E D0 04 A9 - .byte $FF, $D0, $08, $E6, $1E, $B9, $94, $01, $18, $69, $30, $9D, $00, $01, $E8, $C8 ; CPU:$8E1A PRG:0E1A FF D0 08 E6 1E B9 94 01 18 69 30 9D 00 01 E8 C8 - .byte $C0, $06, $90, $E2, $60, $01, $01, $85, $94, $FF, $A2, $00, $BD, $03, $94, $9D ; CPU:$8E2A PRG:0E2A C0 06 90 E2 60 01 01 85 94 FF A2 00 BD 03 94 9D - .byte $00, $01, $E8, $E0, $82, $90, $F5, $60, $A5, $6F, $F0, $09, $A0, $06, $85, $90 ; CPU:$8E3A PRG:0E3A 00 01 E8 E0 82 90 F5 60 A5 6F F0 09 A0 06 85 90 - .byte $A2, $01, $20, $55, $8E, $A2, $00, $A0, $00, $85, $90, $B5, $1C, $C9, $0A, $B0 ; CPU:$8E4A PRG:0E4A A2 01 20 55 8E A2 00 A0 00 85 90 B5 1C C9 0A B0 - .byte $E6, $B5, $79, $C9, $03, $B0, $E0, $B5, $8E, $F0, $0D, $B9, $7C, $00, $18, $69 ; CPU:$8E5A PRG:0E5A E6 B5 79 C9 03 B0 E0 B5 8E F0 0D B9 7C 00 18 69 - .byte $01, $99, $7C, $00, $A9, $00, $95, $8E, $A5, $75, $29, $07, $D0, $1D, $A5, $75 ; CPU:$8E6A PRG:0E6A 01 99 7C 00 A9 00 95 8E A5 75 29 07 D0 1D A5 75 - .byte $29, $08, $F0, $0D, $A9, $33, $99, $7F, $00, $A9, $8E, $99, $80, $00, $4C, $95 ; CPU:$8E7A PRG:0E7A 29 08 F0 0D A9 33 99 7F 00 A9 8E 99 80 00 4C 95 - .byte $8E, $B5, $88, $99, $7F, $00, $B5, $8A, $99, $80, $00, $B5, $2A, $29, $80, $F0 ; CPU:$8E8A PRG:0E8A 8E B5 88 99 7F 00 B5 8A 99 80 00 B5 2A 29 80 F0 - .byte $3B, $F6, $79, $F6, $8E, $B5, $88, $99, $7F, $00, $B5, $8A, $99, $80, $00, $A9 ; CPU:$8E9A PRG:0E9A 3B F6 79 F6 8E B5 88 99 7F 00 B5 8A 99 80 00 A9 - .byte $85, $95, $88, $A9, $94, $95, $8A, $98, $48, $BD, $DF, $05, $18, $75, $79, $A8 ; CPU:$8EAA PRG:0EAA 85 95 88 A9 94 95 8A 98 48 BD DF 05 18 75 79 A8 - .byte $88, $B5, $8C, $18, $69, $41, $C9, $5B, $D0, $02, $A9, $40, $99, $00, $01, $68 ; CPU:$8EBA PRG:0EBA 88 B5 8C 18 69 41 C9 5B D0 02 A9 40 99 00 01 68 - .byte $A8, $A9, $00, $95, $8C, $A9, $05, $85, $75, $4C, $2E, $8F, $B5, $2A, $29, $01 ; CPU:$8ECA PRG:0ECA A8 A9 00 95 8C A9 05 85 75 4C 2E 8F B5 2A 29 01 - .byte $F0, $1D, $F6, $88, $D0, $02, $F6, $8A, $F6, $8C, $B5, $8C, $C9, $1B, $90, $38 ; CPU:$8EDA PRG:0EDA F0 1D F6 88 D0 02 F6 8A F6 8C B5 8C C9 1B 90 38 - .byte $A9, $85, $95, $88, $A9, $94, $95, $8A, $A9, $00, $95, $8C, $4C, $22, $8F, $B5 ; CPU:$8EEA PRG:0EEA A9 85 95 88 A9 94 95 8A A9 00 95 8C 4C 22 8F B5 - .byte $2A, $29, $02, $F0, $23, $B5, $88, $38, $E9, $01, $95, $88, $B0, $02, $D6, $8A ; CPU:$8EFA PRG:0EFA 2A 29 02 F0 23 B5 88 38 E9 01 95 88 B0 02 D6 8A - .byte $D6, $8C, $10, $14, $A9, $1A, $95, $8C, $A9, $85, $18, $69, $1A, $95, $88, $A9 ; CPU:$8F0A PRG:0F0A D6 8C 10 14 A9 1A 95 8C A9 85 18 69 1A 95 88 A9 - .byte $94, $69, $00, $95, $8A, $4C, $22, $8F, $B5, $79, $C9, $03, $90, $06, $A9, $00 ; CPU:$8F1A PRG:0F1A 94 69 00 95 8A 4C 22 8F B5 79 C9 03 90 06 A9 00 - .byte $8D, $B0, $01, $60, $A2, $00, $A5, $1C, $C9, $0A, $B0, $0B, $B5, $7B, $9D, $B0 ; CPU:$8F2A PRG:0F2A 8D B0 01 60 A2 00 A5 1C C9 0A B0 0B B5 7B 9D B0 - .byte $01, $E8, $E0, $0C, $90, $F6, $60, $A0, $06, $B9, $7B, $00, $9D, $B0, $01, $C8 ; CPU:$8F3A PRG:0F3A 01 E8 E0 0C 90 F6 60 A0 06 B9 7B 00 9D B0 01 C8 - .byte $E8, $E0, $06, $90, $F4, $A9, $00, $9D, $B0, $01, $60, $A5, $6C, $D0, $36, $E6 ; CPU:$8F4A PRG:0F4A E8 E0 06 90 F4 A9 00 9D B0 01 60 A5 6C D0 36 E6 - .byte $6C, $A9, $02, $20, $88, $81, $20, $28, $92, $A2, $00, $20, $84, $90, $A9, $03 ; CPU:$8F5A PRG:0F5A 6C A9 02 20 88 81 20 28 92 A2 00 20 84 90 A9 03 - .byte $85, $2E, $A9, $00, $20, $04, $80, $A9, $12, $85, $2E, $A9, $00, $20, $04, $80 ; CPU:$8F6A PRG:0F6A 85 2E A9 00 20 04 80 A9 12 85 2E A9 00 20 04 80 - .byte $A5, $01, $29, $E4, $09, $00, $85, $01, $A9, $00, $85, $76, $8D, $DB, $03, $A9 ; CPU:$8F7A PRG:0F7A A5 01 29 E4 09 00 85 01 A9 00 85 76 8D DB 03 A9 - .byte $05, $20, $63, $86, $60, $A5, $6C, $C9, $01, $D0, $12, $A5, $31, $29, $07, $D0 ; CPU:$8F8A PRG:0F8A 05 20 63 86 60 A5 6C C9 01 D0 12 A5 31 29 07 D0 - .byte $0B, $20, $09, $90, $A5, $76, $C9, $05, $90, $02, $E6, $6C, $60, $A5, $6C, $C9 ; CPU:$8F9A PRG:0F9A 0B 20 09 90 A5 76 C9 05 90 02 E6 6C 60 A5 6C C9 - .byte $02, $D0, $18, $A5, $31, $29, $3F, $D0, $11, $E6, $76, $A5, $76, $C9, $0A, $90 ; CPU:$8FAA PRG:0FAA 02 D0 18 A5 31 29 3F D0 11 E6 76 A5 76 C9 0A 90 - .byte $09, $E6, $6C, $A9, $03, $8D, $DB, $03, $85, $76, $60, $C9, $03, $D0, $20, $A5 ; CPU:$8FBA PRG:0FBA 09 E6 6C A9 03 8D DB 03 85 76 60 C9 03 D0 20 A5 - .byte $31, $29, $07, $D0, $19, $20, $09, $90, $A5, $76, $10, $12, $E6, $6C, $A9, $00 ; CPU:$8FCA PRG:0FCA 31 29 07 D0 19 20 09 90 A5 76 10 12 E6 6C A9 00 - .byte $8D, $DB, $03, $85, $76, $A5, $01, $09, $01, $85, $01, $8D, $DE, $03, $60, $C9 ; CPU:$8FDA PRG:0FDA 8D DB 03 85 76 A5 01 09 01 85 01 8D DE 03 60 C9 - .byte $04, $D0, $12, $A5, $31, $29, $07, $D0, $0B, $20, $09, $90, $A5, $76, $C9, $05 ; CPU:$8FEA PRG:0FEA 04 D0 12 A5 31 29 07 D0 0B 20 09 90 A5 76 C9 05 - .byte $90, $02, $E6, $6C, $60, $A5, $2A, $29, $10, $F0, $03, $4C, $36, $80, $60, $A2 ; CPU:$8FFA PRG:0FFA 90 02 E6 6C 60 A5 2A 29 10 F0 03 4C 36 80 60 A2 - .byte $00, $BD, $36, $90, $9D, $B0, $01, $E8, $E0, $04, $90, $F5, $A5, $76, $0A, $A8 ; CPU:$900A PRG:100A 00 BD 36 90 9D B0 01 E8 E0 04 90 F5 A5 76 0A A8 - .byte $B9, $3A, $90, $9D, $B0, $01, $B9, $3B, $90, $9D, $B1, $01, $A9, $00, $9D, $B2 ; CPU:$901A PRG:101A B9 3A 90 9D B0 01 B9 3B 90 9D B1 01 A9 00 9D B2 - .byte $01, $AD, $DB, $03, $D0, $03, $E6, $76, $60, $C6, $76, $60, $3F, $00, $10, $01 ; CPU:$902A PRG:102A 01 AD DB 03 D0 03 E6 76 60 C6 76 60 3F 00 10 01 - .byte $0F, $A7, $44, $90, $54, $90, $64, $90, $74, $90, $FF, $00, $00, $00, $FF, $00 ; CPU:$903A PRG:103A 0F A7 44 90 54 90 64 90 74 90 FF 00 00 00 FF 00 - .byte $00, $00, $FF, $00, $00, $00, $FF, $00, $00, $00, $FF, $10, $10, $10, $FF, $10 ; CPU:$904A PRG:104A 00 00 FF 00 00 00 FF 00 00 00 FF 10 10 10 FF 10 - .byte $10, $10, $FF, $10, $10, $10, $FF, $10, $10, $10, $FF, $20, $20, $20, $FF, $20 ; CPU:$905A PRG:105A 10 10 FF 10 10 10 FF 10 10 10 FF 20 20 20 FF 20 - .byte $20, $20, $FF, $20, $20, $20, $FF, $20, $20, $20, $FF, $30, $30, $30, $FF, $30 ; CPU:$906A PRG:106A 20 20 FF 20 20 20 FF 20 20 20 FF 30 30 30 FF 30 - .byte $30, $30, $FF, $30, $30, $30, $FF, $30, $30, $30, $20, $80, $FF, $BD, $90, $90 ; CPU:$907A PRG:107A 30 30 FF 30 30 30 FF 30 30 30 20 80 FF BD 90 90 - .byte $9D, $90, $90, $85, $2C, $60, $00, $01, $02, $03, $04, $05, $06, $07, $A2, $00 ; CPU:$908A PRG:108A 9D 90 90 85 2C 60 00 01 02 03 04 05 06 07 A2 00 - .byte $BD, $36, $93, $C9, $FF, $F0, $07, $9D, $08, $02, $E8, $4C, $9A, $90, $60, $A5 ; CPU:$909A PRG:109A BD 36 93 C9 FF F0 07 9D 08 02 E8 4C 9A 90 60 A5 - .byte $2A, $29, $84, $F0, $0C, $E6, $74, $A5, $74, $C9, $05, $90, $04, $A9, $00, $85 ; CPU:$90AA PRG:10AA 2A 29 84 F0 0C E6 74 A5 74 C9 05 90 04 A9 00 85 - .byte $74, $A5, $2A, $29, $48, $F0, $08, $C6, $74, $10, $04, $A9, $04, $85, $74, $A5 ; CPU:$90BA PRG:10BA 74 A5 2A 29 48 F0 08 C6 74 10 04 A9 04 85 74 A5 - .byte $71, $C9, $02, $D0, $0A, $A9, $00, $85, $72, $A6, $74, $E0, $03, $F0, $1D, $A6 ; CPU:$90CA PRG:10CA 71 C9 02 D0 0A A9 00 85 72 A6 74 E0 03 F0 1D A6 - .byte $74, $A5, $2A, $29, $01, $F0, $09, $B5, $6F, $DD, $F7, $90, $B0, $02, $F6, $6F ; CPU:$90DA PRG:10DA 74 A5 2A 29 01 F0 09 B5 6F DD F7 90 B0 02 F6 6F - .byte $A5, $2A, $29, $02, $F0, $06, $B5, $6F, $F0, $02, $D6, $6F, $60, $01, $03, $02 ; CPU:$90EA PRG:10EA A5 2A 29 02 F0 06 B5 6F F0 02 D6 6F 60 01 03 02 - .byte $04, $02, $A0, $00, $A5, $6F, $0A, $AA, $BD, $3A, $92, $85, $11, $BD, $3B, $92 ; CPU:$90FA PRG:10FA 04 02 A0 00 A5 6F 0A AA BD 3A 92 85 11 BD 3B 92 - .byte $85, $12, $BD, $9A, $92, $99, $E2, $04, $C8, $BD, $9B, $92, $99, $E2, $04, $C8 ; CPU:$910A PRG:110A 85 12 BD 9A 92 99 E2 04 C8 BD 9B 92 99 E2 04 C8 - .byte $A5, $70, $0A, $AA, $BD, $3E, $92, $85, $13, $BD, $3F, $92, $85, $14, $BD, $9E ; CPU:$911A PRG:111A A5 70 0A AA BD 3E 92 85 13 BD 3F 92 85 14 BD 9E - .byte $92, $99, $E2, $04, $C8, $BD, $9F, $92, $99, $E2, $04, $C8, $A5, $71, $0A, $AA ; CPU:$912A PRG:112A 92 99 E2 04 C8 BD 9F 92 99 E2 04 C8 A5 71 0A AA - .byte $BD, $46, $92, $85, $15, $BD, $47, $92, $85, $16, $BD, $A6, $92, $99, $E2, $04 ; CPU:$913A PRG:113A BD 46 92 85 15 BD 47 92 85 16 BD A6 92 99 E2 04 - .byte $C8, $BD, $A7, $92, $99, $E2, $04, $C8, $A2, $00, $BD, $4C, $92, $85, $17, $BD ; CPU:$914A PRG:114A C8 BD A7 92 99 E2 04 C8 A2 00 BD 4C 92 85 17 BD - .byte $4D, $92, $85, $18, $A5, $17, $18, $65, $72, $85, $17, $A5, $18, $69, $00, $85 ; CPU:$915A PRG:115A 4D 92 85 18 A5 17 18 65 72 85 17 A5 18 69 00 85 - .byte $18, $A5, $72, $0A, $85, $21, $BD, $B2, $92, $99, $E2, $04, $BD, $B3, $92, $99 ; CPU:$916A PRG:116A 18 A5 72 0A 85 21 BD B2 92 99 E2 04 BD B3 92 99 - .byte $E3, $04, $B9, $E2, $04, $18, $65, $21, $99, $E2, $04, $B9, $E3, $04, $69, $00 ; CPU:$917A PRG:117A E3 04 B9 E2 04 18 65 21 99 E2 04 B9 E3 04 69 00 - .byte $99, $E3, $04, $C8, $C8, $A5, $73, $0A, $AA, $BD, $4E, $92, $85, $19, $BD, $4F ; CPU:$918A PRG:118A 99 E3 04 C8 C8 A5 73 0A AA BD 4E 92 85 19 BD 4F - .byte $92, $85, $1A, $BD, $AC, $92, $99, $E2, $04, $C8, $BD, $AD, $92, $99, $E2, $04 ; CPU:$919A PRG:119A 92 85 1A BD AC 92 99 E2 04 C8 BD AD 92 99 E2 04 - .byte $C8, $60, $A9, $00, $85, $21, $A9, $14, $85, $1B, $A6, $21, $BD, $34, $92, $85 ; CPU:$91AA PRG:11AA C8 60 A9 00 85 21 A9 14 85 1B A6 21 BD 34 92 85 - .byte $20, $85, $23, $8A, $0A, $AA, $B5, $11, $85, $05, $B5, $12, $85, $06, $BD, $E2 ; CPU:$91BA PRG:11BA 20 85 23 8A 0A AA B5 11 85 05 B5 12 85 06 BD E2 - .byte $04, $85, $07, $BD, $E3, $04, $85, $08, $A5, $1B, $48, $A0, $00, $A6, $1B, $B1 ; CPU:$91CA PRG:11CA 04 85 07 BD E3 04 85 08 A5 1B 48 A0 00 A6 1B B1 - .byte $05, $9D, $01, $02, $E6, $1B, $E6, $1B, $E6, $1B, $E6, $1B, $C8, $C6, $20, $D0 ; CPU:$91DA PRG:11DA 05 9D 01 02 E6 1B E6 1B E6 1B E6 1B C8 C6 20 D0 - .byte $EC, $68, $85, $1B, $A0, $00, $A6, $1B, $B1, $07, $9D, $00, $02, $C8, $B1, $07 ; CPU:$91EA PRG:11EA EC 68 85 1B A0 00 A6 1B B1 07 9D 00 02 C8 B1 07 - .byte $9D, $03, $02, $A5, $74, $C5, $21, $D0, $0A, $A5, $75, $29, $04, $D0, $04, $A9 ; CPU:$91FA PRG:11FA 9D 03 02 A5 74 C5 21 D0 0A A5 75 29 04 D0 04 A9 - .byte $00, $F0, $02, $A9, $03, $9D, $02, $02, $E6, $1B, $E6, $1B, $E6, $1B, $E6, $1B ; CPU:$920A PRG:120A 00 F0 02 A9 03 9D 02 02 E6 1B E6 1B E6 1B E6 1B - .byte $C8, $C6, $23, $D0, $D1, $E6, $21, $A6, $21, $E0, $05, $90, $8D, $60, $A2, $00 ; CPU:$921A PRG:121A C8 C6 23 D0 D1 E6 21 A6 21 E0 05 90 8D 60 A2 00 - .byte $8A, $9D, $58, $03, $E8, $E0, $10, $D0, $F8, $60, $08, $01, $07, $01, $05, $05 ; CPU:$922A PRG:122A 8A 9D 58 03 E8 E0 10 D0 F8 60 08 01 07 01 05 05 - .byte $54, $92, $5C, $92, $64, $92, $65, $92, $66, $92, $67, $92, $68, $92, $6F, $92 ; CPU:$923A PRG:123A 54 92 5C 92 64 92 65 92 66 92 67 92 68 92 6F 92 - .byte $76, $92, $7D, $92, $86, $92, $8B, $92, $90, $92, $31, $50, $4C, $41, $59, $45 ; CPU:$924A PRG:124A 76 92 7D 92 86 92 8B 92 90 92 31 50 4C 41 59 45 - .byte $52, $FF, $32, $50, $4C, $41, $59, $45, $52, $53, $31, $32, $33, $34, $45, $41 ; CPU:$925A PRG:125A 52 FF 32 50 4C 41 59 45 52 53 31 32 33 34 45 41 - .byte $53, $59, $FF, $FF, $FF, $48, $41, $52, $44, $FF, $FF, $FF, $53, $54, $41, $43 ; CPU:$926A PRG:126A 53 59 FF FF FF 48 41 52 44 FF FF FF 53 54 41 43 - .byte $4B, $45, $44, $31, $32, $33, $34, $35, $36, $37, $38, $39, $54, $55, $4E, $45 ; CPU:$927A PRG:127A 4B 45 44 31 32 33 34 35 36 37 38 39 54 55 4E 45 - .byte $31, $54, $55, $4E, $45, $32, $54, $55, $4E, $45, $33, $53, $54, $41, $52, $54 ; CPU:$928A PRG:128A 31 54 55 4E 45 32 54 55 4E 45 33 53 54 41 52 54 - .byte $B4, $92, $C4, $92, $D4, $92, $D6, $92, $D8, $92, $DA, $92, $DC, $92, $E4, $92 ; CPU:$929A PRG:129A B4 92 C4 92 D4 92 D6 92 D8 92 DA 92 DC 92 E4 92 - .byte $EC, $92, $04, $93, $0E, $93, $18, $93, $FA, $92, $38, $30, $38, $40, $38, $48 ; CPU:$92AA PRG:12AA EC 92 04 93 0E 93 18 93 FA 92 38 30 38 40 38 48 - .byte $38, $50, $38, $58, $38, $60, $38, $68, $38, $70, $38, $88, $38, $98, $38, $A0 ; CPU:$92BA PRG:12BA 38 50 38 58 38 60 38 68 38 70 38 88 38 98 38 A0 - .byte $38, $A8, $38, $B0, $38, $B8, $38, $C0, $38, $C8, $58, $70, $58, $80, $58, $90 ; CPU:$92CA PRG:12CA 38 A8 38 B0 38 B8 38 C0 38 C8 58 70 58 80 58 90 - .byte $58, $A0, $78, $30, $78, $38, $78, $40, $78, $48, $78, $68, $78, $70, $78, $78 ; CPU:$92DA PRG:12DA 58 A0 78 30 78 38 78 40 78 48 78 68 78 70 78 78 - .byte $78, $80, $78, $98, $78, $A0, $78, $A8, $78, $B0, $78, $B8, $78, $C0, $78, $C8 ; CPU:$92EA PRG:12EA 78 80 78 98 78 A0 78 A8 78 B0 78 B8 78 C0 78 C8 - .byte $98, $70, $98, $80, $98, $90, $98, $A0, $98, $B0, $B8, $30, $B8, $38, $B8, $40 ; CPU:$92FA PRG:12FA 98 70 98 80 98 90 98 A0 98 B0 B8 30 B8 38 B8 40 - .byte $B8, $48, $B8, $50, $B8, $70, $B8, $78, $B8, $80, $B8, $88, $B8, $90, $B8, $B0 ; CPU:$930A PRG:130A B8 48 B8 50 B8 70 B8 78 B8 80 B8 88 B8 90 B8 B0 - .byte $B8, $B8, $B8, $C0, $B8, $C8, $B8, $D0, $D8, $53, $03, $6C, $D8, $54, $03, $74 ; CPU:$931A PRG:131A B8 B8 B8 C0 B8 C8 B8 D0 D8 53 03 6C D8 54 03 74 - .byte $D8, $41, $03, $7C, $D8, $52, $03, $84, $D8, $54, $03, $8C, $46, $8D, $23, $40 ; CPU:$932A PRG:132A D8 41 03 7C D8 52 03 84 D8 54 03 8C 46 8D 23 40 - .byte $4E, $BE, $23, $40, $56, $B3, $23, $40, $5E, $B4, $03, $40, $66, $B5, $03, $40 ; CPU:$933A PRG:133A 4E BE 23 40 56 B3 23 40 5E B4 03 40 66 B5 03 40 - .byte $6E, $90, $03, $40, $76, $91, $03, $40, $7E, $94, $03, $40, $36, $8C, $23, $48 ; CPU:$934A PRG:134A 6E 90 03 40 76 91 03 40 7E 94 03 40 36 8C 23 48 - .byte $3E, $95, $23, $48, $46, $96, $23, $48, $4E, $92, $03, $48, $56, $93, $03, $48 ; CPU:$935A PRG:135A 3E 95 23 48 46 96 23 48 4E 92 03 48 56 93 03 48 - .byte $5E, $97, $03, $48, $66, $99, $03, $48, $6E, $9A, $03, $48, $76, $9C, $03, $48 ; CPU:$936A PRG:136A 5E 97 03 48 66 99 03 48 6E 9A 03 48 76 9C 03 48 - .byte $7E, $9D, $03, $48, $86, $98, $03, $48, $2E, $8B, $23, $50, $36, $9B, $23, $50 ; CPU:$937A PRG:137A 7E 9D 03 48 86 98 03 48 2E 8B 23 50 36 9B 23 50 - .byte $3E, $9E, $23, $50, $46, $9F, $03, $50, $76, $A0, $03, $50, $7E, $A1, $03, $50 ; CPU:$938A PRG:138A 3E 9E 23 50 46 9F 03 50 76 A0 03 50 7E A1 03 50 - .byte $86, $A2, $03, $50, $8E, $A3, $03, $50, $F8, $8E, $03, $58, $2E, $A4, $23, $58 ; CPU:$939A PRG:139A 86 A2 03 50 8E A3 03 50 F8 8E 03 58 2E A4 23 58 - .byte $7E, $A5, $03, $58, $86, $A6, $03, $58, $8E, $A8, $03, $58, $96, $A9, $03, $58 ; CPU:$93AA PRG:13AA 7E A5 03 58 86 A6 03 58 8E A8 03 58 96 A9 03 58 - .byte $8E, $AA, $03, $60, $97, $AB, $03, $60, $9E, $AC, $03, $60, $96, $AE, $03, $68 ; CPU:$93BA PRG:13BA 8E AA 03 60 97 AB 03 60 9E AC 03 60 96 AE 03 68 - .byte $9E, $AD, $03, $68, $9E, $AF, $03, $70, $4E, $B0, $03, $AA, $56, $B1, $03, $AA ; CPU:$93CA PRG:13CA 9E AD 03 68 9E AF 03 70 4E B0 03 AA 56 B1 03 AA - .byte $5E, $A7, $03, $AA, $66, $B2, $03, $AA, $6E, $B6, $03, $AA, $76, $B7, $03, $AA ; CPU:$93DA PRG:13DA 5E A7 03 AA 66 B2 03 AA 6E B6 03 AA 76 B7 03 AA - .byte $7E, $B8, $03, $AA, $56, $BD, $03, $B2, $5E, $B9, $03, $B2, $66, $BA, $03, $B2 ; CPU:$93EA PRG:13EA 7E B8 03 AA 56 BD 03 B2 5E B9 03 B2 66 BA 03 B2 - .byte $6E, $BB, $03, $B2, $76, $BC, $03, $B2, $FF, $54, $4F, $4D, $31, $30, $30, $30 ; CPU:$93FA PRG:13FA 6E BB 03 B2 76 BC 03 B2 FF 54 4F 4D 31 30 30 30 - .byte $FF, $32, $30, $30, $30, $30, $4A, $4F, $45, $FF, $35, $30, $30, $FF, $31, $30 ; CPU:$940A PRG:140A FF 32 30 30 30 30 4A 4F 45 FF 35 30 30 FF 31 30 - .byte $30, $30, $30, $54, $52, $49, $FF, $34, $35, $30, $FF, $FF, $39, $30, $30, $30 ; CPU:$941A PRG:141A 30 30 30 54 52 49 FF 34 35 30 FF FF 39 30 30 30 - .byte $48, $40, $59, $FF, $34, $30, $30, $FF, $FF, $38, $30, $30, $30, $4A, $55, $4E ; CPU:$942A PRG:142A 48 40 59 FF 34 30 30 FF FF 38 30 30 30 4A 55 4E - .byte $FF, $33, $35, $30, $FF, $FF, $37, $30, $30, $30, $4A, $41, $43, $FF, $33, $30 ; CPU:$943A PRG:143A FF 33 35 30 FF FF 37 30 30 30 4A 41 43 FF 33 30 - .byte $30, $FF, $FF, $36, $30, $30, $30, $44, $40, $48, $FF, $32, $35, $30, $FF, $FF ; CPU:$944A PRG:144A 30 FF FF 36 30 30 30 44 40 48 FF 32 35 30 FF FF - .byte $35, $30, $30, $30, $4A, $49, $4E, $FF, $32, $30, $30, $FF, $FF, $34, $30, $30 ; CPU:$945A PRG:145A 35 30 30 30 4A 49 4E FF 32 30 30 FF FF 34 30 30 - .byte $30, $42, $4F, $42, $FF, $31, $35, $30, $FF, $FF, $33, $30, $30, $30, $4B, $41 ; CPU:$946A PRG:146A 30 42 4F 42 FF 31 35 30 FF FF 33 30 30 30 4B 41 - .byte $54, $FF, $31, $30, $30, $FF, $FF, $32, $30, $30, $30, $41, $42, $43, $44, $45 ; CPU:$947A PRG:147A 54 FF 31 30 30 FF FF 32 30 30 30 41 42 43 44 45 - .byte $46, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53, $54, $55 ; CPU:$948A PRG:148A 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 - .byte $56, $57, $58, $59, $5A, $40, $EF, $FF, $F1, $F2, $F2, $F1, $FF, $D7, $DF, $DC ; CPU:$949A PRG:149A 56 57 58 59 5A 40 EF FF F1 F2 F2 F1 FF D7 DF DC - .byte $FF, $E8, $E2, $D7, $DE, $E0, $E1, $E3, $DB, $E7, $E5, $EA, $DD, $E6, $00, $A5 ; CPU:$94AA PRG:14AA FF E8 E2 D7 DE E0 E1 E3 DB E7 E5 EA DD E6 00 A5 - .byte $6C, $20, $73, $81, $CA, $94, $0E, $95, $1D, $95, $2C, $95, $64, $95, $81, $95 ; CPU:$94BA PRG:14BA 6C 20 73 81 CA 94 0E 95 1D 95 2C 95 64 95 81 95 - .byte $E6, $97, $A5, $97, $C9, $80, $90, $3B, $A9, $03, $20, $04, $80, $A9, $01, $8D ; CPU:$94CA PRG:14CA E6 97 A5 97 C9 80 90 3B A9 03 20 04 80 A9 01 8D - .byte $DD, $00, $A9, $07, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD ; CPU:$94DA PRG:14DA DD 00 A9 07 8D DE 00 A9 05 20 04 80 A9 00 8D DD - .byte $00, $85, $97, $A5, $95, $D0, $03, $20, $4E, $C0, $A5, $96, $D0, $03, $20, $B4 ; CPU:$94EA PRG:14EA 00 85 97 A5 95 D0 03 20 4E C0 A5 96 D0 03 20 B4 - .byte $AE, $20, $88, $81, $20, $28, $92, $E6, $6C, $A5, $71, $C9, $01, $D0, $04, $A9 ; CPU:$94FA PRG:14FA AE 20 88 81 20 28 92 E6 6C A5 71 C9 01 D0 04 A9 - .byte $04, $85, $6C, $60, $A5, $95, $F0, $03, $E6, $6C, $60, $A9, $00, $85, $34, $20 ; CPU:$950A PRG:150A 04 85 6C 60 A5 95 F0 03 E6 6C 60 A9 00 85 34 20 - .byte $57, $C0, $60, $A5, $96, $F0, $03, $E6, $6C, $60, $A9, $01, $85, $34, $20, $BD ; CPU:$951A PRG:151A 57 C0 60 A5 96 F0 03 E6 6C 60 A9 01 85 34 20 BD - .byte $AE, $60, $A2, $00, $A0, $00, $A5, $98, $F0, $02, $A2, $08, $BD, $54, $95, $99 ; CPU:$952A PRG:152A AE 60 A2 00 A0 00 A5 98 F0 02 A2 08 BD 54 95 99 - .byte $38, $03, $E8, $C8, $C0, $08, $90, $F4, $A9, $00, $99, $38, $03, $A5, $6F, $D0 ; CPU:$953A PRG:153A 38 03 E8 C8 C0 08 90 F4 A9 00 99 38 03 A5 6F D0 - .byte $06, $EE, $38, $03, $EE, $38, $03, $E6, $6C, $60, $87, $21, $0B, $F8, $D9, $23 ; CPU:$954A PRG:154A 06 EE 38 03 EE 38 03 E6 6C 60 87 21 0B F8 D9 23 - .byte $1B, $F8, $97, $21, $0B, $F8, $DD, $23, $1B, $F8, $E6, $97, $A5, $97, $C9, $F0 ; CPU:$955A PRG:155A 1B F8 97 21 0B F8 DD 23 1B F8 E6 97 A5 97 C9 F0 - .byte $90, $14, $A9, $00, $85, $97, $E6, $6C, $A5, $95, $D0, $03, $20, $61, $C0, $A5 ; CPU:$956A PRG:156A 90 14 A9 00 85 97 E6 6C A5 95 D0 03 20 61 C0 A5 - .byte $96, $D0, $03, $20, $C7, $AE, $60, $E6, $5B, $E6, $5D, $A5, $5B, $A4, $98, $F0 ; CPU:$957A PRG:157A 96 D0 03 20 C7 AE 60 E6 5B E6 5D A5 5B A4 98 F0 - .byte $02, $A5, $5D, $4A, $B0, $0F, $A9, $04, $85, $6A, $A9, $00, $85, $6C, $20, $D2 ; CPU:$958A PRG:158A 02 A5 5D 4A B0 0F A9 04 85 6A A9 00 85 6C 20 D2 - .byte $95, $20, $EE, $95, $60, $85, $20, $A5, $98, $D0, $06, $20, $0B, $96, $4C, $AE ; CPU:$959A PRG:159A 95 20 EE 95 60 85 20 A5 98 D0 06 20 0B 96 4C AE - .byte $95, $20, $16, $96, $C5, $91, $90, $11, $85, $91, $20, $D2, $95, $20, $EE, $95 ; CPU:$95AA PRG:15AA 95 20 16 96 C5 91 90 11 85 91 20 D2 95 20 EE 95 - .byte $A9, $00, $85, $6C, $A9, $08, $85, $6A, $60, $20, $D2, $95, $20, $EE, $95, $A9 ; CPU:$95BA PRG:15BA A9 00 85 6C A9 08 85 6A 60 20 D2 95 20 EE 95 A9 - .byte $04, $85, $6A, $A9, $00, $85, $6C, $60, $A6, $5B, $E0, $05, $90, $10, $E6, $5A ; CPU:$95CA PRG:15CA 04 85 6A A9 00 85 6C 60 A6 5B E0 05 90 10 E6 5A - .byte $A5, $5A, $C9, $04, $90, $04, $A9, $00, $85, $5A, $A2, $00, $86, $5B, $BD, $75 ; CPU:$95DA PRG:15DA A5 5A C9 04 90 04 A9 00 85 5A A2 00 86 5B BD 75 - .byte $F8, $85, $35, $60, $A6, $5D, $E0, $05, $90, $10, $E6, $5C, $A5, $5C, $C9, $04 ; CPU:$95EA PRG:15EA F8 85 35 60 A6 5D E0 05 90 10 E6 5C A5 5C C9 04 - .byte $90, $04, $A9, $00, $85, $5C, $A2, $00, $86, $5D, $BD, $75, $F8, $8D, $CB, $00 ; CPU:$95FA PRG:15FA 90 04 A9 00 85 5C A2 00 86 5D BD 75 F8 8D CB 00 - .byte $60, $A5, $5A, $0A, $18, $65, $5A, $65, $20, $29, $0F, $60, $A5, $5C, $0A, $18 ; CPU:$960A PRG:160A 60 A5 5A 0A 18 65 5A 65 20 29 0F 60 A5 5C 0A 18 - .byte $65, $5C, $65, $20, $29, $0F, $60, $E6, $6C, $C9, $80, $90, $06, $A9, $00, $85 ; CPU:$961A PRG:161A 65 5C 65 20 29 0F 60 E6 6C C9 80 90 06 A9 00 85 - .byte $6C, $85, $6A, $60, $A5, $6C, $D0, $4A, $A2, $00, $BD, $47, $F8, $9D, $38, $03 ; CPU:$962A PRG:162A 6C 85 6A 60 A5 6C D0 4A A2 00 BD 47 F8 9D 38 03 - .byte $E8, $E0, $08, $90, $F5, $A9, $00, $9D, $38, $03, $A5, $6F, $F0, $06, $CE, $38 ; CPU:$963A PRG:163A E8 E0 08 90 F5 A9 00 9D 38 03 A5 6F F0 06 CE 38 - .byte $03, $CE, $38, $03, $A2, $00, $BD, $74, $96, $9D, $04, $02, $E8, $E0, $08, $D0 ; CPU:$964A PRG:164A 03 CE 38 03 A2 00 BD 74 96 9D 04 02 E8 E0 08 D0 - .byte $F5, $A5, $9A, $18, $69, $30, $8D, $05, $02, $A5, $6F, $F0, $0A, $A9, $5C, $8D ; CPU:$965A PRG:165A F5 A5 9A 18 69 30 8D 05 02 A5 6F F0 0A A9 5C 8D - .byte $07, $02, $A9, $18, $8D, $0B, $02, $E6, $6C, $60, $90, $30, $21, $78, $80, $AE ; CPU:$966A PRG:166A 07 02 A9 18 8D 0B 02 E6 6C 60 90 30 21 78 80 AE - .byte $23, $34, $A5, $2A, $29, $08, $F0, $05, $A9, $80, $8D, $08, $02, $A5, $2A, $29 ; CPU:$967A PRG:167A 23 34 A5 2A 29 08 F0 05 A9 80 8D 08 02 A5 2A 29 - .byte $04, $F0, $05, $A9, $88, $8D, $08, $02, $A2, $AE, $A5, $31, $29, $10, $D0, $02 ; CPU:$968A PRG:168A 04 F0 05 A9 88 8D 08 02 A2 AE A5 31 29 10 D0 02 - .byte $A2, $FF, $8E, $09, $02, $A5, $2A, $29, $80, $D0, $01, $60, $C6, $9A, $CE, $05 ; CPU:$969A PRG:169A A2 FF 8E 09 02 A5 2A 29 80 D0 01 60 C6 9A CE 05 - .byte $02, $A2, $00, $BD, $69, $F8, $9D, $38, $03, $E8, $E0, $0C, $90, $F5, $A5, $6F ; CPU:$96AA PRG:16AA 02 A2 00 BD 69 F8 9D 38 03 E8 E0 0C 90 F5 A5 6F - .byte $F0, $0C, $CE, $38, $03, $CE, $38, $03, $CE, $3C, $03, $CE, $3C, $03, $AD, $08 ; CPU:$96BA PRG:16BA F0 0C CE 38 03 CE 38 03 CE 3C 03 CE 3C 03 AD 08 - .byte $02, $C9, $88, $F0, $0A, $A9, $06, $85, $6A, $A9, $00, $85, $6C, $F0, $06, $20 ; CPU:$96CA PRG:16CA 02 C9 88 F0 0A A9 06 85 6A A9 00 85 6C F0 06 20 - .byte $E3, $96, $20, $F3, $96, $20, $88, $81, $60, $20, $03, $97, $A9, $00, $85, $95 ; CPU:$96DA PRG:16DA E3 96 20 F3 96 20 88 81 60 20 03 97 A9 00 85 95 - .byte $85, $6C, $A9, $03, $85, $6A, $4C, $61, $C0, $20, $0F, $97, $A9, $00, $85, $96 ; CPU:$96EA PRG:16EA 85 6C A9 03 85 6A 4C 61 C0 20 0F 97 A9 00 85 96 - .byte $85, $6C, $A9, $03, $85, $6A, $4C, $C7, $AE, $A9, $00, $AA, $9D, $AC, $05, $E8 ; CPU:$96FA PRG:16FA 85 6C A9 03 85 6A 4C C7 AE A9 00 AA 9D AC 05 E8 - .byte $E0, $0A, $90, $F8, $60, $A9, $00, $AA, $9D, $B6, $05, $E8, $E0, $0A, $90, $F8 ; CPU:$970A PRG:170A E0 0A 90 F8 60 A9 00 AA 9D B6 05 E8 E0 0A 90 F8 - .byte $60, $A5, $26, $C9, $C0, $D0, $28, $A9, $00, $85, $95, $85, $6A, $A9, $05, $85 ; CPU:$971A PRG:171A 60 A5 26 C9 C0 D0 28 A9 00 85 95 85 6A A9 05 85 - .byte $61, $A9, $08, $85, $60, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A5 ; CPU:$972A PRG:172A 61 A9 08 85 60 A9 03 20 04 80 A9 01 8D DD 00 A5 - .byte $73, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $60, $A5 ; CPU:$973A PRG:173A 73 8D DE 00 A9 05 20 04 80 A9 00 8D DD 00 60 A5 - .byte $27, $C9, $C0, $D0, $22, $A9, $00, $85, $96, $85, $6A, $A9, $03, $20, $04, $80 ; CPU:$974A PRG:174A 27 C9 C0 D0 22 A9 00 85 96 85 6A A9 03 20 04 80 - .byte $A9, $01, $8D, $DD, $00, $A5, $73, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9 ; CPU:$975A PRG:175A A9 01 8D DD 00 A5 73 8D DE 00 A9 05 20 04 80 A9 - .byte $00, $8D, $DD, $00, $4C, $AA, $AA, $A5, $31, $29, $3F, $D0, $0C, $C6, $6E, $D0 ; CPU:$976A PRG:176A 00 8D DD 00 4C AA AA A5 31 29 3F D0 0C C6 6E D0 - .byte $08, $A9, $00, $85, $6C, $A9, $06, $85, $6A, $60, $10, $11, $AD, $E5, $05, $F0 ; CPU:$977A PRG:177A 08 A9 00 85 6C A9 06 85 6A 60 10 11 AD E5 05 F0 - .byte $23, $A5, $2A, $29, $10, $F0, $15, $AD, $02, $20, $A5, $02, $29, $E7, $8D, $01 ; CPU:$978A PRG:178A 23 A5 2A 29 10 F0 15 AD 02 20 A5 02 29 E7 8D 01 - .byte $20, $A9, $00, $85, $6C, $85, $6F, $A9, $02, $85, $6A, $60, $AD, $E6, $05, $D0 ; CPU:$979A PRG:179A 20 A9 00 85 6C 85 6F A9 02 85 6A 60 AD E6 05 D0 - .byte $03, $4C, $36, $80, $A5, $2A, $29, $10, $D0, $06, $A5, $2B, $29, $10, $F0, $09 ; CPU:$97AA PRG:17AA 03 4C 36 80 A5 2A 29 10 D0 06 A5 2B 29 10 F0 09 - .byte $A5, $3E, $49, $01, $85, $3E, $20, $1B, $98, $A5, $3E, $F0, $01, $60, $A5, $6F ; CPU:$97BA PRG:17BA A5 3E 49 01 85 3E 20 1B 98 A5 3E F0 01 60 A5 6F - .byte $D0, $27, $A5, $95, $D0, $0F, $A9, $00, $85, $34, $20, $C4, $CB, $A5, $37, $D0 ; CPU:$97CA PRG:17CA D0 27 A5 95 D0 0F A9 00 85 34 20 C4 CB A5 37 D0 - .byte $03, $20, $68, $BB, $60, $A9, $03, $20, $04, $80, $A2, $0B, $A5, $9A, $D0, $02 ; CPU:$97DA PRG:17DA 03 20 68 BB 60 A9 03 20 04 80 A2 0B A5 9A D0 02 - .byte $A2, $06, $86, $6A, $A9, $00, $85, $6C, $60, $A9, $00, $85, $34, $20, $C4, $CB ; CPU:$97EA PRG:17EA A2 06 86 6A A9 00 85 6C 60 A9 00 85 34 20 C4 CB - .byte $A9, $01, $85, $34, $20, $8F, $A7, $A5, $95, $F0, $15, $C5, $96, $D0, $11, $A9 ; CPU:$97FA PRG:17FA A9 01 85 34 20 8F A7 A5 95 F0 15 C5 96 D0 11 A9 - .byte $03, $20, $04, $80, $A9, $0C, $85, $6A, $A9, $00, $85, $6C, $A9, $05, $85, $6E ; CPU:$980A PRG:180A 03 20 04 80 A9 0C 85 6A A9 00 85 6C A9 05 85 6E - .byte $60, $A9, $0C, $85, $11, $A9, $0A, $85, $12, $A5, $3E, $D0, $02, $85, $11, $20 ; CPU:$981A PRG:181A 60 A9 0C 85 11 A9 0A 85 12 A5 3E D0 02 85 11 20 - .byte $5D, $85, $A9, $F8, $A2, $02, $9D, $98, $03, $E8, $E0, $0A, $90, $F8, $A5, $6F ; CPU:$982A PRG:182A 5D 85 A9 F8 A2 02 9D 98 03 E8 E0 0A 90 F8 A5 6F - .byte $F0, $05, $A9, $28, $8D, $92, $03, $60, $A5, $91, $4A, $18, $69, $02, $AA, $20 ; CPU:$983A PRG:183A F0 05 A9 28 8D 92 03 60 A5 91 4A 18 69 02 AA 20 - .byte $84, $90, $A9, $99, $8D, $DE, $03, $A5, $6C, $F0, $03, $4C, $EC, $98, $E6, $6C ; CPU:$984A PRG:184A 84 90 A9 99 8D DE 03 A5 6C F0 03 4C EC 98 E6 6C - .byte $20, $88, $81, $A5, $91, $18, $69, $04, $85, $2E, $A9, $00, $20, $04, $80, $20 ; CPU:$985A PRG:185A 20 88 81 A5 91 18 69 04 85 2E A9 00 20 04 80 20 - .byte $28, $92, $A5, $91, $D0, $21, $A9, $0D, $85, $11, $A9, $00, $85, $12, $20, $5D ; CPU:$986A PRG:186A 28 92 A5 91 D0 21 A9 0D 85 11 A9 00 85 12 20 5D - .byte $85, $A9, $0E, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $A9, $0F, $85, $11 ; CPU:$987A PRG:187A 85 A9 0E 85 11 A9 01 85 12 20 5D 85 A9 0F 85 11 - .byte $A9, $02, $85, $12, $20, $5D, $85, $A2, $81, $A5, $91, $6A, $90, $02, $A2, $91 ; CPU:$988A PRG:188A A9 02 85 12 20 5D 85 A2 81 A5 91 6A 90 02 A2 91 - .byte $86, $01, $A9, $00, $8D, $01, $02, $A9, $80, $8D, $03, $02, $A9, $A6, $8D, $00 ; CPU:$989A PRG:189A 86 01 A9 00 8D 01 02 A9 80 8D 03 02 A9 A6 8D 00 - .byte $02, $A9, $E3, $8D, $02, $02, $A9, $00, $8D, $DB, $03, $8D, $DC, $03, $8D, $DD ; CPU:$98AA PRG:18AA 02 A9 E3 8D 02 02 A9 00 8D DB 03 8D DC 03 8D DD - .byte $03, $A5, $91, $0A, $AA, $BD, $55, $9A, $85, $9B, $BD, $56, $9A, $85, $9C, $A9 ; CPU:$98BA PRG:18BA 03 A5 91 0A AA BD 55 9A 85 9B BD 56 9A 85 9C A9 - .byte $26, $8D, $D9, $03, $A9, $C4, $8D, $DA, $03, $A9, $00, $85, $03, $85, $04, $A5 ; CPU:$98CA PRG:18CA 26 8D D9 03 A9 C4 8D DA 03 A9 00 85 03 85 04 A5 - .byte $99, $D0, $0E, $A2, $04, $A5, $91, $C9, $0B, $D0, $02, $A2, $08, $8A, $20, $63 ; CPU:$98DA PRG:18DA 99 D0 0E A2 04 A5 91 C9 0B D0 02 A2 08 8A 20 63 - .byte $86, $60, $A5, $6C, $C9, $01, $D0, $14, $20, $2B, $9A, $AD, $DD, $03, $C9, $04 ; CPU:$98EA PRG:18EA 86 60 A5 6C C9 01 D0 14 20 2B 9A AD DD 03 C9 04 - .byte $B0, $06, $20, $62, $99, $4C, $05, $99, $20, $F9, $99, $60, $A5, $99, $D0, $3B ; CPU:$98FA PRG:18FA B0 06 20 62 99 4C 05 99 20 F9 99 60 A5 99 D0 3B - .byte $A5, $2A, $29, $C0, $D0, $06, $A5, $2B, $29, $C0, $F0, $2C, $A9, $00, $85, $6C ; CPU:$990A PRG:190A A5 2A 29 C0 D0 06 A5 2B 29 C0 F0 2C A9 00 85 6C - .byte $8D, $B0, $01, $A9, $04, $85, $6A, $A5, $91, $D0, $06, $20, $88, $81, $20, $28 ; CPU:$991A PRG:191A 8D B0 01 A9 04 85 6A A5 91 D0 06 20 88 81 20 28 - .byte $92, $E6, $91, $A5, $91, $C9, $0C, $D0, $07, $E6, $99, $A9, $06, $85, $6A, $60 ; CPU:$992A PRG:192A 92 E6 91 A5 91 C9 0C D0 07 E6 99 A9 06 85 6A 60 - .byte $A5, $01, $29, $88, $09, $88, $85, $01, $4C, $2B, $9A, $E6, $97, $D0, $16, $A9 ; CPU:$993A PRG:193A A5 01 29 88 09 88 85 01 4C 2B 9A E6 97 D0 16 A9 - .byte $00, $85, $6C, $E6, $91, $A5, $91, $C9, $0C, $90, $0A, $A9, $07, $85, $6A, $A9 ; CPU:$994A PRG:194A 00 85 6C E6 91 A5 91 C9 0C 90 0A A9 07 85 6A A9 - .byte $00, $85, $6C, $85, $99, $4C, $2B, $9A, $A5, $31, $29, $03, $F0, $01, $60, $A2 ; CPU:$995A PRG:195A 00 85 6C 85 99 4C 2B 9A A5 31 29 03 F0 01 60 A2 - .byte $00, $BD, $4A, $9A, $9D, $3A, $03, $E8, $E0, $03, $90, $F5, $A9, $02, $8D, $DF ; CPU:$996A PRG:196A 00 BD 4A 9A 9D 3A 03 E8 E0 03 90 F5 A9 02 8D DF - .byte $03, $A9, $01, $8D, $E0, $03, $AD, $DA, $03, $8D, $38, $03, $AD, $D9, $03, $8D ; CPU:$997A PRG:197A 03 A9 01 8D E0 03 AD DA 03 8D 38 03 AD D9 03 8D - .byte $39, $03, $EE, $DA, $03, $AC, $DC, $03, $C0, $FF, $D0, $0F, $98, $18, $65, $9B ; CPU:$998A PRG:198A 39 03 EE DA 03 AC DC 03 C0 FF D0 0F 98 18 65 9B - .byte $85, $9B, $90, $02, $E6, $9C, $A0, $00, $8C, $DC, $03, $EE, $DC, $03, $B1, $9B ; CPU:$999A PRG:199A 85 9B 90 02 E6 9C A0 00 8C DC 03 EE DC 03 B1 9B - .byte $C9, $FF, $F0, $0C, $18, $69, $83, $8D, $E1, $03, $A9, $E0, $8D, $E2, $03, $60 ; CPU:$99AA PRG:19AA C9 FF F0 0C 18 69 83 8D E1 03 A9 E0 8D E2 03 60 - .byte $8D, $E1, $03, $8D, $E2, $03, $A9, $01, $8D, $DF, $03, $8D, $E0, $03, $EE, $DB ; CPU:$99BA PRG:19BA 8D E1 03 8D E2 03 A9 01 8D DF 03 8D E0 03 EE DB - .byte $03, $A6, $91, $AD, $DB, $03, $DD, $6D, $9A, $90, $03, $E6, $6C, $60, $EE, $DD ; CPU:$99CA PRG:19CA 03 A6 91 AD DB 03 DD 6D 9A 90 03 E6 6C 60 EE DD - .byte $03, $AD, $DD, $03, $0A, $AA, $BD, $4D, $9A, $8D, $D9, $03, $BD, $4E, $9A, $8D ; CPU:$99DA PRG:19DA 03 AD DD 03 0A AA BD 4D 9A 8D D9 03 BD 4E 9A 8D - .byte $DA, $03, $AD, $DD, $03, $C9, $04, $90, $05, $A9, $B4, $8D, $E3, $03, $60, $CE ; CPU:$99EA PRG:19EA DA 03 AD DD 03 C9 04 90 05 A9 B4 8D E3 03 60 CE - .byte $E3, $03, $D0, $2C, $AD, $02, $20, $A5, $02, $29, $E7, $8D, $01, $20, $AD, $02 ; CPU:$99FA PRG:19FA E3 03 D0 2C AD 02 20 A5 02 29 E7 8D 01 20 AD 02 - .byte $20, $A9, $26, $8D, $06, $20, $8D, $D9, $03, $A9, $C4, $8D, $06, $20, $8D, $DA ; CPU:$9A0A PRG:1A0A 20 A9 26 8D 06 20 8D D9 03 A9 C4 8D 06 20 8D DA - .byte $03, $A2, $F0, $A9, $FF, $8D, $07, $20, $CA, $D0, $FA, $A9, $00, $8D, $DD, $03 ; CPU:$9A1A PRG:1A1A 03 A2 F0 A9 FF 8D 07 20 CA D0 FA A9 00 8D DD 03 - .byte $60, $AD, $02, $20, $29, $40, $D0, $F9, $AD, $02, $20, $29, $40, $F0, $F9, $A2 ; CPU:$9A2A PRG:1A2A 60 AD 02 20 29 40 D0 F9 AD 02 20 29 40 F0 F9 A2 - .byte $06, $20, $84, $90, $AD, $02, $20, $A9, $99, $8D, $DE, $03, $8D, $00, $20, $60 ; CPU:$9A3A PRG:1A3A 06 20 84 90 AD 02 20 A9 99 8D DE 03 8D 00 20 60 - .byte $DF, $03, $00, $26, $C4, $27, $04, $27, $44, $27, $84, $79, $9A, $44, $9B, $42 ; CPU:$9A4A PRG:1A4A DF 03 00 26 C4 27 04 27 44 27 84 79 9A 44 9B 42 - .byte $9C, $8D, $9D, $A4, $9E, $BB, $9F, $1E, $A1, $1C, $A2, $FF, $A2, $CA, $A3, $61 ; CPU:$9A5A PRG:1A5A 9C 8D 9D A4 9E BB 9F 1E A1 1C A2 FF A2 CA A3 61 - .byte $A4, $44, $A5, $0B, $0E, $13, $0F, $0F, $13, $0E, $0B, $0B, $07, $0B, $1B, $20 ; CPU:$9A6A PRG:1A6A A4 44 A5 0B 0E 13 0F 0F 13 0E 0B 0B 07 0B 1B 20 - .byte $20, $4F, $4E, $43, $45, $20, $55, $50, $4F, $4E, $20, $41, $20, $54, $49, $4D ; CPU:$9A7A PRG:1A7A 20 4F 4E 43 45 20 55 50 4F 4E 20 41 20 54 49 4D - .byte $45, $20, $49, $4E, $20, $20, $20, $FF, $20, $41, $20, $48, $49, $44, $44, $45 ; CPU:$9A8A PRG:1A8A 45 20 49 4E 20 20 20 FF 20 41 20 48 49 44 44 45 - .byte $4E, $20, $4C, $49, $51, $55, $49, $44, $20, $57, $4F, $52, $4C, $44, $20, $20 ; CPU:$9A9A PRG:1A9A 4E 20 4C 49 51 55 49 44 20 57 4F 52 4C 44 20 20 - .byte $FF, $20, $20, $44, $45, $45, $50, $20, $42, $45, $4E, $45, $41, $54, $48, $20 ; CPU:$9AAA PRG:1AAA FF 20 20 44 45 45 50 20 42 45 4E 45 41 54 48 20 - .byte $54, $48, $45, $20, $53, $45, $41, $20, $20, $FF, $FF, $FF, $20, $20, $54, $48 ; CPU:$9ABA PRG:1ABA 54 48 45 20 53 45 41 20 20 FF FF FF 20 20 54 48 - .byte $45, $52, $45, $20, $57, $41, $53, $20, $54, $48, $45, $20, $4D, $41, $47, $49 ; CPU:$9ACA PRG:1ACA 45 52 45 20 57 41 53 20 54 48 45 20 4D 41 47 49 - .byte $43, $20, $20, $20, $FF, $20, $20, $20, $43, $49, $54, $59, $20, $4F, $46, $20 ; CPU:$9ADA PRG:1ADA 43 20 20 20 FF 20 20 20 43 49 54 59 20 4F 46 20 - .byte $41, $54, $4C, $41, $4E, $54, $49, $53, $2C, $20, $20, $20, $20, $FF, $FF, $20 ; CPU:$9AEA PRG:1AEA 41 54 4C 41 4E 54 49 53 2C 20 20 20 20 FF FF 20 - .byte $20, $57, $48, $45, $52, $45, $20, $54, $48, $45, $20, $4C, $45, $47, $45, $4E ; CPU:$9AFA PRG:1AFA 20 57 48 45 52 45 20 54 48 45 20 4C 45 47 45 4E - .byte $44, $41, $52, $59, $20, $20, $20, $FF, $20, $48, $41, $4C, $46, $20, $46, $49 ; CPU:$9B0A PRG:1B0A 44 41 52 59 20 20 20 FF 20 48 41 4C 46 20 46 49 - .byte $53, $48, $2C, $20, $48, $41, $4C, $46, $20, $48, $55, $4D, $41, $4E, $2C, $20 ; CPU:$9B1A PRG:1B1A 53 48 2C 20 48 41 4C 46 20 48 55 4D 41 4E 2C 20 - .byte $FF, $20, $20, $20, $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $4C ; CPU:$9B2A PRG:1B2A FF 20 20 20 20 4D 45 52 50 45 4F 50 4C 45 20 4C - .byte $49, $56, $45, $44, $2E, $20, $20, $20, $20, $FF, $20, $4E, $41, $4D, $4F, $52 ; CPU:$9B3A PRG:1B3A 49 56 45 44 2E 20 20 20 20 FF 20 4E 41 4D 4F 52 - .byte $41, $20, $57, $41, $53, $20, $41, $20, $42, $45, $41, $55, $54, $49, $46, $55 ; CPU:$9B4A PRG:1B4A 41 20 57 41 53 20 41 20 42 45 41 55 54 49 46 55 - .byte $4C, $20, $FF, $20, $4D, $45, $52, $4D, $41, $49, $44, $20, $57, $48, $4F, $20 ; CPU:$9B5A PRG:1B5A 4C 20 FF 20 4D 45 52 4D 41 49 44 20 57 48 4F 20 - .byte $4C, $49, $56, $45, $44, $20, $44, $45, $45, $50, $20, $FF, $20, $20, $20, $55 ; CPU:$9B6A PRG:1B6A 4C 49 56 45 44 20 44 45 45 50 20 FF 20 20 20 55 - .byte $4E, $44, $45, $52, $20, $54, $48, $45, $20, $44, $41, $52, $4B, $20, $53, $45 ; CPU:$9B7A PRG:1B7A 4E 44 45 52 20 54 48 45 20 44 41 52 4B 20 53 45 - .byte $41, $20, $20, $20, $FF, $FF, $20, $20, $57, $48, $45, $52, $45, $20, $54, $48 ; CPU:$9B8A PRG:1B8A 41 20 20 20 FF FF 20 20 57 48 45 52 45 20 54 48 - .byte $45, $20, $53, $55, $4E, $20, $4C, $4F, $4F, $4B, $45, $44, $20, $20, $FF, $20 ; CPU:$9B9A PRG:1B9A 45 20 53 55 4E 20 4C 4F 4F 4B 45 44 20 20 FF 20 - .byte $20, $20, $20, $20, $20, $4C, $49, $4B, $45, $20, $41, $20, $4D, $55, $52, $4B ; CPU:$9BAA PRG:1BAA 20 20 20 20 20 4C 49 4B 45 20 41 20 4D 55 52 4B - .byte $59, $20, $20, $20, $20, $20, $20, $FF, $20, $20, $47, $52, $45, $45, $4E, $20 ; CPU:$9BBA PRG:1BBA 59 20 20 20 20 20 20 FF 20 20 47 52 45 45 4E 20 - .byte $42, $41, $4C, $4C, $2E, $20, $54, $48, $45, $20, $4C, $41, $4E, $44, $20, $20 ; CPU:$9BCA PRG:1BCA 42 41 4C 4C 2E 20 54 48 45 20 4C 41 4E 44 20 20 - .byte $FF, $FF, $20, $20, $57, $41, $53, $20, $49, $4C, $4C, $55, $4D, $49, $4E, $41 ; CPU:$9BDA PRG:1BDA FF FF 20 20 57 41 53 20 49 4C 4C 55 4D 49 4E 41 - .byte $54, $45, $44, $20, $44, $41, $59, $20, $20, $20, $FF, $20, $41, $4E, $44, $20 ; CPU:$9BEA PRG:1BEA 54 45 44 20 44 41 59 20 20 20 FF 20 41 4E 44 20 - .byte $4E, $49, $47, $48, $54, $20, $42, $59, $20, $55, $4E, $44, $45, $52, $53, $45 ; CPU:$9BFA PRG:1BFA 4E 49 47 48 54 20 42 59 20 55 4E 44 45 52 53 45 - .byte $41, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $20, $20, $56, $4F, $4C, $43 ; CPU:$9C0A PRG:1C0A 41 20 20 FF 20 20 20 20 20 20 20 20 56 4F 4C 43 - .byte $41, $4E, $4F, $53, $20, $20, $20, $20, $20, $20, $20, $20, $FF, $FF, $FF, $20 ; CPU:$9C1A PRG:1C1A 41 4E 4F 53 20 20 20 20 20 20 20 20 FF FF FF 20 - .byte $20, $20, $20, $41, $4E, $44, $20, $47, $4C, $4F, $57, $20, $57, $4F, $52, $4D ; CPU:$9C2A PRG:1C2A 20 20 20 41 4E 44 20 47 4C 4F 57 20 57 4F 52 4D - .byte $53, $2E, $20, $20, $20, $20, $20, $FF, $20, $20, $20, $4E, $41, $4D, $4F, $52 ; CPU:$9C3A PRG:1C3A 53 2E 20 20 20 20 20 FF 20 20 20 4E 41 4D 4F 52 - .byte $41, $20, $4C, $49, $56, $45, $44, $20, $49, $4E, $20, $41, $20, $20, $20, $20 ; CPU:$9C4A PRG:1C4A 41 20 4C 49 56 45 44 20 49 4E 20 41 20 20 20 20 - .byte $FF, $20, $47, $4C, $4F, $57, $49, $4E, $47, $20, $42, $4C, $55, $45, $20, $53 ; CPU:$9C5A PRG:1C5A FF 20 47 4C 4F 57 49 4E 47 20 42 4C 55 45 20 53 - .byte $45, $41, $53, $48, $45, $4C, $4C, $20, $20, $FF, $20, $57, $49, $54, $48, $20 ; CPU:$9C6A PRG:1C6A 45 41 53 48 45 4C 4C 20 20 FF 20 57 49 54 48 20 - .byte $48, $45, $52, $20, $4D, $4F, $4D, $2C, $20, $44, $41, $44, $20, $41, $4E, $44 ; CPU:$9C7A PRG:1C7A 48 45 52 20 4D 4F 4D 2C 20 44 41 44 20 41 4E 44 - .byte $20, $20, $FF, $FF, $20, $4C, $49, $54, $54, $4C, $45, $20, $42, $52, $4F, $54 ; CPU:$9C8A PRG:1C8A 20 20 FF FF 20 4C 49 54 54 4C 45 20 42 52 4F 54 - .byte $48, $45, $52, $20, $4D, $49, $4B, $45, $59, $2E, $20, $20, $FF, $20, $20, $20 ; CPU:$9C9A PRG:1C9A 48 45 52 20 4D 49 4B 45 59 2E 20 20 FF 20 20 20 - .byte $53, $48, $45, $20, $57, $4F, $55, $4C, $44, $20, $52, $49, $44, $45, $20, $48 ; CPU:$9CAA PRG:1CAA 53 48 45 20 57 4F 55 4C 44 20 52 49 44 45 20 48 - .byte $45, $52, $20, $20, $20, $FF, $20, $4C, $49, $51, $55, $49, $43, $59, $43, $4C ; CPU:$9CBA PRG:1CBA 45 52 20 20 20 FF 20 4C 49 51 55 49 43 59 43 4C - .byte $45, $20, $54, $4F, $20, $53, $43, $48, $4F, $4F, $4C, $2C, $20, $20, $FF, $FF ; CPU:$9CCA PRG:1CCA 45 20 54 4F 20 53 43 48 4F 4F 4C 2C 20 20 FF FF - .byte $20, $20, $50, $4C, $41, $59, $20, $43, $41, $54, $43, $48, $20, $57, $49, $54 ; CPU:$9CDA PRG:1CDA 20 20 50 4C 41 59 20 43 41 54 43 48 20 57 49 54 - .byte $48, $20, $48, $45, $52, $20, $20, $20, $FF, $20, $20, $50, $45, $54, $20, $53 ; CPU:$9CEA PRG:1CEA 48 20 48 45 52 20 20 20 FF 20 20 50 45 54 20 53 - .byte $51, $55, $49, $44, $20, $57, $41, $4C, $44, $4F, $20, $41, $4E, $44, $20, $20 ; CPU:$9CFA PRG:1CFA 51 55 49 44 20 57 41 4C 44 4F 20 41 4E 44 20 20 - .byte $20, $FF, $44, $4F, $20, $41, $20, $4C, $4F, $54, $20, $4F, $46, $20, $54, $48 ; CPU:$9D0A PRG:1D0A 20 FF 44 4F 20 41 20 4C 4F 54 20 4F 46 20 54 48 - .byte $49, $4E, $47, $53, $20, $54, $48, $41, $54, $20, $FF, $FF, $FF, $20, $20, $20 ; CPU:$9D1A PRG:1D1A 49 4E 47 53 20 54 48 41 54 20 FF FF FF 20 20 20 - .byte $53, $55, $52, $46, $41, $43, $45, $20, $50, $45, $4F, $50, $4C, $45, $20, $44 ; CPU:$9D2A PRG:1D2A 53 55 52 46 41 43 45 20 50 45 4F 50 4C 45 20 44 - .byte $4F, $2E, $20, $20, $20, $FF, $20, $20, $20, $49, $4E, $20, $46, $41, $43, $54 ; CPU:$9D3A PRG:1D3A 4F 2E 20 20 20 FF 20 20 20 49 4E 20 46 41 43 54 - .byte $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $20, $20, $20, $FF, $FF ; CPU:$9D4A PRG:1D4A 20 4D 45 52 50 45 4F 50 4C 45 20 20 20 20 FF FF - .byte $FF, $20, $20, $20, $41, $52, $45, $20, $41, $20, $4C, $4F, $54, $20, $4C, $49 ; CPU:$9D5A PRG:1D5A FF 20 20 20 41 52 45 20 41 20 4C 4F 54 20 4C 49 - .byte $4B, $45, $20, $59, $4F, $55, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20 ; CPU:$9D6A PRG:1D6A 4B 45 20 59 4F 55 20 20 20 FF 20 20 20 20 20 20 - .byte $20, $20, $41, $4E, $44, $20, $4D, $45, $2E, $20, $20, $20, $20, $20, $20, $20 ; CPU:$9D7A PRG:1D7A 20 20 41 4E 44 20 4D 45 2E 20 20 20 20 20 20 20 - .byte $20, $20, $FF, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $4C, $4F, $56 ; CPU:$9D8A PRG:1D8A 20 20 FF 4D 45 52 50 45 4F 50 4C 45 20 4C 4F 56 - .byte $45, $44, $20, $54, $4F, $20, $50, $4C, $41, $59, $20, $FF, $20, $20, $20, $20 ; CPU:$9D9A PRG:1D9A 45 44 20 54 4F 20 50 4C 41 59 20 FF 20 20 20 20 - .byte $47, $41, $4D, $45, $53, $2E, $20, $54, $48, $45, $59, $20, $48, $41, $44, $20 ; CPU:$9DAA PRG:1DAA 47 41 4D 45 53 2E 20 54 48 45 59 20 48 41 44 20 - .byte $20, $20, $20, $20, $FF, $20, $54, $48, $45, $20, $42, $45, $53, $54, $20, $47 ; CPU:$9DBA PRG:1DBA 20 20 20 20 FF 20 54 48 45 20 42 45 53 54 20 47 - .byte $41, $4D, $45, $53, $20, $49, $4E, $20, $54, $48, $45, $20, $20, $FF, $FF, $FF ; CPU:$9DCA PRG:1DCA 41 4D 45 53 20 49 4E 20 54 48 45 20 20 FF FF FF - .byte $20, $57, $4F, $52, $4C, $44, $2C, $20, $42, $45, $43, $41, $55, $53, $45, $20 ; CPU:$9DDA PRG:1DDA 20 57 4F 52 4C 44 2C 20 42 45 43 41 55 53 45 20 - .byte $54, $48, $45, $59, $20, $48, $41, $44, $FF, $20, $20, $54, $48, $45, $20, $42 ; CPU:$9DEA PRG:1DEA 54 48 45 59 20 48 41 44 FF 20 20 54 48 45 20 42 - .byte $45, $53, $54, $20, $47, $41, $4D, $45, $4D, $41, $4B, $45, $52, $53, $2E, $20 ; CPU:$9DFA PRG:1DFA 45 53 54 20 47 41 4D 45 4D 41 4B 45 52 53 2E 20 - .byte $20, $FF, $FF, $20, $20, $54, $48, $45, $20, $4D, $45, $52, $50, $45, $4F, $50 ; CPU:$9E0A PRG:1E0A 20 FF FF 20 20 54 48 45 20 4D 45 52 50 45 4F 50 - .byte $4C, $45, $20, $57, $4F, $55, $4C, $44, $20, $20, $20, $FF, $43, $4F, $4C, $4C ; CPU:$9E1A PRG:1E1A 4C 45 20 57 4F 55 4C 44 20 20 20 FF 43 4F 4C 4C - .byte $45, $43, $54, $20, $50, $45, $41, $52, $4C, $53, $20, $41, $4E, $44, $20, $54 ; CPU:$9E2A PRG:1E2A 45 43 54 20 50 45 41 52 4C 53 20 41 4E 44 20 54 - .byte $52, $41, $44, $45, $FF, $57, $49, $54, $48, $20, $54, $48, $45, $20, $47, $41 ; CPU:$9E3A PRG:1E3A 52 41 44 45 FF 57 49 54 48 20 54 48 45 20 47 41 - .byte $4D, $45, $4D, $41, $4B, $45, $52, $53, $20, $46, $4F, $52, $20, $FF, $FF, $20 ; CPU:$9E4A PRG:1E4A 4D 45 4D 41 4B 45 52 53 20 46 4F 52 20 FF FF 20 - .byte $20, $4E, $45, $57, $20, $47, $41, $4D, $45, $53, $20, $45, $56, $45, $52, $59 ; CPU:$9E5A PRG:1E5A 20 4E 45 57 20 47 41 4D 45 53 20 45 56 45 52 59 - .byte $44, $41, $59, $2E, $20, $20, $20, $FF, $20, $20, $4C, $49, $56, $49, $4E, $47 ; CPU:$9E6A PRG:1E6A 44 41 59 2E 20 20 20 FF 20 20 4C 49 56 49 4E 47 - .byte $20, $55, $4E, $44, $45, $52, $20, $54, $48, $45, $20, $53, $45, $41, $20, $20 ; CPU:$9E7A PRG:1E7A 20 55 4E 44 45 52 20 54 48 45 20 53 45 41 20 20 - .byte $FF, $20, $20, $20, $57, $41, $53, $20, $41, $20, $4C, $4F, $54, $20, $4F, $46 ; CPU:$9E8A PRG:1E8A FF 20 20 20 57 41 53 20 41 20 4C 4F 54 20 4F 46 - .byte $20, $46, $55, $4E, $2E, $20, $20, $20, $20, $FF, $20, $20, $42, $55, $54, $20 ; CPU:$9E9A PRG:1E9A 20 46 55 4E 2E 20 20 20 20 FF 20 20 42 55 54 20 - .byte $41, $4C, $41, $53, $2C, $20, $54, $48, $45, $52, $45, $20, $4C, $49, $56, $45 ; CPU:$9EAA PRG:1EAA 41 4C 41 53 2C 20 54 48 45 52 45 20 4C 49 56 45 - .byte $44, $20, $FF, $20, $20, $20, $41, $4E, $20, $45, $56, $49, $4C, $20, $4D, $41 ; CPU:$9EBA PRG:1EBA 44 20 FF 20 20 20 41 4E 20 45 56 49 4C 20 4D 41 - .byte $4E, $20, $43, $41, $4C, $4C, $45, $44, $20, $20, $20, $FF, $20, $20, $20, $20 ; CPU:$9ECA PRG:1ECA 4E 20 43 41 4C 4C 45 44 20 20 20 FF 20 20 20 20 - .byte $45, $4D, $50, $45, $52, $4F, $52, $20, $4F, $2D, $44, $49, $4E, $54, $4F, $4E ; CPU:$9EDA PRG:1EDA 45 4D 50 45 52 4F 52 20 4F 2D 44 49 4E 54 4F 4E - .byte $2E, $20, $20, $20, $FF, $FF, $48, $45, $20, $57, $41, $53, $20, $41, $20, $53 ; CPU:$9EEA PRG:1EEA 2E 20 20 20 FF FF 48 45 20 57 41 53 20 41 20 53 - .byte $55, $52, $46, $41, $43, $45, $20, $44, $57, $45, $4C, $4C, $45, $52, $FF, $20 ; CPU:$9EFA PRG:1EFA 55 52 46 41 43 45 20 44 57 45 4C 4C 45 52 FF 20 - .byte $57, $48, $4F, $20, $4D, $41, $44, $45, $20, $48, $49, $53, $20, $52, $49, $43 ; CPU:$9F0A PRG:1F0A 57 48 4F 20 4D 41 44 45 20 48 49 53 20 52 49 43 - .byte $48, $45, $53, $20, $42, $59, $20, $FF, $20, $53, $45, $4C, $4C, $49, $4E, $47 ; CPU:$9F1A PRG:1F1A 48 45 53 20 42 59 20 FF 20 53 45 4C 4C 49 4E 47 - .byte $20, $53, $41, $4C, $54, $20, $57, $41, $54, $45, $52, $20, $41, $4E, $44, $20 ; CPU:$9F2A PRG:1F2A 20 53 41 4C 54 20 57 41 54 45 52 20 41 4E 44 20 - .byte $FF, $FF, $20, $20, $20, $53, $45, $41, $20, $53, $48, $45, $4C, $4C, $53, $2E ; CPU:$9F3A PRG:1F3A FF FF 20 20 20 53 45 41 20 53 48 45 4C 4C 53 2E - .byte $20, $41, $46, $54, $45, $52, $20, $20, $20, $20, $FF, $20, $20, $20, $59, $45 ; CPU:$9F4A PRG:1F4A 20 41 46 54 45 52 20 20 20 20 FF 20 20 20 59 45 - .byte $41, $52, $53, $20, $4F, $46, $20, $50, $4C, $41, $4E, $4E, $49, $4E, $47, $20 ; CPU:$9F5A PRG:1F5A 41 52 53 20 4F 46 20 50 4C 41 4E 4E 49 4E 47 20 - .byte $20, $20, $20, $FF, $20, $20, $20, $20, $48, $45, $20, $48, $41, $44, $20, $43 ; CPU:$9F6A PRG:1F6A 20 20 20 FF 20 20 20 20 48 45 20 48 41 44 20 43 - .byte $4F, $4D, $45, $20, $55, $50, $20, $20, $20, $20, $20, $20, $FF, $FF, $FF, $20 ; CPU:$9F7A PRG:1F7A 4F 4D 45 20 55 50 20 20 20 20 20 20 FF FF FF 20 - .byte $20, $20, $57, $49, $54, $48, $20, $54, $48, $45, $20, $55, $4C, $54, $49, $4D ; CPU:$9F8A PRG:1F8A 20 20 57 49 54 48 20 54 48 45 20 55 4C 54 49 4D - .byte $41, $54, $45, $20, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $20, $20 ; CPU:$9F9A PRG:1F9A 41 54 45 20 20 20 20 FF 20 20 20 20 20 20 20 20 - .byte $53, $43, $48, $45, $4D, $45, $2E, $20, $20, $20, $20, $20, $20, $20, $20, $20 ; CPU:$9FAA PRG:1FAA 53 43 48 45 4D 45 2E 20 20 20 20 20 20 20 20 20 - .byte $FF, $20, $20, $45, $4D, $50, $45, $52, $4F, $52, $20, $4F, $2D, $44, $49, $4E ; CPU:$9FBA PRG:1FBA FF 20 20 45 4D 50 45 52 4F 52 20 4F 2D 44 49 4E - .byte $54, $4F, $4E, $20, $48, $41, $44, $20, $20, $FF, $20, $20, $43, $4F, $4D, $42 ; CPU:$9FCA PRG:1FCA 54 4F 4E 20 48 41 44 20 20 FF 20 20 43 4F 4D 42 - .byte $49, $4E, $45, $44, $20, $53, $43, $49, $45, $4E, $43, $45, $20, $41, $4E, $44 ; CPU:$9FDA PRG:1FDA 49 4E 45 44 20 53 43 49 45 4E 43 45 20 41 4E 44 - .byte $20, $20, $FF, $20, $20, $4D, $41, $47, $49, $43, $20, $54, $4F, $20, $43, $52 ; CPU:$9FEA PRG:1FEA 20 20 FF 20 20 4D 41 47 49 43 20 54 4F 20 43 52 - .byte $45, $41, $54, $45, $20, $54, $48, $45, $20, $20, $20, $FF, $FF, $20, $20, $44 ; CPU:$9FFA PRG:1FFA 45 41 54 45 20 54 48 45 20 20 20 FF FF 20 20 44 - .byte $55, $52, $41, $42, $55, $42, $42, $4C, $45, $28, $54, $4D, $29, $2E, $20, $49 ; CPU:$A00A PRG:200A 55 52 41 42 55 42 42 4C 45 28 54 4D 29 2E 20 49 - .byte $54, $53, $20, $20, $20, $FF, $20, $20, $4D, $4F, $4C, $45, $43, $55, $4C, $41 ; CPU:$A01A PRG:201A 54 53 20 20 20 FF 20 20 4D 4F 4C 45 43 55 4C 41 - .byte $52, $20, $53, $54, $52, $55, $43, $54, $55, $52, $45, $20, $20, $20, $FF, $20 ; CPU:$A02A PRG:202A 52 20 53 54 52 55 43 54 55 52 45 20 20 20 FF 20 - .byte $41, $4C, $54, $48, $4F, $55, $47, $48, $20, $46, $4C, $45, $58, $49, $42, $4C ; CPU:$A03A PRG:203A 41 4C 54 48 4F 55 47 48 20 46 4C 45 58 49 42 4C - .byte $45, $20, $4C, $49, $4B, $45, $20, $FF, $FF, $20, $20, $20, $20, $20, $52, $55 ; CPU:$A04A PRG:204A 45 20 4C 49 4B 45 20 FF FF 20 20 20 20 20 52 55 - .byte $42, $42, $45, $52, $20, $57, $41, $53, $20, $41, $53, $20, $20, $20, $20, $20 ; CPU:$A05A PRG:205A 42 42 45 52 20 57 41 53 20 41 53 20 20 20 20 20 - .byte $20, $FF, $20, $20, $20, $20, $55, $4E, $42, $52, $45, $41, $4B, $41, $42, $4C ; CPU:$A06A PRG:206A 20 FF 20 20 20 20 55 4E 42 52 45 41 4B 41 42 4C - .byte $45, $20, $41, $53, $20, $41, $20, $20, $20, $20, $FF, $20, $20, $20, $20, $44 ; CPU:$A07A PRG:207A 45 20 41 53 20 41 20 20 20 20 FF 20 20 20 20 44 - .byte $49, $41, $4D, $4F, $4E, $44, $2E, $20, $4F, $4E, $43, $45, $20, $48, $45, $20 ; CPU:$A08A PRG:208A 49 41 4D 4F 4E 44 2E 20 4F 4E 43 45 20 48 45 20 - .byte $20, $20, $20, $FF, $FF, $20, $20, $45, $4E, $43, $41, $53, $45, $44, $20, $53 ; CPU:$A09A PRG:209A 20 20 20 FF FF 20 20 45 4E 43 41 53 45 44 20 53 - .byte $4F, $4D, $45, $54, $48, $49, $4E, $47, $20, $49, $4E, $20, $20, $FF, $20, $48 ; CPU:$A0AA PRG:20AA 4F 4D 45 54 48 49 4E 47 20 49 4E 20 20 FF 20 48 - .byte $49, $53, $20, $44, $55, $52, $41, $42, $55, $42, $42, $4C, $45, $28, $54, $4D ; CPU:$A0BA PRG:20BA 49 53 20 44 55 52 41 42 55 42 42 4C 45 28 54 4D - .byte $29, $20, $4E, $4F, $20, $20, $FF, $20, $4F, $4E, $45, $20, $43, $4F, $55, $4C ; CPU:$A0CA PRG:20CA 29 20 4E 4F 20 20 FF 20 4F 4E 45 20 43 4F 55 4C - .byte $44, $20, $52, $45, $4C, $45, $41, $53, $45, $20, $49, $54, $2E, $20, $20, $FF ; CPU:$A0DA PRG:20DA 44 20 52 45 4C 45 41 53 45 20 49 54 2E 20 20 FF - .byte $FF, $FF, $20, $20, $20, $20, $45, $58, $43, $45, $50, $54, $20, $4F, $46, $20 ; CPU:$A0EA PRG:20EA FF FF 20 20 20 20 45 58 43 45 50 54 20 4F 46 20 - .byte $43, $4F, $55, $52, $53, $45, $20, $20, $20, $20, $FF, $20, $20, $20, $45, $4D ; CPU:$A0FA PRG:20FA 43 4F 55 52 53 45 20 20 20 20 FF 20 20 20 45 4D - .byte $50, $45, $52, $4F, $52, $20, $4F, $2D, $44, $49, $4E, $54, $4F, $4E, $2E, $20 ; CPU:$A10A PRG:210A 50 45 52 4F 52 20 4F 2D 44 49 4E 54 4F 4E 2E 20 - .byte $20, $20, $20, $FF, $20, $4E, $41, $4D, $4F, $52, $41, $20, $41, $4E, $44, $20 ; CPU:$A11A PRG:211A 20 20 20 FF 20 4E 41 4D 4F 52 41 20 41 4E 44 20 - .byte $48, $45, $52, $20, $46, $52, $49, $45, $4E, $44, $53, $20, $FF, $57, $45, $52 ; CPU:$A12A PRG:212A 48 45 52 20 46 52 49 45 4E 44 53 20 FF 57 45 52 - .byte $45, $20, $50, $4C, $41, $59, $49, $4E, $47, $20, $57, $49, $54, $48, $20, $54 ; CPU:$A13A PRG:213A 45 20 50 4C 41 59 49 4E 47 20 57 49 54 48 20 54 - .byte $48, $45, $49, $52, $20, $FF, $20, $20, $4E, $45, $57, $20, $47, $41, $4D, $45 ; CPU:$A14A PRG:214A 48 45 49 52 20 FF 20 20 4E 45 57 20 47 41 4D 45 - .byte $53, $20, $57, $48, $45, $4E, $20, $54, $48, $45, $59, $20, $20, $20, $FF, $FF ; CPU:$A15A PRG:215A 53 20 57 48 45 4E 20 54 48 45 59 20 20 20 FF FF - .byte $53, $41, $57, $20, $54, $48, $45, $20, $42, $55, $42, $42, $4C, $45, $53, $20 ; CPU:$A16A PRG:216A 53 41 57 20 54 48 45 20 42 55 42 42 4C 45 53 20 - .byte $43, $4F, $4D, $49, $4E, $47, $2E, $20, $FF, $20, $20, $54, $48, $45, $59, $20 ; CPU:$A17A PRG:217A 43 4F 4D 49 4E 47 2E 20 FF 20 20 54 48 45 59 20 - .byte $4B, $4E, $45, $57, $20, $54, $48, $45, $52, $45, $20, $57, $41, $53, $20, $20 ; CPU:$A18A PRG:218A 4B 4E 45 57 20 54 48 45 52 45 20 57 41 53 20 20 - .byte $20, $FF, $53, $4F, $4D, $45, $54, $48, $49, $4E, $47, $20, $57, $52, $4F, $4E ; CPU:$A19A PRG:219A 20 FF 53 4F 4D 45 54 48 49 4E 47 20 57 52 4F 4E - .byte $47, $20, $42, $45, $43, $41, $55, $53, $45, $20, $FF, $FF, $20, $20, $49, $4E ; CPU:$A1AA PRG:21AA 47 20 42 45 43 41 55 53 45 20 FF FF 20 20 49 4E - .byte $53, $54, $45, $41, $44, $20, $4F, $46, $20, $46, $4C, $4F, $41, $54, $49, $4E ; CPU:$A1BA PRG:21BA 53 54 45 41 44 20 4F 46 20 46 4C 4F 41 54 49 4E - .byte $47, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $20, $55, $50, $57, $41 ; CPU:$A1CA PRG:21CA 47 20 20 20 FF 20 20 20 20 20 20 20 55 50 57 41 - .byte $52, $44, $20, $54, $48, $45, $20, $20, $20, $20, $20, $20, $20, $FF, $20, $20 ; CPU:$A1DA PRG:21DA 52 44 20 54 48 45 20 20 20 20 20 20 20 FF 20 20 - .byte $42, $55, $42, $42, $4C, $45, $53, $20, $57, $45, $52, $45, $20, $53, $49, $4E ; CPU:$A1EA PRG:21EA 42 55 42 42 4C 45 53 20 57 45 52 45 20 53 49 4E - .byte $4B, $49, $4E, $47, $20, $20, $FF, $FF, $FF, $20, $20, $20, $44, $4F, $57, $4E ; CPU:$A1FA PRG:21FA 4B 49 4E 47 20 20 FF FF FF 20 20 20 44 4F 57 4E - .byte $20, $54, $4F, $57, $41, $52, $44, $53, $20, $54, $48, $45, $4D, $2E, $20, $20 ; CPU:$A20A PRG:220A 20 54 4F 57 41 52 44 53 20 54 48 45 4D 2E 20 20 - .byte $20, $FF, $20, $54, $48, $45, $20, $42, $55, $42, $42, $4C, $45, $53, $20, $45 ; CPU:$A21A PRG:221A 20 FF 20 54 48 45 20 42 55 42 42 4C 45 53 20 45 - .byte $4E, $56, $45, $4C, $4F, $50, $45, $44, $20, $20, $FF, $20, $54, $48, $45, $20 ; CPU:$A22A PRG:222A 4E 56 45 4C 4F 50 45 44 20 20 FF 20 54 48 45 20 - .byte $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $27, $53, $20, $47, $41, $4D, $45 ; CPU:$A23A PRG:223A 4D 45 52 50 45 4F 50 4C 45 27 53 20 47 41 4D 45 - .byte $53, $2E, $20, $FF, $20, $20, $20, $20, $49, $54, $20, $57, $41, $53, $20, $54 ; CPU:$A24A PRG:224A 53 2E 20 FF 20 20 20 20 49 54 20 57 41 53 20 54 - .byte $48, $45, $20, $53, $41, $4D, $45, $20, $20, $20, $20, $20, $FF, $FF, $20, $20 ; CPU:$A25A PRG:225A 48 45 20 53 41 4D 45 20 20 20 20 20 FF FF 20 20 - .byte $45, $56, $45, $52, $59, $57, $48, $45, $52, $45, $2E, $20, $41, $4C, $4C, $20 ; CPU:$A26A PRG:226A 45 56 45 52 59 57 48 45 52 45 2E 20 41 4C 4C 20 - .byte $54, $48, $45, $20, $20, $20, $FF, $20, $20, $20, $20, $47, $41, $4D, $45, $53 ; CPU:$A27A PRG:227A 54 48 45 20 20 20 FF 20 20 20 20 47 41 4D 45 53 - .byte $20, $55, $4E, $44, $45, $52, $20, $54, $48, $45, $20, $20, $20, $20, $20, $FF ; CPU:$A28A PRG:228A 20 55 4E 44 45 52 20 54 48 45 20 20 20 20 20 FF - .byte $20, $20, $53, $45, $41, $20, $57, $45, $52, $45, $20, $45, $4E, $43, $41, $53 ; CPU:$A29A PRG:229A 20 20 53 45 41 20 57 45 52 45 20 45 4E 43 41 53 - .byte $45, $44, $20, $49, $4E, $20, $20, $20, $FF, $FF, $20, $20, $20, $42, $55, $42 ; CPU:$A2AA PRG:22AA 45 44 20 49 4E 20 20 20 FF FF 20 20 20 42 55 42 - .byte $42, $4C, $45, $53, $20, $53, $4F, $20, $4E, $4F, $20, $4F, $4E, $45, $20, $20 ; CPU:$A2BA PRG:22BA 42 4C 45 53 20 53 4F 20 4E 4F 20 4F 4E 45 20 20 - .byte $20, $20, $FF, $20, $20, $43, $4F, $55, $4C, $44, $20, $50, $4C, $41, $59, $20 ; CPU:$A2CA PRG:22CA 20 20 FF 20 20 43 4F 55 4C 44 20 50 4C 41 59 20 - .byte $54, $48, $45, $4D, $20, $41, $4E, $44, $20, $20, $20, $FF, $20, $20, $20, $20 ; CPU:$A2DA PRG:22DA 54 48 45 4D 20 41 4E 44 20 20 20 FF 20 20 20 20 - .byte $20, $20, $20, $48, $41, $56, $45, $20, $46, $55, $4E, $2E, $20, $20, $20, $20 ; CPU:$A2EA PRG:22EA 20 20 20 48 41 56 45 20 46 55 4E 2E 20 20 20 20 - .byte $20, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $54, $48, $45, $4E, $20 ; CPU:$A2FA PRG:22FA 20 20 20 20 FF 20 20 20 20 20 20 54 48 45 4E 20 - .byte $45, $4D, $50, $45, $52, $4F, $52, $20, $20, $20, $20, $20, $20, $FF, $20, $20 ; CPU:$A30A PRG:230A 45 4D 50 45 52 4F 52 20 20 20 20 20 20 FF 20 20 - .byte $20, $4F, $2D, $44, $49, $4E, $54, $4F, $4E, $20, $43, $41, $4D, $45, $20, $44 ; CPU:$A31A PRG:231A 20 4F 2D 44 49 4E 54 4F 4E 20 43 41 4D 45 20 44 - .byte $4F, $57, $4E, $20, $20, $20, $FF, $20, $41, $4E, $44, $20, $41, $4E, $4E, $4F ; CPU:$A32A PRG:232A 4F 57 4E 20 20 20 FF 20 41 4E 44 20 41 4E 4E 4F - .byte $55, $4E, $43, $45, $44, $20, $54, $48, $41, $54, $20, $54, $48, $45, $20, $FF ; CPU:$A33A PRG:233A 55 4E 43 45 44 20 54 48 41 54 20 54 48 45 20 FF - .byte $FF, $20, $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $57, $4F, $55 ; CPU:$A34A PRG:234A FF 20 20 4D 45 52 50 45 4F 50 4C 45 20 57 4F 55 - .byte $4C, $44, $20, $48, $41, $56, $45, $20, $20, $FF, $20, $54, $4F, $20, $50, $41 ; CPU:$A35A PRG:235A 4C 44 20 48 41 56 45 20 20 FF 20 54 4F 20 50 41 - .byte $59, $20, $48, $49, $4D, $20, $41, $20, $50, $45, $41, $52, $4C, $20, $54, $4F ; CPU:$A36A PRG:236A 59 20 48 49 4D 20 41 20 50 45 41 52 4C 20 54 4F - .byte $20, $20, $FF, $42, $55, $52, $53, $54, $20, $54, $48, $45, $20, $42, $55, $42 ; CPU:$A37A PRG:237A 20 20 FF 42 55 52 53 54 20 54 48 45 20 42 55 42 - .byte $42, $4C, $45, $20, $41, $52, $4F, $55, $4E, $44, $20, $FF, $FF, $FF, $20, $20 ; CPU:$A38A PRG:238A 42 4C 45 20 41 52 4F 55 4E 44 20 FF FF FF 20 20 - .byte $41, $4E, $59, $20, $47, $41, $4D, $45, $2E, $20, $4F, $4E, $4C, $59, $20, $54 ; CPU:$A39A PRG:239A 41 4E 59 20 47 41 4D 45 2E 20 4F 4E 4C 59 20 54 - .byte $48, $45, $4E, $20, $20, $20, $FF, $20, $20, $20, $43, $4F, $55, $4C, $44, $20 ; CPU:$A3AA PRG:23AA 48 45 4E 20 20 20 FF 20 20 20 43 4F 55 4C 44 20 - .byte $54, $48, $45, $59, $20, $50, $4C, $41, $59, $2E, $20, $20, $20, $20, $20, $FF ; CPU:$A3BA PRG:23BA 54 48 45 59 20 50 4C 41 59 2E 20 20 20 20 20 FF - .byte $20, $20, $20, $20, $53, $4F, $20, $54, $48, $45, $59, $20, $50, $41, $49, $44 ; CPU:$A3CA PRG:23CA 20 20 20 20 53 4F 20 54 48 45 59 20 50 41 49 44 - .byte $20, $54, $48, $45, $20, $20, $20, $20, $FF, $20, $20, $45, $56, $49, $4C, $20 ; CPU:$A3DA PRG:23DA 20 54 48 45 20 20 20 20 FF 20 20 45 56 49 4C 20 - .byte $45, $4D, $50, $45, $52, $4F, $52, $20, $48, $49, $53, $20, $54, $41, $58, $20 ; CPU:$A3EA PRG:23EA 45 4D 50 45 52 4F 52 20 48 49 53 20 54 41 58 20 - .byte $20, $FF, $20, $20, $20, $20, $20, $20, $20, $20, $4F, $4E, $20, $46, $55, $4E ; CPU:$A3FA PRG:23FA 20 FF 20 20 20 20 20 20 20 20 4F 4E 20 46 55 4E - .byte $2E, $20, $20, $20, $20, $20, $20, $20, $20, $20, $FF, $FF, $20, $20, $20, $4E ; CPU:$A40A PRG:240A 2E 20 20 20 20 20 20 20 20 20 FF FF 20 20 20 4E - .byte $4F, $57, $20, $49, $54, $20, $53, $45, $45, $4D, $45, $44, $20, $54, $48, $45 ; CPU:$A41A PRG:241A 4F 57 20 49 54 20 53 45 45 4D 45 44 20 54 48 45 - .byte $20, $20, $20, $20, $FF, $20, $47, $41, $4D, $45, $53, $20, $57, $45, $52, $45 ; CPU:$A42A PRG:242A 20 20 20 20 FF 20 47 41 4D 45 53 20 57 45 52 45 - .byte $4E, $27, $54, $20, $41, $53, $20, $4D, $55, $43, $48, $20, $20, $FF, $20, $46 ; CPU:$A43A PRG:243A 4E 27 54 20 41 53 20 4D 55 43 48 20 20 FF 20 46 - .byte $55, $4E, $20, $54, $4F, $20, $50, $4C, $41, $59, $20, $41, $53, $20, $42, $45 ; CPU:$A44A PRG:244A 55 4E 20 54 4F 20 50 4C 41 59 20 41 53 20 42 45 - .byte $46, $4F, $52, $45, $2E, $20, $FF, $20, $20, $4F, $4E, $45, $20, $44, $41, $59 ; CPU:$A45A PRG:245A 46 4F 52 45 2E 20 FF 20 20 4F 4E 45 20 44 41 59 - .byte $20, $4E, $41, $4D, $4F, $52, $41, $20, $46, $4F, $55, $4E, $44, $20, $20, $FF ; CPU:$A46A PRG:246A 20 4E 41 4D 4F 52 41 20 46 4F 55 4E 44 20 20 FF - .byte $20, $54, $48, $41, $54, $20, $42, $59, $20, $53, $54, $41, $43, $4B, $49, $4E ; CPU:$A47A PRG:247A 20 54 48 41 54 20 42 59 20 53 54 41 43 4B 49 4E - .byte $47, $20, $46, $4F, $55, $52, $20, $20, $FF, $20, $20, $20, $20, $4F, $52, $20 ; CPU:$A48A PRG:248A 47 20 46 4F 55 52 20 20 FF 20 20 20 20 4F 52 20 - .byte $4D, $4F, $52, $45, $20, $42, $55, $42, $42, $4C, $45, $53, $20, $20, $20, $20 ; CPU:$A49A PRG:249A 4D 4F 52 45 20 42 55 42 42 4C 45 53 20 20 20 20 - .byte $20, $FF, $FF, $20, $20, $54, $4F, $47, $45, $54, $48, $45, $52, $20, $49, $4E ; CPU:$A4AA PRG:24AA 20 FF FF 20 20 54 4F 47 45 54 48 45 52 20 49 4E - .byte $20, $4A, $55, $53, $54, $20, $54, $48, $45, $20, $20, $FF, $20, $20, $52, $49 ; CPU:$A4BA PRG:24BA 20 4A 55 53 54 20 54 48 45 20 20 FF 20 20 52 49 - .byte $47, $48, $54, $20, $57, $41, $59, $20, $54, $48, $45, $59, $20, $57, $4F, $55 ; CPU:$A4CA PRG:24CA 47 48 54 20 57 41 59 20 54 48 45 59 20 57 4F 55 - .byte $4C, $44, $20, $20, $FF, $20, $20, $20, $41, $4C, $4C, $20, $50, $4F, $50, $20 ; CPU:$A4DA PRG:24DA 4C 44 20 20 FF 20 20 20 41 4C 4C 20 50 4F 50 20 - .byte $4C, $49, $4B, $45, $20, $41, $20, $42, $49, $47, $20, $20, $20, $FF, $FF, $20 ; CPU:$A4EA PRG:24EA 4C 49 4B 45 20 41 20 42 49 47 20 20 20 FF FF 20 - .byte $20, $42, $41, $4C, $4C, $4F, $4F, $4E, $2E, $20, $4E, $4F, $57, $20, $4E, $4F ; CPU:$A4FA PRG:24FA 20 42 41 4C 4C 4F 4F 4E 2E 20 4E 4F 57 20 4E 4F - .byte $20, $4F, $4E, $45, $20, $20, $20, $FF, $20, $48, $41, $44, $20, $54, $4F, $20 ; CPU:$A50A PRG:250A 20 4F 4E 45 20 20 20 FF 20 48 41 44 20 54 4F 20 - .byte $50, $41, $59, $20, $54, $48, $45, $20, $45, $4D, $50, $45, $52, $4F, $52, $20 ; CPU:$A51A PRG:251A 50 41 59 20 54 48 45 20 45 4D 50 45 52 4F 52 20 - .byte $FF, $20, $20, $20, $20, $48, $49, $53, $20, $54, $41, $58, $20, $4F, $4E, $20 ; CPU:$A52A PRG:252A FF 20 20 20 20 48 49 53 20 54 41 58 20 4F 4E 20 - .byte $46, $55, $4E, $21, $20, $20, $20, $20, $20, $FF, $FF, $20, $20, $20, $20, $57 ; CPU:$A53A PRG:253A 46 55 4E 21 20 20 20 20 20 FF FF 20 20 20 20 57 - .byte $49, $54, $48, $49, $4E, $20, $44, $41, $59, $53, $20, $54, $48, $45, $20, $20 ; CPU:$A54A PRG:254A 49 54 48 49 4E 20 44 41 59 53 20 54 48 45 20 20 - .byte $20, $20, $20, $FF, $20, $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20 ; CPU:$A55A PRG:255A 20 20 20 FF 20 20 4D 45 52 50 45 4F 50 4C 45 20 - .byte $48, $41, $44, $20, $50, $4F, $50, $50, $45, $44, $20, $20, $FF, $FF, $FF, $20 ; CPU:$A56A PRG:256A 48 41 44 20 50 4F 50 50 45 44 20 20 FF FF FF 20 - .byte $20, $20, $41, $4C, $4C, $20, $54, $48, $45, $20, $42, $55, $42, $42, $4C, $45 ; CPU:$A57A PRG:257A 20 20 41 4C 4C 20 54 48 45 20 42 55 42 42 4C 45 - .byte $53, $20, $4F, $4E, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $45, $56 ; CPU:$A58A PRG:258A 53 20 4F 4E 20 20 20 FF 20 20 20 20 20 20 45 56 - .byte $45, $52, $59, $20, $47, $41, $4D, $45, $2E, $20, $20, $20, $20, $20, $20, $20 ; CPU:$A59A PRG:259A 45 52 59 20 47 41 4D 45 2E 20 20 20 20 20 20 20 - .byte $FF, $FF, $20, $20, $54, $48, $45, $20, $45, $4D, $50, $45, $52, $4F, $52, $20 ; CPU:$A5AA PRG:25AA FF FF 20 20 54 48 45 20 45 4D 50 45 52 4F 52 20 - .byte $57, $41, $53, $20, $56, $45, $52, $59, $20, $20, $FF, $20, $20, $41, $4E, $47 ; CPU:$A5BA PRG:25BA 57 41 53 20 56 45 52 59 20 20 FF 20 20 41 4E 47 - .byte $52, $59, $20, $41, $4E, $44, $20, $53, $57, $41, $4D, $20, $42, $41, $43, $4B ; CPU:$A5CA PRG:25CA 52 59 20 41 4E 44 20 53 57 41 4D 20 42 41 43 4B - .byte $20, $20, $20, $FF, $20, $20, $20, $41, $43, $52, $4F, $53, $53, $20, $54, $48 ; CPU:$A5DA PRG:25DA 20 20 20 FF 20 20 20 41 43 52 4F 53 53 20 54 48 - .byte $45, $20, $4F, $43, $45, $41, $4E, $2E, $20, $20, $20, $20, $FF, $FF, $20, $20 ; CPU:$A5EA PRG:25EA 45 20 4F 43 45 41 4E 2E 20 20 20 20 FF FF 20 20 - .byte $20, $20, $20, $54, $48, $45, $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45 ; CPU:$A5FA PRG:25FA 20 20 20 54 48 45 20 4D 45 52 50 45 4F 50 4C 45 - .byte $20, $20, $20, $20, $20, $20, $FF, $20, $50, $4C, $41, $59, $45, $44, $20, $41 ; CPU:$A60A PRG:260A 20 20 20 20 20 20 FF 20 50 4C 41 59 45 44 20 41 - .byte $4C, $4C, $20, $54, $48, $45, $20, $47, $41, $4D, $45, $53, $20, $20, $20, $FF ; CPU:$A61A PRG:261A 4C 4C 20 54 48 45 20 47 41 4D 45 53 20 20 20 FF - .byte $20, $20, $54, $48, $45, $59, $20, $4C, $4F, $56, $45, $44, $20, $53, $4F, $20 ; CPU:$A62A PRG:262A 20 20 54 48 45 59 20 4C 4F 56 45 44 20 53 4F 20 - .byte $4D, $55, $43, $48, $2E, $20, $20, $20, $FF, $FF, $20, $20, $20, $41, $4E, $44 ; CPU:$A63A PRG:263A 4D 55 43 48 2E 20 20 20 FF FF 20 20 20 41 4E 44 - .byte $20, $59, $4F, $55, $20, $4B, $4E, $4F, $57, $20, $57, $48, $41, $54, $3F, $20 ; CPU:$A64A PRG:264A 20 59 4F 55 20 4B 4E 4F 57 20 57 48 41 54 3F 20 - .byte $20, $20, $FF, $20, $20, $20, $45, $56, $45, $52, $59, $20, $47, $41, $4D, $45 ; CPU:$A65A PRG:265A 20 20 FF 20 20 20 45 56 45 52 59 20 47 41 4D 45 - .byte $20, $53, $45, $45, $4D, $45, $44, $20, $20, $20, $20, $FF, $20, $20, $20, $20 ; CPU:$A66A PRG:266A 20 53 45 45 4D 45 44 20 20 20 20 FF 20 20 20 20 - .byte $20, $20, $53, $4F, $4D, $45, $48, $4F, $57, $20, $4A, $55, $53, $54, $20, $20 ; CPU:$A67A PRG:267A 20 20 53 4F 4D 45 48 4F 57 20 4A 55 53 54 20 20 - .byte $20, $20, $20, $20, $FF, $FF, $FF, $20, $41, $20, $4C, $49, $54, $54, $4C, $45 ; CPU:$A68A PRG:268A 20 20 20 20 FF FF FF 20 41 20 4C 49 54 54 4C 45 - .byte $20, $42, $49, $54, $20, $4D, $4F, $52, $45, $20, $46, $55, $4E, $20, $20, $FF ; CPU:$A69A PRG:269A 20 42 49 54 20 4D 4F 52 45 20 46 55 4E 20 20 FF - .byte $20, $20, $20, $20, $20, $20, $54, $48, $41, $4E, $20, $42, $45, $46, $4F, $52 ; CPU:$A6AA PRG:26AA 20 20 20 20 20 20 54 48 41 4E 20 42 45 46 4F 52 - .byte $45, $2E, $20, $20, $20, $20, $20, $20, $FF, $FF, $20, $20, $20, $20, $20, $20 ; CPU:$A6BA PRG:26BA 45 2E 20 20 20 20 20 20 FF FF 20 20 20 20 20 20 - .byte $41, $4E, $44, $20, $54, $48, $45, $59, $20, $41, $4C, $4C, $20, $20, $20, $20 ; CPU:$A6CA PRG:26CA 41 4E 44 20 54 48 45 59 20 41 4C 4C 20 20 20 20 - .byte $20, $20, $FF, $20, $20, $20, $20, $20, $4C, $49, $56, $45, $44, $20, $48, $41 ; CPU:$A6DA PRG:26DA 20 20 FF 20 20 20 20 20 4C 49 56 45 44 20 48 41 - .byte $50, $50, $49, $4C, $59, $20, $20, $20, $20, $20, $20, $FF, $20, $20, $20, $20 ; CPU:$A6EA PRG:26EA 50 50 49 4C 59 20 20 20 20 20 20 FF 20 20 20 20 - .byte $20, $20, $45, $56, $45, $52, $20, $41, $46, $54, $45, $52, $2E, $20, $20, $20 ; CPU:$A6FA PRG:26FA 20 20 45 56 45 52 20 41 46 54 45 52 2E 20 20 20 - .byte $20, $20, $20, $20, $FF, $0E, $0E, $05, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E ; CPU:$A70A PRG:270A 20 20 20 20 FF 0E 0E 05 0E 0E 0E 0E 0E 0E 0E 0E - .byte $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25 ; CPU:$A71A PRG:271A 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 25 13 1A 0E 21 25 - .byte $1A, $0E, $21, $13, $30, $0E, $01, $15, $06, $0E, $05, $0E, $0E, $0E, $01, $05 ; CPU:$A72A PRG:272A 1A 0E 21 13 30 0E 01 15 06 0E 05 0E 0E 0E 01 05 - .byte $0E, $0E, $01, $0E, $10, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25 ; CPU:$A73A PRG:273A 0E 0E 01 0E 10 0E 0E 0E 0E 0E 25 13 1A 0E 21 25 - .byte $1A, $0E, $21, $13, $30, $0E, $11, $25, $16, $0E, $15, $03, $0A, $0E, $11, $15 ; CPU:$A74A PRG:274A 1A 0E 21 13 30 0E 11 25 16 0E 15 03 0A 0E 11 15 - .byte $0A, $0E, $11, $03, $20, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25 ; CPU:$A75A PRG:275A 0A 0E 11 03 20 0E 0E 0E 0E 0E 25 13 1A 0E 21 25 - .byte $1A, $0E, $21, $13, $30, $0E, $21, $36, $26, $0E, $25, $13, $1A, $0E, $21, $25 ; CPU:$A76A PRG:276A 1A 0E 21 13 30 0E 21 36 26 0E 25 13 1A 0E 21 25 - .byte $1A, $0E, $21, $13, $30, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25 ; CPU:$A77A PRG:277A 1A 0E 21 13 30 0E 0E 0E 0E 0E 25 13 1A 0E 21 25 - .byte $1A, $0E, $21, $13, $30, $A5, $B9, $8D, $E8, $05, $A5, $C2, $F0, $0C, $A5, $B9 ; CPU:$A78A PRG:278A 1A 0E 21 13 30 A5 B9 8D E8 05 A5 C2 F0 0C A5 B9 - .byte $D0, $08, $20, $21, $B8, $A9, $00, $85, $B9, $60, $A5, $71, $C9, $02, $F0, $09 ; CPU:$A79A PRG:279A D0 08 20 21 B8 A9 00 85 B9 60 A5 71 C9 02 F0 09 - .byte $A5, $B9, $C9, $07, $B0, $03, $20, $D0, $B7, $A5, $BE, $30, $0C, $A5, $71, $C9 ; CPU:$A7AA PRG:27AA A5 B9 C9 07 B0 03 20 D0 B7 A5 BE 30 0C A5 71 C9 - .byte $02, $F0, $06, $A5, $31, $D0, $02, $E6, $C0, $A5, $B9, $20, $73, $81, $DC, $A7 ; CPU:$A7BA PRG:27BA 02 F0 06 A5 31 D0 02 E6 C0 A5 B9 20 73 81 DC A7 - .byte $05, $A8, $6C, $A8, $88, $AD, $CE, $AF, $AE, $A8, $1B, $AA, $91, $AA, $0B, $AE ; CPU:$A7CA PRG:27CA 05 A8 6C A8 88 AD CE AF AE A8 1B AA 91 AA 0B AE - .byte $21, $BA, $A9, $A4, $85, $A6, $A9, $CE, $85, $A7, $A9, $2B, $85, $AA, $E6, $B9 ; CPU:$A7DA PRG:27DA 21 BA A9 A4 85 A6 A9 CE 85 A7 A9 2B 85 AA E6 B9 - .byte $A9, $00, $85, $B3, $85, $A5, $85, $37, $85, $36, $A9, $08, $85, $9D, $20, $EF ; CPU:$A7EA PRG:27EA A9 00 85 B3 85 A5 85 37 85 36 A9 08 85 9D 20 EF - .byte $A8, $A5, $BF, $C9, $05, $D0, $03, $20, $9F, $AF, $60, $20, $B3, $AA, $A5, $2B ; CPU:$A7FA PRG:27FA A8 A5 BF C9 05 D0 03 20 9F AF 60 20 B3 AA A5 2B - .byte $29, $C0, $F0, $1A, $A9, $01, $8D, $E3, $00, $A9, $03, $8D, $E2, $00, $A5, $2B ; CPU:$A80A PRG:280A 29 C0 F0 1A A9 01 8D E3 00 A9 03 8D E2 00 A5 2B - .byte $29, $80, $F0, $05, $A9, $02, $8D, $E2, $00, $A9, $04, $20, $04, $80, $AD, $DD ; CPU:$A81A PRG:281A 29 80 F0 05 A9 02 8D E2 00 A9 04 20 04 80 AD DD - .byte $06, $F0, $03, $20, $A1, $A9, $A6, $BD, $F0, $25, $AD, $59, $03, $C9, $07, $90 ; CPU:$A82A PRG:282A 06 F0 03 20 A1 A9 A6 BD F0 25 AD 59 03 C9 07 90 - .byte $1F, $BD, $8D, $03, $8D, $89, $03, $BD, $9D, $03, $8D, $99, $03, $A9, $04, $18 ; CPU:$A83A PRG:283A 1F BD 8D 03 8D 89 03 BD 9D 03 8D 99 03 A9 04 18 - .byte $6D, $89, $03, $8D, $89, $03, $A9, $04, $18, $6D, $99, $03, $8D, $99, $03, $60 ; CPU:$A84A PRG:284A 6D 89 03 8D 89 03 A9 04 18 6D 99 03 8D 99 03 60 - .byte $A5, $31, $6A, $29, $03, $85, $20, $AD, $AF, $03, $29, $FC, $05, $20, $8D, $AF ; CPU:$A85A PRG:285A A5 31 6A 29 03 85 20 AD AF 03 29 FC 05 20 8D AF - .byte $03, $60, $A5, $31, $6A, $90, $01, $60, $20, $55, $AD, $20, $7F, $A9, $A5, $BD ; CPU:$A86A PRG:286A 03 60 A5 31 6A 90 01 60 20 55 AD 20 7F A9 A5 BD - .byte $F0, $1C, $AD, $59, $03, $C9, $07, $90, $15, $A6, $BD, $B5, $AA, $85, $BE, $AA ; CPU:$A87A PRG:287A F0 1C AD 59 03 C9 07 90 15 A6 BD B5 AA 85 BE AA - .byte $BD, $EA, $05, $09, $40, $9D, $EA, $05, $A9, $00, $85, $BD, $85, $C0, $E6, $B9 ; CPU:$A88A PRG:288A BD EA 05 09 40 9D EA 05 A9 00 85 BD 85 C0 E6 B9 - .byte $A9, $01, $8D, $E3, $00, $A9, $00, $8D, $E2, $00, $A9, $04, $20, $04, $80, $A9 ; CPU:$A89A PRG:289A A9 01 8D E3 00 A9 00 8D E2 00 A9 04 20 04 80 A9 - .byte $00, $85, $BA, $60, $20, $08, $B1, $60, $A6, $C3, $A9, $04, $85, $1F, $A5, $A5 ; CPU:$A8AA PRG:28AA 00 85 BA 60 20 08 B1 60 A6 C3 A9 04 85 1F A5 A5 - .byte $0A, $0A, $A8, $B1, $A3, $85, $1B, $29, $F0, $85, $1C, $18, $65, $A6, $9D, $88 ; CPU:$A8BA PRG:28BA 0A 0A A8 B1 A3 85 1B 29 F0 85 1C 18 65 A6 9D 88 - .byte $03, $A5, $1B, $29, $0F, $0A, $0A, $0A, $0A, $18, $65, $A7, $9D, $98, $03, $A9 ; CPU:$A8CA PRG:28CA 03 A5 1B 29 0F 0A 0A 0A 0A 18 65 A7 9D 98 03 A9 - .byte $10, $25, $1C, $F0, $09, $BD, $98, $03, $18, $69, $08, $9D, $98, $03, $E8, $C8 ; CPU:$A8DA PRG:28DA 10 25 1C F0 09 BD 98 03 18 69 08 9D 98 03 E8 C8 - .byte $C6, $1F, $D0, $CF, $60, $EE, $E3, $05, $AD, $E3, $05, $6A, $AC, $E5, $05, $D0 ; CPU:$A8EA PRG:28EA C6 1F D0 CF 60 EE E3 05 AD E3 05 6A AC E5 05 D0 - .byte $05, $20, $52, $85, $A5, $3D, $29, $07, $85, $1D, $AD, $E3, $05, $6A, $AC, $E5 ; CPU:$A8FA PRG:28FA 05 20 52 85 A5 3D 29 07 85 1D AD E3 05 6A AC E5 - .byte $05, $D0, $05, $20, $52, $85, $A5, $3D, $29, $7F, $A8, $B1, $3B, $85, $1B, $6A ; CPU:$A90A PRG:290A 05 D0 05 20 52 85 A5 3D 29 7F A8 B1 3B 85 1B 6A - .byte $6A, $6A, $29, $0E, $85, $9E, $AA, $BD, $13, $F3, $85, $A3, $BD, $14, $F3, $85 ; CPU:$A91A PRG:291A 6A 6A 29 0E 85 9E AA BD 13 F3 85 A3 BD 14 F3 85 - .byte $A4, $BD, $8E, $F3, $85, $19, $BD, $8F, $F3, $85, $1A, $A5, $1B, $29, $0F, $0A ; CPU:$A92A PRG:292A A4 BD 8E F3 85 19 BD 8F F3 85 1A A5 1B 29 0F 0A - .byte $0A, $A8, $A2, $00, $86, $21, $B1, $19, $18, $65, $1D, $AA, $BD, $81, $F3, $A6 ; CPU:$A93A PRG:293A 0A A8 A2 00 86 21 B1 19 18 65 1D AA BD 81 F3 A6 - .byte $21, $95, $AF, $C8, $E8, $E0, $04, $90, $EB, $A2, $00, $A9, $06, $85, $12, $86 ; CPU:$A94A PRG:294A 21 95 AF C8 E8 E0 04 90 EB A2 00 A9 06 85 12 86 - .byte $21, $B5, $AF, $85, $11, $20, $5D, $85, $E6, $12, $A6, $21, $E8, $E0, $04, $90 ; CPU:$A95A PRG:295A 21 B5 AF 85 11 20 5D 85 E6 12 A6 21 E8 E0 04 90 - .byte $EE, $A9, $06, $85, $C3, $A0, $00, $B1, $A3, $18, $65, $AA, $99, $AB, $00, $C8 ; CPU:$A96A PRG:296A EE A9 06 85 C3 A0 00 B1 A3 18 65 AA 99 AB 00 C8 - .byte $C0, $04, $90, $F3, $60, $A9, $00, $85, $11, $A9, $06, $85, $12, $20, $5D, $85 ; CPU:$A97A PRG:297A C0 04 90 F3 60 A9 00 85 11 A9 06 85 12 20 5D 85 - .byte $E6, $12, $AD, $5F, $03, $C9, $05, $D0, $02, $E6, $12, $20, $5D, $85, $E6, $12 ; CPU:$A98A PRG:298A E6 12 AD 5F 03 C9 05 D0 02 E6 12 20 5D 85 E6 12 - .byte $A5, $12, $C9, $0A, $90, $F5, $60, $A5, $31, $6A, $90, $01, $60, $AD, $DD, $06 ; CPU:$A99A PRG:299A A5 12 C9 0A 90 F5 60 A5 31 6A 90 01 60 AD DD 06 - .byte $AA, $29, $0F, $18, $6D, $BF, $05, $8D, $BF, $05, $8A, $6A, $6A, $6A, $6A, $29 ; CPU:$A9AA PRG:29AA AA 29 0F 18 6D BF 05 8D BF 05 8A 6A 6A 6A 6A 29 - .byte $0F, $18, $6D, $BE, $05, $8D, $BE, $05, $A2, $05, $BD, $BA, $05, $C9, $0A, $90 ; CPU:$A9BA PRG:29BA 0F 18 6D BE 05 8D BE 05 A2 05 BD BA 05 C9 0A 90 - .byte $0B, $FE, $B9, $05, $18, $69, $06, $29, $0F, $9D, $BA, $05, $CA, $D0, $EB, $A9 ; CPU:$A9CA PRG:29CA 0B FE B9 05 18 69 06 29 0F 9D BA 05 CA D0 EB A9 - .byte $06, $8D, $F1, $06, $A9, $01, $8D, $F2, $06, $A2, $00, $BD, $BA, $05, $A8, $B9 ; CPU:$A9DA PRG:29DA 06 8D F1 06 A9 01 8D F2 06 A2 00 BD BA 05 A8 B9 - .byte $D6, $F1, $9D, $F3, $06, $E8, $E0, $06, $90, $F1, $A6, $37, $A9, $3A, $9D, $38 ; CPU:$A9EA PRG:29EA D6 F1 9D F3 06 E8 E0 06 90 F1 A6 37 A9 3A 9D 38 - .byte $03, $A9, $23, $9D, $39, $03, $AD, $0A, $B7, $9D, $3A, $03, $AD, $0B, $B7, $9D ; CPU:$A9FA PRG:29FA 03 A9 23 9D 39 03 AD 0A B7 9D 3A 03 AD 0B B7 9D - .byte $3B, $03, $A9, $00, $9D, $3C, $03, $8D, $DD, $06, $8A, $18, $69, $04, $85, $37 ; CPU:$AA0A PRG:2A0A 3B 03 A9 00 9D 3C 03 8D DD 06 8A 18 69 04 85 37 - .byte $60, $A5, $C0, $C9, $08, $90, $15, $A6, $BE, $BD, $EA, $05, $29, $BF, $9D, $EA ; CPU:$AA1A PRG:2A1A 60 A5 C0 C9 08 90 15 A6 BE BD EA 05 29 BF 9D EA - .byte $05, $A9, $00, $85, $C0, $8D, $59, $03, $A9, $FF, $85, $BE, $A2, $0B, $BD, $EA ; CPU:$AA2A PRG:2A2A 05 A9 00 85 C0 8D 59 03 A9 FF 85 BE A2 0B BD EA - .byte $05, $F0, $09, $E6, $B9, $E6, $B9, $A9, $00, $85, $BA, $60, $8A, $18, $69, $10 ; CPU:$AA3A PRG:2A3A 05 F0 09 E6 B9 E6 B9 A9 00 85 BA 60 8A 18 69 10 - .byte $AA, $C9, $70, $90, $E9, $A9, $00, $85, $B9, $A5, $71, $C9, $02, $F0, $2C, $A5 ; CPU:$AA4A PRG:2A4A AA C9 70 90 E9 A9 00 85 B9 A5 71 C9 02 F0 2C A5 - .byte $C2, $D0, $27, $A5, $BC, $C9, $1E, $90, $0F, $A9, $00, $85, $BC, $E6, $BF, $A5 ; CPU:$AA5A PRG:2A5A C2 D0 27 A5 BC C9 1E 90 0F A9 00 85 BC E6 BF A5 - .byte $BF, $C9, $05, $F0, $03, $20, $5A, $AF, $A5, $BB, $C9, $C8, $90, $0C, $A9, $07 ; CPU:$AA6A PRG:2A6A BF C9 05 F0 03 20 5A AF A5 BB C9 C8 90 0C A9 07 - .byte $85, $B9, $A9, $00, $85, $BA, $A9, $32, $85, $B3, $60, $A6, $BE, $BD, $EA, $05 ; CPU:$AA7A PRG:2A7A 85 B9 A9 00 85 BA A9 32 85 B3 60 A6 BE BD EA 05 - .byte $29, $40, $D0, $F6, $4C, $78, $AA, $A9, $01, $85, $98, $A5, $95, $D0, $08, $AD ; CPU:$AA8A PRG:2A8A 29 40 D0 F6 4C 78 AA A9 01 85 98 A5 95 D0 08 AD - .byte $E9, $05, $C9, $05, $D0, $01, $60, $A9, $09, $85, $6A, $A9, $00, $85, $6C, $60 ; CPU:$AA9A PRG:2A9A E9 05 C9 05 D0 01 60 A9 09 85 6A A9 00 85 6C 60 - .byte $A9, $05, $85, $BA, $A9, $08, $85, $B9, $60, $A5, $B3, $F0, $1E, $A5, $9C, $29 ; CPU:$AAAA PRG:2AAA A9 05 85 BA A9 08 85 B9 60 A5 B3 F0 1E A5 9C 29 - .byte $01, $F0, $05, $E6, $A6, $4C, $CA, $AA, $A5, $9C, $29, $02, $F0, $02, $C6, $A6 ; CPU:$AABA PRG:2ABA 01 F0 05 E6 A6 4C CA AA A5 9C 29 02 F0 02 C6 A6 - .byte $C6, $B3, $D0, $04, $A9, $00, $85, $9C, $4C, $DF, $AB, $AD, $E5, $05, $F0, $17 ; CPU:$AACA PRG:2ACA C6 B3 D0 04 A9 00 85 9C 4C DF AB AD E5 05 F0 17 - .byte $AE, $E4, $05, $BD, $BE, $AC, $C5, $AA, $D0, $0D, $BD, $BF, $AC, $85, $27, $85 ; CPU:$AADA PRG:2ADA AE E4 05 BD BE AC C5 AA D0 0D BD BF AC 85 27 85 - .byte $2B, $EE, $E4, $05, $EE, $E4, $05, $A5, $27, $29, $08, $D0, $06, $A9, $00, $85 ; CPU:$AAEA PRG:2AEA 2B EE E4 05 EE E4 05 A5 27 29 08 D0 06 A9 00 85 - .byte $C5, $F0, $16, $E6, $C5, $A5, $C5, $C9, $08, $90, $0A, $A9, $00, $85, $C5, $EE ; CPU:$AAFA PRG:2AFA C5 F0 16 E6 C5 A5 C5 C9 08 90 0A A9 00 85 C5 EE - .byte $DD, $06, $EE, $DD, $06, $A9, $00, $85, $C6, $A5, $C6, $D0, $0A, $A5, $CB, $85 ; CPU:$AB0A PRG:2B0A DD 06 EE DD 06 A9 00 85 C6 A5 C6 D0 0A A5 CB 85 - .byte $C6, $C6, $9D, $C6, $A7, $C6, $A7, $C6, $C6, $A5, $9D, $D0, $16, $A9, $08, $85 ; CPU:$AB1A PRG:2B1A C6 C6 9D C6 A7 C6 A7 C6 C6 A5 9D D0 16 A9 08 85 - .byte $9D, $A5, $AA, $85, $20, $C6, $20, $A5, $A5, $85, $23, $20, $29, $AC, $F0, $03 ; CPU:$AB2A PRG:2B2A 9D A5 AA 85 20 C6 20 A5 A5 85 23 20 29 AC F0 03 - .byte $E6, $B9, $60, $A5, $27, $29, $03, $D0, $03, $4C, $DF, $AB, $C9, $03, $D0, $07 ; CPU:$AB3A PRG:2B3A E6 B9 60 A5 27 29 03 D0 03 4C DF AB C9 03 D0 07 - .byte $A9, $00, $85, $9C, $4C, $DF, $AB, $85, $9C, $A5, $27, $29, $01, $F0, $09, $A5 ; CPU:$AB4A PRG:2B4A A9 00 85 9C 4C DF AB 85 9C A5 27 29 01 F0 09 A5 - .byte $AA, $18, $69, $10, $29, $F0, $85, $20, $A5, $27, $29, $02, $F0, $09, $A5, $AA ; CPU:$AB5A PRG:2B5A AA 18 69 10 29 F0 85 20 A5 27 29 02 F0 09 A5 AA - .byte $38, $E9, $10, $29, $F0, $85, $20, $A5, $AA, $29, $0F, $05, $20, $85, $20, $A5 ; CPU:$AB6A PRG:2B6A 38 E9 10 29 F0 85 20 A5 AA 29 0F 05 20 85 20 A5 - .byte $9D, $C9, $05, $90, $1B, $A5, $AA, $85, $1C, $29, $0F, $C9, $0E, $90, $06, $A5 ; CPU:$AB7A PRG:2B7A 9D C9 05 90 1B A5 AA 85 1C 29 0F C9 0E 90 06 A5 - .byte $AA, $49, $10, $85, $1C, $A5, $1C, $29, $10, $F0, $1D, $E6, $20, $4C, $B2, $AB ; CPU:$AB8A PRG:2B8A AA 49 10 85 1C A5 1C 29 10 F0 1D E6 20 4C B2 AB - .byte $A5, $AA, $85, $1C, $29, $0F, $C9, $0E, $90, $06, $A5, $AA, $49, $10, $85, $1C ; CPU:$AB9A PRG:2B9A A5 AA 85 1C 29 0F C9 0E 90 06 A5 AA 49 10 85 1C - .byte $A5, $1C, $29, $10, $D0, $02, $C6, $20, $A5, $A5, $85, $23, $20, $29, $AC, $F0 ; CPU:$ABAA PRG:2BAA A5 1C 29 10 D0 02 C6 20 A5 A5 85 23 20 29 AC F0 - .byte $09, $A9, $00, $85, $9C, $85, $B3, $4C, $DF, $AB, $A9, $00, $85, $C6, $A9, $10 ; CPU:$ABBA PRG:2BBA 09 A9 00 85 9C 85 B3 4C DF AB A9 00 85 C6 A9 10 - .byte $85, $B3, $A5, $9D, $C9, $05, $90, $08, $38, $E9, $04, $85, $9D, $4C, $DF, $AB ; CPU:$ABCA PRG:2BCA 85 B3 A5 9D C9 05 90 08 38 E9 04 85 9D 4C DF AB - .byte $18, $69, $04, $85, $9D, $A5, $A5, $85, $23, $29, $01, $F0, $21, $A5, $2B, $29 ; CPU:$ABDA PRG:2BDA 18 69 04 85 9D A5 A5 85 23 29 01 F0 21 A5 2B 29 - .byte $80, $F0, $02, $C6, $23, $A5, $2B, $29, $40, $F0, $02, $E6, $23, $A5, $23, $29 ; CPU:$ABEA PRG:2BEA 80 F0 02 C6 23 A5 2B 29 40 F0 02 E6 23 A5 23 29 - .byte $03, $85, $23, $A5, $AA, $85, $20, $20, $29, $AC, $20, $B2, $A8, $60, $A5, $2B ; CPU:$ABFA PRG:2BFA 03 85 23 A5 AA 85 20 20 29 AC 20 B2 A8 60 A5 2B - .byte $29, $80, $F0, $02, $E6, $23, $A5, $2B, $29, $40, $F0, $02, $C6, $23, $A5, $23 ; CPU:$AC0A PRG:2C0A 29 80 F0 02 E6 23 A5 2B 29 40 F0 02 C6 23 A5 23 - .byte $29, $03, $85, $23, $A5, $AA, $85, $20, $20, $29, $AC, $20, $B2, $A8, $60, $A5 ; CPU:$AC1A PRG:2C1A 29 03 85 23 A5 AA 85 20 20 29 AC 20 B2 A8 60 A5 - .byte $20, $29, $F0, $85, $21, $A5, $20, $29, $0F, $85, $22, $A9, $04, $85, $1F, $A2 ; CPU:$AC2A PRG:2C2A 20 29 F0 85 21 A5 20 29 0F 85 22 A9 04 85 1F A2 - .byte $00, $A5, $23, $0A, $0A, $85, $25, $A4, $25, $B1, $A3, $85, $1E, $A5, $21, $85 ; CPU:$AC3A PRG:2C3A 00 A5 23 0A 0A 85 25 A4 25 B1 A3 85 1E A5 21 85 - .byte $1C, $A5, $22, $C9, $0E, $90, $07, $A5, $21, $18, $69, $10, $85, $1C, $A5, $1C ; CPU:$AC4A PRG:2C4A 1C A5 22 C9 0E 90 07 A5 21 18 69 10 85 1C A5 1C - .byte $29, $10, $F0, $08, $A5, $1E, $29, $10, $F0, $02, $E6, $1E, $A5, $1E, $29, $F0 ; CPU:$AC5A PRG:2C5A 29 10 F0 08 A5 1E 29 10 F0 02 E6 1E A5 1E 29 F0 - .byte $18, $65, $21, $85, $1D, $C9, $70, $D0, $03, $A9, $FF, $60, $A5, $1E, $29, $0F ; CPU:$AC6A PRG:2C6A 18 65 21 85 1D C9 70 D0 03 A9 FF 60 A5 1E 29 0F - .byte $18, $65, $22, $85, $1C, $29, $0F, $C9, $0E, $90, $03, $A9, $FF, $60, $A5, $1C ; CPU:$AC7A PRG:2C7A 18 65 22 85 1C 29 0F C9 0E 90 03 A9 FF 60 A5 1C - .byte $18, $65, $1D, $C9, $70, $B0, $F4, $A8, $B9, $EA, $05, $29, $7F, $F0, $01, $60 ; CPU:$AC8A PRG:2C8A 18 65 1D C9 70 B0 F4 A8 B9 EA 05 29 7F F0 01 60 - .byte $98, $95, $C7, $E8, $E6, $25, $C6, $1F, $D0, $9D, $A9, $04, $85, $1F, $A2, $00 ; CPU:$AC9A PRG:2C9A 98 95 C7 E8 E6 25 C6 1F D0 9D A9 04 85 1F A2 00 - .byte $B5, $C7, $95, $AB, $E8, $C6, $1F, $D0, $F7, $A5, $20, $85, $AA, $A5, $23, $85 ; CPU:$ACAA PRG:2CAA B5 C7 95 AB E8 C6 1F D0 F7 A5 20 85 AA A5 23 85 - .byte $A5, $A9, $00, $60, $28, $80, $24, $02, $28, $01, $32, $02, $29, $01, $35, $40 ; CPU:$ACBA PRG:2CBA A5 A9 00 60 28 80 24 02 28 01 32 02 29 01 35 40 - .byte $29, $80, $24, $01, $2A, $01, $35, $01, $28, $80, $24, $40, $28, $01, $34, $02 ; CPU:$ACCA PRG:2CCA 29 80 24 01 2A 01 35 01 28 80 24 40 28 01 34 02 - .byte $28, $40, $25, $40, $2A, $02, $17, $02, $05, $80, $28, $40, $23, $80, $28, $01 ; CPU:$ACDA PRG:2CDA 28 40 25 40 2A 02 17 02 05 80 28 40 23 80 28 01 - .byte $34, $40, $32, $01, $29, $01, $35, $40, $33, $01, $29, $80, $25, $01, $32, $01 ; CPU:$ACEA PRG:2CEA 34 40 32 01 29 01 35 40 33 01 29 80 25 01 32 01 - .byte $27, $02, $12, $40, $27, $40, $24, $02, $29, $80, $23, $80, $29, $01, $32, $02 ; CPU:$ACFA PRG:2CFA 27 02 12 40 27 40 24 02 29 80 23 80 29 01 32 02 - .byte $21, $02, $26, $40, $22, $02, $10, $01, $25, $02, $29, $80, $26, $40, $28, $40 ; CPU:$AD0A PRG:2D0A 21 02 26 40 22 02 10 01 25 02 29 80 26 40 28 40 - .byte $25, $80, $23, $40, $29, $80, $26, $01, $34, $01, $28, $80, $22, $01, $29, $01 ; CPU:$AD1A PRG:2D1A 25 80 23 40 29 80 26 01 34 01 28 80 22 01 29 01 - .byte $36, $01, $43, $01, $28, $40, $25, $80, $23, $01, $29, $01, $36, $01, $29, $01 ; CPU:$AD2A PRG:2D2A 36 01 43 01 28 40 25 80 23 01 29 01 36 01 29 01 - .byte $36, $01, $29, $80, $25, $80, $28, $80, $2A, $02, $18, $02, $06, $40, $04, $01 ; CPU:$AD3A PRG:2D3A 36 01 29 80 25 80 28 80 2A 02 18 02 06 40 04 01 - .byte $28, $40, $28, $80, $25, $80, $29, $02, $29, $01, $37, $A2, $00, $86, $21, $B4 ; CPU:$AD4A PRG:2D4A 28 40 28 80 25 80 29 02 29 01 37 A2 00 86 21 B4 - .byte $AB, $B5, $AF, $85, $1B, $99, $EA, $05, $E6, $21, $0A, $AA, $BD, $9E, $F2, $85 ; CPU:$AD5A PRG:2D5A AB B5 AF 85 1B 99 EA 05 E6 21 0A AA BD 9E F2 85 - .byte $17, $BD, $9F, $F2, $85, $18, $98, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84 ; CPU:$AD6A PRG:2D6A 17 BD 9F F2 85 18 98 20 BF 84 20 8A 85 20 E3 84 - .byte $A6, $21, $E0, $04, $90, $D9, $A6, $36, $A9, $00, $9D, $00, $03, $60, $A5, $BA ; CPU:$AD7A PRG:2D7A A6 21 E0 04 90 D9 A6 36 A9 00 9D 00 03 60 A5 BA - .byte $C9, $00, $D0, $36, $A2, $00, $86, $B5, $86, $21, $B5, $AB, $85, $20, $C6, $20 ; CPU:$AD8A PRG:2D8A C9 00 D0 36 A2 00 86 B5 86 21 B5 AB 85 20 C6 20 - .byte $A5, $20, $29, $0F, $C9, $0E, $B0, $18, $A4, $20, $B9, $EA, $05, $D0, $11, $A9 ; CPU:$AD9A PRG:2D9A A5 20 29 0F C9 0E B0 18 A4 20 B9 EA 05 D0 11 A9 - .byte $80, $99, $EA, $05, $98, $A6, $B5, $9D, $A1, $06, $E6, $B5, $C6, $20, $10, $E0 ; CPU:$ADAA PRG:2DAA 80 99 EA 05 98 A6 B5 9D A1 06 E6 B5 C6 20 10 E0 - .byte $A6, $21, $E8, $E0, $04, $90, $D1, $E6, $BA, $60, $A5, $31, $6A, $90, $01, $60 ; CPU:$ADBA PRG:2DBA A6 21 E8 E0 04 90 D1 E6 BA 60 A5 31 6A 90 01 60 - .byte $A9, $0D, $85, $17, $A9, $F3, $85, $18, $A9, $0C, $85, $1F, $A0, $00, $C6, $B5 ; CPU:$ADCA PRG:2DCA A9 0D 85 17 A9 F3 85 18 A9 0C 85 1F A0 00 C6 B5 - .byte $10, $18, $E6, $B9, $A5, $BD, $D0, $02, $E6, $B9, $A9, $00, $A4, $36, $85, $BA ; CPU:$ADDA PRG:2DDA 10 18 E6 B9 A5 BD D0 02 E6 B9 A9 00 A4 36 85 BA - .byte $99, $00, $03, $85, $9C, $A9, $03, $85, $B3, $60, $A6, $B5, $BD, $A1, $06, $20 ; CPU:$ADEA PRG:2DEA 99 00 03 85 9C A9 03 85 B3 60 A6 B5 BD A1 06 20 - .byte $BF, $84, $20, $8A, $85, $C6, $1F, $10, $D5, $A4, $36, $A9, $00, $99, $00, $03 ; CPU:$ADFA PRG:2DFA BF 84 20 8A 85 C6 1F 10 D5 A4 36 A9 00 99 00 03 - .byte $60, $A5, $BA, $20, $73, $81, $20, $AE, $2B, $AE, $47, $AE, $80, $AE, $D6, $AE ; CPU:$AE0A PRG:2E0A 60 A5 BA 20 73 81 20 AE 2B AE 47 AE 80 AE D6 AE - .byte $E3, $AE, $0A, $AF, $23, $AF, $A9, $0A, $85, $6A, $A9, $00, $85, $6C, $E6, $BA ; CPU:$AE1A PRG:2E1A E3 AE 0A AF 23 AF A9 0A 85 6A A9 00 85 6C E6 BA - .byte $60, $A9, $00, $8D, $59, $03, $8D, $5E, $03, $8D, $5F, $03, $8D, $60, $03, $8D ; CPU:$AE2A PRG:2E2A 60 A9 00 8D 59 03 8D 5E 03 8D 5F 03 8D 60 03 8D - .byte $61, $03, $A9, $0A, $85, $B5, $E6, $BA, $A9, $07, $4C, $04, $80, $A5, $31, $6A ; CPU:$AE3A PRG:2E3A 61 03 A9 0A 85 B5 E6 BA A9 07 4C 04 80 A5 31 6A - .byte $90, $01, $60, $A9, $A8, $85, $17, $A9, $F2, $85, $18, $A5, $B5, $85, $B3, $20 ; CPU:$AE4A PRG:2E4A 90 01 60 A9 A8 85 17 A9 F2 85 18 A5 B5 85 B3 20 - .byte $BF, $84, $20, $8A, $85, $A5, $B3, $18, $69, $10, $C9, $70, $90, $EF, $A9, $00 ; CPU:$AE5A PRG:2E5A BF 84 20 8A 85 A5 B3 18 69 10 C9 70 90 EF A9 00 - .byte $9D, $00, $03, $C6, $B5, $10, $0E, $E6, $BA, $A0, $00, $A9, $00, $99, $EA, $05 ; CPU:$AE6A PRG:2E6A 9D 00 03 C6 B5 10 0E E6 BA A0 00 A9 00 99 EA 05 - .byte $C8, $C0, $70, $90, $F8, $60, $A5, $31, $6A, $90, $01, $60, $A6, $37, $A0, $00 ; CPU:$AE7A PRG:2E7A C8 C0 70 90 F8 60 A5 31 6A 90 01 60 A6 37 A0 00 - .byte $B9, $AC, $AE, $9D, $38, $03, $E8, $C8, $C0, $08, $90, $F4, $A9, $00, $9D, $38 ; CPU:$AE8A PRG:2E8A B9 AC AE 9D 38 03 E8 C8 C0 08 90 F4 A9 00 9D 38 - .byte $03, $86, $37, $A9, $01, $85, $96, $A9, $00, $85, $B8, $85, $B7, $85, $91, $E6 ; CPU:$AE9A PRG:2E9A 03 86 37 A9 01 85 96 A9 00 85 B8 85 B7 85 91 E6 - .byte $BA, $60, $B7, $21, $11, $F8, $DD, $23, $1B, $F8, $A9, $00, $85, $BA, $A9, $0A ; CPU:$AEAA PRG:2EAA BA 60 B7 21 11 F8 DD 23 1B F8 A9 00 85 BA A9 0A - .byte $85, $B5, $60, $20, $4D, $AE, $A5, $BA, $F0, $02, $E6, $6C, $60, $A9, $00, $AA ; CPU:$AEBA PRG:2EBA 85 B5 60 20 4D AE A5 BA F0 02 E6 6C 60 A9 00 AA - .byte $95, $B9, $E8, $E0, $0A, $90, $F9, $A9, $FF, $85, $BE, $60, $A5, $27, $C9, $C0 ; CPU:$AECA PRG:2ECA 95 B9 E8 E0 0A 90 F9 A9 FF 85 BE 60 A5 27 C9 C0 - .byte $D0, $06, $E6, $BA, $A9, $00, $85, $96, $60, $A5, $31, $6A, $90, $01, $60, $A2 ; CPU:$AEDA PRG:2EDA D0 06 E6 BA A9 00 85 96 60 A5 31 6A 90 01 60 A2 - .byte $00, $BD, $FE, $AE, $9D, $38, $03, $E8, $E0, $0C, $90, $F5, $A9, $00, $9D, $38 ; CPU:$AEEA PRG:2EEA 00 BD FE AE 9D 38 03 E8 E0 0C 90 F5 A9 00 9D 38 - .byte $03, $E6, $BA, $60, $75, $21, $25, $F8, $B5, $21, $25, $F8, $DD, $23, $20, $F8 ; CPU:$AEFA PRG:2EFA 03 E6 BA 60 75 21 25 F8 B5 21 25 F8 DD 23 20 F8 - .byte $A5, $31, $6A, $90, $01, $60, $A0, $00, $A6, $37, $B9, $48, $AF, $9D, $38, $03 ; CPU:$AF0A PRG:2F0A A5 31 6A 90 01 60 A0 00 A6 37 B9 48 AF 9D 38 03 - .byte $E8, $C8, $C0, $0D, $90, $F4, $E6, $BA, $60, $A5, $31, $6A, $90, $01, $60, $A0 ; CPU:$AF1A PRG:2F1A E8 C8 C0 0D 90 F4 E6 BA 60 A5 31 6A 90 01 60 A0 - .byte $00, $A6, $37, $B9, $55, $AF, $9D, $38, $03, $E8, $C8, $C0, $05, $90, $F4, $20 ; CPU:$AF2A PRG:2F2A 00 A6 37 B9 55 AF 9D 38 03 E8 C8 C0 05 90 F4 20 - .byte $C7, $AE, $20, $0F, $97, $A9, $09, $85, $B9, $A9, $00, $85, $BA, $60, $32, $23 ; CPU:$AF3A PRG:2F3A C7 AE 20 0F 97 A9 09 85 B9 A9 00 85 BA 60 32 23 - .byte $A1, $FB, $52, $23, $A1, $FB, $3A, $23, $A7, $FB, $00, $56, $23, $AF, $FB, $00 ; CPU:$AF4A PRG:2F4A A1 FB 52 23 A1 FB 3A 23 A7 FB 00 56 23 AF FB 00 - .byte $A5, $B7, $D0, $18, $20, $52, $85, $A5, $3D, $29, $03, $A8, $A2, $00, $B9, $37 ; CPU:$AF5A PRG:2F5A A5 B7 D0 18 20 52 85 A5 3D 29 03 A8 A2 00 B9 37 - .byte $C1, $9D, $F9, $06, $C8, $E8, $E0, $05, $90, $F4, $86, $B7, $A6, $B7, $BD, $F8 ; CPU:$AF6A PRG:2F6A C1 9D F9 06 C8 E8 E0 05 90 F4 86 B7 A6 B7 BD F8 - .byte $06, $18, $69, $07, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $20, $52, $85 ; CPU:$AF7A PRG:2F7A 06 18 69 07 85 11 A9 01 85 12 20 5D 85 20 52 85 - .byte $A5, $3D, $29, $03, $85, $BD, $E6, $BD, $A6, $BE, $30, $08, $BD, $EA, $05, $29 ; CPU:$AF8A PRG:2F8A A5 3D 29 03 85 BD E6 BD A6 BE 30 08 BD EA 05 29 - .byte $BF, $9D, $EA, $05, $60, $A9, $02, $85, $BD, $A9, $05, $85, $11, $A9, $07, $85 ; CPU:$AF9A PRG:2F9A BF 9D EA 05 60 A9 02 85 BD A9 05 85 11 A9 07 85 - .byte $12, $20, $5D, $85, $A9, $00, $85, $BC, $A6, $BE, $30, $17, $BD, $EA, $05, $29 ; CPU:$AFAA PRG:2FAA 12 20 5D 85 A9 00 85 BC A6 BE 30 17 BD EA 05 29 - .byte $BF, $9D, $EA, $05, $A9, $FF, $85, $BE, $A9, $00, $85, $11, $A9, $01, $85, $12 ; CPU:$AFBA PRG:2FBA BF 9D EA 05 A9 FF 85 BE A9 00 85 11 A9 01 85 12 - .byte $20, $5D, $85, $60, $A5, $31, $6A, $90, $01, $60, $A5, $BA, $D0, $11, $E6, $BA ; CPU:$AFCA PRG:2FCA 20 5D 85 60 A5 31 6A 90 01 60 A5 BA D0 11 E6 BA - .byte $A9, $01, $8D, $E3, $00, $A9, $05, $8D, $E2, $00, $A9, $04, $4C, $04, $80, $C9 ; CPU:$AFDA PRG:2FDA A9 01 8D E3 00 A9 05 8D E2 00 A9 04 4C 04 80 C9 - .byte $01, $D0, $4A, $A9, $05, $85, $11, $A9, $08, $85, $12, $20, $5D, $85, $A5, $9C ; CPU:$AFEA PRG:2FEA 01 D0 4A A9 05 85 11 A9 08 85 12 20 5D 85 A5 9C - .byte $0A, $AA, $BD, $87, $F8, $18, $6D, $8F, $03, $8D, $90, $03, $BD, $88, $F8, $18 ; CPU:$AFFA PRG:2FFA 0A AA BD 87 F8 18 6D 8F 03 8D 90 03 BD 88 F8 18 - .byte $6D, $9F, $03, $8D, $A0, $03, $A5, $31, $6A, $29, $03, $85, $20, $AD, $AF, $03 ; CPU:$B00A PRG:300A 6D 9F 03 8D A0 03 A5 31 6A 29 03 85 20 AD AF 03 - .byte $29, $FC, $05, $20, $8D, $AF, $03, $8D, $B0, $03, $E6, $9C, $A5, $9C, $C9, $18 ; CPU:$B01A PRG:301A 29 FC 05 20 8D AF 03 8D B0 03 E6 9C A5 9C C9 18 - .byte $D0, $0A, $A9, $00, $85, $9C, $C6, $B3, $D0, $02, $E6, $BA, $60, $C9, $02, $D0 ; CPU:$B02A PRG:302A D0 0A A9 00 85 9C C6 B3 D0 02 E6 BA 60 C9 02 D0 - .byte $6F, $A5, $AC, $8D, $5B, $06, $AA, $20, $52, $85, $A5, $3D, $29, $03, $85, $BD ; CPU:$B03A PRG:303A 6F A5 AC 8D 5B 06 AA 20 52 85 A5 3D 29 03 85 BD - .byte $E6, $BD, $A5, $BD, $9D, $EA, $05, $A0, $01, $84, $25, $AD, $5B, $06, $29, $10 ; CPU:$B04A PRG:304A E6 BD A5 BD 9D EA 05 A0 01 84 25 AD 5B 06 29 10 - .byte $F0, $06, $98, $18, $69, $06, $85, $25, $A9, $01, $85, $21, $A9, $06, $85, $1F ; CPU:$B05A PRG:305A F0 06 98 18 69 06 85 25 A9 01 85 21 A9 06 85 1F - .byte $A4, $25, $B9, $7A, $F8, $E6, $25, $18, $6D, $5B, $06, $AA, $29, $0F, $C9, $0D ; CPU:$B06A PRG:306A A4 25 B9 7A F8 E6 25 18 6D 5B 06 AA 29 0F C9 0D - .byte $B0, $20, $8A, $29, $F0, $C9, $70, $B0, $19, $BD, $EA, $05, $29, $07, $D0, $05 ; CPU:$B07A PRG:307A B0 20 8A 29 F0 C9 70 B0 19 BD EA 05 29 07 D0 05 - .byte $9D, $EA, $05, $F0, $05, $A5, $BD, $9D, $EA, $05, $8A, $A6, $21, $9D, $5B, $06 ; CPU:$B08A PRG:308A 9D EA 05 F0 05 A5 BD 9D EA 05 8A A6 21 9D 5B 06 - .byte $E6, $21, $C6, $1F, $D0, $CA, $A6, $21, $A9, $FF, $9D, $5B, $06, $E6, $BA, $60 ; CPU:$B09A PRG:309A E6 21 C6 1F D0 CA A6 21 A9 FF 9D 5B 06 E6 BA 60 - .byte $C9, $03, $D0, $47, $A0, $00, $84, $22, $A4, $22, $B9, $5B, $06, $30, $22, $85 ; CPU:$B0AA PRG:30AA C9 03 D0 47 A0 00 84 22 A4 22 B9 5B 06 30 22 85 - .byte $21, $20, $BF, $84, $A6, $21, $BD, $EA, $05, $85, $1B, $0A, $AA, $BD, $9E, $F2 ; CPU:$B0BA PRG:30BA 21 20 BF 84 A6 21 BD EA 05 85 1B 0A AA BD 9E F2 - .byte $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3, $84, $E6, $22, $10 ; CPU:$B0CA PRG:30CA 85 17 BD 9F F2 85 18 20 8A 85 20 E3 84 E6 22 10 - .byte $D7, $A6, $36, $A9, $00, $9D, $00, $03, $A9, $00, $85, $11, $A9, $07, $85, $12 ; CPU:$B0DA PRG:30DA D7 A6 36 A9 00 9D 00 03 A9 00 85 11 A9 07 85 12 - .byte $20, $5D, $85, $E6, $12, $20, $5D, $85, $E6, $BA, $60, $E6, $BA, $A5, $BA, $C9 ; CPU:$B0EA PRG:30EA 20 5D 85 E6 12 20 5D 85 E6 BA 60 E6 BA A5 BA C9 - .byte $0F, $90, $0A, $A9, $00, $85, $BA, $85, $BF, $85, $BD, $E6, $B9, $60, $A5, $BA ; CPU:$B0FA PRG:30FA 0F 90 0A A9 00 85 BA 85 BF 85 BD E6 B9 60 A5 BA - .byte $20, $73, $81, $21, $B1, $F2, $B5, $29, $B2, $21, $B4, $51, $B1, $0C, $B7, $E3 ; CPU:$B10A PRG:310A 20 73 81 21 B1 F2 B5 29 B2 21 B4 51 B1 0C B7 E3 - .byte $B1, $E2, $B4, $4C, $B5, $7D, $B1, $A9, $00, $85, $B5, $A9, $04, $85, $1E, $A5 ; CPU:$B11A PRG:311A B1 E2 B4 4C B5 7D B1 A9 00 85 B5 A9 04 85 1E A5 - .byte $1E, $85, $20, $20, $37, $B3, $C6, $1E, $D0, $F5, $AD, $DF, $06, $D0, $0D, $85 ; CPU:$B12A PRG:312A 1E 85 20 20 37 B3 C6 1E D0 F5 AD DF 06 D0 0D 85 - .byte $BA, $E6, $B9, $A5, $C1, $C9, $03, $90, $02, $E6, $C1, $60, $A9, $00, $85, $9C ; CPU:$B13A PRG:313A BA E6 B9 A5 C1 C9 03 90 02 E6 C1 60 A9 00 85 9C - .byte $85, $B3, $85, $B6, $E6, $BA, $60, $E6, $BA, $20, $A9, $B1, $20, $C3, $B1, $A6 ; CPU:$B14A PRG:314A 85 B3 85 B6 E6 BA 60 E6 BA 20 A9 B1 20 C3 B1 A6 - .byte $BE, $30, $17, $BD, $EA, $05, $29, $40, $D0, $10, $A9, $00, $8D, $59, $03, $A5 ; CPU:$B15A PRG:315A BE 30 17 BD EA 05 29 40 D0 10 A9 00 8D 59 03 A5 - .byte $71, $C9, $02, $F0, $04, $A9, $FF, $85, $BE, $60, $A5, $B5, $D0, $02, $E6, $BA ; CPU:$B16A PRG:316A 71 C9 02 F0 04 A9 FF 85 BE 60 A5 B5 D0 02 E6 BA - .byte $E6, $BA, $60, $A5, $31, $6A, $90, $01, $60, $A6, $37, $A9, $52, $9D, $38, $03 ; CPU:$B17A PRG:317A E6 BA 60 A5 31 6A 90 01 60 A6 37 A9 52 9D 38 03 - .byte $A9, $23, $9D, $39, $03, $A9, $E0, $9D, $3A, $03, $A9, $F1, $9D, $3B, $03, $A9 ; CPU:$B18A PRG:318A A9 23 9D 39 03 A9 E0 9D 3A 03 A9 F1 9D 3B 03 A9 - .byte $00, $9D, $3C, $03, $8A, $18, $69, $04, $85, $37, $A9, $00, $85, $BA, $60, $A2 ; CPU:$B19A PRG:319A 00 9D 3C 03 8A 18 69 04 85 37 A9 00 85 BA 60 A2 - .byte $00, $A0, $00, $86, $24, $A6, $24, $BD, $A1, $06, $C9, $FF, $D0, $01, $60, $AA ; CPU:$B1AA PRG:31AA 00 A0 00 86 24 A6 24 BD A1 06 C9 FF D0 01 60 AA - .byte $98, $9D, $EA, $05, $E6, $24, $D0, $ED, $60, $A0, $00, $A2, $6E, $CA, $BD, $EA ; CPU:$B1BA PRG:31BA 98 9D EA 05 E6 24 D0 ED 60 A0 00 A2 6E CA BD EA - .byte $05, $F0, $07, $10, $0B, $8A, $99, $A1, $06, $C8, $CA, $10, $F1, $84, $B5, $60 ; CPU:$B1CA PRG:31CA 05 F0 07 10 0B 8A 99 A1 06 C8 CA 10 F1 84 B5 60 - .byte $8A, $29, $F0, $AA, $D0, $E7, $84, $B5, $60, $A5, $31, $6A, $90, $01, $60, $A9 ; CPU:$B1DA PRG:31DA 8A 29 F0 AA D0 E7 84 B5 60 A5 31 6A 90 01 60 A9 - .byte $A8, $85, $17, $A9, $F2, $85, $18, $A9, $0C, $85, $1F, $A0, $00, $C6, $B5, $10 ; CPU:$B1EA PRG:31EA A8 85 17 A9 F2 85 18 A9 0C 85 1F A0 00 C6 B5 10 - .byte $08, $E6, $BA, $A9, $00, $85, $B3, $F0, $1E, $A6, $B5, $BD, $A1, $06, $85, $24 ; CPU:$B1FA PRG:31FA 08 E6 BA A9 00 85 B3 F0 1E A6 B5 BD A1 06 85 24 - .byte $20, $BF, $84, $A5, $1A, $C9, $24, $F0, $0A, $A6, $24, $A9, $00, $9D, $EA, $05 ; CPU:$B20A PRG:320A 20 BF 84 A5 1A C9 24 F0 0A A6 24 A9 00 9D EA 05 - .byte $20, $8A, $85, $C6, $1F, $10, $D6, $A6, $36, $A9, $00, $9D, $00, $03, $60, $A9 ; CPU:$B21A PRG:321A 20 8A 85 C6 1F 10 D6 A6 36 A9 00 9D 00 03 60 A9 - .byte $01, $8D, $E3, $00, $A9, $01, $8D, $E2, $00, $A9, $04, $20, $04, $80, $E6, $BA ; CPU:$B22A PRG:322A 01 8D E3 00 A9 01 8D E2 00 A9 04 20 04 80 E6 BA - .byte $60, $A9, $FF, $85, $BE, $A5, $96, $F0, $07, $A9, $00, $85, $6C, $85, $6A, $60 ; CPU:$B23A PRG:323A 60 A9 FF 85 BE A5 96 F0 07 A9 00 85 6C 85 6A 60 - .byte $20, $52, $85, $29, $06, $85, $20, $A5, $5D, $0A, $0A, $0A, $18, $65, $20, $AA ; CPU:$B24A PRG:324A 20 52 85 29 06 85 20 A5 5D 0A 0A 0A 18 65 20 AA - .byte $BD, $BD, $F8, $85, $AB, $BD, $BE, $F8, $85, $AC, $A9, $00, $85, $B3, $85, $B5 ; CPU:$B25A PRG:325A BD BD F8 85 AB BD BE F8 85 AC A9 00 85 B3 85 B5 - .byte $E6, $6C, $A9, $01, $85, $34, $A2, $00, $8A, $9D, $F9, $06, $E8, $E0, $05, $90 ; CPU:$B26A PRG:326A E6 6C A9 01 85 34 A2 00 8A 9D F9 06 E8 E0 05 90 - .byte $F7, $60, $A5, $31, $6A, $90, $01, $60, $A6, $B3, $A4, $B5, $B1, $AB, $F0, $33 ; CPU:$B27A PRG:327A F7 60 A5 31 6A 90 01 60 A6 B3 A4 B5 B1 AB F0 33 - .byte $9D, $EA, $05, $85, $1B, $8A, $20, $BF, $84, $A5, $1B, $10, $0E, $A9, $0D, $85 ; CPU:$B28A PRG:328A 9D EA 05 85 1B 8A 20 BF 84 A5 1B 10 0E A9 0D 85 - .byte $17, $A9, $F3, $85, $18, $A9, $01, $85, $1B, $D0, $0C, $0A, $AA, $BD, $9E, $F2 ; CPU:$B29A PRG:329A 17 A9 F3 85 18 A9 01 85 1B D0 0C 0A AA BD 9E F2 - .byte $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3, $84, $E6, $B5, $E6 ; CPU:$B2AA PRG:32AA 85 17 BD 9F F2 85 18 20 8A 85 20 E3 84 E6 B5 E6 - .byte $B3, $10, $C5, $A6, $36, $A9, $00, $9D, $00, $03, $E6, $B5, $A5, $B3, $29, $F0 ; CPU:$B2BA PRG:32BA B3 10 C5 A6 36 A9 00 9D 00 03 E6 B5 A5 B3 29 F0 - .byte $18, $69, $10, $85, $B3, $C9, $70, $90, $02, $E6, $6C, $60, $A5, $31, $6A, $90 ; CPU:$B2CA PRG:32CA 18 69 10 85 B3 C9 70 90 02 E6 6C 60 A5 31 6A 90 - .byte $01, $60, $A5, $5D, $85, $B7, $A6, $5C, $86, $B8, $BD, $5A, $D4, $85, $1B, $20 ; CPU:$B2DA PRG:32DA 01 60 A5 5D 85 B7 A6 5C 86 B8 BD 5A D4 85 1B 20 - .byte $78, $B7, $A6, $5D, $F0, $18, $86, $21, $20, $9B, $B7, $20, $8A, $85, $20, $E3 ; CPU:$B2EA PRG:32EA 78 B7 A6 5D F0 18 86 21 20 9B B7 20 8A 85 20 E3 - .byte $84, $C6, $21, $A6, $21, $D0, $F1, $A6, $36, $A9, $00, $9D, $00, $03, $A5, $5D ; CPU:$B2FA PRG:32FA 84 C6 21 A6 21 D0 F1 A6 36 A9 00 9D 00 03 A5 5D - .byte $18, $69, $07, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $A9, $B8, $8D, $89 ; CPU:$B30A PRG:330A 18 69 07 85 11 A9 01 85 12 20 5D 85 A9 B8 8D 89 - .byte $03, $A9, $1C, $8D, $99, $03, $A2, $30, $BD, $EA, $05, $09, $40, $9D, $EA, $05 ; CPU:$B31A PRG:331A 03 A9 1C 8D 99 03 A2 30 BD EA 05 09 40 9D EA 05 - .byte $86, $BE, $A9, $00, $85, $6C, $85, $6A, $85, $B5, $E6, $B7, $60, $A0, $00, $A2 ; CPU:$B32A PRG:332A 86 BE A9 00 85 6C 85 6A 85 B5 E6 B7 60 A0 00 A2 - .byte $00, $BD, $EA, $05, $29, $87, $C5, $20, $F0, $04, $A9, $00, $F0, $07, $C8, $8A ; CPU:$B33A PRG:333A 00 BD EA 05 29 87 C5 20 F0 04 A9 00 F0 07 C8 8A - .byte $99, $5B, $06, $A5, $20, $9D, $71, $04, $E8, $E0, $70, $90, $E4, $C0, $00, $D0 ; CPU:$B34A PRG:334A 99 5B 06 A5 20 9D 71 04 E8 E0 70 90 E4 C0 00 D0 - .byte $01, $60, $BE, $5B, $06, $BD, $71, $04, $F0, $18, $84, $25, $A0, $00, $84, $21 ; CPU:$B35A PRG:335A 01 60 BE 5B 06 BD 71 04 F0 18 84 25 A0 00 84 21 - .byte $98, $9D, $71, $04, $8A, $99, $79, $06, $86, $20, $C8, $84, $B6, $20, $80, $B3 ; CPU:$B36A PRG:336A 98 9D 71 04 8A 99 79 06 86 20 C8 84 B6 20 80 B3 - .byte $A4, $25, $88, $D0, $DD, $60, $A0, $06, $84, $22, $A2, $00, $86, $24, $A4, $22 ; CPU:$B37A PRG:337A A4 25 88 D0 DD 60 A0 06 84 22 A2 00 86 24 A4 22 - .byte $A5, $20, $29, $10, $F0, $05, $98, $18, $69, $06, $A8, $B9, $7A, $F8, $18, $65 ; CPU:$B38A PRG:338A A5 20 29 10 F0 05 98 18 69 06 A8 B9 7A F8 18 65 - .byte $20, $AA, $29, $0F, $C9, $0E, $B0, $16, $8A, $29, $F0, $C9, $70, $B0, $0F, $BD ; CPU:$B39A PRG:339A 20 AA 29 0F C9 0E B0 16 8A 29 F0 C9 70 B0 0F BD - .byte $71, $04, $F0, $0A, $86, $23, $E6, $24, $A6, $24, $E0, $02, $B0, $06, $C6, $22 ; CPU:$B3AA PRG:33AA 71 04 F0 0A 86 23 E6 24 A6 24 E0 02 B0 06 C6 22 - .byte $D0, $CC, $F0, $09, $E6, $21, $A6, $21, $A5, $20, $9D, $92, $06, $A6, $24, $F0 ; CPU:$B3BA PRG:33BA D0 CC F0 09 E6 21 A6 21 A5 20 9D 92 06 A6 24 F0 - .byte $14, $A6, $23, $A9, $00, $9D, $71, $04, $A4, $B6, $8A, $99, $79, $06, $86, $20 ; CPU:$B3CA PRG:33CA 14 A6 23 A9 00 9D 71 04 A4 B6 8A 99 79 06 86 20 - .byte $E6, $B6, $4C, $80, $B3, $A6, $21, $F0, $0A, $BD, $92, $06, $C6, $21, $85, $20 ; CPU:$B3DA PRG:33DA E6 B6 4C 80 B3 A6 21 F0 0A BD 92 06 C6 21 85 20 - .byte $4C, $80, $B3, $A4, $B6, $C0, $04, $90, $29, $98, $18, $6D, $DE, $06, $8D, $DE ; CPU:$B3EA PRG:33EA 4C 80 B3 A4 B6 C0 04 90 29 98 18 6D DE 06 8D DE - .byte $06, $98, $38, $E9, $03, $0A, $0A, $18, $6D, $DF, $06, $8D, $DF, $06, $88, $A6 ; CPU:$B3FA PRG:33FA 06 98 38 E9 03 0A 0A 18 6D DF 06 8D DF 06 88 A6 - .byte $B5, $B9, $79, $06, $9D, $A1, $06, $E8, $88, $10, $F6, $A9, $FF, $9D, $A1, $06 ; CPU:$B40A PRG:340A B5 B9 79 06 9D A1 06 E8 88 10 F6 A9 FF 9D A1 06 - .byte $86, $B5, $A9, $00, $85, $B6, $60, $A5, $31, $6A, $90, $01, $60, $E6, $B3, $A5 ; CPU:$B41A PRG:341A 86 B5 A9 00 85 B6 60 A5 31 6A 90 01 60 E6 B3 A5 - .byte $B3, $C9, $04, $90, $11, $A9, $00, $85, $B3, $85, $B6, $E6, $9C, $A5, $9C, $C9 ; CPU:$B42A PRG:342A B3 C9 04 90 11 A9 00 85 B3 85 B6 E6 9C A5 9C C9 - .byte $08, $90, $03, $E6, $BA, $60, $A4, $B6, $B9, $A1, $06, $C9, $FF, $D0, $01, $60 ; CPU:$B43A PRG:343A 08 90 03 E6 BA 60 A4 B6 B9 A1 06 C9 FF D0 01 60 - .byte $A2, $00, $9D, $79, $06, $E8, $C8, $B9, $A1, $06, $C9, $FF, $F0, $04, $E0, $0D ; CPU:$B44A PRG:344A A2 00 9D 79 06 E8 C8 B9 A1 06 C9 FF F0 04 E0 0D - .byte $90, $F0, $84, $B6, $86, $24, $86, $21, $A2, $00, $86, $36, $A6, $36, $BD, $79 ; CPU:$B45A PRG:345A 90 F0 84 B6 86 24 86 21 A2 00 86 36 A6 36 BD 79 - .byte $06, $20, $BF, $84, $A5, $36, $0A, $0A, $A8, $A5, $19, $99, $00, $03, $A5, $1A ; CPU:$B46A PRG:346A 06 20 BF 84 A5 36 0A 0A A8 A5 19 99 00 03 A5 1A - .byte $99, $01, $03, $E6, $36, $C6, $24, $D0, $E3, $A9, $00, $99, $04, $03, $A6, $9C ; CPU:$B47A PRG:347A 99 01 03 E6 36 C6 24 D0 E3 A9 00 99 04 03 A6 9C - .byte $BD, $A8, $D1, $C9, $03, $90, $04, $20, $BB, $B4, $60, $20, $99, $B4, $60, $0A ; CPU:$B48A PRG:348A BD A8 D1 C9 03 90 04 20 BB B4 60 20 99 B4 60 0A - .byte $AA, $BD, $FB, $F2, $85, $19, $BD, $FC, $F2, $85, $1A, $A2, $00, $8A, $0A, $0A ; CPU:$B49A PRG:349A AA BD FB F2 85 19 BD FC F2 85 1A A2 00 8A 0A 0A - .byte $A8, $A5, $19, $99, $02, $03, $A5, $1A, $99, $03, $03, $E8, $C6, $21, $10, $ED ; CPU:$B4AA PRG:34AA A8 A5 19 99 02 03 A5 1A 99 03 03 E8 C6 21 10 ED - .byte $60, $A2, $00, $BD, $79, $06, $86, $24, $A8, $B9, $EA, $05, $29, $07, $0A, $A8 ; CPU:$B4BA PRG:34BA 60 A2 00 BD 79 06 86 24 A8 B9 EA 05 29 07 0A A8 - .byte $8A, $0A, $0A, $AA, $B9, $9E, $F2, $9D, $02, $03, $B9, $9F, $F2, $9D, $03, $03 ; CPU:$B4CA PRG:34CA 8A 0A 0A AA B9 9E F2 9D 02 03 B9 9F F2 9D 03 03 - .byte $A6, $24, $E8, $C6, $21, $10, $DC, $60, $A9, $00, $85, $22, $A9, $FF, $85, $24 ; CPU:$B4DA PRG:34DA A6 24 E8 C6 21 10 DC 60 A9 00 85 22 A9 FF 85 24 - .byte $A5, $22, $0A, $0A, $0A, $0A, $AA, $A9, $0E, $85, $1F, $BD, $EA, $05, $D0, $30 ; CPU:$B4EA PRG:34EA A5 22 0A 0A 0A 0A AA A9 0E 85 1F BD EA 05 D0 30 - .byte $86, $B5, $8A, $A4, $22, $99, $79, $06, $E8, $BD, $EA, $05, $F0, $10, $A4, $B5 ; CPU:$B4FA PRG:34FA 86 B5 8A A4 22 99 79 06 E8 BD EA 05 F0 10 A4 B5 - .byte $99, $EA, $05, $E6, $B5, $A9, $00, $9D, $EA, $05, $86, $24, $E6, $24, $E8, $C6 ; CPU:$B50A PRG:350A 99 EA 05 E6 B5 A9 00 9D EA 05 86 24 E6 24 E8 C6 - .byte $1F, $D0, $E6, $A4, $22, $A5, $24, $99, $5B, $06, $A9, $FF, $85, $24, $30, $0C ; CPU:$B51A PRG:351A 1F D0 E6 A4 22 A5 24 99 5B 06 A9 FF 85 24 30 0C - .byte $E8, $C6, $1F, $D0, $C6, $A4, $22, $A9, $FF, $99, $5B, $06, $E6, $22, $A5, $22 ; CPU:$B52A PRG:352A E8 C6 1F D0 C6 A4 22 A9 FF 99 5B 06 E6 22 A5 22 - .byte $C9, $07, $90, $AC, $A9, $00, $85, $B5, $E6, $BA, $A5, $BE, $30, $03, $20, $50 ; CPU:$B53A PRG:353A C9 07 90 AC A9 00 85 B5 E6 BA A5 BE 30 03 20 50 - .byte $B7, $60, $A5, $31, $6A, $90, $01, $60, $A9, $00, $85, $36, $A9, $08, $85, $1F ; CPU:$B54A PRG:354A B7 60 A5 31 6A 90 01 60 A9 00 85 36 A9 08 85 1F - .byte $A4, $B5, $B9, $5B, $06, $10, $12, $E6, $B5, $A4, $B5, $C0, $07, $90, $F3, $A9 ; CPU:$B55A PRG:355A A4 B5 B9 5B 06 10 12 E6 B5 A4 B5 C0 07 90 F3 A9 - .byte $00, $A6, $36, $9D, $00, $03, $E6, $BA, $60, $85, $24, $B9, $79, $06, $85, $25 ; CPU:$B56A PRG:356A 00 A6 36 9D 00 03 E6 BA 60 85 24 B9 79 06 85 25 - .byte $20, $BF, $84, $A6, $36, $A5, $19, $9D, $00, $03, $E8, $A5, $1A, $9D, $00, $03 ; CPU:$B57A PRG:357A 20 BF 84 A6 36 A5 19 9D 00 03 E8 A5 1A 9D 00 03 - .byte $E8, $A5, $25, $29, $0F, $C9, $0B, $B0, $33, $A4, $25, $B9, $EA, $05, $29, $87 ; CPU:$B58A PRG:358A E8 A5 25 29 0F C9 0B B0 33 A4 25 B9 EA 05 29 87 - .byte $85, $1B, $30, $13, $0A, $A8, $B9, $9E, $F2, $9D, $00, $03, $E8, $B9, $9F, $F2 ; CPU:$B59A PRG:359A 85 1B 30 13 0A A8 B9 9E F2 9D 00 03 E8 B9 9F F2 - .byte $9D, $00, $03, $A9, $00, $F0, $0B, $A9, $0D, $9D, $00, $03, $E8, $A9, $F3, $9D ; CPU:$B5AA PRG:35AA 9D 00 03 A9 00 F0 0B A9 0D 9D 00 03 E8 A9 F3 9D - .byte $00, $03, $E8, $86, $36, $A5, $1B, $F0, $03, $20, $E3, $84, $C6, $1F, $F0, $17 ; CPU:$B5BA PRG:35BA 00 03 E8 86 36 A5 1B F0 03 20 E3 84 C6 1F F0 17 - .byte $E6, $25, $A5, $25, $C5, $24, $B0, $8F, $A5, $19, $18, $69, $40, $85, $19, $90 ; CPU:$B5CA PRG:35CA E6 25 A5 25 C5 24 B0 8F A5 19 18 69 40 85 19 90 - .byte $02, $E6, $1A, $A9, $00, $F0, $9C, $E6, $25, $A4, $B5, $A5, $25, $99, $79, $06 ; CPU:$B5DA PRG:35DA 02 E6 1A A9 00 F0 9C E6 25 A4 B5 A5 25 99 79 06 - .byte $A6, $36, $A9, $00, $9D, $00, $03, $60, $A5, $31, $6A, $90, $01, $60, $A9, $00 ; CPU:$B5EA PRG:35EA A6 36 A9 00 9D 00 03 60 A5 31 6A 90 01 60 A9 00 - .byte $85, $20, $AD, $DF, $06, $38, $E9, $0A, $90, $0A, $8D, $DF, $06, $E6, $20, $AD ; CPU:$B5FA PRG:35FA 85 20 AD DF 06 38 E9 0A 90 0A 8D DF 06 E6 20 AD - .byte $DF, $06, $10, $F1, $AD, $DF, $06, $8D, $E3, $06, $A5, $20, $8D, $E2, $06, $A2 ; CPU:$B60A PRG:360A DF 06 10 F1 AD DF 06 8D E3 06 A5 20 8D E2 06 A2 - .byte $02, $BD, $E1, $06, $C9, $0A, $90, $0B, $FE, $E0, $06, $18, $69, $06, $29, $0F ; CPU:$B61A PRG:361A 02 BD E1 06 C9 0A 90 0B FE E0 06 18 69 06 29 0F - .byte $9D, $E1, $06, $CA, $D0, $EB, $AD, $DE, $06, $AA, $18, $65, $BB, $85, $BB, $8A ; CPU:$B62A PRG:362A 9D E1 06 CA D0 EB AD DE 06 AA 18 65 BB 85 BB 8A - .byte $18, $65, $BC, $85, $BC, $8A, $29, $0F, $18, $6D, $B9, $05, $8D, $B9, $05, $8A ; CPU:$B63A PRG:363A 18 65 BC 85 BC 8A 29 0F 18 6D B9 05 8D B9 05 8A - .byte $6A, $6A, $6A, $6A, $29, $0F, $18, $6D, $B8, $05, $8D, $B8, $05, $A2, $03, $BD ; CPU:$B64A PRG:364A 6A 6A 6A 6A 29 0F 18 6D B8 05 8D B8 05 A2 03 BD - .byte $B6, $05, $C9, $0A, $90, $0B, $FE, $B5, $05, $18, $69, $06, $29, $0F, $9D, $B6 ; CPU:$B65A PRG:365A B6 05 C9 0A 90 0B FE B5 05 18 69 06 29 0F 9D B6 - .byte $05, $CA, $D0, $EB, $A2, $02, $BD, $E1, $06, $18, $7D, $BC, $05, $9D, $BC, $05 ; CPU:$B66A PRG:366A 05 CA D0 EB A2 02 BD E1 06 18 7D BC 05 9D BC 05 - .byte $CA, $10, $F3, $A2, $04, $BD, $BA, $05, $C9, $0A, $90, $0B, $FE, $B9, $05, $18 ; CPU:$B67A PRG:367A CA 10 F3 A2 04 BD BA 05 C9 0A 90 0B FE B9 05 18 - .byte $69, $06, $29, $0F, $9D, $BA, $05, $CA, $D0, $EB, $A9, $04, $8D, $E5, $06, $8D ; CPU:$B68A PRG:368A 69 06 29 0F 9D BA 05 CA D0 EB A9 04 8D E5 06 8D - .byte $EB, $06, $A9, $01, $8D, $E6, $06, $8D, $EC, $06, $A2, $00, $BD, $B6, $05, $A8 ; CPU:$B69A PRG:369A EB 06 A9 01 8D E6 06 8D EC 06 A2 00 BD B6 05 A8 - .byte $B9, $D6, $F1, $9D, $E7, $06, $BD, $E1, $06, $A8, $B9, $D6, $F1, $9D, $ED, $06 ; CPU:$B6AA PRG:36AA B9 D6 F1 9D E7 06 BD E1 06 A8 B9 D6 F1 9D ED 06 - .byte $E8, $E0, $04, $90, $E7, $A9, $06, $8D, $F1, $06, $A9, $01, $8D, $F2, $06, $A2 ; CPU:$B6BA PRG:36BA E8 E0 04 90 E7 A9 06 8D F1 06 A9 01 8D F2 06 A2 - .byte $00, $BD, $BA, $05, $A8, $B9, $D6, $F1, $9D, $F3, $06, $E8, $E0, $06, $90, $F1 ; CPU:$B6CA PRG:36CA 00 BD BA 05 A8 B9 D6 F1 9D F3 06 E8 E0 06 90 F1 - .byte $A6, $37, $A0, $00, $B9, $00, $B7, $9D, $38, $03, $E8, $C8, $C0, $0C, $90, $F4 ; CPU:$B6DA PRG:36DA A6 37 A0 00 B9 00 B7 9D 38 03 E8 C8 C0 0C 90 F4 - .byte $86, $37, $A9, $00, $9D, $38, $03, $8D, $DE, $06, $8D, $DD, $06, $8D, $DF, $06 ; CPU:$B6EA PRG:36EA 86 37 A9 00 9D 38 03 8D DE 06 8D DD 06 8D DF 06 - .byte $8D, $E0, $06, $E6, $BA, $60, $32, $23, $E5, $06, $52, $23, $EB, $06, $3A, $23 ; CPU:$B6FA PRG:36FA 8D E0 06 E6 BA 60 32 23 E5 06 52 23 EB 06 3A 23 - .byte $F1, $06, $A5, $31, $6A, $90, $01, $60, $A5, $71, $C9, $02, $F0, $09, $A5, $B7 ; CPU:$B70A PRG:370A F1 06 A5 31 6A 90 01 60 A5 71 C9 02 F0 09 A5 B7 - .byte $C9, $05, $D0, $03, $20, $78, $B7, $A5, $B8, $29, $03, $AA, $BD, $5A, $D4, $85 ; CPU:$B71A PRG:371A C9 05 D0 03 20 78 B7 A5 B8 29 03 AA BD 5A D4 85 - .byte $1B, $A6, $B7, $20, $9B, $B7, $20, $8A, $85, $A9, $00, $9D, $00, $03, $20, $E3 ; CPU:$B72A PRG:372A 1B A6 B7 20 9B B7 20 8A 85 A9 00 9D 00 03 20 E3 - .byte $84, $A5, $71, $C9, $02, $F0, $06, $C6, $B7, $D0, $02, $E6, $B8, $A5, $B5, $D0 ; CPU:$B73A PRG:373A 84 A5 71 C9 02 F0 06 C6 B7 D0 02 E6 B8 A5 B5 D0 - .byte $02, $E6, $BA, $E6, $BA, $60, $A5, $BE, $AA, $29, $0F, $A8, $BD, $EA, $05, $29 ; CPU:$B74A PRG:374A 02 E6 BA E6 BA 60 A5 BE AA 29 0F A8 BD EA 05 29 - .byte $40, $D0, $05, $CA, $88, $10, $F5, $60, $8A, $C5, $BE, $F0, $10, $38, $E5, $BE ; CPU:$B75A PRG:375A 40 D0 05 CA 88 10 F5 60 8A C5 BE F0 10 38 E5 BE - .byte $0A, $0A, $0A, $0A, $18, $6D, $99, $03, $8D, $99, $03, $86, $BE, $60, $A0, $05 ; CPU:$B76A PRG:376A 0A 0A 0A 0A 18 6D 99 03 8D 99 03 86 BE 60 A0 05 - .byte $A9, $23, $85, $1A, $A9, $56, $85, $19, $A9, $A8, $85, $17, $A9, $F2, $85, $18 ; CPU:$B77A PRG:377A A9 23 85 1A A9 56 85 19 A9 A8 85 17 A9 F2 85 18 - .byte $20, $8A, $85, $E6, $19, $E6, $19, $88, $D0, $F6, $98, $9D, $00, $03, $86, $36 ; CPU:$B78A PRG:378A 20 8A 85 E6 19 E6 19 88 D0 F6 98 9D 00 03 86 36 - .byte $60, $A9, $23, $85, $1A, $A9, $56, $85, $19, $BD, $F8, $06, $0A, $A8, $18, $65 ; CPU:$B79A PRG:379A 60 A9 23 85 1A A9 56 85 19 BD F8 06 0A A8 18 65 - .byte $19, $85, $19, $98, $0A, $A8, $A6, $B8, $E8, $8A, $29, $02, $D0, $05, $98, $18 ; CPU:$B7AA PRG:37AA 19 85 19 98 0A A8 A6 B8 E8 8A 29 02 D0 05 98 18 - .byte $69, $14, $A8, $A9, $D1, $85, $17, $A9, $F2, $85, $18, $98, $18, $65, $17, $85 ; CPU:$B7BA PRG:37BA 69 14 A8 A9 D1 85 17 A9 F2 85 18 98 18 65 17 85 - .byte $17, $90, $02, $E6, $18, $60, $A5, $C2, $D0, $11, $A6, $B8, $CA, $30, $0C, $A5 ; CPU:$B7CA PRG:37CA 17 90 02 E6 18 60 A5 C2 D0 11 A6 B8 CA 30 0C A5 - .byte $27, $A8, $C9, $84, $F0, $06, $98, $C9, $44, $F0, $01, $60, $A5, $BD, $F0, $09 ; CPU:$B7DA PRG:37DA 27 A8 C9 84 F0 06 98 C9 44 F0 01 60 A5 BD F0 09 - .byte $AD, $59, $03, $F0, $14, $A9, $00, $85, $BD, $A6, $BE, $30, $0C, $BD, $EA, $05 ; CPU:$B7EA PRG:37EA AD 59 03 F0 14 A9 00 85 BD A6 BE 30 0C BD EA 05 - .byte $29, $BF, $9D, $EA, $05, $A9, $FF, $85, $BE, $A9, $01, $85, $C2, $A9, $00, $85 ; CPU:$B7FA PRG:37FA 29 BF 9D EA 05 A9 FF 85 BE A9 01 85 C2 A9 00 85 - .byte $C1, $A9, $06, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $A9, $B0, $8D, $89 ; CPU:$B80A PRG:380A C1 A9 06 85 11 A9 01 85 12 20 5D 85 A9 B0 8D 89 - .byte $03, $A9, $98, $8D, $99, $03, $60, $A5, $31, $6A, $90, $01, $60, $A5, $C1, $20 ; CPU:$B81A PRG:381A 03 A9 98 8D 99 03 60 A5 31 6A 90 01 60 A5 C1 20 - .byte $73, $81, $3A, $B8, $5C, $B8, $F5, $B8, $08, $B1, $59, $B9, $08, $B1, $BA, $B9 ; CPU:$B82A PRG:382A 73 81 3A B8 5C B8 F5 B8 08 B1 59 B9 08 B1 BA B9 - .byte $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A9, $06, $8D, $DE, $00, $A9 ; CPU:$B83A PRG:383A A9 03 20 04 80 A9 01 8D DD 00 A9 06 8D DE 00 A9 - .byte $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $E6, $C1, $A9, $F0, $85, $B3, $60 ; CPU:$B84A PRG:384A 05 20 04 80 A9 00 8D DD 00 E6 C1 A9 F0 85 B3 60 - .byte $A1, $06, $C6, $B3, $D0, $0A, $20, $99, $B8, $E6, $C1, $A9, $00, $85, $B3, $60 ; CPU:$B85A PRG:385A A1 06 C6 B3 D0 0A 20 99 B8 E6 C1 A9 00 85 B3 60 - .byte $A5, $31, $29, $04, $F0, $03, $4C, $99, $B8, $A9, $23, $85, $1A, $A9, $C4, $85 ; CPU:$B86A PRG:386A A5 31 29 04 F0 03 4C 99 B8 A9 23 85 1A A9 C4 85 - .byte $19, $A9, $B7, $85, $17, $A9, $F8, $85, $18, $20, $A7, $85, $A5, $19, $18, $69 ; CPU:$B87A PRG:387A 19 A9 B7 85 17 A9 F8 85 18 20 A7 85 A5 19 18 69 - .byte $08, $85, $19, $C9, $F0, $90, $F2, $A6, $37, $A9, $00, $9D, $38, $03, $60, $AD ; CPU:$B88A PRG:388A 08 85 19 C9 F0 90 F2 A6 37 A9 00 9D 38 03 60 AD - .byte $5A, $B8, $85, $17, $AD, $5B, $B8, $85, $18, $A9, $23, $85, $1A, $A9, $C4, $85 ; CPU:$B89A PRG:389A 5A B8 85 17 AD 5B B8 85 18 A9 23 85 1A A9 C4 85 - .byte $19, $A9, $04, $85, $21, $A0, $00, $A9, $04, $99, $A1, $06, $A9, $01, $C8, $99 ; CPU:$B8AA PRG:38AA 19 A9 04 85 21 A0 00 A9 04 99 A1 06 A9 01 C8 99 - .byte $A1, $06, $C8, $A9, $04, $85, $1F, $A6, $21, $BD, $E2, $04, $99, $A1, $06, $C8 ; CPU:$B8BA PRG:38BA A1 06 C8 A9 04 85 1F A6 21 BD E2 04 99 A1 06 C8 - .byte $E8, $C6, $1F, $D0, $F4, $20, $A7, $85, $A5, $17, $18, $69, $06, $85, $17, $90 ; CPU:$B8CA PRG:38CA E8 C6 1F D0 F4 20 A7 85 A5 17 18 69 06 85 17 90 - .byte $02, $E6, $18, $A5, $21, $18, $69, $08, $85, $21, $18, $69, $C0, $85, $19, $C9 ; CPU:$B8DA PRG:38DA 02 E6 18 A5 21 18 69 08 85 21 18 69 C0 85 19 C9 - .byte $F0, $90, $C4, $A6, $37, $A9, $00, $9D, $38, $03, $60, $A5, $B3, $AA, $A8, $BD ; CPU:$B8EA PRG:38EA F0 90 C4 A6 37 A9 00 9D 38 03 60 A5 B3 AA A8 BD - .byte $EA, $05, $30, $04, $99, $EA, $05, $C8, $E8, $BD, $EA, $05, $D0, $F4, $86, $21 ; CPU:$B8FA PRG:38FA EA 05 30 04 99 EA 05 C8 E8 BD EA 05 D0 F4 86 21 - .byte $A9, $00, $99, $EA, $05, $C8, $C4, $21, $90, $F8, $A6, $B3, $86, $24, $A6, $24 ; CPU:$B90A PRG:390A A9 00 99 EA 05 C8 C4 21 90 F8 A6 B3 86 24 A6 24 - .byte $BD, $EA, $05, $29, $07, $85, $1B, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F ; CPU:$B91A PRG:391A BD EA 05 29 07 85 1B 0A AA BD 9E F2 85 17 BD 9F - .byte $F2, $85, $18, $A5, $24, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84, $E6, $24 ; CPU:$B92A PRG:392A F2 85 18 A5 24 20 BF 84 20 8A 85 20 E3 84 E6 24 - .byte $A6, $24, $E4, $21, $90, $DA, $A6, $36, $A9, $00, $9D, $00, $03, $A5, $B3, $18 ; CPU:$B93A PRG:393A A6 24 E4 21 90 DA A6 36 A9 00 9D 00 03 A5 B3 18 - .byte $69, $10, $85, $B3, $C9, $70, $90, $06, $E6, $C1, $A9, $00, $85, $BA, $60, $A9 ; CPU:$B94A PRG:394A 69 10 85 B3 C9 70 90 06 E6 C1 A9 00 85 BA 60 A9 - .byte $08, $85, $1F, $20, $52, $85, $A5, $3D, $2A, $2A, $29, $7F, $C9, $70, $B0, $30 ; CPU:$B95A PRG:395A 08 85 1F 20 52 85 A5 3D 2A 2A 29 7F C9 70 B0 30 - .byte $AA, $BD, $EA, $05, $29, $07, $F0, $28, $86, $21, $20, $52, $85, $A5, $3D, $29 ; CPU:$B96A PRG:396A AA BD EA 05 29 07 F0 28 86 21 20 52 85 A5 3D 29 - .byte $03, $A8, $C8, $84, $1B, $98, $9D, $EA, $05, $0A, $AA, $BD, $9E, $F2, $85, $17 ; CPU:$B97A PRG:397A 03 A8 C8 84 1B 98 9D EA 05 0A AA BD 9E F2 85 17 - .byte $BD, $9F, $F2, $85, $18, $A5, $21, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84 ; CPU:$B98A PRG:398A BD 9F F2 85 18 A5 21 20 BF 84 20 8A 85 20 E3 84 - .byte $C6, $1F, $D0, $BF, $A6, $36, $A9, $00, $9D, $00, $03, $CE, $99, $03, $CE, $99 ; CPU:$B99A PRG:399A C6 1F D0 BF A6 36 A9 00 9D 00 03 CE 99 03 CE 99 - .byte $03, $AD, $99, $03, $C9, $F8, $90, $07, $E6, $C1, $A9, $00, $8D, $59, $03, $60 ; CPU:$B9AA PRG:39AA 03 AD 99 03 C9 F8 90 07 E6 C1 A9 00 8D 59 03 60 - .byte $A9, $00, $85, $C2, $85, $C1, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00 ; CPU:$B9BA PRG:39BA A9 00 85 C2 85 C1 A9 03 20 04 80 A9 01 8D DD 00 - .byte $AD, $73, $00, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00 ; CPU:$B9CA PRG:39CA AD 73 00 8D DE 00 A9 05 20 04 80 A9 00 8D DD 00 - .byte $C6, $B8, $D0, $0B, $A5, $B7, $D0, $07, $20, $78, $B7, $A9, $00, $F0, $2A, $A5 ; CPU:$B9DA PRG:39DA C6 B8 D0 0B A5 B7 D0 07 20 78 B7 A9 00 F0 2A A5 - .byte $B8, $29, $03, $AA, $A5, $B7, $D0, $03, $CA, $C6, $B8, $BD, $5A, $D4, $85, $1B ; CPU:$B9EA PRG:39EA B8 29 03 AA A5 B7 D0 03 CA C6 B8 BD 5A D4 85 1B - .byte $A9, $05, $85, $21, $A5, $B7, $C5, $21, $B0, $0F, $A6, $21, $20, $9B, $B7, $20 ; CPU:$B9FA PRG:39FA A9 05 85 21 A5 B7 C5 21 B0 0F A6 21 20 9B B7 20 - .byte $8A, $85, $20, $E3, $84, $C6, $21, $D0, $EB, $A6, $36, $A9, $00, $9D, $00, $03 ; CPU:$BA0A PRG:3A0A 8A 85 20 E3 84 C6 21 D0 EB A6 36 A9 00 9D 00 03 - .byte $A5, $B7, $D0, $02, $E6, $B8, $60, $A5, $BA, $20, $73, $81, $30, $BA, $4C, $BA ; CPU:$BA1A PRG:3A1A A5 B7 D0 02 E6 B8 60 A5 BA 20 73 81 30 BA 4C BA - .byte $5C, $BA, $8C, $BA, $E6, $BA, $A9, $FF, $85, $BE, $A5, $5C, $0A, $AA, $BD, $5C ; CPU:$BA2A PRG:3A2A 5C BA 8C BA E6 BA A9 FF 85 BE A5 5C 0A AA BD 5C - .byte $F4, $85, $3B, $BD, $5D, $F4, $85, $3C, $A6, $5D, $BD, $75, $F8, $85, $CB, $E6 ; CPU:$BA3A PRG:3A3A F4 85 3B BD 5D F4 85 3C A6 5D BD 75 F8 85 CB E6 - .byte $BA, $60, $A5, $71, $C9, $02, $F0, $07, $A9, $00, $85, $BA, $85, $B9, $60, $E6 ; CPU:$BA4A PRG:3A4A BA 60 A5 71 C9 02 F0 07 A9 00 85 BA 85 B9 60 E6 - .byte $BA, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5D, $0A, $0A, $0A, $18, $65 ; CPU:$BA5A PRG:3A5A BA 60 20 52 85 29 06 85 20 A5 5D 0A 0A 0A 18 65 - .byte $20, $AA, $BD, $BD, $F8, $85, $AB, $BD, $BE, $F8, $85, $AC, $A9, $00, $85, $B3 ; CPU:$BA6A PRG:3A6A 20 AA BD BD F8 85 AB BD BE F8 85 AC A9 00 85 B3 - .byte $85, $B5, $E6, $BA, $A9, $01, $85, $34, $8A, $9D, $F9, $06, $E8, $E0, $05, $90 ; CPU:$BA7A PRG:3A7A 85 B5 E6 BA A9 01 85 34 8A 9D F9 06 E8 E0 05 90 - .byte $F7, $60, $A5, $31, $6A, $90, $01, $60, $A6, $B3, $A4, $B5, $B1, $AB, $F0, $33 ; CPU:$BA8A PRG:3A8A F7 60 A5 31 6A 90 01 60 A6 B3 A4 B5 B1 AB F0 33 - .byte $9D, $EA, $05, $85, $1B, $8A, $20, $BF, $84, $A5, $1B, $10, $0E, $A9, $0D, $85 ; CPU:$BA9A PRG:3A9A 9D EA 05 85 1B 8A 20 BF 84 A5 1B 10 0E A9 0D 85 - .byte $17, $A9, $F3, $85, $18, $A9, $01, $85, $1B, $D0, $0C, $0A, $AA, $BD, $9E, $F2 ; CPU:$BAAA PRG:3AAA 17 A9 F3 85 18 A9 01 85 1B D0 0C 0A AA BD 9E F2 - .byte $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3, $84, $E6, $B5, $E6 ; CPU:$BABA PRG:3ABA 85 17 BD 9F F2 85 18 20 8A 85 20 E3 84 E6 B5 E6 - .byte $B3, $10, $C5, $A6, $36, $A9, $00, $9D, $00, $03, $E6, $B5, $A5, $B3, $29, $F0 ; CPU:$BACA PRG:3ACA B3 10 C5 A6 36 A9 00 9D 00 03 E6 B5 A5 B3 29 F0 - .byte $18, $69, $10, $85, $B3, $C9, $70, $90, $02, $E6, $BA, $60, $A5, $31, $6A, $90 ; CPU:$BADA PRG:3ADA 18 69 10 85 B3 C9 70 90 02 E6 BA 60 A5 31 6A 90 - .byte $01, $60, $A5, $5D, $85, $B7, $A6, $5C, $86, $B8, $BD, $5A, $D4, $85, $1B, $20 ; CPU:$BAEA PRG:3AEA 01 60 A5 5D 85 B7 A6 5C 86 B8 BD 5A D4 85 1B 20 - .byte $78, $B7, $A6, $5D, $F0, $18, $86, $21, $20, $9B, $B7, $20, $8A, $85, $20, $E3 ; CPU:$BAFA PRG:3AFA 78 B7 A6 5D F0 18 86 21 20 9B B7 20 8A 85 20 E3 - .byte $84, $C6, $21, $A6, $21, $D0, $F1, $A6, $36, $A9, $00, $9D, $00, $03, $20, $36 ; CPU:$BB0A PRG:3B0A 84 C6 21 A6 21 D0 F1 A6 36 A9 00 9D 00 03 20 36 - .byte $BB, $A2, $30, $BD, $EA, $05, $09, $40, $9D, $EA, $05, $86, $BE, $E6, $6C, $E6 ; CPU:$BB1A PRG:3B1A BB A2 30 BD EA 05 09 40 9D EA 05 86 BE E6 6C E6 - .byte $B7, $A9, $00, $85, $BA, $85, $B5, $A9, $00, $85, $B9, $60, $A5, $5D, $18, $69 ; CPU:$BB2A PRG:3B2A B7 A9 00 85 BA 85 B5 A9 00 85 B9 60 A5 5D 18 69 - .byte $07, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $A9, $B8, $8D, $89, $03, $A9 ; CPU:$BB3A PRG:3B3A 07 85 11 A9 01 85 12 20 5D 85 A9 B8 8D 89 03 A9 - .byte $1C, $8D, $99, $03, $60, $A9, $00, $AA, $95, $B7, $E8, $E0, $0C, $90, $F9, $A2 ; CPU:$BB4A PRG:3B4A 1C 8D 99 03 60 A9 00 AA 95 B7 E8 E0 0C 90 F9 A2 - .byte $00, $9D, $EA, $05, $E8, $E0, $70, $90, $F8, $A9, $FF, $85, $BE, $60, $A5, $31 ; CPU:$BB5A PRG:3B5A 00 9D EA 05 E8 E0 70 90 F8 A9 FF 85 BE 60 A5 31 - .byte $6A, $B0, $01, $60, $29, $1F, $D0, $0B, $AD, $D4, $00, $45, $33, $8D, $D4, $00 ; CPU:$BB6A PRG:3B6A 6A B0 01 60 29 1F D0 0B AD D4 00 45 33 8D D4 00 - .byte $4C, $7E, $BB, $60, $A9, $00, $0A, $AA, $AD, $D4, $00, $F0, $0D, $BD, $DE, $BB ; CPU:$BB7A PRG:3B7A 4C 7E BB 60 A9 00 0A AA AD D4 00 F0 0D BD DE BB - .byte $85, $19, $BD, $DF, $BB, $85, $1A, $4C, $9E, $BB, $BD, $C2, $BB, $85, $19, $BD ; CPU:$BB8A PRG:3B8A 85 19 BD DF BB 85 1A 4C 9E BB BD C2 BB 85 19 BD - .byte $C3, $BB, $85, $1A, $A0, $00, $A6, $37, $A9, $04, $85, $1F, $B1, $19, $9D, $38 ; CPU:$BB9A PRG:3B9A C3 BB 85 1A A0 00 A6 37 A9 04 85 1F B1 19 9D 38 - .byte $03, $E8, $C8, $C6, $1F, $D0, $F5, $A5, $6F, $F0, $05, $A9, $45, $9D, $34, $03 ; CPU:$BBAA PRG:3BAA 03 E8 C8 C6 1F D0 F5 A5 6F F0 05 A9 45 9D 34 03 - .byte $A9, $00, $9D, $38, $03, $86, $37, $60, $C4, $BB, $24, $23, $C8, $BB, $05, $04 ; CPU:$BBBA PRG:3BBA A9 00 9D 38 03 86 37 60 C4 BB 24 23 C8 BB 05 04 - .byte $23, $25, $26, $29, $61, $2B, $93, $2D, $3D, $74, $8D, $8E, $8F, $91, $7B, $C1 ; CPU:$BBCA PRG:3BCA 23 25 26 29 61 2B 93 2D 3D 74 8D 8E 8F 91 7B C1 - .byte $3E, $2A, $97, $96, $E0, $BB, $24, $23, $E4, $BB, $05, $04, $C9, $CA, $FF, $CC ; CPU:$BBDA PRG:3BDA 3E 2A 97 96 E0 BB 24 23 E4 BB 05 04 C9 CA FF CC - .byte $61, $C8, $C7, $C6, $C5, $74, $FF, $C3, $C4, $7A, $7B, $C1, $9F, $98, $97, $96 ; CPU:$BBEA PRG:3BEA 61 C8 C7 C6 C5 74 FF C3 C4 7A 7B C1 9F 98 97 96 - .byte $A5, $56, $F0, $1E, $A5, $3F, $29, $01, $F0, $05, $E6, $49, $4C, $11, $BC, $A5 ; CPU:$BBFA PRG:3BFA A5 56 F0 1E A5 3F 29 01 F0 05 E6 49 4C 11 BC A5 - .byte $3F, $29, $02, $F0, $0A, $C6, $49, $C6, $56, $D0, $04, $A9, $00, $85, $3F, $4C ; CPU:$BC0A PRG:3C0A 3F 29 02 F0 0A C6 49 C6 56 D0 04 A9 00 85 3F 4C - .byte $26, $BD, $AD, $E5, $05, $F0, $17, $AE, $E2, $05, $BD, $05, $BE, $C5, $4D, $D0 ; CPU:$BC1A PRG:3C1A 26 BD AD E5 05 F0 17 AE E2 05 BD 05 BE C5 4D D0 - .byte $0D, $BD, $06, $BE, $85, $26, $85, $2A, $EE, $E2, $05, $EE, $E2, $05, $A5, $26 ; CPU:$BC2A PRG:3C2A 0D BD 06 BE 85 26 85 2A EE E2 05 EE E2 05 A5 26 - .byte $29, $08, $D0, $06, $A9, $00, $85, $CE, $F0, $16, $E6, $CE, $A5, $CE, $C9, $08 ; CPU:$BC3A PRG:3C3A 29 08 D0 06 A9 00 85 CE F0 16 E6 CE A5 CE C9 08 - .byte $90, $0A, $A9, $00, $85, $CE, $EE, $A4, $05, $EE, $A4, $05, $A9, $00, $85, $CF ; CPU:$BC4A PRG:3C4A 90 0A A9 00 85 CE EE A4 05 EE A4 05 A9 00 85 CF - .byte $A5, $CF, $D0, $0A, $A5, $35, $85, $CF, $C6, $40, $C6, $4A, $C6, $4A, $C6, $CF ; CPU:$BC5A PRG:3C5A A5 CF D0 0A A5 35 85 CF C6 40 C6 4A C6 4A C6 CF - .byte $A5, $40, $D0, $16, $A9, $08, $85, $40, $A5, $4D, $85, $20, $C6, $20, $A5, $48 ; CPU:$BC6A PRG:3C6A A5 40 D0 16 A9 08 85 40 A5 4D 85 20 C6 20 A5 48 - .byte $85, $23, $20, $70, $BD, $F0, $03, $E6, $60, $60, $A5, $26, $29, $03, $D0, $03 ; CPU:$BC7A PRG:3C7A 85 23 20 70 BD F0 03 E6 60 60 A5 26 29 03 D0 03 - .byte $4C, $26, $BD, $C9, $03, $D0, $07, $A9, $00, $85, $3F, $4C, $26, $BD, $85, $3F ; CPU:$BC8A PRG:3C8A 4C 26 BD C9 03 D0 07 A9 00 85 3F 4C 26 BD 85 3F - .byte $A5, $26, $29, $01, $F0, $09, $A5, $4D, $18, $69, $10, $29, $F0, $85, $20, $A5 ; CPU:$BC9A PRG:3C9A A5 26 29 01 F0 09 A5 4D 18 69 10 29 F0 85 20 A5 - .byte $26, $29, $02, $F0, $09, $A5, $4D, $38, $E9, $10, $29, $F0, $85, $20, $A5, $4D ; CPU:$BCAA PRG:3CAA 26 29 02 F0 09 A5 4D 38 E9 10 29 F0 85 20 A5 4D - .byte $29, $0F, $05, $20, $85, $20, $A5, $40, $C9, $05, $90, $1B, $A5, $4D, $85, $1C ; CPU:$BCBA PRG:3CBA 29 0F 05 20 85 20 A5 40 C9 05 90 1B A5 4D 85 1C - .byte $29, $0F, $C9, $0E, $90, $06, $A5, $4D, $49, $10, $85, $1C, $A5, $1C, $29, $10 ; CPU:$BCCA PRG:3CCA 29 0F C9 0E 90 06 A5 4D 49 10 85 1C A5 1C 29 10 - .byte $F0, $1D, $E6, $20, $4C, $F9, $BC, $A5, $4D, $85, $1C, $29, $0F, $C9, $0E, $90 ; CPU:$BCDA PRG:3CDA F0 1D E6 20 4C F9 BC A5 4D 85 1C 29 0F C9 0E 90 - .byte $06, $A5, $4D, $49, $10, $85, $1C, $A5, $1C, $29, $10, $D0, $02, $C6, $20, $A5 ; CPU:$BCEA PRG:3CEA 06 A5 4D 49 10 85 1C A5 1C 29 10 D0 02 C6 20 A5 - .byte $48, $85, $23, $20, $70, $BD, $F0, $09, $A9, $00, $85, $3F, $85, $56, $4C, $26 ; CPU:$BCFA PRG:3CFA 48 85 23 20 70 BD F0 09 A9 00 85 3F 85 56 4C 26 - .byte $BD, $A9, $00, $85, $CF, $A9, $10, $85, $56, $A5, $40, $C9, $05, $90, $08, $38 ; CPU:$BD0A PRG:3D0A BD A9 00 85 CF A9 10 85 56 A5 40 C9 05 90 08 38 - .byte $E9, $04, $85, $40, $4C, $26, $BD, $18, $69, $04, $85, $40, $A5, $48, $85, $23 ; CPU:$BD1A PRG:3D1A E9 04 85 40 4C 26 BD 18 69 04 85 40 A5 48 85 23 - .byte $29, $01, $F0, $21, $A5, $2A, $29, $80, $F0, $02, $C6, $23, $A5, $2A, $29, $40 ; CPU:$BD2A PRG:3D2A 29 01 F0 21 A5 2A 29 80 F0 02 C6 23 A5 2A 29 40 - .byte $F0, $02, $E6, $23, $A5, $23, $29, $03, $85, $23, $A5, $4D, $85, $20, $20, $70 ; CPU:$BD3A PRG:3D3A F0 02 E6 23 A5 23 29 03 85 23 A5 4D 85 20 20 70 - .byte $BD, $20, $1C, $CD, $60, $A5, $2A, $29, $80, $F0, $02, $E6, $23, $A5, $2A, $29 ; CPU:$BD4A PRG:3D4A BD 20 1C CD 60 A5 2A 29 80 F0 02 E6 23 A5 2A 29 - .byte $40, $F0, $02, $C6, $23, $A5, $23, $29, $03, $85, $23, $A5, $4D, $85, $20, $20 ; CPU:$BD5A PRG:3D5A 40 F0 02 C6 23 A5 23 29 03 85 23 A5 4D 85 20 20 - .byte $70, $BD, $20, $1C, $CD, $60, $A5, $20, $29, $F0, $85, $21, $A5, $20, $29, $0F ; CPU:$BD6A PRG:3D6A 70 BD 20 1C CD 60 A5 20 29 F0 85 21 A5 20 29 0F - .byte $85, $22, $A9, $04, $85, $1F, $A2, $00, $A5, $23, $0A, $0A, $85, $25, $A4, $25 ; CPU:$BD7A PRG:3D7A 85 22 A9 04 85 1F A2 00 A5 23 0A 0A 85 25 A4 25 - .byte $B1, $46, $85, $1E, $A5, $21, $85, $1C, $A5, $22, $C9, $0E, $90, $07, $A5, $21 ; CPU:$BD8A PRG:3D8A B1 46 85 1E A5 21 85 1C A5 22 C9 0E 90 07 A5 21 - .byte $18, $69, $10, $85, $1C, $A5, $1C, $29, $10, $F0, $08, $A5, $1E, $29, $10, $F0 ; CPU:$BD9A PRG:3D9A 18 69 10 85 1C A5 1C 29 10 F0 08 A5 1E 29 10 F0 - .byte $02, $E6, $1E, $A5, $1E, $29, $F0, $18, $65, $21, $85, $1D, $C9, $70, $D0, $03 ; CPU:$BDAA PRG:3DAA 02 E6 1E A5 1E 29 F0 18 65 21 85 1D C9 70 D0 03 - .byte $A9, $FF, $60, $A5, $1E, $29, $0F, $18, $65, $22, $85, $1C, $29, $0F, $C9, $0E ; CPU:$BDBA PRG:3DBA A9 FF 60 A5 1E 29 0F 18 65 22 85 1C 29 0F C9 0E - .byte $90, $03, $A9, $FF, $60, $A5, $1C, $18, $65, $1D, $C9, $70, $B0, $F4, $A8, $B9 ; CPU:$BDCA PRG:3DCA 90 03 A9 FF 60 A5 1C 18 65 1D C9 70 B0 F4 A8 B9 - .byte $00, $04, $29, $7F, $F0, $01, $60, $98, $95, $D0, $E8, $E6, $25, $C6, $1F, $D0 ; CPU:$BDDA PRG:3DDA 00 04 29 7F F0 01 60 98 95 D0 E8 E6 25 C6 1F D0 - .byte $9D, $A9, $04, $85, $1F, $A2, $00, $B5, $D0, $95, $4E, $E8, $C6, $1F, $D0, $F7 ; CPU:$BDEA PRG:3DEA 9D A9 04 85 1F A2 00 B5 D0 95 4E E8 C6 1F D0 F7 - .byte $A5, $20, $85, $4D, $A5, $23, $85, $48, $A9, $00, $60, $27, $02, $15, $02, $03 ; CPU:$BDFA PRG:3DFA A5 20 85 4D A5 23 85 48 A9 00 60 27 02 15 02 03 - .byte $02, $28, $80, $24, $02, $26, $02, $13, $01, $29, $40, $27, $80, $25, $02, $13 ; CPU:$BE0A PRG:3E0A 02 28 80 24 02 26 02 13 01 29 40 27 80 25 02 13 - .byte $40, $12, $02, $01, $80, $25, $01, $33, $01, $41, $40, $29, $40, $28, $01, $33 ; CPU:$BE1A PRG:3E1A 40 12 02 01 80 25 01 33 01 41 40 29 40 28 01 33 - .byte $01, $29, $40, $26, $80, $24, $80, $29, $80, $25, $01, $32, $02, $26, $40, $21 ; CPU:$BE2A PRG:3E2A 01 29 40 26 80 24 80 29 80 25 01 32 02 26 40 21 - .byte $02, $27, $80, $24, $02, $26, $01, $34, $01, $43, $80, $41, $40, $28, $01, $34 ; CPU:$BE3A PRG:3E3A 02 27 80 24 02 26 01 34 01 43 80 41 40 28 01 34 - .byte $01, $28, $01, $29, $02, $15, $01, $23, $80, $26, $01, $32, $01, $27, $02, $12 ; CPU:$BE4A PRG:3E4A 01 28 01 29 02 15 01 23 80 26 01 32 01 27 02 12 - .byte $02, $27, $01, $35, $01, $44, $80, $43, $40, $28, $40, $26, $80, $25, $02, $13 ; CPU:$BE5A PRG:3E5A 02 27 01 35 01 44 80 43 40 28 40 26 80 25 02 13 - .byte $02, $25, $02, $27, $01, $34, $01, $28, $40, $25, $40, $24, $02, $12, $02, $26 ; CPU:$BE6A PRG:3E6A 02 25 02 27 01 34 01 28 40 25 40 24 02 12 02 26 - .byte $80, $28, $80, $25, $02, $29, $40, $27, $80, $23, $02, $29, $01, $36, $01, $45 ; CPU:$BE7A PRG:3E7A 80 28 80 25 02 29 40 27 80 23 02 29 01 36 01 45 - .byte $01, $29, $40, $28, $01, $36, $01, $44, $80, $28, $80, $26, $01, $34, $01, $43 ; CPU:$BE8A PRG:3E8A 01 29 40 28 01 36 01 44 80 28 80 26 01 34 01 43 - .byte $40, $26, $40, $25, $01, $33, $80, $28, $40, $26, $02, $14, $02, $29, $40, $27 ; CPU:$BE9A PRG:3E9A 40 26 40 25 01 33 80 28 40 26 02 14 02 29 40 27 - .byte $80, $28, $01, $35, $01, $29, $01, $36, $01, $45, $80, $29, $40, $27, $80, $29 ; CPU:$BEAA PRG:3EAA 80 28 01 35 01 29 01 36 01 45 80 29 40 27 80 29 - .byte $02, $14, $01, $29, $02, $15, $02, $04, $02, $28, $01, $35, $01, $27, $80, $25 ; CPU:$BEBA PRG:3EBA 02 14 01 29 02 15 02 04 02 28 01 35 01 27 80 25 - .byte $02, $27, $40, $24, $02, $28, $40, $25, $01, $28, $40, $25, $80, $22, $02, $29 ; CPU:$BECA PRG:3ECA 02 27 40 24 02 28 40 25 01 28 40 25 80 22 02 29 - .byte $80, $27, $01, $35, $01, $45, $40, $44, $01, $27, $A2, $00, $86, $21, $B4, $4E ; CPU:$BEDA PRG:3EDA 80 27 01 35 01 45 40 44 01 27 A2 00 86 21 B4 4E - .byte $B5, $52, $85, $1B, $99, $00, $04, $E6, $21, $0A, $AA, $BD, $9E, $F2, $85, $17 ; CPU:$BEEA PRG:3EEA B5 52 85 1B 99 00 04 E6 21 0A AA BD 9E F2 85 17 - .byte $BD, $9F, $F2, $85, $18, $98, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84, $A6 ; CPU:$BEFA PRG:3EFA BD 9F F2 85 18 98 20 BF 84 20 8A 85 20 E3 84 A6 - .byte $21, $E0, $04, $90, $D9, $A6, $36, $A9, $00, $9D, $00, $03, $60, $A5, $61, $C9 ; CPU:$BF0A PRG:3F0A 21 E0 04 90 D9 A6 36 A9 00 9D 00 03 60 A5 61 C9 - .byte $00, $D0, $36, $A2, $00, $86, $58, $86, $21, $B5, $4E, $85, $20, $C6, $20, $A5 ; CPU:$BF1A PRG:3F1A 00 D0 36 A2 00 86 58 86 21 B5 4E 85 20 C6 20 A5 - .byte $20, $29, $0F, $C9, $0E, $B0, $18, $A4, $20, $B9, $00, $04, $D0, $11, $A9, $80 ; CPU:$BF2A PRG:3F2A 20 29 0F C9 0E B0 18 A4 20 B9 00 04 D0 11 A9 80 - .byte $99, $00, $04, $98, $A6, $58, $9D, $68, $05, $E6, $58, $C6, $20, $10, $E0, $A6 ; CPU:$BF3A PRG:3F3A 99 00 04 98 A6 58 9D 68 05 E6 58 C6 20 10 E0 A6 - .byte $21, $E8, $E0, $04, $90, $D1, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A9 ; CPU:$BF4A PRG:3F4A 21 E8 E0 04 90 D1 E6 61 60 A5 31 6A B0 01 60 A9 - .byte $0D, $85, $17, $A9, $F3, $85, $18, $A9, $0C, $85, $1F, $A0, $00, $C6, $58, $10 ; CPU:$BF5A PRG:3F5A 0D 85 17 A9 F3 85 18 A9 0C 85 1F A0 00 C6 58 10 - .byte $18, $E6, $60, $A5, $64, $D0, $02, $E6, $60, $A9, $00, $A4, $36, $85, $61, $99 ; CPU:$BF6A PRG:3F6A 18 E6 60 A5 64 D0 02 E6 60 A9 00 A4 36 85 61 99 - .byte $00, $03, $85, $3F, $A9, $03, $85, $56, $60, $A6, $58, $BD, $68, $05, $20, $BF ; CPU:$BF7A PRG:3F7A 00 03 85 3F A9 03 85 56 60 A6 58 BD 68 05 20 BF - .byte $84, $20, $8A, $85, $C6, $1F, $10, $D5, $A4, $36, $A9, $00, $99, $00, $03, $60 ; CPU:$BF8A PRG:3F8A 84 20 8A 85 C6 1F 10 D5 A4 36 A9 00 99 00 03 60 - .byte $A5, $61, $20, $73, $81, $AF, $BF, $BA, $BF, $D6, $BF, $0F, $C0, $70, $C0, $79 ; CPU:$BF9A PRG:3F9A A5 61 20 73 81 AF BF BA BF D6 BF 0F C0 70 C0 79 - .byte $C0, $9E, $C0, $B9, $C0, $A9, $0A, $85, $6A, $A9, $00, $85, $6C, $E6, $61, $60 ; CPU:$BFAA PRG:3FAA C0 9E C0 B9 C0 A9 0A 85 6A A9 00 85 6C E6 61 60 - .byte $A9, $00, $8D, $58, $03, $8D, $5A, $03, $8D, $5B, $03, $8D, $5C, $03, $8D, $5D ; CPU:$BFBA PRG:3FBA A9 00 8D 58 03 8D 5A 03 8D 5B 03 8D 5C 03 8D 5D - .byte $03, $A9, $0A, $85, $58, $E6, $61, $A9, $07, $20, $04, $80, $A5, $31, $6A, $B0 ; CPU:$BFCA PRG:3FCA 03 A9 0A 85 58 E6 61 A9 07 20 04 80 A5 31 6A B0 - .byte $01, $60, $A9, $A8, $85, $17, $A9, $F2, $85, $18, $A5, $58, $85, $56, $20, $BF ; CPU:$BFDA PRG:3FDA 01 60 A9 A8 85 17 A9 F2 85 18 A5 58 85 56 20 BF - .byte $84, $20, $8A, $85, $A5, $56, $18, $69, $10, $C9, $70, $90, $EF, $A9, $00, $9D ; CPU:$BFEA PRG:3FEA 84 20 8A 85 A5 56 18 69 10 C9 70 90 EF A9 00 9D - .byte $00, $03, $C6, $58, $10, $0E ; CPU:$BFFA PRG:3FFA 00 03 C6 58 10 0E + .byte $86, $5B, $A9, $05, $4C, $63, $86 ; CPU:$8ADA PRG:0ADA 86 5B A9 05 4C 63 86 +; ----------------------------------------------------------------------------- +; Routine: Sub_8AE1 +; Global: Branch target inside Sub: taken when 8AE1. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_8AE1: + jsr ReadPlayerInput ; CPU:$8AE1 PRG:0AE1 20 A9 90 + jsr Sub_90FC ; CPU:$8AE4 PRG:0AE4 20 FC 90 + jsr BuildOamBuffer ; CPU:$8AE7 PRG:0AE7 20 AC 91 + lda NewButton1 ; CPU:$8AEA PRG:0AEA A5 2A + and #$10 ; CPU:$8AEC PRG:0AEC 29 10 + beq InitLevelState_Loop2 ; CPU:$8AEE PRG:0AEE F0 1E + inc GameMode ; CPU:$8AF0 PRG:0AF0 E6 6A + lda #$00 ; CPU:$8AF2 PRG:0AF2 A9 00 + sta Zp6C ; CPU:$8AF4 PRG:0AF4 85 6C + lda Zp70 ; CPU:$8AF6 PRG:0AF6 A5 70 + sta Zp5A ; CPU:$8AF8 PRG:0AF8 85 5A + sta Zp5C ; CPU:$8AFA PRG:0AFA 85 5C + lda Zp72 ; CPU:$8AFC PRG:0AFC A5 72 + sta Zp5B ; CPU:$8AFE PRG:0AFE 85 5B + sta Zp5D ; CPU:$8B00 PRG:0B00 85 5D + jsr Sub_C6B7 ; CPU:$8B02 PRG:0B02 20 B7 C6 + jsr ClearActorSlots ; CPU:$8B05 PRG:0B05 20 4F BB + jsr Sub_9703 ; CPU:$8B08 PRG:0B08 20 03 97 + jsr Sub_970F ; CPU:$8B0B PRG:0B0B 20 0F 97 +; ----------------------------------------------------------------------------- +; Routine: InitLevelState_Loop2 +; Global: Branch target inside InitLevelState: taken when Loop2. +; Local: Part of InitLevelState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitLevelState_Loop2: + rts ; CPU:$8B0E PRG:0B0E 60 +; ---- data $8B0F-$8E33 (805 bytes) ---- + .byte $81, $99, $81, $99, $81, $99, $81, $99, $81, $99, $81, $99, $A5, $6C, $D0, $3D ; CPU:$8B0F PRG:0B0F 81 99 81 99 81 99 81 99 81 99 81 99 A5 6C D0 3D + .byte $85, $75, $85, $92, $E6, $6C, $20, $88, $81, $A5, $91, $18, $69, $04, $85, $2E ; CPU:$8B1F PRG:0B1F 85 75 85 92 E6 6C 20 88 81 A5 91 18 69 04 85 2E + .byte $A9, $00, $20, $04, $80, $A5, $91, $4A, $18, $69, $02, $AA, $20, $84, $90, $20 ; CPU:$8B2F PRG:0B2F A9 00 20 04 80 A5 91 4A 18 69 02 AA 20 84 90 20 + .byte $28, $92, $A6, $91, $A5, $01, $29, $E6, $1D, $0F, $8B, $85, $01, $A9, $00, $85 ; CPU:$8B3F PRG:0B3F 28 92 A6 91 A5 01 29 E6 1D 0F 8B 85 01 A9 00 85 + .byte $03, $85, $04, $A5, $99, $D0, $05, $A9, $04, $20, $63, $86, $60, $A9, $01, $20 ; CPU:$8B4F PRG:0B4F 03 85 04 A5 99 D0 05 A9 04 20 63 86 60 A9 01 20 + .byte $04, $80, $A5, $99, $D0, $2F, $A5, $2A, $29, $C0, $D0, $06, $A5, $2B, $29, $C0 ; CPU:$8B5F PRG:0B5F 04 80 A5 99 D0 2F A5 2A 29 C0 D0 06 A5 2B 29 C0 + .byte $F0, $22, $A9, $00, $85, $6C, $8D, $B0, $01, $A9, $04, $85, $6A, $E6, $91, $A5 ; CPU:$8B6F PRG:0B6F F0 22 A9 00 85 6C 8D B0 01 A9 04 85 6A E6 91 A5 + .byte $91, $C9, $0C, $D0, $07, $E6, $99, $A9, $06, $85, $6A, $60, $A5, $01, $29, $88 ; CPU:$8B7F PRG:0B7F 91 C9 0C D0 07 E6 99 A9 06 85 6A 60 A5 01 29 88 + .byte $09, $88, $85, $01, $60, $E6, $97, $D0, $16, $A9, $00, $85, $6C, $E6, $91, $A5 ; CPU:$8B8F PRG:0B8F 09 88 85 01 60 E6 97 D0 16 A9 00 85 6C E6 91 A5 + .byte $91, $C9, $0C, $90, $0A, $A9, $07, $85, $6A, $A9, $00, $85, $6C, $85, $99, $60 ; CPU:$8B9F PRG:0B9F 91 C9 0C 90 0A A9 07 85 6A A9 00 85 6C 85 99 60 + .byte $A5, $6C, $D0, $67, $A5, $99, $D0, $09, $E6, $97, $A5, $97, $C9, $70, $B0, $01 ; CPU:$8BAF PRG:0BAF A5 6C D0 67 A5 99 D0 09 E6 97 A5 97 C9 70 B0 01 + .byte $60, $A9, $00, $85, $97, $E6, $6C, $20, $88, $81, $20, $28, $92, $A2, $00, $20 ; CPU:$8BBF PRG:0BBF 60 A9 00 85 97 E6 6C 20 88 81 20 28 92 A2 00 20 + .byte $84, $90, $A9, $02, $85, $2E, $A9, $00, $20, $04, $80, $A5, $01, $29, $E6, $09 ; CPU:$8BCF PRG:0BCF 84 90 A9 02 85 2E A9 00 20 04 80 A5 01 29 E6 09 + .byte $01, $85, $01, $A9, $00, $85, $03, $85, $04, $20, $4C, $8C, $A9, $00, $AA, $85 ; CPU:$8BDF PRG:0BDF 01 85 01 A9 00 85 03 85 04 20 4C 8C A9 00 AA 85 + .byte $79, $85, $7A, $85, $8C, $85, $8D, $85, $8E, $85, $8F, $85, $87, $BD, $2F, $8E ; CPU:$8BEF PRG:0BEF 79 85 7A 85 8C 85 8D 85 8E 85 8F 85 87 BD 2F 8E + .byte $95, $7D, $95, $83, $E8, $E0, $04, $90, $F4, $A5, $7F, $85, $88, $85, $89, $A5 ; CPU:$8BFF PRG:0BFF 95 7D 95 83 E8 E0 04 90 F4 A5 7F 85 88 85 89 A5 + .byte $80, $85, $8A, $85, $8B, $A9, $03, $20, $63, $86, $60, $20, $42, $8E, $A5, $2A ; CPU:$8C0F PRG:0C0F 80 85 8A 85 8B A9 03 20 63 86 60 20 42 8E A5 2A + .byte $29, $10, $F0, $19, $A9, $02, $85, $6A, $A9, $00, $85, $6C, $A5, $99, $F0, $0D ; CPU:$8C1F PRG:0C1F 29 10 F0 19 A9 02 85 6A A9 00 85 6C A5 99 F0 0D + .byte $A9, $08, $85, $6A, $A9, $00, $85, $91, $A9, $04, $20, $63, $86, $60, $A0, $00 ; CPU:$8C2F PRG:0C2F A9 08 85 6A A9 00 85 91 A9 04 20 63 86 60 A0 00 + .byte $BD, $AC, $05, $99, $90, $01, $E8, $C8, $C0, $0A, $90, $F4, $60, $A2, $0A, $86 ; CPU:$8C3F PRG:0C3F BD AC 05 99 90 01 E8 C8 C0 0A 90 F4 60 A2 0A 86 + .byte $90, $20, $3D, $8C, $20, $7F, $8C, $A2, $00, $86, $90, $20, $3D, $8C, $20, $7F ; CPU:$8C4F PRG:0C4F 90 20 3D 8C 20 7F 8C A2 00 86 90 20 3D 8C 20 7F + .byte $8C, $A5, $1D, $C5, $1C, $90, $18, $E6, $1D, $A5, $82, $18, $69, $40, $85, $82 ; CPU:$8C5F PRG:0C5F 8C A5 1D C5 1C 90 18 E6 1D A5 82 18 69 40 85 82 + .byte $A5, $81, $69, $00, $85, $81, $A9, $0D, $18, $6D, $E0, $05, $8D, $E0, $05, $60 ; CPU:$8C6F PRG:0C6F A5 81 69 00 85 81 A9 0D 18 6D E0 05 8D E0 05 60 + .byte $A0, $00, $84, $11, $A2, $00, $BD, $94, $01, $F0, $18, $B9, $07, $01, $30, $0D ; CPU:$8C7F PRG:0C7F A0 00 84 11 A2 00 BD 94 01 F0 18 B9 07 01 30 0D + .byte $BD, $94, $01, $18, $69, $30, $D9, $07, $01, $F0, $11, $90, $15, $20, $84, $8D ; CPU:$8C8F PRG:0C8F BD 94 01 18 69 30 D9 07 01 F0 11 90 15 20 84 8D + .byte $4C, $D4, $8C, $B9, $07, $01, $30, $04, $C9, $31, $B0, $06, $E8, $C8, $E0, $06 ; CPU:$8C9F PRG:0C9F 4C D4 8C B9 07 01 30 04 C9 31 B0 06 E8 C8 E0 06 + .byte $90, $D4, $E6, $11, $A5, $11, $C9, $0A, $B0, $10, $A5, $11, $85, $13, $A9, $0D ; CPU:$8CAF PRG:0CAF 90 D4 E6 11 A5 11 C9 0A B0 10 A5 11 85 13 A9 0D + .byte $85, $15, $20, $D5, $82, $A4, $17, $4C, $83, $8C, $A6, $90, $F0, $05, $85, $1D ; CPU:$8CBF PRG:0CBF 85 15 20 D5 82 A4 17 4C 83 8C A6 90 F0 05 85 1D + .byte $4C, $D4, $8C, $85, $1C, $A0, $00, $84, $25, $A2, $00, $86, $24, $8A, $0A, $AA ; CPU:$8CCF PRG:0CCF 4C D4 8C 85 1C A0 00 84 25 A2 00 86 24 8A 0A AA + .byte $BD, $78, $8D, $85, $07, $BD, $79, $8D, $85, $08, $A5, $25, $85, $13, $A9, $40 ; CPU:$8CDF PRG:0CDF BD 78 8D 85 07 BD 79 8D 85 08 A5 25 85 13 A9 40 + .byte $85, $15, $20, $D5, $82, $A5, $07, $18, $65, $17, $8D, $B1, $01, $A5, $08, $65 ; CPU:$8CEF PRG:0CEF 85 15 20 D5 82 A5 07 18 65 17 8D B1 01 A5 08 65 + .byte $18, $8D, $B0, $01, $A5, $90, $F0, $08, $A4, $25, $C4, $1D, $D0, $20, $F0, $06 ; CPU:$8CFF PRG:0CFF 18 8D B0 01 A5 90 F0 08 A4 25 C4 1D D0 20 F0 06 + .byte $A4, $25, $C4, $1C, $D0, $18, $A6, $24, $D0, $14, $A5, $90, $D0, $04, $A2, $00 ; CPU:$8D0F PRG:0D0F A4 25 C4 1C D0 18 A6 24 D0 14 A5 90 D0 04 A2 00 + .byte $F0, $02, $A2, $06, $AD, $B0, $01, $95, $7B, $AD, $B1, $01, $95, $7C, $A6, $24 ; CPU:$8D1F PRG:0D1F F0 02 A2 06 AD B0 01 95 7B AD B1 01 95 7C A6 24 + .byte $BD, $7E, $8D, $85, $1B, $BD, $81, $8D, $8D, $B2, $01, $A9, $01, $8D, $B3, $01 ; CPU:$8D2F PRG:0D2F BD 7E 8D 85 1B BD 81 8D 8D B2 01 A9 01 8D B3 01 + .byte $A5, $25, $85, $13, $A9, $0D, $85, $15, $20, $D5, $82, $A9, $00, $18, $65, $17 ; CPU:$8D3F PRG:0D3F A5 25 85 13 A9 0D 85 15 20 D5 82 A9 00 18 65 17 + .byte $65, $1B, $8D, $B4, $01, $A9, $01, $8D, $B5, $01, $A9, $00, $8D, $B6, $01, $20 ; CPU:$8D4F PRG:0D4F 65 1B 8D B4 01 A9 01 8D B5 01 A9 00 8D B6 01 20 + .byte $B1, $81, $E6, $24, $A6, $24, $E0, $03, $B0, $03, $4C, $DC, $8C, $E6, $25, $A5 ; CPU:$8D5F PRG:0D5F B1 81 E6 24 A6 24 E0 03 B0 03 4C DC 8C E6 25 A5 + .byte $25, $C9, $0A, $B0, $03, $4C, $D8, $8C, $60, $27, $25, $2E, $25, $35, $25, $00 ; CPU:$8D6F PRG:0D6F 25 C9 0A B0 03 4C D8 8C 60 27 25 2E 25 35 25 00 + .byte $03, $07, $03, $04, $06, $A6, $90, $F0, $07, $A5, $11, $85, $1D, $4C, $93, $8D ; CPU:$8D7F PRG:0D7F 03 07 03 04 06 A6 90 F0 07 A5 11 85 1D 4C 93 8D + .byte $A5, $11, $85, $1C, $85, $1E, $85, $13, $A9, $0D, $85, $15, $20, $D5, $82, $A5 ; CPU:$8D8F PRG:0D8F A5 11 85 1C 85 1E 85 13 A9 0D 85 15 20 D5 82 A5 + .byte $17, $85, $22, $A6, $22, $E0, $75, $B0, $27, $A2, $08, $86, $11, $A5, $11, $85 ; CPU:$8D9F PRG:0D9F 17 85 22 A6 22 E0 75 B0 27 A2 08 86 11 A5 11 85 + .byte $13, $A9, $0D, $85, $15, $20, $D5, $82, $A6, $17, $E4, $22, $90, $12, $A0, $00 ; CPU:$8DAF PRG:0DAF 13 A9 0D 85 15 20 D5 82 A6 17 E4 22 90 12 A0 00 + .byte $BD, $00, $01, $9D, $0D, $01, $E8, $C8, $C0, $0D, $90, $F4, $C6, $11, $10, $DD ; CPU:$8DBF PRG:0DBF BD 00 01 9D 0D 01 E8 C8 C0 0D 90 F4 C6 11 10 DD + .byte $A2, $00, $A5, $90, $F0, $01, $E8, $A5, $22, $9D, $DF, $05, $AA, $A9, $FF, $9D ; CPU:$8DCF PRG:0DCF A2 00 A5 90 F0 01 E8 A5 22 9D DF 05 AA A9 FF 9D + .byte $00, $01, $E8, $9D, $00, $01, $E8, $9D, $00, $01, $E8, $A0, $00, $84, $1E, $B9 ; CPU:$8DDF PRG:0DDF 00 01 E8 9D 00 01 E8 9D 00 01 E8 A0 00 84 1E B9 + .byte $90, $01, $D0, $08, $A5, $1E, $D0, $04, $A9, $FF, $D0, $08, $E6, $1E, $B9, $90 ; CPU:$8DEF PRG:0DEF 90 01 D0 08 A5 1E D0 04 A9 FF D0 08 E6 1E B9 90 + .byte $01, $18, $69, $30, $9D, $00, $01, $E8, $C8, $C0, $04, $90, $E2, $A0, $00, $84 ; CPU:$8DFF PRG:0DFF 01 18 69 30 9D 00 01 E8 C8 C0 04 90 E2 A0 00 84 + .byte $1E, $B9, $94, $01, $D0, $08, $A5, $1E, $D0, $04, $A9, $FF, $D0, $08, $E6, $1E ; CPU:$8E0F PRG:0E0F 1E B9 94 01 D0 08 A5 1E D0 04 A9 FF D0 08 E6 1E + .byte $B9, $94, $01, $18, $69, $30, $9D, $00, $01, $E8, $C8, $C0, $06, $90, $E2, $60 ; CPU:$8E1F PRG:0E1F B9 94 01 18 69 30 9D 00 01 E8 C8 C0 06 90 E2 60 + .byte $01, $01, $85, $94, $FF ; CPU:$8E2F PRG:0E2F 01 01 85 94 FF +; ----------------------------------------------------------------------------- +; Routine: CopyStackPage +; Global: Copies the stack page so the game can use it as scratch RAM. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CopyStackPage: + ldx #$00 ; CPU:$8E34 PRG:0E34 A2 00 +; ----------------------------------------------------------------------------- +; Routine: CopyStackPage_OnCarryClear +; Global: Branch target inside CopyStackPage: taken when the addition or subtraction did not carry. +; Local: Part of CopyStackPage. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CopyStackPage_OnCarryClear: + lda $9403,x ; CPU:$8E36 PRG:0E36 BD 03 94 + sta $0100,x ; CPU:$8E39 PRG:0E39 9D 00 01 + inx ; CPU:$8E3C PRG:0E3C E8 + cpx #$82 ; CPU:$8E3D PRG:0E3D E0 82 + bcc CopyStackPage_OnCarryClear ; CPU:$8E3F PRG:0E3F 90 F5 + rts ; CPU:$8E41 PRG:0E41 60 +; ---- data $8E42-$9083 (578 bytes) ---- + .byte $A5, $6F, $F0, $09, $A0, $06, $85, $90, $A2, $01, $20, $55, $8E, $A2, $00, $A0 ; CPU:$8E42 PRG:0E42 A5 6F F0 09 A0 06 85 90 A2 01 20 55 8E A2 00 A0 + .byte $00, $85, $90, $B5, $1C, $C9, $0A, $B0, $E6, $B5, $79, $C9, $03, $B0, $E0, $B5 ; CPU:$8E52 PRG:0E52 00 85 90 B5 1C C9 0A B0 E6 B5 79 C9 03 B0 E0 B5 + .byte $8E, $F0, $0D, $B9, $7C, $00, $18, $69, $01, $99, $7C, $00, $A9, $00, $95, $8E ; CPU:$8E62 PRG:0E62 8E F0 0D B9 7C 00 18 69 01 99 7C 00 A9 00 95 8E + .byte $A5, $75, $29, $07, $D0, $1D, $A5, $75, $29, $08, $F0, $0D, $A9, $33, $99, $7F ; CPU:$8E72 PRG:0E72 A5 75 29 07 D0 1D A5 75 29 08 F0 0D A9 33 99 7F + .byte $00, $A9, $8E, $99, $80, $00, $4C, $95, $8E, $B5, $88, $99, $7F, $00, $B5, $8A ; CPU:$8E82 PRG:0E82 00 A9 8E 99 80 00 4C 95 8E B5 88 99 7F 00 B5 8A + .byte $99, $80, $00, $B5, $2A, $29, $80, $F0, $3B, $F6, $79, $F6, $8E, $B5, $88, $99 ; CPU:$8E92 PRG:0E92 99 80 00 B5 2A 29 80 F0 3B F6 79 F6 8E B5 88 99 + .byte $7F, $00, $B5, $8A, $99, $80, $00, $A9, $85, $95, $88, $A9, $94, $95, $8A, $98 ; CPU:$8EA2 PRG:0EA2 7F 00 B5 8A 99 80 00 A9 85 95 88 A9 94 95 8A 98 + .byte $48, $BD, $DF, $05, $18, $75, $79, $A8, $88, $B5, $8C, $18, $69, $41, $C9, $5B ; CPU:$8EB2 PRG:0EB2 48 BD DF 05 18 75 79 A8 88 B5 8C 18 69 41 C9 5B + .byte $D0, $02, $A9, $40, $99, $00, $01, $68, $A8, $A9, $00, $95, $8C, $A9, $05, $85 ; CPU:$8EC2 PRG:0EC2 D0 02 A9 40 99 00 01 68 A8 A9 00 95 8C A9 05 85 + .byte $75, $4C, $2E, $8F, $B5, $2A, $29, $01, $F0, $1D, $F6, $88, $D0, $02, $F6, $8A ; CPU:$8ED2 PRG:0ED2 75 4C 2E 8F B5 2A 29 01 F0 1D F6 88 D0 02 F6 8A + .byte $F6, $8C, $B5, $8C, $C9, $1B, $90, $38, $A9, $85, $95, $88, $A9, $94, $95, $8A ; CPU:$8EE2 PRG:0EE2 F6 8C B5 8C C9 1B 90 38 A9 85 95 88 A9 94 95 8A + .byte $A9, $00, $95, $8C, $4C, $22, $8F, $B5, $2A, $29, $02, $F0, $23, $B5, $88, $38 ; CPU:$8EF2 PRG:0EF2 A9 00 95 8C 4C 22 8F B5 2A 29 02 F0 23 B5 88 38 + .byte $E9, $01, $95, $88, $B0, $02, $D6, $8A, $D6, $8C, $10, $14, $A9, $1A, $95, $8C ; CPU:$8F02 PRG:0F02 E9 01 95 88 B0 02 D6 8A D6 8C 10 14 A9 1A 95 8C + .byte $A9, $85, $18, $69, $1A, $95, $88, $A9, $94, $69, $00, $95, $8A, $4C, $22, $8F ; CPU:$8F12 PRG:0F12 A9 85 18 69 1A 95 88 A9 94 69 00 95 8A 4C 22 8F + .byte $B5, $79, $C9, $03, $90, $06, $A9, $00, $8D, $B0, $01, $60, $A2, $00, $A5, $1C ; CPU:$8F22 PRG:0F22 B5 79 C9 03 90 06 A9 00 8D B0 01 60 A2 00 A5 1C + .byte $C9, $0A, $B0, $0B, $B5, $7B, $9D, $B0, $01, $E8, $E0, $0C, $90, $F6, $60, $A0 ; CPU:$8F32 PRG:0F32 C9 0A B0 0B B5 7B 9D B0 01 E8 E0 0C 90 F6 60 A0 + .byte $06, $B9, $7B, $00, $9D, $B0, $01, $C8, $E8, $E0, $06, $90, $F4, $A9, $00, $9D ; CPU:$8F42 PRG:0F42 06 B9 7B 00 9D B0 01 C8 E8 E0 06 90 F4 A9 00 9D + .byte $B0, $01, $60, $A5, $6C, $D0, $36, $E6, $6C, $A9, $02, $20, $88, $81, $20, $28 ; CPU:$8F52 PRG:0F52 B0 01 60 A5 6C D0 36 E6 6C A9 02 20 88 81 20 28 + .byte $92, $A2, $00, $20, $84, $90, $A9, $03, $85, $2E, $A9, $00, $20, $04, $80, $A9 ; CPU:$8F62 PRG:0F62 92 A2 00 20 84 90 A9 03 85 2E A9 00 20 04 80 A9 + .byte $12, $85, $2E, $A9, $00, $20, $04, $80, $A5, $01, $29, $E4, $09, $00, $85, $01 ; CPU:$8F72 PRG:0F72 12 85 2E A9 00 20 04 80 A5 01 29 E4 09 00 85 01 + .byte $A9, $00, $85, $76, $8D, $DB, $03, $A9, $05, $20, $63, $86, $60, $A5, $6C, $C9 ; CPU:$8F82 PRG:0F82 A9 00 85 76 8D DB 03 A9 05 20 63 86 60 A5 6C C9 + .byte $01, $D0, $12, $A5, $31, $29, $07, $D0, $0B, $20, $09, $90, $A5, $76, $C9, $05 ; CPU:$8F92 PRG:0F92 01 D0 12 A5 31 29 07 D0 0B 20 09 90 A5 76 C9 05 + .byte $90, $02, $E6, $6C, $60, $A5, $6C, $C9, $02, $D0, $18, $A5, $31, $29, $3F, $D0 ; CPU:$8FA2 PRG:0FA2 90 02 E6 6C 60 A5 6C C9 02 D0 18 A5 31 29 3F D0 + .byte $11, $E6, $76, $A5, $76, $C9, $0A, $90, $09, $E6, $6C, $A9, $03, $8D, $DB, $03 ; CPU:$8FB2 PRG:0FB2 11 E6 76 A5 76 C9 0A 90 09 E6 6C A9 03 8D DB 03 + .byte $85, $76, $60, $C9, $03, $D0, $20, $A5, $31, $29, $07, $D0, $19, $20, $09, $90 ; CPU:$8FC2 PRG:0FC2 85 76 60 C9 03 D0 20 A5 31 29 07 D0 19 20 09 90 + .byte $A5, $76, $10, $12, $E6, $6C, $A9, $00, $8D, $DB, $03, $85, $76, $A5, $01, $09 ; CPU:$8FD2 PRG:0FD2 A5 76 10 12 E6 6C A9 00 8D DB 03 85 76 A5 01 09 + .byte $01, $85, $01, $8D, $DE, $03, $60, $C9, $04, $D0, $12, $A5, $31, $29, $07, $D0 ; CPU:$8FE2 PRG:0FE2 01 85 01 8D DE 03 60 C9 04 D0 12 A5 31 29 07 D0 + .byte $0B, $20, $09, $90, $A5, $76, $C9, $05, $90, $02, $E6, $6C, $60, $A5, $2A, $29 ; CPU:$8FF2 PRG:0FF2 0B 20 09 90 A5 76 C9 05 90 02 E6 6C 60 A5 2A 29 + .byte $10, $F0, $03, $4C, $36, $80, $60, $A2, $00, $BD, $36, $90, $9D, $B0, $01, $E8 ; CPU:$9002 PRG:1002 10 F0 03 4C 36 80 60 A2 00 BD 36 90 9D B0 01 E8 + .byte $E0, $04, $90, $F5, $A5, $76, $0A, $A8, $B9, $3A, $90, $9D, $B0, $01, $B9, $3B ; CPU:$9012 PRG:1012 E0 04 90 F5 A5 76 0A A8 B9 3A 90 9D B0 01 B9 3B + .byte $90, $9D, $B1, $01, $A9, $00, $9D, $B2, $01, $AD, $DB, $03, $D0, $03, $E6, $76 ; CPU:$9022 PRG:1022 90 9D B1 01 A9 00 9D B2 01 AD DB 03 D0 03 E6 76 + .byte $60, $C6, $76, $60, $3F, $00, $10, $01, $0F, $A7, $44, $90, $54, $90, $64, $90 ; CPU:$9032 PRG:1032 60 C6 76 60 3F 00 10 01 0F A7 44 90 54 90 64 90 + .byte $74, $90, $FF, $00, $00, $00, $FF, $00, $00, $00, $FF, $00, $00, $00, $FF, $00 ; CPU:$9042 PRG:1042 74 90 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 + .byte $00, $00, $FF, $10, $10, $10, $FF, $10, $10, $10, $FF, $10, $10, $10, $FF, $10 ; CPU:$9052 PRG:1052 00 00 FF 10 10 10 FF 10 10 10 FF 10 10 10 FF 10 + .byte $10, $10, $FF, $20, $20, $20, $FF, $20, $20, $20, $FF, $20, $20, $20, $FF, $20 ; CPU:$9062 PRG:1062 10 10 FF 20 20 20 FF 20 20 20 FF 20 20 20 FF 20 + .byte $20, $20, $FF, $30, $30, $30, $FF, $30, $30, $30, $FF, $30, $30, $30, $FF, $30 ; CPU:$9072 PRG:1072 20 20 FF 30 30 30 FF 30 30 30 FF 30 30 30 FF 30 + .byte $30, $30 ; CPU:$9082 PRG:1082 30 30 +; ----------------------------------------------------------------------------- +; Routine: Sub_9084 +; Global: Branch target inside Sub: taken when 9084. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_9084: + jsr SwitchPrgBankKeepA ; CPU:$9084 PRG:1084 20 80 FF + lda $9090,x ; CPU:$9087 PRG:1087 BD 90 90 + sta $9090,x ; CPU:$908A PRG:108A 9D 90 90 + sta PrgBankNumber ; CPU:$908D PRG:108D 85 2C + rts ; CPU:$908F PRG:108F 60 +; ---- data $9090-$90A8 (25 bytes) ---- +; referenced by `lda $9090,x` at $9087 (operand $9090 falls inside this region) +; referenced by `sta $9090,x` at $908A (operand $9090 falls inside this region) + .byte $00, $01, $02, $03, $04, $05, $06, $07, $A2, $00, $BD, $36, $93, $C9, $FF, $F0 ; CPU:$9090 PRG:1090 00 01 02 03 04 05 06 07 A2 00 BD 36 93 C9 FF F0 + .byte $07, $9D, $08, $02, $E8, $4C, $9A, $90, $60 ; CPU:$90A0 PRG:10A0 07 9D 08 02 E8 4C 9A 90 60 +; ----------------------------------------------------------------------------- +; Routine: ReadPlayerInput +; Global: Turns the raw button bits into the player's movement. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ReadPlayerInput: + lda NewButton1 ; CPU:$90A9 PRG:10A9 A5 2A + and #$84 ; CPU:$90AB PRG:10AB 29 84 + beq ReadPlayerInput_Loop ; CPU:$90AD PRG:10AD F0 0C + inc Zp74 ; CPU:$90AF PRG:10AF E6 74 + lda Zp74 ; CPU:$90B1 PRG:10B1 A5 74 + cmp #$05 ; CPU:$90B3 PRG:10B3 C9 05 + bcc ReadPlayerInput_Loop ; CPU:$90B5 PRG:10B5 90 04 + lda #$00 ; CPU:$90B7 PRG:10B7 A9 00 + sta Zp74 ; CPU:$90B9 PRG:10B9 85 74 +; ----------------------------------------------------------------------------- +; Routine: ReadPlayerInput_Loop +; Global: Branch target inside ReadPlayerInput: taken when the loop repeats. +; Local: Part of ReadPlayerInput. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ReadPlayerInput_Loop: + lda NewButton1 ; CPU:$90BB PRG:10BB A5 2A + and #$48 ; CPU:$90BD PRG:10BD 29 48 + beq ReadPlayerInput_Loop2 ; CPU:$90BF PRG:10BF F0 08 + dec Zp74 ; CPU:$90C1 PRG:10C1 C6 74 + bpl ReadPlayerInput_Loop2 ; CPU:$90C3 PRG:10C3 10 04 + lda #$04 ; CPU:$90C5 PRG:10C5 A9 04 + sta Zp74 ; CPU:$90C7 PRG:10C7 85 74 +; ----------------------------------------------------------------------------- +; Routine: ReadPlayerInput_Loop2 +; Global: Branch target inside ReadPlayerInput: taken when Loop2. +; Local: Part of ReadPlayerInput. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ReadPlayerInput_Loop2: + lda Zp71 ; CPU:$90C9 PRG:10C9 A5 71 + cmp #$02 ; CPU:$90CB PRG:10CB C9 02 + bne ReadPlayerInput_Loop3 ; CPU:$90CD PRG:10CD D0 0A + lda #$00 ; CPU:$90CF PRG:10CF A9 00 + sta Zp72 ; CPU:$90D1 PRG:10D1 85 72 + ldx Zp74 ; CPU:$90D3 PRG:10D3 A6 74 + cpx #$03 ; CPU:$90D5 PRG:10D5 E0 03 + beq ReadPlayerInput_Loop5 ; CPU:$90D7 PRG:10D7 F0 1D +; ----------------------------------------------------------------------------- +; Routine: ReadPlayerInput_Loop3 +; Global: Branch target inside ReadPlayerInput: taken when Loop3. +; Local: Part of ReadPlayerInput. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ReadPlayerInput_Loop3: + ldx Zp74 ; CPU:$90D9 PRG:10D9 A6 74 + lda NewButton1 ; CPU:$90DB PRG:10DB A5 2A + and #$01 ; CPU:$90DD PRG:10DD 29 01 + beq ReadPlayerInput_Loop4 ; CPU:$90DF PRG:10DF F0 09 + lda Zp6F,x ; CPU:$90E1 PRG:10E1 B5 6F + cmp $90F7,x ; CPU:$90E3 PRG:10E3 DD F7 90 + bcs ReadPlayerInput_Loop4 ; CPU:$90E6 PRG:10E6 B0 02 + inc Zp6F,x ; CPU:$90E8 PRG:10E8 F6 6F +; ----------------------------------------------------------------------------- +; Routine: ReadPlayerInput_Loop4 +; Global: Branch target inside ReadPlayerInput: taken when Loop4. +; Local: Part of ReadPlayerInput. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ReadPlayerInput_Loop4: + lda NewButton1 ; CPU:$90EA PRG:10EA A5 2A + and #$02 ; CPU:$90EC PRG:10EC 29 02 + beq ReadPlayerInput_Loop5 ; CPU:$90EE PRG:10EE F0 06 + lda Zp6F,x ; CPU:$90F0 PRG:10F0 B5 6F + beq ReadPlayerInput_Loop5 ; CPU:$90F2 PRG:10F2 F0 02 + dec Zp6F,x ; CPU:$90F4 PRG:10F4 D6 6F +; ----------------------------------------------------------------------------- +; Routine: ReadPlayerInput_Loop5 +; Global: Branch target inside ReadPlayerInput: taken when Loop5. +; Local: Part of ReadPlayerInput. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ReadPlayerInput_Loop5: + rts ; CPU:$90F6 PRG:10F6 60 +; ---- data $90F7-$90FB (5 bytes) ---- +; referenced by `cmp $90F7,x` at $90E3 (operand $90F7 falls inside this region) + .byte $01, $03, $02, $04, $02 ; CPU:$90F7 PRG:10F7 01 03 02 04 02 +; ----------------------------------------------------------------------------- +; Routine: Sub_90FC +; Global: Branch target inside Sub: taken when 90FC. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_90FC: + ldy #$00 ; CPU:$90FC PRG:10FC A0 00 + lda Zp6F ; CPU:$90FE PRG:10FE A5 6F + asl a ; CPU:$9100 PRG:1100 0A + tax ; CPU:$9101 PRG:1101 AA + lda $923A,x ; CPU:$9102 PRG:1102 BD 3A 92 + sta Zp11 ; CPU:$9105 PRG:1105 85 11 + lda $923B,x ; CPU:$9107 PRG:1107 BD 3B 92 + sta Zp12 ; CPU:$910A PRG:110A 85 12 + lda $929A,x ; CPU:$910C PRG:110C BD 9A 92 + sta $04E2,y ; CPU:$910F PRG:110F 99 E2 04 + iny ; CPU:$9112 PRG:1112 C8 + lda $929B,x ; CPU:$9113 PRG:1113 BD 9B 92 + sta $04E2,y ; CPU:$9116 PRG:1116 99 E2 04 + iny ; CPU:$9119 PRG:1119 C8 + lda Zp70 ; CPU:$911A PRG:111A A5 70 + asl a ; CPU:$911C PRG:111C 0A + tax ; CPU:$911D PRG:111D AA + lda $923E,x ; CPU:$911E PRG:111E BD 3E 92 + sta Zp13 ; CPU:$9121 PRG:1121 85 13 + lda $923F,x ; CPU:$9123 PRG:1123 BD 3F 92 + sta Zp14 ; CPU:$9126 PRG:1126 85 14 + lda $929E,x ; CPU:$9128 PRG:1128 BD 9E 92 + sta $04E2,y ; CPU:$912B PRG:112B 99 E2 04 + iny ; CPU:$912E PRG:112E C8 + lda $929F,x ; CPU:$912F PRG:112F BD 9F 92 + sta $04E2,y ; CPU:$9132 PRG:1132 99 E2 04 + iny ; CPU:$9135 PRG:1135 C8 + lda Zp71 ; CPU:$9136 PRG:1136 A5 71 + asl a ; CPU:$9138 PRG:1138 0A + tax ; CPU:$9139 PRG:1139 AA + lda $9246,x ; CPU:$913A PRG:113A BD 46 92 + sta Zp15 ; CPU:$913D PRG:113D 85 15 + lda $9247,x ; CPU:$913F PRG:113F BD 47 92 + sta Zp16 ; CPU:$9142 PRG:1142 85 16 + lda $92A6,x ; CPU:$9144 PRG:1144 BD A6 92 + sta $04E2,y ; CPU:$9147 PRG:1147 99 E2 04 + iny ; CPU:$914A PRG:114A C8 + lda $92A7,x ; CPU:$914B PRG:114B BD A7 92 + sta $04E2,y ; CPU:$914E PRG:114E 99 E2 04 + iny ; CPU:$9151 PRG:1151 C8 + ldx #$00 ; CPU:$9152 PRG:1152 A2 00 + lda $924C,x ; CPU:$9154 PRG:1154 BD 4C 92 + sta Zp17 ; CPU:$9157 PRG:1157 85 17 + lda $924D,x ; CPU:$9159 PRG:1159 BD 4D 92 + sta Zp18 ; CPU:$915C PRG:115C 85 18 + lda Zp17 ; CPU:$915E PRG:115E A5 17 + clc ; CPU:$9160 PRG:1160 18 + adc Zp72 ; CPU:$9161 PRG:1161 65 72 + sta Zp17 ; CPU:$9163 PRG:1163 85 17 + lda Zp18 ; CPU:$9165 PRG:1165 A5 18 + adc #$00 ; CPU:$9167 PRG:1167 69 00 + sta Zp18 ; CPU:$9169 PRG:1169 85 18 + lda Zp72 ; CPU:$916B PRG:116B A5 72 + asl a ; CPU:$916D PRG:116D 0A + sta Zp21 ; CPU:$916E PRG:116E 85 21 + lda $92B2,x ; CPU:$9170 PRG:1170 BD B2 92 + sta $04E2,y ; CPU:$9173 PRG:1173 99 E2 04 + lda $92B3,x ; CPU:$9176 PRG:1176 BD B3 92 + sta $04E3,y ; CPU:$9179 PRG:1179 99 E3 04 + lda $04E2,y ; CPU:$917C PRG:117C B9 E2 04 + clc ; CPU:$917F PRG:117F 18 + adc Zp21 ; CPU:$9180 PRG:1180 65 21 + sta $04E2,y ; CPU:$9182 PRG:1182 99 E2 04 + lda $04E3,y ; CPU:$9185 PRG:1185 B9 E3 04 + adc #$00 ; CPU:$9188 PRG:1188 69 00 + sta $04E3,y ; CPU:$918A PRG:118A 99 E3 04 + iny ; CPU:$918D PRG:118D C8 + iny ; CPU:$918E PRG:118E C8 + lda Zp73 ; CPU:$918F PRG:118F A5 73 + asl a ; CPU:$9191 PRG:1191 0A + tax ; CPU:$9192 PRG:1192 AA + lda $924E,x ; CPU:$9193 PRG:1193 BD 4E 92 + sta Zp19 ; CPU:$9196 PRG:1196 85 19 + lda $924F,x ; CPU:$9198 PRG:1198 BD 4F 92 + sta Zp1A ; CPU:$919B PRG:119B 85 1A + lda $92AC,x ; CPU:$919D PRG:119D BD AC 92 + sta $04E2,y ; CPU:$91A0 PRG:11A0 99 E2 04 + iny ; CPU:$91A3 PRG:11A3 C8 + lda $92AD,x ; CPU:$91A4 PRG:11A4 BD AD 92 + sta $04E2,y ; CPU:$91A7 PRG:11A7 99 E2 04 + iny ; CPU:$91AA PRG:11AA C8 + rts ; CPU:$91AB PRG:11AB 60 +; ----------------------------------------------------------------------------- +; Routine: BuildOamBuffer +; Global: Fills the sprite shadow from the actor and bubble tables. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +BuildOamBuffer: + lda #$00 ; CPU:$91AC PRG:11AC A9 00 + sta Zp21 ; CPU:$91AE PRG:11AE 85 21 + lda #$14 ; CPU:$91B0 PRG:11B0 A9 14 + sta Zp1B ; CPU:$91B2 PRG:11B2 85 1B +; ----------------------------------------------------------------------------- +; Routine: BuildOamBuffer_OnCarryClear +; Global: Branch target inside BuildOamBuffer: taken when the addition or subtraction did not carry. +; Local: Part of BuildOamBuffer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +BuildOamBuffer_OnCarryClear: + ldx Zp21 ; CPU:$91B4 PRG:11B4 A6 21 + lda $9234,x ; CPU:$91B6 PRG:11B6 BD 34 92 + sta Zp20 ; CPU:$91B9 PRG:11B9 85 20 + sta Zp23 ; CPU:$91BB PRG:11BB 85 23 + txa ; CPU:$91BD PRG:11BD 8A + asl a ; CPU:$91BE PRG:11BE 0A + tax ; CPU:$91BF PRG:11BF AA + lda Zp11,x ; CPU:$91C0 PRG:11C0 B5 11 + sta ControllerBits ; CPU:$91C2 PRG:11C2 85 05 + lda Zp12,x ; CPU:$91C4 PRG:11C4 B5 12 + sta Zp06 ; CPU:$91C6 PRG:11C6 85 06 + lda $04E2,x ; CPU:$91C8 PRG:11C8 BD E2 04 + sta ControllerByte ; CPU:$91CB PRG:11CB 85 07 + lda $04E3,x ; CPU:$91CD PRG:11CD BD E3 04 + sta Zp08 ; CPU:$91D0 PRG:11D0 85 08 + lda Zp1B ; CPU:$91D2 PRG:11D2 A5 1B + pha ; CPU:$91D4 PRG:11D4 48 + ldy #$00 ; CPU:$91D5 PRG:11D5 A0 00 +; ----------------------------------------------------------------------------- +; Routine: BuildOamBuffer_OnNonzero +; Global: Branch target inside BuildOamBuffer: taken when the tested value is not zero. +; Local: Part of BuildOamBuffer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +BuildOamBuffer_OnNonzero: + ldx Zp1B ; CPU:$91D7 PRG:11D7 A6 1B + lda (ControllerBits),y ; CPU:$91D9 PRG:11D9 B1 05 + sta $0201,x ; CPU:$91DB PRG:11DB 9D 01 02 + inc Zp1B ; CPU:$91DE PRG:11DE E6 1B + inc Zp1B ; CPU:$91E0 PRG:11E0 E6 1B + inc Zp1B ; CPU:$91E2 PRG:11E2 E6 1B + inc Zp1B ; CPU:$91E4 PRG:11E4 E6 1B + iny ; CPU:$91E6 PRG:11E6 C8 + dec Zp20 ; CPU:$91E7 PRG:11E7 C6 20 + bne BuildOamBuffer_OnNonzero ; CPU:$91E9 PRG:11E9 D0 EC + pla ; CPU:$91EB PRG:11EB 68 + sta Zp1B ; CPU:$91EC PRG:11EC 85 1B + ldy #$00 ; CPU:$91EE PRG:11EE A0 00 +; ----------------------------------------------------------------------------- +; Routine: BuildOamBuffer_OnNonzero2 +; Global: Branch target inside BuildOamBuffer: taken when OnNonzero2. +; Local: Part of BuildOamBuffer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +BuildOamBuffer_OnNonzero2: + ldx Zp1B ; CPU:$91F0 PRG:11F0 A6 1B + lda (ControllerByte),y ; CPU:$91F2 PRG:11F2 B1 07 + sta $0200,x ; CPU:$91F4 PRG:11F4 9D 00 02 + iny ; CPU:$91F7 PRG:11F7 C8 + lda (ControllerByte),y ; CPU:$91F8 PRG:11F8 B1 07 + sta $0203,x ; CPU:$91FA PRG:11FA 9D 03 02 + lda Zp74 ; CPU:$91FD PRG:11FD A5 74 + cmp Zp21 ; CPU:$91FF PRG:11FF C5 21 + bne BuildOamBuffer_Loop ; CPU:$9201 PRG:1201 D0 0A + lda Zp75 ; CPU:$9203 PRG:1203 A5 75 + and #$04 ; CPU:$9205 PRG:1205 29 04 + bne BuildOamBuffer_Loop ; CPU:$9207 PRG:1207 D0 04 + lda #$00 ; CPU:$9209 PRG:1209 A9 00 + beq BuildOamBuffer_Loop2 ; CPU:$920B PRG:120B F0 02 +; ----------------------------------------------------------------------------- +; Routine: BuildOamBuffer_Loop +; Global: Branch target inside BuildOamBuffer: taken when the loop repeats. +; Local: Part of BuildOamBuffer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +BuildOamBuffer_Loop: + lda #$03 ; CPU:$920D PRG:120D A9 03 +; ----------------------------------------------------------------------------- +; Routine: BuildOamBuffer_Loop2 +; Global: Branch target inside BuildOamBuffer: taken when Loop2. +; Local: Part of BuildOamBuffer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +BuildOamBuffer_Loop2: + sta $0202,x ; CPU:$920F PRG:120F 9D 02 02 + inc Zp1B ; CPU:$9212 PRG:1212 E6 1B + inc Zp1B ; CPU:$9214 PRG:1214 E6 1B + inc Zp1B ; CPU:$9216 PRG:1216 E6 1B + inc Zp1B ; CPU:$9218 PRG:1218 E6 1B + iny ; CPU:$921A PRG:121A C8 + dec Zp23 ; CPU:$921B PRG:121B C6 23 + bne BuildOamBuffer_OnNonzero2 ; CPU:$921D PRG:121D D0 D1 + inc Zp21 ; CPU:$921F PRG:121F E6 21 + ldx Zp21 ; CPU:$9221 PRG:1221 A6 21 + cpx #$05 ; CPU:$9223 PRG:1223 E0 05 + bcc BuildOamBuffer_OnCarryClear; CPU:$9225 PRG:1225 90 8D + rts ; CPU:$9227 PRG:1227 60 +; ----------------------------------------------------------------------------- +; Routine: ClearSpriteSlots +; Global: Empties the sixteen sprite slots. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearSpriteSlots: + ldx #$00 ; CPU:$9228 PRG:1228 A2 00 + txa ; CPU:$922A PRG:122A 8A +; ----------------------------------------------------------------------------- +; Routine: ClearSpriteSlots_OnNonzero +; Global: Branch target inside ClearSpriteSlots: taken when the tested value is not zero. +; Local: Part of ClearSpriteSlots. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearSpriteSlots_OnNonzero: + sta $0358,x ; CPU:$922B PRG:122B 9D 58 03 + inx ; CPU:$922E PRG:122E E8 + cpx #$10 ; CPU:$922F PRG:122F E0 10 + bne ClearSpriteSlots_OnNonzero ; CPU:$9231 PRG:1231 D0 F8 + rts ; CPU:$9233 PRG:1233 60 +; ---- data $9234-$9620 (1005 bytes) ---- +; referenced by `lda $9403,x` at $8E36 (operand $9403 falls inside this region) +; referenced by `lda $923A,x` at $9102 (operand $923A falls inside this region) +; referenced by `lda $923B,x` at $9107 (operand $923B falls inside this region) +; referenced by `lda $929A,x` at $910C (operand $929A falls inside this region) +; referenced by `lda $929B,x` at $9113 (operand $929B falls inside this region) +; referenced by `lda $923E,x` at $911E (operand $923E falls inside this region) +; ... and 16 further references from decoded code + .byte $08, $01, $07, $01, $05, $05, $54, $92, $5C, $92, $64, $92, $65, $92, $66, $92 ; CPU:$9234 PRG:1234 08 01 07 01 05 05 54 92 5C 92 64 92 65 92 66 92 + .byte $67, $92, $68, $92, $6F, $92, $76, $92, $7D, $92, $86, $92, $8B, $92, $90, $92 ; CPU:$9244 PRG:1244 67 92 68 92 6F 92 76 92 7D 92 86 92 8B 92 90 92 + .byte $31, $50, $4C, $41, $59, $45, $52, $FF, $32, $50, $4C, $41, $59, $45, $52, $53 ; CPU:$9254 PRG:1254 31 50 4C 41 59 45 52 FF 32 50 4C 41 59 45 52 53 + .byte $31, $32, $33, $34, $45, $41, $53, $59, $FF, $FF, $FF, $48, $41, $52, $44, $FF ; CPU:$9264 PRG:1264 31 32 33 34 45 41 53 59 FF FF FF 48 41 52 44 FF + .byte $FF, $FF, $53, $54, $41, $43, $4B, $45, $44, $31, $32, $33, $34, $35, $36, $37 ; CPU:$9274 PRG:1274 FF FF 53 54 41 43 4B 45 44 31 32 33 34 35 36 37 + .byte $38, $39, $54, $55, $4E, $45, $31, $54, $55, $4E, $45, $32, $54, $55, $4E, $45 ; CPU:$9284 PRG:1284 38 39 54 55 4E 45 31 54 55 4E 45 32 54 55 4E 45 + .byte $33, $53, $54, $41, $52, $54, $B4, $92, $C4, $92, $D4, $92, $D6, $92, $D8, $92 ; CPU:$9294 PRG:1294 33 53 54 41 52 54 B4 92 C4 92 D4 92 D6 92 D8 92 + .byte $DA, $92, $DC, $92, $E4, $92, $EC, $92, $04, $93, $0E, $93, $18, $93, $FA, $92 ; CPU:$92A4 PRG:12A4 DA 92 DC 92 E4 92 EC 92 04 93 0E 93 18 93 FA 92 + .byte $38, $30, $38, $40, $38, $48, $38, $50, $38, $58, $38, $60, $38, $68, $38, $70 ; CPU:$92B4 PRG:12B4 38 30 38 40 38 48 38 50 38 58 38 60 38 68 38 70 + .byte $38, $88, $38, $98, $38, $A0, $38, $A8, $38, $B0, $38, $B8, $38, $C0, $38, $C8 ; CPU:$92C4 PRG:12C4 38 88 38 98 38 A0 38 A8 38 B0 38 B8 38 C0 38 C8 + .byte $58, $70, $58, $80, $58, $90, $58, $A0, $78, $30, $78, $38, $78, $40, $78, $48 ; CPU:$92D4 PRG:12D4 58 70 58 80 58 90 58 A0 78 30 78 38 78 40 78 48 + .byte $78, $68, $78, $70, $78, $78, $78, $80, $78, $98, $78, $A0, $78, $A8, $78, $B0 ; CPU:$92E4 PRG:12E4 78 68 78 70 78 78 78 80 78 98 78 A0 78 A8 78 B0 + .byte $78, $B8, $78, $C0, $78, $C8, $98, $70, $98, $80, $98, $90, $98, $A0, $98, $B0 ; CPU:$92F4 PRG:12F4 78 B8 78 C0 78 C8 98 70 98 80 98 90 98 A0 98 B0 + .byte $B8, $30, $B8, $38, $B8, $40, $B8, $48, $B8, $50, $B8, $70, $B8, $78, $B8, $80 ; CPU:$9304 PRG:1304 B8 30 B8 38 B8 40 B8 48 B8 50 B8 70 B8 78 B8 80 + .byte $B8, $88, $B8, $90, $B8, $B0, $B8, $B8, $B8, $C0, $B8, $C8, $B8, $D0, $D8, $53 ; CPU:$9314 PRG:1314 B8 88 B8 90 B8 B0 B8 B8 B8 C0 B8 C8 B8 D0 D8 53 + .byte $03, $6C, $D8, $54, $03, $74, $D8, $41, $03, $7C, $D8, $52, $03, $84, $D8, $54 ; CPU:$9324 PRG:1324 03 6C D8 54 03 74 D8 41 03 7C D8 52 03 84 D8 54 + .byte $03, $8C, $46, $8D, $23, $40, $4E, $BE, $23, $40, $56, $B3, $23, $40, $5E, $B4 ; CPU:$9334 PRG:1334 03 8C 46 8D 23 40 4E BE 23 40 56 B3 23 40 5E B4 + .byte $03, $40, $66, $B5, $03, $40, $6E, $90, $03, $40, $76, $91, $03, $40, $7E, $94 ; CPU:$9344 PRG:1344 03 40 66 B5 03 40 6E 90 03 40 76 91 03 40 7E 94 + .byte $03, $40, $36, $8C, $23, $48, $3E, $95, $23, $48, $46, $96, $23, $48, $4E, $92 ; CPU:$9354 PRG:1354 03 40 36 8C 23 48 3E 95 23 48 46 96 23 48 4E 92 + .byte $03, $48, $56, $93, $03, $48, $5E, $97, $03, $48, $66, $99, $03, $48, $6E, $9A ; CPU:$9364 PRG:1364 03 48 56 93 03 48 5E 97 03 48 66 99 03 48 6E 9A + .byte $03, $48, $76, $9C, $03, $48, $7E, $9D, $03, $48, $86, $98, $03, $48, $2E, $8B ; CPU:$9374 PRG:1374 03 48 76 9C 03 48 7E 9D 03 48 86 98 03 48 2E 8B + .byte $23, $50, $36, $9B, $23, $50, $3E, $9E, $23, $50, $46, $9F, $03, $50, $76, $A0 ; CPU:$9384 PRG:1384 23 50 36 9B 23 50 3E 9E 23 50 46 9F 03 50 76 A0 + .byte $03, $50, $7E, $A1, $03, $50, $86, $A2, $03, $50, $8E, $A3, $03, $50, $F8, $8E ; CPU:$9394 PRG:1394 03 50 7E A1 03 50 86 A2 03 50 8E A3 03 50 F8 8E + .byte $03, $58, $2E, $A4, $23, $58, $7E, $A5, $03, $58, $86, $A6, $03, $58, $8E, $A8 ; CPU:$93A4 PRG:13A4 03 58 2E A4 23 58 7E A5 03 58 86 A6 03 58 8E A8 + .byte $03, $58, $96, $A9, $03, $58, $8E, $AA, $03, $60, $97, $AB, $03, $60, $9E, $AC ; CPU:$93B4 PRG:13B4 03 58 96 A9 03 58 8E AA 03 60 97 AB 03 60 9E AC + .byte $03, $60, $96, $AE, $03, $68, $9E, $AD, $03, $68, $9E, $AF, $03, $70, $4E, $B0 ; CPU:$93C4 PRG:13C4 03 60 96 AE 03 68 9E AD 03 68 9E AF 03 70 4E B0 + .byte $03, $AA, $56, $B1, $03, $AA, $5E, $A7, $03, $AA, $66, $B2, $03, $AA, $6E, $B6 ; CPU:$93D4 PRG:13D4 03 AA 56 B1 03 AA 5E A7 03 AA 66 B2 03 AA 6E B6 + .byte $03, $AA, $76, $B7, $03, $AA, $7E, $B8, $03, $AA, $56, $BD, $03, $B2, $5E, $B9 ; CPU:$93E4 PRG:13E4 03 AA 76 B7 03 AA 7E B8 03 AA 56 BD 03 B2 5E B9 + .byte $03, $B2, $66, $BA, $03, $B2, $6E, $BB, $03, $B2, $76, $BC, $03, $B2, $FF, $54 ; CPU:$93F4 PRG:13F4 03 B2 66 BA 03 B2 6E BB 03 B2 76 BC 03 B2 FF 54 + .byte $4F, $4D, $31, $30, $30, $30, $FF, $32, $30, $30, $30, $30, $4A, $4F, $45, $FF ; CPU:$9404 PRG:1404 4F 4D 31 30 30 30 FF 32 30 30 30 30 4A 4F 45 FF + .byte $35, $30, $30, $FF, $31, $30, $30, $30, $30, $54, $52, $49, $FF, $34, $35, $30 ; CPU:$9414 PRG:1414 35 30 30 FF 31 30 30 30 30 54 52 49 FF 34 35 30 + .byte $FF, $FF, $39, $30, $30, $30, $48, $40, $59, $FF, $34, $30, $30, $FF, $FF, $38 ; CPU:$9424 PRG:1424 FF FF 39 30 30 30 48 40 59 FF 34 30 30 FF FF 38 + .byte $30, $30, $30, $4A, $55, $4E, $FF, $33, $35, $30, $FF, $FF, $37, $30, $30, $30 ; CPU:$9434 PRG:1434 30 30 30 4A 55 4E FF 33 35 30 FF FF 37 30 30 30 + .byte $4A, $41, $43, $FF, $33, $30, $30, $FF, $FF, $36, $30, $30, $30, $44, $40, $48 ; CPU:$9444 PRG:1444 4A 41 43 FF 33 30 30 FF FF 36 30 30 30 44 40 48 + .byte $FF, $32, $35, $30, $FF, $FF, $35, $30, $30, $30, $4A, $49, $4E, $FF, $32, $30 ; CPU:$9454 PRG:1454 FF 32 35 30 FF FF 35 30 30 30 4A 49 4E FF 32 30 + .byte $30, $FF, $FF, $34, $30, $30, $30, $42, $4F, $42, $FF, $31, $35, $30, $FF, $FF ; CPU:$9464 PRG:1464 30 FF FF 34 30 30 30 42 4F 42 FF 31 35 30 FF FF + .byte $33, $30, $30, $30, $4B, $41, $54, $FF, $31, $30, $30, $FF, $FF, $32, $30, $30 ; CPU:$9474 PRG:1474 33 30 30 30 4B 41 54 FF 31 30 30 FF FF 32 30 30 + .byte $30, $41, $42, $43, $44, $45, $46, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F ; CPU:$9484 PRG:1484 30 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F + .byte $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $5A, $40, $EF, $FF, $F1, $F2 ; CPU:$9494 PRG:1494 50 51 52 53 54 55 56 57 58 59 5A 40 EF FF F1 F2 + .byte $F2, $F1, $FF, $D7, $DF, $DC, $FF, $E8, $E2, $D7, $DE, $E0, $E1, $E3, $DB, $E7 ; CPU:$94A4 PRG:14A4 F2 F1 FF D7 DF DC FF E8 E2 D7 DE E0 E1 E3 DB E7 + .byte $E5, $EA, $DD, $E6, $00, $A5, $6C, $20, $73, $81, $CA, $94, $0E, $95, $1D, $95 ; CPU:$94B4 PRG:14B4 E5 EA DD E6 00 A5 6C 20 73 81 CA 94 0E 95 1D 95 + .byte $2C, $95, $64, $95, $81, $95, $E6, $97, $A5, $97, $C9, $80, $90, $3B, $A9, $03 ; CPU:$94C4 PRG:14C4 2C 95 64 95 81 95 E6 97 A5 97 C9 80 90 3B A9 03 + .byte $20, $04, $80, $A9, $01, $8D, $DD, $00, $A9, $07, $8D, $DE, $00, $A9, $05, $20 ; CPU:$94D4 PRG:14D4 20 04 80 A9 01 8D DD 00 A9 07 8D DE 00 A9 05 20 + .byte $04, $80, $A9, $00, $8D, $DD, $00, $85, $97, $A5, $95, $D0, $03, $20, $4E, $C0 ; CPU:$94E4 PRG:14E4 04 80 A9 00 8D DD 00 85 97 A5 95 D0 03 20 4E C0 + .byte $A5, $96, $D0, $03, $20, $B4, $AE, $20, $88, $81, $20, $28, $92, $E6, $6C, $A5 ; CPU:$94F4 PRG:14F4 A5 96 D0 03 20 B4 AE 20 88 81 20 28 92 E6 6C A5 + .byte $71, $C9, $01, $D0, $04, $A9, $04, $85, $6C, $60, $A5, $95, $F0, $03, $E6, $6C ; CPU:$9504 PRG:1504 71 C9 01 D0 04 A9 04 85 6C 60 A5 95 F0 03 E6 6C + .byte $60, $A9, $00, $85, $34, $20, $57, $C0, $60, $A5, $96, $F0, $03, $E6, $6C, $60 ; CPU:$9514 PRG:1514 60 A9 00 85 34 20 57 C0 60 A5 96 F0 03 E6 6C 60 + .byte $A9, $01, $85, $34, $20, $BD, $AE, $60, $A2, $00, $A0, $00, $A5, $98, $F0, $02 ; CPU:$9524 PRG:1524 A9 01 85 34 20 BD AE 60 A2 00 A0 00 A5 98 F0 02 + .byte $A2, $08, $BD, $54, $95, $99, $38, $03, $E8, $C8, $C0, $08, $90, $F4, $A9, $00 ; CPU:$9534 PRG:1534 A2 08 BD 54 95 99 38 03 E8 C8 C0 08 90 F4 A9 00 + .byte $99, $38, $03, $A5, $6F, $D0, $06, $EE, $38, $03, $EE, $38, $03, $E6, $6C, $60 ; CPU:$9544 PRG:1544 99 38 03 A5 6F D0 06 EE 38 03 EE 38 03 E6 6C 60 + .byte $87, $21, $0B, $F8, $D9, $23, $1B, $F8, $97, $21, $0B, $F8, $DD, $23, $1B, $F8 ; CPU:$9554 PRG:1554 87 21 0B F8 D9 23 1B F8 97 21 0B F8 DD 23 1B F8 + .byte $E6, $97, $A5, $97, $C9, $F0, $90, $14, $A9, $00, $85, $97, $E6, $6C, $A5, $95 ; CPU:$9564 PRG:1564 E6 97 A5 97 C9 F0 90 14 A9 00 85 97 E6 6C A5 95 + .byte $D0, $03, $20, $61, $C0, $A5, $96, $D0, $03, $20, $C7, $AE, $60, $E6, $5B, $E6 ; CPU:$9574 PRG:1574 D0 03 20 61 C0 A5 96 D0 03 20 C7 AE 60 E6 5B E6 + .byte $5D, $A5, $5B, $A4, $98, $F0, $02, $A5, $5D, $4A, $B0, $0F, $A9, $04, $85, $6A ; CPU:$9584 PRG:1584 5D A5 5B A4 98 F0 02 A5 5D 4A B0 0F A9 04 85 6A + .byte $A9, $00, $85, $6C, $20, $D2, $95, $20, $EE, $95, $60, $85, $20, $A5, $98, $D0 ; CPU:$9594 PRG:1594 A9 00 85 6C 20 D2 95 20 EE 95 60 85 20 A5 98 D0 + .byte $06, $20, $0B, $96, $4C, $AE, $95, $20, $16, $96, $C5, $91, $90, $11, $85, $91 ; CPU:$95A4 PRG:15A4 06 20 0B 96 4C AE 95 20 16 96 C5 91 90 11 85 91 + .byte $20, $D2, $95, $20, $EE, $95, $A9, $00, $85, $6C, $A9, $08, $85, $6A, $60, $20 ; CPU:$95B4 PRG:15B4 20 D2 95 20 EE 95 A9 00 85 6C A9 08 85 6A 60 20 + .byte $D2, $95, $20, $EE, $95, $A9, $04, $85, $6A, $A9, $00, $85, $6C, $60, $A6, $5B ; CPU:$95C4 PRG:15C4 D2 95 20 EE 95 A9 04 85 6A A9 00 85 6C 60 A6 5B + .byte $E0, $05, $90, $10, $E6, $5A, $A5, $5A, $C9, $04, $90, $04, $A9, $00, $85, $5A ; CPU:$95D4 PRG:15D4 E0 05 90 10 E6 5A A5 5A C9 04 90 04 A9 00 85 5A + .byte $A2, $00, $86, $5B, $BD, $75, $F8, $85, $35, $60, $A6, $5D, $E0, $05, $90, $10 ; CPU:$95E4 PRG:15E4 A2 00 86 5B BD 75 F8 85 35 60 A6 5D E0 05 90 10 + .byte $E6, $5C, $A5, $5C, $C9, $04, $90, $04, $A9, $00, $85, $5C, $A2, $00, $86, $5D ; CPU:$95F4 PRG:15F4 E6 5C A5 5C C9 04 90 04 A9 00 85 5C A2 00 86 5D + .byte $BD, $75, $F8, $8D, $CB, $00, $60, $A5, $5A, $0A, $18, $65, $5A, $65, $20, $29 ; CPU:$9604 PRG:1604 BD 75 F8 8D CB 00 60 A5 5A 0A 18 65 5A 65 20 29 + .byte $0F, $60, $A5, $5C, $0A, $18, $65, $5C, $65, $20, $29, $0F, $60 ; CPU:$9614 PRG:1614 0F 60 A5 5C 0A 18 65 5C 65 20 29 0F 60 +; ----------------------------------------------------------------------------- +; Routine: TickLevelTimer +; Global: Counts the level timer and resets it when it runs out. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickLevelTimer: + inc Zp6C ; CPU:$9621 PRG:1621 E6 6C + cmp #$80 ; CPU:$9623 PRG:1623 C9 80 + bcc TickLevelTimer_Loop ; CPU:$9625 PRG:1625 90 06 + lda #$00 ; CPU:$9627 PRG:1627 A9 00 + sta Zp6C ; CPU:$9629 PRG:1629 85 6C + sta GameMode ; CPU:$962B PRG:162B 85 6A +; ----------------------------------------------------------------------------- +; Routine: TickLevelTimer_Loop +; Global: Branch target inside TickLevelTimer: taken when the loop repeats. +; Local: Part of TickLevelTimer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickLevelTimer_Loop: + rts ; CPU:$962D PRG:162D 60 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTable +; Global: Copies a sprite table out of the fixed bank. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +LoadSpriteTable: + lda Zp6C ; CPU:$962E PRG:162E A5 6C + bne SetGraphicsMode ; CPU:$9630 PRG:1630 D0 4A + ldx #$00 ; CPU:$9632 PRG:1632 A2 00 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTable_OnCarryClear +; Global: Branch target inside LoadSpriteTable: taken when the addition or subtraction did not carry. +; Local: Part of LoadSpriteTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +LoadSpriteTable_OnCarryClear: + lda $F847,x ; CPU:$9634 PRG:1634 BD 47 F8 + sta $0338,x ; CPU:$9637 PRG:1637 9D 38 03 + inx ; CPU:$963A PRG:163A E8 + cpx #$08 ; CPU:$963B PRG:163B E0 08 + bcc LoadSpriteTable_OnCarryClear ; CPU:$963D PRG:163D 90 F5 + lda #$00 ; CPU:$963F PRG:163F A9 00 + sta $0338,x ; CPU:$9641 PRG:1641 9D 38 03 + lda Zp6F ; CPU:$9644 PRG:1644 A5 6F + beq LoadSpriteTable_Loop ; CPU:$9646 PRG:1646 F0 06 + dec $0338 ; CPU:$9648 PRG:1648 CE 38 03 + dec $0338 ; CPU:$964B PRG:164B CE 38 03 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTable_Loop +; Global: Branch target inside LoadSpriteTable: taken when the loop repeats. +; Local: Part of LoadSpriteTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +LoadSpriteTable_Loop: + ldx #$00 ; CPU:$964E PRG:164E A2 00 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTable_OnNonzero +; Global: Branch target inside LoadSpriteTable: taken when the tested value is not zero. +; Local: Part of LoadSpriteTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +LoadSpriteTable_OnNonzero: + lda $9674,x ; CPU:$9650 PRG:1650 BD 74 96 + sta $0204,x ; CPU:$9653 PRG:1653 9D 04 02 + inx ; CPU:$9656 PRG:1656 E8 + cpx #$08 ; CPU:$9657 PRG:1657 E0 08 + bne LoadSpriteTable_OnNonzero ; CPU:$9659 PRG:1659 D0 F5 + lda Zp9A ; CPU:$965B PRG:165B A5 9A + clc ; CPU:$965D PRG:165D 18 + adc #$30 ; CPU:$965E PRG:165E 69 30 + sta $0205 ; CPU:$9660 PRG:1660 8D 05 02 + lda Zp6F ; CPU:$9663 PRG:1663 A5 6F + beq LoadSpriteTable_Loop2 ; CPU:$9665 PRG:1665 F0 0A + lda #$5C ; CPU:$9667 PRG:1667 A9 5C + sta $0207 ; CPU:$9669 PRG:1669 8D 07 02 + lda #$18 ; CPU:$966C PRG:166C A9 18 + sta $020B ; CPU:$966E PRG:166E 8D 0B 02 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTable_Loop2 +; Global: Branch target inside LoadSpriteTable: taken when Loop2. +; Local: Part of LoadSpriteTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +LoadSpriteTable_Loop2: + inc Zp6C ; CPU:$9671 PRG:1671 E6 6C + rts ; CPU:$9673 PRG:1673 60 +; ---- data $9674-$967B (8 bytes) ---- +; referenced by `lda $9674,x` at $9650 (operand $9674 falls inside this region) + .byte $90, $30, $21, $78, $80, $AE, $23, $34 ; CPU:$9674 PRG:1674 90 30 21 78 80 AE 23 34 +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode +; Global: Switches the PPU between the background and the overlay. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode: + lda NewButton1 ; CPU:$967C PRG:167C A5 2A + and #$08 ; CPU:$967E PRG:167E 29 08 + beq SetGraphicsMode_Loop ; CPU:$9680 PRG:1680 F0 05 + lda #$80 ; CPU:$9682 PRG:1682 A9 80 + sta $0208 ; CPU:$9684 PRG:1684 8D 08 02 +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_Loop +; Global: Branch target inside SetGraphicsMode: taken when the loop repeats. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_Loop: + lda NewButton1 ; CPU:$9687 PRG:1687 A5 2A + and #$04 ; CPU:$9689 PRG:1689 29 04 + beq SetGraphicsMode_Loop2 ; CPU:$968B PRG:168B F0 05 + lda #$88 ; CPU:$968D PRG:168D A9 88 + sta $0208 ; CPU:$968F PRG:168F 8D 08 02 +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_Loop2 +; Global: Branch target inside SetGraphicsMode: taken when Loop2. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_Loop2: + ldx #$AE ; CPU:$9692 PRG:1692 A2 AE + lda FrameCounter ; CPU:$9694 PRG:1694 A5 31 + and #$10 ; CPU:$9696 PRG:1696 29 10 + bne SetGraphicsMode_Loop3 ; CPU:$9698 PRG:1698 D0 02 + ldx #$FF ; CPU:$969A PRG:169A A2 FF +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_Loop3 +; Global: Branch target inside SetGraphicsMode: taken when Loop3. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_Loop3: + stx $0209 ; CPU:$969C PRG:169C 8E 09 02 + lda NewButton1 ; CPU:$969F PRG:169F A5 2A + and #$80 ; CPU:$96A1 PRG:16A1 29 80 + bne SetGraphicsMode_Loop4 ; CPU:$96A3 PRG:16A3 D0 01 + rts ; CPU:$96A5 PRG:16A5 60 +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_Loop4 +; Global: Branch target inside SetGraphicsMode: taken when Loop4. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_Loop4: + dec Zp9A ; CPU:$96A6 PRG:16A6 C6 9A + dec $0205 ; CPU:$96A8 PRG:16A8 CE 05 02 + ldx #$00 ; CPU:$96AB PRG:16AB A2 00 +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_OnCarryClear +; Global: Branch target inside SetGraphicsMode: taken when the addition or subtraction did not carry. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_OnCarryClear: + lda $F869,x ; CPU:$96AD PRG:16AD BD 69 F8 + sta $0338,x ; CPU:$96B0 PRG:16B0 9D 38 03 + inx ; CPU:$96B3 PRG:16B3 E8 + cpx #$0C ; CPU:$96B4 PRG:16B4 E0 0C + bcc SetGraphicsMode_OnCarryClear ; CPU:$96B6 PRG:16B6 90 F5 + lda Zp6F ; CPU:$96B8 PRG:16B8 A5 6F + beq SetGraphicsMode_Loop5 ; CPU:$96BA PRG:16BA F0 0C + dec $0338 ; CPU:$96BC PRG:16BC CE 38 03 + dec $0338 ; CPU:$96BF PRG:16BF CE 38 03 + dec $033C ; CPU:$96C2 PRG:16C2 CE 3C 03 + dec $033C ; CPU:$96C5 PRG:16C5 CE 3C 03 +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_Loop5 +; Global: Branch target inside SetGraphicsMode: taken when Loop5. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_Loop5: + lda $0208 ; CPU:$96C8 PRG:16C8 AD 08 02 + cmp #$88 ; CPU:$96CB PRG:16CB C9 88 + beq SetGraphicsMode_Loop6 ; CPU:$96CD PRG:16CD F0 0A + lda #$06 ; CPU:$96CF PRG:16CF A9 06 + sta GameMode ; CPU:$96D1 PRG:16D1 85 6A + lda #$00 ; CPU:$96D3 PRG:16D3 A9 00 + sta Zp6C ; CPU:$96D5 PRG:16D5 85 6C + beq SetGraphicsMode_Loop7 ; CPU:$96D7 PRG:16D7 F0 06 +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_Loop6 +; Global: Branch target inside SetGraphicsMode: taken when Loop6. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_Loop6: + jsr Sub_96E3 ; CPU:$96D9 PRG:16D9 20 E3 96 +; ---- data $96DC-$96DE (3 bytes) ---- + .byte $20, $F3, $96 ; CPU:$96DC PRG:16DC 20 F3 96 +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_Loop7 +; Global: Branch target inside SetGraphicsMode: taken when Loop7. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_Loop7: + jsr ClearOamShadow ; CPU:$96DF PRG:16DF 20 88 81 + rts ; CPU:$96E2 PRG:16E2 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_96E3 +; Global: Branch target inside Sub: taken when 96E3. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_96E3: + jsr Sub_9703 ; CPU:$96E3 PRG:16E3 20 03 97 + lda #$00 ; CPU:$96E6 PRG:16E6 A9 00 + sta Zp95 ; CPU:$96E8 PRG:16E8 85 95 + sta Zp6C ; CPU:$96EA PRG:16EA 85 6C + lda #$03 ; CPU:$96EC PRG:16EC A9 03 + sta GameMode ; CPU:$96EE PRG:16EE 85 6A + jmp Sub_C061 ; CPU:$96F0 PRG:16F0 4C 61 C0 +; ---- data $96F3-$9702 (16 bytes) ---- + .byte $20, $0F, $97, $A9, $00, $85, $96, $85, $6C, $A9, $03, $85, $6A, $4C, $C7, $AE ; CPU:$96F3 PRG:16F3 20 0F 97 A9 00 85 96 85 6C A9 03 85 6A 4C C7 AE +; ----------------------------------------------------------------------------- +; Routine: Sub_9703 +; Global: Branch target inside Sub: taken when 9703. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_9703: + lda #$00 ; CPU:$9703 PRG:1703 A9 00 + tax ; CPU:$9705 PRG:1705 AA +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_OnCarryClear2 +; Global: Branch target inside SetGraphicsMode: taken when OnCarryClear2. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_OnCarryClear2: + sta $05AC,x ; CPU:$9706 PRG:1706 9D AC 05 + inx ; CPU:$9709 PRG:1709 E8 + cpx #$0A ; CPU:$970A PRG:170A E0 0A + bcc SetGraphicsMode_OnCarryClear2 ; CPU:$970C PRG:170C 90 F8 + rts ; CPU:$970E PRG:170E 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_970F +; Global: Branch target inside Sub: taken when 970F. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_970F: + lda #$00 ; CPU:$970F PRG:170F A9 00 + tax ; CPU:$9711 PRG:1711 AA +; ----------------------------------------------------------------------------- +; Routine: SetGraphicsMode_OnCarryClear3 +; Global: Branch target inside SetGraphicsMode: taken when OnCarryClear3. +; Local: Part of SetGraphicsMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetGraphicsMode_OnCarryClear3: + sta $05B6,x ; CPU:$9712 PRG:1712 9D B6 05 + inx ; CPU:$9715 PRG:1715 E8 + cpx #$0A ; CPU:$9716 PRG:1716 E0 0A + bcc SetGraphicsMode_OnCarryClear3 ; CPU:$9718 PRG:1718 90 F8 + rts ; CPU:$971A PRG:171A 60 +; ---- data $971B-$9785 (107 bytes) ---- + .byte $A5, $26, $C9, $C0, $D0, $28, $A9, $00, $85, $95, $85, $6A, $A9, $05, $85, $61 ; CPU:$971B PRG:171B A5 26 C9 C0 D0 28 A9 00 85 95 85 6A A9 05 85 61 + .byte $A9, $08, $85, $60, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A5, $73 ; CPU:$972B PRG:172B A9 08 85 60 A9 03 20 04 80 A9 01 8D DD 00 A5 73 + .byte $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $60, $A5, $27 ; CPU:$973B PRG:173B 8D DE 00 A9 05 20 04 80 A9 00 8D DD 00 60 A5 27 + .byte $C9, $C0, $D0, $22, $A9, $00, $85, $96, $85, $6A, $A9, $03, $20, $04, $80, $A9 ; CPU:$974B PRG:174B C9 C0 D0 22 A9 00 85 96 85 6A A9 03 20 04 80 A9 + .byte $01, $8D, $DD, $00, $A5, $73, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9, $00 ; CPU:$975B PRG:175B 01 8D DD 00 A5 73 8D DE 00 A9 05 20 04 80 A9 00 + .byte $8D, $DD, $00, $4C, $AA, $AA, $A5, $31, $29, $3F, $D0, $0C, $C6, $6E, $D0, $08 ; CPU:$976B PRG:176B 8D DD 00 4C AA AA A5 31 29 3F D0 0C C6 6E D0 08 + .byte $A9, $00, $85, $6C, $A9, $06, $85, $6A, $60, $10, $11 ; CPU:$977B PRG:177B A9 00 85 6C A9 06 85 6A 60 10 11 +; ----------------------------------------------------------------------------- +; Routine: UpdateGameState +; Global: Runs the mode machine: title, demo, play and game over. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateGameState: + lda $05E5 ; CPU:$9786 PRG:1786 AD E5 05 + beq UpdateGameState_Loop2 ; CPU:$9789 PRG:1789 F0 23 + lda NewButton1 ; CPU:$978B PRG:178B A5 2A + and #$10 ; CPU:$978D PRG:178D 29 10 + beq UpdateGameState_Loop ; CPU:$978F PRG:178F F0 15 + lda PPUSTATUS ; CPU:$9791 PRG:1791 AD 02 20 + lda Zp02 ; CPU:$9794 PRG:1794 A5 02 + and #$E7 ; CPU:$9796 PRG:1796 29 E7 + sta PPUMASK ; CPU:$9798 PRG:1798 8D 01 20 + lda #$00 ; CPU:$979B PRG:179B A9 00 + sta Zp6C ; CPU:$979D PRG:179D 85 6C + sta Zp6F ; CPU:$979F PRG:179F 85 6F + lda #$02 ; CPU:$97A1 PRG:17A1 A9 02 + sta GameMode ; CPU:$97A3 PRG:17A3 85 6A + rts ; CPU:$97A5 PRG:17A5 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateGameState_Loop +; Global: Branch target inside UpdateGameState: taken when the loop repeats. +; Local: Part of UpdateGameState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateGameState_Loop: + lda $05E6 ; CPU:$97A6 PRG:17A6 AD E6 05 + bne UpdateGameState_Loop2 ; CPU:$97A9 PRG:17A9 D0 03 + jmp InitializeGame ; CPU:$97AB PRG:17AB 4C 36 80 +; ----------------------------------------------------------------------------- +; Routine: UpdateGameState_Loop2 +; Global: Branch target inside UpdateGameState: taken when Loop2. +; Local: Part of UpdateGameState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateGameState_Loop2: + lda NewButton1 ; CPU:$97AE PRG:17AE A5 2A + and #$10 ; CPU:$97B0 PRG:17B0 29 10 + bne UpdateGameState_Loop3 ; CPU:$97B2 PRG:17B2 D0 06 + lda NewButton2 ; CPU:$97B4 PRG:17B4 A5 2B + and #$10 ; CPU:$97B6 PRG:17B6 29 10 + beq UpdateGameState_Loop4 ; CPU:$97B8 PRG:17B8 F0 09 +; ----------------------------------------------------------------------------- +; Routine: UpdateGameState_Loop3 +; Global: Branch target inside UpdateGameState: taken when Loop3. +; Local: Part of UpdateGameState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateGameState_Loop3: + lda Zp3E ; CPU:$97BA PRG:17BA A5 3E + eor #$01 ; CPU:$97BC PRG:17BC 49 01 + sta Zp3E ; CPU:$97BE PRG:17BE 85 3E + jsr SetTablePointer ; CPU:$97C0 PRG:17C0 20 1B 98 +; ----------------------------------------------------------------------------- +; Routine: UpdateGameState_Loop4 +; Global: Branch target inside UpdateGameState: taken when Loop4. +; Local: Part of UpdateGameState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateGameState_Loop4: + lda Zp3E ; CPU:$97C3 PRG:17C3 A5 3E + beq UpdateGameState_Loop5 ; CPU:$97C5 PRG:17C5 F0 01 + rts ; CPU:$97C7 PRG:17C7 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateGameState_Loop5 +; Global: Branch target inside UpdateGameState: taken when Loop5. +; Local: Part of UpdateGameState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateGameState_Loop5: + lda Zp6F ; CPU:$97C8 PRG:17C8 A5 6F + bne ResetLevelTimers_Loop ; CPU:$97CA PRG:17CA D0 27 + lda Zp95 ; CPU:$97CC PRG:17CC A5 95 + bne UpdateGameState_Loop7 ; CPU:$97CE PRG:17CE D0 0F + lda #$00 ; CPU:$97D0 PRG:17D0 A9 00 + sta Zp34 ; CPU:$97D2 PRG:17D2 85 34 + jsr Sub_CBC4 ; CPU:$97D4 PRG:17D4 20 C4 CB + lda Zp37 ; CPU:$97D7 PRG:17D7 A5 37 + bne UpdateGameState_Loop6 ; CPU:$97D9 PRG:17D9 D0 03 + jsr SoundTimerTick ; CPU:$97DB PRG:17DB 20 68 BB +; ----------------------------------------------------------------------------- +; Routine: UpdateGameState_Loop6 +; Global: Branch target inside UpdateGameState: taken when Loop6. +; Local: Part of UpdateGameState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateGameState_Loop6: + rts ; CPU:$97DE PRG:17DE 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateGameState_Loop7 +; Global: Branch target inside UpdateGameState: taken when Loop7. +; Local: Part of UpdateGameState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateGameState_Loop7: + lda #$03 ; CPU:$97DF PRG:17DF A9 03 + jsr BankedCall ; CPU:$97E1 PRG:17E1 20 04 80 +; ---- data $97E4-$97EB (8 bytes) ---- + .byte $A2, $0B, $A5, $9A, $D0, $02, $A2, $06 ; CPU:$97E4 PRG:17E4 A2 0B A5 9A D0 02 A2 06 +; ----------------------------------------------------------------------------- +; Routine: ResetLevelTimers +; Global: Clears the level timers when a new level starts. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetLevelTimers: + stx GameMode ; CPU:$97EC PRG:17EC 86 6A + lda #$00 ; CPU:$97EE PRG:17EE A9 00 + sta Zp6C ; CPU:$97F0 PRG:17F0 85 6C + rts ; CPU:$97F2 PRG:17F2 60 +; ----------------------------------------------------------------------------- +; Routine: ResetLevelTimers_Loop +; Global: Branch target inside ResetLevelTimers: taken when the loop repeats. +; Local: Part of ResetLevelTimers. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetLevelTimers_Loop: + lda #$00 ; CPU:$97F3 PRG:17F3 A9 00 + sta Zp34 ; CPU:$97F5 PRG:17F5 85 34 + jsr Sub_CBC4 ; CPU:$97F7 PRG:17F7 20 C4 CB + lda #$01 ; CPU:$97FA PRG:17FA A9 01 + sta Zp34 ; CPU:$97FC PRG:17FC 85 34 + jsr Sub_A78F ; CPU:$97FE PRG:17FE 20 8F A7 + lda Zp95 ; CPU:$9801 PRG:1801 A5 95 + beq ResetLevelTimers_Loop2 ; CPU:$9803 PRG:1803 F0 15 + cmp Zp96 ; CPU:$9805 PRG:1805 C5 96 + bne ResetLevelTimers_Loop2 ; CPU:$9807 PRG:1807 D0 11 + lda #$03 ; CPU:$9809 PRG:1809 A9 03 + jsr BankedCall ; CPU:$980B PRG:180B 20 04 80 +; ---- data $980E-$9819 (12 bytes) ---- + .byte $A9, $0C, $85, $6A, $A9, $00, $85, $6C, $A9, $05, $85, $6E ; CPU:$980E PRG:180E A9 0C 85 6A A9 00 85 6C A9 05 85 6E +; ----------------------------------------------------------------------------- +; Routine: ResetLevelTimers_Loop2 +; Global: Branch target inside ResetLevelTimers: taken when Loop2. +; Local: Part of ResetLevelTimers. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetLevelTimers_Loop2: + rts ; CPU:$981A PRG:181A 60 +; ----------------------------------------------------------------------------- +; Routine: SetTablePointer +; Global: Points the data pointer at a table in RAM. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetTablePointer: + lda #$0C ; CPU:$981B PRG:181B A9 0C + sta Zp11 ; CPU:$981D PRG:181D 85 11 + lda #$0A ; CPU:$981F PRG:181F A9 0A + sta Zp12 ; CPU:$9821 PRG:1821 85 12 + lda Zp3E ; CPU:$9823 PRG:1823 A5 3E + bne SetTablePointer_Loop ; CPU:$9825 PRG:1825 D0 02 + sta Zp11 ; CPU:$9827 PRG:1827 85 11 +; ----------------------------------------------------------------------------- +; Routine: SetTablePointer_Loop +; Global: Branch target inside SetTablePointer: taken when the loop repeats. +; Local: Part of SetTablePointer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetTablePointer_Loop: + jsr Sub_855D ; CPU:$9829 PRG:1829 20 5D 85 + lda #$F8 ; CPU:$982C PRG:182C A9 F8 + ldx #$02 ; CPU:$982E PRG:182E A2 02 +; ----------------------------------------------------------------------------- +; Routine: SetTablePointer_OnCarryClear +; Global: Branch target inside SetTablePointer: taken when the addition or subtraction did not carry. +; Local: Part of SetTablePointer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetTablePointer_OnCarryClear: + sta $0398,x ; CPU:$9830 PRG:1830 9D 98 03 + inx ; CPU:$9833 PRG:1833 E8 + cpx #$0A ; CPU:$9834 PRG:1834 E0 0A + bcc SetTablePointer_OnCarryClear ; CPU:$9836 PRG:1836 90 F8 + lda Zp6F ; CPU:$9838 PRG:1838 A5 6F + beq SetTablePointer_Loop2 ; CPU:$983A PRG:183A F0 05 + lda #$28 ; CPU:$983C PRG:183C A9 28 + sta $0392 ; CPU:$983E PRG:183E 8D 92 03 +; ----------------------------------------------------------------------------- +; Routine: SetTablePointer_Loop2 +; Global: Branch target inside SetTablePointer: taken when Loop2. +; Local: Part of SetTablePointer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetTablePointer_Loop2: + rts ; CPU:$9841 PRG:1841 60 +; ---- data $9842-$9FFF (1982 bytes) ---- + .byte $A5, $91, $4A, $18, $69, $02, $AA, $20, $84, $90, $A9, $99, $8D, $DE, $03, $A5 ; CPU:$9842 PRG:1842 A5 91 4A 18 69 02 AA 20 84 90 A9 99 8D DE 03 A5 + .byte $6C, $F0, $03, $4C, $EC, $98, $E6, $6C, $20, $88, $81, $A5, $91, $18, $69, $04 ; CPU:$9852 PRG:1852 6C F0 03 4C EC 98 E6 6C 20 88 81 A5 91 18 69 04 + .byte $85, $2E, $A9, $00, $20, $04, $80, $20, $28, $92, $A5, $91, $D0, $21, $A9, $0D ; CPU:$9862 PRG:1862 85 2E A9 00 20 04 80 20 28 92 A5 91 D0 21 A9 0D + .byte $85, $11, $A9, $00, $85, $12, $20, $5D, $85, $A9, $0E, $85, $11, $A9, $01, $85 ; CPU:$9872 PRG:1872 85 11 A9 00 85 12 20 5D 85 A9 0E 85 11 A9 01 85 + .byte $12, $20, $5D, $85, $A9, $0F, $85, $11, $A9, $02, $85, $12, $20, $5D, $85, $A2 ; CPU:$9882 PRG:1882 12 20 5D 85 A9 0F 85 11 A9 02 85 12 20 5D 85 A2 + .byte $81, $A5, $91, $6A, $90, $02, $A2, $91, $86, $01, $A9, $00, $8D, $01, $02, $A9 ; CPU:$9892 PRG:1892 81 A5 91 6A 90 02 A2 91 86 01 A9 00 8D 01 02 A9 + .byte $80, $8D, $03, $02, $A9, $A6, $8D, $00, $02, $A9, $E3, $8D, $02, $02, $A9, $00 ; CPU:$98A2 PRG:18A2 80 8D 03 02 A9 A6 8D 00 02 A9 E3 8D 02 02 A9 00 + .byte $8D, $DB, $03, $8D, $DC, $03, $8D, $DD, $03, $A5, $91, $0A, $AA, $BD, $55, $9A ; CPU:$98B2 PRG:18B2 8D DB 03 8D DC 03 8D DD 03 A5 91 0A AA BD 55 9A + .byte $85, $9B, $BD, $56, $9A, $85, $9C, $A9, $26, $8D, $D9, $03, $A9, $C4, $8D, $DA ; CPU:$98C2 PRG:18C2 85 9B BD 56 9A 85 9C A9 26 8D D9 03 A9 C4 8D DA + .byte $03, $A9, $00, $85, $03, $85, $04, $A5, $99, $D0, $0E, $A2, $04, $A5, $91, $C9 ; CPU:$98D2 PRG:18D2 03 A9 00 85 03 85 04 A5 99 D0 0E A2 04 A5 91 C9 + .byte $0B, $D0, $02, $A2, $08, $8A, $20, $63, $86, $60, $A5, $6C, $C9, $01, $D0, $14 ; CPU:$98E2 PRG:18E2 0B D0 02 A2 08 8A 20 63 86 60 A5 6C C9 01 D0 14 + .byte $20, $2B, $9A, $AD, $DD, $03, $C9, $04, $B0, $06, $20, $62, $99, $4C, $05, $99 ; CPU:$98F2 PRG:18F2 20 2B 9A AD DD 03 C9 04 B0 06 20 62 99 4C 05 99 + .byte $20, $F9, $99, $60, $A5, $99, $D0, $3B, $A5, $2A, $29, $C0, $D0, $06, $A5, $2B ; CPU:$9902 PRG:1902 20 F9 99 60 A5 99 D0 3B A5 2A 29 C0 D0 06 A5 2B + .byte $29, $C0, $F0, $2C, $A9, $00, $85, $6C, $8D, $B0, $01, $A9, $04, $85, $6A, $A5 ; CPU:$9912 PRG:1912 29 C0 F0 2C A9 00 85 6C 8D B0 01 A9 04 85 6A A5 + .byte $91, $D0, $06, $20, $88, $81, $20, $28, $92, $E6, $91, $A5, $91, $C9, $0C, $D0 ; CPU:$9922 PRG:1922 91 D0 06 20 88 81 20 28 92 E6 91 A5 91 C9 0C D0 + .byte $07, $E6, $99, $A9, $06, $85, $6A, $60, $A5, $01, $29, $88, $09, $88, $85, $01 ; CPU:$9932 PRG:1932 07 E6 99 A9 06 85 6A 60 A5 01 29 88 09 88 85 01 + .byte $4C, $2B, $9A, $E6, $97, $D0, $16, $A9, $00, $85, $6C, $E6, $91, $A5, $91, $C9 ; CPU:$9942 PRG:1942 4C 2B 9A E6 97 D0 16 A9 00 85 6C E6 91 A5 91 C9 + .byte $0C, $90, $0A, $A9, $07, $85, $6A, $A9, $00, $85, $6C, $85, $99, $4C, $2B, $9A ; CPU:$9952 PRG:1952 0C 90 0A A9 07 85 6A A9 00 85 6C 85 99 4C 2B 9A + .byte $A5, $31, $29, $03, $F0, $01, $60, $A2, $00, $BD, $4A, $9A, $9D, $3A, $03, $E8 ; CPU:$9962 PRG:1962 A5 31 29 03 F0 01 60 A2 00 BD 4A 9A 9D 3A 03 E8 + .byte $E0, $03, $90, $F5, $A9, $02, $8D, $DF, $03, $A9, $01, $8D, $E0, $03, $AD, $DA ; CPU:$9972 PRG:1972 E0 03 90 F5 A9 02 8D DF 03 A9 01 8D E0 03 AD DA + .byte $03, $8D, $38, $03, $AD, $D9, $03, $8D, $39, $03, $EE, $DA, $03, $AC, $DC, $03 ; CPU:$9982 PRG:1982 03 8D 38 03 AD D9 03 8D 39 03 EE DA 03 AC DC 03 + .byte $C0, $FF, $D0, $0F, $98, $18, $65, $9B, $85, $9B, $90, $02, $E6, $9C, $A0, $00 ; CPU:$9992 PRG:1992 C0 FF D0 0F 98 18 65 9B 85 9B 90 02 E6 9C A0 00 + .byte $8C, $DC, $03, $EE, $DC, $03, $B1, $9B, $C9, $FF, $F0, $0C, $18, $69, $83, $8D ; CPU:$99A2 PRG:19A2 8C DC 03 EE DC 03 B1 9B C9 FF F0 0C 18 69 83 8D + .byte $E1, $03, $A9, $E0, $8D, $E2, $03, $60, $8D, $E1, $03, $8D, $E2, $03, $A9, $01 ; CPU:$99B2 PRG:19B2 E1 03 A9 E0 8D E2 03 60 8D E1 03 8D E2 03 A9 01 + .byte $8D, $DF, $03, $8D, $E0, $03, $EE, $DB, $03, $A6, $91, $AD, $DB, $03, $DD, $6D ; CPU:$99C2 PRG:19C2 8D DF 03 8D E0 03 EE DB 03 A6 91 AD DB 03 DD 6D + .byte $9A, $90, $03, $E6, $6C, $60, $EE, $DD, $03, $AD, $DD, $03, $0A, $AA, $BD, $4D ; CPU:$99D2 PRG:19D2 9A 90 03 E6 6C 60 EE DD 03 AD DD 03 0A AA BD 4D + .byte $9A, $8D, $D9, $03, $BD, $4E, $9A, $8D, $DA, $03, $AD, $DD, $03, $C9, $04, $90 ; CPU:$99E2 PRG:19E2 9A 8D D9 03 BD 4E 9A 8D DA 03 AD DD 03 C9 04 90 + .byte $05, $A9, $B4, $8D, $E3, $03, $60, $CE, $E3, $03, $D0, $2C, $AD, $02, $20, $A5 ; CPU:$99F2 PRG:19F2 05 A9 B4 8D E3 03 60 CE E3 03 D0 2C AD 02 20 A5 + .byte $02, $29, $E7, $8D, $01, $20, $AD, $02, $20, $A9, $26, $8D, $06, $20, $8D, $D9 ; CPU:$9A02 PRG:1A02 02 29 E7 8D 01 20 AD 02 20 A9 26 8D 06 20 8D D9 + .byte $03, $A9, $C4, $8D, $06, $20, $8D, $DA, $03, $A2, $F0, $A9, $FF, $8D, $07, $20 ; CPU:$9A12 PRG:1A12 03 A9 C4 8D 06 20 8D DA 03 A2 F0 A9 FF 8D 07 20 + .byte $CA, $D0, $FA, $A9, $00, $8D, $DD, $03, $60, $AD, $02, $20, $29, $40, $D0, $F9 ; CPU:$9A22 PRG:1A22 CA D0 FA A9 00 8D DD 03 60 AD 02 20 29 40 D0 F9 + .byte $AD, $02, $20, $29, $40, $F0, $F9, $A2, $06, $20, $84, $90, $AD, $02, $20, $A9 ; CPU:$9A32 PRG:1A32 AD 02 20 29 40 F0 F9 A2 06 20 84 90 AD 02 20 A9 + .byte $99, $8D, $DE, $03, $8D, $00, $20, $60, $DF, $03, $00, $26, $C4, $27, $04, $27 ; CPU:$9A42 PRG:1A42 99 8D DE 03 8D 00 20 60 DF 03 00 26 C4 27 04 27 + .byte $44, $27, $84, $79, $9A, $44, $9B, $42, $9C, $8D, $9D, $A4, $9E, $BB, $9F, $1E ; CPU:$9A52 PRG:1A52 44 27 84 79 9A 44 9B 42 9C 8D 9D A4 9E BB 9F 1E + .byte $A1, $1C, $A2, $FF, $A2, $CA, $A3, $61, $A4, $44, $A5, $0B, $0E, $13, $0F, $0F ; CPU:$9A62 PRG:1A62 A1 1C A2 FF A2 CA A3 61 A4 44 A5 0B 0E 13 0F 0F + .byte $13, $0E, $0B, $0B, $07, $0B, $1B, $20, $20, $4F, $4E, $43, $45, $20, $55, $50 ; CPU:$9A72 PRG:1A72 13 0E 0B 0B 07 0B 1B 20 20 4F 4E 43 45 20 55 50 + .byte $4F, $4E, $20, $41, $20, $54, $49, $4D, $45, $20, $49, $4E, $20, $20, $20, $FF ; CPU:$9A82 PRG:1A82 4F 4E 20 41 20 54 49 4D 45 20 49 4E 20 20 20 FF + .byte $20, $41, $20, $48, $49, $44, $44, $45, $4E, $20, $4C, $49, $51, $55, $49, $44 ; CPU:$9A92 PRG:1A92 20 41 20 48 49 44 44 45 4E 20 4C 49 51 55 49 44 + .byte $20, $57, $4F, $52, $4C, $44, $20, $20, $FF, $20, $20, $44, $45, $45, $50, $20 ; CPU:$9AA2 PRG:1AA2 20 57 4F 52 4C 44 20 20 FF 20 20 44 45 45 50 20 + .byte $42, $45, $4E, $45, $41, $54, $48, $20, $54, $48, $45, $20, $53, $45, $41, $20 ; CPU:$9AB2 PRG:1AB2 42 45 4E 45 41 54 48 20 54 48 45 20 53 45 41 20 + .byte $20, $FF, $FF, $FF, $20, $20, $54, $48, $45, $52, $45, $20, $57, $41, $53, $20 ; CPU:$9AC2 PRG:1AC2 20 FF FF FF 20 20 54 48 45 52 45 20 57 41 53 20 + .byte $54, $48, $45, $20, $4D, $41, $47, $49, $43, $20, $20, $20, $FF, $20, $20, $20 ; CPU:$9AD2 PRG:1AD2 54 48 45 20 4D 41 47 49 43 20 20 20 FF 20 20 20 + .byte $43, $49, $54, $59, $20, $4F, $46, $20, $41, $54, $4C, $41, $4E, $54, $49, $53 ; CPU:$9AE2 PRG:1AE2 43 49 54 59 20 4F 46 20 41 54 4C 41 4E 54 49 53 + .byte $2C, $20, $20, $20, $20, $FF, $FF, $20, $20, $57, $48, $45, $52, $45, $20, $54 ; CPU:$9AF2 PRG:1AF2 2C 20 20 20 20 FF FF 20 20 57 48 45 52 45 20 54 + .byte $48, $45, $20, $4C, $45, $47, $45, $4E, $44, $41, $52, $59, $20, $20, $20, $FF ; CPU:$9B02 PRG:1B02 48 45 20 4C 45 47 45 4E 44 41 52 59 20 20 20 FF + .byte $20, $48, $41, $4C, $46, $20, $46, $49, $53, $48, $2C, $20, $48, $41, $4C, $46 ; CPU:$9B12 PRG:1B12 20 48 41 4C 46 20 46 49 53 48 2C 20 48 41 4C 46 + .byte $20, $48, $55, $4D, $41, $4E, $2C, $20, $FF, $20, $20, $20, $20, $4D, $45, $52 ; CPU:$9B22 PRG:1B22 20 48 55 4D 41 4E 2C 20 FF 20 20 20 20 4D 45 52 + .byte $50, $45, $4F, $50, $4C, $45, $20, $4C, $49, $56, $45, $44, $2E, $20, $20, $20 ; CPU:$9B32 PRG:1B32 50 45 4F 50 4C 45 20 4C 49 56 45 44 2E 20 20 20 + .byte $20, $FF, $20, $4E, $41, $4D, $4F, $52, $41, $20, $57, $41, $53, $20, $41, $20 ; CPU:$9B42 PRG:1B42 20 FF 20 4E 41 4D 4F 52 41 20 57 41 53 20 41 20 + .byte $42, $45, $41, $55, $54, $49, $46, $55, $4C, $20, $FF, $20, $4D, $45, $52, $4D ; CPU:$9B52 PRG:1B52 42 45 41 55 54 49 46 55 4C 20 FF 20 4D 45 52 4D + .byte $41, $49, $44, $20, $57, $48, $4F, $20, $4C, $49, $56, $45, $44, $20, $44, $45 ; CPU:$9B62 PRG:1B62 41 49 44 20 57 48 4F 20 4C 49 56 45 44 20 44 45 + .byte $45, $50, $20, $FF, $20, $20, $20, $55, $4E, $44, $45, $52, $20, $54, $48, $45 ; CPU:$9B72 PRG:1B72 45 50 20 FF 20 20 20 55 4E 44 45 52 20 54 48 45 + .byte $20, $44, $41, $52, $4B, $20, $53, $45, $41, $20, $20, $20, $FF, $FF, $20, $20 ; CPU:$9B82 PRG:1B82 20 44 41 52 4B 20 53 45 41 20 20 20 FF FF 20 20 + .byte $57, $48, $45, $52, $45, $20, $54, $48, $45, $20, $53, $55, $4E, $20, $4C, $4F ; CPU:$9B92 PRG:1B92 57 48 45 52 45 20 54 48 45 20 53 55 4E 20 4C 4F + .byte $4F, $4B, $45, $44, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $4C, $49, $4B ; CPU:$9BA2 PRG:1BA2 4F 4B 45 44 20 20 FF 20 20 20 20 20 20 4C 49 4B + .byte $45, $20, $41, $20, $4D, $55, $52, $4B, $59, $20, $20, $20, $20, $20, $20, $FF ; CPU:$9BB2 PRG:1BB2 45 20 41 20 4D 55 52 4B 59 20 20 20 20 20 20 FF + .byte $20, $20, $47, $52, $45, $45, $4E, $20, $42, $41, $4C, $4C, $2E, $20, $54, $48 ; CPU:$9BC2 PRG:1BC2 20 20 47 52 45 45 4E 20 42 41 4C 4C 2E 20 54 48 + .byte $45, $20, $4C, $41, $4E, $44, $20, $20, $FF, $FF, $20, $20, $57, $41, $53, $20 ; CPU:$9BD2 PRG:1BD2 45 20 4C 41 4E 44 20 20 FF FF 20 20 57 41 53 20 + .byte $49, $4C, $4C, $55, $4D, $49, $4E, $41, $54, $45, $44, $20, $44, $41, $59, $20 ; CPU:$9BE2 PRG:1BE2 49 4C 4C 55 4D 49 4E 41 54 45 44 20 44 41 59 20 + .byte $20, $20, $FF, $20, $41, $4E, $44, $20, $4E, $49, $47, $48, $54, $20, $42, $59 ; CPU:$9BF2 PRG:1BF2 20 20 FF 20 41 4E 44 20 4E 49 47 48 54 20 42 59 + .byte $20, $55, $4E, $44, $45, $52, $53, $45, $41, $20, $20, $FF, $20, $20, $20, $20 ; CPU:$9C02 PRG:1C02 20 55 4E 44 45 52 53 45 41 20 20 FF 20 20 20 20 + .byte $20, $20, $20, $20, $56, $4F, $4C, $43, $41, $4E, $4F, $53, $20, $20, $20, $20 ; CPU:$9C12 PRG:1C12 20 20 20 20 56 4F 4C 43 41 4E 4F 53 20 20 20 20 + .byte $20, $20, $20, $20, $FF, $FF, $FF, $20, $20, $20, $20, $41, $4E, $44, $20, $47 ; CPU:$9C22 PRG:1C22 20 20 20 20 FF FF FF 20 20 20 20 41 4E 44 20 47 + .byte $4C, $4F, $57, $20, $57, $4F, $52, $4D, $53, $2E, $20, $20, $20, $20, $20, $FF ; CPU:$9C32 PRG:1C32 4C 4F 57 20 57 4F 52 4D 53 2E 20 20 20 20 20 FF + .byte $20, $20, $20, $4E, $41, $4D, $4F, $52, $41, $20, $4C, $49, $56, $45, $44, $20 ; CPU:$9C42 PRG:1C42 20 20 20 4E 41 4D 4F 52 41 20 4C 49 56 45 44 20 + .byte $49, $4E, $20, $41, $20, $20, $20, $20, $FF, $20, $47, $4C, $4F, $57, $49, $4E ; CPU:$9C52 PRG:1C52 49 4E 20 41 20 20 20 20 FF 20 47 4C 4F 57 49 4E + .byte $47, $20, $42, $4C, $55, $45, $20, $53, $45, $41, $53, $48, $45, $4C, $4C, $20 ; CPU:$9C62 PRG:1C62 47 20 42 4C 55 45 20 53 45 41 53 48 45 4C 4C 20 + .byte $20, $FF, $20, $57, $49, $54, $48, $20, $48, $45, $52, $20, $4D, $4F, $4D, $2C ; CPU:$9C72 PRG:1C72 20 FF 20 57 49 54 48 20 48 45 52 20 4D 4F 4D 2C + .byte $20, $44, $41, $44, $20, $41, $4E, $44, $20, $20, $FF, $FF, $20, $4C, $49, $54 ; CPU:$9C82 PRG:1C82 20 44 41 44 20 41 4E 44 20 20 FF FF 20 4C 49 54 + .byte $54, $4C, $45, $20, $42, $52, $4F, $54, $48, $45, $52, $20, $4D, $49, $4B, $45 ; CPU:$9C92 PRG:1C92 54 4C 45 20 42 52 4F 54 48 45 52 20 4D 49 4B 45 + .byte $59, $2E, $20, $20, $FF, $20, $20, $20, $53, $48, $45, $20, $57, $4F, $55, $4C ; CPU:$9CA2 PRG:1CA2 59 2E 20 20 FF 20 20 20 53 48 45 20 57 4F 55 4C + .byte $44, $20, $52, $49, $44, $45, $20, $48, $45, $52, $20, $20, $20, $FF, $20, $4C ; CPU:$9CB2 PRG:1CB2 44 20 52 49 44 45 20 48 45 52 20 20 20 FF 20 4C + .byte $49, $51, $55, $49, $43, $59, $43, $4C, $45, $20, $54, $4F, $20, $53, $43, $48 ; CPU:$9CC2 PRG:1CC2 49 51 55 49 43 59 43 4C 45 20 54 4F 20 53 43 48 + .byte $4F, $4F, $4C, $2C, $20, $20, $FF, $FF, $20, $20, $50, $4C, $41, $59, $20, $43 ; CPU:$9CD2 PRG:1CD2 4F 4F 4C 2C 20 20 FF FF 20 20 50 4C 41 59 20 43 + .byte $41, $54, $43, $48, $20, $57, $49, $54, $48, $20, $48, $45, $52, $20, $20, $20 ; CPU:$9CE2 PRG:1CE2 41 54 43 48 20 57 49 54 48 20 48 45 52 20 20 20 + .byte $FF, $20, $20, $50, $45, $54, $20, $53, $51, $55, $49, $44, $20, $57, $41, $4C ; CPU:$9CF2 PRG:1CF2 FF 20 20 50 45 54 20 53 51 55 49 44 20 57 41 4C + .byte $44, $4F, $20, $41, $4E, $44, $20, $20, $20, $FF, $44, $4F, $20, $41, $20, $4C ; CPU:$9D02 PRG:1D02 44 4F 20 41 4E 44 20 20 20 FF 44 4F 20 41 20 4C + .byte $4F, $54, $20, $4F, $46, $20, $54, $48, $49, $4E, $47, $53, $20, $54, $48, $41 ; CPU:$9D12 PRG:1D12 4F 54 20 4F 46 20 54 48 49 4E 47 53 20 54 48 41 + .byte $54, $20, $FF, $FF, $FF, $20, $20, $20, $53, $55, $52, $46, $41, $43, $45, $20 ; CPU:$9D22 PRG:1D22 54 20 FF FF FF 20 20 20 53 55 52 46 41 43 45 20 + .byte $50, $45, $4F, $50, $4C, $45, $20, $44, $4F, $2E, $20, $20, $20, $FF, $20, $20 ; CPU:$9D32 PRG:1D32 50 45 4F 50 4C 45 20 44 4F 2E 20 20 20 FF 20 20 + .byte $20, $49, $4E, $20, $46, $41, $43, $54, $20, $4D, $45, $52, $50, $45, $4F, $50 ; CPU:$9D42 PRG:1D42 20 49 4E 20 46 41 43 54 20 4D 45 52 50 45 4F 50 + .byte $4C, $45, $20, $20, $20, $20, $FF, $FF, $FF, $20, $20, $20, $41, $52, $45, $20 ; CPU:$9D52 PRG:1D52 4C 45 20 20 20 20 FF FF FF 20 20 20 41 52 45 20 + .byte $41, $20, $4C, $4F, $54, $20, $4C, $49, $4B, $45, $20, $59, $4F, $55, $20, $20 ; CPU:$9D62 PRG:1D62 41 20 4C 4F 54 20 4C 49 4B 45 20 59 4F 55 20 20 + .byte $20, $FF, $20, $20, $20, $20, $20, $20, $20, $20, $41, $4E, $44, $20, $4D, $45 ; CPU:$9D72 PRG:1D72 20 FF 20 20 20 20 20 20 20 20 41 4E 44 20 4D 45 + .byte $2E, $20, $20, $20, $20, $20, $20, $20, $20, $20, $FF, $4D, $45, $52, $50, $45 ; CPU:$9D82 PRG:1D82 2E 20 20 20 20 20 20 20 20 20 FF 4D 45 52 50 45 + .byte $4F, $50, $4C, $45, $20, $4C, $4F, $56, $45, $44, $20, $54, $4F, $20, $50, $4C ; CPU:$9D92 PRG:1D92 4F 50 4C 45 20 4C 4F 56 45 44 20 54 4F 20 50 4C + .byte $41, $59, $20, $FF, $20, $20, $20, $20, $47, $41, $4D, $45, $53, $2E, $20, $54 ; CPU:$9DA2 PRG:1DA2 41 59 20 FF 20 20 20 20 47 41 4D 45 53 2E 20 54 + .byte $48, $45, $59, $20, $48, $41, $44, $20, $20, $20, $20, $20, $FF, $20, $54, $48 ; CPU:$9DB2 PRG:1DB2 48 45 59 20 48 41 44 20 20 20 20 20 FF 20 54 48 + .byte $45, $20, $42, $45, $53, $54, $20, $47, $41, $4D, $45, $53, $20, $49, $4E, $20 ; CPU:$9DC2 PRG:1DC2 45 20 42 45 53 54 20 47 41 4D 45 53 20 49 4E 20 + .byte $54, $48, $45, $20, $20, $FF, $FF, $FF, $20, $57, $4F, $52, $4C, $44, $2C, $20 ; CPU:$9DD2 PRG:1DD2 54 48 45 20 20 FF FF FF 20 57 4F 52 4C 44 2C 20 + .byte $42, $45, $43, $41, $55, $53, $45, $20, $54, $48, $45, $59, $20, $48, $41, $44 ; CPU:$9DE2 PRG:1DE2 42 45 43 41 55 53 45 20 54 48 45 59 20 48 41 44 + .byte $FF, $20, $20, $54, $48, $45, $20, $42, $45, $53, $54, $20, $47, $41, $4D, $45 ; CPU:$9DF2 PRG:1DF2 FF 20 20 54 48 45 20 42 45 53 54 20 47 41 4D 45 + .byte $4D, $41, $4B, $45, $52, $53, $2E, $20, $20, $FF, $FF, $20, $20, $54, $48, $45 ; CPU:$9E02 PRG:1E02 4D 41 4B 45 52 53 2E 20 20 FF FF 20 20 54 48 45 + .byte $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $57, $4F, $55, $4C, $44 ; CPU:$9E12 PRG:1E12 20 4D 45 52 50 45 4F 50 4C 45 20 57 4F 55 4C 44 + .byte $20, $20, $20, $FF, $43, $4F, $4C, $4C, $45, $43, $54, $20, $50, $45, $41, $52 ; CPU:$9E22 PRG:1E22 20 20 20 FF 43 4F 4C 4C 45 43 54 20 50 45 41 52 + .byte $4C, $53, $20, $41, $4E, $44, $20, $54, $52, $41, $44, $45, $FF, $57, $49, $54 ; CPU:$9E32 PRG:1E32 4C 53 20 41 4E 44 20 54 52 41 44 45 FF 57 49 54 + .byte $48, $20, $54, $48, $45, $20, $47, $41, $4D, $45, $4D, $41, $4B, $45, $52, $53 ; CPU:$9E42 PRG:1E42 48 20 54 48 45 20 47 41 4D 45 4D 41 4B 45 52 53 + .byte $20, $46, $4F, $52, $20, $FF, $FF, $20, $20, $4E, $45, $57, $20, $47, $41, $4D ; CPU:$9E52 PRG:1E52 20 46 4F 52 20 FF FF 20 20 4E 45 57 20 47 41 4D + .byte $45, $53, $20, $45, $56, $45, $52, $59, $44, $41, $59, $2E, $20, $20, $20, $FF ; CPU:$9E62 PRG:1E62 45 53 20 45 56 45 52 59 44 41 59 2E 20 20 20 FF + .byte $20, $20, $4C, $49, $56, $49, $4E, $47, $20, $55, $4E, $44, $45, $52, $20, $54 ; CPU:$9E72 PRG:1E72 20 20 4C 49 56 49 4E 47 20 55 4E 44 45 52 20 54 + .byte $48, $45, $20, $53, $45, $41, $20, $20, $FF, $20, $20, $20, $57, $41, $53, $20 ; CPU:$9E82 PRG:1E82 48 45 20 53 45 41 20 20 FF 20 20 20 57 41 53 20 + .byte $41, $20, $4C, $4F, $54, $20, $4F, $46, $20, $46, $55, $4E, $2E, $20, $20, $20 ; CPU:$9E92 PRG:1E92 41 20 4C 4F 54 20 4F 46 20 46 55 4E 2E 20 20 20 + .byte $20, $FF, $20, $20, $42, $55, $54, $20, $41, $4C, $41, $53, $2C, $20, $54, $48 ; CPU:$9EA2 PRG:1EA2 20 FF 20 20 42 55 54 20 41 4C 41 53 2C 20 54 48 + .byte $45, $52, $45, $20, $4C, $49, $56, $45, $44, $20, $FF, $20, $20, $20, $41, $4E ; CPU:$9EB2 PRG:1EB2 45 52 45 20 4C 49 56 45 44 20 FF 20 20 20 41 4E + .byte $20, $45, $56, $49, $4C, $20, $4D, $41, $4E, $20, $43, $41, $4C, $4C, $45, $44 ; CPU:$9EC2 PRG:1EC2 20 45 56 49 4C 20 4D 41 4E 20 43 41 4C 4C 45 44 + .byte $20, $20, $20, $FF, $20, $20, $20, $20, $45, $4D, $50, $45, $52, $4F, $52, $20 ; CPU:$9ED2 PRG:1ED2 20 20 20 FF 20 20 20 20 45 4D 50 45 52 4F 52 20 + .byte $4F, $2D, $44, $49, $4E, $54, $4F, $4E, $2E, $20, $20, $20, $FF, $FF, $48, $45 ; CPU:$9EE2 PRG:1EE2 4F 2D 44 49 4E 54 4F 4E 2E 20 20 20 FF FF 48 45 + .byte $20, $57, $41, $53, $20, $41, $20, $53, $55, $52, $46, $41, $43, $45, $20, $44 ; CPU:$9EF2 PRG:1EF2 20 57 41 53 20 41 20 53 55 52 46 41 43 45 20 44 + .byte $57, $45, $4C, $4C, $45, $52, $FF, $20, $57, $48, $4F, $20, $4D, $41, $44, $45 ; CPU:$9F02 PRG:1F02 57 45 4C 4C 45 52 FF 20 57 48 4F 20 4D 41 44 45 + .byte $20, $48, $49, $53, $20, $52, $49, $43, $48, $45, $53, $20, $42, $59, $20, $FF ; CPU:$9F12 PRG:1F12 20 48 49 53 20 52 49 43 48 45 53 20 42 59 20 FF + .byte $20, $53, $45, $4C, $4C, $49, $4E, $47, $20, $53, $41, $4C, $54, $20, $57, $41 ; CPU:$9F22 PRG:1F22 20 53 45 4C 4C 49 4E 47 20 53 41 4C 54 20 57 41 + .byte $54, $45, $52, $20, $41, $4E, $44, $20, $FF, $FF, $20, $20, $20, $53, $45, $41 ; CPU:$9F32 PRG:1F32 54 45 52 20 41 4E 44 20 FF FF 20 20 20 53 45 41 + .byte $20, $53, $48, $45, $4C, $4C, $53, $2E, $20, $41, $46, $54, $45, $52, $20, $20 ; CPU:$9F42 PRG:1F42 20 53 48 45 4C 4C 53 2E 20 41 46 54 45 52 20 20 + .byte $20, $20, $FF, $20, $20, $20, $59, $45, $41, $52, $53, $20, $4F, $46, $20, $50 ; CPU:$9F52 PRG:1F52 20 20 FF 20 20 20 59 45 41 52 53 20 4F 46 20 50 + .byte $4C, $41, $4E, $4E, $49, $4E, $47, $20, $20, $20, $20, $FF, $20, $20, $20, $20 ; CPU:$9F62 PRG:1F62 4C 41 4E 4E 49 4E 47 20 20 20 20 FF 20 20 20 20 + .byte $48, $45, $20, $48, $41, $44, $20, $43, $4F, $4D, $45, $20, $55, $50, $20, $20 ; CPU:$9F72 PRG:1F72 48 45 20 48 41 44 20 43 4F 4D 45 20 55 50 20 20 + .byte $20, $20, $20, $20, $FF, $FF, $FF, $20, $20, $20, $57, $49, $54, $48, $20, $54 ; CPU:$9F82 PRG:1F82 20 20 20 20 FF FF FF 20 20 20 57 49 54 48 20 54 + .byte $48, $45, $20, $55, $4C, $54, $49, $4D, $41, $54, $45, $20, $20, $20, $20, $FF ; CPU:$9F92 PRG:1F92 48 45 20 55 4C 54 49 4D 41 54 45 20 20 20 20 FF + .byte $20, $20, $20, $20, $20, $20, $20, $20, $53, $43, $48, $45, $4D, $45, $2E, $20 ; CPU:$9FA2 PRG:1FA2 20 20 20 20 20 20 20 20 53 43 48 45 4D 45 2E 20 + .byte $20, $20, $20, $20, $20, $20, $20, $20, $FF, $20, $20, $45, $4D, $50, $45, $52 ; CPU:$9FB2 PRG:1FB2 20 20 20 20 20 20 20 20 FF 20 20 45 4D 50 45 52 + .byte $4F, $52, $20, $4F, $2D, $44, $49, $4E, $54, $4F, $4E, $20, $48, $41, $44, $20 ; CPU:$9FC2 PRG:1FC2 4F 52 20 4F 2D 44 49 4E 54 4F 4E 20 48 41 44 20 + .byte $20, $FF, $20, $20, $43, $4F, $4D, $42, $49, $4E, $45, $44, $20, $53, $43, $49 ; CPU:$9FD2 PRG:1FD2 20 FF 20 20 43 4F 4D 42 49 4E 45 44 20 53 43 49 + .byte $45, $4E, $43, $45, $20, $41, $4E, $44, $20, $20, $FF, $20, $20, $4D, $41, $47 ; CPU:$9FE2 PRG:1FE2 45 4E 43 45 20 41 4E 44 20 20 FF 20 20 4D 41 47 + .byte $49, $43, $20, $54, $4F, $20, $43, $52, $45, $41, $54, $45, $20, $54 ; CPU:$9FF2 PRG:1FF2 49 43 20 54 4F 20 43 52 45 41 54 45 20 54 +.segment "PRG1" +.org $A000 +; ---- data $A000-$AEC6 (3783 bytes) ---- + .byte $48, $45, $20, $20, $20, $FF, $FF, $20, $20, $44, $55, $52, $41, $42, $55, $42 ; CPU:$A000 PRG:2000 48 45 20 20 20 FF FF 20 20 44 55 52 41 42 55 42 + .byte $42, $4C, $45, $28, $54, $4D, $29, $2E, $20, $49, $54, $53, $20, $20, $20, $FF ; CPU:$A010 PRG:2010 42 4C 45 28 54 4D 29 2E 20 49 54 53 20 20 20 FF + .byte $20, $20, $4D, $4F, $4C, $45, $43, $55, $4C, $41, $52, $20, $53, $54, $52, $55 ; CPU:$A020 PRG:2020 20 20 4D 4F 4C 45 43 55 4C 41 52 20 53 54 52 55 + .byte $43, $54, $55, $52, $45, $20, $20, $20, $FF, $20, $41, $4C, $54, $48, $4F, $55 ; CPU:$A030 PRG:2030 43 54 55 52 45 20 20 20 FF 20 41 4C 54 48 4F 55 + .byte $47, $48, $20, $46, $4C, $45, $58, $49, $42, $4C, $45, $20, $4C, $49, $4B, $45 ; CPU:$A040 PRG:2040 47 48 20 46 4C 45 58 49 42 4C 45 20 4C 49 4B 45 + .byte $20, $FF, $FF, $20, $20, $20, $20, $20, $52, $55, $42, $42, $45, $52, $20, $57 ; CPU:$A050 PRG:2050 20 FF FF 20 20 20 20 20 52 55 42 42 45 52 20 57 + .byte $41, $53, $20, $41, $53, $20, $20, $20, $20, $20, $20, $FF, $20, $20, $20, $20 ; CPU:$A060 PRG:2060 41 53 20 41 53 20 20 20 20 20 20 FF 20 20 20 20 + .byte $55, $4E, $42, $52, $45, $41, $4B, $41, $42, $4C, $45, $20, $41, $53, $20, $41 ; CPU:$A070 PRG:2070 55 4E 42 52 45 41 4B 41 42 4C 45 20 41 53 20 41 + .byte $20, $20, $20, $20, $FF, $20, $20, $20, $20, $44, $49, $41, $4D, $4F, $4E, $44 ; CPU:$A080 PRG:2080 20 20 20 20 FF 20 20 20 20 44 49 41 4D 4F 4E 44 + .byte $2E, $20, $4F, $4E, $43, $45, $20, $48, $45, $20, $20, $20, $20, $FF, $FF, $20 ; CPU:$A090 PRG:2090 2E 20 4F 4E 43 45 20 48 45 20 20 20 20 FF FF 20 + .byte $20, $45, $4E, $43, $41, $53, $45, $44, $20, $53, $4F, $4D, $45, $54, $48, $49 ; CPU:$A0A0 PRG:20A0 20 45 4E 43 41 53 45 44 20 53 4F 4D 45 54 48 49 + .byte $4E, $47, $20, $49, $4E, $20, $20, $FF, $20, $48, $49, $53, $20, $44, $55, $52 ; CPU:$A0B0 PRG:20B0 4E 47 20 49 4E 20 20 FF 20 48 49 53 20 44 55 52 + .byte $41, $42, $55, $42, $42, $4C, $45, $28, $54, $4D, $29, $20, $4E, $4F, $20, $20 ; CPU:$A0C0 PRG:20C0 41 42 55 42 42 4C 45 28 54 4D 29 20 4E 4F 20 20 + .byte $FF, $20, $4F, $4E, $45, $20, $43, $4F, $55, $4C, $44, $20, $52, $45, $4C, $45 ; CPU:$A0D0 PRG:20D0 FF 20 4F 4E 45 20 43 4F 55 4C 44 20 52 45 4C 45 + .byte $41, $53, $45, $20, $49, $54, $2E, $20, $20, $FF, $FF, $FF, $20, $20, $20, $20 ; CPU:$A0E0 PRG:20E0 41 53 45 20 49 54 2E 20 20 FF FF FF 20 20 20 20 + .byte $45, $58, $43, $45, $50, $54, $20, $4F, $46, $20, $43, $4F, $55, $52, $53, $45 ; CPU:$A0F0 PRG:20F0 45 58 43 45 50 54 20 4F 46 20 43 4F 55 52 53 45 + .byte $20, $20, $20, $20, $FF, $20, $20, $20, $45, $4D, $50, $45, $52, $4F, $52, $20 ; CPU:$A100 PRG:2100 20 20 20 20 FF 20 20 20 45 4D 50 45 52 4F 52 20 + .byte $4F, $2D, $44, $49, $4E, $54, $4F, $4E, $2E, $20, $20, $20, $20, $FF, $20, $4E ; CPU:$A110 PRG:2110 4F 2D 44 49 4E 54 4F 4E 2E 20 20 20 20 FF 20 4E + .byte $41, $4D, $4F, $52, $41, $20, $41, $4E, $44, $20, $48, $45, $52, $20, $46, $52 ; CPU:$A120 PRG:2120 41 4D 4F 52 41 20 41 4E 44 20 48 45 52 20 46 52 + .byte $49, $45, $4E, $44, $53, $20, $FF, $57, $45, $52, $45, $20, $50, $4C, $41, $59 ; CPU:$A130 PRG:2130 49 45 4E 44 53 20 FF 57 45 52 45 20 50 4C 41 59 + .byte $49, $4E, $47, $20, $57, $49, $54, $48, $20, $54, $48, $45, $49, $52, $20, $FF ; CPU:$A140 PRG:2140 49 4E 47 20 57 49 54 48 20 54 48 45 49 52 20 FF + .byte $20, $20, $4E, $45, $57, $20, $47, $41, $4D, $45, $53, $20, $57, $48, $45, $4E ; CPU:$A150 PRG:2150 20 20 4E 45 57 20 47 41 4D 45 53 20 57 48 45 4E + .byte $20, $54, $48, $45, $59, $20, $20, $20, $FF, $FF, $53, $41, $57, $20, $54, $48 ; CPU:$A160 PRG:2160 20 54 48 45 59 20 20 20 FF FF 53 41 57 20 54 48 + .byte $45, $20, $42, $55, $42, $42, $4C, $45, $53, $20, $43, $4F, $4D, $49, $4E, $47 ; CPU:$A170 PRG:2170 45 20 42 55 42 42 4C 45 53 20 43 4F 4D 49 4E 47 + .byte $2E, $20, $FF, $20, $20, $54, $48, $45, $59, $20, $4B, $4E, $45, $57, $20, $54 ; CPU:$A180 PRG:2180 2E 20 FF 20 20 54 48 45 59 20 4B 4E 45 57 20 54 + .byte $48, $45, $52, $45, $20, $57, $41, $53, $20, $20, $20, $FF, $53, $4F, $4D, $45 ; CPU:$A190 PRG:2190 48 45 52 45 20 57 41 53 20 20 20 FF 53 4F 4D 45 + .byte $54, $48, $49, $4E, $47, $20, $57, $52, $4F, $4E, $47, $20, $42, $45, $43, $41 ; CPU:$A1A0 PRG:21A0 54 48 49 4E 47 20 57 52 4F 4E 47 20 42 45 43 41 + .byte $55, $53, $45, $20, $FF, $FF, $20, $20, $49, $4E, $53, $54, $45, $41, $44, $20 ; CPU:$A1B0 PRG:21B0 55 53 45 20 FF FF 20 20 49 4E 53 54 45 41 44 20 + .byte $4F, $46, $20, $46, $4C, $4F, $41, $54, $49, $4E, $47, $20, $20, $20, $FF, $20 ; CPU:$A1C0 PRG:21C0 4F 46 20 46 4C 4F 41 54 49 4E 47 20 20 20 FF 20 + .byte $20, $20, $20, $20, $20, $20, $55, $50, $57, $41, $52, $44, $20, $54, $48, $45 ; CPU:$A1D0 PRG:21D0 20 20 20 20 20 20 55 50 57 41 52 44 20 54 48 45 + .byte $20, $20, $20, $20, $20, $20, $20, $FF, $20, $20, $42, $55, $42, $42, $4C, $45 ; CPU:$A1E0 PRG:21E0 20 20 20 20 20 20 20 FF 20 20 42 55 42 42 4C 45 + .byte $53, $20, $57, $45, $52, $45, $20, $53, $49, $4E, $4B, $49, $4E, $47, $20, $20 ; CPU:$A1F0 PRG:21F0 53 20 57 45 52 45 20 53 49 4E 4B 49 4E 47 20 20 + .byte $FF, $FF, $FF, $20, $20, $20, $44, $4F, $57, $4E, $20, $54, $4F, $57, $41, $52 ; CPU:$A200 PRG:2200 FF FF FF 20 20 20 44 4F 57 4E 20 54 4F 57 41 52 + .byte $44, $53, $20, $54, $48, $45, $4D, $2E, $20, $20, $20, $FF, $20, $54, $48, $45 ; CPU:$A210 PRG:2210 44 53 20 54 48 45 4D 2E 20 20 20 FF 20 54 48 45 + .byte $20, $42, $55, $42, $42, $4C, $45, $53, $20, $45, $4E, $56, $45, $4C, $4F, $50 ; CPU:$A220 PRG:2220 20 42 55 42 42 4C 45 53 20 45 4E 56 45 4C 4F 50 + .byte $45, $44, $20, $20, $FF, $20, $54, $48, $45, $20, $4D, $45, $52, $50, $45, $4F ; CPU:$A230 PRG:2230 45 44 20 20 FF 20 54 48 45 20 4D 45 52 50 45 4F + .byte $50, $4C, $45, $27, $53, $20, $47, $41, $4D, $45, $53, $2E, $20, $FF, $20, $20 ; CPU:$A240 PRG:2240 50 4C 45 27 53 20 47 41 4D 45 53 2E 20 FF 20 20 + .byte $20, $20, $49, $54, $20, $57, $41, $53, $20, $54, $48, $45, $20, $53, $41, $4D ; CPU:$A250 PRG:2250 20 20 49 54 20 57 41 53 20 54 48 45 20 53 41 4D + .byte $45, $20, $20, $20, $20, $20, $FF, $FF, $20, $20, $45, $56, $45, $52, $59, $57 ; CPU:$A260 PRG:2260 45 20 20 20 20 20 FF FF 20 20 45 56 45 52 59 57 + .byte $48, $45, $52, $45, $2E, $20, $41, $4C, $4C, $20, $54, $48, $45, $20, $20, $20 ; CPU:$A270 PRG:2270 48 45 52 45 2E 20 41 4C 4C 20 54 48 45 20 20 20 + .byte $FF, $20, $20, $20, $20, $47, $41, $4D, $45, $53, $20, $55, $4E, $44, $45, $52 ; CPU:$A280 PRG:2280 FF 20 20 20 20 47 41 4D 45 53 20 55 4E 44 45 52 + .byte $20, $54, $48, $45, $20, $20, $20, $20, $20, $FF, $20, $20, $53, $45, $41, $20 ; CPU:$A290 PRG:2290 20 54 48 45 20 20 20 20 20 FF 20 20 53 45 41 20 + .byte $57, $45, $52, $45, $20, $45, $4E, $43, $41, $53, $45, $44, $20, $49, $4E, $20 ; CPU:$A2A0 PRG:22A0 57 45 52 45 20 45 4E 43 41 53 45 44 20 49 4E 20 + .byte $20, $20, $FF, $FF, $20, $20, $20, $42, $55, $42, $42, $4C, $45, $53, $20, $53 ; CPU:$A2B0 PRG:22B0 20 20 FF FF 20 20 20 42 55 42 42 4C 45 53 20 53 + .byte $4F, $20, $4E, $4F, $20, $4F, $4E, $45, $20, $20, $20, $20, $FF, $20, $20, $43 ; CPU:$A2C0 PRG:22C0 4F 20 4E 4F 20 4F 4E 45 20 20 20 20 FF 20 20 43 + .byte $4F, $55, $4C, $44, $20, $50, $4C, $41, $59, $20, $54, $48, $45, $4D, $20, $41 ; CPU:$A2D0 PRG:22D0 4F 55 4C 44 20 50 4C 41 59 20 54 48 45 4D 20 41 + .byte $4E, $44, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $20, $48, $41, $56 ; CPU:$A2E0 PRG:22E0 4E 44 20 20 20 FF 20 20 20 20 20 20 20 48 41 56 + .byte $45, $20, $46, $55, $4E, $2E, $20, $20, $20, $20, $20, $20, $20, $20, $FF, $20 ; CPU:$A2F0 PRG:22F0 45 20 46 55 4E 2E 20 20 20 20 20 20 20 20 FF 20 + .byte $20, $20, $20, $20, $20, $54, $48, $45, $4E, $20, $45, $4D, $50, $45, $52, $4F ; CPU:$A300 PRG:2300 20 20 20 20 20 54 48 45 4E 20 45 4D 50 45 52 4F + .byte $52, $20, $20, $20, $20, $20, $20, $FF, $20, $20, $20, $4F, $2D, $44, $49, $4E ; CPU:$A310 PRG:2310 52 20 20 20 20 20 20 FF 20 20 20 4F 2D 44 49 4E + .byte $54, $4F, $4E, $20, $43, $41, $4D, $45, $20, $44, $4F, $57, $4E, $20, $20, $20 ; CPU:$A320 PRG:2320 54 4F 4E 20 43 41 4D 45 20 44 4F 57 4E 20 20 20 + .byte $FF, $20, $41, $4E, $44, $20, $41, $4E, $4E, $4F, $55, $4E, $43, $45, $44, $20 ; CPU:$A330 PRG:2330 FF 20 41 4E 44 20 41 4E 4E 4F 55 4E 43 45 44 20 + .byte $54, $48, $41, $54, $20, $54, $48, $45, $20, $FF, $FF, $20, $20, $4D, $45, $52 ; CPU:$A340 PRG:2340 54 48 41 54 20 54 48 45 20 FF FF 20 20 4D 45 52 + .byte $50, $45, $4F, $50, $4C, $45, $20, $57, $4F, $55, $4C, $44, $20, $48, $41, $56 ; CPU:$A350 PRG:2350 50 45 4F 50 4C 45 20 57 4F 55 4C 44 20 48 41 56 + .byte $45, $20, $20, $FF, $20, $54, $4F, $20, $50, $41, $59, $20, $48, $49, $4D, $20 ; CPU:$A360 PRG:2360 45 20 20 FF 20 54 4F 20 50 41 59 20 48 49 4D 20 + .byte $41, $20, $50, $45, $41, $52, $4C, $20, $54, $4F, $20, $20, $FF, $42, $55, $52 ; CPU:$A370 PRG:2370 41 20 50 45 41 52 4C 20 54 4F 20 20 FF 42 55 52 + .byte $53, $54, $20, $54, $48, $45, $20, $42, $55, $42, $42, $4C, $45, $20, $41, $52 ; CPU:$A380 PRG:2380 53 54 20 54 48 45 20 42 55 42 42 4C 45 20 41 52 + .byte $4F, $55, $4E, $44, $20, $FF, $FF, $FF, $20, $20, $41, $4E, $59, $20, $47, $41 ; CPU:$A390 PRG:2390 4F 55 4E 44 20 FF FF FF 20 20 41 4E 59 20 47 41 + .byte $4D, $45, $2E, $20, $4F, $4E, $4C, $59, $20, $54, $48, $45, $4E, $20, $20, $20 ; CPU:$A3A0 PRG:23A0 4D 45 2E 20 4F 4E 4C 59 20 54 48 45 4E 20 20 20 + .byte $FF, $20, $20, $20, $43, $4F, $55, $4C, $44, $20, $54, $48, $45, $59, $20, $50 ; CPU:$A3B0 PRG:23B0 FF 20 20 20 43 4F 55 4C 44 20 54 48 45 59 20 50 + .byte $4C, $41, $59, $2E, $20, $20, $20, $20, $20, $FF, $20, $20, $20, $20, $53, $4F ; CPU:$A3C0 PRG:23C0 4C 41 59 2E 20 20 20 20 20 FF 20 20 20 20 53 4F + .byte $20, $54, $48, $45, $59, $20, $50, $41, $49, $44, $20, $54, $48, $45, $20, $20 ; CPU:$A3D0 PRG:23D0 20 54 48 45 59 20 50 41 49 44 20 54 48 45 20 20 + .byte $20, $20, $FF, $20, $20, $45, $56, $49, $4C, $20, $45, $4D, $50, $45, $52, $4F ; CPU:$A3E0 PRG:23E0 20 20 FF 20 20 45 56 49 4C 20 45 4D 50 45 52 4F + .byte $52, $20, $48, $49, $53, $20, $54, $41, $58, $20, $20, $FF, $20, $20, $20, $20 ; CPU:$A3F0 PRG:23F0 52 20 48 49 53 20 54 41 58 20 20 FF 20 20 20 20 + .byte $20, $20, $20, $20, $4F, $4E, $20, $46, $55, $4E, $2E, $20, $20, $20, $20, $20 ; CPU:$A400 PRG:2400 20 20 20 20 4F 4E 20 46 55 4E 2E 20 20 20 20 20 + .byte $20, $20, $20, $20, $FF, $FF, $20, $20, $20, $4E, $4F, $57, $20, $49, $54, $20 ; CPU:$A410 PRG:2410 20 20 20 20 FF FF 20 20 20 4E 4F 57 20 49 54 20 + .byte $53, $45, $45, $4D, $45, $44, $20, $54, $48, $45, $20, $20, $20, $20, $FF, $20 ; CPU:$A420 PRG:2420 53 45 45 4D 45 44 20 54 48 45 20 20 20 20 FF 20 + .byte $47, $41, $4D, $45, $53, $20, $57, $45, $52, $45, $4E, $27, $54, $20, $41, $53 ; CPU:$A430 PRG:2430 47 41 4D 45 53 20 57 45 52 45 4E 27 54 20 41 53 + .byte $20, $4D, $55, $43, $48, $20, $20, $FF, $20, $46, $55, $4E, $20, $54, $4F, $20 ; CPU:$A440 PRG:2440 20 4D 55 43 48 20 20 FF 20 46 55 4E 20 54 4F 20 + .byte $50, $4C, $41, $59, $20, $41, $53, $20, $42, $45, $46, $4F, $52, $45, $2E, $20 ; CPU:$A450 PRG:2450 50 4C 41 59 20 41 53 20 42 45 46 4F 52 45 2E 20 + .byte $FF, $20, $20, $4F, $4E, $45, $20, $44, $41, $59, $20, $4E, $41, $4D, $4F, $52 ; CPU:$A460 PRG:2460 FF 20 20 4F 4E 45 20 44 41 59 20 4E 41 4D 4F 52 + .byte $41, $20, $46, $4F, $55, $4E, $44, $20, $20, $FF, $20, $54, $48, $41, $54, $20 ; CPU:$A470 PRG:2470 41 20 46 4F 55 4E 44 20 20 FF 20 54 48 41 54 20 + .byte $42, $59, $20, $53, $54, $41, $43, $4B, $49, $4E, $47, $20, $46, $4F, $55, $52 ; CPU:$A480 PRG:2480 42 59 20 53 54 41 43 4B 49 4E 47 20 46 4F 55 52 + .byte $20, $20, $FF, $20, $20, $20, $20, $4F, $52, $20, $4D, $4F, $52, $45, $20, $42 ; CPU:$A490 PRG:2490 20 20 FF 20 20 20 20 4F 52 20 4D 4F 52 45 20 42 + .byte $55, $42, $42, $4C, $45, $53, $20, $20, $20, $20, $20, $FF, $FF, $20, $20, $54 ; CPU:$A4A0 PRG:24A0 55 42 42 4C 45 53 20 20 20 20 20 FF FF 20 20 54 + .byte $4F, $47, $45, $54, $48, $45, $52, $20, $49, $4E, $20, $4A, $55, $53, $54, $20 ; CPU:$A4B0 PRG:24B0 4F 47 45 54 48 45 52 20 49 4E 20 4A 55 53 54 20 + .byte $54, $48, $45, $20, $20, $FF, $20, $20, $52, $49, $47, $48, $54, $20, $57, $41 ; CPU:$A4C0 PRG:24C0 54 48 45 20 20 FF 20 20 52 49 47 48 54 20 57 41 + .byte $59, $20, $54, $48, $45, $59, $20, $57, $4F, $55, $4C, $44, $20, $20, $FF, $20 ; CPU:$A4D0 PRG:24D0 59 20 54 48 45 59 20 57 4F 55 4C 44 20 20 FF 20 + .byte $20, $20, $41, $4C, $4C, $20, $50, $4F, $50, $20, $4C, $49, $4B, $45, $20, $41 ; CPU:$A4E0 PRG:24E0 20 20 41 4C 4C 20 50 4F 50 20 4C 49 4B 45 20 41 + .byte $20, $42, $49, $47, $20, $20, $20, $FF, $FF, $20, $20, $42, $41, $4C, $4C, $4F ; CPU:$A4F0 PRG:24F0 20 42 49 47 20 20 20 FF FF 20 20 42 41 4C 4C 4F + .byte $4F, $4E, $2E, $20, $4E, $4F, $57, $20, $4E, $4F, $20, $4F, $4E, $45, $20, $20 ; CPU:$A500 PRG:2500 4F 4E 2E 20 4E 4F 57 20 4E 4F 20 4F 4E 45 20 20 + .byte $20, $FF, $20, $48, $41, $44, $20, $54, $4F, $20, $50, $41, $59, $20, $54, $48 ; CPU:$A510 PRG:2510 20 FF 20 48 41 44 20 54 4F 20 50 41 59 20 54 48 + .byte $45, $20, $45, $4D, $50, $45, $52, $4F, $52, $20, $FF, $20, $20, $20, $20, $48 ; CPU:$A520 PRG:2520 45 20 45 4D 50 45 52 4F 52 20 FF 20 20 20 20 48 + .byte $49, $53, $20, $54, $41, $58, $20, $4F, $4E, $20, $46, $55, $4E, $21, $20, $20 ; CPU:$A530 PRG:2530 49 53 20 54 41 58 20 4F 4E 20 46 55 4E 21 20 20 + .byte $20, $20, $20, $FF, $FF, $20, $20, $20, $20, $57, $49, $54, $48, $49, $4E, $20 ; CPU:$A540 PRG:2540 20 20 20 FF FF 20 20 20 20 57 49 54 48 49 4E 20 + .byte $44, $41, $59, $53, $20, $54, $48, $45, $20, $20, $20, $20, $20, $FF, $20, $20 ; CPU:$A550 PRG:2550 44 41 59 53 20 54 48 45 20 20 20 20 20 FF 20 20 + .byte $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $48, $41, $44, $20, $50, $4F ; CPU:$A560 PRG:2560 4D 45 52 50 45 4F 50 4C 45 20 48 41 44 20 50 4F + .byte $50, $50, $45, $44, $20, $20, $FF, $FF, $FF, $20, $20, $20, $41, $4C, $4C, $20 ; CPU:$A570 PRG:2570 50 50 45 44 20 20 FF FF FF 20 20 20 41 4C 4C 20 + .byte $54, $48, $45, $20, $42, $55, $42, $42, $4C, $45, $53, $20, $4F, $4E, $20, $20 ; CPU:$A580 PRG:2580 54 48 45 20 42 55 42 42 4C 45 53 20 4F 4E 20 20 + .byte $20, $FF, $20, $20, $20, $20, $20, $20, $45, $56, $45, $52, $59, $20, $47, $41 ; CPU:$A590 PRG:2590 20 FF 20 20 20 20 20 20 45 56 45 52 59 20 47 41 + .byte $4D, $45, $2E, $20, $20, $20, $20, $20, $20, $20, $FF, $FF, $20, $20, $54, $48 ; CPU:$A5A0 PRG:25A0 4D 45 2E 20 20 20 20 20 20 20 FF FF 20 20 54 48 + .byte $45, $20, $45, $4D, $50, $45, $52, $4F, $52, $20, $57, $41, $53, $20, $56, $45 ; CPU:$A5B0 PRG:25B0 45 20 45 4D 50 45 52 4F 52 20 57 41 53 20 56 45 + .byte $52, $59, $20, $20, $FF, $20, $20, $41, $4E, $47, $52, $59, $20, $41, $4E, $44 ; CPU:$A5C0 PRG:25C0 52 59 20 20 FF 20 20 41 4E 47 52 59 20 41 4E 44 + .byte $20, $53, $57, $41, $4D, $20, $42, $41, $43, $4B, $20, $20, $20, $FF, $20, $20 ; CPU:$A5D0 PRG:25D0 20 53 57 41 4D 20 42 41 43 4B 20 20 20 FF 20 20 + .byte $20, $41, $43, $52, $4F, $53, $53, $20, $54, $48, $45, $20, $4F, $43, $45, $41 ; CPU:$A5E0 PRG:25E0 20 41 43 52 4F 53 53 20 54 48 45 20 4F 43 45 41 + .byte $4E, $2E, $20, $20, $20, $20, $FF, $FF, $20, $20, $20, $20, $20, $54, $48, $45 ; CPU:$A5F0 PRG:25F0 4E 2E 20 20 20 20 FF FF 20 20 20 20 20 54 48 45 + .byte $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $20, $20, $20, $20, $20 ; CPU:$A600 PRG:2600 20 4D 45 52 50 45 4F 50 4C 45 20 20 20 20 20 20 + .byte $FF, $20, $50, $4C, $41, $59, $45, $44, $20, $41, $4C, $4C, $20, $54, $48, $45 ; CPU:$A610 PRG:2610 FF 20 50 4C 41 59 45 44 20 41 4C 4C 20 54 48 45 + .byte $20, $47, $41, $4D, $45, $53, $20, $20, $20, $FF, $20, $20, $54, $48, $45, $59 ; CPU:$A620 PRG:2620 20 47 41 4D 45 53 20 20 20 FF 20 20 54 48 45 59 + .byte $20, $4C, $4F, $56, $45, $44, $20, $53, $4F, $20, $4D, $55, $43, $48, $2E, $20 ; CPU:$A630 PRG:2630 20 4C 4F 56 45 44 20 53 4F 20 4D 55 43 48 2E 20 + .byte $20, $20, $FF, $FF, $20, $20, $20, $41, $4E, $44, $20, $59, $4F, $55, $20, $4B ; CPU:$A640 PRG:2640 20 20 FF FF 20 20 20 41 4E 44 20 59 4F 55 20 4B + .byte $4E, $4F, $57, $20, $57, $48, $41, $54, $3F, $20, $20, $20, $FF, $20, $20, $20 ; CPU:$A650 PRG:2650 4E 4F 57 20 57 48 41 54 3F 20 20 20 FF 20 20 20 + .byte $45, $56, $45, $52, $59, $20, $47, $41, $4D, $45, $20, $53, $45, $45, $4D, $45 ; CPU:$A660 PRG:2660 45 56 45 52 59 20 47 41 4D 45 20 53 45 45 4D 45 + .byte $44, $20, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $53, $4F, $4D, $45 ; CPU:$A670 PRG:2670 44 20 20 20 20 FF 20 20 20 20 20 20 53 4F 4D 45 + .byte $48, $4F, $57, $20, $4A, $55, $53, $54, $20, $20, $20, $20, $20, $20, $FF, $FF ; CPU:$A680 PRG:2680 48 4F 57 20 4A 55 53 54 20 20 20 20 20 20 FF FF + .byte $FF, $20, $41, $20, $4C, $49, $54, $54, $4C, $45, $20, $42, $49, $54, $20, $4D ; CPU:$A690 PRG:2690 FF 20 41 20 4C 49 54 54 4C 45 20 42 49 54 20 4D + .byte $4F, $52, $45, $20, $46, $55, $4E, $20, $20, $FF, $20, $20, $20, $20, $20, $20 ; CPU:$A6A0 PRG:26A0 4F 52 45 20 46 55 4E 20 20 FF 20 20 20 20 20 20 + .byte $54, $48, $41, $4E, $20, $42, $45, $46, $4F, $52, $45, $2E, $20, $20, $20, $20 ; CPU:$A6B0 PRG:26B0 54 48 41 4E 20 42 45 46 4F 52 45 2E 20 20 20 20 + .byte $20, $20, $FF, $FF, $20, $20, $20, $20, $20, $20, $41, $4E, $44, $20, $54, $48 ; CPU:$A6C0 PRG:26C0 20 20 FF FF 20 20 20 20 20 20 41 4E 44 20 54 48 + .byte $45, $59, $20, $41, $4C, $4C, $20, $20, $20, $20, $20, $20, $FF, $20, $20, $20 ; CPU:$A6D0 PRG:26D0 45 59 20 41 4C 4C 20 20 20 20 20 20 FF 20 20 20 + .byte $20, $20, $4C, $49, $56, $45, $44, $20, $48, $41, $50, $50, $49, $4C, $59, $20 ; CPU:$A6E0 PRG:26E0 20 20 4C 49 56 45 44 20 48 41 50 50 49 4C 59 20 + .byte $20, $20, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $45, $56, $45, $52 ; CPU:$A6F0 PRG:26F0 20 20 20 20 20 FF 20 20 20 20 20 20 45 56 45 52 + .byte $20, $41, $46, $54, $45, $52, $2E, $20, $20, $20, $20, $20, $20, $20, $FF, $0E ; CPU:$A700 PRG:2700 20 41 46 54 45 52 2E 20 20 20 20 20 20 20 FF 0E + .byte $0E, $05, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E ; CPU:$A710 PRG:2710 0E 05 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E + .byte $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25, $1A, $0E, $21, $13, $30, $0E ; CPU:$A720 PRG:2720 0E 0E 0E 0E 25 13 1A 0E 21 25 1A 0E 21 13 30 0E + .byte $01, $15, $06, $0E, $05, $0E, $0E, $0E, $01, $05, $0E, $0E, $01, $0E, $10, $0E ; CPU:$A730 PRG:2730 01 15 06 0E 05 0E 0E 0E 01 05 0E 0E 01 0E 10 0E + .byte $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25, $1A, $0E, $21, $13, $30, $0E ; CPU:$A740 PRG:2740 0E 0E 0E 0E 25 13 1A 0E 21 25 1A 0E 21 13 30 0E + .byte $11, $25, $16, $0E, $15, $03, $0A, $0E, $11, $15, $0A, $0E, $11, $03, $20, $0E ; CPU:$A750 PRG:2750 11 25 16 0E 15 03 0A 0E 11 15 0A 0E 11 03 20 0E + .byte $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25, $1A, $0E, $21, $13, $30, $0E ; CPU:$A760 PRG:2760 0E 0E 0E 0E 25 13 1A 0E 21 25 1A 0E 21 13 30 0E + .byte $21, $36, $26, $0E, $25, $13, $1A, $0E, $21, $25, $1A, $0E, $21, $13, $30, $0E ; CPU:$A770 PRG:2770 21 36 26 0E 25 13 1A 0E 21 25 1A 0E 21 13 30 0E + .byte $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25, $1A, $0E, $21, $13, $30, $A5 ; CPU:$A780 PRG:2780 0E 0E 0E 0E 25 13 1A 0E 21 25 1A 0E 21 13 30 A5 + .byte $B9, $8D, $E8, $05, $A5, $C2, $F0, $0C, $A5, $B9, $D0, $08, $20, $21, $B8, $A9 ; CPU:$A790 PRG:2790 B9 8D E8 05 A5 C2 F0 0C A5 B9 D0 08 20 21 B8 A9 + .byte $00, $85, $B9, $60, $A5, $71, $C9, $02, $F0, $09, $A5, $B9, $C9, $07, $B0, $03 ; CPU:$A7A0 PRG:27A0 00 85 B9 60 A5 71 C9 02 F0 09 A5 B9 C9 07 B0 03 + .byte $20, $D0, $B7, $A5, $BE, $30, $0C, $A5, $71, $C9, $02, $F0, $06, $A5, $31, $D0 ; CPU:$A7B0 PRG:27B0 20 D0 B7 A5 BE 30 0C A5 71 C9 02 F0 06 A5 31 D0 + .byte $02, $E6, $C0, $A5, $B9, $20, $73, $81, $DC, $A7, $05, $A8, $6C, $A8, $88, $AD ; CPU:$A7C0 PRG:27C0 02 E6 C0 A5 B9 20 73 81 DC A7 05 A8 6C A8 88 AD + .byte $CE, $AF, $AE, $A8, $1B, $AA, $91, $AA, $0B, $AE, $21, $BA, $A9, $A4, $85, $A6 ; CPU:$A7D0 PRG:27D0 CE AF AE A8 1B AA 91 AA 0B AE 21 BA A9 A4 85 A6 + .byte $A9, $CE, $85, $A7, $A9, $2B, $85, $AA, $E6, $B9, $A9, $00, $85, $B3, $85, $A5 ; CPU:$A7E0 PRG:27E0 A9 CE 85 A7 A9 2B 85 AA E6 B9 A9 00 85 B3 85 A5 + .byte $85, $37, $85, $36, $A9, $08, $85, $9D, $20, $EF, $A8, $A5, $BF, $C9, $05, $D0 ; CPU:$A7F0 PRG:27F0 85 37 85 36 A9 08 85 9D 20 EF A8 A5 BF C9 05 D0 + .byte $03, $20, $9F, $AF, $60, $20, $B3, $AA, $A5, $2B, $29, $C0, $F0, $1A, $A9, $01 ; CPU:$A800 PRG:2800 03 20 9F AF 60 20 B3 AA A5 2B 29 C0 F0 1A A9 01 + .byte $8D, $E3, $00, $A9, $03, $8D, $E2, $00, $A5, $2B, $29, $80, $F0, $05, $A9, $02 ; CPU:$A810 PRG:2810 8D E3 00 A9 03 8D E2 00 A5 2B 29 80 F0 05 A9 02 + .byte $8D, $E2, $00, $A9, $04, $20, $04, $80, $AD, $DD, $06, $F0, $03, $20, $A1, $A9 ; CPU:$A820 PRG:2820 8D E2 00 A9 04 20 04 80 AD DD 06 F0 03 20 A1 A9 + .byte $A6, $BD, $F0, $25, $AD, $59, $03, $C9, $07, $90, $1F, $BD, $8D, $03, $8D, $89 ; CPU:$A830 PRG:2830 A6 BD F0 25 AD 59 03 C9 07 90 1F BD 8D 03 8D 89 + .byte $03, $BD, $9D, $03, $8D, $99, $03, $A9, $04, $18, $6D, $89, $03, $8D, $89, $03 ; CPU:$A840 PRG:2840 03 BD 9D 03 8D 99 03 A9 04 18 6D 89 03 8D 89 03 + .byte $A9, $04, $18, $6D, $99, $03, $8D, $99, $03, $60, $A5, $31, $6A, $29, $03, $85 ; CPU:$A850 PRG:2850 A9 04 18 6D 99 03 8D 99 03 60 A5 31 6A 29 03 85 + .byte $20, $AD, $AF, $03, $29, $FC, $05, $20, $8D, $AF, $03, $60, $A5, $31, $6A, $90 ; CPU:$A860 PRG:2860 20 AD AF 03 29 FC 05 20 8D AF 03 60 A5 31 6A 90 + .byte $01, $60, $20, $55, $AD, $20, $7F, $A9, $A5, $BD, $F0, $1C, $AD, $59, $03, $C9 ; CPU:$A870 PRG:2870 01 60 20 55 AD 20 7F A9 A5 BD F0 1C AD 59 03 C9 + .byte $07, $90, $15, $A6, $BD, $B5, $AA, $85, $BE, $AA, $BD, $EA, $05, $09, $40, $9D ; CPU:$A880 PRG:2880 07 90 15 A6 BD B5 AA 85 BE AA BD EA 05 09 40 9D + .byte $EA, $05, $A9, $00, $85, $BD, $85, $C0, $E6, $B9, $A9, $01, $8D, $E3, $00, $A9 ; CPU:$A890 PRG:2890 EA 05 A9 00 85 BD 85 C0 E6 B9 A9 01 8D E3 00 A9 + .byte $00, $8D, $E2, $00, $A9, $04, $20, $04, $80, $A9, $00, $85, $BA, $60, $20, $08 ; CPU:$A8A0 PRG:28A0 00 8D E2 00 A9 04 20 04 80 A9 00 85 BA 60 20 08 + .byte $B1, $60, $A6, $C3, $A9, $04, $85, $1F, $A5, $A5, $0A, $0A, $A8, $B1, $A3, $85 ; CPU:$A8B0 PRG:28B0 B1 60 A6 C3 A9 04 85 1F A5 A5 0A 0A A8 B1 A3 85 + .byte $1B, $29, $F0, $85, $1C, $18, $65, $A6, $9D, $88, $03, $A5, $1B, $29, $0F, $0A ; CPU:$A8C0 PRG:28C0 1B 29 F0 85 1C 18 65 A6 9D 88 03 A5 1B 29 0F 0A + .byte $0A, $0A, $0A, $18, $65, $A7, $9D, $98, $03, $A9, $10, $25, $1C, $F0, $09, $BD ; CPU:$A8D0 PRG:28D0 0A 0A 0A 18 65 A7 9D 98 03 A9 10 25 1C F0 09 BD + .byte $98, $03, $18, $69, $08, $9D, $98, $03, $E8, $C8, $C6, $1F, $D0, $CF, $60, $EE ; CPU:$A8E0 PRG:28E0 98 03 18 69 08 9D 98 03 E8 C8 C6 1F D0 CF 60 EE + .byte $E3, $05, $AD, $E3, $05, $6A, $AC, $E5, $05, $D0, $05, $20, $52, $85, $A5, $3D ; CPU:$A8F0 PRG:28F0 E3 05 AD E3 05 6A AC E5 05 D0 05 20 52 85 A5 3D + .byte $29, $07, $85, $1D, $AD, $E3, $05, $6A, $AC, $E5, $05, $D0, $05, $20, $52, $85 ; CPU:$A900 PRG:2900 29 07 85 1D AD E3 05 6A AC E5 05 D0 05 20 52 85 + .byte $A5, $3D, $29, $7F, $A8, $B1, $3B, $85, $1B, $6A, $6A, $6A, $29, $0E, $85, $9E ; CPU:$A910 PRG:2910 A5 3D 29 7F A8 B1 3B 85 1B 6A 6A 6A 29 0E 85 9E + .byte $AA, $BD, $13, $F3, $85, $A3, $BD, $14, $F3, $85, $A4, $BD, $8E, $F3, $85, $19 ; CPU:$A920 PRG:2920 AA BD 13 F3 85 A3 BD 14 F3 85 A4 BD 8E F3 85 19 + .byte $BD, $8F, $F3, $85, $1A, $A5, $1B, $29, $0F, $0A, $0A, $A8, $A2, $00, $86, $21 ; CPU:$A930 PRG:2930 BD 8F F3 85 1A A5 1B 29 0F 0A 0A A8 A2 00 86 21 + .byte $B1, $19, $18, $65, $1D, $AA, $BD, $81, $F3, $A6, $21, $95, $AF, $C8, $E8, $E0 ; CPU:$A940 PRG:2940 B1 19 18 65 1D AA BD 81 F3 A6 21 95 AF C8 E8 E0 + .byte $04, $90, $EB, $A2, $00, $A9, $06, $85, $12, $86, $21, $B5, $AF, $85, $11, $20 ; CPU:$A950 PRG:2950 04 90 EB A2 00 A9 06 85 12 86 21 B5 AF 85 11 20 + .byte $5D, $85, $E6, $12, $A6, $21, $E8, $E0, $04, $90, $EE, $A9, $06, $85, $C3, $A0 ; CPU:$A960 PRG:2960 5D 85 E6 12 A6 21 E8 E0 04 90 EE A9 06 85 C3 A0 + .byte $00, $B1, $A3, $18, $65, $AA, $99, $AB, $00, $C8, $C0, $04, $90, $F3, $60, $A9 ; CPU:$A970 PRG:2970 00 B1 A3 18 65 AA 99 AB 00 C8 C0 04 90 F3 60 A9 + .byte $00, $85, $11, $A9, $06, $85, $12, $20, $5D, $85, $E6, $12, $AD, $5F, $03, $C9 ; CPU:$A980 PRG:2980 00 85 11 A9 06 85 12 20 5D 85 E6 12 AD 5F 03 C9 + .byte $05, $D0, $02, $E6, $12, $20, $5D, $85, $E6, $12, $A5, $12, $C9, $0A, $90, $F5 ; CPU:$A990 PRG:2990 05 D0 02 E6 12 20 5D 85 E6 12 A5 12 C9 0A 90 F5 + .byte $60, $A5, $31, $6A, $90, $01, $60, $AD, $DD, $06, $AA, $29, $0F, $18, $6D, $BF ; CPU:$A9A0 PRG:29A0 60 A5 31 6A 90 01 60 AD DD 06 AA 29 0F 18 6D BF + .byte $05, $8D, $BF, $05, $8A, $6A, $6A, $6A, $6A, $29, $0F, $18, $6D, $BE, $05, $8D ; CPU:$A9B0 PRG:29B0 05 8D BF 05 8A 6A 6A 6A 6A 29 0F 18 6D BE 05 8D + .byte $BE, $05, $A2, $05, $BD, $BA, $05, $C9, $0A, $90, $0B, $FE, $B9, $05, $18, $69 ; CPU:$A9C0 PRG:29C0 BE 05 A2 05 BD BA 05 C9 0A 90 0B FE B9 05 18 69 + .byte $06, $29, $0F, $9D, $BA, $05, $CA, $D0, $EB, $A9, $06, $8D, $F1, $06, $A9, $01 ; CPU:$A9D0 PRG:29D0 06 29 0F 9D BA 05 CA D0 EB A9 06 8D F1 06 A9 01 + .byte $8D, $F2, $06, $A2, $00, $BD, $BA, $05, $A8, $B9, $D6, $F1, $9D, $F3, $06, $E8 ; CPU:$A9E0 PRG:29E0 8D F2 06 A2 00 BD BA 05 A8 B9 D6 F1 9D F3 06 E8 + .byte $E0, $06, $90, $F1, $A6, $37, $A9, $3A, $9D, $38, $03, $A9, $23, $9D, $39, $03 ; CPU:$A9F0 PRG:29F0 E0 06 90 F1 A6 37 A9 3A 9D 38 03 A9 23 9D 39 03 + .byte $AD, $0A, $B7, $9D, $3A, $03, $AD, $0B, $B7, $9D, $3B, $03, $A9, $00, $9D, $3C ; CPU:$AA00 PRG:2A00 AD 0A B7 9D 3A 03 AD 0B B7 9D 3B 03 A9 00 9D 3C + .byte $03, $8D, $DD, $06, $8A, $18, $69, $04, $85, $37, $60, $A5, $C0, $C9, $08, $90 ; CPU:$AA10 PRG:2A10 03 8D DD 06 8A 18 69 04 85 37 60 A5 C0 C9 08 90 + .byte $15, $A6, $BE, $BD, $EA, $05, $29, $BF, $9D, $EA, $05, $A9, $00, $85, $C0, $8D ; CPU:$AA20 PRG:2A20 15 A6 BE BD EA 05 29 BF 9D EA 05 A9 00 85 C0 8D + .byte $59, $03, $A9, $FF, $85, $BE, $A2, $0B, $BD, $EA, $05, $F0, $09, $E6, $B9, $E6 ; CPU:$AA30 PRG:2A30 59 03 A9 FF 85 BE A2 0B BD EA 05 F0 09 E6 B9 E6 + .byte $B9, $A9, $00, $85, $BA, $60, $8A, $18, $69, $10, $AA, $C9, $70, $90, $E9, $A9 ; CPU:$AA40 PRG:2A40 B9 A9 00 85 BA 60 8A 18 69 10 AA C9 70 90 E9 A9 + .byte $00, $85, $B9, $A5, $71, $C9, $02, $F0, $2C, $A5, $C2, $D0, $27, $A5, $BC, $C9 ; CPU:$AA50 PRG:2A50 00 85 B9 A5 71 C9 02 F0 2C A5 C2 D0 27 A5 BC C9 + .byte $1E, $90, $0F, $A9, $00, $85, $BC, $E6, $BF, $A5, $BF, $C9, $05, $F0, $03, $20 ; CPU:$AA60 PRG:2A60 1E 90 0F A9 00 85 BC E6 BF A5 BF C9 05 F0 03 20 + .byte $5A, $AF, $A5, $BB, $C9, $C8, $90, $0C, $A9, $07, $85, $B9, $A9, $00, $85, $BA ; CPU:$AA70 PRG:2A70 5A AF A5 BB C9 C8 90 0C A9 07 85 B9 A9 00 85 BA + .byte $A9, $32, $85, $B3, $60, $A6, $BE, $BD, $EA, $05, $29, $40, $D0, $F6, $4C, $78 ; CPU:$AA80 PRG:2A80 A9 32 85 B3 60 A6 BE BD EA 05 29 40 D0 F6 4C 78 + .byte $AA, $A9, $01, $85, $98, $A5, $95, $D0, $08, $AD, $E9, $05, $C9, $05, $D0, $01 ; CPU:$AA90 PRG:2A90 AA A9 01 85 98 A5 95 D0 08 AD E9 05 C9 05 D0 01 + .byte $60, $A9, $09, $85, $6A, $A9, $00, $85, $6C, $60, $A9, $05, $85, $BA, $A9, $08 ; CPU:$AAA0 PRG:2AA0 60 A9 09 85 6A A9 00 85 6C 60 A9 05 85 BA A9 08 + .byte $85, $B9, $60, $A5, $B3, $F0, $1E, $A5, $9C, $29, $01, $F0, $05, $E6, $A6, $4C ; CPU:$AAB0 PRG:2AB0 85 B9 60 A5 B3 F0 1E A5 9C 29 01 F0 05 E6 A6 4C + .byte $CA, $AA, $A5, $9C, $29, $02, $F0, $02, $C6, $A6, $C6, $B3, $D0, $04, $A9, $00 ; CPU:$AAC0 PRG:2AC0 CA AA A5 9C 29 02 F0 02 C6 A6 C6 B3 D0 04 A9 00 + .byte $85, $9C, $4C, $DF, $AB, $AD, $E5, $05, $F0, $17, $AE, $E4, $05, $BD, $BE, $AC ; CPU:$AAD0 PRG:2AD0 85 9C 4C DF AB AD E5 05 F0 17 AE E4 05 BD BE AC + .byte $C5, $AA, $D0, $0D, $BD, $BF, $AC, $85, $27, $85, $2B, $EE, $E4, $05, $EE, $E4 ; CPU:$AAE0 PRG:2AE0 C5 AA D0 0D BD BF AC 85 27 85 2B EE E4 05 EE E4 + .byte $05, $A5, $27, $29, $08, $D0, $06, $A9, $00, $85, $C5, $F0, $16, $E6, $C5, $A5 ; CPU:$AAF0 PRG:2AF0 05 A5 27 29 08 D0 06 A9 00 85 C5 F0 16 E6 C5 A5 + .byte $C5, $C9, $08, $90, $0A, $A9, $00, $85, $C5, $EE, $DD, $06, $EE, $DD, $06, $A9 ; CPU:$AB00 PRG:2B00 C5 C9 08 90 0A A9 00 85 C5 EE DD 06 EE DD 06 A9 + .byte $00, $85, $C6, $A5, $C6, $D0, $0A, $A5, $CB, $85, $C6, $C6, $9D, $C6, $A7, $C6 ; CPU:$AB10 PRG:2B10 00 85 C6 A5 C6 D0 0A A5 CB 85 C6 C6 9D C6 A7 C6 + .byte $A7, $C6, $C6, $A5, $9D, $D0, $16, $A9, $08, $85, $9D, $A5, $AA, $85, $20, $C6 ; CPU:$AB20 PRG:2B20 A7 C6 C6 A5 9D D0 16 A9 08 85 9D A5 AA 85 20 C6 + .byte $20, $A5, $A5, $85, $23, $20, $29, $AC, $F0, $03, $E6, $B9, $60, $A5, $27, $29 ; CPU:$AB30 PRG:2B30 20 A5 A5 85 23 20 29 AC F0 03 E6 B9 60 A5 27 29 + .byte $03, $D0, $03, $4C, $DF, $AB, $C9, $03, $D0, $07, $A9, $00, $85, $9C, $4C, $DF ; CPU:$AB40 PRG:2B40 03 D0 03 4C DF AB C9 03 D0 07 A9 00 85 9C 4C DF + .byte $AB, $85, $9C, $A5, $27, $29, $01, $F0, $09, $A5, $AA, $18, $69, $10, $29, $F0 ; CPU:$AB50 PRG:2B50 AB 85 9C A5 27 29 01 F0 09 A5 AA 18 69 10 29 F0 + .byte $85, $20, $A5, $27, $29, $02, $F0, $09, $A5, $AA, $38, $E9, $10, $29, $F0, $85 ; CPU:$AB60 PRG:2B60 85 20 A5 27 29 02 F0 09 A5 AA 38 E9 10 29 F0 85 + .byte $20, $A5, $AA, $29, $0F, $05, $20, $85, $20, $A5, $9D, $C9, $05, $90, $1B, $A5 ; CPU:$AB70 PRG:2B70 20 A5 AA 29 0F 05 20 85 20 A5 9D C9 05 90 1B A5 + .byte $AA, $85, $1C, $29, $0F, $C9, $0E, $90, $06, $A5, $AA, $49, $10, $85, $1C, $A5 ; CPU:$AB80 PRG:2B80 AA 85 1C 29 0F C9 0E 90 06 A5 AA 49 10 85 1C A5 + .byte $1C, $29, $10, $F0, $1D, $E6, $20, $4C, $B2, $AB, $A5, $AA, $85, $1C, $29, $0F ; CPU:$AB90 PRG:2B90 1C 29 10 F0 1D E6 20 4C B2 AB A5 AA 85 1C 29 0F + .byte $C9, $0E, $90, $06, $A5, $AA, $49, $10, $85, $1C, $A5, $1C, $29, $10, $D0, $02 ; CPU:$ABA0 PRG:2BA0 C9 0E 90 06 A5 AA 49 10 85 1C A5 1C 29 10 D0 02 + .byte $C6, $20, $A5, $A5, $85, $23, $20, $29, $AC, $F0, $09, $A9, $00, $85, $9C, $85 ; CPU:$ABB0 PRG:2BB0 C6 20 A5 A5 85 23 20 29 AC F0 09 A9 00 85 9C 85 + .byte $B3, $4C, $DF, $AB, $A9, $00, $85, $C6, $A9, $10, $85, $B3, $A5, $9D, $C9, $05 ; CPU:$ABC0 PRG:2BC0 B3 4C DF AB A9 00 85 C6 A9 10 85 B3 A5 9D C9 05 + .byte $90, $08, $38, $E9, $04, $85, $9D, $4C, $DF, $AB, $18, $69, $04, $85, $9D, $A5 ; CPU:$ABD0 PRG:2BD0 90 08 38 E9 04 85 9D 4C DF AB 18 69 04 85 9D A5 + .byte $A5, $85, $23, $29, $01, $F0, $21, $A5, $2B, $29, $80, $F0, $02, $C6, $23, $A5 ; CPU:$ABE0 PRG:2BE0 A5 85 23 29 01 F0 21 A5 2B 29 80 F0 02 C6 23 A5 + .byte $2B, $29, $40, $F0, $02, $E6, $23, $A5, $23, $29, $03, $85, $23, $A5, $AA, $85 ; CPU:$ABF0 PRG:2BF0 2B 29 40 F0 02 E6 23 A5 23 29 03 85 23 A5 AA 85 + .byte $20, $20, $29, $AC, $20, $B2, $A8, $60, $A5, $2B, $29, $80, $F0, $02, $E6, $23 ; CPU:$AC00 PRG:2C00 20 20 29 AC 20 B2 A8 60 A5 2B 29 80 F0 02 E6 23 + .byte $A5, $2B, $29, $40, $F0, $02, $C6, $23, $A5, $23, $29, $03, $85, $23, $A5, $AA ; CPU:$AC10 PRG:2C10 A5 2B 29 40 F0 02 C6 23 A5 23 29 03 85 23 A5 AA + .byte $85, $20, $20, $29, $AC, $20, $B2, $A8, $60, $A5, $20, $29, $F0, $85, $21, $A5 ; CPU:$AC20 PRG:2C20 85 20 20 29 AC 20 B2 A8 60 A5 20 29 F0 85 21 A5 + .byte $20, $29, $0F, $85, $22, $A9, $04, $85, $1F, $A2, $00, $A5, $23, $0A, $0A, $85 ; CPU:$AC30 PRG:2C30 20 29 0F 85 22 A9 04 85 1F A2 00 A5 23 0A 0A 85 + .byte $25, $A4, $25, $B1, $A3, $85, $1E, $A5, $21, $85, $1C, $A5, $22, $C9, $0E, $90 ; CPU:$AC40 PRG:2C40 25 A4 25 B1 A3 85 1E A5 21 85 1C A5 22 C9 0E 90 + .byte $07, $A5, $21, $18, $69, $10, $85, $1C, $A5, $1C, $29, $10, $F0, $08, $A5, $1E ; CPU:$AC50 PRG:2C50 07 A5 21 18 69 10 85 1C A5 1C 29 10 F0 08 A5 1E + .byte $29, $10, $F0, $02, $E6, $1E, $A5, $1E, $29, $F0, $18, $65, $21, $85, $1D, $C9 ; CPU:$AC60 PRG:2C60 29 10 F0 02 E6 1E A5 1E 29 F0 18 65 21 85 1D C9 + .byte $70, $D0, $03, $A9, $FF, $60, $A5, $1E, $29, $0F, $18, $65, $22, $85, $1C, $29 ; CPU:$AC70 PRG:2C70 70 D0 03 A9 FF 60 A5 1E 29 0F 18 65 22 85 1C 29 + .byte $0F, $C9, $0E, $90, $03, $A9, $FF, $60, $A5, $1C, $18, $65, $1D, $C9, $70, $B0 ; CPU:$AC80 PRG:2C80 0F C9 0E 90 03 A9 FF 60 A5 1C 18 65 1D C9 70 B0 + .byte $F4, $A8, $B9, $EA, $05, $29, $7F, $F0, $01, $60, $98, $95, $C7, $E8, $E6, $25 ; CPU:$AC90 PRG:2C90 F4 A8 B9 EA 05 29 7F F0 01 60 98 95 C7 E8 E6 25 + .byte $C6, $1F, $D0, $9D, $A9, $04, $85, $1F, $A2, $00, $B5, $C7, $95, $AB, $E8, $C6 ; CPU:$ACA0 PRG:2CA0 C6 1F D0 9D A9 04 85 1F A2 00 B5 C7 95 AB E8 C6 + .byte $1F, $D0, $F7, $A5, $20, $85, $AA, $A5, $23, $85, $A5, $A9, $00, $60, $28, $80 ; CPU:$ACB0 PRG:2CB0 1F D0 F7 A5 20 85 AA A5 23 85 A5 A9 00 60 28 80 + .byte $24, $02, $28, $01, $32, $02, $29, $01, $35, $40, $29, $80, $24, $01, $2A, $01 ; CPU:$ACC0 PRG:2CC0 24 02 28 01 32 02 29 01 35 40 29 80 24 01 2A 01 + .byte $35, $01, $28, $80, $24, $40, $28, $01, $34, $02, $28, $40, $25, $40, $2A, $02 ; CPU:$ACD0 PRG:2CD0 35 01 28 80 24 40 28 01 34 02 28 40 25 40 2A 02 + .byte $17, $02, $05, $80, $28, $40, $23, $80, $28, $01, $34, $40, $32, $01, $29, $01 ; CPU:$ACE0 PRG:2CE0 17 02 05 80 28 40 23 80 28 01 34 40 32 01 29 01 + .byte $35, $40, $33, $01, $29, $80, $25, $01, $32, $01, $27, $02, $12, $40, $27, $40 ; CPU:$ACF0 PRG:2CF0 35 40 33 01 29 80 25 01 32 01 27 02 12 40 27 40 + .byte $24, $02, $29, $80, $23, $80, $29, $01, $32, $02, $21, $02, $26, $40, $22, $02 ; CPU:$AD00 PRG:2D00 24 02 29 80 23 80 29 01 32 02 21 02 26 40 22 02 + .byte $10, $01, $25, $02, $29, $80, $26, $40, $28, $40, $25, $80, $23, $40, $29, $80 ; CPU:$AD10 PRG:2D10 10 01 25 02 29 80 26 40 28 40 25 80 23 40 29 80 + .byte $26, $01, $34, $01, $28, $80, $22, $01, $29, $01, $36, $01, $43, $01, $28, $40 ; CPU:$AD20 PRG:2D20 26 01 34 01 28 80 22 01 29 01 36 01 43 01 28 40 + .byte $25, $80, $23, $01, $29, $01, $36, $01, $29, $01, $36, $01, $29, $80, $25, $80 ; CPU:$AD30 PRG:2D30 25 80 23 01 29 01 36 01 29 01 36 01 29 80 25 80 + .byte $28, $80, $2A, $02, $18, $02, $06, $40, $04, $01, $28, $40, $28, $80, $25, $80 ; CPU:$AD40 PRG:2D40 28 80 2A 02 18 02 06 40 04 01 28 40 28 80 25 80 + .byte $29, $02, $29, $01, $37, $A2, $00, $86, $21, $B4, $AB, $B5, $AF, $85, $1B, $99 ; CPU:$AD50 PRG:2D50 29 02 29 01 37 A2 00 86 21 B4 AB B5 AF 85 1B 99 + .byte $EA, $05, $E6, $21, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18 ; CPU:$AD60 PRG:2D60 EA 05 E6 21 0A AA BD 9E F2 85 17 BD 9F F2 85 18 + .byte $98, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84, $A6, $21, $E0, $04, $90, $D9 ; CPU:$AD70 PRG:2D70 98 20 BF 84 20 8A 85 20 E3 84 A6 21 E0 04 90 D9 + .byte $A6, $36, $A9, $00, $9D, $00, $03, $60, $A5, $BA, $C9, $00, $D0, $36, $A2, $00 ; CPU:$AD80 PRG:2D80 A6 36 A9 00 9D 00 03 60 A5 BA C9 00 D0 36 A2 00 + .byte $86, $B5, $86, $21, $B5, $AB, $85, $20, $C6, $20, $A5, $20, $29, $0F, $C9, $0E ; CPU:$AD90 PRG:2D90 86 B5 86 21 B5 AB 85 20 C6 20 A5 20 29 0F C9 0E + .byte $B0, $18, $A4, $20, $B9, $EA, $05, $D0, $11, $A9, $80, $99, $EA, $05, $98, $A6 ; CPU:$ADA0 PRG:2DA0 B0 18 A4 20 B9 EA 05 D0 11 A9 80 99 EA 05 98 A6 + .byte $B5, $9D, $A1, $06, $E6, $B5, $C6, $20, $10, $E0, $A6, $21, $E8, $E0, $04, $90 ; CPU:$ADB0 PRG:2DB0 B5 9D A1 06 E6 B5 C6 20 10 E0 A6 21 E8 E0 04 90 + .byte $D1, $E6, $BA, $60, $A5, $31, $6A, $90, $01, $60, $A9, $0D, $85, $17, $A9, $F3 ; CPU:$ADC0 PRG:2DC0 D1 E6 BA 60 A5 31 6A 90 01 60 A9 0D 85 17 A9 F3 + .byte $85, $18, $A9, $0C, $85, $1F, $A0, $00, $C6, $B5, $10, $18, $E6, $B9, $A5, $BD ; CPU:$ADD0 PRG:2DD0 85 18 A9 0C 85 1F A0 00 C6 B5 10 18 E6 B9 A5 BD + .byte $D0, $02, $E6, $B9, $A9, $00, $A4, $36, $85, $BA, $99, $00, $03, $85, $9C, $A9 ; CPU:$ADE0 PRG:2DE0 D0 02 E6 B9 A9 00 A4 36 85 BA 99 00 03 85 9C A9 + .byte $03, $85, $B3, $60, $A6, $B5, $BD, $A1, $06, $20, $BF, $84, $20, $8A, $85, $C6 ; CPU:$ADF0 PRG:2DF0 03 85 B3 60 A6 B5 BD A1 06 20 BF 84 20 8A 85 C6 + .byte $1F, $10, $D5, $A4, $36, $A9, $00, $99, $00, $03, $60, $A5, $BA, $20, $73, $81 ; CPU:$AE00 PRG:2E00 1F 10 D5 A4 36 A9 00 99 00 03 60 A5 BA 20 73 81 + .byte $20, $AE, $2B, $AE, $47, $AE, $80, $AE, $D6, $AE, $E3, $AE, $0A, $AF, $23, $AF ; CPU:$AE10 PRG:2E10 20 AE 2B AE 47 AE 80 AE D6 AE E3 AE 0A AF 23 AF + .byte $A9, $0A, $85, $6A, $A9, $00, $85, $6C, $E6, $BA, $60, $A9, $00, $8D, $59, $03 ; CPU:$AE20 PRG:2E20 A9 0A 85 6A A9 00 85 6C E6 BA 60 A9 00 8D 59 03 + .byte $8D, $5E, $03, $8D, $5F, $03, $8D, $60, $03, $8D, $61, $03, $A9, $0A, $85, $B5 ; CPU:$AE30 PRG:2E30 8D 5E 03 8D 5F 03 8D 60 03 8D 61 03 A9 0A 85 B5 + .byte $E6, $BA, $A9, $07, $4C, $04, $80, $A5, $31, $6A, $90, $01, $60, $A9, $A8, $85 ; CPU:$AE40 PRG:2E40 E6 BA A9 07 4C 04 80 A5 31 6A 90 01 60 A9 A8 85 + .byte $17, $A9, $F2, $85, $18, $A5, $B5, $85, $B3, $20, $BF, $84, $20, $8A, $85, $A5 ; CPU:$AE50 PRG:2E50 17 A9 F2 85 18 A5 B5 85 B3 20 BF 84 20 8A 85 A5 + .byte $B3, $18, $69, $10, $C9, $70, $90, $EF, $A9, $00, $9D, $00, $03, $C6, $B5, $10 ; CPU:$AE60 PRG:2E60 B3 18 69 10 C9 70 90 EF A9 00 9D 00 03 C6 B5 10 + .byte $0E, $E6, $BA, $A0, $00, $A9, $00, $99, $EA, $05, $C8, $C0, $70, $90, $F8, $60 ; CPU:$AE70 PRG:2E70 0E E6 BA A0 00 A9 00 99 EA 05 C8 C0 70 90 F8 60 + .byte $A5, $31, $6A, $90, $01, $60, $A6, $37, $A0, $00, $B9, $AC, $AE, $9D, $38, $03 ; CPU:$AE80 PRG:2E80 A5 31 6A 90 01 60 A6 37 A0 00 B9 AC AE 9D 38 03 + .byte $E8, $C8, $C0, $08, $90, $F4, $A9, $00, $9D, $38, $03, $86, $37, $A9, $01, $85 ; CPU:$AE90 PRG:2E90 E8 C8 C0 08 90 F4 A9 00 9D 38 03 86 37 A9 01 85 + .byte $96, $A9, $00, $85, $B8, $85, $B7, $85, $91, $E6, $BA, $60, $B7, $21, $11, $F8 ; CPU:$AEA0 PRG:2EA0 96 A9 00 85 B8 85 B7 85 91 E6 BA 60 B7 21 11 F8 + .byte $DD, $23, $1B, $F8, $A9, $00, $85, $BA, $A9, $0A, $85, $B5, $60, $20, $4D, $AE ; CPU:$AEB0 PRG:2EB0 DD 23 1B F8 A9 00 85 BA A9 0A 85 B5 60 20 4D AE + .byte $A5, $BA, $F0, $02, $E6, $6C, $60 ; CPU:$AEC0 PRG:2EC0 A5 BA F0 02 E6 6C 60 +; ----------------------------------------------------------------------------- +; Routine: ClearBubbleSlots +; Global: Empties the bubble slots. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearBubbleSlots: + lda #$00 ; CPU:$AEC7 PRG:2EC7 A9 00 + tax ; CPU:$AEC9 PRG:2EC9 AA +; ----------------------------------------------------------------------------- +; Routine: ClearBubbleSlots_OnCarryClear +; Global: Branch target inside ClearBubbleSlots: taken when the addition or subtraction did not carry. +; Local: Part of ClearBubbleSlots. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearBubbleSlots_OnCarryClear: + sta ZpB9,x ; CPU:$AECA PRG:2ECA 95 B9 + inx ; CPU:$AECC PRG:2ECC E8 + cpx #$0A ; CPU:$AECD PRG:2ECD E0 0A + bcc ClearBubbleSlots_OnCarryClear ; CPU:$AECF PRG:2ECF 90 F9 + lda #$FF ; CPU:$AED1 PRG:2ED1 A9 FF + sta ZpBE ; CPU:$AED3 PRG:2ED3 85 BE + rts ; CPU:$AED5 PRG:2ED5 60 +; ---- data $AED6-$BB4E (3193 bytes) ---- + .byte $A5, $27, $C9, $C0, $D0, $06, $E6, $BA, $A9, $00, $85, $96, $60, $A5, $31, $6A ; CPU:$AED6 PRG:2ED6 A5 27 C9 C0 D0 06 E6 BA A9 00 85 96 60 A5 31 6A + .byte $90, $01, $60, $A2, $00, $BD, $FE, $AE, $9D, $38, $03, $E8, $E0, $0C, $90, $F5 ; CPU:$AEE6 PRG:2EE6 90 01 60 A2 00 BD FE AE 9D 38 03 E8 E0 0C 90 F5 + .byte $A9, $00, $9D, $38, $03, $E6, $BA, $60, $75, $21, $25, $F8, $B5, $21, $25, $F8 ; CPU:$AEF6 PRG:2EF6 A9 00 9D 38 03 E6 BA 60 75 21 25 F8 B5 21 25 F8 + .byte $DD, $23, $20, $F8, $A5, $31, $6A, $90, $01, $60, $A0, $00, $A6, $37, $B9, $48 ; CPU:$AF06 PRG:2F06 DD 23 20 F8 A5 31 6A 90 01 60 A0 00 A6 37 B9 48 + .byte $AF, $9D, $38, $03, $E8, $C8, $C0, $0D, $90, $F4, $E6, $BA, $60, $A5, $31, $6A ; CPU:$AF16 PRG:2F16 AF 9D 38 03 E8 C8 C0 0D 90 F4 E6 BA 60 A5 31 6A + .byte $90, $01, $60, $A0, $00, $A6, $37, $B9, $55, $AF, $9D, $38, $03, $E8, $C8, $C0 ; CPU:$AF26 PRG:2F26 90 01 60 A0 00 A6 37 B9 55 AF 9D 38 03 E8 C8 C0 + .byte $05, $90, $F4, $20, $C7, $AE, $20, $0F, $97, $A9, $09, $85, $B9, $A9, $00, $85 ; CPU:$AF36 PRG:2F36 05 90 F4 20 C7 AE 20 0F 97 A9 09 85 B9 A9 00 85 + .byte $BA, $60, $32, $23, $A1, $FB, $52, $23, $A1, $FB, $3A, $23, $A7, $FB, $00, $56 ; CPU:$AF46 PRG:2F46 BA 60 32 23 A1 FB 52 23 A1 FB 3A 23 A7 FB 00 56 + .byte $23, $AF, $FB, $00, $A5, $B7, $D0, $18, $20, $52, $85, $A5, $3D, $29, $03, $A8 ; CPU:$AF56 PRG:2F56 23 AF FB 00 A5 B7 D0 18 20 52 85 A5 3D 29 03 A8 + .byte $A2, $00, $B9, $37, $C1, $9D, $F9, $06, $C8, $E8, $E0, $05, $90, $F4, $86, $B7 ; CPU:$AF66 PRG:2F66 A2 00 B9 37 C1 9D F9 06 C8 E8 E0 05 90 F4 86 B7 + .byte $A6, $B7, $BD, $F8, $06, $18, $69, $07, $85, $11, $A9, $01, $85, $12, $20, $5D ; CPU:$AF76 PRG:2F76 A6 B7 BD F8 06 18 69 07 85 11 A9 01 85 12 20 5D + .byte $85, $20, $52, $85, $A5, $3D, $29, $03, $85, $BD, $E6, $BD, $A6, $BE, $30, $08 ; CPU:$AF86 PRG:2F86 85 20 52 85 A5 3D 29 03 85 BD E6 BD A6 BE 30 08 + .byte $BD, $EA, $05, $29, $BF, $9D, $EA, $05, $60, $A9, $02, $85, $BD, $A9, $05, $85 ; CPU:$AF96 PRG:2F96 BD EA 05 29 BF 9D EA 05 60 A9 02 85 BD A9 05 85 + .byte $11, $A9, $07, $85, $12, $20, $5D, $85, $A9, $00, $85, $BC, $A6, $BE, $30, $17 ; CPU:$AFA6 PRG:2FA6 11 A9 07 85 12 20 5D 85 A9 00 85 BC A6 BE 30 17 + .byte $BD, $EA, $05, $29, $BF, $9D, $EA, $05, $A9, $FF, $85, $BE, $A9, $00, $85, $11 ; CPU:$AFB6 PRG:2FB6 BD EA 05 29 BF 9D EA 05 A9 FF 85 BE A9 00 85 11 + .byte $A9, $01, $85, $12, $20, $5D, $85, $60, $A5, $31, $6A, $90, $01, $60, $A5, $BA ; CPU:$AFC6 PRG:2FC6 A9 01 85 12 20 5D 85 60 A5 31 6A 90 01 60 A5 BA + .byte $D0, $11, $E6, $BA, $A9, $01, $8D, $E3, $00, $A9, $05, $8D, $E2, $00, $A9, $04 ; CPU:$AFD6 PRG:2FD6 D0 11 E6 BA A9 01 8D E3 00 A9 05 8D E2 00 A9 04 + .byte $4C, $04, $80, $C9, $01, $D0, $4A, $A9, $05, $85, $11, $A9, $08, $85, $12, $20 ; CPU:$AFE6 PRG:2FE6 4C 04 80 C9 01 D0 4A A9 05 85 11 A9 08 85 12 20 + .byte $5D, $85, $A5, $9C, $0A, $AA, $BD, $87, $F8, $18, $6D, $8F, $03, $8D, $90, $03 ; CPU:$AFF6 PRG:2FF6 5D 85 A5 9C 0A AA BD 87 F8 18 6D 8F 03 8D 90 03 + .byte $BD, $88, $F8, $18, $6D, $9F, $03, $8D, $A0, $03, $A5, $31, $6A, $29, $03, $85 ; CPU:$B006 PRG:3006 BD 88 F8 18 6D 9F 03 8D A0 03 A5 31 6A 29 03 85 + .byte $20, $AD, $AF, $03, $29, $FC, $05, $20, $8D, $AF, $03, $8D, $B0, $03, $E6, $9C ; CPU:$B016 PRG:3016 20 AD AF 03 29 FC 05 20 8D AF 03 8D B0 03 E6 9C + .byte $A5, $9C, $C9, $18, $D0, $0A, $A9, $00, $85, $9C, $C6, $B3, $D0, $02, $E6, $BA ; CPU:$B026 PRG:3026 A5 9C C9 18 D0 0A A9 00 85 9C C6 B3 D0 02 E6 BA + .byte $60, $C9, $02, $D0, $6F, $A5, $AC, $8D, $5B, $06, $AA, $20, $52, $85, $A5, $3D ; CPU:$B036 PRG:3036 60 C9 02 D0 6F A5 AC 8D 5B 06 AA 20 52 85 A5 3D + .byte $29, $03, $85, $BD, $E6, $BD, $A5, $BD, $9D, $EA, $05, $A0, $01, $84, $25, $AD ; CPU:$B046 PRG:3046 29 03 85 BD E6 BD A5 BD 9D EA 05 A0 01 84 25 AD + .byte $5B, $06, $29, $10, $F0, $06, $98, $18, $69, $06, $85, $25, $A9, $01, $85, $21 ; CPU:$B056 PRG:3056 5B 06 29 10 F0 06 98 18 69 06 85 25 A9 01 85 21 + .byte $A9, $06, $85, $1F, $A4, $25, $B9, $7A, $F8, $E6, $25, $18, $6D, $5B, $06, $AA ; CPU:$B066 PRG:3066 A9 06 85 1F A4 25 B9 7A F8 E6 25 18 6D 5B 06 AA + .byte $29, $0F, $C9, $0D, $B0, $20, $8A, $29, $F0, $C9, $70, $B0, $19, $BD, $EA, $05 ; CPU:$B076 PRG:3076 29 0F C9 0D B0 20 8A 29 F0 C9 70 B0 19 BD EA 05 + .byte $29, $07, $D0, $05, $9D, $EA, $05, $F0, $05, $A5, $BD, $9D, $EA, $05, $8A, $A6 ; CPU:$B086 PRG:3086 29 07 D0 05 9D EA 05 F0 05 A5 BD 9D EA 05 8A A6 + .byte $21, $9D, $5B, $06, $E6, $21, $C6, $1F, $D0, $CA, $A6, $21, $A9, $FF, $9D, $5B ; CPU:$B096 PRG:3096 21 9D 5B 06 E6 21 C6 1F D0 CA A6 21 A9 FF 9D 5B + .byte $06, $E6, $BA, $60, $C9, $03, $D0, $47, $A0, $00, $84, $22, $A4, $22, $B9, $5B ; CPU:$B0A6 PRG:30A6 06 E6 BA 60 C9 03 D0 47 A0 00 84 22 A4 22 B9 5B + .byte $06, $30, $22, $85, $21, $20, $BF, $84, $A6, $21, $BD, $EA, $05, $85, $1B, $0A ; CPU:$B0B6 PRG:30B6 06 30 22 85 21 20 BF 84 A6 21 BD EA 05 85 1B 0A + .byte $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3 ; CPU:$B0C6 PRG:30C6 AA BD 9E F2 85 17 BD 9F F2 85 18 20 8A 85 20 E3 + .byte $84, $E6, $22, $10, $D7, $A6, $36, $A9, $00, $9D, $00, $03, $A9, $00, $85, $11 ; CPU:$B0D6 PRG:30D6 84 E6 22 10 D7 A6 36 A9 00 9D 00 03 A9 00 85 11 + .byte $A9, $07, $85, $12, $20, $5D, $85, $E6, $12, $20, $5D, $85, $E6, $BA, $60, $E6 ; CPU:$B0E6 PRG:30E6 A9 07 85 12 20 5D 85 E6 12 20 5D 85 E6 BA 60 E6 + .byte $BA, $A5, $BA, $C9, $0F, $90, $0A, $A9, $00, $85, $BA, $85, $BF, $85, $BD, $E6 ; CPU:$B0F6 PRG:30F6 BA A5 BA C9 0F 90 0A A9 00 85 BA 85 BF 85 BD E6 + .byte $B9, $60, $A5, $BA, $20, $73, $81, $21, $B1, $F2, $B5, $29, $B2, $21, $B4, $51 ; CPU:$B106 PRG:3106 B9 60 A5 BA 20 73 81 21 B1 F2 B5 29 B2 21 B4 51 + .byte $B1, $0C, $B7, $E3, $B1, $E2, $B4, $4C, $B5, $7D, $B1, $A9, $00, $85, $B5, $A9 ; CPU:$B116 PRG:3116 B1 0C B7 E3 B1 E2 B4 4C B5 7D B1 A9 00 85 B5 A9 + .byte $04, $85, $1E, $A5, $1E, $85, $20, $20, $37, $B3, $C6, $1E, $D0, $F5, $AD, $DF ; CPU:$B126 PRG:3126 04 85 1E A5 1E 85 20 20 37 B3 C6 1E D0 F5 AD DF + .byte $06, $D0, $0D, $85, $BA, $E6, $B9, $A5, $C1, $C9, $03, $90, $02, $E6, $C1, $60 ; CPU:$B136 PRG:3136 06 D0 0D 85 BA E6 B9 A5 C1 C9 03 90 02 E6 C1 60 + .byte $A9, $00, $85, $9C, $85, $B3, $85, $B6, $E6, $BA, $60, $E6, $BA, $20, $A9, $B1 ; CPU:$B146 PRG:3146 A9 00 85 9C 85 B3 85 B6 E6 BA 60 E6 BA 20 A9 B1 + .byte $20, $C3, $B1, $A6, $BE, $30, $17, $BD, $EA, $05, $29, $40, $D0, $10, $A9, $00 ; CPU:$B156 PRG:3156 20 C3 B1 A6 BE 30 17 BD EA 05 29 40 D0 10 A9 00 + .byte $8D, $59, $03, $A5, $71, $C9, $02, $F0, $04, $A9, $FF, $85, $BE, $60, $A5, $B5 ; CPU:$B166 PRG:3166 8D 59 03 A5 71 C9 02 F0 04 A9 FF 85 BE 60 A5 B5 + .byte $D0, $02, $E6, $BA, $E6, $BA, $60, $A5, $31, $6A, $90, $01, $60, $A6, $37, $A9 ; CPU:$B176 PRG:3176 D0 02 E6 BA E6 BA 60 A5 31 6A 90 01 60 A6 37 A9 + .byte $52, $9D, $38, $03, $A9, $23, $9D, $39, $03, $A9, $E0, $9D, $3A, $03, $A9, $F1 ; CPU:$B186 PRG:3186 52 9D 38 03 A9 23 9D 39 03 A9 E0 9D 3A 03 A9 F1 + .byte $9D, $3B, $03, $A9, $00, $9D, $3C, $03, $8A, $18, $69, $04, $85, $37, $A9, $00 ; CPU:$B196 PRG:3196 9D 3B 03 A9 00 9D 3C 03 8A 18 69 04 85 37 A9 00 + .byte $85, $BA, $60, $A2, $00, $A0, $00, $86, $24, $A6, $24, $BD, $A1, $06, $C9, $FF ; CPU:$B1A6 PRG:31A6 85 BA 60 A2 00 A0 00 86 24 A6 24 BD A1 06 C9 FF + .byte $D0, $01, $60, $AA, $98, $9D, $EA, $05, $E6, $24, $D0, $ED, $60, $A0, $00, $A2 ; CPU:$B1B6 PRG:31B6 D0 01 60 AA 98 9D EA 05 E6 24 D0 ED 60 A0 00 A2 + .byte $6E, $CA, $BD, $EA, $05, $F0, $07, $10, $0B, $8A, $99, $A1, $06, $C8, $CA, $10 ; CPU:$B1C6 PRG:31C6 6E CA BD EA 05 F0 07 10 0B 8A 99 A1 06 C8 CA 10 + .byte $F1, $84, $B5, $60, $8A, $29, $F0, $AA, $D0, $E7, $84, $B5, $60, $A5, $31, $6A ; CPU:$B1D6 PRG:31D6 F1 84 B5 60 8A 29 F0 AA D0 E7 84 B5 60 A5 31 6A + .byte $90, $01, $60, $A9, $A8, $85, $17, $A9, $F2, $85, $18, $A9, $0C, $85, $1F, $A0 ; CPU:$B1E6 PRG:31E6 90 01 60 A9 A8 85 17 A9 F2 85 18 A9 0C 85 1F A0 + .byte $00, $C6, $B5, $10, $08, $E6, $BA, $A9, $00, $85, $B3, $F0, $1E, $A6, $B5, $BD ; CPU:$B1F6 PRG:31F6 00 C6 B5 10 08 E6 BA A9 00 85 B3 F0 1E A6 B5 BD + .byte $A1, $06, $85, $24, $20, $BF, $84, $A5, $1A, $C9, $24, $F0, $0A, $A6, $24, $A9 ; CPU:$B206 PRG:3206 A1 06 85 24 20 BF 84 A5 1A C9 24 F0 0A A6 24 A9 + .byte $00, $9D, $EA, $05, $20, $8A, $85, $C6, $1F, $10, $D6, $A6, $36, $A9, $00, $9D ; CPU:$B216 PRG:3216 00 9D EA 05 20 8A 85 C6 1F 10 D6 A6 36 A9 00 9D + .byte $00, $03, $60, $A9, $01, $8D, $E3, $00, $A9, $01, $8D, $E2, $00, $A9, $04, $20 ; CPU:$B226 PRG:3226 00 03 60 A9 01 8D E3 00 A9 01 8D E2 00 A9 04 20 + .byte $04, $80, $E6, $BA, $60, $A9, $FF, $85, $BE, $A5, $96, $F0, $07, $A9, $00, $85 ; CPU:$B236 PRG:3236 04 80 E6 BA 60 A9 FF 85 BE A5 96 F0 07 A9 00 85 + .byte $6C, $85, $6A, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5D, $0A, $0A, $0A ; CPU:$B246 PRG:3246 6C 85 6A 60 20 52 85 29 06 85 20 A5 5D 0A 0A 0A + .byte $18, $65, $20, $AA, $BD, $BD, $F8, $85, $AB, $BD, $BE, $F8, $85, $AC, $A9, $00 ; CPU:$B256 PRG:3256 18 65 20 AA BD BD F8 85 AB BD BE F8 85 AC A9 00 + .byte $85, $B3, $85, $B5, $E6, $6C, $A9, $01, $85, $34, $A2, $00, $8A, $9D, $F9, $06 ; CPU:$B266 PRG:3266 85 B3 85 B5 E6 6C A9 01 85 34 A2 00 8A 9D F9 06 + .byte $E8, $E0, $05, $90, $F7, $60, $A5, $31, $6A, $90, $01, $60, $A6, $B3, $A4, $B5 ; CPU:$B276 PRG:3276 E8 E0 05 90 F7 60 A5 31 6A 90 01 60 A6 B3 A4 B5 + .byte $B1, $AB, $F0, $33, $9D, $EA, $05, $85, $1B, $8A, $20, $BF, $84, $A5, $1B, $10 ; CPU:$B286 PRG:3286 B1 AB F0 33 9D EA 05 85 1B 8A 20 BF 84 A5 1B 10 + .byte $0E, $A9, $0D, $85, $17, $A9, $F3, $85, $18, $A9, $01, $85, $1B, $D0, $0C, $0A ; CPU:$B296 PRG:3296 0E A9 0D 85 17 A9 F3 85 18 A9 01 85 1B D0 0C 0A + .byte $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3 ; CPU:$B2A6 PRG:32A6 AA BD 9E F2 85 17 BD 9F F2 85 18 20 8A 85 20 E3 + .byte $84, $E6, $B5, $E6, $B3, $10, $C5, $A6, $36, $A9, $00, $9D, $00, $03, $E6, $B5 ; CPU:$B2B6 PRG:32B6 84 E6 B5 E6 B3 10 C5 A6 36 A9 00 9D 00 03 E6 B5 + .byte $A5, $B3, $29, $F0, $18, $69, $10, $85, $B3, $C9, $70, $90, $02, $E6, $6C, $60 ; CPU:$B2C6 PRG:32C6 A5 B3 29 F0 18 69 10 85 B3 C9 70 90 02 E6 6C 60 + .byte $A5, $31, $6A, $90, $01, $60, $A5, $5D, $85, $B7, $A6, $5C, $86, $B8, $BD, $5A ; CPU:$B2D6 PRG:32D6 A5 31 6A 90 01 60 A5 5D 85 B7 A6 5C 86 B8 BD 5A + .byte $D4, $85, $1B, $20, $78, $B7, $A6, $5D, $F0, $18, $86, $21, $20, $9B, $B7, $20 ; CPU:$B2E6 PRG:32E6 D4 85 1B 20 78 B7 A6 5D F0 18 86 21 20 9B B7 20 + .byte $8A, $85, $20, $E3, $84, $C6, $21, $A6, $21, $D0, $F1, $A6, $36, $A9, $00, $9D ; CPU:$B2F6 PRG:32F6 8A 85 20 E3 84 C6 21 A6 21 D0 F1 A6 36 A9 00 9D + .byte $00, $03, $A5, $5D, $18, $69, $07, $85, $11, $A9, $01, $85, $12, $20, $5D, $85 ; CPU:$B306 PRG:3306 00 03 A5 5D 18 69 07 85 11 A9 01 85 12 20 5D 85 + .byte $A9, $B8, $8D, $89, $03, $A9, $1C, $8D, $99, $03, $A2, $30, $BD, $EA, $05, $09 ; CPU:$B316 PRG:3316 A9 B8 8D 89 03 A9 1C 8D 99 03 A2 30 BD EA 05 09 + .byte $40, $9D, $EA, $05, $86, $BE, $A9, $00, $85, $6C, $85, $6A, $85, $B5, $E6, $B7 ; CPU:$B326 PRG:3326 40 9D EA 05 86 BE A9 00 85 6C 85 6A 85 B5 E6 B7 + .byte $60, $A0, $00, $A2, $00, $BD, $EA, $05, $29, $87, $C5, $20, $F0, $04, $A9, $00 ; CPU:$B336 PRG:3336 60 A0 00 A2 00 BD EA 05 29 87 C5 20 F0 04 A9 00 + .byte $F0, $07, $C8, $8A, $99, $5B, $06, $A5, $20, $9D, $71, $04, $E8, $E0, $70, $90 ; CPU:$B346 PRG:3346 F0 07 C8 8A 99 5B 06 A5 20 9D 71 04 E8 E0 70 90 + .byte $E4, $C0, $00, $D0, $01, $60, $BE, $5B, $06, $BD, $71, $04, $F0, $18, $84, $25 ; CPU:$B356 PRG:3356 E4 C0 00 D0 01 60 BE 5B 06 BD 71 04 F0 18 84 25 + .byte $A0, $00, $84, $21, $98, $9D, $71, $04, $8A, $99, $79, $06, $86, $20, $C8, $84 ; CPU:$B366 PRG:3366 A0 00 84 21 98 9D 71 04 8A 99 79 06 86 20 C8 84 + .byte $B6, $20, $80, $B3, $A4, $25, $88, $D0, $DD, $60, $A0, $06, $84, $22, $A2, $00 ; CPU:$B376 PRG:3376 B6 20 80 B3 A4 25 88 D0 DD 60 A0 06 84 22 A2 00 + .byte $86, $24, $A4, $22, $A5, $20, $29, $10, $F0, $05, $98, $18, $69, $06, $A8, $B9 ; CPU:$B386 PRG:3386 86 24 A4 22 A5 20 29 10 F0 05 98 18 69 06 A8 B9 + .byte $7A, $F8, $18, $65, $20, $AA, $29, $0F, $C9, $0E, $B0, $16, $8A, $29, $F0, $C9 ; CPU:$B396 PRG:3396 7A F8 18 65 20 AA 29 0F C9 0E B0 16 8A 29 F0 C9 + .byte $70, $B0, $0F, $BD, $71, $04, $F0, $0A, $86, $23, $E6, $24, $A6, $24, $E0, $02 ; CPU:$B3A6 PRG:33A6 70 B0 0F BD 71 04 F0 0A 86 23 E6 24 A6 24 E0 02 + .byte $B0, $06, $C6, $22, $D0, $CC, $F0, $09, $E6, $21, $A6, $21, $A5, $20, $9D, $92 ; CPU:$B3B6 PRG:33B6 B0 06 C6 22 D0 CC F0 09 E6 21 A6 21 A5 20 9D 92 + .byte $06, $A6, $24, $F0, $14, $A6, $23, $A9, $00, $9D, $71, $04, $A4, $B6, $8A, $99 ; CPU:$B3C6 PRG:33C6 06 A6 24 F0 14 A6 23 A9 00 9D 71 04 A4 B6 8A 99 + .byte $79, $06, $86, $20, $E6, $B6, $4C, $80, $B3, $A6, $21, $F0, $0A, $BD, $92, $06 ; CPU:$B3D6 PRG:33D6 79 06 86 20 E6 B6 4C 80 B3 A6 21 F0 0A BD 92 06 + .byte $C6, $21, $85, $20, $4C, $80, $B3, $A4, $B6, $C0, $04, $90, $29, $98, $18, $6D ; CPU:$B3E6 PRG:33E6 C6 21 85 20 4C 80 B3 A4 B6 C0 04 90 29 98 18 6D + .byte $DE, $06, $8D, $DE, $06, $98, $38, $E9, $03, $0A, $0A, $18, $6D, $DF, $06, $8D ; CPU:$B3F6 PRG:33F6 DE 06 8D DE 06 98 38 E9 03 0A 0A 18 6D DF 06 8D + .byte $DF, $06, $88, $A6, $B5, $B9, $79, $06, $9D, $A1, $06, $E8, $88, $10, $F6, $A9 ; CPU:$B406 PRG:3406 DF 06 88 A6 B5 B9 79 06 9D A1 06 E8 88 10 F6 A9 + .byte $FF, $9D, $A1, $06, $86, $B5, $A9, $00, $85, $B6, $60, $A5, $31, $6A, $90, $01 ; CPU:$B416 PRG:3416 FF 9D A1 06 86 B5 A9 00 85 B6 60 A5 31 6A 90 01 + .byte $60, $E6, $B3, $A5, $B3, $C9, $04, $90, $11, $A9, $00, $85, $B3, $85, $B6, $E6 ; CPU:$B426 PRG:3426 60 E6 B3 A5 B3 C9 04 90 11 A9 00 85 B3 85 B6 E6 + .byte $9C, $A5, $9C, $C9, $08, $90, $03, $E6, $BA, $60, $A4, $B6, $B9, $A1, $06, $C9 ; CPU:$B436 PRG:3436 9C A5 9C C9 08 90 03 E6 BA 60 A4 B6 B9 A1 06 C9 + .byte $FF, $D0, $01, $60, $A2, $00, $9D, $79, $06, $E8, $C8, $B9, $A1, $06, $C9, $FF ; CPU:$B446 PRG:3446 FF D0 01 60 A2 00 9D 79 06 E8 C8 B9 A1 06 C9 FF + .byte $F0, $04, $E0, $0D, $90, $F0, $84, $B6, $86, $24, $86, $21, $A2, $00, $86, $36 ; CPU:$B456 PRG:3456 F0 04 E0 0D 90 F0 84 B6 86 24 86 21 A2 00 86 36 + .byte $A6, $36, $BD, $79, $06, $20, $BF, $84, $A5, $36, $0A, $0A, $A8, $A5, $19, $99 ; CPU:$B466 PRG:3466 A6 36 BD 79 06 20 BF 84 A5 36 0A 0A A8 A5 19 99 + .byte $00, $03, $A5, $1A, $99, $01, $03, $E6, $36, $C6, $24, $D0, $E3, $A9, $00, $99 ; CPU:$B476 PRG:3476 00 03 A5 1A 99 01 03 E6 36 C6 24 D0 E3 A9 00 99 + .byte $04, $03, $A6, $9C, $BD, $A8, $D1, $C9, $03, $90, $04, $20, $BB, $B4, $60, $20 ; CPU:$B486 PRG:3486 04 03 A6 9C BD A8 D1 C9 03 90 04 20 BB B4 60 20 + .byte $99, $B4, $60, $0A, $AA, $BD, $FB, $F2, $85, $19, $BD, $FC, $F2, $85, $1A, $A2 ; CPU:$B496 PRG:3496 99 B4 60 0A AA BD FB F2 85 19 BD FC F2 85 1A A2 + .byte $00, $8A, $0A, $0A, $A8, $A5, $19, $99, $02, $03, $A5, $1A, $99, $03, $03, $E8 ; CPU:$B4A6 PRG:34A6 00 8A 0A 0A A8 A5 19 99 02 03 A5 1A 99 03 03 E8 + .byte $C6, $21, $10, $ED, $60, $A2, $00, $BD, $79, $06, $86, $24, $A8, $B9, $EA, $05 ; CPU:$B4B6 PRG:34B6 C6 21 10 ED 60 A2 00 BD 79 06 86 24 A8 B9 EA 05 + .byte $29, $07, $0A, $A8, $8A, $0A, $0A, $AA, $B9, $9E, $F2, $9D, $02, $03, $B9, $9F ; CPU:$B4C6 PRG:34C6 29 07 0A A8 8A 0A 0A AA B9 9E F2 9D 02 03 B9 9F + .byte $F2, $9D, $03, $03, $A6, $24, $E8, $C6, $21, $10, $DC, $60, $A9, $00, $85, $22 ; CPU:$B4D6 PRG:34D6 F2 9D 03 03 A6 24 E8 C6 21 10 DC 60 A9 00 85 22 + .byte $A9, $FF, $85, $24, $A5, $22, $0A, $0A, $0A, $0A, $AA, $A9, $0E, $85, $1F, $BD ; CPU:$B4E6 PRG:34E6 A9 FF 85 24 A5 22 0A 0A 0A 0A AA A9 0E 85 1F BD + .byte $EA, $05, $D0, $30, $86, $B5, $8A, $A4, $22, $99, $79, $06, $E8, $BD, $EA, $05 ; CPU:$B4F6 PRG:34F6 EA 05 D0 30 86 B5 8A A4 22 99 79 06 E8 BD EA 05 + .byte $F0, $10, $A4, $B5, $99, $EA, $05, $E6, $B5, $A9, $00, $9D, $EA, $05, $86, $24 ; CPU:$B506 PRG:3506 F0 10 A4 B5 99 EA 05 E6 B5 A9 00 9D EA 05 86 24 + .byte $E6, $24, $E8, $C6, $1F, $D0, $E6, $A4, $22, $A5, $24, $99, $5B, $06, $A9, $FF ; CPU:$B516 PRG:3516 E6 24 E8 C6 1F D0 E6 A4 22 A5 24 99 5B 06 A9 FF + .byte $85, $24, $30, $0C, $E8, $C6, $1F, $D0, $C6, $A4, $22, $A9, $FF, $99, $5B, $06 ; CPU:$B526 PRG:3526 85 24 30 0C E8 C6 1F D0 C6 A4 22 A9 FF 99 5B 06 + .byte $E6, $22, $A5, $22, $C9, $07, $90, $AC, $A9, $00, $85, $B5, $E6, $BA, $A5, $BE ; CPU:$B536 PRG:3536 E6 22 A5 22 C9 07 90 AC A9 00 85 B5 E6 BA A5 BE + .byte $30, $03, $20, $50, $B7, $60, $A5, $31, $6A, $90, $01, $60, $A9, $00, $85, $36 ; CPU:$B546 PRG:3546 30 03 20 50 B7 60 A5 31 6A 90 01 60 A9 00 85 36 + .byte $A9, $08, $85, $1F, $A4, $B5, $B9, $5B, $06, $10, $12, $E6, $B5, $A4, $B5, $C0 ; CPU:$B556 PRG:3556 A9 08 85 1F A4 B5 B9 5B 06 10 12 E6 B5 A4 B5 C0 + .byte $07, $90, $F3, $A9, $00, $A6, $36, $9D, $00, $03, $E6, $BA, $60, $85, $24, $B9 ; CPU:$B566 PRG:3566 07 90 F3 A9 00 A6 36 9D 00 03 E6 BA 60 85 24 B9 + .byte $79, $06, $85, $25, $20, $BF, $84, $A6, $36, $A5, $19, $9D, $00, $03, $E8, $A5 ; CPU:$B576 PRG:3576 79 06 85 25 20 BF 84 A6 36 A5 19 9D 00 03 E8 A5 + .byte $1A, $9D, $00, $03, $E8, $A5, $25, $29, $0F, $C9, $0B, $B0, $33, $A4, $25, $B9 ; CPU:$B586 PRG:3586 1A 9D 00 03 E8 A5 25 29 0F C9 0B B0 33 A4 25 B9 + .byte $EA, $05, $29, $87, $85, $1B, $30, $13, $0A, $A8, $B9, $9E, $F2, $9D, $00, $03 ; CPU:$B596 PRG:3596 EA 05 29 87 85 1B 30 13 0A A8 B9 9E F2 9D 00 03 + .byte $E8, $B9, $9F, $F2, $9D, $00, $03, $A9, $00, $F0, $0B, $A9, $0D, $9D, $00, $03 ; CPU:$B5A6 PRG:35A6 E8 B9 9F F2 9D 00 03 A9 00 F0 0B A9 0D 9D 00 03 + .byte $E8, $A9, $F3, $9D, $00, $03, $E8, $86, $36, $A5, $1B, $F0, $03, $20, $E3, $84 ; CPU:$B5B6 PRG:35B6 E8 A9 F3 9D 00 03 E8 86 36 A5 1B F0 03 20 E3 84 + .byte $C6, $1F, $F0, $17, $E6, $25, $A5, $25, $C5, $24, $B0, $8F, $A5, $19, $18, $69 ; CPU:$B5C6 PRG:35C6 C6 1F F0 17 E6 25 A5 25 C5 24 B0 8F A5 19 18 69 + .byte $40, $85, $19, $90, $02, $E6, $1A, $A9, $00, $F0, $9C, $E6, $25, $A4, $B5, $A5 ; CPU:$B5D6 PRG:35D6 40 85 19 90 02 E6 1A A9 00 F0 9C E6 25 A4 B5 A5 + .byte $25, $99, $79, $06, $A6, $36, $A9, $00, $9D, $00, $03, $60, $A5, $31, $6A, $90 ; CPU:$B5E6 PRG:35E6 25 99 79 06 A6 36 A9 00 9D 00 03 60 A5 31 6A 90 + .byte $01, $60, $A9, $00, $85, $20, $AD, $DF, $06, $38, $E9, $0A, $90, $0A, $8D, $DF ; CPU:$B5F6 PRG:35F6 01 60 A9 00 85 20 AD DF 06 38 E9 0A 90 0A 8D DF + .byte $06, $E6, $20, $AD, $DF, $06, $10, $F1, $AD, $DF, $06, $8D, $E3, $06, $A5, $20 ; CPU:$B606 PRG:3606 06 E6 20 AD DF 06 10 F1 AD DF 06 8D E3 06 A5 20 + .byte $8D, $E2, $06, $A2, $02, $BD, $E1, $06, $C9, $0A, $90, $0B, $FE, $E0, $06, $18 ; CPU:$B616 PRG:3616 8D E2 06 A2 02 BD E1 06 C9 0A 90 0B FE E0 06 18 + .byte $69, $06, $29, $0F, $9D, $E1, $06, $CA, $D0, $EB, $AD, $DE, $06, $AA, $18, $65 ; CPU:$B626 PRG:3626 69 06 29 0F 9D E1 06 CA D0 EB AD DE 06 AA 18 65 + .byte $BB, $85, $BB, $8A, $18, $65, $BC, $85, $BC, $8A, $29, $0F, $18, $6D, $B9, $05 ; CPU:$B636 PRG:3636 BB 85 BB 8A 18 65 BC 85 BC 8A 29 0F 18 6D B9 05 + .byte $8D, $B9, $05, $8A, $6A, $6A, $6A, $6A, $29, $0F, $18, $6D, $B8, $05, $8D, $B8 ; CPU:$B646 PRG:3646 8D B9 05 8A 6A 6A 6A 6A 29 0F 18 6D B8 05 8D B8 + .byte $05, $A2, $03, $BD, $B6, $05, $C9, $0A, $90, $0B, $FE, $B5, $05, $18, $69, $06 ; CPU:$B656 PRG:3656 05 A2 03 BD B6 05 C9 0A 90 0B FE B5 05 18 69 06 + .byte $29, $0F, $9D, $B6, $05, $CA, $D0, $EB, $A2, $02, $BD, $E1, $06, $18, $7D, $BC ; CPU:$B666 PRG:3666 29 0F 9D B6 05 CA D0 EB A2 02 BD E1 06 18 7D BC + .byte $05, $9D, $BC, $05, $CA, $10, $F3, $A2, $04, $BD, $BA, $05, $C9, $0A, $90, $0B ; CPU:$B676 PRG:3676 05 9D BC 05 CA 10 F3 A2 04 BD BA 05 C9 0A 90 0B + .byte $FE, $B9, $05, $18, $69, $06, $29, $0F, $9D, $BA, $05, $CA, $D0, $EB, $A9, $04 ; CPU:$B686 PRG:3686 FE B9 05 18 69 06 29 0F 9D BA 05 CA D0 EB A9 04 + .byte $8D, $E5, $06, $8D, $EB, $06, $A9, $01, $8D, $E6, $06, $8D, $EC, $06, $A2, $00 ; CPU:$B696 PRG:3696 8D E5 06 8D EB 06 A9 01 8D E6 06 8D EC 06 A2 00 + .byte $BD, $B6, $05, $A8, $B9, $D6, $F1, $9D, $E7, $06, $BD, $E1, $06, $A8, $B9, $D6 ; CPU:$B6A6 PRG:36A6 BD B6 05 A8 B9 D6 F1 9D E7 06 BD E1 06 A8 B9 D6 + .byte $F1, $9D, $ED, $06, $E8, $E0, $04, $90, $E7, $A9, $06, $8D, $F1, $06, $A9, $01 ; CPU:$B6B6 PRG:36B6 F1 9D ED 06 E8 E0 04 90 E7 A9 06 8D F1 06 A9 01 + .byte $8D, $F2, $06, $A2, $00, $BD, $BA, $05, $A8, $B9, $D6, $F1, $9D, $F3, $06, $E8 ; CPU:$B6C6 PRG:36C6 8D F2 06 A2 00 BD BA 05 A8 B9 D6 F1 9D F3 06 E8 + .byte $E0, $06, $90, $F1, $A6, $37, $A0, $00, $B9, $00, $B7, $9D, $38, $03, $E8, $C8 ; CPU:$B6D6 PRG:36D6 E0 06 90 F1 A6 37 A0 00 B9 00 B7 9D 38 03 E8 C8 + .byte $C0, $0C, $90, $F4, $86, $37, $A9, $00, $9D, $38, $03, $8D, $DE, $06, $8D, $DD ; CPU:$B6E6 PRG:36E6 C0 0C 90 F4 86 37 A9 00 9D 38 03 8D DE 06 8D DD + .byte $06, $8D, $DF, $06, $8D, $E0, $06, $E6, $BA, $60, $32, $23, $E5, $06, $52, $23 ; CPU:$B6F6 PRG:36F6 06 8D DF 06 8D E0 06 E6 BA 60 32 23 E5 06 52 23 + .byte $EB, $06, $3A, $23, $F1, $06, $A5, $31, $6A, $90, $01, $60, $A5, $71, $C9, $02 ; CPU:$B706 PRG:3706 EB 06 3A 23 F1 06 A5 31 6A 90 01 60 A5 71 C9 02 + .byte $F0, $09, $A5, $B7, $C9, $05, $D0, $03, $20, $78, $B7, $A5, $B8, $29, $03, $AA ; CPU:$B716 PRG:3716 F0 09 A5 B7 C9 05 D0 03 20 78 B7 A5 B8 29 03 AA + .byte $BD, $5A, $D4, $85, $1B, $A6, $B7, $20, $9B, $B7, $20, $8A, $85, $A9, $00, $9D ; CPU:$B726 PRG:3726 BD 5A D4 85 1B A6 B7 20 9B B7 20 8A 85 A9 00 9D + .byte $00, $03, $20, $E3, $84, $A5, $71, $C9, $02, $F0, $06, $C6, $B7, $D0, $02, $E6 ; CPU:$B736 PRG:3736 00 03 20 E3 84 A5 71 C9 02 F0 06 C6 B7 D0 02 E6 + .byte $B8, $A5, $B5, $D0, $02, $E6, $BA, $E6, $BA, $60, $A5, $BE, $AA, $29, $0F, $A8 ; CPU:$B746 PRG:3746 B8 A5 B5 D0 02 E6 BA E6 BA 60 A5 BE AA 29 0F A8 + .byte $BD, $EA, $05, $29, $40, $D0, $05, $CA, $88, $10, $F5, $60, $8A, $C5, $BE, $F0 ; CPU:$B756 PRG:3756 BD EA 05 29 40 D0 05 CA 88 10 F5 60 8A C5 BE F0 + .byte $10, $38, $E5, $BE, $0A, $0A, $0A, $0A, $18, $6D, $99, $03, $8D, $99, $03, $86 ; CPU:$B766 PRG:3766 10 38 E5 BE 0A 0A 0A 0A 18 6D 99 03 8D 99 03 86 + .byte $BE, $60, $A0, $05, $A9, $23, $85, $1A, $A9, $56, $85, $19, $A9, $A8, $85, $17 ; CPU:$B776 PRG:3776 BE 60 A0 05 A9 23 85 1A A9 56 85 19 A9 A8 85 17 + .byte $A9, $F2, $85, $18, $20, $8A, $85, $E6, $19, $E6, $19, $88, $D0, $F6, $98, $9D ; CPU:$B786 PRG:3786 A9 F2 85 18 20 8A 85 E6 19 E6 19 88 D0 F6 98 9D + .byte $00, $03, $86, $36, $60, $A9, $23, $85, $1A, $A9, $56, $85, $19, $BD, $F8, $06 ; CPU:$B796 PRG:3796 00 03 86 36 60 A9 23 85 1A A9 56 85 19 BD F8 06 + .byte $0A, $A8, $18, $65, $19, $85, $19, $98, $0A, $A8, $A6, $B8, $E8, $8A, $29, $02 ; CPU:$B7A6 PRG:37A6 0A A8 18 65 19 85 19 98 0A A8 A6 B8 E8 8A 29 02 + .byte $D0, $05, $98, $18, $69, $14, $A8, $A9, $D1, $85, $17, $A9, $F2, $85, $18, $98 ; CPU:$B7B6 PRG:37B6 D0 05 98 18 69 14 A8 A9 D1 85 17 A9 F2 85 18 98 + .byte $18, $65, $17, $85, $17, $90, $02, $E6, $18, $60, $A5, $C2, $D0, $11, $A6, $B8 ; CPU:$B7C6 PRG:37C6 18 65 17 85 17 90 02 E6 18 60 A5 C2 D0 11 A6 B8 + .byte $CA, $30, $0C, $A5, $27, $A8, $C9, $84, $F0, $06, $98, $C9, $44, $F0, $01, $60 ; CPU:$B7D6 PRG:37D6 CA 30 0C A5 27 A8 C9 84 F0 06 98 C9 44 F0 01 60 + .byte $A5, $BD, $F0, $09, $AD, $59, $03, $F0, $14, $A9, $00, $85, $BD, $A6, $BE, $30 ; CPU:$B7E6 PRG:37E6 A5 BD F0 09 AD 59 03 F0 14 A9 00 85 BD A6 BE 30 + .byte $0C, $BD, $EA, $05, $29, $BF, $9D, $EA, $05, $A9, $FF, $85, $BE, $A9, $01, $85 ; CPU:$B7F6 PRG:37F6 0C BD EA 05 29 BF 9D EA 05 A9 FF 85 BE A9 01 85 + .byte $C2, $A9, $00, $85, $C1, $A9, $06, $85, $11, $A9, $01, $85, $12, $20, $5D, $85 ; CPU:$B806 PRG:3806 C2 A9 00 85 C1 A9 06 85 11 A9 01 85 12 20 5D 85 + .byte $A9, $B0, $8D, $89, $03, $A9, $98, $8D, $99, $03, $60, $A5, $31, $6A, $90, $01 ; CPU:$B816 PRG:3816 A9 B0 8D 89 03 A9 98 8D 99 03 60 A5 31 6A 90 01 + .byte $60, $A5, $C1, $20, $73, $81, $3A, $B8, $5C, $B8, $F5, $B8, $08, $B1, $59, $B9 ; CPU:$B826 PRG:3826 60 A5 C1 20 73 81 3A B8 5C B8 F5 B8 08 B1 59 B9 + .byte $08, $B1, $BA, $B9, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A9, $06 ; CPU:$B836 PRG:3836 08 B1 BA B9 A9 03 20 04 80 A9 01 8D DD 00 A9 06 + .byte $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $E6, $C1, $A9 ; CPU:$B846 PRG:3846 8D DE 00 A9 05 20 04 80 A9 00 8D DD 00 E6 C1 A9 + .byte $F0, $85, $B3, $60, $A1, $06, $C6, $B3, $D0, $0A, $20, $99, $B8, $E6, $C1, $A9 ; CPU:$B856 PRG:3856 F0 85 B3 60 A1 06 C6 B3 D0 0A 20 99 B8 E6 C1 A9 + .byte $00, $85, $B3, $60, $A5, $31, $29, $04, $F0, $03, $4C, $99, $B8, $A9, $23, $85 ; CPU:$B866 PRG:3866 00 85 B3 60 A5 31 29 04 F0 03 4C 99 B8 A9 23 85 + .byte $1A, $A9, $C4, $85, $19, $A9, $B7, $85, $17, $A9, $F8, $85, $18, $20, $A7, $85 ; CPU:$B876 PRG:3876 1A A9 C4 85 19 A9 B7 85 17 A9 F8 85 18 20 A7 85 + .byte $A5, $19, $18, $69, $08, $85, $19, $C9, $F0, $90, $F2, $A6, $37, $A9, $00, $9D ; CPU:$B886 PRG:3886 A5 19 18 69 08 85 19 C9 F0 90 F2 A6 37 A9 00 9D + .byte $38, $03, $60, $AD, $5A, $B8, $85, $17, $AD, $5B, $B8, $85, $18, $A9, $23, $85 ; CPU:$B896 PRG:3896 38 03 60 AD 5A B8 85 17 AD 5B B8 85 18 A9 23 85 + .byte $1A, $A9, $C4, $85, $19, $A9, $04, $85, $21, $A0, $00, $A9, $04, $99, $A1, $06 ; CPU:$B8A6 PRG:38A6 1A A9 C4 85 19 A9 04 85 21 A0 00 A9 04 99 A1 06 + .byte $A9, $01, $C8, $99, $A1, $06, $C8, $A9, $04, $85, $1F, $A6, $21, $BD, $E2, $04 ; CPU:$B8B6 PRG:38B6 A9 01 C8 99 A1 06 C8 A9 04 85 1F A6 21 BD E2 04 + .byte $99, $A1, $06, $C8, $E8, $C6, $1F, $D0, $F4, $20, $A7, $85, $A5, $17, $18, $69 ; CPU:$B8C6 PRG:38C6 99 A1 06 C8 E8 C6 1F D0 F4 20 A7 85 A5 17 18 69 + .byte $06, $85, $17, $90, $02, $E6, $18, $A5, $21, $18, $69, $08, $85, $21, $18, $69 ; CPU:$B8D6 PRG:38D6 06 85 17 90 02 E6 18 A5 21 18 69 08 85 21 18 69 + .byte $C0, $85, $19, $C9, $F0, $90, $C4, $A6, $37, $A9, $00, $9D, $38, $03, $60, $A5 ; CPU:$B8E6 PRG:38E6 C0 85 19 C9 F0 90 C4 A6 37 A9 00 9D 38 03 60 A5 + .byte $B3, $AA, $A8, $BD, $EA, $05, $30, $04, $99, $EA, $05, $C8, $E8, $BD, $EA, $05 ; CPU:$B8F6 PRG:38F6 B3 AA A8 BD EA 05 30 04 99 EA 05 C8 E8 BD EA 05 + .byte $D0, $F4, $86, $21, $A9, $00, $99, $EA, $05, $C8, $C4, $21, $90, $F8, $A6, $B3 ; CPU:$B906 PRG:3906 D0 F4 86 21 A9 00 99 EA 05 C8 C4 21 90 F8 A6 B3 + .byte $86, $24, $A6, $24, $BD, $EA, $05, $29, $07, $85, $1B, $0A, $AA, $BD, $9E, $F2 ; CPU:$B916 PRG:3916 86 24 A6 24 BD EA 05 29 07 85 1B 0A AA BD 9E F2 + .byte $85, $17, $BD, $9F, $F2, $85, $18, $A5, $24, $20, $BF, $84, $20, $8A, $85, $20 ; CPU:$B926 PRG:3926 85 17 BD 9F F2 85 18 A5 24 20 BF 84 20 8A 85 20 + .byte $E3, $84, $E6, $24, $A6, $24, $E4, $21, $90, $DA, $A6, $36, $A9, $00, $9D, $00 ; CPU:$B936 PRG:3936 E3 84 E6 24 A6 24 E4 21 90 DA A6 36 A9 00 9D 00 + .byte $03, $A5, $B3, $18, $69, $10, $85, $B3, $C9, $70, $90, $06, $E6, $C1, $A9, $00 ; CPU:$B946 PRG:3946 03 A5 B3 18 69 10 85 B3 C9 70 90 06 E6 C1 A9 00 + .byte $85, $BA, $60, $A9, $08, $85, $1F, $20, $52, $85, $A5, $3D, $2A, $2A, $29, $7F ; CPU:$B956 PRG:3956 85 BA 60 A9 08 85 1F 20 52 85 A5 3D 2A 2A 29 7F + .byte $C9, $70, $B0, $30, $AA, $BD, $EA, $05, $29, $07, $F0, $28, $86, $21, $20, $52 ; CPU:$B966 PRG:3966 C9 70 B0 30 AA BD EA 05 29 07 F0 28 86 21 20 52 + .byte $85, $A5, $3D, $29, $03, $A8, $C8, $84, $1B, $98, $9D, $EA, $05, $0A, $AA, $BD ; CPU:$B976 PRG:3976 85 A5 3D 29 03 A8 C8 84 1B 98 9D EA 05 0A AA BD + .byte $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $A5, $21, $20, $BF, $84, $20, $8A ; CPU:$B986 PRG:3986 9E F2 85 17 BD 9F F2 85 18 A5 21 20 BF 84 20 8A + .byte $85, $20, $E3, $84, $C6, $1F, $D0, $BF, $A6, $36, $A9, $00, $9D, $00, $03, $CE ; CPU:$B996 PRG:3996 85 20 E3 84 C6 1F D0 BF A6 36 A9 00 9D 00 03 CE + .byte $99, $03, $CE, $99, $03, $AD, $99, $03, $C9, $F8, $90, $07, $E6, $C1, $A9, $00 ; CPU:$B9A6 PRG:39A6 99 03 CE 99 03 AD 99 03 C9 F8 90 07 E6 C1 A9 00 + .byte $8D, $59, $03, $60, $A9, $00, $85, $C2, $85, $C1, $A9, $03, $20, $04, $80, $A9 ; CPU:$B9B6 PRG:39B6 8D 59 03 60 A9 00 85 C2 85 C1 A9 03 20 04 80 A9 + .byte $01, $8D, $DD, $00, $AD, $73, $00, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9 ; CPU:$B9C6 PRG:39C6 01 8D DD 00 AD 73 00 8D DE 00 A9 05 20 04 80 A9 + .byte $00, $8D, $DD, $00, $C6, $B8, $D0, $0B, $A5, $B7, $D0, $07, $20, $78, $B7, $A9 ; CPU:$B9D6 PRG:39D6 00 8D DD 00 C6 B8 D0 0B A5 B7 D0 07 20 78 B7 A9 + .byte $00, $F0, $2A, $A5, $B8, $29, $03, $AA, $A5, $B7, $D0, $03, $CA, $C6, $B8, $BD ; CPU:$B9E6 PRG:39E6 00 F0 2A A5 B8 29 03 AA A5 B7 D0 03 CA C6 B8 BD + .byte $5A, $D4, $85, $1B, $A9, $05, $85, $21, $A5, $B7, $C5, $21, $B0, $0F, $A6, $21 ; CPU:$B9F6 PRG:39F6 5A D4 85 1B A9 05 85 21 A5 B7 C5 21 B0 0F A6 21 + .byte $20, $9B, $B7, $20, $8A, $85, $20, $E3, $84, $C6, $21, $D0, $EB, $A6, $36, $A9 ; CPU:$BA06 PRG:3A06 20 9B B7 20 8A 85 20 E3 84 C6 21 D0 EB A6 36 A9 + .byte $00, $9D, $00, $03, $A5, $B7, $D0, $02, $E6, $B8, $60, $A5, $BA, $20, $73, $81 ; CPU:$BA16 PRG:3A16 00 9D 00 03 A5 B7 D0 02 E6 B8 60 A5 BA 20 73 81 + .byte $30, $BA, $4C, $BA, $5C, $BA, $8C, $BA, $E6, $BA, $A9, $FF, $85, $BE, $A5, $5C ; CPU:$BA26 PRG:3A26 30 BA 4C BA 5C BA 8C BA E6 BA A9 FF 85 BE A5 5C + .byte $0A, $AA, $BD, $5C, $F4, $85, $3B, $BD, $5D, $F4, $85, $3C, $A6, $5D, $BD, $75 ; CPU:$BA36 PRG:3A36 0A AA BD 5C F4 85 3B BD 5D F4 85 3C A6 5D BD 75 + .byte $F8, $85, $CB, $E6, $BA, $60, $A5, $71, $C9, $02, $F0, $07, $A9, $00, $85, $BA ; CPU:$BA46 PRG:3A46 F8 85 CB E6 BA 60 A5 71 C9 02 F0 07 A9 00 85 BA + .byte $85, $B9, $60, $E6, $BA, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5D, $0A ; CPU:$BA56 PRG:3A56 85 B9 60 E6 BA 60 20 52 85 29 06 85 20 A5 5D 0A + .byte $0A, $0A, $18, $65, $20, $AA, $BD, $BD, $F8, $85, $AB, $BD, $BE, $F8, $85, $AC ; CPU:$BA66 PRG:3A66 0A 0A 18 65 20 AA BD BD F8 85 AB BD BE F8 85 AC + .byte $A9, $00, $85, $B3, $85, $B5, $E6, $BA, $A9, $01, $85, $34, $8A, $9D, $F9, $06 ; CPU:$BA76 PRG:3A76 A9 00 85 B3 85 B5 E6 BA A9 01 85 34 8A 9D F9 06 + .byte $E8, $E0, $05, $90, $F7, $60, $A5, $31, $6A, $90, $01, $60, $A6, $B3, $A4, $B5 ; CPU:$BA86 PRG:3A86 E8 E0 05 90 F7 60 A5 31 6A 90 01 60 A6 B3 A4 B5 + .byte $B1, $AB, $F0, $33, $9D, $EA, $05, $85, $1B, $8A, $20, $BF, $84, $A5, $1B, $10 ; CPU:$BA96 PRG:3A96 B1 AB F0 33 9D EA 05 85 1B 8A 20 BF 84 A5 1B 10 + .byte $0E, $A9, $0D, $85, $17, $A9, $F3, $85, $18, $A9, $01, $85, $1B, $D0, $0C, $0A ; CPU:$BAA6 PRG:3AA6 0E A9 0D 85 17 A9 F3 85 18 A9 01 85 1B D0 0C 0A + .byte $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3 ; CPU:$BAB6 PRG:3AB6 AA BD 9E F2 85 17 BD 9F F2 85 18 20 8A 85 20 E3 + .byte $84, $E6, $B5, $E6, $B3, $10, $C5, $A6, $36, $A9, $00, $9D, $00, $03, $E6, $B5 ; CPU:$BAC6 PRG:3AC6 84 E6 B5 E6 B3 10 C5 A6 36 A9 00 9D 00 03 E6 B5 + .byte $A5, $B3, $29, $F0, $18, $69, $10, $85, $B3, $C9, $70, $90, $02, $E6, $BA, $60 ; CPU:$BAD6 PRG:3AD6 A5 B3 29 F0 18 69 10 85 B3 C9 70 90 02 E6 BA 60 + .byte $A5, $31, $6A, $90, $01, $60, $A5, $5D, $85, $B7, $A6, $5C, $86, $B8, $BD, $5A ; CPU:$BAE6 PRG:3AE6 A5 31 6A 90 01 60 A5 5D 85 B7 A6 5C 86 B8 BD 5A + .byte $D4, $85, $1B, $20, $78, $B7, $A6, $5D, $F0, $18, $86, $21, $20, $9B, $B7, $20 ; CPU:$BAF6 PRG:3AF6 D4 85 1B 20 78 B7 A6 5D F0 18 86 21 20 9B B7 20 + .byte $8A, $85, $20, $E3, $84, $C6, $21, $A6, $21, $D0, $F1, $A6, $36, $A9, $00, $9D ; CPU:$BB06 PRG:3B06 8A 85 20 E3 84 C6 21 A6 21 D0 F1 A6 36 A9 00 9D + .byte $00, $03, $20, $36, $BB, $A2, $30, $BD, $EA, $05, $09, $40, $9D, $EA, $05, $86 ; CPU:$BB16 PRG:3B16 00 03 20 36 BB A2 30 BD EA 05 09 40 9D EA 05 86 + .byte $BE, $E6, $6C, $E6, $B7, $A9, $00, $85, $BA, $85, $B5, $A9, $00, $85, $B9, $60 ; CPU:$BB26 PRG:3B26 BE E6 6C E6 B7 A9 00 85 BA 85 B5 A9 00 85 B9 60 + .byte $A5, $5D, $18, $69, $07, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $A9, $B8 ; CPU:$BB36 PRG:3B36 A5 5D 18 69 07 85 11 A9 01 85 12 20 5D 85 A9 B8 + .byte $8D, $89, $03, $A9, $1C, $8D, $99, $03, $60 ; CPU:$BB46 PRG:3B46 8D 89 03 A9 1C 8D 99 03 60 +; ----------------------------------------------------------------------------- +; Routine: ClearActorSlots +; Global: Empties the actor slots. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearActorSlots: + lda #$00 ; CPU:$BB4F PRG:3B4F A9 00 + tax ; CPU:$BB51 PRG:3B51 AA +; ----------------------------------------------------------------------------- +; Routine: ClearActorSlots_OnCarryClear +; Global: Branch target inside ClearActorSlots: taken when the addition or subtraction did not carry. +; Local: Part of ClearActorSlots. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearActorSlots_OnCarryClear: + sta ZpB7,x ; CPU:$BB52 PRG:3B52 95 B7 + inx ; CPU:$BB54 PRG:3B54 E8 + cpx #$0C ; CPU:$BB55 PRG:3B55 E0 0C + bcc ClearActorSlots_OnCarryClear ; CPU:$BB57 PRG:3B57 90 F9 + ldx #$00 ; CPU:$BB59 PRG:3B59 A2 00 +; ----------------------------------------------------------------------------- +; Routine: ClearActorTable +; Global: Empties the actor table in RAM. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearActorTable: + sta $05EA,x ; CPU:$BB5B PRG:3B5B 9D EA 05 + inx ; CPU:$BB5E PRG:3B5E E8 + cpx #$70 ; CPU:$BB5F PRG:3B5F E0 70 + bcc ClearActorTable ; CPU:$BB61 PRG:3B61 90 F8 + lda #$FF ; CPU:$BB63 PRG:3B63 A9 FF + sta ZpBE ; CPU:$BB65 PRG:3B65 85 BE + rts ; CPU:$BB67 PRG:3B67 60 +; ----------------------------------------------------------------------------- +; Routine: SoundTimerTick +; Global: Counts the sound effect timer down. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SoundTimerTick: + lda FrameCounter ; CPU:$BB68 PRG:3B68 A5 31 + ror a ; CPU:$BB6A PRG:3B6A 6A + bcs SoundTimerTick_Loop ; CPU:$BB6B PRG:3B6B B0 01 + rts ; CPU:$BB6D PRG:3B6D 60 +; ----------------------------------------------------------------------------- +; Routine: SoundTimerTick_Loop +; Global: Branch target inside SoundTimerTick: taken when the loop repeats. +; Local: Part of SoundTimerTick. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SoundTimerTick_Loop: + and #$1F ; CPU:$BB6E PRG:3B6E 29 1F + bne SoundTimerTick_Loop2 ; CPU:$BB70 PRG:3B70 D0 0B + lda a:$00D4 ; CPU:$BB72 PRG:3B72 AD D4 00 + eor Zp33 ; CPU:$BB75 PRG:3B75 45 33 + sta a:$00D4 ; CPU:$BB77 PRG:3B77 8D D4 00 + jmp PlaySoundEffect ; CPU:$BB7A PRG:3B7A 4C 7E BB +; ----------------------------------------------------------------------------- +; Routine: SoundTimerTick_Loop2 +; Global: Branch target inside SoundTimerTick: taken when Loop2. +; Local: Part of SoundTimerTick. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SoundTimerTick_Loop2: + rts ; CPU:$BB7D PRG:3B7D 60 +; ----------------------------------------------------------------------------- +; Routine: PlaySoundEffect +; Global: Starts a sound effect from the sound table. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlaySoundEffect: + lda #$00 ; CPU:$BB7E PRG:3B7E A9 00 + asl a ; CPU:$BB80 PRG:3B80 0A + tax ; CPU:$BB81 PRG:3B81 AA + lda a:$00D4 ; CPU:$BB82 PRG:3B82 AD D4 00 + beq LoadActorTemplate ; CPU:$BB85 PRG:3B85 F0 0D + lda $BBDE,x ; CPU:$BB87 PRG:3B87 BD DE BB + sta Zp19 ; CPU:$BB8A PRG:3B8A 85 19 + lda $BBDF,x ; CPU:$BB8C PRG:3B8C BD DF BB + sta Zp1A ; CPU:$BB8F PRG:3B8F 85 1A + jmp CopyActorToSpriteTable ; CPU:$BB91 PRG:3B91 4C 9E BB +; ----------------------------------------------------------------------------- +; Routine: LoadActorTemplate +; Global: Copies an actor template out of the table. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +LoadActorTemplate: + lda $BBC2,x ; CPU:$BB94 PRG:3B94 BD C2 BB + sta Zp19 ; CPU:$BB97 PRG:3B97 85 19 + lda $BBC3,x ; CPU:$BB99 PRG:3B99 BD C3 BB + sta Zp1A ; CPU:$BB9C PRG:3B9C 85 1A +; ----------------------------------------------------------------------------- +; Routine: CopyActorToSpriteTable +; Global: Copies an actor into the sprite table. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CopyActorToSpriteTable: + ldy #$00 ; CPU:$BB9E PRG:3B9E A0 00 + ldx Zp37 ; CPU:$BBA0 PRG:3BA0 A6 37 + lda #$04 ; CPU:$BBA2 PRG:3BA2 A9 04 + sta Zp1F ; CPU:$BBA4 PRG:3BA4 85 1F +; ----------------------------------------------------------------------------- +; Routine: CopyActorToSpriteTable_OnNonzero +; Global: Branch target inside CopyActorToSpriteTable: taken when the tested value is not zero. +; Local: Part of CopyActorToSpriteTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CopyActorToSpriteTable_OnNonzero: + lda (Zp19),y ; CPU:$BBA6 PRG:3BA6 B1 19 + sta $0338,x ; CPU:$BBA8 PRG:3BA8 9D 38 03 + inx ; CPU:$BBAB PRG:3BAB E8 + iny ; CPU:$BBAC PRG:3BAC C8 + dec Zp1F ; CPU:$BBAD PRG:3BAD C6 1F + bne CopyActorToSpriteTable_OnNonzero ; CPU:$BBAF PRG:3BAF D0 F5 + lda Zp6F ; CPU:$BBB1 PRG:3BB1 A5 6F + beq CopyActorToSpriteTable_Loop; CPU:$BBB3 PRG:3BB3 F0 05 + lda #$45 ; CPU:$BBB5 PRG:3BB5 A9 45 + sta $0334,x ; CPU:$BBB7 PRG:3BB7 9D 34 03 +; ----------------------------------------------------------------------------- +; Routine: CopyActorToSpriteTable_Loop +; Global: Branch target inside CopyActorToSpriteTable: taken when the loop repeats. +; Local: Part of CopyActorToSpriteTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CopyActorToSpriteTable_Loop: + lda #$00 ; CPU:$BBBA PRG:3BBA A9 00 + sta $0338,x ; CPU:$BBBC PRG:3BBC 9D 38 03 + stx Zp37 ; CPU:$BBBF PRG:3BBF 86 37 + rts ; CPU:$BBC1 PRG:3BC1 60 +; ---- data $BBC2-$BBF9 (56 bytes) ---- +; referenced by `lda $BBDE,x` at $BB87 (operand $BBDE falls inside this region) +; referenced by `lda $BBDF,x` at $BB8C (operand $BBDF falls inside this region) +; referenced by `lda $BBC2,x` at $BB94 (operand $BBC2 falls inside this region) +; referenced by `lda $BBC3,x` at $BB99 (operand $BBC3 falls inside this region) + .byte $C4, $BB, $24, $23, $C8, $BB, $05, $04, $23, $25, $26, $29, $61, $2B, $93, $2D ; CPU:$BBC2 PRG:3BC2 C4 BB 24 23 C8 BB 05 04 23 25 26 29 61 2B 93 2D + .byte $3D, $74, $8D, $8E, $8F, $91, $7B, $C1, $3E, $2A, $97, $96, $E0, $BB, $24, $23 ; CPU:$BBD2 PRG:3BD2 3D 74 8D 8E 8F 91 7B C1 3E 2A 97 96 E0 BB 24 23 + .byte $E4, $BB, $05, $04, $C9, $CA, $FF, $CC, $61, $C8, $C7, $C6, $C5, $74, $FF, $C3 ; CPU:$BBE2 PRG:3BE2 E4 BB 05 04 C9 CA FF CC 61 C8 C7 C6 C5 74 FF C3 + .byte $C4, $7A, $7B, $C1, $9F, $98, $97, $96 ; CPU:$BBF2 PRG:3BF2 C4 7A 7B C1 9F 98 97 96 +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerState +; Global: Updates the player state for the current frame. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdatePlayerState: + lda Zp56 ; CPU:$BBFA PRG:3BFA A5 56 + beq HandleDemoMode ; CPU:$BBFC PRG:3BFC F0 1E + lda Zp3F ; CPU:$BBFE PRG:3BFE A5 3F + and #$01 ; CPU:$BC00 PRG:3C00 29 01 + beq UpdatePlayerState_Loop ; CPU:$BC02 PRG:3C02 F0 05 + inc Zp49 ; CPU:$BC04 PRG:3C04 E6 49 + jmp Sub_BC11 ; CPU:$BC06 PRG:3C06 4C 11 BC +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerState_Loop +; Global: Branch target inside UpdatePlayerState: taken when the loop repeats. +; Local: Part of UpdatePlayerState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdatePlayerState_Loop: + lda Zp3F ; CPU:$BC09 PRG:3C09 A5 3F + and #$02 ; CPU:$BC0B PRG:3C0B 29 02 + beq UpdatePlayerState_Loop2 ; CPU:$BC0D PRG:3C0D F0 0A + dec Zp49 ; CPU:$BC0F PRG:3C0F C6 49 +; ----------------------------------------------------------------------------- +; Routine: Sub_BC11 +; Global: Branch target inside Sub: taken when BC11. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_BC11: + dec Zp56 ; CPU:$BC11 PRG:3C11 C6 56 + bne UpdatePlayerState_Loop2 ; CPU:$BC13 PRG:3C13 D0 04 + lda #$00 ; CPU:$BC15 PRG:3C15 A9 00 + sta Zp3F ; CPU:$BC17 PRG:3C17 85 3F +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerState_Loop2 +; Global: Branch target inside UpdatePlayerState: taken when Loop2. +; Local: Part of UpdatePlayerState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdatePlayerState_Loop2: + jmp ApplyPlayerDirection ; CPU:$BC19 PRG:3C19 4C 26 BD +; ----------------------------------------------------------------------------- +; Routine: HandleDemoMode +; Global: Runs the attract mode when no credit is left. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +HandleDemoMode: + lda $05E5 ; CPU:$BC1C PRG:3C1C AD E5 05 + beq HandlePlayerInput ; CPU:$BC1F PRG:3C1F F0 17 + ldx $05E2 ; CPU:$BC21 PRG:3C21 AE E2 05 + lda $BE05,x ; CPU:$BC24 PRG:3C24 BD 05 BE + cmp Zp4D ; CPU:$BC27 PRG:3C27 C5 4D + bne HandlePlayerInput ; CPU:$BC29 PRG:3C29 D0 0D + lda $BE06,x ; CPU:$BC2B PRG:3C2B BD 06 BE + sta ButtonState1 ; CPU:$BC2E PRG:3C2E 85 26 + sta NewButton1 ; CPU:$BC30 PRG:3C30 85 2A + inc $05E2 ; CPU:$BC32 PRG:3C32 EE E2 05 + inc $05E2 ; CPU:$BC35 PRG:3C35 EE E2 05 +; ----------------------------------------------------------------------------- +; Routine: HandlePlayerInput +; Global: Turns the button bits into the player's actions. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +HandlePlayerInput: + lda ButtonState1 ; CPU:$BC38 PRG:3C38 A5 26 + and #$08 ; CPU:$BC3A PRG:3C3A 29 08 + bne CountPlayerFrames ; CPU:$BC3C PRG:3C3C D0 06 + lda #$00 ; CPU:$BC3E PRG:3C3E A9 00 + sta ZpCE ; CPU:$BC40 PRG:3C40 85 CE + beq CountPlayerFrames_Loop2 ; CPU:$BC42 PRG:3C42 F0 16 +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames +; Global: Counts the frames the player state has been in. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames: + inc ZpCE ; CPU:$BC44 PRG:3C44 E6 CE + lda ZpCE ; CPU:$BC46 PRG:3C46 A5 CE + cmp #$08 ; CPU:$BC48 PRG:3C48 C9 08 + bcc CountPlayerFrames_Loop ; CPU:$BC4A PRG:3C4A 90 0A + lda #$00 ; CPU:$BC4C PRG:3C4C A9 00 + sta ZpCE ; CPU:$BC4E PRG:3C4E 85 CE + inc $05A4 ; CPU:$BC50 PRG:3C50 EE A4 05 + inc $05A4 ; CPU:$BC53 PRG:3C53 EE A4 05 +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop +; Global: Branch target inside CountPlayerFrames: taken when the loop repeats. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop: + lda #$00 ; CPU:$BC56 PRG:3C56 A9 00 + sta ZpCF ; CPU:$BC58 PRG:3C58 85 CF +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop2 +; Global: Branch target inside CountPlayerFrames: taken when Loop2. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop2: + lda ZpCF ; CPU:$BC5A PRG:3C5A A5 CF + bne CountPlayerFrames_Loop3 ; CPU:$BC5C PRG:3C5C D0 0A + lda Zp35 ; CPU:$BC5E PRG:3C5E A5 35 + sta ZpCF ; CPU:$BC60 PRG:3C60 85 CF + dec Zp40 ; CPU:$BC62 PRG:3C62 C6 40 + dec Zp4A ; CPU:$BC64 PRG:3C64 C6 4A + dec Zp4A ; CPU:$BC66 PRG:3C66 C6 4A +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop3 +; Global: Branch target inside CountPlayerFrames: taken when Loop3. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop3: + dec ZpCF ; CPU:$BC68 PRG:3C68 C6 CF + lda Zp40 ; CPU:$BC6A PRG:3C6A A5 40 + bne CountPlayerFrames_Loop4 ; CPU:$BC6C PRG:3C6C D0 16 + lda #$08 ; CPU:$BC6E PRG:3C6E A9 08 + sta Zp40 ; CPU:$BC70 PRG:3C70 85 40 + lda Zp4D ; CPU:$BC72 PRG:3C72 A5 4D + sta Zp20 ; CPU:$BC74 PRG:3C74 85 20 + dec Zp20 ; CPU:$BC76 PRG:3C76 C6 20 + lda Zp48 ; CPU:$BC78 PRG:3C78 A5 48 + sta Zp23 ; CPU:$BC7A PRG:3C7A 85 23 + jsr ComputePlayerPosition ; CPU:$BC7C PRG:3C7C 20 70 BD + beq CountPlayerFrames_Loop4 ; CPU:$BC7F PRG:3C7F F0 03 + inc Zp60 ; CPU:$BC81 PRG:3C81 E6 60 + rts ; CPU:$BC83 PRG:3C83 60 +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop4 +; Global: Branch target inside CountPlayerFrames: taken when Loop4. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop4: + lda ButtonState1 ; CPU:$BC84 PRG:3C84 A5 26 + and #$03 ; CPU:$BC86 PRG:3C86 29 03 + bne CountPlayerFrames_Loop5 ; CPU:$BC88 PRG:3C88 D0 03 + jmp ApplyPlayerDirection ; CPU:$BC8A PRG:3C8A 4C 26 BD +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop5 +; Global: Branch target inside CountPlayerFrames: taken when Loop5. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop5: + cmp #$03 ; CPU:$BC8D PRG:3C8D C9 03 + bne CountPlayerFrames_Loop6 ; CPU:$BC8F PRG:3C8F D0 07 + lda #$00 ; CPU:$BC91 PRG:3C91 A9 00 + sta Zp3F ; CPU:$BC93 PRG:3C93 85 3F + jmp ApplyPlayerDirection ; CPU:$BC95 PRG:3C95 4C 26 BD +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop6 +; Global: Branch target inside CountPlayerFrames: taken when Loop6. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop6: + sta Zp3F ; CPU:$BC98 PRG:3C98 85 3F + lda ButtonState1 ; CPU:$BC9A PRG:3C9A A5 26 + and #$01 ; CPU:$BC9C PRG:3C9C 29 01 + beq CountPlayerFrames_Loop7 ; CPU:$BC9E PRG:3C9E F0 09 + lda Zp4D ; CPU:$BCA0 PRG:3CA0 A5 4D + clc ; CPU:$BCA2 PRG:3CA2 18 + adc #$10 ; CPU:$BCA3 PRG:3CA3 69 10 + and #$F0 ; CPU:$BCA5 PRG:3CA5 29 F0 + sta Zp20 ; CPU:$BCA7 PRG:3CA7 85 20 +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop7 +; Global: Branch target inside CountPlayerFrames: taken when Loop7. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop7: + lda ButtonState1 ; CPU:$BCA9 PRG:3CA9 A5 26 + and #$02 ; CPU:$BCAB PRG:3CAB 29 02 + beq CountPlayerFrames_Loop8 ; CPU:$BCAD PRG:3CAD F0 09 + lda Zp4D ; CPU:$BCAF PRG:3CAF A5 4D + sec ; CPU:$BCB1 PRG:3CB1 38 + sbc #$10 ; CPU:$BCB2 PRG:3CB2 E9 10 + and #$F0 ; CPU:$BCB4 PRG:3CB4 29 F0 + sta Zp20 ; CPU:$BCB6 PRG:3CB6 85 20 +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop8 +; Global: Branch target inside CountPlayerFrames: taken when Loop8. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop8: + lda Zp4D ; CPU:$BCB8 PRG:3CB8 A5 4D + and #$0F ; CPU:$BCBA PRG:3CBA 29 0F + ora Zp20 ; CPU:$BCBC PRG:3CBC 05 20 + sta Zp20 ; CPU:$BCBE PRG:3CBE 85 20 + lda Zp40 ; CPU:$BCC0 PRG:3CC0 A5 40 + cmp #$05 ; CPU:$BCC2 PRG:3CC2 C9 05 + bcc CountPlayerFrames_Loop10 ; CPU:$BCC4 PRG:3CC4 90 1B + lda Zp4D ; CPU:$BCC6 PRG:3CC6 A5 4D + sta Zp1C ; CPU:$BCC8 PRG:3CC8 85 1C + and #$0F ; CPU:$BCCA PRG:3CCA 29 0F + cmp #$0E ; CPU:$BCCC PRG:3CCC C9 0E + bcc CountPlayerFrames_Loop9 ; CPU:$BCCE PRG:3CCE 90 06 + lda Zp4D ; CPU:$BCD0 PRG:3CD0 A5 4D + eor #$10 ; CPU:$BCD2 PRG:3CD2 49 10 + sta Zp1C ; CPU:$BCD4 PRG:3CD4 85 1C +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop9 +; Global: Branch target inside CountPlayerFrames: taken when Loop9. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop9: + lda Zp1C ; CPU:$BCD6 PRG:3CD6 A5 1C + and #$10 ; CPU:$BCD8 PRG:3CD8 29 10 + beq MovePlayer ; CPU:$BCDA PRG:3CDA F0 1D + inc Zp20 ; CPU:$BCDC PRG:3CDC E6 20 + jmp MovePlayer ; CPU:$BCDE PRG:3CDE 4C F9 BC +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop10 +; Global: Branch target inside CountPlayerFrames: taken when Loop10. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop10: + lda Zp4D ; CPU:$BCE1 PRG:3CE1 A5 4D + sta Zp1C ; CPU:$BCE3 PRG:3CE3 85 1C + and #$0F ; CPU:$BCE5 PRG:3CE5 29 0F + cmp #$0E ; CPU:$BCE7 PRG:3CE7 C9 0E + bcc CountPlayerFrames_Loop11 ; CPU:$BCE9 PRG:3CE9 90 06 + lda Zp4D ; CPU:$BCEB PRG:3CEB A5 4D + eor #$10 ; CPU:$BCED PRG:3CED 49 10 + sta Zp1C ; CPU:$BCEF PRG:3CEF 85 1C +; ----------------------------------------------------------------------------- +; Routine: CountPlayerFrames_Loop11 +; Global: Branch target inside CountPlayerFrames: taken when Loop11. +; Local: Part of CountPlayerFrames. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CountPlayerFrames_Loop11: + lda Zp1C ; CPU:$BCF1 PRG:3CF1 A5 1C + and #$10 ; CPU:$BCF3 PRG:3CF3 29 10 + bne MovePlayer ; CPU:$BCF5 PRG:3CF5 D0 02 + dec Zp20 ; CPU:$BCF7 PRG:3CF7 C6 20 +; ----------------------------------------------------------------------------- +; Routine: MovePlayer +; Global: Moves the player by one step. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +MovePlayer: + lda Zp48 ; CPU:$BCF9 PRG:3CF9 A5 48 + sta Zp23 ; CPU:$BCFB PRG:3CFB 85 23 + jsr ComputePlayerPosition ; CPU:$BCFD PRG:3CFD 20 70 BD + beq MovePlayer_Loop ; CPU:$BD00 PRG:3D00 F0 09 + lda #$00 ; CPU:$BD02 PRG:3D02 A9 00 + sta Zp3F ; CPU:$BD04 PRG:3D04 85 3F + sta Zp56 ; CPU:$BD06 PRG:3D06 85 56 + jmp ApplyPlayerDirection ; CPU:$BD08 PRG:3D08 4C 26 BD +; ----------------------------------------------------------------------------- +; Routine: MovePlayer_Loop +; Global: Branch target inside MovePlayer: taken when the loop repeats. +; Local: Part of MovePlayer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +MovePlayer_Loop: + lda #$00 ; CPU:$BD0B PRG:3D0B A9 00 + sta ZpCF ; CPU:$BD0D PRG:3D0D 85 CF + lda #$10 ; CPU:$BD0F PRG:3D0F A9 10 + sta Zp56 ; CPU:$BD11 PRG:3D11 85 56 + lda Zp40 ; CPU:$BD13 PRG:3D13 A5 40 + cmp #$05 ; CPU:$BD15 PRG:3D15 C9 05 + bcc MovePlayer_Loop2 ; CPU:$BD17 PRG:3D17 90 08 + sec ; CPU:$BD19 PRG:3D19 38 + sbc #$04 ; CPU:$BD1A PRG:3D1A E9 04 + sta Zp40 ; CPU:$BD1C PRG:3D1C 85 40 + jmp ApplyPlayerDirection ; CPU:$BD1E PRG:3D1E 4C 26 BD +; ----------------------------------------------------------------------------- +; Routine: MovePlayer_Loop2 +; Global: Branch target inside MovePlayer: taken when Loop2. +; Local: Part of MovePlayer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +MovePlayer_Loop2: + clc ; CPU:$BD21 PRG:3D21 18 + adc #$04 ; CPU:$BD22 PRG:3D22 69 04 + sta Zp40 ; CPU:$BD24 PRG:3D24 85 40 +; ----------------------------------------------------------------------------- +; Routine: ApplyPlayerDirection +; Global: Turns the direction bits into a movement delta. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyPlayerDirection: + lda Zp48 ; CPU:$BD26 PRG:3D26 A5 48 + sta Zp23 ; CPU:$BD28 PRG:3D28 85 23 + and #$01 ; CPU:$BD2A PRG:3D2A 29 01 + beq ApplyPlayerDirection_Loop3 ; CPU:$BD2C PRG:3D2C F0 21 + lda NewButton1 ; CPU:$BD2E PRG:3D2E A5 2A + and #$80 ; CPU:$BD30 PRG:3D30 29 80 + beq ApplyPlayerDirection_Loop ; CPU:$BD32 PRG:3D32 F0 02 + dec Zp23 ; CPU:$BD34 PRG:3D34 C6 23 +; ----------------------------------------------------------------------------- +; Routine: ApplyPlayerDirection_Loop +; Global: Branch target inside ApplyPlayerDirection: taken when the loop repeats. +; Local: Part of ApplyPlayerDirection. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyPlayerDirection_Loop: + lda NewButton1 ; CPU:$BD36 PRG:3D36 A5 2A + and #$40 ; CPU:$BD38 PRG:3D38 29 40 + beq ApplyPlayerDirection_Loop2 ; CPU:$BD3A PRG:3D3A F0 02 + inc Zp23 ; CPU:$BD3C PRG:3D3C E6 23 +; ----------------------------------------------------------------------------- +; Routine: ApplyPlayerDirection_Loop2 +; Global: Branch target inside ApplyPlayerDirection: taken when Loop2. +; Local: Part of ApplyPlayerDirection. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyPlayerDirection_Loop2: + lda Zp23 ; CPU:$BD3E PRG:3D3E A5 23 + and #$03 ; CPU:$BD40 PRG:3D40 29 03 + sta Zp23 ; CPU:$BD42 PRG:3D42 85 23 + lda Zp4D ; CPU:$BD44 PRG:3D44 A5 4D + sta Zp20 ; CPU:$BD46 PRG:3D46 85 20 + jsr ComputePlayerPosition ; CPU:$BD48 PRG:3D48 20 70 BD + jsr Sub_CD1C ; CPU:$BD4B PRG:3D4B 20 1C CD + rts ; CPU:$BD4E PRG:3D4E 60 +; ----------------------------------------------------------------------------- +; Routine: ApplyPlayerDirection_Loop3 +; Global: Branch target inside ApplyPlayerDirection: taken when Loop3. +; Local: Part of ApplyPlayerDirection. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyPlayerDirection_Loop3: + lda NewButton1 ; CPU:$BD4F PRG:3D4F A5 2A + and #$80 ; CPU:$BD51 PRG:3D51 29 80 + beq ApplyPlayerDirection_Loop4 ; CPU:$BD53 PRG:3D53 F0 02 + inc Zp23 ; CPU:$BD55 PRG:3D55 E6 23 +; ----------------------------------------------------------------------------- +; Routine: ApplyPlayerDirection_Loop4 +; Global: Branch target inside ApplyPlayerDirection: taken when Loop4. +; Local: Part of ApplyPlayerDirection. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyPlayerDirection_Loop4: + lda NewButton1 ; CPU:$BD57 PRG:3D57 A5 2A + and #$40 ; CPU:$BD59 PRG:3D59 29 40 + beq ApplyPlayerDirection_Loop5 ; CPU:$BD5B PRG:3D5B F0 02 + dec Zp23 ; CPU:$BD5D PRG:3D5D C6 23 +; ----------------------------------------------------------------------------- +; Routine: ApplyPlayerDirection_Loop5 +; Global: Branch target inside ApplyPlayerDirection: taken when Loop5. +; Local: Part of ApplyPlayerDirection. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ApplyPlayerDirection_Loop5: + lda Zp23 ; CPU:$BD5F PRG:3D5F A5 23 + and #$03 ; CPU:$BD61 PRG:3D61 29 03 + sta Zp23 ; CPU:$BD63 PRG:3D63 85 23 + lda Zp4D ; CPU:$BD65 PRG:3D65 A5 4D + sta Zp20 ; CPU:$BD67 PRG:3D67 85 20 + jsr ComputePlayerPosition ; CPU:$BD69 PRG:3D69 20 70 BD + jsr Sub_CD1C ; CPU:$BD6C PRG:3D6C 20 1C CD + rts ; CPU:$BD6F PRG:3D6F 60 +; ----------------------------------------------------------------------------- +; Routine: ComputePlayerPosition +; Global: Computes the player's position from the tile map. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ComputePlayerPosition: + lda Zp20 ; CPU:$BD70 PRG:3D70 A5 20 + and #$F0 ; CPU:$BD72 PRG:3D72 29 F0 + sta Zp21 ; CPU:$BD74 PRG:3D74 85 21 + lda Zp20 ; CPU:$BD76 PRG:3D76 A5 20 + and #$0F ; CPU:$BD78 PRG:3D78 29 0F + sta Zp22 ; CPU:$BD7A PRG:3D7A 85 22 + lda #$04 ; CPU:$BD7C PRG:3D7C A9 04 + sta Zp1F ; CPU:$BD7E PRG:3D7E 85 1F + ldx #$00 ; CPU:$BD80 PRG:3D80 A2 00 + lda Zp23 ; CPU:$BD82 PRG:3D82 A5 23 + asl a ; CPU:$BD84 PRG:3D84 0A + asl a ; CPU:$BD85 PRG:3D85 0A + sta Zp25 ; CPU:$BD86 PRG:3D86 85 25 +; ----------------------------------------------------------------------------- +; Routine: ComputePlayerPosition_OnNonzero +; Global: Branch target inside ComputePlayerPosition: taken when the tested value is not zero. +; Local: Part of ComputePlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ComputePlayerPosition_OnNonzero: + ldy Zp25 ; CPU:$BD88 PRG:3D88 A4 25 + lda (Zp46),y ; CPU:$BD8A PRG:3D8A B1 46 + sta Zp1E ; CPU:$BD8C PRG:3D8C 85 1E + lda Zp21 ; CPU:$BD8E PRG:3D8E A5 21 + sta Zp1C ; CPU:$BD90 PRG:3D90 85 1C + lda Zp22 ; CPU:$BD92 PRG:3D92 A5 22 + cmp #$0E ; CPU:$BD94 PRG:3D94 C9 0E + bcc ComputePlayerPosition_Loop ; CPU:$BD96 PRG:3D96 90 07 + lda Zp21 ; CPU:$BD98 PRG:3D98 A5 21 + clc ; CPU:$BD9A PRG:3D9A 18 + adc #$10 ; CPU:$BD9B PRG:3D9B 69 10 + sta Zp1C ; CPU:$BD9D PRG:3D9D 85 1C +; ----------------------------------------------------------------------------- +; Routine: ComputePlayerPosition_Loop +; Global: Branch target inside ComputePlayerPosition: taken when the loop repeats. +; Local: Part of ComputePlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ComputePlayerPosition_Loop: + lda Zp1C ; CPU:$BD9F PRG:3D9F A5 1C + and #$10 ; CPU:$BDA1 PRG:3DA1 29 10 + beq ComputePlayerPosition_Loop2; CPU:$BDA3 PRG:3DA3 F0 08 + lda Zp1E ; CPU:$BDA5 PRG:3DA5 A5 1E + and #$10 ; CPU:$BDA7 PRG:3DA7 29 10 + beq ComputePlayerPosition_Loop2; CPU:$BDA9 PRG:3DA9 F0 02 + inc Zp1E ; CPU:$BDAB PRG:3DAB E6 1E +; ----------------------------------------------------------------------------- +; Routine: ComputePlayerPosition_Loop2 +; Global: Branch target inside ComputePlayerPosition: taken when Loop2. +; Local: Part of ComputePlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ComputePlayerPosition_Loop2: + lda Zp1E ; CPU:$BDAD PRG:3DAD A5 1E + and #$F0 ; CPU:$BDAF PRG:3DAF 29 F0 + clc ; CPU:$BDB1 PRG:3DB1 18 + adc Zp21 ; CPU:$BDB2 PRG:3DB2 65 21 + sta Zp1D ; CPU:$BDB4 PRG:3DB4 85 1D + cmp #$70 ; CPU:$BDB6 PRG:3DB6 C9 70 + bne ComputePlayerPosition_Loop3; CPU:$BDB8 PRG:3DB8 D0 03 + lda #$FF ; CPU:$BDBA PRG:3DBA A9 FF + rts ; CPU:$BDBC PRG:3DBC 60 +; ----------------------------------------------------------------------------- +; Routine: ComputePlayerPosition_Loop3 +; Global: Branch target inside ComputePlayerPosition: taken when Loop3. +; Local: Part of ComputePlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ComputePlayerPosition_Loop3: + lda Zp1E ; CPU:$BDBD PRG:3DBD A5 1E + and #$0F ; CPU:$BDBF PRG:3DBF 29 0F + clc ; CPU:$BDC1 PRG:3DC1 18 + adc Zp22 ; CPU:$BDC2 PRG:3DC2 65 22 + sta Zp1C ; CPU:$BDC4 PRG:3DC4 85 1C + and #$0F ; CPU:$BDC6 PRG:3DC6 29 0F + cmp #$0E ; CPU:$BDC8 PRG:3DC8 C9 0E + bcc ComputePlayerPosition_Loop4; CPU:$BDCA PRG:3DCA 90 03 +; ----------------------------------------------------------------------------- +; Routine: ComputePlayerPosition_OnCarrySet +; Global: Branch target inside ComputePlayerPosition: taken when the addition or subtraction carried. +; Local: Part of ComputePlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ComputePlayerPosition_OnCarrySet: + lda #$FF ; CPU:$BDCC PRG:3DCC A9 FF + rts ; CPU:$BDCE PRG:3DCE 60 +; ----------------------------------------------------------------------------- +; Routine: ComputePlayerPosition_Loop4 +; Global: Branch target inside ComputePlayerPosition: taken when Loop4. +; Local: Part of ComputePlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ComputePlayerPosition_Loop4: + lda Zp1C ; CPU:$BDCF PRG:3DCF A5 1C + clc ; CPU:$BDD1 PRG:3DD1 18 + adc Zp1D ; CPU:$BDD2 PRG:3DD2 65 1D + cmp #$70 ; CPU:$BDD4 PRG:3DD4 C9 70 + bcs ComputePlayerPosition_OnCarrySet ; CPU:$BDD6 PRG:3DD6 B0 F4 + tay ; CPU:$BDD8 PRG:3DD8 A8 + lda $0400,y ; CPU:$BDD9 PRG:3DD9 B9 00 04 + and #$7F ; CPU:$BDDC PRG:3DDC 29 7F + beq StorePlayerSprite ; CPU:$BDDE PRG:3DDE F0 01 + rts ; CPU:$BDE0 PRG:3DE0 60 +; ----------------------------------------------------------------------------- +; Routine: StorePlayerSprite +; Global: Stores the player's sprite in the sprite table. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +StorePlayerSprite: + tya ; CPU:$BDE1 PRG:3DE1 98 + sta ZpD0,x ; CPU:$BDE2 PRG:3DE2 95 D0 + inx ; CPU:$BDE4 PRG:3DE4 E8 + inc Zp25 ; CPU:$BDE5 PRG:3DE5 E6 25 + dec Zp1F ; CPU:$BDE7 PRG:3DE7 C6 1F + bne ComputePlayerPosition_OnNonzero ; CPU:$BDE9 PRG:3DE9 D0 9D + lda #$04 ; CPU:$BDEB PRG:3DEB A9 04 + sta Zp1F ; CPU:$BDED PRG:3DED 85 1F + ldx #$00 ; CPU:$BDEF PRG:3DEF A2 00 +; ----------------------------------------------------------------------------- +; Routine: StorePlayerSprite_OnNonzero +; Global: Branch target inside StorePlayerSprite: taken when the tested value is not zero. +; Local: Part of StorePlayerSprite. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +StorePlayerSprite_OnNonzero: + lda ZpD0,x ; CPU:$BDF1 PRG:3DF1 B5 D0 + sta Zp4E,x ; CPU:$BDF3 PRG:3DF3 95 4E + inx ; CPU:$BDF5 PRG:3DF5 E8 + dec Zp1F ; CPU:$BDF6 PRG:3DF6 C6 1F + bne StorePlayerSprite_OnNonzero; CPU:$BDF8 PRG:3DF8 D0 F7 + lda Zp20 ; CPU:$BDFA PRG:3DFA A5 20 + sta Zp4D ; CPU:$BDFC PRG:3DFC 85 4D + lda Zp23 ; CPU:$BDFE PRG:3DFE A5 23 + sta Zp48 ; CPU:$BE00 PRG:3E00 85 48 + lda #$00 ; CPU:$BE02 PRG:3E02 A9 00 + rts ; CPU:$BE04 PRG:3E04 60 +; ---- data $BE05-$BEE3 (223 bytes) ---- +; referenced by `lda $BE05,x` at $BC24 (operand $BE05 falls inside this region) +; referenced by `lda $BE06,x` at $BC2B (operand $BE06 falls inside this region) + .byte $27, $02, $15, $02, $03, $02, $28, $80, $24, $02, $26, $02, $13, $01, $29, $40 ; CPU:$BE05 PRG:3E05 27 02 15 02 03 02 28 80 24 02 26 02 13 01 29 40 + .byte $27, $80, $25, $02, $13, $40, $12, $02, $01, $80, $25, $01, $33, $01, $41, $40 ; CPU:$BE15 PRG:3E15 27 80 25 02 13 40 12 02 01 80 25 01 33 01 41 40 + .byte $29, $40, $28, $01, $33, $01, $29, $40, $26, $80, $24, $80, $29, $80, $25, $01 ; CPU:$BE25 PRG:3E25 29 40 28 01 33 01 29 40 26 80 24 80 29 80 25 01 + .byte $32, $02, $26, $40, $21, $02, $27, $80, $24, $02, $26, $01, $34, $01, $43, $80 ; CPU:$BE35 PRG:3E35 32 02 26 40 21 02 27 80 24 02 26 01 34 01 43 80 + .byte $41, $40, $28, $01, $34, $01, $28, $01, $29, $02, $15, $01, $23, $80, $26, $01 ; CPU:$BE45 PRG:3E45 41 40 28 01 34 01 28 01 29 02 15 01 23 80 26 01 + .byte $32, $01, $27, $02, $12, $02, $27, $01, $35, $01, $44, $80, $43, $40, $28, $40 ; CPU:$BE55 PRG:3E55 32 01 27 02 12 02 27 01 35 01 44 80 43 40 28 40 + .byte $26, $80, $25, $02, $13, $02, $25, $02, $27, $01, $34, $01, $28, $40, $25, $40 ; CPU:$BE65 PRG:3E65 26 80 25 02 13 02 25 02 27 01 34 01 28 40 25 40 + .byte $24, $02, $12, $02, $26, $80, $28, $80, $25, $02, $29, $40, $27, $80, $23, $02 ; CPU:$BE75 PRG:3E75 24 02 12 02 26 80 28 80 25 02 29 40 27 80 23 02 + .byte $29, $01, $36, $01, $45, $01, $29, $40, $28, $01, $36, $01, $44, $80, $28, $80 ; CPU:$BE85 PRG:3E85 29 01 36 01 45 01 29 40 28 01 36 01 44 80 28 80 + .byte $26, $01, $34, $01, $43, $40, $26, $40, $25, $01, $33, $80, $28, $40, $26, $02 ; CPU:$BE95 PRG:3E95 26 01 34 01 43 40 26 40 25 01 33 80 28 40 26 02 + .byte $14, $02, $29, $40, $27, $80, $28, $01, $35, $01, $29, $01, $36, $01, $45, $80 ; CPU:$BEA5 PRG:3EA5 14 02 29 40 27 80 28 01 35 01 29 01 36 01 45 80 + .byte $29, $40, $27, $80, $29, $02, $14, $01, $29, $02, $15, $02, $04, $02, $28, $01 ; CPU:$BEB5 PRG:3EB5 29 40 27 80 29 02 14 01 29 02 15 02 04 02 28 01 + .byte $35, $01, $27, $80, $25, $02, $27, $40, $24, $02, $28, $40, $25, $01, $28, $40 ; CPU:$BEC5 PRG:3EC5 35 01 27 80 25 02 27 40 24 02 28 40 25 01 28 40 + .byte $25, $80, $22, $02, $29, $80, $27, $01, $35, $01, $45, $40, $44, $01, $27 ; CPU:$BED5 PRG:3ED5 25 80 22 02 29 80 27 01 35 01 45 40 44 01 27 +; ----------------------------------------------------------------------------- +; Routine: BuildBubbleTable +; Global: Builds the table of the bubbles on the screen. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +BuildBubbleTable: + ldx #$00 ; CPU:$BEE4 PRG:3EE4 A2 00 + stx Zp21 ; CPU:$BEE6 PRG:3EE6 86 21 +; ----------------------------------------------------------------------------- +; Routine: BuildBubbleTable_OnCarryClear +; Global: Branch target inside BuildBubbleTable: taken when the addition or subtraction did not carry. +; Local: Part of BuildBubbleTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +BuildBubbleTable_OnCarryClear: + ldy Zp4E,x ; CPU:$BEE8 PRG:3EE8 B4 4E + lda Zp52,x ; CPU:$BEEA PRG:3EEA B5 52 + sta Zp1B ; CPU:$BEEC PRG:3EEC 85 1B + sta $0400,y ; CPU:$BEEE PRG:3EEE 99 00 04 + inc Zp21 ; CPU:$BEF1 PRG:3EF1 E6 21 + asl a ; CPU:$BEF3 PRG:3EF3 0A + tax ; CPU:$BEF4 PRG:3EF4 AA + lda $F29E,x ; CPU:$BEF5 PRG:3EF5 BD 9E F2 + sta Zp17 ; CPU:$BEF8 PRG:3EF8 85 17 + lda $F29F,x ; CPU:$BEFA PRG:3EFA BD 9F F2 + sta Zp18 ; CPU:$BEFD PRG:3EFD 85 18 + tya ; CPU:$BEFF PRG:3EFF 98 + jsr Sub_84BF ; CPU:$BF00 PRG:3F00 20 BF 84 + jsr Sub_858A ; CPU:$BF03 PRG:3F03 20 8A 85 + jsr Sub_84E3 ; CPU:$BF06 PRG:3F06 20 E3 84 + ldx Zp21 ; CPU:$BF09 PRG:3F09 A6 21 + cpx #$04 ; CPU:$BF0B PRG:3F0B E0 04 + bcc BuildBubbleTable_OnCarryClear ; CPU:$BF0D PRG:3F0D 90 D9 + ldx Zp36 ; CPU:$BF0F PRG:3F0F A6 36 + lda #$00 ; CPU:$BF11 PRG:3F11 A9 00 + sta $0300,x ; CPU:$BF13 PRG:3F13 9D 00 03 + rts ; CPU:$BF16 PRG:3F16 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateBubbles +; Global: Updates every bubble on the screen. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateBubbles: + lda Zp61 ; CPU:$BF17 PRG:3F17 A5 61 + cmp #$00 ; CPU:$BF19 PRG:3F19 C9 00 + bne PlayBubbleSound ; CPU:$BF1B PRG:3F1B D0 36 + ldx #$00 ; CPU:$BF1D PRG:3F1D A2 00 + stx Zp58 ; CPU:$BF1F PRG:3F1F 86 58 +; ----------------------------------------------------------------------------- +; Routine: UpdateBubbles_OnCarryClear +; Global: Branch target inside UpdateBubbles: taken when the addition or subtraction did not carry. +; Local: Part of UpdateBubbles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateBubbles_OnCarryClear: + stx Zp21 ; CPU:$BF21 PRG:3F21 86 21 + lda Zp4E,x ; CPU:$BF23 PRG:3F23 B5 4E + sta Zp20 ; CPU:$BF25 PRG:3F25 85 20 + dec Zp20 ; CPU:$BF27 PRG:3F27 C6 20 +; ----------------------------------------------------------------------------- +; Routine: UpdateBubbles_OnNonnegative +; Global: Branch target inside UpdateBubbles: taken when the tested value is not negative. +; Local: Part of UpdateBubbles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateBubbles_OnNonnegative: + lda Zp20 ; CPU:$BF29 PRG:3F29 A5 20 + and #$0F ; CPU:$BF2B PRG:3F2B 29 0F + cmp #$0E ; CPU:$BF2D PRG:3F2D C9 0E + bcs UpdateBubbles_Loop ; CPU:$BF2F PRG:3F2F B0 18 + ldy Zp20 ; CPU:$BF31 PRG:3F31 A4 20 + lda $0400,y ; CPU:$BF33 PRG:3F33 B9 00 04 + bne UpdateBubbles_Loop ; CPU:$BF36 PRG:3F36 D0 11 + lda #$80 ; CPU:$BF38 PRG:3F38 A9 80 + sta $0400,y ; CPU:$BF3A PRG:3F3A 99 00 04 + tya ; CPU:$BF3D PRG:3F3D 98 + ldx Zp58 ; CPU:$BF3E PRG:3F3E A6 58 + sta $0568,x ; CPU:$BF40 PRG:3F40 9D 68 05 + inc Zp58 ; CPU:$BF43 PRG:3F43 E6 58 + dec Zp20 ; CPU:$BF45 PRG:3F45 C6 20 + bpl UpdateBubbles_OnNonnegative; CPU:$BF47 PRG:3F47 10 E0 +; ----------------------------------------------------------------------------- +; Routine: UpdateBubbles_Loop +; Global: Branch target inside UpdateBubbles: taken when the loop repeats. +; Local: Part of UpdateBubbles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateBubbles_Loop: + ldx Zp21 ; CPU:$BF49 PRG:3F49 A6 21 + inx ; CPU:$BF4B PRG:3F4B E8 + cpx #$04 ; CPU:$BF4C PRG:3F4C E0 04 + bcc UpdateBubbles_OnCarryClear ; CPU:$BF4E PRG:3F4E 90 D1 + inc Zp61 ; CPU:$BF50 PRG:3F50 E6 61 + rts ; CPU:$BF52 PRG:3F52 60 +; ----------------------------------------------------------------------------- +; Routine: PlayBubbleSound +; Global: Plays the sound of a bubble that burst. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayBubbleSound: + lda FrameCounter ; CPU:$BF53 PRG:3F53 A5 31 + ror a ; CPU:$BF55 PRG:3F55 6A + bcs PlayBubbleSound_Loop ; CPU:$BF56 PRG:3F56 B0 01 + rts ; CPU:$BF58 PRG:3F58 60 +; ----------------------------------------------------------------------------- +; Routine: PlayBubbleSound_Loop +; Global: Branch target inside PlayBubbleSound: taken when the loop repeats. +; Local: Part of PlayBubbleSound. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayBubbleSound_Loop: + lda #$0D ; CPU:$BF59 PRG:3F59 A9 0D + sta Zp17 ; CPU:$BF5B PRG:3F5B 85 17 + lda #$F3 ; CPU:$BF5D PRG:3F5D A9 F3 + sta Zp18 ; CPU:$BF5F PRG:3F5F 85 18 + lda #$0C ; CPU:$BF61 PRG:3F61 A9 0C + sta Zp1F ; CPU:$BF63 PRG:3F63 85 1F + ldy #$00 ; CPU:$BF65 PRG:3F65 A0 00 +; ----------------------------------------------------------------------------- +; Routine: SpawnBubble +; Global: Puts a new bubble on the screen. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SpawnBubble: + dec Zp58 ; CPU:$BF67 PRG:3F67 C6 58 + bpl DrawBubble ; CPU:$BF69 PRG:3F69 10 18 + inc Zp60 ; CPU:$BF6B PRG:3F6B E6 60 + lda Zp64 ; CPU:$BF6D PRG:3F6D A5 64 + bne SpawnBubble_Loop ; CPU:$BF6F PRG:3F6F D0 02 + inc Zp60 ; CPU:$BF71 PRG:3F71 E6 60 +; ----------------------------------------------------------------------------- +; Routine: SpawnBubble_Loop +; Global: Branch target inside SpawnBubble: taken when the loop repeats. +; Local: Part of SpawnBubble. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SpawnBubble_Loop: + lda #$00 ; CPU:$BF73 PRG:3F73 A9 00 + ldy Zp36 ; CPU:$BF75 PRG:3F75 A4 36 + sta Zp61 ; CPU:$BF77 PRG:3F77 85 61 + sta $0300,y ; CPU:$BF79 PRG:3F79 99 00 03 + sta Zp3F ; CPU:$BF7C PRG:3F7C 85 3F + lda #$03 ; CPU:$BF7E PRG:3F7E A9 03 + sta Zp56 ; CPU:$BF80 PRG:3F80 85 56 + rts ; CPU:$BF82 PRG:3F82 60 +; ----------------------------------------------------------------------------- +; Routine: DrawBubble +; Global: Draws one bubble. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DrawBubble: + ldx Zp58 ; CPU:$BF83 PRG:3F83 A6 58 + lda $0568,x ; CPU:$BF85 PRG:3F85 BD 68 05 + jsr Sub_84BF ; CPU:$BF88 PRG:3F88 20 BF 84 + jsr Sub_858A ; CPU:$BF8B PRG:3F8B 20 8A 85 + dec Zp1F ; CPU:$BF8E PRG:3F8E C6 1F + bpl SpawnBubble ; CPU:$BF90 PRG:3F90 10 D5 + ldy Zp36 ; CPU:$BF92 PRG:3F92 A4 36 + lda #$00 ; CPU:$BF94 PRG:3F94 A9 00 + sta $0300,y ; CPU:$BF96 PRG:3F96 99 00 03 + rts ; CPU:$BF99 PRG:3F99 60 +; ----------------------------------------------------------------------------- +; Routine: DispatchBubbleHandler +; Global: Jumps to the handler the bubble table names. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DispatchBubbleHandler: + lda Zp61 ; CPU:$BF9A PRG:3F9A A5 61 + jsr DispatchByJumpTable ; CPU:$BF9C PRG:3F9C 20 73 81 +; ---- data $BF9F-$BFAE (16 bytes) ---- + .byte $AF, $BF, $BA, $BF, $D6, $BF, $0F, $C0, $70, $C0, $79, $C0, $9E, $C0, $B9, $C0 ; CPU:$BF9F PRG:3F9F AF BF BA BF D6 BF 0F C0 70 C0 79 C0 9E C0 B9 C0 +; ----------------------------------------------------------------------------- +; Routine: ResetLevel +; Global: Resets the level and the player. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetLevel: + lda #$0A ; CPU:$BFAF PRG:3FAF A9 0A + sta GameMode ; CPU:$BFB1 PRG:3FB1 85 6A + lda #$00 ; CPU:$BFB3 PRG:3FB3 A9 00 + sta Zp6C ; CPU:$BFB5 PRG:3FB5 85 6C + inc Zp61 ; CPU:$BFB7 PRG:3FB7 E6 61 + rts ; CPU:$BFB9 PRG:3FB9 60 +; ----------------------------------------------------------------------------- +; Routine: ClearSpriteTable +; Global: Empties the sprite table in RAM. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearSpriteTable: + lda #$00 ; CPU:$BFBA PRG:3FBA A9 00 + sta $0358 ; CPU:$BFBC PRG:3FBC 8D 58 03 + sta $035A ; CPU:$BFBF PRG:3FBF 8D 5A 03 + sta $035B ; CPU:$BFC2 PRG:3FC2 8D 5B 03 + sta $035C ; CPU:$BFC5 PRG:3FC5 8D 5C 03 + sta $035D ; CPU:$BFC8 PRG:3FC8 8D 5D 03 + lda #$0A ; CPU:$BFCB PRG:3FCB A9 0A + sta Zp58 ; CPU:$BFCD PRG:3FCD 85 58 + inc Zp61 ; CPU:$BFCF PRG:3FCF E6 61 + lda #$07 ; CPU:$BFD1 PRG:3FD1 A9 07 + jsr BankedCall ; CPU:$BFD3 PRG:3FD3 20 04 80 + lda FrameCounter ; CPU:$BFD6 PRG:3FD6 A5 31 + ror a ; CPU:$BFD8 PRG:3FD8 6A + bcs ClearSpriteTable_Loop ; CPU:$BFD9 PRG:3FD9 B0 01 + rts ; CPU:$BFDB PRG:3FDB 60 +; ----------------------------------------------------------------------------- +; Routine: ClearSpriteTable_Loop +; Global: Branch target inside ClearSpriteTable: taken when the loop repeats. +; Local: Part of ClearSpriteTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearSpriteTable_Loop: + lda #$A8 ; CPU:$BFDC PRG:3FDC A9 A8 + sta Zp17 ; CPU:$BFDE PRG:3FDE 85 17 + lda #$F2 ; CPU:$BFE0 PRG:3FE0 A9 F2 + sta Zp18 ; CPU:$BFE2 PRG:3FE2 85 18 + lda Zp58 ; CPU:$BFE4 PRG:3FE4 A5 58 +; ----------------------------------------------------------------------------- +; Routine: ClearSpriteTable_OnCarryClear +; Global: Branch target inside ClearSpriteTable: taken when the addition or subtraction did not carry. +; Local: Part of ClearSpriteTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearSpriteTable_OnCarryClear: + sta Zp56 ; CPU:$BFE6 PRG:3FE6 85 56 + jsr Sub_84BF ; CPU:$BFE8 PRG:3FE8 20 BF 84 + jsr Sub_858A ; CPU:$BFEB PRG:3FEB 20 8A 85 + lda Zp56 ; CPU:$BFEE PRG:3FEE A5 56 + clc ; CPU:$BFF0 PRG:3FF0 18 + adc #$10 ; CPU:$BFF1 PRG:3FF1 69 10 + cmp #$70 ; CPU:$BFF3 PRG:3FF3 C9 70 + bcc ClearSpriteTable_OnCarryClear ; CPU:$BFF5 PRG:3FF5 90 EF + lda #$00 ; CPU:$BFF7 PRG:3FF7 A9 00 + sta $0300,x ; CPU:$BFF9 PRG:3FF9 9D 00 03 + dec Zp58 ; CPU:$BFFC PRG:3FFC C6 58 + bpl ClearNametableRam_Loop ; CPU:$BFFE PRG:3FFE 10 0E +.segment "PRG2" +.org $C000 - .byte $E6, $61, $A0, $00, $A9, $00, $99, $00, $04, $C8, $C0, $70, $90, $F8, $60, $A5 ; CPU:$8000 PRG:4000 E6 61 A0 00 A9 00 99 00 04 C8 C0 70 90 F8 60 A5 - .byte $31, $6A, $B0, $01, $60, $A6, $37, $A0, $00, $B9, $46, $C0, $9D, $38, $03, $E8 ; CPU:$8010 PRG:4010 31 6A B0 01 60 A6 37 A0 00 B9 46 C0 9D 38 03 E8 - .byte $C8, $C0, $08, $90, $F4, $A9, $00, $9D, $38, $03, $A5, $6F, $F0, $07, $A4, $37 ; CPU:$8020 PRG:4020 C8 C0 08 90 F4 A9 00 9D 38 03 A5 6F F0 07 A4 37 - .byte $A9, $A7, $99, $38, $03, $86, $37, $A9, $01, $85, $95, $A9, $00, $85, $5F, $85 ; CPU:$8030 PRG:4030 A9 A7 99 38 03 86 37 A9 01 85 95 A9 00 85 5F 85 - .byte $5E, $85, $91, $E6, $61, $60, $A9, $21, $11, $F8, $D9, $23, $1B, $F8, $A9, $00 ; CPU:$8040 PRG:4040 5E 85 91 E6 61 60 A9 21 11 F8 D9 23 1B F8 A9 00 - .byte $85, $61, $A9, $0A, $85, $58, $60, $20, $DC, $BF, $A5, $61, $F0, $02, $E6, $6C ; CPU:$8050 PRG:4050 85 61 A9 0A 85 58 60 20 DC BF A5 61 F0 02 E6 6C - .byte $60, $A9, $00, $AA, $95, $60, $E8, $E0, $0A, $90, $F9, $A9, $FF, $85, $65, $60 ; CPU:$8060 PRG:4060 60 A9 00 AA 95 60 E8 E0 0A 90 F9 A9 FF 85 65 60 - .byte $A5, $26, $C9, $C0, $D0, $02, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A2 ; CPU:$8070 PRG:4070 A5 26 C9 C0 D0 02 E6 61 60 A5 31 6A B0 01 60 A2 - .byte $00, $BD, $96, $C0, $9D, $38, $03, $E8, $E0, $08, $90, $F5, $A9, $00, $9D, $38 ; CPU:$8080 PRG:4080 00 BD 96 C0 9D 38 03 E8 E0 08 90 F5 A9 00 9D 38 - .byte $03, $85, $95, $E6, $61, $60, $A7, $21, $25, $F8, $D9, $23, $20, $F8, $A5, $31 ; CPU:$8090 PRG:4090 03 85 95 E6 61 60 A7 21 25 F8 D9 23 20 F8 A5 31 - .byte $6A, $B0, $01, $60, $A0, $00, $A6, $37, $B9, $E0, $C0, $9D, $38, $03, $E8, $C8 ; CPU:$80A0 PRG:40A0 6A B0 01 60 A0 00 A6 37 B9 E0 C0 9D 38 03 E8 C8 - .byte $C0, $0D, $90, $F4, $86, $37, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A0 ; CPU:$80B0 PRG:40B0 C0 0D 90 F4 86 37 E6 61 60 A5 31 6A B0 01 60 A0 - .byte $00, $A6, $37, $B9, $ED, $C0, $9D, $38, $03, $E8, $C8, $C0, $05, $90, $F4, $86 ; CPU:$80C0 PRG:40C0 00 A6 37 B9 ED C0 9D 38 03 E8 C8 C0 05 90 F4 86 - .byte $37, $20, $61, $C0, $20, $03, $97, $A9, $09, $85, $60, $A9, $00, $85, $61, $60 ; CPU:$80D0 PRG:40D0 37 20 61 C0 20 03 97 A9 09 85 60 A9 00 85 61 60 - .byte $22, $23, $A1, $FB, $42, $23, $A1, $FB, $2A, $23, $A7, $FB, $00, $46, $23, $AF ; CPU:$80E0 PRG:40E0 22 23 A1 FB 42 23 A1 FB 2A 23 A7 FB 00 46 23 AF - .byte $FB, $00, $A5, $5E, $D0, $18, $20, $52, $85, $A5, $3D, $29, $03, $A8, $A2, $00 ; CPU:$80F0 PRG:40F0 FB 00 A5 5E D0 18 20 52 85 A5 3D 29 03 A8 A2 00 - .byte $B9, $37, $C1, $9D, $DA, $05, $C8, $E8, $E0, $05, $90, $F4, $86, $5E, $A6, $5E ; CPU:$8100 PRG:4100 B9 37 C1 9D DA 05 C8 E8 E0 05 90 F4 86 5E A6 5E - .byte $BD, $D9, $05, $18, $69, $07, $85, $11, $A9, $00, $85, $12, $20, $5D, $85, $20 ; CPU:$8110 PRG:4110 BD D9 05 18 69 07 85 11 A9 00 85 12 20 5D 85 20 - .byte $52, $85, $A5, $3D, $29, $03, $85, $64, $E6, $64, $A6, $65, $30, $08, $BD, $00 ; CPU:$8120 PRG:4120 52 85 A5 3D 29 03 85 64 E6 64 A6 65 30 08 BD 00 - .byte $04, $29, $BF, $9D, $00, $04, $60, $02, $00, $04, $03, $01, $02, $00, $04, $03 ; CPU:$8130 PRG:4130 04 29 BF 9D 00 04 60 02 00 04 03 01 02 00 04 03 - .byte $A9, $02, $85, $64, $A9, $05, $85, $11, $A9, $02, $85, $12, $20, $5D, $85, $A9 ; CPU:$8140 PRG:4140 A9 02 85 64 A9 05 85 11 A9 02 85 12 20 5D 85 A9 - .byte $00, $85, $63, $A6, $65, $30, $17, $BD, $00, $04, $29, $BF, $9D, $00, $04, $A9 ; CPU:$8150 PRG:4150 00 85 63 A6 65 30 17 BD 00 04 29 BF 9D 00 04 A9 - .byte $FF, $85, $65, $A9, $00, $85, $11, $A9, $00, $85, $12, $20, $5D, $85, $60, $A5 ; CPU:$8160 PRG:4160 FF 85 65 A9 00 85 11 A9 00 85 12 20 5D 85 60 A5 - .byte $31, $6A, $B0, $01, $60, $A5, $61, $D0, $11, $E6, $61, $A9, $01, $8D, $E3, $00 ; CPU:$8170 PRG:4170 31 6A B0 01 60 A5 61 D0 11 E6 61 A9 01 8D E3 00 - .byte $A9, $05, $8D, $E2, $00, $A9, $04, $20, $04, $80, $C9, $01, $D0, $4A, $A9, $05 ; CPU:$8180 PRG:4180 A9 05 8D E2 00 A9 04 20 04 80 C9 01 D0 4A A9 05 - .byte $85, $11, $A9, $03, $85, $12, $20, $5D, $85, $A5, $3F, $0A, $AA, $BD, $87, $F8 ; CPU:$8190 PRG:4190 85 11 A9 03 85 12 20 5D 85 A5 3F 0A AA BD 87 F8 - .byte $18, $6D, $8A, $03, $8D, $8B, $03, $BD, $88, $F8, $18, $6D, $9A, $03, $8D, $9B ; CPU:$81A0 PRG:41A0 18 6D 8A 03 8D 8B 03 BD 88 F8 18 6D 9A 03 8D 9B - .byte $03, $A5, $31, $6A, $29, $03, $85, $20, $AD, $AA, $03, $29, $FC, $05, $20, $8D ; CPU:$81B0 PRG:41B0 03 A5 31 6A 29 03 85 20 AD AA 03 29 FC 05 20 8D - .byte $AA, $03, $8D, $AB, $03, $E6, $3F, $A5, $3F, $C9, $18, $D0, $0A, $A9, $00, $85 ; CPU:$81C0 PRG:41C0 AA 03 8D AB 03 E6 3F A5 3F C9 18 D0 0A A9 00 85 - .byte $3F, $C6, $56, $D0, $02, $E6, $61, $60, $C9, $02, $D0, $6D, $A5, $4E, $8D, $22 ; CPU:$81D0 PRG:41D0 3F C6 56 D0 02 E6 61 60 C9 02 D0 6D A5 4E 8D 22 - .byte $05, $AA, $20, $52, $85, $A5, $3D, $29, $03, $85, $64, $E6, $64, $A5, $64, $9D ; CPU:$81E0 PRG:41E0 05 AA 20 52 85 A5 3D 29 03 85 64 E6 64 A5 64 9D - .byte $00, $04, $A0, $01, $84, $25, $AD, $22, $05, $29, $10, $F0, $04, $A9, $07, $85 ; CPU:$81F0 PRG:41F0 00 04 A0 01 84 25 AD 22 05 29 10 F0 04 A9 07 85 - .byte $25, $A9, $01, $85, $21, $A9, $06, $85, $1F, $A4, $25, $B9, $7A, $F8, $E6, $25 ; CPU:$8200 PRG:4200 25 A9 01 85 21 A9 06 85 1F A4 25 B9 7A F8 E6 25 - .byte $18, $6D, $22, $05, $AA, $29, $0F, $C9, $0D, $B0, $20, $8A, $29, $F0, $C9, $70 ; CPU:$8210 PRG:4210 18 6D 22 05 AA 29 0F C9 0D B0 20 8A 29 F0 C9 70 - .byte $B0, $19, $BD, $00, $04, $29, $07, $D0, $05, $9D, $00, $04, $F0, $05, $A5, $64 ; CPU:$8220 PRG:4220 B0 19 BD 00 04 29 07 D0 05 9D 00 04 F0 05 A5 64 - .byte $9D, $00, $04, $8A, $A6, $21, $9D, $22, $05, $E6, $21, $C6, $1F, $D0, $CA, $A6 ; CPU:$8230 PRG:4230 9D 00 04 8A A6 21 9D 22 05 E6 21 C6 1F D0 CA A6 - .byte $21, $A9, $FF, $9D, $22, $05, $E6, $61, $60, $C9, $03, $D0, $47, $A0, $00, $84 ; CPU:$8240 PRG:4240 21 A9 FF 9D 22 05 E6 61 60 C9 03 D0 47 A0 00 84 - .byte $22, $A4, $22, $B9, $22, $05, $30, $22, $85, $21, $20, $BF, $84, $A6, $21, $BD ; CPU:$8250 PRG:4250 22 A4 22 B9 22 05 30 22 85 21 20 BF 84 A6 21 BD - .byte $00, $04, $85, $1B, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18 ; CPU:$8260 PRG:4260 00 04 85 1B 0A AA BD 9E F2 85 17 BD 9F F2 85 18 - .byte $20, $8A, $85, $20, $E3, $84, $E6, $22, $10, $D7, $A6, $36, $A9, $00, $9D, $00 ; CPU:$8270 PRG:4270 20 8A 85 20 E3 84 E6 22 10 D7 A6 36 A9 00 9D 00 - .byte $03, $A9, $00, $85, $11, $A9, $02, $85, $12, $20, $5D, $85, $E6, $12, $20, $5D ; CPU:$8280 PRG:4280 03 A9 00 85 11 A9 02 85 12 20 5D 85 E6 12 20 5D - .byte $85, $E6, $61, $60, $E6, $61, $A5, $61, $C9, $0F, $90, $0A, $A9, $00, $85, $61 ; CPU:$8290 PRG:4290 85 E6 61 60 E6 61 A5 61 C9 0F 90 0A A9 00 85 61 - .byte $85, $66, $85, $64, $E6, $60, $60, $A5, $6C, $20, $73, $81, $BF, $C2, $C8, $C3 ; CPU:$82A0 PRG:42A0 85 66 85 64 E6 60 60 A5 6C 20 73 81 BF C2 C8 C3 - .byte $56, $C4, $69, $C4, $9D, $C4, $E7, $C4, $05, $C5, $24, $C7, $7E, $C7, $01, $A9 ; CPU:$82B0 PRG:42B0 56 C4 69 C4 9D C4 E7 C4 05 C5 24 C7 7E C7 01 A9 - .byte $00, $8D, $00, $20, $8D, $01, $20, $A2, $00, $BD, $BE, $C2, $9D, $BE, $C2, $85 ; CPU:$82C0 PRG:42C0 00 8D 00 20 8D 01 20 A2 00 BD BE C2 9D BE C2 85 - .byte $2C, $A9, $F1, $85, $12, $A9, $E6, $85, $11, $20, $C4, $85, $A5, $5A, $0A, $AA ; CPU:$82D0 PRG:42D0 2C A9 F1 85 12 A9 E6 85 11 20 C4 85 A5 5A 0A AA - .byte $BD, $5C, $F4, $85, $39, $BD, $5D, $F4, $85, $3A, $A5, $5C, $0A, $AA, $BD, $5C ; CPU:$82E0 PRG:42E0 BD 5C F4 85 39 BD 5D F4 85 3A A5 5C 0A AA BD 5C - .byte $F4, $85, $3B, $BD, $5D, $F4, $85, $3C, $A5, $6F, $D0, $42, $A0, $07, $A9, $22 ; CPU:$82F0 PRG:42F0 F4 85 3B BD 5D F4 85 3C A5 6F D0 42 A0 07 A9 22 - .byte $85, $1A, $A9, $76, $85, $19, $A2, $06, $86, $21, $AD, $02, $20, $A5, $1A, $8D ; CPU:$8300 PRG:4300 85 1A A9 76 85 19 A2 06 86 21 AD 02 20 A5 1A 8D - .byte $06, $20, $A5, $19, $8D, $06, $20, $A9, $FF, $8D, $07, $20, $C6, $21, $D0, $F9 ; CPU:$8310 PRG:4310 06 20 A5 19 8D 06 20 A9 FF 8D 07 20 C6 21 D0 F9 - .byte $A5, $19, $18, $69, $20, $85, $19, $90, $02, $E6, $1A, $88, $D0, $DA, $A9, $3A ; CPU:$8320 PRG:4320 A5 19 18 69 20 85 19 90 02 E6 1A 88 D0 DA A9 3A - .byte $85, $19, $A9, $21, $85, $1A, $20, $D2, $C5, $A9, $00, $9D, $38, $03, $A5, $6F ; CPU:$8330 PRG:4330 85 19 A9 21 85 1A 20 D2 C5 A9 00 9D 38 03 A5 6F - .byte $F0, $3B, $AD, $02, $20, $A5, $01, $09, $04, $8D, $00, $20, $A9, $24, $8D, $06 ; CPU:$8340 PRG:4340 F0 3B AD 02 20 A5 01 09 04 8D 00 20 A9 24 8D 06 - .byte $20, $A9, $00, $8D, $06, $20, $A8, $B9, $97, $C6, $8D, $07, $20, $C8, $C0, $1E ; CPU:$8350 PRG:4350 20 A9 00 8D 06 20 A8 B9 97 C6 8D 07 20 C8 C0 1E - .byte $90, $F5, $A2, $C0, $A0, $55, $AD, $02, $20, $A9, $27, $8D, $06, $20, $8E, $06 ; CPU:$8360 PRG:4360 90 F5 A2 C0 A0 55 AD 02 20 A9 27 8D 06 20 8E 06 - .byte $20, $8C, $07, $20, $8A, $18, $69, $08, $AA, $C9, $F8, $D0, $E9, $A9, $02, $20 ; CPU:$8370 PRG:4370 20 8C 07 20 8A 18 69 08 AA C9 F8 D0 E9 A9 02 20 - .byte $28, $92, $20, $59, $CD, $E6, $6C, $AD, $E5, $05, $D0, $19, $A9, $03, $20, $04 ; CPU:$8380 PRG:4380 28 92 20 59 CD E6 6C AD E5 05 D0 19 A9 03 20 04 - .byte $80, $A9, $01, $8D, $DD, $00, $A5, $73, $8D, $DE, $00, $A9, $05, $20, $04, $80 ; CPU:$8390 PRG:4390 80 A9 01 8D DD 00 A5 73 8D DE 00 A9 05 20 04 80 - .byte $A9, $00, $8D, $DD, $00, $A9, $88, $85, $01, $A5, $02, $09, $18, $85, $02, $A5 ; CPU:$83A0 PRG:43A0 A9 00 8D DD 00 A9 88 85 01 A5 02 09 18 85 02 A5 - .byte $6F, $F0, $04, $A9, $0C, $85, $03, $A5, $71, $C9, $01, $F0, $06, $AD, $E5, $05 ; CPU:$83B0 PRG:43B0 6F F0 04 A9 0C 85 03 A5 71 C9 01 F0 06 AD E5 05 - .byte $D0, $01, $60, $A9, $06, $85, $6C, $60, $A9, $87, $85, $19, $A9, $21, $85, $1A ; CPU:$83C0 PRG:43C0 D0 01 60 A9 06 85 6C 60 A9 87 85 19 A9 21 85 1A - .byte $AD, $D0, $C6, $85, $17, $AD, $D1, $C6, $85, $18, $A5, $6F, $F0, $04, $C6, $19 ; CPU:$83D0 PRG:43D0 AD D0 C6 85 17 AD D1 C6 85 18 A5 6F F0 04 C6 19 - .byte $C6, $19, $20, $A7, $85, $A9, $D9, $85, $19, $A9, $23, $85, $1A, $AD, $D2, $C6 ; CPU:$83E0 PRG:43E0 C6 19 20 A7 85 A9 D9 85 19 A9 23 85 1A AD D2 C6 - .byte $85, $17, $AD, $D3, $C6, $85, $18, $20, $A7, $85, $A9, $8C, $85, $19, $A9, $21 ; CPU:$83F0 PRG:43F0 85 17 AD D3 C6 85 18 20 A7 85 A9 8C 85 19 A9 21 - .byte $85, $1A, $A5, $6F, $F0, $04, $C6, $19, $C6, $19, $20, $D2, $C5, $A5, $6F, $F0 ; CPU:$8400 PRG:4400 85 1A A5 6F F0 04 C6 19 C6 19 20 D2 C5 A5 6F F0 - .byte $03, $20, $20, $C4, $A9, $00, $9D, $38, $03, $E6, $6C, $A9, $3C, $85, $56, $60 ; CPU:$8410 PRG:4410 03 20 20 C4 A9 00 9D 38 03 E6 6C A9 3C 85 56 60 - .byte $A9, $95, $85, $19, $A9, $21, $85, $1A, $AD, $D0, $C6, $85, $17, $AD, $D1, $C6 ; CPU:$8420 PRG:4420 A9 95 85 19 A9 21 85 1A AD D0 C6 85 17 AD D1 C6 - .byte $85, $18, $20, $A7, $85, $A9, $DD, $85, $19, $A9, $23, $85, $1A, $AD, $D2, $C6 ; CPU:$8430 PRG:4430 85 18 20 A7 85 A9 DD 85 19 A9 23 85 1A AD D2 C6 - .byte $85, $17, $AD, $D3, $C6, $85, $18, $20, $A7, $85, $A9, $9A, $85, $19, $A9, $21 ; CPU:$8440 PRG:4440 85 17 AD D3 C6 85 18 20 A7 85 A9 9A 85 19 A9 21 - .byte $85, $1A, $20, $FE, $C5, $60, $A5, $2A, $29, $10, $D0, $04, $C6, $56, $D0, $08 ; CPU:$8450 PRG:4450 85 1A 20 FE C5 60 A5 2A 29 10 D0 04 C6 56 D0 08 - .byte $A9, $06, $85, $6C, $A9, $00, $85, $56, $60, $A5, $2A, $F0, $15, $A6, $58, $30 ; CPU:$8460 PRG:4460 A9 06 85 6C A9 00 85 56 60 A5 2A F0 15 A6 58 30 - .byte $12, $BD, $99, $C4, $C5, $2A, $D0, $0B, $E6, $58, $A5, $58, $C9, $04, $90, $02 ; CPU:$8470 PRG:4470 12 BD 99 C4 C5 2A D0 0B E6 58 A5 58 C9 04 90 02 - .byte $E6, $6C, $60, $A9, $FF, $85, $58, $A5, $2A, $29, $10, $F0, $F5, $A9, $00, $85 ; CPU:$8480 PRG:4480 E6 6C 60 A9 FF 85 58 A5 2A 29 10 F0 F5 A9 00 85 - .byte $3E, $20, $1B, $98, $A9, $06, $85, $6C, $60, $08, $01, $04, $02, $A0, $05, $84 ; CPU:$8490 PRG:4490 3E 20 1B 98 A9 06 85 6C 60 08 01 04 02 A0 05 84 - .byte $20, $A5, $2A, $29, $10, $F0, $03, $E6, $6C, $60, $A5, $2A, $29, $80, $F0, $0C ; CPU:$84A0 PRG:44A0 20 A5 2A 29 10 F0 03 E6 6C 60 A5 2A 29 80 F0 0C - .byte $E6, $5B, $A5, $5B, $C5, $20, $90, $04, $A9, $00, $85, $5B, $A5, $2A, $29, $40 ; CPU:$84B0 PRG:44B0 E6 5B A5 5B C5 20 90 04 A9 00 85 5B A5 2A 29 40 - .byte $F0, $0C, $E6, $5A, $A5, $5A, $C9, $04, $90, $04, $A9, $00, $85, $5A, $A9, $8C ; CPU:$84C0 PRG:44C0 F0 0C E6 5A A5 5A C9 04 90 04 A9 00 85 5A A9 8C - .byte $85, $19, $A9, $21, $85, $1A, $A5, $6F, $F0, $04, $C6, $19, $C6, $19, $20, $D2 ; CPU:$84D0 PRG:44D0 85 19 A9 21 85 1A A5 6F F0 04 C6 19 C6 19 20 D2 - .byte $C5, $A9, $00, $9D, $38, $03, $60, $A5, $2A, $29, $10, $F0, $17, $A9, $00, $85 ; CPU:$84E0 PRG:44E0 C5 A9 00 9D 38 03 60 A5 2A 29 10 F0 17 A9 00 85 - .byte $3E, $20, $88, $81, $A5, $5A, $85, $5C, $A5, $5B, $85, $5D, $A9, $09, $85, $6A ; CPU:$84F0 PRG:44F0 3E 20 88 81 A5 5A 85 5C A5 5B 85 5D A9 09 85 6A - .byte $A9, $05, $85, $6C, $60, $A5, $71, $C9, $01, $F0, $50, $A9, $08, $A4, $95, $F0 ; CPU:$8500 PRG:4500 A9 05 85 6C 60 A5 71 C9 01 F0 50 A9 08 A4 95 F0 - .byte $02, $A9, $04, $85, $1F, $A2, $00, $A0, $00, $B9, $BA, $C5, $9D, $38, $03, $E8 ; CPU:$8510 PRG:4510 02 A9 04 85 1F A2 00 A0 00 B9 BA C5 9D 38 03 E8 - .byte $C8, $C6, $1F, $D0, $F4, $86, $37, $A5, $6F, $F0, $06, $CE, $38, $03, $CE, $38 ; CPU:$8520 PRG:4520 C8 C6 1F D0 F4 86 37 A5 6F F0 06 CE 38 03 CE 38 - .byte $03, $A5, $6F, $D0, $0F, $A9, $3A, $85, $19, $A9, $21, $85, $1A, $20, $D2, $C5 ; CPU:$8530 PRG:4530 03 A5 6F D0 0F A9 3A 85 19 A9 21 85 1A 20 D2 C5 - .byte $A9, $01, $85, $96, $A5, $96, $D0, $0E, $A0, $08, $B9, $BA, $C5, $9D, $38, $03 ; CPU:$8540 PRG:4540 A9 01 85 96 A5 96 D0 0E A0 08 B9 BA C5 9D 38 03 - .byte $E8, $C8, $C0, $10, $90, $F4, $A9, $00, $9D, $38, $03, $A5, $5A, $0A, $AA, $BD ; CPU:$8550 PRG:4550 E8 C8 C0 10 90 F4 A9 00 9D 38 03 A5 5A 0A AA BD - .byte $5C, $F4, $85, $39, $BD, $5D, $F4, $85, $3A, $A5, $5C, $0A, $AA, $BD, $5C, $F4 ; CPU:$8560 PRG:4560 5C F4 85 39 BD 5D F4 85 3A A5 5C 0A AA BD 5C F4 - .byte $85, $3B, $BD, $5D, $F4, $85, $3C, $A6, $5B, $BD, $75, $F8, $85, $35, $A6, $5D ; CPU:$8570 PRG:4570 85 3B BD 5D F4 85 3C A6 5B BD 75 F8 85 35 A6 5D - .byte $BD, $75, $F8, $85, $CB, $A9, $00, $85, $6C, $A5, $71, $C9, $02, $F0, $10, $A9 ; CPU:$8580 PRG:4580 BD 75 F8 85 CB A9 00 85 6C A5 71 C9 02 F0 10 A9 - .byte $00, $85, $6A, $AD, $E5, $05, $F0, $06, $20, $B7, $C6, $20, $4F, $BB, $60, $E6 ; CPU:$8590 PRG:4590 00 85 6A AD E5 05 F0 06 20 B7 C6 20 4F BB 60 E6 - .byte $6A, $60, $A6, $37, $A0, $00, $B9, $CA, $C5, $9D, $38, $03, $E8, $C8, $C0, $08 ; CPU:$85A0 PRG:45A0 6A 60 A6 37 A0 00 B9 CA C5 9D 38 03 E8 C8 C0 08 - .byte $90, $F4, $A9, $00, $9D, $38, $03, $86, $37, $60, $67, $21, $25, $F8, $D9, $23 ; CPU:$85B0 PRG:45B0 90 F4 A9 00 9D 38 03 86 37 60 67 21 25 F8 D9 23 - .byte $20, $F8, $75, $21, $25, $F8, $DD, $23, $20, $F8, $55, $21, $25, $F8, $DD, $23 ; CPU:$85C0 PRG:45C0 20 F8 75 21 25 F8 DD 23 20 F8 55 21 25 F8 DD 23 - .byte $20, $F8, $A9, $03, $8D, $C6, $05, $A9, $01, $8D, $C7, $05, $A4, $5A, $B9, $D7 ; CPU:$85D0 PRG:45D0 20 F8 A9 03 8D C6 05 A9 01 8D C7 05 A4 5A B9 D7 - .byte $F1, $8D, $C8, $05, $A9, $D4, $8D, $C9, $05, $A4, $5B, $B9, $D7, $F1, $8D, $CA ; CPU:$85E0 PRG:45E0 F1 8D C8 05 A9 D4 8D C9 05 A4 5B B9 D7 F1 8D CA - .byte $05, $AD, $D4, $C6, $85, $17, $AD, $D5, $C6, $85, $18, $4C, $A7, $85, $A9, $03 ; CPU:$85F0 PRG:45F0 05 AD D4 C6 85 17 AD D5 C6 85 18 4C A7 85 A9 03 - .byte $8D, $CB, $05, $A9, $01, $8D, $CC, $05, $A4, $5C, $B9, $D7, $F1, $8D, $CD, $05 ; CPU:$8600 PRG:4600 8D CB 05 A9 01 8D CC 05 A4 5C B9 D7 F1 8D CD 05 - .byte $A9, $D4, $8D, $CE, $05, $A4, $5D, $B9, $D7, $F1, $8D, $CF, $05, $AD, $D6, $C6 ; CPU:$8610 PRG:4610 A9 D4 8D CE 05 A4 5D B9 D7 F1 8D CF 05 AD D6 C6 - .byte $85, $17, $AD, $D7, $C6, $85, $18, $4C, $A7, $85, $A9, $00, $8D, $00, $20, $A5 ; CPU:$8620 PRG:4620 85 17 AD D7 C6 85 18 4C A7 85 A9 00 8D 00 20 A5 - .byte $02, $29, $E7, $8D, $01, $20, $85, $02, $20, $88, $81, $A6, $6F, $BD, $B5, $C6 ; CPU:$8630 PRG:4630 02 29 E7 8D 01 20 85 02 20 88 81 A6 6F BD B5 C6 - .byte $85, $2E, $A9, $00, $20, $04, $80, $A5, $6F, $0A, $AA, $BD, $A7, $F6, $85, $11 ; CPU:$8640 PRG:4640 85 2E A9 00 20 04 80 A5 6F 0A AA BD A7 F6 85 11 - .byte $BD, $A8, $F6, $85, $12, $20, $8C, $84, $A6, $72, $A5, $6F, $D0, $13, $AD, $02 ; CPU:$8650 PRG:4650 BD A8 F6 85 12 20 8C 84 A6 72 A5 6F D0 13 AD 02 - .byte $20, $A9, $21, $8D, $06, $20, $A9, $3C, $8D, $06, $20, $BD, $D6, $F1, $8D, $07 ; CPU:$8660 PRG:4660 20 A9 21 8D 06 20 A9 3C 8D 06 20 BD D6 F1 8D 07 - .byte $20, $BD, $75, $F8, $85, $35, $A6, $5D, $BD, $75, $F8, $85, $CB, $A9, $00, $85 ; CPU:$8670 PRG:4670 20 BD 75 F8 85 35 A6 5D BD 75 F8 85 CB A9 00 85 - .byte $4B, $A9, $04, $85, $4C, $A5, $71, $F0, $0B, $A2, $00, $8A, $9D, $DA, $05, $E8 ; CPU:$8680 PRG:4680 4B A9 04 85 4C A5 71 F0 0B A2 00 8A 9D DA 05 E8 - .byte $E0, $05, $90, $F7, $E6, $6A, $60, $FF, $24, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8690 PRG:4690 E0 05 90 F7 E6 6A 60 FF 24 21 22 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$86A0 PRG:46A0 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $10, $11, $A9, $00, $AA, $95, $5E, $E8, $E0, $0C, $90 ; CPU:$86B0 PRG:46B0 22 21 22 21 22 10 11 A9 00 AA 95 5E E8 E0 0C 90 - .byte $F9, $A2, $00, $9D, $00, $04, $E8, $E0, $70, $90, $F8, $A9, $FF, $85, $65, $60 ; CPU:$86C0 PRG:46C0 F9 A2 00 9D 00 04 E8 E0 70 90 F8 A9 FF 85 65 60 - .byte $37, $F8, $1B, $F8, $C6, $05, $CB, $05, $A5, $6C, $20, $73, $81, $E9, $C6, $24 ; CPU:$86D0 PRG:46D0 37 F8 1B F8 C6 05 CB 05 A5 6C 20 73 81 E9 C6 24 - .byte $C7, $7E, $C7, $3B, $B2, $7C, $B2, $D6, $B2, $A5, $95, $F0, $05, $A9, $03, $85 ; CPU:$86E0 PRG:46E0 C7 7E C7 3B B2 7C B2 D6 B2 A5 95 F0 05 A9 03 85 - .byte $6C, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5B, $0A, $0A, $0A, $18, $65 ; CPU:$86F0 PRG:46F0 6C 60 20 52 85 29 06 85 20 A5 5B 0A 0A 0A 18 65 - .byte $20, $AA, $BD, $BD, $F8, $85, $4E, $BD, $BE, $F8, $85, $4F, $A9, $00, $85, $56 ; CPU:$8700 PRG:4700 20 AA BD BD F8 85 4E BD BE F8 85 4F A9 00 85 56 - .byte $85, $58, $E6, $6C, $A9, $00, $85, $34, $A2, $00, $8A, $9D, $DA, $05, $E8, $E0 ; CPU:$8710 PRG:4710 85 58 E6 6C A9 00 85 34 A2 00 8A 9D DA 05 E8 E0 - .byte $05, $90, $F7, $60, $A5, $31, $6A, $B0, $01, $60, $A6, $56, $A4, $58, $B1, $4E ; CPU:$8720 PRG:4720 05 90 F7 60 A5 31 6A B0 01 60 A6 56 A4 58 B1 4E - .byte $F0, $33, $9D, $00, $04, $85, $1B, $8A, $20, $BF, $84, $A5, $1B, $10, $0E, $A9 ; CPU:$8730 PRG:4730 F0 33 9D 00 04 85 1B 8A 20 BF 84 A5 1B 10 0E A9 - .byte $0D, $85, $17, $A9, $F3, $85, $18, $A9, $01, $85, $1B, $D0, $0C, $0A, $AA, $BD ; CPU:$8740 PRG:4740 0D 85 17 A9 F3 85 18 A9 01 85 1B D0 0C 0A AA BD - .byte $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3, $84, $E6 ; CPU:$8750 PRG:4750 9E F2 85 17 BD 9F F2 85 18 20 8A 85 20 E3 84 E6 - .byte $58, $E6, $56, $10, $C5, $A6, $36, $A9, $00, $9D, $00, $03, $E6, $58, $A5, $56 ; CPU:$8760 PRG:4760 58 E6 56 10 C5 A6 36 A9 00 9D 00 03 E6 58 A5 56 - .byte $29, $F0, $18, $69, $10, $85, $56, $C9, $70, $90, $02, $E6, $6C, $60, $A5, $31 ; CPU:$8770 PRG:4770 29 F0 18 69 10 85 56 C9 70 90 02 E6 6C 60 A5 31 - .byte $6A, $B0, $01, $60, $A5, $5B, $85, $5E, $A6, $5A, $86, $5F, $BD, $5A, $D4, $85 ; CPU:$8780 PRG:4780 6A B0 01 60 A5 5B 85 5E A6 5A 86 5F BD 5A D4 85 - .byte $1B, $20, $86, $D4, $A6, $5B, $F0, $18, $86, $21, $20, $AF, $D4, $20, $8A, $85 ; CPU:$8790 PRG:4790 1B 20 86 D4 A6 5B F0 18 86 21 20 AF D4 20 8A 85 - .byte $20, $E3, $84, $C6, $21, $A6, $21, $D0, $F1, $A6, $36, $A9, $00, $9D, $00, $03 ; CPU:$87A0 PRG:47A0 20 E3 84 C6 21 A6 21 D0 F1 A6 36 A9 00 9D 00 03 - .byte $A5, $5B, $18, $69, $07, $85, $11, $A9, $00, $85, $12, $20, $5D, $85, $A6, $6F ; CPU:$87B0 PRG:47B0 A5 5B 18 69 07 85 11 A9 00 85 12 20 5D 85 A6 6F - .byte $BD, $E8, $C7, $8D, $88, $03, $A9, $1C, $8D, $98, $03, $A2, $30, $BD, $00, $04 ; CPU:$87C0 PRG:47C0 BD E8 C7 8D 88 03 A9 1C 8D 98 03 A2 30 BD 00 04 - .byte $09, $40, $9D, $00, $04, $86, $65, $E6, $6C, $E6, $5E, $A5, $6F, $D0, $08, $A9 ; CPU:$87D0 PRG:47D0 09 40 9D 00 04 86 65 E6 6C E6 5E A5 6F D0 08 A9 - .byte $00, $85, $6C, $85, $6A, $85, $58, $60, $54, $38, $A5, $69, $D0, $11, $A6, $5F ; CPU:$87E0 PRG:47E0 00 85 6C 85 6A 85 58 60 54 38 A5 69 D0 11 A6 5F - .byte $CA, $30, $0C, $A5, $26, $A8, $C9, $84, $F0, $06, $98, $C9, $44, $F0, $01, $60 ; CPU:$87F0 PRG:47F0 CA 30 0C A5 26 A8 C9 84 F0 06 98 C9 44 F0 01 60 - .byte $A5, $64, $F0, $09, $AD, $58, $03, $F0, $14, $A9, $00, $85, $64, $A6, $65, $30 ; CPU:$8800 PRG:4800 A5 64 F0 09 AD 58 03 F0 14 A9 00 85 64 A6 65 30 - .byte $0C, $BD, $00, $04, $29, $BF, $9D, $00, $04, $A9, $FF, $85, $65, $A9, $01, $85 ; CPU:$8810 PRG:4810 0C BD 00 04 29 BF 9D 00 04 A9 FF 85 65 A9 01 85 - .byte $69, $A9, $00, $85, $68, $A9, $06, $85, $11, $A9, $00, $85, $12, $20, $5D, $85 ; CPU:$8820 PRG:4820 69 A9 00 85 68 A9 06 85 11 A9 00 85 12 20 5D 85 - .byte $A5, $6F, $F0, $05, $A9, $28, $8D, $88, $03, $60, $A5, $31, $6A, $B0, $01, $60 ; CPU:$8830 PRG:4830 A5 6F F0 05 A9 28 8D 88 03 60 A5 31 6A B0 01 60 - .byte $A5, $68, $20, $73, $81, $53, $C8, $73, $C8, $16, $C9, $EE, $D4, $7A, $C9, $EE ; CPU:$8840 PRG:4840 A5 68 20 73 81 53 C8 73 C8 16 C9 EE D4 7A C9 EE - .byte $D4, $DB, $C9, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A9, $06, $8D ; CPU:$8850 PRG:4850 D4 DB C9 A9 03 20 04 80 A9 01 8D DD 00 A9 06 8D - .byte $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $E6, $68, $A9, $F0 ; CPU:$8860 PRG:4860 DE 00 A9 05 20 04 80 A9 00 8D DD 00 E6 68 A9 F0 - .byte $85, $56, $60, $C6, $56, $D0, $0A, $20, $B6, $C8, $E6, $68, $A9, $00, $85, $56 ; CPU:$8870 PRG:4870 85 56 60 C6 56 D0 0A 20 B6 C8 E6 68 A9 00 85 56 - .byte $60, $A5, $31, $29, $04, $F0, $03, $4C, $B6, $C8, $A9, $23, $85, $1A, $A9, $C0 ; CPU:$8880 PRG:4880 60 A5 31 29 04 F0 03 4C B6 C8 A9 23 85 1A A9 C0 - .byte $85, $19, $A5, $6F, $D0, $02, $E6, $19, $A9, $B7, $85, $17, $A9, $F8, $85, $18 ; CPU:$8890 PRG:4890 85 19 A5 6F D0 02 E6 19 A9 B7 85 17 A9 F8 85 18 - .byte $20, $A7, $85, $A5, $19, $18, $69, $08, $85, $19, $C9, $F0, $90, $F2, $A6, $37 ; CPU:$88A0 PRG:48A0 20 A7 85 A5 19 18 69 08 85 19 C9 F0 90 F2 A6 37 - .byte $A9, $00, $9D, $38, $03, $60, $A9, $68, $85, $17, $A9, $05, $85, $18, $A9, $23 ; CPU:$88B0 PRG:48B0 A9 00 9D 38 03 60 A9 68 85 17 A9 05 85 18 A9 23 - .byte $85, $1A, $A9, $C0, $85, $19, $A0, $00, $84, $21, $A5, $6F, $D0, $04, $E6, $19 ; CPU:$88C0 PRG:48C0 85 1A A9 C0 85 19 A0 00 84 21 A5 6F D0 04 E6 19 - .byte $E6, $21, $A9, $04, $99, $68, $05, $A9, $01, $C8, $99, $68, $05, $C8, $A9, $04 ; CPU:$88D0 PRG:48D0 E6 21 A9 04 99 68 05 A9 01 C8 99 68 05 C8 A9 04 - .byte $85, $1F, $A6, $21, $BD, $E2, $04, $99, $68, $05, $C8, $E8, $C6, $1F, $D0, $F4 ; CPU:$88E0 PRG:48E0 85 1F A6 21 BD E2 04 99 68 05 C8 E8 C6 1F D0 F4 - .byte $20, $A7, $85, $A5, $17, $18, $69, $06, $85, $17, $90, $02, $E6, $18, $A5, $21 ; CPU:$88F0 PRG:48F0 20 A7 85 A5 17 18 69 06 85 17 90 02 E6 18 A5 21 - .byte $18, $69, $08, $85, $21, $18, $69, $C0, $85, $19, $C9, $F0, $90, $C4, $A6, $37 ; CPU:$8900 PRG:4900 18 69 08 85 21 18 69 C0 85 19 C9 F0 90 C4 A6 37 - .byte $A9, $00, $9D, $38, $03, $60, $A5, $56, $AA, $A8, $BD, $00, $04, $30, $04, $99 ; CPU:$8910 PRG:4910 A9 00 9D 38 03 60 A5 56 AA A8 BD 00 04 30 04 99 - .byte $00, $04, $C8, $E8, $BD, $00, $04, $D0, $F4, $86, $21, $A9, $00, $99, $00, $04 ; CPU:$8920 PRG:4920 00 04 C8 E8 BD 00 04 D0 F4 86 21 A9 00 99 00 04 - .byte $C8, $C4, $21, $90, $F8, $A6, $56, $86, $24, $A6, $24, $BD, $00, $04, $29, $07 ; CPU:$8930 PRG:4930 C8 C4 21 90 F8 A6 56 86 24 A6 24 BD 00 04 29 07 - .byte $85, $1B, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $A5, $24 ; CPU:$8940 PRG:4940 85 1B 0A AA BD 9E F2 85 17 BD 9F F2 85 18 A5 24 - .byte $20, $BF, $84, $20, $8A, $85, $20, $E3, $84, $E6, $24, $A6, $24, $E4, $21, $90 ; CPU:$8950 PRG:4950 20 BF 84 20 8A 85 20 E3 84 E6 24 A6 24 E4 21 90 - .byte $DA, $A6, $36, $A9, $00, $9D, $00, $03, $A5, $56, $18, $69, $10, $85, $56, $C9 ; CPU:$8960 PRG:4960 DA A6 36 A9 00 9D 00 03 A5 56 18 69 10 85 56 C9 - .byte $70, $90, $06, $E6, $68, $A9, $00, $85, $61, $60, $A9, $08, $85, $1F, $20, $52 ; CPU:$8970 PRG:4970 70 90 06 E6 68 A9 00 85 61 60 A9 08 85 1F 20 52 - .byte $85, $A5, $3D, $2A, $2A, $29, $7F, $C9, $70, $B0, $30, $AA, $BD, $00, $04, $29 ; CPU:$8980 PRG:4980 85 A5 3D 2A 2A 29 7F C9 70 B0 30 AA BD 00 04 29 - .byte $07, $F0, $28, $86, $21, $20, $52, $85, $A5, $3D, $29, $03, $A8, $C8, $84, $1B ; CPU:$8990 PRG:4990 07 F0 28 86 21 20 52 85 A5 3D 29 03 A8 C8 84 1B - .byte $98, $9D, $00, $04, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18 ; CPU:$89A0 PRG:49A0 98 9D 00 04 0A AA BD 9E F2 85 17 BD 9F F2 85 18 - .byte $A5, $21, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84, $C6, $1F, $D0, $BF, $A6 ; CPU:$89B0 PRG:49B0 A5 21 20 BF 84 20 8A 85 20 E3 84 C6 1F D0 BF A6 - .byte $36, $A9, $00, $9D, $00, $03, $CE, $98, $03, $CE, $98, $03, $AD, $98, $03, $C9 ; CPU:$89C0 PRG:49C0 36 A9 00 9D 00 03 CE 98 03 CE 98 03 AD 98 03 C9 - .byte $F8, $90, $07, $E6, $68, $A9, $00, $8D, $58, $03, $60, $A9, $00, $85, $69, $85 ; CPU:$89D0 PRG:49D0 F8 90 07 E6 68 A9 00 8D 58 03 60 A9 00 85 69 85 - .byte $68, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A5, $73, $8D, $DE, $00 ; CPU:$89E0 PRG:49E0 68 A9 03 20 04 80 A9 01 8D DD 00 A5 73 8D DE 00 - .byte $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $C6, $5F, $D0, $0B, $A5, $5E ; CPU:$89F0 PRG:49F0 A9 05 20 04 80 A9 00 8D DD 00 C6 5F D0 0B A5 5E - .byte $D0, $07, $20, $86, $D4, $A9, $00, $F0, $2A, $A5, $5F, $29, $03, $AA, $A5, $5E ; CPU:$8A00 PRG:4A00 D0 07 20 86 D4 A9 00 F0 2A A5 5F 29 03 AA A5 5E - .byte $D0, $03, $CA, $C6, $5F, $BD, $5A, $D4, $85, $1B, $A9, $05, $85, $21, $A5, $5E ; CPU:$8A10 PRG:4A10 D0 03 CA C6 5F BD 5A D4 85 1B A9 05 85 21 A5 5E - .byte $C5, $21, $B0, $0F, $A6, $21, $20, $AF, $D4, $20, $8A, $85, $20, $E3, $84, $C6 ; CPU:$8A20 PRG:4A20 C5 21 B0 0F A6 21 20 AF D4 20 8A 85 20 E3 84 C6 - .byte $21, $D0, $EB, $A6, $36, $A9, $00, $9D, $00, $03, $A5, $5E, $D0, $02, $E6, $5F ; CPU:$8A30 PRG:4A30 21 D0 EB A6 36 A9 00 9D 00 03 A5 5E D0 02 E6 5F - .byte $60, $A5, $61, $20, $73, $81, $50, $CA, $76, $CA, $86, $CA, $AD, $CA, $07, $CB ; CPU:$8A40 PRG:4A40 60 A5 61 20 73 81 50 CA 76 CA 86 CA AD CA 07 CB - .byte $A9, $FF, $85, $65, $A5, $6F, $D0, $03, $20, $57, $CB, $A5, $5A, $0A, $AA, $BD ; CPU:$8A50 PRG:4A50 A9 FF 85 65 A5 6F D0 03 20 57 CB A5 5A 0A AA BD - .byte $5C, $F4, $85, $39, $BD, $5D, $F4, $85, $3A, $A6, $5B, $BD, $75, $F8, $85, $35 ; CPU:$8A60 PRG:4A60 5C F4 85 39 BD 5D F4 85 3A A6 5B BD 75 F8 85 35 - .byte $20, $59, $CD, $E6, $61, $60, $A5, $71, $C9, $02, $F0, $07, $A9, $00, $85, $61 ; CPU:$8A70 PRG:4A70 20 59 CD E6 61 60 A5 71 C9 02 F0 07 A9 00 85 61 - .byte $85, $60, $60, $E6, $61, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5B, $0A ; CPU:$8A80 PRG:4A80 85 60 60 E6 61 60 20 52 85 29 06 85 20 A5 5B 0A - .byte $0A, $0A, $18, $65, $20, $AA, $BD, $BD, $F8, $85, $4E, $BD, $BE, $F8, $85, $4F ; CPU:$8A90 PRG:4A90 0A 0A 18 65 20 AA BD BD F8 85 4E BD BE F8 85 4F - .byte $A9, $00, $85, $56, $85, $58, $E6, $61, $A9, $00, $85, $34, $60, $A5, $31, $6A ; CPU:$8AA0 PRG:4AA0 A9 00 85 56 85 58 E6 61 A9 00 85 34 60 A5 31 6A - .byte $B0, $01, $60, $A6, $56, $A4, $58, $B1, $4E, $F0, $33, $9D, $00, $04, $85, $1B ; CPU:$8AB0 PRG:4AB0 B0 01 60 A6 56 A4 58 B1 4E F0 33 9D 00 04 85 1B - .byte $8A, $20, $BF, $84, $A5, $1B, $10, $0E, $A9, $0D, $85, $17, $A9, $F3, $85, $18 ; CPU:$8AC0 PRG:4AC0 8A 20 BF 84 A5 1B 10 0E A9 0D 85 17 A9 F3 85 18 - .byte $A9, $01, $85, $1B, $D0, $0C, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2 ; CPU:$8AD0 PRG:4AD0 A9 01 85 1B D0 0C 0A AA BD 9E F2 85 17 BD 9F F2 - .byte $85, $18, $20, $8A, $85, $20, $E3, $84, $E6, $58, $E6, $56, $10, $C5, $A6, $36 ; CPU:$8AE0 PRG:4AE0 85 18 20 8A 85 20 E3 84 E6 58 E6 56 10 C5 A6 36 - .byte $A9, $00, $9D, $00, $03, $E6, $58, $A5, $56, $29, $F0, $18, $69, $10, $85, $56 ; CPU:$8AF0 PRG:4AF0 A9 00 9D 00 03 E6 58 A5 56 29 F0 18 69 10 85 56 - .byte $C9, $70, $90, $02, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A5, $5B, $85 ; CPU:$8B00 PRG:4B00 C9 70 90 02 E6 61 60 A5 31 6A B0 01 60 A5 5B 85 - .byte $5E, $A6, $5A, $86, $5F, $BD, $5A, $D4, $85, $1B, $20, $86, $D4, $A6, $5B, $F0 ; CPU:$8B10 PRG:4B10 5E A6 5A 86 5F BD 5A D4 85 1B 20 86 D4 A6 5B F0 - .byte $18, $86, $21, $20, $AF, $D4, $20, $8A, $85, $20, $E3, $84, $C6, $21, $A6, $21 ; CPU:$8B20 PRG:4B20 18 86 21 20 AF D4 20 8A 85 20 E3 84 C6 21 A6 21 - .byte $D0, $F1, $A6, $36, $A9, $00, $9D, $00, $03, $20, $A8, $CB, $A2, $30, $BD, $00 ; CPU:$8B30 PRG:4B30 D0 F1 A6 36 A9 00 9D 00 03 20 A8 CB A2 30 BD 00 - .byte $04, $09, $40, $9D, $00, $04, $86, $65, $E6, $6C, $E6, $5E, $A9, $00, $85, $61 ; CPU:$8B40 PRG:4B40 04 09 40 9D 00 04 86 65 E6 6C E6 5E A9 00 85 61 - .byte $85, $58, $A9, $00, $85, $60, $60, $A9, $20, $85, $1F, $A0, $00, $A6, $36, $B9 ; CPU:$8B50 PRG:4B50 85 58 A9 00 85 60 60 A9 20 85 1F A0 00 A6 36 B9 - .byte $85, $CB, $9D, $00, $03, $E8, $C8, $C6, $1F, $D0, $F4, $A9, $00, $9D, $00, $03 ; CPU:$8B60 PRG:4B60 85 CB 9D 00 03 E8 C8 C6 1F D0 F4 A9 00 9D 00 03 - .byte $86, $36, $A0, $00, $A6, $38, $B9, $A5, $CB, $9D, $B8, $03, $E8, $C8, $C0, $03 ; CPU:$8B70 PRG:4B70 86 36 A0 00 A6 38 B9 A5 CB 9D B8 03 E8 C8 C0 03 - .byte $90, $F4, $86, $38, $60, $7A, $22, $A8, $F2, $98, $22, $A8, $F2, $B6, $22, $A8 ; CPU:$8B80 PRG:4B80 90 F4 86 38 60 7A 22 A8 F2 98 22 A8 F2 B6 22 A8 - .byte $F2, $BA, $22, $A8, $F2, $F6, $22, $A8, $F2, $D8, $22, $A8, $F2, $FA, $22, $A8 ; CPU:$8B90 PRG:4B90 F2 BA 22 A8 F2 F6 22 A8 F2 D8 22 A8 F2 FA 22 A8 - .byte $F2, $18, $23, $A8, $F2, $E6, $55, $00, $A5, $5B, $18, $69, $07, $85, $11, $A9 ; CPU:$8BA0 PRG:4BA0 F2 18 23 A8 F2 E6 55 00 A5 5B 18 69 07 85 11 A9 - .byte $00, $85, $12, $20, $5D, $85, $A6, $6F, $BD, $E8, $C7, $8D, $88, $03, $A9, $1C ; CPU:$8BB0 PRG:4BB0 00 85 12 20 5D 85 A6 6F BD E8 C7 8D 88 03 A9 1C - .byte $8D, $98, $03, $60, $A5, $60, $8D, $E9, $05, $A5, $69, $F0, $0C, $A5, $60, $D0 ; CPU:$8BC0 PRG:4BC0 8D 98 03 60 A5 60 8D E9 05 A5 69 F0 0C A5 60 D0 - .byte $08, $20, $3A, $C8, $A9, $00, $85, $60, $60, $A5, $71, $C9, $02, $F0, $09, $A5 ; CPU:$8BD0 PRG:4BD0 08 20 3A C8 A9 00 85 60 60 A5 71 C9 02 F0 09 A5 - .byte $60, $C9, $07, $B0, $03, $20, $EA, $C7, $A5, $65, $30, $0C, $A5, $71, $C9, $02 ; CPU:$8BE0 PRG:4BE0 60 C9 07 B0 03 20 EA C7 A5 65 30 0C A5 71 C9 02 - .byte $F0, $06, $A5, $31, $D0, $02, $E6, $67, $A5, $60, $20, $73, $81, $11, $CC, $56 ; CPU:$8BF0 PRG:4BF0 F0 06 A5 31 D0 02 E6 67 A5 60 20 73 81 11 CC 56 - .byte $CC, $CF, $CC, $17, $BF, $6F, $C1, $18, $CD, $32, $CF, $A8, $CF, $9A, $BF, $41 ; CPU:$8C00 PRG:4C00 CC CF CC 17 BF 6F C1 18 CD 32 CF A8 CF 9A BF 41 - .byte $CA, $A9, $01, $85, $33, $A2, $00, $A5, $6F, $F0, $02, $A2, $03, $BD, $50, $CC ; CPU:$8C10 PRG:4C10 CA A9 01 85 33 A2 00 A5 6F F0 02 A2 03 BD 50 CC - .byte $85, $49, $BD, $51, $CC, $85, $4A, $BD, $52, $CC, $85, $4D, $E6, $60, $A9, $00 ; CPU:$8C20 PRG:4C20 85 49 BD 51 CC 85 4A BD 52 CC 85 4D E6 60 A9 00 - .byte $85, $56, $85, $48, $85, $37, $85, $36, $A9, $08, $85, $40, $20, $B6, $CD, $A5 ; CPU:$8C30 PRG:4C30 85 56 85 48 85 37 85 36 A9 08 85 40 20 B6 CD A5 - .byte $66, $C9, $05, $D0, $03, $20, $40, $C1, $20, $59, $CD, $A9, $88, $85, $01, $60 ; CPU:$8C40 PRG:4C40 66 C9 05 D0 03 20 40 C1 20 59 CD A9 88 85 01 60 - .byte $40, $CE, $2B, $24, $CE, $2B, $A5, $6F, $D0, $0E, $A5, $CD, $F0, $0A, $A5, $4A ; CPU:$8C50 PRG:4C50 40 CE 2B 24 CE 2B A5 6F D0 0E A5 CD F0 0A A5 4A - .byte $C9, $B0, $B0, $04, $20, $8B, $CE, $60, $20, $FA, $BB, $A5, $2A, $29, $C0, $F0 ; CPU:$8C60 PRG:4C60 C9 B0 B0 04 20 8B CE 60 20 FA BB A5 2A 29 C0 F0 - .byte $1A, $A9, $01, $8D, $E3, $00, $A9, $03, $8D, $E2, $00, $A5, $2A, $29, $80, $F0 ; CPU:$8C70 PRG:4C70 1A A9 01 8D E3 00 A9 03 8D E2 00 A5 2A 29 80 F0 - .byte $05, $A9, $02, $8D, $E2, $00, $A9, $04, $20, $04, $80, $AD, $A4, $05, $F0, $03 ; CPU:$8C80 PRG:4C80 05 A9 02 8D E2 00 A9 04 20 04 80 AD A4 05 F0 03 - .byte $20, $0D, $CE, $A6, $64, $F0, $25, $AD, $58, $03, $C9, $07, $90, $1F, $BD, $89 ; CPU:$8C90 PRG:4C90 20 0D CE A6 64 F0 25 AD 58 03 C9 07 90 1F BD 89 - .byte $03, $8D, $88, $03, $BD, $99, $03, $8D, $98, $03, $A9, $04, $18, $6D, $88, $03 ; CPU:$8CA0 PRG:4CA0 03 8D 88 03 BD 99 03 8D 98 03 A9 04 18 6D 88 03 - .byte $8D, $88, $03, $A9, $04, $18, $6D, $98, $03, $8D, $98, $03, $60, $A5, $31, $6A ; CPU:$8CB0 PRG:4CB0 8D 88 03 A9 04 18 6D 98 03 8D 98 03 60 A5 31 6A - .byte $29, $03, $85, $20, $AD, $AA, $03, $29, $FC, $05, $20, $8D, $AA, $03, $60, $A5 ; CPU:$8CC0 PRG:4CC0 29 03 85 20 AD AA 03 29 FC 05 20 8D AA 03 60 A5 - .byte $31, $6A, $B0, $01, $60, $A5, $6F, $D0, $03, $20, $8B, $CE, $20, $E4, $BE, $20 ; CPU:$8CD0 PRG:4CD0 31 6A B0 01 60 A5 6F D0 03 20 8B CE 20 E4 BE 20 - .byte $F0, $CD, $A5, $64, $F0, $1C, $AD, $58, $03, $C9, $07, $90, $15, $A6, $64, $B5 ; CPU:$8CE0 PRG:4CE0 F0 CD A5 64 F0 1C AD 58 03 C9 07 90 15 A6 64 B5 - .byte $4D, $85, $65, $AA, $BD, $00, $04, $09, $40, $9D, $00, $04, $A9, $00, $85, $64 ; CPU:$8CF0 PRG:4CF0 4D 85 65 AA BD 00 04 09 40 9D 00 04 A9 00 85 64 - .byte $85, $67, $E6, $60, $A9, $01, $8D, $E3, $00, $A9, $00, $8D, $E2, $00, $A9, $04 ; CPU:$8D00 PRG:4D00 85 67 E6 60 A9 01 8D E3 00 A9 00 8D E2 00 A9 04 - .byte $20, $04, $80, $A9, $00, $85, $61, $60, $20, $EE, $D4, $60, $A6, $CC, $A9, $04 ; CPU:$8D10 PRG:4D10 20 04 80 A9 00 85 61 60 20 EE D4 60 A6 CC A9 04 - .byte $85, $1F, $A5, $48, $0A, $0A, $A8, $B1, $46, $85, $1B, $29, $F0, $85, $1C, $18 ; CPU:$8D20 PRG:4D20 85 1F A5 48 0A 0A A8 B1 46 85 1B 29 F0 85 1C 18 - .byte $65, $49, $9D, $88, $03, $A5, $1B, $29, $0F, $0A, $0A, $0A, $0A, $18, $65, $4A ; CPU:$8D30 PRG:4D30 65 49 9D 88 03 A5 1B 29 0F 0A 0A 0A 0A 18 65 4A - .byte $9D, $98, $03, $A9, $10, $25, $1C, $F0, $09, $BD, $98, $03, $18, $69, $08, $9D ; CPU:$8D40 PRG:4D40 9D 98 03 A9 10 25 1C F0 09 BD 98 03 18 69 08 9D - .byte $98, $03, $E8, $C8, $C6, $1F, $D0, $CF, $60, $A5, $41, $85, $CD, $EE, $E1, $05 ; CPU:$8D50 PRG:4D50 98 03 E8 C8 C6 1F D0 CF 60 A5 41 85 CD EE E1 05 - .byte $AD, $E1, $05, $AC, $E5, $05, $D0, $05, $20, $52, $85, $A5, $3D, $29, $07, $85 ; CPU:$8D60 PRG:4D60 AD E1 05 AC E5 05 D0 05 20 52 85 A5 3D 29 07 85 - .byte $1D, $AD, $E1, $05, $AC, $E5, $05, $D0, $05, $20, $52, $85, $A5, $3D, $29, $7F ; CPU:$8D70 PRG:4D70 1D AD E1 05 AC E5 05 D0 05 20 52 85 A5 3D 29 7F - .byte $A8, $B1, $39, $85, $1B, $6A, $6A, $6A, $29, $0E, $85, $41, $AA, $BD, $8E, $F3 ; CPU:$8D80 PRG:4D80 A8 B1 39 85 1B 6A 6A 6A 29 0E 85 41 AA BD 8E F3 - .byte $85, $19, $BD, $8F, $F3, $85, $1A, $A5, $1B, $29, $0F, $0A, $0A, $A8, $A2, $00 ; CPU:$8D90 PRG:4D90 85 19 BD 8F F3 85 1A A5 1B 29 0F 0A 0A A8 A2 00 - .byte $86, $21, $B1, $19, $18, $65, $1D, $AA, $BD, $81, $F3, $A6, $21, $95, $42, $C8 ; CPU:$8DA0 PRG:4DA0 86 21 B1 19 18 65 1D AA BD 81 F3 A6 21 95 42 C8 - .byte $E8, $E0, $04, $90, $EB, $60, $A6, $41, $BD, $13, $F3, $85, $46, $BD, $14, $F3 ; CPU:$8DB0 PRG:4DB0 E8 E0 04 90 EB 60 A6 41 BD 13 F3 85 46 BD 14 F3 - .byte $85, $47, $A2, $00, $A9, $02, $85, $12, $86, $21, $B5, $42, $95, $52, $85, $11 ; CPU:$8DC0 PRG:4DC0 85 47 A2 00 A9 02 85 12 86 21 B5 42 95 52 85 11 - .byte $20, $5D, $85, $E6, $12, $A6, $21, $E8, $E0, $04, $90, $EC, $A9, $02, $85, $CC ; CPU:$8DD0 PRG:4DD0 20 5D 85 E6 12 A6 21 E8 E0 04 90 EC A9 02 85 CC - .byte $A0, $00, $B1, $46, $18, $65, $4D, $99, $4E, $00, $C8, $C0, $04, $90, $F3, $60 ; CPU:$8DE0 PRG:4DE0 A0 00 B1 46 18 65 4D 99 4E 00 C8 C0 04 90 F3 60 - .byte $A9, $00, $85, $11, $A9, $02, $85, $12, $AD, $5A, $03, $C9, $05, $D0, $02, $E6 ; CPU:$8DF0 PRG:4DF0 A9 00 85 11 A9 02 85 12 AD 5A 03 C9 05 D0 02 E6 - .byte $12, $20, $5D, $85, $E6, $12, $A5, $12, $C9, $06, $90, $F5, $60, $A5, $31, $6A ; CPU:$8E00 PRG:4E00 12 20 5D 85 E6 12 A5 12 C9 06 90 F5 60 A5 31 6A - .byte $B0, $01, $60, $AD, $A4, $05, $AA, $29, $0F, $18, $6D, $B5, $05, $8D, $B5, $05 ; CPU:$8E10 PRG:4E10 B0 01 60 AD A4 05 AA 29 0F 18 6D B5 05 8D B5 05 - .byte $8A, $6A, $6A, $6A, $6A, $29, $0F, $18, $6D, $B4, $05, $8D, $B4, $05, $A2, $05 ; CPU:$8E20 PRG:4E20 8A 6A 6A 6A 6A 29 0F 18 6D B4 05 8D B4 05 A2 05 - .byte $BD, $B0, $05, $C9, $0A, $90, $0B, $FE, $AF, $05, $18, $69, $06, $29, $0F, $9D ; CPU:$8E30 PRG:4E30 BD B0 05 C9 0A 90 0B FE AF 05 18 69 06 29 0F 9D - .byte $B0, $05, $CA, $D0, $EB, $A9, $06, $8D, $D2, $05, $A9, $01, $8D, $D3, $05, $A2 ; CPU:$8E40 PRG:4E40 B0 05 CA D0 EB A9 06 8D D2 05 A9 01 8D D3 05 A2 - .byte $00, $BD, $B0, $05, $A8, $B9, $D6, $F1, $9D, $D4, $05, $E8, $E0, $06, $90, $F1 ; CPU:$8E50 PRG:4E50 00 BD B0 05 A8 B9 D6 F1 9D D4 05 E8 E0 06 90 F1 - .byte $A5, $6F, $0A, $A8, $A6, $37, $B9, $12, $D4, $9D, $38, $03, $B9, $13, $D4, $9D ; CPU:$8E60 PRG:4E60 A5 6F 0A A8 A6 37 B9 12 D4 9D 38 03 B9 13 D4 9D - .byte $39, $03, $A9, $D2, $9D, $3A, $03, $A9, $05, $9D, $3B, $03, $A9, $00, $9D, $3C ; CPU:$8E70 PRG:4E70 39 03 A9 D2 9D 3A 03 A9 05 9D 3B 03 A9 00 9D 3C - .byte $03, $8D, $A4, $05, $8A, $18, $69, $04, $85, $37, $60, $A5, $31, $6A, $B0, $01 ; CPU:$8E80 PRG:4E80 03 8D A4 05 8A 18 69 04 85 37 60 A5 31 6A B0 01 - .byte $60, $A0, $04, $84, $22, $A5, $CD, $0A, $0A, $A8, $B9, $C5, $CF, $85, $19, $C8 ; CPU:$8E90 PRG:4E90 60 A0 04 84 22 A5 CD 0A 0A A8 B9 C5 CF 85 19 C8 - .byte $B9, $C5, $CF, $85, $1A, $C8, $A6, $36, $A5, $19, $9D, $00, $03, $E8, $A5, $1A ; CPU:$8EA0 PRG:4EA0 B9 C5 CF 85 1A C8 A6 36 A5 19 9D 00 03 E8 A5 1A - .byte $9D, $00, $03, $E8, $A9, $A8, $9D, $00, $03, $E8, $A9, $F2, $9D, $00, $03, $E8 ; CPU:$8EB0 PRG:4EB0 9D 00 03 E8 A9 A8 9D 00 03 E8 A9 F2 9D 00 03 E8 - .byte $86, $36, $C6, $22, $D0, $D4, $A6, $38, $A9, $E6, $9D, $B8, $03, $E8, $A9, $55 ; CPU:$8EC0 PRG:4EC0 86 36 C6 22 D0 D4 A6 38 A9 E6 9D B8 03 E8 A9 55 - .byte $9D, $B8, $03, $E8, $86, $38, $A0, $00, $84, $22, $A5, $41, $0A, $0A, $85, $21 ; CPU:$8ED0 PRG:4ED0 9D B8 03 E8 86 38 A0 00 84 22 A5 41 0A 0A 85 21 - .byte $A6, $21, $BD, $C5, $CF, $85, $19, $E8, $BD, $C5, $CF, $85, $1A, $E8, $86, $21 ; CPU:$8EE0 PRG:4EE0 A6 21 BD C5 CF 85 19 E8 BD C5 CF 85 1A E8 86 21 - .byte $B9, $42, $00, $85, $1B, $E6, $22, $0A, $A8, $B9, $9E, $F2, $85, $17, $B9, $9F ; CPU:$8EF0 PRG:4EF0 B9 42 00 85 1B E6 22 0A A8 B9 9E F2 85 17 B9 9F - .byte $F2, $85, $18, $A6, $36, $A5, $19, $9D, $00, $03, $E8, $A5, $1A, $9D, $00, $03 ; CPU:$8F00 PRG:4F00 F2 85 18 A6 36 A5 19 9D 00 03 E8 A5 1A 9D 00 03 - .byte $E8, $A5, $17, $9D, $00, $03, $E8, $A5, $18, $9D, $00, $03, $E8, $86, $36, $20 ; CPU:$8F10 PRG:4F10 E8 A5 17 9D 00 03 E8 A5 18 9D 00 03 E8 86 36 20 - .byte $E3, $84, $A4, $22, $C0, $04, $90, $B8, $A6, $36, $A9, $00, $9D, $00, $03, $85 ; CPU:$8F20 PRG:4F20 E3 84 A4 22 C0 04 90 B8 A6 36 A9 00 9D 00 03 85 - .byte $CD, $60, $A5, $67, $C9, $08, $90, $15, $A6, $65, $BD, $00, $04, $29, $BF, $9D ; CPU:$8F30 PRG:4F30 CD 60 A5 67 C9 08 90 15 A6 65 BD 00 04 29 BF 9D - .byte $00, $04, $A9, $00, $85, $67, $8D, $58, $03, $A9, $FF, $85, $65, $A2, $0B, $BD ; CPU:$8F40 PRG:4F40 00 04 A9 00 85 67 8D 58 03 A9 FF 85 65 A2 0B BD - .byte $00, $04, $F0, $09, $E6, $60, $E6, $60, $A9, $00, $85, $61, $60, $8A, $18, $69 ; CPU:$8F50 PRG:4F50 00 04 F0 09 E6 60 E6 60 A9 00 85 61 60 8A 18 69 - .byte $10, $AA, $C9, $70, $90, $E9, $A9, $00, $85, $60, $A5, $71, $C9, $02, $F0, $2C ; CPU:$8F60 PRG:4F60 10 AA C9 70 90 E9 A9 00 85 60 A5 71 C9 02 F0 2C - .byte $A5, $69, $D0, $27, $A5, $63, $C9, $1E, $90, $0F, $A9, $00, $85, $63, $E6, $66 ; CPU:$8F70 PRG:4F70 A5 69 D0 27 A5 63 C9 1E 90 0F A9 00 85 63 E6 66 - .byte $A5, $66, $C9, $05, $F0, $03, $20, $F2, $C0, $A5, $62, $C9, $C8, $90, $0C, $A9 ; CPU:$8F80 PRG:4F80 A5 66 C9 05 F0 03 20 F2 C0 A5 62 C9 C8 90 0C A9 - .byte $07, $85, $60, $A9, $00, $85, $61, $A9, $32, $85, $56, $60, $A6, $65, $BD, $00 ; CPU:$8F90 PRG:4F90 07 85 60 A9 00 85 61 A9 32 85 56 60 A6 65 BD 00 - .byte $04, $29, $40, $D0, $F6, $4C, $8F, $CF, $A9, $00, $85, $98, $A5, $6F, $F0, $0C ; CPU:$8FA0 PRG:4FA0 04 29 40 D0 F6 4C 8F CF A9 00 85 98 A5 6F F0 0C - .byte $A5, $96, $D0, $08, $AD, $E8, $05, $C9, $05, $D0, $01, $60, $A9, $09, $85, $6A ; CPU:$8FB0 PRG:4FB0 A5 96 D0 08 AD E8 05 C9 05 D0 01 60 A9 09 85 6A - .byte $A9, $00, $85, $6C, $60, $50, $24, $50, $24, $50, $24, $50, $24, $98, $22, $BA ; CPU:$8FC0 PRG:4FC0 A9 00 85 6C 60 50 24 50 24 50 24 50 24 98 22 BA - .byte $22, $D8, $22, $FA, $22, $D6, $22, $B8, $22, $DA, $22, $F8, $22, $F6, $22, $98 ; CPU:$8FD0 PRG:4FD0 22 D8 22 FA 22 D6 22 B8 22 DA 22 F8 22 F6 22 98 - .byte $22, $D8, $22, $18, $23, $B6, $22, $BA, $22, $D8, $22, $F6, $22, $98, $22, $7A ; CPU:$8FE0 PRG:4FE0 22 D8 22 18 23 B6 22 BA 22 D8 22 F6 22 98 22 7A - .byte $22, $D8, $22, $18, $23, $B6, $22, $D8, $22, $BA, $22, $18, $23, $A0, $00, $A2 ; CPU:$8FF0 PRG:4FF0 22 D8 22 18 23 B6 22 D8 22 BA 22 18 23 A0 00 A2 - .byte $00, $BD, $00, $04, $29, $87, $C5, $20, $F0, $04, $A9, $00, $F0, $07, $C8, $8A ; CPU:$9000 PRG:5000 00 BD 00 04 29 87 C5 20 F0 04 A9 00 F0 07 C8 8A - .byte $99, $22, $05, $A5, $20, $9D, $71, $04, $E8, $E0, $70, $90, $E4, $C0, $00, $D0 ; CPU:$9010 PRG:5010 99 22 05 A5 20 9D 71 04 E8 E0 70 90 E4 C0 00 D0 - .byte $01, $60, $BE, $22, $05, $BD, $71, $04, $F0, $18, $84, $25, $A0, $00, $84, $21 ; CPU:$9020 PRG:5020 01 60 BE 22 05 BD 71 04 F0 18 84 25 A0 00 84 21 - .byte $98, $9D, $71, $04, $8A, $99, $40, $05, $86, $20, $C8, $84, $59, $20, $46, $D0 ; CPU:$9030 PRG:5030 98 9D 71 04 8A 99 40 05 86 20 C8 84 59 20 46 D0 - .byte $A4, $25, $88, $D0, $DD, $60, $A0, $06, $84, $22, $A2, $00, $86, $24, $A4, $22 ; CPU:$9040 PRG:5040 A4 25 88 D0 DD 60 A0 06 84 22 A2 00 86 24 A4 22 - .byte $A5, $20, $29, $10, $F0, $05, $98, $18, $69, $06, $A8, $B9, $7A, $F8, $18, $65 ; CPU:$9050 PRG:5050 A5 20 29 10 F0 05 98 18 69 06 A8 B9 7A F8 18 65 - .byte $20, $AA, $29, $0F, $C9, $0E, $B0, $16, $8A, $29, $F0, $C9, $70, $B0, $0F, $BD ; CPU:$9060 PRG:5060 20 AA 29 0F C9 0E B0 16 8A 29 F0 C9 70 B0 0F BD - .byte $71, $04, $F0, $0A, $86, $23, $E6, $24, $A6, $24, $E0, $02, $B0, $06, $C6, $22 ; CPU:$9070 PRG:5070 71 04 F0 0A 86 23 E6 24 A6 24 E0 02 B0 06 C6 22 - .byte $D0, $CC, $F0, $09, $E6, $21, $A6, $21, $A5, $20, $9D, $59, $05, $A6, $24, $F0 ; CPU:$9080 PRG:5080 D0 CC F0 09 E6 21 A6 21 A5 20 9D 59 05 A6 24 F0 - .byte $14, $A6, $23, $A9, $00, $9D, $71, $04, $A4, $59, $8A, $99, $40, $05, $86, $20 ; CPU:$9090 PRG:5090 14 A6 23 A9 00 9D 71 04 A4 59 8A 99 40 05 86 20 - .byte $E6, $59, $4C, $46, $D0, $A6, $21, $F0, $0A, $BD, $59, $05, $C6, $21, $85, $20 ; CPU:$90A0 PRG:50A0 E6 59 4C 46 D0 A6 21 F0 0A BD 59 05 C6 21 85 20 - .byte $4C, $46, $D0, $A4, $59, $C0, $04, $90, $29, $98, $18, $6D, $A5, $05, $8D, $A5 ; CPU:$90B0 PRG:50B0 4C 46 D0 A4 59 C0 04 90 29 98 18 6D A5 05 8D A5 - .byte $05, $98, $38, $E9, $03, $0A, $0A, $18, $6D, $A6, $05, $8D, $A6, $05, $88, $A6 ; CPU:$90C0 PRG:50C0 05 98 38 E9 03 0A 0A 18 6D A6 05 8D A6 05 88 A6 - .byte $58, $B9, $40, $05, $9D, $68, $05, $E8, $88, $10, $F6, $A9, $FF, $9D, $68, $05 ; CPU:$90D0 PRG:50D0 58 B9 40 05 9D 68 05 E8 88 10 F6 A9 FF 9D 68 05 - .byte $86, $58, $A9, $00, $85, $59, $60, $A5, $31, $6A, $B0, $01, $60, $E6, $56, $A5 ; CPU:$90E0 PRG:50E0 86 58 A9 00 85 59 60 A5 31 6A B0 01 60 E6 56 A5 - .byte $56, $C9, $04, $90, $11, $A9, $00, $85, $56, $85, $59, $E6, $3F, $A5, $3F, $C9 ; CPU:$90F0 PRG:50F0 56 C9 04 90 11 A9 00 85 56 85 59 E6 3F A5 3F C9 - .byte $08, $90, $03, $E6, $61, $60, $A4, $59, $B9, $68, $05, $C9, $FF, $D0, $01, $60 ; CPU:$9100 PRG:5100 08 90 03 E6 61 60 A4 59 B9 68 05 C9 FF D0 01 60 - .byte $A2, $00, $9D, $40, $05, $E8, $C8, $B9, $68, $05, $C9, $FF, $F0, $04, $E0, $0D ; CPU:$9110 PRG:5110 A2 00 9D 40 05 E8 C8 B9 68 05 C9 FF F0 04 E0 0D - .byte $90, $F0, $84, $59, $86, $24, $86, $21, $A2, $00, $86, $36, $A6, $36, $BD, $40 ; CPU:$9120 PRG:5120 90 F0 84 59 86 24 86 21 A2 00 86 36 A6 36 BD 40 - .byte $05, $20, $BF, $84, $A5, $36, $0A, $0A, $A8, $A5, $19, $99, $00, $03, $A5, $1A ; CPU:$9130 PRG:5130 05 20 BF 84 A5 36 0A 0A A8 A5 19 99 00 03 A5 1A - .byte $99, $01, $03, $E6, $36, $C6, $24, $D0, $E3, $A9, $00, $99, $04, $03, $A6, $3F ; CPU:$9140 PRG:5140 99 01 03 E6 36 C6 24 D0 E3 A9 00 99 04 03 A6 3F - .byte $BD, $A8, $D1, $C9, $03, $90, $04, $20, $81, $D1, $60, $20, $5F, $D1, $60, $0A ; CPU:$9150 PRG:5150 BD A8 D1 C9 03 90 04 20 81 D1 60 20 5F D1 60 0A - .byte $AA, $BD, $FB, $F2, $85, $19, $BD, $FC, $F2, $85, $1A, $A2, $00, $8A, $0A, $0A ; CPU:$9160 PRG:5160 AA BD FB F2 85 19 BD FC F2 85 1A A2 00 8A 0A 0A - .byte $A8, $A5, $19, $99, $02, $03, $A5, $1A, $99, $03, $03, $E8, $C6, $21, $10, $ED ; CPU:$9170 PRG:5170 A8 A5 19 99 02 03 A5 1A 99 03 03 E8 C6 21 10 ED - .byte $60, $A2, $00, $BD, $40, $05, $86, $24, $A8, $B9, $00, $04, $29, $07, $0A, $A8 ; CPU:$9180 PRG:5180 60 A2 00 BD 40 05 86 24 A8 B9 00 04 29 07 0A A8 - .byte $8A, $0A, $0A, $AA, $B9, $9E, $F2, $9D, $02, $03, $B9, $9F, $F2, $9D, $03, $03 ; CPU:$9190 PRG:5190 8A 0A 0A AA B9 9E F2 9D 02 03 B9 9F F2 9D 03 03 - .byte $A6, $24, $E8, $C6, $21, $10, $DC, $60, $00, $03, $00, $03, $00, $01, $02, $00 ; CPU:$91A0 PRG:51A0 A6 24 E8 C6 21 10 DC 60 00 03 00 03 00 01 02 00 - .byte $A9, $00, $85, $22, $A9, $FF, $85, $24, $A5, $22, $0A, $0A, $0A, $0A, $AA, $A9 ; CPU:$91B0 PRG:51B0 A9 00 85 22 A9 FF 85 24 A5 22 0A 0A 0A 0A AA A9 - .byte $0E, $85, $1F, $BD, $00, $04, $D0, $30, $86, $58, $8A, $A4, $22, $99, $40, $05 ; CPU:$91C0 PRG:51C0 0E 85 1F BD 00 04 D0 30 86 58 8A A4 22 99 40 05 - .byte $E8, $BD, $00, $04, $F0, $10, $A4, $58, $99, $00, $04, $E6, $58, $A9, $00, $9D ; CPU:$91D0 PRG:51D0 E8 BD 00 04 F0 10 A4 58 99 00 04 E6 58 A9 00 9D - .byte $00, $04, $86, $24, $E6, $24, $E8, $C6, $1F, $D0, $E6, $A4, $22, $A5, $24, $99 ; CPU:$91E0 PRG:51E0 00 04 86 24 E6 24 E8 C6 1F D0 E6 A4 22 A5 24 99 - .byte $22, $05, $A9, $FF, $85, $24, $30, $0C, $E8, $C6, $1F, $D0, $C6, $A4, $22, $A9 ; CPU:$91F0 PRG:51F0 22 05 A9 FF 85 24 30 0C E8 C6 1F D0 C6 A4 22 A9 - .byte $FF, $99, $22, $05, $E6, $22, $A5, $22, $C9, $07, $90, $AC, $A9, $00, $85, $58 ; CPU:$9200 PRG:5200 FF 99 22 05 E6 22 A5 22 C9 07 90 AC A9 00 85 58 - .byte $E6, $61, $A5, $65, $30, $03, $20, $5E, $D4, $60, $A5, $31, $6A, $B0, $01, $60 ; CPU:$9210 PRG:5210 E6 61 A5 65 30 03 20 5E D4 60 A5 31 6A B0 01 60 - .byte $A9, $00, $85, $36, $A9, $08, $85, $1F, $A4, $58, $B9, $22, $05, $10, $12, $E6 ; CPU:$9220 PRG:5220 A9 00 85 36 A9 08 85 1F A4 58 B9 22 05 10 12 E6 - .byte $58, $A4, $58, $C0, $07, $90, $F3, $A9, $00, $A6, $36, $9D, $00, $03, $E6, $61 ; CPU:$9230 PRG:5230 58 A4 58 C0 07 90 F3 A9 00 A6 36 9D 00 03 E6 61 - .byte $60, $85, $24, $B9, $40, $05, $85, $25, $20, $BF, $84, $A6, $36, $A5, $19, $9D ; CPU:$9240 PRG:5240 60 85 24 B9 40 05 85 25 20 BF 84 A6 36 A5 19 9D - .byte $00, $03, $E8, $A5, $1A, $9D, $00, $03, $E8, $A5, $25, $29, $0F, $C9, $0B, $B0 ; CPU:$9250 PRG:5250 00 03 E8 A5 1A 9D 00 03 E8 A5 25 29 0F C9 0B B0 - .byte $33, $A4, $25, $B9, $00, $04, $29, $87, $85, $1B, $30, $13, $0A, $A8, $B9, $9E ; CPU:$9260 PRG:5260 33 A4 25 B9 00 04 29 87 85 1B 30 13 0A A8 B9 9E - .byte $F2, $9D, $00, $03, $E8, $B9, $9F, $F2, $9D, $00, $03, $A9, $00, $F0, $0B, $A9 ; CPU:$9270 PRG:5270 F2 9D 00 03 E8 B9 9F F2 9D 00 03 A9 00 F0 0B A9 - .byte $0D, $9D, $00, $03, $E8, $A9, $F3, $9D, $00, $03, $E8, $86, $36, $A5, $1B, $F0 ; CPU:$9280 PRG:5280 0D 9D 00 03 E8 A9 F3 9D 00 03 E8 86 36 A5 1B F0 - .byte $03, $20, $E3, $84, $C6, $1F, $F0, $17, $E6, $25, $A5, $25, $C5, $24, $B0, $8F ; CPU:$9290 PRG:5290 03 20 E3 84 C6 1F F0 17 E6 25 A5 25 C5 24 B0 8F - .byte $A5, $19, $18, $69, $40, $85, $19, $90, $02, $E6, $1A, $A9, $00, $F0, $9C, $E6 ; CPU:$92A0 PRG:52A0 A5 19 18 69 40 85 19 90 02 E6 1A A9 00 F0 9C E6 - .byte $25, $A4, $58, $A5, $25, $99, $40, $05, $A6, $36, $A9, $00, $9D, $00, $03, $60 ; CPU:$92B0 PRG:52B0 25 A4 58 A5 25 99 40 05 A6 36 A9 00 9D 00 03 60 - .byte $A5, $31, $6A, $B0, $01, $60, $A9, $00, $85, $20, $AD, $A6, $05, $38, $E9, $0A ; CPU:$92C0 PRG:52C0 A5 31 6A B0 01 60 A9 00 85 20 AD A6 05 38 E9 0A - .byte $90, $0A, $8D, $A6, $05, $E6, $20, $AD, $A6, $05, $10, $F1, $AD, $A6, $05, $8D ; CPU:$92D0 PRG:52D0 90 0A 8D A6 05 E6 20 AD A6 05 10 F1 AD A6 05 8D - .byte $AA, $05, $A5, $20, $8D, $A9, $05, $A2, $02, $BD, $A8, $05, $C9, $0A, $90, $0B ; CPU:$92E0 PRG:52E0 AA 05 A5 20 8D A9 05 A2 02 BD A8 05 C9 0A 90 0B - .byte $FE, $A7, $05, $18, $69, $06, $29, $0F, $9D, $A8, $05, $CA, $D0, $EB, $AD, $A5 ; CPU:$92F0 PRG:52F0 FE A7 05 18 69 06 29 0F 9D A8 05 CA D0 EB AD A5 - .byte $05, $AA, $18, $65, $62, $85, $62, $8A, $18, $65, $63, $85, $63, $8A, $29, $0F ; CPU:$9300 PRG:5300 05 AA 18 65 62 85 62 8A 18 65 63 85 63 8A 29 0F - .byte $18, $6D, $AF, $05, $8D, $AF, $05, $8A, $6A, $6A, $6A, $6A, $29, $0F, $18, $6D ; CPU:$9310 PRG:5310 18 6D AF 05 8D AF 05 8A 6A 6A 6A 6A 29 0F 18 6D - .byte $AE, $05, $8D, $AE, $05, $A2, $03, $BD, $AC, $05, $C9, $0A, $90, $0B, $FE, $AB ; CPU:$9320 PRG:5320 AE 05 8D AE 05 A2 03 BD AC 05 C9 0A 90 0B FE AB - .byte $05, $18, $69, $06, $29, $0F, $9D, $AC, $05, $CA, $D0, $EB, $A2, $02, $BD, $A8 ; CPU:$9330 PRG:5330 05 18 69 06 29 0F 9D AC 05 CA D0 EB A2 02 BD A8 - .byte $05, $18, $7D, $B2, $05, $9D, $B2, $05, $CA, $10, $F3, $A2, $04, $BD, $B0, $05 ; CPU:$9340 PRG:5340 05 18 7D B2 05 9D B2 05 CA 10 F3 A2 04 BD B0 05 - .byte $C9, $0A, $90, $0B, $FE, $AF, $05, $18, $69, $06, $29, $0F, $9D, $B0, $05, $CA ; CPU:$9350 PRG:5350 C9 0A 90 0B FE AF 05 18 69 06 29 0F 9D B0 05 CA - .byte $D0, $EB, $A9, $04, $8D, $C0, $05, $8D, $C6, $05, $A9, $01, $8D, $C1, $05, $8D ; CPU:$9360 PRG:5360 D0 EB A9 04 8D C0 05 8D C6 05 A9 01 8D C1 05 8D - .byte $C7, $05, $A2, $00, $BD, $AC, $05, $A8, $B9, $D6, $F1, $9D, $C2, $05, $BD, $A8 ; CPU:$9370 PRG:5370 C7 05 A2 00 BD AC 05 A8 B9 D6 F1 9D C2 05 BD A8 - .byte $05, $A8, $B9, $D6, $F1, $9D, $C8, $05, $E8, $E0, $04, $90, $E7, $A9, $06, $8D ; CPU:$9380 PRG:5380 05 A8 B9 D6 F1 9D C8 05 E8 E0 04 90 E7 A9 06 8D - .byte $D2, $05, $A9, $01, $8D, $D3, $05, $A2, $00, $BD, $B0, $05, $A8, $B9, $D6, $F1 ; CPU:$9390 PRG:5390 D2 05 A9 01 8D D3 05 A2 00 BD B0 05 A8 B9 D6 F1 - .byte $9D, $D4, $05, $E8, $E0, $06, $90, $F1, $A6, $37, $A5, $6F, $0A, $A8, $B9, $0A ; CPU:$93A0 PRG:53A0 9D D4 05 E8 E0 06 90 F1 A6 37 A5 6F 0A A8 B9 0A - .byte $D4, $9D, $38, $03, $B9, $0B, $D4, $9D, $39, $03, $A9, $C0, $9D, $3A, $03, $A9 ; CPU:$93B0 PRG:53B0 D4 9D 38 03 B9 0B D4 9D 39 03 A9 C0 9D 3A 03 A9 - .byte $05, $9D, $3B, $03, $B9, $0E, $D4, $9D, $3C, $03, $B9, $0F, $D4, $9D, $3D, $03 ; CPU:$93C0 PRG:53C0 05 9D 3B 03 B9 0E D4 9D 3C 03 B9 0F D4 9D 3D 03 - .byte $A9, $C6, $9D, $3E, $03, $A9, $05, $9D, $3F, $03, $B9, $12, $D4, $9D, $40, $03 ; CPU:$93D0 PRG:53D0 A9 C6 9D 3E 03 A9 05 9D 3F 03 B9 12 D4 9D 40 03 - .byte $B9, $13, $D4, $9D, $41, $03, $A9, $D2, $9D, $42, $03, $A9, $05, $9D, $43, $03 ; CPU:$93E0 PRG:53E0 B9 13 D4 9D 41 03 A9 D2 9D 42 03 A9 05 9D 43 03 - .byte $A9, $00, $9D, $44, $03, $8D, $A5, $05, $8D, $A4, $05, $8D, $A6, $05, $8D, $A7 ; CPU:$93F0 PRG:53F0 A9 00 9D 44 03 8D A5 05 8D A4 05 8D A6 05 8D A7 - .byte $05, $8A, $18, $69, $0C, $85, $37, $E6, $61, $60, $79, $21, $22, $23, $B9, $21 ; CPU:$9400 PRG:5400 05 8A 18 69 0C 85 37 E6 61 60 79 21 22 23 B9 21 - .byte $42, $23, $F7, $21, $2A, $23, $A5, $31, $6A, $B0, $01, $60, $A5, $71, $C9, $02 ; CPU:$9410 PRG:5410 42 23 F7 21 2A 23 A5 31 6A B0 01 60 A5 71 C9 02 - .byte $F0, $09, $A5, $5E, $C9, $05, $D0, $03, $20, $86, $D4, $A5, $5F, $29, $03, $AA ; CPU:$9420 PRG:5420 F0 09 A5 5E C9 05 D0 03 20 86 D4 A5 5F 29 03 AA - .byte $BD, $5A, $D4, $85, $1B, $A6, $5E, $20, $AF, $D4, $20, $8A, $85, $A9, $00, $9D ; CPU:$9430 PRG:5430 BD 5A D4 85 1B A6 5E 20 AF D4 20 8A 85 A9 00 9D - .byte $00, $03, $20, $E3, $84, $A5, $71, $C9, $02, $F0, $06, $C6, $5E, $D0, $02, $E6 ; CPU:$9440 PRG:5440 00 03 20 E3 84 A5 71 C9 02 F0 06 C6 5E D0 02 E6 - .byte $5F, $A5, $58, $D0, $02, $E6, $61, $E6, $61, $60, $03, $04, $02, $01, $A5, $65 ; CPU:$9450 PRG:5450 5F A5 58 D0 02 E6 61 E6 61 60 03 04 02 01 A5 65 - .byte $AA, $29, $0F, $A8, $BD, $00, $04, $29, $40, $D0, $05, $CA, $88, $10, $F5, $60 ; CPU:$9460 PRG:5460 AA 29 0F A8 BD 00 04 29 40 D0 05 CA 88 10 F5 60 - .byte $8A, $C5, $65, $F0, $10, $38, $E5, $65, $0A, $0A, $0A, $0A, $18, $6D, $98, $03 ; CPU:$9470 PRG:5470 8A C5 65 F0 10 38 E5 65 0A 0A 0A 0A 18 6D 98 03 - .byte $8D, $98, $03, $86, $65, $60, $A0, $05, $A5, $6F, $0A, $AA, $BD, $EA, $D4, $85 ; CPU:$9480 PRG:5480 8D 98 03 86 65 60 A0 05 A5 6F 0A AA BD EA D4 85 - .byte $19, $BD, $EB, $D4, $85, $1A, $A9, $A8, $85, $17, $A9, $F2, $85, $18, $20, $8A ; CPU:$9490 PRG:5490 19 BD EB D4 85 1A A9 A8 85 17 A9 F2 85 18 20 8A - .byte $85, $E6, $19, $E6, $19, $88, $D0, $F6, $98, $9D, $00, $03, $86, $36, $60, $A5 ; CPU:$94A0 PRG:54A0 85 E6 19 E6 19 88 D0 F6 98 9D 00 03 86 36 60 A5 - .byte $6F, $0A, $A8, $B9, $EA, $D4, $85, $19, $B9, $EB, $D4, $85, $1A, $BD, $D9, $05 ; CPU:$94B0 PRG:54B0 6F 0A A8 B9 EA D4 85 19 B9 EB D4 85 1A BD D9 05 - .byte $0A, $A8, $18, $65, $19, $85, $19, $98, $0A, $A8, $A6, $5F, $E8, $8A, $29, $02 ; CPU:$94C0 PRG:54C0 0A A8 18 65 19 85 19 98 0A A8 A6 5F E8 8A 29 02 - .byte $D0, $05, $98, $18, $69, $14, $A8, $A9, $D1, $85, $17, $A9, $F2, $85, $18, $98 ; CPU:$94D0 PRG:54D0 D0 05 98 18 69 14 A8 A9 D1 85 17 A9 F2 85 18 98 - .byte $18, $65, $17, $85, $17, $90, $02, $E6, $18, $60, $94, $20, $46, $23, $A5, $61 ; CPU:$94E0 PRG:54E0 18 65 17 85 17 90 02 E6 18 60 94 20 46 23 A5 61 - .byte $20, $73, $81, $07, $D5, $C0, $D2, $15, $D6, $E7, $D0, $37, $D5, $16, $D4, $CF ; CPU:$94F0 PRG:54F0 20 73 81 07 D5 C0 D2 15 D6 E7 D0 37 D5 16 D4 CF - .byte $D5, $B0, $D1, $1A, $D2, $63, $D5, $A9, $00, $85, $58, $A9, $04, $85, $1E, $A5 ; CPU:$9500 PRG:5500 D5 B0 D1 1A D2 63 D5 A9 00 85 58 A9 04 85 1E A5 - .byte $1E, $85, $20, $20, $FD, $CF, $C6, $1E, $D0, $F5, $AD, $A6, $05, $D0, $0D, $85 ; CPU:$9510 PRG:5510 1E 85 20 20 FD CF C6 1E D0 F5 AD A6 05 D0 0D 85 - .byte $61, $E6, $60, $A5, $68, $C9, $03, $90, $02, $E6, $68, $60, $A9, $00, $85, $3F ; CPU:$9520 PRG:5520 61 E6 60 A5 68 C9 03 90 02 E6 68 60 A9 00 85 3F - .byte $85, $56, $85, $59, $E6, $61, $60, $E6, $61, $20, $95, $D5, $20, $AF, $D5, $A6 ; CPU:$9530 PRG:5530 85 56 85 59 E6 61 60 E6 61 20 95 D5 20 AF D5 A6 - .byte $65, $30, $17, $BD, $00, $04, $29, $40, $D0, $10, $A9, $00, $8D, $58, $03, $A5 ; CPU:$9540 PRG:5540 65 30 17 BD 00 04 29 40 D0 10 A9 00 8D 58 03 A5 - .byte $71, $C9, $02, $F0, $04, $A9, $FF, $85, $65, $60, $A5, $58, $D0, $02, $E6, $61 ; CPU:$9550 PRG:5550 71 C9 02 F0 04 A9 FF 85 65 60 A5 58 D0 02 E6 61 - .byte $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A5, $6F, $0A, $A8, $A6, $37, $B9 ; CPU:$9560 PRG:5560 E6 61 60 A5 31 6A B0 01 60 A5 6F 0A A8 A6 37 B9 - .byte $0E, $D4, $9D, $38, $03, $B9, $0F, $D4, $9D, $39, $03, $A9, $E0, $9D, $3A, $03 ; CPU:$9570 PRG:5570 0E D4 9D 38 03 B9 0F D4 9D 39 03 A9 E0 9D 3A 03 - .byte $A9, $F1, $9D, $3B, $03, $A9, $00, $9D, $3C, $03, $8A, $18, $69, $04, $85, $37 ; CPU:$9580 PRG:5580 A9 F1 9D 3B 03 A9 00 9D 3C 03 8A 18 69 04 85 37 - .byte $A9, $00, $85, $61, $60, $A2, $00, $A0, $00, $86, $24, $A6, $24, $BD, $68, $05 ; CPU:$9590 PRG:5590 A9 00 85 61 60 A2 00 A0 00 86 24 A6 24 BD 68 05 - .byte $C9, $FF, $D0, $01, $60, $AA, $98, $9D, $00, $04, $E6, $24, $D0, $ED, $60, $A0 ; CPU:$95A0 PRG:55A0 C9 FF D0 01 60 AA 98 9D 00 04 E6 24 D0 ED 60 A0 - .byte $00, $A2, $6E, $CA, $BD, $00, $04, $F0, $07, $10, $0B, $8A, $99, $68, $05, $C8 ; CPU:$95B0 PRG:55B0 00 A2 6E CA BD 00 04 F0 07 10 0B 8A 99 68 05 C8 - .byte $CA, $10, $F1, $84, $58, $60, $8A, $29, $F0, $AA, $D0, $E7, $84, $58, $60, $A5 ; CPU:$95C0 PRG:55C0 CA 10 F1 84 58 60 8A 29 F0 AA D0 E7 84 58 60 A5 - .byte $31, $6A, $B0, $01, $60, $A9, $A8, $85, $17, $A9, $F2, $85, $18, $A9, $0C, $85 ; CPU:$95D0 PRG:55D0 31 6A B0 01 60 A9 A8 85 17 A9 F2 85 18 A9 0C 85 - .byte $1F, $A0, $00, $C6, $58, $10, $08, $E6, $61, $A9, $00, $85, $56, $F0, $1E, $A6 ; CPU:$95E0 PRG:55E0 1F A0 00 C6 58 10 08 E6 61 A9 00 85 56 F0 1E A6 - .byte $58, $BD, $68, $05, $85, $24, $20, $BF, $84, $A5, $1A, $C9, $24, $F0, $0A, $A6 ; CPU:$95F0 PRG:55F0 58 BD 68 05 85 24 20 BF 84 A5 1A C9 24 F0 0A A6 - .byte $24, $A9, $00, $9D, $00, $04, $20, $8A, $85, $C6, $1F, $10, $D6, $A6, $36, $A9 ; CPU:$9600 PRG:5600 24 A9 00 9D 00 04 20 8A 85 C6 1F 10 D6 A6 36 A9 - .byte $00, $9D, $00, $03, $60, $A9, $01, $8D, $E3, $00, $A9, $01, $8D, $E2, $00, $A9 ; CPU:$9610 PRG:5610 00 9D 00 03 60 A9 01 8D E3 00 A9 01 8D E2 00 A9 - .byte $04, $20, $04, $80, $E6, $61, $60, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9620 PRG:5620 04 20 04 80 E6 61 60 FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9630 PRG:5630 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9640 PRG:5640 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9650 PRG:5650 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9660 PRG:5660 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9670 PRG:5670 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9680 PRG:5680 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9690 PRG:5690 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$96A0 PRG:56A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$96B0 PRG:56B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$96C0 PRG:56C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$96D0 PRG:56D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$96E0 PRG:56E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$96F0 PRG:56F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9700 PRG:5700 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9710 PRG:5710 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9720 PRG:5720 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9730 PRG:5730 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9740 PRG:5740 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9750 PRG:5750 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9760 PRG:5760 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9770 PRG:5770 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9780 PRG:5780 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9790 PRG:5790 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$97A0 PRG:57A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$97B0 PRG:57B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$97C0 PRG:57C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$97D0 PRG:57D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$97E0 PRG:57E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$97F0 PRG:57F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9800 PRG:5800 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9810 PRG:5810 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9820 PRG:5820 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9830 PRG:5830 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9840 PRG:5840 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9850 PRG:5850 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9860 PRG:5860 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9870 PRG:5870 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9880 PRG:5880 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9890 PRG:5890 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$98A0 PRG:58A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$98B0 PRG:58B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$98C0 PRG:58C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$98D0 PRG:58D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$98E0 PRG:58E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$98F0 PRG:58F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9900 PRG:5900 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9910 PRG:5910 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9920 PRG:5920 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9930 PRG:5930 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9940 PRG:5940 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9950 PRG:5950 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9960 PRG:5960 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9970 PRG:5970 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9980 PRG:5980 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9990 PRG:5990 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$99A0 PRG:59A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$99B0 PRG:59B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$99C0 PRG:59C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$99D0 PRG:59D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$99E0 PRG:59E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$99F0 PRG:59F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A00 PRG:5A00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A10 PRG:5A10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A20 PRG:5A20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A30 PRG:5A30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A40 PRG:5A40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A50 PRG:5A50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A60 PRG:5A60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A70 PRG:5A70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A80 PRG:5A80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9A90 PRG:5A90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9AA0 PRG:5AA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9AB0 PRG:5AB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9AC0 PRG:5AC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9AD0 PRG:5AD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9AE0 PRG:5AE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9AF0 PRG:5AF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B00 PRG:5B00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B10 PRG:5B10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B20 PRG:5B20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B30 PRG:5B30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B40 PRG:5B40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B50 PRG:5B50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B60 PRG:5B60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B70 PRG:5B70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B80 PRG:5B80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9B90 PRG:5B90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9BA0 PRG:5BA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9BB0 PRG:5BB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9BC0 PRG:5BC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9BD0 PRG:5BD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9BE0 PRG:5BE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9BF0 PRG:5BF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C00 PRG:5C00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C10 PRG:5C10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C20 PRG:5C20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C30 PRG:5C30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C40 PRG:5C40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C50 PRG:5C50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C60 PRG:5C60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C70 PRG:5C70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C80 PRG:5C80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9C90 PRG:5C90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9CA0 PRG:5CA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9CB0 PRG:5CB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9CC0 PRG:5CC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9CD0 PRG:5CD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9CE0 PRG:5CE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9CF0 PRG:5CF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D00 PRG:5D00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D10 PRG:5D10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D20 PRG:5D20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D30 PRG:5D30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D40 PRG:5D40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D50 PRG:5D50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D60 PRG:5D60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D70 PRG:5D70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D80 PRG:5D80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9D90 PRG:5D90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9DA0 PRG:5DA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9DB0 PRG:5DB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9DC0 PRG:5DC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9DD0 PRG:5DD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9DE0 PRG:5DE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9DF0 PRG:5DF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E00 PRG:5E00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E10 PRG:5E10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E20 PRG:5E20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E30 PRG:5E30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E40 PRG:5E40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E50 PRG:5E50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E60 PRG:5E60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E70 PRG:5E70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E80 PRG:5E80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9E90 PRG:5E90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9EA0 PRG:5EA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9EB0 PRG:5EB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9EC0 PRG:5EC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9ED0 PRG:5ED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9EE0 PRG:5EE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9EF0 PRG:5EF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F00 PRG:5F00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F10 PRG:5F10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F20 PRG:5F20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F30 PRG:5F30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F40 PRG:5F40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F50 PRG:5F50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F60 PRG:5F60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F70 PRG:5F70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F80 PRG:5F80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9F90 PRG:5F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9FA0 PRG:5FA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9FB0 PRG:5FB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9FC0 PRG:5FC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9FD0 PRG:5FD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9FE0 PRG:5FE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$9FF0 PRG:5FF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A000 PRG:6000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A010 PRG:6010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A020 PRG:6020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A030 PRG:6030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A040 PRG:6040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A050 PRG:6050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A060 PRG:6060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A070 PRG:6070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A080 PRG:6080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A090 PRG:6090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A0A0 PRG:60A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A0B0 PRG:60B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A0C0 PRG:60C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A0D0 PRG:60D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A0E0 PRG:60E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A0F0 PRG:60F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A100 PRG:6100 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A110 PRG:6110 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A120 PRG:6120 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A130 PRG:6130 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A140 PRG:6140 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A150 PRG:6150 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A160 PRG:6160 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A170 PRG:6170 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A180 PRG:6180 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A190 PRG:6190 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A1A0 PRG:61A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A1B0 PRG:61B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A1C0 PRG:61C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A1D0 PRG:61D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A1E0 PRG:61E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A1F0 PRG:61F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A200 PRG:6200 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A210 PRG:6210 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A220 PRG:6220 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A230 PRG:6230 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A240 PRG:6240 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A250 PRG:6250 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A260 PRG:6260 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A270 PRG:6270 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A280 PRG:6280 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A290 PRG:6290 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A2A0 PRG:62A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A2B0 PRG:62B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A2C0 PRG:62C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A2D0 PRG:62D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A2E0 PRG:62E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A2F0 PRG:62F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A300 PRG:6300 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A310 PRG:6310 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A320 PRG:6320 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A330 PRG:6330 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A340 PRG:6340 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A350 PRG:6350 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A360 PRG:6360 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A370 PRG:6370 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A380 PRG:6380 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A390 PRG:6390 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A3A0 PRG:63A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A3B0 PRG:63B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A3C0 PRG:63C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A3D0 PRG:63D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A3E0 PRG:63E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A3F0 PRG:63F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A400 PRG:6400 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A410 PRG:6410 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A420 PRG:6420 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A430 PRG:6430 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A440 PRG:6440 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A450 PRG:6450 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A460 PRG:6460 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A470 PRG:6470 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A480 PRG:6480 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A490 PRG:6490 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A4A0 PRG:64A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A4B0 PRG:64B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A4C0 PRG:64C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A4D0 PRG:64D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A4E0 PRG:64E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A4F0 PRG:64F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A500 PRG:6500 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A510 PRG:6510 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A520 PRG:6520 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A530 PRG:6530 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A540 PRG:6540 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A550 PRG:6550 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A560 PRG:6560 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A570 PRG:6570 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A580 PRG:6580 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A590 PRG:6590 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A5A0 PRG:65A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A5B0 PRG:65B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A5C0 PRG:65C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A5D0 PRG:65D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A5E0 PRG:65E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A5F0 PRG:65F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A600 PRG:6600 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A610 PRG:6610 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A620 PRG:6620 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A630 PRG:6630 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A640 PRG:6640 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A650 PRG:6650 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A660 PRG:6660 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A670 PRG:6670 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A680 PRG:6680 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A690 PRG:6690 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A6A0 PRG:66A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A6B0 PRG:66B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A6C0 PRG:66C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A6D0 PRG:66D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A6E0 PRG:66E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A6F0 PRG:66F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A700 PRG:6700 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A710 PRG:6710 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A720 PRG:6720 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A730 PRG:6730 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A740 PRG:6740 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A750 PRG:6750 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A760 PRG:6760 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A770 PRG:6770 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A780 PRG:6780 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A790 PRG:6790 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A7A0 PRG:67A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A7B0 PRG:67B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A7C0 PRG:67C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A7D0 PRG:67D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A7E0 PRG:67E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A7F0 PRG:67F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A800 PRG:6800 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A810 PRG:6810 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A820 PRG:6820 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A830 PRG:6830 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A840 PRG:6840 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A850 PRG:6850 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A860 PRG:6860 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A870 PRG:6870 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A880 PRG:6880 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A890 PRG:6890 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A8A0 PRG:68A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A8B0 PRG:68B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A8C0 PRG:68C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A8D0 PRG:68D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A8E0 PRG:68E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A8F0 PRG:68F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A900 PRG:6900 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A910 PRG:6910 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A920 PRG:6920 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A930 PRG:6930 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A940 PRG:6940 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A950 PRG:6950 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A960 PRG:6960 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A970 PRG:6970 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A980 PRG:6980 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A990 PRG:6990 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A9A0 PRG:69A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A9B0 PRG:69B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A9C0 PRG:69C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A9D0 PRG:69D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A9E0 PRG:69E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$A9F0 PRG:69F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA00 PRG:6A00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA10 PRG:6A10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA20 PRG:6A20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA30 PRG:6A30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA40 PRG:6A40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA50 PRG:6A50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA60 PRG:6A60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA70 PRG:6A70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA80 PRG:6A80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AA90 PRG:6A90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AAA0 PRG:6AA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AAB0 PRG:6AB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AAC0 PRG:6AC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AAD0 PRG:6AD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AAE0 PRG:6AE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AAF0 PRG:6AF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB00 PRG:6B00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB10 PRG:6B10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB20 PRG:6B20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB30 PRG:6B30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB40 PRG:6B40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB50 PRG:6B50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB60 PRG:6B60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB70 PRG:6B70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB80 PRG:6B80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AB90 PRG:6B90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ABA0 PRG:6BA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ABB0 PRG:6BB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ABC0 PRG:6BC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ABD0 PRG:6BD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ABE0 PRG:6BE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ABF0 PRG:6BF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC00 PRG:6C00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC10 PRG:6C10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC20 PRG:6C20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC30 PRG:6C30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC40 PRG:6C40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC50 PRG:6C50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC60 PRG:6C60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC70 PRG:6C70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC80 PRG:6C80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AC90 PRG:6C90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ACA0 PRG:6CA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ACB0 PRG:6CB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ACC0 PRG:6CC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ACD0 PRG:6CD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ACE0 PRG:6CE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ACF0 PRG:6CF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD00 PRG:6D00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD10 PRG:6D10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD20 PRG:6D20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD30 PRG:6D30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD40 PRG:6D40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD50 PRG:6D50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD60 PRG:6D60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD70 PRG:6D70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD80 PRG:6D80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AD90 PRG:6D90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ADA0 PRG:6DA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ADB0 PRG:6DB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ADC0 PRG:6DC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ADD0 PRG:6DD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ADE0 PRG:6DE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ADF0 PRG:6DF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE00 PRG:6E00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE10 PRG:6E10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE20 PRG:6E20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE30 PRG:6E30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE40 PRG:6E40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE50 PRG:6E50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE60 PRG:6E60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE70 PRG:6E70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE80 PRG:6E80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AE90 PRG:6E90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AEA0 PRG:6EA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AEB0 PRG:6EB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AEC0 PRG:6EC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AED0 PRG:6ED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AEE0 PRG:6EE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AEF0 PRG:6EF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF00 PRG:6F00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF10 PRG:6F10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF20 PRG:6F20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF30 PRG:6F30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF40 PRG:6F40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF50 PRG:6F50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF60 PRG:6F60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF70 PRG:6F70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF80 PRG:6F80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AF90 PRG:6F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AFA0 PRG:6FA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AFB0 PRG:6FB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AFC0 PRG:6FC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AFD0 PRG:6FD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AFE0 PRG:6FE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$AFF0 PRG:6FF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B000 PRG:7000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B010 PRG:7010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B020 PRG:7020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B030 PRG:7030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B040 PRG:7040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B050 PRG:7050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B060 PRG:7060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B070 PRG:7070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B080 PRG:7080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B090 PRG:7090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B0A0 PRG:70A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B0B0 PRG:70B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B0C0 PRG:70C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B0D0 PRG:70D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B0E0 PRG:70E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B0F0 PRG:70F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B100 PRG:7100 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B110 PRG:7110 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B120 PRG:7120 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B130 PRG:7130 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B140 PRG:7140 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B150 PRG:7150 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B160 PRG:7160 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B170 PRG:7170 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B180 PRG:7180 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B190 PRG:7190 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B1A0 PRG:71A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B1B0 PRG:71B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B1C0 PRG:71C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39 ; CPU:$B1D0 PRG:71D0 FF FF FF FF FF FF 30 31 32 33 34 35 36 37 38 39 - .byte $04, $01, $30, $30, $30, $30, $0E, $31, $2A, $28, $0E, $39, $27, $18, $0E, $36 ; CPU:$B1E0 PRG:71E0 04 01 30 30 30 30 0E 31 2A 28 0E 39 27 18 0E 36 - .byte $31, $17, $0E, $31, $15, $22, $0E, $31, $2A, $28, $FF, $30, $25, $22, $FF, $2B ; CPU:$B1F0 PRG:71F0 31 17 0E 31 15 22 0E 31 2A 28 FF 30 25 22 FF 2B - .byte $28, $30, $FF, $31, $15, $22, $00, $20, $20, $23, $23, $00, $21, $01, $01, $01 ; CPU:$B200 PRG:7200 28 30 FF 31 15 22 00 20 20 23 23 00 21 01 01 01 - .byte $01, $01, $21, $01, $00, $01, $00, $00, $82, $F2, $88, $F2, $90, $F2, $98, $F2 ; CPU:$B210 PRG:7210 01 01 21 01 00 01 00 00 82 F2 88 F2 90 F2 98 F2 - .byte $78, $F6, $91, $F6, $64, $F6, $68, $F6, $6C, $F6, $70, $F6, $74, $F6, $C6, $F2 ; CPU:$B220 PRG:7220 78 F6 91 F6 64 F6 68 F6 6C F6 70 F6 74 F6 C6 F2 - .byte $56, $F2, $5A, $F2, $5E, $F2, $00, $00, $00, $F8, $00, $F8, $00, $F8, $00, $F8 ; CPU:$B230 PRG:7230 56 F2 5A F2 5E F2 00 00 00 F8 00 F8 00 F8 00 F8 - .byte $00, $F8, $48, $98, $00, $F8, $00, $F8, $00, $F8, $00, $F8, $00, $F8, $44, $78 ; CPU:$B240 PRG:7240 00 F8 48 98 00 F8 00 F8 00 F8 00 F8 00 F8 44 78 - .byte $A0, $6D, $A0, $85, $B0, $85, $62, $F2, $FF, $FF, $6A, $F2, $FF, $FF, $74, $F2 ; CPU:$B250 PRG:7250 A0 6D A0 85 B0 85 62 F2 FF FF 6A F2 FF FF 74 F2 - .byte $FF, $FF, $02, $03, $25, $34, $4A, $90, $91, $92, $02, $04, $A3, $A4, $C1, $E4 ; CPU:$B260 PRG:7260 FF FF 02 03 25 34 4A 90 91 92 02 04 A3 A4 C1 E4 - .byte $E6, $E7, $E9, $EA, $03, $04, $A5, $B3, $B4, $E5, $ED, $EE, $E8, $FF, $FF, $EB ; CPU:$B270 PRG:7270 E6 E7 E9 EA 03 04 A5 B3 B4 E5 ED EE E8 FF FF EB - .byte $EC, $FF, $AE, $F2, $BA, $F2, $FF, $FF, $B4, $F2, $C0, $F2, $B4, $F2, $FF, $FF ; CPU:$B280 PRG:7280 EC FF AE F2 BA F2 FF FF B4 F2 C0 F2 B4 F2 FF FF - .byte $BA, $F2, $AE, $F2, $AE, $F2, $FF, $FF, $C0, $F2, $B4, $F2, $FF, $FF, $A8, $F2 ; CPU:$B290 PRG:7290 BA F2 AE F2 AE F2 FF FF C0 F2 B4 F2 FF FF A8 F2 - .byte $AE, $F2, $B4, $F2, $AE, $F2, $B4, $F2, $02, $02, $FF, $FF, $FF, $FF, $02, $02 ; CPU:$B2A0 PRG:72A0 AE F2 B4 F2 AE F2 B4 F2 02 02 FF FF FF FF 02 02 - .byte $01, $02, $03, $04, $02, $02, $05, $06, $07, $08, $02, $02, $A6, $A7, $A8, $A9 ; CPU:$B2B0 PRG:72B0 01 02 03 04 02 02 05 06 07 08 02 02 A6 A7 A8 A9 - .byte $02, $02, $AA, $AB, $AC, $AD, $CA, $F2, $FF, $FF, $05, $01, $94, $95, $A1, $9F ; CPU:$B2C0 PRG:72C0 02 02 AA AB AC AD CA F2 FF FF 05 01 94 95 A1 9F - .byte $97, $00, $00, $77, $78, $7C, $82, $8B, $8C, $A3, $A4, $A5, $A6, $A7, $A8, $AD ; CPU:$B2D0 PRG:72D0 97 00 00 77 78 7C 82 8B 8C A3 A4 A5 A6 A7 A8 AD - .byte $AE, $AF, $B0, $B5, $B6, $B7, $B8, $6D, $6E, $6F, $72, $84, $8A, $A1, $A2, $A9 ; CPU:$B2E0 PRG:72E0 AE AF B0 B5 B6 B7 B8 6D 6E 6F 72 84 8A A1 A2 A9 - .byte $AA, $AB, $AC, $B1, $B2, $B3, $B4, $B9, $BA, $BB, $BC, $A8, $F2, $01, $F3, $07 ; CPU:$B2F0 PRG:72F0 AA AB AC B1 B2 B3 B4 B9 BA BB BC A8 F2 01 F3 07 - .byte $F3, $02, $02, $E8, $E9, $EA, $EB, $02, $02, $EC, $ED, $EE, $EF, $02, $02, $BD ; CPU:$B300 PRG:7300 F3 02 02 E8 E9 EA EB 02 02 EC ED EE EF 02 02 BD - .byte $BE, $BF, $C0, $00, $00, $21, $F3, $31, $F3, $41, $F3, $51, $F3, $61, $F3, $71 ; CPU:$B310 PRG:7310 BE BF C0 00 00 21 F3 31 F3 41 F3 51 F3 61 F3 71 - .byte $F3, $01, $11, $02, $12, $02, $11, $01, $10, $11, $01, $10, $00, $10, $01, $11 ; CPU:$B320 PRG:7320 F3 01 11 02 12 02 11 01 10 11 01 10 00 10 01 11 - .byte $02, $02, $11, $22, $12, $02, $12, $22, $11, $22, $12, $02, $11, $22, $11, $02 ; CPU:$B330 PRG:7330 02 02 11 22 12 02 12 22 11 22 12 02 11 22 11 02 - .byte $12, $02, $10, $11, $12, $01, $12, $11, $10, $11, $03, $02, $01, $12, $01, $02 ; CPU:$B340 PRG:7340 12 02 10 11 12 01 12 11 10 11 03 02 01 12 01 02 - .byte $03, $11, $31, $22, $12, $12, $32, $22, $11, $32, $12, $22, $31, $31, $11, $22 ; CPU:$B350 PRG:7350 03 11 31 22 12 12 32 22 11 32 12 22 31 31 11 22 - .byte $32, $10, $20, $11, $12, $12, $23, $11, $10, $23, $13, $22, $21, $21, $10, $22 ; CPU:$B360 PRG:7360 32 10 20 11 12 12 23 11 10 23 13 22 21 21 10 22 - .byte $23, $01, $11, $21, $12, $02, $11, $22, $10, $22, $11, $02, $10, $21, $11, $01 ; CPU:$B370 PRG:7370 23 01 11 21 12 02 11 22 10 22 11 02 10 21 11 01 - .byte $12, $01, $01, $02, $03, $04, $01, $02, $03, $04, $01, $02, $03, $04, $00, $00 ; CPU:$B380 PRG:7380 12 01 01 02 03 04 01 02 03 04 01 02 03 04 00 00 - .byte $9C, $F3, $BC, $F3, $DC, $F3, $FC, $F3, $1C, $F4, $3C, $F4, $01, $01, $01, $01 ; CPU:$B390 PRG:7390 9C F3 BC F3 DC F3 FC F3 1C F4 3C F4 01 01 01 01 - .byte $02, $01, $01, $01, $01, $01, $02, $01, $01, $01, $02, $02, $01, $02, $02, $01 ; CPU:$B3A0 PRG:73A0 02 01 01 01 01 01 02 01 01 01 02 02 01 02 02 01 - .byte $01, $02, $01, $03, $02, $01, $01, $03, $01, $03, $02, $04, $01, $01, $01, $01 ; CPU:$B3B0 PRG:73B0 01 02 01 03 02 01 01 03 01 03 02 04 01 01 01 01 - .byte $01, $01, $01, $02, $01, $01, $02, $01, $02, $01, $02, $01, $02, $01, $01, $02 ; CPU:$B3C0 PRG:73C0 01 01 01 02 01 01 02 01 02 01 02 01 02 01 01 02 - .byte $01, $01, $03, $02, $02, $01, $03, $01, $01, $02, $03, $04, $01, $01, $01, $01 ; CPU:$B3D0 PRG:73D0 01 01 03 02 02 01 03 01 01 02 03 04 01 01 01 01 - .byte $02, $01, $01, $01, $01, $01, $02, $01, $02, $01, $01, $02, $01, $02, $01, $02 ; CPU:$B3E0 PRG:73E0 02 01 01 01 01 01 02 01 02 01 01 02 01 02 01 02 - .byte $01, $02, $03, $01, $01, $01, $02, $03, $04, $01, $02, $03, $01, $01, $01, $01 ; CPU:$B3F0 PRG:73F0 01 02 03 01 01 01 02 03 04 01 02 03 01 01 01 01 - .byte $01, $02, $01, $01, $01, $01, $02, $01, $02, $02, $01, $01, $02, $01, $02, $01 ; CPU:$B400 PRG:7400 01 02 01 01 01 01 02 01 02 02 01 01 02 01 02 01 - .byte $01, $03, $02, $01, $02, $01, $01, $03, $01, $04, $02, $03, $01, $01, $01, $01 ; CPU:$B410 PRG:7410 01 03 02 01 02 01 01 03 01 04 02 03 01 01 01 01 - .byte $01, $01, $01, $02, $01, $02, $01, $01, $01, $01, $02, $02, $02, $01, $01, $02 ; CPU:$B420 PRG:7420 01 01 01 02 01 02 01 01 01 01 02 02 02 01 01 02 - .byte $01, $01, $02, $03, $02, $03, $01, $01, $02, $01, $03, $04, $01, $01, $01, $01 ; CPU:$B430 PRG:7430 01 01 02 03 02 03 01 01 02 01 03 04 01 01 01 01 - .byte $01, $01, $02, $01, $01, $02, $01, $01, $02, $01, $02, $01, $01, $02, $02, $01 ; CPU:$B440 PRG:7440 01 01 02 01 01 02 01 01 02 01 02 01 01 02 02 01 - .byte $03, $02, $01, $01, $01, $01, $03, $02, $03, $01, $04, $02, $64, $F4, $64, $F5 ; CPU:$B450 PRG:7450 03 02 01 01 01 01 03 02 03 01 04 02 64 F4 64 F5 - .byte $E4, $F4, $E4, $F5, $24, $63, $14, $24, $55, $62, $14, $50, $60, $31, $56, $40 ; CPU:$B460 PRG:7460 E4 F4 E4 F5 24 63 14 24 55 62 14 50 60 31 56 40 - .byte $61, $45, $11, $60, $10, $44, $32, $61, $13, $20, $43, $34, $15, $37, $63, $32 ; CPU:$B470 PRG:7470 61 45 11 60 10 44 32 61 13 20 43 34 15 37 63 32 - .byte $33, $35, $12, $34, $25, $32, $10, $12, $34, $15, $62, $46, $23, $44, $13, $31 ; CPU:$B480 PRG:7480 33 35 12 34 25 32 10 12 34 15 62 46 23 44 13 31 - .byte $17, $10, $22, $16, $51, $31, $41, $65, $10, $62, $11, $20, $30, $14, $34, $11 ; CPU:$B490 PRG:7490 17 10 22 16 51 31 41 65 10 62 11 20 30 14 34 11 - .byte $34, $27, $13, $60, $37, $26, $33, $32, $32, $11, $53, $52, $61, $52, $12, $64 ; CPU:$B4A0 PRG:74A0 34 27 13 60 37 26 33 32 32 11 53 52 61 52 12 64 - .byte $57, $67, $67, $64, $30, $31, $64, $30, $27, $10, $63, $40, $17, $31, $67, $60 ; CPU:$B4B0 PRG:74B0 57 67 67 64 30 31 64 30 27 10 63 40 17 31 67 60 - .byte $13, $47, $10, $40, $13, $33, $60, $21, $33, $63, $60, $66, $64, $61, $35, $50 ; CPU:$B4C0 PRG:74C0 13 47 10 40 13 33 60 21 33 63 60 66 64 61 35 50 - .byte $21, $12, $62, $53, $17, $41, $11, $42, $63, $65, $14, $54, $62, $30, $30, $12 ; CPU:$B4D0 PRG:74D0 21 12 62 53 17 41 11 42 63 65 14 54 62 30 30 12 - .byte $33, $30, $36, $60, $14, $55, $11, $15, $64, $24, $33, $61, $10, $26, $13, $35 ; CPU:$B4E0 PRG:74E0 33 30 36 60 14 55 11 15 64 24 33 61 10 26 13 35 - .byte $31, $62, $66, $37, $26, $12, $45, $54, $14, $35, $55, $16, $42, $34, $45, $15 ; CPU:$B4F0 PRG:74F0 31 62 66 37 26 12 45 54 14 35 55 16 42 34 45 15 - .byte $54, $66, $35, $17, $25, $65, $43, $63, $46, $15, $32, $64, $32, $47, $33, $66 ; CPU:$B500 PRG:7500 54 66 35 17 25 65 43 63 46 15 32 64 32 47 33 66 - .byte $46, $20, $56, $45, $66, $25, $21, $23, $13, $26, $45, $14, $51, $46, $17, $43 ; CPU:$B510 PRG:7510 46 20 56 45 66 25 21 23 13 26 45 14 51 46 17 43 - .byte $56, $34, $16, $63, $55, $66, $25, $37, $15, $30, $36, $47, $15, $57, $41, $27 ; CPU:$B520 PRG:7520 56 34 16 63 55 66 25 37 15 30 36 47 15 57 41 27 - .byte $25, $67, $24, $36, $13, $37, $54, $27, $21, $16, $44, $57, $36, $44, $50, $17 ; CPU:$B530 PRG:7530 25 67 24 36 13 37 54 27 21 16 44 57 36 44 50 17 - .byte $33, $65, $41, $43, $12, $55, $46, $16, $45, $23, $65, $53, $47, $26, $51, $35 ; CPU:$B540 PRG:7540 33 65 41 43 12 55 46 16 45 23 65 53 47 26 51 35 - .byte $46, $62, $57, $22, $27, $40, $67, $52, $67, $35, $36, $60, $24, $56, $65, $51 ; CPU:$B550 PRG:7550 46 62 57 22 27 40 67 52 67 35 36 60 24 56 65 51 - .byte $44, $23, $25, $53, $64, $50, $17, $55, $46, $17, $40, $51, $34, $47, $53, $60 ; CPU:$B560 PRG:7560 44 23 25 53 64 50 17 55 46 17 40 51 34 47 53 60 - .byte $54, $27, $63, $10, $37, $20, $17, $27, $14, $41, $30, $26, $35, $36, $20, $16 ; CPU:$B570 PRG:7570 54 27 63 10 37 20 17 27 14 41 30 26 35 36 20 16 - .byte $55, $14, $40, $12, $24, $52, $17, $21, $37, $54, $21, $63, $14, $46, $30, $13 ; CPU:$B580 PRG:7580 55 14 40 12 24 52 17 21 37 54 21 63 14 46 30 13 - .byte $34, $26, $44, $11, $36, $23, $65, $42, $64, $50, $25, $45, $16, $12, $41, $56 ; CPU:$B590 PRG:7590 34 26 44 11 36 23 65 42 64 50 25 45 16 12 41 56 - .byte $31, $32, $47, $53, $35, $45, $30, $10, $27, $52, $24, $13, $36, $11, $57, $23 ; CPU:$B5A0 PRG:75A0 31 32 47 53 35 45 30 10 27 52 24 13 36 11 57 23 - .byte $42, $21, $65, $25, $66, $16, $46, $31, $26, $62, $47, $22, $43, $67, $60, $37 ; CPU:$B5B0 PRG:75B0 42 21 65 25 66 16 46 31 26 62 47 22 43 67 60 37 - .byte $55, $62, $33, $57, $44, $15, $62, $27, $65, $22, $61, $67, $25, $66, $51, $57 ; CPU:$B5C0 PRG:75C0 55 62 33 57 44 15 62 27 65 22 61 67 25 66 51 57 - .byte $37, $57, $47, $15, $43, $37, $35, $45, $67, $56, $65, $15, $46, $56, $32, $43 ; CPU:$B5D0 PRG:75D0 37 57 47 15 43 37 35 45 67 56 65 15 46 56 32 43 - .byte $61, $33, $66, $67, $44, $45, $22, $41, $16, $43, $21, $55, $14, $55, $23, $10 ; CPU:$B5E0 PRG:75E0 61 33 66 67 44 45 22 41 16 43 21 55 14 55 23 10 - .byte $42, $13, $61, $56, $54, $37, $26, $66, $44, $67, $12, $17, $15, $65, $47, $65 ; CPU:$B5F0 PRG:75F0 42 13 61 56 54 37 26 66 44 67 12 17 15 65 47 65 - .byte $65, $36, $66, $22, $37, $46, $33, $44, $65, $36, $11, $66, $63, $41, $43, $65 ; CPU:$B600 PRG:7600 65 36 66 22 37 46 33 44 65 36 11 66 63 41 43 65 - .byte $17, $35, $31, $37, $56, $62, $45, $33, $15, $42, $14, $17, $56, $14, $54, $55 ; CPU:$B610 PRG:7610 17 35 31 37 56 62 45 33 15 42 14 17 56 14 54 55 - .byte $64, $46, $27, $35, $16, $26, $53, $57, $45, $50, $15, $37, $32, $36, $11, $26 ; CPU:$B620 PRG:7620 64 46 27 35 16 26 53 57 45 50 15 37 32 36 11 26 - .byte $17, $34, $56, $67, $35, $24, $36, $13, $63, $65, $16, $15, $34, $61, $40, $25 ; CPU:$B630 PRG:7630 17 34 56 67 35 24 36 13 63 65 16 15 34 61 40 25 - .byte $53, $27, $46, $31, $13, $26, $55, $60, $26, $57, $66, $25, $25, $56, $47, $54 ; CPU:$B640 PRG:7640 53 27 46 31 13 26 55 60 26 57 66 25 25 56 47 54 - .byte $16, $27, $64, $25, $45, $35, $23, $46, $27, $32, $36, $53, $25, $52, $35, $24 ; CPU:$B650 PRG:7650 16 27 64 25 45 35 23 46 27 32 36 53 25 52 35 24 - .byte $66, $44, $55, $57, $7C, $F6, $FF, $FF, $7F, $F6, $FF, $FF, $82, $F6, $FF, $FF ; CPU:$B660 PRG:7660 66 44 55 57 7C F6 FF FF 7F F6 FF FF 82 F6 FF FF - .byte $85, $F6, $FF, $FF, $88, $F6, $FF, $FF, $8B, $F6, $FF, $FF, $01, $01, $79, $01 ; CPU:$B670 PRG:7670 85 F6 FF FF 88 F6 FF FF 8B F6 FF FF 01 01 79 01 - .byte $01, $7A, $01, $01, $7B, $01, $01, $7C, $01, $01, $7D, $02, $02, $7E, $7F, $80 ; CPU:$B680 PRG:7680 01 7A 01 01 7B 01 01 7C 01 01 7D 02 02 7E 7F 80 - .byte $81, $95, $F6, $FF, $FF, $04, $04, $69, $6A, $6B, $6C, $6D, $6E, $6F, $70, $71 ; CPU:$B690 PRG:7690 81 95 F6 FF FF 04 04 69 6A 6B 6C 6D 6E 6F 70 71 - .byte $72, $73, $74, $75, $76, $77, $78, $AB, $F6, $EB, $F6, $55, $C5, $C5, $C5, $45 ; CPU:$B6A0 PRG:76A0 72 73 74 75 76 77 78 AB F6 EB F6 55 C5 C5 C5 45 - .byte $55, $55, $55, $55, $00, $00, $00, $44, $54, $54, $57, $55, $00, $00, $00, $44 ; CPU:$B6B0 PRG:76B0 55 55 55 55 00 00 00 44 54 54 57 55 00 00 00 44 - .byte $55, $55, $55, $55, $00, $00, $00, $44, $55, $55, $55, $55, $00, $00, $00, $44 ; CPU:$B6C0 PRG:76C0 55 55 55 55 00 00 00 44 55 55 55 55 00 00 00 44 - .byte $55, $55, $55, $55, $00, $00, $00, $44, $DD, $FF, $55, $55, $AA, $22, $00, $44 ; CPU:$B6D0 PRG:76D0 55 55 55 55 00 00 00 44 DD FF 55 55 AA 22 00 44 - .byte $5D, $53, $55, $F5, $AA, $AA, $AA, $26, $F5, $F5, $F5, $D5, $F5, $F5, $F5, $D5 ; CPU:$B6E0 PRG:76E0 5D 53 55 F5 AA AA AA 26 F5 F5 F5 D5 F5 F5 F5 D5 - .byte $F5, $F5, $F5, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD ; CPU:$B6F0 PRG:76F0 F5 F5 F5 DD FF FF FF DD FF FF FF DD FF FF FF DD - .byte $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD ; CPU:$B700 PRG:7700 FF FF FF DD FF FF FF DD FF FF FF DD FF FF FF DD - .byte $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $55, $55, $55, $55, $55 ; CPU:$B710 PRG:7710 FF FF FF DD FF FF FF DD FF FF FF 55 55 55 55 55 - .byte $55, $55, $55, $55, $55, $55, $55, $55, $55, $55, $55, $44, $20, $84, $20, $C4 ; CPU:$B720 PRG:7720 55 55 55 55 55 55 55 55 55 55 55 44 20 84 20 C4 - .byte $20, $04, $21, $44, $21, $84, $21, $C4, $21, $04, $22, $44, $22, $84, $22, $C4 ; CPU:$B730 PRG:7730 20 04 21 44 21 84 21 C4 21 04 22 44 22 84 22 C4 - .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $66, $20, $A6, $20, $E6 ; CPU:$B740 PRG:7740 22 50 24 50 24 50 24 50 24 50 24 66 20 A6 20 E6 - .byte $20, $26, $21, $66, $21, $A6, $21, $E6, $21, $26, $22, $66, $22, $A6, $22, $E6 ; CPU:$B750 PRG:7750 20 26 21 66 21 A6 21 E6 21 26 22 66 22 A6 22 E6 - .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $48, $20, $88, $20, $C8 ; CPU:$B760 PRG:7760 22 50 24 50 24 50 24 50 24 50 24 48 20 88 20 C8 - .byte $20, $08, $21, $48, $21, $88, $21, $C8, $21, $08, $22, $48, $22, $88, $22, $C8 ; CPU:$B770 PRG:7770 20 08 21 48 21 88 21 C8 21 08 22 48 22 88 22 C8 - .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $6A, $20, $AA, $20, $EA ; CPU:$B780 PRG:7780 22 50 24 50 24 50 24 50 24 50 24 6A 20 AA 20 EA - .byte $20, $2A, $21, $6A, $21, $AA, $21, $EA, $21, $2A, $22, $6A, $22, $AA, $22, $EA ; CPU:$B790 PRG:7790 20 2A 21 6A 21 AA 21 EA 21 2A 22 6A 22 AA 22 EA - .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $4C, $20, $8C, $20, $CC ; CPU:$B7A0 PRG:77A0 22 50 24 50 24 50 24 50 24 50 24 4C 20 8C 20 CC - .byte $20, $0C, $21, $4C, $21, $8C, $21, $CC, $21, $0C, $22, $4C, $22, $8C, $22, $CC ; CPU:$B7B0 PRG:77B0 20 0C 21 4C 21 8C 21 CC 21 0C 22 4C 22 8C 22 CC - .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $6E, $20, $AE, $20, $EE ; CPU:$B7C0 PRG:77C0 22 50 24 50 24 50 24 50 24 50 24 6E 20 AE 20 EE - .byte $20, $2E, $21, $6E, $21, $AE, $21, $EE, $21, $2E, $22, $6E, $22, $AE, $22, $EE ; CPU:$B7D0 PRG:77D0 20 2E 21 6E 21 AE 21 EE 21 2E 22 6E 22 AE 22 EE - .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $50, $20, $90, $20, $D0 ; CPU:$B7E0 PRG:77E0 22 50 24 50 24 50 24 50 24 50 24 50 20 90 20 D0 - .byte $20, $10, $21, $50, $21, $90, $21, $D0, $21, $10, $22, $50, $22, $90, $22, $D0 ; CPU:$B7F0 PRG:77F0 20 10 21 50 21 90 21 D0 21 10 22 50 22 90 22 D0 - .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $04, $01, $F8, $4F, $4F ; CPU:$B800 PRG:7800 22 50 24 50 24 50 24 50 24 50 24 04 01 F8 4F 4F - .byte $44, $04, $02, $F8, $41, $4D, $45, $4F, $F9, $45, $52, $03, $01, $55, $55, $55 ; CPU:$B810 PRG:7810 44 04 02 F8 41 4D 45 4F F9 45 52 03 01 55 55 55 - .byte $03, $01, $FF, $FF, $FF, $08, $02, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$B820 PRG:7820 03 01 FF FF FF 08 02 FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $07, $01, $53, $54, $41, $F8, $45, $FF, $D4 ; CPU:$B830 PRG:7830 FF FF FF FF FF FF FF 07 01 53 54 41 F8 45 FF D4 - .byte $05, $01, $3C, $41, $55, $53, $45, $08, $22, $4F, $F8, $E1, $23, $1B, $F8, $08 ; CPU:$B840 PRG:7840 05 01 3C 41 55 53 45 08 22 4F F8 E1 23 1B F8 08 - .byte $03, $45, $D5, $44, $FF, $FF, $FF, $FF, $FF, $43, $4F, $D5, $54, $49, $D5, $55 ; CPU:$B850 PRG:7850 03 45 D5 44 FF FF FF FF FF 43 4F D5 54 49 D5 55 - .byte $45, $43, $52, $45, $44, $49, $54, $FF, $FF, $08, $22, $25, $F8, $28, $22, $25 ; CPU:$B860 PRG:7860 45 43 52 45 44 49 54 FF FF 08 22 25 F8 28 22 25 - .byte $F8, $E1, $23, $20, $F8, $05, $04, $03, $02, $01, $00, $EF, $FF, $0F, $10, $01 ; CPU:$B870 PRG:7870 F8 E1 23 20 F8 05 04 03 02 01 00 EF FF 0F 10 01 - .byte $F0, $F1, $FF, $11, $10, $01, $F0, $00, $F0, $04, $F2, $08, $F4, $0C, $F6, $10 ; CPU:$B880 PRG:7880 F0 F1 FF 11 10 01 F0 00 F0 04 F2 08 F4 0C F6 10 - .byte $F8, $10, $FC, $10, $00, $10, $04, $10, $08, $0C, $0A, $08, $0C, $04, $0E, $00 ; CPU:$B890 PRG:7890 F8 10 FC 10 00 10 04 10 08 0C 0A 08 0C 04 0E 00 - .byte $10, $FC, $0E, $F8, $0C, $F4, $0A, $F0, $08, $F0, $04, $F0, $00, $F0, $FC, $F0 ; CPU:$B8A0 PRG:78A0 10 FC 0E F8 0C F4 0A F0 08 F0 04 F0 00 F0 FC F0 - .byte $F8, $F4, $F6, $F8, $F4, $FC, $F2, $04, $01, $55, $55, $55, $55, $E5, $F8, $FA ; CPU:$B8B0 PRG:78B0 F8 F4 F6 F8 F4 FC F2 04 01 55 55 55 55 E5 F8 FA - .byte $F8, $0F, $F9, $24, $F9, $39, $F9, $55, $F9, $71, $F9, $8D, $F9, $A9, $F9, $CC ; CPU:$B8C0 PRG:78C0 F8 0F F9 24 F9 39 F9 55 F9 71 F9 8D F9 A9 F9 CC - .byte $F9, $EF, $F9, $12, $FA, $35, $FA, $5F, $FA, $89, $FA, $B3, $FA, $DD, $FA, $0E ; CPU:$B8D0 PRG:78D0 F9 EF F9 12 FA 35 FA 5F FA 89 FA B3 FA DD FA 0E - .byte $FB, $3F, $FB, $70, $FB, $03, $01, $00, $02, $04, $00, $04, $03, $00, $01, $04 ; CPU:$B8E0 PRG:78E0 FB 3F FB 70 FB 03 01 00 02 04 00 04 03 00 01 04 - .byte $00, $03, $02, $00, $04, $03, $00, $02, $01, $00, $04, $03, $00, $01, $02, $00 ; CPU:$B8F0 PRG:78F0 00 03 02 00 04 03 00 02 01 00 04 03 00 01 02 00 - .byte $04, $03, $00, $02, $01, $00, $80, $03, $00, $01, $02, $00, $03, $04, $00, $02 ; CPU:$B900 PRG:7900 04 03 00 02 01 00 80 03 00 01 02 00 03 04 00 02 - .byte $01, $00, $04, $03, $00, $80, $04, $00, $01, $02, $00, $04, $03, $00, $02, $01 ; CPU:$B910 PRG:7910 01 00 04 03 00 80 04 00 01 02 00 04 03 00 02 01 - .byte $00, $04, $02, $00, $03, $02, $00, $04, $01, $00, $02, $03, $00, $04, $01, $00 ; CPU:$B920 PRG:7920 00 04 02 00 03 02 00 04 01 00 02 03 00 04 01 00 - .byte $80, $02, $00, $03, $01, $00, $04, $02, $00, $02, $01, $03, $00, $04, $80, $02 ; CPU:$B930 PRG:7930 80 02 00 03 01 00 04 02 00 02 01 03 00 04 80 02 - .byte $00, $02, $04, $01, $00, $03, $02, $03, $00, $80, $01, $04, $00, $04, $02, $03 ; CPU:$B940 PRG:7940 00 02 04 01 00 03 02 03 00 80 01 04 00 04 02 03 - .byte $00, $03, $01, $04, $00, $02, $03, $01, $00, $01, $04, $02, $00, $02, $04, $01 ; CPU:$B950 PRG:7950 00 03 01 04 00 02 03 01 00 01 04 02 00 02 04 01 - .byte $00, $03, $80, $02, $00, $02, $01, $03, $00, $03, $80, $02, $00, $02, $04, $01 ; CPU:$B960 PRG:7960 00 03 80 02 00 02 01 03 00 03 80 02 00 02 04 01 - .byte $00, $02, $01, $04, $00, $04, $03, $01, $00, $80, $02, $04, $00, $01, $03, $01 ; CPU:$B970 PRG:7970 00 02 01 04 00 04 03 01 00 80 02 04 00 01 03 01 - .byte $00, $02, $80, $04, $00, $04, $03, $01, $00, $01, $02, $04, $00, $02, $04, $03 ; CPU:$B980 PRG:7980 00 02 80 04 00 04 03 01 00 01 02 04 00 02 04 03 - .byte $00, $01, $80, $01, $00, $04, $03, $02, $00, $02, $80, $04, $00, $01, $03, $02 ; CPU:$B990 PRG:7990 00 01 80 01 00 04 03 02 00 02 80 04 00 01 03 02 - .byte $00, $03, $04, $01, $00, $02, $01, $03, $00, $04, $04, $03, $02, $00, $01, $80 ; CPU:$B9A0 PRG:79A0 00 03 04 01 00 02 01 03 00 04 04 03 02 00 01 80 - .byte $02, $04, $00, $04, $03, $01, $02, $00, $02, $80, $04, $03, $00, $03, $01, $02 ; CPU:$B9B0 PRG:79B0 02 04 00 04 03 01 02 00 02 80 04 03 00 03 01 02 - .byte $04, $00, $04, $04, $03, $01, $00, $01, $80, $04, $02, $00, $03, $04, $03, $02 ; CPU:$B9C0 PRG:79C0 04 00 04 04 03 01 00 01 80 04 02 00 03 04 03 02 - .byte $00, $02, $01, $80, $04, $00, $01, $80, $03, $02, $00, $03, $02, $01, $04, $00 ; CPU:$B9D0 PRG:79D0 00 02 01 80 04 00 01 80 03 02 00 03 02 01 04 00 - .byte $04, $01, $03, $02, $00, $80, $02, $04, $01, $00, $03, $01, $03, $02, $00, $01 ; CPU:$B9E0 PRG:79E0 04 01 03 02 00 80 02 04 01 00 03 01 03 02 00 01 - .byte $02, $04, $03, $00, $03, $04, $01, $02, $00, $80, $80, $03, $04, $00, $04, $01 ; CPU:$B9F0 PRG:79F0 02 04 03 00 03 04 01 02 00 80 80 03 04 00 04 01 - .byte $02, $01, $00, $03, $01, $80, $03, $00, $03, $02, $01, $04, $00, $01, $04, $02 ; CPU:$BA00 PRG:7A00 02 01 00 03 01 80 03 00 03 02 01 04 00 01 04 02 - .byte $03, $00, $01, $01, $02, $04, $00, $04, $03, $01, $03, $00, $03, $02, $04, $02 ; CPU:$BA10 PRG:7A10 03 00 01 01 02 04 00 04 03 01 03 00 03 02 04 02 - .byte $00, $01, $80, $03, $01, $00, $02, $80, $02, $04, $00, $04, $01, $03, $04, $00 ; CPU:$BA20 PRG:7A20 00 01 80 03 01 00 02 80 02 04 00 04 01 03 04 00 - .byte $03, $02, $80, $02, $00, $04, $02, $01, $02, $03, $00, $03, $80, $04, $04, $01 ; CPU:$BA30 PRG:7A30 03 02 80 02 00 04 02 01 02 03 00 03 80 04 04 01 - .byte $00, $04, $02, $03, $80, $02, $00, $03, $01, $04, $01, $03, $00, $02, $80, $80 ; CPU:$BA40 PRG:7A40 00 04 02 03 80 02 00 03 01 04 01 03 00 02 80 80 - .byte $02, $04, $00, $01, $04, $02, $03, $02, $00, $03, $80, $01, $01, $04, $00, $04 ; CPU:$BA50 PRG:7A50 02 04 00 01 04 02 03 02 00 03 80 01 01 04 00 04 - .byte $01, $02, $03, $01, $00, $02, $03, $01, $80, $02, $00, $01, $80, $04, $03, $04 ; CPU:$BA60 PRG:7A60 01 02 03 01 00 02 03 01 80 02 00 01 80 04 03 04 - .byte $00, $04, $02, $01, $80, $02, $00, $03, $01, $03, $04, $01, $00, $04, $02, $80 ; CPU:$BA70 PRG:7A70 00 04 02 01 80 02 00 03 01 03 04 01 00 04 02 80 - .byte $02, $03, $00, $01, $03, $80, $04, $02, $00, $02, $01, $03, $04, $01, $00, $03 ; CPU:$BA80 PRG:7A80 02 03 00 01 03 80 04 02 00 02 01 03 04 01 00 03 - .byte $80, $04, $02, $03, $00, $02, $02, $03, $01, $04, $00, $01, $04, $80, $02, $03 ; CPU:$BA90 PRG:7A90 80 04 02 03 00 02 02 03 01 04 00 01 04 80 02 03 - .byte $00, $02, $80, $03, $04, $01, $00, $03, $01, $02, $80, $02, $00, $02, $04, $03 ; CPU:$BAA0 PRG:7AA0 00 02 80 03 04 01 00 03 01 02 80 02 00 02 04 03 - .byte $01, $03, $00, $04, $04, $01, $02, $03, $00, $02, $03, $80, $01, $04, $00, $01 ; CPU:$BAB0 PRG:7AB0 01 03 00 04 04 01 02 03 00 02 03 80 01 04 00 01 - .byte $01, $02, $03, $02, $00, $04, $03, $80, $01, $03, $00, $01, $80, $02, $04, $02 ; CPU:$BAC0 PRG:7AC0 01 02 03 02 00 04 03 80 01 03 00 01 80 02 04 02 - .byte $00, $03, $02, $01, $80, $01, $00, $04, $01, $03, $02, $04, $00, $01, $02, $03 ; CPU:$BAD0 PRG:7AD0 00 03 02 01 80 01 00 04 01 03 02 04 00 01 02 03 - .byte $04, $03, $02, $00, $03, $80, $04, $01, $03, $04, $00, $01, $01, $03, $04, $80 ; CPU:$BAE0 PRG:7AE0 04 03 02 00 03 80 04 01 03 04 00 01 01 03 04 80 - .byte $01, $00, $02, $04, $80, $01, $03, $04, $00, $03, $01, $02, $80, $04, $01, $00 ; CPU:$BAF0 PRG:7AF0 01 00 02 04 80 01 03 04 00 03 01 02 80 04 01 00 - .byte $02, $04, $03, $01, $02, $03, $00, $03, $01, $80, $03, $04, $01, $00, $04, $02 ; CPU:$BB00 PRG:7B00 02 04 03 01 02 03 00 03 01 80 03 04 01 00 04 02 - .byte $01, $03, $04, $04, $00, $01, $03, $04, $80, $02, $03, $00, $04, $02, $01, $80 ; CPU:$BB10 PRG:7B10 01 03 04 04 00 01 03 04 80 02 03 00 04 02 01 80 - .byte $03, $01, $00, $01, $04, $02, $80, $02, $01, $00, $04, $03, $01, $80, $03, $04 ; CPU:$BB20 PRG:7B20 03 01 00 01 04 02 80 02 01 00 04 03 01 80 03 04 - .byte $00, $01, $02, $03, $80, $02, $01, $00, $02, $04, $01, $04, $03, $04, $00, $03 ; CPU:$BB30 PRG:7B30 00 01 02 03 80 02 01 00 02 04 01 04 03 04 00 03 - .byte $01, $80, $01, $04, $03, $00, $02, $80, $04, $03, $02, $01, $00, $02, $04, $02 ; CPU:$BB40 PRG:7B40 01 80 01 04 03 00 02 80 04 03 02 01 00 02 04 02 - .byte $01, $04, $02, $00, $03, $01, $03, $02, $03, $01, $00, $02, $80, $04, $80, $04 ; CPU:$BB50 PRG:7B50 01 04 02 00 03 01 03 02 03 01 00 02 80 04 80 04 - .byte $02, $00, $03, $01, $02, $80, $03, $01, $00, $02, $03, $04, $02, $04, $03, $00 ; CPU:$BB60 PRG:7B60 02 00 03 01 02 80 03 01 00 02 03 04 02 04 03 00 - .byte $03, $01, $02, $04, $01, $04, $00, $02, $04, $01, $03, $02, $03, $00, $03, $03 ; CPU:$BB70 PRG:7B70 03 01 02 04 01 04 00 02 04 01 03 02 03 00 03 03 - .byte $02, $01, $04, $01, $00, $01, $80, $04, $03, $02, $03, $00, $80, $80, $02, $01 ; CPU:$BB80 PRG:7B80 02 01 04 01 00 01 80 04 03 02 03 00 80 80 02 01 - .byte $04, $02, $00, $02, $04, $03, $80, $80, $01, $00, $03, $01, $02, $01, $04, $03 ; CPU:$BB90 PRG:7B90 04 02 00 02 04 03 80 80 01 00 03 01 02 01 04 03 - .byte $00, $04, $01, $30, $30, $30, $30, $06, $01, $30, $30, $30, $30, $30, $30, $0A ; CPU:$BBA0 PRG:7BA0 00 04 01 30 30 30 30 06 01 30 30 30 30 30 30 0A - .byte $02, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BBB0 PRG:7BB0 02 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BBC0 PRG:7BC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BBD0 PRG:7BD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BBE0 PRG:7BE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BBF0 PRG:7BF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC00 PRG:7C00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC10 PRG:7C10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC20 PRG:7C20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC30 PRG:7C30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC40 PRG:7C40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC50 PRG:7C50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC60 PRG:7C60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC70 PRG:7C70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC80 PRG:7C80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BC90 PRG:7C90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BCA0 PRG:7CA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BCB0 PRG:7CB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BCC0 PRG:7CC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BCD0 PRG:7CD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BCE0 PRG:7CE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BCF0 PRG:7CF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD00 PRG:7D00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD10 PRG:7D10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD20 PRG:7D20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD30 PRG:7D30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD40 PRG:7D40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD50 PRG:7D50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD60 PRG:7D60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD70 PRG:7D70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD80 PRG:7D80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BD90 PRG:7D90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BDA0 PRG:7DA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BDB0 PRG:7DB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BDC0 PRG:7DC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BDD0 PRG:7DD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BDE0 PRG:7DE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BDF0 PRG:7DF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE00 PRG:7E00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE10 PRG:7E10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE20 PRG:7E20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE30 PRG:7E30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE40 PRG:7E40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE50 PRG:7E50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE60 PRG:7E60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE70 PRG:7E70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE80 PRG:7E80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BE90 PRG:7E90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BEA0 PRG:7EA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BEB0 PRG:7EB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BEC0 PRG:7EC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BED0 PRG:7ED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BEE0 PRG:7EE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BEF0 PRG:7EF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $A2, $FF, $9A, $78, $D8, $A9, $00, $8D, $00, $20, $8D, $01, $20, $A9, $30, $20 ; CPU:$BF00 PRG:7F00 A2 FF 9A 78 D8 A9 00 8D 00 20 8D 01 20 A9 30 20 - .byte $49, $FF, $20, $57, $FF, $90, $18, $A9, $10, $20, $49, $FF, $A9, $30, $20, $49 ; CPU:$BF10 PRG:7F10 49 FF 20 57 FF 90 18 A9 10 20 49 FF A9 30 20 49 - .byte $FF, $20, $4C, $FF, $20, $4C, $FF, $A9, $10, $20, $49, $FF, $4C, $3E, $FF, $A9 ; CPU:$BF20 PRG:7F20 FF 20 4C FF 20 4C FF A9 10 20 49 FF 4C 3E FF A9 - .byte $20, $20, $49, $FF, $A9, $30, $20, $49, $FF, $A9, $20, $20, $49, $FF, $A9, $30 ; CPU:$BF30 PRG:7F30 20 20 49 FF A9 30 20 49 FF A9 20 20 49 FF A9 30 - .byte $8D, $00, $41, $20, $62, $FF, $4C, $36, $80, $8D, $00, $41, $A0, $04, $A2, $CE ; CPU:$BF40 PRG:7F40 8D 00 41 20 62 FF 4C 36 80 8D 00 41 A0 04 A2 CE - .byte $CA, $D0, $FD, $88, $D0, $F8, $60, $A9, $41, $CD, $F0, $07, $D0, $02, $38, $60 ; CPU:$BF50 PRG:7F50 CA D0 FD 88 D0 F8 60 A9 41 CD F0 07 D0 02 38 60 - .byte $18, $60, $A9, $41, $8D, $F0, $07, $60, $A9, $5A, $8D, $F0, $07, $60, $FF, $FF ; CPU:$BF60 PRG:7F60 18 60 A9 41 8D F0 07 60 A9 5A 8D F0 07 60 FF FF - .byte $09, $30, $8D, $00, $41, $60, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BF70 PRG:7F70 09 30 8D 00 41 60 FF FF FF FF FF FF FF FF FF FF - .byte $48, $8A, $09, $30, $8D, $00, $41, $68, $60, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BF80 PRG:7F80 48 8A 09 30 8D 00 41 68 60 FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BF90 PRG:7F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BFA0 PRG:7FA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BFB0 PRG:7FB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BFC0 PRG:7FC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BFD0 PRG:7FD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$BFE0 PRG:7FE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $8F, $80, $00, $FF, $36, $80 ; CPU:$BFF0 PRG:7FF0 FF FF FF FF FF FF FF FF FF FF 8F 80 00 FF 36 80 +; ----------------------------------------------------------------------------- +; Routine: ClearNametableRam +; Global: Clears the nametable RAM the game writes to. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearNametableRam: + inc Zp61 ; CPU:$C000 PRG:4000 E6 61 + ldy #$00 ; CPU:$C002 PRG:4002 A0 00 + lda #$00 ; CPU:$C004 PRG:4004 A9 00 +; ----------------------------------------------------------------------------- +; Routine: ClearNametableRam_OnCarryClear +; Global: Branch target inside ClearNametableRam: taken when the addition or subtraction did not carry. +; Local: Part of ClearNametableRam. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearNametableRam_OnCarryClear: + sta $0400,y ; CPU:$C006 PRG:4006 99 00 04 + iny ; CPU:$C009 PRG:4009 C8 + cpy #$70 ; CPU:$C00A PRG:400A C0 70 + bcc ClearNametableRam_OnCarryClear ; CPU:$C00C PRG:400C 90 F8 +; ----------------------------------------------------------------------------- +; Routine: ClearNametableRam_Loop +; Global: Branch target inside ClearNametableRam: taken when the loop repeats. +; Local: Part of ClearNametableRam. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearNametableRam_Loop: + rts ; CPU:$C00E PRG:400E 60 +; ----------------------------------------------------------------------------- +; Routine: PlayStageMusic +; Global: Runs the stage script: the music, the waves and the timer. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayStageMusic: + lda FrameCounter ; CPU:$C00F PRG:400F A5 31 + ror a ; CPU:$C011 PRG:4011 6A + bcs PlayStageMusic_Loop ; CPU:$C012 PRG:4012 B0 01 + rts ; CPU:$C014 PRG:4014 60 +; ----------------------------------------------------------------------------- +; Routine: PlayStageMusic_Loop +; Global: Branch target inside PlayStageMusic: taken when the loop repeats. +; Local: Part of PlayStageMusic. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayStageMusic_Loop: + ldx Zp37 ; CPU:$C015 PRG:4015 A6 37 + ldy #$00 ; CPU:$C017 PRG:4017 A0 00 +; ----------------------------------------------------------------------------- +; Routine: PlayStageMusic_OnCarryClear +; Global: Branch target inside PlayStageMusic: taken when the addition or subtraction did not carry. +; Local: Part of PlayStageMusic. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayStageMusic_OnCarryClear: + lda $C046,y ; CPU:$C019 PRG:4019 B9 46 C0 + sta $0338,x ; CPU:$C01C PRG:401C 9D 38 03 + inx ; CPU:$C01F PRG:401F E8 + iny ; CPU:$C020 PRG:4020 C8 + cpy #$08 ; CPU:$C021 PRG:4021 C0 08 + bcc PlayStageMusic_OnCarryClear; CPU:$C023 PRG:4023 90 F4 + lda #$00 ; CPU:$C025 PRG:4025 A9 00 + sta $0338,x ; CPU:$C027 PRG:4027 9D 38 03 + lda Zp6F ; CPU:$C02A PRG:402A A5 6F + beq PlayStageMusic_Loop2 ; CPU:$C02C PRG:402C F0 07 + ldy Zp37 ; CPU:$C02E PRG:402E A4 37 + lda #$A7 ; CPU:$C030 PRG:4030 A9 A7 + sta $0338,y ; CPU:$C032 PRG:4032 99 38 03 +; ----------------------------------------------------------------------------- +; Routine: PlayStageMusic_Loop2 +; Global: Branch target inside PlayStageMusic: taken when Loop2. +; Local: Part of PlayStageMusic. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayStageMusic_Loop2: + stx Zp37 ; CPU:$C035 PRG:4035 86 37 + lda #$01 ; CPU:$C037 PRG:4037 A9 01 + sta Zp95 ; CPU:$C039 PRG:4039 85 95 + lda #$00 ; CPU:$C03B PRG:403B A9 00 + sta Zp5F ; CPU:$C03D PRG:403D 85 5F + sta Zp5E ; CPU:$C03F PRG:403F 85 5E + sta Zp91 ; CPU:$C041 PRG:4041 85 91 + inc Zp61 ; CPU:$C043 PRG:4043 E6 61 + rts ; CPU:$C045 PRG:4045 60 +; ---- data $C046-$C060 (27 bytes) ---- +; referenced by `lda $C046,y` at $C019 (operand $C046 falls inside this region) + .byte $A9, $21, $11, $F8, $D9, $23, $1B, $F8, $A9, $00, $85, $61, $A9, $0A, $85, $58 ; CPU:$C046 PRG:4046 A9 21 11 F8 D9 23 1B F8 A9 00 85 61 A9 0A 85 58 + .byte $60, $20, $DC, $BF, $A5, $61, $F0, $02, $E6, $6C, $60 ; CPU:$C056 PRG:4056 60 20 DC BF A5 61 F0 02 E6 6C 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_C061 +; Global: Branch target inside Sub: taken when C061. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_C061: + lda #$00 ; CPU:$C061 PRG:4061 A9 00 + tax ; CPU:$C063 PRG:4063 AA +; ----------------------------------------------------------------------------- +; Routine: PlayStageMusic_OnCarryClear2 +; Global: Branch target inside PlayStageMusic: taken when OnCarryClear2. +; Local: Part of PlayStageMusic. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayStageMusic_OnCarryClear2: + sta Zp60,x ; CPU:$C064 PRG:4064 95 60 + inx ; CPU:$C066 PRG:4066 E8 + cpx #$0A ; CPU:$C067 PRG:4067 E0 0A + bcc PlayStageMusic_OnCarryClear2 ; CPU:$C069 PRG:4069 90 F9 + lda #$FF ; CPU:$C06B PRG:406B A9 FF + sta Zp65 ; CPU:$C06D PRG:406D 85 65 + rts ; CPU:$C06F PRG:406F 60 +; ---- data $C070-$C0F1 (130 bytes) ---- + .byte $A5, $26, $C9, $C0, $D0, $02, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A2 ; CPU:$C070 PRG:4070 A5 26 C9 C0 D0 02 E6 61 60 A5 31 6A B0 01 60 A2 + .byte $00, $BD, $96, $C0, $9D, $38, $03, $E8, $E0, $08, $90, $F5, $A9, $00, $9D, $38 ; CPU:$C080 PRG:4080 00 BD 96 C0 9D 38 03 E8 E0 08 90 F5 A9 00 9D 38 + .byte $03, $85, $95, $E6, $61, $60, $A7, $21, $25, $F8, $D9, $23, $20, $F8, $A5, $31 ; CPU:$C090 PRG:4090 03 85 95 E6 61 60 A7 21 25 F8 D9 23 20 F8 A5 31 + .byte $6A, $B0, $01, $60, $A0, $00, $A6, $37, $B9, $E0, $C0, $9D, $38, $03, $E8, $C8 ; CPU:$C0A0 PRG:40A0 6A B0 01 60 A0 00 A6 37 B9 E0 C0 9D 38 03 E8 C8 + .byte $C0, $0D, $90, $F4, $86, $37, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A0 ; CPU:$C0B0 PRG:40B0 C0 0D 90 F4 86 37 E6 61 60 A5 31 6A B0 01 60 A0 + .byte $00, $A6, $37, $B9, $ED, $C0, $9D, $38, $03, $E8, $C8, $C0, $05, $90, $F4, $86 ; CPU:$C0C0 PRG:40C0 00 A6 37 B9 ED C0 9D 38 03 E8 C8 C0 05 90 F4 86 + .byte $37, $20, $61, $C0, $20, $03, $97, $A9, $09, $85, $60, $A9, $00, $85, $61, $60 ; CPU:$C0D0 PRG:40D0 37 20 61 C0 20 03 97 A9 09 85 60 A9 00 85 61 60 + .byte $22, $23, $A1, $FB, $42, $23, $A1, $FB, $2A, $23, $A7, $FB, $00, $46, $23, $AF ; CPU:$C0E0 PRG:40E0 22 23 A1 FB 42 23 A1 FB 2A 23 A7 FB 00 46 23 AF + .byte $FB, $00 ; CPU:$C0F0 PRG:40F0 FB 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_C0F2 +; Global: Branch target inside Sub: taken when C0F2. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_C0F2: + lda Zp5E ; CPU:$C0F2 PRG:40F2 A5 5E + bne PlayStageMusic_Loop3 ; CPU:$C0F4 PRG:40F4 D0 18 + jsr Sub_8552 ; CPU:$C0F6 PRG:40F6 20 52 85 + lda Zp3D ; CPU:$C0F9 PRG:40F9 A5 3D + and #$03 ; CPU:$C0FB PRG:40FB 29 03 + tay ; CPU:$C0FD PRG:40FD A8 + ldx #$00 ; CPU:$C0FE PRG:40FE A2 00 +; ----------------------------------------------------------------------------- +; Routine: PlayStageMusic_OnCarryClear3 +; Global: Branch target inside PlayStageMusic: taken when OnCarryClear3. +; Local: Part of PlayStageMusic. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayStageMusic_OnCarryClear3: + lda $C137,y ; CPU:$C100 PRG:4100 B9 37 C1 + sta $05DA,x ; CPU:$C103 PRG:4103 9D DA 05 + iny ; CPU:$C106 PRG:4106 C8 + inx ; CPU:$C107 PRG:4107 E8 + cpx #$05 ; CPU:$C108 PRG:4108 E0 05 + bcc PlayStageMusic_OnCarryClear3 ; CPU:$C10A PRG:410A 90 F4 + stx Zp5E ; CPU:$C10C PRG:410C 86 5E +; ----------------------------------------------------------------------------- +; Routine: PlayStageMusic_Loop3 +; Global: Branch target inside PlayStageMusic: taken when Loop3. +; Local: Part of PlayStageMusic. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayStageMusic_Loop3: + ldx Zp5E ; CPU:$C10E PRG:410E A6 5E + lda $05D9,x ; CPU:$C110 PRG:4110 BD D9 05 + clc ; CPU:$C113 PRG:4113 18 + adc #$07 ; CPU:$C114 PRG:4114 69 07 + sta Zp11 ; CPU:$C116 PRG:4116 85 11 + lda #$00 ; CPU:$C118 PRG:4118 A9 00 + sta Zp12 ; CPU:$C11A PRG:411A 85 12 + jsr Sub_855D ; CPU:$C11C PRG:411C 20 5D 85 + jsr Sub_8552 ; CPU:$C11F PRG:411F 20 52 85 + lda Zp3D ; CPU:$C122 PRG:4122 A5 3D + and #$03 ; CPU:$C124 PRG:4124 29 03 + sta Zp64 ; CPU:$C126 PRG:4126 85 64 + inc Zp64 ; CPU:$C128 PRG:4128 E6 64 + ldx Zp65 ; CPU:$C12A PRG:412A A6 65 + bmi PlayStageMusic_Loop4 ; CPU:$C12C PRG:412C 30 08 + lda $0400,x ; CPU:$C12E PRG:412E BD 00 04 + and #$BF ; CPU:$C131 PRG:4131 29 BF + sta $0400,x ; CPU:$C133 PRG:4133 9D 00 04 +; ----------------------------------------------------------------------------- +; Routine: PlayStageMusic_Loop4 +; Global: Branch target inside PlayStageMusic: taken when Loop4. +; Local: Part of PlayStageMusic. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayStageMusic_Loop4: + rts ; CPU:$C136 PRG:4136 60 +; ---- data $C137-$C13F (9 bytes) ---- +; referenced by `lda $C137,y` at $C100 (operand $C137 falls inside this region) + .byte $02, $00, $04, $03, $01, $02, $00, $04, $03 ; CPU:$C137 PRG:4137 02 00 04 03 01 02 00 04 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_C140 +; Global: Branch target inside Sub: taken when C140. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_C140: + lda #$02 ; CPU:$C140 PRG:4140 A9 02 + sta Zp64 ; CPU:$C142 PRG:4142 85 64 + lda #$05 ; CPU:$C144 PRG:4144 A9 05 + sta Zp11 ; CPU:$C146 PRG:4146 85 11 + lda #$02 ; CPU:$C148 PRG:4148 A9 02 + sta Zp12 ; CPU:$C14A PRG:414A 85 12 + jsr Sub_855D ; CPU:$C14C PRG:414C 20 5D 85 + lda #$00 ; CPU:$C14F PRG:414F A9 00 + sta Zp63 ; CPU:$C151 PRG:4151 85 63 + ldx Zp65 ; CPU:$C153 PRG:4153 A6 65 + bmi PlayStageMusic_Loop5 ; CPU:$C155 PRG:4155 30 17 + lda $0400,x ; CPU:$C157 PRG:4157 BD 00 04 + and #$BF ; CPU:$C15A PRG:415A 29 BF + sta $0400,x ; CPU:$C15C PRG:415C 9D 00 04 + lda #$FF ; CPU:$C15F PRG:415F A9 FF + sta Zp65 ; CPU:$C161 PRG:4161 85 65 + lda #$00 ; CPU:$C163 PRG:4163 A9 00 + sta Zp11 ; CPU:$C165 PRG:4165 85 11 + lda #$00 ; CPU:$C167 PRG:4167 A9 00 + sta Zp12 ; CPU:$C169 PRG:4169 85 12 + jsr Sub_855D ; CPU:$C16B PRG:416B 20 5D 85 +; ----------------------------------------------------------------------------- +; Routine: PlayStageMusic_Loop5 +; Global: Branch target inside PlayStageMusic: taken when Loop5. +; Local: Part of PlayStageMusic. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +PlayStageMusic_Loop5: + rts ; CPU:$C16E PRG:416E 60 +; ---- data $C16F-$C2A6 (312 bytes) ---- + .byte $A5, $31, $6A, $B0, $01, $60, $A5, $61, $D0, $11, $E6, $61, $A9, $01, $8D, $E3 ; CPU:$C16F PRG:416F A5 31 6A B0 01 60 A5 61 D0 11 E6 61 A9 01 8D E3 + .byte $00, $A9, $05, $8D, $E2, $00, $A9, $04, $20, $04, $80, $C9, $01, $D0, $4A, $A9 ; CPU:$C17F PRG:417F 00 A9 05 8D E2 00 A9 04 20 04 80 C9 01 D0 4A A9 + .byte $05, $85, $11, $A9, $03, $85, $12, $20, $5D, $85, $A5, $3F, $0A, $AA, $BD, $87 ; CPU:$C18F PRG:418F 05 85 11 A9 03 85 12 20 5D 85 A5 3F 0A AA BD 87 + .byte $F8, $18, $6D, $8A, $03, $8D, $8B, $03, $BD, $88, $F8, $18, $6D, $9A, $03, $8D ; CPU:$C19F PRG:419F F8 18 6D 8A 03 8D 8B 03 BD 88 F8 18 6D 9A 03 8D + .byte $9B, $03, $A5, $31, $6A, $29, $03, $85, $20, $AD, $AA, $03, $29, $FC, $05, $20 ; CPU:$C1AF PRG:41AF 9B 03 A5 31 6A 29 03 85 20 AD AA 03 29 FC 05 20 + .byte $8D, $AA, $03, $8D, $AB, $03, $E6, $3F, $A5, $3F, $C9, $18, $D0, $0A, $A9, $00 ; CPU:$C1BF PRG:41BF 8D AA 03 8D AB 03 E6 3F A5 3F C9 18 D0 0A A9 00 + .byte $85, $3F, $C6, $56, $D0, $02, $E6, $61, $60, $C9, $02, $D0, $6D, $A5, $4E, $8D ; CPU:$C1CF PRG:41CF 85 3F C6 56 D0 02 E6 61 60 C9 02 D0 6D A5 4E 8D + .byte $22, $05, $AA, $20, $52, $85, $A5, $3D, $29, $03, $85, $64, $E6, $64, $A5, $64 ; CPU:$C1DF PRG:41DF 22 05 AA 20 52 85 A5 3D 29 03 85 64 E6 64 A5 64 + .byte $9D, $00, $04, $A0, $01, $84, $25, $AD, $22, $05, $29, $10, $F0, $04, $A9, $07 ; CPU:$C1EF PRG:41EF 9D 00 04 A0 01 84 25 AD 22 05 29 10 F0 04 A9 07 + .byte $85, $25, $A9, $01, $85, $21, $A9, $06, $85, $1F, $A4, $25, $B9, $7A, $F8, $E6 ; CPU:$C1FF PRG:41FF 85 25 A9 01 85 21 A9 06 85 1F A4 25 B9 7A F8 E6 + .byte $25, $18, $6D, $22, $05, $AA, $29, $0F, $C9, $0D, $B0, $20, $8A, $29, $F0, $C9 ; CPU:$C20F PRG:420F 25 18 6D 22 05 AA 29 0F C9 0D B0 20 8A 29 F0 C9 + .byte $70, $B0, $19, $BD, $00, $04, $29, $07, $D0, $05, $9D, $00, $04, $F0, $05, $A5 ; CPU:$C21F PRG:421F 70 B0 19 BD 00 04 29 07 D0 05 9D 00 04 F0 05 A5 + .byte $64, $9D, $00, $04, $8A, $A6, $21, $9D, $22, $05, $E6, $21, $C6, $1F, $D0, $CA ; CPU:$C22F PRG:422F 64 9D 00 04 8A A6 21 9D 22 05 E6 21 C6 1F D0 CA + .byte $A6, $21, $A9, $FF, $9D, $22, $05, $E6, $61, $60, $C9, $03, $D0, $47, $A0, $00 ; CPU:$C23F PRG:423F A6 21 A9 FF 9D 22 05 E6 61 60 C9 03 D0 47 A0 00 + .byte $84, $22, $A4, $22, $B9, $22, $05, $30, $22, $85, $21, $20, $BF, $84, $A6, $21 ; CPU:$C24F PRG:424F 84 22 A4 22 B9 22 05 30 22 85 21 20 BF 84 A6 21 + .byte $BD, $00, $04, $85, $1B, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85 ; CPU:$C25F PRG:425F BD 00 04 85 1B 0A AA BD 9E F2 85 17 BD 9F F2 85 + .byte $18, $20, $8A, $85, $20, $E3, $84, $E6, $22, $10, $D7, $A6, $36, $A9, $00, $9D ; CPU:$C26F PRG:426F 18 20 8A 85 20 E3 84 E6 22 10 D7 A6 36 A9 00 9D + .byte $00, $03, $A9, $00, $85, $11, $A9, $02, $85, $12, $20, $5D, $85, $E6, $12, $20 ; CPU:$C27F PRG:427F 00 03 A9 00 85 11 A9 02 85 12 20 5D 85 E6 12 20 + .byte $5D, $85, $E6, $61, $60, $E6, $61, $A5, $61, $C9, $0F, $90, $0A, $A9, $00, $85 ; CPU:$C28F PRG:428F 5D 85 E6 61 60 E6 61 A5 61 C9 0F 90 0A A9 00 85 + .byte $61, $85, $66, $85, $64, $E6, $60, $60 ; CPU:$C29F PRG:429F 61 85 66 85 64 E6 60 60 +; ----------------------------------------------------------------------------- +; Routine: DispatchLevelScript +; Global: Jumps to the level script step the game is on. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DispatchLevelScript: + lda Zp6C ; CPU:$C2A7 PRG:42A7 A5 6C + jsr DispatchByJumpTable ; CPU:$C2A9 PRG:42A9 20 73 81 +; ---- data $C2AC-$C2BE (19 bytes) ---- +; referenced by `lda $C2BE,x` at $C2C9 (operand $C2BE falls inside this region) +; referenced by `sta $C2BE,x` at $C2CC (operand $C2BE falls inside this region) + .byte $BF, $C2, $C8, $C3, $56, $C4, $69, $C4, $9D, $C4, $E7, $C4, $05, $C5, $24, $C7 ; CPU:$C2AC PRG:42AC BF C2 C8 C3 56 C4 69 C4 9D C4 E7 C4 05 C5 24 C7 + .byte $7E, $C7, $01 ; CPU:$C2BC PRG:42BC 7E C7 01 +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles +; Global: Turns the PPU off and loads the tile set. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles: + lda #$00 ; CPU:$C2BF PRG:42BF A9 00 + sta PPUCTRL ; CPU:$C2C1 PRG:42C1 8D 00 20 + sta PPUMASK ; CPU:$C2C4 PRG:42C4 8D 01 20 + ldx #$00 ; CPU:$C2C7 PRG:42C7 A2 00 + lda $C2BE,x ; CPU:$C2C9 PRG:42C9 BD BE C2 + sta $C2BE,x ; CPU:$C2CC PRG:42CC 9D BE C2 + sta PrgBankNumber ; CPU:$C2CF PRG:42CF 85 2C + lda #$F1 ; CPU:$C2D1 PRG:42D1 A9 F1 + sta Zp12 ; CPU:$C2D3 PRG:42D3 85 12 + lda #$E6 ; CPU:$C2D5 PRG:42D5 A9 E6 + sta Zp11 ; CPU:$C2D7 PRG:42D7 85 11 + jsr Sub_85C4 ; CPU:$C2D9 PRG:42D9 20 C4 85 + lda Zp5A ; CPU:$C2DC PRG:42DC A5 5A + asl a ; CPU:$C2DE PRG:42DE 0A + tax ; CPU:$C2DF PRG:42DF AA + lda $F45C,x ; CPU:$C2E0 PRG:42E0 BD 5C F4 + sta Zp39 ; CPU:$C2E3 PRG:42E3 85 39 + lda $F45D,x ; CPU:$C2E5 PRG:42E5 BD 5D F4 + sta Zp3A ; CPU:$C2E8 PRG:42E8 85 3A + lda Zp5C ; CPU:$C2EA PRG:42EA A5 5C + asl a ; CPU:$C2EC PRG:42EC 0A + tax ; CPU:$C2ED PRG:42ED AA + lda $F45C,x ; CPU:$C2EE PRG:42EE BD 5C F4 + sta Zp3B ; CPU:$C2F1 PRG:42F1 85 3B + lda $F45D,x ; CPU:$C2F3 PRG:42F3 BD 5D F4 + sta Zp3C ; CPU:$C2F6 PRG:42F6 85 3C + lda Zp6F ; CPU:$C2F8 PRG:42F8 A5 6F + bne ResetPpuAndLoadTiles_Loop2 ; CPU:$C2FA PRG:42FA D0 42 + ldy #$07 ; CPU:$C2FC PRG:42FC A0 07 + lda #$22 ; CPU:$C2FE PRG:42FE A9 22 + sta Zp1A ; CPU:$C300 PRG:4300 85 1A + lda #$76 ; CPU:$C302 PRG:4302 A9 76 + sta Zp19 ; CPU:$C304 PRG:4304 85 19 + ldx #$06 ; CPU:$C306 PRG:4306 A2 06 +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_OnNonzero +; Global: Branch target inside ResetPpuAndLoadTiles: taken when the tested value is not zero. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_OnNonzero: + stx Zp21 ; CPU:$C308 PRG:4308 86 21 + lda PPUSTATUS ; CPU:$C30A PRG:430A AD 02 20 + lda Zp1A ; CPU:$C30D PRG:430D A5 1A + sta PPUADDR ; CPU:$C30F PRG:430F 8D 06 20 + lda Zp19 ; CPU:$C312 PRG:4312 A5 19 + sta PPUADDR ; CPU:$C314 PRG:4314 8D 06 20 + lda #$FF ; CPU:$C317 PRG:4317 A9 FF +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_OnNonzero2 +; Global: Branch target inside ResetPpuAndLoadTiles: taken when OnNonzero2. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_OnNonzero2: + sta PPUDATA ; CPU:$C319 PRG:4319 8D 07 20 + dec Zp21 ; CPU:$C31C PRG:431C C6 21 + bne ResetPpuAndLoadTiles_OnNonzero2 ; CPU:$C31E PRG:431E D0 F9 + lda Zp19 ; CPU:$C320 PRG:4320 A5 19 + clc ; CPU:$C322 PRG:4322 18 + adc #$20 ; CPU:$C323 PRG:4323 69 20 + sta Zp19 ; CPU:$C325 PRG:4325 85 19 + bcc ResetPpuAndLoadTiles_Loop ; CPU:$C327 PRG:4327 90 02 + inc Zp1A ; CPU:$C329 PRG:4329 E6 1A +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_Loop +; Global: Branch target inside ResetPpuAndLoadTiles: taken when the loop repeats. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_Loop: + dey ; CPU:$C32B PRG:432B 88 + bne ResetPpuAndLoadTiles_OnNonzero ; CPU:$C32C PRG:432C D0 DA + lda #$3A ; CPU:$C32E PRG:432E A9 3A + sta Zp19 ; CPU:$C330 PRG:4330 85 19 + lda #$21 ; CPU:$C332 PRG:4332 A9 21 + sta Zp1A ; CPU:$C334 PRG:4334 85 1A + jsr Sub_C5D2 ; CPU:$C336 PRG:4336 20 D2 C5 +; ---- data $C339-$C33D (5 bytes) ---- + .byte $A9, $00, $9D, $38, $03 ; CPU:$C339 PRG:4339 A9 00 9D 38 03 +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_Loop2 +; Global: Branch target inside ResetPpuAndLoadTiles: taken when Loop2. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_Loop2: + lda Zp6F ; CPU:$C33E PRG:433E A5 6F + beq ResetPpuAndLoadTiles_Loop3 ; CPU:$C340 PRG:4340 F0 3B + lda PPUSTATUS ; CPU:$C342 PRG:4342 AD 02 20 + lda Zp01 ; CPU:$C345 PRG:4345 A5 01 + ora #$04 ; CPU:$C347 PRG:4347 09 04 + sta PPUCTRL ; CPU:$C349 PRG:4349 8D 00 20 + lda #$24 ; CPU:$C34C PRG:434C A9 24 + sta PPUADDR ; CPU:$C34E PRG:434E 8D 06 20 + lda #$00 ; CPU:$C351 PRG:4351 A9 00 + sta PPUADDR ; CPU:$C353 PRG:4353 8D 06 20 + tay ; CPU:$C356 PRG:4356 A8 +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_OnCarryClear +; Global: Branch target inside ResetPpuAndLoadTiles: taken when the addition or subtraction did not carry. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_OnCarryClear: + lda $C697,y ; CPU:$C357 PRG:4357 B9 97 C6 + sta PPUDATA ; CPU:$C35A PRG:435A 8D 07 20 + iny ; CPU:$C35D PRG:435D C8 + cpy #$1E ; CPU:$C35E PRG:435E C0 1E + bcc ResetPpuAndLoadTiles_OnCarryClear ; CPU:$C360 PRG:4360 90 F5 + ldx #$C0 ; CPU:$C362 PRG:4362 A2 C0 + ldy #$55 ; CPU:$C364 PRG:4364 A0 55 +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_OnNonzero3 +; Global: Branch target inside ResetPpuAndLoadTiles: taken when OnNonzero3. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_OnNonzero3: + lda PPUSTATUS ; CPU:$C366 PRG:4366 AD 02 20 + lda #$27 ; CPU:$C369 PRG:4369 A9 27 + sta PPUADDR ; CPU:$C36B PRG:436B 8D 06 20 + stx PPUADDR ; CPU:$C36E PRG:436E 8E 06 20 + sty PPUDATA ; CPU:$C371 PRG:4371 8C 07 20 + txa ; CPU:$C374 PRG:4374 8A + clc ; CPU:$C375 PRG:4375 18 + adc #$08 ; CPU:$C376 PRG:4376 69 08 + tax ; CPU:$C378 PRG:4378 AA + cmp #$F8 ; CPU:$C379 PRG:4379 C9 F8 + bne ResetPpuAndLoadTiles_OnNonzero3 ; CPU:$C37B PRG:437B D0 E9 +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_Loop3 +; Global: Branch target inside ResetPpuAndLoadTiles: taken when Loop3. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_Loop3: + lda #$02 ; CPU:$C37D PRG:437D A9 02 + jsr ClearSpriteSlots ; CPU:$C37F PRG:437F 20 28 92 + jsr Sub_CD59 ; CPU:$C382 PRG:4382 20 59 CD + inc Zp6C ; CPU:$C385 PRG:4385 E6 6C + lda $05E5 ; CPU:$C387 PRG:4387 AD E5 05 + bne ResetPpuAndLoadTiles_Loop4 ; CPU:$C38A PRG:438A D0 19 + lda #$03 ; CPU:$C38C PRG:438C A9 03 + jsr BankedCall ; CPU:$C38E PRG:438E 20 04 80 + lda #$01 ; CPU:$C391 PRG:4391 A9 01 + sta a:$00DD ; CPU:$C393 PRG:4393 8D DD 00 + lda Zp73 ; CPU:$C396 PRG:4396 A5 73 + sta a:$00DE ; CPU:$C398 PRG:4398 8D DE 00 + lda #$05 ; CPU:$C39B PRG:439B A9 05 + jsr BankedCall ; CPU:$C39D PRG:439D 20 04 80 + lda #$00 ; CPU:$C3A0 PRG:43A0 A9 00 + sta a:$00DD ; CPU:$C3A2 PRG:43A2 8D DD 00 +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_Loop4 +; Global: Branch target inside ResetPpuAndLoadTiles: taken when Loop4. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_Loop4: + lda #$88 ; CPU:$C3A5 PRG:43A5 A9 88 + sta Zp01 ; CPU:$C3A7 PRG:43A7 85 01 + lda Zp02 ; CPU:$C3A9 PRG:43A9 A5 02 + ora #$18 ; CPU:$C3AB PRG:43AB 09 18 + sta Zp02 ; CPU:$C3AD PRG:43AD 85 02 + lda Zp6F ; CPU:$C3AF PRG:43AF A5 6F + beq ResetPpuAndLoadTiles_Loop5 ; CPU:$C3B1 PRG:43B1 F0 04 + lda #$0C ; CPU:$C3B3 PRG:43B3 A9 0C + sta Zp03 ; CPU:$C3B5 PRG:43B5 85 03 +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_Loop5 +; Global: Branch target inside ResetPpuAndLoadTiles: taken when Loop5. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_Loop5: + lda Zp71 ; CPU:$C3B7 PRG:43B7 A5 71 + cmp #$01 ; CPU:$C3B9 PRG:43B9 C9 01 + beq ResetPpuAndLoadTiles_Loop6 ; CPU:$C3BB PRG:43BB F0 06 + lda $05E5 ; CPU:$C3BD PRG:43BD AD E5 05 + bne ResetPpuAndLoadTiles_Loop6 ; CPU:$C3C0 PRG:43C0 D0 01 + rts ; CPU:$C3C2 PRG:43C2 60 +; ----------------------------------------------------------------------------- +; Routine: ResetPpuAndLoadTiles_Loop6 +; Global: Branch target inside ResetPpuAndLoadTiles: taken when Loop6. +; Local: Part of ResetPpuAndLoadTiles. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetPpuAndLoadTiles_Loop6: + lda #$06 ; CPU:$C3C3 PRG:43C3 A9 06 + sta Zp6C ; CPU:$C3C5 PRG:43C5 85 6C + rts ; CPU:$C3C7 PRG:43C7 60 +; ----------------------------------------------------------------------------- +; Routine: SetVramPointer +; Global: Points the VRAM pointer at the tile set. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetVramPointer: + lda #$87 ; CPU:$C3C8 PRG:43C8 A9 87 + sta Zp19 ; CPU:$C3CA PRG:43CA 85 19 + lda #$21 ; CPU:$C3CC PRG:43CC A9 21 + sta Zp1A ; CPU:$C3CE PRG:43CE 85 1A + lda $C6D0 ; CPU:$C3D0 PRG:43D0 AD D0 C6 + sta Zp17 ; CPU:$C3D3 PRG:43D3 85 17 + lda $C6D1 ; CPU:$C3D5 PRG:43D5 AD D1 C6 + sta Zp18 ; CPU:$C3D8 PRG:43D8 85 18 + lda Zp6F ; CPU:$C3DA PRG:43DA A5 6F + beq SetVramPointer_Loop ; CPU:$C3DC PRG:43DC F0 04 + dec Zp19 ; CPU:$C3DE PRG:43DE C6 19 + dec Zp19 ; CPU:$C3E0 PRG:43E0 C6 19 +; ----------------------------------------------------------------------------- +; Routine: SetVramPointer_Loop +; Global: Branch target inside SetVramPointer: taken when the loop repeats. +; Local: Part of SetVramPointer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetVramPointer_Loop: + jsr Sub_85A7 ; CPU:$C3E2 PRG:43E2 20 A7 85 + lda #$D9 ; CPU:$C3E5 PRG:43E5 A9 D9 + sta Zp19 ; CPU:$C3E7 PRG:43E7 85 19 + lda #$23 ; CPU:$C3E9 PRG:43E9 A9 23 + sta Zp1A ; CPU:$C3EB PRG:43EB 85 1A + lda $C6D2 ; CPU:$C3ED PRG:43ED AD D2 C6 + sta Zp17 ; CPU:$C3F0 PRG:43F0 85 17 + lda $C6D3 ; CPU:$C3F2 PRG:43F2 AD D3 C6 + sta Zp18 ; CPU:$C3F5 PRG:43F5 85 18 + jsr Sub_85A7 ; CPU:$C3F7 PRG:43F7 20 A7 85 + lda #$8C ; CPU:$C3FA PRG:43FA A9 8C + sta Zp19 ; CPU:$C3FC PRG:43FC 85 19 + lda #$21 ; CPU:$C3FE PRG:43FE A9 21 + sta Zp1A ; CPU:$C400 PRG:4400 85 1A + lda Zp6F ; CPU:$C402 PRG:4402 A5 6F + beq SetVramPointer_Loop2 ; CPU:$C404 PRG:4404 F0 04 + dec Zp19 ; CPU:$C406 PRG:4406 C6 19 + dec Zp19 ; CPU:$C408 PRG:4408 C6 19 +; ----------------------------------------------------------------------------- +; Routine: SetVramPointer_Loop2 +; Global: Branch target inside SetVramPointer: taken when Loop2. +; Local: Part of SetVramPointer. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetVramPointer_Loop2: + jsr Sub_C5D2 ; CPU:$C40A PRG:440A 20 D2 C5 +; ---- data $C40D-$C413 (7 bytes) ---- + .byte $A5, $6F, $F0, $03, $20, $20, $C4 ; CPU:$C40D PRG:440D A5 6F F0 03 20 20 C4 +; ----------------------------------------------------------------------------- +; Routine: ClearSpriteEntry +; Global: Clears one entry of the sprite table. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ClearSpriteEntry: + lda #$00 ; CPU:$C414 PRG:4414 A9 00 + sta $0338,x ; CPU:$C416 PRG:4416 9D 38 03 + inc Zp6C ; CPU:$C419 PRG:4419 E6 6C + lda #$3C ; CPU:$C41B PRG:441B A9 3C + sta Zp56 ; CPU:$C41D PRG:441D 85 56 + rts ; CPU:$C41F PRG:441F 60 +; ---- data $C420-$C455 (54 bytes) ---- + .byte $A9, $95, $85, $19, $A9, $21, $85, $1A, $AD, $D0, $C6, $85, $17, $AD, $D1, $C6 ; CPU:$C420 PRG:4420 A9 95 85 19 A9 21 85 1A AD D0 C6 85 17 AD D1 C6 + .byte $85, $18, $20, $A7, $85, $A9, $DD, $85, $19, $A9, $23, $85, $1A, $AD, $D2, $C6 ; CPU:$C430 PRG:4430 85 18 20 A7 85 A9 DD 85 19 A9 23 85 1A AD D2 C6 + .byte $85, $17, $AD, $D3, $C6, $85, $18, $20, $A7, $85, $A9, $9A, $85, $19, $A9, $21 ; CPU:$C440 PRG:4440 85 17 AD D3 C6 85 18 20 A7 85 A9 9A 85 19 A9 21 + .byte $85, $1A, $20, $FE, $C5, $60 ; CPU:$C450 PRG:4450 85 1A 20 FE C5 60 +; ----------------------------------------------------------------------------- +; Routine: TickStageDelay +; Global: Counts the delay between two stage script steps. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickStageDelay: + lda NewButton1 ; CPU:$C456 PRG:4456 A5 2A + and #$10 ; CPU:$C458 PRG:4458 29 10 + bne TickStageDelay_Loop ; CPU:$C45A PRG:445A D0 04 + dec Zp56 ; CPU:$C45C PRG:445C C6 56 + bne TickStageDelay_Loop2 ; CPU:$C45E PRG:445E D0 08 +; ----------------------------------------------------------------------------- +; Routine: TickStageDelay_Loop +; Global: Branch target inside TickStageDelay: taken when the loop repeats. +; Local: Part of TickStageDelay. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickStageDelay_Loop: + lda #$06 ; CPU:$C460 PRG:4460 A9 06 + sta Zp6C ; CPU:$C462 PRG:4462 85 6C + lda #$00 ; CPU:$C464 PRG:4464 A9 00 + sta Zp56 ; CPU:$C466 PRG:4466 85 56 +; ----------------------------------------------------------------------------- +; Routine: TickStageDelay_Loop2 +; Global: Branch target inside TickStageDelay: taken when Loop2. +; Local: Part of TickStageDelay. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickStageDelay_Loop2: + rts ; CPU:$C468 PRG:4468 60 +; ---- data $C469-$C504 (156 bytes) ---- + .byte $A5, $2A, $F0, $15, $A6, $58, $30, $12, $BD, $99, $C4, $C5, $2A, $D0, $0B, $E6 ; CPU:$C469 PRG:4469 A5 2A F0 15 A6 58 30 12 BD 99 C4 C5 2A D0 0B E6 + .byte $58, $A5, $58, $C9, $04, $90, $02, $E6, $6C, $60, $A9, $FF, $85, $58, $A5, $2A ; CPU:$C479 PRG:4479 58 A5 58 C9 04 90 02 E6 6C 60 A9 FF 85 58 A5 2A + .byte $29, $10, $F0, $F5, $A9, $00, $85, $3E, $20, $1B, $98, $A9, $06, $85, $6C, $60 ; CPU:$C489 PRG:4489 29 10 F0 F5 A9 00 85 3E 20 1B 98 A9 06 85 6C 60 + .byte $08, $01, $04, $02, $A0, $05, $84, $20, $A5, $2A, $29, $10, $F0, $03, $E6, $6C ; CPU:$C499 PRG:4499 08 01 04 02 A0 05 84 20 A5 2A 29 10 F0 03 E6 6C + .byte $60, $A5, $2A, $29, $80, $F0, $0C, $E6, $5B, $A5, $5B, $C5, $20, $90, $04, $A9 ; CPU:$C4A9 PRG:44A9 60 A5 2A 29 80 F0 0C E6 5B A5 5B C5 20 90 04 A9 + .byte $00, $85, $5B, $A5, $2A, $29, $40, $F0, $0C, $E6, $5A, $A5, $5A, $C9, $04, $90 ; CPU:$C4B9 PRG:44B9 00 85 5B A5 2A 29 40 F0 0C E6 5A A5 5A C9 04 90 + .byte $04, $A9, $00, $85, $5A, $A9, $8C, $85, $19, $A9, $21, $85, $1A, $A5, $6F, $F0 ; CPU:$C4C9 PRG:44C9 04 A9 00 85 5A A9 8C 85 19 A9 21 85 1A A5 6F F0 + .byte $04, $C6, $19, $C6, $19, $20, $D2, $C5, $A9, $00, $9D, $38, $03, $60, $A5, $2A ; CPU:$C4D9 PRG:44D9 04 C6 19 C6 19 20 D2 C5 A9 00 9D 38 03 60 A5 2A + .byte $29, $10, $F0, $17, $A9, $00, $85, $3E, $20, $88, $81, $A5, $5A, $85, $5C, $A5 ; CPU:$C4E9 PRG:44E9 29 10 F0 17 A9 00 85 3E 20 88 81 A5 5A 85 5C A5 + .byte $5B, $85, $5D, $A9, $09, $85, $6A, $A9, $05, $85, $6C, $60 ; CPU:$C4F9 PRG:44F9 5B 85 5D A9 09 85 6A A9 05 85 6C 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode +; Global: Updates the mode the stage script is in. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode: + lda Zp71 ; CPU:$C505 PRG:4505 A5 71 + cmp #$01 ; CPU:$C507 PRG:4507 C9 01 + beq UpdateStageMode_Loop5 ; CPU:$C509 PRG:4509 F0 50 + lda #$08 ; CPU:$C50B PRG:450B A9 08 + ldy Zp95 ; CPU:$C50D PRG:450D A4 95 + beq UpdateStageMode_Loop ; CPU:$C50F PRG:450F F0 02 + lda #$04 ; CPU:$C511 PRG:4511 A9 04 +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode_Loop +; Global: Branch target inside UpdateStageMode: taken when the loop repeats. +; Local: Part of UpdateStageMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode_Loop: + sta Zp1F ; CPU:$C513 PRG:4513 85 1F + ldx #$00 ; CPU:$C515 PRG:4515 A2 00 + ldy #$00 ; CPU:$C517 PRG:4517 A0 00 +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode_OnNonzero +; Global: Branch target inside UpdateStageMode: taken when the tested value is not zero. +; Local: Part of UpdateStageMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode_OnNonzero: + lda $C5BA,y ; CPU:$C519 PRG:4519 B9 BA C5 + sta $0338,x ; CPU:$C51C PRG:451C 9D 38 03 + inx ; CPU:$C51F PRG:451F E8 + iny ; CPU:$C520 PRG:4520 C8 + dec Zp1F ; CPU:$C521 PRG:4521 C6 1F + bne UpdateStageMode_OnNonzero ; CPU:$C523 PRG:4523 D0 F4 + stx Zp37 ; CPU:$C525 PRG:4525 86 37 + lda Zp6F ; CPU:$C527 PRG:4527 A5 6F + beq UpdateStageMode_Loop2 ; CPU:$C529 PRG:4529 F0 06 + dec $0338 ; CPU:$C52B PRG:452B CE 38 03 + dec $0338 ; CPU:$C52E PRG:452E CE 38 03 +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode_Loop2 +; Global: Branch target inside UpdateStageMode: taken when Loop2. +; Local: Part of UpdateStageMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode_Loop2: + lda Zp6F ; CPU:$C531 PRG:4531 A5 6F + bne UpdateStageMode_Loop3 ; CPU:$C533 PRG:4533 D0 0F + lda #$3A ; CPU:$C535 PRG:4535 A9 3A + sta Zp19 ; CPU:$C537 PRG:4537 85 19 + lda #$21 ; CPU:$C539 PRG:4539 A9 21 + sta Zp1A ; CPU:$C53B PRG:453B 85 1A + jsr Sub_C5D2 ; CPU:$C53D PRG:453D 20 D2 C5 +; ---- data $C540-$C543 (4 bytes) ---- + .byte $A9, $01, $85, $96 ; CPU:$C540 PRG:4540 A9 01 85 96 +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode_Loop3 +; Global: Branch target inside UpdateStageMode: taken when Loop3. +; Local: Part of UpdateStageMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode_Loop3: + lda Zp96 ; CPU:$C544 PRG:4544 A5 96 + bne UpdateStageMode_Loop4 ; CPU:$C546 PRG:4546 D0 0E + ldy #$08 ; CPU:$C548 PRG:4548 A0 08 +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode_OnCarryClear +; Global: Branch target inside UpdateStageMode: taken when the addition or subtraction did not carry. +; Local: Part of UpdateStageMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode_OnCarryClear: + lda $C5BA,y ; CPU:$C54A PRG:454A B9 BA C5 + sta $0338,x ; CPU:$C54D PRG:454D 9D 38 03 + inx ; CPU:$C550 PRG:4550 E8 + iny ; CPU:$C551 PRG:4551 C8 + cpy #$10 ; CPU:$C552 PRG:4552 C0 10 + bcc UpdateStageMode_OnCarryClear ; CPU:$C554 PRG:4554 90 F4 +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode_Loop4 +; Global: Branch target inside UpdateStageMode: taken when Loop4. +; Local: Part of UpdateStageMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode_Loop4: + lda #$00 ; CPU:$C556 PRG:4556 A9 00 + sta $0338,x ; CPU:$C558 PRG:4558 9D 38 03 +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode_Loop5 +; Global: Branch target inside UpdateStageMode: taken when Loop5. +; Local: Part of UpdateStageMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode_Loop5: + lda Zp5A ; CPU:$C55B PRG:455B A5 5A + asl a ; CPU:$C55D PRG:455D 0A + tax ; CPU:$C55E PRG:455E AA + lda $F45C,x ; CPU:$C55F PRG:455F BD 5C F4 + sta Zp39 ; CPU:$C562 PRG:4562 85 39 + lda $F45D,x ; CPU:$C564 PRG:4564 BD 5D F4 + sta Zp3A ; CPU:$C567 PRG:4567 85 3A + lda Zp5C ; CPU:$C569 PRG:4569 A5 5C + asl a ; CPU:$C56B PRG:456B 0A + tax ; CPU:$C56C PRG:456C AA + lda $F45C,x ; CPU:$C56D PRG:456D BD 5C F4 + sta Zp3B ; CPU:$C570 PRG:4570 85 3B + lda $F45D,x ; CPU:$C572 PRG:4572 BD 5D F4 + sta Zp3C ; CPU:$C575 PRG:4575 85 3C + ldx Zp5B ; CPU:$C577 PRG:4577 A6 5B + lda $F875,x ; CPU:$C579 PRG:4579 BD 75 F8 + sta Zp35 ; CPU:$C57C PRG:457C 85 35 + ldx Zp5D ; CPU:$C57E PRG:457E A6 5D + lda $F875,x ; CPU:$C580 PRG:4580 BD 75 F8 + sta ZpCB ; CPU:$C583 PRG:4583 85 CB + lda #$00 ; CPU:$C585 PRG:4585 A9 00 + sta Zp6C ; CPU:$C587 PRG:4587 85 6C + lda Zp71 ; CPU:$C589 PRG:4589 A5 71 + cmp #$02 ; CPU:$C58B PRG:458B C9 02 + beq UpdateStageMode_Loop7 ; CPU:$C58D PRG:458D F0 10 + lda #$00 ; CPU:$C58F PRG:458F A9 00 + sta GameMode ; CPU:$C591 PRG:4591 85 6A + lda $05E5 ; CPU:$C593 PRG:4593 AD E5 05 + beq UpdateStageMode_Loop6 ; CPU:$C596 PRG:4596 F0 06 + jsr Sub_C6B7 ; CPU:$C598 PRG:4598 20 B7 C6 + jsr ClearActorSlots ; CPU:$C59B PRG:459B 20 4F BB +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode_Loop6 +; Global: Branch target inside UpdateStageMode: taken when Loop6. +; Local: Part of UpdateStageMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode_Loop6: + rts ; CPU:$C59E PRG:459E 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateStageMode_Loop7 +; Global: Branch target inside UpdateStageMode: taken when Loop7. +; Local: Part of UpdateStageMode. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateStageMode_Loop7: + inc GameMode ; CPU:$C59F PRG:459F E6 6A + rts ; CPU:$C5A1 PRG:45A1 60 +; ---- data $C5A2-$C5D1 (48 bytes) ---- +; referenced by `lda $C5BA,y` at $C519 (operand $C5BA falls inside this region) +; referenced by `lda $C5BA,y` at $C54A (operand $C5BA falls inside this region) + .byte $A6, $37, $A0, $00, $B9, $CA, $C5, $9D, $38, $03, $E8, $C8, $C0, $08, $90, $F4 ; CPU:$C5A2 PRG:45A2 A6 37 A0 00 B9 CA C5 9D 38 03 E8 C8 C0 08 90 F4 + .byte $A9, $00, $9D, $38, $03, $86, $37, $60, $67, $21, $25, $F8, $D9, $23, $20, $F8 ; CPU:$C5B2 PRG:45B2 A9 00 9D 38 03 86 37 60 67 21 25 F8 D9 23 20 F8 + .byte $75, $21, $25, $F8, $DD, $23, $20, $F8, $55, $21, $25, $F8, $DD, $23, $20, $F8 ; CPU:$C5C2 PRG:45C2 75 21 25 F8 DD 23 20 F8 55 21 25 F8 DD 23 20 F8 +; ----------------------------------------------------------------------------- +; Routine: Sub_C5D2 +; Global: Branch target inside Sub: taken when C5D2. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_C5D2: + lda #$03 ; CPU:$C5D2 PRG:45D2 A9 03 + sta $05C6 ; CPU:$C5D4 PRG:45D4 8D C6 05 + lda #$01 ; CPU:$C5D7 PRG:45D7 A9 01 + sta $05C7 ; CPU:$C5D9 PRG:45D9 8D C7 05 + ldy Zp5A ; CPU:$C5DC PRG:45DC A4 5A + lda $F1D7,y ; CPU:$C5DE PRG:45DE B9 D7 F1 + sta $05C8 ; CPU:$C5E1 PRG:45E1 8D C8 05 + lda #$D4 ; CPU:$C5E4 PRG:45E4 A9 D4 + sta $05C9 ; CPU:$C5E6 PRG:45E6 8D C9 05 + ldy Zp5B ; CPU:$C5E9 PRG:45E9 A4 5B + lda $F1D7,y ; CPU:$C5EB PRG:45EB B9 D7 F1 + sta $05CA ; CPU:$C5EE PRG:45EE 8D CA 05 + lda $C6D4 ; CPU:$C5F1 PRG:45F1 AD D4 C6 + sta Zp17 ; CPU:$C5F4 PRG:45F4 85 17 + lda $C6D5 ; CPU:$C5F6 PRG:45F6 AD D5 C6 + sta Zp18 ; CPU:$C5F9 PRG:45F9 85 18 + jmp Sub_85A7 ; CPU:$C5FB PRG:45FB 4C A7 85 +; ---- data $C5FE-$C629 (44 bytes) ---- + .byte $A9, $03, $8D, $CB, $05, $A9, $01, $8D, $CC, $05, $A4, $5C, $B9, $D7, $F1, $8D ; CPU:$C5FE PRG:45FE A9 03 8D CB 05 A9 01 8D CC 05 A4 5C B9 D7 F1 8D + .byte $CD, $05, $A9, $D4, $8D, $CE, $05, $A4, $5D, $B9, $D7, $F1, $8D, $CF, $05, $AD ; CPU:$C60E PRG:460E CD 05 A9 D4 8D CE 05 A4 5D B9 D7 F1 8D CF 05 AD + .byte $D6, $C6, $85, $17, $AD, $D7, $C6, $85, $18, $4C, $A7, $85 ; CPU:$C61E PRG:461E D6 C6 85 17 AD D7 C6 85 18 4C A7 85 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering +; Global: Turns the PPU off. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering: + lda #$00 ; CPU:$C62A PRG:462A A9 00 + sta PPUCTRL ; CPU:$C62C PRG:462C 8D 00 20 + lda Zp02 ; CPU:$C62F PRG:462F A5 02 + and #$E7 ; CPU:$C631 PRG:4631 29 E7 + sta PPUMASK ; CPU:$C633 PRG:4633 8D 01 20 + sta Zp02 ; CPU:$C636 PRG:4636 85 02 + jsr ClearOamShadow ; CPU:$C638 PRG:4638 20 88 81 + ldx Zp6F ; CPU:$C63B PRG:463B A6 6F + lda $C6B5,x ; CPU:$C63D PRG:463D BD B5 C6 + sta Zp2E ; CPU:$C640 PRG:4640 85 2E + lda #$00 ; CPU:$C642 PRG:4642 A9 00 + jsr BankedCall ; CPU:$C644 PRG:4644 20 04 80 + lda Zp6F ; CPU:$C647 PRG:4647 A5 6F + asl a ; CPU:$C649 PRG:4649 0A + tax ; CPU:$C64A PRG:464A AA + lda $F6A7,x ; CPU:$C64B PRG:464B BD A7 F6 + sta Zp11 ; CPU:$C64E PRG:464E 85 11 + lda $F6A8,x ; CPU:$C650 PRG:4650 BD A8 F6 + sta Zp12 ; CPU:$C653 PRG:4653 85 12 + jsr Sub_848C ; CPU:$C655 PRG:4655 20 8C 84 + ldx Zp72 ; CPU:$C658 PRG:4658 A6 72 + lda Zp6F ; CPU:$C65A PRG:465A A5 6F + bne DisablePpuRendering_Loop ; CPU:$C65C PRG:465C D0 13 + lda PPUSTATUS ; CPU:$C65E PRG:465E AD 02 20 + lda #$21 ; CPU:$C661 PRG:4661 A9 21 + sta PPUADDR ; CPU:$C663 PRG:4663 8D 06 20 + lda #$3C ; CPU:$C666 PRG:4666 A9 3C + sta PPUADDR ; CPU:$C668 PRG:4668 8D 06 20 + lda $F1D6,x ; CPU:$C66B PRG:466B BD D6 F1 + sta PPUDATA ; CPU:$C66E PRG:466E 8D 07 20 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop +; Global: Branch target inside DisablePpuRendering: taken when the loop repeats. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop: + lda $F875,x ; CPU:$C671 PRG:4671 BD 75 F8 + sta Zp35 ; CPU:$C674 PRG:4674 85 35 + ldx Zp5D ; CPU:$C676 PRG:4676 A6 5D + lda $F875,x ; CPU:$C678 PRG:4678 BD 75 F8 + sta ZpCB ; CPU:$C67B PRG:467B 85 CB + lda #$00 ; CPU:$C67D PRG:467D A9 00 + sta Zp4B ; CPU:$C67F PRG:467F 85 4B + lda #$04 ; CPU:$C681 PRG:4681 A9 04 + sta Zp4C ; CPU:$C683 PRG:4683 85 4C + lda Zp71 ; CPU:$C685 PRG:4685 A5 71 + beq DisablePpuRendering_Loop2 ; CPU:$C687 PRG:4687 F0 0B + ldx #$00 ; CPU:$C689 PRG:4689 A2 00 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_OnCarryClear +; Global: Branch target inside DisablePpuRendering: taken when the addition or subtraction did not carry. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_OnCarryClear: + txa ; CPU:$C68B PRG:468B 8A + sta $05DA,x ; CPU:$C68C PRG:468C 9D DA 05 + inx ; CPU:$C68F PRG:468F E8 + cpx #$05 ; CPU:$C690 PRG:4690 E0 05 + bcc DisablePpuRendering_OnCarryClear ; CPU:$C692 PRG:4692 90 F7 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop2 +; Global: Branch target inside DisablePpuRendering: taken when Loop2. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop2: + inc GameMode ; CPU:$C694 PRG:4694 E6 6A + rts ; CPU:$C696 PRG:4696 60 +; ---- data $C697-$C6B6 (32 bytes) ---- +; referenced by `lda $C697,y` at $C357 (operand $C697 falls inside this region) +; referenced by `lda $C6B5,x` at $C63D (operand $C6B5 falls inside this region) + .byte $FF, $24, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$C697 PRG:4697 FF 24 21 22 21 22 21 22 21 22 21 22 21 22 21 22 + .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $10, $11 ; CPU:$C6A7 PRG:46A7 21 22 21 22 21 22 21 22 21 22 21 22 21 22 10 11 +; ----------------------------------------------------------------------------- +; Routine: Sub_C6B7 +; Global: Branch target inside Sub: taken when C6B7. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_C6B7: + lda #$00 ; CPU:$C6B7 PRG:46B7 A9 00 + tax ; CPU:$C6B9 PRG:46B9 AA +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_OnCarryClear2 +; Global: Branch target inside DisablePpuRendering: taken when OnCarryClear2. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_OnCarryClear2: + sta Zp5E,x ; CPU:$C6BA PRG:46BA 95 5E + inx ; CPU:$C6BC PRG:46BC E8 + cpx #$0C ; CPU:$C6BD PRG:46BD E0 0C + bcc DisablePpuRendering_OnCarryClear2 ; CPU:$C6BF PRG:46BF 90 F9 + ldx #$00 ; CPU:$C6C1 PRG:46C1 A2 00 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_OnCarryClear3 +; Global: Branch target inside DisablePpuRendering: taken when OnCarryClear3. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_OnCarryClear3: + sta $0400,x ; CPU:$C6C3 PRG:46C3 9D 00 04 + inx ; CPU:$C6C6 PRG:46C6 E8 + cpx #$70 ; CPU:$C6C7 PRG:46C7 E0 70 + bcc DisablePpuRendering_OnCarryClear3 ; CPU:$C6C9 PRG:46C9 90 F8 + lda #$FF ; CPU:$C6CB PRG:46CB A9 FF + sta Zp65 ; CPU:$C6CD PRG:46CD 85 65 + rts ; CPU:$C6CF PRG:46CF 60 +; ---- data $C6D0-$C7E9 (282 bytes) ---- +; referenced by `lda $C6D0` at $C3D0 (operand $C6D0 falls inside this region) +; referenced by `lda $C6D1` at $C3D5 (operand $C6D1 falls inside this region) +; referenced by `lda $C6D2` at $C3ED (operand $C6D2 falls inside this region) +; referenced by `lda $C6D3` at $C3F2 (operand $C6D3 falls inside this region) +; referenced by `lda $C6D4` at $C5F1 (operand $C6D4 falls inside this region) +; referenced by `lda $C6D5` at $C5F6 (operand $C6D5 falls inside this region) + .byte $37, $F8, $1B, $F8, $C6, $05, $CB, $05, $A5, $6C, $20, $73, $81, $E9, $C6, $24 ; CPU:$C6D0 PRG:46D0 37 F8 1B F8 C6 05 CB 05 A5 6C 20 73 81 E9 C6 24 + .byte $C7, $7E, $C7, $3B, $B2, $7C, $B2, $D6, $B2, $A5, $95, $F0, $05, $A9, $03, $85 ; CPU:$C6E0 PRG:46E0 C7 7E C7 3B B2 7C B2 D6 B2 A5 95 F0 05 A9 03 85 + .byte $6C, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5B, $0A, $0A, $0A, $18, $65 ; CPU:$C6F0 PRG:46F0 6C 60 20 52 85 29 06 85 20 A5 5B 0A 0A 0A 18 65 + .byte $20, $AA, $BD, $BD, $F8, $85, $4E, $BD, $BE, $F8, $85, $4F, $A9, $00, $85, $56 ; CPU:$C700 PRG:4700 20 AA BD BD F8 85 4E BD BE F8 85 4F A9 00 85 56 + .byte $85, $58, $E6, $6C, $A9, $00, $85, $34, $A2, $00, $8A, $9D, $DA, $05, $E8, $E0 ; CPU:$C710 PRG:4710 85 58 E6 6C A9 00 85 34 A2 00 8A 9D DA 05 E8 E0 + .byte $05, $90, $F7, $60, $A5, $31, $6A, $B0, $01, $60, $A6, $56, $A4, $58, $B1, $4E ; CPU:$C720 PRG:4720 05 90 F7 60 A5 31 6A B0 01 60 A6 56 A4 58 B1 4E + .byte $F0, $33, $9D, $00, $04, $85, $1B, $8A, $20, $BF, $84, $A5, $1B, $10, $0E, $A9 ; CPU:$C730 PRG:4730 F0 33 9D 00 04 85 1B 8A 20 BF 84 A5 1B 10 0E A9 + .byte $0D, $85, $17, $A9, $F3, $85, $18, $A9, $01, $85, $1B, $D0, $0C, $0A, $AA, $BD ; CPU:$C740 PRG:4740 0D 85 17 A9 F3 85 18 A9 01 85 1B D0 0C 0A AA BD + .byte $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3, $84, $E6 ; CPU:$C750 PRG:4750 9E F2 85 17 BD 9F F2 85 18 20 8A 85 20 E3 84 E6 + .byte $58, $E6, $56, $10, $C5, $A6, $36, $A9, $00, $9D, $00, $03, $E6, $58, $A5, $56 ; CPU:$C760 PRG:4760 58 E6 56 10 C5 A6 36 A9 00 9D 00 03 E6 58 A5 56 + .byte $29, $F0, $18, $69, $10, $85, $56, $C9, $70, $90, $02, $E6, $6C, $60, $A5, $31 ; CPU:$C770 PRG:4770 29 F0 18 69 10 85 56 C9 70 90 02 E6 6C 60 A5 31 + .byte $6A, $B0, $01, $60, $A5, $5B, $85, $5E, $A6, $5A, $86, $5F, $BD, $5A, $D4, $85 ; CPU:$C780 PRG:4780 6A B0 01 60 A5 5B 85 5E A6 5A 86 5F BD 5A D4 85 + .byte $1B, $20, $86, $D4, $A6, $5B, $F0, $18, $86, $21, $20, $AF, $D4, $20, $8A, $85 ; CPU:$C790 PRG:4790 1B 20 86 D4 A6 5B F0 18 86 21 20 AF D4 20 8A 85 + .byte $20, $E3, $84, $C6, $21, $A6, $21, $D0, $F1, $A6, $36, $A9, $00, $9D, $00, $03 ; CPU:$C7A0 PRG:47A0 20 E3 84 C6 21 A6 21 D0 F1 A6 36 A9 00 9D 00 03 + .byte $A5, $5B, $18, $69, $07, $85, $11, $A9, $00, $85, $12, $20, $5D, $85, $A6, $6F ; CPU:$C7B0 PRG:47B0 A5 5B 18 69 07 85 11 A9 00 85 12 20 5D 85 A6 6F + .byte $BD, $E8, $C7, $8D, $88, $03, $A9, $1C, $8D, $98, $03, $A2, $30, $BD, $00, $04 ; CPU:$C7C0 PRG:47C0 BD E8 C7 8D 88 03 A9 1C 8D 98 03 A2 30 BD 00 04 + .byte $09, $40, $9D, $00, $04, $86, $65, $E6, $6C, $E6, $5E, $A5, $6F, $D0, $08, $A9 ; CPU:$C7D0 PRG:47D0 09 40 9D 00 04 86 65 E6 6C E6 5E A5 6F D0 08 A9 + .byte $00, $85, $6C, $85, $6A, $85, $58, $60, $54, $38 ; CPU:$C7E0 PRG:47E0 00 85 6C 85 6A 85 58 60 54 38 +; ----------------------------------------------------------------------------- +; Routine: Sub_C7EA +; Global: Branch target inside Sub: taken when C7EA. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_C7EA: + lda Zp69 ; CPU:$C7EA PRG:47EA A5 69 + bne DisablePpuRendering_Loop3 ; CPU:$C7EC PRG:47EC D0 11 + ldx Zp5F ; CPU:$C7EE PRG:47EE A6 5F + dex ; CPU:$C7F0 PRG:47F0 CA + bmi DisablePpuRendering_Loop3 ; CPU:$C7F1 PRG:47F1 30 0C + lda ButtonState1 ; CPU:$C7F3 PRG:47F3 A5 26 + tay ; CPU:$C7F5 PRG:47F5 A8 + cmp #$84 ; CPU:$C7F6 PRG:47F6 C9 84 + beq DisablePpuRendering_Loop4 ; CPU:$C7F8 PRG:47F8 F0 06 + tya ; CPU:$C7FA PRG:47FA 98 + cmp #$44 ; CPU:$C7FB PRG:47FB C9 44 + beq DisablePpuRendering_Loop4 ; CPU:$C7FD PRG:47FD F0 01 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop3 +; Global: Branch target inside DisablePpuRendering: taken when Loop3. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop3: + rts ; CPU:$C7FF PRG:47FF 60 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop4 +; Global: Branch target inside DisablePpuRendering: taken when Loop4. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop4: + lda Zp64 ; CPU:$C800 PRG:4800 A5 64 + beq DisablePpuRendering_Loop5 ; CPU:$C802 PRG:4802 F0 09 + lda $0358 ; CPU:$C804 PRG:4804 AD 58 03 + beq DisablePpuRendering_Loop6 ; CPU:$C807 PRG:4807 F0 14 + lda #$00 ; CPU:$C809 PRG:4809 A9 00 + sta Zp64 ; CPU:$C80B PRG:480B 85 64 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop5 +; Global: Branch target inside DisablePpuRendering: taken when Loop5. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop5: + ldx Zp65 ; CPU:$C80D PRG:480D A6 65 + bmi DisablePpuRendering_Loop6 ; CPU:$C80F PRG:480F 30 0C + lda $0400,x ; CPU:$C811 PRG:4811 BD 00 04 + and #$BF ; CPU:$C814 PRG:4814 29 BF + sta $0400,x ; CPU:$C816 PRG:4816 9D 00 04 + lda #$FF ; CPU:$C819 PRG:4819 A9 FF + sta Zp65 ; CPU:$C81B PRG:481B 85 65 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop6 +; Global: Branch target inside DisablePpuRendering: taken when Loop6. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop6: + lda #$01 ; CPU:$C81D PRG:481D A9 01 + sta Zp69 ; CPU:$C81F PRG:481F 85 69 + lda #$00 ; CPU:$C821 PRG:4821 A9 00 + sta Zp68 ; CPU:$C823 PRG:4823 85 68 + lda #$06 ; CPU:$C825 PRG:4825 A9 06 + sta Zp11 ; CPU:$C827 PRG:4827 85 11 + lda #$00 ; CPU:$C829 PRG:4829 A9 00 + sta Zp12 ; CPU:$C82B PRG:482B 85 12 + jsr Sub_855D ; CPU:$C82D PRG:482D 20 5D 85 + lda Zp6F ; CPU:$C830 PRG:4830 A5 6F + beq DisablePpuRendering_Loop7 ; CPU:$C832 PRG:4832 F0 05 + lda #$28 ; CPU:$C834 PRG:4834 A9 28 + sta $0388 ; CPU:$C836 PRG:4836 8D 88 03 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop7 +; Global: Branch target inside DisablePpuRendering: taken when Loop7. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop7: + rts ; CPU:$C839 PRG:4839 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_C83A +; Global: Branch target inside Sub: taken when C83A. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_C83A: + lda FrameCounter ; CPU:$C83A PRG:483A A5 31 + ror a ; CPU:$C83C PRG:483C 6A + bcs DisablePpuRendering_Loop8 ; CPU:$C83D PRG:483D B0 01 + rts ; CPU:$C83F PRG:483F 60 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop8 +; Global: Branch target inside DisablePpuRendering: taken when Loop8. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop8: + lda Zp68 ; CPU:$C840 PRG:4840 A5 68 + jsr DispatchByJumpTable ; CPU:$C842 PRG:4842 20 73 81 + .byte $53, $C8 ; CPU:$C845 PRG:4845 53 C8 -- sre (ZpC8),y (undocumented; ca65 cannot encode) + .byte $73, $C8 ; CPU:$C847 PRG:4847 73 C8 -- rra (ZpC8),y (undocumented; ca65 cannot encode) + asl ZpC9,x ; CPU:$C849 PRG:4849 16 C9 + inc $7AD4 ; CPU:$C84B PRG:484B EE D4 7A + cmp #$EE ; CPU:$C84E PRG:484E C9 EE + .byte $D4, $DB ; CPU:$C850 PRG:4850 D4 DB -- nop ZpDB,x (undocumented; ca65 cannot encode) + cmp #$A9 ; CPU:$C852 PRG:4852 C9 A9 + .byte $03, $20 ; CPU:$C854 PRG:4854 03 20 -- slo (Zp20,x) (undocumented; ca65 cannot encode) + .byte $04, $80 ; CPU:$C856 PRG:4856 04 80 -- nop Zp80 (undocumented; ca65 cannot encode) + lda #$01 ; CPU:$C858 PRG:4858 A9 01 + sta a:$00DD ; CPU:$C85A PRG:485A 8D DD 00 + lda #$06 ; CPU:$C85D PRG:485D A9 06 + sta a:$00DE ; CPU:$C85F PRG:485F 8D DE 00 + lda #$05 ; CPU:$C862 PRG:4862 A9 05 + jsr BankedCall ; CPU:$C864 PRG:4864 20 04 80 + lda #$00 ; CPU:$C867 PRG:4867 A9 00 + sta a:$00DD ; CPU:$C869 PRG:4869 8D DD 00 + inc Zp68 ; CPU:$C86C PRG:486C E6 68 + lda #$F0 ; CPU:$C86E PRG:486E A9 F0 + sta Zp56 ; CPU:$C870 PRG:4870 85 56 + rts ; CPU:$C872 PRG:4872 60 +; ---- data $C873-$CBC3 (849 bytes) ---- + .byte $C6, $56, $D0, $0A, $20, $B6, $C8, $E6, $68, $A9, $00, $85, $56, $60, $A5, $31 ; CPU:$C873 PRG:4873 C6 56 D0 0A 20 B6 C8 E6 68 A9 00 85 56 60 A5 31 + .byte $29, $04, $F0, $03, $4C, $B6, $C8, $A9, $23, $85, $1A, $A9, $C0, $85, $19, $A5 ; CPU:$C883 PRG:4883 29 04 F0 03 4C B6 C8 A9 23 85 1A A9 C0 85 19 A5 + .byte $6F, $D0, $02, $E6, $19, $A9, $B7, $85, $17, $A9, $F8, $85, $18, $20, $A7, $85 ; CPU:$C893 PRG:4893 6F D0 02 E6 19 A9 B7 85 17 A9 F8 85 18 20 A7 85 + .byte $A5, $19, $18, $69, $08, $85, $19, $C9, $F0, $90, $F2, $A6, $37, $A9, $00, $9D ; CPU:$C8A3 PRG:48A3 A5 19 18 69 08 85 19 C9 F0 90 F2 A6 37 A9 00 9D + .byte $38, $03, $60, $A9, $68, $85, $17, $A9, $05, $85, $18, $A9, $23, $85, $1A, $A9 ; CPU:$C8B3 PRG:48B3 38 03 60 A9 68 85 17 A9 05 85 18 A9 23 85 1A A9 + .byte $C0, $85, $19, $A0, $00, $84, $21, $A5, $6F, $D0, $04, $E6, $19, $E6, $21, $A9 ; CPU:$C8C3 PRG:48C3 C0 85 19 A0 00 84 21 A5 6F D0 04 E6 19 E6 21 A9 + .byte $04, $99, $68, $05, $A9, $01, $C8, $99, $68, $05, $C8, $A9, $04, $85, $1F, $A6 ; CPU:$C8D3 PRG:48D3 04 99 68 05 A9 01 C8 99 68 05 C8 A9 04 85 1F A6 + .byte $21, $BD, $E2, $04, $99, $68, $05, $C8, $E8, $C6, $1F, $D0, $F4, $20, $A7, $85 ; CPU:$C8E3 PRG:48E3 21 BD E2 04 99 68 05 C8 E8 C6 1F D0 F4 20 A7 85 + .byte $A5, $17, $18, $69, $06, $85, $17, $90, $02, $E6, $18, $A5, $21, $18, $69, $08 ; CPU:$C8F3 PRG:48F3 A5 17 18 69 06 85 17 90 02 E6 18 A5 21 18 69 08 + .byte $85, $21, $18, $69, $C0, $85, $19, $C9, $F0, $90, $C4, $A6, $37, $A9, $00, $9D ; CPU:$C903 PRG:4903 85 21 18 69 C0 85 19 C9 F0 90 C4 A6 37 A9 00 9D + .byte $38, $03, $60, $A5, $56, $AA, $A8, $BD, $00, $04, $30, $04, $99, $00, $04, $C8 ; CPU:$C913 PRG:4913 38 03 60 A5 56 AA A8 BD 00 04 30 04 99 00 04 C8 + .byte $E8, $BD, $00, $04, $D0, $F4, $86, $21, $A9, $00, $99, $00, $04, $C8, $C4, $21 ; CPU:$C923 PRG:4923 E8 BD 00 04 D0 F4 86 21 A9 00 99 00 04 C8 C4 21 + .byte $90, $F8, $A6, $56, $86, $24, $A6, $24, $BD, $00, $04, $29, $07, $85, $1B, $0A ; CPU:$C933 PRG:4933 90 F8 A6 56 86 24 A6 24 BD 00 04 29 07 85 1B 0A + .byte $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $A5, $24, $20, $BF, $84 ; CPU:$C943 PRG:4943 AA BD 9E F2 85 17 BD 9F F2 85 18 A5 24 20 BF 84 + .byte $20, $8A, $85, $20, $E3, $84, $E6, $24, $A6, $24, $E4, $21, $90, $DA, $A6, $36 ; CPU:$C953 PRG:4953 20 8A 85 20 E3 84 E6 24 A6 24 E4 21 90 DA A6 36 + .byte $A9, $00, $9D, $00, $03, $A5, $56, $18, $69, $10, $85, $56, $C9, $70, $90, $06 ; CPU:$C963 PRG:4963 A9 00 9D 00 03 A5 56 18 69 10 85 56 C9 70 90 06 + .byte $E6, $68, $A9, $00, $85, $61, $60, $A9, $08, $85, $1F, $20, $52, $85, $A5, $3D ; CPU:$C973 PRG:4973 E6 68 A9 00 85 61 60 A9 08 85 1F 20 52 85 A5 3D + .byte $2A, $2A, $29, $7F, $C9, $70, $B0, $30, $AA, $BD, $00, $04, $29, $07, $F0, $28 ; CPU:$C983 PRG:4983 2A 2A 29 7F C9 70 B0 30 AA BD 00 04 29 07 F0 28 + .byte $86, $21, $20, $52, $85, $A5, $3D, $29, $03, $A8, $C8, $84, $1B, $98, $9D, $00 ; CPU:$C993 PRG:4993 86 21 20 52 85 A5 3D 29 03 A8 C8 84 1B 98 9D 00 + .byte $04, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $A5, $21, $20 ; CPU:$C9A3 PRG:49A3 04 0A AA BD 9E F2 85 17 BD 9F F2 85 18 A5 21 20 + .byte $BF, $84, $20, $8A, $85, $20, $E3, $84, $C6, $1F, $D0, $BF, $A6, $36, $A9, $00 ; CPU:$C9B3 PRG:49B3 BF 84 20 8A 85 20 E3 84 C6 1F D0 BF A6 36 A9 00 + .byte $9D, $00, $03, $CE, $98, $03, $CE, $98, $03, $AD, $98, $03, $C9, $F8, $90, $07 ; CPU:$C9C3 PRG:49C3 9D 00 03 CE 98 03 CE 98 03 AD 98 03 C9 F8 90 07 + .byte $E6, $68, $A9, $00, $8D, $58, $03, $60, $A9, $00, $85, $69, $85, $68, $A9, $03 ; CPU:$C9D3 PRG:49D3 E6 68 A9 00 8D 58 03 60 A9 00 85 69 85 68 A9 03 + .byte $20, $04, $80, $A9, $01, $8D, $DD, $00, $A5, $73, $8D, $DE, $00, $A9, $05, $20 ; CPU:$C9E3 PRG:49E3 20 04 80 A9 01 8D DD 00 A5 73 8D DE 00 A9 05 20 + .byte $04, $80, $A9, $00, $8D, $DD, $00, $C6, $5F, $D0, $0B, $A5, $5E, $D0, $07, $20 ; CPU:$C9F3 PRG:49F3 04 80 A9 00 8D DD 00 C6 5F D0 0B A5 5E D0 07 20 + .byte $86, $D4, $A9, $00, $F0, $2A, $A5, $5F, $29, $03, $AA, $A5, $5E, $D0, $03, $CA ; CPU:$CA03 PRG:4A03 86 D4 A9 00 F0 2A A5 5F 29 03 AA A5 5E D0 03 CA + .byte $C6, $5F, $BD, $5A, $D4, $85, $1B, $A9, $05, $85, $21, $A5, $5E, $C5, $21, $B0 ; CPU:$CA13 PRG:4A13 C6 5F BD 5A D4 85 1B A9 05 85 21 A5 5E C5 21 B0 + .byte $0F, $A6, $21, $20, $AF, $D4, $20, $8A, $85, $20, $E3, $84, $C6, $21, $D0, $EB ; CPU:$CA23 PRG:4A23 0F A6 21 20 AF D4 20 8A 85 20 E3 84 C6 21 D0 EB + .byte $A6, $36, $A9, $00, $9D, $00, $03, $A5, $5E, $D0, $02, $E6, $5F, $60, $A5, $61 ; CPU:$CA33 PRG:4A33 A6 36 A9 00 9D 00 03 A5 5E D0 02 E6 5F 60 A5 61 + .byte $20, $73, $81, $50, $CA, $76, $CA, $86, $CA, $AD, $CA, $07, $CB, $A9, $FF, $85 ; CPU:$CA43 PRG:4A43 20 73 81 50 CA 76 CA 86 CA AD CA 07 CB A9 FF 85 + .byte $65, $A5, $6F, $D0, $03, $20, $57, $CB, $A5, $5A, $0A, $AA, $BD, $5C, $F4, $85 ; CPU:$CA53 PRG:4A53 65 A5 6F D0 03 20 57 CB A5 5A 0A AA BD 5C F4 85 + .byte $39, $BD, $5D, $F4, $85, $3A, $A6, $5B, $BD, $75, $F8, $85, $35, $20, $59, $CD ; CPU:$CA63 PRG:4A63 39 BD 5D F4 85 3A A6 5B BD 75 F8 85 35 20 59 CD + .byte $E6, $61, $60, $A5, $71, $C9, $02, $F0, $07, $A9, $00, $85, $61, $85, $60, $60 ; CPU:$CA73 PRG:4A73 E6 61 60 A5 71 C9 02 F0 07 A9 00 85 61 85 60 60 + .byte $E6, $61, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5B, $0A, $0A, $0A, $18 ; CPU:$CA83 PRG:4A83 E6 61 60 20 52 85 29 06 85 20 A5 5B 0A 0A 0A 18 + .byte $65, $20, $AA, $BD, $BD, $F8, $85, $4E, $BD, $BE, $F8, $85, $4F, $A9, $00, $85 ; CPU:$CA93 PRG:4A93 65 20 AA BD BD F8 85 4E BD BE F8 85 4F A9 00 85 + .byte $56, $85, $58, $E6, $61, $A9, $00, $85, $34, $60, $A5, $31, $6A, $B0, $01, $60 ; CPU:$CAA3 PRG:4AA3 56 85 58 E6 61 A9 00 85 34 60 A5 31 6A B0 01 60 + .byte $A6, $56, $A4, $58, $B1, $4E, $F0, $33, $9D, $00, $04, $85, $1B, $8A, $20, $BF ; CPU:$CAB3 PRG:4AB3 A6 56 A4 58 B1 4E F0 33 9D 00 04 85 1B 8A 20 BF + .byte $84, $A5, $1B, $10, $0E, $A9, $0D, $85, $17, $A9, $F3, $85, $18, $A9, $01, $85 ; CPU:$CAC3 PRG:4AC3 84 A5 1B 10 0E A9 0D 85 17 A9 F3 85 18 A9 01 85 + .byte $1B, $D0, $0C, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $20 ; CPU:$CAD3 PRG:4AD3 1B D0 0C 0A AA BD 9E F2 85 17 BD 9F F2 85 18 20 + .byte $8A, $85, $20, $E3, $84, $E6, $58, $E6, $56, $10, $C5, $A6, $36, $A9, $00, $9D ; CPU:$CAE3 PRG:4AE3 8A 85 20 E3 84 E6 58 E6 56 10 C5 A6 36 A9 00 9D + .byte $00, $03, $E6, $58, $A5, $56, $29, $F0, $18, $69, $10, $85, $56, $C9, $70, $90 ; CPU:$CAF3 PRG:4AF3 00 03 E6 58 A5 56 29 F0 18 69 10 85 56 C9 70 90 + .byte $02, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A5, $5B, $85, $5E, $A6, $5A ; CPU:$CB03 PRG:4B03 02 E6 61 60 A5 31 6A B0 01 60 A5 5B 85 5E A6 5A + .byte $86, $5F, $BD, $5A, $D4, $85, $1B, $20, $86, $D4, $A6, $5B, $F0, $18, $86, $21 ; CPU:$CB13 PRG:4B13 86 5F BD 5A D4 85 1B 20 86 D4 A6 5B F0 18 86 21 + .byte $20, $AF, $D4, $20, $8A, $85, $20, $E3, $84, $C6, $21, $A6, $21, $D0, $F1, $A6 ; CPU:$CB23 PRG:4B23 20 AF D4 20 8A 85 20 E3 84 C6 21 A6 21 D0 F1 A6 + .byte $36, $A9, $00, $9D, $00, $03, $20, $A8, $CB, $A2, $30, $BD, $00, $04, $09, $40 ; CPU:$CB33 PRG:4B33 36 A9 00 9D 00 03 20 A8 CB A2 30 BD 00 04 09 40 + .byte $9D, $00, $04, $86, $65, $E6, $6C, $E6, $5E, $A9, $00, $85, $61, $85, $58, $A9 ; CPU:$CB43 PRG:4B43 9D 00 04 86 65 E6 6C E6 5E A9 00 85 61 85 58 A9 + .byte $00, $85, $60, $60, $A9, $20, $85, $1F, $A0, $00, $A6, $36, $B9, $85, $CB, $9D ; CPU:$CB53 PRG:4B53 00 85 60 60 A9 20 85 1F A0 00 A6 36 B9 85 CB 9D + .byte $00, $03, $E8, $C8, $C6, $1F, $D0, $F4, $A9, $00, $9D, $00, $03, $86, $36, $A0 ; CPU:$CB63 PRG:4B63 00 03 E8 C8 C6 1F D0 F4 A9 00 9D 00 03 86 36 A0 + .byte $00, $A6, $38, $B9, $A5, $CB, $9D, $B8, $03, $E8, $C8, $C0, $03, $90, $F4, $86 ; CPU:$CB73 PRG:4B73 00 A6 38 B9 A5 CB 9D B8 03 E8 C8 C0 03 90 F4 86 + .byte $38, $60, $7A, $22, $A8, $F2, $98, $22, $A8, $F2, $B6, $22, $A8, $F2, $BA, $22 ; CPU:$CB83 PRG:4B83 38 60 7A 22 A8 F2 98 22 A8 F2 B6 22 A8 F2 BA 22 + .byte $A8, $F2, $F6, $22, $A8, $F2, $D8, $22, $A8, $F2, $FA, $22, $A8, $F2, $18, $23 ; CPU:$CB93 PRG:4B93 A8 F2 F6 22 A8 F2 D8 22 A8 F2 FA 22 A8 F2 18 23 + .byte $A8, $F2, $E6, $55, $00, $A5, $5B, $18, $69, $07, $85, $11, $A9, $00, $85, $12 ; CPU:$CBA3 PRG:4BA3 A8 F2 E6 55 00 A5 5B 18 69 07 85 11 A9 00 85 12 + .byte $20, $5D, $85, $A6, $6F, $BD, $E8, $C7, $8D, $88, $03, $A9, $1C, $8D, $98, $03 ; CPU:$CBB3 PRG:4BB3 20 5D 85 A6 6F BD E8 C7 8D 88 03 A9 1C 8D 98 03 + .byte $60 ; CPU:$CBC3 PRG:4BC3 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CBC4 +; Global: Branch target inside Sub: taken when CBC4. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_CBC4: + lda Zp60 ; CPU:$CBC4 PRG:4BC4 A5 60 + sta $05E9 ; CPU:$CBC6 PRG:4BC6 8D E9 05 + lda Zp69 ; CPU:$CBC9 PRG:4BC9 A5 69 + beq DisablePpuRendering_Loop9 ; CPU:$CBCB PRG:4BCB F0 0C + lda Zp60 ; CPU:$CBCD PRG:4BCD A5 60 + bne DisablePpuRendering_Loop9 ; CPU:$CBCF PRG:4BCF D0 08 + jsr Sub_C83A ; CPU:$CBD1 PRG:4BD1 20 3A C8 + lda #$00 ; CPU:$CBD4 PRG:4BD4 A9 00 + sta Zp60 ; CPU:$CBD6 PRG:4BD6 85 60 + rts ; CPU:$CBD8 PRG:4BD8 60 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop9 +; Global: Branch target inside DisablePpuRendering: taken when Loop9. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop9: + lda Zp71 ; CPU:$CBD9 PRG:4BD9 A5 71 + cmp #$02 ; CPU:$CBDB PRG:4BDB C9 02 + beq DisablePpuRendering_Loop10 ; CPU:$CBDD PRG:4BDD F0 09 + lda Zp60 ; CPU:$CBDF PRG:4BDF A5 60 + cmp #$07 ; CPU:$CBE1 PRG:4BE1 C9 07 + bcs DisablePpuRendering_Loop10 ; CPU:$CBE3 PRG:4BE3 B0 03 + jsr Sub_C7EA ; CPU:$CBE5 PRG:4BE5 20 EA C7 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop10 +; Global: Branch target inside DisablePpuRendering: taken when Loop10. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop10: + lda Zp65 ; CPU:$CBE8 PRG:4BE8 A5 65 + bmi DisablePpuRendering_Loop11 ; CPU:$CBEA PRG:4BEA 30 0C + lda Zp71 ; CPU:$CBEC PRG:4BEC A5 71 + cmp #$02 ; CPU:$CBEE PRG:4BEE C9 02 + beq DisablePpuRendering_Loop11 ; CPU:$CBF0 PRG:4BF0 F0 06 + lda FrameCounter ; CPU:$CBF2 PRG:4BF2 A5 31 + bne DisablePpuRendering_Loop11 ; CPU:$CBF4 PRG:4BF4 D0 02 + inc Zp67 ; CPU:$CBF6 PRG:4BF6 E6 67 +; ----------------------------------------------------------------------------- +; Routine: DisablePpuRendering_Loop11 +; Global: Branch target inside DisablePpuRendering: taken when Loop11. +; Local: Part of DisablePpuRendering. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DisablePpuRendering_Loop11: + lda Zp60 ; CPU:$CBF8 PRG:4BF8 A5 60 + jsr DispatchByJumpTable ; CPU:$CBFA PRG:4BFA 20 73 81 +; ---- data $CBFD-$CC10 (20 bytes) ---- + .byte $11, $CC, $56, $CC, $CF, $CC, $17, $BF, $6F, $C1, $18, $CD, $32, $CF, $A8, $CF ; CPU:$CBFD PRG:4BFD 11 CC 56 CC CF CC 17 BF 6F C1 18 CD 32 CF A8 CF + .byte $9A, $BF, $41, $CA ; CPU:$CC0D PRG:4C0D 9A BF 41 CA +; ----------------------------------------------------------------------------- +; Routine: SetPlayerActive +; Global: Marks the player as active. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetPlayerActive: + lda #$01 ; CPU:$CC11 PRG:4C11 A9 01 + sta Zp33 ; CPU:$CC13 PRG:4C13 85 33 + ldx #$00 ; CPU:$CC15 PRG:4C15 A2 00 + lda Zp6F ; CPU:$CC17 PRG:4C17 A5 6F + beq SetPlayerActive_Loop ; CPU:$CC19 PRG:4C19 F0 02 + ldx #$03 ; CPU:$CC1B PRG:4C1B A2 03 +; ----------------------------------------------------------------------------- +; Routine: SetPlayerActive_Loop +; Global: Branch target inside SetPlayerActive: taken when the loop repeats. +; Local: Part of SetPlayerActive. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetPlayerActive_Loop: + lda $CC50,x ; CPU:$CC1D PRG:4C1D BD 50 CC + sta Zp49 ; CPU:$CC20 PRG:4C20 85 49 + lda $CC51,x ; CPU:$CC22 PRG:4C22 BD 51 CC + sta Zp4A ; CPU:$CC25 PRG:4C25 85 4A + lda $CC52,x ; CPU:$CC27 PRG:4C27 BD 52 CC + sta Zp4D ; CPU:$CC2A PRG:4C2A 85 4D + inc Zp60 ; CPU:$CC2C PRG:4C2C E6 60 + lda #$00 ; CPU:$CC2E PRG:4C2E A9 00 + sta Zp56 ; CPU:$CC30 PRG:4C30 85 56 + sta Zp48 ; CPU:$CC32 PRG:4C32 85 48 + sta Zp37 ; CPU:$CC34 PRG:4C34 85 37 + sta Zp36 ; CPU:$CC36 PRG:4C36 85 36 + lda #$08 ; CPU:$CC38 PRG:4C38 A9 08 + sta Zp40 ; CPU:$CC3A PRG:4C3A 85 40 + jsr Sub_CDB6 ; CPU:$CC3C PRG:4C3C 20 B6 CD + lda Zp66 ; CPU:$CC3F PRG:4C3F A5 66 + cmp #$05 ; CPU:$CC41 PRG:4C41 C9 05 + bne SetPlayerActive_Loop2 ; CPU:$CC43 PRG:4C43 D0 03 + jsr Sub_C140 ; CPU:$CC45 PRG:4C45 20 40 C1 +; ----------------------------------------------------------------------------- +; Routine: SetPlayerActive_Loop2 +; Global: Branch target inside SetPlayerActive: taken when Loop2. +; Local: Part of SetPlayerActive. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetPlayerActive_Loop2: + jsr Sub_CD59 ; CPU:$CC48 PRG:4C48 20 59 CD + lda #$88 ; CPU:$CC4B PRG:4C4B A9 88 + sta Zp01 ; CPU:$CC4D PRG:4C4D 85 01 + rts ; CPU:$CC4F PRG:4C4F 60 +; ---- data $CC50-$CC55 (6 bytes) ---- +; referenced by `lda $CC50,x` at $CC1D (operand $CC50 falls inside this region) +; referenced by `lda $CC51,x` at $CC22 (operand $CC51 falls inside this region) +; referenced by `lda $CC52,x` at $CC27 (operand $CC52 falls inside this region) + .byte $40, $CE, $2B, $24, $CE, $2B ; CPU:$CC50 PRG:4C50 40 CE 2B 24 CE 2B +; ----------------------------------------------------------------------------- +; Routine: CheckPlayerActive +; Global: Tests whether the player is still in play. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckPlayerActive: + lda Zp6F ; CPU:$CC56 PRG:4C56 A5 6F + bne CheckPlayerActive_Loop ; CPU:$CC58 PRG:4C58 D0 0E + lda ZpCD ; CPU:$CC5A PRG:4C5A A5 CD + beq CheckPlayerActive_Loop ; CPU:$CC5C PRG:4C5C F0 0A + lda Zp4A ; CPU:$CC5E PRG:4C5E A5 4A + cmp #$B0 ; CPU:$CC60 PRG:4C60 C9 B0 + bcs CheckPlayerActive_Loop ; CPU:$CC62 PRG:4C62 B0 04 + jsr Sub_CE8B ; CPU:$CC64 PRG:4C64 20 8B CE + rts ; CPU:$CC67 PRG:4C67 60 +; ----------------------------------------------------------------------------- +; Routine: CheckPlayerActive_Loop +; Global: Branch target inside CheckPlayerActive: taken when the loop repeats. +; Local: Part of CheckPlayerActive. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckPlayerActive_Loop: + jsr UpdatePlayerState ; CPU:$CC68 PRG:4C68 20 FA BB + lda NewButton1 ; CPU:$CC6B PRG:4C6B A5 2A + and #$C0 ; CPU:$CC6D PRG:4C6D 29 C0 + beq CheckPlayerActive_Loop3 ; CPU:$CC6F PRG:4C6F F0 1A + lda #$01 ; CPU:$CC71 PRG:4C71 A9 01 + sta a:$00E3 ; CPU:$CC73 PRG:4C73 8D E3 00 + lda #$03 ; CPU:$CC76 PRG:4C76 A9 03 + sta a:$00E2 ; CPU:$CC78 PRG:4C78 8D E2 00 + lda NewButton1 ; CPU:$CC7B PRG:4C7B A5 2A + and #$80 ; CPU:$CC7D PRG:4C7D 29 80 + beq CheckPlayerActive_Loop2 ; CPU:$CC7F PRG:4C7F F0 05 + lda #$02 ; CPU:$CC81 PRG:4C81 A9 02 + sta a:$00E2 ; CPU:$CC83 PRG:4C83 8D E2 00 +; ----------------------------------------------------------------------------- +; Routine: CheckPlayerActive_Loop2 +; Global: Branch target inside CheckPlayerActive: taken when Loop2. +; Local: Part of CheckPlayerActive. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckPlayerActive_Loop2: + lda #$04 ; CPU:$CC86 PRG:4C86 A9 04 + jsr BankedCall ; CPU:$CC88 PRG:4C88 20 04 80 +; ----------------------------------------------------------------------------- +; Routine: CheckPlayerActive_Loop3 +; Global: Branch target inside CheckPlayerActive: taken when Loop3. +; Local: Part of CheckPlayerActive. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckPlayerActive_Loop3: + lda $05A4 ; CPU:$CC8B PRG:4C8B AD A4 05 + beq CheckPlayerActive_Loop4 ; CPU:$CC8E PRG:4C8E F0 03 + jsr Sub_CE0D ; CPU:$CC90 PRG:4C90 20 0D CE +; ----------------------------------------------------------------------------- +; Routine: CheckPlayerActive_Loop4 +; Global: Branch target inside CheckPlayerActive: taken when Loop4. +; Local: Part of CheckPlayerActive. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckPlayerActive_Loop4: + ldx Zp64 ; CPU:$CC93 PRG:4C93 A6 64 + beq CheckPlayerActive_Loop5 ; CPU:$CC95 PRG:4C95 F0 25 + lda $0358 ; CPU:$CC97 PRG:4C97 AD 58 03 + cmp #$07 ; CPU:$CC9A PRG:4C9A C9 07 + bcc CheckPlayerActive_Loop6 ; CPU:$CC9C PRG:4C9C 90 1F + lda $0389,x ; CPU:$CC9E PRG:4C9E BD 89 03 + sta $0388 ; CPU:$CCA1 PRG:4CA1 8D 88 03 + lda $0399,x ; CPU:$CCA4 PRG:4CA4 BD 99 03 + sta $0398 ; CPU:$CCA7 PRG:4CA7 8D 98 03 + lda #$04 ; CPU:$CCAA PRG:4CAA A9 04 + clc ; CPU:$CCAC PRG:4CAC 18 + adc $0388 ; CPU:$CCAD PRG:4CAD 6D 88 03 + sta $0388 ; CPU:$CCB0 PRG:4CB0 8D 88 03 + lda #$04 ; CPU:$CCB3 PRG:4CB3 A9 04 + clc ; CPU:$CCB5 PRG:4CB5 18 + adc $0398 ; CPU:$CCB6 PRG:4CB6 6D 98 03 + sta $0398 ; CPU:$CCB9 PRG:4CB9 8D 98 03 +; ----------------------------------------------------------------------------- +; Routine: CheckPlayerActive_Loop5 +; Global: Branch target inside CheckPlayerActive: taken when Loop5. +; Local: Part of CheckPlayerActive. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckPlayerActive_Loop5: + rts ; CPU:$CCBC PRG:4CBC 60 +; ----------------------------------------------------------------------------- +; Routine: CheckPlayerActive_Loop6 +; Global: Branch target inside CheckPlayerActive: taken when Loop6. +; Local: Part of CheckPlayerActive. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckPlayerActive_Loop6: + lda FrameCounter ; CPU:$CCBD PRG:4CBD A5 31 + ror a ; CPU:$CCBF PRG:4CBF 6A + and #$03 ; CPU:$CCC0 PRG:4CC0 29 03 + sta Zp20 ; CPU:$CCC2 PRG:4CC2 85 20 + lda $03AA ; CPU:$CCC4 PRG:4CC4 AD AA 03 + and #$FC ; CPU:$CCC7 PRG:4CC7 29 FC + ora Zp20 ; CPU:$CCC9 PRG:4CC9 05 20 + sta $03AA ; CPU:$CCCB PRG:4CCB 8D AA 03 + rts ; CPU:$CCCE PRG:4CCE 60 +; ----------------------------------------------------------------------------- +; Routine: TickSoundOnEvenFrame +; Global: Updates the sound on every second frame. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSoundOnEvenFrame: + lda FrameCounter ; CPU:$CCCF PRG:4CCF A5 31 + ror a ; CPU:$CCD1 PRG:4CD1 6A + bcs TickSoundOnEvenFrame_Loop ; CPU:$CCD2 PRG:4CD2 B0 01 + rts ; CPU:$CCD4 PRG:4CD4 60 +; ----------------------------------------------------------------------------- +; Routine: TickSoundOnEvenFrame_Loop +; Global: Branch target inside TickSoundOnEvenFrame: taken when the loop repeats. +; Local: Part of TickSoundOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSoundOnEvenFrame_Loop: + lda Zp6F ; CPU:$CCD5 PRG:4CD5 A5 6F + bne TickSoundOnEvenFrame_Loop2 ; CPU:$CCD7 PRG:4CD7 D0 03 + jsr Sub_CE8B ; CPU:$CCD9 PRG:4CD9 20 8B CE +; ----------------------------------------------------------------------------- +; Routine: TickSoundOnEvenFrame_Loop2 +; Global: Branch target inside TickSoundOnEvenFrame: taken when Loop2. +; Local: Part of TickSoundOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSoundOnEvenFrame_Loop2: + jsr BuildBubbleTable ; CPU:$CCDC PRG:4CDC 20 E4 BE + jsr Sub_CDF0 ; CPU:$CCDF PRG:4CDF 20 F0 CD + lda Zp64 ; CPU:$CCE2 PRG:4CE2 A5 64 + beq TickSoundOnEvenFrame_Loop3 ; CPU:$CCE4 PRG:4CE4 F0 1C + lda $0358 ; CPU:$CCE6 PRG:4CE6 AD 58 03 + cmp #$07 ; CPU:$CCE9 PRG:4CE9 C9 07 + bcc TickSoundOnEvenFrame_Loop3 ; CPU:$CCEB PRG:4CEB 90 15 + ldx Zp64 ; CPU:$CCED PRG:4CED A6 64 + lda Zp4D,x ; CPU:$CCEF PRG:4CEF B5 4D + sta Zp65 ; CPU:$CCF1 PRG:4CF1 85 65 + tax ; CPU:$CCF3 PRG:4CF3 AA + lda $0400,x ; CPU:$CCF4 PRG:4CF4 BD 00 04 + ora #$40 ; CPU:$CCF7 PRG:4CF7 09 40 + sta $0400,x ; CPU:$CCF9 PRG:4CF9 9D 00 04 + lda #$00 ; CPU:$CCFC PRG:4CFC A9 00 + sta Zp64 ; CPU:$CCFE PRG:4CFE 85 64 + sta Zp67 ; CPU:$CD00 PRG:4D00 85 67 +; ----------------------------------------------------------------------------- +; Routine: TickSoundOnEvenFrame_Loop3 +; Global: Branch target inside TickSoundOnEvenFrame: taken when Loop3. +; Local: Part of TickSoundOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSoundOnEvenFrame_Loop3: + inc Zp60 ; CPU:$CD02 PRG:4D02 E6 60 + lda #$01 ; CPU:$CD04 PRG:4D04 A9 01 + sta a:$00E3 ; CPU:$CD06 PRG:4D06 8D E3 00 + lda #$00 ; CPU:$CD09 PRG:4D09 A9 00 + sta a:$00E2 ; CPU:$CD0B PRG:4D0B 8D E2 00 + lda #$04 ; CPU:$CD0E PRG:4D0E A9 04 + jsr BankedCall ; CPU:$CD10 PRG:4D10 20 04 80 + lda #$00 ; CPU:$CD13 PRG:4D13 A9 00 + sta Zp61 ; CPU:$CD15 PRG:4D15 85 61 + rts ; CPU:$CD17 PRG:4D17 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine +; Global: Updates the sound engine. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine: + jsr Sub_D4EE ; CPU:$CD18 PRG:4D18 20 EE D4 + rts ; CPU:$CD1B PRG:4D1B 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CD1C +; Global: Branch target inside Sub: taken when CD1C. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_CD1C: + ldx ZpCC ; CPU:$CD1C PRG:4D1C A6 CC + lda #$04 ; CPU:$CD1E PRG:4D1E A9 04 + sta Zp1F ; CPU:$CD20 PRG:4D20 85 1F + lda Zp48 ; CPU:$CD22 PRG:4D22 A5 48 + asl a ; CPU:$CD24 PRG:4D24 0A + asl a ; CPU:$CD25 PRG:4D25 0A + tay ; CPU:$CD26 PRG:4D26 A8 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_OnNonzero +; Global: Branch target inside UpdateSoundEngine: taken when the tested value is not zero. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_OnNonzero: + lda (Zp46),y ; CPU:$CD27 PRG:4D27 B1 46 + sta Zp1B ; CPU:$CD29 PRG:4D29 85 1B + and #$F0 ; CPU:$CD2B PRG:4D2B 29 F0 + sta Zp1C ; CPU:$CD2D PRG:4D2D 85 1C + clc ; CPU:$CD2F PRG:4D2F 18 + adc Zp49 ; CPU:$CD30 PRG:4D30 65 49 + sta $0388,x ; CPU:$CD32 PRG:4D32 9D 88 03 + lda Zp1B ; CPU:$CD35 PRG:4D35 A5 1B + and #$0F ; CPU:$CD37 PRG:4D37 29 0F + asl a ; CPU:$CD39 PRG:4D39 0A + asl a ; CPU:$CD3A PRG:4D3A 0A + asl a ; CPU:$CD3B PRG:4D3B 0A + asl a ; CPU:$CD3C PRG:4D3C 0A + clc ; CPU:$CD3D PRG:4D3D 18 + adc Zp4A ; CPU:$CD3E PRG:4D3E 65 4A + sta $0398,x ; CPU:$CD40 PRG:4D40 9D 98 03 + lda #$10 ; CPU:$CD43 PRG:4D43 A9 10 + and Zp1C ; CPU:$CD45 PRG:4D45 25 1C + beq UpdateSoundEngine_Loop ; CPU:$CD47 PRG:4D47 F0 09 + lda $0398,x ; CPU:$CD49 PRG:4D49 BD 98 03 + clc ; CPU:$CD4C PRG:4D4C 18 + adc #$08 ; CPU:$CD4D PRG:4D4D 69 08 + sta $0398,x ; CPU:$CD4F PRG:4D4F 9D 98 03 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_Loop +; Global: Branch target inside UpdateSoundEngine: taken when the loop repeats. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_Loop: + inx ; CPU:$CD52 PRG:4D52 E8 + iny ; CPU:$CD53 PRG:4D53 C8 + dec Zp1F ; CPU:$CD54 PRG:4D54 C6 1F + bne UpdateSoundEngine_OnNonzero; CPU:$CD56 PRG:4D56 D0 CF + rts ; CPU:$CD58 PRG:4D58 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CD59 +; Global: Branch target inside Sub: taken when CD59. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_CD59: + lda Zp41 ; CPU:$CD59 PRG:4D59 A5 41 + sta ZpCD ; CPU:$CD5B PRG:4D5B 85 CD + inc $05E1 ; CPU:$CD5D PRG:4D5D EE E1 05 + lda $05E1 ; CPU:$CD60 PRG:4D60 AD E1 05 + ldy $05E5 ; CPU:$CD63 PRG:4D63 AC E5 05 + bne UpdateSoundEngine_Loop2 ; CPU:$CD66 PRG:4D66 D0 05 + jsr Sub_8552 ; CPU:$CD68 PRG:4D68 20 52 85 + lda Zp3D ; CPU:$CD6B PRG:4D6B A5 3D +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_Loop2 +; Global: Branch target inside UpdateSoundEngine: taken when Loop2. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_Loop2: + and #$07 ; CPU:$CD6D PRG:4D6D 29 07 + sta Zp1D ; CPU:$CD6F PRG:4D6F 85 1D + lda $05E1 ; CPU:$CD71 PRG:4D71 AD E1 05 + ldy $05E5 ; CPU:$CD74 PRG:4D74 AC E5 05 + bne UpdateSoundEngine_Loop3 ; CPU:$CD77 PRG:4D77 D0 05 + jsr Sub_8552 ; CPU:$CD79 PRG:4D79 20 52 85 + lda Zp3D ; CPU:$CD7C PRG:4D7C A5 3D +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_Loop3 +; Global: Branch target inside UpdateSoundEngine: taken when Loop3. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_Loop3: + and #$7F ; CPU:$CD7E PRG:4D7E 29 7F + tay ; CPU:$CD80 PRG:4D80 A8 + lda (Zp39),y ; CPU:$CD81 PRG:4D81 B1 39 + sta Zp1B ; CPU:$CD83 PRG:4D83 85 1B + ror a ; CPU:$CD85 PRG:4D85 6A + ror a ; CPU:$CD86 PRG:4D86 6A + ror a ; CPU:$CD87 PRG:4D87 6A + and #$0E ; CPU:$CD88 PRG:4D88 29 0E + sta Zp41 ; CPU:$CD8A PRG:4D8A 85 41 + tax ; CPU:$CD8C PRG:4D8C AA + lda $F38E,x ; CPU:$CD8D PRG:4D8D BD 8E F3 + sta Zp19 ; CPU:$CD90 PRG:4D90 85 19 + lda $F38F,x ; CPU:$CD92 PRG:4D92 BD 8F F3 + sta Zp1A ; CPU:$CD95 PRG:4D95 85 1A + lda Zp1B ; CPU:$CD97 PRG:4D97 A5 1B + and #$0F ; CPU:$CD99 PRG:4D99 29 0F + asl a ; CPU:$CD9B PRG:4D9B 0A + asl a ; CPU:$CD9C PRG:4D9C 0A + tay ; CPU:$CD9D PRG:4D9D A8 + ldx #$00 ; CPU:$CD9E PRG:4D9E A2 00 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_OnCarryClear +; Global: Branch target inside UpdateSoundEngine: taken when the addition or subtraction did not carry. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_OnCarryClear: + stx Zp21 ; CPU:$CDA0 PRG:4DA0 86 21 + lda (Zp19),y ; CPU:$CDA2 PRG:4DA2 B1 19 + clc ; CPU:$CDA4 PRG:4DA4 18 + adc Zp1D ; CPU:$CDA5 PRG:4DA5 65 1D + tax ; CPU:$CDA7 PRG:4DA7 AA + lda $F381,x ; CPU:$CDA8 PRG:4DA8 BD 81 F3 + ldx Zp21 ; CPU:$CDAB PRG:4DAB A6 21 + sta Zp42,x ; CPU:$CDAD PRG:4DAD 95 42 + iny ; CPU:$CDAF PRG:4DAF C8 + inx ; CPU:$CDB0 PRG:4DB0 E8 + cpx #$04 ; CPU:$CDB1 PRG:4DB1 E0 04 + bcc UpdateSoundEngine_OnCarryClear ; CPU:$CDB3 PRG:4DB3 90 EB + rts ; CPU:$CDB5 PRG:4DB5 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CDB6 +; Global: Branch target inside Sub: taken when CDB6. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_CDB6: + ldx Zp41 ; CPU:$CDB6 PRG:4DB6 A6 41 + lda $F313,x ; CPU:$CDB8 PRG:4DB8 BD 13 F3 + sta Zp46 ; CPU:$CDBB PRG:4DBB 85 46 + lda $F314,x ; CPU:$CDBD PRG:4DBD BD 14 F3 + sta Zp47 ; CPU:$CDC0 PRG:4DC0 85 47 + ldx #$00 ; CPU:$CDC2 PRG:4DC2 A2 00 + lda #$02 ; CPU:$CDC4 PRG:4DC4 A9 02 + sta Zp12 ; CPU:$CDC6 PRG:4DC6 85 12 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_OnCarryClear2 +; Global: Branch target inside UpdateSoundEngine: taken when OnCarryClear2. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_OnCarryClear2: + stx Zp21 ; CPU:$CDC8 PRG:4DC8 86 21 + lda Zp42,x ; CPU:$CDCA PRG:4DCA B5 42 + sta Zp52,x ; CPU:$CDCC PRG:4DCC 95 52 + sta Zp11 ; CPU:$CDCE PRG:4DCE 85 11 + jsr Sub_855D ; CPU:$CDD0 PRG:4DD0 20 5D 85 + inc Zp12 ; CPU:$CDD3 PRG:4DD3 E6 12 + ldx Zp21 ; CPU:$CDD5 PRG:4DD5 A6 21 + inx ; CPU:$CDD7 PRG:4DD7 E8 + cpx #$04 ; CPU:$CDD8 PRG:4DD8 E0 04 + bcc UpdateSoundEngine_OnCarryClear2 ; CPU:$CDDA PRG:4DDA 90 EC + lda #$02 ; CPU:$CDDC PRG:4DDC A9 02 + sta ZpCC ; CPU:$CDDE PRG:4DDE 85 CC + ldy #$00 ; CPU:$CDE0 PRG:4DE0 A0 00 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_OnCarryClear3 +; Global: Branch target inside UpdateSoundEngine: taken when OnCarryClear3. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_OnCarryClear3: + lda (Zp46),y ; CPU:$CDE2 PRG:4DE2 B1 46 + clc ; CPU:$CDE4 PRG:4DE4 18 + adc Zp4D ; CPU:$CDE5 PRG:4DE5 65 4D + sta a:$004E,y ; CPU:$CDE7 PRG:4DE7 99 4E 00 + iny ; CPU:$CDEA PRG:4DEA C8 + cpy #$04 ; CPU:$CDEB PRG:4DEB C0 04 + bcc UpdateSoundEngine_OnCarryClear3 ; CPU:$CDED PRG:4DED 90 F3 + rts ; CPU:$CDEF PRG:4DEF 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CDF0 +; Global: Branch target inside Sub: taken when CDF0. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_CDF0: + lda #$00 ; CPU:$CDF0 PRG:4DF0 A9 00 + sta Zp11 ; CPU:$CDF2 PRG:4DF2 85 11 + lda #$02 ; CPU:$CDF4 PRG:4DF4 A9 02 + sta Zp12 ; CPU:$CDF6 PRG:4DF6 85 12 + lda $035A ; CPU:$CDF8 PRG:4DF8 AD 5A 03 + cmp #$05 ; CPU:$CDFB PRG:4DFB C9 05 + bne UpdateSoundEngine_OnCarryClear4 ; CPU:$CDFD PRG:4DFD D0 02 + inc Zp12 ; CPU:$CDFF PRG:4DFF E6 12 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_OnCarryClear4 +; Global: Branch target inside UpdateSoundEngine: taken when OnCarryClear4. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_OnCarryClear4: + jsr Sub_855D ; CPU:$CE01 PRG:4E01 20 5D 85 + inc Zp12 ; CPU:$CE04 PRG:4E04 E6 12 + lda Zp12 ; CPU:$CE06 PRG:4E06 A5 12 + cmp #$06 ; CPU:$CE08 PRG:4E08 C9 06 + bcc UpdateSoundEngine_OnCarryClear4 ; CPU:$CE0A PRG:4E0A 90 F5 + rts ; CPU:$CE0C PRG:4E0C 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CE0D +; Global: Branch target inside Sub: taken when CE0D. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_CE0D: + lda FrameCounter ; CPU:$CE0D PRG:4E0D A5 31 + ror a ; CPU:$CE0F PRG:4E0F 6A + bcs UpdateSoundEngine_Loop4 ; CPU:$CE10 PRG:4E10 B0 01 + rts ; CPU:$CE12 PRG:4E12 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_Loop4 +; Global: Branch target inside UpdateSoundEngine: taken when Loop4. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_Loop4: + lda $05A4 ; CPU:$CE13 PRG:4E13 AD A4 05 + tax ; CPU:$CE16 PRG:4E16 AA + and #$0F ; CPU:$CE17 PRG:4E17 29 0F + clc ; CPU:$CE19 PRG:4E19 18 + adc $05B5 ; CPU:$CE1A PRG:4E1A 6D B5 05 + sta $05B5 ; CPU:$CE1D PRG:4E1D 8D B5 05 + txa ; CPU:$CE20 PRG:4E20 8A + ror a ; CPU:$CE21 PRG:4E21 6A + ror a ; CPU:$CE22 PRG:4E22 6A + ror a ; CPU:$CE23 PRG:4E23 6A + ror a ; CPU:$CE24 PRG:4E24 6A + and #$0F ; CPU:$CE25 PRG:4E25 29 0F + clc ; CPU:$CE27 PRG:4E27 18 + adc $05B4 ; CPU:$CE28 PRG:4E28 6D B4 05 + sta $05B4 ; CPU:$CE2B PRG:4E2B 8D B4 05 + ldx #$05 ; CPU:$CE2E PRG:4E2E A2 05 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_OnNonzero2 +; Global: Branch target inside UpdateSoundEngine: taken when OnNonzero2. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_OnNonzero2: + lda $05B0,x ; CPU:$CE30 PRG:4E30 BD B0 05 + cmp #$0A ; CPU:$CE33 PRG:4E33 C9 0A + bcc UpdateSoundEngine_Loop5 ; CPU:$CE35 PRG:4E35 90 0B + inc $05AF,x ; CPU:$CE37 PRG:4E37 FE AF 05 + clc ; CPU:$CE3A PRG:4E3A 18 + adc #$06 ; CPU:$CE3B PRG:4E3B 69 06 + and #$0F ; CPU:$CE3D PRG:4E3D 29 0F + sta $05B0,x ; CPU:$CE3F PRG:4E3F 9D B0 05 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_Loop5 +; Global: Branch target inside UpdateSoundEngine: taken when Loop5. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_Loop5: + dex ; CPU:$CE42 PRG:4E42 CA + bne UpdateSoundEngine_OnNonzero2 ; CPU:$CE43 PRG:4E43 D0 EB + lda #$06 ; CPU:$CE45 PRG:4E45 A9 06 + sta $05D2 ; CPU:$CE47 PRG:4E47 8D D2 05 + lda #$01 ; CPU:$CE4A PRG:4E4A A9 01 + sta $05D3 ; CPU:$CE4C PRG:4E4C 8D D3 05 + ldx #$00 ; CPU:$CE4F PRG:4E4F A2 00 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_OnCarryClear5 +; Global: Branch target inside UpdateSoundEngine: taken when OnCarryClear5. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_OnCarryClear5: + lda $05B0,x ; CPU:$CE51 PRG:4E51 BD B0 05 + tay ; CPU:$CE54 PRG:4E54 A8 + lda $F1D6,y ; CPU:$CE55 PRG:4E55 B9 D6 F1 + sta $05D4,x ; CPU:$CE58 PRG:4E58 9D D4 05 + inx ; CPU:$CE5B PRG:4E5B E8 + cpx #$06 ; CPU:$CE5C PRG:4E5C E0 06 + bcc UpdateSoundEngine_OnCarryClear5 ; CPU:$CE5E PRG:4E5E 90 F1 + lda Zp6F ; CPU:$CE60 PRG:4E60 A5 6F + asl a ; CPU:$CE62 PRG:4E62 0A + tay ; CPU:$CE63 PRG:4E63 A8 + ldx Zp37 ; CPU:$CE64 PRG:4E64 A6 37 + lda $D412,y ; CPU:$CE66 PRG:4E66 B9 12 D4 + sta $0338,x ; CPU:$CE69 PRG:4E69 9D 38 03 + lda $D413,y ; CPU:$CE6C PRG:4E6C B9 13 D4 + sta $0339,x ; CPU:$CE6F PRG:4E6F 9D 39 03 + lda #$D2 ; CPU:$CE72 PRG:4E72 A9 D2 + sta $033A,x ; CPU:$CE74 PRG:4E74 9D 3A 03 + lda #$05 ; CPU:$CE77 PRG:4E77 A9 05 + sta $033B,x ; CPU:$CE79 PRG:4E79 9D 3B 03 + lda #$00 ; CPU:$CE7C PRG:4E7C A9 00 + sta $033C,x ; CPU:$CE7E PRG:4E7E 9D 3C 03 + sta $05A4 ; CPU:$CE81 PRG:4E81 8D A4 05 + txa ; CPU:$CE84 PRG:4E84 8A + clc ; CPU:$CE85 PRG:4E85 18 + adc #$04 ; CPU:$CE86 PRG:4E86 69 04 + sta Zp37 ; CPU:$CE88 PRG:4E88 85 37 + rts ; CPU:$CE8A PRG:4E8A 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_CE8B +; Global: Branch target inside Sub: taken when CE8B. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_CE8B: + lda FrameCounter ; CPU:$CE8B PRG:4E8B A5 31 + ror a ; CPU:$CE8D PRG:4E8D 6A + bcs UpdateSoundEngine_Loop6 ; CPU:$CE8E PRG:4E8E B0 01 + rts ; CPU:$CE90 PRG:4E90 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_Loop6 +; Global: Branch target inside UpdateSoundEngine: taken when Loop6. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_Loop6: + ldy #$04 ; CPU:$CE91 PRG:4E91 A0 04 + sty Zp22 ; CPU:$CE93 PRG:4E93 84 22 + lda ZpCD ; CPU:$CE95 PRG:4E95 A5 CD + asl a ; CPU:$CE97 PRG:4E97 0A + asl a ; CPU:$CE98 PRG:4E98 0A + tay ; CPU:$CE99 PRG:4E99 A8 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_OnNonzero3 +; Global: Branch target inside UpdateSoundEngine: taken when OnNonzero3. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_OnNonzero3: + lda $CFC5,y ; CPU:$CE9A PRG:4E9A B9 C5 CF + sta Zp19 ; CPU:$CE9D PRG:4E9D 85 19 + iny ; CPU:$CE9F PRG:4E9F C8 + lda $CFC5,y ; CPU:$CEA0 PRG:4EA0 B9 C5 CF + sta Zp1A ; CPU:$CEA3 PRG:4EA3 85 1A + iny ; CPU:$CEA5 PRG:4EA5 C8 + ldx Zp36 ; CPU:$CEA6 PRG:4EA6 A6 36 + lda Zp19 ; CPU:$CEA8 PRG:4EA8 A5 19 + sta $0300,x ; CPU:$CEAA PRG:4EAA 9D 00 03 + inx ; CPU:$CEAD PRG:4EAD E8 + lda Zp1A ; CPU:$CEAE PRG:4EAE A5 1A + sta $0300,x ; CPU:$CEB0 PRG:4EB0 9D 00 03 + inx ; CPU:$CEB3 PRG:4EB3 E8 + lda #$A8 ; CPU:$CEB4 PRG:4EB4 A9 A8 + sta $0300,x ; CPU:$CEB6 PRG:4EB6 9D 00 03 + inx ; CPU:$CEB9 PRG:4EB9 E8 + lda #$F2 ; CPU:$CEBA PRG:4EBA A9 F2 + sta $0300,x ; CPU:$CEBC PRG:4EBC 9D 00 03 + inx ; CPU:$CEBF PRG:4EBF E8 + stx Zp36 ; CPU:$CEC0 PRG:4EC0 86 36 + dec Zp22 ; CPU:$CEC2 PRG:4EC2 C6 22 + bne UpdateSoundEngine_OnNonzero3 ; CPU:$CEC4 PRG:4EC4 D0 D4 + ldx Zp38 ; CPU:$CEC6 PRG:4EC6 A6 38 + lda #$E6 ; CPU:$CEC8 PRG:4EC8 A9 E6 + sta $03B8,x ; CPU:$CECA PRG:4ECA 9D B8 03 + inx ; CPU:$CECD PRG:4ECD E8 + lda #$55 ; CPU:$CECE PRG:4ECE A9 55 + sta $03B8,x ; CPU:$CED0 PRG:4ED0 9D B8 03 + inx ; CPU:$CED3 PRG:4ED3 E8 + stx Zp38 ; CPU:$CED4 PRG:4ED4 86 38 + ldy #$00 ; CPU:$CED6 PRG:4ED6 A0 00 + sty Zp22 ; CPU:$CED8 PRG:4ED8 84 22 + lda Zp41 ; CPU:$CEDA PRG:4EDA A5 41 + asl a ; CPU:$CEDC PRG:4EDC 0A + asl a ; CPU:$CEDD PRG:4EDD 0A + sta Zp21 ; CPU:$CEDE PRG:4EDE 85 21 +; ----------------------------------------------------------------------------- +; Routine: UpdateSoundEngine_OnCarryClear6 +; Global: Branch target inside UpdateSoundEngine: taken when OnCarryClear6. +; Local: Part of UpdateSoundEngine. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateSoundEngine_OnCarryClear6: + ldx Zp21 ; CPU:$CEE0 PRG:4EE0 A6 21 + lda $CFC5,x ; CPU:$CEE2 PRG:4EE2 BD C5 CF + sta Zp19 ; CPU:$CEE5 PRG:4EE5 85 19 + inx ; CPU:$CEE7 PRG:4EE7 E8 + lda $CFC5,x ; CPU:$CEE8 PRG:4EE8 BD C5 CF + sta Zp1A ; CPU:$CEEB PRG:4EEB 85 1A + inx ; CPU:$CEED PRG:4EED E8 + stx Zp21 ; CPU:$CEEE PRG:4EEE 86 21 + lda a:$0042,y ; CPU:$CEF0 PRG:4EF0 B9 42 00 + sta Zp1B ; CPU:$CEF3 PRG:4EF3 85 1B + inc Zp22 ; CPU:$CEF5 PRG:4EF5 E6 22 + asl a ; CPU:$CEF7 PRG:4EF7 0A + tay ; CPU:$CEF8 PRG:4EF8 A8 + lda $F29E,y ; CPU:$CEF9 PRG:4EF9 B9 9E F2 + sta Zp17 ; CPU:$CEFC PRG:4EFC 85 17 + lda $F29F,y ; CPU:$CEFE PRG:4EFE B9 9F F2 + sta Zp18 ; CPU:$CF01 PRG:4F01 85 18 + ldx Zp36 ; CPU:$CF03 PRG:4F03 A6 36 + lda Zp19 ; CPU:$CF05 PRG:4F05 A5 19 + sta $0300,x ; CPU:$CF07 PRG:4F07 9D 00 03 + inx ; CPU:$CF0A PRG:4F0A E8 + lda Zp1A ; CPU:$CF0B PRG:4F0B A5 1A + sta $0300,x ; CPU:$CF0D PRG:4F0D 9D 00 03 + inx ; CPU:$CF10 PRG:4F10 E8 + lda Zp17 ; CPU:$CF11 PRG:4F11 A5 17 + sta $0300,x ; CPU:$CF13 PRG:4F13 9D 00 03 + inx ; CPU:$CF16 PRG:4F16 E8 + lda Zp18 ; CPU:$CF17 PRG:4F17 A5 18 + sta $0300,x ; CPU:$CF19 PRG:4F19 9D 00 03 + inx ; CPU:$CF1C PRG:4F1C E8 + stx Zp36 ; CPU:$CF1D PRG:4F1D 86 36 + jsr Sub_84E3 ; CPU:$CF1F PRG:4F1F 20 E3 84 + ldy Zp22 ; CPU:$CF22 PRG:4F22 A4 22 + cpy #$04 ; CPU:$CF24 PRG:4F24 C0 04 + bcc UpdateSoundEngine_OnCarryClear6 ; CPU:$CF26 PRG:4F26 90 B8 + ldx Zp36 ; CPU:$CF28 PRG:4F28 A6 36 + lda #$00 ; CPU:$CF2A PRG:4F2A A9 00 + sta $0300,x ; CPU:$CF2C PRG:4F2C 9D 00 03 + sta ZpCD ; CPU:$CF2F PRG:4F2F 85 CD + rts ; CPU:$CF31 PRG:4F31 60 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount +; Global: Tests how many actors are on the screen. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount: + lda Zp67 ; CPU:$CF32 PRG:4F32 A5 67 + cmp #$08 ; CPU:$CF34 PRG:4F34 C9 08 + bcc CheckActorCount_Loop ; CPU:$CF36 PRG:4F36 90 15 + ldx Zp65 ; CPU:$CF38 PRG:4F38 A6 65 + lda $0400,x ; CPU:$CF3A PRG:4F3A BD 00 04 + and #$BF ; CPU:$CF3D PRG:4F3D 29 BF + sta $0400,x ; CPU:$CF3F PRG:4F3F 9D 00 04 + lda #$00 ; CPU:$CF42 PRG:4F42 A9 00 + sta Zp67 ; CPU:$CF44 PRG:4F44 85 67 + sta $0358 ; CPU:$CF46 PRG:4F46 8D 58 03 + lda #$FF ; CPU:$CF49 PRG:4F49 A9 FF + sta Zp65 ; CPU:$CF4B PRG:4F4B 85 65 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop +; Global: Branch target inside CheckActorCount: taken when the loop repeats. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop: + ldx #$0B ; CPU:$CF4D PRG:4F4D A2 0B +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_OnCarryClear +; Global: Branch target inside CheckActorCount: taken when the addition or subtraction did not carry. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_OnCarryClear: + lda $0400,x ; CPU:$CF4F PRG:4F4F BD 00 04 + beq CheckActorCount_Loop2 ; CPU:$CF52 PRG:4F52 F0 09 + inc Zp60 ; CPU:$CF54 PRG:4F54 E6 60 + inc Zp60 ; CPU:$CF56 PRG:4F56 E6 60 + lda #$00 ; CPU:$CF58 PRG:4F58 A9 00 + sta Zp61 ; CPU:$CF5A PRG:4F5A 85 61 + rts ; CPU:$CF5C PRG:4F5C 60 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop2 +; Global: Branch target inside CheckActorCount: taken when Loop2. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop2: + txa ; CPU:$CF5D PRG:4F5D 8A + clc ; CPU:$CF5E PRG:4F5E 18 + adc #$10 ; CPU:$CF5F PRG:4F5F 69 10 + tax ; CPU:$CF61 PRG:4F61 AA + cmp #$70 ; CPU:$CF62 PRG:4F62 C9 70 + bcc CheckActorCount_OnCarryClear ; CPU:$CF64 PRG:4F64 90 E9 + lda #$00 ; CPU:$CF66 PRG:4F66 A9 00 + sta Zp60 ; CPU:$CF68 PRG:4F68 85 60 + lda Zp71 ; CPU:$CF6A PRG:4F6A A5 71 + cmp #$02 ; CPU:$CF6C PRG:4F6C C9 02 + beq CheckActorCount_Loop5 ; CPU:$CF6E PRG:4F6E F0 2C + lda Zp69 ; CPU:$CF70 PRG:4F70 A5 69 + bne CheckActorCount_Loop4 ; CPU:$CF72 PRG:4F72 D0 27 + lda Zp63 ; CPU:$CF74 PRG:4F74 A5 63 + cmp #$1E ; CPU:$CF76 PRG:4F76 C9 1E + bcc CheckActorCount_Loop3 ; CPU:$CF78 PRG:4F78 90 0F + lda #$00 ; CPU:$CF7A PRG:4F7A A9 00 + sta Zp63 ; CPU:$CF7C PRG:4F7C 85 63 + inc Zp66 ; CPU:$CF7E PRG:4F7E E6 66 + lda Zp66 ; CPU:$CF80 PRG:4F80 A5 66 + cmp #$05 ; CPU:$CF82 PRG:4F82 C9 05 + beq CheckActorCount_Loop3 ; CPU:$CF84 PRG:4F84 F0 03 + jsr Sub_C0F2 ; CPU:$CF86 PRG:4F86 20 F2 C0 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop3 +; Global: Branch target inside CheckActorCount: taken when Loop3. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop3: + lda Zp62 ; CPU:$CF89 PRG:4F89 A5 62 + cmp #$C8 ; CPU:$CF8B PRG:4F8B C9 C8 + bcc CheckActorCount_Loop4 ; CPU:$CF8D PRG:4F8D 90 0C +; ----------------------------------------------------------------------------- +; Routine: Sub_CF8F +; Global: Branch target inside Sub: taken when CF8F. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_CF8F: + lda #$07 ; CPU:$CF8F PRG:4F8F A9 07 + sta Zp60 ; CPU:$CF91 PRG:4F91 85 60 + lda #$00 ; CPU:$CF93 PRG:4F93 A9 00 + sta Zp61 ; CPU:$CF95 PRG:4F95 85 61 + lda #$32 ; CPU:$CF97 PRG:4F97 A9 32 + sta Zp56 ; CPU:$CF99 PRG:4F99 85 56 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop4 +; Global: Branch target inside CheckActorCount: taken when Loop4. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop4: + rts ; CPU:$CF9B PRG:4F9B 60 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop5 +; Global: Branch target inside CheckActorCount: taken when Loop5. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop5: + ldx Zp65 ; CPU:$CF9C PRG:4F9C A6 65 + lda $0400,x ; CPU:$CF9E PRG:4F9E BD 00 04 + and #$40 ; CPU:$CFA1 PRG:4FA1 29 40 + bne CheckActorCount_Loop4 ; CPU:$CFA3 PRG:4FA3 D0 F6 + jmp Sub_CF8F ; CPU:$CFA5 PRG:4FA5 4C 8F CF +; ---- data $CFA8-$CFFC (85 bytes) ---- +; referenced by `lda $CFC5,y` at $CE9A (operand $CFC5 falls inside this region) +; referenced by `lda $CFC5,y` at $CEA0 (operand $CFC5 falls inside this region) +; referenced by `lda $CFC5,x` at $CEE2 (operand $CFC5 falls inside this region) +; referenced by `lda $CFC5,x` at $CEE8 (operand $CFC5 falls inside this region) + .byte $A9, $00, $85, $98, $A5, $6F, $F0, $0C, $A5, $96, $D0, $08, $AD, $E8, $05, $C9 ; CPU:$CFA8 PRG:4FA8 A9 00 85 98 A5 6F F0 0C A5 96 D0 08 AD E8 05 C9 + .byte $05, $D0, $01, $60, $A9, $09, $85, $6A, $A9, $00, $85, $6C, $60, $50, $24, $50 ; CPU:$CFB8 PRG:4FB8 05 D0 01 60 A9 09 85 6A A9 00 85 6C 60 50 24 50 + .byte $24, $50, $24, $50, $24, $98, $22, $BA, $22, $D8, $22, $FA, $22, $D6, $22, $B8 ; CPU:$CFC8 PRG:4FC8 24 50 24 50 24 98 22 BA 22 D8 22 FA 22 D6 22 B8 + .byte $22, $DA, $22, $F8, $22, $F6, $22, $98, $22, $D8, $22, $18, $23, $B6, $22, $BA ; CPU:$CFD8 PRG:4FD8 22 DA 22 F8 22 F6 22 98 22 D8 22 18 23 B6 22 BA + .byte $22, $D8, $22, $F6, $22, $98, $22, $7A, $22, $D8, $22, $18, $23, $B6, $22, $D8 ; CPU:$CFE8 PRG:4FE8 22 D8 22 F6 22 98 22 7A 22 D8 22 18 23 B6 22 D8 + .byte $22, $BA, $22, $18, $23 ; CPU:$CFF8 PRG:4FF8 22 BA 22 18 23 +; ----------------------------------------------------------------------------- +; Routine: Sub_CFFD +; Global: Branch target inside Sub: taken when CFFD. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_CFFD: + ldy #$00 ; CPU:$CFFD PRG:4FFD A0 00 + ldx #$00 ; CPU:$CFFF PRG:4FFF A2 00 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_OnCarryClear2 +; Global: Branch target inside CheckActorCount: taken when OnCarryClear2. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_OnCarryClear2: + lda $0400,x ; CPU:$D001 PRG:5001 BD 00 04 + and #$87 ; CPU:$D004 PRG:5004 29 87 + cmp Zp20 ; CPU:$D006 PRG:5006 C5 20 + beq CheckActorCount_Loop6 ; CPU:$D008 PRG:5008 F0 04 + lda #$00 ; CPU:$D00A PRG:500A A9 00 + beq CheckActorCount_Loop7 ; CPU:$D00C PRG:500C F0 07 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop6 +; Global: Branch target inside CheckActorCount: taken when Loop6. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop6: + iny ; CPU:$D00E PRG:500E C8 + txa ; CPU:$D00F PRG:500F 8A + sta $0522,y ; CPU:$D010 PRG:5010 99 22 05 + lda Zp20 ; CPU:$D013 PRG:5013 A5 20 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop7 +; Global: Branch target inside CheckActorCount: taken when Loop7. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop7: + sta $0471,x ; CPU:$D015 PRG:5015 9D 71 04 + inx ; CPU:$D018 PRG:5018 E8 + cpx #$70 ; CPU:$D019 PRG:5019 E0 70 + bcc CheckActorCount_OnCarryClear2 ; CPU:$D01B PRG:501B 90 E4 + cpy #$00 ; CPU:$D01D PRG:501D C0 00 + bne CheckActorCount_OnNonzero ; CPU:$D01F PRG:501F D0 01 + rts ; CPU:$D021 PRG:5021 60 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_OnNonzero +; Global: Branch target inside CheckActorCount: taken when the tested value is not zero. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_OnNonzero: + ldx $0522,y ; CPU:$D022 PRG:5022 BE 22 05 + lda $0471,x ; CPU:$D025 PRG:5025 BD 71 04 + beq CheckActorCount_Loop8 ; CPU:$D028 PRG:5028 F0 18 + sty Zp25 ; CPU:$D02A PRG:502A 84 25 + ldy #$00 ; CPU:$D02C PRG:502C A0 00 + sty Zp21 ; CPU:$D02E PRG:502E 84 21 + tya ; CPU:$D030 PRG:5030 98 + sta $0471,x ; CPU:$D031 PRG:5031 9D 71 04 + txa ; CPU:$D034 PRG:5034 8A + sta $0540,y ; CPU:$D035 PRG:5035 99 40 05 + stx Zp20 ; CPU:$D038 PRG:5038 86 20 + iny ; CPU:$D03A PRG:503A C8 + sty Zp59 ; CPU:$D03B PRG:503B 84 59 + jsr Sub_D046 ; CPU:$D03D PRG:503D 20 46 D0 +; ---- data $D040-$D041 (2 bytes) ---- + .byte $A4, $25 ; CPU:$D040 PRG:5040 A4 25 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop8 +; Global: Branch target inside CheckActorCount: taken when Loop8. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop8: + dey ; CPU:$D042 PRG:5042 88 + bne CheckActorCount_OnNonzero ; CPU:$D043 PRG:5043 D0 DD + rts ; CPU:$D045 PRG:5045 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D046 +; Global: Branch target inside Sub: taken when D046. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_D046: + ldy #$06 ; CPU:$D046 PRG:5046 A0 06 + sty Zp22 ; CPU:$D048 PRG:5048 84 22 + ldx #$00 ; CPU:$D04A PRG:504A A2 00 + stx Zp24 ; CPU:$D04C PRG:504C 86 24 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_OnNonzero2 +; Global: Branch target inside CheckActorCount: taken when OnNonzero2. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_OnNonzero2: + ldy Zp22 ; CPU:$D04E PRG:504E A4 22 + lda Zp20 ; CPU:$D050 PRG:5050 A5 20 + and #$10 ; CPU:$D052 PRG:5052 29 10 + beq CheckActorCount_Loop9 ; CPU:$D054 PRG:5054 F0 05 + tya ; CPU:$D056 PRG:5056 98 + clc ; CPU:$D057 PRG:5057 18 + adc #$06 ; CPU:$D058 PRG:5058 69 06 + tay ; CPU:$D05A PRG:505A A8 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop9 +; Global: Branch target inside CheckActorCount: taken when Loop9. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop9: + lda $F87A,y ; CPU:$D05B PRG:505B B9 7A F8 + clc ; CPU:$D05E PRG:505E 18 + adc Zp20 ; CPU:$D05F PRG:505F 65 20 + tax ; CPU:$D061 PRG:5061 AA + and #$0F ; CPU:$D062 PRG:5062 29 0F + cmp #$0E ; CPU:$D064 PRG:5064 C9 0E + bcs CheckActorCount_Loop10 ; CPU:$D066 PRG:5066 B0 16 + txa ; CPU:$D068 PRG:5068 8A + and #$F0 ; CPU:$D069 PRG:5069 29 F0 + cmp #$70 ; CPU:$D06B PRG:506B C9 70 + bcs CheckActorCount_Loop10 ; CPU:$D06D PRG:506D B0 0F + lda $0471,x ; CPU:$D06F PRG:506F BD 71 04 + beq CheckActorCount_Loop10 ; CPU:$D072 PRG:5072 F0 0A + stx Zp23 ; CPU:$D074 PRG:5074 86 23 + inc Zp24 ; CPU:$D076 PRG:5076 E6 24 + ldx Zp24 ; CPU:$D078 PRG:5078 A6 24 + cpx #$02 ; CPU:$D07A PRG:507A E0 02 + bcs CheckActorCount_Loop11 ; CPU:$D07C PRG:507C B0 06 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop10 +; Global: Branch target inside CheckActorCount: taken when Loop10. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop10: + dec Zp22 ; CPU:$D07E PRG:507E C6 22 + bne CheckActorCount_OnNonzero2 ; CPU:$D080 PRG:5080 D0 CC + beq CheckActorCount_Loop12 ; CPU:$D082 PRG:5082 F0 09 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop11 +; Global: Branch target inside CheckActorCount: taken when Loop11. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop11: + inc Zp21 ; CPU:$D084 PRG:5084 E6 21 + ldx Zp21 ; CPU:$D086 PRG:5086 A6 21 + lda Zp20 ; CPU:$D088 PRG:5088 A5 20 + sta $0559,x ; CPU:$D08A PRG:508A 9D 59 05 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop12 +; Global: Branch target inside CheckActorCount: taken when Loop12. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop12: + ldx Zp24 ; CPU:$D08D PRG:508D A6 24 + beq CheckActorCount_Loop13 ; CPU:$D08F PRG:508F F0 14 + ldx Zp23 ; CPU:$D091 PRG:5091 A6 23 + lda #$00 ; CPU:$D093 PRG:5093 A9 00 + sta $0471,x ; CPU:$D095 PRG:5095 9D 71 04 + ldy Zp59 ; CPU:$D098 PRG:5098 A4 59 + txa ; CPU:$D09A PRG:509A 8A + sta $0540,y ; CPU:$D09B PRG:509B 99 40 05 + stx Zp20 ; CPU:$D09E PRG:509E 86 20 + inc Zp59 ; CPU:$D0A0 PRG:50A0 E6 59 + jmp Sub_D046 ; CPU:$D0A2 PRG:50A2 4C 46 D0 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop13 +; Global: Branch target inside CheckActorCount: taken when Loop13. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop13: + ldx Zp21 ; CPU:$D0A5 PRG:50A5 A6 21 + beq CheckActorCount_Loop14 ; CPU:$D0A7 PRG:50A7 F0 0A + lda $0559,x ; CPU:$D0A9 PRG:50A9 BD 59 05 + dec Zp21 ; CPU:$D0AC PRG:50AC C6 21 + sta Zp20 ; CPU:$D0AE PRG:50AE 85 20 + jmp Sub_D046 ; CPU:$D0B0 PRG:50B0 4C 46 D0 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop14 +; Global: Branch target inside CheckActorCount: taken when Loop14. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop14: + ldy Zp59 ; CPU:$D0B3 PRG:50B3 A4 59 + cpy #$04 ; CPU:$D0B5 PRG:50B5 C0 04 + bcc CheckActorCount_Loop15 ; CPU:$D0B7 PRG:50B7 90 29 + tya ; CPU:$D0B9 PRG:50B9 98 + clc ; CPU:$D0BA PRG:50BA 18 + adc $05A5 ; CPU:$D0BB PRG:50BB 6D A5 05 + sta $05A5 ; CPU:$D0BE PRG:50BE 8D A5 05 + tya ; CPU:$D0C1 PRG:50C1 98 + sec ; CPU:$D0C2 PRG:50C2 38 + sbc #$03 ; CPU:$D0C3 PRG:50C3 E9 03 + asl a ; CPU:$D0C5 PRG:50C5 0A + asl a ; CPU:$D0C6 PRG:50C6 0A + clc ; CPU:$D0C7 PRG:50C7 18 + adc $05A6 ; CPU:$D0C8 PRG:50C8 6D A6 05 + sta $05A6 ; CPU:$D0CB PRG:50CB 8D A6 05 + dey ; CPU:$D0CE PRG:50CE 88 + ldx Zp58 ; CPU:$D0CF PRG:50CF A6 58 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_OnNonnegative +; Global: Branch target inside CheckActorCount: taken when the tested value is not negative. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_OnNonnegative: + lda $0540,y ; CPU:$D0D1 PRG:50D1 B9 40 05 + sta $0568,x ; CPU:$D0D4 PRG:50D4 9D 68 05 + inx ; CPU:$D0D7 PRG:50D7 E8 + dey ; CPU:$D0D8 PRG:50D8 88 + bpl CheckActorCount_OnNonnegative ; CPU:$D0D9 PRG:50D9 10 F6 + lda #$FF ; CPU:$D0DB PRG:50DB A9 FF + sta $0568,x ; CPU:$D0DD PRG:50DD 9D 68 05 + stx Zp58 ; CPU:$D0E0 PRG:50E0 86 58 +; ----------------------------------------------------------------------------- +; Routine: CheckActorCount_Loop15 +; Global: Branch target inside CheckActorCount: taken when Loop15. +; Local: Part of CheckActorCount. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +CheckActorCount_Loop15: + lda #$00 ; CPU:$D0E2 PRG:50E2 A9 00 + sta Zp59 ; CPU:$D0E4 PRG:50E4 85 59 + rts ; CPU:$D0E6 PRG:50E6 60 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame +; Global: Updates the actors on every second frame. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame: + lda FrameCounter ; CPU:$D0E7 PRG:50E7 A5 31 + ror a ; CPU:$D0E9 PRG:50E9 6A + bcs TickActorsOnEvenFrame_Loop ; CPU:$D0EA PRG:50EA B0 01 + rts ; CPU:$D0EC PRG:50EC 60 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame_Loop +; Global: Branch target inside TickActorsOnEvenFrame: taken when the loop repeats. +; Local: Part of TickActorsOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame_Loop: + inc Zp56 ; CPU:$D0ED PRG:50ED E6 56 + lda Zp56 ; CPU:$D0EF PRG:50EF A5 56 + cmp #$04 ; CPU:$D0F1 PRG:50F1 C9 04 + bcc TickActorsOnEvenFrame_Loop2; CPU:$D0F3 PRG:50F3 90 11 + lda #$00 ; CPU:$D0F5 PRG:50F5 A9 00 + sta Zp56 ; CPU:$D0F7 PRG:50F7 85 56 + sta Zp59 ; CPU:$D0F9 PRG:50F9 85 59 + inc Zp3F ; CPU:$D0FB PRG:50FB E6 3F + lda Zp3F ; CPU:$D0FD PRG:50FD A5 3F + cmp #$08 ; CPU:$D0FF PRG:50FF C9 08 + bcc TickActorsOnEvenFrame_Loop2; CPU:$D101 PRG:5101 90 03 + inc Zp61 ; CPU:$D103 PRG:5103 E6 61 + rts ; CPU:$D105 PRG:5105 60 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame_Loop2 +; Global: Branch target inside TickActorsOnEvenFrame: taken when Loop2. +; Local: Part of TickActorsOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame_Loop2: + ldy Zp59 ; CPU:$D106 PRG:5106 A4 59 + lda $0568,y ; CPU:$D108 PRG:5108 B9 68 05 + cmp #$FF ; CPU:$D10B PRG:510B C9 FF + bne TickActorsOnEvenFrame_Loop3; CPU:$D10D PRG:510D D0 01 + rts ; CPU:$D10F PRG:510F 60 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame_Loop3 +; Global: Branch target inside TickActorsOnEvenFrame: taken when Loop3. +; Local: Part of TickActorsOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame_Loop3: + ldx #$00 ; CPU:$D110 PRG:5110 A2 00 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame_OnCarryClear +; Global: Branch target inside TickActorsOnEvenFrame: taken when the addition or subtraction did not carry. +; Local: Part of TickActorsOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame_OnCarryClear: + sta $0540,x ; CPU:$D112 PRG:5112 9D 40 05 + inx ; CPU:$D115 PRG:5115 E8 + iny ; CPU:$D116 PRG:5116 C8 + lda $0568,y ; CPU:$D117 PRG:5117 B9 68 05 + cmp #$FF ; CPU:$D11A PRG:511A C9 FF + beq TickActorsOnEvenFrame_Loop4; CPU:$D11C PRG:511C F0 04 + cpx #$0D ; CPU:$D11E PRG:511E E0 0D + bcc TickActorsOnEvenFrame_OnCarryClear ; CPU:$D120 PRG:5120 90 F0 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame_Loop4 +; Global: Branch target inside TickActorsOnEvenFrame: taken when Loop4. +; Local: Part of TickActorsOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame_Loop4: + sty Zp59 ; CPU:$D122 PRG:5122 84 59 + stx Zp24 ; CPU:$D124 PRG:5124 86 24 + stx Zp21 ; CPU:$D126 PRG:5126 86 21 + ldx #$00 ; CPU:$D128 PRG:5128 A2 00 + stx Zp36 ; CPU:$D12A PRG:512A 86 36 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame_OnNonzero +; Global: Branch target inside TickActorsOnEvenFrame: taken when the tested value is not zero. +; Local: Part of TickActorsOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame_OnNonzero: + ldx Zp36 ; CPU:$D12C PRG:512C A6 36 + lda $0540,x ; CPU:$D12E PRG:512E BD 40 05 + jsr Sub_84BF ; CPU:$D131 PRG:5131 20 BF 84 + lda Zp36 ; CPU:$D134 PRG:5134 A5 36 + asl a ; CPU:$D136 PRG:5136 0A + asl a ; CPU:$D137 PRG:5137 0A + tay ; CPU:$D138 PRG:5138 A8 + lda Zp19 ; CPU:$D139 PRG:5139 A5 19 + sta $0300,y ; CPU:$D13B PRG:513B 99 00 03 + lda Zp1A ; CPU:$D13E PRG:513E A5 1A + sta $0301,y ; CPU:$D140 PRG:5140 99 01 03 + inc Zp36 ; CPU:$D143 PRG:5143 E6 36 + dec Zp24 ; CPU:$D145 PRG:5145 C6 24 + bne TickActorsOnEvenFrame_OnNonzero ; CPU:$D147 PRG:5147 D0 E3 + lda #$00 ; CPU:$D149 PRG:5149 A9 00 + sta $0304,y ; CPU:$D14B PRG:514B 99 04 03 + ldx Zp3F ; CPU:$D14E PRG:514E A6 3F + lda $D1A8,x ; CPU:$D150 PRG:5150 BD A8 D1 + cmp #$03 ; CPU:$D153 PRG:5153 C9 03 + bcc TickActorsOnEvenFrame_Loop5; CPU:$D155 PRG:5155 90 04 + jsr Sub_D181 ; CPU:$D157 PRG:5157 20 81 D1 + rts ; CPU:$D15A PRG:515A 60 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame_Loop5 +; Global: Branch target inside TickActorsOnEvenFrame: taken when Loop5. +; Local: Part of TickActorsOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame_Loop5: + jsr Sub_D15F ; CPU:$D15B PRG:515B 20 5F D1 + rts ; CPU:$D15E PRG:515E 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D15F +; Global: Branch target inside Sub: taken when D15F. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_D15F: + asl a ; CPU:$D15F PRG:515F 0A + tax ; CPU:$D160 PRG:5160 AA + lda $F2FB,x ; CPU:$D161 PRG:5161 BD FB F2 + sta Zp19 ; CPU:$D164 PRG:5164 85 19 + lda $F2FC,x ; CPU:$D166 PRG:5166 BD FC F2 + sta Zp1A ; CPU:$D169 PRG:5169 85 1A + ldx #$00 ; CPU:$D16B PRG:516B A2 00 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame_OnNonnegative +; Global: Branch target inside TickActorsOnEvenFrame: taken when the tested value is not negative. +; Local: Part of TickActorsOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame_OnNonnegative: + txa ; CPU:$D16D PRG:516D 8A + asl a ; CPU:$D16E PRG:516E 0A + asl a ; CPU:$D16F PRG:516F 0A + tay ; CPU:$D170 PRG:5170 A8 + lda Zp19 ; CPU:$D171 PRG:5171 A5 19 + sta $0302,y ; CPU:$D173 PRG:5173 99 02 03 + lda Zp1A ; CPU:$D176 PRG:5176 A5 1A + sta $0303,y ; CPU:$D178 PRG:5178 99 03 03 + inx ; CPU:$D17B PRG:517B E8 + dec Zp21 ; CPU:$D17C PRG:517C C6 21 + bpl TickActorsOnEvenFrame_OnNonnegative ; CPU:$D17E PRG:517E 10 ED + rts ; CPU:$D180 PRG:5180 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D181 +; Global: Branch target inside Sub: taken when D181. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_D181: + ldx #$00 ; CPU:$D181 PRG:5181 A2 00 +; ----------------------------------------------------------------------------- +; Routine: TickActorsOnEvenFrame_OnNonnegative2 +; Global: Branch target inside TickActorsOnEvenFrame: taken when OnNonnegative2. +; Local: Part of TickActorsOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickActorsOnEvenFrame_OnNonnegative2: + lda $0540,x ; CPU:$D183 PRG:5183 BD 40 05 + stx Zp24 ; CPU:$D186 PRG:5186 86 24 + tay ; CPU:$D188 PRG:5188 A8 + lda $0400,y ; CPU:$D189 PRG:5189 B9 00 04 + and #$07 ; CPU:$D18C PRG:518C 29 07 + asl a ; CPU:$D18E PRG:518E 0A + tay ; CPU:$D18F PRG:518F A8 + txa ; CPU:$D190 PRG:5190 8A + asl a ; CPU:$D191 PRG:5191 0A + asl a ; CPU:$D192 PRG:5192 0A + tax ; CPU:$D193 PRG:5193 AA + lda $F29E,y ; CPU:$D194 PRG:5194 B9 9E F2 + sta $0302,x ; CPU:$D197 PRG:5197 9D 02 03 + lda $F29F,y ; CPU:$D19A PRG:519A B9 9F F2 + sta $0303,x ; CPU:$D19D PRG:519D 9D 03 03 + ldx Zp24 ; CPU:$D1A0 PRG:51A0 A6 24 + inx ; CPU:$D1A2 PRG:51A2 E8 + dec Zp21 ; CPU:$D1A3 PRG:51A3 C6 21 + bpl TickActorsOnEvenFrame_OnNonnegative2 ; CPU:$D1A5 PRG:51A5 10 DC + rts ; CPU:$D1A7 PRG:51A7 60 +; ---- data $D1A8-$D1AF (8 bytes) ---- +; referenced by `lda $D1A8,x` at $D150 (operand $D1A8 falls inside this region) + .byte $00, $03, $00, $03, $00, $01, $02, $00 ; CPU:$D1A8 PRG:51A8 00 03 00 03 00 01 02 00 +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPosition +; Global: Places the player at the start of the level. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitPlayerPosition: + lda #$00 ; CPU:$D1B0 PRG:51B0 A9 00 + sta Zp22 ; CPU:$D1B2 PRG:51B2 85 22 + lda #$FF ; CPU:$D1B4 PRG:51B4 A9 FF + sta Zp24 ; CPU:$D1B6 PRG:51B6 85 24 +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPosition_OnCarryClear +; Global: Branch target inside InitPlayerPosition: taken when the addition or subtraction did not carry. +; Local: Part of InitPlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitPlayerPosition_OnCarryClear: + lda Zp22 ; CPU:$D1B8 PRG:51B8 A5 22 + asl a ; CPU:$D1BA PRG:51BA 0A + asl a ; CPU:$D1BB PRG:51BB 0A + asl a ; CPU:$D1BC PRG:51BC 0A + asl a ; CPU:$D1BD PRG:51BD 0A + tax ; CPU:$D1BE PRG:51BE AA + lda #$0E ; CPU:$D1BF PRG:51BF A9 0E + sta Zp1F ; CPU:$D1C1 PRG:51C1 85 1F +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPosition_OnNonzero +; Global: Branch target inside InitPlayerPosition: taken when the tested value is not zero. +; Local: Part of InitPlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitPlayerPosition_OnNonzero: + lda $0400,x ; CPU:$D1C3 PRG:51C3 BD 00 04 + bne InitPlayerPosition_Loop2 ; CPU:$D1C6 PRG:51C6 D0 30 + stx Zp58 ; CPU:$D1C8 PRG:51C8 86 58 + txa ; CPU:$D1CA PRG:51CA 8A + ldy Zp22 ; CPU:$D1CB PRG:51CB A4 22 + sta $0540,y ; CPU:$D1CD PRG:51CD 99 40 05 + inx ; CPU:$D1D0 PRG:51D0 E8 +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPosition_OnNonzero2 +; Global: Branch target inside InitPlayerPosition: taken when OnNonzero2. +; Local: Part of InitPlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitPlayerPosition_OnNonzero2: + lda $0400,x ; CPU:$D1D1 PRG:51D1 BD 00 04 + beq InitPlayerPosition_Loop ; CPU:$D1D4 PRG:51D4 F0 10 + ldy Zp58 ; CPU:$D1D6 PRG:51D6 A4 58 + sta $0400,y ; CPU:$D1D8 PRG:51D8 99 00 04 + inc Zp58 ; CPU:$D1DB PRG:51DB E6 58 + lda #$00 ; CPU:$D1DD PRG:51DD A9 00 + sta $0400,x ; CPU:$D1DF PRG:51DF 9D 00 04 + stx Zp24 ; CPU:$D1E2 PRG:51E2 86 24 + inc Zp24 ; CPU:$D1E4 PRG:51E4 E6 24 +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPosition_Loop +; Global: Branch target inside InitPlayerPosition: taken when the loop repeats. +; Local: Part of InitPlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitPlayerPosition_Loop: + inx ; CPU:$D1E6 PRG:51E6 E8 + dec Zp1F ; CPU:$D1E7 PRG:51E7 C6 1F + bne InitPlayerPosition_OnNonzero2 ; CPU:$D1E9 PRG:51E9 D0 E6 + ldy Zp22 ; CPU:$D1EB PRG:51EB A4 22 + lda Zp24 ; CPU:$D1ED PRG:51ED A5 24 + sta $0522,y ; CPU:$D1EF PRG:51EF 99 22 05 + lda #$FF ; CPU:$D1F2 PRG:51F2 A9 FF + sta Zp24 ; CPU:$D1F4 PRG:51F4 85 24 + bmi InitPlayerPosition_Loop3 ; CPU:$D1F6 PRG:51F6 30 0C +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPosition_Loop2 +; Global: Branch target inside InitPlayerPosition: taken when Loop2. +; Local: Part of InitPlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitPlayerPosition_Loop2: + inx ; CPU:$D1F8 PRG:51F8 E8 + dec Zp1F ; CPU:$D1F9 PRG:51F9 C6 1F + bne InitPlayerPosition_OnNonzero ; CPU:$D1FB PRG:51FB D0 C6 + ldy Zp22 ; CPU:$D1FD PRG:51FD A4 22 + lda #$FF ; CPU:$D1FF PRG:51FF A9 FF + sta $0522,y ; CPU:$D201 PRG:5201 99 22 05 +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPosition_Loop3 +; Global: Branch target inside InitPlayerPosition: taken when Loop3. +; Local: Part of InitPlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitPlayerPosition_Loop3: + inc Zp22 ; CPU:$D204 PRG:5204 E6 22 + lda Zp22 ; CPU:$D206 PRG:5206 A5 22 + cmp #$07 ; CPU:$D208 PRG:5208 C9 07 + bcc InitPlayerPosition_OnCarryClear ; CPU:$D20A PRG:520A 90 AC + lda #$00 ; CPU:$D20C PRG:520C A9 00 + sta Zp58 ; CPU:$D20E PRG:520E 85 58 + inc Zp61 ; CPU:$D210 PRG:5210 E6 61 + lda Zp65 ; CPU:$D212 PRG:5212 A5 65 + bmi InitPlayerPosition_Loop4 ; CPU:$D214 PRG:5214 30 03 + jsr Sub_D45E ; CPU:$D216 PRG:5216 20 5E D4 +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPosition_Loop4 +; Global: Branch target inside InitPlayerPosition: taken when Loop4. +; Local: Part of InitPlayerPosition. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitPlayerPosition_Loop4: + rts ; CPU:$D219 PRG:5219 60 +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame +; Global: Updates the level timer on every second frame. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame: + lda FrameCounter ; CPU:$D21A PRG:521A A5 31 + ror a ; CPU:$D21C PRG:521C 6A + bcs TickTimerOnEvenFrame_Loop ; CPU:$D21D PRG:521D B0 01 + rts ; CPU:$D21F PRG:521F 60 +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_Loop +; Global: Branch target inside TickTimerOnEvenFrame: taken when the loop repeats. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_Loop: + lda #$00 ; CPU:$D220 PRG:5220 A9 00 + sta Zp36 ; CPU:$D222 PRG:5222 85 36 + lda #$08 ; CPU:$D224 PRG:5224 A9 08 + sta Zp1F ; CPU:$D226 PRG:5226 85 1F + ldy Zp58 ; CPU:$D228 PRG:5228 A4 58 +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_OnCarryClear +; Global: Branch target inside TickTimerOnEvenFrame: taken when the addition or subtraction did not carry. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_OnCarryClear: + lda $0522,y ; CPU:$D22A PRG:522A B9 22 05 + bpl TickTimerOnEvenFrame_Loop2 ; CPU:$D22D PRG:522D 10 12 +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_OnCarrySet +; Global: Branch target inside TickTimerOnEvenFrame: taken when the addition or subtraction carried. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_OnCarrySet: + inc Zp58 ; CPU:$D22F PRG:522F E6 58 + ldy Zp58 ; CPU:$D231 PRG:5231 A4 58 + cpy #$07 ; CPU:$D233 PRG:5233 C0 07 + bcc TickTimerOnEvenFrame_OnCarryClear ; CPU:$D235 PRG:5235 90 F3 + lda #$00 ; CPU:$D237 PRG:5237 A9 00 + ldx Zp36 ; CPU:$D239 PRG:5239 A6 36 + sta $0300,x ; CPU:$D23B PRG:523B 9D 00 03 + inc Zp61 ; CPU:$D23E PRG:523E E6 61 + rts ; CPU:$D240 PRG:5240 60 +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_Loop2 +; Global: Branch target inside TickTimerOnEvenFrame: taken when Loop2. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_Loop2: + sta Zp24 ; CPU:$D241 PRG:5241 85 24 + lda $0540,y ; CPU:$D243 PRG:5243 B9 40 05 + sta Zp25 ; CPU:$D246 PRG:5246 85 25 + jsr Sub_84BF ; CPU:$D248 PRG:5248 20 BF 84 +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_OnZero +; Global: Branch target inside TickTimerOnEvenFrame: taken when the tested value is zero. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_OnZero: + ldx Zp36 ; CPU:$D24B PRG:524B A6 36 + lda Zp19 ; CPU:$D24D PRG:524D A5 19 + sta $0300,x ; CPU:$D24F PRG:524F 9D 00 03 + inx ; CPU:$D252 PRG:5252 E8 + lda Zp1A ; CPU:$D253 PRG:5253 A5 1A + sta $0300,x ; CPU:$D255 PRG:5255 9D 00 03 + inx ; CPU:$D258 PRG:5258 E8 + lda Zp25 ; CPU:$D259 PRG:5259 A5 25 + and #$0F ; CPU:$D25B PRG:525B 29 0F + cmp #$0B ; CPU:$D25D PRG:525D C9 0B + bcs TickTimerOnEvenFrame_Loop5 ; CPU:$D25F PRG:525F B0 33 + ldy Zp25 ; CPU:$D261 PRG:5261 A4 25 + lda $0400,y ; CPU:$D263 PRG:5263 B9 00 04 + and #$87 ; CPU:$D266 PRG:5266 29 87 + sta Zp1B ; CPU:$D268 PRG:5268 85 1B + bmi TickTimerOnEvenFrame_Loop3 ; CPU:$D26A PRG:526A 30 13 + asl a ; CPU:$D26C PRG:526C 0A + tay ; CPU:$D26D PRG:526D A8 + lda $F29E,y ; CPU:$D26E PRG:526E B9 9E F2 + sta $0300,x ; CPU:$D271 PRG:5271 9D 00 03 + inx ; CPU:$D274 PRG:5274 E8 + lda $F29F,y ; CPU:$D275 PRG:5275 B9 9F F2 + sta $0300,x ; CPU:$D278 PRG:5278 9D 00 03 + lda #$00 ; CPU:$D27B PRG:527B A9 00 + beq TickTimerOnEvenFrame_Loop4 ; CPU:$D27D PRG:527D F0 0B +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_Loop3 +; Global: Branch target inside TickTimerOnEvenFrame: taken when Loop3. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_Loop3: + lda #$0D ; CPU:$D27F PRG:527F A9 0D + sta $0300,x ; CPU:$D281 PRG:5281 9D 00 03 + inx ; CPU:$D284 PRG:5284 E8 + lda #$F3 ; CPU:$D285 PRG:5285 A9 F3 + sta $0300,x ; CPU:$D287 PRG:5287 9D 00 03 +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_Loop4 +; Global: Branch target inside TickTimerOnEvenFrame: taken when Loop4. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_Loop4: + inx ; CPU:$D28A PRG:528A E8 + stx Zp36 ; CPU:$D28B PRG:528B 86 36 + lda Zp1B ; CPU:$D28D PRG:528D A5 1B + beq TickTimerOnEvenFrame_Loop5 ; CPU:$D28F PRG:528F F0 03 + jsr Sub_84E3 ; CPU:$D291 PRG:5291 20 E3 84 +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_Loop5 +; Global: Branch target inside TickTimerOnEvenFrame: taken when Loop5. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_Loop5: + dec Zp1F ; CPU:$D294 PRG:5294 C6 1F + beq TickTimerOnEvenFrame_Loop7 ; CPU:$D296 PRG:5296 F0 17 + inc Zp25 ; CPU:$D298 PRG:5298 E6 25 + lda Zp25 ; CPU:$D29A PRG:529A A5 25 + cmp Zp24 ; CPU:$D29C PRG:529C C5 24 + bcs TickTimerOnEvenFrame_OnCarrySet ; CPU:$D29E PRG:529E B0 8F + lda Zp19 ; CPU:$D2A0 PRG:52A0 A5 19 + clc ; CPU:$D2A2 PRG:52A2 18 + adc #$40 ; CPU:$D2A3 PRG:52A3 69 40 + sta Zp19 ; CPU:$D2A5 PRG:52A5 85 19 + bcc TickTimerOnEvenFrame_Loop6 ; CPU:$D2A7 PRG:52A7 90 02 + inc Zp1A ; CPU:$D2A9 PRG:52A9 E6 1A +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_Loop6 +; Global: Branch target inside TickTimerOnEvenFrame: taken when Loop6. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_Loop6: + lda #$00 ; CPU:$D2AB PRG:52AB A9 00 + beq TickTimerOnEvenFrame_OnZero; CPU:$D2AD PRG:52AD F0 9C +; ----------------------------------------------------------------------------- +; Routine: TickTimerOnEvenFrame_Loop7 +; Global: Branch target inside TickTimerOnEvenFrame: taken when Loop7. +; Local: Part of TickTimerOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickTimerOnEvenFrame_Loop7: + inc Zp25 ; CPU:$D2AF PRG:52AF E6 25 + ldy Zp58 ; CPU:$D2B1 PRG:52B1 A4 58 + lda Zp25 ; CPU:$D2B3 PRG:52B3 A5 25 + sta $0540,y ; CPU:$D2B5 PRG:52B5 99 40 05 + ldx Zp36 ; CPU:$D2B8 PRG:52B8 A6 36 + lda #$00 ; CPU:$D2BA PRG:52BA A9 00 + sta $0300,x ; CPU:$D2BC PRG:52BC 9D 00 03 + rts ; CPU:$D2BF PRG:52BF 60 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame +; Global: Resets the scroll on every second frame. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame: + lda FrameCounter ; CPU:$D2C0 PRG:52C0 A5 31 + ror a ; CPU:$D2C2 PRG:52C2 6A + bcs ResetScrollOnEvenFrame_Loop; CPU:$D2C3 PRG:52C3 B0 01 + rts ; CPU:$D2C5 PRG:52C5 60 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_Loop +; Global: Branch target inside ResetScrollOnEvenFrame: taken when the loop repeats. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_Loop: + lda #$00 ; CPU:$D2C6 PRG:52C6 A9 00 + sta Zp20 ; CPU:$D2C8 PRG:52C8 85 20 + lda $05A6 ; CPU:$D2CA PRG:52CA AD A6 05 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_OnNonnegative +; Global: Branch target inside ResetScrollOnEvenFrame: taken when the tested value is not negative. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_OnNonnegative: + sec ; CPU:$D2CD PRG:52CD 38 + sbc #$0A ; CPU:$D2CE PRG:52CE E9 0A + bcc ResetScrollOnEvenFrame_Loop2 ; CPU:$D2D0 PRG:52D0 90 0A + sta $05A6 ; CPU:$D2D2 PRG:52D2 8D A6 05 + inc Zp20 ; CPU:$D2D5 PRG:52D5 E6 20 + lda $05A6 ; CPU:$D2D7 PRG:52D7 AD A6 05 + bpl ResetScrollOnEvenFrame_OnNonnegative ; CPU:$D2DA PRG:52DA 10 F1 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_Loop2 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when Loop2. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_Loop2: + lda $05A6 ; CPU:$D2DC PRG:52DC AD A6 05 + sta $05AA ; CPU:$D2DF PRG:52DF 8D AA 05 + lda Zp20 ; CPU:$D2E2 PRG:52E2 A5 20 + sta $05A9 ; CPU:$D2E4 PRG:52E4 8D A9 05 + ldx #$02 ; CPU:$D2E7 PRG:52E7 A2 02 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_OnNonzero +; Global: Branch target inside ResetScrollOnEvenFrame: taken when the tested value is not zero. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_OnNonzero: + lda $05A8,x ; CPU:$D2E9 PRG:52E9 BD A8 05 + cmp #$0A ; CPU:$D2EC PRG:52EC C9 0A + bcc ResetScrollOnEvenFrame_Loop3 ; CPU:$D2EE PRG:52EE 90 0B + inc $05A7,x ; CPU:$D2F0 PRG:52F0 FE A7 05 + clc ; CPU:$D2F3 PRG:52F3 18 + adc #$06 ; CPU:$D2F4 PRG:52F4 69 06 + and #$0F ; CPU:$D2F6 PRG:52F6 29 0F + sta $05A8,x ; CPU:$D2F8 PRG:52F8 9D A8 05 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_Loop3 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when Loop3. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_Loop3: + dex ; CPU:$D2FB PRG:52FB CA + bne ResetScrollOnEvenFrame_OnNonzero ; CPU:$D2FC PRG:52FC D0 EB + lda $05A5 ; CPU:$D2FE PRG:52FE AD A5 05 + tax ; CPU:$D301 PRG:5301 AA + clc ; CPU:$D302 PRG:5302 18 + adc Zp62 ; CPU:$D303 PRG:5303 65 62 + sta Zp62 ; CPU:$D305 PRG:5305 85 62 + txa ; CPU:$D307 PRG:5307 8A + clc ; CPU:$D308 PRG:5308 18 + adc Zp63 ; CPU:$D309 PRG:5309 65 63 + sta Zp63 ; CPU:$D30B PRG:530B 85 63 + txa ; CPU:$D30D PRG:530D 8A + and #$0F ; CPU:$D30E PRG:530E 29 0F + clc ; CPU:$D310 PRG:5310 18 + adc $05AF ; CPU:$D311 PRG:5311 6D AF 05 + sta $05AF ; CPU:$D314 PRG:5314 8D AF 05 + txa ; CPU:$D317 PRG:5317 8A + ror a ; CPU:$D318 PRG:5318 6A + ror a ; CPU:$D319 PRG:5319 6A + ror a ; CPU:$D31A PRG:531A 6A + ror a ; CPU:$D31B PRG:531B 6A + and #$0F ; CPU:$D31C PRG:531C 29 0F + clc ; CPU:$D31E PRG:531E 18 + adc $05AE ; CPU:$D31F PRG:531F 6D AE 05 + sta $05AE ; CPU:$D322 PRG:5322 8D AE 05 + ldx #$03 ; CPU:$D325 PRG:5325 A2 03 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_OnNonzero2 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when OnNonzero2. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_OnNonzero2: + lda $05AC,x ; CPU:$D327 PRG:5327 BD AC 05 + cmp #$0A ; CPU:$D32A PRG:532A C9 0A + bcc ResetScrollOnEvenFrame_Loop4 ; CPU:$D32C PRG:532C 90 0B + inc $05AB,x ; CPU:$D32E PRG:532E FE AB 05 + clc ; CPU:$D331 PRG:5331 18 + adc #$06 ; CPU:$D332 PRG:5332 69 06 + and #$0F ; CPU:$D334 PRG:5334 29 0F + sta $05AC,x ; CPU:$D336 PRG:5336 9D AC 05 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_Loop4 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when Loop4. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_Loop4: + dex ; CPU:$D339 PRG:5339 CA + bne ResetScrollOnEvenFrame_OnNonzero2 ; CPU:$D33A PRG:533A D0 EB + ldx #$02 ; CPU:$D33C PRG:533C A2 02 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_OnNonnegative2 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when OnNonnegative2. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_OnNonnegative2: + lda $05A8,x ; CPU:$D33E PRG:533E BD A8 05 + clc ; CPU:$D341 PRG:5341 18 + adc $05B2,x ; CPU:$D342 PRG:5342 7D B2 05 + sta $05B2,x ; CPU:$D345 PRG:5345 9D B2 05 + dex ; CPU:$D348 PRG:5348 CA + bpl ResetScrollOnEvenFrame_OnNonnegative2 ; CPU:$D349 PRG:5349 10 F3 + ldx #$04 ; CPU:$D34B PRG:534B A2 04 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_OnNonzero3 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when OnNonzero3. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_OnNonzero3: + lda $05B0,x ; CPU:$D34D PRG:534D BD B0 05 + cmp #$0A ; CPU:$D350 PRG:5350 C9 0A + bcc ResetScrollOnEvenFrame_Loop5 ; CPU:$D352 PRG:5352 90 0B + inc $05AF,x ; CPU:$D354 PRG:5354 FE AF 05 + clc ; CPU:$D357 PRG:5357 18 + adc #$06 ; CPU:$D358 PRG:5358 69 06 + and #$0F ; CPU:$D35A PRG:535A 29 0F + sta $05B0,x ; CPU:$D35C PRG:535C 9D B0 05 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_Loop5 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when Loop5. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_Loop5: + dex ; CPU:$D35F PRG:535F CA + bne ResetScrollOnEvenFrame_OnNonzero3 ; CPU:$D360 PRG:5360 D0 EB + lda #$04 ; CPU:$D362 PRG:5362 A9 04 + sta $05C0 ; CPU:$D364 PRG:5364 8D C0 05 + sta $05C6 ; CPU:$D367 PRG:5367 8D C6 05 + lda #$01 ; CPU:$D36A PRG:536A A9 01 + sta $05C1 ; CPU:$D36C PRG:536C 8D C1 05 + sta $05C7 ; CPU:$D36F PRG:536F 8D C7 05 + ldx #$00 ; CPU:$D372 PRG:5372 A2 00 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_OnCarryClear +; Global: Branch target inside ResetScrollOnEvenFrame: taken when the addition or subtraction did not carry. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_OnCarryClear: + lda $05AC,x ; CPU:$D374 PRG:5374 BD AC 05 + tay ; CPU:$D377 PRG:5377 A8 + lda $F1D6,y ; CPU:$D378 PRG:5378 B9 D6 F1 + sta $05C2,x ; CPU:$D37B PRG:537B 9D C2 05 + lda $05A8,x ; CPU:$D37E PRG:537E BD A8 05 + tay ; CPU:$D381 PRG:5381 A8 + lda $F1D6,y ; CPU:$D382 PRG:5382 B9 D6 F1 + sta $05C8,x ; CPU:$D385 PRG:5385 9D C8 05 + inx ; CPU:$D388 PRG:5388 E8 + cpx #$04 ; CPU:$D389 PRG:5389 E0 04 + bcc ResetScrollOnEvenFrame_OnCarryClear ; CPU:$D38B PRG:538B 90 E7 + lda #$06 ; CPU:$D38D PRG:538D A9 06 + sta $05D2 ; CPU:$D38F PRG:538F 8D D2 05 + lda #$01 ; CPU:$D392 PRG:5392 A9 01 + sta $05D3 ; CPU:$D394 PRG:5394 8D D3 05 + ldx #$00 ; CPU:$D397 PRG:5397 A2 00 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_OnCarryClear2 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when OnCarryClear2. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_OnCarryClear2: + lda $05B0,x ; CPU:$D399 PRG:5399 BD B0 05 + tay ; CPU:$D39C PRG:539C A8 + lda $F1D6,y ; CPU:$D39D PRG:539D B9 D6 F1 + sta $05D4,x ; CPU:$D3A0 PRG:53A0 9D D4 05 + inx ; CPU:$D3A3 PRG:53A3 E8 + cpx #$06 ; CPU:$D3A4 PRG:53A4 E0 06 + bcc ResetScrollOnEvenFrame_OnCarryClear2 ; CPU:$D3A6 PRG:53A6 90 F1 + ldx Zp37 ; CPU:$D3A8 PRG:53A8 A6 37 + lda Zp6F ; CPU:$D3AA PRG:53AA A5 6F + asl a ; CPU:$D3AC PRG:53AC 0A + tay ; CPU:$D3AD PRG:53AD A8 + lda $D40A,y ; CPU:$D3AE PRG:53AE B9 0A D4 + sta $0338,x ; CPU:$D3B1 PRG:53B1 9D 38 03 + lda $D40B,y ; CPU:$D3B4 PRG:53B4 B9 0B D4 + sta $0339,x ; CPU:$D3B7 PRG:53B7 9D 39 03 + lda #$C0 ; CPU:$D3BA PRG:53BA A9 C0 + sta $033A,x ; CPU:$D3BC PRG:53BC 9D 3A 03 + lda #$05 ; CPU:$D3BF PRG:53BF A9 05 + sta $033B,x ; CPU:$D3C1 PRG:53C1 9D 3B 03 + lda $D40E,y ; CPU:$D3C4 PRG:53C4 B9 0E D4 + sta $033C,x ; CPU:$D3C7 PRG:53C7 9D 3C 03 + lda $D40F,y ; CPU:$D3CA PRG:53CA B9 0F D4 + sta $033D,x ; CPU:$D3CD PRG:53CD 9D 3D 03 + lda #$C6 ; CPU:$D3D0 PRG:53D0 A9 C6 + sta $033E,x ; CPU:$D3D2 PRG:53D2 9D 3E 03 + lda #$05 ; CPU:$D3D5 PRG:53D5 A9 05 + sta $033F,x ; CPU:$D3D7 PRG:53D7 9D 3F 03 + lda $D412,y ; CPU:$D3DA PRG:53DA B9 12 D4 + sta $0340,x ; CPU:$D3DD PRG:53DD 9D 40 03 + lda $D413,y ; CPU:$D3E0 PRG:53E0 B9 13 D4 + sta $0341,x ; CPU:$D3E3 PRG:53E3 9D 41 03 + lda #$D2 ; CPU:$D3E6 PRG:53E6 A9 D2 + sta $0342,x ; CPU:$D3E8 PRG:53E8 9D 42 03 + lda #$05 ; CPU:$D3EB PRG:53EB A9 05 + sta $0343,x ; CPU:$D3ED PRG:53ED 9D 43 03 + lda #$00 ; CPU:$D3F0 PRG:53F0 A9 00 + sta $0344,x ; CPU:$D3F2 PRG:53F2 9D 44 03 + sta $05A5 ; CPU:$D3F5 PRG:53F5 8D A5 05 + sta $05A4 ; CPU:$D3F8 PRG:53F8 8D A4 05 + sta $05A6 ; CPU:$D3FB PRG:53FB 8D A6 05 + sta $05A7 ; CPU:$D3FE PRG:53FE 8D A7 05 + txa ; CPU:$D401 PRG:5401 8A + clc ; CPU:$D402 PRG:5402 18 + adc #$0C ; CPU:$D403 PRG:5403 69 0C + sta Zp37 ; CPU:$D405 PRG:5405 85 37 + inc Zp61 ; CPU:$D407 PRG:5407 E6 61 + rts ; CPU:$D409 PRG:5409 60 +; ---- data $D40A-$D45D (84 bytes) ---- +; referenced by `lda $D412,y` at $CE66 (operand $D412 falls inside this region) +; referenced by `lda $D413,y` at $CE6C (operand $D413 falls inside this region) +; referenced by `lda $D40A,y` at $D3AE (operand $D40A falls inside this region) +; referenced by `lda $D40B,y` at $D3B4 (operand $D40B falls inside this region) +; referenced by `lda $D40E,y` at $D3C4 (operand $D40E falls inside this region) +; referenced by `lda $D40F,y` at $D3CA (operand $D40F falls inside this region) +; ... and 4 further references from decoded code + .byte $79, $21, $22, $23, $B9, $21, $42, $23, $F7, $21, $2A, $23, $A5, $31, $6A, $B0 ; CPU:$D40A PRG:540A 79 21 22 23 B9 21 42 23 F7 21 2A 23 A5 31 6A B0 + .byte $01, $60, $A5, $71, $C9, $02, $F0, $09, $A5, $5E, $C9, $05, $D0, $03, $20, $86 ; CPU:$D41A PRG:541A 01 60 A5 71 C9 02 F0 09 A5 5E C9 05 D0 03 20 86 + .byte $D4, $A5, $5F, $29, $03, $AA, $BD, $5A, $D4, $85, $1B, $A6, $5E, $20, $AF, $D4 ; CPU:$D42A PRG:542A D4 A5 5F 29 03 AA BD 5A D4 85 1B A6 5E 20 AF D4 + .byte $20, $8A, $85, $A9, $00, $9D, $00, $03, $20, $E3, $84, $A5, $71, $C9, $02, $F0 ; CPU:$D43A PRG:543A 20 8A 85 A9 00 9D 00 03 20 E3 84 A5 71 C9 02 F0 + .byte $06, $C6, $5E, $D0, $02, $E6, $5F, $A5, $58, $D0, $02, $E6, $61, $E6, $61, $60 ; CPU:$D44A PRG:544A 06 C6 5E D0 02 E6 5F A5 58 D0 02 E6 61 E6 61 60 + .byte $03, $04, $02, $01 ; CPU:$D45A PRG:545A 03 04 02 01 +; ----------------------------------------------------------------------------- +; Routine: Sub_D45E +; Global: Branch target inside Sub: taken when D45E. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_D45E: + lda Zp65 ; CPU:$D45E PRG:545E A5 65 + tax ; CPU:$D460 PRG:5460 AA + and #$0F ; CPU:$D461 PRG:5461 29 0F + tay ; CPU:$D463 PRG:5463 A8 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_OnNonnegative3 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when OnNonnegative3. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_OnNonnegative3: + lda $0400,x ; CPU:$D464 PRG:5464 BD 00 04 + and #$40 ; CPU:$D467 PRG:5467 29 40 + bne ResetScrollOnEvenFrame_Loop6 ; CPU:$D469 PRG:5469 D0 05 + dex ; CPU:$D46B PRG:546B CA + dey ; CPU:$D46C PRG:546C 88 + bpl ResetScrollOnEvenFrame_OnNonnegative3 ; CPU:$D46D PRG:546D 10 F5 + rts ; CPU:$D46F PRG:546F 60 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_Loop6 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when Loop6. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_Loop6: + txa ; CPU:$D470 PRG:5470 8A + cmp Zp65 ; CPU:$D471 PRG:5471 C5 65 + beq ResetScrollOnEvenFrame_Loop7 ; CPU:$D473 PRG:5473 F0 10 + sec ; CPU:$D475 PRG:5475 38 + sbc Zp65 ; CPU:$D476 PRG:5476 E5 65 + asl a ; CPU:$D478 PRG:5478 0A + asl a ; CPU:$D479 PRG:5479 0A + asl a ; CPU:$D47A PRG:547A 0A + asl a ; CPU:$D47B PRG:547B 0A + clc ; CPU:$D47C PRG:547C 18 + adc $0398 ; CPU:$D47D PRG:547D 6D 98 03 + sta $0398 ; CPU:$D480 PRG:5480 8D 98 03 + stx Zp65 ; CPU:$D483 PRG:5483 86 65 +; ----------------------------------------------------------------------------- +; Routine: ResetScrollOnEvenFrame_Loop7 +; Global: Branch target inside ResetScrollOnEvenFrame: taken when Loop7. +; Local: Part of ResetScrollOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +ResetScrollOnEvenFrame_Loop7: + rts ; CPU:$D485 PRG:5485 60 +; ---- data $D486-$D4ED (104 bytes) ---- + .byte $A0, $05, $A5, $6F, $0A, $AA, $BD, $EA, $D4, $85, $19, $BD, $EB, $D4, $85, $1A ; CPU:$D486 PRG:5486 A0 05 A5 6F 0A AA BD EA D4 85 19 BD EB D4 85 1A + .byte $A9, $A8, $85, $17, $A9, $F2, $85, $18, $20, $8A, $85, $E6, $19, $E6, $19, $88 ; CPU:$D496 PRG:5496 A9 A8 85 17 A9 F2 85 18 20 8A 85 E6 19 E6 19 88 + .byte $D0, $F6, $98, $9D, $00, $03, $86, $36, $60, $A5, $6F, $0A, $A8, $B9, $EA, $D4 ; CPU:$D4A6 PRG:54A6 D0 F6 98 9D 00 03 86 36 60 A5 6F 0A A8 B9 EA D4 + .byte $85, $19, $B9, $EB, $D4, $85, $1A, $BD, $D9, $05, $0A, $A8, $18, $65, $19, $85 ; CPU:$D4B6 PRG:54B6 85 19 B9 EB D4 85 1A BD D9 05 0A A8 18 65 19 85 + .byte $19, $98, $0A, $A8, $A6, $5F, $E8, $8A, $29, $02, $D0, $05, $98, $18, $69, $14 ; CPU:$D4C6 PRG:54C6 19 98 0A A8 A6 5F E8 8A 29 02 D0 05 98 18 69 14 + .byte $A8, $A9, $D1, $85, $17, $A9, $F2, $85, $18, $98, $18, $65, $17, $85, $17, $90 ; CPU:$D4D6 PRG:54D6 A8 A9 D1 85 17 A9 F2 85 18 98 18 65 17 85 17 90 + .byte $02, $E6, $18, $60, $94, $20, $46, $23 ; CPU:$D4E6 PRG:54E6 02 E6 18 60 94 20 46 23 +; ----------------------------------------------------------------------------- +; Routine: Sub_D4EE +; Global: Branch target inside Sub: taken when D4EE. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_D4EE: + lda Zp61 ; CPU:$D4EE PRG:54EE A5 61 + jsr DispatchByJumpTable ; CPU:$D4F0 PRG:54F0 20 73 81 +; ---- data $D4F3-$D506 (20 bytes) ---- + .byte $07, $D5, $C0, $D2, $15, $D6, $E7, $D0, $37, $D5, $16, $D4, $CF, $D5, $B0, $D1 ; CPU:$D4F3 PRG:54F3 07 D5 C0 D2 15 D6 E7 D0 37 D5 16 D4 CF D5 B0 D1 + .byte $1A, $D2, $63, $D5 ; CPU:$D503 PRG:5503 1A D2 63 D5 +; ----------------------------------------------------------------------------- +; Routine: InitBubbleState +; Global: Sets the bubble state up for a new wave. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitBubbleState: + lda #$00 ; CPU:$D507 PRG:5507 A9 00 + sta Zp58 ; CPU:$D509 PRG:5509 85 58 + lda #$04 ; CPU:$D50B PRG:550B A9 04 + sta Zp1E ; CPU:$D50D PRG:550D 85 1E +; ----------------------------------------------------------------------------- +; Routine: InitBubbleState_OnNonzero +; Global: Branch target inside InitBubbleState: taken when the tested value is not zero. +; Local: Part of InitBubbleState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitBubbleState_OnNonzero: + lda Zp1E ; CPU:$D50F PRG:550F A5 1E + sta Zp20 ; CPU:$D511 PRG:5511 85 20 + jsr Sub_CFFD ; CPU:$D513 PRG:5513 20 FD CF + dec Zp1E ; CPU:$D516 PRG:5516 C6 1E + bne InitBubbleState_OnNonzero ; CPU:$D518 PRG:5518 D0 F5 + lda $05A6 ; CPU:$D51A PRG:551A AD A6 05 + bne InitBubbleState_Loop2 ; CPU:$D51D PRG:551D D0 0D + sta Zp61 ; CPU:$D51F PRG:551F 85 61 + inc Zp60 ; CPU:$D521 PRG:5521 E6 60 + lda Zp68 ; CPU:$D523 PRG:5523 A5 68 + cmp #$03 ; CPU:$D525 PRG:5525 C9 03 + bcc InitBubbleState_Loop ; CPU:$D527 PRG:5527 90 02 + inc Zp68 ; CPU:$D529 PRG:5529 E6 68 +; ----------------------------------------------------------------------------- +; Routine: InitBubbleState_Loop +; Global: Branch target inside InitBubbleState: taken when the loop repeats. +; Local: Part of InitBubbleState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitBubbleState_Loop: + rts ; CPU:$D52B PRG:552B 60 +; ----------------------------------------------------------------------------- +; Routine: InitBubbleState_Loop2 +; Global: Branch target inside InitBubbleState: taken when Loop2. +; Local: Part of InitBubbleState. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +InitBubbleState_Loop2: + lda #$00 ; CPU:$D52C PRG:552C A9 00 + sta Zp3F ; CPU:$D52E PRG:552E 85 3F + sta Zp56 ; CPU:$D530 PRG:5530 85 56 + sta Zp59 ; CPU:$D532 PRG:5532 85 59 + inc Zp61 ; CPU:$D534 PRG:5534 E6 61 + rts ; CPU:$D536 PRG:5536 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateBubbleFrame +; Global: Updates the bubbles once per frame. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateBubbleFrame: + inc Zp61 ; CPU:$D537 PRG:5537 E6 61 + jsr Sub_D595 ; CPU:$D539 PRG:5539 20 95 D5 + jsr Sub_D5AF ; CPU:$D53C PRG:553C 20 AF D5 + ldx Zp65 ; CPU:$D53F PRG:553F A6 65 + bmi UpdateBubbleFrame_Loop2 ; CPU:$D541 PRG:5541 30 17 + lda $0400,x ; CPU:$D543 PRG:5543 BD 00 04 + and #$40 ; CPU:$D546 PRG:5546 29 40 + bne UpdateBubbleFrame_Loop2 ; CPU:$D548 PRG:5548 D0 10 + lda #$00 ; CPU:$D54A PRG:554A A9 00 + sta $0358 ; CPU:$D54C PRG:554C 8D 58 03 + lda Zp71 ; CPU:$D54F PRG:554F A5 71 + cmp #$02 ; CPU:$D551 PRG:5551 C9 02 + beq UpdateBubbleFrame_Loop ; CPU:$D553 PRG:5553 F0 04 + lda #$FF ; CPU:$D555 PRG:5555 A9 FF + sta Zp65 ; CPU:$D557 PRG:5557 85 65 +; ----------------------------------------------------------------------------- +; Routine: UpdateBubbleFrame_Loop +; Global: Branch target inside UpdateBubbleFrame: taken when the loop repeats. +; Local: Part of UpdateBubbleFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateBubbleFrame_Loop: + rts ; CPU:$D559 PRG:5559 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateBubbleFrame_Loop2 +; Global: Branch target inside UpdateBubbleFrame: taken when Loop2. +; Local: Part of UpdateBubbleFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateBubbleFrame_Loop2: + lda Zp58 ; CPU:$D55A PRG:555A A5 58 + bne UpdateBubbleFrame_Loop3 ; CPU:$D55C PRG:555C D0 02 + inc Zp61 ; CPU:$D55E PRG:555E E6 61 +; ----------------------------------------------------------------------------- +; Routine: UpdateBubbleFrame_Loop3 +; Global: Branch target inside UpdateBubbleFrame: taken when Loop3. +; Local: Part of UpdateBubbleFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +UpdateBubbleFrame_Loop3: + inc Zp61 ; CPU:$D560 PRG:5560 E6 61 + rts ; CPU:$D562 PRG:5562 60 +; ----------------------------------------------------------------------------- +; Routine: TickHudOnEvenFrame +; Global: Updates the score display on every second frame. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickHudOnEvenFrame: + lda FrameCounter ; CPU:$D563 PRG:5563 A5 31 + ror a ; CPU:$D565 PRG:5565 6A + bcs TickHudOnEvenFrame_Loop ; CPU:$D566 PRG:5566 B0 01 + rts ; CPU:$D568 PRG:5568 60 +; ----------------------------------------------------------------------------- +; Routine: TickHudOnEvenFrame_Loop +; Global: Branch target inside TickHudOnEvenFrame: taken when the loop repeats. +; Local: Part of TickHudOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickHudOnEvenFrame_Loop: + lda Zp6F ; CPU:$D569 PRG:5569 A5 6F + asl a ; CPU:$D56B PRG:556B 0A + tay ; CPU:$D56C PRG:556C A8 + ldx Zp37 ; CPU:$D56D PRG:556D A6 37 + lda $D40E,y ; CPU:$D56F PRG:556F B9 0E D4 + sta $0338,x ; CPU:$D572 PRG:5572 9D 38 03 + lda $D40F,y ; CPU:$D575 PRG:5575 B9 0F D4 + sta $0339,x ; CPU:$D578 PRG:5578 9D 39 03 + lda #$E0 ; CPU:$D57B PRG:557B A9 E0 + sta $033A,x ; CPU:$D57D PRG:557D 9D 3A 03 + lda #$F1 ; CPU:$D580 PRG:5580 A9 F1 + sta $033B,x ; CPU:$D582 PRG:5582 9D 3B 03 + lda #$00 ; CPU:$D585 PRG:5585 A9 00 + sta $033C,x ; CPU:$D587 PRG:5587 9D 3C 03 + txa ; CPU:$D58A PRG:558A 8A + clc ; CPU:$D58B PRG:558B 18 + adc #$04 ; CPU:$D58C PRG:558C 69 04 + sta Zp37 ; CPU:$D58E PRG:558E 85 37 + lda #$00 ; CPU:$D590 PRG:5590 A9 00 + sta Zp61 ; CPU:$D592 PRG:5592 85 61 + rts ; CPU:$D594 PRG:5594 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D595 +; Global: Branch target inside Sub: taken when D595. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_D595: + ldx #$00 ; CPU:$D595 PRG:5595 A2 00 + ldy #$00 ; CPU:$D597 PRG:5597 A0 00 + stx Zp24 ; CPU:$D599 PRG:5599 86 24 +; ----------------------------------------------------------------------------- +; Routine: TickHudOnEvenFrame_OnNonzero +; Global: Branch target inside TickHudOnEvenFrame: taken when the tested value is not zero. +; Local: Part of TickHudOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickHudOnEvenFrame_OnNonzero: + ldx Zp24 ; CPU:$D59B PRG:559B A6 24 + lda $0568,x ; CPU:$D59D PRG:559D BD 68 05 + cmp #$FF ; CPU:$D5A0 PRG:55A0 C9 FF + bne TickHudOnEvenFrame_Loop2 ; CPU:$D5A2 PRG:55A2 D0 01 + rts ; CPU:$D5A4 PRG:55A4 60 +; ----------------------------------------------------------------------------- +; Routine: TickHudOnEvenFrame_Loop2 +; Global: Branch target inside TickHudOnEvenFrame: taken when Loop2. +; Local: Part of TickHudOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickHudOnEvenFrame_Loop2: + tax ; CPU:$D5A5 PRG:55A5 AA + tya ; CPU:$D5A6 PRG:55A6 98 + sta $0400,x ; CPU:$D5A7 PRG:55A7 9D 00 04 + inc Zp24 ; CPU:$D5AA PRG:55AA E6 24 + bne TickHudOnEvenFrame_OnNonzero ; CPU:$D5AC PRG:55AC D0 ED + rts ; CPU:$D5AE PRG:55AE 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_D5AF +; Global: Branch target inside Sub: taken when D5AF. +; Local: Part of Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Sub_D5AF: + ldy #$00 ; CPU:$D5AF PRG:55AF A0 00 + ldx #$6E ; CPU:$D5B1 PRG:55B1 A2 6E +; ----------------------------------------------------------------------------- +; Routine: TickHudOnEvenFrame_OnNonzero2 +; Global: Branch target inside TickHudOnEvenFrame: taken when OnNonzero2. +; Local: Part of TickHudOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickHudOnEvenFrame_OnNonzero2: + dex ; CPU:$D5B3 PRG:55B3 CA +; ----------------------------------------------------------------------------- +; Routine: TickHudOnEvenFrame_OnNonnegative +; Global: Branch target inside TickHudOnEvenFrame: taken when the tested value is not negative. +; Local: Part of TickHudOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickHudOnEvenFrame_OnNonnegative: + lda $0400,x ; CPU:$D5B4 PRG:55B4 BD 00 04 + beq TickHudOnEvenFrame_Loop3 ; CPU:$D5B7 PRG:55B7 F0 07 + bpl TickHudOnEvenFrame_Loop4 ; CPU:$D5B9 PRG:55B9 10 0B + txa ; CPU:$D5BB PRG:55BB 8A + sta $0568,y ; CPU:$D5BC PRG:55BC 99 68 05 + iny ; CPU:$D5BF PRG:55BF C8 +; ----------------------------------------------------------------------------- +; Routine: TickHudOnEvenFrame_Loop3 +; Global: Branch target inside TickHudOnEvenFrame: taken when Loop3. +; Local: Part of TickHudOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickHudOnEvenFrame_Loop3: + dex ; CPU:$D5C0 PRG:55C0 CA + bpl TickHudOnEvenFrame_OnNonnegative ; CPU:$D5C1 PRG:55C1 10 F1 + sty Zp58 ; CPU:$D5C3 PRG:55C3 84 58 + rts ; CPU:$D5C5 PRG:55C5 60 +; ----------------------------------------------------------------------------- +; Routine: TickHudOnEvenFrame_Loop4 +; Global: Branch target inside TickHudOnEvenFrame: taken when Loop4. +; Local: Part of TickHudOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickHudOnEvenFrame_Loop4: + txa ; CPU:$D5C6 PRG:55C6 8A + and #$F0 ; CPU:$D5C7 PRG:55C7 29 F0 + tax ; CPU:$D5C9 PRG:55C9 AA + bne TickHudOnEvenFrame_OnNonzero2 ; CPU:$D5CA PRG:55CA D0 E7 + sty Zp58 ; CPU:$D5CC PRG:55CC 84 58 + rts ; CPU:$D5CE PRG:55CE 60 +; ----------------------------------------------------------------------------- +; Routine: TickSpritesOnEvenFrame +; Global: Updates the sprite table on every second frame. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSpritesOnEvenFrame: + lda FrameCounter ; CPU:$D5CF PRG:55CF A5 31 + ror a ; CPU:$D5D1 PRG:55D1 6A + bcs TickSpritesOnEvenFrame_Loop; CPU:$D5D2 PRG:55D2 B0 01 + rts ; CPU:$D5D4 PRG:55D4 60 +; ----------------------------------------------------------------------------- +; Routine: TickSpritesOnEvenFrame_Loop +; Global: Branch target inside TickSpritesOnEvenFrame: taken when the loop repeats. +; Local: Part of TickSpritesOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSpritesOnEvenFrame_Loop: + lda #$A8 ; CPU:$D5D5 PRG:55D5 A9 A8 + sta Zp17 ; CPU:$D5D7 PRG:55D7 85 17 + lda #$F2 ; CPU:$D5D9 PRG:55D9 A9 F2 + sta Zp18 ; CPU:$D5DB PRG:55DB 85 18 + lda #$0C ; CPU:$D5DD PRG:55DD A9 0C + sta Zp1F ; CPU:$D5DF PRG:55DF 85 1F + ldy #$00 ; CPU:$D5E1 PRG:55E1 A0 00 +; ----------------------------------------------------------------------------- +; Routine: TickSpritesOnEvenFrame_OnNonnegative +; Global: Branch target inside TickSpritesOnEvenFrame: taken when the tested value is not negative. +; Local: Part of TickSpritesOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSpritesOnEvenFrame_OnNonnegative: + dec Zp58 ; CPU:$D5E3 PRG:55E3 C6 58 + bpl TickSpritesOnEvenFrame_Loop2 ; CPU:$D5E5 PRG:55E5 10 08 + inc Zp61 ; CPU:$D5E7 PRG:55E7 E6 61 + lda #$00 ; CPU:$D5E9 PRG:55E9 A9 00 + sta Zp56 ; CPU:$D5EB PRG:55EB 85 56 + beq TickSpritesOnEvenFrame_Loop4 ; CPU:$D5ED PRG:55ED F0 1E +; ----------------------------------------------------------------------------- +; Routine: TickSpritesOnEvenFrame_Loop2 +; Global: Branch target inside TickSpritesOnEvenFrame: taken when Loop2. +; Local: Part of TickSpritesOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSpritesOnEvenFrame_Loop2: + ldx Zp58 ; CPU:$D5EF PRG:55EF A6 58 + lda $0568,x ; CPU:$D5F1 PRG:55F1 BD 68 05 + sta Zp24 ; CPU:$D5F4 PRG:55F4 85 24 + jsr Sub_84BF ; CPU:$D5F6 PRG:55F6 20 BF 84 + lda Zp1A ; CPU:$D5F9 PRG:55F9 A5 1A + cmp #$24 ; CPU:$D5FB PRG:55FB C9 24 + beq TickSpritesOnEvenFrame_Loop3 ; CPU:$D5FD PRG:55FD F0 0A + ldx Zp24 ; CPU:$D5FF PRG:55FF A6 24 + lda #$00 ; CPU:$D601 PRG:5601 A9 00 + sta $0400,x ; CPU:$D603 PRG:5603 9D 00 04 + jsr Sub_858A ; CPU:$D606 PRG:5606 20 8A 85 +; ----------------------------------------------------------------------------- +; Routine: TickSpritesOnEvenFrame_Loop3 +; Global: Branch target inside TickSpritesOnEvenFrame: taken when Loop3. +; Local: Part of TickSpritesOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSpritesOnEvenFrame_Loop3: + dec Zp1F ; CPU:$D609 PRG:5609 C6 1F + bpl TickSpritesOnEvenFrame_OnNonnegative ; CPU:$D60B PRG:560B 10 D6 +; ----------------------------------------------------------------------------- +; Routine: TickSpritesOnEvenFrame_Loop4 +; Global: Branch target inside TickSpritesOnEvenFrame: taken when Loop4. +; Local: Part of TickSpritesOnEvenFrame. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +TickSpritesOnEvenFrame_Loop4: + ldx Zp36 ; CPU:$D60D PRG:560D A6 36 + lda #$00 ; CPU:$D60F PRG:560F A9 00 + sta $0300,x ; CPU:$D611 PRG:5611 9D 00 03 + rts ; CPU:$D614 PRG:5614 60 +; ----------------------------------------------------------------------------- +; Routine: SetSoundChannels +; Global: Turns the APU channels on. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SetSoundChannels: + lda #$01 ; CPU:$D615 PRG:5615 A9 01 + sta a:$00E3 ; CPU:$D617 PRG:5617 8D E3 00 + lda #$01 ; CPU:$D61A PRG:561A A9 01 + sta a:$00E2 ; CPU:$D61C PRG:561C 8D E2 00 + lda #$04 ; CPU:$D61F PRG:561F A9 04 + jsr BankedCall ; CPU:$D621 PRG:5621 20 04 80 + inc Zp61 ; CPU:$D624 PRG:5624 E6 61 + rts ; CPU:$D626 PRG:5626 60 +; ---- data $D627-$DFFF (2521 bytes) ---- + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D627 PRG:5627 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D637 PRG:5637 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D647 PRG:5647 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D657 PRG:5657 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D667 PRG:5667 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D677 PRG:5677 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D687 PRG:5687 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D697 PRG:5697 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D6A7 PRG:56A7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D6B7 PRG:56B7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D6C7 PRG:56C7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D6D7 PRG:56D7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D6E7 PRG:56E7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D6F7 PRG:56F7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D707 PRG:5707 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D717 PRG:5717 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D727 PRG:5727 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D737 PRG:5737 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D747 PRG:5747 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D757 PRG:5757 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D767 PRG:5767 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D777 PRG:5777 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D787 PRG:5787 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D797 PRG:5797 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7A7 PRG:57A7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7B7 PRG:57B7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7C7 PRG:57C7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7D7 PRG:57D7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7E7 PRG:57E7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7F7 PRG:57F7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D807 PRG:5807 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D817 PRG:5817 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D827 PRG:5827 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D837 PRG:5837 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D847 PRG:5847 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D857 PRG:5857 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D867 PRG:5867 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D877 PRG:5877 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D887 PRG:5887 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D897 PRG:5897 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8A7 PRG:58A7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8B7 PRG:58B7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8C7 PRG:58C7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8D7 PRG:58D7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8E7 PRG:58E7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8F7 PRG:58F7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D907 PRG:5907 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D917 PRG:5917 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D927 PRG:5927 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D937 PRG:5937 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D947 PRG:5947 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D957 PRG:5957 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D967 PRG:5967 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D977 PRG:5977 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D987 PRG:5987 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D997 PRG:5997 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9A7 PRG:59A7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9B7 PRG:59B7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9C7 PRG:59C7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9D7 PRG:59D7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9E7 PRG:59E7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9F7 PRG:59F7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA07 PRG:5A07 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA17 PRG:5A17 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA27 PRG:5A27 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA37 PRG:5A37 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA47 PRG:5A47 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA57 PRG:5A57 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA67 PRG:5A67 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA77 PRG:5A77 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA87 PRG:5A87 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA97 PRG:5A97 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAA7 PRG:5AA7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAB7 PRG:5AB7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAC7 PRG:5AC7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAD7 PRG:5AD7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAE7 PRG:5AE7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAF7 PRG:5AF7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB07 PRG:5B07 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB17 PRG:5B17 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB27 PRG:5B27 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB37 PRG:5B37 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB47 PRG:5B47 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB57 PRG:5B57 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB67 PRG:5B67 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB77 PRG:5B77 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB87 PRG:5B87 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB97 PRG:5B97 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBA7 PRG:5BA7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBB7 PRG:5BB7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBC7 PRG:5BC7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBD7 PRG:5BD7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBE7 PRG:5BE7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBF7 PRG:5BF7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC07 PRG:5C07 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC17 PRG:5C17 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC27 PRG:5C27 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC37 PRG:5C37 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC47 PRG:5C47 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC57 PRG:5C57 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC67 PRG:5C67 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC77 PRG:5C77 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC87 PRG:5C87 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC97 PRG:5C97 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCA7 PRG:5CA7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCB7 PRG:5CB7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCC7 PRG:5CC7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCD7 PRG:5CD7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCE7 PRG:5CE7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCF7 PRG:5CF7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD07 PRG:5D07 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD17 PRG:5D17 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD27 PRG:5D27 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD37 PRG:5D37 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD47 PRG:5D47 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD57 PRG:5D57 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD67 PRG:5D67 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD77 PRG:5D77 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD87 PRG:5D87 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD97 PRG:5D97 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDA7 PRG:5DA7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDB7 PRG:5DB7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDC7 PRG:5DC7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDD7 PRG:5DD7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDE7 PRG:5DE7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDF7 PRG:5DF7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE07 PRG:5E07 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE17 PRG:5E17 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE27 PRG:5E27 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE37 PRG:5E37 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE47 PRG:5E47 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE57 PRG:5E57 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE67 PRG:5E67 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE77 PRG:5E77 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE87 PRG:5E87 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE97 PRG:5E97 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEA7 PRG:5EA7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEB7 PRG:5EB7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEC7 PRG:5EC7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DED7 PRG:5ED7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEE7 PRG:5EE7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEF7 PRG:5EF7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF07 PRG:5F07 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF17 PRG:5F17 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF27 PRG:5F27 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF37 PRG:5F37 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF47 PRG:5F47 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF57 PRG:5F57 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF67 PRG:5F67 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF77 PRG:5F77 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF87 PRG:5F87 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF97 PRG:5F97 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFA7 PRG:5FA7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFB7 PRG:5FB7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFC7 PRG:5FC7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFD7 PRG:5FD7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFE7 PRG:5FE7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFF7 PRG:5FF7 FF FF FF FF FF FF FF FF FF +.segment "PRG3" +.org $E000 - .byte $EA, $EA, $86, $2C, $85, $2D, $A5, $2C, $29, $07, $20, $1B, $80, $20, $88, $80 ; CPU:$8000 PRG:8000 EA EA 86 2C 85 2D A5 2C 29 07 20 1B 80 20 88 80 - .byte $A5, $2C, $29, $07, $4C, $1B, $80, $85, $2C, $09, $08, $AA, $20, $70, $FF, $BD ; CPU:$8010 PRG:8010 A5 2C 29 07 4C 1B 80 85 2C 09 08 AA 20 70 FF BD - .byte $26, $80, $9D, $26, $80, $60, $00, $01, $02, $03, $04, $05, $06, $07, $10, $11 ; CPU:$8020 PRG:8020 26 80 9D 26 80 60 00 01 02 03 04 05 06 07 10 11 - .byte $12, $13, $14, $15, $16, $17, $78, $D8, $AD, $02, $20, $10, $FB, $A9, $00, $8D ; CPU:$8030 PRG:8030 12 13 14 15 16 17 78 D8 AD 02 20 10 FB A9 00 8D - .byte $00, $20, $8D, $01, $20, $A2, $FF, $9A, $A9, $00, $20, $1B, $80, $A9, $00, $85 ; CPU:$8040 PRG:8040 00 20 8D 01 20 A2 FF 9A A9 00 20 1B 80 A9 00 85 - .byte $00, $85, $01, $A0, $02, $A2, $06, $91, $00, $C8, $E0, $00, $D0, $04, $C0, $E0 ; CPU:$8050 PRG:8050 00 85 01 A0 02 A2 06 91 00 C8 E0 00 D0 04 C0 E0 - .byte $B0, $09, $C0, $00, $D0, $F1, $E6, $01, $CA, $10, $EC, $85, $00, $85, $01, $A9 ; CPU:$8060 PRG:8060 B0 09 C0 00 D0 F1 E6 01 CA 10 EC 85 00 85 01 A9 - .byte $00, $8D, $15, $40, $A9, $1E, $85, $02, $A9, $88, $8D, $00, $20, $85, $01, $A9 ; CPU:$8070 PRG:8070 00 8D 15 40 A9 1E 85 02 A9 88 8D 00 20 85 01 A9 - .byte $01, $85, $6A, $E6, $2F, $4C, $83, $80, $A5, $2D, $0A, $A8, $B9, $96, $80, $48 ; CPU:$8080 PRG:8080 01 85 6A E6 2F 4C 83 80 A5 2D 0A A8 B9 96 80 48 - .byte $B9, $95, $80, $48, $60, $A6, $80, $30, $81, $83, $A7, $19, $A7, $F0, $AA, $25 ; CPU:$8090 PRG:8090 B9 95 80 48 60 A6 80 30 81 83 A7 19 A7 F0 AA 25 - .byte $A7, $17, $81, $4F, $AB, $60, $81, $A5, $2E, $0A, $AA, $48, $BD, $9A, $83, $85 ; CPU:$80A0 PRG:80A0 A7 17 81 4F AB 60 81 A5 2E 0A AA 48 BD 9A 83 85 - .byte $11, $BD, $9B, $83, $85, $12, $20, $C9, $80, $68, $AA, $BD, $C0, $83, $85, $11 ; CPU:$80B0 PRG:80B0 11 BD 9B 83 85 12 20 C9 80 68 AA BD C0 83 85 11 - .byte $BD, $C1, $83, $85, $12, $20, $18, $81, $60, $A9, $00, $8D, $00, $20, $8D, $01 ; CPU:$80C0 PRG:80C0 BD C1 83 85 12 20 18 81 60 A9 00 8D 00 20 8D 01 - .byte $20, $A0, $00, $AD, $02, $20, $B1, $11, $8D, $06, $20, $20, $11, $81, $B1, $11 ; CPU:$80D0 PRG:80D0 20 A0 00 AD 02 20 B1 11 8D 06 20 20 11 81 B1 11 - .byte $8D, $06, $20, $20, $11, $81, $B1, $11, $10, $16, $C9, $FF, $F0, $22, $29, $7F ; CPU:$80E0 PRG:80E0 8D 06 20 20 11 81 B1 11 10 16 C9 FF F0 22 29 7F - .byte $85, $07, $20, $11, $81, $B1, $11, $8D, $07, $20, $C6, $07, $D0, $F4, $F0, $E3 ; CPU:$80F0 PRG:80F0 85 07 20 11 81 B1 11 8D 07 20 C6 07 D0 F4 F0 E3 - .byte $85, $07, $20, $11, $81, $B1, $11, $8D, $07, $20, $C6, $07, $D0, $F9, $F0, $D3 ; CPU:$8100 PRG:8100 85 07 20 11 81 B1 11 8D 07 20 C6 07 D0 F9 F0 D3 - .byte $60, $E6, $11, $D0, $02, $E6, $12, $60, $AD, $02, $20, $A9, $3F, $8D, $06, $20 ; CPU:$8110 PRG:8110 60 E6 11 D0 02 E6 12 60 AD 02 20 A9 3F 8D 06 20 - .byte $A9, $00, $8D, $06, $20, $A8, $B1, $11, $8D, $07, $20, $C8, $C0, $20, $90, $F6 ; CPU:$8120 PRG:8120 A9 00 8D 06 20 A8 B1 11 8D 07 20 C8 C0 20 90 F6 - .byte $60, $A5, $91, $0A, $AA, $BD, $8A, $81, $85, $11, $BD, $8B, $81, $85, $12, $A4 ; CPU:$8130 PRG:8130 60 A5 91 0A AA BD 8A 81 85 11 BD 8B 81 85 12 A4 - .byte $92, $B1, $11, $D0, $06, $A0, $00, $84, $92, $B1, $11, $C5, $75, $B0, $11, $A9 ; CPU:$8140 PRG:8140 92 B1 11 D0 06 A0 00 84 92 B1 11 C5 75 B0 11 A9 - .byte $00, $85, $75, $C8, $B1, $11, $85, $93, $C8, $B1, $11, $85, $94, $C8, $84, $92 ; CPU:$8150 PRG:8150 00 85 75 C8 B1 11 85 93 C8 B1 11 85 94 C8 84 92 - .byte $60, $A0, $00, $A5, $94, $F0, $1F, $B1, $93, $F0, $1B, $8D, $06, $20, $C8, $B1 ; CPU:$8160 PRG:8160 60 A0 00 A5 94 F0 1F B1 93 F0 1B 8D 06 20 C8 B1 - .byte $93, $8D, $06, $20, $C8, $B1, $93, $85, $11, $C8, $B1, $93, $8D, $07, $20, $C8 ; CPU:$8170 PRG:8170 93 8D 06 20 C8 B1 93 85 11 C8 B1 93 8D 07 20 C8 - .byte $C6, $11, $D0, $F6, $F0, $E1, $85, $94, $60, $40, $A2, $81, $ED, $81, $04, $82 ; CPU:$8180 PRG:8180 C6 11 D0 F6 F0 E1 85 94 60 40 A2 81 ED 81 04 82 - .byte $37, $82, $5E, $82, $77, $82, $D6, $82, $E7, $82, $FE, $82, $23, $83, $38, $83 ; CPU:$8190 PRG:8190 37 82 5E 82 77 82 D6 82 E7 82 FE 82 23 83 38 83 - .byte $87, $83, $18, $A9, $81, $18, $CB, $81, $00, $24, $E8, $02, $AF, $B0, $25, $4D ; CPU:$81A0 PRG:81A0 87 83 18 A9 81 18 CB 81 00 24 E8 02 AF B0 25 4D - .byte $02, $FF, $FF, $25, $6D, $02, $FF, $FF, $25, $8D, $04, $FF, $B8, $B2, $B3, $25 ; CPU:$81B0 PRG:81B0 02 FF FF 25 6D 02 FF FF 25 8D 04 FF B8 B2 B3 25 - .byte $AD, $03, $B6, $B9, $B4, $25, $CE, $02, $BA, $B5, $00, $24, $E8, $02, $37, $50 ; CPU:$81C0 PRG:81C0 AD 03 B6 B9 B4 25 CE 02 BA B5 00 24 E8 02 37 50 - .byte $25, $4D, $02, $7F, $80, $25, $6D, $02, $7E, $81, $25, $8D, $04, $7D, $82, $FF ; CPU:$81D0 PRG:81D0 25 4D 02 7F 80 25 6D 02 7E 81 25 8D 04 7D 82 FF - .byte $FF, $25, $AD, $03, $7C, $83, $FF, $25, $CE, $02, $84, $FF, $00, $18, $F4, $81 ; CPU:$81E0 PRG:81E0 FF 25 AD 03 7C 83 FF 25 CE 02 84 FF 00 18 F4 81 - .byte $18, $FC, $81, $00, $26, $AB, $04, $66, $73, $7A, $86, $00, $26, $AB, $04, $D5 ; CPU:$81F0 PRG:81F0 18 FC 81 00 26 AB 04 66 73 7A 86 00 26 AB 04 D5 - .byte $D6, $D7, $D8, $00, $18, $0B, $82, $18, $21, $82, $00, $25, $13, $02, $39, $3E ; CPU:$8200 PRG:8200 D6 D7 D8 00 18 0B 82 18 21 82 00 25 13 02 39 3E - .byte $27, $16, $02, $D2, $D7, $27, $36, $03, $D3, $D6, $D8, $27, $56, $02, $D4, $D5 ; CPU:$8210 PRG:8210 27 16 02 D2 D7 27 36 03 D3 D6 D8 27 56 02 D4 D5 - .byte $00, $25, $13, $02, $D0, $D1, $27, $16, $02, $72, $77, $27, $36, $03, $73, $76 ; CPU:$8220 PRG:8220 00 25 13 02 D0 D1 27 16 02 72 77 27 36 03 73 76 - .byte $85, $27, $56, $02, $74, $75, $00, $18, $3E, $82, $18, $4E, $82, $00, $24, $ED ; CPU:$8230 PRG:8230 85 27 56 02 74 75 00 18 3E 82 18 4E 82 00 24 ED - .byte $02, $B3, $B4, $25, $0D, $02, $B5, $B8, $25, $2D, $02, $B6, $B7, $00, $24, $ED ; CPU:$8240 PRG:8240 02 B3 B4 25 0D 02 B5 B8 25 2D 02 B6 B7 00 24 ED - .byte $02, $86, $8E, $25, $0D, $02, $85, $8F, $25, $2D, $02, $84, $90, $00, $18, $65 ; CPU:$8250 PRG:8250 02 86 8E 25 0D 02 85 8F 25 2D 02 84 90 00 18 65 - .byte $82, $18, $6E, $82, $00, $25, $E8, $01, $F7, $26, $07, $01, $F8, $00, $25, $E8 ; CPU:$8260 PRG:8260 82 18 6E 82 00 25 E8 01 F7 26 07 01 F8 00 25 E8 - .byte $01, $81, $26, $07, $01, $5F, $00, $18, $7E, $82, $18, $AA, $82, $00, $24, $E9 ; CPU:$8270 PRG:8270 01 81 26 07 01 5F 00 18 7E 82 18 AA 82 00 24 E9 - .byte $02, $F1, $EC, $26, $4B, $04, $E9, $E8, $E7, $E6, $26, $6B, $04, $E0, $E1, $E4 ; CPU:$8280 PRG:8280 02 F1 EC 26 4B 04 E9 E8 E7 E6 26 6B 04 E0 E1 E4 - .byte $E5, $26, $8B, $04, $EB, $E2, $E3, $EA, $26, $AB, $03, $ED, $EE, $EF, $26, $CB ; CPU:$8290 PRG:8290 E5 26 8B 04 EB E2 E3 EA 26 AB 03 ED EE EF 26 CB - .byte $03, $92, $92, $F2, $26, $EC, $02, $F0, $92, $00, $24, $E9, $02, $35, $53, $26 ; CPU:$82A0 PRG:82A0 03 92 92 F2 26 EC 02 F0 92 00 24 E9 02 35 53 26 - .byte $4B, $04, $63, $FF, $FF, $FF, $26, $6B, $04, $64, $70, $7F, $87, $26, $8B, $04 ; CPU:$82B0 PRG:82B0 4B 04 63 FF FF FF 26 6B 04 64 70 7F 87 26 8B 04 - .byte $65, $6F, $92, $9A, $26, $AB, $03, $66, $6E, $80, $26, $CB, $03, $67, $6D, $81 ; CPU:$82C0 PRG:82C0 65 6F 92 9A 26 AB 03 66 6E 80 26 CB 03 67 6D 81 - .byte $26, $EC, $02, $6C, $82, $00, $18, $DD, $82, $18, $E2, $82, $00, $25, $26, $01 ; CPU:$82D0 PRG:82D0 26 EC 02 6C 82 00 18 DD 82 18 E2 82 00 25 26 01 - .byte $EE, $00, $25, $26, $01, $0E, $00, $18, $EE, $82, $18, $F6, $82, $00, $25, $14 ; CPU:$82E0 PRG:82E0 EE 00 25 26 01 0E 00 18 EE 82 18 F6 82 00 25 14 - .byte $04, $D5, $D6, $D7, $D8, $00, $25, $14, $04, $1E, $39, $3E, $5C, $00, $18, $05 ; CPU:$82F0 PRG:82F0 04 D5 D6 D7 D8 00 25 14 04 1E 39 3E 5C 00 18 05 - .byte $83, $18, $14, $83, $00, $26, $17, $01, $B8, $26, $36, $02, $B7, $B9, $26, $57 ; CPU:$8300 PRG:8300 83 18 14 83 00 26 17 01 B8 26 36 02 B7 B9 26 57 - .byte $02, $BA, $BB, $00, $26, $17, $01, $7C, $26, $36, $02, $72, $7D, $26, $57, $02 ; CPU:$8310 PRG:8310 02 BA BB 00 26 17 01 7C 26 36 02 72 7D 26 57 02 - .byte $7E, $89, $00, $18, $2A, $83, $18, $31, $83, $00, $25, $15, $03, $F2, $F3, $F4 ; CPU:$8320 PRG:8320 7E 89 00 18 2A 83 18 31 83 00 25 15 03 F2 F3 F4 - .byte $00, $25, $15, $03, $14, $15, $16, $00, $18, $3F, $83, $18, $63, $83, $00, $24 ; CPU:$8330 PRG:8330 00 25 15 03 14 15 16 00 18 3F 83 18 63 83 00 24 - .byte $D5, $01, $CF, $25, $71, $02, $DC, $D7, $25, $91, $02, $D6, $D8, $25, $B1, $02 ; CPU:$8340 PRG:8340 D5 01 CF 25 71 02 DC D7 25 91 02 D6 D8 25 B1 02 - .byte $D5, $D9, $25, $D1, $02, $D4, $DA, $25, $F0, $03, $D2, $D3, $DB, $26, $10, $02 ; CPU:$8350 PRG:8350 D5 D9 25 D1 02 D4 DA 25 F0 03 D2 D3 DB 26 10 02 - .byte $D0, $D1, $00, $24, $D5, $01, $10, $25, $71, $02, $FF, $2C, $25, $91, $02, $33 ; CPU:$8360 PRG:8360 D0 D1 00 24 D5 01 10 25 71 02 FF 2C 25 91 02 33 - .byte $34, $25, $B1, $02, $3B, $3C, $25, $D1, $02, $43, $44, $25, $F0, $03, $4A, $4B ; CPU:$8370 PRG:8370 34 25 B1 02 3B 3C 25 D1 02 43 44 25 F0 03 4A 4B - .byte $4C, $26, $10, $02, $52, $53, $00, $18, $8E, $83, $18, $94, $83, $00, $25, $E8 ; CPU:$8380 PRG:8380 4C 26 10 02 52 53 00 18 8E 83 18 94 83 00 25 E8 - .byte $02, $F9, $FA, $00, $25, $E8, $02, $81, $91, $00, $47, $85, $A1, $87, $8C, $8A ; CPU:$8390 PRG:8390 02 F9 FA 00 25 E8 02 81 91 00 47 85 A1 87 8C 8A - .byte $B1, $8C, $B1, $8D, $51, $8F, $15, $91, $92, $92, $44, $94, $E6, $95, $81, $97 ; CPU:$83A0 PRG:83A0 B1 8C B1 8D 51 8F 15 91 92 92 44 94 E6 95 81 97 - .byte $23, $99, $D3, $9A, $76, $9C, $DA, $9D, $79, $9F, $21, $A1, $E3, $A3, $92, $A5 ; CPU:$83B0 PRG:83B0 23 99 D3 9A 76 9C DA 9D 79 9F 21 A1 E3 A3 92 A5 - .byte $E6, $83, $16, $84, $36, $84, $E6, $83, $56, $84, $76, $84, $86, $84, $96, $84 ; CPU:$83C0 PRG:83C0 E6 83 16 84 36 84 E6 83 56 84 76 84 86 84 96 84 - .byte $A6, $84, $B6, $84, $C6, $84, $D6, $84, $E6, $84, $F6, $84, $06, $85, $16, $85 ; CPU:$83D0 PRG:83D0 A6 84 B6 84 C6 84 D6 84 E6 84 F6 84 06 85 16 85 - .byte $27, $85, $27, $85, $E6, $83, $0E, $0E, $05, $0E, $0E, $0E, $0E, $0E, $0E, $0E ; CPU:$83E0 PRG:83E0 27 85 27 85 E6 83 0E 0E 05 0E 0E 0E 0E 0E 0E 0E - .byte $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21 ; CPU:$83F0 PRG:83F0 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 25 13 1A 0E 21 - .byte $25, $1A, $0E, $21, $13, $30, $0E, $3A, $2A, $1A, $0E, $32, $27, $07, $0E, $30 ; CPU:$8400 PRG:8400 25 1A 0E 21 13 30 0E 3A 2A 1A 0E 32 27 07 0E 30 - .byte $28, $08, $0E, $32, $2C, $12, $0E, $31, $2A, $28, $0E, $30, $25, $22, $0E, $2B ; CPU:$8410 PRG:8410 28 08 0E 32 2C 12 0E 31 2A 28 0E 30 25 22 0E 2B - .byte $28, $30, $0E, $31, $22, $13, $0E, $31, $2A, $28, $0E, $2A, $25, $22, $0E, $21 ; CPU:$8420 PRG:8420 28 30 0E 31 22 13 0E 31 2A 28 0E 2A 25 22 0E 21 - .byte $28, $30, $0E, $27, $27, $17, $0E, $31, $2A, $28, $0E, $2A, $25, $22, $0E, $21 ; CPU:$8430 PRG:8430 28 30 0E 27 27 17 0E 31 2A 28 0E 2A 25 22 0E 21 - .byte $28, $30, $0E, $30, $27, $17, $0E, $31, $2A, $28, $0E, $2A, $25, $22, $0E, $21 ; CPU:$8440 PRG:8440 28 30 0E 30 27 17 0E 31 2A 28 0E 2A 25 22 0E 21 - .byte $28, $30, $0E, $30, $27, $17, $0E, $21, $13, $18, $0E, $27, $18, $1A, $0E, $18 ; CPU:$8450 PRG:8450 28 30 0E 30 27 17 0E 21 13 18 0E 27 18 1A 0E 18 - .byte $2B, $1A, $0E, $21, $11, $30, $0E, $25, $1A, $0E, $0E, $36, $26, $0E, $0E, $18 ; CPU:$8460 PRG:8460 2B 1A 0E 21 11 30 0E 25 1A 0E 0E 36 26 0E 0E 18 - .byte $2B, $1A, $0E, $21, $11, $30, $0E, $21, $36, $26, $0E, $25, $13, $1A, $0E, $21 ; CPU:$8470 PRG:8470 2B 1A 0E 21 11 30 0E 21 36 26 0E 25 13 1A 0E 21 - .byte $25, $1A, $0E, $21, $13, $30, $0E, $21, $13, $1A, $0E, $21, $36, $27, $0E, $21 ; CPU:$8480 PRG:8480 25 1A 0E 21 13 30 0E 21 13 1A 0E 21 36 27 0E 21 - .byte $01, $36, $0E, $21, $13, $30, $FF, $23, $37, $28, $FF, $23, $37, $2A, $FF, $23 ; CPU:$8490 PRG:8490 01 36 0E 21 13 30 FF 23 37 28 FF 23 37 2A FF 23 - .byte $37, $30, $FF, $23, $25, $20, $FF, $23, $25, $30, $FF, $2A, $17, $38, $FF, $37 ; CPU:$84A0 PRG:84A0 37 30 FF 23 25 20 FF 23 25 30 FF 2A 17 38 FF 37 - .byte $17, $30, $FF, $23, $13, $20, $0E, $14, $11, $30, $0E, $21, $25, $38, $0E, $37 ; CPU:$84B0 PRG:84B0 17 30 FF 23 13 20 0E 14 11 30 0E 21 25 38 0E 37 - .byte $27, $11, $0E, $10, $11, $30, $0E, $21, $25, $1A, $0E, $21, $36, $27, $0E, $21 ; CPU:$84C0 PRG:84C0 27 11 0E 10 11 30 0E 21 25 1A 0E 21 36 27 0E 21 - .byte $36, $26, $0E, $21, $13, $30, $0E, $21, $25, $1A, $0E, $21, $36, $27, $0E, $21 ; CPU:$84D0 PRG:84D0 36 26 0E 21 13 30 0E 21 25 1A 0E 21 36 27 0E 21 - .byte $36, $26, $0E, $21, $03, $30, $FF, $21, $37, $30, $FF, $28, $37, $26, $FF, $28 ; CPU:$84E0 PRG:84E0 36 26 0E 21 03 30 FF 21 37 30 FF 28 37 26 FF 28 - .byte $21, $30, $FF, $25, $21, $30, $0E, $37, $27, $30, $0E, $37, $27, $1B, $0E, $37 ; CPU:$84F0 PRG:84F0 21 30 FF 25 21 30 0E 37 27 30 0E 37 27 1B 0E 37 - .byte $27, $17, $0E, $1B, $10, $30, $0E, $21, $36, $26, $0E, $21, $25, $2A, $0E, $21 ; CPU:$8500 PRG:8500 27 17 0E 1B 10 30 0E 21 36 26 0E 21 25 2A 0E 21 - .byte $36, $27, $0E, $21, $13, $30, $FF, $23, $37, $28, $FF, $23, $37, $2A, $FF, $37 ; CPU:$8510 PRG:8510 36 27 0E 21 13 30 FF 23 37 28 FF 23 37 2A FF 37 - .byte $26, $30, $FF, $23, $25, $20, $0E, $0E, $31, $2A, $28, $0E, $30, $2C, $1C, $0E ; CPU:$8520 PRG:8520 26 30 FF 23 25 20 0E 0E 31 2A 28 0E 30 2C 1C 0E - .byte $36, $31, $17, $0E, $31, $15, $22, $0E, $31, $2A, $28, $FF, $30, $25, $22, $FF ; CPU:$8530 PRG:8530 36 31 17 0E 31 15 22 0E 31 2A 28 FF 30 25 22 FF - .byte $2B, $28, $30, $FF, $31, $15, $22, $20, $00, $44, $FF, $83, $91, $92, $93, $04 ; CPU:$8540 PRG:8540 2B 28 30 FF 31 15 22 20 00 44 FF 83 91 92 93 04 - .byte $FF, $83, $94, $95, $96, $02, $FF, $87, $97, $98, $99, $9A, $9B, $9C, $9D, $02 ; CPU:$8550 PRG:8550 FF 83 94 95 96 02 FF 87 97 98 99 9A 9B 9C 9D 02 - .byte $FF, $82, $9E, $9F, $09, $FF, $98, $A0, $A1, $A2, $A3, $A4, $A5, $A6, $A7, $A8 ; CPU:$8560 PRG:8560 FF 82 9E 9F 09 FF 98 A0 A1 A2 A3 A4 A5 A6 A7 A8 - .byte $A9, $AA, $AB, $AC, $AD, $AE, $AF, $B0, $B1, $B2, $B3, $B4, $B5, $B6, $B7, $08 ; CPU:$8570 PRG:8570 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 08 - .byte $FF, $98, $B8, $B9, $BA, $BB, $BC, $BD, $BE, $BF, $C0, $C1, $C2, $C3, $C4, $FF ; CPU:$8580 PRG:8580 FF 98 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 FF - .byte $C5, $C6, $C7, $C8, $C9, $CA, $CB, $CC, $CD, $CE, $08, $FF, $98, $CF, $D0, $D1 ; CPU:$8590 PRG:8590 C5 C6 C7 C8 C9 CA CB CC CD CE 08 FF 98 CF D0 D1 - .byte $D2, $D3, $D4, $D5, $D6, $D7, $D8, $D9, $DA, $DB, $DC, $DD, $DE, $DF, $E0, $E1 ; CPU:$85A0 PRG:85A0 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 - .byte $E2, $E3, $E4, $E5, $E6, $2F, $FF, $86, $54, $48, $45, $FF, $52, $49, $02, $44 ; CPU:$85B0 PRG:85B0 E2 E3 E4 E5 E6 2F FF 86 54 48 45 FF 52 49 02 44 - .byte $82, $4C, $45, $11, $FF, $8F, $4F, $46, $FF, $54, $48, $45, $FF, $4D, $41, $47 ; CPU:$85C0 PRG:85C0 82 4C 45 11 FF 8F 4F 46 FF 54 48 45 FF 4D 41 47 - .byte $49, $43, $FF, $42, $55, $02, $42, $82, $4C, $45, $0C, $FF, $81, $BC, $12, $BE ; CPU:$85D0 PRG:85D0 49 43 FF 42 55 02 42 82 4C 45 0C FF 81 BC 12 BE - .byte $81, $BF, $0C, $FF, $81, $BD, $05, $AF, $81, $E4, $04, $AF, $89, $B7, $B8, $B9 ; CPU:$85E0 PRG:85E0 81 BF 0C FF 81 BD 05 AF 81 E4 04 AF 89 B7 B8 B9 - .byte $BA, $BB, $AF, $E4, $AF, $C0, $0C, $FF, $81, $BD, $02, $AF, $83, $E4, $AF, $E5 ; CPU:$85F0 PRG:85F0 BA BB AF E4 AF C0 0C FF 81 BD 02 AF 83 E4 AF E5 - .byte $03, $AF, $88, $E4, $AF, $B6, $B5, $B4, $B3, $B2, $B1, $02, $AF, $81, $C0, $0C ; CPU:$8600 PRG:8600 03 AF 88 E4 AF B6 B5 B4 B3 B2 B1 02 AF 81 C0 0C - .byte $FF, $81, $BD, $04, $AF, $81, $B0, $03, $AF, $88, $E5, $AE, $AD, $AC, $AB, $AA ; CPU:$8610 PRG:8610 FF 81 BD 04 AF 81 B0 03 AF 88 E5 AE AD AC AB AA - .byte $A9, $A8, $02, $AF, $81, $C0, $0C, $FF, $86, $BD, $E3, $E2, $E1, $9E, $9F, $02 ; CPU:$8620 PRG:8620 A9 A8 02 AF 81 C0 0C FF 86 BD E3 E2 E1 9E 9F 02 - .byte $AF, $81, $A0, $02, $AF, $89, $A1, $A2, $A3, $A4, $A5, $A6, $A7, $AF, $C0, $0C ; CPU:$8630 PRG:8630 AF 81 A0 02 AF 89 A1 A2 A3 A4 A5 A6 A7 AF C0 0C - .byte $FF, $94, $BD, $DE, $DF, $E0, $9D, $9C, $9B, $9A, $99, $AF, $E5, $98, $97, $96 ; CPU:$8640 PRG:8640 FF 94 BD DE DF E0 9D 9C 9B 9A 99 AF E5 98 97 96 - .byte $95, $94, $93, $92, $AF, $C0, $0C, $FF, $91, $BD, $DB, $DC, $DD, $88, $89, $8A ; CPU:$8650 PRG:8650 95 94 93 92 AF C0 0C FF 91 BD DB DC DD 88 89 8A - .byte $8B, $AF, $E5, $AF, $8C, $8D, $8E, $8F, $90, $91, $02, $AF, $81, $C0, $0C, $FF ; CPU:$8660 PRG:8660 8B AF E5 AF 8C 8D 8E 8F 90 91 02 AF 81 C0 0C FF - .byte $91, $BD, $D8, $D9, $DA, $87, $86, $85, $84, $83, $82, $81, $80, $7F, $7E, $7D ; CPU:$8670 PRG:8670 91 BD D8 D9 DA 87 86 85 84 83 82 81 80 7F 7E 7D - .byte $7C, $7B, $02, $AF, $81, $C0, $0C, $FF, $91, $BD, $D6, $D7, $6D, $6E, $6F, $70 ; CPU:$8680 PRG:8680 7C 7B 02 AF 81 C0 0C FF 91 BD D6 D7 6D 6E 6F 70 - .byte $71, $72, $73, $74, $75, $76, $77, $78, $79, $7A, $02, $AF, $81, $C0, $0C, $FF ; CPU:$8690 PRG:8690 71 72 73 74 75 76 77 78 79 7A 02 AF 81 C0 0C FF - .byte $94, $BD, $6C, $6B, $6A, $69, $68, $67, $66, $65, $64, $63, $62, $61, $60, $5F ; CPU:$86A0 PRG:86A0 94 BD 6C 6B 6A 69 68 67 66 65 64 63 62 61 60 5F - .byte $5E, $5D, $5C, $5B, $C0, $0C, $FF, $94, $BD, $49, $4A, $4B, $4C, $4D, $4E, $4F ; CPU:$86B0 PRG:86B0 5E 5D 5C 5B C0 0C FF 94 BD 49 4A 4B 4C 4D 4E 4F - .byte $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $5A, $C0, $0C, $FF, $94, $BD ; CPU:$86C0 PRG:86C0 50 51 52 53 54 55 56 57 58 59 5A C0 0C FF 94 BD - .byte $48, $47, $46, $45, $44, $43, $42, $41, $40, $3F, $3E, $3D, $3C, $3B, $3A, $39 ; CPU:$86D0 PRG:86D0 48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 - .byte $38, $37, $C0, $0C, $FF, $94, $BD, $25, $26, $27, $28, $29, $2A, $2B, $2C, $2D ; CPU:$86E0 PRG:86E0 38 37 C0 0C FF 94 BD 25 26 27 28 29 2A 2B 2C 2D - .byte $2E, $2F, $30, $31, $32, $33, $34, $35, $36, $C0, $0C, $FF, $94, $BD, $24, $23 ; CPU:$86F0 PRG:86F0 2E 2F 30 31 32 33 34 35 36 C0 0C FF 94 BD 24 23 - .byte $22, $21, $20, $1F, $1E, $1D, $1C, $1B, $1A, $19, $18, $17, $16, $15, $14, $13 ; CPU:$8700 PRG:8700 22 21 20 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 - .byte $C0, $0C, $FF, $94, $BD, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B ; CPU:$8710 PRG:8710 C0 0C FF 94 BD 01 02 03 04 05 06 07 08 09 0A 0B - .byte $0C, $0D, $0E, $0F, $10, $11, $12, $C0, $0C, $FF, $81, $C3, $12, $C2, $81, $C1 ; CPU:$8720 PRG:8720 0C 0D 0E 0F 10 11 12 C0 0C FF 81 C3 12 C2 81 C1 - .byte $09, $FF, $82, $C4, $C5, $02, $C6, $96, $C5, $FF, $C7, $C8, $C9, $FF, $CA, $CB ; CPU:$8730 PRG:8730 09 FF 82 C4 C5 02 C6 96 C5 FF C7 C8 C9 FF CA CB - .byte $C7, $CC, $FF, $CD, $CA, $C7, $C9, $CB, $CE, $C9, $D5, $FF, $CF, $D0, $0B, $FF ; CPU:$8740 PRG:8740 C7 CC FF CD CA C7 C9 CB CE C9 D5 FF CF D0 0B FF - .byte $8E, $D1, $D2, $C9, $D3, $CA, $C7, $D1, $CB, $FF, $D4, $CA, $D5, $C9, $D0, $10 ; CPU:$8750 PRG:8750 8E D1 D2 C9 D3 CA C7 D1 CB FF D4 CA D5 C9 D0 10 - .byte $FF, $92, $C9, $CB, $CF, $C9, $D3, $CF, $D1, $CA, $CB, $D2, $C9, $CB, $CF, $FF ; CPU:$8760 PRG:8760 FF 92 C9 CB CF C9 D3 CF D1 CA CB D2 C9 CB CF FF - .byte $CA, $CB, $C7, $CC, $49, $FF, $81, $0F, $07, $FF, $07, $F0, $81, $FE, $04, $FF ; CPU:$8770 PRG:8770 CA CB C7 CC 49 FF 81 0F 07 FF 07 F0 81 FE 04 FF - .byte $82, $0F, $CF, $03, $FF, $85, $BB, $AA, $EE, $00, $C0, $03, $FF, $81, $BB, $02 ; CPU:$8780 PRG:8780 82 0F CF 03 FF 85 BB AA EE 00 C0 03 FF 81 BB 02 - .byte $AA, $82, $00, $8C, $03, $FF, $85, $77, $D5, $F5, $77, $08, $12, $FF, $FF, $FF ; CPU:$8790 PRG:8790 AA 82 00 8C 03 FF 85 77 D5 F5 77 08 12 FF FF FF - .byte $FF, $24, $00, $8A, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $0C, $FF ; CPU:$87A0 PRG:87A0 FF 24 00 8A 1F 20 1F 20 1F 20 1F 20 1F 20 0C FF - .byte $9D, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21 ; CPU:$87B0 PRG:87B0 9D 1F 20 1F 20 1F 20 1F 20 1F 20 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $07, $0D, $21, $22, $21, $22, $21, $22, $21, $02, $22 ; CPU:$87C0 PRG:87C0 22 21 22 21 22 07 0D 21 22 21 22 21 22 21 02 22 - .byte $97, $16, $0F, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20 ; CPU:$87D0 PRG:87D0 97 16 0F 22 21 22 21 22 21 22 21 22 1F 20 1F 20 - .byte $1F, $20, $1F, $20, $1F, $20, $08, $04, $09, $00, $B7, $01, $10, $20, $1F, $20 ; CPU:$87E0 PRG:87E0 1F 20 1F 20 1F 20 08 04 09 00 B7 01 10 20 1F 20 - .byte $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$87F0 PRG:87F0 1F 20 1F 20 1F 20 21 22 21 22 21 22 21 22 21 22 - .byte $09, $05, $FF, $4F, $50, $54, $49, $4F, $4E, $53, $FF, $02, $11, $22, $21, $22 ; CPU:$8800 PRG:8800 09 05 FF 4F 50 54 49 4F 4E 53 FF 02 11 22 21 22 - .byte $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20 ; CPU:$8810 PRG:8810 21 22 21 22 21 22 1F 20 1F 20 1F 20 1F 20 1F 20 - .byte $0A, $06, $09, $15, $9E, $03, $12, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20 ; CPU:$8820 PRG:8820 0A 06 09 15 9E 03 12 20 1F 20 1F 20 1F 20 1F 20 - .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $0B, $0C, $21, $22, $21, $22 ; CPU:$8830 PRG:8830 21 22 21 22 21 22 21 22 21 22 0B 0C 21 22 21 22 - .byte $21, $22, $21, $02, $22, $90, $17, $13, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8840 PRG:8840 21 22 21 02 22 90 17 13 22 21 22 21 22 21 22 21 - .byte $22, $1F, $20, $1F, $20, $18, $16, $1E, $93, $1B, $1F, $20, $1F, $20, $21, $22 ; CPU:$8850 PRG:8850 22 1F 20 1F 20 18 16 1E 93 1B 1F 20 1F 20 21 22 - .byte $21, $22, $19, $FF, $31, $FF, $50, $4C, $41, $59, $45, $52, $03, $FF, $94, $32 ; CPU:$8860 PRG:8860 21 22 19 FF 31 FF 50 4C 41 59 45 52 03 FF 94 32 - .byte $FF, $50, $4C, $41, $59, $45, $52, $53, $FF, $1C, $21, $22, $21, $22, $1F, $20 ; CPU:$8870 PRG:8870 FF 50 4C 41 59 45 52 53 FF 1C 21 22 21 22 1F 20 - .byte $1F, $20, $1A, $16, $14, $AA, $1D, $1F, $20, $1F, $20, $21, $22, $21, $22, $21 ; CPU:$8880 PRG:8880 1F 20 1A 16 14 AA 1D 1F 20 1F 20 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8890 PRG:8890 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $18 ; CPU:$88A0 PRG:88A0 22 21 22 21 22 21 22 21 22 21 22 1F 20 1F 20 18 - .byte $16, $1E, $90, $1B, $1F, $20, $1F, $20, $21, $22, $21, $22, $19, $FF, $53, $54 ; CPU:$88B0 PRG:88B0 16 1E 90 1B 1F 20 1F 20 21 22 21 22 19 FF 53 54 - .byte $41, $47, $45, $03, $FF, $87, $31, $FF, $32, $FF, $33, $FF, $34, $06, $FF, $8A ; CPU:$88C0 PRG:88C0 41 47 45 03 FF 87 31 FF 32 FF 33 FF 34 06 FF 8A - .byte $1C, $21, $22, $21, $22, $1F, $20, $1F, $20, $1A, $16, $14, $AA, $1D, $1F, $20 ; CPU:$88D0 PRG:88D0 1C 21 22 21 22 1F 20 1F 20 1A 16 14 AA 1D 1F 20 - .byte $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$88E0 PRG:88E0 1F 20 21 22 21 22 21 22 21 22 21 22 21 22 21 22 - .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$88F0 PRG:88F0 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 - .byte $21, $22, $1F, $20, $1F, $20, $18, $16, $1E, $8F, $1B, $1F, $20, $1F, $20, $21 ; CPU:$8900 PRG:8900 21 22 1F 20 1F 20 18 16 1E 8F 1B 1F 20 1F 20 21 - .byte $22, $21, $22, $19, $FF, $45, $41, $53, $59, $03, $FF, $84, $48, $41, $52, $44 ; CPU:$8910 PRG:8910 22 21 22 19 FF 45 41 53 59 03 FF 84 48 41 52 44 - .byte $02, $FF, $92, $53, $54, $41, $43, $4B, $45, $44, $FF, $1C, $21, $22, $21, $22 ; CPU:$8920 PRG:8920 02 FF 92 53 54 41 43 4B 45 44 FF 1C 21 22 21 22 - .byte $1F, $20, $1F, $20, $1A, $16, $14, $AA, $1D, $1F, $20, $1F, $20, $21, $22, $21 ; CPU:$8930 PRG:8930 1F 20 1F 20 1A 16 14 AA 1D 1F 20 1F 20 21 22 21 - .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8940 PRG:8940 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F ; CPU:$8950 PRG:8950 22 21 22 21 22 21 22 21 22 21 22 21 22 1F 20 1F - .byte $20, $18, $16, $1E, $90, $1B, $1F, $20, $1F, $20, $21, $22, $21, $22, $19, $FF ; CPU:$8960 PRG:8960 20 18 16 1E 90 1B 1F 20 1F 20 21 22 21 22 19 FF - .byte $4C, $45, $56, $45, $4C, $03, $FF, $89, $31, $FF, $32, $FF, $33, $FF, $34, $FF ; CPU:$8970 PRG:8970 4C 45 56 45 4C 03 FF 89 31 FF 32 FF 33 FF 34 FF - .byte $35, $04, $FF, $8A, $1C, $21, $22, $21, $22, $1F, $20, $1F, $20, $1A, $16, $14 ; CPU:$8980 PRG:8980 35 04 FF 8A 1C 21 22 21 22 1F 20 1F 20 1A 16 14 - .byte $AA, $1D, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8990 PRG:8990 AA 1D 1F 20 1F 20 21 22 21 22 21 22 21 22 21 22 - .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$89A0 PRG:89A0 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 - .byte $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $18, $16, $1E, $90, $1B, $1F ; CPU:$89B0 PRG:89B0 21 22 21 22 21 22 1F 20 1F 20 18 16 1E 90 1B 1F - .byte $20, $1F, $20, $21, $22, $21, $22, $19, $FF, $54, $55, $4E, $45, $31, $03, $FF ; CPU:$89C0 PRG:89C0 20 1F 20 21 22 21 22 19 FF 54 55 4E 45 31 03 FF - .byte $85, $54, $55, $4E, $45, $32, $03, $FF, $8F, $54, $55, $4E, $45, $33, $1C, $21 ; CPU:$89D0 PRG:89D0 85 54 55 4E 45 32 03 FF 8F 54 55 4E 45 33 1C 21 - .byte $22, $21, $22, $1F, $20, $1F, $20, $1A, $16, $14, $B2, $1D, $1F, $20, $1F, $20 ; CPU:$89E0 PRG:89E0 22 21 22 1F 20 1F 20 1A 16 14 B2 1D 1F 20 1F 20 - .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$89F0 PRG:89F0 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 - .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $21, $22, $21, $22 ; CPU:$8A00 PRG:8A00 21 22 21 22 21 22 21 22 21 22 1F 20 21 22 21 22 - .byte $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $18, $06, $1E, $9A ; CPU:$8A10 PRG:8A10 1F 20 1F 20 1F 20 1F 20 1F 20 1F 20 18 06 1E 9A - .byte $1B, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21 ; CPU:$8A20 PRG:8A20 1B 1F 20 1F 20 1F 20 1F 20 1F 20 1F 20 21 22 21 - .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $19, $06, $FF, $9A, $1C, $21, $22 ; CPU:$8A30 PRG:8A30 22 21 22 21 22 21 22 21 22 19 06 FF 9A 1C 21 22 - .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $1F, $20 ; CPU:$8A40 PRG:8A40 21 22 21 22 21 22 21 22 21 22 1F 20 1F 20 1F 20 - .byte $1F, $20, $1F, $20, $1F, $20, $1A, $06, $14, $AD, $1D, $1F, $20, $1F, $20, $1F ; CPU:$8A50 PRG:8A50 1F 20 1F 20 1F 20 1A 06 14 AD 1D 1F 20 1F 20 1F - .byte $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8A60 PRG:8A60 20 1F 20 1F 20 1F 20 21 22 21 22 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8A70 PRG:8A70 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $21, $22, $40, $FF, $FF, $FF, $FF, $24, $00, $8A, $1F ; CPU:$8A80 PRG:8A80 22 21 22 21 22 21 22 40 FF FF FF FF 24 00 8A 1F - .byte $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $02, $1F, $89, $20, $1F, $20, $1F ; CPU:$8A90 PRG:8A90 20 1F 20 1F 20 1F 20 1F 20 02 1F 89 20 1F 20 1F - .byte $20, $1F, $20, $1F, $20, $02, $1F, $B4, $20, $1F, $20, $1F, $20, $1F, $20, $1F ; CPU:$8AA0 PRG:8AA0 20 1F 20 1F 20 02 1F B4 20 1F 20 1F 20 1F 20 1F - .byte $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $24, $25, $21, $22, $21, $22 ; CPU:$8AB0 PRG:8AB0 20 21 22 21 22 21 22 21 22 21 24 25 21 22 21 22 - .byte $21, $22, $21, $22, $21, $2E, $2F, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8AC0 PRG:8AC0 21 22 21 22 21 2E 2F 21 22 21 22 21 22 21 22 21 - .byte $22, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $26, $27, $09, $0E, $B7, $3A ; CPU:$8AD0 PRG:8AD0 22 1F 20 1F 20 1F 20 1F 20 1F 26 27 09 0E B7 3A - .byte $3B, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21 ; CPU:$8AE0 PRG:8AE0 3B 1F 20 1F 20 1F 20 1F 20 1F 20 21 22 21 22 21 - .byte $22, $21, $22, $21, $28, $29, $FF, $54, $4F, $50, $FF, $54, $45, $4E, $FF, $3C ; CPU:$8AF0 PRG:8AF0 22 21 22 21 28 29 FF 54 4F 50 FF 54 45 4E FF 3C - .byte $3D, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $1F ; CPU:$8B00 PRG:8B00 3D 21 22 21 22 21 22 21 22 21 22 1F 20 1F 20 1F - .byte $20, $1F, $20, $1F, $2A, $2B, $09, $23, $97, $5B, $5C, $1F, $20, $1F, $20, $1F ; CPU:$8B10 PRG:8B10 20 1F 20 1F 2A 2B 09 23 97 5B 5C 1F 20 1F 20 1F - .byte $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $2C, $2D ; CPU:$8B20 PRG:8B20 20 1F 20 1F 20 21 22 21 22 21 22 21 22 21 2C 2D - .byte $09, $FF, $90, $5D, $5E, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F ; CPU:$8B30 PRG:8B30 09 FF 90 5D 5E 21 22 21 22 21 22 21 22 21 22 1F - .byte $20, $64, $65, $05, $63, $81, $6A, $0B, $FF, $81, $69, $06, $63, $87, $67, $68 ; CPU:$8B40 PRG:8B40 20 64 65 05 63 81 6A 0B FF 81 69 06 63 87 67 68 - .byte $1F, $20, $21, $22, $66, $03, $FF, $84, $4E, $41, $4D, $45, $02, $FF, $82, $42 ; CPU:$8B50 PRG:8B50 1F 20 21 22 66 03 FF 84 4E 41 4D 45 02 FF 82 42 - .byte $55, $02, $42, $82, $4C, $45, $04, $FF, $85, $53, $43, $4F, $52, $45, $02, $FF ; CPU:$8B60 PRG:8B60 55 02 42 82 4C 45 04 FF 85 53 43 4F 52 45 02 FF - .byte $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60 ; CPU:$8B70 PRG:8B70 86 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 22 60 - .byte $FF, $31, $6B, $FF, $59, $45, $48, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F ; CPU:$8B80 PRG:8B80 FF 31 6B FF 59 45 48 13 FF 86 62 21 22 1F 20 5F - .byte $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $32, $6B, $FF, $43, $48, $45 ; CPU:$8B90 PRG:8B90 1A FF 8D 61 1F 20 21 22 60 FF 32 6B FF 43 48 45 - .byte $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21 ; CPU:$8BA0 PRG:8BA0 13 FF 86 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 - .byte $22, $60, $FF, $33, $6B, $FF, $54, $52, $49, $13, $FF, $86, $62, $21, $22, $1F ; CPU:$8BB0 PRG:8BB0 22 60 FF 33 6B FF 54 52 49 13 FF 86 62 21 22 1F - .byte $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $34, $6B, $FF, $48 ; CPU:$8BC0 PRG:8BC0 20 5F 1A FF 8D 61 1F 20 21 22 60 FF 34 6B FF 48 - .byte $6B, $59, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F ; CPU:$8BD0 PRG:8BD0 6B 59 13 FF 86 62 21 22 1F 20 5F 1A FF 8D 61 1F - .byte $20, $21, $22, $60, $FF, $35, $6B, $FF, $59, $41, $4E, $13, $FF, $86, $62, $21 ; CPU:$8BE0 PRG:8BE0 20 21 22 60 FF 35 6B FF 59 41 4E 13 FF 86 62 21 - .byte $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $36, $6B ; CPU:$8BF0 PRG:8BF0 22 1F 20 5F 1A FF 8D 61 1F 20 21 22 60 FF 36 6B - .byte $FF, $4A, $41, $43, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D ; CPU:$8C00 PRG:8C00 FF 4A 41 43 13 FF 86 62 21 22 1F 20 5F 1A FF 8D - .byte $61, $1F, $20, $21, $22, $60, $FF, $37, $6B, $FF, $44, $6B, $48, $13, $FF, $86 ; CPU:$8C10 PRG:8C10 61 1F 20 21 22 60 FF 37 6B FF 44 6B 48 13 FF 86 - .byte $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF ; CPU:$8C20 PRG:8C20 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 22 60 FF - .byte $38, $6B, $FF, $54, $49, $4E, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A ; CPU:$8C30 PRG:8C30 38 6B FF 54 49 4E 13 FF 86 62 21 22 1F 20 5F 1A - .byte $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $39, $6B, $FF, $42, $41, $42, $13 ; CPU:$8C40 PRG:8C40 FF 8D 61 1F 20 21 22 60 FF 39 6B FF 42 41 42 13 - .byte $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22 ; CPU:$8C50 PRG:8C50 FF 86 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 22 - .byte $60, $FF, $31, $30, $6B, $4B, $41, $54, $13, $FF, $87, $62, $21, $22, $1F, $20 ; CPU:$8C60 PRG:8C60 60 FF 31 30 6B 4B 41 54 13 FF 87 62 21 22 1F 20 - .byte $6E, $6C, $19, $6D, $A3, $6F, $1F, $20, $21, $22, $60, $21, $22, $21, $22, $21 ; CPU:$8C70 PRG:8C70 6E 6C 19 6D A3 6F 1F 20 21 22 60 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8C80 PRG:8C80 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 - .byte $22, $21, $22, $21, $22, $62, $21, $22, $11, $FF, $06, $5A, $02, $FF, $06, $5A ; CPU:$8C90 PRG:8C90 22 21 22 21 22 62 21 22 11 FF 06 5A 02 FF 06 5A - .byte $02, $FF, $06, $5A, $02, $FF, $06, $5A, $02, $FF, $06, $5A, $09, $FF, $FF, $FF ; CPU:$8CA0 PRG:8CA0 02 FF 06 5A 02 FF 06 5A 02 FF 06 5A 09 FF FF FF - .byte $FF, $20, $00, $46, $FF, $83, $50, $4C, $41, $02, $4E, $85, $45, $44, $FF, $42 ; CPU:$8CB0 PRG:8CB0 FF 20 00 46 FF 83 50 4C 41 02 4E 85 45 44 FF 42 - .byte $59, $16, $FF, $8B, $54, $52, $49, $43, $49, $41, $FF, $43, $48, $45, $4E, $35 ; CPU:$8CC0 PRG:8CC0 59 16 FF 8B 54 52 49 43 49 41 FF 43 48 45 4E 35 - .byte $FF, $86, $50, $52, $4F, $47, $52, $41, $02, $4D, $85, $45, $44, $FF, $42, $59 ; CPU:$8CD0 PRG:8CD0 FF 86 50 52 4F 47 52 41 02 4D 85 45 44 FF 42 59 - .byte $13, $FF, $8B, $53, $49, $4C, $56, $45, $52, $53, $FF, $4C, $49, $4E, $35, $FF ; CPU:$8CE0 PRG:8CE0 13 FF 8B 53 49 4C 56 45 52 53 FF 4C 49 4E 35 FF - .byte $8A, $47, $52, $41, $50, $48, $49, $43, $FF, $42, $59, $16, $FF, $8A, $4B, $41 ; CPU:$8CF0 PRG:8CF0 8A 47 52 41 50 48 49 43 FF 42 59 16 FF 8A 4B 41 - .byte $54, $48, $59, $FF, $43, $48, $45, $4E, $36, $FF, $90, $41, $52, $54, $FF, $44 ; CPU:$8D00 PRG:8D00 54 48 59 FF 43 48 45 4E 36 FF 90 41 52 54 FF 44 - .byte $49, $52, $45, $43, $54, $49, $4F, $4E, $FF, $42, $59, $10, $FF, $8A, $50, $4F ; CPU:$8D10 PRG:8D10 49 52 45 43 54 49 4F 4E FF 42 59 10 FF 8A 50 4F - .byte $4E, $59, $FF, $43, $48, $49, $4F, $55, $36, $FF, $88, $4D, $55, $53, $49, $43 ; CPU:$8D20 PRG:8D20 4E 59 FF 43 48 49 4F 55 36 FF 88 4D 55 53 49 43 - .byte $FF, $42, $59, $18, $FF, $82, $4B, $4F, $02, $53, $88, $45, $4C, $FF, $48, $55 ; CPU:$8D30 PRG:8D30 FF 42 59 18 FF 82 4B 4F 02 53 88 45 4C FF 48 55 - .byte $41, $4E, $47, $34, $FF, $89, $54, $48, $41, $4E, $4B, $53, $FF, $54, $4F, $17 ; CPU:$8D40 PRG:8D40 41 4E 47 34 FF 89 54 48 41 4E 4B 53 FF 54 4F 17 - .byte $FF, $88, $4A, $41, $43, $4B, $FF, $59, $45, $48, $38, $FF, $85, $42, $47, $4D ; CPU:$8D50 PRG:8D50 FF 88 4A 41 43 4B FF 59 45 48 38 FF 85 42 47 4D - .byte $40, $8E, $1B, $FF, $92, $57, $41, $56, $49, $4E, $47, $FF, $55, $50, $FF, $41 ; CPU:$8D60 PRG:8D60 40 8E 1B FF 92 57 41 56 49 4E 47 FF 55 50 FF 41 - .byte $4E, $44, $FF, $44, $4F, $57, $4E, $2E, $FF, $85, $42, $47, $4D, $40, $8F, $1B ; CPU:$8D70 PRG:8D70 4E 44 FF 44 4F 57 4E 2E FF 85 42 47 4D 40 8F 1B - .byte $FF, $87, $42, $4C, $4F, $57, $FF, $42, $55, $02, $42, $83, $4C, $45, $53, $34 ; CPU:$8D80 PRG:8D80 FF 87 42 4C 4F 57 FF 42 55 02 42 83 4C 45 53 34 - .byte $FF, $85, $42, $47, $4D, $40, $7C, $1B, $FF, $90, $57, $4F, $4E, $44, $45, $52 ; CPU:$8D90 PRG:8D90 FF 85 42 47 4D 40 7C 1B FF 90 57 4F 4E 44 45 52 - .byte $46, $55, $4C, $FF, $53, $45, $41, $42, $45, $44, $77, $FF, $13, $FF, $FF, $FF ; CPU:$8DA0 PRG:8DA0 46 55 4C FF 53 45 41 42 45 44 77 FF 13 FF FF FF - .byte $FF, $24, $00, $66, $FF, $81, $FB, $06, $FA, $83, $01, $02, $03, $03, $FA, $84 ; CPU:$8DB0 PRG:8DB0 FF 24 00 66 FF 81 FB 06 FA 83 01 02 03 03 FA 84 - .byte $04, $05, $06, $07, $02, $FA, $81, $F9, $0C, $FF, $81, $FC, $06, $11, $83, $08 ; CPU:$8DC0 PRG:8DC0 04 05 06 07 02 FA 81 F9 0C FF 81 FC 06 11 83 08 - .byte $09, $0A, $03, $11, $84, $0B, $0C, $0D, $0E, $02, $11, $81, $FD, $0C, $FF, $84 ; CPU:$8DD0 PRG:8DD0 09 0A 03 11 84 0B 0C 0D 0E 02 11 81 FD 0C FF 84 - .byte $FC, $11, $0F, $10, $02, $11, $84, $12, $13, $14, $15, $03, $11, $84, $17, $18 ; CPU:$8DE0 PRG:8DE0 FC 11 0F 10 02 11 84 12 13 14 15 03 11 84 17 18 - .byte $19, $1A, $02, $11, $81, $FD, $0C, $FF, $8C, $FC, $11, $1B, $1C, $1D, $1E, $1F ; CPU:$8DF0 PRG:8DF0 19 1A 02 11 81 FD 0C FF 8C FC 11 1B 1C 1D 1E 1F - .byte $20, $21, $22, $23, $24, $02, $11, $82, $26, $27, $03, $11, $81, $FD, $0C, $FF ; CPU:$8E00 PRG:8E00 20 21 22 23 24 02 11 82 26 27 03 11 81 FD 0C FF - .byte $90, $FC, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $32, $33, $11, $35 ; CPU:$8E10 PRG:8E10 90 FC 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 11 35 - .byte $36, $03, $11, $81, $FD, $0C, $FF, $94, $FC, $37, $38, $39, $3A, $3B, $3C, $3D ; CPU:$8E20 PRG:8E20 36 03 11 81 FD 0C FF 94 FC 37 38 39 3A 3B 3C 3D - .byte $3E, $3F, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $0C, $FF, $94, $FC ; CPU:$8E30 PRG:8E30 3E 3F 40 41 42 43 44 45 46 47 48 49 0C FF 94 FC - .byte $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $5A ; CPU:$8E40 PRG:8E40 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A - .byte $5B, $5C, $5D, $0C, $FF, $94, $5E, $5F, $60, $61, $62, $63, $64, $65, $66, $67 ; CPU:$8E50 PRG:8E50 5B 5C 5D 0C FF 94 5E 5F 60 61 62 63 64 65 66 67 - .byte $68, $69, $6A, $6B, $6C, $6D, $6E, $6F, $70, $71, $0C, $FF, $94, $72, $73, $74 ; CPU:$8E60 PRG:8E60 68 69 6A 6B 6C 6D 6E 6F 70 71 0C FF 94 72 73 74 - .byte $75, $76, $77, $78, $79, $7A, $7B, $7C, $7D, $7E, $7F, $80, $81, $82, $83, $84 ; CPU:$8E70 PRG:8E70 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 - .byte $85, $0C, $FF, $89, $86, $87, $88, $89, $8A, $8B, $8C, $8D, $8E, $04, $8F, $87 ; CPU:$8E80 PRG:8E80 85 0C FF 89 86 87 88 89 8A 8B 8C 8D 8E 04 8F 87 - .byte $93, $94, $95, $96, $97, $98, $99, $0C, $FF, $89, $9A, $9B, $9C, $9D, $9E, $9F ; CPU:$8E90 PRG:8E90 93 94 95 96 97 98 99 0C FF 89 9A 9B 9C 9D 9E 9F - .byte $A0, $A1, $A2, $03, $8F, $88, $A6, $A7, $A8, $A9, $EF, $F0, $F1, $F8, $0C, $FF ; CPU:$8EA0 PRG:8EA0 A0 A1 A2 03 8F 88 A6 A7 A8 A9 EF F0 F1 F8 0C FF - .byte $89, $AA, $AB, $AC, $AD, $AE, $AF, $B0, $B1, $B2, $02, $8F, $83, $B5, $B6, $B7 ; CPU:$8EB0 PRG:8EB0 89 AA AB AC AD AE AF B0 B1 B2 02 8F 83 B5 B6 B7 - .byte $05, $16, $81, $F8, $0C, $FF, $8D, $B8, $B9, $BA, $BB, $BC, $BD, $BE, $BF, $C0 ; CPU:$8EC0 PRG:8EC0 05 16 81 F8 0C FF 8D B8 B9 BA BB BC BD BE BF C0 - .byte $8F, $C2, $C3, $C4, $06, $16, $81, $F8, $0C, $FF, $8C, $C5, $C6, $C7, $C8, $C9 ; CPU:$8ED0 PRG:8ED0 8F C2 C3 C4 06 16 81 F8 0C FF 8C C5 C6 C7 C8 C9 - .byte $CA, $CB, $CC, $CD, $CE, $CF, $D0, $07, $16, $81, $F8, $0C, $FF, $8A, $D1, $D2 ; CPU:$8EE0 PRG:8EE0 CA CB CC CD CE CF D0 07 16 81 F8 0C FF 8A D1 D2 - .byte $D3, $D4, $D5, $D6, $D7, $D8, $F2, $F3, $09, $16, $81, $F8, $0C, $FF, $88, $D9 ; CPU:$8EF0 PRG:8EF0 D3 D4 D5 D6 D7 D8 F2 F3 09 16 81 F8 0C FF 88 D9 - .byte $DA, $DB, $DC, $DD, $DE, $DF, $E0, $0B, $16, $81, $F8, $0C, $FF, $83, $E1, $E2 ; CPU:$8F00 PRG:8F00 DA DB DC DD DE DF E0 0B 16 81 F8 0C FF 83 E1 E2 - .byte $E3, $10, $16, $81, $F8, $0C, $FF, $81, $F5, $12, $F6, $81, $F7, $77, $FF, $77 ; CPU:$8F10 PRG:8F10 E3 10 16 81 F8 0C FF 81 F5 12 F6 81 F7 77 FF 77 - .byte $FF, $3B, $FF, $81, $3F, $06, $FF, $83, $CF, $03, $0C, $05, $FF, $84, $F3, $A0 ; CPU:$8F20 PRG:8F20 FF 3B FF 81 3F 06 FF 83 CF 03 0C 05 FF 84 F3 A0 - .byte $00, $0F, $03, $FF, $86, $BF, $AF, $AB, $56, $55, $DD, $02, $FF, $82, $7B, $5A ; CPU:$8F30 PRG:8F30 00 0F 03 FF 86 BF AF AB 56 55 DD 02 FF 82 7B 5A - .byte $03, $55, $81, $DD, $02, $FF, $81, $F7, $04, $F5, $81, $FD, $11, $FF, $FF, $FF ; CPU:$8F40 PRG:8F40 03 55 81 DD 02 FF 81 F7 04 F5 81 FD 11 FF FF FF - .byte $FF, $24, $00, $66, $FF, $81, $C5, $09, $C0, $82, $01, $02, $03, $C0, $82, $DB ; CPU:$8F50 PRG:8F50 FF 24 00 66 FF 81 C5 09 C0 82 01 02 03 C0 82 DB - .byte $DC, $02, $C0, $81, $BF, $0C, $FF, $82, $C6, $F9, $06, $76, $85, $D1, $03, $04 ; CPU:$8F60 PRG:8F60 DC 02 C0 81 BF 0C FF 82 C6 F9 06 76 85 D1 03 04 - .byte $05, $06, $02, $76, $82, $DD, $DE, $02, $76, $81, $BE, $0C, $FF, $83, $C6, $76 ; CPU:$8F70 PRG:8F70 05 06 02 76 82 DD DE 02 76 81 BE 0C FF 83 C6 76 - .byte $F9, $04, $76, $8D, $C7, $07, $08, $09, $0A, $0B, $76, $D9, $DF, $E0, $DA, $76 ; CPU:$8F80 PRG:8F80 F9 04 76 8D C7 07 08 09 0A 0B 76 D9 DF E0 DA 76 - .byte $BE, $0C, $FF, $81, $C6, $06, $76, $8A, $F9, $0C, $0D, $0E, $0F, $10, $76, $E1 ; CPU:$8F90 PRG:8F90 BE 0C FF 81 C6 06 76 8A F9 0C 0D 0E 0F 10 76 E1 - .byte $E2, $E3, $02, $76, $81, $BE, $0C, $FF, $85, $C6, $F9, $76, $16, $17, $04, $76 ; CPU:$8FA0 PRG:8FA0 E2 E3 02 76 81 BE 0C FF 85 C6 F9 76 16 17 04 76 - .byte $8B, $11, $12, $13, $14, $15, $E4, $E5, $E6, $E7, $76, $BE, $0C, $FF, $81, $C6 ; CPU:$8FB0 PRG:8FB0 8B 11 12 13 14 15 E4 E5 E6 E7 76 BE 0C FF 81 C6 - .byte $02, $76, $91, $18, $19, $76, $F9, $76, $28, $29, $2A, $2B, $2C, $2D, $E8, $E9 ; CPU:$8FC0 PRG:8FC0 02 76 91 18 19 76 F9 76 28 29 2A 2B 2C 2D E8 E9 - .byte $EA, $EB, $76, $BE, $0C, $FF, $81, $C6, $02, $76, $83, $1A, $1B, $1C, $02, $76 ; CPU:$8FD0 PRG:8FD0 EA EB 76 BE 0C FF 81 C6 02 76 83 1A 1B 1C 02 76 - .byte $8C, $35, $36, $37, $38, $39, $3A, $EC, $ED, $EE, $EF, $76, $BE, $0C, $FF, $87 ; CPU:$8FE0 PRG:8FE0 8C 35 36 37 38 39 3A EC ED EE EF 76 BE 0C FF 87 - .byte $1D, $1E, $1F, $20, $21, $22, $23, $02, $76, $8B, $24, $25, $26, $27, $2E, $76 ; CPU:$8FF0 PRG:8FF0 1D 1E 1F 20 21 22 23 02 76 8B 24 25 26 27 2E 76 - .byte $F0, $F1, $F2, $76, $BE, $0C, $FF, $94, $2F, $30, $31, $32, $33, $34, $D8, $76 ; CPU:$9000 PRG:9000 F0 F1 F2 76 BE 0C FF 94 2F 30 31 32 33 34 D8 76 - .byte $F5, $3B, $3C, $3D, $3E, $3F, $40, $76, $F3, $F4, $76, $BE, $0C, $FF, $90, $41 ; CPU:$9010 PRG:9010 F5 3B 3C 3D 3E 3F 40 76 F3 F4 76 BE 0C FF 90 41 - .byte $42, $43, $44, $45, $46, $D7, $F6, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $03 ; CPU:$9020 PRG:9020 42 43 44 45 46 D7 F6 47 48 49 4A 4B 4C 4D 4E 03 - .byte $76, $81, $BE, $0C, $FF, $90, $D3, $4F, $50, $51, $52, $53, $76, $54, $55, $56 ; CPU:$9030 PRG:9030 76 81 BE 0C FF 90 D3 4F 50 51 52 53 76 54 55 56 - .byte $57, $58, $59, $5A, $5B, $5C, $03, $76, $81, $BE, $0C, $FF, $91, $C6, $76, $5D ; CPU:$9040 PRG:9040 57 58 59 5A 5B 5C 03 76 81 BE 0C FF 91 C6 76 5D - .byte $5E, $5F, $60, $61, $62, $63, $64, $65, $66, $67, $68, $69, $6A, $6B, $02, $76 ; CPU:$9050 PRG:9050 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 02 76 - .byte $81, $BE, $0C, $FF, $8B, $C6, $76, $6C, $6D, $6E, $6F, $70, $71, $72, $73, $74 ; CPU:$9060 PRG:9060 81 BE 0C FF 8B C6 76 6C 6D 6E 6F 70 71 72 73 74 - .byte $03, $75, $86, $78, $79, $7A, $7B, $7C, $BE, $0C, $FF, $94, $C6, $7D, $7E, $7F ; CPU:$9070 PRG:9070 03 75 86 78 79 7A 7B 7C BE 0C FF 94 C6 7D 7E 7F - .byte $80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $8A, $8B, $8C, $8D, $8E, $BE ; CPU:$9080 PRG:9080 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E BE - .byte $0C, $FF, $94, $C6, $8F, $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $9A ; CPU:$9090 PRG:9090 0C FF 94 C6 8F 90 91 92 93 94 95 96 97 98 99 9A - .byte $9B, $9C, $9D, $9E, $75, $A0, $A1, $0C, $FF, $94, $C6, $A2, $A3, $A4, $A5, $A6 ; CPU:$90A0 PRG:90A0 9B 9C 9D 9E 75 A0 A1 0C FF 94 C6 A2 A3 A4 A5 A6 - .byte $A7, $A8, $A9, $AA, $AB, $AC, $AD, $AE, $AF, $B0, $75, $B3, $B4, $B2, $0C, $FF ; CPU:$90B0 PRG:90B0 A7 A8 A9 AA AB AC AD AE AF B0 75 B3 B4 B2 0C FF - .byte $8A, $F7, $B5, $B6, $B7, $B8, $B9, $BA, $BB, $BC, $BD, $03, $75, $87, $C1, $C2 ; CPU:$90C0 PRG:90C0 8A F7 B5 B6 B7 B8 B9 BA BB BC BD 03 75 87 C1 C2 - .byte $C3, $C4, $B5, $B6, $9F, $0C, $FF, $8A, $D2, $C8, $C9, $CA, $CB, $CC, $CD, $CE ; CPU:$90D0 PRG:90D0 C3 C4 B5 B6 9F 0C FF 8A D2 C8 C9 CA CB CC CD CE - .byte $CF, $D0, $03, $77, $87, $D4, $D5, $D6, $F8, $C8, $C9, $B1, $77, $FF, $77, $FF ; CPU:$90E0 PRG:90E0 CF D0 03 77 87 D4 D5 D6 F8 C8 C9 B1 77 FF 77 FF - .byte $3C, $FF, $81, $CF, $05, $FF, $84, $BF, $33, $00, $AA, $04, $FF, $84, $AA, $23 ; CPU:$90F0 PRG:90F0 3C FF 81 CF 05 FF 84 BF 33 00 AA 04 FF 84 AA 23 - .byte $00, $AA, $04, $FF, $84, $AA, $A7, $52, $DC, $04, $FF, $84, $FE, $F7, $55, $D5 ; CPU:$9100 PRG:9100 00 AA 04 FF 84 AA A7 52 DC 04 FF 84 FE F7 55 D5 - .byte $1A, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $D9, $09, $DA, $82 ; CPU:$9110 PRG:9110 1A FF FF FF FF 24 00 77 FF 0F FF 81 D9 09 DA 82 - .byte $02, $03, $06, $DA, $81, $DB, $0D, $FF, $81, $DD, $08, $01, $85, $C5, $04, $05 ; CPU:$9120 PRG:9120 02 03 06 DA 81 DB 0D FF 81 DD 08 01 85 C5 04 05 - .byte $01, $D8, $04, $01, $81, $DC, $0D, $FF, $81, $DD, $08, $01, $84, $06, $07, $08 ; CPU:$9130 PRG:9130 01 D8 04 01 81 DC 0D FF 81 DD 08 01 84 06 07 08 - .byte $09, $05, $01, $81, $DC, $0D, $FF, $81, $DD, $08, $01, $84, $0D, $0C, $0B, $0A ; CPU:$9140 PRG:9140 09 05 01 81 DC 0D FF 81 DD 08 01 84 0D 0C 0B 0A - .byte $05, $01, $81, $DC, $0D, $FF, $81, $DD, $08, $01, $84, $0E, $0F, $10, $11, $02 ; CPU:$9150 PRG:9150 05 01 81 DC 0D FF 81 DD 08 01 84 0E 0F 10 11 02 - .byte $01, $84, $86, $87, $88, $89, $0D, $FF, $81, $DD, $04, $01, $81, $D8, $02, $01 ; CPU:$9160 PRG:9160 01 84 86 87 88 89 0D FF 81 DD 04 01 81 D8 02 01 - .byte $85, $16, $15, $14, $13, $12, $02, $01, $84, $8A, $8B, $8C, $8D, $0D, $FF, $81 ; CPU:$9170 PRG:9170 85 16 15 14 13 12 02 01 84 8A 8B 8C 8D 0D FF 81 - .byte $DD, $05, $01, $8D, $D8, $23, $17, $18, $19, $1A, $1B, $1C, $01, $8E, $8F, $90 ; CPU:$9180 PRG:9180 DD 05 01 8D D8 23 17 18 19 1A 1B 1C 01 8E 8F 90 - .byte $91, $0D, $FF, $83, $DD, $01, $D8, $03, $01, $88, $D8, $24, $22, $21, $20, $1F ; CPU:$9190 PRG:9190 91 0D FF 83 DD 01 D8 03 01 88 D8 24 22 21 20 1F - .byte $1E, $1D, $02, $01, $83, $92, $93, $DC, $0D, $FF, $83, $DD, $01, $D8, $02, $01 ; CPU:$91A0 PRG:91A0 1E 1D 02 01 83 92 93 DC 0D FF 83 DD 01 D8 02 01 - .byte $8E, $37, $25, $26, $27, $28, $29, $2A, $2B, $2C, $D8, $01, $95, $94, $DC, $0D ; CPU:$91B0 PRG:91B0 8E 37 25 26 27 28 29 2A 2B 2C D8 01 95 94 DC 0D - .byte $FF, $93, $DD, $CC, $C9, $C8, $38, $36, $35, $34, $33, $32, $31, $30, $2F, $2D ; CPU:$91C0 PRG:91C0 FF 93 DD CC C9 C8 38 36 35 34 33 32 31 30 2F 2D - .byte $2E, $96, $97, $98, $99, $0D, $FF, $93, $D1, $CD, $CA, $C7, $39, $3A, $3B, $3C ; CPU:$91D0 PRG:91D0 2E 96 97 98 99 0D FF 93 D1 CD CA C7 39 3A 3B 3C - .byte $3D, $3E, $3F, $40, $41, $42, $43, $9D, $9C, $9B, $9A, $0D, $FF, $93, $D2, $CE ; CPU:$91E0 PRG:91E0 3D 3E 3F 40 41 42 43 9D 9C 9B 9A 0D FF 93 D2 CE - .byte $CB, $C6, $4E, $4D, $4C, $4B, $4A, $49, $48, $47, $46, $45, $44, $5B, $5C, $9E ; CPU:$91F0 PRG:91F0 CB C6 4E 4D 4C 4B 4A 49 48 47 46 45 44 5B 5C 9E - .byte $9F, $0D, $FF, $93, $D3, $D0, $A6, $AD, $4F, $50, $51, $52, $7D, $54, $55, $56 ; CPU:$9200 PRG:9200 9F 0D FF 93 D3 D0 A6 AD 4F 50 51 52 7D 54 55 56 - .byte $57, $58, $59, $5A, $5D, $AE, $AF, $0D, $FF, $93, $D4, $A8, $A4, $A5, $6C, $6B ; CPU:$9210 PRG:9210 57 58 59 5A 5D AE AF 0D FF 93 D4 A8 A4 A5 6C 6B - .byte $6A, $69, $68, $67, $66, $65, $64, $63, $62, $5F, $5E, $B0, $B1, $0D, $FF, $93 ; CPU:$9220 PRG:9220 6A 69 68 67 66 65 64 63 62 5F 5E B0 B1 0D FF 93 - .byte $D5, $A9, $A3, $A7, $6D, $6E, $6F, $70, $71, $72, $73, $74, $75, $76, $77, $60 ; CPU:$9230 PRG:9230 D5 A9 A3 A7 6D 6E 6F 70 71 72 73 74 75 76 77 60 - .byte $61, $C1, $C2, $0D, $FF, $93, $D6, $AA, $AB, $A0, $78, $79, $7A, $7B, $7C, $85 ; CPU:$9240 PRG:9240 61 C1 C2 0D FF 93 D6 AA AB A0 78 79 7A 7B 7C 85 - .byte $7E, $7F, $80, $81, $82, $83, $84, $C0, $C3, $0D, $FF, $93, $CF, $AC, $D7, $A1 ; CPU:$9250 PRG:9250 7E 7F 80 81 82 83 84 C0 C3 0D FF 93 CF AC D7 A1 - .byte $B2, $B3, $B4, $B5, $B6, $B7, $B8, $B9, $BA, $BB, $BC, $BD, $BE, $BF, $C4, $77 ; CPU:$9260 PRG:9260 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C4 77 - .byte $FF, $77, $FF, $4E, $FF, $82, $BB, $FE, $03, $FF, $85, $7F, $CC, $FF, $8B, $EF ; CPU:$9270 PRG:9270 FF 77 FF 4E FF 82 BB FE 03 FF 85 7F CC FF 8B EF - .byte $02, $FF, $85, $7F, $55, $0F, $FF, $00, $03, $FF, $82, $F7, $F5, $15, $FF, $FF ; CPU:$9280 PRG:9280 02 FF 85 7F 55 0F FF 00 03 FF 82 F7 F5 15 FF FF - .byte $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $E0, $08, $E1, $83, $84, $85, $9B ; CPU:$9290 PRG:9290 FF FF 24 00 77 FF 0F FF 81 E0 08 E1 83 84 85 9B - .byte $04, $E1, $83, $C1, $D5, $D6, $0D, $FF, $86, $E2, $DE, $17, $36, $37, $E8, $02 ; CPU:$92A0 PRG:92A0 04 E1 83 C1 D5 D6 0D FF 86 E2 DE 17 36 37 E8 02 - .byte $DE, $86, $6C, $83, $86, $9A, $9C, $AE, $02, $DE, $83, $C2, $D4, $D7, $0D, $FF ; CPU:$92B0 PRG:92B0 DE 86 6C 83 86 9A 9C AE 02 DE 83 C2 D4 D7 0D FF - .byte $8E, $E2, $DE, $18, $35, $38, $51, $DE, $E8, $6D, $82, $87, $99, $9D, $E8, $02 ; CPU:$92C0 PRG:92C0 8E E2 DE 18 35 38 51 DE E8 6D 82 87 99 9D E8 02 - .byte $DE, $83, $C3, $D3, $D8, $0D, $FF, $93, $E2, $DE, $19, $34, $39, $50, $DE, $E8 ; CPU:$92D0 PRG:92D0 DE 83 C3 D3 D8 0D FF 93 E2 DE 19 34 39 50 DE E8 - .byte $DE, $81, $88, $98, $9E, $E8, $AF, $C0, $C4, $D2, $E3, $0D, $FF, $93, $E2, $16 ; CPU:$92E0 PRG:92E0 DE 81 88 98 9E E8 AF C0 C4 D2 E3 0D FF 93 E2 16 - .byte $1A, $33, $3A, $E8, $52, $6B, $6E, $80, $89, $97, $9F, $E7, $B0, $BF, $C5, $D1 ; CPU:$92F0 PRG:92F0 1A 33 3A E8 52 6B 6E 80 89 97 9F E7 B0 BF C5 D1 - .byte $E3, $0D, $FF, $8B, $01, $15, $1B, $32, $3B, $E7, $53, $6A, $6F, $DE, $8A, $02 ; CPU:$9300 PRG:9300 E3 0D FF 8B 01 15 1B 32 3B E7 53 6A 6F DE 8A 02 - .byte $DE, $86, $AD, $B1, $BE, $C6, $DE, $E3, $0D, $FF, $8A, $02, $14, $1C, $31, $3C ; CPU:$9310 PRG:9310 DE 86 AD B1 BE C6 DE E3 0D FF 8A 02 14 1C 31 3C - .byte $E8, $54, $69, $DE, $E8, $03, $DE, $86, $AC, $B2, $BD, $C7, $D0, $D9, $0D, $FF ; CPU:$9320 PRG:9320 E8 54 69 DE E8 03 DE 86 AC B2 BD C7 D0 D9 0D FF - .byte $8A, $E2, $13, $1D, $30, $3D, $4F, $55, $68, $70, $E8, $03, $DE, $86, $AB, $B3 ; CPU:$9330 PRG:9330 8A E2 13 1D 30 3D 4F 55 68 70 E8 03 DE 86 AB B3 - .byte $BC, $C8, $CF, $DA, $0D, $FF, $8E, $E2, $12, $1E, $2F, $3E, $4E, $56, $67, $71 ; CPU:$9340 PRG:9340 BC C8 CF DA 0D FF 8E E2 12 1E 2F 3E 4E 56 67 71 - .byte $7F, $8B, $96, $A0, $AA, $02, $DE, $83, $C9, $CE, $DB, $0D, $FF, $8B, $03, $11 ; CPU:$9350 PRG:9350 7F 8B 96 A0 AA 02 DE 83 C9 CE DB 0D FF 8B 03 11 - .byte $1F, $2E, $3F, $4D, $57, $66, $72, $7E, $8C, $02, $DE, $81, $E8, $02, $DE, $83 ; CPU:$9360 PRG:9360 1F 2E 3F 4D 57 66 72 7E 8C 02 DE 81 E8 02 DE 83 - .byte $E8, $DE, $DC, $0D, $FF, $8B, $04, $10, $20, $2D, $40, $4C, $58, $65, $73, $7D ; CPU:$9370 PRG:9370 E8 DE DC 0D FF 8B 04 10 20 2D 40 4C 58 65 73 7D - .byte $8D, $02, $DE, $81, $E8, $02, $DE, $83, $E8, $DE, $E3, $0D, $FF, $8A, $E2, $0F ; CPU:$9380 PRG:9380 8D 02 DE 81 E8 02 DE 83 E8 DE E3 0D FF 8A E2 0F - .byte $21, $2C, $41, $4B, $59, $64, $74, $E8, $02, $DE, $87, $E8, $A9, $B4, $DE, $E8 ; CPU:$9390 PRG:9390 21 2C 41 4B 59 64 74 E8 02 DE 87 E8 A9 B4 DE E8 - .byte $DE, $E3, $0D, $FF, $8A, $05, $0E, $22, $2B, $42, $4A, $5A, $63, $75, $DE, $02 ; CPU:$93A0 PRG:93A0 DE E3 0D FF 8A 05 0E 22 2B 42 4A 5A 63 75 DE 02 - .byte $8E, $87, $E7, $A8, $B5, $DE, $E7, $DE, $E3, $0D, $FF, $93, $06, $0D, $23, $2A ; CPU:$93B0 PRG:93B0 8E 87 E7 A8 B5 DE E7 DE E3 0D FF 93 06 0D 23 2A - .byte $DE, $49, $5B, $62, $76, $7C, $76, $7C, $A1, $A7, $B6, $BB, $CA, $CD, $DD, $0D ; CPU:$93C0 PRG:93C0 DE 49 5B 62 76 7C 76 7C A1 A7 B6 BB CA CD DD 0D - .byte $FF, $8D, $07, $0C, $24, $29, $43, $48, $5C, $61, $77, $7B, $90, $95, $A2, $02 ; CPU:$93D0 PRG:93D0 FF 8D 07 0C 24 29 43 48 5C 61 77 7B 90 95 A2 02 - .byte $FF, $82, $BA, $CB, $02, $CC, $0D, $FF, $8F, $08, $0B, $25, $28, $44, $47, $5D ; CPU:$93E0 PRG:93E0 FF 82 BA CB 02 CC 0D FF 8F 08 0B 25 28 44 47 5D - .byte $60, $DF, $7A, $91, $94, $A3, $A6, $B7, $03, $FF, $81, $EA, $0D, $FF, $90, $09 ; CPU:$93F0 PRG:93F0 60 DF 7A 91 94 A3 A6 B7 03 FF 81 EA 0D FF 90 09 - .byte $0A, $26, $27, $45, $46, $5E, $5F, $78, $79, $92, $93, $A4, $A5, $B8, $B9, $02 ; CPU:$9400 PRG:9400 0A 26 27 45 46 5E 5F 78 79 92 93 A4 A5 B8 B9 02 - .byte $E9, $81, $E4, $77, $FF, $77, $FF, $43, $FF, $81, $0C, $02, $FF, $87, $F7, $DD ; CPU:$9410 PRG:9410 E9 81 E4 77 FF 77 FF 43 FF 81 0C 02 FF 87 F7 DD - .byte $FF, $7F, $53, $98, $AA, $02, $FF, $81, $FC, $02, $FF, $84, $F7, $7B, $AA, $EE ; CPU:$9420 PRG:9420 FF 7F 53 98 AA 02 FF 81 FC 02 FF 84 F7 7B AA EE - .byte $05, $FF, $84, $55, $EA, $AE, $EF, $04, $FF, $81, $F5, $02, $FA, $81, $FE, $12 ; CPU:$9430 PRG:9430 05 FF 84 55 EA AE EF 04 FF 81 F5 02 FA 81 FE 12 - .byte $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $79, $02, $6D, $81, $69 ; CPU:$9440 PRG:9440 FF FF FF FF 24 00 77 FF 0F FF 81 79 02 6D 81 69 - .byte $06, $7A, $89, $19, $1A, $7A, $21, $22, $7A, $6B, $6D, $7B, $0D, $FF, $81, $80 ; CPU:$9450 PRG:9450 06 7A 89 19 1A 7A 21 22 7A 6B 6D 7B 0D FF 81 80 - .byte $02, $6C, $81, $68, $05, $84, $8A, $14, $13, $15, $1B, $20, $23, $84, $6A, $6C ; CPU:$9460 PRG:9460 02 6C 81 68 05 84 8A 14 13 15 1B 20 23 84 6A 6C - .byte $7C, $0D, $FF, $81, $80, $02, $6C, $90, $68, $B5, $01, $06, $07, $0C, $0D, $12 ; CPU:$9470 PRG:9470 7C 0D FF 81 80 02 6C 90 68 B5 01 06 07 0C 0D 12 - .byte $16, $1C, $1F, $24, $84, $6A, $6C, $7C, $0D, $FF, $81, $80, $02, $6C, $90, $68 ; CPU:$9480 PRG:9480 16 1C 1F 24 84 6A 6C 7C 0D FF 81 80 02 6C 90 68 - .byte $B3, $02, $05, $08, $0B, $0E, $11, $17, $1D, $1E, $25, $84, $6A, $6C, $7C, $0D ; CPU:$9490 PRG:9490 B3 02 05 08 0B 0E 11 17 1D 1E 25 84 6A 6C 7C 0D - .byte $FF, $81, $80, $02, $6C, $8B, $68, $B4, $03, $04, $09, $0A, $0F, $10, $18, $84 ; CPU:$94A0 PRG:94A0 FF 81 80 02 6C 8B 68 B4 03 04 09 0A 0F 10 18 84 - .byte $BA, $02, $84, $83, $6A, $6C, $7C, $0D, $FF, $81, $80, $02, $6C, $8B, $68, $84 ; CPU:$94B0 PRG:94B0 BA 02 84 83 6A 6C 7C 0D FF 81 80 02 6C 8B 68 84 - .byte $77, $78, $2A, $26, $27, $28, $29, $82, $83, $02, $84, $83, $6A, $6C, $7C, $0D ; CPU:$94C0 PRG:94C0 77 78 2A 26 27 28 29 82 83 02 84 83 6A 6C 7C 0D - .byte $FF, $81, $80, $02, $6C, $81, $68, $02, $84, $02, $2E, $85, $2B, $2C, $2D, $2E ; CPU:$94D0 PRG:94D0 FF 81 80 02 6C 81 68 02 84 02 2E 85 2B 2C 2D 2E - .byte $37, $03, $84, $83, $6A, $6C, $7C, $0D, $FF, $81, $80, $02, $6C, $81, $34, $02 ; CPU:$94E0 PRG:94E0 37 03 84 83 6A 6C 7C 0D FF 81 80 02 6C 81 34 02 - .byte $6E, $87, $31, $32, $33, $6E, $35, $36, $38, $03, $6E, $83, $6F, $6C, $7C, $0D ; CPU:$94F0 PRG:94F0 6E 87 31 32 33 6E 35 36 38 03 6E 83 6F 6C 7C 0D - .byte $FF, $82, $8D, $97, $02, $95, $8F, $94, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40 ; CPU:$9500 PRG:9500 FF 82 8D 97 02 95 8F 94 39 3A 3B 3C 3D 3E 3F 40 - .byte $41, $85, $86, $87, $A3, $B9, $0D, $FF, $93, $96, $98, $B1, $AB, $93, $4A, $49 ; CPU:$9510 PRG:9510 41 85 86 87 A3 B9 0D FF 93 96 98 B1 AB 93 4A 49 - .byte $48, $47, $46, $45, $44, $43, $42, $A5, $A6, $8E, $91, $B8, $0D, $FF, $93, $96 ; CPU:$9520 PRG:9520 48 47 46 45 44 43 42 A5 A6 8E 91 B8 0D FF 93 96 - .byte $99, $B0, $AC, $92, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53, $A4, $A7, $AA ; CPU:$9530 PRG:9530 99 B0 AC 92 4B 4C 4D 4E 4F 50 51 52 53 A4 A7 AA - .byte $8F, $B7, $0D, $FF, $93, $96, $9A, $AF, $AD, $81, $5C, $5B, $5A, $59, $58, $57 ; CPU:$9540 PRG:9540 8F B7 0D FF 93 96 9A AF AD 81 5C 5B 5A 59 58 57 - .byte $56, $55, $54, $88, $A8, $A9, $90, $B7, $0D, $FF, $93, $A2, $9B, $AE, $B2, $5D ; CPU:$9550 PRG:9550 56 55 54 88 A8 A9 90 B7 0D FF 93 A2 9B AE B2 5D - .byte $5E, $5F, $60, $61, $62, $63, $64, $65, $66, $89, $8A, $8B, $8C, $30, $0D, $FF ; CPU:$9560 PRG:9560 5E 5F 60 61 62 63 64 65 66 89 8A 8B 8C 30 0D FF - .byte $84, $A1, $67, $9D, $9E, $0A, $67, $82, $9F, $A0, $02, $67, $81, $2F, $0D, $FF ; CPU:$9570 PRG:9570 84 A1 67 9D 9E 0A 67 82 9F A0 02 67 81 2F 0D FF - .byte $84, $80, $6C, $71, $72, $0B, $6C, $81, $73, $02, $6C, $81, $B6, $0D, $FF, $84 ; CPU:$9580 PRG:9580 84 80 6C 71 72 0B 6C 81 73 02 6C 81 B6 0D FF 84 - .byte $80, $6C, $71, $72, $0B, $6C, $81, $74, $02, $6C, $81, $B6, $0D, $FF, $84, $7F ; CPU:$9590 PRG:9590 80 6C 71 72 0B 6C 81 74 02 6C 81 B6 0D FF 84 7F - .byte $7E, $75, $76, $0B, $7E, $81, $9C, $02, $7E, $81, $7D, $77, $FF, $77, $FF, $3E ; CPU:$95A0 PRG:95A0 7E 75 76 0B 7E 81 9C 02 7E 81 7D 77 FF 77 FF 3E - .byte $FF, $82, $33, $CC, $02, $FF, $82, $33, $CC, $02, $FF, $82, $33, $CC, $02, $FF ; CPU:$95B0 PRG:95B0 FF 82 33 CC 02 FF 82 33 CC 02 FF 82 33 CC 02 FF - .byte $82, $33, $0C, $02, $0F, $82, $03, $CC, $02, $FF, $81, $BB, $02, $AA, $83, $55 ; CPU:$95C0 PRG:95C0 82 33 0C 02 0F 82 03 CC 02 FF 81 BB 02 AA 83 55 - .byte $95, $ED, $02, $FF, $82, $7B, $6A, $03, $5A, $83, $EE, $FF, $FE, $05, $FA, $81 ; CPU:$95D0 PRG:95D0 95 ED 02 FF 82 7B 6A 03 5A 83 EE FF FE 05 FA 81 - .byte $FE, $11, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $A6, $05, $36 ; CPU:$95E0 PRG:95E0 FE 11 FF FF FF FF 24 00 77 FF 0F FF 81 A6 05 36 - .byte $04, $46, $04, $36, $85, $46, $B6, $B7, $B8, $49, $0D, $FF, $81, $9C, $05, $FF ; CPU:$95F0 PRG:95F0 04 46 04 36 85 46 B6 B7 B8 49 0D FF 81 9C 05 FF - .byte $84, $CA, $C7, $C8, $C9, $04, $FF, $85, $A7, $B2, $B3, $B4, $B5, $0D, $FF, $81 ; CPU:$9600 PRG:9600 84 CA C7 C8 C9 04 FF 85 A7 B2 B3 B4 B5 0D FF 81 - .byte $9C, $02, $FF, $81, $AF, $02, $FF, $84, $0C, $0D, $0E, $0F, $03, $FF, $86, $D0 ; CPU:$9610 PRG:9610 9C 02 FF 81 AF 02 FF 84 0C 0D 0E 0F 03 FF 86 D0 - .byte $B9, $BA, $BB, $BC, $BD, $0D, $FF, $8A, $9C, $04, $05, $06, $07, $FF, $08, $09 ; CPU:$9620 PRG:9620 B9 BA BB BC BD 0D FF 8A 9C 04 05 06 07 FF 08 09 - .byte $0A, $0B, $03, $FF, $86, $CF, $CE, $BE, $BF, $C0, $C1, $0D, $FF, $8A, $10, $11 ; CPU:$9630 PRG:9630 0A 0B 03 FF 86 CF CE BE BF C0 C1 0D FF 8A 10 11 - .byte $12, $13, $14, $FF, $15, $16, $17, $18, $03, $FF, $86, $CC, $CD, $C2, $C3, $C5 ; CPU:$9640 PRG:9640 12 13 14 FF 15 16 17 18 03 FF 86 CC CD C2 C3 C5 - .byte $6D, $0D, $FF, $8B, $19, $1A, $1B, $1C, $1D, $CB, $1E, $1F, $20, $21, $22, $02 ; CPU:$9650 PRG:9650 6D 0D FF 8B 19 1A 1B 1C 1D CB 1E 1F 20 21 22 02 - .byte $FF, $83, $33, $34, $35, $02, $FF, $81, $70, $0D, $FF, $90, $23, $24, $25, $26 ; CPU:$9660 PRG:9660 FF 83 33 34 35 02 FF 81 70 0D FF 90 23 24 25 26 - .byte $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $32, $02, $FF, $81, $70 ; CPU:$9670 PRG:9670 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 02 FF 81 70 - .byte $0D, $FF, $90, $C4, $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42 ; CPU:$9680 PRG:9680 0D FF 90 C4 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 - .byte $43, $44, $45, $02, $FF, $81, $70, $0D, $FF, $8F, $9C, $47, $48, $DC, $4A, $4B ; CPU:$9690 PRG:9690 43 44 45 02 FF 81 70 0D FF 8F 9C 47 48 DC 4A 4B - .byte $4C, $4D, $4E, $4F, $50, $51, $52, $53, $54, $03, $FF, $81, $70, $0D, $FF, $8F ; CPU:$96A0 PRG:96A0 4C 4D 4E 4F 50 51 52 53 54 03 FF 81 70 0D FF 8F - .byte $9C, $FF, $55, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, $60, $61, $03 ; CPU:$96B0 PRG:96B0 9C FF 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 03 - .byte $FF, $81, $70, $0D, $FF, $8F, $9C, $FF, $62, $63, $64, $65, $66, $67, $68, $69 ; CPU:$96C0 PRG:96C0 FF 81 70 0D FF 8F 9C FF 62 63 64 65 66 67 68 69 - .byte $6A, $6B, $6C, $03, $6E, $03, $FF, $81, $70, $0D, $FF, $8F, $9C, $FF, $6F, $03 ; CPU:$96D0 PRG:96D0 6A 6B 6C 03 6E 03 FF 81 70 0D FF 8F 9C FF 6F 03 - .byte $71, $72, $73, $74, $75, $76, $77, $03, $79, $03, $7B, $03, $FF, $81, $70, $0D ; CPU:$96E0 PRG:96E0 71 72 73 74 75 76 77 03 79 03 7B 03 FF 81 70 0D - .byte $FF, $8F, $9C, $FF, $7C, $7D, $7E, $7F, $80, $81, $82, $83, $84, $03, $86, $87 ; CPU:$96F0 PRG:96F0 FF 8F 9C FF 7C 7D 7E 7F 80 81 82 83 84 03 86 87 - .byte $88, $03, $FF, $81, $70, $0D, $FF, $81, $9C, $02, $FF, $8A, $89, $8A, $8B, $8C ; CPU:$9700 PRG:9700 88 03 FF 81 70 0D FF 81 9C 02 FF 8A 89 8A 8B 8C - .byte $8D, $8E, $8F, $90, $03, $92, $05, $FF, $81, $70, $0D, $FF, $81, $9C, $03, $FF ; CPU:$9710 PRG:9710 8D 8E 8F 90 03 92 05 FF 81 70 0D FF 81 9C 03 FF - .byte $89, $93, $94, $95, $96, $97, $98, $99, $9A, $9B, $05, $FF, $81, $70, $0D, $FF ; CPU:$9720 PRG:9720 89 93 94 95 96 97 98 99 9A 9B 05 FF 81 70 0D FF - .byte $81, $9C, $03, $FF, $89, $9D, $9E, $9F, $A0, $A1, $A2, $A3, $A4, $A5, $05, $FF ; CPU:$9730 PRG:9730 81 9C 03 FF 89 9D 9E 9F A0 A1 A2 A3 A4 A5 05 FF - .byte $81, $70, $0D, $FF, $81, $91, $03, $85, $89, $A8, $A9, $AA, $AB, $AC, $AD, $AE ; CPU:$9740 PRG:9740 81 70 0D FF 81 91 03 85 89 A8 A9 AA AB AC AD AE - .byte $03, $B0, $05, $85, $81, $7A, $77, $FF, $77, $FF, $43, $FF, $85, $5F, $AA, $BF ; CPU:$9750 PRG:9750 03 B0 05 85 81 7A 77 FF 77 FF 43 FF 85 5F AA BF - .byte $AA, $EE, $02, $FF, $85, $55, $D5, $3A, $BA, $AA, $04, $FF, $84, $FE, $33, $FF ; CPU:$9760 PRG:9760 AA EE 02 FF 85 55 D5 3A BA AA 04 FF 84 FE 33 FF - .byte $BB, $04, $FF, $83, $CF, $03, $CF, $06, $FF, $82, $F0, $FC, $13, $FF, $FF, $FF ; CPU:$9770 PRG:9770 BB 04 FF 83 CF 03 CF 06 FF 82 F0 FC 13 FF FF FF - .byte $FF, $24, $00, $77, $FF, $0F, $FF, $84, $EB, $EA, $D0, $D1, $02, $EA, $83, $CA ; CPU:$9780 PRG:9780 FF 24 00 77 FF 0F FF 84 EB EA D0 D1 02 EA 83 CA - .byte $C9, $C8, $02, $EA, $81, $B5, $06, $EA, $81, $E9, $0D, $FF, $8D, $EC, $01, $CF ; CPU:$9790 PRG:9790 C9 C8 02 EA 81 B5 06 EA 81 E9 0D FF 8D EC 01 CF - .byte $CC, $D3, $01, $C5, $C6, $C7, $01, $C1, $C0, $BF, $05, $01, $81, $E8, $0D, $FF ; CPU:$97A0 PRG:97A0 CC D3 01 C5 C6 C7 01 C1 C0 BF 05 01 81 E8 0D FF - .byte $8D, $EC, $01, $CE, $CB, $D2, $01, $C4, $C3, $C2, $ED, $BB, $BC, $BD, $05, $01 ; CPU:$97B0 PRG:97B0 8D EC 01 CE CB D2 01 C4 C3 C2 ED BB BC BD 05 01 - .byte $81, $E8, $0D, $FF, $81, $EC, $03, $01, $82, $90, $91, $04, $01, $89, $BA, $B9 ; CPU:$97C0 PRG:97C0 81 E8 0D FF 81 EC 03 01 82 90 91 04 01 89 BA B9 - .byte $B8, $AA, $03, $01, $EF, $01, $E8, $0D, $FF, $90, $EC, $01, $EE, $8D, $8C, $8A ; CPU:$97D0 PRG:97D0 B8 AA 03 01 EF 01 E8 0D FF 90 EC 01 EE 8D 8C 8A - .byte $8B, $01, $ED, $B4, $B3, $AF, $B7, $05, $06, $07, $02, $01, $81, $E8, $0D, $FF ; CPU:$97E0 PRG:97E0 8B 01 ED B4 B3 AF B7 05 06 07 02 01 81 E8 0D FF - .byte $81, $EC, $02, $01, $83, $8E, $88, $89, $03, $01, $8A, $B0, $B1, $B2, $0B, $0A ; CPU:$97F0 PRG:97F0 81 EC 02 01 83 8E 88 89 03 01 8A B0 B1 B2 0B 0A - .byte $09, $08, $AB, $01, $E8, $0D, $FF, $81, $EC, $03, $01, $8F, $92, $86, $85, $84 ; CPU:$9800 PRG:9800 09 08 AB 01 E8 0D FF 81 EC 03 01 8F 92 86 85 84 - .byte $01, $AD, $AC, $8F, $0D, $0E, $0F, $10, $11, $01, $E8, $0D, $FF, $81, $EC, $02 ; CPU:$9810 PRG:9810 01 AD AC 8F 0D 0E 0F 10 11 01 E8 0D FF 81 EC 02 - .byte $01, $90, $94, $7B, $7C, $7D, $7E, $7F, $04, $4E, $4F, $16, $15, $14, $13, $12 ; CPU:$9820 PRG:9820 01 90 94 7B 7C 7D 7E 7F 04 4E 4F 16 15 14 13 12 - .byte $01, $E8, $0D, $FF, $81, $EC, $02, $01, $90, $95, $72, $71, $70, $6F, $80, $93 ; CPU:$9830 PRG:9830 01 E8 0D FF 81 EC 02 01 90 95 72 71 70 6F 80 93 - .byte $23, $21, $1B, $1A, $19, $18, $17, $01, $E8, $0D, $FF, $93, $EC, $ED, $01, $96 ; CPU:$9840 PRG:9840 23 21 1B 1A 19 18 17 01 E8 0D FF 93 EC ED 01 96 - .byte $73, $6C, $6D, $6E, $82, $83, $24, $22, $20, $1F, $1E, $1D, $1C, $01, $E8, $0D ; CPU:$9850 PRG:9850 73 6C 6D 6E 82 83 24 22 20 1F 1E 1D 1C 01 E8 0D - .byte $FF, $81, $EC, $02, $01, $90, $97, $74, $6B, $6A, $62, $61, $81, $25, $26, $27 ; CPU:$9860 PRG:9860 FF 81 EC 02 01 90 97 74 6B 6A 62 61 81 25 26 27 - .byte $28, $29, $2A, $2B, $01, $E8, $0D, $FF, $93, $E6, $A1, $9D, $9C, $75, $99, $69 ; CPU:$9870 PRG:9870 28 29 2A 2B 01 E8 0D FF 93 E6 A1 9D 9C 75 99 69 - .byte $63, $5F, $60, $32, $31, $30, $2F, $2E, $2D, $2C, $01, $E8, $0D, $FF, $93, $E1 ; CPU:$9880 PRG:9880 63 5F 60 32 31 30 2F 2E 2D 2C 01 E8 0D FF 93 E1 - .byte $A0, $9E, $9B, $76, $79, $68, $64, $5E, $5B, $01, $38, $37, $36, $35, $34, $33 ; CPU:$9890 PRG:9890 A0 9E 9B 76 79 68 64 5E 5B 01 38 37 36 35 34 33 - .byte $4D, $E8, $0D, $FF, $93, $DF, $DE, $9F, $9A, $77, $78, $67, $65, $5D, $5A, $3F ; CPU:$98A0 PRG:98A0 4D E8 0D FF 93 DF DE 9F 9A 77 78 67 65 5D 5A 3F - .byte $3E, $3D, $3C, $3B, $3A, $39, $01, $E8, $0D, $FF, $93, $DC, $DD, $E0, $E2, $7A ; CPU:$98B0 PRG:98B0 3E 3D 3C 3B 3A 39 01 E8 0D FF 93 DC DD E0 E2 7A - .byte $A2, $A3, $A4, $5C, $59, $46, $45, $44, $43, $42, $41, $40, $01, $E8, $0D, $FF ; CPU:$98C0 PRG:98C0 A2 A3 A4 5C 59 46 45 44 43 42 41 40 01 E8 0D FF - .byte $93, $DB, $DA, $D9, $D8, $E5, $98, $A6, $A5, $A9, $58, $4A, $49, $48, $47, $52 ; CPU:$98D0 PRG:98D0 93 DB DA D9 D8 E5 98 A6 A5 A9 58 4A 49 48 47 52 - .byte $51, $50, $01, $E8, $0D, $FF, $88, $D5, $D4, $D6, $D7, $E3, $E4, $A7, $A8, $02 ; CPU:$98E0 PRG:98E0 51 50 01 E8 0D FF 88 D5 D4 D6 D7 E3 E4 A7 A8 02 - .byte $E7, $82, $4C, $4B, $02, $02, $85, $53, $54, $55, $56, $57, $77, $FF, $77, $FF ; CPU:$98F0 PRG:98F0 E7 82 4C 4B 02 02 85 53 54 55 56 57 77 FF 77 FF - .byte $43, $FF, $81, $BF, $07, $FF, $84, $56, $DD, $BB, $9A, $04, $FF, $84, $75, $55 ; CPU:$9900 PRG:9900 43 FF 81 BF 07 FF 84 56 DD BB 9A 04 FF 84 75 55 - .byte $67, $55, $03, $FF, $85, $33, $CB, $33, $00, $04, $06, $FF, $02, $F0, $12, $FF ; CPU:$9910 PRG:9910 67 55 03 FF 85 33 CB 33 00 04 06 FF 02 F0 12 FF - .byte $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $86, $DE, $DC, $E6, $87, $88, $89 ; CPU:$9920 PRG:9920 FF FF FF 24 00 77 FF 0F FF 86 DE DC E6 87 88 89 - .byte $05, $DC, $85, $8F, $90, $97, $DB, $E6, $02, $DC, $81, $DF, $0D, $FF, $81, $E1 ; CPU:$9930 PRG:9930 05 DC 85 8F 90 97 DB E6 02 DC 81 DF 0D FF 81 E1 - .byte $02, $01, $84, $04, $05, $06, $9C, $03, $01, $84, $83, $84, $85, $86, $02, $01 ; CPU:$9940 PRG:9940 02 01 84 04 05 06 9C 03 01 84 83 84 85 86 02 01 - .byte $83, $4A, $01, $DD, $0D, $FF, $87, $E1, $01, $8A, $07, $08, $09, $0A, $02, $01 ; CPU:$9950 PRG:9950 83 4A 01 DD 0D FF 87 E1 01 8A 07 08 09 0A 02 01 - .byte $86, $99, $82, $81, $80, $7F, $9B, $03, $01, $81, $DD, $0D, $FF, $8F, $E1, $01 ; CPU:$9960 PRG:9960 86 99 82 81 80 7F 9B 03 01 81 DD 0D FF 8F E1 01 - .byte $0B, $0C, $0D, $0E, $0F, $E5, $01, $96, $7B, $7C, $7D, $7E, $9A, $03, $01, $81 ; CPU:$9970 PRG:9970 0B 0C 0D 0E 0F E5 01 96 7B 7C 7D 7E 9A 03 01 81 - .byte $DD, $0D, $FF, $8F, $E1, $01, $10, $11, $12, $13, $14, $01, $DA, $01, $7A, $79 ; CPU:$9980 PRG:9980 DD 0D FF 8F E1 01 10 11 12 13 14 01 DA 01 7A 79 - .byte $76, $75, $E0, $03, $01, $81, $DD, $0D, $FF, $88, $E1, $01, $15, $16, $17, $18 ; CPU:$9990 PRG:9990 76 75 E0 03 01 81 DD 0D FF 88 E1 01 15 16 17 18 - .byte $19, $E8, $03, $01, $82, $78, $77, $05, $01, $81, $DD, $0D, $FF, $88, $E1, $01 ; CPU:$99A0 PRG:99A0 19 E8 03 01 82 78 77 05 01 81 DD 0D FF 88 E1 01 - .byte $1A, $1B, $1C, $1D, $1E, $E9, $02, $01, $86, $70, $71, $72, $73, $74, $DA, $02 ; CPU:$99B0 PRG:99B0 1A 1B 1C 1D 1E E9 02 01 86 70 71 72 73 74 DA 02 - .byte $01, $81, $DD, $0D, $FF, $90, $E1, $01, $1F, $20, $21, $22, $23, $2A, $01, $95 ; CPU:$99C0 PRG:99C0 01 81 DD 0D FF 90 E1 01 1F 20 21 22 23 2A 01 95 - .byte $6F, $6E, $6D, $6C, $6B, $93, $02, $01, $81, $DD, $0D, $FF, $90, $E1, $E7, $24 ; CPU:$99D0 PRG:99D0 6F 6E 6D 6C 6B 93 02 01 81 DD 0D FF 90 E1 E7 24 - .byte $25, $26, $27, $28, $29, $01, $65, $66, $67, $68, $69, $6A, $91, $02, $01, $81 ; CPU:$99E0 PRG:99E0 25 26 27 28 29 01 65 66 67 68 69 6A 91 02 01 81 - .byte $DD, $0D, $FF, $81, $E1, $02, $01, $8D, $2B, $2C, $2D, $2E, $01, $E7, $64, $63 ; CPU:$99F0 PRG:99F0 DD 0D FF 81 E1 02 01 8D 2B 2C 2D 2E 01 E7 64 63 - .byte $62, $61, $60, $5F, $5E, $02, $01, $81, $DD, $0D, $FF, $81, $E3, $02, $01, $84 ; CPU:$9A00 PRG:9A00 62 61 60 5F 5E 02 01 81 DD 0D FF 81 E3 02 01 84 - .byte $2F, $30, $31, $32, $02, $01, $87, $57, $58, $59, $5A, $5B, $5C, $5D, $02, $01 ; CPU:$9A10 PRG:9A10 2F 30 31 32 02 01 87 57 58 59 5A 5B 5C 5D 02 01 - .byte $81, $DD, $0D, $FF, $87, $E3, $BA, $BC, $33, $34, $35, $36, $02, $01, $8A, $9D ; CPU:$9A20 PRG:9A20 81 DD 0D FF 87 E3 BA BC 33 34 35 36 02 01 8A 9D - .byte $55, $54, $53, $52, $51, $94, $C5, $C6, $C7, $0D, $FF, $88, $E3, $A9, $BB, $01 ; CPU:$9A30 PRG:9A30 55 54 53 52 51 94 C5 C6 C7 0D FF 88 E3 A9 BB 01 - .byte $37, $38, $39, $3C, $02, $01, $89, $56, $45, $4E, $4F, $50, $AA, $AB, $AC, $AD ; CPU:$9A40 PRG:9A40 37 38 39 3C 02 01 89 56 45 4E 4F 50 AA AB AC AD - .byte $0D, $FF, $93, $E3, $A7, $B8, $B9, $92, $3A, $3B, $3D, $3E, $8D, $44, $46, $4D ; CPU:$9A50 PRG:9A50 0D FF 93 E3 A7 B8 B9 92 3A 3B 3D 3E 8D 44 46 4D - .byte $C8, $C4, $B1, $B0, $AF, $AE, $0D, $FF, $8C, $E3, $A5, $B7, $B6, $BF, $01, $3F ; CPU:$9A60 PRG:9A60 C8 C4 B1 B0 AF AE 0D FF 8C E3 A5 B7 B6 BF 01 3F - .byte $40, $41, $42, $43, $47, $03, $01, $84, $04, $CC, $CD, $CE, $0D, $FF, $86, $A2 ; CPU:$9A70 PRG:9A70 40 41 42 43 47 03 01 84 04 CC CD CE 0D FF 86 A2 - .byte $A3, $B4, $B5, $C1, $C3, $04, $01, $89, $49, $48, $4B, $01, $D5, $D3, $4C, $C9 ; CPU:$9A80 PRG:9A80 A3 B4 B5 C1 C3 04 01 89 49 48 4B 01 D5 D3 4C C9 - .byte $CA, $0D, $FF, $88, $9F, $A0, $A1, $B3, $BD, $BE, $C0, $C2, $03, $E2, $88, $8B ; CPU:$9A90 PRG:9A90 CA 0D FF 88 9F A0 A1 B3 BD BE C0 C2 03 E2 88 8B - .byte $8C, $D6, $D4, $D2, $D1, $D0, $CF, $77, $FF, $77, $FF, $43, $FF, $8C, $AA, $EE ; CPU:$9AA0 PRG:9AA0 8C D6 D4 D2 D1 D0 CF 77 FF 77 FF 43 FF 8C AA EE - .byte $F7, $FE, $33, $FF, $3F, $FF, $55, $DA, $FF, $E2, $03, $FF, $83, $3F, $26, $CC ; CPU:$9AB0 PRG:9AB0 F7 FE 33 FF 3F FF 55 DA FF E2 03 FF 83 3F 26 CC - .byte $02, $FF, $81, $33, $02, $FF, $81, $33, $02, $00, $83, $0C, $FF, $F3, $19, $FF ; CPU:$9AC0 PRG:9AC0 02 FF 81 33 02 FF 81 33 02 00 83 0C FF F3 19 FF - .byte $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $B4, $06, $B5, $84, $3C, $3D ; CPU:$9AD0 PRG:9AD0 FF FF FF 24 00 77 FF 0F FF 81 B4 06 B5 84 3C 3D - .byte $5B, $5C, $07, $B5, $81, $B6, $0D, $FF, $81, $BA, $03, $01, $81, $AF, $02, $01 ; CPU:$9AE0 PRG:9AE0 5B 5C 07 B5 81 B6 0D FF 81 BA 03 01 81 AF 02 01 - .byte $84, $3B, $B2, $B3, $5D, $07, $01, $81, $B7, $0D, $FF, $81, $BA, $04, $01, $87 ; CPU:$9AF0 PRG:9AF0 84 3B B2 B3 5D 07 01 81 B7 0D FF 81 BA 04 01 87 - .byte $AF, $01, $3A, $3E, $5A, $5E, $A4, $03, $01, $81, $AF, $02, $01, $81, $B7, $0D ; CPU:$9B00 PRG:9B00 AF 01 3A 3E 5A 5E A4 03 01 81 AF 02 01 81 B7 0D - .byte $FF, $81, $BA, $06, $01, $85, $39, $3F, $59, $5F, $79, $06, $01, $81, $B7, $0D ; CPU:$9B10 PRG:9B10 FF 81 BA 06 01 85 39 3F 59 5F 79 06 01 81 B7 0D - .byte $FF, $81, $BA, $04, $01, $88, $AE, $01, $38, $40, $58, $60, $78, $7A, $05, $01 ; CPU:$9B20 PRG:9B20 FF 81 BA 04 01 88 AE 01 38 40 58 60 78 7A 05 01 - .byte $81, $B7, $0D, $FF, $81, $BA, $03, $01, $8A, $AD, $AF, $01, $37, $41, $57, $61 ; CPU:$9B30 PRG:9B30 81 B7 0D FF 81 BA 03 01 8A AD AF 01 37 41 57 61 - .byte $77, $7B, $91, $03, $01, $82, $AF, $B7, $0D, $FF, $81, $BA, $04, $01, $8A, $22 ; CPU:$9B40 PRG:9B40 77 7B 91 03 01 82 AF B7 0D FF 81 BA 04 01 8A 22 - .byte $23, $36, $42, $56, $62, $76, $7C, $90, $92, $03, $01, $81, $B7, $0D, $FF, $81 ; CPU:$9B50 PRG:9B50 23 36 42 56 62 76 7C 90 92 03 01 81 B7 0D FF 81 - .byte $BA, $03, $01, $8C, $0F, $21, $24, $35, $43, $55, $63, $75, $7D, $B1, $93, $9E ; CPU:$9B60 PRG:9B60 BA 03 01 8C 0F 21 24 35 43 55 63 75 7D B1 93 9E - .byte $02, $01, $81, $B7, $0D, $FF, $81, $BA, $02, $01, $90, $0E, $10, $20, $25, $34 ; CPU:$9B70 PRG:9B70 02 01 81 B7 0D FF 81 BA 02 01 90 0E 10 20 25 34 - .byte $44, $54, $64, $74, $7E, $B1, $94, $9D, $9F, $01, $B7, $0D, $FF, $81, $BA, $02 ; CPU:$9B80 PRG:9B80 44 54 64 74 7E B1 94 9D 9F 01 B7 0D FF 81 BA 02 - .byte $01, $90, $0D, $11, $1F, $26, $33, $45, $53, $65, $73, $80, $8E, $B0, $7F, $A0 ; CPU:$9B90 PRG:9B90 01 90 0D 11 1F 26 33 45 53 65 73 80 8E B0 7F A0 - .byte $01, $B7, $0D, $FF, $8E, $BA, $01, $A6, $0C, $12, $1E, $27, $32, $46, $52, $66 ; CPU:$9BA0 PRG:9BA0 01 B7 0D FF 8E BA 01 A6 0C 12 1E 27 32 46 52 66 - .byte $72, $80, $8D, $02, $7F, $83, $A1, $01, $B7, $0D, $FF, $81, $BA, $02, $01, $8B ; CPU:$9BB0 PRG:9BB0 72 80 8D 02 7F 83 A1 01 B7 0D FF 81 BA 02 01 8B - .byte $0B, $13, $1D, $28, $31, $47, $51, $67, $71, $81, $8C, $02, $7F, $83, $A2, $01 ; CPU:$9BC0 PRG:9BC0 0B 13 1D 28 31 47 51 67 71 81 8C 02 7F 83 A2 01 - .byte $B7, $0D, $FF, $93, $BA, $01, $02, $0A, $14, $1C, $29, $30, $48, $50, $68, $70 ; CPU:$9BD0 PRG:9BD0 B7 0D FF 93 BA 01 02 0A 14 1C 29 30 48 50 68 70 - .byte $82, $8B, $95, $9C, $A3, $01, $B7, $0D, $FF, $93, $BA, $01, $03, $09, $15, $1B ; CPU:$9BE0 PRG:9BE0 82 8B 95 9C A3 01 B7 0D FF 93 BA 01 03 09 15 1B - .byte $2A, $2F, $49, $4F, $69, $6F, $83, $8A, $96, $9B, $01, $AD, $B7, $0D, $FF, $90 ; CPU:$9BF0 PRG:9BF0 2A 2F 49 4F 69 6F 83 8A 96 9B 01 AD B7 0D FF 90 - .byte $BA, $01, $A5, $08, $16, $1A, $2B, $2E, $4A, $4E, $8F, $6E, $84, $89, $97, $9A ; CPU:$9C00 PRG:9C00 BA 01 A5 08 16 1A 2B 2E 4A 4E 8F 6E 84 89 97 9A - .byte $02, $01, $81, $B7, $0D, $FF, $93, $BA, $01, $04, $07, $01, $19, $01, $2D, $01 ; CPU:$9C10 PRG:9C10 02 01 81 B7 0D FF 93 BA 01 04 07 01 19 01 2D 01 - .byte $4D, $6A, $6D, $85, $88, $98, $99, $AC, $01, $B7, $0D, $FF, $93, $B9, $A8, $05 ; CPU:$9C20 PRG:9C20 4D 6A 6D 85 88 98 99 AC 01 B7 0D FF 93 B9 A8 05 - .byte $06, $17, $18, $A7, $2C, $4B, $4C, $6B, $6C, $86, $87, $A9, $AA, $AB, $BB, $B8 ; CPU:$9C30 PRG:9C30 06 17 18 A7 2C 4B 4C 6B 6C 86 87 A9 AA AB BB B8 - .byte $77, $FF, $77, $FF, $42, $FF, $86, $BB, $AA, $2A, $8A, $AA, $EE, $02, $FF, $86 ; CPU:$9C40 PRG:9C40 77 FF 77 FF 42 FF 86 BB AA 2A 8A AA EE 02 FF 86 - .byte $BB, $AF, $66, $98, $FA, $EE, $02, $FF, $86, $BB, $66, $99, $EE, $FF, $EE, $02 ; CPU:$9C50 PRG:9C50 BB AF 66 98 FA EE 02 FF 86 BB 66 99 EE FF EE 02 - .byte $FF, $83, $BB, $46, $59, $02, $FF, $81, $EE, $03, $FF, $02, $F0, $02, $FF, $81 ; CPU:$9C60 PRG:9C60 FF 83 BB 46 59 02 FF 81 EE 03 FF 02 F0 02 FF 81 - .byte $FE, $11, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $C0, $12, $BC ; CPU:$9C70 PRG:9C70 FE 11 FF FF FF FF 24 00 77 FF 0F FF 81 C0 12 BC - .byte $81, $BF, $0C, $FF, $81, $C1, $12, $FF, $81, $BE, $0C, $FF, $81, $C1, $12, $FF ; CPU:$9C80 PRG:9C80 81 BF 0C FF 81 C1 12 FF 81 BE 0C FF 81 C1 12 FF - .byte $81, $BE, $0C, $FF, $81, $C1, $0E, $FF, $85, $A0, $A7, $AE, $FF, $BE, $0C, $FF ; CPU:$9C90 PRG:9C90 81 BE 0C FF 81 C1 0E FF 85 A0 A7 AE FF BE 0C FF - .byte $87, $C1, $0D, $0F, $28, $29, $42, $43, $08, $FF, $85, $A1, $A8, $95, $FF, $BE ; CPU:$9CA0 PRG:9CA0 87 C1 0D 0F 28 29 42 43 08 FF 85 A1 A8 95 FF BE - .byte $0C, $FF, $8A, $0E, $0C, $10, $27, $2A, $41, $44, $5B, $5C, $73, $05, $FF, $85 ; CPU:$9CB0 PRG:9CB0 0C FF 8A 0E 0C 10 27 2A 41 44 5B 5C 73 05 FF 85 - .byte $E8, $E1, $E3, $FF, $BE, $0C, $FF, $8A, $C1, $FF, $11, $26, $2B, $40, $45, $5A ; CPU:$9CC0 PRG:9CC0 E8 E1 E3 FF BE 0C FF 8A C1 FF 11 26 2B 40 45 5A - .byte $5D, $72, $05, $FF, $85, $DF, $74, $DE, $B5, $E7, $0C, $FF, $8A, $C1, $FF, $12 ; CPU:$9CD0 PRG:9CD0 5D 72 05 FF 85 DF 74 DE B5 E7 0C FF 8A C1 FF 12 - .byte $25, $2C, $E5, $46, $59, $5E, $71, $02, $FF, $88, $87, $9A, $9B, $A2, $E2, $B2 ; CPU:$9CE0 PRG:9CE0 25 2C E5 46 59 5E 71 02 FF 88 87 9A 9B A2 E2 B2 - .byte $B6, $B9, $0C, $FF, $94, $C1, $FF, $13, $24, $2D, $3E, $47, $58, $5F, $70, $75 ; CPU:$9CF0 PRG:9CF0 B6 B9 0C FF 94 C1 FF 13 24 2D 3E 47 58 5F 70 75 - .byte $86, $88, $99, $9C, $A5, $E4, $B3, $B7, $BA, $0C, $FF, $94, $C1, $FF, $14, $23 ; CPU:$9D00 PRG:9D00 86 88 99 9C A5 E4 B3 B7 BA 0C FF 94 C1 FF 14 23 - .byte $2E, $3D, $48, $57, $60, $6F, $76, $85, $89, $98, $9D, $A6, $AD, $B4, $B8, $BB ; CPU:$9D10 PRG:9D10 2E 3D 48 57 60 6F 76 85 89 98 9D A6 AD B4 B8 BB - .byte $0C, $FF, $8F, $C1, $FF, $15, $22, $2F, $3C, $49, $56, $61, $6E, $77, $84, $8A ; CPU:$9D20 PRG:9D20 0C FF 8F C1 FF 15 22 2F 3C 49 56 61 6E 77 84 8A - .byte $97, $9E, $04, $FF, $81, $BE, $0C, $FF, $8E, $C1, $0B, $16, $E6, $30, $3B, $4A ; CPU:$9D30 PRG:9D30 97 9E 04 FF 81 BE 0C FF 8E C1 0B 16 E6 30 3B 4A - .byte $55, $62, $6D, $78, $83, $8B, $96, $05, $FF, $81, $BE, $0C, $FF, $8D, $01, $0A ; CPU:$9D40 PRG:9D40 55 62 6D 78 83 8B 96 05 FF 81 BE 0C FF 8D 01 0A - .byte $17, $20, $31, $3A, $4B, $54, $63, $6C, $79, $82, $8C, $06, $FF, $81, $BE, $0C ; CPU:$9D50 PRG:9D50 17 20 31 3A 4B 54 63 6C 79 82 8C 06 FF 81 BE 0C - .byte $FF, $8E, $02, $09, $18, $1F, $32, $39, $4C, $53, $64, $6B, $7A, $81, $8D, $94 ; CPU:$9D60 PRG:9D60 FF 8E 02 09 18 1F 32 39 4C 53 64 6B 7A 81 8D 94 - .byte $05, $FF, $81, $BE, $0C, $FF, $8E, $03, $08, $19, $1E, $33, $38, $4D, $52, $65 ; CPU:$9D70 PRG:9D70 05 FF 81 BE 0C FF 8E 03 08 19 1E 33 38 4D 52 65 - .byte $6A, $7B, $80, $8E, $93, $05, $FF, $81, $BE, $0C, $FF, $8E, $04, $07, $1A, $1D ; CPU:$9D80 PRG:9D80 6A 7B 80 8E 93 05 FF 81 BE 0C FF 8E 04 07 1A 1D - .byte $34, $37, $4E, $51, $66, $69, $7C, $7F, $8F, $92, $05, $FF, $81, $BE, $0C, $FF ; CPU:$9D90 PRG:9D90 34 37 4E 51 66 69 7C 7F 8F 92 05 FF 81 BE 0C FF - .byte $8F, $05, $06, $1B, $1C, $35, $36, $4F, $50, $67, $68, $7D, $7E, $90, $91, $9F ; CPU:$9DA0 PRG:9DA0 8F 05 06 1B 1C 35 36 4F 50 67 68 7D 7E 90 91 9F - .byte $04, $C3, $81, $BD, $77, $FF, $77, $FF, $45, $FF, $81, $5F, $03, $FF, $81, $F3 ; CPU:$9DB0 PRG:9DB0 04 C3 81 BD 77 FF 77 FF 45 FF 81 5F 03 FF 81 F3 - .byte $02, $AA, $83, $FE, $B5, $DF, $03, $FF, $82, $22, $FA, $02, $FF, $81, $FD, $02 ; CPU:$9DC0 PRG:9DC0 02 AA 83 FE B5 DF 03 FF 82 22 FA 02 FF 81 FD 02 - .byte $FF, $83, $B3, $AA, $66, $1C, $FF, $FF, $FF, $FF, $24, $00, $66, $FF, $81, $CB ; CPU:$9DD0 PRG:9DD0 FF 83 B3 AA 66 1C FF FF FF FF 24 00 66 FF 81 CB - .byte $05, $BF, $81, $93, $0C, $BF, $81, $67, $0C, $FF, $81, $E2, $06, $A1, $84, $76 ; CPU:$9DE0 PRG:9DE0 05 BF 81 93 0C BF 81 67 0C FF 81 E2 06 A1 84 76 - .byte $A1, $01, $02, $08, $A1, $81, $4D, $0C, $FF, $81, $E2, $03, $A1, $81, $21, $03 ; CPU:$9DF0 PRG:9DF0 A1 01 02 08 A1 81 4D 0C FF 81 E2 03 A1 81 21 03 - .byte $A1, $84, $03, $04, $05, $06, $07, $A1, $81, $4D, $0C, $FF, $8C, $E2, $A1, $16 ; CPU:$9E00 PRG:9E00 A1 84 03 04 05 06 07 A1 81 4D 0C FF 8C E2 A1 16 - .byte $17, $18, $A1, $4F, $07, $08, $09, $0A, $0B, $07, $A1, $81, $4D, $0C, $FF, $8C ; CPU:$9E10 PRG:9E10 17 18 A1 4F 07 08 09 0A 0B 07 A1 81 4D 0C FF 8C - .byte $E2, $A1, $19, $1A, $1B, $A1, $41, $0C, $0D, $0E, $0F, $10, $07, $A1, $81, $4D ; CPU:$9E20 PRG:9E20 E2 A1 19 1A 1B A1 41 0C 0D 0E 0F 10 07 A1 81 4D - .byte $0C, $FF, $8D, $E2, $1C, $1D, $1E, $1F, $20, $B4, $A1, $11, $12, $13, $14, $15 ; CPU:$9E30 PRG:9E30 0C FF 8D E2 1C 1D 1E 1F 20 B4 A1 11 12 13 14 15 - .byte $06, $A1, $81, $4D, $0C, $FF, $8D, $E2, $22, $23, $24, $25, $26, $27, $28, $29 ; CPU:$9E40 PRG:9E40 06 A1 81 4D 0C FF 8D E2 22 23 24 25 26 27 28 29 - .byte $2A, $2B, $2C, $2D, $06, $A1, $81, $4D, $0C, $FF, $8D, $2E, $2F, $30, $31, $32 ; CPU:$9E50 PRG:9E50 2A 2B 2C 2D 06 A1 81 4D 0C FF 8D 2E 2F 30 31 32 - .byte $33, $34, $35, $36, $37, $38, $39, $3A, $06, $A1, $81, $4D, $0C, $FF, $8E, $E2 ; CPU:$9E60 PRG:9E60 33 34 35 36 37 38 39 3A 06 A1 81 4D 0C FF 8E E2 - .byte $3C, $3D, $3E, $3F, $40, $A1, $42, $43, $44, $45, $46, $47, $4E, $05, $A1, $81 ; CPU:$9E70 PRG:9E70 3C 3D 3E 3F 40 A1 42 43 44 45 46 47 4E 05 A1 81 - .byte $4D, $0C, $FF, $86, $E2, $48, $49, $4A, $4B, $4C, $03, $A1, $88, $50, $51, $52 ; CPU:$9E80 PRG:9E80 4D 0C FF 86 E2 48 49 4A 4B 4C 03 A1 88 50 51 52 - .byte $53, $54, $55, $56, $57, $02, $A1, $81, $4D, $0C, $FF, $87, $E2, $59, $5A, $5B ; CPU:$9E90 PRG:9E90 53 54 55 56 57 02 A1 81 4D 0C FF 87 E2 59 5A 5B - .byte $5C, $5D, $5E, $02, $A1, $88, $5F, $60, $61, $62, $63, $64, $65, $66, $02, $A1 ; CPU:$9EA0 PRG:9EA0 5C 5D 5E 02 A1 88 5F 60 61 62 63 64 65 66 02 A1 - .byte $81, $4D, $0C, $FF, $86, $E2, $68, $69, $6A, $6B, $6C, $03, $A1, $88, $6E, $6F ; CPU:$9EB0 PRG:9EB0 81 4D 0C FF 86 E2 68 69 6A 6B 6C 03 A1 88 6E 6F - .byte $70, $71, $72, $73, $74, $75, $02, $A1, $81, $4D, $0C, $FF, $94, $E2, $A1, $78 ; CPU:$9EC0 PRG:9EC0 70 71 72 73 74 75 02 A1 81 4D 0C FF 94 E2 A1 78 - .byte $79, $7A, $7B, $E0, $7C, $B5, $B6, $80, $81, $82, $83, $84, $85, $86, $DD, $A1 ; CPU:$9ED0 PRG:9ED0 79 7A 7B E0 7C B5 B6 80 81 82 83 84 85 86 DD A1 - .byte $4D, $0C, $FF, $81, $E2, $02, $A1, $91, $88, $89, $7D, $7E, $7F, $B7, $87, $8D ; CPU:$9EE0 PRG:9EE0 4D 0C FF 81 E2 02 A1 91 88 89 7D 7E 7F B7 87 8D - .byte $8E, $8F, $90, $91, $92, $DB, $DC, $A1, $4D, $0C, $FF, $94, $9C, $AA, $BE, $A1 ; CPU:$9EF0 PRG:9EF0 8E 8F 90 91 92 DB DC A1 4D 0C FF 94 9C AA BE A1 - .byte $DF, $8A, $8B, $8C, $E1, $E2, $97, $98, $99, $9A, $9B, $DE, $9D, $9E, $9F, $A0 ; CPU:$9F00 PRG:9F00 DF 8A 8B 8C E1 E2 97 98 99 9A 9B DE 9D 9E 9F A0 - .byte $0C, $FF, $94, $77, $B8, $BD, $C0, $C5, $94, $95, $96, $CC, $CF, $E3, $A2, $A3 ; CPU:$9F10 PRG:9F10 0C FF 94 77 B8 BD C0 C5 94 95 96 CC CF E3 A2 A3 - .byte $A4, $A5, $A6, $A7, $A8, $A9, $4D, $0C, $FF, $94, $6D, $B9, $BC, $C1, $C4, $C6 ; CPU:$9F20 PRG:9F20 A4 A5 A6 A7 A8 A9 4D 0C FF 94 6D B9 BC C1 C4 C6 - .byte $E0, $C9, $CD, $D0, $D2, $D4, $A1, $AB, $AC, $AD, $AE, $AF, $B0, $4D, $0C, $FF ; CPU:$9F30 PRG:9F30 E0 C9 CD D0 D2 D4 A1 AB AC AD AE AF B0 4D 0C FF - .byte $94, $58, $BA, $BB, $C2, $C3, $C7, $C8, $CA, $CE, $D1, $D3, $D5, $D6, $D7, $D8 ; CPU:$9F40 PRG:9F40 94 58 BA BB C2 C3 C7 C8 CA CE D1 D3 D5 D6 D7 D8 - .byte $D9, $DA, $B1, $B2, $B3, $77, $FF, $77, $FF, $43, $FF, $82, $33, $CC, $06, $FF ; CPU:$9F50 PRG:9F50 D9 DA B1 B2 B3 77 FF 77 FF 43 FF 82 33 CC 06 FF - .byte $82, $A0, $AA, $06, $FF, $83, $7B, $DA, $7F, $05, $FF, $81, $77, $02, $55, $07 ; CPU:$9F60 PRG:9F60 82 A0 AA 06 FF 83 7B DA 7F 05 FF 81 77 02 55 07 - .byte $FF, $82, $F7, $FD, $11, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81 ; CPU:$9F70 PRG:9F70 FF 82 F7 FD 11 FF FF FF FF 24 00 77 FF 0F FF 81 - .byte $D9, $06, $DA, $83, $50, $51, $6C, $08, $DA, $81, $DB, $0D, $FF, $83, $DD, $FE ; CPU:$9F80 PRG:9F80 D9 06 DA 83 50 51 6C 08 DA 81 DB 0D FF 83 DD FE - .byte $E3, $03, $FE, $89, $E3, $4F, $52, $6B, $FE, $E3, $84, $9C, $9D, $02, $FE, $82 ; CPU:$9F90 PRG:9F90 E3 03 FE 89 E3 4F 52 6B FE E3 84 9C 9D 02 FE 82 - .byte $E4, $DC, $0D, $FF, $93, $DD, $FE, $E3, $FE, $28, $3F, $E3, $DF, $53, $6A, $6D ; CPU:$9FA0 PRG:9FA0 E4 DC 0D FF 93 DD FE E3 FE 28 3F E3 DF 53 6A 6D - .byte $FE, $85, $9B, $9E, $FE, $E3, $FE, $DC, $0D, $FF, $93, $DD, $FE, $E4, $FE, $29 ; CPU:$9FB0 PRG:9FB0 FE 85 9B 9E FE E3 FE DC 0D FF 93 DD FE E4 FE 29 - .byte $3E, $E4, $4E, $54, $69, $6E, $D4, $86, $9A, $9F, $FE, $E3, $FE, $DC, $0D, $FF ; CPU:$9FC0 PRG:9FC0 3E E4 4E 54 69 6E D4 86 9A 9F FE E3 FE DC 0D FF - .byte $81, $DD, $02, $FE, $90, $E5, $2A, $3D, $FE, $4D, $55, $68, $6F, $D3, $FE, $99 ; CPU:$9FD0 PRG:9FD0 81 DD 02 FE 90 E5 2A 3D FE 4D 55 68 6F D3 FE 99 - .byte $A0, $B6, $B7, $FE, $DC, $0D, $FF, $93, $DD, $12, $13, $27, $2B, $3C, $40, $4C ; CPU:$9FE0 PRG:9FE0 A0 B6 B7 FE DC 0D FF 93 DD 12 13 27 2B 3C 40 4C - .byte $FE, $67, $70, $D2, $E3, $98, $A1, $B5, $B8, $CB, $CC, $0D, $FF, $93, $DD, $11 ; CPU:$9FF0 PRG:9FF0 FE 67 70 D2 E3 98 A1 B5 B8 CB CC 0D FF 93 DD 11 +; ---- data $E000-$FEFF (7936 bytes) ---- + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E000 PRG:6000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E010 PRG:6010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E020 PRG:6020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E030 PRG:6030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E040 PRG:6040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E050 PRG:6050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E060 PRG:6060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E070 PRG:6070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E080 PRG:6080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E090 PRG:6090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0A0 PRG:60A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0B0 PRG:60B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0C0 PRG:60C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0D0 PRG:60D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0E0 PRG:60E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0F0 PRG:60F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E100 PRG:6100 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E110 PRG:6110 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E120 PRG:6120 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E130 PRG:6130 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E140 PRG:6140 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E150 PRG:6150 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E160 PRG:6160 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E170 PRG:6170 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E180 PRG:6180 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E190 PRG:6190 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1A0 PRG:61A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1B0 PRG:61B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1C0 PRG:61C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1D0 PRG:61D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1E0 PRG:61E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1F0 PRG:61F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E200 PRG:6200 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E210 PRG:6210 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E220 PRG:6220 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E230 PRG:6230 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E240 PRG:6240 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E250 PRG:6250 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E260 PRG:6260 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E270 PRG:6270 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E280 PRG:6280 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E290 PRG:6290 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2A0 PRG:62A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2B0 PRG:62B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2C0 PRG:62C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2D0 PRG:62D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2E0 PRG:62E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2F0 PRG:62F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E300 PRG:6300 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E310 PRG:6310 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E320 PRG:6320 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E330 PRG:6330 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E340 PRG:6340 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E350 PRG:6350 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E360 PRG:6360 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E370 PRG:6370 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E380 PRG:6380 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E390 PRG:6390 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3A0 PRG:63A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3B0 PRG:63B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3C0 PRG:63C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3D0 PRG:63D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3E0 PRG:63E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3F0 PRG:63F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E400 PRG:6400 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E410 PRG:6410 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E420 PRG:6420 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E430 PRG:6430 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E440 PRG:6440 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E450 PRG:6450 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E460 PRG:6460 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E470 PRG:6470 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E480 PRG:6480 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E490 PRG:6490 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4A0 PRG:64A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4B0 PRG:64B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4C0 PRG:64C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4D0 PRG:64D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4E0 PRG:64E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4F0 PRG:64F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E500 PRG:6500 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E510 PRG:6510 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E520 PRG:6520 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E530 PRG:6530 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E540 PRG:6540 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E550 PRG:6550 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E560 PRG:6560 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E570 PRG:6570 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E580 PRG:6580 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E590 PRG:6590 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5A0 PRG:65A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5B0 PRG:65B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5C0 PRG:65C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5D0 PRG:65D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5E0 PRG:65E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5F0 PRG:65F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E600 PRG:6600 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E610 PRG:6610 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E620 PRG:6620 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E630 PRG:6630 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E640 PRG:6640 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E650 PRG:6650 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E660 PRG:6660 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E670 PRG:6670 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E680 PRG:6680 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E690 PRG:6690 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6A0 PRG:66A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6B0 PRG:66B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6C0 PRG:66C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6D0 PRG:66D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6E0 PRG:66E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6F0 PRG:66F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E700 PRG:6700 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E710 PRG:6710 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E720 PRG:6720 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E730 PRG:6730 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E740 PRG:6740 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E750 PRG:6750 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E760 PRG:6760 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E770 PRG:6770 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E780 PRG:6780 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E790 PRG:6790 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7A0 PRG:67A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7B0 PRG:67B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7C0 PRG:67C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7D0 PRG:67D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7E0 PRG:67E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7F0 PRG:67F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E800 PRG:6800 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E810 PRG:6810 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E820 PRG:6820 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E830 PRG:6830 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E840 PRG:6840 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E850 PRG:6850 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E860 PRG:6860 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E870 PRG:6870 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E880 PRG:6880 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E890 PRG:6890 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8A0 PRG:68A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8B0 PRG:68B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8C0 PRG:68C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8D0 PRG:68D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8E0 PRG:68E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8F0 PRG:68F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E900 PRG:6900 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E910 PRG:6910 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E920 PRG:6920 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E930 PRG:6930 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E940 PRG:6940 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E950 PRG:6950 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E960 PRG:6960 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E970 PRG:6970 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E980 PRG:6980 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E990 PRG:6990 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9A0 PRG:69A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9B0 PRG:69B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9C0 PRG:69C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9D0 PRG:69D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9E0 PRG:69E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9F0 PRG:69F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA00 PRG:6A00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA10 PRG:6A10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA20 PRG:6A20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA30 PRG:6A30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA40 PRG:6A40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA50 PRG:6A50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA60 PRG:6A60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA70 PRG:6A70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA80 PRG:6A80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA90 PRG:6A90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAA0 PRG:6AA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAB0 PRG:6AB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAC0 PRG:6AC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAD0 PRG:6AD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAE0 PRG:6AE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAF0 PRG:6AF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB00 PRG:6B00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB10 PRG:6B10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB20 PRG:6B20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB30 PRG:6B30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB40 PRG:6B40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB50 PRG:6B50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB60 PRG:6B60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB70 PRG:6B70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB80 PRG:6B80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB90 PRG:6B90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBA0 PRG:6BA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBB0 PRG:6BB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBC0 PRG:6BC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBD0 PRG:6BD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBE0 PRG:6BE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBF0 PRG:6BF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC00 PRG:6C00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC10 PRG:6C10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC20 PRG:6C20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC30 PRG:6C30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC40 PRG:6C40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC50 PRG:6C50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC60 PRG:6C60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC70 PRG:6C70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC80 PRG:6C80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC90 PRG:6C90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECA0 PRG:6CA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECB0 PRG:6CB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECC0 PRG:6CC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECD0 PRG:6CD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECE0 PRG:6CE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECF0 PRG:6CF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED00 PRG:6D00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED10 PRG:6D10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED20 PRG:6D20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED30 PRG:6D30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED40 PRG:6D40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED50 PRG:6D50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED60 PRG:6D60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED70 PRG:6D70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED80 PRG:6D80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED90 PRG:6D90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDA0 PRG:6DA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDB0 PRG:6DB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDC0 PRG:6DC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDD0 PRG:6DD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDE0 PRG:6DE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDF0 PRG:6DF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE00 PRG:6E00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE10 PRG:6E10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE20 PRG:6E20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE30 PRG:6E30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE40 PRG:6E40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE50 PRG:6E50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE60 PRG:6E60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE70 PRG:6E70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE80 PRG:6E80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE90 PRG:6E90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEA0 PRG:6EA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEB0 PRG:6EB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEC0 PRG:6EC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EED0 PRG:6ED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEE0 PRG:6EE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEF0 PRG:6EF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF00 PRG:6F00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF10 PRG:6F10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF20 PRG:6F20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF30 PRG:6F30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF40 PRG:6F40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF50 PRG:6F50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF60 PRG:6F60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF70 PRG:6F70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF80 PRG:6F80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF90 PRG:6F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFA0 PRG:6FA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFB0 PRG:6FB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFC0 PRG:6FC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFD0 PRG:6FD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFE0 PRG:6FE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFF0 PRG:6FF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F000 PRG:7000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F010 PRG:7010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F020 PRG:7020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F030 PRG:7030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F040 PRG:7040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F050 PRG:7050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F060 PRG:7060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F070 PRG:7070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F080 PRG:7080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F090 PRG:7090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0A0 PRG:70A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0B0 PRG:70B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0C0 PRG:70C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0D0 PRG:70D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0E0 PRG:70E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0F0 PRG:70F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F100 PRG:7100 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F110 PRG:7110 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F120 PRG:7120 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F130 PRG:7130 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F140 PRG:7140 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F150 PRG:7150 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F160 PRG:7160 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F170 PRG:7170 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F180 PRG:7180 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F190 PRG:7190 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F1A0 PRG:71A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F1B0 PRG:71B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F1C0 PRG:71C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39 ; CPU:$F1D0 PRG:71D0 FF FF FF FF FF FF 30 31 32 33 34 35 36 37 38 39 + .byte $04, $01, $30, $30, $30, $30, $0E, $31, $2A, $28, $0E, $39, $27, $18, $0E, $36 ; CPU:$F1E0 PRG:71E0 04 01 30 30 30 30 0E 31 2A 28 0E 39 27 18 0E 36 + .byte $31, $17, $0E, $31, $15, $22, $0E, $31, $2A, $28, $FF, $30, $25, $22, $FF, $2B ; CPU:$F1F0 PRG:71F0 31 17 0E 31 15 22 0E 31 2A 28 FF 30 25 22 FF 2B + .byte $28, $30, $FF, $31, $15, $22, $00, $20, $20, $23, $23, $00, $21, $01, $01, $01 ; CPU:$F200 PRG:7200 28 30 FF 31 15 22 00 20 20 23 23 00 21 01 01 01 + .byte $01, $01, $21, $01, $00, $01, $00, $00, $82, $F2, $88, $F2, $90, $F2, $98, $F2 ; CPU:$F210 PRG:7210 01 01 21 01 00 01 00 00 82 F2 88 F2 90 F2 98 F2 + .byte $78, $F6, $91, $F6, $64, $F6, $68, $F6, $6C, $F6, $70, $F6, $74, $F6, $C6, $F2 ; CPU:$F220 PRG:7220 78 F6 91 F6 64 F6 68 F6 6C F6 70 F6 74 F6 C6 F2 + .byte $56, $F2, $5A, $F2, $5E, $F2, $00, $00, $00, $F8, $00, $F8, $00, $F8, $00, $F8 ; CPU:$F230 PRG:7230 56 F2 5A F2 5E F2 00 00 00 F8 00 F8 00 F8 00 F8 + .byte $00, $F8, $48, $98, $00, $F8, $00, $F8, $00, $F8, $00, $F8, $00, $F8, $44, $78 ; CPU:$F240 PRG:7240 00 F8 48 98 00 F8 00 F8 00 F8 00 F8 00 F8 44 78 + .byte $A0, $6D, $A0, $85, $B0, $85, $62, $F2, $FF, $FF, $6A, $F2, $FF, $FF, $74, $F2 ; CPU:$F250 PRG:7250 A0 6D A0 85 B0 85 62 F2 FF FF 6A F2 FF FF 74 F2 + .byte $FF, $FF, $02, $03, $25, $34, $4A, $90, $91, $92, $02, $04, $A3, $A4, $C1, $E4 ; CPU:$F260 PRG:7260 FF FF 02 03 25 34 4A 90 91 92 02 04 A3 A4 C1 E4 + .byte $E6, $E7, $E9, $EA, $03, $04, $A5, $B3, $B4, $E5, $ED, $EE, $E8, $FF, $FF, $EB ; CPU:$F270 PRG:7270 E6 E7 E9 EA 03 04 A5 B3 B4 E5 ED EE E8 FF FF EB + .byte $EC, $FF, $AE, $F2, $BA, $F2, $FF, $FF, $B4, $F2, $C0, $F2, $B4, $F2, $FF, $FF ; CPU:$F280 PRG:7280 EC FF AE F2 BA F2 FF FF B4 F2 C0 F2 B4 F2 FF FF + .byte $BA, $F2, $AE, $F2, $AE, $F2, $FF, $FF, $C0, $F2, $B4, $F2, $FF, $FF, $A8, $F2 ; CPU:$F290 PRG:7290 BA F2 AE F2 AE F2 FF FF C0 F2 B4 F2 FF FF A8 F2 + .byte $AE, $F2, $B4, $F2, $AE, $F2, $B4, $F2, $02, $02, $FF, $FF, $FF, $FF, $02, $02 ; CPU:$F2A0 PRG:72A0 AE F2 B4 F2 AE F2 B4 F2 02 02 FF FF FF FF 02 02 + .byte $01, $02, $03, $04, $02, $02, $05, $06, $07, $08, $02, $02, $A6, $A7, $A8, $A9 ; CPU:$F2B0 PRG:72B0 01 02 03 04 02 02 05 06 07 08 02 02 A6 A7 A8 A9 + .byte $02, $02, $AA, $AB, $AC, $AD, $CA, $F2, $FF, $FF, $05, $01, $94, $95, $A1, $9F ; CPU:$F2C0 PRG:72C0 02 02 AA AB AC AD CA F2 FF FF 05 01 94 95 A1 9F + .byte $97, $00, $00, $77, $78, $7C, $82, $8B, $8C, $A3, $A4, $A5, $A6, $A7, $A8, $AD ; CPU:$F2D0 PRG:72D0 97 00 00 77 78 7C 82 8B 8C A3 A4 A5 A6 A7 A8 AD + .byte $AE, $AF, $B0, $B5, $B6, $B7, $B8, $6D, $6E, $6F, $72, $84, $8A, $A1, $A2, $A9 ; CPU:$F2E0 PRG:72E0 AE AF B0 B5 B6 B7 B8 6D 6E 6F 72 84 8A A1 A2 A9 + .byte $AA, $AB, $AC, $B1, $B2, $B3, $B4, $B9, $BA, $BB, $BC, $A8, $F2, $01, $F3, $07 ; CPU:$F2F0 PRG:72F0 AA AB AC B1 B2 B3 B4 B9 BA BB BC A8 F2 01 F3 07 + .byte $F3, $02, $02, $E8, $E9, $EA, $EB, $02, $02, $EC, $ED, $EE, $EF, $02, $02, $BD ; CPU:$F300 PRG:7300 F3 02 02 E8 E9 EA EB 02 02 EC ED EE EF 02 02 BD + .byte $BE, $BF, $C0, $00, $00, $21, $F3, $31, $F3, $41, $F3, $51, $F3, $61, $F3, $71 ; CPU:$F310 PRG:7310 BE BF C0 00 00 21 F3 31 F3 41 F3 51 F3 61 F3 71 + .byte $F3, $01, $11, $02, $12, $02, $11, $01, $10, $11, $01, $10, $00, $10, $01, $11 ; CPU:$F320 PRG:7320 F3 01 11 02 12 02 11 01 10 11 01 10 00 10 01 11 + .byte $02, $02, $11, $22, $12, $02, $12, $22, $11, $22, $12, $02, $11, $22, $11, $02 ; CPU:$F330 PRG:7330 02 02 11 22 12 02 12 22 11 22 12 02 11 22 11 02 + .byte $12, $02, $10, $11, $12, $01, $12, $11, $10, $11, $03, $02, $01, $12, $01, $02 ; CPU:$F340 PRG:7340 12 02 10 11 12 01 12 11 10 11 03 02 01 12 01 02 + .byte $03, $11, $31, $22, $12, $12, $32, $22, $11, $32, $12, $22, $31, $31, $11, $22 ; CPU:$F350 PRG:7350 03 11 31 22 12 12 32 22 11 32 12 22 31 31 11 22 + .byte $32, $10, $20, $11, $12, $12, $23, $11, $10, $23, $13, $22, $21, $21, $10, $22 ; CPU:$F360 PRG:7360 32 10 20 11 12 12 23 11 10 23 13 22 21 21 10 22 + .byte $23, $01, $11, $21, $12, $02, $11, $22, $10, $22, $11, $02, $10, $21, $11, $01 ; CPU:$F370 PRG:7370 23 01 11 21 12 02 11 22 10 22 11 02 10 21 11 01 + .byte $12, $01, $01, $02, $03, $04, $01, $02, $03, $04, $01, $02, $03, $04, $00, $00 ; CPU:$F380 PRG:7380 12 01 01 02 03 04 01 02 03 04 01 02 03 04 00 00 + .byte $9C, $F3, $BC, $F3, $DC, $F3, $FC, $F3, $1C, $F4, $3C, $F4, $01, $01, $01, $01 ; CPU:$F390 PRG:7390 9C F3 BC F3 DC F3 FC F3 1C F4 3C F4 01 01 01 01 + .byte $02, $01, $01, $01, $01, $01, $02, $01, $01, $01, $02, $02, $01, $02, $02, $01 ; CPU:$F3A0 PRG:73A0 02 01 01 01 01 01 02 01 01 01 02 02 01 02 02 01 + .byte $01, $02, $01, $03, $02, $01, $01, $03, $01, $03, $02, $04, $01, $01, $01, $01 ; CPU:$F3B0 PRG:73B0 01 02 01 03 02 01 01 03 01 03 02 04 01 01 01 01 + .byte $01, $01, $01, $02, $01, $01, $02, $01, $02, $01, $02, $01, $02, $01, $01, $02 ; CPU:$F3C0 PRG:73C0 01 01 01 02 01 01 02 01 02 01 02 01 02 01 01 02 + .byte $01, $01, $03, $02, $02, $01, $03, $01, $01, $02, $03, $04, $01, $01, $01, $01 ; CPU:$F3D0 PRG:73D0 01 01 03 02 02 01 03 01 01 02 03 04 01 01 01 01 + .byte $02, $01, $01, $01, $01, $01, $02, $01, $02, $01, $01, $02, $01, $02, $01, $02 ; CPU:$F3E0 PRG:73E0 02 01 01 01 01 01 02 01 02 01 01 02 01 02 01 02 + .byte $01, $02, $03, $01, $01, $01, $02, $03, $04, $01, $02, $03, $01, $01, $01, $01 ; CPU:$F3F0 PRG:73F0 01 02 03 01 01 01 02 03 04 01 02 03 01 01 01 01 + .byte $01, $02, $01, $01, $01, $01, $02, $01, $02, $02, $01, $01, $02, $01, $02, $01 ; CPU:$F400 PRG:7400 01 02 01 01 01 01 02 01 02 02 01 01 02 01 02 01 + .byte $01, $03, $02, $01, $02, $01, $01, $03, $01, $04, $02, $03, $01, $01, $01, $01 ; CPU:$F410 PRG:7410 01 03 02 01 02 01 01 03 01 04 02 03 01 01 01 01 + .byte $01, $01, $01, $02, $01, $02, $01, $01, $01, $01, $02, $02, $02, $01, $01, $02 ; CPU:$F420 PRG:7420 01 01 01 02 01 02 01 01 01 01 02 02 02 01 01 02 + .byte $01, $01, $02, $03, $02, $03, $01, $01, $02, $01, $03, $04, $01, $01, $01, $01 ; CPU:$F430 PRG:7430 01 01 02 03 02 03 01 01 02 01 03 04 01 01 01 01 + .byte $01, $01, $02, $01, $01, $02, $01, $01, $02, $01, $02, $01, $01, $02, $02, $01 ; CPU:$F440 PRG:7440 01 01 02 01 01 02 01 01 02 01 02 01 01 02 02 01 + .byte $03, $02, $01, $01, $01, $01, $03, $02, $03, $01, $04, $02, $64, $F4, $64, $F5 ; CPU:$F450 PRG:7450 03 02 01 01 01 01 03 02 03 01 04 02 64 F4 64 F5 + .byte $E4, $F4, $E4, $F5, $24, $63, $14, $24, $55, $62, $14, $50, $60, $31, $56, $40 ; CPU:$F460 PRG:7460 E4 F4 E4 F5 24 63 14 24 55 62 14 50 60 31 56 40 + .byte $61, $45, $11, $60, $10, $44, $32, $61, $13, $20, $43, $34, $15, $37, $63, $32 ; CPU:$F470 PRG:7470 61 45 11 60 10 44 32 61 13 20 43 34 15 37 63 32 + .byte $33, $35, $12, $34, $25, $32, $10, $12, $34, $15, $62, $46, $23, $44, $13, $31 ; CPU:$F480 PRG:7480 33 35 12 34 25 32 10 12 34 15 62 46 23 44 13 31 + .byte $17, $10, $22, $16, $51, $31, $41, $65, $10, $62, $11, $20, $30, $14, $34, $11 ; CPU:$F490 PRG:7490 17 10 22 16 51 31 41 65 10 62 11 20 30 14 34 11 + .byte $34, $27, $13, $60, $37, $26, $33, $32, $32, $11, $53, $52, $61, $52, $12, $64 ; CPU:$F4A0 PRG:74A0 34 27 13 60 37 26 33 32 32 11 53 52 61 52 12 64 + .byte $57, $67, $67, $64, $30, $31, $64, $30, $27, $10, $63, $40, $17, $31, $67, $60 ; CPU:$F4B0 PRG:74B0 57 67 67 64 30 31 64 30 27 10 63 40 17 31 67 60 + .byte $13, $47, $10, $40, $13, $33, $60, $21, $33, $63, $60, $66, $64, $61, $35, $50 ; CPU:$F4C0 PRG:74C0 13 47 10 40 13 33 60 21 33 63 60 66 64 61 35 50 + .byte $21, $12, $62, $53, $17, $41, $11, $42, $63, $65, $14, $54, $62, $30, $30, $12 ; CPU:$F4D0 PRG:74D0 21 12 62 53 17 41 11 42 63 65 14 54 62 30 30 12 + .byte $33, $30, $36, $60, $14, $55, $11, $15, $64, $24, $33, $61, $10, $26, $13, $35 ; CPU:$F4E0 PRG:74E0 33 30 36 60 14 55 11 15 64 24 33 61 10 26 13 35 + .byte $31, $62, $66, $37, $26, $12, $45, $54, $14, $35, $55, $16, $42, $34, $45, $15 ; CPU:$F4F0 PRG:74F0 31 62 66 37 26 12 45 54 14 35 55 16 42 34 45 15 + .byte $54, $66, $35, $17, $25, $65, $43, $63, $46, $15, $32, $64, $32, $47, $33, $66 ; CPU:$F500 PRG:7500 54 66 35 17 25 65 43 63 46 15 32 64 32 47 33 66 + .byte $46, $20, $56, $45, $66, $25, $21, $23, $13, $26, $45, $14, $51, $46, $17, $43 ; CPU:$F510 PRG:7510 46 20 56 45 66 25 21 23 13 26 45 14 51 46 17 43 + .byte $56, $34, $16, $63, $55, $66, $25, $37, $15, $30, $36, $47, $15, $57, $41, $27 ; CPU:$F520 PRG:7520 56 34 16 63 55 66 25 37 15 30 36 47 15 57 41 27 + .byte $25, $67, $24, $36, $13, $37, $54, $27, $21, $16, $44, $57, $36, $44, $50, $17 ; CPU:$F530 PRG:7530 25 67 24 36 13 37 54 27 21 16 44 57 36 44 50 17 + .byte $33, $65, $41, $43, $12, $55, $46, $16, $45, $23, $65, $53, $47, $26, $51, $35 ; CPU:$F540 PRG:7540 33 65 41 43 12 55 46 16 45 23 65 53 47 26 51 35 + .byte $46, $62, $57, $22, $27, $40, $67, $52, $67, $35, $36, $60, $24, $56, $65, $51 ; CPU:$F550 PRG:7550 46 62 57 22 27 40 67 52 67 35 36 60 24 56 65 51 + .byte $44, $23, $25, $53, $64, $50, $17, $55, $46, $17, $40, $51, $34, $47, $53, $60 ; CPU:$F560 PRG:7560 44 23 25 53 64 50 17 55 46 17 40 51 34 47 53 60 + .byte $54, $27, $63, $10, $37, $20, $17, $27, $14, $41, $30, $26, $35, $36, $20, $16 ; CPU:$F570 PRG:7570 54 27 63 10 37 20 17 27 14 41 30 26 35 36 20 16 + .byte $55, $14, $40, $12, $24, $52, $17, $21, $37, $54, $21, $63, $14, $46, $30, $13 ; CPU:$F580 PRG:7580 55 14 40 12 24 52 17 21 37 54 21 63 14 46 30 13 + .byte $34, $26, $44, $11, $36, $23, $65, $42, $64, $50, $25, $45, $16, $12, $41, $56 ; CPU:$F590 PRG:7590 34 26 44 11 36 23 65 42 64 50 25 45 16 12 41 56 + .byte $31, $32, $47, $53, $35, $45, $30, $10, $27, $52, $24, $13, $36, $11, $57, $23 ; CPU:$F5A0 PRG:75A0 31 32 47 53 35 45 30 10 27 52 24 13 36 11 57 23 + .byte $42, $21, $65, $25, $66, $16, $46, $31, $26, $62, $47, $22, $43, $67, $60, $37 ; CPU:$F5B0 PRG:75B0 42 21 65 25 66 16 46 31 26 62 47 22 43 67 60 37 + .byte $55, $62, $33, $57, $44, $15, $62, $27, $65, $22, $61, $67, $25, $66, $51, $57 ; CPU:$F5C0 PRG:75C0 55 62 33 57 44 15 62 27 65 22 61 67 25 66 51 57 + .byte $37, $57, $47, $15, $43, $37, $35, $45, $67, $56, $65, $15, $46, $56, $32, $43 ; CPU:$F5D0 PRG:75D0 37 57 47 15 43 37 35 45 67 56 65 15 46 56 32 43 + .byte $61, $33, $66, $67, $44, $45, $22, $41, $16, $43, $21, $55, $14, $55, $23, $10 ; CPU:$F5E0 PRG:75E0 61 33 66 67 44 45 22 41 16 43 21 55 14 55 23 10 + .byte $42, $13, $61, $56, $54, $37, $26, $66, $44, $67, $12, $17, $15, $65, $47, $65 ; CPU:$F5F0 PRG:75F0 42 13 61 56 54 37 26 66 44 67 12 17 15 65 47 65 + .byte $65, $36, $66, $22, $37, $46, $33, $44, $65, $36, $11, $66, $63, $41, $43, $65 ; CPU:$F600 PRG:7600 65 36 66 22 37 46 33 44 65 36 11 66 63 41 43 65 + .byte $17, $35, $31, $37, $56, $62, $45, $33, $15, $42, $14, $17, $56, $14, $54, $55 ; CPU:$F610 PRG:7610 17 35 31 37 56 62 45 33 15 42 14 17 56 14 54 55 + .byte $64, $46, $27, $35, $16, $26, $53, $57, $45, $50, $15, $37, $32, $36, $11, $26 ; CPU:$F620 PRG:7620 64 46 27 35 16 26 53 57 45 50 15 37 32 36 11 26 + .byte $17, $34, $56, $67, $35, $24, $36, $13, $63, $65, $16, $15, $34, $61, $40, $25 ; CPU:$F630 PRG:7630 17 34 56 67 35 24 36 13 63 65 16 15 34 61 40 25 + .byte $53, $27, $46, $31, $13, $26, $55, $60, $26, $57, $66, $25, $25, $56, $47, $54 ; CPU:$F640 PRG:7640 53 27 46 31 13 26 55 60 26 57 66 25 25 56 47 54 + .byte $16, $27, $64, $25, $45, $35, $23, $46, $27, $32, $36, $53, $25, $52, $35, $24 ; CPU:$F650 PRG:7650 16 27 64 25 45 35 23 46 27 32 36 53 25 52 35 24 + .byte $66, $44, $55, $57, $7C, $F6, $FF, $FF, $7F, $F6, $FF, $FF, $82, $F6, $FF, $FF ; CPU:$F660 PRG:7660 66 44 55 57 7C F6 FF FF 7F F6 FF FF 82 F6 FF FF + .byte $85, $F6, $FF, $FF, $88, $F6, $FF, $FF, $8B, $F6, $FF, $FF, $01, $01, $79, $01 ; CPU:$F670 PRG:7670 85 F6 FF FF 88 F6 FF FF 8B F6 FF FF 01 01 79 01 + .byte $01, $7A, $01, $01, $7B, $01, $01, $7C, $01, $01, $7D, $02, $02, $7E, $7F, $80 ; CPU:$F680 PRG:7680 01 7A 01 01 7B 01 01 7C 01 01 7D 02 02 7E 7F 80 + .byte $81, $95, $F6, $FF, $FF, $04, $04, $69, $6A, $6B, $6C, $6D, $6E, $6F, $70, $71 ; CPU:$F690 PRG:7690 81 95 F6 FF FF 04 04 69 6A 6B 6C 6D 6E 6F 70 71 + .byte $72, $73, $74, $75, $76, $77, $78, $AB, $F6, $EB, $F6, $55, $C5, $C5, $C5, $45 ; CPU:$F6A0 PRG:76A0 72 73 74 75 76 77 78 AB F6 EB F6 55 C5 C5 C5 45 + .byte $55, $55, $55, $55, $00, $00, $00, $44, $54, $54, $57, $55, $00, $00, $00, $44 ; CPU:$F6B0 PRG:76B0 55 55 55 55 00 00 00 44 54 54 57 55 00 00 00 44 + .byte $55, $55, $55, $55, $00, $00, $00, $44, $55, $55, $55, $55, $00, $00, $00, $44 ; CPU:$F6C0 PRG:76C0 55 55 55 55 00 00 00 44 55 55 55 55 00 00 00 44 + .byte $55, $55, $55, $55, $00, $00, $00, $44, $DD, $FF, $55, $55, $AA, $22, $00, $44 ; CPU:$F6D0 PRG:76D0 55 55 55 55 00 00 00 44 DD FF 55 55 AA 22 00 44 + .byte $5D, $53, $55, $F5, $AA, $AA, $AA, $26, $F5, $F5, $F5, $D5, $F5, $F5, $F5, $D5 ; CPU:$F6E0 PRG:76E0 5D 53 55 F5 AA AA AA 26 F5 F5 F5 D5 F5 F5 F5 D5 + .byte $F5, $F5, $F5, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD ; CPU:$F6F0 PRG:76F0 F5 F5 F5 DD FF FF FF DD FF FF FF DD FF FF FF DD + .byte $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD ; CPU:$F700 PRG:7700 FF FF FF DD FF FF FF DD FF FF FF DD FF FF FF DD + .byte $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $55, $55, $55, $55, $55 ; CPU:$F710 PRG:7710 FF FF FF DD FF FF FF DD FF FF FF 55 55 55 55 55 + .byte $55, $55, $55, $55, $55, $55, $55, $55, $55, $55, $55, $44, $20, $84, $20, $C4 ; CPU:$F720 PRG:7720 55 55 55 55 55 55 55 55 55 55 55 44 20 84 20 C4 + .byte $20, $04, $21, $44, $21, $84, $21, $C4, $21, $04, $22, $44, $22, $84, $22, $C4 ; CPU:$F730 PRG:7730 20 04 21 44 21 84 21 C4 21 04 22 44 22 84 22 C4 + .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $66, $20, $A6, $20, $E6 ; CPU:$F740 PRG:7740 22 50 24 50 24 50 24 50 24 50 24 66 20 A6 20 E6 + .byte $20, $26, $21, $66, $21, $A6, $21, $E6, $21, $26, $22, $66, $22, $A6, $22, $E6 ; CPU:$F750 PRG:7750 20 26 21 66 21 A6 21 E6 21 26 22 66 22 A6 22 E6 + .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $48, $20, $88, $20, $C8 ; CPU:$F760 PRG:7760 22 50 24 50 24 50 24 50 24 50 24 48 20 88 20 C8 + .byte $20, $08, $21, $48, $21, $88, $21, $C8, $21, $08, $22, $48, $22, $88, $22, $C8 ; CPU:$F770 PRG:7770 20 08 21 48 21 88 21 C8 21 08 22 48 22 88 22 C8 + .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $6A, $20, $AA, $20, $EA ; CPU:$F780 PRG:7780 22 50 24 50 24 50 24 50 24 50 24 6A 20 AA 20 EA + .byte $20, $2A, $21, $6A, $21, $AA, $21, $EA, $21, $2A, $22, $6A, $22, $AA, $22, $EA ; CPU:$F790 PRG:7790 20 2A 21 6A 21 AA 21 EA 21 2A 22 6A 22 AA 22 EA + .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $4C, $20, $8C, $20, $CC ; CPU:$F7A0 PRG:77A0 22 50 24 50 24 50 24 50 24 50 24 4C 20 8C 20 CC + .byte $20, $0C, $21, $4C, $21, $8C, $21, $CC, $21, $0C, $22, $4C, $22, $8C, $22, $CC ; CPU:$F7B0 PRG:77B0 20 0C 21 4C 21 8C 21 CC 21 0C 22 4C 22 8C 22 CC + .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $6E, $20, $AE, $20, $EE ; CPU:$F7C0 PRG:77C0 22 50 24 50 24 50 24 50 24 50 24 6E 20 AE 20 EE + .byte $20, $2E, $21, $6E, $21, $AE, $21, $EE, $21, $2E, $22, $6E, $22, $AE, $22, $EE ; CPU:$F7D0 PRG:77D0 20 2E 21 6E 21 AE 21 EE 21 2E 22 6E 22 AE 22 EE + .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $50, $20, $90, $20, $D0 ; CPU:$F7E0 PRG:77E0 22 50 24 50 24 50 24 50 24 50 24 50 20 90 20 D0 + .byte $20, $10, $21, $50, $21, $90, $21, $D0, $21, $10, $22, $50, $22, $90, $22, $D0 ; CPU:$F7F0 PRG:77F0 20 10 21 50 21 90 21 D0 21 10 22 50 22 90 22 D0 + .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $04, $01, $F8, $4F, $4F ; CPU:$F800 PRG:7800 22 50 24 50 24 50 24 50 24 50 24 04 01 F8 4F 4F + .byte $44, $04, $02, $F8, $41, $4D, $45, $4F, $F9, $45, $52, $03, $01, $55, $55, $55 ; CPU:$F810 PRG:7810 44 04 02 F8 41 4D 45 4F F9 45 52 03 01 55 55 55 + .byte $03, $01, $FF, $FF, $FF, $08, $02, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F820 PRG:7820 03 01 FF FF FF 08 02 FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $07, $01, $53, $54, $41, $F8, $45, $FF, $D4 ; CPU:$F830 PRG:7830 FF FF FF FF FF FF FF 07 01 53 54 41 F8 45 FF D4 + .byte $05, $01, $3C, $41, $55, $53, $45, $08, $22, $4F, $F8, $E1, $23, $1B, $F8, $08 ; CPU:$F840 PRG:7840 05 01 3C 41 55 53 45 08 22 4F F8 E1 23 1B F8 08 + .byte $03, $45, $D5, $44, $FF, $FF, $FF, $FF, $FF, $43, $4F, $D5, $54, $49, $D5, $55 ; CPU:$F850 PRG:7850 03 45 D5 44 FF FF FF FF FF 43 4F D5 54 49 D5 55 + .byte $45, $43, $52, $45, $44, $49, $54, $FF, $FF, $08, $22, $25, $F8, $28, $22, $25 ; CPU:$F860 PRG:7860 45 43 52 45 44 49 54 FF FF 08 22 25 F8 28 22 25 + .byte $F8, $E1, $23, $20, $F8, $05, $04, $03, $02, $01, $00, $EF, $FF, $0F, $10, $01 ; CPU:$F870 PRG:7870 F8 E1 23 20 F8 05 04 03 02 01 00 EF FF 0F 10 01 + .byte $F0, $F1, $FF, $11, $10, $01, $F0, $00, $F0, $04, $F2, $08, $F4, $0C, $F6, $10 ; CPU:$F880 PRG:7880 F0 F1 FF 11 10 01 F0 00 F0 04 F2 08 F4 0C F6 10 + .byte $F8, $10, $FC, $10, $00, $10, $04, $10, $08, $0C, $0A, $08, $0C, $04, $0E, $00 ; CPU:$F890 PRG:7890 F8 10 FC 10 00 10 04 10 08 0C 0A 08 0C 04 0E 00 + .byte $10, $FC, $0E, $F8, $0C, $F4, $0A, $F0, $08, $F0, $04, $F0, $00, $F0, $FC, $F0 ; CPU:$F8A0 PRG:78A0 10 FC 0E F8 0C F4 0A F0 08 F0 04 F0 00 F0 FC F0 + .byte $F8, $F4, $F6, $F8, $F4, $FC, $F2, $04, $01, $55, $55, $55, $55, $E5, $F8, $FA ; CPU:$F8B0 PRG:78B0 F8 F4 F6 F8 F4 FC F2 04 01 55 55 55 55 E5 F8 FA + .byte $F8, $0F, $F9, $24, $F9, $39, $F9, $55, $F9, $71, $F9, $8D, $F9, $A9, $F9, $CC ; CPU:$F8C0 PRG:78C0 F8 0F F9 24 F9 39 F9 55 F9 71 F9 8D F9 A9 F9 CC + .byte $F9, $EF, $F9, $12, $FA, $35, $FA, $5F, $FA, $89, $FA, $B3, $FA, $DD, $FA, $0E ; CPU:$F8D0 PRG:78D0 F9 EF F9 12 FA 35 FA 5F FA 89 FA B3 FA DD FA 0E + .byte $FB, $3F, $FB, $70, $FB, $03, $01, $00, $02, $04, $00, $04, $03, $00, $01, $04 ; CPU:$F8E0 PRG:78E0 FB 3F FB 70 FB 03 01 00 02 04 00 04 03 00 01 04 + .byte $00, $03, $02, $00, $04, $03, $00, $02, $01, $00, $04, $03, $00, $01, $02, $00 ; CPU:$F8F0 PRG:78F0 00 03 02 00 04 03 00 02 01 00 04 03 00 01 02 00 + .byte $04, $03, $00, $02, $01, $00, $80, $03, $00, $01, $02, $00, $03, $04, $00, $02 ; CPU:$F900 PRG:7900 04 03 00 02 01 00 80 03 00 01 02 00 03 04 00 02 + .byte $01, $00, $04, $03, $00, $80, $04, $00, $01, $02, $00, $04, $03, $00, $02, $01 ; CPU:$F910 PRG:7910 01 00 04 03 00 80 04 00 01 02 00 04 03 00 02 01 + .byte $00, $04, $02, $00, $03, $02, $00, $04, $01, $00, $02, $03, $00, $04, $01, $00 ; CPU:$F920 PRG:7920 00 04 02 00 03 02 00 04 01 00 02 03 00 04 01 00 + .byte $80, $02, $00, $03, $01, $00, $04, $02, $00, $02, $01, $03, $00, $04, $80, $02 ; CPU:$F930 PRG:7930 80 02 00 03 01 00 04 02 00 02 01 03 00 04 80 02 + .byte $00, $02, $04, $01, $00, $03, $02, $03, $00, $80, $01, $04, $00, $04, $02, $03 ; CPU:$F940 PRG:7940 00 02 04 01 00 03 02 03 00 80 01 04 00 04 02 03 + .byte $00, $03, $01, $04, $00, $02, $03, $01, $00, $01, $04, $02, $00, $02, $04, $01 ; CPU:$F950 PRG:7950 00 03 01 04 00 02 03 01 00 01 04 02 00 02 04 01 + .byte $00, $03, $80, $02, $00, $02, $01, $03, $00, $03, $80, $02, $00, $02, $04, $01 ; CPU:$F960 PRG:7960 00 03 80 02 00 02 01 03 00 03 80 02 00 02 04 01 + .byte $00, $02, $01, $04, $00, $04, $03, $01, $00, $80, $02, $04, $00, $01, $03, $01 ; CPU:$F970 PRG:7970 00 02 01 04 00 04 03 01 00 80 02 04 00 01 03 01 + .byte $00, $02, $80, $04, $00, $04, $03, $01, $00, $01, $02, $04, $00, $02, $04, $03 ; CPU:$F980 PRG:7980 00 02 80 04 00 04 03 01 00 01 02 04 00 02 04 03 + .byte $00, $01, $80, $01, $00, $04, $03, $02, $00, $02, $80, $04, $00, $01, $03, $02 ; CPU:$F990 PRG:7990 00 01 80 01 00 04 03 02 00 02 80 04 00 01 03 02 + .byte $00, $03, $04, $01, $00, $02, $01, $03, $00, $04, $04, $03, $02, $00, $01, $80 ; CPU:$F9A0 PRG:79A0 00 03 04 01 00 02 01 03 00 04 04 03 02 00 01 80 + .byte $02, $04, $00, $04, $03, $01, $02, $00, $02, $80, $04, $03, $00, $03, $01, $02 ; CPU:$F9B0 PRG:79B0 02 04 00 04 03 01 02 00 02 80 04 03 00 03 01 02 + .byte $04, $00, $04, $04, $03, $01, $00, $01, $80, $04, $02, $00, $03, $04, $03, $02 ; CPU:$F9C0 PRG:79C0 04 00 04 04 03 01 00 01 80 04 02 00 03 04 03 02 + .byte $00, $02, $01, $80, $04, $00, $01, $80, $03, $02, $00, $03, $02, $01, $04, $00 ; CPU:$F9D0 PRG:79D0 00 02 01 80 04 00 01 80 03 02 00 03 02 01 04 00 + .byte $04, $01, $03, $02, $00, $80, $02, $04, $01, $00, $03, $01, $03, $02, $00, $01 ; CPU:$F9E0 PRG:79E0 04 01 03 02 00 80 02 04 01 00 03 01 03 02 00 01 + .byte $02, $04, $03, $00, $03, $04, $01, $02, $00, $80, $80, $03, $04, $00, $04, $01 ; CPU:$F9F0 PRG:79F0 02 04 03 00 03 04 01 02 00 80 80 03 04 00 04 01 + .byte $02, $01, $00, $03, $01, $80, $03, $00, $03, $02, $01, $04, $00, $01, $04, $02 ; CPU:$FA00 PRG:7A00 02 01 00 03 01 80 03 00 03 02 01 04 00 01 04 02 + .byte $03, $00, $01, $01, $02, $04, $00, $04, $03, $01, $03, $00, $03, $02, $04, $02 ; CPU:$FA10 PRG:7A10 03 00 01 01 02 04 00 04 03 01 03 00 03 02 04 02 + .byte $00, $01, $80, $03, $01, $00, $02, $80, $02, $04, $00, $04, $01, $03, $04, $00 ; CPU:$FA20 PRG:7A20 00 01 80 03 01 00 02 80 02 04 00 04 01 03 04 00 + .byte $03, $02, $80, $02, $00, $04, $02, $01, $02, $03, $00, $03, $80, $04, $04, $01 ; CPU:$FA30 PRG:7A30 03 02 80 02 00 04 02 01 02 03 00 03 80 04 04 01 + .byte $00, $04, $02, $03, $80, $02, $00, $03, $01, $04, $01, $03, $00, $02, $80, $80 ; CPU:$FA40 PRG:7A40 00 04 02 03 80 02 00 03 01 04 01 03 00 02 80 80 + .byte $02, $04, $00, $01, $04, $02, $03, $02, $00, $03, $80, $01, $01, $04, $00, $04 ; CPU:$FA50 PRG:7A50 02 04 00 01 04 02 03 02 00 03 80 01 01 04 00 04 + .byte $01, $02, $03, $01, $00, $02, $03, $01, $80, $02, $00, $01, $80, $04, $03, $04 ; CPU:$FA60 PRG:7A60 01 02 03 01 00 02 03 01 80 02 00 01 80 04 03 04 + .byte $00, $04, $02, $01, $80, $02, $00, $03, $01, $03, $04, $01, $00, $04, $02, $80 ; CPU:$FA70 PRG:7A70 00 04 02 01 80 02 00 03 01 03 04 01 00 04 02 80 + .byte $02, $03, $00, $01, $03, $80, $04, $02, $00, $02, $01, $03, $04, $01, $00, $03 ; CPU:$FA80 PRG:7A80 02 03 00 01 03 80 04 02 00 02 01 03 04 01 00 03 + .byte $80, $04, $02, $03, $00, $02, $02, $03, $01, $04, $00, $01, $04, $80, $02, $03 ; CPU:$FA90 PRG:7A90 80 04 02 03 00 02 02 03 01 04 00 01 04 80 02 03 + .byte $00, $02, $80, $03, $04, $01, $00, $03, $01, $02, $80, $02, $00, $02, $04, $03 ; CPU:$FAA0 PRG:7AA0 00 02 80 03 04 01 00 03 01 02 80 02 00 02 04 03 + .byte $01, $03, $00, $04, $04, $01, $02, $03, $00, $02, $03, $80, $01, $04, $00, $01 ; CPU:$FAB0 PRG:7AB0 01 03 00 04 04 01 02 03 00 02 03 80 01 04 00 01 + .byte $01, $02, $03, $02, $00, $04, $03, $80, $01, $03, $00, $01, $80, $02, $04, $02 ; CPU:$FAC0 PRG:7AC0 01 02 03 02 00 04 03 80 01 03 00 01 80 02 04 02 + .byte $00, $03, $02, $01, $80, $01, $00, $04, $01, $03, $02, $04, $00, $01, $02, $03 ; CPU:$FAD0 PRG:7AD0 00 03 02 01 80 01 00 04 01 03 02 04 00 01 02 03 + .byte $04, $03, $02, $00, $03, $80, $04, $01, $03, $04, $00, $01, $01, $03, $04, $80 ; CPU:$FAE0 PRG:7AE0 04 03 02 00 03 80 04 01 03 04 00 01 01 03 04 80 + .byte $01, $00, $02, $04, $80, $01, $03, $04, $00, $03, $01, $02, $80, $04, $01, $00 ; CPU:$FAF0 PRG:7AF0 01 00 02 04 80 01 03 04 00 03 01 02 80 04 01 00 + .byte $02, $04, $03, $01, $02, $03, $00, $03, $01, $80, $03, $04, $01, $00, $04, $02 ; CPU:$FB00 PRG:7B00 02 04 03 01 02 03 00 03 01 80 03 04 01 00 04 02 + .byte $01, $03, $04, $04, $00, $01, $03, $04, $80, $02, $03, $00, $04, $02, $01, $80 ; CPU:$FB10 PRG:7B10 01 03 04 04 00 01 03 04 80 02 03 00 04 02 01 80 + .byte $03, $01, $00, $01, $04, $02, $80, $02, $01, $00, $04, $03, $01, $80, $03, $04 ; CPU:$FB20 PRG:7B20 03 01 00 01 04 02 80 02 01 00 04 03 01 80 03 04 + .byte $00, $01, $02, $03, $80, $02, $01, $00, $02, $04, $01, $04, $03, $04, $00, $03 ; CPU:$FB30 PRG:7B30 00 01 02 03 80 02 01 00 02 04 01 04 03 04 00 03 + .byte $01, $80, $01, $04, $03, $00, $02, $80, $04, $03, $02, $01, $00, $02, $04, $02 ; CPU:$FB40 PRG:7B40 01 80 01 04 03 00 02 80 04 03 02 01 00 02 04 02 + .byte $01, $04, $02, $00, $03, $01, $03, $02, $03, $01, $00, $02, $80, $04, $80, $04 ; CPU:$FB50 PRG:7B50 01 04 02 00 03 01 03 02 03 01 00 02 80 04 80 04 + .byte $02, $00, $03, $01, $02, $80, $03, $01, $00, $02, $03, $04, $02, $04, $03, $00 ; CPU:$FB60 PRG:7B60 02 00 03 01 02 80 03 01 00 02 03 04 02 04 03 00 + .byte $03, $01, $02, $04, $01, $04, $00, $02, $04, $01, $03, $02, $03, $00, $03, $03 ; CPU:$FB70 PRG:7B70 03 01 02 04 01 04 00 02 04 01 03 02 03 00 03 03 + .byte $02, $01, $04, $01, $00, $01, $80, $04, $03, $02, $03, $00, $80, $80, $02, $01 ; CPU:$FB80 PRG:7B80 02 01 04 01 00 01 80 04 03 02 03 00 80 80 02 01 + .byte $04, $02, $00, $02, $04, $03, $80, $80, $01, $00, $03, $01, $02, $01, $04, $03 ; CPU:$FB90 PRG:7B90 04 02 00 02 04 03 80 80 01 00 03 01 02 01 04 03 + .byte $00, $04, $01, $30, $30, $30, $30, $06, $01, $30, $30, $30, $30, $30, $30, $0A ; CPU:$FBA0 PRG:7BA0 00 04 01 30 30 30 30 06 01 30 30 30 30 30 30 0A + .byte $02, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBB0 PRG:7BB0 02 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBC0 PRG:7BC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBD0 PRG:7BD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBE0 PRG:7BE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBF0 PRG:7BF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC00 PRG:7C00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC10 PRG:7C10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC20 PRG:7C20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC30 PRG:7C30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC40 PRG:7C40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC50 PRG:7C50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC60 PRG:7C60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC70 PRG:7C70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC80 PRG:7C80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC90 PRG:7C90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCA0 PRG:7CA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCB0 PRG:7CB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCC0 PRG:7CC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCD0 PRG:7CD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCE0 PRG:7CE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCF0 PRG:7CF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD00 PRG:7D00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD10 PRG:7D10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD20 PRG:7D20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD30 PRG:7D30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD40 PRG:7D40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD50 PRG:7D50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD60 PRG:7D60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD70 PRG:7D70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD80 PRG:7D80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD90 PRG:7D90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDA0 PRG:7DA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDB0 PRG:7DB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDC0 PRG:7DC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDD0 PRG:7DD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDE0 PRG:7DE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDF0 PRG:7DF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE00 PRG:7E00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE10 PRG:7E10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE20 PRG:7E20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE30 PRG:7E30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE40 PRG:7E40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE50 PRG:7E50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE60 PRG:7E60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE70 PRG:7E70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE80 PRG:7E80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE90 PRG:7E90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEA0 PRG:7EA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEB0 PRG:7EB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEC0 PRG:7EC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FED0 PRG:7ED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEE0 PRG:7EE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEF0 PRG:7EF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +; ----------------------------------------------------------------------------- +; Routine: Reset +; Global: Power-on entry: sets up the stack, clears the PPU and starts the bank switch. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Reset: + ldx #$FF ; CPU:$FF00 PRG:7F00 A2 FF + txs ; CPU:$FF02 PRG:7F02 9A + sei ; CPU:$FF03 PRG:7F03 78 + cld ; CPU:$FF04 PRG:7F04 D8 + lda #$00 ; CPU:$FF05 PRG:7F05 A9 00 + sta PPUCTRL ; CPU:$FF07 PRG:7F07 8D 00 20 + sta PPUMASK ; CPU:$FF0A PRG:7F0A 8D 01 20 + lda #$30 ; CPU:$FF0D PRG:7F0D A9 30 + jsr WritePrgBankReg ; CPU:$FF0F PRG:7F0F 20 49 FF + jsr WaitForBankSwitch ; CPU:$FF12 PRG:7F12 20 57 FF + bcc SelectChrBanks ; CPU:$FF15 PRG:7F15 90 18 + lda #$10 ; CPU:$FF17 PRG:7F17 A9 10 + jsr WritePrgBankReg ; CPU:$FF19 PRG:7F19 20 49 FF + lda #$30 ; CPU:$FF1C PRG:7F1C A9 30 + jsr WritePrgBankReg ; CPU:$FF1E PRG:7F1E 20 49 FF + jsr DelayOuterLoop ; CPU:$FF21 PRG:7F21 20 4C FF + jsr DelayOuterLoop ; CPU:$FF24 PRG:7F24 20 4C FF + lda #$10 ; CPU:$FF27 PRG:7F27 A9 10 + jsr WritePrgBankReg ; CPU:$FF29 PRG:7F29 20 49 FF + jmp StartGame ; CPU:$FF2C PRG:7F2C 4C 3E FF +; ----------------------------------------------------------------------------- +; Routine: SelectChrBanks +; Global: Picks the CHR banks for the stage that is about to be drawn. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SelectChrBanks: + lda #$20 ; CPU:$FF2F PRG:7F2F A9 20 + jsr WritePrgBankReg ; CPU:$FF31 PRG:7F31 20 49 FF + lda #$30 ; CPU:$FF34 PRG:7F34 A9 30 + jsr WritePrgBankReg ; CPU:$FF36 PRG:7F36 20 49 FF + lda #$20 ; CPU:$FF39 PRG:7F39 A9 20 + jsr WritePrgBankReg ; CPU:$FF3B PRG:7F3B 20 49 FF +; ----------------------------------------------------------------------------- +; Routine: StartGame +; Global: Switches to the first PRG bank and hands over to the game code. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +StartGame: + lda #$30 ; CPU:$FF3E PRG:7F3E A9 30 + sta $4100 ; CPU:$FF40 PRG:7F40 8D 00 41 + jsr StartBankSwitchDelay ; CPU:$FF43 PRG:7F43 20 62 FF + jmp InitializeGame ; CPU:$FF46 PRG:7F46 4C 36 80 +; ----------------------------------------------------------------------------- +; Routine: WritePrgBankReg +; Global: Writes the MMC3 PRG bank register at $4100. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +WritePrgBankReg: + sta $4100 ; CPU:$FF49 PRG:7F49 8D 00 41 +; ----------------------------------------------------------------------------- +; Routine: DelayOuterLoop +; Global: Outer half of the power-on delay loop. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DelayOuterLoop: + ldy #$04 ; CPU:$FF4C PRG:7F4C A0 04 +; ----------------------------------------------------------------------------- +; Routine: DelayOuterLoop_OnNonzero +; Global: Branch target inside DelayOuterLoop: taken when the tested value is not zero. +; Local: Part of DelayOuterLoop. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DelayOuterLoop_OnNonzero: + ldx #$CE ; CPU:$FF4E PRG:7F4E A2 CE +; ----------------------------------------------------------------------------- +; Routine: DelayInnerLoop +; Global: Inner half of the power-on delay loop. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +DelayInnerLoop: + dex ; CPU:$FF50 PRG:7F50 CA + bne DelayInnerLoop ; CPU:$FF51 PRG:7F51 D0 FD + dey ; CPU:$FF53 PRG:7F53 88 + bne DelayOuterLoop_OnNonzero ; CPU:$FF54 PRG:7F54 D0 F8 + rts ; CPU:$FF56 PRG:7F56 60 +; ----------------------------------------------------------------------------- +; Routine: WaitForBankSwitch +; Global: Waits for the bank switch counter to run out. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +WaitForBankSwitch: + lda #$41 ; CPU:$FF57 PRG:7F57 A9 41 + cmp $07F0 ; CPU:$FF59 PRG:7F59 CD F0 07 + bne WaitForBankSwitch_Loop ; CPU:$FF5C PRG:7F5C D0 02 + sec ; CPU:$FF5E PRG:7F5E 38 + rts ; CPU:$FF5F PRG:7F5F 60 +; ----------------------------------------------------------------------------- +; Routine: WaitForBankSwitch_Loop +; Global: Branch target inside WaitForBankSwitch: taken when the loop repeats. +; Local: Part of WaitForBankSwitch. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +WaitForBankSwitch_Loop: + clc ; CPU:$FF60 PRG:7F60 18 + rts ; CPU:$FF61 PRG:7F61 60 +; ----------------------------------------------------------------------------- +; Routine: StartBankSwitchDelay +; Global: Starts the bank switch delay counter. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +StartBankSwitchDelay: + lda #$41 ; CPU:$FF62 PRG:7F62 A9 41 + sta $07F0 ; CPU:$FF64 PRG:7F64 8D F0 07 + rts ; CPU:$FF67 PRG:7F67 60 +; ---- data $FF68-$FF6F (8 bytes) ---- + .byte $A9, $5A, $8D, $F0, $07, $60, $FF, $FF ; CPU:$FF68 PRG:7F68 A9 5A 8D F0 07 60 FF FF +; ----------------------------------------------------------------------------- +; Routine: SwitchPrgBank +; Global: Writes A to the MMC3 PRG bank register with the mode bits forced on. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SwitchPrgBank: + ora #$30 ; CPU:$FF70 PRG:7F70 09 30 + sta $4100 ; CPU:$FF72 PRG:7F72 8D 00 41 + rts ; CPU:$FF75 PRG:7F75 60 +; ---- data $FF76-$FF7F (10 bytes) ---- + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF76 PRG:7F76 FF FF FF FF FF FF FF FF FF FF +; ----------------------------------------------------------------------------- +; Routine: SwitchPrgBankKeepA +; Global: Writes X to the MMC3 PRG bank register and keeps A. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +SwitchPrgBankKeepA: + pha ; CPU:$FF80 PRG:7F80 48 + txa ; CPU:$FF81 PRG:7F81 8A + ora #$30 ; CPU:$FF82 PRG:7F82 09 30 + sta $4100 ; CPU:$FF84 PRG:7F84 8D 00 41 + pla ; CPU:$FF87 PRG:7F87 68 + rts ; CPU:$FF88 PRG:7F88 60 +; ---- data $FF89-$FFFF (119 bytes) ---- + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF89 PRG:7F89 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF99 PRG:7F99 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFA9 PRG:7FA9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFB9 PRG:7FB9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFC9 PRG:7FC9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFD9 PRG:7FD9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFE9 PRG:7FE9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $8F, $80, $00, $FF, $36, $80 ; CPU:$FFF9 PRG:7FF9 FF 8F 80 00 FF 36 80 +.segment "PRG4" +.org $8000 + +; ---- data $8000-$800C (13 bytes) ---- + .byte $EA, $EA, $86, $2C, $85, $2D, $A5, $2C, $29, $07, $20, $1B, $80 ; CPU:$8000 PRG:8000 EA EA 86 2C 85 2D A5 2C 29 07 20 1B 80 +; ----------------------------------------------------------------------------- +; Routine: Bank4_CallBankedHandler +; Global: Switches the PRG bank and dispatches to the handler the caller named. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_CallBankedHandler: + jsr Bank4_Sub_8088 ; CPU:$800D PRG:800D 20 88 80 + lda PrgBankNumber ; CPU:$8010 PRG:8010 A5 2C + and #$07 ; CPU:$8012 PRG:8012 29 07 + jmp Bank4_Sub_801B ; CPU:$8014 PRG:8014 4C 1B 80 +; ---- data $8017-$801A (4 bytes) ---- + .byte $85, $2C, $09, $08 ; CPU:$8017 PRG:8017 85 2C 09 08 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Sub_801B +; Global: Branch target inside Bank4_Sub: taken when 801B. +; Local: Part of Bank4_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Sub_801B: + tax ; CPU:$801B PRG:801B AA + jsr SwitchPrgBank ; CPU:$801C PRG:801C 20 70 FF + lda $8026,x ; CPU:$801F PRG:801F BD 26 80 + sta $8026,x ; CPU:$8022 PRG:8022 9D 26 80 + rts ; CPU:$8025 PRG:8025 60 +; ---- data $8026-$8087 (98 bytes) ---- +; referenced by `lda $8026,x` at $801F (operand $8026 falls inside this region) +; referenced by `sta $8026,x` at $8022 (operand $8026 falls inside this region) + .byte $00, $01, $02, $03, $04, $05, $06, $07, $10, $11, $12, $13, $14, $15, $16, $17 ; CPU:$8026 PRG:8026 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 + .byte $78, $D8, $AD, $02, $20, $10, $FB, $A9, $00, $8D, $00, $20, $8D, $01, $20, $A2 ; CPU:$8036 PRG:8036 78 D8 AD 02 20 10 FB A9 00 8D 00 20 8D 01 20 A2 + .byte $FF, $9A, $A9, $00, $20, $1B, $80, $A9, $00, $85, $00, $85, $01, $A0, $02, $A2 ; CPU:$8046 PRG:8046 FF 9A A9 00 20 1B 80 A9 00 85 00 85 01 A0 02 A2 + .byte $06, $91, $00, $C8, $E0, $00, $D0, $04, $C0, $E0, $B0, $09, $C0, $00, $D0, $F1 ; CPU:$8056 PRG:8056 06 91 00 C8 E0 00 D0 04 C0 E0 B0 09 C0 00 D0 F1 + .byte $E6, $01, $CA, $10, $EC, $85, $00, $85, $01, $A9, $00, $8D, $15, $40, $A9, $1E ; CPU:$8066 PRG:8066 E6 01 CA 10 EC 85 00 85 01 A9 00 8D 15 40 A9 1E + .byte $85, $02, $A9, $88, $8D, $00, $20, $85, $01, $A9, $01, $85, $6A, $E6, $2F, $4C ; CPU:$8076 PRG:8076 85 02 A9 88 8D 00 20 85 01 A9 01 85 6A E6 2F 4C + .byte $83, $80 ; CPU:$8086 PRG:8086 83 80 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Sub_8088 +; Global: Branch target inside Bank4_Sub: taken when 8088. +; Local: Part of Bank4_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Sub_8088: + lda HandlerIndex ; CPU:$8088 PRG:8088 A5 2D + asl a ; CPU:$808A PRG:808A 0A + tay ; CPU:$808B PRG:808B A8 + lda $8096,y ; CPU:$808C PRG:808C B9 96 80 + pha ; CPU:$808F PRG:808F 48 + lda $8095,y ; CPU:$8090 PRG:8090 B9 95 80 + pha ; CPU:$8093 PRG:8093 48 + rts ; CPU:$8094 PRG:8094 60 +; ---- data $8095-$80A6 (18 bytes) ---- +; referenced by `lda $8096,y` at $808C (operand $8096 falls inside this region) +; referenced by `lda $8095,y` at $8090 (operand $8095 falls inside this region) + .byte $A6, $80, $30, $81, $83, $A7, $19, $A7, $F0, $AA, $25, $A7, $17, $81, $4F, $AB ; CPU:$8095 PRG:8095 A6 80 30 81 83 A7 19 A7 F0 AA 25 A7 17 81 4F AB + .byte $60, $81 ; CPU:$80A5 PRG:80A5 60 81 +; ----------------------------------------------------------------------------- +; Routine: Bank4_StartVramWrite +; Global: Sets the PPU address for the next VRAM write. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_StartVramWrite: + lda Zp2E ; CPU:$80A7 PRG:80A7 A5 2E + asl a ; CPU:$80A9 PRG:80A9 0A + tax ; CPU:$80AA PRG:80AA AA + pha ; CPU:$80AB PRG:80AB 48 + lda $839A,x ; CPU:$80AC PRG:80AC BD 9A 83 + sta Zp11 ; CPU:$80AF PRG:80AF 85 11 + lda $839B,x ; CPU:$80B1 PRG:80B1 BD 9B 83 + sta Zp12 ; CPU:$80B4 PRG:80B4 85 12 + jsr Bank4_Sub_80C9 ; CPU:$80B6 PRG:80B6 20 C9 80 + pla ; CPU:$80B9 PRG:80B9 68 + tax ; CPU:$80BA PRG:80BA AA + lda $83C0,x ; CPU:$80BB PRG:80BB BD C0 83 + sta Zp11 ; CPU:$80BE PRG:80BE 85 11 + lda $83C1,x ; CPU:$80C0 PRG:80C0 BD C1 83 + sta Zp12 ; CPU:$80C3 PRG:80C3 85 12 + jsr Bank4_Sub_8118 ; CPU:$80C5 PRG:80C5 20 18 81 + rts ; CPU:$80C8 PRG:80C8 60 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Sub_80C9 +; Global: Branch target inside Bank4_Sub: taken when 80C9. +; Local: Part of Bank4_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Sub_80C9: + lda #$00 ; CPU:$80C9 PRG:80C9 A9 00 + sta PPUCTRL ; CPU:$80CB PRG:80CB 8D 00 20 + sta PPUMASK ; CPU:$80CE PRG:80CE 8D 01 20 + ldy #$00 ; CPU:$80D1 PRG:80D1 A0 00 + lda PPUSTATUS ; CPU:$80D3 PRG:80D3 AD 02 20 + lda (Zp11),y ; CPU:$80D6 PRG:80D6 B1 11 + sta PPUADDR ; CPU:$80D8 PRG:80D8 8D 06 20 + jsr Bank4_Sub_8111 ; CPU:$80DB PRG:80DB 20 11 81 + lda (Zp11),y ; CPU:$80DE PRG:80DE B1 11 + sta PPUADDR ; CPU:$80E0 PRG:80E0 8D 06 20 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_StartVramWrite_OnZero +; Global: Branch target inside Bank4_Bank4_StartVramWrite: taken when the tested value is zero. +; Local: Part of Bank4_Bank4_StartVramWrite. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_StartVramWrite_OnZero: + jsr Bank4_Sub_8111 ; CPU:$80E3 PRG:80E3 20 11 81 + lda (Zp11),y ; CPU:$80E6 PRG:80E6 B1 11 + bpl Bank4_Bank4_StartVramWrite_Loop ; CPU:$80E8 PRG:80E8 10 16 + cmp #$FF ; CPU:$80EA PRG:80EA C9 FF + beq Bank4_Bank4_StartVramWrite_Loop2 ; CPU:$80EC PRG:80EC F0 22 + and #$7F ; CPU:$80EE PRG:80EE 29 7F + sta ControllerByte ; CPU:$80F0 PRG:80F0 85 07 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_StartVramWrite_OnNonzero +; Global: Branch target inside Bank4_Bank4_StartVramWrite: taken when the tested value is not zero. +; Local: Part of Bank4_Bank4_StartVramWrite. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_StartVramWrite_OnNonzero: + jsr Bank4_Sub_8111 ; CPU:$80F2 PRG:80F2 20 11 81 + lda (Zp11),y ; CPU:$80F5 PRG:80F5 B1 11 + sta PPUDATA ; CPU:$80F7 PRG:80F7 8D 07 20 + dec ControllerByte ; CPU:$80FA PRG:80FA C6 07 + bne Bank4_Bank4_StartVramWrite_OnNonzero ; CPU:$80FC PRG:80FC D0 F4 + beq Bank4_Bank4_StartVramWrite_OnZero ; CPU:$80FE PRG:80FE F0 E3 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_StartVramWrite_Loop +; Global: Branch target inside Bank4_Bank4_StartVramWrite: taken when the loop repeats. +; Local: Part of Bank4_Bank4_StartVramWrite. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_StartVramWrite_Loop: + sta ControllerByte ; CPU:$8100 PRG:8100 85 07 + jsr Bank4_Sub_8111 ; CPU:$8102 PRG:8102 20 11 81 + lda (Zp11),y ; CPU:$8105 PRG:8105 B1 11 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_StartVramWrite_OnNonzero2 +; Global: Branch target inside Bank4_Bank4_StartVramWrite: taken when OnNonzero2. +; Local: Part of Bank4_Bank4_StartVramWrite. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_StartVramWrite_OnNonzero2: + sta PPUDATA ; CPU:$8107 PRG:8107 8D 07 20 + dec ControllerByte ; CPU:$810A PRG:810A C6 07 + bne Bank4_Bank4_StartVramWrite_OnNonzero2 ; CPU:$810C PRG:810C D0 F9 + beq Bank4_Bank4_StartVramWrite_OnZero ; CPU:$810E PRG:810E F0 D3 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_StartVramWrite_Loop2 +; Global: Branch target inside Bank4_Bank4_StartVramWrite: taken when Loop2. +; Local: Part of Bank4_Bank4_StartVramWrite. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_StartVramWrite_Loop2: + rts ; CPU:$8110 PRG:8110 60 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Sub_8111 +; Global: Branch target inside Bank4_Sub: taken when 8111. +; Local: Part of Bank4_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Sub_8111: + inc Zp11 ; CPU:$8111 PRG:8111 E6 11 + bne Bank4_Bank4_StartVramWrite_Loop3 ; CPU:$8113 PRG:8113 D0 02 + inc Zp12 ; CPU:$8115 PRG:8115 E6 12 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_StartVramWrite_Loop3 +; Global: Branch target inside Bank4_Bank4_StartVramWrite: taken when Loop3. +; Local: Part of Bank4_Bank4_StartVramWrite. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_StartVramWrite_Loop3: + rts ; CPU:$8117 PRG:8117 60 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Sub_8118 +; Global: Branch target inside Bank4_Sub: taken when 8118. +; Local: Part of Bank4_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Sub_8118: + lda PPUSTATUS ; CPU:$8118 PRG:8118 AD 02 20 + lda #$3F ; CPU:$811B PRG:811B A9 3F + sta PPUADDR ; CPU:$811D PRG:811D 8D 06 20 + lda #$00 ; CPU:$8120 PRG:8120 A9 00 + sta PPUADDR ; CPU:$8122 PRG:8122 8D 06 20 + tay ; CPU:$8125 PRG:8125 A8 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_StartVramWrite_OnCarryClear +; Global: Branch target inside Bank4_Bank4_StartVramWrite: taken when the addition or subtraction did not carry. +; Local: Part of Bank4_Bank4_StartVramWrite. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_StartVramWrite_OnCarryClear: + lda (Zp11),y ; CPU:$8126 PRG:8126 B1 11 + sta PPUDATA ; CPU:$8128 PRG:8128 8D 07 20 + iny ; CPU:$812B PRG:812B C8 + cpy #$20 ; CPU:$812C PRG:812C C0 20 + bcc Bank4_Bank4_StartVramWrite_OnCarryClear ; CPU:$812E PRG:812E 90 F6 + rts ; CPU:$8130 PRG:8130 60 +; ---- data $8131-$8160 (48 bytes) ---- + .byte $A5, $91, $0A, $AA, $BD, $8A, $81, $85, $11, $BD, $8B, $81, $85, $12, $A4, $92 ; CPU:$8131 PRG:8131 A5 91 0A AA BD 8A 81 85 11 BD 8B 81 85 12 A4 92 + .byte $B1, $11, $D0, $06, $A0, $00, $84, $92, $B1, $11, $C5, $75, $B0, $11, $A9, $00 ; CPU:$8141 PRG:8141 B1 11 D0 06 A0 00 84 92 B1 11 C5 75 B0 11 A9 00 + .byte $85, $75, $C8, $B1, $11, $85, $93, $C8, $B1, $11, $85, $94, $C8, $84, $92, $60 ; CPU:$8151 PRG:8151 85 75 C8 B1 11 85 93 C8 B1 11 85 94 C8 84 92 60 +; ----------------------------------------------------------------------------- +; Routine: Bank4_UpdateNametable +; Global: Rewrites the nametable entries that changed. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_UpdateNametable: + ldy #$00 ; CPU:$8161 PRG:8161 A0 00 + lda Zp94 ; CPU:$8163 PRG:8163 A5 94 + beq Bank4_Bank4_UpdateNametable_Loop ; CPU:$8165 PRG:8165 F0 1F +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_UpdateNametable_OnZero +; Global: Branch target inside Bank4_Bank4_UpdateNametable: taken when the tested value is zero. +; Local: Part of Bank4_Bank4_UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_UpdateNametable_OnZero: + lda (Zp93),y ; CPU:$8167 PRG:8167 B1 93 + beq Bank4_Bank4_UpdateNametable_Loop ; CPU:$8169 PRG:8169 F0 1B + sta PPUADDR ; CPU:$816B PRG:816B 8D 06 20 + iny ; CPU:$816E PRG:816E C8 + lda (Zp93),y ; CPU:$816F PRG:816F B1 93 + sta PPUADDR ; CPU:$8171 PRG:8171 8D 06 20 + iny ; CPU:$8174 PRG:8174 C8 + lda (Zp93),y ; CPU:$8175 PRG:8175 B1 93 + sta Zp11 ; CPU:$8177 PRG:8177 85 11 + iny ; CPU:$8179 PRG:8179 C8 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_UpdateNametable_OnNonzero +; Global: Branch target inside Bank4_Bank4_UpdateNametable: taken when the tested value is not zero. +; Local: Part of Bank4_Bank4_UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_UpdateNametable_OnNonzero: + lda (Zp93),y ; CPU:$817A PRG:817A B1 93 + sta PPUDATA ; CPU:$817C PRG:817C 8D 07 20 + iny ; CPU:$817F PRG:817F C8 + dec Zp11 ; CPU:$8180 PRG:8180 C6 11 + bne Bank4_Bank4_UpdateNametable_OnNonzero ; CPU:$8182 PRG:8182 D0 F6 + beq Bank4_Bank4_UpdateNametable_OnZero ; CPU:$8184 PRG:8184 F0 E1 +; ----------------------------------------------------------------------------- +; Routine: Bank4_Bank4_UpdateNametable_Loop +; Global: Branch target inside Bank4_Bank4_UpdateNametable: taken when the loop repeats. +; Local: Part of Bank4_Bank4_UpdateNametable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank4_Bank4_UpdateNametable_Loop: + sta Zp94 ; CPU:$8186 PRG:8186 85 94 + rts ; CPU:$8188 PRG:8188 60 +; ---- data $8189-$9FFF (7799 bytes) ---- +; referenced by `lda $839A,x` at $80AC (operand $839A falls inside this region) +; referenced by `lda $839B,x` at $80B1 (operand $839B falls inside this region) +; referenced by `lda $83C0,x` at $80BB (operand $83C0 falls inside this region) +; referenced by `lda $83C1,x` at $80C0 (operand $83C1 falls inside this region) + .byte $40, $A2, $81, $ED, $81, $04, $82, $37, $82, $5E, $82, $77, $82, $D6, $82, $E7 ; CPU:$8189 PRG:8189 40 A2 81 ED 81 04 82 37 82 5E 82 77 82 D6 82 E7 + .byte $82, $FE, $82, $23, $83, $38, $83, $87, $83, $18, $A9, $81, $18, $CB, $81, $00 ; CPU:$8199 PRG:8199 82 FE 82 23 83 38 83 87 83 18 A9 81 18 CB 81 00 + .byte $24, $E8, $02, $AF, $B0, $25, $4D, $02, $FF, $FF, $25, $6D, $02, $FF, $FF, $25 ; CPU:$81A9 PRG:81A9 24 E8 02 AF B0 25 4D 02 FF FF 25 6D 02 FF FF 25 + .byte $8D, $04, $FF, $B8, $B2, $B3, $25, $AD, $03, $B6, $B9, $B4, $25, $CE, $02, $BA ; CPU:$81B9 PRG:81B9 8D 04 FF B8 B2 B3 25 AD 03 B6 B9 B4 25 CE 02 BA + .byte $B5, $00, $24, $E8, $02, $37, $50, $25, $4D, $02, $7F, $80, $25, $6D, $02, $7E ; CPU:$81C9 PRG:81C9 B5 00 24 E8 02 37 50 25 4D 02 7F 80 25 6D 02 7E + .byte $81, $25, $8D, $04, $7D, $82, $FF, $FF, $25, $AD, $03, $7C, $83, $FF, $25, $CE ; CPU:$81D9 PRG:81D9 81 25 8D 04 7D 82 FF FF 25 AD 03 7C 83 FF 25 CE + .byte $02, $84, $FF, $00, $18, $F4, $81, $18, $FC, $81, $00, $26, $AB, $04, $66, $73 ; CPU:$81E9 PRG:81E9 02 84 FF 00 18 F4 81 18 FC 81 00 26 AB 04 66 73 + .byte $7A, $86, $00, $26, $AB, $04, $D5, $D6, $D7, $D8, $00, $18, $0B, $82, $18, $21 ; CPU:$81F9 PRG:81F9 7A 86 00 26 AB 04 D5 D6 D7 D8 00 18 0B 82 18 21 + .byte $82, $00, $25, $13, $02, $39, $3E, $27, $16, $02, $D2, $D7, $27, $36, $03, $D3 ; CPU:$8209 PRG:8209 82 00 25 13 02 39 3E 27 16 02 D2 D7 27 36 03 D3 + .byte $D6, $D8, $27, $56, $02, $D4, $D5, $00, $25, $13, $02, $D0, $D1, $27, $16, $02 ; CPU:$8219 PRG:8219 D6 D8 27 56 02 D4 D5 00 25 13 02 D0 D1 27 16 02 + .byte $72, $77, $27, $36, $03, $73, $76, $85, $27, $56, $02, $74, $75, $00, $18, $3E ; CPU:$8229 PRG:8229 72 77 27 36 03 73 76 85 27 56 02 74 75 00 18 3E + .byte $82, $18, $4E, $82, $00, $24, $ED, $02, $B3, $B4, $25, $0D, $02, $B5, $B8, $25 ; CPU:$8239 PRG:8239 82 18 4E 82 00 24 ED 02 B3 B4 25 0D 02 B5 B8 25 + .byte $2D, $02, $B6, $B7, $00, $24, $ED, $02, $86, $8E, $25, $0D, $02, $85, $8F, $25 ; CPU:$8249 PRG:8249 2D 02 B6 B7 00 24 ED 02 86 8E 25 0D 02 85 8F 25 + .byte $2D, $02, $84, $90, $00, $18, $65, $82, $18, $6E, $82, $00, $25, $E8, $01, $F7 ; CPU:$8259 PRG:8259 2D 02 84 90 00 18 65 82 18 6E 82 00 25 E8 01 F7 + .byte $26, $07, $01, $F8, $00, $25, $E8, $01, $81, $26, $07, $01, $5F, $00, $18, $7E ; CPU:$8269 PRG:8269 26 07 01 F8 00 25 E8 01 81 26 07 01 5F 00 18 7E + .byte $82, $18, $AA, $82, $00, $24, $E9, $02, $F1, $EC, $26, $4B, $04, $E9, $E8, $E7 ; CPU:$8279 PRG:8279 82 18 AA 82 00 24 E9 02 F1 EC 26 4B 04 E9 E8 E7 + .byte $E6, $26, $6B, $04, $E0, $E1, $E4, $E5, $26, $8B, $04, $EB, $E2, $E3, $EA, $26 ; CPU:$8289 PRG:8289 E6 26 6B 04 E0 E1 E4 E5 26 8B 04 EB E2 E3 EA 26 + .byte $AB, $03, $ED, $EE, $EF, $26, $CB, $03, $92, $92, $F2, $26, $EC, $02, $F0, $92 ; CPU:$8299 PRG:8299 AB 03 ED EE EF 26 CB 03 92 92 F2 26 EC 02 F0 92 + .byte $00, $24, $E9, $02, $35, $53, $26, $4B, $04, $63, $FF, $FF, $FF, $26, $6B, $04 ; CPU:$82A9 PRG:82A9 00 24 E9 02 35 53 26 4B 04 63 FF FF FF 26 6B 04 + .byte $64, $70, $7F, $87, $26, $8B, $04, $65, $6F, $92, $9A, $26, $AB, $03, $66, $6E ; CPU:$82B9 PRG:82B9 64 70 7F 87 26 8B 04 65 6F 92 9A 26 AB 03 66 6E + .byte $80, $26, $CB, $03, $67, $6D, $81, $26, $EC, $02, $6C, $82, $00, $18, $DD, $82 ; CPU:$82C9 PRG:82C9 80 26 CB 03 67 6D 81 26 EC 02 6C 82 00 18 DD 82 + .byte $18, $E2, $82, $00, $25, $26, $01, $EE, $00, $25, $26, $01, $0E, $00, $18, $EE ; CPU:$82D9 PRG:82D9 18 E2 82 00 25 26 01 EE 00 25 26 01 0E 00 18 EE + .byte $82, $18, $F6, $82, $00, $25, $14, $04, $D5, $D6, $D7, $D8, $00, $25, $14, $04 ; CPU:$82E9 PRG:82E9 82 18 F6 82 00 25 14 04 D5 D6 D7 D8 00 25 14 04 + .byte $1E, $39, $3E, $5C, $00, $18, $05, $83, $18, $14, $83, $00, $26, $17, $01, $B8 ; CPU:$82F9 PRG:82F9 1E 39 3E 5C 00 18 05 83 18 14 83 00 26 17 01 B8 + .byte $26, $36, $02, $B7, $B9, $26, $57, $02, $BA, $BB, $00, $26, $17, $01, $7C, $26 ; CPU:$8309 PRG:8309 26 36 02 B7 B9 26 57 02 BA BB 00 26 17 01 7C 26 + .byte $36, $02, $72, $7D, $26, $57, $02, $7E, $89, $00, $18, $2A, $83, $18, $31, $83 ; CPU:$8319 PRG:8319 36 02 72 7D 26 57 02 7E 89 00 18 2A 83 18 31 83 + .byte $00, $25, $15, $03, $F2, $F3, $F4, $00, $25, $15, $03, $14, $15, $16, $00, $18 ; CPU:$8329 PRG:8329 00 25 15 03 F2 F3 F4 00 25 15 03 14 15 16 00 18 + .byte $3F, $83, $18, $63, $83, $00, $24, $D5, $01, $CF, $25, $71, $02, $DC, $D7, $25 ; CPU:$8339 PRG:8339 3F 83 18 63 83 00 24 D5 01 CF 25 71 02 DC D7 25 + .byte $91, $02, $D6, $D8, $25, $B1, $02, $D5, $D9, $25, $D1, $02, $D4, $DA, $25, $F0 ; CPU:$8349 PRG:8349 91 02 D6 D8 25 B1 02 D5 D9 25 D1 02 D4 DA 25 F0 + .byte $03, $D2, $D3, $DB, $26, $10, $02, $D0, $D1, $00, $24, $D5, $01, $10, $25, $71 ; CPU:$8359 PRG:8359 03 D2 D3 DB 26 10 02 D0 D1 00 24 D5 01 10 25 71 + .byte $02, $FF, $2C, $25, $91, $02, $33, $34, $25, $B1, $02, $3B, $3C, $25, $D1, $02 ; CPU:$8369 PRG:8369 02 FF 2C 25 91 02 33 34 25 B1 02 3B 3C 25 D1 02 + .byte $43, $44, $25, $F0, $03, $4A, $4B, $4C, $26, $10, $02, $52, $53, $00, $18, $8E ; CPU:$8379 PRG:8379 43 44 25 F0 03 4A 4B 4C 26 10 02 52 53 00 18 8E + .byte $83, $18, $94, $83, $00, $25, $E8, $02, $F9, $FA, $00, $25, $E8, $02, $81, $91 ; CPU:$8389 PRG:8389 83 18 94 83 00 25 E8 02 F9 FA 00 25 E8 02 81 91 + .byte $00, $47, $85, $A1, $87, $8C, $8A, $B1, $8C, $B1, $8D, $51, $8F, $15, $91, $92 ; CPU:$8399 PRG:8399 00 47 85 A1 87 8C 8A B1 8C B1 8D 51 8F 15 91 92 + .byte $92, $44, $94, $E6, $95, $81, $97, $23, $99, $D3, $9A, $76, $9C, $DA, $9D, $79 ; CPU:$83A9 PRG:83A9 92 44 94 E6 95 81 97 23 99 D3 9A 76 9C DA 9D 79 + .byte $9F, $21, $A1, $E3, $A3, $92, $A5, $E6, $83, $16, $84, $36, $84, $E6, $83, $56 ; CPU:$83B9 PRG:83B9 9F 21 A1 E3 A3 92 A5 E6 83 16 84 36 84 E6 83 56 + .byte $84, $76, $84, $86, $84, $96, $84, $A6, $84, $B6, $84, $C6, $84, $D6, $84, $E6 ; CPU:$83C9 PRG:83C9 84 76 84 86 84 96 84 A6 84 B6 84 C6 84 D6 84 E6 + .byte $84, $F6, $84, $06, $85, $16, $85, $27, $85, $27, $85, $E6, $83, $0E, $0E, $05 ; CPU:$83D9 PRG:83D9 84 F6 84 06 85 16 85 27 85 27 85 E6 83 0E 0E 05 + .byte $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E ; CPU:$83E9 PRG:83E9 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E + .byte $0E, $0E, $25, $13, $1A, $0E, $21, $25, $1A, $0E, $21, $13, $30, $0E, $3A, $2A ; CPU:$83F9 PRG:83F9 0E 0E 25 13 1A 0E 21 25 1A 0E 21 13 30 0E 3A 2A + .byte $1A, $0E, $32, $27, $07, $0E, $30, $28, $08, $0E, $32, $2C, $12, $0E, $31, $2A ; CPU:$8409 PRG:8409 1A 0E 32 27 07 0E 30 28 08 0E 32 2C 12 0E 31 2A + .byte $28, $0E, $30, $25, $22, $0E, $2B, $28, $30, $0E, $31, $22, $13, $0E, $31, $2A ; CPU:$8419 PRG:8419 28 0E 30 25 22 0E 2B 28 30 0E 31 22 13 0E 31 2A + .byte $28, $0E, $2A, $25, $22, $0E, $21, $28, $30, $0E, $27, $27, $17, $0E, $31, $2A ; CPU:$8429 PRG:8429 28 0E 2A 25 22 0E 21 28 30 0E 27 27 17 0E 31 2A + .byte $28, $0E, $2A, $25, $22, $0E, $21, $28, $30, $0E, $30, $27, $17, $0E, $31, $2A ; CPU:$8439 PRG:8439 28 0E 2A 25 22 0E 21 28 30 0E 30 27 17 0E 31 2A + .byte $28, $0E, $2A, $25, $22, $0E, $21, $28, $30, $0E, $30, $27, $17, $0E, $21, $13 ; CPU:$8449 PRG:8449 28 0E 2A 25 22 0E 21 28 30 0E 30 27 17 0E 21 13 + .byte $18, $0E, $27, $18, $1A, $0E, $18, $2B, $1A, $0E, $21, $11, $30, $0E, $25, $1A ; CPU:$8459 PRG:8459 18 0E 27 18 1A 0E 18 2B 1A 0E 21 11 30 0E 25 1A + .byte $0E, $0E, $36, $26, $0E, $0E, $18, $2B, $1A, $0E, $21, $11, $30, $0E, $21, $36 ; CPU:$8469 PRG:8469 0E 0E 36 26 0E 0E 18 2B 1A 0E 21 11 30 0E 21 36 + .byte $26, $0E, $25, $13, $1A, $0E, $21, $25, $1A, $0E, $21, $13, $30, $0E, $21, $13 ; CPU:$8479 PRG:8479 26 0E 25 13 1A 0E 21 25 1A 0E 21 13 30 0E 21 13 + .byte $1A, $0E, $21, $36, $27, $0E, $21, $01, $36, $0E, $21, $13, $30, $FF, $23, $37 ; CPU:$8489 PRG:8489 1A 0E 21 36 27 0E 21 01 36 0E 21 13 30 FF 23 37 + .byte $28, $FF, $23, $37, $2A, $FF, $23, $37, $30, $FF, $23, $25, $20, $FF, $23, $25 ; CPU:$8499 PRG:8499 28 FF 23 37 2A FF 23 37 30 FF 23 25 20 FF 23 25 + .byte $30, $FF, $2A, $17, $38, $FF, $37, $17, $30, $FF, $23, $13, $20, $0E, $14, $11 ; CPU:$84A9 PRG:84A9 30 FF 2A 17 38 FF 37 17 30 FF 23 13 20 0E 14 11 + .byte $30, $0E, $21, $25, $38, $0E, $37, $27, $11, $0E, $10, $11, $30, $0E, $21, $25 ; CPU:$84B9 PRG:84B9 30 0E 21 25 38 0E 37 27 11 0E 10 11 30 0E 21 25 + .byte $1A, $0E, $21, $36, $27, $0E, $21, $36, $26, $0E, $21, $13, $30, $0E, $21, $25 ; CPU:$84C9 PRG:84C9 1A 0E 21 36 27 0E 21 36 26 0E 21 13 30 0E 21 25 + .byte $1A, $0E, $21, $36, $27, $0E, $21, $36, $26, $0E, $21, $03, $30, $FF, $21, $37 ; CPU:$84D9 PRG:84D9 1A 0E 21 36 27 0E 21 36 26 0E 21 03 30 FF 21 37 + .byte $30, $FF, $28, $37, $26, $FF, $28, $21, $30, $FF, $25, $21, $30, $0E, $37, $27 ; CPU:$84E9 PRG:84E9 30 FF 28 37 26 FF 28 21 30 FF 25 21 30 0E 37 27 + .byte $30, $0E, $37, $27, $1B, $0E, $37, $27, $17, $0E, $1B, $10, $30, $0E, $21, $36 ; CPU:$84F9 PRG:84F9 30 0E 37 27 1B 0E 37 27 17 0E 1B 10 30 0E 21 36 + .byte $26, $0E, $21, $25, $2A, $0E, $21, $36, $27, $0E, $21, $13, $30, $FF, $23, $37 ; CPU:$8509 PRG:8509 26 0E 21 25 2A 0E 21 36 27 0E 21 13 30 FF 23 37 + .byte $28, $FF, $23, $37, $2A, $FF, $37, $26, $30, $FF, $23, $25, $20, $0E, $0E, $31 ; CPU:$8519 PRG:8519 28 FF 23 37 2A FF 37 26 30 FF 23 25 20 0E 0E 31 + .byte $2A, $28, $0E, $30, $2C, $1C, $0E, $36, $31, $17, $0E, $31, $15, $22, $0E, $31 ; CPU:$8529 PRG:8529 2A 28 0E 30 2C 1C 0E 36 31 17 0E 31 15 22 0E 31 + .byte $2A, $28, $FF, $30, $25, $22, $FF, $2B, $28, $30, $FF, $31, $15, $22, $20, $00 ; CPU:$8539 PRG:8539 2A 28 FF 30 25 22 FF 2B 28 30 FF 31 15 22 20 00 + .byte $44, $FF, $83, $91, $92, $93, $04, $FF, $83, $94, $95, $96, $02, $FF, $87, $97 ; CPU:$8549 PRG:8549 44 FF 83 91 92 93 04 FF 83 94 95 96 02 FF 87 97 + .byte $98, $99, $9A, $9B, $9C, $9D, $02, $FF, $82, $9E, $9F, $09, $FF, $98, $A0, $A1 ; CPU:$8559 PRG:8559 98 99 9A 9B 9C 9D 02 FF 82 9E 9F 09 FF 98 A0 A1 + .byte $A2, $A3, $A4, $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC, $AD, $AE, $AF, $B0, $B1 ; CPU:$8569 PRG:8569 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 + .byte $B2, $B3, $B4, $B5, $B6, $B7, $08, $FF, $98, $B8, $B9, $BA, $BB, $BC, $BD, $BE ; CPU:$8579 PRG:8579 B2 B3 B4 B5 B6 B7 08 FF 98 B8 B9 BA BB BC BD BE + .byte $BF, $C0, $C1, $C2, $C3, $C4, $FF, $C5, $C6, $C7, $C8, $C9, $CA, $CB, $CC, $CD ; CPU:$8589 PRG:8589 BF C0 C1 C2 C3 C4 FF C5 C6 C7 C8 C9 CA CB CC CD + .byte $CE, $08, $FF, $98, $CF, $D0, $D1, $D2, $D3, $D4, $D5, $D6, $D7, $D8, $D9, $DA ; CPU:$8599 PRG:8599 CE 08 FF 98 CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA + .byte $DB, $DC, $DD, $DE, $DF, $E0, $E1, $E2, $E3, $E4, $E5, $E6, $2F, $FF, $86, $54 ; CPU:$85A9 PRG:85A9 DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 2F FF 86 54 + .byte $48, $45, $FF, $52, $49, $02, $44, $82, $4C, $45, $11, $FF, $8F, $4F, $46, $FF ; CPU:$85B9 PRG:85B9 48 45 FF 52 49 02 44 82 4C 45 11 FF 8F 4F 46 FF + .byte $54, $48, $45, $FF, $4D, $41, $47, $49, $43, $FF, $42, $55, $02, $42, $82, $4C ; CPU:$85C9 PRG:85C9 54 48 45 FF 4D 41 47 49 43 FF 42 55 02 42 82 4C + .byte $45, $0C, $FF, $81, $BC, $12, $BE, $81, $BF, $0C, $FF, $81, $BD, $05, $AF, $81 ; CPU:$85D9 PRG:85D9 45 0C FF 81 BC 12 BE 81 BF 0C FF 81 BD 05 AF 81 + .byte $E4, $04, $AF, $89, $B7, $B8, $B9, $BA, $BB, $AF, $E4, $AF, $C0, $0C, $FF, $81 ; CPU:$85E9 PRG:85E9 E4 04 AF 89 B7 B8 B9 BA BB AF E4 AF C0 0C FF 81 + .byte $BD, $02, $AF, $83, $E4, $AF, $E5, $03, $AF, $88, $E4, $AF, $B6, $B5, $B4, $B3 ; CPU:$85F9 PRG:85F9 BD 02 AF 83 E4 AF E5 03 AF 88 E4 AF B6 B5 B4 B3 + .byte $B2, $B1, $02, $AF, $81, $C0, $0C, $FF, $81, $BD, $04, $AF, $81, $B0, $03, $AF ; CPU:$8609 PRG:8609 B2 B1 02 AF 81 C0 0C FF 81 BD 04 AF 81 B0 03 AF + .byte $88, $E5, $AE, $AD, $AC, $AB, $AA, $A9, $A8, $02, $AF, $81, $C0, $0C, $FF, $86 ; CPU:$8619 PRG:8619 88 E5 AE AD AC AB AA A9 A8 02 AF 81 C0 0C FF 86 + .byte $BD, $E3, $E2, $E1, $9E, $9F, $02, $AF, $81, $A0, $02, $AF, $89, $A1, $A2, $A3 ; CPU:$8629 PRG:8629 BD E3 E2 E1 9E 9F 02 AF 81 A0 02 AF 89 A1 A2 A3 + .byte $A4, $A5, $A6, $A7, $AF, $C0, $0C, $FF, $94, $BD, $DE, $DF, $E0, $9D, $9C, $9B ; CPU:$8639 PRG:8639 A4 A5 A6 A7 AF C0 0C FF 94 BD DE DF E0 9D 9C 9B + .byte $9A, $99, $AF, $E5, $98, $97, $96, $95, $94, $93, $92, $AF, $C0, $0C, $FF, $91 ; CPU:$8649 PRG:8649 9A 99 AF E5 98 97 96 95 94 93 92 AF C0 0C FF 91 + .byte $BD, $DB, $DC, $DD, $88, $89, $8A, $8B, $AF, $E5, $AF, $8C, $8D, $8E, $8F, $90 ; CPU:$8659 PRG:8659 BD DB DC DD 88 89 8A 8B AF E5 AF 8C 8D 8E 8F 90 + .byte $91, $02, $AF, $81, $C0, $0C, $FF, $91, $BD, $D8, $D9, $DA, $87, $86, $85, $84 ; CPU:$8669 PRG:8669 91 02 AF 81 C0 0C FF 91 BD D8 D9 DA 87 86 85 84 + .byte $83, $82, $81, $80, $7F, $7E, $7D, $7C, $7B, $02, $AF, $81, $C0, $0C, $FF, $91 ; CPU:$8679 PRG:8679 83 82 81 80 7F 7E 7D 7C 7B 02 AF 81 C0 0C FF 91 + .byte $BD, $D6, $D7, $6D, $6E, $6F, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79 ; CPU:$8689 PRG:8689 BD D6 D7 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 + .byte $7A, $02, $AF, $81, $C0, $0C, $FF, $94, $BD, $6C, $6B, $6A, $69, $68, $67, $66 ; CPU:$8699 PRG:8699 7A 02 AF 81 C0 0C FF 94 BD 6C 6B 6A 69 68 67 66 + .byte $65, $64, $63, $62, $61, $60, $5F, $5E, $5D, $5C, $5B, $C0, $0C, $FF, $94, $BD ; CPU:$86A9 PRG:86A9 65 64 63 62 61 60 5F 5E 5D 5C 5B C0 0C FF 94 BD + .byte $49, $4A, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53, $54, $55, $56, $57, $58 ; CPU:$86B9 PRG:86B9 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 + .byte $59, $5A, $C0, $0C, $FF, $94, $BD, $48, $47, $46, $45, $44, $43, $42, $41, $40 ; CPU:$86C9 PRG:86C9 59 5A C0 0C FF 94 BD 48 47 46 45 44 43 42 41 40 + .byte $3F, $3E, $3D, $3C, $3B, $3A, $39, $38, $37, $C0, $0C, $FF, $94, $BD, $25, $26 ; CPU:$86D9 PRG:86D9 3F 3E 3D 3C 3B 3A 39 38 37 C0 0C FF 94 BD 25 26 + .byte $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $32, $33, $34, $35, $36 ; CPU:$86E9 PRG:86E9 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 + .byte $C0, $0C, $FF, $94, $BD, $24, $23, $22, $21, $20, $1F, $1E, $1D, $1C, $1B, $1A ; CPU:$86F9 PRG:86F9 C0 0C FF 94 BD 24 23 22 21 20 1F 1E 1D 1C 1B 1A + .byte $19, $18, $17, $16, $15, $14, $13, $C0, $0C, $FF, $94, $BD, $01, $02, $03, $04 ; CPU:$8709 PRG:8709 19 18 17 16 15 14 13 C0 0C FF 94 BD 01 02 03 04 + .byte $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F, $10, $11, $12, $C0, $0C ; CPU:$8719 PRG:8719 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 C0 0C + .byte $FF, $81, $C3, $12, $C2, $81, $C1, $09, $FF, $82, $C4, $C5, $02, $C6, $96, $C5 ; CPU:$8729 PRG:8729 FF 81 C3 12 C2 81 C1 09 FF 82 C4 C5 02 C6 96 C5 + .byte $FF, $C7, $C8, $C9, $FF, $CA, $CB, $C7, $CC, $FF, $CD, $CA, $C7, $C9, $CB, $CE ; CPU:$8739 PRG:8739 FF C7 C8 C9 FF CA CB C7 CC FF CD CA C7 C9 CB CE + .byte $C9, $D5, $FF, $CF, $D0, $0B, $FF, $8E, $D1, $D2, $C9, $D3, $CA, $C7, $D1, $CB ; CPU:$8749 PRG:8749 C9 D5 FF CF D0 0B FF 8E D1 D2 C9 D3 CA C7 D1 CB + .byte $FF, $D4, $CA, $D5, $C9, $D0, $10, $FF, $92, $C9, $CB, $CF, $C9, $D3, $CF, $D1 ; CPU:$8759 PRG:8759 FF D4 CA D5 C9 D0 10 FF 92 C9 CB CF C9 D3 CF D1 + .byte $CA, $CB, $D2, $C9, $CB, $CF, $FF, $CA, $CB, $C7, $CC, $49, $FF, $81, $0F, $07 ; CPU:$8769 PRG:8769 CA CB D2 C9 CB CF FF CA CB C7 CC 49 FF 81 0F 07 + .byte $FF, $07, $F0, $81, $FE, $04, $FF, $82, $0F, $CF, $03, $FF, $85, $BB, $AA, $EE ; CPU:$8779 PRG:8779 FF 07 F0 81 FE 04 FF 82 0F CF 03 FF 85 BB AA EE + .byte $00, $C0, $03, $FF, $81, $BB, $02, $AA, $82, $00, $8C, $03, $FF, $85, $77, $D5 ; CPU:$8789 PRG:8789 00 C0 03 FF 81 BB 02 AA 82 00 8C 03 FF 85 77 D5 + .byte $F5, $77, $08, $12, $FF, $FF, $FF, $FF, $24, $00, $8A, $1F, $20, $1F, $20, $1F ; CPU:$8799 PRG:8799 F5 77 08 12 FF FF FF FF 24 00 8A 1F 20 1F 20 1F + .byte $20, $1F, $20, $1F, $20, $0C, $FF, $9D, $1F, $20, $1F, $20, $1F, $20, $1F, $20 ; CPU:$87A9 PRG:87A9 20 1F 20 1F 20 0C FF 9D 1F 20 1F 20 1F 20 1F 20 + .byte $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $07, $0D, $21, $22 ; CPU:$87B9 PRG:87B9 1F 20 21 22 21 22 21 22 21 22 21 22 07 0D 21 22 + .byte $21, $22, $21, $22, $21, $02, $22, $97, $16, $0F, $22, $21, $22, $21, $22, $21 ; CPU:$87C9 PRG:87C9 21 22 21 22 21 02 22 97 16 0F 22 21 22 21 22 21 + .byte $22, $21, $22, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $08, $04, $09 ; CPU:$87D9 PRG:87D9 22 21 22 1F 20 1F 20 1F 20 1F 20 1F 20 08 04 09 + .byte $00, $B7, $01, $10, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21 ; CPU:$87E9 PRG:87E9 00 B7 01 10 20 1F 20 1F 20 1F 20 1F 20 21 22 21 + .byte $22, $21, $22, $21, $22, $21, $22, $09, $05, $FF, $4F, $50, $54, $49, $4F, $4E ; CPU:$87F9 PRG:87F9 22 21 22 21 22 21 22 09 05 FF 4F 50 54 49 4F 4E + .byte $53, $FF, $02, $11, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F ; CPU:$8809 PRG:8809 53 FF 02 11 22 21 22 21 22 21 22 21 22 1F 20 1F + .byte $20, $1F, $20, $1F, $20, $1F, $20, $0A, $06, $09, $15, $9E, $03, $12, $20, $1F ; CPU:$8819 PRG:8819 20 1F 20 1F 20 1F 20 0A 06 09 15 9E 03 12 20 1F + .byte $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8829 PRG:8829 20 1F 20 1F 20 1F 20 21 22 21 22 21 22 21 22 21 + .byte $22, $0B, $0C, $21, $22, $21, $22, $21, $22, $21, $02, $22, $90, $17, $13, $22 ; CPU:$8839 PRG:8839 22 0B 0C 21 22 21 22 21 22 21 02 22 90 17 13 22 + .byte $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $18, $16, $1E, $93 ; CPU:$8849 PRG:8849 21 22 21 22 21 22 21 22 1F 20 1F 20 18 16 1E 93 + .byte $1B, $1F, $20, $1F, $20, $21, $22, $21, $22, $19, $FF, $31, $FF, $50, $4C, $41 ; CPU:$8859 PRG:8859 1B 1F 20 1F 20 21 22 21 22 19 FF 31 FF 50 4C 41 + .byte $59, $45, $52, $03, $FF, $94, $32, $FF, $50, $4C, $41, $59, $45, $52, $53, $FF ; CPU:$8869 PRG:8869 59 45 52 03 FF 94 32 FF 50 4C 41 59 45 52 53 FF + .byte $1C, $21, $22, $21, $22, $1F, $20, $1F, $20, $1A, $16, $14, $AA, $1D, $1F, $20 ; CPU:$8879 PRG:8879 1C 21 22 21 22 1F 20 1F 20 1A 16 14 AA 1D 1F 20 + .byte $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8889 PRG:8889 1F 20 21 22 21 22 21 22 21 22 21 22 21 22 21 22 + .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8899 PRG:8899 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 + .byte $21, $22, $1F, $20, $1F, $20, $18, $16, $1E, $90, $1B, $1F, $20, $1F, $20, $21 ; CPU:$88A9 PRG:88A9 21 22 1F 20 1F 20 18 16 1E 90 1B 1F 20 1F 20 21 + .byte $22, $21, $22, $19, $FF, $53, $54, $41, $47, $45, $03, $FF, $87, $31, $FF, $32 ; CPU:$88B9 PRG:88B9 22 21 22 19 FF 53 54 41 47 45 03 FF 87 31 FF 32 + .byte $FF, $33, $FF, $34, $06, $FF, $8A, $1C, $21, $22, $21, $22, $1F, $20, $1F, $20 ; CPU:$88C9 PRG:88C9 FF 33 FF 34 06 FF 8A 1C 21 22 21 22 1F 20 1F 20 + .byte $1A, $16, $14, $AA, $1D, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21 ; CPU:$88D9 PRG:88D9 1A 16 14 AA 1D 1F 20 1F 20 21 22 21 22 21 22 21 + .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$88E9 PRG:88E9 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 + .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $18, $16, $1E ; CPU:$88F9 PRG:88F9 22 21 22 21 22 21 22 21 22 1F 20 1F 20 18 16 1E + .byte $8F, $1B, $1F, $20, $1F, $20, $21, $22, $21, $22, $19, $FF, $45, $41, $53, $59 ; CPU:$8909 PRG:8909 8F 1B 1F 20 1F 20 21 22 21 22 19 FF 45 41 53 59 + .byte $03, $FF, $84, $48, $41, $52, $44, $02, $FF, $92, $53, $54, $41, $43, $4B, $45 ; CPU:$8919 PRG:8919 03 FF 84 48 41 52 44 02 FF 92 53 54 41 43 4B 45 + .byte $44, $FF, $1C, $21, $22, $21, $22, $1F, $20, $1F, $20, $1A, $16, $14, $AA, $1D ; CPU:$8929 PRG:8929 44 FF 1C 21 22 21 22 1F 20 1F 20 1A 16 14 AA 1D + .byte $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8939 PRG:8939 1F 20 1F 20 21 22 21 22 21 22 21 22 21 22 21 22 + .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8949 PRG:8949 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 + .byte $21, $22, $21, $22, $1F, $20, $1F, $20, $18, $16, $1E, $90, $1B, $1F, $20, $1F ; CPU:$8959 PRG:8959 21 22 21 22 1F 20 1F 20 18 16 1E 90 1B 1F 20 1F + .byte $20, $21, $22, $21, $22, $19, $FF, $4C, $45, $56, $45, $4C, $03, $FF, $89, $31 ; CPU:$8969 PRG:8969 20 21 22 21 22 19 FF 4C 45 56 45 4C 03 FF 89 31 + .byte $FF, $32, $FF, $33, $FF, $34, $FF, $35, $04, $FF, $8A, $1C, $21, $22, $21, $22 ; CPU:$8979 PRG:8979 FF 32 FF 33 FF 34 FF 35 04 FF 8A 1C 21 22 21 22 + .byte $1F, $20, $1F, $20, $1A, $16, $14, $AA, $1D, $1F, $20, $1F, $20, $21, $22, $21 ; CPU:$8989 PRG:8989 1F 20 1F 20 1A 16 14 AA 1D 1F 20 1F 20 21 22 21 + .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8999 PRG:8999 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 + .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F ; CPU:$89A9 PRG:89A9 22 21 22 21 22 21 22 21 22 21 22 21 22 1F 20 1F + .byte $20, $18, $16, $1E, $90, $1B, $1F, $20, $1F, $20, $21, $22, $21, $22, $19, $FF ; CPU:$89B9 PRG:89B9 20 18 16 1E 90 1B 1F 20 1F 20 21 22 21 22 19 FF + .byte $54, $55, $4E, $45, $31, $03, $FF, $85, $54, $55, $4E, $45, $32, $03, $FF, $8F ; CPU:$89C9 PRG:89C9 54 55 4E 45 31 03 FF 85 54 55 4E 45 32 03 FF 8F + .byte $54, $55, $4E, $45, $33, $1C, $21, $22, $21, $22, $1F, $20, $1F, $20, $1A, $16 ; CPU:$89D9 PRG:89D9 54 55 4E 45 33 1C 21 22 21 22 1F 20 1F 20 1A 16 + .byte $14, $B2, $1D, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$89E9 PRG:89E9 14 B2 1D 1F 20 1F 20 21 22 21 22 21 22 21 22 21 + .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$89F9 PRG:89F9 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 + .byte $22, $1F, $20, $21, $22, $21, $22, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F ; CPU:$8A09 PRG:8A09 22 1F 20 21 22 21 22 1F 20 1F 20 1F 20 1F 20 1F + .byte $20, $1F, $20, $18, $06, $1E, $9A, $1B, $1F, $20, $1F, $20, $1F, $20, $1F, $20 ; CPU:$8A19 PRG:8A19 20 1F 20 18 06 1E 9A 1B 1F 20 1F 20 1F 20 1F 20 + .byte $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8A29 PRG:8A29 1F 20 1F 20 21 22 21 22 21 22 21 22 21 22 21 22 + .byte $19, $06, $FF, $9A, $1C, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21 ; CPU:$8A39 PRG:8A39 19 06 FF 9A 1C 21 22 21 22 21 22 21 22 21 22 21 + .byte $22, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1A, $06, $14 ; CPU:$8A49 PRG:8A49 22 1F 20 1F 20 1F 20 1F 20 1F 20 1F 20 1A 06 14 + .byte $AD, $1D, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22 ; CPU:$8A59 PRG:8A59 AD 1D 1F 20 1F 20 1F 20 1F 20 1F 20 1F 20 21 22 + .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8A69 PRG:8A69 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 + .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $40, $FF ; CPU:$8A79 PRG:8A79 21 22 21 22 21 22 21 22 21 22 21 22 21 22 40 FF + .byte $FF, $FF, $FF, $24, $00, $8A, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20 ; CPU:$8A89 PRG:8A89 FF FF FF 24 00 8A 1F 20 1F 20 1F 20 1F 20 1F 20 + .byte $02, $1F, $89, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $02, $1F, $B4, $20 ; CPU:$8A99 PRG:8A99 02 1F 89 20 1F 20 1F 20 1F 20 1F 20 02 1F B4 20 + .byte $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8AA9 PRG:8AA9 1F 20 1F 20 1F 20 1F 20 21 22 21 22 21 22 21 22 + .byte $21, $24, $25, $21, $22, $21, $22, $21, $22, $21, $22, $21, $2E, $2F, $21, $22 ; CPU:$8AB9 PRG:8AB9 21 24 25 21 22 21 22 21 22 21 22 21 2E 2F 21 22 + .byte $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $1F, $20, $1F, $20 ; CPU:$8AC9 PRG:8AC9 21 22 21 22 21 22 21 22 1F 20 1F 20 1F 20 1F 20 + .byte $1F, $26, $27, $09, $0E, $B7, $3A, $3B, $1F, $20, $1F, $20, $1F, $20, $1F, $20 ; CPU:$8AD9 PRG:8AD9 1F 26 27 09 0E B7 3A 3B 1F 20 1F 20 1F 20 1F 20 + .byte $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $28, $29, $FF, $54, $4F ; CPU:$8AE9 PRG:8AE9 1F 20 21 22 21 22 21 22 21 22 21 28 29 FF 54 4F + .byte $50, $FF, $54, $45, $4E, $FF, $3C, $3D, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8AF9 PRG:8AF9 50 FF 54 45 4E FF 3C 3D 21 22 21 22 21 22 21 22 + .byte $21, $22, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $2A, $2B, $09, $23, $97 ; CPU:$8B09 PRG:8B09 21 22 1F 20 1F 20 1F 20 1F 20 1F 2A 2B 09 23 97 + .byte $5B, $5C, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22 ; CPU:$8B19 PRG:8B19 5B 5C 1F 20 1F 20 1F 20 1F 20 1F 20 21 22 21 22 + .byte $21, $22, $21, $22, $21, $2C, $2D, $09, $FF, $90, $5D, $5E, $21, $22, $21, $22 ; CPU:$8B29 PRG:8B29 21 22 21 22 21 2C 2D 09 FF 90 5D 5E 21 22 21 22 + .byte $21, $22, $21, $22, $21, $22, $1F, $20, $64, $65, $05, $63, $81, $6A, $0B, $FF ; CPU:$8B39 PRG:8B39 21 22 21 22 21 22 1F 20 64 65 05 63 81 6A 0B FF + .byte $81, $69, $06, $63, $87, $67, $68, $1F, $20, $21, $22, $66, $03, $FF, $84, $4E ; CPU:$8B49 PRG:8B49 81 69 06 63 87 67 68 1F 20 21 22 66 03 FF 84 4E + .byte $41, $4D, $45, $02, $FF, $82, $42, $55, $02, $42, $82, $4C, $45, $04, $FF, $85 ; CPU:$8B59 PRG:8B59 41 4D 45 02 FF 82 42 55 02 42 82 4C 45 04 FF 85 + .byte $53, $43, $4F, $52, $45, $02, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF ; CPU:$8B69 PRG:8B69 53 43 4F 52 45 02 FF 86 62 21 22 1F 20 5F 1A FF + .byte $8D, $61, $1F, $20, $21, $22, $60, $FF, $31, $6B, $FF, $59, $45, $48, $13, $FF ; CPU:$8B79 PRG:8B79 8D 61 1F 20 21 22 60 FF 31 6B FF 59 45 48 13 FF + .byte $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60 ; CPU:$8B89 PRG:8B89 86 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 22 60 + .byte $FF, $32, $6B, $FF, $43, $48, $45, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F ; CPU:$8B99 PRG:8B99 FF 32 6B FF 43 48 45 13 FF 86 62 21 22 1F 20 5F + .byte $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $33, $6B, $FF, $54, $52, $49 ; CPU:$8BA9 PRG:8BA9 1A FF 8D 61 1F 20 21 22 60 FF 33 6B FF 54 52 49 + .byte $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21 ; CPU:$8BB9 PRG:8BB9 13 FF 86 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 + .byte $22, $60, $FF, $34, $6B, $FF, $48, $6B, $59, $13, $FF, $86, $62, $21, $22, $1F ; CPU:$8BC9 PRG:8BC9 22 60 FF 34 6B FF 48 6B 59 13 FF 86 62 21 22 1F + .byte $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $35, $6B, $FF, $59 ; CPU:$8BD9 PRG:8BD9 20 5F 1A FF 8D 61 1F 20 21 22 60 FF 35 6B FF 59 + .byte $41, $4E, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F ; CPU:$8BE9 PRG:8BE9 41 4E 13 FF 86 62 21 22 1F 20 5F 1A FF 8D 61 1F + .byte $20, $21, $22, $60, $FF, $36, $6B, $FF, $4A, $41, $43, $13, $FF, $86, $62, $21 ; CPU:$8BF9 PRG:8BF9 20 21 22 60 FF 36 6B FF 4A 41 43 13 FF 86 62 21 + .byte $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $37, $6B ; CPU:$8C09 PRG:8C09 22 1F 20 5F 1A FF 8D 61 1F 20 21 22 60 FF 37 6B + .byte $FF, $44, $6B, $48, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D ; CPU:$8C19 PRG:8C19 FF 44 6B 48 13 FF 86 62 21 22 1F 20 5F 1A FF 8D + .byte $61, $1F, $20, $21, $22, $60, $FF, $38, $6B, $FF, $54, $49, $4E, $13, $FF, $86 ; CPU:$8C29 PRG:8C29 61 1F 20 21 22 60 FF 38 6B FF 54 49 4E 13 FF 86 + .byte $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF ; CPU:$8C39 PRG:8C39 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 22 60 FF + .byte $39, $6B, $FF, $42, $41, $42, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A ; CPU:$8C49 PRG:8C49 39 6B FF 42 41 42 13 FF 86 62 21 22 1F 20 5F 1A + .byte $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $31, $30, $6B, $4B, $41, $54, $13 ; CPU:$8C59 PRG:8C59 FF 8D 61 1F 20 21 22 60 FF 31 30 6B 4B 41 54 13 + .byte $FF, $87, $62, $21, $22, $1F, $20, $6E, $6C, $19, $6D, $A3, $6F, $1F, $20, $21 ; CPU:$8C69 PRG:8C69 FF 87 62 21 22 1F 20 6E 6C 19 6D A3 6F 1F 20 21 + .byte $22, $60, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22 ; CPU:$8C79 PRG:8C79 22 60 21 22 21 22 21 22 21 22 21 22 21 22 21 22 + .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $62, $21, $22, $11 ; CPU:$8C89 PRG:8C89 21 22 21 22 21 22 21 22 21 22 21 22 62 21 22 11 + .byte $FF, $06, $5A, $02, $FF, $06, $5A, $02, $FF, $06, $5A, $02, $FF, $06, $5A, $02 ; CPU:$8C99 PRG:8C99 FF 06 5A 02 FF 06 5A 02 FF 06 5A 02 FF 06 5A 02 + .byte $FF, $06, $5A, $09, $FF, $FF, $FF, $FF, $20, $00, $46, $FF, $83, $50, $4C, $41 ; CPU:$8CA9 PRG:8CA9 FF 06 5A 09 FF FF FF FF 20 00 46 FF 83 50 4C 41 + .byte $02, $4E, $85, $45, $44, $FF, $42, $59, $16, $FF, $8B, $54, $52, $49, $43, $49 ; CPU:$8CB9 PRG:8CB9 02 4E 85 45 44 FF 42 59 16 FF 8B 54 52 49 43 49 + .byte $41, $FF, $43, $48, $45, $4E, $35, $FF, $86, $50, $52, $4F, $47, $52, $41, $02 ; CPU:$8CC9 PRG:8CC9 41 FF 43 48 45 4E 35 FF 86 50 52 4F 47 52 41 02 + .byte $4D, $85, $45, $44, $FF, $42, $59, $13, $FF, $8B, $53, $49, $4C, $56, $45, $52 ; CPU:$8CD9 PRG:8CD9 4D 85 45 44 FF 42 59 13 FF 8B 53 49 4C 56 45 52 + .byte $53, $FF, $4C, $49, $4E, $35, $FF, $8A, $47, $52, $41, $50, $48, $49, $43, $FF ; CPU:$8CE9 PRG:8CE9 53 FF 4C 49 4E 35 FF 8A 47 52 41 50 48 49 43 FF + .byte $42, $59, $16, $FF, $8A, $4B, $41, $54, $48, $59, $FF, $43, $48, $45, $4E, $36 ; CPU:$8CF9 PRG:8CF9 42 59 16 FF 8A 4B 41 54 48 59 FF 43 48 45 4E 36 + .byte $FF, $90, $41, $52, $54, $FF, $44, $49, $52, $45, $43, $54, $49, $4F, $4E, $FF ; CPU:$8D09 PRG:8D09 FF 90 41 52 54 FF 44 49 52 45 43 54 49 4F 4E FF + .byte $42, $59, $10, $FF, $8A, $50, $4F, $4E, $59, $FF, $43, $48, $49, $4F, $55, $36 ; CPU:$8D19 PRG:8D19 42 59 10 FF 8A 50 4F 4E 59 FF 43 48 49 4F 55 36 + .byte $FF, $88, $4D, $55, $53, $49, $43, $FF, $42, $59, $18, $FF, $82, $4B, $4F, $02 ; CPU:$8D29 PRG:8D29 FF 88 4D 55 53 49 43 FF 42 59 18 FF 82 4B 4F 02 + .byte $53, $88, $45, $4C, $FF, $48, $55, $41, $4E, $47, $34, $FF, $89, $54, $48, $41 ; CPU:$8D39 PRG:8D39 53 88 45 4C FF 48 55 41 4E 47 34 FF 89 54 48 41 + .byte $4E, $4B, $53, $FF, $54, $4F, $17, $FF, $88, $4A, $41, $43, $4B, $FF, $59, $45 ; CPU:$8D49 PRG:8D49 4E 4B 53 FF 54 4F 17 FF 88 4A 41 43 4B FF 59 45 + .byte $48, $38, $FF, $85, $42, $47, $4D, $40, $8E, $1B, $FF, $92, $57, $41, $56, $49 ; CPU:$8D59 PRG:8D59 48 38 FF 85 42 47 4D 40 8E 1B FF 92 57 41 56 49 + .byte $4E, $47, $FF, $55, $50, $FF, $41, $4E, $44, $FF, $44, $4F, $57, $4E, $2E, $FF ; CPU:$8D69 PRG:8D69 4E 47 FF 55 50 FF 41 4E 44 FF 44 4F 57 4E 2E FF + .byte $85, $42, $47, $4D, $40, $8F, $1B, $FF, $87, $42, $4C, $4F, $57, $FF, $42, $55 ; CPU:$8D79 PRG:8D79 85 42 47 4D 40 8F 1B FF 87 42 4C 4F 57 FF 42 55 + .byte $02, $42, $83, $4C, $45, $53, $34, $FF, $85, $42, $47, $4D, $40, $7C, $1B, $FF ; CPU:$8D89 PRG:8D89 02 42 83 4C 45 53 34 FF 85 42 47 4D 40 7C 1B FF + .byte $90, $57, $4F, $4E, $44, $45, $52, $46, $55, $4C, $FF, $53, $45, $41, $42, $45 ; CPU:$8D99 PRG:8D99 90 57 4F 4E 44 45 52 46 55 4C FF 53 45 41 42 45 + .byte $44, $77, $FF, $13, $FF, $FF, $FF, $FF, $24, $00, $66, $FF, $81, $FB, $06, $FA ; CPU:$8DA9 PRG:8DA9 44 77 FF 13 FF FF FF FF 24 00 66 FF 81 FB 06 FA + .byte $83, $01, $02, $03, $03, $FA, $84, $04, $05, $06, $07, $02, $FA, $81, $F9, $0C ; CPU:$8DB9 PRG:8DB9 83 01 02 03 03 FA 84 04 05 06 07 02 FA 81 F9 0C + .byte $FF, $81, $FC, $06, $11, $83, $08, $09, $0A, $03, $11, $84, $0B, $0C, $0D, $0E ; CPU:$8DC9 PRG:8DC9 FF 81 FC 06 11 83 08 09 0A 03 11 84 0B 0C 0D 0E + .byte $02, $11, $81, $FD, $0C, $FF, $84, $FC, $11, $0F, $10, $02, $11, $84, $12, $13 ; CPU:$8DD9 PRG:8DD9 02 11 81 FD 0C FF 84 FC 11 0F 10 02 11 84 12 13 + .byte $14, $15, $03, $11, $84, $17, $18, $19, $1A, $02, $11, $81, $FD, $0C, $FF, $8C ; CPU:$8DE9 PRG:8DE9 14 15 03 11 84 17 18 19 1A 02 11 81 FD 0C FF 8C + .byte $FC, $11, $1B, $1C, $1D, $1E, $1F, $20, $21, $22, $23, $24, $02, $11, $82, $26 ; CPU:$8DF9 PRG:8DF9 FC 11 1B 1C 1D 1E 1F 20 21 22 23 24 02 11 82 26 + .byte $27, $03, $11, $81, $FD, $0C, $FF, $90, $FC, $28, $29, $2A, $2B, $2C, $2D, $2E ; CPU:$8E09 PRG:8E09 27 03 11 81 FD 0C FF 90 FC 28 29 2A 2B 2C 2D 2E + .byte $2F, $30, $31, $32, $33, $11, $35, $36, $03, $11, $81, $FD, $0C, $FF, $94, $FC ; CPU:$8E19 PRG:8E19 2F 30 31 32 33 11 35 36 03 11 81 FD 0C FF 94 FC + .byte $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42, $43, $44, $45, $46 ; CPU:$8E29 PRG:8E29 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 + .byte $47, $48, $49, $0C, $FF, $94, $FC, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53 ; CPU:$8E39 PRG:8E39 47 48 49 0C FF 94 FC 4B 4C 4D 4E 4F 50 51 52 53 + .byte $54, $55, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $0C, $FF, $94, $5E, $5F, $60 ; CPU:$8E49 PRG:8E49 54 55 56 57 58 59 5A 5B 5C 5D 0C FF 94 5E 5F 60 + .byte $61, $62, $63, $64, $65, $66, $67, $68, $69, $6A, $6B, $6C, $6D, $6E, $6F, $70 ; CPU:$8E59 PRG:8E59 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 + .byte $71, $0C, $FF, $94, $72, $73, $74, $75, $76, $77, $78, $79, $7A, $7B, $7C, $7D ; CPU:$8E69 PRG:8E69 71 0C FF 94 72 73 74 75 76 77 78 79 7A 7B 7C 7D + .byte $7E, $7F, $80, $81, $82, $83, $84, $85, $0C, $FF, $89, $86, $87, $88, $89, $8A ; CPU:$8E79 PRG:8E79 7E 7F 80 81 82 83 84 85 0C FF 89 86 87 88 89 8A + .byte $8B, $8C, $8D, $8E, $04, $8F, $87, $93, $94, $95, $96, $97, $98, $99, $0C, $FF ; CPU:$8E89 PRG:8E89 8B 8C 8D 8E 04 8F 87 93 94 95 96 97 98 99 0C FF + .byte $89, $9A, $9B, $9C, $9D, $9E, $9F, $A0, $A1, $A2, $03, $8F, $88, $A6, $A7, $A8 ; CPU:$8E99 PRG:8E99 89 9A 9B 9C 9D 9E 9F A0 A1 A2 03 8F 88 A6 A7 A8 + .byte $A9, $EF, $F0, $F1, $F8, $0C, $FF, $89, $AA, $AB, $AC, $AD, $AE, $AF, $B0, $B1 ; CPU:$8EA9 PRG:8EA9 A9 EF F0 F1 F8 0C FF 89 AA AB AC AD AE AF B0 B1 + .byte $B2, $02, $8F, $83, $B5, $B6, $B7, $05, $16, $81, $F8, $0C, $FF, $8D, $B8, $B9 ; CPU:$8EB9 PRG:8EB9 B2 02 8F 83 B5 B6 B7 05 16 81 F8 0C FF 8D B8 B9 + .byte $BA, $BB, $BC, $BD, $BE, $BF, $C0, $8F, $C2, $C3, $C4, $06, $16, $81, $F8, $0C ; CPU:$8EC9 PRG:8EC9 BA BB BC BD BE BF C0 8F C2 C3 C4 06 16 81 F8 0C + .byte $FF, $8C, $C5, $C6, $C7, $C8, $C9, $CA, $CB, $CC, $CD, $CE, $CF, $D0, $07, $16 ; CPU:$8ED9 PRG:8ED9 FF 8C C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 07 16 + .byte $81, $F8, $0C, $FF, $8A, $D1, $D2, $D3, $D4, $D5, $D6, $D7, $D8, $F2, $F3, $09 ; CPU:$8EE9 PRG:8EE9 81 F8 0C FF 8A D1 D2 D3 D4 D5 D6 D7 D8 F2 F3 09 + .byte $16, $81, $F8, $0C, $FF, $88, $D9, $DA, $DB, $DC, $DD, $DE, $DF, $E0, $0B, $16 ; CPU:$8EF9 PRG:8EF9 16 81 F8 0C FF 88 D9 DA DB DC DD DE DF E0 0B 16 + .byte $81, $F8, $0C, $FF, $83, $E1, $E2, $E3, $10, $16, $81, $F8, $0C, $FF, $81, $F5 ; CPU:$8F09 PRG:8F09 81 F8 0C FF 83 E1 E2 E3 10 16 81 F8 0C FF 81 F5 + .byte $12, $F6, $81, $F7, $77, $FF, $77, $FF, $3B, $FF, $81, $3F, $06, $FF, $83, $CF ; CPU:$8F19 PRG:8F19 12 F6 81 F7 77 FF 77 FF 3B FF 81 3F 06 FF 83 CF + .byte $03, $0C, $05, $FF, $84, $F3, $A0, $00, $0F, $03, $FF, $86, $BF, $AF, $AB, $56 ; CPU:$8F29 PRG:8F29 03 0C 05 FF 84 F3 A0 00 0F 03 FF 86 BF AF AB 56 + .byte $55, $DD, $02, $FF, $82, $7B, $5A, $03, $55, $81, $DD, $02, $FF, $81, $F7, $04 ; CPU:$8F39 PRG:8F39 55 DD 02 FF 82 7B 5A 03 55 81 DD 02 FF 81 F7 04 + .byte $F5, $81, $FD, $11, $FF, $FF, $FF, $FF, $24, $00, $66, $FF, $81, $C5, $09, $C0 ; CPU:$8F49 PRG:8F49 F5 81 FD 11 FF FF FF FF 24 00 66 FF 81 C5 09 C0 + .byte $82, $01, $02, $03, $C0, $82, $DB, $DC, $02, $C0, $81, $BF, $0C, $FF, $82, $C6 ; CPU:$8F59 PRG:8F59 82 01 02 03 C0 82 DB DC 02 C0 81 BF 0C FF 82 C6 + .byte $F9, $06, $76, $85, $D1, $03, $04, $05, $06, $02, $76, $82, $DD, $DE, $02, $76 ; CPU:$8F69 PRG:8F69 F9 06 76 85 D1 03 04 05 06 02 76 82 DD DE 02 76 + .byte $81, $BE, $0C, $FF, $83, $C6, $76, $F9, $04, $76, $8D, $C7, $07, $08, $09, $0A ; CPU:$8F79 PRG:8F79 81 BE 0C FF 83 C6 76 F9 04 76 8D C7 07 08 09 0A + .byte $0B, $76, $D9, $DF, $E0, $DA, $76, $BE, $0C, $FF, $81, $C6, $06, $76, $8A, $F9 ; CPU:$8F89 PRG:8F89 0B 76 D9 DF E0 DA 76 BE 0C FF 81 C6 06 76 8A F9 + .byte $0C, $0D, $0E, $0F, $10, $76, $E1, $E2, $E3, $02, $76, $81, $BE, $0C, $FF, $85 ; CPU:$8F99 PRG:8F99 0C 0D 0E 0F 10 76 E1 E2 E3 02 76 81 BE 0C FF 85 + .byte $C6, $F9, $76, $16, $17, $04, $76, $8B, $11, $12, $13, $14, $15, $E4, $E5, $E6 ; CPU:$8FA9 PRG:8FA9 C6 F9 76 16 17 04 76 8B 11 12 13 14 15 E4 E5 E6 + .byte $E7, $76, $BE, $0C, $FF, $81, $C6, $02, $76, $91, $18, $19, $76, $F9, $76, $28 ; CPU:$8FB9 PRG:8FB9 E7 76 BE 0C FF 81 C6 02 76 91 18 19 76 F9 76 28 + .byte $29, $2A, $2B, $2C, $2D, $E8, $E9, $EA, $EB, $76, $BE, $0C, $FF, $81, $C6, $02 ; CPU:$8FC9 PRG:8FC9 29 2A 2B 2C 2D E8 E9 EA EB 76 BE 0C FF 81 C6 02 + .byte $76, $83, $1A, $1B, $1C, $02, $76, $8C, $35, $36, $37, $38, $39, $3A, $EC, $ED ; CPU:$8FD9 PRG:8FD9 76 83 1A 1B 1C 02 76 8C 35 36 37 38 39 3A EC ED + .byte $EE, $EF, $76, $BE, $0C, $FF, $87, $1D, $1E, $1F, $20, $21, $22, $23, $02, $76 ; CPU:$8FE9 PRG:8FE9 EE EF 76 BE 0C FF 87 1D 1E 1F 20 21 22 23 02 76 + .byte $8B, $24, $25, $26, $27, $2E, $76, $F0, $F1, $F2, $76, $BE, $0C, $FF, $94, $2F ; CPU:$8FF9 PRG:8FF9 8B 24 25 26 27 2E 76 F0 F1 F2 76 BE 0C FF 94 2F + .byte $30, $31, $32, $33, $34, $D8, $76, $F5, $3B, $3C, $3D, $3E, $3F, $40, $76, $F3 ; CPU:$9009 PRG:9009 30 31 32 33 34 D8 76 F5 3B 3C 3D 3E 3F 40 76 F3 + .byte $F4, $76, $BE, $0C, $FF, $90, $41, $42, $43, $44, $45, $46, $D7, $F6, $47, $48 ; CPU:$9019 PRG:9019 F4 76 BE 0C FF 90 41 42 43 44 45 46 D7 F6 47 48 + .byte $49, $4A, $4B, $4C, $4D, $4E, $03, $76, $81, $BE, $0C, $FF, $90, $D3, $4F, $50 ; CPU:$9029 PRG:9029 49 4A 4B 4C 4D 4E 03 76 81 BE 0C FF 90 D3 4F 50 + .byte $51, $52, $53, $76, $54, $55, $56, $57, $58, $59, $5A, $5B, $5C, $03, $76, $81 ; CPU:$9039 PRG:9039 51 52 53 76 54 55 56 57 58 59 5A 5B 5C 03 76 81 + .byte $BE, $0C, $FF, $91, $C6, $76, $5D, $5E, $5F, $60, $61, $62, $63, $64, $65, $66 ; CPU:$9049 PRG:9049 BE 0C FF 91 C6 76 5D 5E 5F 60 61 62 63 64 65 66 + .byte $67, $68, $69, $6A, $6B, $02, $76, $81, $BE, $0C, $FF, $8B, $C6, $76, $6C, $6D ; CPU:$9059 PRG:9059 67 68 69 6A 6B 02 76 81 BE 0C FF 8B C6 76 6C 6D + .byte $6E, $6F, $70, $71, $72, $73, $74, $03, $75, $86, $78, $79, $7A, $7B, $7C, $BE ; CPU:$9069 PRG:9069 6E 6F 70 71 72 73 74 03 75 86 78 79 7A 7B 7C BE + .byte $0C, $FF, $94, $C6, $7D, $7E, $7F, $80, $81, $82, $83, $84, $85, $86, $87, $88 ; CPU:$9079 PRG:9079 0C FF 94 C6 7D 7E 7F 80 81 82 83 84 85 86 87 88 + .byte $89, $8A, $8B, $8C, $8D, $8E, $BE, $0C, $FF, $94, $C6, $8F, $90, $91, $92, $93 ; CPU:$9089 PRG:9089 89 8A 8B 8C 8D 8E BE 0C FF 94 C6 8F 90 91 92 93 + .byte $94, $95, $96, $97, $98, $99, $9A, $9B, $9C, $9D, $9E, $75, $A0, $A1, $0C, $FF ; CPU:$9099 PRG:9099 94 95 96 97 98 99 9A 9B 9C 9D 9E 75 A0 A1 0C FF + .byte $94, $C6, $A2, $A3, $A4, $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC, $AD, $AE, $AF ; CPU:$90A9 PRG:90A9 94 C6 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF + .byte $B0, $75, $B3, $B4, $B2, $0C, $FF, $8A, $F7, $B5, $B6, $B7, $B8, $B9, $BA, $BB ; CPU:$90B9 PRG:90B9 B0 75 B3 B4 B2 0C FF 8A F7 B5 B6 B7 B8 B9 BA BB + .byte $BC, $BD, $03, $75, $87, $C1, $C2, $C3, $C4, $B5, $B6, $9F, $0C, $FF, $8A, $D2 ; CPU:$90C9 PRG:90C9 BC BD 03 75 87 C1 C2 C3 C4 B5 B6 9F 0C FF 8A D2 + .byte $C8, $C9, $CA, $CB, $CC, $CD, $CE, $CF, $D0, $03, $77, $87, $D4, $D5, $D6, $F8 ; CPU:$90D9 PRG:90D9 C8 C9 CA CB CC CD CE CF D0 03 77 87 D4 D5 D6 F8 + .byte $C8, $C9, $B1, $77, $FF, $77, $FF, $3C, $FF, $81, $CF, $05, $FF, $84, $BF, $33 ; CPU:$90E9 PRG:90E9 C8 C9 B1 77 FF 77 FF 3C FF 81 CF 05 FF 84 BF 33 + .byte $00, $AA, $04, $FF, $84, $AA, $23, $00, $AA, $04, $FF, $84, $AA, $A7, $52, $DC ; CPU:$90F9 PRG:90F9 00 AA 04 FF 84 AA 23 00 AA 04 FF 84 AA A7 52 DC + .byte $04, $FF, $84, $FE, $F7, $55, $D5, $1A, $FF, $FF, $FF, $FF, $24, $00, $77, $FF ; CPU:$9109 PRG:9109 04 FF 84 FE F7 55 D5 1A FF FF FF FF 24 00 77 FF + .byte $0F, $FF, $81, $D9, $09, $DA, $82, $02, $03, $06, $DA, $81, $DB, $0D, $FF, $81 ; CPU:$9119 PRG:9119 0F FF 81 D9 09 DA 82 02 03 06 DA 81 DB 0D FF 81 + .byte $DD, $08, $01, $85, $C5, $04, $05, $01, $D8, $04, $01, $81, $DC, $0D, $FF, $81 ; CPU:$9129 PRG:9129 DD 08 01 85 C5 04 05 01 D8 04 01 81 DC 0D FF 81 + .byte $DD, $08, $01, $84, $06, $07, $08, $09, $05, $01, $81, $DC, $0D, $FF, $81, $DD ; CPU:$9139 PRG:9139 DD 08 01 84 06 07 08 09 05 01 81 DC 0D FF 81 DD + .byte $08, $01, $84, $0D, $0C, $0B, $0A, $05, $01, $81, $DC, $0D, $FF, $81, $DD, $08 ; CPU:$9149 PRG:9149 08 01 84 0D 0C 0B 0A 05 01 81 DC 0D FF 81 DD 08 + .byte $01, $84, $0E, $0F, $10, $11, $02, $01, $84, $86, $87, $88, $89, $0D, $FF, $81 ; CPU:$9159 PRG:9159 01 84 0E 0F 10 11 02 01 84 86 87 88 89 0D FF 81 + .byte $DD, $04, $01, $81, $D8, $02, $01, $85, $16, $15, $14, $13, $12, $02, $01, $84 ; CPU:$9169 PRG:9169 DD 04 01 81 D8 02 01 85 16 15 14 13 12 02 01 84 + .byte $8A, $8B, $8C, $8D, $0D, $FF, $81, $DD, $05, $01, $8D, $D8, $23, $17, $18, $19 ; CPU:$9179 PRG:9179 8A 8B 8C 8D 0D FF 81 DD 05 01 8D D8 23 17 18 19 + .byte $1A, $1B, $1C, $01, $8E, $8F, $90, $91, $0D, $FF, $83, $DD, $01, $D8, $03, $01 ; CPU:$9189 PRG:9189 1A 1B 1C 01 8E 8F 90 91 0D FF 83 DD 01 D8 03 01 + .byte $88, $D8, $24, $22, $21, $20, $1F, $1E, $1D, $02, $01, $83, $92, $93, $DC, $0D ; CPU:$9199 PRG:9199 88 D8 24 22 21 20 1F 1E 1D 02 01 83 92 93 DC 0D + .byte $FF, $83, $DD, $01, $D8, $02, $01, $8E, $37, $25, $26, $27, $28, $29, $2A, $2B ; CPU:$91A9 PRG:91A9 FF 83 DD 01 D8 02 01 8E 37 25 26 27 28 29 2A 2B + .byte $2C, $D8, $01, $95, $94, $DC, $0D, $FF, $93, $DD, $CC, $C9, $C8, $38, $36, $35 ; CPU:$91B9 PRG:91B9 2C D8 01 95 94 DC 0D FF 93 DD CC C9 C8 38 36 35 + .byte $34, $33, $32, $31, $30, $2F, $2D, $2E, $96, $97, $98, $99, $0D, $FF, $93, $D1 ; CPU:$91C9 PRG:91C9 34 33 32 31 30 2F 2D 2E 96 97 98 99 0D FF 93 D1 + .byte $CD, $CA, $C7, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42, $43, $9D, $9C ; CPU:$91D9 PRG:91D9 CD CA C7 39 3A 3B 3C 3D 3E 3F 40 41 42 43 9D 9C + .byte $9B, $9A, $0D, $FF, $93, $D2, $CE, $CB, $C6, $4E, $4D, $4C, $4B, $4A, $49, $48 ; CPU:$91E9 PRG:91E9 9B 9A 0D FF 93 D2 CE CB C6 4E 4D 4C 4B 4A 49 48 + .byte $47, $46, $45, $44, $5B, $5C, $9E, $9F, $0D, $FF, $93, $D3, $D0, $A6, $AD, $4F ; CPU:$91F9 PRG:91F9 47 46 45 44 5B 5C 9E 9F 0D FF 93 D3 D0 A6 AD 4F + .byte $50, $51, $52, $7D, $54, $55, $56, $57, $58, $59, $5A, $5D, $AE, $AF, $0D, $FF ; CPU:$9209 PRG:9209 50 51 52 7D 54 55 56 57 58 59 5A 5D AE AF 0D FF + .byte $93, $D4, $A8, $A4, $A5, $6C, $6B, $6A, $69, $68, $67, $66, $65, $64, $63, $62 ; CPU:$9219 PRG:9219 93 D4 A8 A4 A5 6C 6B 6A 69 68 67 66 65 64 63 62 + .byte $5F, $5E, $B0, $B1, $0D, $FF, $93, $D5, $A9, $A3, $A7, $6D, $6E, $6F, $70, $71 ; CPU:$9229 PRG:9229 5F 5E B0 B1 0D FF 93 D5 A9 A3 A7 6D 6E 6F 70 71 + .byte $72, $73, $74, $75, $76, $77, $60, $61, $C1, $C2, $0D, $FF, $93, $D6, $AA, $AB ; CPU:$9239 PRG:9239 72 73 74 75 76 77 60 61 C1 C2 0D FF 93 D6 AA AB + .byte $A0, $78, $79, $7A, $7B, $7C, $85, $7E, $7F, $80, $81, $82, $83, $84, $C0, $C3 ; CPU:$9249 PRG:9249 A0 78 79 7A 7B 7C 85 7E 7F 80 81 82 83 84 C0 C3 + .byte $0D, $FF, $93, $CF, $AC, $D7, $A1, $B2, $B3, $B4, $B5, $B6, $B7, $B8, $B9, $BA ; CPU:$9259 PRG:9259 0D FF 93 CF AC D7 A1 B2 B3 B4 B5 B6 B7 B8 B9 BA + .byte $BB, $BC, $BD, $BE, $BF, $C4, $77, $FF, $77, $FF, $4E, $FF, $82, $BB, $FE, $03 ; CPU:$9269 PRG:9269 BB BC BD BE BF C4 77 FF 77 FF 4E FF 82 BB FE 03 + .byte $FF, $85, $7F, $CC, $FF, $8B, $EF, $02, $FF, $85, $7F, $55, $0F, $FF, $00, $03 ; CPU:$9279 PRG:9279 FF 85 7F CC FF 8B EF 02 FF 85 7F 55 0F FF 00 03 + .byte $FF, $82, $F7, $F5, $15, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81 ; CPU:$9289 PRG:9289 FF 82 F7 F5 15 FF FF FF FF 24 00 77 FF 0F FF 81 + .byte $E0, $08, $E1, $83, $84, $85, $9B, $04, $E1, $83, $C1, $D5, $D6, $0D, $FF, $86 ; CPU:$9299 PRG:9299 E0 08 E1 83 84 85 9B 04 E1 83 C1 D5 D6 0D FF 86 + .byte $E2, $DE, $17, $36, $37, $E8, $02, $DE, $86, $6C, $83, $86, $9A, $9C, $AE, $02 ; CPU:$92A9 PRG:92A9 E2 DE 17 36 37 E8 02 DE 86 6C 83 86 9A 9C AE 02 + .byte $DE, $83, $C2, $D4, $D7, $0D, $FF, $8E, $E2, $DE, $18, $35, $38, $51, $DE, $E8 ; CPU:$92B9 PRG:92B9 DE 83 C2 D4 D7 0D FF 8E E2 DE 18 35 38 51 DE E8 + .byte $6D, $82, $87, $99, $9D, $E8, $02, $DE, $83, $C3, $D3, $D8, $0D, $FF, $93, $E2 ; CPU:$92C9 PRG:92C9 6D 82 87 99 9D E8 02 DE 83 C3 D3 D8 0D FF 93 E2 + .byte $DE, $19, $34, $39, $50, $DE, $E8, $DE, $81, $88, $98, $9E, $E8, $AF, $C0, $C4 ; CPU:$92D9 PRG:92D9 DE 19 34 39 50 DE E8 DE 81 88 98 9E E8 AF C0 C4 + .byte $D2, $E3, $0D, $FF, $93, $E2, $16, $1A, $33, $3A, $E8, $52, $6B, $6E, $80, $89 ; CPU:$92E9 PRG:92E9 D2 E3 0D FF 93 E2 16 1A 33 3A E8 52 6B 6E 80 89 + .byte $97, $9F, $E7, $B0, $BF, $C5, $D1, $E3, $0D, $FF, $8B, $01, $15, $1B, $32, $3B ; CPU:$92F9 PRG:92F9 97 9F E7 B0 BF C5 D1 E3 0D FF 8B 01 15 1B 32 3B + .byte $E7, $53, $6A, $6F, $DE, $8A, $02, $DE, $86, $AD, $B1, $BE, $C6, $DE, $E3, $0D ; CPU:$9309 PRG:9309 E7 53 6A 6F DE 8A 02 DE 86 AD B1 BE C6 DE E3 0D + .byte $FF, $8A, $02, $14, $1C, $31, $3C, $E8, $54, $69, $DE, $E8, $03, $DE, $86, $AC ; CPU:$9319 PRG:9319 FF 8A 02 14 1C 31 3C E8 54 69 DE E8 03 DE 86 AC + .byte $B2, $BD, $C7, $D0, $D9, $0D, $FF, $8A, $E2, $13, $1D, $30, $3D, $4F, $55, $68 ; CPU:$9329 PRG:9329 B2 BD C7 D0 D9 0D FF 8A E2 13 1D 30 3D 4F 55 68 + .byte $70, $E8, $03, $DE, $86, $AB, $B3, $BC, $C8, $CF, $DA, $0D, $FF, $8E, $E2, $12 ; CPU:$9339 PRG:9339 70 E8 03 DE 86 AB B3 BC C8 CF DA 0D FF 8E E2 12 + .byte $1E, $2F, $3E, $4E, $56, $67, $71, $7F, $8B, $96, $A0, $AA, $02, $DE, $83, $C9 ; CPU:$9349 PRG:9349 1E 2F 3E 4E 56 67 71 7F 8B 96 A0 AA 02 DE 83 C9 + .byte $CE, $DB, $0D, $FF, $8B, $03, $11, $1F, $2E, $3F, $4D, $57, $66, $72, $7E, $8C ; CPU:$9359 PRG:9359 CE DB 0D FF 8B 03 11 1F 2E 3F 4D 57 66 72 7E 8C + .byte $02, $DE, $81, $E8, $02, $DE, $83, $E8, $DE, $DC, $0D, $FF, $8B, $04, $10, $20 ; CPU:$9369 PRG:9369 02 DE 81 E8 02 DE 83 E8 DE DC 0D FF 8B 04 10 20 + .byte $2D, $40, $4C, $58, $65, $73, $7D, $8D, $02, $DE, $81, $E8, $02, $DE, $83, $E8 ; CPU:$9379 PRG:9379 2D 40 4C 58 65 73 7D 8D 02 DE 81 E8 02 DE 83 E8 + .byte $DE, $E3, $0D, $FF, $8A, $E2, $0F, $21, $2C, $41, $4B, $59, $64, $74, $E8, $02 ; CPU:$9389 PRG:9389 DE E3 0D FF 8A E2 0F 21 2C 41 4B 59 64 74 E8 02 + .byte $DE, $87, $E8, $A9, $B4, $DE, $E8, $DE, $E3, $0D, $FF, $8A, $05, $0E, $22, $2B ; CPU:$9399 PRG:9399 DE 87 E8 A9 B4 DE E8 DE E3 0D FF 8A 05 0E 22 2B + .byte $42, $4A, $5A, $63, $75, $DE, $02, $8E, $87, $E7, $A8, $B5, $DE, $E7, $DE, $E3 ; CPU:$93A9 PRG:93A9 42 4A 5A 63 75 DE 02 8E 87 E7 A8 B5 DE E7 DE E3 + .byte $0D, $FF, $93, $06, $0D, $23, $2A, $DE, $49, $5B, $62, $76, $7C, $76, $7C, $A1 ; CPU:$93B9 PRG:93B9 0D FF 93 06 0D 23 2A DE 49 5B 62 76 7C 76 7C A1 + .byte $A7, $B6, $BB, $CA, $CD, $DD, $0D, $FF, $8D, $07, $0C, $24, $29, $43, $48, $5C ; CPU:$93C9 PRG:93C9 A7 B6 BB CA CD DD 0D FF 8D 07 0C 24 29 43 48 5C + .byte $61, $77, $7B, $90, $95, $A2, $02, $FF, $82, $BA, $CB, $02, $CC, $0D, $FF, $8F ; CPU:$93D9 PRG:93D9 61 77 7B 90 95 A2 02 FF 82 BA CB 02 CC 0D FF 8F + .byte $08, $0B, $25, $28, $44, $47, $5D, $60, $DF, $7A, $91, $94, $A3, $A6, $B7, $03 ; CPU:$93E9 PRG:93E9 08 0B 25 28 44 47 5D 60 DF 7A 91 94 A3 A6 B7 03 + .byte $FF, $81, $EA, $0D, $FF, $90, $09, $0A, $26, $27, $45, $46, $5E, $5F, $78, $79 ; CPU:$93F9 PRG:93F9 FF 81 EA 0D FF 90 09 0A 26 27 45 46 5E 5F 78 79 + .byte $92, $93, $A4, $A5, $B8, $B9, $02, $E9, $81, $E4, $77, $FF, $77, $FF, $43, $FF ; CPU:$9409 PRG:9409 92 93 A4 A5 B8 B9 02 E9 81 E4 77 FF 77 FF 43 FF + .byte $81, $0C, $02, $FF, $87, $F7, $DD, $FF, $7F, $53, $98, $AA, $02, $FF, $81, $FC ; CPU:$9419 PRG:9419 81 0C 02 FF 87 F7 DD FF 7F 53 98 AA 02 FF 81 FC + .byte $02, $FF, $84, $F7, $7B, $AA, $EE, $05, $FF, $84, $55, $EA, $AE, $EF, $04, $FF ; CPU:$9429 PRG:9429 02 FF 84 F7 7B AA EE 05 FF 84 55 EA AE EF 04 FF + .byte $81, $F5, $02, $FA, $81, $FE, $12, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F ; CPU:$9439 PRG:9439 81 F5 02 FA 81 FE 12 FF FF FF FF 24 00 77 FF 0F + .byte $FF, $81, $79, $02, $6D, $81, $69, $06, $7A, $89, $19, $1A, $7A, $21, $22, $7A ; CPU:$9449 PRG:9449 FF 81 79 02 6D 81 69 06 7A 89 19 1A 7A 21 22 7A + .byte $6B, $6D, $7B, $0D, $FF, $81, $80, $02, $6C, $81, $68, $05, $84, $8A, $14, $13 ; CPU:$9459 PRG:9459 6B 6D 7B 0D FF 81 80 02 6C 81 68 05 84 8A 14 13 + .byte $15, $1B, $20, $23, $84, $6A, $6C, $7C, $0D, $FF, $81, $80, $02, $6C, $90, $68 ; CPU:$9469 PRG:9469 15 1B 20 23 84 6A 6C 7C 0D FF 81 80 02 6C 90 68 + .byte $B5, $01, $06, $07, $0C, $0D, $12, $16, $1C, $1F, $24, $84, $6A, $6C, $7C, $0D ; CPU:$9479 PRG:9479 B5 01 06 07 0C 0D 12 16 1C 1F 24 84 6A 6C 7C 0D + .byte $FF, $81, $80, $02, $6C, $90, $68, $B3, $02, $05, $08, $0B, $0E, $11, $17, $1D ; CPU:$9489 PRG:9489 FF 81 80 02 6C 90 68 B3 02 05 08 0B 0E 11 17 1D + .byte $1E, $25, $84, $6A, $6C, $7C, $0D, $FF, $81, $80, $02, $6C, $8B, $68, $B4, $03 ; CPU:$9499 PRG:9499 1E 25 84 6A 6C 7C 0D FF 81 80 02 6C 8B 68 B4 03 + .byte $04, $09, $0A, $0F, $10, $18, $84, $BA, $02, $84, $83, $6A, $6C, $7C, $0D, $FF ; CPU:$94A9 PRG:94A9 04 09 0A 0F 10 18 84 BA 02 84 83 6A 6C 7C 0D FF + .byte $81, $80, $02, $6C, $8B, $68, $84, $77, $78, $2A, $26, $27, $28, $29, $82, $83 ; CPU:$94B9 PRG:94B9 81 80 02 6C 8B 68 84 77 78 2A 26 27 28 29 82 83 + .byte $02, $84, $83, $6A, $6C, $7C, $0D, $FF, $81, $80, $02, $6C, $81, $68, $02, $84 ; CPU:$94C9 PRG:94C9 02 84 83 6A 6C 7C 0D FF 81 80 02 6C 81 68 02 84 + .byte $02, $2E, $85, $2B, $2C, $2D, $2E, $37, $03, $84, $83, $6A, $6C, $7C, $0D, $FF ; CPU:$94D9 PRG:94D9 02 2E 85 2B 2C 2D 2E 37 03 84 83 6A 6C 7C 0D FF + .byte $81, $80, $02, $6C, $81, $34, $02, $6E, $87, $31, $32, $33, $6E, $35, $36, $38 ; CPU:$94E9 PRG:94E9 81 80 02 6C 81 34 02 6E 87 31 32 33 6E 35 36 38 + .byte $03, $6E, $83, $6F, $6C, $7C, $0D, $FF, $82, $8D, $97, $02, $95, $8F, $94, $39 ; CPU:$94F9 PRG:94F9 03 6E 83 6F 6C 7C 0D FF 82 8D 97 02 95 8F 94 39 + .byte $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $85, $86, $87, $A3, $B9, $0D, $FF, $93 ; CPU:$9509 PRG:9509 3A 3B 3C 3D 3E 3F 40 41 85 86 87 A3 B9 0D FF 93 + .byte $96, $98, $B1, $AB, $93, $4A, $49, $48, $47, $46, $45, $44, $43, $42, $A5, $A6 ; CPU:$9519 PRG:9519 96 98 B1 AB 93 4A 49 48 47 46 45 44 43 42 A5 A6 + .byte $8E, $91, $B8, $0D, $FF, $93, $96, $99, $B0, $AC, $92, $4B, $4C, $4D, $4E, $4F ; CPU:$9529 PRG:9529 8E 91 B8 0D FF 93 96 99 B0 AC 92 4B 4C 4D 4E 4F + .byte $50, $51, $52, $53, $A4, $A7, $AA, $8F, $B7, $0D, $FF, $93, $96, $9A, $AF, $AD ; CPU:$9539 PRG:9539 50 51 52 53 A4 A7 AA 8F B7 0D FF 93 96 9A AF AD + .byte $81, $5C, $5B, $5A, $59, $58, $57, $56, $55, $54, $88, $A8, $A9, $90, $B7, $0D ; CPU:$9549 PRG:9549 81 5C 5B 5A 59 58 57 56 55 54 88 A8 A9 90 B7 0D + .byte $FF, $93, $A2, $9B, $AE, $B2, $5D, $5E, $5F, $60, $61, $62, $63, $64, $65, $66 ; CPU:$9559 PRG:9559 FF 93 A2 9B AE B2 5D 5E 5F 60 61 62 63 64 65 66 + .byte $89, $8A, $8B, $8C, $30, $0D, $FF, $84, $A1, $67, $9D, $9E, $0A, $67, $82, $9F ; CPU:$9569 PRG:9569 89 8A 8B 8C 30 0D FF 84 A1 67 9D 9E 0A 67 82 9F + .byte $A0, $02, $67, $81, $2F, $0D, $FF, $84, $80, $6C, $71, $72, $0B, $6C, $81, $73 ; CPU:$9579 PRG:9579 A0 02 67 81 2F 0D FF 84 80 6C 71 72 0B 6C 81 73 + .byte $02, $6C, $81, $B6, $0D, $FF, $84, $80, $6C, $71, $72, $0B, $6C, $81, $74, $02 ; CPU:$9589 PRG:9589 02 6C 81 B6 0D FF 84 80 6C 71 72 0B 6C 81 74 02 + .byte $6C, $81, $B6, $0D, $FF, $84, $7F, $7E, $75, $76, $0B, $7E, $81, $9C, $02, $7E ; CPU:$9599 PRG:9599 6C 81 B6 0D FF 84 7F 7E 75 76 0B 7E 81 9C 02 7E + .byte $81, $7D, $77, $FF, $77, $FF, $3E, $FF, $82, $33, $CC, $02, $FF, $82, $33, $CC ; CPU:$95A9 PRG:95A9 81 7D 77 FF 77 FF 3E FF 82 33 CC 02 FF 82 33 CC + .byte $02, $FF, $82, $33, $CC, $02, $FF, $82, $33, $0C, $02, $0F, $82, $03, $CC, $02 ; CPU:$95B9 PRG:95B9 02 FF 82 33 CC 02 FF 82 33 0C 02 0F 82 03 CC 02 + .byte $FF, $81, $BB, $02, $AA, $83, $55, $95, $ED, $02, $FF, $82, $7B, $6A, $03, $5A ; CPU:$95C9 PRG:95C9 FF 81 BB 02 AA 83 55 95 ED 02 FF 82 7B 6A 03 5A + .byte $83, $EE, $FF, $FE, $05, $FA, $81, $FE, $11, $FF, $FF, $FF, $FF, $24, $00, $77 ; CPU:$95D9 PRG:95D9 83 EE FF FE 05 FA 81 FE 11 FF FF FF FF 24 00 77 + .byte $FF, $0F, $FF, $81, $A6, $05, $36, $04, $46, $04, $36, $85, $46, $B6, $B7, $B8 ; CPU:$95E9 PRG:95E9 FF 0F FF 81 A6 05 36 04 46 04 36 85 46 B6 B7 B8 + .byte $49, $0D, $FF, $81, $9C, $05, $FF, $84, $CA, $C7, $C8, $C9, $04, $FF, $85, $A7 ; CPU:$95F9 PRG:95F9 49 0D FF 81 9C 05 FF 84 CA C7 C8 C9 04 FF 85 A7 + .byte $B2, $B3, $B4, $B5, $0D, $FF, $81, $9C, $02, $FF, $81, $AF, $02, $FF, $84, $0C ; CPU:$9609 PRG:9609 B2 B3 B4 B5 0D FF 81 9C 02 FF 81 AF 02 FF 84 0C + .byte $0D, $0E, $0F, $03, $FF, $86, $D0, $B9, $BA, $BB, $BC, $BD, $0D, $FF, $8A, $9C ; CPU:$9619 PRG:9619 0D 0E 0F 03 FF 86 D0 B9 BA BB BC BD 0D FF 8A 9C + .byte $04, $05, $06, $07, $FF, $08, $09, $0A, $0B, $03, $FF, $86, $CF, $CE, $BE, $BF ; CPU:$9629 PRG:9629 04 05 06 07 FF 08 09 0A 0B 03 FF 86 CF CE BE BF + .byte $C0, $C1, $0D, $FF, $8A, $10, $11, $12, $13, $14, $FF, $15, $16, $17, $18, $03 ; CPU:$9639 PRG:9639 C0 C1 0D FF 8A 10 11 12 13 14 FF 15 16 17 18 03 + .byte $FF, $86, $CC, $CD, $C2, $C3, $C5, $6D, $0D, $FF, $8B, $19, $1A, $1B, $1C, $1D ; CPU:$9649 PRG:9649 FF 86 CC CD C2 C3 C5 6D 0D FF 8B 19 1A 1B 1C 1D + .byte $CB, $1E, $1F, $20, $21, $22, $02, $FF, $83, $33, $34, $35, $02, $FF, $81, $70 ; CPU:$9659 PRG:9659 CB 1E 1F 20 21 22 02 FF 83 33 34 35 02 FF 81 70 + .byte $0D, $FF, $90, $23, $24, $25, $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F ; CPU:$9669 PRG:9669 0D FF 90 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F + .byte $30, $31, $32, $02, $FF, $81, $70, $0D, $FF, $90, $C4, $37, $38, $39, $3A, $3B ; CPU:$9679 PRG:9679 30 31 32 02 FF 81 70 0D FF 90 C4 37 38 39 3A 3B + .byte $3C, $3D, $3E, $3F, $40, $41, $42, $43, $44, $45, $02, $FF, $81, $70, $0D, $FF ; CPU:$9689 PRG:9689 3C 3D 3E 3F 40 41 42 43 44 45 02 FF 81 70 0D FF + .byte $8F, $9C, $47, $48, $DC, $4A, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53, $54 ; CPU:$9699 PRG:9699 8F 9C 47 48 DC 4A 4B 4C 4D 4E 4F 50 51 52 53 54 + .byte $03, $FF, $81, $70, $0D, $FF, $8F, $9C, $FF, $55, $56, $57, $58, $59, $5A, $5B ; CPU:$96A9 PRG:96A9 03 FF 81 70 0D FF 8F 9C FF 55 56 57 58 59 5A 5B + .byte $5C, $5D, $5E, $5F, $60, $61, $03, $FF, $81, $70, $0D, $FF, $8F, $9C, $FF, $62 ; CPU:$96B9 PRG:96B9 5C 5D 5E 5F 60 61 03 FF 81 70 0D FF 8F 9C FF 62 + .byte $63, $64, $65, $66, $67, $68, $69, $6A, $6B, $6C, $03, $6E, $03, $FF, $81, $70 ; CPU:$96C9 PRG:96C9 63 64 65 66 67 68 69 6A 6B 6C 03 6E 03 FF 81 70 + .byte $0D, $FF, $8F, $9C, $FF, $6F, $03, $71, $72, $73, $74, $75, $76, $77, $03, $79 ; CPU:$96D9 PRG:96D9 0D FF 8F 9C FF 6F 03 71 72 73 74 75 76 77 03 79 + .byte $03, $7B, $03, $FF, $81, $70, $0D, $FF, $8F, $9C, $FF, $7C, $7D, $7E, $7F, $80 ; CPU:$96E9 PRG:96E9 03 7B 03 FF 81 70 0D FF 8F 9C FF 7C 7D 7E 7F 80 + .byte $81, $82, $83, $84, $03, $86, $87, $88, $03, $FF, $81, $70, $0D, $FF, $81, $9C ; CPU:$96F9 PRG:96F9 81 82 83 84 03 86 87 88 03 FF 81 70 0D FF 81 9C + .byte $02, $FF, $8A, $89, $8A, $8B, $8C, $8D, $8E, $8F, $90, $03, $92, $05, $FF, $81 ; CPU:$9709 PRG:9709 02 FF 8A 89 8A 8B 8C 8D 8E 8F 90 03 92 05 FF 81 + .byte $70, $0D, $FF, $81, $9C, $03, $FF, $89, $93, $94, $95, $96, $97, $98, $99, $9A ; CPU:$9719 PRG:9719 70 0D FF 81 9C 03 FF 89 93 94 95 96 97 98 99 9A + .byte $9B, $05, $FF, $81, $70, $0D, $FF, $81, $9C, $03, $FF, $89, $9D, $9E, $9F, $A0 ; CPU:$9729 PRG:9729 9B 05 FF 81 70 0D FF 81 9C 03 FF 89 9D 9E 9F A0 + .byte $A1, $A2, $A3, $A4, $A5, $05, $FF, $81, $70, $0D, $FF, $81, $91, $03, $85, $89 ; CPU:$9739 PRG:9739 A1 A2 A3 A4 A5 05 FF 81 70 0D FF 81 91 03 85 89 + .byte $A8, $A9, $AA, $AB, $AC, $AD, $AE, $03, $B0, $05, $85, $81, $7A, $77, $FF, $77 ; CPU:$9749 PRG:9749 A8 A9 AA AB AC AD AE 03 B0 05 85 81 7A 77 FF 77 + .byte $FF, $43, $FF, $85, $5F, $AA, $BF, $AA, $EE, $02, $FF, $85, $55, $D5, $3A, $BA ; CPU:$9759 PRG:9759 FF 43 FF 85 5F AA BF AA EE 02 FF 85 55 D5 3A BA + .byte $AA, $04, $FF, $84, $FE, $33, $FF, $BB, $04, $FF, $83, $CF, $03, $CF, $06, $FF ; CPU:$9769 PRG:9769 AA 04 FF 84 FE 33 FF BB 04 FF 83 CF 03 CF 06 FF + .byte $82, $F0, $FC, $13, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $84, $EB ; CPU:$9779 PRG:9779 82 F0 FC 13 FF FF FF FF 24 00 77 FF 0F FF 84 EB + .byte $EA, $D0, $D1, $02, $EA, $83, $CA, $C9, $C8, $02, $EA, $81, $B5, $06, $EA, $81 ; CPU:$9789 PRG:9789 EA D0 D1 02 EA 83 CA C9 C8 02 EA 81 B5 06 EA 81 + .byte $E9, $0D, $FF, $8D, $EC, $01, $CF, $CC, $D3, $01, $C5, $C6, $C7, $01, $C1, $C0 ; CPU:$9799 PRG:9799 E9 0D FF 8D EC 01 CF CC D3 01 C5 C6 C7 01 C1 C0 + .byte $BF, $05, $01, $81, $E8, $0D, $FF, $8D, $EC, $01, $CE, $CB, $D2, $01, $C4, $C3 ; CPU:$97A9 PRG:97A9 BF 05 01 81 E8 0D FF 8D EC 01 CE CB D2 01 C4 C3 + .byte $C2, $ED, $BB, $BC, $BD, $05, $01, $81, $E8, $0D, $FF, $81, $EC, $03, $01, $82 ; CPU:$97B9 PRG:97B9 C2 ED BB BC BD 05 01 81 E8 0D FF 81 EC 03 01 82 + .byte $90, $91, $04, $01, $89, $BA, $B9, $B8, $AA, $03, $01, $EF, $01, $E8, $0D, $FF ; CPU:$97C9 PRG:97C9 90 91 04 01 89 BA B9 B8 AA 03 01 EF 01 E8 0D FF + .byte $90, $EC, $01, $EE, $8D, $8C, $8A, $8B, $01, $ED, $B4, $B3, $AF, $B7, $05, $06 ; CPU:$97D9 PRG:97D9 90 EC 01 EE 8D 8C 8A 8B 01 ED B4 B3 AF B7 05 06 + .byte $07, $02, $01, $81, $E8, $0D, $FF, $81, $EC, $02, $01, $83, $8E, $88, $89, $03 ; CPU:$97E9 PRG:97E9 07 02 01 81 E8 0D FF 81 EC 02 01 83 8E 88 89 03 + .byte $01, $8A, $B0, $B1, $B2, $0B, $0A, $09, $08, $AB, $01, $E8, $0D, $FF, $81, $EC ; CPU:$97F9 PRG:97F9 01 8A B0 B1 B2 0B 0A 09 08 AB 01 E8 0D FF 81 EC + .byte $03, $01, $8F, $92, $86, $85, $84, $01, $AD, $AC, $8F, $0D, $0E, $0F, $10, $11 ; CPU:$9809 PRG:9809 03 01 8F 92 86 85 84 01 AD AC 8F 0D 0E 0F 10 11 + .byte $01, $E8, $0D, $FF, $81, $EC, $02, $01, $90, $94, $7B, $7C, $7D, $7E, $7F, $04 ; CPU:$9819 PRG:9819 01 E8 0D FF 81 EC 02 01 90 94 7B 7C 7D 7E 7F 04 + .byte $4E, $4F, $16, $15, $14, $13, $12, $01, $E8, $0D, $FF, $81, $EC, $02, $01, $90 ; CPU:$9829 PRG:9829 4E 4F 16 15 14 13 12 01 E8 0D FF 81 EC 02 01 90 + .byte $95, $72, $71, $70, $6F, $80, $93, $23, $21, $1B, $1A, $19, $18, $17, $01, $E8 ; CPU:$9839 PRG:9839 95 72 71 70 6F 80 93 23 21 1B 1A 19 18 17 01 E8 + .byte $0D, $FF, $93, $EC, $ED, $01, $96, $73, $6C, $6D, $6E, $82, $83, $24, $22, $20 ; CPU:$9849 PRG:9849 0D FF 93 EC ED 01 96 73 6C 6D 6E 82 83 24 22 20 + .byte $1F, $1E, $1D, $1C, $01, $E8, $0D, $FF, $81, $EC, $02, $01, $90, $97, $74, $6B ; CPU:$9859 PRG:9859 1F 1E 1D 1C 01 E8 0D FF 81 EC 02 01 90 97 74 6B + .byte $6A, $62, $61, $81, $25, $26, $27, $28, $29, $2A, $2B, $01, $E8, $0D, $FF, $93 ; CPU:$9869 PRG:9869 6A 62 61 81 25 26 27 28 29 2A 2B 01 E8 0D FF 93 + .byte $E6, $A1, $9D, $9C, $75, $99, $69, $63, $5F, $60, $32, $31, $30, $2F, $2E, $2D ; CPU:$9879 PRG:9879 E6 A1 9D 9C 75 99 69 63 5F 60 32 31 30 2F 2E 2D + .byte $2C, $01, $E8, $0D, $FF, $93, $E1, $A0, $9E, $9B, $76, $79, $68, $64, $5E, $5B ; CPU:$9889 PRG:9889 2C 01 E8 0D FF 93 E1 A0 9E 9B 76 79 68 64 5E 5B + .byte $01, $38, $37, $36, $35, $34, $33, $4D, $E8, $0D, $FF, $93, $DF, $DE, $9F, $9A ; CPU:$9899 PRG:9899 01 38 37 36 35 34 33 4D E8 0D FF 93 DF DE 9F 9A + .byte $77, $78, $67, $65, $5D, $5A, $3F, $3E, $3D, $3C, $3B, $3A, $39, $01, $E8, $0D ; CPU:$98A9 PRG:98A9 77 78 67 65 5D 5A 3F 3E 3D 3C 3B 3A 39 01 E8 0D + .byte $FF, $93, $DC, $DD, $E0, $E2, $7A, $A2, $A3, $A4, $5C, $59, $46, $45, $44, $43 ; CPU:$98B9 PRG:98B9 FF 93 DC DD E0 E2 7A A2 A3 A4 5C 59 46 45 44 43 + .byte $42, $41, $40, $01, $E8, $0D, $FF, $93, $DB, $DA, $D9, $D8, $E5, $98, $A6, $A5 ; CPU:$98C9 PRG:98C9 42 41 40 01 E8 0D FF 93 DB DA D9 D8 E5 98 A6 A5 + .byte $A9, $58, $4A, $49, $48, $47, $52, $51, $50, $01, $E8, $0D, $FF, $88, $D5, $D4 ; CPU:$98D9 PRG:98D9 A9 58 4A 49 48 47 52 51 50 01 E8 0D FF 88 D5 D4 + .byte $D6, $D7, $E3, $E4, $A7, $A8, $02, $E7, $82, $4C, $4B, $02, $02, $85, $53, $54 ; CPU:$98E9 PRG:98E9 D6 D7 E3 E4 A7 A8 02 E7 82 4C 4B 02 02 85 53 54 + .byte $55, $56, $57, $77, $FF, $77, $FF, $43, $FF, $81, $BF, $07, $FF, $84, $56, $DD ; CPU:$98F9 PRG:98F9 55 56 57 77 FF 77 FF 43 FF 81 BF 07 FF 84 56 DD + .byte $BB, $9A, $04, $FF, $84, $75, $55, $67, $55, $03, $FF, $85, $33, $CB, $33, $00 ; CPU:$9909 PRG:9909 BB 9A 04 FF 84 75 55 67 55 03 FF 85 33 CB 33 00 + .byte $04, $06, $FF, $02, $F0, $12, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF ; CPU:$9919 PRG:9919 04 06 FF 02 F0 12 FF FF FF FF 24 00 77 FF 0F FF + .byte $86, $DE, $DC, $E6, $87, $88, $89, $05, $DC, $85, $8F, $90, $97, $DB, $E6, $02 ; CPU:$9929 PRG:9929 86 DE DC E6 87 88 89 05 DC 85 8F 90 97 DB E6 02 + .byte $DC, $81, $DF, $0D, $FF, $81, $E1, $02, $01, $84, $04, $05, $06, $9C, $03, $01 ; CPU:$9939 PRG:9939 DC 81 DF 0D FF 81 E1 02 01 84 04 05 06 9C 03 01 + .byte $84, $83, $84, $85, $86, $02, $01, $83, $4A, $01, $DD, $0D, $FF, $87, $E1, $01 ; CPU:$9949 PRG:9949 84 83 84 85 86 02 01 83 4A 01 DD 0D FF 87 E1 01 + .byte $8A, $07, $08, $09, $0A, $02, $01, $86, $99, $82, $81, $80, $7F, $9B, $03, $01 ; CPU:$9959 PRG:9959 8A 07 08 09 0A 02 01 86 99 82 81 80 7F 9B 03 01 + .byte $81, $DD, $0D, $FF, $8F, $E1, $01, $0B, $0C, $0D, $0E, $0F, $E5, $01, $96, $7B ; CPU:$9969 PRG:9969 81 DD 0D FF 8F E1 01 0B 0C 0D 0E 0F E5 01 96 7B + .byte $7C, $7D, $7E, $9A, $03, $01, $81, $DD, $0D, $FF, $8F, $E1, $01, $10, $11, $12 ; CPU:$9979 PRG:9979 7C 7D 7E 9A 03 01 81 DD 0D FF 8F E1 01 10 11 12 + .byte $13, $14, $01, $DA, $01, $7A, $79, $76, $75, $E0, $03, $01, $81, $DD, $0D, $FF ; CPU:$9989 PRG:9989 13 14 01 DA 01 7A 79 76 75 E0 03 01 81 DD 0D FF + .byte $88, $E1, $01, $15, $16, $17, $18, $19, $E8, $03, $01, $82, $78, $77, $05, $01 ; CPU:$9999 PRG:9999 88 E1 01 15 16 17 18 19 E8 03 01 82 78 77 05 01 + .byte $81, $DD, $0D, $FF, $88, $E1, $01, $1A, $1B, $1C, $1D, $1E, $E9, $02, $01, $86 ; CPU:$99A9 PRG:99A9 81 DD 0D FF 88 E1 01 1A 1B 1C 1D 1E E9 02 01 86 + .byte $70, $71, $72, $73, $74, $DA, $02, $01, $81, $DD, $0D, $FF, $90, $E1, $01, $1F ; CPU:$99B9 PRG:99B9 70 71 72 73 74 DA 02 01 81 DD 0D FF 90 E1 01 1F + .byte $20, $21, $22, $23, $2A, $01, $95, $6F, $6E, $6D, $6C, $6B, $93, $02, $01, $81 ; CPU:$99C9 PRG:99C9 20 21 22 23 2A 01 95 6F 6E 6D 6C 6B 93 02 01 81 + .byte $DD, $0D, $FF, $90, $E1, $E7, $24, $25, $26, $27, $28, $29, $01, $65, $66, $67 ; CPU:$99D9 PRG:99D9 DD 0D FF 90 E1 E7 24 25 26 27 28 29 01 65 66 67 + .byte $68, $69, $6A, $91, $02, $01, $81, $DD, $0D, $FF, $81, $E1, $02, $01, $8D, $2B ; CPU:$99E9 PRG:99E9 68 69 6A 91 02 01 81 DD 0D FF 81 E1 02 01 8D 2B + .byte $2C, $2D, $2E, $01, $E7, $64, $63, $62, $61, $60, $5F, $5E, $02, $01, $81, $DD ; CPU:$99F9 PRG:99F9 2C 2D 2E 01 E7 64 63 62 61 60 5F 5E 02 01 81 DD + .byte $0D, $FF, $81, $E3, $02, $01, $84, $2F, $30, $31, $32, $02, $01, $87, $57, $58 ; CPU:$9A09 PRG:9A09 0D FF 81 E3 02 01 84 2F 30 31 32 02 01 87 57 58 + .byte $59, $5A, $5B, $5C, $5D, $02, $01, $81, $DD, $0D, $FF, $87, $E3, $BA, $BC, $33 ; CPU:$9A19 PRG:9A19 59 5A 5B 5C 5D 02 01 81 DD 0D FF 87 E3 BA BC 33 + .byte $34, $35, $36, $02, $01, $8A, $9D, $55, $54, $53, $52, $51, $94, $C5, $C6, $C7 ; CPU:$9A29 PRG:9A29 34 35 36 02 01 8A 9D 55 54 53 52 51 94 C5 C6 C7 + .byte $0D, $FF, $88, $E3, $A9, $BB, $01, $37, $38, $39, $3C, $02, $01, $89, $56, $45 ; CPU:$9A39 PRG:9A39 0D FF 88 E3 A9 BB 01 37 38 39 3C 02 01 89 56 45 + .byte $4E, $4F, $50, $AA, $AB, $AC, $AD, $0D, $FF, $93, $E3, $A7, $B8, $B9, $92, $3A ; CPU:$9A49 PRG:9A49 4E 4F 50 AA AB AC AD 0D FF 93 E3 A7 B8 B9 92 3A + .byte $3B, $3D, $3E, $8D, $44, $46, $4D, $C8, $C4, $B1, $B0, $AF, $AE, $0D, $FF, $8C ; CPU:$9A59 PRG:9A59 3B 3D 3E 8D 44 46 4D C8 C4 B1 B0 AF AE 0D FF 8C + .byte $E3, $A5, $B7, $B6, $BF, $01, $3F, $40, $41, $42, $43, $47, $03, $01, $84, $04 ; CPU:$9A69 PRG:9A69 E3 A5 B7 B6 BF 01 3F 40 41 42 43 47 03 01 84 04 + .byte $CC, $CD, $CE, $0D, $FF, $86, $A2, $A3, $B4, $B5, $C1, $C3, $04, $01, $89, $49 ; CPU:$9A79 PRG:9A79 CC CD CE 0D FF 86 A2 A3 B4 B5 C1 C3 04 01 89 49 + .byte $48, $4B, $01, $D5, $D3, $4C, $C9, $CA, $0D, $FF, $88, $9F, $A0, $A1, $B3, $BD ; CPU:$9A89 PRG:9A89 48 4B 01 D5 D3 4C C9 CA 0D FF 88 9F A0 A1 B3 BD + .byte $BE, $C0, $C2, $03, $E2, $88, $8B, $8C, $D6, $D4, $D2, $D1, $D0, $CF, $77, $FF ; CPU:$9A99 PRG:9A99 BE C0 C2 03 E2 88 8B 8C D6 D4 D2 D1 D0 CF 77 FF + .byte $77, $FF, $43, $FF, $8C, $AA, $EE, $F7, $FE, $33, $FF, $3F, $FF, $55, $DA, $FF ; CPU:$9AA9 PRG:9AA9 77 FF 43 FF 8C AA EE F7 FE 33 FF 3F FF 55 DA FF + .byte $E2, $03, $FF, $83, $3F, $26, $CC, $02, $FF, $81, $33, $02, $FF, $81, $33, $02 ; CPU:$9AB9 PRG:9AB9 E2 03 FF 83 3F 26 CC 02 FF 81 33 02 FF 81 33 02 + .byte $00, $83, $0C, $FF, $F3, $19, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF ; CPU:$9AC9 PRG:9AC9 00 83 0C FF F3 19 FF FF FF FF 24 00 77 FF 0F FF + .byte $81, $B4, $06, $B5, $84, $3C, $3D, $5B, $5C, $07, $B5, $81, $B6, $0D, $FF, $81 ; CPU:$9AD9 PRG:9AD9 81 B4 06 B5 84 3C 3D 5B 5C 07 B5 81 B6 0D FF 81 + .byte $BA, $03, $01, $81, $AF, $02, $01, $84, $3B, $B2, $B3, $5D, $07, $01, $81, $B7 ; CPU:$9AE9 PRG:9AE9 BA 03 01 81 AF 02 01 84 3B B2 B3 5D 07 01 81 B7 + .byte $0D, $FF, $81, $BA, $04, $01, $87, $AF, $01, $3A, $3E, $5A, $5E, $A4, $03, $01 ; CPU:$9AF9 PRG:9AF9 0D FF 81 BA 04 01 87 AF 01 3A 3E 5A 5E A4 03 01 + .byte $81, $AF, $02, $01, $81, $B7, $0D, $FF, $81, $BA, $06, $01, $85, $39, $3F, $59 ; CPU:$9B09 PRG:9B09 81 AF 02 01 81 B7 0D FF 81 BA 06 01 85 39 3F 59 + .byte $5F, $79, $06, $01, $81, $B7, $0D, $FF, $81, $BA, $04, $01, $88, $AE, $01, $38 ; CPU:$9B19 PRG:9B19 5F 79 06 01 81 B7 0D FF 81 BA 04 01 88 AE 01 38 + .byte $40, $58, $60, $78, $7A, $05, $01, $81, $B7, $0D, $FF, $81, $BA, $03, $01, $8A ; CPU:$9B29 PRG:9B29 40 58 60 78 7A 05 01 81 B7 0D FF 81 BA 03 01 8A + .byte $AD, $AF, $01, $37, $41, $57, $61, $77, $7B, $91, $03, $01, $82, $AF, $B7, $0D ; CPU:$9B39 PRG:9B39 AD AF 01 37 41 57 61 77 7B 91 03 01 82 AF B7 0D + .byte $FF, $81, $BA, $04, $01, $8A, $22, $23, $36, $42, $56, $62, $76, $7C, $90, $92 ; CPU:$9B49 PRG:9B49 FF 81 BA 04 01 8A 22 23 36 42 56 62 76 7C 90 92 + .byte $03, $01, $81, $B7, $0D, $FF, $81, $BA, $03, $01, $8C, $0F, $21, $24, $35, $43 ; CPU:$9B59 PRG:9B59 03 01 81 B7 0D FF 81 BA 03 01 8C 0F 21 24 35 43 + .byte $55, $63, $75, $7D, $B1, $93, $9E, $02, $01, $81, $B7, $0D, $FF, $81, $BA, $02 ; CPU:$9B69 PRG:9B69 55 63 75 7D B1 93 9E 02 01 81 B7 0D FF 81 BA 02 + .byte $01, $90, $0E, $10, $20, $25, $34, $44, $54, $64, $74, $7E, $B1, $94, $9D, $9F ; CPU:$9B79 PRG:9B79 01 90 0E 10 20 25 34 44 54 64 74 7E B1 94 9D 9F + .byte $01, $B7, $0D, $FF, $81, $BA, $02, $01, $90, $0D, $11, $1F, $26, $33, $45, $53 ; CPU:$9B89 PRG:9B89 01 B7 0D FF 81 BA 02 01 90 0D 11 1F 26 33 45 53 + .byte $65, $73, $80, $8E, $B0, $7F, $A0, $01, $B7, $0D, $FF, $8E, $BA, $01, $A6, $0C ; CPU:$9B99 PRG:9B99 65 73 80 8E B0 7F A0 01 B7 0D FF 8E BA 01 A6 0C + .byte $12, $1E, $27, $32, $46, $52, $66, $72, $80, $8D, $02, $7F, $83, $A1, $01, $B7 ; CPU:$9BA9 PRG:9BA9 12 1E 27 32 46 52 66 72 80 8D 02 7F 83 A1 01 B7 + .byte $0D, $FF, $81, $BA, $02, $01, $8B, $0B, $13, $1D, $28, $31, $47, $51, $67, $71 ; CPU:$9BB9 PRG:9BB9 0D FF 81 BA 02 01 8B 0B 13 1D 28 31 47 51 67 71 + .byte $81, $8C, $02, $7F, $83, $A2, $01, $B7, $0D, $FF, $93, $BA, $01, $02, $0A, $14 ; CPU:$9BC9 PRG:9BC9 81 8C 02 7F 83 A2 01 B7 0D FF 93 BA 01 02 0A 14 + .byte $1C, $29, $30, $48, $50, $68, $70, $82, $8B, $95, $9C, $A3, $01, $B7, $0D, $FF ; CPU:$9BD9 PRG:9BD9 1C 29 30 48 50 68 70 82 8B 95 9C A3 01 B7 0D FF + .byte $93, $BA, $01, $03, $09, $15, $1B, $2A, $2F, $49, $4F, $69, $6F, $83, $8A, $96 ; CPU:$9BE9 PRG:9BE9 93 BA 01 03 09 15 1B 2A 2F 49 4F 69 6F 83 8A 96 + .byte $9B, $01, $AD, $B7, $0D, $FF, $90, $BA, $01, $A5, $08, $16, $1A, $2B, $2E, $4A ; CPU:$9BF9 PRG:9BF9 9B 01 AD B7 0D FF 90 BA 01 A5 08 16 1A 2B 2E 4A + .byte $4E, $8F, $6E, $84, $89, $97, $9A, $02, $01, $81, $B7, $0D, $FF, $93, $BA, $01 ; CPU:$9C09 PRG:9C09 4E 8F 6E 84 89 97 9A 02 01 81 B7 0D FF 93 BA 01 + .byte $04, $07, $01, $19, $01, $2D, $01, $4D, $6A, $6D, $85, $88, $98, $99, $AC, $01 ; CPU:$9C19 PRG:9C19 04 07 01 19 01 2D 01 4D 6A 6D 85 88 98 99 AC 01 + .byte $B7, $0D, $FF, $93, $B9, $A8, $05, $06, $17, $18, $A7, $2C, $4B, $4C, $6B, $6C ; CPU:$9C29 PRG:9C29 B7 0D FF 93 B9 A8 05 06 17 18 A7 2C 4B 4C 6B 6C + .byte $86, $87, $A9, $AA, $AB, $BB, $B8, $77, $FF, $77, $FF, $42, $FF, $86, $BB, $AA ; CPU:$9C39 PRG:9C39 86 87 A9 AA AB BB B8 77 FF 77 FF 42 FF 86 BB AA + .byte $2A, $8A, $AA, $EE, $02, $FF, $86, $BB, $AF, $66, $98, $FA, $EE, $02, $FF, $86 ; CPU:$9C49 PRG:9C49 2A 8A AA EE 02 FF 86 BB AF 66 98 FA EE 02 FF 86 + .byte $BB, $66, $99, $EE, $FF, $EE, $02, $FF, $83, $BB, $46, $59, $02, $FF, $81, $EE ; CPU:$9C59 PRG:9C59 BB 66 99 EE FF EE 02 FF 83 BB 46 59 02 FF 81 EE + .byte $03, $FF, $02, $F0, $02, $FF, $81, $FE, $11, $FF, $FF, $FF, $FF, $24, $00, $77 ; CPU:$9C69 PRG:9C69 03 FF 02 F0 02 FF 81 FE 11 FF FF FF FF 24 00 77 + .byte $FF, $0F, $FF, $81, $C0, $12, $BC, $81, $BF, $0C, $FF, $81, $C1, $12, $FF, $81 ; CPU:$9C79 PRG:9C79 FF 0F FF 81 C0 12 BC 81 BF 0C FF 81 C1 12 FF 81 + .byte $BE, $0C, $FF, $81, $C1, $12, $FF, $81, $BE, $0C, $FF, $81, $C1, $0E, $FF, $85 ; CPU:$9C89 PRG:9C89 BE 0C FF 81 C1 12 FF 81 BE 0C FF 81 C1 0E FF 85 + .byte $A0, $A7, $AE, $FF, $BE, $0C, $FF, $87, $C1, $0D, $0F, $28, $29, $42, $43, $08 ; CPU:$9C99 PRG:9C99 A0 A7 AE FF BE 0C FF 87 C1 0D 0F 28 29 42 43 08 + .byte $FF, $85, $A1, $A8, $95, $FF, $BE, $0C, $FF, $8A, $0E, $0C, $10, $27, $2A, $41 ; CPU:$9CA9 PRG:9CA9 FF 85 A1 A8 95 FF BE 0C FF 8A 0E 0C 10 27 2A 41 + .byte $44, $5B, $5C, $73, $05, $FF, $85, $E8, $E1, $E3, $FF, $BE, $0C, $FF, $8A, $C1 ; CPU:$9CB9 PRG:9CB9 44 5B 5C 73 05 FF 85 E8 E1 E3 FF BE 0C FF 8A C1 + .byte $FF, $11, $26, $2B, $40, $45, $5A, $5D, $72, $05, $FF, $85, $DF, $74, $DE, $B5 ; CPU:$9CC9 PRG:9CC9 FF 11 26 2B 40 45 5A 5D 72 05 FF 85 DF 74 DE B5 + .byte $E7, $0C, $FF, $8A, $C1, $FF, $12, $25, $2C, $E5, $46, $59, $5E, $71, $02, $FF ; CPU:$9CD9 PRG:9CD9 E7 0C FF 8A C1 FF 12 25 2C E5 46 59 5E 71 02 FF + .byte $88, $87, $9A, $9B, $A2, $E2, $B2, $B6, $B9, $0C, $FF, $94, $C1, $FF, $13, $24 ; CPU:$9CE9 PRG:9CE9 88 87 9A 9B A2 E2 B2 B6 B9 0C FF 94 C1 FF 13 24 + .byte $2D, $3E, $47, $58, $5F, $70, $75, $86, $88, $99, $9C, $A5, $E4, $B3, $B7, $BA ; CPU:$9CF9 PRG:9CF9 2D 3E 47 58 5F 70 75 86 88 99 9C A5 E4 B3 B7 BA + .byte $0C, $FF, $94, $C1, $FF, $14, $23, $2E, $3D, $48, $57, $60, $6F, $76, $85, $89 ; CPU:$9D09 PRG:9D09 0C FF 94 C1 FF 14 23 2E 3D 48 57 60 6F 76 85 89 + .byte $98, $9D, $A6, $AD, $B4, $B8, $BB, $0C, $FF, $8F, $C1, $FF, $15, $22, $2F, $3C ; CPU:$9D19 PRG:9D19 98 9D A6 AD B4 B8 BB 0C FF 8F C1 FF 15 22 2F 3C + .byte $49, $56, $61, $6E, $77, $84, $8A, $97, $9E, $04, $FF, $81, $BE, $0C, $FF, $8E ; CPU:$9D29 PRG:9D29 49 56 61 6E 77 84 8A 97 9E 04 FF 81 BE 0C FF 8E + .byte $C1, $0B, $16, $E6, $30, $3B, $4A, $55, $62, $6D, $78, $83, $8B, $96, $05, $FF ; CPU:$9D39 PRG:9D39 C1 0B 16 E6 30 3B 4A 55 62 6D 78 83 8B 96 05 FF + .byte $81, $BE, $0C, $FF, $8D, $01, $0A, $17, $20, $31, $3A, $4B, $54, $63, $6C, $79 ; CPU:$9D49 PRG:9D49 81 BE 0C FF 8D 01 0A 17 20 31 3A 4B 54 63 6C 79 + .byte $82, $8C, $06, $FF, $81, $BE, $0C, $FF, $8E, $02, $09, $18, $1F, $32, $39, $4C ; CPU:$9D59 PRG:9D59 82 8C 06 FF 81 BE 0C FF 8E 02 09 18 1F 32 39 4C + .byte $53, $64, $6B, $7A, $81, $8D, $94, $05, $FF, $81, $BE, $0C, $FF, $8E, $03, $08 ; CPU:$9D69 PRG:9D69 53 64 6B 7A 81 8D 94 05 FF 81 BE 0C FF 8E 03 08 + .byte $19, $1E, $33, $38, $4D, $52, $65, $6A, $7B, $80, $8E, $93, $05, $FF, $81, $BE ; CPU:$9D79 PRG:9D79 19 1E 33 38 4D 52 65 6A 7B 80 8E 93 05 FF 81 BE + .byte $0C, $FF, $8E, $04, $07, $1A, $1D, $34, $37, $4E, $51, $66, $69, $7C, $7F, $8F ; CPU:$9D89 PRG:9D89 0C FF 8E 04 07 1A 1D 34 37 4E 51 66 69 7C 7F 8F + .byte $92, $05, $FF, $81, $BE, $0C, $FF, $8F, $05, $06, $1B, $1C, $35, $36, $4F, $50 ; CPU:$9D99 PRG:9D99 92 05 FF 81 BE 0C FF 8F 05 06 1B 1C 35 36 4F 50 + .byte $67, $68, $7D, $7E, $90, $91, $9F, $04, $C3, $81, $BD, $77, $FF, $77, $FF, $45 ; CPU:$9DA9 PRG:9DA9 67 68 7D 7E 90 91 9F 04 C3 81 BD 77 FF 77 FF 45 + .byte $FF, $81, $5F, $03, $FF, $81, $F3, $02, $AA, $83, $FE, $B5, $DF, $03, $FF, $82 ; CPU:$9DB9 PRG:9DB9 FF 81 5F 03 FF 81 F3 02 AA 83 FE B5 DF 03 FF 82 + .byte $22, $FA, $02, $FF, $81, $FD, $02, $FF, $83, $B3, $AA, $66, $1C, $FF, $FF, $FF ; CPU:$9DC9 PRG:9DC9 22 FA 02 FF 81 FD 02 FF 83 B3 AA 66 1C FF FF FF + .byte $FF, $24, $00, $66, $FF, $81, $CB, $05, $BF, $81, $93, $0C, $BF, $81, $67, $0C ; CPU:$9DD9 PRG:9DD9 FF 24 00 66 FF 81 CB 05 BF 81 93 0C BF 81 67 0C + .byte $FF, $81, $E2, $06, $A1, $84, $76, $A1, $01, $02, $08, $A1, $81, $4D, $0C, $FF ; CPU:$9DE9 PRG:9DE9 FF 81 E2 06 A1 84 76 A1 01 02 08 A1 81 4D 0C FF + .byte $81, $E2, $03, $A1, $81, $21, $03, $A1, $84, $03, $04, $05, $06, $07, $A1, $81 ; CPU:$9DF9 PRG:9DF9 81 E2 03 A1 81 21 03 A1 84 03 04 05 06 07 A1 81 + .byte $4D, $0C, $FF, $8C, $E2, $A1, $16, $17, $18, $A1, $4F, $07, $08, $09, $0A, $0B ; CPU:$9E09 PRG:9E09 4D 0C FF 8C E2 A1 16 17 18 A1 4F 07 08 09 0A 0B + .byte $07, $A1, $81, $4D, $0C, $FF, $8C, $E2, $A1, $19, $1A, $1B, $A1, $41, $0C, $0D ; CPU:$9E19 PRG:9E19 07 A1 81 4D 0C FF 8C E2 A1 19 1A 1B A1 41 0C 0D + .byte $0E, $0F, $10, $07, $A1, $81, $4D, $0C, $FF, $8D, $E2, $1C, $1D, $1E, $1F, $20 ; CPU:$9E29 PRG:9E29 0E 0F 10 07 A1 81 4D 0C FF 8D E2 1C 1D 1E 1F 20 + .byte $B4, $A1, $11, $12, $13, $14, $15, $06, $A1, $81, $4D, $0C, $FF, $8D, $E2, $22 ; CPU:$9E39 PRG:9E39 B4 A1 11 12 13 14 15 06 A1 81 4D 0C FF 8D E2 22 + .byte $23, $24, $25, $26, $27, $28, $29, $2A, $2B, $2C, $2D, $06, $A1, $81, $4D, $0C ; CPU:$9E49 PRG:9E49 23 24 25 26 27 28 29 2A 2B 2C 2D 06 A1 81 4D 0C + .byte $FF, $8D, $2E, $2F, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3A, $06 ; CPU:$9E59 PRG:9E59 FF 8D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 06 + .byte $A1, $81, $4D, $0C, $FF, $8E, $E2, $3C, $3D, $3E, $3F, $40, $A1, $42, $43, $44 ; CPU:$9E69 PRG:9E69 A1 81 4D 0C FF 8E E2 3C 3D 3E 3F 40 A1 42 43 44 + .byte $45, $46, $47, $4E, $05, $A1, $81, $4D, $0C, $FF, $86, $E2, $48, $49, $4A, $4B ; CPU:$9E79 PRG:9E79 45 46 47 4E 05 A1 81 4D 0C FF 86 E2 48 49 4A 4B + .byte $4C, $03, $A1, $88, $50, $51, $52, $53, $54, $55, $56, $57, $02, $A1, $81, $4D ; CPU:$9E89 PRG:9E89 4C 03 A1 88 50 51 52 53 54 55 56 57 02 A1 81 4D + .byte $0C, $FF, $87, $E2, $59, $5A, $5B, $5C, $5D, $5E, $02, $A1, $88, $5F, $60, $61 ; CPU:$9E99 PRG:9E99 0C FF 87 E2 59 5A 5B 5C 5D 5E 02 A1 88 5F 60 61 + .byte $62, $63, $64, $65, $66, $02, $A1, $81, $4D, $0C, $FF, $86, $E2, $68, $69, $6A ; CPU:$9EA9 PRG:9EA9 62 63 64 65 66 02 A1 81 4D 0C FF 86 E2 68 69 6A + .byte $6B, $6C, $03, $A1, $88, $6E, $6F, $70, $71, $72, $73, $74, $75, $02, $A1, $81 ; CPU:$9EB9 PRG:9EB9 6B 6C 03 A1 88 6E 6F 70 71 72 73 74 75 02 A1 81 + .byte $4D, $0C, $FF, $94, $E2, $A1, $78, $79, $7A, $7B, $E0, $7C, $B5, $B6, $80, $81 ; CPU:$9EC9 PRG:9EC9 4D 0C FF 94 E2 A1 78 79 7A 7B E0 7C B5 B6 80 81 + .byte $82, $83, $84, $85, $86, $DD, $A1, $4D, $0C, $FF, $81, $E2, $02, $A1, $91, $88 ; CPU:$9ED9 PRG:9ED9 82 83 84 85 86 DD A1 4D 0C FF 81 E2 02 A1 91 88 + .byte $89, $7D, $7E, $7F, $B7, $87, $8D, $8E, $8F, $90, $91, $92, $DB, $DC, $A1, $4D ; CPU:$9EE9 PRG:9EE9 89 7D 7E 7F B7 87 8D 8E 8F 90 91 92 DB DC A1 4D + .byte $0C, $FF, $94, $9C, $AA, $BE, $A1, $DF, $8A, $8B, $8C, $E1, $E2, $97, $98, $99 ; CPU:$9EF9 PRG:9EF9 0C FF 94 9C AA BE A1 DF 8A 8B 8C E1 E2 97 98 99 + .byte $9A, $9B, $DE, $9D, $9E, $9F, $A0, $0C, $FF, $94, $77, $B8, $BD, $C0, $C5, $94 ; CPU:$9F09 PRG:9F09 9A 9B DE 9D 9E 9F A0 0C FF 94 77 B8 BD C0 C5 94 + .byte $95, $96, $CC, $CF, $E3, $A2, $A3, $A4, $A5, $A6, $A7, $A8, $A9, $4D, $0C, $FF ; CPU:$9F19 PRG:9F19 95 96 CC CF E3 A2 A3 A4 A5 A6 A7 A8 A9 4D 0C FF + .byte $94, $6D, $B9, $BC, $C1, $C4, $C6, $E0, $C9, $CD, $D0, $D2, $D4, $A1, $AB, $AC ; CPU:$9F29 PRG:9F29 94 6D B9 BC C1 C4 C6 E0 C9 CD D0 D2 D4 A1 AB AC + .byte $AD, $AE, $AF, $B0, $4D, $0C, $FF, $94, $58, $BA, $BB, $C2, $C3, $C7, $C8, $CA ; CPU:$9F39 PRG:9F39 AD AE AF B0 4D 0C FF 94 58 BA BB C2 C3 C7 C8 CA + .byte $CE, $D1, $D3, $D5, $D6, $D7, $D8, $D9, $DA, $B1, $B2, $B3, $77, $FF, $77, $FF ; CPU:$9F49 PRG:9F49 CE D1 D3 D5 D6 D7 D8 D9 DA B1 B2 B3 77 FF 77 FF + .byte $43, $FF, $82, $33, $CC, $06, $FF, $82, $A0, $AA, $06, $FF, $83, $7B, $DA, $7F ; CPU:$9F59 PRG:9F59 43 FF 82 33 CC 06 FF 82 A0 AA 06 FF 83 7B DA 7F + .byte $05, $FF, $81, $77, $02, $55, $07, $FF, $82, $F7, $FD, $11, $FF, $FF, $FF, $FF ; CPU:$9F69 PRG:9F69 05 FF 81 77 02 55 07 FF 82 F7 FD 11 FF FF FF FF + .byte $24, $00, $77, $FF, $0F, $FF, $81, $D9, $06, $DA, $83, $50, $51, $6C, $08, $DA ; CPU:$9F79 PRG:9F79 24 00 77 FF 0F FF 81 D9 06 DA 83 50 51 6C 08 DA + .byte $81, $DB, $0D, $FF, $83, $DD, $FE, $E3, $03, $FE, $89, $E3, $4F, $52, $6B, $FE ; CPU:$9F89 PRG:9F89 81 DB 0D FF 83 DD FE E3 03 FE 89 E3 4F 52 6B FE + .byte $E3, $84, $9C, $9D, $02, $FE, $82, $E4, $DC, $0D, $FF, $93, $DD, $FE, $E3, $FE ; CPU:$9F99 PRG:9F99 E3 84 9C 9D 02 FE 82 E4 DC 0D FF 93 DD FE E3 FE + .byte $28, $3F, $E3, $DF, $53, $6A, $6D, $FE, $85, $9B, $9E, $FE, $E3, $FE, $DC, $0D ; CPU:$9FA9 PRG:9FA9 28 3F E3 DF 53 6A 6D FE 85 9B 9E FE E3 FE DC 0D + .byte $FF, $93, $DD, $FE, $E4, $FE, $29, $3E, $E4, $4E, $54, $69, $6E, $D4, $86, $9A ; CPU:$9FB9 PRG:9FB9 FF 93 DD FE E4 FE 29 3E E4 4E 54 69 6E D4 86 9A + .byte $9F, $FE, $E3, $FE, $DC, $0D, $FF, $81, $DD, $02, $FE, $90, $E5, $2A, $3D, $FE ; CPU:$9FC9 PRG:9FC9 9F FE E3 FE DC 0D FF 81 DD 02 FE 90 E5 2A 3D FE + .byte $4D, $55, $68, $6F, $D3, $FE, $99, $A0, $B6, $B7, $FE, $DC, $0D, $FF, $93, $DD ; CPU:$9FD9 PRG:9FD9 4D 55 68 6F D3 FE 99 A0 B6 B7 FE DC 0D FF 93 DD + .byte $12, $13, $27, $2B, $3C, $40, $4C, $FE, $67, $70, $D2, $E3, $98, $A1, $B5, $B8 ; CPU:$9FE9 PRG:9FE9 12 13 27 2B 3C 40 4C FE 67 70 D2 E3 98 A1 B5 B8 + .byte $CB, $CC, $0D, $FF, $93, $DD, $11 ; CPU:$9FF9 PRG:9FF9 CB CC 0D FF 93 DD 11 +.segment "PRG5" +.org $A000 + +; ---- data $A000-$A719 (1818 bytes) ---- +; referenced by `lda $A650,x` at $AA17 (operand $A650 falls inside this region) +; referenced by `lda $A650,x` at $AA1E (operand $A650 falls inside this region) .byte $14, $26, $2C, $3B, $41, $4B, $FE, $66, $71, $E0, $FE, $97, $A2, $B4, $B9, $CA ; CPU:$A000 PRG:A000 14 26 2C 3B 41 4B FE 66 71 E0 FE 97 A2 B4 B9 CA .byte $CD, $0D, $FF, $87, $DD, $10, $15, $DE, $2D, $3A, $42, $02, $FE, $8A, $65, $72 ; CPU:$A010 PRG:A010 CD 0D FF 87 DD 10 15 DE 2D 3A 42 02 FE 8A 65 72 .byte $E1, $E3, $96, $A3, $B3, $BA, $C9, $CE, $0D, $FF, $84, $DD, $0F, $16, $25, $02 ; CPU:$A020 PRG:A020 E1 E3 96 A3 B3 BA C9 CE 0D FF 84 DD 0F 16 25 02 @@ -2827,409 +9845,1324 @@ nmi_data: .byte $03, $00, $04, $00, $05, $00, $06, $00, $07, $00, $08, $00, $09, $00, $0A, $00 ; CPU:$A6E0 PRG:A6E0 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A 00 .byte $0B, $00, $0C, $00, $0D, $00, $0E, $00, $0F, $00, $80, $00, $81, $00, $82, $00 ; CPU:$A6F0 PRG:A6F0 0B 00 0C 00 0D 00 0E 00 0F 00 80 00 81 00 82 00 .byte $83, $00, $84, $00, $85, $00, $86, $00, $87, $00, $88, $00, $89, $00, $8A, $00 ; CPU:$A700 PRG:A700 83 00 84 00 85 00 86 00 87 00 88 00 89 00 8A 00 - .byte $8B, $00, $8C, $00, $8D, $00, $8E, $00, $8F, $00, $A9, $00, $8D, $15, $40, $8D ; CPU:$A710 PRG:A710 8B 00 8C 00 8D 00 8E 00 8F 00 A9 00 8D 15 40 8D - .byte $00, $07, $8D, $A1, $07, $60, $A5, $DD, $F0, $F0, $A5, $DE, $0A, $AA, $BD, $5B ; CPU:$A720 PRG:A720 00 07 8D A1 07 60 A5 DD F0 F0 A5 DE 0A AA BD 5B - .byte $AB, $85, $DF, $BD, $5C, $AB, $85, $E0, $A6, $DF, $A4, $E0, $20, $5B, $A7, $60 ; CPU:$A730 PRG:A730 AB 85 DF BD 5C AB 85 E0 A6 DF A4 E0 20 5B A7 60 + .byte $8B, $00, $8C, $00, $8D, $00, $8E, $00, $8F, $00 ; CPU:$A710 PRG:A710 8B 00 8C 00 8D 00 8E 00 8F 00 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Sub_OnZero +; Global: Branch target inside Bank5_Sub: taken when the tested value is zero. +; Local: Part of Bank5_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Sub_OnZero: + lda #$00 ; CPU:$A71A PRG:A71A A9 00 + sta APUSTATUS ; CPU:$A71C PRG:A71C 8D 15 40 + sta $0700 ; CPU:$A71F PRG:A71F 8D 00 07 + sta $07A1 ; CPU:$A722 PRG:A722 8D A1 07 + rts ; CPU:$A725 PRG:A725 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_UpdateSound +; Global: Updates the sound engine of the second half. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_UpdateSound: + lda ZpDD ; CPU:$A726 PRG:A726 A5 DD + beq Bank5_Sub_OnZero ; CPU:$A728 PRG:A728 F0 F0 + lda ZpDE ; CPU:$A72A PRG:A72A A5 DE + asl a ; CPU:$A72C PRG:A72C 0A + tax ; CPU:$A72D PRG:A72D AA + lda $AB5B,x ; CPU:$A72E PRG:A72E BD 5B AB + sta ZpDF ; CPU:$A731 PRG:A731 85 DF + lda $AB5C,x ; CPU:$A733 PRG:A733 BD 5C AB + sta ZpE0 ; CPU:$A736 PRG:A736 85 E0 + ldx ZpDF ; CPU:$A738 PRG:A738 A6 DF + ldy ZpE0 ; CPU:$A73A PRG:A73A A4 E0 + jsr Bank5_Sub_A75B ; CPU:$A73C PRG:A73C 20 5B A7 + rts ; CPU:$A73F PRG:A73F 60 +; ---- data $A740-$A75A (27 bytes) ---- .byte $A9, $00, $8D, $A1, $07, $A5, $DE, $0A, $AA, $BD, $5B, $AB, $85, $DF, $BD, $5C ; CPU:$A740 PRG:A740 A9 00 8D A1 07 A5 DE 0A AA BD 5B AB 85 DF BD 5C - .byte $AB, $85, $E0, $A6, $DF, $A4, $E0, $20, $A9, $AA, $60, $A9, $00, $8D, $15, $40 ; CPU:$A750 PRG:A750 AB 85 E0 A6 DF A4 E0 20 A9 AA 60 A9 00 8D 15 40 - .byte $86, $D7, $84, $D8, $A2, $3B, $A9, $00, $9D, $11, $07, $CA, $10, $FA, $85, $D6 ; CPU:$A760 PRG:A760 86 D7 84 D8 A2 3B A9 00 9D 11 07 CA 10 FA 85 D6 - .byte $A0, $08, $B1, $D7, $8D, $02, $07, $8D, $01, $07, $C8, $B1, $D7, $8D, $00, $07 ; CPU:$A770 PRG:A770 A0 08 B1 D7 8D 02 07 8D 01 07 C8 B1 D7 8D 00 07 - .byte $8D, $15, $40, $60, $A0, $00, $B1, $D7, $85, $D9, $C8, $B1, $D7, $85, $DA, $A9 ; CPU:$A780 PRG:A780 8D 15 40 60 A0 00 B1 D7 85 D9 C8 B1 D7 85 DA A9 - .byte $01, $8D, $07, $07, $A9, $00, $8D, $08, $07, $20, $FF, $A7, $A0, $02, $B1, $D7 ; CPU:$A790 PRG:A790 01 8D 07 07 A9 00 8D 08 07 20 FF A7 A0 02 B1 D7 - .byte $85, $D9, $C8, $B1, $D7, $85, $DA, $A9, $02, $8D, $07, $07, $A9, $01, $8D, $08 ; CPU:$A7A0 PRG:A7A0 85 D9 C8 B1 D7 85 DA A9 02 8D 07 07 A9 01 8D 08 - .byte $07, $20, $FF, $A7, $A0, $04, $B1, $D7, $85, $D9, $C8, $B1, $D7, $85, $DA, $A9 ; CPU:$A7B0 PRG:A7B0 07 20 FF A7 A0 04 B1 D7 85 D9 C8 B1 D7 85 DA A9 - .byte $04, $8D, $07, $07, $A9, $02, $8D, $08, $07, $20, $FF, $A7, $A0, $06, $B1, $D7 ; CPU:$A7C0 PRG:A7C0 04 8D 07 07 A9 02 8D 08 07 20 FF A7 A0 06 B1 D7 - .byte $85, $D9, $C8, $B1, $D7, $85, $DA, $A9, $08, $8D, $07, $07, $A9, $03, $8D, $08 ; CPU:$A7D0 PRG:A7D0 85 D9 C8 B1 D7 85 DA A9 08 8D 07 07 A9 03 8D 08 - .byte $07, $20, $FF, $A7, $AD, $01, $07, $D0, $12, $CE, $11, $07, $CE, $12, $07, $CE ; CPU:$A7E0 PRG:A7E0 07 20 FF A7 AD 01 07 D0 12 CE 11 07 CE 12 07 CE - .byte $13, $07, $CE, $14, $07, $AD, $02, $07, $8D, $01, $07, $CE, $01, $07, $60, $A5 ; CPU:$A7F0 PRG:A7F0 13 07 CE 14 07 AD 02 07 8D 01 07 CE 01 07 60 A5 - .byte $D6, $2D, $07, $07, $F0, $22, $AD, $15, $40, $2D, $07, $07, $D0, $09, $AD, $07 ; CPU:$A800 PRG:A800 D6 2D 07 07 F0 22 AD 15 40 2D 07 07 D0 09 AD 07 - .byte $07, $49, $FF, $25, $D6, $85, $D6, $AD, $00, $07, $2D, $07, $07, $F0, $08, $AE ; CPU:$A810 PRG:A810 07 49 FF 25 D6 85 D6 AD 00 07 2D 07 07 F0 08 AE - .byte $08, $07, $BD, $11, $07, $F0, $12, $60, $AD, $00, $07, $2D, $07, $07, $D0, $01 ; CPU:$A820 PRG:A820 08 07 BD 11 07 F0 12 60 AD 00 07 2D 07 07 D0 01 - .byte $60, $AE, $08, $07, $BD, $11, $07, $D0, $03, $4C, $13, $A9, $E0, $02, $F0, $F0 ; CPU:$A830 PRG:A830 60 AE 08 07 BD 11 07 D0 03 4C 13 A9 E0 02 F0 F0 - .byte $BC, $1D, $07, $F0, $EB, $DE, $41, $07, $D0, $E6, $88, $F0, $0B, $88, $F0, $2B ; CPU:$A840 PRG:A840 BC 1D 07 F0 EB DE 41 07 D0 E6 88 F0 0B 88 F0 2B - .byte $88, $F0, $55, $88, $F0, $59, $D0, $D8, $BD, $0D, $07, $18, $7D, $21, $07, $9D ; CPU:$A850 PRG:A850 88 F0 55 88 F0 59 D0 D8 BD 0D 07 18 7D 21 07 9D - .byte $21, $07, $A9, $0F, $DD, $21, $07, $F0, $66, $B0, $06, $9D, $21, $07, $4C, $CF ; CPU:$A860 PRG:A860 21 07 A9 0F DD 21 07 F0 66 B0 06 9D 21 07 4C CF - .byte $A8, $BD, $2D, $07, $29, $0F, $9D, $41, $07, $D0, $61, $BD, $21, $07, $38, $FD ; CPU:$A870 PRG:A870 A8 BD 2D 07 29 0F 9D 41 07 D0 61 BD 21 07 38 FD - .byte $0D, $07, $9D, $21, $07, $B0, $0B, $BD, $3D, $07, $29, $0F, $9D, $21, $07, $4C ; CPU:$A880 PRG:A880 0D 07 9D 21 07 B0 0B BD 3D 07 29 0F 9D 21 07 4C - .byte $CF, $A8, $BD, $3D, $07, $29, $0F, $DD, $21, $07, $F0, $33, $90, $E9, $BD, $31 ; CPU:$A890 PRG:A890 CF A8 BD 3D 07 29 0F DD 21 07 F0 33 90 E9 BD 31 - .byte $07, $29, $0F, $9D, $41, $07, $D0, $34, $BD, $41, $07, $F0, $22, $D0, $2D, $BD ; CPU:$A8A0 PRG:A8A0 07 29 0F 9D 41 07 D0 34 BD 41 07 F0 22 D0 2D BD - .byte $21, $07, $38, $FD, $0D, $07, $9D, $21, $07, $90, $0C, $F0, $0A, $BD, $39, $07 ; CPU:$A8B0 PRG:A8B0 21 07 38 FD 0D 07 9D 21 07 90 0C F0 0A BD 39 07 - .byte $29, $0F, $9D, $41, $07, $D0, $15, $A0, $00, $98, $9D, $21, $07, $F0, $06, $BC ; CPU:$A8C0 PRG:A8C0 29 0F 9D 41 07 D0 15 A0 00 98 9D 21 07 F0 06 BC - .byte $1D, $07, $20, $54, $AA, $9D, $41, $07, $98, $9D, $1D, $07, $BD, $21, $07, $48 ; CPU:$A8D0 PRG:A8D0 1D 07 20 54 AA 9D 41 07 98 9D 1D 07 BD 21 07 48 - .byte $BD, $09, $07, $48, $A0, $05, $A9, $00, $5E, $09, $07, $90, $04, $18, $7D, $21 ; CPU:$A8E0 PRG:A8E0 BD 09 07 48 A0 05 A9 00 5E 09 07 90 04 18 7D 21 - .byte $07, $1E, $21, $07, $88, $D0, $F1, $A8, $68, $9D, $09, $07, $68, $9D, $21, $07 ; CPU:$A8F0 PRG:A8F0 07 1E 21 07 88 D0 F1 A8 68 9D 09 07 68 9D 21 07 - .byte $98, $4A, $4A, $4A, $4A, $1D, $29, $07, $48, $8A, $18, $2A, $2A, $A8, $68, $99 ; CPU:$A900 PRG:A900 98 4A 4A 4A 4A 1D 29 07 48 8A 18 2A 2A A8 68 99 - .byte $00, $40, $60, $BD, $15, $07, $18, $65, $D9, $85, $DB, $BD, $19, $07, $65, $DA ; CPU:$A910 PRG:A910 00 40 60 BD 15 07 18 65 D9 85 DB BD 19 07 65 DA - .byte $85, $DC, $A0, $00, $B1, $DB, $30, $03, $4C, $E9, $A9, $C9, $88, $B0, $03, $4C ; CPU:$A920 PRG:A920 85 DC A0 00 B1 DB 30 03 4C E9 A9 C9 88 B0 03 4C - .byte $C3, $A9, $D0, $0A, $A9, $00, $9D, $15, $07, $9D, $19, $07, $F0, $D5, $C9, $89 ; CPU:$A930 PRG:A930 C3 A9 D0 0A A9 00 9D 15 07 9D 19 07 F0 D5 C9 89 - .byte $D0, $12, $AD, $07, $07, $49, $FF, $2D, $00, $07, $8D, $15, $40, $8D, $00, $07 ; CPU:$A940 PRG:A940 D0 12 AD 07 07 49 FF 2D 00 07 8D 15 40 8D 00 07 - .byte $20, $7A, $AA, $60, $C9, $8A, $D0, $1E, $BD, $45, $07, $1D, $49, $07, $F0, $75 ; CPU:$A950 PRG:A950 20 7A AA 60 C9 8A D0 1E BD 45 07 1D 49 07 F0 75 - .byte $BD, $45, $07, $9D, $15, $07, $BD, $49, $07, $9D, $19, $07, $A9, $00, $9D, $45 ; CPU:$A960 PRG:A960 BD 45 07 9D 15 07 BD 49 07 9D 19 07 A9 00 9D 45 - .byte $07, $9D, $49, $07, $F0, $9D, $C9, $8B, $D0, $0F, $C8, $B1, $DB, $9D, $45, $07 ; CPU:$A970 PRG:A970 07 9D 49 07 F0 9D C9 8B D0 0F C8 B1 DB 9D 45 07 - .byte $C8, $B1, $DB, $9D, $49, $07, $4C, $D5, $A9, $C9, $8C, $D0, $0F, $C8, $B1, $DB ; CPU:$A980 PRG:A980 C8 B1 DB 9D 49 07 4C D5 A9 C9 8C D0 0F C8 B1 DB - .byte $9D, $15, $07, $C8, $B1, $DB, $9D, $19, $07, $4C, $13, $A9, $C9, $8D, $D0, $09 ; CPU:$A990 PRG:A990 9D 15 07 C8 B1 DB 9D 19 07 4C 13 A9 C9 8D D0 09 - .byte $C8, $B1, $DB, $8D, $02, $07, $4C, $D5, $A9, $C9, $8E, $D0, $09, $C8, $B1, $DB ; CPU:$A9A0 PRG:A9A0 C8 B1 DB 8D 02 07 4C D5 A9 C9 8E D0 09 C8 B1 DB - .byte $9D, $03, $07, $4C, $D5, $A9, $C9, $8F, $D0, $1B, $C8, $B1, $DB, $9D, $09, $07 ; CPU:$A9B0 PRG:A9B0 9D 03 07 4C D5 A9 C9 8F D0 1B C8 B1 DB 9D 09 07 - .byte $4C, $D5, $A9, $29, $3F, $18, $2A, $2A, $6D, $08, $07, $AA, $C8, $B1, $DB, $9D ; CPU:$A9C0 PRG:A9C0 4C D5 A9 29 3F 18 2A 2A 6D 08 07 AA C8 B1 DB 9D - .byte $21, $07, $AE, $08, $07, $C8, $98, $18, $7D, $15, $07, $9D, $15, $07, $A9, $00 ; CPU:$A9D0 PRG:A9D0 21 07 AE 08 07 C8 98 18 7D 15 07 9D 15 07 A9 00 - .byte $7D, $19, $07, $9D, $19, $07, $4C, $13, $A9, $9D, $11, $07, $18, $A9, $02, $7D ; CPU:$A9E0 PRG:A9E0 7D 19 07 9D 19 07 4C 13 A9 9D 11 07 18 A9 02 7D - .byte $15, $07, $9D, $15, $07, $A9, $00, $7D, $19, $07, $9D, $19, $07, $A5, $D6, $2D ; CPU:$A9F0 PRG:A9F0 15 07 9D 15 07 A9 00 7D 19 07 9D 19 07 A5 D6 2D - .byte $07, $07, $F0, $01, $60, $C8, $B1, $DB, $48, $8A, $18, $2A, $2A, $A8, $68, $F0 ; CPU:$AA00 PRG:AA00 07 07 F0 01 60 C8 B1 DB 48 8A 18 2A 2A A8 68 F0 - .byte $04, $18, $7D, $03, $07, $0A, $AA, $BD, $50, $A6, $99, $02, $40, $E8, $BD, $50 ; CPU:$AA10 PRG:AA10 04 18 7D 03 07 0A AA BD 50 A6 99 02 40 E8 BD 50 - .byte $A6, $09, $08, $99, $03, $40, $AE, $08, $07, $E0, $02, $F0, $20, $BD, $3D, $07 ; CPU:$AA20 PRG:AA20 A6 09 08 99 03 40 AE 08 07 E0 02 F0 20 BD 3D 07 - .byte $4A, $4A, $4A, $4A, $9D, $21, $07, $20, $DC, $A8, $BD, $25, $07, $99, $01, $40 ; CPU:$AA30 PRG:AA30 4A 4A 4A 4A 9D 21 07 20 DC A8 BD 25 07 99 01 40 - .byte $A0, $00, $20, $54, $AA, $9D, $41, $07, $98, $9D, $1D, $07, $60, $BD, $29, $07 ; CPU:$AA40 PRG:AA40 A0 00 20 54 AA 9D 41 07 98 9D 1D 07 60 BD 29 07 - .byte $99, $00, $40, $60, $C8, $C0, $05, $F0, $0D, $98, $18, $2A, $2A, $6D, $08, $07 ; CPU:$AA50 PRG:AA50 99 00 40 60 C8 C0 05 F0 0D 98 18 2A 2A 6D 08 07 - .byte $AA, $BD, $29, $07, $F0, $EE, $AE, $08, $07, $48, $4A, $4A, $4A, $4A, $9D, $0D ; CPU:$AA60 PRG:AA60 AA BD 29 07 F0 EE AE 08 07 48 4A 4A 4A 4A 9D 0D - .byte $07, $68, $29, $0F, $60, $AD, $00, $07, $D0, $D9, $AD, $A1, $07, $F0, $D4, $A2 ; CPU:$AA70 PRG:AA70 07 68 29 0F 60 AD 00 07 D0 D9 AD A1 07 F0 D4 A2 - .byte $01, $BD, $4D, $07, $9D, $00, $07, $E8, $E0, $4E, $D0, $F5, $A0, $00, $BD, $4D ; CPU:$AA80 PRG:AA80 01 BD 4D 07 9D 00 07 E8 E0 4E D0 F5 A0 00 BD 4D - .byte $07, $99, $D7, $00, $C8, $E8, $E0, $54, $D0, $F4, $AD, $4D, $07, $8D, $00, $07 ; CPU:$AA90 PRG:AA90 07 99 D7 00 C8 E8 E0 54 D0 F4 AD 4D 07 8D 00 07 - .byte $8D, $15, $40, $A9, $00, $8D, $A1, $07, $60, $8E, $A2, $07, $8C, $A3, $07, $AD ; CPU:$AAA0 PRG:AAA0 8D 15 40 A9 00 8D A1 07 60 8E A2 07 8C A3 07 AD - .byte $A1, $07, $F0, $01, $60, $AD, $00, $07, $8D, $4D, $07, $A9, $00, $8D, $00, $07 ; CPU:$AAB0 PRG:AAB0 A1 07 F0 01 60 AD 00 07 8D 4D 07 A9 00 8D 00 07 - .byte $8D, $15, $40, $A2, $01, $BD, $00, $07, $9D, $4D, $07, $E8, $E0, $4E, $D0, $F5 ; CPU:$AAC0 PRG:AAC0 8D 15 40 A2 01 BD 00 07 9D 4D 07 E8 E0 4E D0 F5 - .byte $A0, $00, $B9, $D7, $00, $9D, $4D, $07, $C8, $E8, $E0, $54, $D0, $F4, $A9, $FF ; CPU:$AAD0 PRG:AAD0 A0 00 B9 D7 00 9D 4D 07 C8 E8 E0 54 D0 F4 A9 FF - .byte $8D, $A1, $07, $AE, $A2, $07, $AC, $A3, $07, $4C, $5B, $A7, $01, $02, $04, $08 ; CPU:$AAE0 PRG:AAE0 8D A1 07 AE A2 07 AC A3 07 4C 5B A7 01 02 04 08 - .byte $10, $48, $8A, $48, $98, $48, $A5, $E3, $F0, $4C, $A9, $0F, $8D, $15, $40, $A9 ; CPU:$AAF0 PRG:AAF0 10 48 8A 48 98 48 A5 E3 F0 4C A9 0F 8D 15 40 A9 - .byte $00, $85, $D6, $A5, $E2, $0A, $AA, $BD, $6D, $AB, $85, $DF, $BD, $6E, $AB, $85 ; CPU:$AB00 PRG:AB00 00 85 D6 A5 E2 0A AA BD 6D AB 85 DF BD 6E AB 85 - .byte $E0, $A0, $00, $B1, $DF, $AA, $BD, $EC, $AA, $05, $D6, $85, $D6, $A9, $0F, $8D ; CPU:$AB10 PRG:AB10 E0 A0 00 B1 DF AA BD EC AA 05 D6 85 D6 A9 0F 8D - .byte $15, $40, $8A, $0A, $0A, $AA, $C8, $B1, $DF, $9D, $00, $40, $E8, $C8, $C0, $05 ; CPU:$AB20 PRG:AB20 15 40 8A 0A 0A AA C8 B1 DF 9D 00 40 E8 C8 C0 05 - .byte $D0, $F5, $B1, $DF, $C9, $FF, $F0, $0E, $18, $A5, $DF, $69, $05, $85, $DF, $90 ; CPU:$AB30 PRG:AB30 D0 F5 B1 DF C9 FF F0 0E 18 A5 DF 69 05 85 DF 90 - .byte $02, $E6, $E0, $4C, $11, $AB, $A9, $00, $85, $E3, $68, $A8, $68, $AA, $68, $60 ; CPU:$AB40 PRG:AB40 02 E6 E0 4C 11 AB A9 00 85 E3 68 A8 68 AA 68 60 - .byte $A9, $04, $85, $E2, $A9, $01, $85, $E3, $4C, $F1, $AA, $65, $B0, $32, $B3, $4C ; CPU:$AB50 PRG:AB50 A9 04 85 E2 A9 01 85 E3 4C F1 AA 65 B0 32 B3 4C - .byte $BB, $9D, $AB, $AC, $B7, $E5, $AE, $52, $B9, $A6, $BA, $56, $C0, $79, $AB, $7F ; CPU:$AB60 PRG:AB60 BB 9D AB AC B7 E5 AE 52 B9 A6 BA 56 C0 79 AB 7F - .byte $AB, $85, $AB, $8B, $AB, $91, $AB, $97, $AB, $01, $44, $9C, $C8, $C0, $FF, $01 ; CPU:$AB70 PRG:AB70 AB 85 AB 8B AB 91 AB 97 AB 01 44 9C C8 C0 FF 01 - .byte $09, $AB, $3B, $C1, $FF, $01, $40, $80, $4A, $28, $FF, $01, $40, $80, $63, $28 ; CPU:$AB80 PRG:AB80 09 AB 3B C1 FF 01 40 80 4A 28 FF 01 40 80 63 28 - .byte $FF, $01, $5F, $A4, $3D, $C0, $FF, $01, $5E, $DB, $8C, $43, $FF, $A7, $AB, $99 ; CPU:$AB90 PRG:AB90 FF 01 5F A4 3D C0 FF 01 5E DB 8C 43 FF A7 AB 99 - .byte $AC, $65, $AD, $09, $AE, $02, $0F, $82, $04, $84, $18, $87, $F0, $8F, $0B, $8D ; CPU:$ABA0 PRG:ABA0 AC 65 AD 09 AE 02 0F 82 04 84 18 87 F0 8F 0B 8D - .byte $06, $8E, $02, $18, $00, $02, $00, $02, $1D, $02, $1E, $02, $1F, $02, $20, $04 ; CPU:$ABB0 PRG:ABB0 06 8E 02 18 00 02 00 02 1D 02 1E 02 1F 02 20 04 - .byte $29, $02, $20, $04, $29, $02, $20, $06, $22, $08, $2A, $02, $22, $02, $21, $02 ; CPU:$ABC0 PRG:ABC0 29 02 20 04 29 02 20 06 22 08 2A 02 22 02 21 02 - .byte $20, $04, $29, $02, $20, $04, $29, $02, $20, $06, $22, $08, $2A, $02, $22, $02 ; CPU:$ABD0 PRG:ABD0 20 04 29 02 20 04 29 02 20 06 22 08 2A 02 22 02 - .byte $21, $02, $20, $04, $29, $02, $20, $04, $29, $04, $20, $02, $1E, $04, $27, $02 ; CPU:$ABE0 PRG:ABE0 21 02 20 04 29 02 20 04 29 04 20 02 1E 04 27 02 - .byte $1E, $02, $1E, $04, $27, $12, $25, $82, $5A, $8F, $0C, $0C, $00, $02, $20, $02 ; CPU:$ABF0 PRG:ABF0 1E 02 1E 04 27 12 25 82 5A 8F 0C 0C 00 02 20 02 - .byte $21, $03, $22, $01, $24, $02, $25, $06, $25, $02, $24, $02, $25, $04, $27, $08 ; CPU:$AC00 PRG:AC00 21 03 22 01 24 02 25 06 25 02 24 02 25 04 27 08 - .byte $25, $02, $24, $02, $25, $03, $29, $01, $28, $02, $29, $04, $2C, $02, $29, $02 ; CPU:$AC10 PRG:AC10 25 02 24 02 25 03 29 01 28 02 29 04 2C 02 29 02 - .byte $25, $02, $20, $06, $23, $06, $22, $04, $20, $03, $1E, $01, $1D, $02, $1E, $02 ; CPU:$AC20 PRG:AC20 25 02 20 06 23 06 22 04 20 03 1E 01 1D 02 1E 02 - .byte $20, $02, $22, $04, $2A, $01, $24, $01, $25, $03, $29, $01, $28, $02, $29, $06 ; CPU:$AC30 PRG:AC30 20 02 22 04 2A 01 24 01 25 03 29 01 28 02 29 06 - .byte $2E, $81, $95, $03, $29, $01, $00, $81, $00, $10, $27, $82, $08, $8F, $0F, $08 ; CPU:$AC40 PRG:AC40 2E 81 95 03 29 01 00 81 00 10 27 82 08 8F 0F 08 - .byte $00, $02, $00, $02, $1D, $02, $1E, $02, $1F, $02, $20, $04, $29, $02, $20, $04 ; CPU:$AC50 PRG:AC50 00 02 00 02 1D 02 1E 02 1F 02 20 04 29 02 20 04 - .byte $29, $02, $20, $06, $22, $08, $2A, $02, $22, $02, $21, $02, $20, $04, $29, $02 ; CPU:$AC60 PRG:AC60 29 02 20 06 22 08 2A 02 22 02 21 02 20 04 29 02 - .byte $20, $04, $29, $02, $20, $06, $22, $08, $2A, $02, $22, $02, $21, $02, $20, $04 ; CPU:$AC70 PRG:AC70 20 04 29 02 20 06 22 08 2A 02 22 02 21 02 20 04 - .byte $29, $02, $20, $04, $29, $04, $20, $03, $1E, $01, $1D, $02, $1E, $06, $27, $14 ; CPU:$AC80 PRG:AC80 29 02 20 04 29 04 20 03 1E 01 1D 02 1E 06 27 14 - .byte $25, $8A, $8B, $50, $00, $8C, $50, $00, $89, $82, $04, $84, $18, $87, $F0, $8F ; CPU:$AC90 PRG:AC90 25 8A 8B 50 00 8C 50 00 89 82 04 84 18 87 F0 8F - .byte $04, $8E, $02, $40, $00, $04, $1D, $04, $00, $04, $19, $04, $14, $04, $12, $04 ; CPU:$ACA0 PRG:ACA0 04 8E 02 40 00 04 1D 04 00 04 19 04 14 04 12 04 - .byte $1B, $08, $00, $04, $1D, $04, $00, $04, $19, $04, $14, $04, $12, $04, $1B, $04 ; CPU:$ACB0 PRG:ACB0 1B 08 00 04 1D 04 00 04 19 04 14 04 12 04 1B 04 - .byte $00, $04, $12, $04, $11, $04, $19, $08, $00, $82, $5A, $8F, $0A, $0C, $00, $04 ; CPU:$ACC0 PRG:ACC0 00 04 12 04 11 04 19 08 00 82 5A 8F 0A 0C 00 04 - .byte $19, $03, $1E, $01, $20, $02, $22, $06, $1E, $02, $1D, $02, $1E, $04, $1F, $08 ; CPU:$ACD0 PRG:ACD0 19 03 1E 01 20 02 22 06 1E 02 1D 02 1E 04 1F 08 - .byte $22, $02, $1B, $02, $19, $03, $20, $01, $1F, $02, $20, $04, $25, $02, $25, $02 ; CPU:$ACE0 PRG:ACE0 22 02 1B 02 19 03 20 01 1F 02 20 04 25 02 25 02 - .byte $20, $02, $1D, $04, $20, $02, $1B, $06, $1A, $04, $1D, $03, $1B, $01, $1D, $02 ; CPU:$ACF0 PRG:ACF0 20 02 1D 04 20 02 1B 06 1A 04 1D 03 1B 01 1D 02 - .byte $1B, $02, $1D, $02, $1E, $04, $22, $01, $21, $01, $22, $08, $25, $04, $1D, $04 ; CPU:$AD00 PRG:AD00 1B 02 1D 02 1E 04 22 01 21 01 22 08 25 04 1D 04 - .byte $20, $06, $22, $06, $23, $04, $24, $82, $04, $8F, $0D, $08, $00, $02, $00, $02 ; CPU:$AD10 PRG:AD10 20 06 22 06 23 04 24 82 04 8F 0D 08 00 02 00 02 - .byte $1D, $02, $1E, $02, $1F, $02, $1D, $04, $20, $02, $1D, $04, $20, $02, $1D, $06 ; CPU:$AD20 PRG:AD20 1D 02 1E 02 1F 02 1D 04 20 02 1D 04 20 02 1D 06 - .byte $1E, $08, $22, $02, $22, $02, $21, $02, $1D, $04, $20, $02, $1D, $04, $20, $02 ; CPU:$AD30 PRG:AD30 1E 08 22 02 22 02 21 02 1D 04 20 02 1D 04 20 02 - .byte $1D, $06, $1E, $08, $22, $02, $22, $02, $21, $02, $1D, $04, $20, $02, $1D, $04 ; CPU:$AD40 PRG:AD40 1D 06 1E 08 22 02 22 02 21 02 1D 04 20 02 1D 04 - .byte $20, $04, $1D, $03, $16, $01, $15, $02, $16, $06, $1E, $14, $1D, $8A, $8B, $30 ; CPU:$AD50 PRG:AD50 20 04 1D 03 16 01 15 02 16 06 1E 14 1D 8A 8B 30 - .byte $00, $8C, $30, $00, $89, $82, $1E, $8F, $08, $8E, $02, $40, $00, $20, $00, $0C ; CPU:$AD60 PRG:AD60 00 8C 30 00 89 82 1E 8F 08 8E 02 40 00 20 00 0C - .byte $19, $04, $19, $0C, $14, $04, $14, $10, $19, $0C, $00, $04, $19, $8F, $0A, $06 ; CPU:$AD70 PRG:AD70 19 04 19 0C 14 04 14 10 19 0C 00 04 19 8F 0A 06 - .byte $1E, $02, $1E, $06, $1E, $02, $1E, $06, $1F, $02, $1F, $06, $1F, $02, $1F, $06 ; CPU:$AD80 PRG:AD80 1E 02 1E 06 1E 02 1E 06 1F 02 1F 06 1F 02 1F 06 - .byte $20, $02, $20, $06, $20, $02, $20, $06, $20, $06, $22, $04, $1D, $06, $1B, $02 ; CPU:$AD90 PRG:AD90 20 02 20 06 20 02 20 06 20 06 22 04 1D 06 1B 02 - .byte $1B, $06, $1B, $02, $1B, $06, $14, $02, $14, $04, $14, $04, $14, $06, $20, $06 ; CPU:$ADA0 PRG:ADA0 1B 06 1B 02 1B 06 14 02 14 04 14 04 14 06 20 06 - .byte $20, $04, $20, $8F, $0E, $0C, $00, $04, $20, $04, $19, $02, $11, $02, $14, $04 ; CPU:$ADB0 PRG:ADB0 20 04 20 8F 0E 0C 00 04 20 04 19 02 11 02 14 04 - .byte $19, $04, $1D, $04, $1E, $02, $16, $02, $19, $04, $1E, $04, $1E, $04, $19, $02 ; CPU:$ADC0 PRG:ADC0 19 04 1D 04 1E 02 16 02 19 04 1E 04 1E 04 19 02 - .byte $11, $02, $14, $04, $19, $04, $1D, $04, $1E, $02, $16, $02, $19, $04, $1E, $04 ; CPU:$ADD0 PRG:ADD0 11 02 14 04 19 04 1D 04 1E 02 16 02 19 04 1E 04 - .byte $1E, $04, $19, $02, $11, $02, $14, $04, $19, $04, $19, $04, $12, $04, $12, $04 ; CPU:$ADE0 PRG:ADE0 1E 04 19 02 11 02 14 04 19 04 19 04 12 04 12 04 - .byte $14, $04, $14, $04, $19, $02, $11, $02, $14, $04, $19, $04, $14, $0C, $19, $04 ; CPU:$ADF0 PRG:ADF0 14 04 14 04 19 02 11 02 14 04 19 04 14 0C 19 04 - .byte $19, $8A, $8B, $18, $00, $8C, $18, $00, $89, $8F, $06, $8E, $03, $04, $44, $04 ; CPU:$AE00 PRG:AE00 19 8A 8B 18 00 8C 18 00 89 8F 06 8E 03 04 44 04 - .byte $44, $04, $44, $04, $44, $02, $3F, $02, $44, $02, $3F, $02, $44, $02, $3F, $02 ; CPU:$AE10 PRG:AE10 44 04 44 04 44 02 3F 02 44 02 3F 02 44 02 3F 02 - .byte $44, $02, $3F, $02, $44, $8F, $0B, $02, $3F, $01, $44, $01, $44, $02, $3F, $01 ; CPU:$AE20 PRG:AE20 44 02 3F 02 44 8F 0B 02 3F 01 44 01 44 02 3F 01 - .byte $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02 ; CPU:$AE30 PRG:AE30 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 - .byte $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01 ; CPU:$AE40 PRG:AE40 3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 - .byte $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01 ; CPU:$AE50 PRG:AE50 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 - .byte $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02 ; CPU:$AE60 PRG:AE60 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 - .byte $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01 ; CPU:$AE70 PRG:AE70 3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 - .byte $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01 ; CPU:$AE80 PRG:AE80 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 - .byte $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02 ; CPU:$AE90 PRG:AE90 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 - .byte $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01 ; CPU:$AEA0 PRG:AEA0 3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 - .byte $44, $02, $3F, $01, $44, $01, $44, $8F, $0C, $02, $40, $02, $40, $02, $44, $02 ; CPU:$AEB0 PRG:AEB0 44 02 3F 01 44 01 44 8F 0C 02 40 02 40 02 44 02 - .byte $40, $02, $40, $02, $40, $02, $44, $02, $40, $02, $40, $02, $40, $02, $44, $02 ; CPU:$AEC0 PRG:AEC0 40 02 40 02 40 02 44 02 40 02 40 02 40 02 44 02 - .byte $40, $02, $40, $02, $40, $01, $44, $01, $42, $01, $44, $01, $42, $8A, $8B, $AE ; CPU:$AED0 PRG:AED0 40 02 40 02 40 01 44 01 42 01 44 01 42 8A 8B AE - .byte $00, $8C, $AE, $00, $89, $EF, $AE, $84, $AF, $D6, $AF, $2A, $B0, $02, $0F, $82 ; CPU:$AEE0 PRG:AEE0 00 8C AE 00 89 EF AE 84 AF D6 AF 2A B0 02 0F 82 - .byte $BB, $84, $18, $87, $F0, $8F, $0D, $8E, $05, $8D, $02, $06, $1D, $06, $1B, $06 ; CPU:$AEF0 PRG:AEF0 BB 84 18 87 F0 8F 0D 8E 05 8D 02 06 1D 06 1B 06 - .byte $19, $12, $1B, $0C, $19, $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C, $19, $08 ; CPU:$AF00 PRG:AF00 19 12 1B 0C 19 06 1D 06 1B 06 19 12 1B 0C 19 08 - .byte $1D, $08, $1B, $08, $19, $08, $1D, $08, $20, $08, $1E, $24, $1D, $06, $1B, $06 ; CPU:$AF10 PRG:AF10 1D 08 1B 08 19 08 1D 08 20 08 1E 24 1D 06 1B 06 - .byte $19, $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C, $19, $06, $1D, $06, $1B, $06 ; CPU:$AF20 PRG:AF20 19 06 1D 06 1B 06 19 12 1B 0C 19 06 1D 06 1B 06 - .byte $19, $12, $1B, $0C, $19, $30, $19, $12, $12, $12, $14, $0C, $12, $06, $1D, $06 ; CPU:$AF30 PRG:AF30 19 12 1B 0C 19 30 19 12 12 12 14 0C 12 06 1D 06 - .byte $1B, $06, $19, $12, $1B, $0C, $19, $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C ; CPU:$AF40 PRG:AF40 1B 06 19 12 1B 0C 19 06 1D 06 1B 06 19 12 1B 0C - .byte $19, $08, $1D, $08, $1B, $08, $19, $08, $1D, $08, $20, $08, $25, $24, $23, $06 ; CPU:$AF50 PRG:AF50 19 08 1D 08 1B 08 19 08 1D 08 20 08 25 24 23 06 - .byte $22, $06, $20, $06, $22, $06, $20, $06, $1E, $0C, $19, $0C, $18, $06, $19, $06 ; CPU:$AF60 PRG:AF60 22 06 20 06 22 06 20 06 1E 0C 19 0C 18 06 19 06 - .byte $1E, $06, $1D, $06, $1B, $12, $19, $0C, $18, $30, $19, $06, $12, $0C, $14, $0C ; CPU:$AF70 PRG:AF70 1E 06 1D 06 1B 12 19 0C 18 30 19 06 12 0C 14 0C - .byte $16, $12, $18, $88, $82, $05, $84, $18, $87, $80, $8F, $04, $8E, $05, $12, $14 ; CPU:$AF80 PRG:AF80 16 12 18 88 82 05 84 18 87 80 8F 04 8E 05 12 14 - .byte $06, $14, $12, $14, $06, $14, $12, $15, $06, $15, $12, $15, $06, $15, $12, $16 ; CPU:$AF90 PRG:AF90 06 14 12 14 06 14 12 15 06 15 12 15 06 15 12 16 - .byte $06, $16, $12, $16, $06, $16, $12, $17, $06, $17, $12, $17, $06, $17, $12, $16 ; CPU:$AFA0 PRG:AFA0 06 16 12 16 06 16 12 17 06 17 12 17 06 17 12 16 - .byte $06, $16, $12, $16, $06, $16, $12, $15, $06, $15, $12, $15, $06, $15, $30, $14 ; CPU:$AFB0 PRG:AFB0 06 16 12 16 06 16 12 15 06 15 12 15 06 15 30 14 - .byte $8A, $12, $16, $12, $18, $0C, $16, $8B, $49, $00, $8C, $0A, $00, $06, $16, $0C ; CPU:$AFC0 PRG:AFC0 8A 12 16 12 18 0C 16 8B 49 00 8C 0A 00 06 16 0C - .byte $18, $0C, $19, $12, $1B, $88, $82, $3A, $8F, $0A, $8E, $05, $12, $19, $06, $19 ; CPU:$AFD0 PRG:AFD0 18 0C 19 12 1B 88 82 3A 8F 0A 8E 05 12 19 06 19 - .byte $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06, $19 ; CPU:$AFE0 PRG:AFE0 12 19 06 19 12 19 06 19 12 19 06 19 12 19 06 19 - .byte $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06, $19, $12, $1E, $06, $1E ; CPU:$AFF0 PRG:AFF0 12 19 06 19 12 19 06 19 12 19 06 19 12 1E 06 1E - .byte $12, $1E, $06, $1E, $12, $1E, $06, $1E, $12, $1E, $06, $1E, $12, $19, $06, $19 ; CPU:$B000 PRG:B000 12 1E 06 1E 12 1E 06 1E 12 1E 06 1E 12 19 06 19 - .byte $12, $19, $06, $19, $8A, $12, $1E, $12, $20, $0C, $1E, $8B, $4B, $00, $8C, $06 ; CPU:$B010 PRG:B010 12 19 06 19 8A 12 1E 12 20 0C 1E 8B 4B 00 8C 06 - .byte $00, $06, $1E, $0C, $20, $0C, $1E, $12, $20, $88, $8F, $0B, $8E, $05, $06, $41 ; CPU:$B020 PRG:B020 00 06 1E 0C 20 0C 1E 12 20 88 8F 0B 8E 05 06 41 - .byte $06, $41, $06, $41, $0C, $40, $0C, $42, $06, $40, $06, $41, $06, $41, $06, $41 ; CPU:$B030 PRG:B030 06 41 06 41 0C 40 0C 42 06 40 06 41 06 41 06 41 - .byte $06, $41, $06, $41, $06, $41, $06, $43, $06, $41, $08, $40, $08, $40, $08, $40 ; CPU:$B040 PRG:B040 06 41 06 41 06 41 06 43 06 41 08 40 08 40 08 40 - .byte $08, $42, $08, $44, $08, $42, $06, $41, $06, $41, $06, $41, $0C, $43, $06, $42 ; CPU:$B050 PRG:B050 08 42 08 44 08 42 06 41 06 41 06 41 0C 43 06 42 - .byte $06, $42, $06, $41, $88, $6F, $B0, $6E, $B1, $3F, $B2, $F0, $B2, $02, $0F, $82 ; CPU:$B060 PRG:B060 06 42 06 41 88 6F B0 6E B1 3F B2 F0 B2 02 0F 82 - .byte $04, $84, $0C, $87, $D0, $8F, $0C, $8E, $03, $8D, $06, $06, $0D, $06, $16, $04 ; CPU:$B070 PRG:B070 04 84 0C 87 D0 8F 0C 8E 03 8D 06 06 0D 06 16 04 - .byte $14, $06, $0F, $06, $16, $04, $14, $06, $0D, $06, $16, $04, $14, $06, $0F, $06 ; CPU:$B080 PRG:B080 14 06 0F 06 16 04 14 06 0D 06 16 04 14 06 0F 06 - .byte $16, $82, $5A, $02, $1D, $02, $1E, $10, $20, $04, $00, $02, $1E, $02, $1D, $02 ; CPU:$B090 PRG:B090 16 82 5A 02 1D 02 1E 10 20 04 00 02 1E 02 1D 02 - .byte $1E, $02, $1D, $02, $1B, $02, $19, $06, $1D, $0A, $20, $04, $00, $02, $1E, $02 ; CPU:$B0A0 PRG:B0A0 1E 02 1D 02 1B 02 19 06 1D 0A 20 04 00 02 1E 02 - .byte $1D, $02, $1E, $02, $1D, $02, $1B, $02, $19, $02, $1B, $02, $1D, $0C, $19, $04 ; CPU:$B0B0 PRG:B0B0 1D 02 1E 02 1D 02 1B 02 19 02 1B 02 1D 0C 19 04 - .byte $00, $02, $1E, $02, $1D, $02, $1E, $02, $1D, $02, $1B, $02, $19, $10, $00, $0C ; CPU:$B0C0 PRG:B0C0 00 02 1E 02 1D 02 1E 02 1D 02 1B 02 19 10 00 0C - .byte $00, $8A, $8B, $69, $00, $8C, $22, $00, $8E, $05, $8A, $8B, $72, $00, $8C, $22 ; CPU:$B0D0 PRG:B0D0 00 8A 8B 69 00 8C 22 00 8E 05 8A 8B 72 00 8C 22 - .byte $00, $8E, $07, $8A, $8B, $7B, $00, $8C, $22, $00, $04, $14, $10, $1D, $04, $00 ; CPU:$B0E0 PRG:B0E0 00 8E 07 8A 8B 7B 00 8C 22 00 04 14 10 1D 04 00 - .byte $03, $1E, $01, $1D, $02, $1E, $04, $22, $12, $20, $04, $00, $03, $1E, $01, $1D ; CPU:$B0F0 PRG:B0F0 03 1E 01 1D 02 1E 04 22 12 20 04 00 03 1E 01 1D - .byte $03, $1E, $01, $1D, $02, $1B, $02, $19, $10, $1D, $04, $00, $04, $1E, $03, $1D ; CPU:$B100 PRG:B100 03 1E 01 1D 02 1B 02 19 10 1D 04 00 04 1E 03 1D - .byte $01, $1E, $02, $1B, $12, $19, $04, $00, $04, $25, $03, $24, $01, $25, $02, $22 ; CPU:$B110 PRG:B110 01 1E 02 1B 12 19 04 00 04 25 03 24 01 25 02 22 - .byte $12, $20, $04, $00, $04, $25, $03, $24, $01, $25, $02, $22, $12, $20, $04, $00 ; CPU:$B120 PRG:B120 12 20 04 00 04 25 03 24 01 25 02 22 12 20 04 00 - .byte $03, $1E, $01, $1D, $02, $1E, $04, $22, $12, $20, $04, $00, $04, $1E, $03, $1D ; CPU:$B130 PRG:B130 03 1E 01 1D 02 1E 04 22 12 20 04 00 04 1E 03 1D - .byte $01, $1E, $02, $1B, $1E, $19, $8E, $08, $8A, $8B, $E0, $00, $8C, $7B, $00, $04 ; CPU:$B140 PRG:B140 01 1E 02 1B 1E 19 8E 08 8A 8B E0 00 8C 7B 00 04 - .byte $00, $8E, $03, $03, $29, $01, $28, $03, $29, $01, $2D, $03, $26, $01, $25, $03 ; CPU:$B150 PRG:B150 00 8E 03 03 29 01 28 03 29 01 2D 03 26 01 25 03 - .byte $26, $01, $2B, $03, $25, $01, $24, $02, $25, $06, $2C, $04, $00, $88, $82, $04 ; CPU:$B160 PRG:B160 26 01 2B 03 25 01 24 02 25 06 2C 04 00 88 82 04 - .byte $84, $02, $87, $18, $8F, $09, $8E, $03, $3C, $00, $04, $14, $02, $00, $06, $25 ; CPU:$B170 PRG:B170 84 02 87 18 8F 09 8E 03 3C 00 04 14 02 00 06 25 - .byte $04, $22, $02, $1D, $02, $1E, $04, $20, $0C, $00, $04, $00, $02, $1D, $02, $1B ; CPU:$B180 PRG:B180 04 22 02 1D 02 1E 04 20 0C 00 04 00 02 1D 02 1B - .byte $02, $1D, $04, $22, $02, $20, $10, $00, $04, $00, $02, $1D, $02, $1B, $02, $1D ; CPU:$B190 PRG:B190 02 1D 04 22 02 20 10 00 04 00 02 1D 02 1B 02 1D - .byte $04, $20, $02, $20, $10, $00, $04, $00, $02, $1E, $02, $1D, $02, $1E, $02, $1D ; CPU:$B1A0 PRG:B1A0 04 20 02 20 10 00 04 00 02 1E 02 1D 02 1E 02 1D - .byte $02, $1B, $02, $19, $06, $1D, $06, $1B, $04, $00, $8A, $8B, $53, $00, $8C, $0E ; CPU:$B1B0 PRG:B1B0 02 1B 02 19 06 1D 06 1B 04 00 8A 8B 53 00 8C 0E - .byte $00, $8E, $05, $8A, $8B, $5C, $00, $8C, $0E, $00, $8E, $07, $8A, $8B, $65, $00 ; CPU:$B1C0 PRG:B1C0 00 8E 05 8A 8B 5C 00 8C 0E 00 8E 07 8A 8B 65 00 - .byte $8C, $0E, $00, $04, $00, $04, $19, $03, $18, $01, $19, $02, $16, $12, $14, $04 ; CPU:$B1D0 PRG:B1D0 8C 0E 00 04 00 04 19 03 18 01 19 02 16 12 14 04 - .byte $00, $04, $19, $03, $18, $01, $19, $02, $16, $12, $14, $04, $00, $03, $11, $01 ; CPU:$B1E0 PRG:B1E0 00 04 19 03 18 01 19 02 16 12 14 04 00 03 11 01 - .byte $0F, $02, $11, $04, $16, $12, $14, $04, $00, $04, $19, $03, $18, $01, $19, $02 ; CPU:$B1F0 PRG:B1F0 0F 02 11 04 16 12 14 04 00 04 19 03 18 01 19 02 - .byte $16, $12, $14, $04, $00, $03, $11, $01, $0F, $02, $11, $04, $16, $12, $14, $04 ; CPU:$B200 PRG:B200 16 12 14 04 00 03 11 01 0F 02 11 04 16 12 14 04 - .byte $00, $03, $11, $01, $0F, $02, $11, $04, $16, $12, $14, $04, $00, $04, $19, $03 ; CPU:$B210 PRG:B210 00 03 11 01 0F 02 11 04 16 12 14 04 00 04 19 03 - .byte $18, $01, $19, $02, $16, $12, $14, $04, $00, $04, $1D, $02, $1C, $06, $1B, $0C ; CPU:$B220 PRG:B220 18 01 19 02 16 12 14 04 00 04 1D 02 1C 06 1B 0C - .byte $19, $04, $00, $8E, $08, $8A, $8B, $CE, $00, $8C, $65, $00, $20, $00, $88, $82 ; CPU:$B230 PRG:B230 19 04 00 8E 08 8A 8B CE 00 8C 65 00 20 00 88 82 - .byte $44, $8F, $0A, $8E, $03, $40, $00, $06, $19, $06, $16, $04, $0F, $10, $14, $06 ; CPU:$B240 PRG:B240 44 8F 0A 8E 03 40 00 06 19 06 16 04 0F 10 14 06 - .byte $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $06 ; CPU:$B250 PRG:B250 19 06 16 04 0F 10 14 06 19 06 16 04 0F 10 14 06 - .byte $19, $06, $16, $04, $0F, $0C, $14, $04, $00, $8A, $8B, $31, $00, $8C, $08, $00 ; CPU:$B260 PRG:B260 19 06 16 04 0F 0C 14 04 00 8A 8B 31 00 8C 08 00 - .byte $8E, $05, $8A, $8B, $3A, $00, $8C, $08, $00, $8E, $07, $8A, $8B, $43, $00, $8C ; CPU:$B270 PRG:B270 8E 05 8A 8B 3A 00 8C 08 00 8E 07 8A 8B 43 00 8C - .byte $08, $00, $06, $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F ; CPU:$B280 PRG:B280 08 00 06 19 06 16 04 0F 10 14 06 19 06 16 04 0F - .byte $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F ; CPU:$B290 PRG:B290 10 14 06 19 06 16 04 0F 10 14 06 19 06 16 04 0F - .byte $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F ; CPU:$B2A0 PRG:B2A0 10 14 06 19 06 16 04 0F 10 14 06 19 06 16 04 0F - .byte $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $04, $00, $04, $14, $02, $17 ; CPU:$B2B0 PRG:B2B0 10 14 06 19 06 16 04 0F 10 14 04 00 04 14 02 17 - .byte $06, $18, $10, $19, $8E, $08, $8A, $8B, $8E, $00, $8C, $43, $00, $8E, $03, $02 ; CPU:$B2C0 PRG:B2C0 06 18 10 19 8E 08 8A 8B 8E 00 8C 43 00 8E 03 02 - .byte $15, $02, $00, $02, $15, $02, $00, $02, $13, $02, $00, $02, $13, $02, $00, $02 ; CPU:$B2D0 PRG:B2D0 15 02 00 02 15 02 00 02 13 02 00 02 13 02 00 02 - .byte $14, $02, $00, $02, $14, $06, $00, $01, $14, $01, $15, $01, $16, $01, $18, $88 ; CPU:$B2E0 PRG:B2E0 14 02 00 02 14 06 00 01 14 01 15 01 16 01 18 88 - .byte $8F, $0A, $8E, $06, $06, $3D, $06, $3D, $04, $3D, $06, $3D, $06, $3D, $04, $3D ; CPU:$B2F0 PRG:B2F0 8F 0A 8E 06 06 3D 06 3D 04 3D 06 3D 06 3D 04 3D - .byte $06, $3D, $06, $3D, $04, $3D, $06, $3D, $06, $3D, $04, $3D, $04, $3E, $02, $3F ; CPU:$B300 PRG:B300 06 3D 06 3D 04 3D 06 3D 06 3D 04 3D 04 3E 02 3F - .byte $04, $3F, $02, $3F, $02, $3F, $02, $3F, $02, $3E, $02, $3E, $02, $41, $02, $3E ; CPU:$B310 PRG:B310 04 3F 02 3F 02 3F 02 3F 02 3E 02 3E 02 41 02 3E - .byte $02, $3F, $02, $3F, $01, $41, $01, $41, $02, $3F, $8A, $8B, $1C, $00, $8C, $1C ; CPU:$B320 PRG:B320 02 3F 02 3F 01 41 01 41 02 3F 8A 8B 1C 00 8C 1C - .byte $00, $89, $3C, $B3, $20, $B5, $DE, $B6, $66, $B7, $02, $0F, $82, $96, $84, $18 ; CPU:$B330 PRG:B330 00 89 3C B3 20 B5 DE B6 66 B7 02 0F 82 96 84 18 - .byte $87, $F0, $8E, $09, $8D, $06, $8F, $0D, $08, $0D, $08, $0A, $06, $0F, $04, $08 ; CPU:$B340 PRG:B340 87 F0 8E 09 8D 06 8F 0D 08 0D 08 0A 06 0F 04 08 - .byte $02, $08, $02, $0A, $02, $0C, $04, $0D, $04, $0D, $04, $0A, $04, $0A, $04, $0F ; CPU:$B350 PRG:B350 02 08 02 0A 02 0C 04 0D 04 0D 04 0A 04 0A 04 0F - .byte $02, $0F, $04, $08, $02, $08, $02, $0A, $02, $0C, $82, $08, $01, $1C, $03, $1D ; CPU:$B360 PRG:B360 02 0F 04 08 02 08 02 0A 02 0C 82 08 01 1C 03 1D - .byte $04, $1D, $08, $1D, $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B ; CPU:$B370 PRG:B370 04 1D 08 1D 02 00 02 1B 02 1D 02 1E 04 1D 04 1B - .byte $06, $19, $0A, $14, $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B ; CPU:$B380 PRG:B380 06 19 0A 14 02 00 02 1B 02 1D 02 1E 04 1D 04 1B - .byte $06, $1D, $0A, $20, $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B ; CPU:$B390 PRG:B390 06 1D 0A 20 02 00 02 1B 02 1D 02 1E 04 1D 04 1B - .byte $10, $19, $10, $00, $01, $1F, $03, $20, $04, $20, $08, $20, $02, $00, $02, $22 ; CPU:$B3A0 PRG:B3A0 10 19 10 00 01 1F 03 20 04 20 08 20 02 00 02 22 - .byte $02, $24, $02, $25, $04, $24, $04, $22, $02, $1F, $04, $20, $0A, $1D, $02, $00 ; CPU:$B3B0 PRG:B3B0 02 24 02 25 04 24 04 22 02 1F 04 20 0A 1D 02 00 - .byte $02, $22, $02, $24, $02, $25, $04, $24, $04, $22, $02, $1F, $04, $20, $0A, $19 ; CPU:$B3C0 PRG:B3C0 02 22 02 24 02 25 04 24 04 22 02 1F 04 20 0A 19 - .byte $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B, $10, $19, $10, $00 ; CPU:$B3D0 PRG:B3D0 02 00 02 1B 02 1D 02 1E 04 1D 04 1B 10 19 10 00 - .byte $04, $00, $03, $1D, $01, $1E, $02, $20, $06, $25, $02, $00, $02, $1E, $02, $20 ; CPU:$B3E0 PRG:B3E0 04 00 03 1D 01 1E 02 20 06 25 02 00 02 1E 02 20 - .byte $02, $22, $04, $20, $04, $1E, $06, $20, $0A, $19, $02, $00, $02, $1E, $02, $20 ; CPU:$B3F0 PRG:B3F0 02 22 04 20 04 1E 06 20 0A 19 02 00 02 1E 02 20 - .byte $02, $22, $04, $20, $04, $1E, $03, $1D, $01, $1E, $02, $20, $0A, $25, $02, $00 ; CPU:$B400 PRG:B400 02 22 04 20 04 1E 03 1D 01 1E 02 20 0A 25 02 00 - .byte $02, $22, $02, $24, $02, $25, $02, $28, $04, $27, $12, $25, $10, $00, $04, $00 ; CPU:$B410 PRG:B410 02 22 02 24 02 25 02 28 04 27 12 25 10 00 04 00 - .byte $03, $1D, $01, $1E, $02, $20, $06, $25, $04, $00, $02, $1E, $02, $1D, $02, $1E ; CPU:$B420 PRG:B420 03 1D 01 1E 02 20 06 25 04 00 02 1E 02 1D 02 1E - .byte $02, $1D, $02, $1E, $02, $22, $06, $20, $0A, $1D, $02, $00, $02, $1B, $02, $1D ; CPU:$B430 PRG:B430 02 1D 02 1E 02 22 06 20 0A 1D 02 00 02 1B 02 1D - .byte $02, $1E, $02, $22, $02, $21, $02, $22, $02, $21, $06, $20, $06, $25, $04, $19 ; CPU:$B440 PRG:B440 02 1E 02 22 02 21 02 22 02 21 06 20 06 25 04 19 - .byte $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B, $10, $19, $10, $00 ; CPU:$B450 PRG:B450 02 00 02 1B 02 1D 02 1E 04 1D 04 1B 10 19 10 00 - .byte $04, $00, $03, $1D, $01, $1E, $02, $20, $06, $25, $02, $00, $02, $27, $02, $29 ; CPU:$B460 PRG:B460 04 00 03 1D 01 1E 02 20 06 25 02 00 02 27 02 29 - .byte $02, $2A, $04, $28, $04, $27, $06, $25, $0A, $20, $02, $00, $02, $27, $02, $29 ; CPU:$B470 PRG:B470 02 2A 04 28 04 27 06 25 0A 20 02 00 02 27 02 29 - .byte $02, $2A, $04, $28, $04, $27, $06, $25, $0A, $20, $02, $00, $02, $1B, $02, $1D ; CPU:$B480 PRG:B480 02 2A 04 28 04 27 06 25 0A 20 02 00 02 1B 02 1D - .byte $02, $1E, $04, $1D, $04, $1B, $10, $19, $10, $00, $04, $1D, $04, $1D, $08, $1D ; CPU:$B490 PRG:B490 02 1E 04 1D 04 1B 10 19 10 00 04 1D 04 1D 08 1D - .byte $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B, $06, $19, $0A, $14 ; CPU:$B4A0 PRG:B4A0 02 00 02 1B 02 1D 02 1E 04 1D 04 1B 06 19 0A 14 - .byte $02, $00, $02, $1B, $02, $1D, $02, $1E, $02, $1D, $02, $1C, $02, $1D, $02, $1C ; CPU:$B4B0 PRG:B4B0 02 00 02 1B 02 1D 02 1E 02 1D 02 1C 02 1D 02 1C - .byte $02, $1D, $02, $1C, $02, $1D, $02, $1C, $02, $1D, $06, $25, $02, $00, $02, $22 ; CPU:$B4C0 PRG:B4C0 02 1D 02 1C 02 1D 02 1C 02 1D 06 25 02 00 02 22 - .byte $02, $24, $02, $25, $04, $29, $04, $27, $10, $25, $10, $00, $01, $1F, $03, $20 ; CPU:$B4D0 PRG:B4D0 02 24 02 25 04 29 04 27 10 25 10 00 01 1F 03 20 - .byte $04, $20, $08, $20, $02, $00, $02, $22, $02, $24, $02, $25, $04, $24, $04, $22 ; CPU:$B4E0 PRG:B4E0 04 20 08 20 02 00 02 22 02 24 02 25 04 24 04 22 - .byte $02, $1F, $04, $20, $0A, $1D, $02, $00, $02, $22, $02, $24, $02, $25, $04, $24 ; CPU:$B4F0 PRG:B4F0 02 1F 04 20 0A 1D 02 00 02 22 02 24 02 25 04 24 - .byte $04, $22, $02, $1F, $04, $20, $0A, $19, $02, $00, $02, $1B, $02, $1D, $02, $1E ; CPU:$B500 PRG:B500 04 22 02 1F 04 20 0A 19 02 00 02 1B 02 1D 02 1E - .byte $04, $1D, $04, $1B, $10, $19, $10, $00, $8A, $8B, $2E, $00, $8C, $2E, $00, $89 ; CPU:$B510 PRG:B510 04 1D 04 1B 10 19 10 00 8A 8B 2E 00 8C 2E 00 89 - .byte $82, $04, $87, $18, $87, $F0, $8E, $09, $8F, $0C, $40, $00, $01, $13, $03, $14 ; CPU:$B520 PRG:B520 82 04 87 18 87 F0 8E 09 8F 0C 40 00 01 13 03 14 - .byte $04, $14, $08, $14, $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12 ; CPU:$B530 PRG:B530 04 14 08 14 02 00 02 12 02 14 02 16 04 14 04 12 - .byte $06, $14, $0A, $11, $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12 ; CPU:$B540 PRG:B540 06 14 0A 11 02 00 02 12 02 14 02 16 04 14 04 12 - .byte $06, $14, $0A, $1D, $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12 ; CPU:$B550 PRG:B550 06 14 0A 1D 02 00 02 12 02 14 02 16 04 14 04 12 - .byte $10, $11, $10, $00, $01, $1C, $03, $1D, $04, $1D, $08, $1D, $02, $00, $02, $1E ; CPU:$B560 PRG:B560 10 11 10 00 01 1C 03 1D 04 1D 08 1D 02 00 02 1E - .byte $02, $20, $02, $22, $04, $20, $04, $1E, $02, $1C, $04, $1D, $0A, $19, $02, $00 ; CPU:$B570 PRG:B570 02 20 02 22 04 20 04 1E 02 1C 04 1D 0A 19 02 00 - .byte $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $06, $1D, $0A, $22, $02, $00 ; CPU:$B580 PRG:B580 02 1E 02 20 02 22 04 20 04 1E 06 1D 0A 22 02 00 - .byte $02, $12, $02, $14, $02, $16, $04, $14, $04, $12, $10, $11, $10, $00, $04, $00 ; CPU:$B590 PRG:B590 02 12 02 14 02 16 04 14 04 12 10 11 10 00 04 00 - .byte $03, $19, $01, $1B, $02, $1D, $06, $22, $02, $00, $02, $16, $02, $18, $02, $19 ; CPU:$B5A0 PRG:B5A0 03 19 01 1B 02 1D 06 22 02 00 02 16 02 18 02 19 - .byte $04, $18, $04, $16, $06, $14, $0A, $11, $02, $00, $02, $16, $02, $18, $02, $19 ; CPU:$B5B0 PRG:B5B0 04 18 04 16 06 14 0A 11 02 00 02 16 02 18 02 19 - .byte $04, $18, $04, $16, $03, $14, $01, $16, $02, $18, $06, $16, $04, $19, $02, $00 ; CPU:$B5C0 PRG:B5C0 04 18 04 16 03 14 01 16 02 18 06 16 04 19 02 00 - .byte $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $10, $1D, $10, $00, $04, $00 ; CPU:$B5D0 PRG:B5D0 02 1E 02 20 02 22 04 20 04 1E 10 1D 10 00 04 00 - .byte $03, $19, $01, $1B, $02, $1D, $06, $22, $04, $00, $02, $16, $02, $15, $02, $16 ; CPU:$B5E0 PRG:B5E0 03 19 01 1B 02 1D 06 22 04 00 02 16 02 15 02 16 - .byte $02, $15, $02, $16, $02, $19, $06, $1D, $0A, $19, $02, $00, $02, $12, $02, $14 ; CPU:$B5F0 PRG:B5F0 02 15 02 16 02 19 06 1D 0A 19 02 00 02 12 02 14 - .byte $02, $16, $02, $19, $02, $18, $02, $19, $02, $18, $06, $1D, $06, $22, $04, $11 ; CPU:$B600 PRG:B600 02 16 02 19 02 18 02 19 02 18 06 1D 06 22 04 11 - .byte $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12, $10, $11, $10, $00 ; CPU:$B610 PRG:B610 02 00 02 12 02 14 02 16 04 14 04 12 10 11 10 00 - .byte $04, $00, $03, $19, $01, $1B, $02, $1D, $06, $22, $02, $00, $02, $1E, $02, $20 ; CPU:$B620 PRG:B620 04 00 03 19 01 1B 02 1D 06 22 02 00 02 1E 02 20 - .byte $02, $22, $04, $23, $04, $22, $06, $20, $0A, $1D, $02, $00, $02, $1E, $02, $20 ; CPU:$B630 PRG:B630 02 22 04 23 04 22 06 20 0A 1D 02 00 02 1E 02 20 - .byte $02, $22, $04, $23, $04, $22, $06, $20, $0A, $1D, $02, $00, $02, $12, $02, $14 ; CPU:$B640 PRG:B640 02 22 04 23 04 22 06 20 0A 1D 02 00 02 12 02 14 - .byte $02, $16, $04, $14, $04, $12, $10, $11, $10, $00, $04, $14, $04, $14, $08, $14 ; CPU:$B650 PRG:B650 02 16 04 14 04 12 10 11 10 00 04 14 04 14 08 14 - .byte $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12, $06, $14, $0A, $11 ; CPU:$B660 PRG:B660 02 00 02 12 02 14 02 16 04 14 04 12 06 14 0A 11 - .byte $02, $00, $02, $12, $02, $14, $02, $16, $02, $14, $02, $13, $02, $14, $02, $13 ; CPU:$B670 PRG:B670 02 00 02 12 02 14 02 16 02 14 02 13 02 14 02 13 - .byte $02, $14, $02, $13, $02, $14, $02, $13, $02, $14, $06, $1D, $02, $00, $02, $1E ; CPU:$B680 PRG:B680 02 14 02 13 02 14 02 13 02 14 06 1D 02 00 02 1E - .byte $02, $20, $02, $22, $04, $20, $04, $1E, $10, $1D, $10, $00, $01, $1C, $03, $1D ; CPU:$B690 PRG:B690 02 20 02 22 04 20 04 1E 10 1D 10 00 01 1C 03 1D - .byte $04, $1D, $08, $1D, $02, $00, $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E ; CPU:$B6A0 PRG:B6A0 04 1D 08 1D 02 00 02 1E 02 20 02 22 04 20 04 1E - .byte $02, $1C, $04, $1D, $0A, $19, $02, $00, $02, $1E, $02, $20, $02, $22, $04, $20 ; CPU:$B6B0 PRG:B6B0 02 1C 04 1D 0A 19 02 00 02 1E 02 20 02 22 04 20 - .byte $04, $1E, $06, $1D, $0A, $22, $02, $00, $02, $12, $02, $14, $02, $16, $04, $15 ; CPU:$B6C0 PRG:B6C0 04 1E 06 1D 0A 22 02 00 02 12 02 14 02 16 04 15 - .byte $04, $12, $10, $11, $10, $00, $8A, $8B, $0C, $00, $8C, $0C, $00, $89, $82, $20 ; CPU:$B6D0 PRG:B6D0 04 12 10 11 10 00 8A 8B 0C 00 8C 0C 00 89 82 20 - .byte $84, $18, $87, $F0, $8E, $09, $8D, $06, $8F, $0D, $08, $19, $08, $16, $06, $1B ; CPU:$B6E0 PRG:B6E0 84 18 87 F0 8E 09 8D 06 8F 0D 08 19 08 16 06 1B - .byte $04, $14, $02, $14, $02, $16, $02, $18, $04, $19, $04, $19, $04, $16, $04, $16 ; CPU:$B6F0 PRG:B6F0 04 14 02 14 02 16 02 18 04 19 04 19 04 16 04 16 - .byte $04, $1B, $02, $1B, $04, $14, $02, $14, $02, $16, $02, $18, $04, $19, $04, $19 ; CPU:$B700 PRG:B700 04 1B 02 1B 04 14 02 14 02 16 02 18 04 19 04 19 - .byte $04, $16, $04, $16, $04, $1B, $02, $1B, $04, $14, $02, $14, $02, $16, $02, $18 ; CPU:$B710 PRG:B710 04 16 04 16 04 1B 02 1B 04 14 02 14 02 16 02 18 - .byte $04, $19, $04, $19, $04, $16, $04, $16, $06, $1B, $04, $14, $02, $14, $02, $16 ; CPU:$B720 PRG:B720 04 19 04 19 04 16 04 16 06 1B 04 14 02 14 02 16 - .byte $02, $18, $04, $19, $04, $19, $04, $16, $02, $16, $04, $1B, $04, $1B, $02, $1B ; CPU:$B730 PRG:B730 02 18 04 19 04 19 04 16 02 16 04 1B 04 1B 02 1B - .byte $02, $14, $02, $14, $02, $16, $02, $18, $04, $19, $04, $19, $04, $16, $04, $16 ; CPU:$B740 PRG:B740 02 14 02 14 02 16 02 18 04 19 04 19 04 16 04 16 - .byte $03, $1B, $01, $1A, $02, $1B, $04, $14, $02, $14, $02, $16, $02, $18, $8A, $8B ; CPU:$B750 PRG:B750 03 1B 01 1A 02 1B 04 14 02 14 02 16 02 18 8A 8B - .byte $2E, $00, $8C, $2E, $00, $89, $8F, $01, $8E, $45, $20, $3E, $8F, $09, $8E, $04 ; CPU:$B760 PRG:B760 2E 00 8C 2E 00 89 8F 01 8E 45 20 3E 8F 09 8E 04 - .byte $04, $42, $04, $42, $04, $42, $04, $42, $04, $3E, $03, $42, $01, $40, $03, $3E ; CPU:$B770 PRG:B770 04 42 04 42 04 42 04 42 04 3E 03 42 01 40 03 3E - .byte $01, $41, $02, $44, $02, $42, $04, $3D, $01, $41, $03, $42, $04, $3D, $01, $41 ; CPU:$B780 PRG:B780 01 41 02 44 02 42 04 3D 01 41 03 42 04 3D 01 41 - .byte $03, $43, $03, $3D, $01, $41, $02, $44, $02, $42, $02, $3D, $01, $41, $01, $41 ; CPU:$B790 PRG:B790 03 43 03 3D 01 41 02 44 02 42 02 3D 01 41 01 41 - .byte $02, $44, $02, $42, $8A, $8B, $20, $00, $8C, $20, $00, $89, $B6, $B7, $47, $B8 ; CPU:$B7A0 PRG:B7A0 02 44 02 42 8A 8B 20 00 8C 20 00 89 B6 B7 47 B8 - .byte $D4, $B8, $3F, $B9, $02, $0F, $84, $14, $87, $B4, $8F, $0D, $8D, $06, $82, $CD ; CPU:$B7B0 PRG:B7B0 D4 B8 3F B9 02 0F 84 14 87 B4 8F 0D 8D 06 82 CD - .byte $8E, $0C, $03, $1D, $01, $1C, $02, $1D, $06, $20, $04, $25, $0C, $25, $03, $24 ; CPU:$B7C0 PRG:B7C0 8E 0C 03 1D 01 1C 02 1D 06 20 04 25 0C 25 03 24 - .byte $01, $25, $03, $27, $01, $25, $02, $24, $06, $25, $04, $22, $0C, $1E, $03, $1D ; CPU:$B7D0 PRG:B7D0 01 25 03 27 01 25 02 24 06 25 04 22 0C 1E 03 1D - .byte $01, $1C, $03, $1D, $01, $1C, $02, $1D, $06, $25, $04, $1D, $03, $1B, $01, $1A ; CPU:$B7E0 PRG:B7E0 01 1C 03 1D 01 1C 02 1D 06 25 04 1D 03 1B 01 1A - .byte $02, $1B, $06, $22, $04, $19, $03, $18, $01, $17, $02, $18, $0A, $20, $03, $1E ; CPU:$B7F0 PRG:B7F0 02 1B 06 22 04 19 03 18 01 17 02 18 0A 20 03 1E - .byte $01, $1D, $02, $1E, $06, $1D, $04, $1B, $03, $1D, $01, $1C, $02, $1D, $06, $20 ; CPU:$B800 PRG:B800 01 1D 02 1E 06 1D 04 1B 03 1D 01 1C 02 1D 06 20 - .byte $04, $25, $0C, $25, $03, $24, $01, $25, $03, $27, $01, $25, $02, $24, $06, $25 ; CPU:$B810 PRG:B810 04 25 0C 25 03 24 01 25 03 27 01 25 02 24 06 25 - .byte $04, $22, $0C, $1E, $03, $1D, $01, $1C, $03, $1D, $01, $1C, $02, $1D, $06, $25 ; CPU:$B820 PRG:B820 04 22 0C 1E 03 1D 01 1C 03 1D 01 1C 02 1D 06 25 - .byte $04, $1D, $03, $1B, $01, $1D, $02, $1E, $06, $1D, $04, $1B, $10, $19, $02, $21 ; CPU:$B830 PRG:B830 04 1D 03 1B 01 1D 02 1E 06 1D 04 1B 10 19 02 21 - .byte $04, $20, $02, $21, $08, $20, $88, $82, $BB, $84, $14, $87, $B4, $8F, $0D, $8E ; CPU:$B840 PRG:B840 04 20 02 21 08 20 88 82 BB 84 14 87 B4 8F 0D 8E - .byte $00, $04, $00, $02, $1D, $02, $1C, $04, $1D, $04, $25, $0C, $23, $02, $20, $02 ; CPU:$B850 PRG:B850 00 04 00 02 1D 02 1C 04 1D 04 25 0C 23 02 20 02 - .byte $1E, $04, $22, $04, $20, $04, $1E, $04, $19, $0C, $21, $04, $00, $04, $00, $03 ; CPU:$B860 PRG:B860 1E 04 22 04 20 04 1E 04 19 0C 21 04 00 04 00 03 - .byte $1D, $01, $1C, $02, $1D, $06, $25, $04, $00, $03, $1F, $01, $20, $04, $22, $04 ; CPU:$B870 PRG:B870 1D 01 1C 02 1D 06 25 04 00 03 1F 01 20 04 22 04 - .byte $25, $04, $20, $02, $1F, $02, $20, $04, $22, $04, $25, $03, $24, $01, $22, $02 ; CPU:$B880 PRG:B880 25 04 20 02 1F 02 20 04 22 04 25 03 24 01 22 02 - .byte $24, $06, $22, $04, $20, $04, $00, $02, $1D, $02, $1C, $04, $1D, $04, $25, $0C ; CPU:$B890 PRG:B890 24 06 22 04 20 04 00 02 1D 02 1C 04 1D 04 25 0C - .byte $23, $02, $20, $02, $1E, $04, $22, $04, $20, $04, $1E, $04, $19, $0C, $21, $04 ; CPU:$B8A0 PRG:B8A0 23 02 20 02 1E 04 22 04 20 04 1E 04 19 0C 21 04 - .byte $00, $04, $00, $03, $1D, $01, $1C, $02, $1D, $06, $25, $04, $22, $02, $12, $02 ; CPU:$B8B0 PRG:B8B0 00 04 00 03 1D 01 1C 02 1D 06 25 04 22 02 12 02 - .byte $14, $02, $16, $02, $18, $02, $19, $02, $1B, $10, $1D, $02, $1E, $04, $20, $02 ; CPU:$B8C0 PRG:B8C0 14 02 16 02 18 02 19 02 1B 10 1D 02 1E 04 20 02 - .byte $1E, $08, $20, $88, $8F, $0C, $8E, $00, $82, $5A, $06, $25, $06, $1D, $04, $20 ; CPU:$B8D0 PRG:B8D0 1E 08 20 88 8F 0C 8E 00 82 5A 06 25 06 1D 04 20 - .byte $06, $25, $06, $1D, $04, $20, $06, $1E, $06, $16, $04, $19, $06, $1E, $06, $21 ; CPU:$B8E0 PRG:B8E0 06 25 06 1D 04 20 06 1E 06 16 04 19 06 1E 06 21 - .byte $04, $19, $06, $1D, $06, $14, $04, $19, $06, $1B, $06, $1F, $04, $22, $06, $20 ; CPU:$B8F0 PRG:B8F0 04 19 06 1D 06 14 04 19 06 1B 06 1F 04 22 06 20 - .byte $06, $18, $04, $1B, $04, $20, $04, $1E, $04, $1D, $04, $1B, $06, $25, $06, $1D ; CPU:$B900 PRG:B900 06 18 04 1B 04 20 04 1E 04 1D 04 1B 06 25 06 1D - .byte $04, $20, $06, $25, $06, $1D, $04, $20, $06, $1E, $06, $16, $04, $19, $06, $1E ; CPU:$B910 PRG:B910 04 20 06 25 06 1D 04 20 06 1E 06 16 04 19 06 1E - .byte $06, $21, $04, $19, $06, $1D, $06, $14, $04, $19, $06, $20, $06, $20, $04, $20 ; CPU:$B920 PRG:B920 06 21 04 19 06 1D 06 14 04 19 06 20 06 20 04 20 - .byte $06, $19, $06, $14, $04, $19, $02, $21, $04, $20, $02, $21, $08, $20, $88, $8F ; CPU:$B930 PRG:B930 06 19 06 14 04 19 02 21 04 20 02 21 08 20 88 8F - .byte $0D, $8E, $04, $04, $3E, $02, $44, $02, $42, $02, $3F, $02, $3F, $02, $44, $02 ; CPU:$B940 PRG:B940 0D 8E 04 04 3E 02 44 02 42 02 3F 02 3F 02 44 02 - .byte $3F, $88, $5C, $B9, $AD, $B9, $F0, $B9, $33, $BA, $02, $0F, $82, $02, $84, $18 ; CPU:$B950 PRG:B950 3F 88 5C B9 AD B9 F0 B9 33 BA 02 0F 82 02 84 18 - .byte $87, $78, $8F, $0D, $8E, $13, $8D, $05, $04, $1D, $04, $00, $04, $20, $04, $00 ; CPU:$B960 PRG:B960 87 78 8F 0D 8E 13 8D 05 04 1D 04 00 04 20 04 00 - .byte $03, $1B, $01, $1A, $02, $1B, $06, $20, $04, $00, $04, $1D, $04, $00, $04, $20 ; CPU:$B970 PRG:B970 03 1B 01 1A 02 1B 06 20 04 00 04 1D 04 00 04 20 - .byte $04, $00, $03, $22, $01, $21, $02, $22, $06, $1B, $04, $00, $04, $1D, $04, $00 ; CPU:$B980 PRG:B980 04 00 03 22 01 21 02 22 06 1B 04 00 04 1D 04 00 - .byte $04, $20, $04, $00, $03, $1B, $01, $1A, $02, $1B, $06, $20, $04, $1D, $04, $19 ; CPU:$B990 PRG:B990 04 20 04 00 03 1B 01 1A 02 1B 06 20 04 1D 04 19 - .byte $04, $00, $04, $17, $04, $00, $06, $15, $06, $14, $04, $00, $88, $82, $04, $8F ; CPU:$B9A0 PRG:B9A0 04 00 04 17 04 00 06 15 06 14 04 00 88 82 04 8F - .byte $0D, $8E, $07, $04, $19, $04, $11, $04, $1D, $04, $0D, $04, $00, $02, $13, $06 ; CPU:$B9B0 PRG:B9B0 0D 8E 07 04 19 04 11 04 1D 04 0D 04 00 02 13 06 - .byte $00, $04, $18, $04, $19, $04, $11, $04, $1D, $04, $0D, $04, $00, $04, $13, $04 ; CPU:$B9C0 PRG:B9C0 00 04 18 04 19 04 11 04 1D 04 0D 04 00 04 13 04 - .byte $00, $04, $18, $04, $19, $04, $11, $04, $1D, $04, $0D, $04, $00, $02, $13, $06 ; CPU:$B9D0 PRG:B9D0 00 04 18 04 19 04 11 04 1D 04 0D 04 00 02 13 06 - .byte $00, $04, $18, $04, $00, $04, $19, $08, $1B, $06, $19, $06, $18, $04, $00, $88 ; CPU:$B9E0 PRG:B9E0 00 04 18 04 00 04 19 08 1B 06 19 06 18 04 00 88 - .byte $82, $24, $8F, $0C, $8E, $07, $04, $00, $04, $19, $04, $00, $04, $16, $04, $00 ; CPU:$B9F0 PRG:B9F0 82 24 8F 0C 8E 07 04 00 04 19 04 00 04 16 04 00 - .byte $04, $1B, $04, $00, $04, $14, $04, $00, $04, $19, $04, $00, $04, $16, $04, $00 ; CPU:$BA00 PRG:BA00 04 1B 04 00 04 14 04 00 04 19 04 00 04 16 04 00 - .byte $04, $1B, $04, $00, $04, $14, $04, $00, $04, $19, $04, $00, $04, $16, $04, $00 ; CPU:$BA10 PRG:BA10 04 1B 04 00 04 14 04 00 04 19 04 00 04 16 04 00 - .byte $04, $1B, $04, $00, $04, $14, $04, $00, $04, $19, $08, $17, $06, $15, $06, $14 ; CPU:$BA20 PRG:BA20 04 1B 04 00 04 14 04 00 04 19 08 17 06 15 06 14 - .byte $04, $00, $88, $8F, $0D, $8E, $03, $04, $40, $02, $44, $02, $41, $04, $40, $02 ; CPU:$BA30 PRG:BA30 04 00 88 8F 0D 8E 03 04 40 02 44 02 41 04 40 02 - .byte $44, $02, $41, $02, $40, $02, $40, $02, $44, $04, $40, $02, $41, $02, $44, $02 ; CPU:$BA40 PRG:BA40 44 02 41 02 40 02 40 02 44 04 40 02 41 02 44 02 - .byte $41, $04, $40, $02, $44, $02, $41, $02, $40, $02, $40, $02, $44, $02, $41, $04 ; CPU:$BA50 PRG:BA50 41 04 40 02 44 02 41 02 40 02 40 02 44 02 41 04 - .byte $40, $02, $40, $04, $44, $02, $44, $02, $44, $02, $44, $04, $40, $02, $44, $02 ; CPU:$BA60 PRG:BA60 40 02 40 04 44 02 44 02 44 02 44 04 40 02 44 02 - .byte $41, $04, $40, $02, $44, $02, $41, $04, $40, $02, $40, $04, $44, $02, $44, $02 ; CPU:$BA70 PRG:BA70 41 04 40 02 44 02 41 04 40 02 40 04 44 02 44 02 - .byte $44, $02, $44, $02, $43, $01, $43, $01, $43, $02, $43, $04, $41, $02, $43, $02 ; CPU:$BA80 PRG:BA80 44 02 44 02 43 01 43 01 43 02 43 04 41 02 43 02 - .byte $43, $02, $43, $02, $43, $01, $43, $01, $43, $02, $43, $04, $40, $01, $42, $01 ; CPU:$BA90 PRG:BA90 43 02 43 02 43 01 43 01 43 02 43 04 40 01 42 01 - .byte $42, $02, $42, $02, $42, $88, $B0, $BA, $DB, $BA, $02, $BB, $27, $BB, $02, $0F ; CPU:$BAA0 PRG:BAA0 42 02 42 02 42 88 B0 BA DB BA 02 BB 27 BB 02 0F - .byte $82, $49, $84, $18, $87, $F0, $8E, $07, $8D, $06, $8F, $0E, $01, $19, $02, $19 ; CPU:$BAB0 PRG:BAB0 82 49 84 18 87 F0 8E 07 8D 06 8F 0E 01 19 02 19 - .byte $01, $19, $02, $18, $02, $18, $02, $16, $02, $16, $02, $18, $02, $18, $01, $19 ; CPU:$BAC0 PRG:BAC0 01 19 02 18 02 18 02 16 02 16 02 18 02 18 01 19 - .byte $02, $19, $01, $19, $02, $1B, $02, $1B, $10, $1D, $89, $82, $49, $84, $18, $87 ; CPU:$BAD0 PRG:BAD0 02 19 01 19 02 1B 02 1B 10 1D 89 82 49 84 18 87 - .byte $F0, $8E, $07, $01, $16, $02, $16, $01, $16, $02, $14, $02, $14, $02, $12, $02 ; CPU:$BAE0 PRG:BAE0 F0 8E 07 01 16 02 16 01 16 02 14 02 14 02 12 02 - .byte $12, $02, $14, $02, $14, $01, $16, $02, $16, $01, $16, $02, $18, $02, $18, $10 ; CPU:$BAF0 PRG:BAF0 12 02 14 02 14 01 16 02 16 01 16 02 18 02 18 10 - .byte $1A, $89, $82, $2A, $8E, $07, $01, $16, $02, $16, $01, $16, $02, $14, $02, $14 ; CPU:$BB00 PRG:BB00 1A 89 82 2A 8E 07 01 16 02 16 01 16 02 14 02 14 - .byte $02, $12, $02, $12, $02, $14, $02, $14, $01, $12, $02, $12, $01, $12, $02, $14 ; CPU:$BB10 PRG:BB10 02 12 02 12 02 14 02 14 01 12 02 12 01 12 02 14 - .byte $02, $14, $82, $78, $10, $16, $89, $8F, $0D, $8E, $03, $01, $43, $02, $43, $01 ; CPU:$BB20 PRG:BB20 02 14 82 78 10 16 89 8F 0D 8E 03 01 43 02 43 01 - .byte $43, $02, $41, $02, $41, $01, $43, $02, $43, $01, $43, $02, $41, $02, $41, $01 ; CPU:$BB30 PRG:BB30 43 02 41 02 41 01 43 02 43 01 43 02 41 02 41 01 - .byte $43, $02, $43, $01, $43, $02, $41, $02, $41, $10, $44, $89, $56, $BB, $1F, $BD ; CPU:$BB40 PRG:BB40 43 02 43 01 43 02 41 02 41 10 44 89 56 BB 1F BD - .byte $EA, $BE, $47, $C0, $02, $0F, $82, $CD, $84, $18, $87, $F0, $8E, $0C, $8D, $06 ; CPU:$BB50 PRG:BB50 EA BE 47 C0 02 0F 82 CD 84 18 87 F0 8E 0C 8D 06 - .byte $8F, $0F, $03, $22, $01, $20, $02, $1D, $06, $22, $04, $20, $0C, $20, $04, $00 ; CPU:$BB60 PRG:BB60 8F 0F 03 22 01 20 02 1D 06 22 04 20 0C 20 04 00 - .byte $03, $22, $01, $20, $02, $1D, $04, $22, $02, $24, $02, $22, $06, $20, $02, $00 ; CPU:$BB70 PRG:BB70 03 22 01 20 02 1D 04 22 02 24 02 22 06 20 02 00 - .byte $02, $1D, $02, $20, $02, $1D, $02, $1B, $02, $19, $06, $1C, $06, $1B, $08, $19 ; CPU:$BB80 PRG:BB80 02 1D 02 20 02 1D 02 1B 02 19 06 1C 06 1B 08 19 - .byte $02, $00, $02, $19, $02, $1E, $02, $1C, $02, $1B, $02, $19, $03, $1D, $01, $1B ; CPU:$BB90 PRG:BB90 02 00 02 19 02 1E 02 1C 02 1B 02 19 03 1D 01 1B - .byte $02, $1D, $06, $20, $04, $20, $0C, $20, $02, $1B, $02, $1D, $03, $1E, $01, $1C ; CPU:$BBA0 PRG:BBA0 02 1D 06 20 04 20 0C 20 02 1B 02 1D 03 1E 01 1C - .byte $02, $19, $06, $16, $04, $19, $08, $20, $02, $20, $04, $1F, $0A, $1E, $02, $1C ; CPU:$BBB0 PRG:BBB0 02 19 06 16 04 19 08 20 02 20 04 1F 0A 1E 02 1C - .byte $04, $1B, $22, $19, $82, $08, $8E, $00, $02, $23, $02, $23, $02, $23, $02, $23 ; CPU:$BBC0 PRG:BBC0 04 1B 22 19 82 08 8E 00 02 23 02 23 02 23 02 23 - .byte $02, $23, $02, $23, $02, $23, $04, $22, $02, $22, $02, $22, $02, $22, $02, $22 ; CPU:$BBD0 PRG:BBD0 02 23 02 23 02 23 04 22 02 22 02 22 02 22 02 22 - .byte $02, $22, $02, $22, $06, $25, $02, $00, $02, $20, $03, $22, $01, $20, $02, $22 ; CPU:$BBE0 PRG:BBE0 02 22 02 22 06 25 02 00 02 20 03 22 01 20 02 22 - .byte $02, $20, $02, $22, $04, $25, $02, $20, $02, $22, $04, $25, $02, $20, $02, $23 ; CPU:$BBF0 PRG:BBF0 02 20 02 22 04 25 02 20 02 22 04 25 02 20 02 23 - .byte $02, $23, $02, $23, $02, $23, $02, $23, $02, $23, $02, $23, $04, $22, $02, $22 ; CPU:$BC00 PRG:BC00 02 23 02 23 02 23 02 23 02 23 02 23 04 22 02 22 - .byte $02, $22, $02, $22, $02, $22, $02, $22, $02, $22, $06, $25, $02, $00, $02, $20 ; CPU:$BC10 PRG:BC10 02 22 02 22 02 22 02 22 02 22 06 25 02 00 02 20 - .byte $03, $22, $01, $20, $02, $22, $02, $20, $02, $22, $04, $25, $02, $20, $02, $22 ; CPU:$BC20 PRG:BC20 03 22 01 20 02 22 02 20 02 22 04 25 02 20 02 22 - .byte $04, $25, $02, $20, $8A, $82, $CD, $8B, $E7, $00, $8C, $0C, $00, $8E, $11, $82 ; CPU:$BC30 PRG:BC30 04 25 02 20 8A 82 CD 8B E7 00 8C 0C 00 8E 11 82 - .byte $CD, $06, $14, $02, $14, $03, $16, $01, $14, $02, $16, $02, $14, $03, $10, $01 ; CPU:$BC40 PRG:BC40 CD 06 14 02 14 03 16 01 14 02 16 02 14 03 10 01 - .byte $11, $02, $16, $04, $19, $02, $1C, $02, $1B, $02, $19, $03, $1D, $01, $1C, $02 ; CPU:$BC50 PRG:BC50 11 02 16 04 19 02 1C 02 1B 02 19 03 1D 01 1C 02 - .byte $1D, $06, $20, $04, $1D, $03, $1C, $01, $1B, $02, $1C, $06, $20, $04, $1C, $03 ; CPU:$BC60 PRG:BC60 1D 06 20 04 1D 03 1C 01 1B 02 1C 06 20 04 1C 03 - .byte $1D, $01, $1C, $02, $1D, $06, $20, $04, $1D, $03, $1C, $01, $1B, $02, $1C, $06 ; CPU:$BC70 PRG:BC70 1D 01 1C 02 1D 06 20 04 1D 03 1C 01 1B 02 1C 06 - .byte $20, $04, $20, $03, $1F, $01, $1E, $02, $1F, $06, $25, $04, $1F, $03, $20, $01 ; CPU:$BC80 PRG:BC80 20 04 20 03 1F 01 1E 02 1F 06 25 04 1F 03 20 01 - .byte $1F, $02, $20, $04, $23, $01, $22, $01, $23, $02, $22, $02, $20, $03, $22, $01 ; CPU:$BC90 PRG:BC90 1F 02 20 04 23 01 22 01 23 02 22 02 20 03 22 01 - .byte $21, $02, $22, $1A, $27, $8A, $8B, $56, $01, $8C, $05, $01, $8E, $0C, $08, $00 ; CPU:$BCA0 PRG:BCA0 21 02 22 1A 27 8A 8B 56 01 8C 05 01 8E 0C 08 00 - .byte $02, $20, $04, $1F, $0A, $1E, $02, $1C, $04, $1B, $22, $19, $03, $22, $01, $20 ; CPU:$BCB0 PRG:BCB0 02 20 04 1F 0A 1E 02 1C 04 1B 22 19 03 22 01 20 - .byte $02, $1D, $06, $22, $04, $20, $0C, $20, $04, $00, $03, $22, $01, $20, $02, $1D ; CPU:$BCC0 PRG:BCC0 02 1D 06 22 04 20 0C 20 04 00 03 22 01 20 02 1D - .byte $04, $22, $02, $24, $02, $22, $06, $20, $02, $00, $02, $1D, $02, $20, $02, $1D ; CPU:$BCD0 PRG:BCD0 04 22 02 24 02 22 06 20 02 00 02 1D 02 20 02 1D - .byte $02, $1B, $02, $19, $06, $1C, $06, $1B, $08, $19, $02, $00, $02, $19, $02, $1E ; CPU:$BCE0 PRG:BCE0 02 1B 02 19 06 1C 06 1B 08 19 02 00 02 19 02 1E - .byte $02, $1C, $02, $1B, $02, $19, $03, $1D, $01, $1B, $02, $1D, $06, $20, $04, $20 ; CPU:$BCF0 PRG:BCF0 02 1C 02 1B 02 19 03 1D 01 1B 02 1D 06 20 04 20 - .byte $0C, $20, $02, $1B, $02, $1D, $03, $1E, $01, $1C, $02, $19, $06, $16, $04, $19 ; CPU:$BD00 PRG:BD00 0C 20 02 1B 02 1D 03 1E 01 1C 02 19 06 16 04 19 - .byte $08, $20, $02, $20, $04, $1F, $0A, $1E, $02, $1C, $04, $1B, $22, $19, $88, $82 ; CPU:$BD10 PRG:BD10 08 20 02 20 04 1F 0A 1E 02 1C 04 1B 22 19 88 82 - .byte $B8, $84, $18, $87, $F0, $8F, $0A, $8E, $00, $04, $00, $04, $16, $04, $00, $04 ; CPU:$BD20 PRG:BD20 B8 84 18 87 F0 8F 0A 8E 00 04 00 04 16 04 00 04 - .byte $16, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04 ; CPU:$BD30 PRG:BD30 16 04 00 04 16 04 00 04 16 04 00 04 16 04 00 04 - .byte $16, $04, $00, $04, $17, $04, $00, $04, $17, $04, $00, $04, $1C, $04, $00, $04 ; CPU:$BD40 PRG:BD40 16 04 00 04 17 04 00 04 17 04 00 04 1C 04 00 04 - .byte $1C, $04, $00, $04, $1C, $04, $00, $04, $1C, $04, $00, $04, $16, $04, $00, $04 ; CPU:$BD50 PRG:BD50 1C 04 00 04 1C 04 00 04 1C 04 00 04 16 04 00 04 - .byte $16, $04, $00, $04, $18, $04, $00, $04, $18, $04, $00, $04, $1C, $04, $00, $04 ; CPU:$BD60 PRG:BD60 16 04 00 04 18 04 00 04 18 04 00 04 1C 04 00 04 - .byte $1C, $02, $00, $02, $0F, $02, $14, $02, $18, $08, $1B, $02, $00, $02, $0D, $02 ; CPU:$BD70 PRG:BD70 1C 02 00 02 0F 02 14 02 18 08 1B 02 00 02 0D 02 - .byte $12, $02, $16, $08, $19, $06, $00, $02, $0F, $02, $10, $06, $11, $10, $19, $82 ; CPU:$BD80 PRG:BD80 12 02 16 08 19 06 00 02 0F 02 10 06 11 10 19 82 - .byte $08, $02, $20, $02, $20, $02, $20, $02, $20, $02, $20, $02, $20, $02, $20, $04 ; CPU:$BD90 PRG:BD90 08 02 20 02 20 02 20 02 20 02 20 02 20 02 20 04 - .byte $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E, $06, $20, $02 ; CPU:$BDA0 PRG:BDA0 1E 02 1E 02 1E 02 1E 02 1E 02 1E 02 1E 06 20 02 - .byte $00, $02, $20, $03, $22, $01, $20, $02, $22, $02, $20, $02, $22, $04, $25, $02 ; CPU:$BDB0 PRG:BDB0 00 02 20 03 22 01 20 02 22 02 20 02 22 04 25 02 - .byte $20, $02, $22, $04, $25, $02, $20, $02, $20, $02, $20, $02, $20, $02, $20, $02 ; CPU:$BDC0 PRG:BDC0 20 02 22 04 25 02 20 02 20 02 20 02 20 02 20 02 - .byte $20, $02, $20, $02, $20, $04, $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E, $02 ; CPU:$BDD0 PRG:BDD0 20 02 20 02 20 04 1E 02 1E 02 1E 02 1E 02 1E 02 - .byte $1E, $02, $1E, $06, $20, $02, $00, $02, $20, $03, $22, $01, $20, $02, $22, $02 ; CPU:$BDE0 PRG:BDE0 1E 02 1E 06 20 02 00 02 20 03 22 01 20 02 22 02 - .byte $20, $02, $22, $04, $25, $02, $20, $02, $22, $04, $25, $02, $20, $8A, $82, $B8 ; CPU:$BDF0 PRG:BDF0 20 02 22 04 25 02 20 02 22 04 25 02 20 8A 82 B8 - .byte $8B, $E7, $00, $8C, $08, $00, $8E, $05, $82, $02, $04, $11, $04, $11, $04, $11 ; CPU:$BE00 PRG:BE00 8B E7 00 8C 08 00 8E 05 82 02 04 11 04 11 04 11 - .byte $04, $11, $04, $10, $04, $10, $04, $10, $04, $10, $82, $B8, $04, $00, $04, $17 ; CPU:$BE10 PRG:BE10 04 11 04 10 04 10 04 10 04 10 82 B8 04 00 04 17 - .byte $04, $00, $04, $17, $04, $00, $04, $12, $04, $00, $04, $12, $04, $00, $04, $17 ; CPU:$BE20 PRG:BE20 04 00 04 17 04 00 04 12 04 00 04 12 04 00 04 17 - .byte $04, $00, $04, $17, $04, $00, $04, $12, $04, $00, $04, $12, $04, $00, $04, $19 ; CPU:$BE30 PRG:BE30 04 00 04 17 04 00 04 12 04 00 04 12 04 00 04 19 - .byte $04, $00, $04, $19, $04, $00, $04, $17, $04, $00, $04, $17, $04, $00, $04, $1B ; CPU:$BE40 PRG:BE40 04 00 04 19 04 00 04 17 04 00 04 17 04 00 04 1B - .byte $04, $00, $04, $1B, $04, $00, $04, $19, $04, $00, $04, $19, $8A, $8B, $44, $01 ; CPU:$BE50 PRG:BE50 04 00 04 1B 04 00 04 19 04 00 04 19 8A 8B 44 01 - .byte $8C, $FD, $00, $8E, $00, $02, $00, $02, $0F, $02, $14, $02, $18, $08, $1B, $02 ; CPU:$BE60 PRG:BE60 8C FD 00 8E 00 02 00 02 0F 02 14 02 18 08 1B 02 - .byte $00, $02, $0D, $02, $12, $02, $16, $08, $19, $06, $00, $02, $0F, $02, $10, $06 ; CPU:$BE70 PRG:BE70 00 02 0D 02 12 02 16 08 19 06 00 02 0F 02 10 06 - .byte $11, $10, $19, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $16, $04 ; CPU:$BE80 PRG:BE80 11 10 19 04 00 04 16 04 00 04 16 04 00 04 16 04 - .byte $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $17, $04 ; CPU:$BE90 PRG:BE90 00 04 16 04 00 04 16 04 00 04 16 04 00 04 17 04 - .byte $00, $04, $17, $04, $00, $04, $1C, $04, $00, $04, $1C, $04, $00, $04, $1C, $04 ; CPU:$BEA0 PRG:BEA0 00 04 17 04 00 04 1C 04 00 04 1C 04 00 04 1C 04 - .byte $00, $04, $1C, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $18, $04 ; CPU:$BEB0 PRG:BEB0 00 04 1C 04 00 04 16 04 00 04 16 04 00 04 18 04 - .byte $00, $04, $18, $04, $00, $04, $1C, $04, $00, $04, $1C, $02, $00, $02, $0F, $02 ; CPU:$BEC0 PRG:BEC0 00 04 18 04 00 04 1C 04 00 04 1C 02 00 02 0F 02 - .byte $14, $02, $18, $08, $1B, $02, $00, $02, $0D, $02, $12, $02, $16, $08, $19, $06 ; CPU:$BED0 PRG:BED0 14 02 18 08 1B 02 00 02 0D 02 12 02 16 08 19 06 - .byte $00, $02, $0F, $02, $10, $06, $11, $10, $19, $88, $82, $43, $8F, $0A, $8E, $00 ; CPU:$BEE0 PRG:BEE0 00 02 0F 02 10 06 11 10 19 88 82 43 8F 0A 8E 00 - .byte $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20 ; CPU:$BEF0 PRG:BEF0 04 19 04 20 04 19 04 20 04 19 04 20 04 19 04 20 - .byte $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20 ; CPU:$BF00 PRG:BF00 04 19 04 20 04 19 04 20 04 19 04 20 04 19 04 20 - .byte $04, $1E, $04, $25, $04, $1E, $04, $25, $04, $1E, $04, $25, $04, $1E, $04, $25 ; CPU:$BF10 PRG:BF10 04 1E 04 25 04 1E 04 25 04 1E 04 25 04 1E 04 25 - .byte $04, $19, $04, $20, $04, $19, $04, $20, $04, $14, $04, $20, $04, $14, $04, $20 ; CPU:$BF20 PRG:BF20 04 19 04 20 04 19 04 20 04 14 04 20 04 14 04 20 - .byte $04, $1E, $04, $25, $04, $1E, $04, $25, $10, $14, $10, $12, $02, $0D, $02, $14 ; CPU:$BF30 PRG:BF30 04 1E 04 25 04 1E 04 25 10 14 10 12 02 0D 02 14 - .byte $1C, $19, $8E, $0C, $82, $0C, $02, $1D, $02, $1D, $02, $1D, $02, $1D, $02, $1D ; CPU:$BF40 PRG:BF40 1C 19 8E 0C 82 0C 02 1D 02 1D 02 1D 02 1D 02 1D - .byte $02, $1D, $02, $1D, $04, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C ; CPU:$BF50 PRG:BF50 02 1D 02 1D 04 1C 02 1C 02 1C 02 1C 02 1C 02 1C - .byte $02, $1C, $22, $1D, $02, $1D, $02, $1D, $02, $1D, $02, $1D, $02, $1D, $02, $1D ; CPU:$BF60 PRG:BF60 02 1C 22 1D 02 1D 02 1D 02 1D 02 1D 02 1D 02 1D - .byte $02, $1D, $04, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C ; CPU:$BF70 PRG:BF70 02 1D 04 1C 02 1C 02 1C 02 1C 02 1C 02 1C 02 1C - .byte $22, $1D, $8A, $8E, $00, $82, $43, $8B, $A3, $00, $8C, $04, $00, $8E, $05, $04 ; CPU:$BF80 PRG:BF80 22 1D 8A 8E 00 82 43 8B A3 00 8C 04 00 8E 05 04 - .byte $19, $04, $19, $04, $19, $04, $19, $04, $12, $04, $14, $04, $16, $04, $12, $82 ; CPU:$BF90 PRG:BF90 19 04 19 04 19 04 19 04 12 04 14 04 16 04 12 82 - .byte $43, $04, $19, $04, $20, $04, $19, $04, $20, $04, $12, $04, $1C, $04, $12, $04 ; CPU:$BFA0 PRG:BFA0 43 04 19 04 20 04 19 04 20 04 12 04 1C 04 12 04 - .byte $1C, $04, $19, $04, $20, $04, $19, $04, $20, $04, $12, $04, $1C, $04, $12, $04 ; CPU:$BFB0 PRG:BFB0 1C 04 19 04 20 04 19 04 20 04 12 04 1C 04 12 04 - .byte $1C, $04, $1F, $04, $22, $04, $1F, $04, $22, $04, $19, $04, $20, $04, $19, $04 ; CPU:$BFC0 PRG:BFC0 1C 04 1F 04 22 04 1F 04 22 04 19 04 20 04 19 04 - .byte $20, $04, $1B, $04, $22, $04, $1B, $04, $22, $04, $1B, $04, $22, $04, $1B, $04 ; CPU:$BFD0 PRG:BFD0 20 04 1B 04 22 04 1B 04 22 04 1B 04 22 04 1B 04 - .byte $22, $8A, $8B, $FE, $00, $8C, $B7, $00, $8E, $00, $10, $14, $10, $12, $02, $0D ; CPU:$BFE0 PRG:BFE0 22 8A 8B FE 00 8C B7 00 8E 00 10 14 10 12 02 0D - .byte $02, $14, $1C, $19, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20 ; CPU:$BFF0 PRG:BFF0 02 14 1C 19 04 19 04 20 04 19 04 20 04 19 04 20 + .byte $AB, $85, $E0, $A6, $DF, $A4, $E0, $20, $A9, $AA, $60 ; CPU:$A750 PRG:A750 AB 85 E0 A6 DF A4 E0 20 A9 AA 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Sub_A75B +; Global: Branch target inside Bank5_Sub: taken when A75B. +; Local: Part of Bank5_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Sub_A75B: + lda #$00 ; CPU:$A75B PRG:A75B A9 00 + sta APUSTATUS ; CPU:$A75D PRG:A75D 8D 15 40 + stx ZpD7 ; CPU:$A760 PRG:A760 86 D7 + sty ZpD8 ; CPU:$A762 PRG:A762 84 D8 + ldx #$3B ; CPU:$A764 PRG:A764 A2 3B + lda #$00 ; CPU:$A766 PRG:A766 A9 00 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_UpdateSound_OnNonnegative +; Global: Branch target inside Bank5_Bank5_UpdateSound: taken when the tested value is not negative. +; Local: Part of Bank5_Bank5_UpdateSound. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_UpdateSound_OnNonnegative: + sta $0711,x ; CPU:$A768 PRG:A768 9D 11 07 + dex ; CPU:$A76B PRG:A76B CA + bpl Bank5_Bank5_UpdateSound_OnNonnegative ; CPU:$A76C PRG:A76C 10 FA + sta ZpD6 ; CPU:$A76E PRG:A76E 85 D6 + ldy #$08 ; CPU:$A770 PRG:A770 A0 08 + lda (ZpD7),y ; CPU:$A772 PRG:A772 B1 D7 + sta $0702 ; CPU:$A774 PRG:A774 8D 02 07 + sta $0701 ; CPU:$A777 PRG:A777 8D 01 07 + iny ; CPU:$A77A PRG:A77A C8 + lda (ZpD7),y ; CPU:$A77B PRG:A77B B1 D7 + sta $0700 ; CPU:$A77D PRG:A77D 8D 00 07 + sta APUSTATUS ; CPU:$A780 PRG:A780 8D 15 40 + rts ; CPU:$A783 PRG:A783 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_ReadSoundTable +; Global: Reads the sound table of the second half. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_ReadSoundTable: + ldy #$00 ; CPU:$A784 PRG:A784 A0 00 + lda (ZpD7),y ; CPU:$A786 PRG:A786 B1 D7 + sta ZpD9 ; CPU:$A788 PRG:A788 85 D9 + iny ; CPU:$A78A PRG:A78A C8 + lda (ZpD7),y ; CPU:$A78B PRG:A78B B1 D7 + sta ZpDA ; CPU:$A78D PRG:A78D 85 DA +Sub_A78F: + lda #$01 ; CPU:$A78F PRG:A78F A9 01 + sta $0707 ; CPU:$A791 PRG:A791 8D 07 07 + lda #$00 ; CPU:$A794 PRG:A794 A9 00 + sta $0708 ; CPU:$A796 PRG:A796 8D 08 07 + jsr Bank5_Sub_A7FF ; CPU:$A799 PRG:A799 20 FF A7 + ldy #$02 ; CPU:$A79C PRG:A79C A0 02 + lda (ZpD7),y ; CPU:$A79E PRG:A79E B1 D7 + sta ZpD9 ; CPU:$A7A0 PRG:A7A0 85 D9 + iny ; CPU:$A7A2 PRG:A7A2 C8 + lda (ZpD7),y ; CPU:$A7A3 PRG:A7A3 B1 D7 + sta ZpDA ; CPU:$A7A5 PRG:A7A5 85 DA + lda #$02 ; CPU:$A7A7 PRG:A7A7 A9 02 + sta $0707 ; CPU:$A7A9 PRG:A7A9 8D 07 07 + lda #$01 ; CPU:$A7AC PRG:A7AC A9 01 + sta $0708 ; CPU:$A7AE PRG:A7AE 8D 08 07 + jsr Bank5_Sub_A7FF ; CPU:$A7B1 PRG:A7B1 20 FF A7 + ldy #$04 ; CPU:$A7B4 PRG:A7B4 A0 04 + lda (ZpD7),y ; CPU:$A7B6 PRG:A7B6 B1 D7 + sta ZpD9 ; CPU:$A7B8 PRG:A7B8 85 D9 + iny ; CPU:$A7BA PRG:A7BA C8 + lda (ZpD7),y ; CPU:$A7BB PRG:A7BB B1 D7 + sta ZpDA ; CPU:$A7BD PRG:A7BD 85 DA + lda #$04 ; CPU:$A7BF PRG:A7BF A9 04 + sta $0707 ; CPU:$A7C1 PRG:A7C1 8D 07 07 + lda #$02 ; CPU:$A7C4 PRG:A7C4 A9 02 + sta $0708 ; CPU:$A7C6 PRG:A7C6 8D 08 07 + jsr Bank5_Sub_A7FF ; CPU:$A7C9 PRG:A7C9 20 FF A7 + ldy #$06 ; CPU:$A7CC PRG:A7CC A0 06 + lda (ZpD7),y ; CPU:$A7CE PRG:A7CE B1 D7 + sta ZpD9 ; CPU:$A7D0 PRG:A7D0 85 D9 + iny ; CPU:$A7D2 PRG:A7D2 C8 + lda (ZpD7),y ; CPU:$A7D3 PRG:A7D3 B1 D7 + sta ZpDA ; CPU:$A7D5 PRG:A7D5 85 DA + lda #$08 ; CPU:$A7D7 PRG:A7D7 A9 08 + sta $0707 ; CPU:$A7D9 PRG:A7D9 8D 07 07 + lda #$03 ; CPU:$A7DC PRG:A7DC A9 03 + sta $0708 ; CPU:$A7DE PRG:A7DE 8D 08 07 + jsr Bank5_Sub_A7FF ; CPU:$A7E1 PRG:A7E1 20 FF A7 + lda $0701 ; CPU:$A7E4 PRG:A7E4 AD 01 07 + bne Bank5_Bank5_ReadSoundTable_Loop ; CPU:$A7E7 PRG:A7E7 D0 12 + dec $0711 ; CPU:$A7E9 PRG:A7E9 CE 11 07 + dec $0712 ; CPU:$A7EC PRG:A7EC CE 12 07 + dec $0713 ; CPU:$A7EF PRG:A7EF CE 13 07 + dec $0714 ; CPU:$A7F2 PRG:A7F2 CE 14 07 + lda $0702 ; CPU:$A7F5 PRG:A7F5 AD 02 07 + sta $0701 ; CPU:$A7F8 PRG:A7F8 8D 01 07 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when the loop repeats. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop: + dec $0701 ; CPU:$A7FB PRG:A7FB CE 01 07 + rts ; CPU:$A7FE PRG:A7FE 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Sub_A7FF +; Global: Branch target inside Bank5_Sub: taken when A7FF. +; Local: Part of Bank5_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Sub_A7FF: + lda ZpD6 ; CPU:$A7FF PRG:A7FF A5 D6 + and $0707 ; CPU:$A801 PRG:A801 2D 07 07 + beq Bank5_Bank5_ReadSoundTable_Loop4 ; CPU:$A804 PRG:A804 F0 22 + lda APUSTATUS ; CPU:$A806 PRG:A806 AD 15 40 + and $0707 ; CPU:$A809 PRG:A809 2D 07 07 + bne Bank5_Bank5_ReadSoundTable_Loop2 ; CPU:$A80C PRG:A80C D0 09 + lda $0707 ; CPU:$A80E PRG:A80E AD 07 07 + eor #$FF ; CPU:$A811 PRG:A811 49 FF + and ZpD6 ; CPU:$A813 PRG:A813 25 D6 + sta ZpD6 ; CPU:$A815 PRG:A815 85 D6 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop2 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop2. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop2: + lda $0700 ; CPU:$A817 PRG:A817 AD 00 07 + and $0707 ; CPU:$A81A PRG:A81A 2D 07 07 + beq Bank5_Bank5_ReadSoundTable_Loop3 ; CPU:$A81D PRG:A81D F0 08 + ldx $0708 ; CPU:$A81F PRG:A81F AE 08 07 + lda $0711,x ; CPU:$A822 PRG:A822 BD 11 07 + beq Bank5_Bank5_ReadSoundTable_Loop6 ; CPU:$A825 PRG:A825 F0 12 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop3 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop3. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop3: + rts ; CPU:$A827 PRG:A827 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop4 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop4. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop4: + lda $0700 ; CPU:$A828 PRG:A828 AD 00 07 + and $0707 ; CPU:$A82B PRG:A82B 2D 07 07 + bne Bank5_Bank5_ReadSoundTable_Loop5 ; CPU:$A82E PRG:A82E D0 01 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_OnZero +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when the tested value is zero. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_OnZero: + rts ; CPU:$A830 PRG:A830 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop5 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop5. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop5: + ldx $0708 ; CPU:$A831 PRG:A831 AE 08 07 + lda $0711,x ; CPU:$A834 PRG:A834 BD 11 07 + bne Bank5_Bank5_ReadSoundTable_Loop7 ; CPU:$A837 PRG:A837 D0 03 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop6 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop6. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop6: + jmp Bank5_Bank5_ReadSoundTable_OnZero2 ; CPU:$A839 PRG:A839 4C 13 A9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop7 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop7. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop7: + cpx #$02 ; CPU:$A83C PRG:A83C E0 02 + beq Bank5_Bank5_ReadSoundTable_OnZero ; CPU:$A83E PRG:A83E F0 F0 + ldy $071D,x ; CPU:$A840 PRG:A840 BC 1D 07 + beq Bank5_Bank5_ReadSoundTable_OnZero ; CPU:$A843 PRG:A843 F0 EB + dec $0741,x ; CPU:$A845 PRG:A845 DE 41 07 + bne Bank5_Bank5_ReadSoundTable_OnZero ; CPU:$A848 PRG:A848 D0 E6 + dey ; CPU:$A84A PRG:A84A 88 + beq Bank5_Bank5_ReadSoundTable_Loop8 ; CPU:$A84B PRG:A84B F0 0B + dey ; CPU:$A84D PRG:A84D 88 + beq Bank5_Bank5_ReadSoundTable_Loop10 ; CPU:$A84E PRG:A84E F0 2B + dey ; CPU:$A850 PRG:A850 88 + beq Bank5_Bank5_ReadSoundTable_Loop12 ; CPU:$A851 PRG:A851 F0 55 + dey ; CPU:$A853 PRG:A853 88 + beq Bank5_Bank5_ReadSoundTable_Loop13 ; CPU:$A854 PRG:A854 F0 59 + bne Bank5_Bank5_ReadSoundTable_OnZero ; CPU:$A856 PRG:A856 D0 D8 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop8 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop8. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop8: + lda $070D,x ; CPU:$A858 PRG:A858 BD 0D 07 + clc ; CPU:$A85B PRG:A85B 18 + adc $0721,x ; CPU:$A85C PRG:A85C 7D 21 07 + sta $0721,x ; CPU:$A85F PRG:A85F 9D 21 07 + lda #$0F ; CPU:$A862 PRG:A862 A9 0F + cmp $0721,x ; CPU:$A864 PRG:A864 DD 21 07 + beq Bank5_Bank5_ReadSoundTable_Loop15 ; CPU:$A867 PRG:A867 F0 66 + bcs Bank5_Bank5_ReadSoundTable_Loop9 ; CPU:$A869 PRG:A869 B0 06 + sta $0721,x ; CPU:$A86B PRG:A86B 9D 21 07 + jmp Bank5_Bank5_ReadSoundTable_Loop15 ; CPU:$A86E PRG:A86E 4C CF A8 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop9 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop9. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop9: + lda $072D,x ; CPU:$A871 PRG:A871 BD 2D 07 + and #$0F ; CPU:$A874 PRG:A874 29 0F + sta $0741,x ; CPU:$A876 PRG:A876 9D 41 07 + bne Bank5_Bank5_ReadSoundTable_Loop17 ; CPU:$A879 PRG:A879 D0 61 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop10 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop10. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop10: + lda $0721,x ; CPU:$A87B PRG:A87B BD 21 07 + sec ; CPU:$A87E PRG:A87E 38 + sbc $070D,x ; CPU:$A87F PRG:A87F FD 0D 07 + sta $0721,x ; CPU:$A882 PRG:A882 9D 21 07 + bcs Bank5_Bank5_ReadSoundTable_Loop11 ; CPU:$A885 PRG:A885 B0 0B +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_OnCarryClear +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when the addition or subtraction did not carry. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_OnCarryClear: + lda $073D,x ; CPU:$A887 PRG:A887 BD 3D 07 + and #$0F ; CPU:$A88A PRG:A88A 29 0F + sta $0721,x ; CPU:$A88C PRG:A88C 9D 21 07 + jmp Bank5_Bank5_ReadSoundTable_Loop15 ; CPU:$A88F PRG:A88F 4C CF A8 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop11 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop11. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop11: + lda $073D,x ; CPU:$A892 PRG:A892 BD 3D 07 + and #$0F ; CPU:$A895 PRG:A895 29 0F + cmp $0721,x ; CPU:$A897 PRG:A897 DD 21 07 + beq Bank5_Bank5_ReadSoundTable_Loop15 ; CPU:$A89A PRG:A89A F0 33 + bcc Bank5_Bank5_ReadSoundTable_OnCarryClear ; CPU:$A89C PRG:A89C 90 E9 + lda $0731,x ; CPU:$A89E PRG:A89E BD 31 07 + and #$0F ; CPU:$A8A1 PRG:A8A1 29 0F + sta $0741,x ; CPU:$A8A3 PRG:A8A3 9D 41 07 + bne Bank5_Bank5_ReadSoundTable_Loop17 ; CPU:$A8A6 PRG:A8A6 D0 34 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop12 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop12. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop12: + lda $0741,x ; CPU:$A8A8 PRG:A8A8 BD 41 07 + beq Bank5_Bank5_ReadSoundTable_Loop15 ; CPU:$A8AB PRG:A8AB F0 22 + bne Bank5_Bank5_ReadSoundTable_Loop17 ; CPU:$A8AD PRG:A8AD D0 2D +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop13 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop13. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop13: + lda $0721,x ; CPU:$A8AF PRG:A8AF BD 21 07 + sec ; CPU:$A8B2 PRG:A8B2 38 + sbc $070D,x ; CPU:$A8B3 PRG:A8B3 FD 0D 07 + sta $0721,x ; CPU:$A8B6 PRG:A8B6 9D 21 07 + bcc Bank5_Bank5_ReadSoundTable_Loop14 ; CPU:$A8B9 PRG:A8B9 90 0C + beq Bank5_Bank5_ReadSoundTable_Loop14 ; CPU:$A8BB PRG:A8BB F0 0A + lda $0739,x ; CPU:$A8BD PRG:A8BD BD 39 07 + and #$0F ; CPU:$A8C0 PRG:A8C0 29 0F + sta $0741,x ; CPU:$A8C2 PRG:A8C2 9D 41 07 + bne Bank5_Bank5_ReadSoundTable_Loop17 ; CPU:$A8C5 PRG:A8C5 D0 15 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop14 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop14. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop14: + ldy #$00 ; CPU:$A8C7 PRG:A8C7 A0 00 + tya ; CPU:$A8C9 PRG:A8C9 98 + sta $0721,x ; CPU:$A8CA PRG:A8CA 9D 21 07 + beq Bank5_Bank5_ReadSoundTable_Loop16 ; CPU:$A8CD PRG:A8CD F0 06 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop15 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop15. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop15: + ldy $071D,x ; CPU:$A8CF PRG:A8CF BC 1D 07 + jsr Bank5_Bank5_ReadSoundTable_OnZero4 ; CPU:$A8D2 PRG:A8D2 20 54 AA +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop16 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop16. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop16: + sta $0741,x ; CPU:$A8D5 PRG:A8D5 9D 41 07 + tya ; CPU:$A8D8 PRG:A8D8 98 + sta $071D,x ; CPU:$A8D9 PRG:A8D9 9D 1D 07 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop17 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop17. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop17: + lda $0721,x ; CPU:$A8DC PRG:A8DC BD 21 07 + pha ; CPU:$A8DF PRG:A8DF 48 + lda $0709,x ; CPU:$A8E0 PRG:A8E0 BD 09 07 + pha ; CPU:$A8E3 PRG:A8E3 48 + ldy #$05 ; CPU:$A8E4 PRG:A8E4 A0 05 + lda #$00 ; CPU:$A8E6 PRG:A8E6 A9 00 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_OnNonzero +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when the tested value is not zero. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_OnNonzero: + lsr $0709,x ; CPU:$A8E8 PRG:A8E8 5E 09 07 + bcc Bank5_Bank5_ReadSoundTable_Loop18 ; CPU:$A8EB PRG:A8EB 90 04 + clc ; CPU:$A8ED PRG:A8ED 18 + adc $0721,x ; CPU:$A8EE PRG:A8EE 7D 21 07 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop18 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop18. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop18: + asl $0721,x ; CPU:$A8F1 PRG:A8F1 1E 21 07 + dey ; CPU:$A8F4 PRG:A8F4 88 + bne Bank5_Bank5_ReadSoundTable_OnNonzero ; CPU:$A8F5 PRG:A8F5 D0 F1 + tay ; CPU:$A8F7 PRG:A8F7 A8 + pla ; CPU:$A8F8 PRG:A8F8 68 + sta $0709,x ; CPU:$A8F9 PRG:A8F9 9D 09 07 + pla ; CPU:$A8FC PRG:A8FC 68 + sta $0721,x ; CPU:$A8FD PRG:A8FD 9D 21 07 + tya ; CPU:$A900 PRG:A900 98 + lsr a ; CPU:$A901 PRG:A901 4A + lsr a ; CPU:$A902 PRG:A902 4A + lsr a ; CPU:$A903 PRG:A903 4A + lsr a ; CPU:$A904 PRG:A904 4A + ora $0729,x ; CPU:$A905 PRG:A905 1D 29 07 + pha ; CPU:$A908 PRG:A908 48 + txa ; CPU:$A909 PRG:A909 8A + clc ; CPU:$A90A PRG:A90A 18 + rol a ; CPU:$A90B PRG:A90B 2A + rol a ; CPU:$A90C PRG:A90C 2A + tay ; CPU:$A90D PRG:A90D A8 + pla ; CPU:$A90E PRG:A90E 68 + sta APUPULSE1CTRL,y ; CPU:$A90F PRG:A90F 99 00 40 + rts ; CPU:$A912 PRG:A912 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_OnZero2 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when OnZero2. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_OnZero2: + lda $0715,x ; CPU:$A913 PRG:A913 BD 15 07 + clc ; CPU:$A916 PRG:A916 18 + adc ZpD9 ; CPU:$A917 PRG:A917 65 D9 + sta ZpDB ; CPU:$A919 PRG:A919 85 DB + lda $0719,x ; CPU:$A91B PRG:A91B BD 19 07 + adc ZpDA ; CPU:$A91E PRG:A91E 65 DA + sta ZpDC ; CPU:$A920 PRG:A920 85 DC + ldy #$00 ; CPU:$A922 PRG:A922 A0 00 + lda (ZpDB),y ; CPU:$A924 PRG:A924 B1 DB + bmi Bank5_Bank5_ReadSoundTable_Loop19 ; CPU:$A926 PRG:A926 30 03 + jmp Bank5_Sub_A9E9 ; CPU:$A928 PRG:A928 4C E9 A9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop19 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop19. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop19: + cmp #$88 ; CPU:$A92B PRG:A92B C9 88 + bcs Bank5_Bank5_ReadSoundTable_Loop20 ; CPU:$A92D PRG:A92D B0 03 + jmp Bank5_Sub_A9C3 ; CPU:$A92F PRG:A92F 4C C3 A9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop20 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop20. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop20: + bne Bank5_Bank5_ReadSoundTable_Loop21 ; CPU:$A932 PRG:A932 D0 0A + lda #$00 ; CPU:$A934 PRG:A934 A9 00 + sta $0715,x ; CPU:$A936 PRG:A936 9D 15 07 + sta $0719,x ; CPU:$A939 PRG:A939 9D 19 07 + beq Bank5_Bank5_ReadSoundTable_OnZero2 ; CPU:$A93C PRG:A93C F0 D5 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop21 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop21. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop21: + cmp #$89 ; CPU:$A93E PRG:A93E C9 89 + bne Bank5_Bank5_ReadSoundTable_Loop22 ; CPU:$A940 PRG:A940 D0 12 + lda $0707 ; CPU:$A942 PRG:A942 AD 07 07 + eor #$FF ; CPU:$A945 PRG:A945 49 FF + and $0700 ; CPU:$A947 PRG:A947 2D 00 07 + sta APUSTATUS ; CPU:$A94A PRG:A94A 8D 15 40 + sta $0700 ; CPU:$A94D PRG:A94D 8D 00 07 + jsr Bank5_Sub_AA7A ; CPU:$A950 PRG:A950 20 7A AA + rts ; CPU:$A953 PRG:A953 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop22 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop22. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop22: + cmp #$8A ; CPU:$A954 PRG:A954 C9 8A + bne Bank5_Bank5_ReadSoundTable_Loop23 ; CPU:$A956 PRG:A956 D0 1E + lda $0745,x ; CPU:$A958 PRG:A958 BD 45 07 + ora $0749,x ; CPU:$A95B PRG:A95B 1D 49 07 + beq Bank5_Bank5_ReadSoundTable_Loop28 ; CPU:$A95E PRG:A95E F0 75 + lda $0745,x ; CPU:$A960 PRG:A960 BD 45 07 + sta $0715,x ; CPU:$A963 PRG:A963 9D 15 07 + lda $0749,x ; CPU:$A966 PRG:A966 BD 49 07 + sta $0719,x ; CPU:$A969 PRG:A969 9D 19 07 + lda #$00 ; CPU:$A96C PRG:A96C A9 00 + sta $0745,x ; CPU:$A96E PRG:A96E 9D 45 07 + sta $0749,x ; CPU:$A971 PRG:A971 9D 49 07 + beq Bank5_Bank5_ReadSoundTable_OnZero2 ; CPU:$A974 PRG:A974 F0 9D +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop23 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop23. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop23: + cmp #$8B ; CPU:$A976 PRG:A976 C9 8B + bne Bank5_Bank5_ReadSoundTable_Loop24 ; CPU:$A978 PRG:A978 D0 0F + iny ; CPU:$A97A PRG:A97A C8 + lda (ZpDB),y ; CPU:$A97B PRG:A97B B1 DB + sta $0745,x ; CPU:$A97D PRG:A97D 9D 45 07 + iny ; CPU:$A980 PRG:A980 C8 + lda (ZpDB),y ; CPU:$A981 PRG:A981 B1 DB + sta $0749,x ; CPU:$A983 PRG:A983 9D 49 07 + jmp Bank5_Bank5_ReadSoundTable_Loop28 ; CPU:$A986 PRG:A986 4C D5 A9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop24 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop24. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop24: + cmp #$8C ; CPU:$A989 PRG:A989 C9 8C + bne Bank5_Bank5_ReadSoundTable_Loop25 ; CPU:$A98B PRG:A98B D0 0F + iny ; CPU:$A98D PRG:A98D C8 + lda (ZpDB),y ; CPU:$A98E PRG:A98E B1 DB + sta $0715,x ; CPU:$A990 PRG:A990 9D 15 07 + iny ; CPU:$A993 PRG:A993 C8 + lda (ZpDB),y ; CPU:$A994 PRG:A994 B1 DB + sta $0719,x ; CPU:$A996 PRG:A996 9D 19 07 + jmp Bank5_Bank5_ReadSoundTable_OnZero2 ; CPU:$A999 PRG:A999 4C 13 A9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop25 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop25. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop25: + cmp #$8D ; CPU:$A99C PRG:A99C C9 8D + bne Bank5_Bank5_ReadSoundTable_Loop26 ; CPU:$A99E PRG:A99E D0 09 + iny ; CPU:$A9A0 PRG:A9A0 C8 + lda (ZpDB),y ; CPU:$A9A1 PRG:A9A1 B1 DB + sta $0702 ; CPU:$A9A3 PRG:A9A3 8D 02 07 + jmp Bank5_Bank5_ReadSoundTable_Loop28 ; CPU:$A9A6 PRG:A9A6 4C D5 A9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop26 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop26. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop26: + cmp #$8E ; CPU:$A9A9 PRG:A9A9 C9 8E + bne Bank5_Bank5_ReadSoundTable_Loop27 ; CPU:$A9AB PRG:A9AB D0 09 + iny ; CPU:$A9AD PRG:A9AD C8 + lda (ZpDB),y ; CPU:$A9AE PRG:A9AE B1 DB + sta $0703,x ; CPU:$A9B0 PRG:A9B0 9D 03 07 + jmp Bank5_Bank5_ReadSoundTable_Loop28 ; CPU:$A9B3 PRG:A9B3 4C D5 A9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop27 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop27. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop27: + cmp #$8F ; CPU:$A9B6 PRG:A9B6 C9 8F + bne Bank5_Bank5_ReadSoundTable_Loop28 ; CPU:$A9B8 PRG:A9B8 D0 1B + iny ; CPU:$A9BA PRG:A9BA C8 + lda (ZpDB),y ; CPU:$A9BB PRG:A9BB B1 DB + sta $0709,x ; CPU:$A9BD PRG:A9BD 9D 09 07 + jmp Bank5_Bank5_ReadSoundTable_Loop28 ; CPU:$A9C0 PRG:A9C0 4C D5 A9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Sub_A9C3 +; Global: Branch target inside Bank5_Sub: taken when A9C3. +; Local: Part of Bank5_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Sub_A9C3: + and #$3F ; CPU:$A9C3 PRG:A9C3 29 3F + clc ; CPU:$A9C5 PRG:A9C5 18 + rol a ; CPU:$A9C6 PRG:A9C6 2A + rol a ; CPU:$A9C7 PRG:A9C7 2A + adc $0708 ; CPU:$A9C8 PRG:A9C8 6D 08 07 + tax ; CPU:$A9CB PRG:A9CB AA + iny ; CPU:$A9CC PRG:A9CC C8 + lda (ZpDB),y ; CPU:$A9CD PRG:A9CD B1 DB + sta $0721,x ; CPU:$A9CF PRG:A9CF 9D 21 07 + ldx $0708 ; CPU:$A9D2 PRG:A9D2 AE 08 07 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop28 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop28. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop28: + iny ; CPU:$A9D5 PRG:A9D5 C8 + tya ; CPU:$A9D6 PRG:A9D6 98 + clc ; CPU:$A9D7 PRG:A9D7 18 + adc $0715,x ; CPU:$A9D8 PRG:A9D8 7D 15 07 + sta $0715,x ; CPU:$A9DB PRG:A9DB 9D 15 07 + lda #$00 ; CPU:$A9DE PRG:A9DE A9 00 + adc $0719,x ; CPU:$A9E0 PRG:A9E0 7D 19 07 + sta $0719,x ; CPU:$A9E3 PRG:A9E3 9D 19 07 + jmp Bank5_Bank5_ReadSoundTable_OnZero2 ; CPU:$A9E6 PRG:A9E6 4C 13 A9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Sub_A9E9 +; Global: Branch target inside Bank5_Sub: taken when A9E9. +; Local: Part of Bank5_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Sub_A9E9: + sta $0711,x ; CPU:$A9E9 PRG:A9E9 9D 11 07 + clc ; CPU:$A9EC PRG:A9EC 18 + lda #$02 ; CPU:$A9ED PRG:A9ED A9 02 + adc $0715,x ; CPU:$A9EF PRG:A9EF 7D 15 07 + sta $0715,x ; CPU:$A9F2 PRG:A9F2 9D 15 07 + lda #$00 ; CPU:$A9F5 PRG:A9F5 A9 00 + adc $0719,x ; CPU:$A9F7 PRG:A9F7 7D 19 07 + sta $0719,x ; CPU:$A9FA PRG:A9FA 9D 19 07 + lda ZpD6 ; CPU:$A9FD PRG:A9FD A5 D6 + and $0707 ; CPU:$A9FF PRG:A9FF 2D 07 07 + beq Bank5_Bank5_ReadSoundTable_Loop29 ; CPU:$AA02 PRG:AA02 F0 01 + rts ; CPU:$AA04 PRG:AA04 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop29 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop29. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop29: + iny ; CPU:$AA05 PRG:AA05 C8 + lda (ZpDB),y ; CPU:$AA06 PRG:AA06 B1 DB + pha ; CPU:$AA08 PRG:AA08 48 + txa ; CPU:$AA09 PRG:AA09 8A + clc ; CPU:$AA0A PRG:AA0A 18 + rol a ; CPU:$AA0B PRG:AA0B 2A + rol a ; CPU:$AA0C PRG:AA0C 2A + tay ; CPU:$AA0D PRG:AA0D A8 + pla ; CPU:$AA0E PRG:AA0E 68 + beq Bank5_Bank5_ReadSoundTable_Loop30 ; CPU:$AA0F PRG:AA0F F0 04 + clc ; CPU:$AA11 PRG:AA11 18 + adc $0703,x ; CPU:$AA12 PRG:AA12 7D 03 07 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop30 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop30. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop30: + asl a ; CPU:$AA15 PRG:AA15 0A + tax ; CPU:$AA16 PRG:AA16 AA + lda $A650,x ; CPU:$AA17 PRG:AA17 BD 50 A6 + sta APUPULSE1TIMERLO,y ; CPU:$AA1A PRG:AA1A 99 02 40 + inx ; CPU:$AA1D PRG:AA1D E8 + lda $A650,x ; CPU:$AA1E PRG:AA1E BD 50 A6 + ora #$08 ; CPU:$AA21 PRG:AA21 09 08 + sta APUPULSE1TIMERHI,y ; CPU:$AA23 PRG:AA23 99 03 40 + ldx $0708 ; CPU:$AA26 PRG:AA26 AE 08 07 + cpx #$02 ; CPU:$AA29 PRG:AA29 E0 02 + beq Bank5_Bank5_ReadSoundTable_Loop31 ; CPU:$AA2B PRG:AA2B F0 20 + lda $073D,x ; CPU:$AA2D PRG:AA2D BD 3D 07 + lsr a ; CPU:$AA30 PRG:AA30 4A + lsr a ; CPU:$AA31 PRG:AA31 4A + lsr a ; CPU:$AA32 PRG:AA32 4A + lsr a ; CPU:$AA33 PRG:AA33 4A + sta $0721,x ; CPU:$AA34 PRG:AA34 9D 21 07 + jsr Bank5_Bank5_ReadSoundTable_Loop17 ; CPU:$AA37 PRG:AA37 20 DC A8 + lda $0725,x ; CPU:$AA3A PRG:AA3A BD 25 07 + sta APUPULSE1SWEEP,y ; CPU:$AA3D PRG:AA3D 99 01 40 + ldy #$00 ; CPU:$AA40 PRG:AA40 A0 00 + jsr Bank5_Bank5_ReadSoundTable_OnZero4 ; CPU:$AA42 PRG:AA42 20 54 AA + sta $0741,x ; CPU:$AA45 PRG:AA45 9D 41 07 + tya ; CPU:$AA48 PRG:AA48 98 + sta $071D,x ; CPU:$AA49 PRG:AA49 9D 1D 07 + rts ; CPU:$AA4C PRG:AA4C 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop31 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop31. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop31: + lda $0729,x ; CPU:$AA4D PRG:AA4D BD 29 07 + sta APUPULSE1CTRL,y ; CPU:$AA50 PRG:AA50 99 00 40 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_OnZero3 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when OnZero3. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_OnZero3: + rts ; CPU:$AA53 PRG:AA53 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_OnZero4 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when OnZero4. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_OnZero4: + iny ; CPU:$AA54 PRG:AA54 C8 + cpy #$05 ; CPU:$AA55 PRG:AA55 C0 05 + beq Bank5_Bank5_ReadSoundTable_Loop32 ; CPU:$AA57 PRG:AA57 F0 0D + tya ; CPU:$AA59 PRG:AA59 98 + clc ; CPU:$AA5A PRG:AA5A 18 + rol a ; CPU:$AA5B PRG:AA5B 2A + rol a ; CPU:$AA5C PRG:AA5C 2A + adc $0708 ; CPU:$AA5D PRG:AA5D 6D 08 07 + tax ; CPU:$AA60 PRG:AA60 AA + lda $0729,x ; CPU:$AA61 PRG:AA61 BD 29 07 + beq Bank5_Bank5_ReadSoundTable_OnZero4 ; CPU:$AA64 PRG:AA64 F0 EE +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop32 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop32. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop32: + ldx $0708 ; CPU:$AA66 PRG:AA66 AE 08 07 + pha ; CPU:$AA69 PRG:AA69 48 + lsr a ; CPU:$AA6A PRG:AA6A 4A + lsr a ; CPU:$AA6B PRG:AA6B 4A + lsr a ; CPU:$AA6C PRG:AA6C 4A + lsr a ; CPU:$AA6D PRG:AA6D 4A + sta $070D,x ; CPU:$AA6E PRG:AA6E 9D 0D 07 + pla ; CPU:$AA71 PRG:AA71 68 + and #$0F ; CPU:$AA72 PRG:AA72 29 0F + rts ; CPU:$AA74 PRG:AA74 60 +; ---- data $AA75-$AA79 (5 bytes) ---- + .byte $AD, $00, $07, $D0, $D9 ; CPU:$AA75 PRG:AA75 AD 00 07 D0 D9 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Sub_AA7A +; Global: Branch target inside Bank5_Sub: taken when AA7A. +; Local: Part of Bank5_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Sub_AA7A: + lda $07A1 ; CPU:$AA7A PRG:AA7A AD A1 07 + beq Bank5_Bank5_ReadSoundTable_OnZero3 ; CPU:$AA7D PRG:AA7D F0 D4 + ldx #$01 ; CPU:$AA7F PRG:AA7F A2 01 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_OnNonzero2 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when OnNonzero2. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_OnNonzero2: + lda $074D,x ; CPU:$AA81 PRG:AA81 BD 4D 07 + sta $0700,x ; CPU:$AA84 PRG:AA84 9D 00 07 + inx ; CPU:$AA87 PRG:AA87 E8 + cpx #$4E ; CPU:$AA88 PRG:AA88 E0 4E + bne Bank5_Bank5_ReadSoundTable_OnNonzero2 ; CPU:$AA8A PRG:AA8A D0 F5 + ldy #$00 ; CPU:$AA8C PRG:AA8C A0 00 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_OnNonzero3 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when OnNonzero3. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_OnNonzero3: + lda $074D,x ; CPU:$AA8E PRG:AA8E BD 4D 07 + sta a:$00D7,y ; CPU:$AA91 PRG:AA91 99 D7 00 + iny ; CPU:$AA94 PRG:AA94 C8 + inx ; CPU:$AA95 PRG:AA95 E8 + cpx #$54 ; CPU:$AA96 PRG:AA96 E0 54 + bne Bank5_Bank5_ReadSoundTable_OnNonzero3 ; CPU:$AA98 PRG:AA98 D0 F4 + lda $074D ; CPU:$AA9A PRG:AA9A AD 4D 07 + sta $0700 ; CPU:$AA9D PRG:AA9D 8D 00 07 + sta APUSTATUS ; CPU:$AAA0 PRG:AAA0 8D 15 40 + lda #$00 ; CPU:$AAA3 PRG:AAA3 A9 00 + sta $07A1 ; CPU:$AAA5 PRG:AAA5 8D A1 07 + rts ; CPU:$AAA8 PRG:AAA8 60 +; ---- data $AAA9-$AAF0 (72 bytes) ---- +; referenced by `lda $AAEC,x` at $AB16 (operand $AAEC falls inside this region) + .byte $8E, $A2, $07, $8C, $A3, $07, $AD, $A1, $07, $F0, $01, $60, $AD, $00, $07, $8D ; CPU:$AAA9 PRG:AAA9 8E A2 07 8C A3 07 AD A1 07 F0 01 60 AD 00 07 8D + .byte $4D, $07, $A9, $00, $8D, $00, $07, $8D, $15, $40, $A2, $01, $BD, $00, $07, $9D ; CPU:$AAB9 PRG:AAB9 4D 07 A9 00 8D 00 07 8D 15 40 A2 01 BD 00 07 9D + .byte $4D, $07, $E8, $E0, $4E, $D0, $F5, $A0, $00, $B9, $D7, $00, $9D, $4D, $07, $C8 ; CPU:$AAC9 PRG:AAC9 4D 07 E8 E0 4E D0 F5 A0 00 B9 D7 00 9D 4D 07 C8 + .byte $E8, $E0, $54, $D0, $F4, $A9, $FF, $8D, $A1, $07, $AE, $A2, $07, $AC, $A3, $07 ; CPU:$AAD9 PRG:AAD9 E8 E0 54 D0 F4 A9 FF 8D A1 07 AE A2 07 AC A3 07 + .byte $4C, $5B, $A7, $01, $02, $04, $08, $10 ; CPU:$AAE9 PRG:AAE9 4C 5B A7 01 02 04 08 10 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Sub_AAF1 +; Global: Branch target inside Bank5_Sub: taken when AAF1. +; Local: Part of Bank5_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Sub_AAF1: + pha ; CPU:$AAF1 PRG:AAF1 48 + txa ; CPU:$AAF2 PRG:AAF2 8A + pha ; CPU:$AAF3 PRG:AAF3 48 + tya ; CPU:$AAF4 PRG:AAF4 98 + pha ; CPU:$AAF5 PRG:AAF5 48 + lda ZpE3 ; CPU:$AAF6 PRG:AAF6 A5 E3 + beq Bank5_Bank5_ReadSoundTable_Loop34 ; CPU:$AAF8 PRG:AAF8 F0 4C + lda #$0F ; CPU:$AAFA PRG:AAFA A9 0F + sta APUSTATUS ; CPU:$AAFC PRG:AAFC 8D 15 40 + lda #$00 ; CPU:$AAFF PRG:AAFF A9 00 + sta ZpD6 ; CPU:$AB01 PRG:AB01 85 D6 + lda ZpE2 ; CPU:$AB03 PRG:AB03 A5 E2 + asl a ; CPU:$AB05 PRG:AB05 0A + tax ; CPU:$AB06 PRG:AB06 AA + lda $AB6D,x ; CPU:$AB07 PRG:AB07 BD 6D AB + sta ZpDF ; CPU:$AB0A PRG:AB0A 85 DF + lda $AB6E,x ; CPU:$AB0C PRG:AB0C BD 6E AB + sta ZpE0 ; CPU:$AB0F PRG:AB0F 85 E0 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Sub_AB11 +; Global: Branch target inside Bank5_Sub: taken when AB11. +; Local: Part of Bank5_Sub. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Sub_AB11: + ldy #$00 ; CPU:$AB11 PRG:AB11 A0 00 + lda (ZpDF),y ; CPU:$AB13 PRG:AB13 B1 DF + tax ; CPU:$AB15 PRG:AB15 AA + lda $AAEC,x ; CPU:$AB16 PRG:AB16 BD EC AA + ora ZpD6 ; CPU:$AB19 PRG:AB19 05 D6 + sta ZpD6 ; CPU:$AB1B PRG:AB1B 85 D6 + lda #$0F ; CPU:$AB1D PRG:AB1D A9 0F + sta APUSTATUS ; CPU:$AB1F PRG:AB1F 8D 15 40 + txa ; CPU:$AB22 PRG:AB22 8A + asl a ; CPU:$AB23 PRG:AB23 0A + asl a ; CPU:$AB24 PRG:AB24 0A + tax ; CPU:$AB25 PRG:AB25 AA + iny ; CPU:$AB26 PRG:AB26 C8 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_OnNonzero4 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when OnNonzero4. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_OnNonzero4: + lda (ZpDF),y ; CPU:$AB27 PRG:AB27 B1 DF + sta APUPULSE1CTRL,x ; CPU:$AB29 PRG:AB29 9D 00 40 + inx ; CPU:$AB2C PRG:AB2C E8 + iny ; CPU:$AB2D PRG:AB2D C8 + cpy #$05 ; CPU:$AB2E PRG:AB2E C0 05 + bne Bank5_Bank5_ReadSoundTable_OnNonzero4 ; CPU:$AB30 PRG:AB30 D0 F5 + lda (ZpDF),y ; CPU:$AB32 PRG:AB32 B1 DF + cmp #$FF ; CPU:$AB34 PRG:AB34 C9 FF + beq Bank5_Bank5_ReadSoundTable_Loop34 ; CPU:$AB36 PRG:AB36 F0 0E + clc ; CPU:$AB38 PRG:AB38 18 + lda ZpDF ; CPU:$AB39 PRG:AB39 A5 DF + adc #$05 ; CPU:$AB3B PRG:AB3B 69 05 + sta ZpDF ; CPU:$AB3D PRG:AB3D 85 DF + bcc Bank5_Bank5_ReadSoundTable_Loop33 ; CPU:$AB3F PRG:AB3F 90 02 + inc ZpE0 ; CPU:$AB41 PRG:AB41 E6 E0 +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop33 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop33. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop33: + jmp Bank5_Sub_AB11 ; CPU:$AB43 PRG:AB43 4C 11 AB +; ----------------------------------------------------------------------------- +; Routine: Bank5_Bank5_ReadSoundTable_Loop34 +; Global: Branch target inside Bank5_Bank5_ReadSoundTable: taken when Loop34. +; Local: Part of Bank5_Bank5_ReadSoundTable. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_Bank5_ReadSoundTable_Loop34: + lda #$00 ; CPU:$AB46 PRG:AB46 A9 00 + sta ZpE3 ; CPU:$AB48 PRG:AB48 85 E3 + pla ; CPU:$AB4A PRG:AB4A 68 + tay ; CPU:$AB4B PRG:AB4B A8 + pla ; CPU:$AB4C PRG:AB4C 68 + tax ; CPU:$AB4D PRG:AB4D AA + pla ; CPU:$AB4E PRG:AB4E 68 + rts ; CPU:$AB4F PRG:AB4F 60 +; ----------------------------------------------------------------------------- +; Routine: Bank5_SetSoundMode +; Global: Turns the sound channels on in the second half. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. +; ----------------------------------------------------------------------------- +Bank5_SetSoundMode: + lda #$04 ; CPU:$AB50 PRG:AB50 A9 04 + sta ZpE2 ; CPU:$AB52 PRG:AB52 85 E2 + lda #$01 ; CPU:$AB54 PRG:AB54 A9 01 + sta ZpE3 ; CPU:$AB56 PRG:AB56 85 E3 + jmp Bank5_Sub_AAF1 ; CPU:$AB58 PRG:AB58 4C F1 AA +; ---- data $AB5B-$BFFF (5285 bytes) ---- +; referenced by `lda $AB5B,x` at $A72E (operand $AB5B falls inside this region) +; referenced by `lda $AB5C,x` at $A733 (operand $AB5C falls inside this region) +; referenced by `lda $AB6D,x` at $AB07 (operand $AB6D falls inside this region) +; referenced by `lda $AB6E,x` at $AB0C (operand $AB6E falls inside this region) + .byte $65, $B0, $32, $B3, $4C, $BB, $9D, $AB, $AC, $B7, $E5, $AE, $52, $B9, $A6, $BA ; CPU:$AB5B PRG:AB5B 65 B0 32 B3 4C BB 9D AB AC B7 E5 AE 52 B9 A6 BA + .byte $56, $C0, $79, $AB, $7F, $AB, $85, $AB, $8B, $AB, $91, $AB, $97, $AB, $01, $44 ; CPU:$AB6B PRG:AB6B 56 C0 79 AB 7F AB 85 AB 8B AB 91 AB 97 AB 01 44 + .byte $9C, $C8, $C0, $FF, $01, $09, $AB, $3B, $C1, $FF, $01, $40, $80, $4A, $28, $FF ; CPU:$AB7B PRG:AB7B 9C C8 C0 FF 01 09 AB 3B C1 FF 01 40 80 4A 28 FF + .byte $01, $40, $80, $63, $28, $FF, $01, $5F, $A4, $3D, $C0, $FF, $01, $5E, $DB, $8C ; CPU:$AB8B PRG:AB8B 01 40 80 63 28 FF 01 5F A4 3D C0 FF 01 5E DB 8C + .byte $43, $FF, $A7, $AB, $99, $AC, $65, $AD, $09, $AE, $02, $0F, $82, $04, $84, $18 ; CPU:$AB9B PRG:AB9B 43 FF A7 AB 99 AC 65 AD 09 AE 02 0F 82 04 84 18 + .byte $87, $F0, $8F, $0B, $8D, $06, $8E, $02, $18, $00, $02, $00, $02, $1D, $02, $1E ; CPU:$ABAB PRG:ABAB 87 F0 8F 0B 8D 06 8E 02 18 00 02 00 02 1D 02 1E + .byte $02, $1F, $02, $20, $04, $29, $02, $20, $04, $29, $02, $20, $06, $22, $08, $2A ; CPU:$ABBB PRG:ABBB 02 1F 02 20 04 29 02 20 04 29 02 20 06 22 08 2A + .byte $02, $22, $02, $21, $02, $20, $04, $29, $02, $20, $04, $29, $02, $20, $06, $22 ; CPU:$ABCB PRG:ABCB 02 22 02 21 02 20 04 29 02 20 04 29 02 20 06 22 + .byte $08, $2A, $02, $22, $02, $21, $02, $20, $04, $29, $02, $20, $04, $29, $04, $20 ; CPU:$ABDB PRG:ABDB 08 2A 02 22 02 21 02 20 04 29 02 20 04 29 04 20 + .byte $02, $1E, $04, $27, $02, $1E, $02, $1E, $04, $27, $12, $25, $82, $5A, $8F, $0C ; CPU:$ABEB PRG:ABEB 02 1E 04 27 02 1E 02 1E 04 27 12 25 82 5A 8F 0C + .byte $0C, $00, $02, $20, $02, $21, $03, $22, $01, $24, $02, $25, $06, $25, $02, $24 ; CPU:$ABFB PRG:ABFB 0C 00 02 20 02 21 03 22 01 24 02 25 06 25 02 24 + .byte $02, $25, $04, $27, $08, $25, $02, $24, $02, $25, $03, $29, $01, $28, $02, $29 ; CPU:$AC0B PRG:AC0B 02 25 04 27 08 25 02 24 02 25 03 29 01 28 02 29 + .byte $04, $2C, $02, $29, $02, $25, $02, $20, $06, $23, $06, $22, $04, $20, $03, $1E ; CPU:$AC1B PRG:AC1B 04 2C 02 29 02 25 02 20 06 23 06 22 04 20 03 1E + .byte $01, $1D, $02, $1E, $02, $20, $02, $22, $04, $2A, $01, $24, $01, $25, $03, $29 ; CPU:$AC2B PRG:AC2B 01 1D 02 1E 02 20 02 22 04 2A 01 24 01 25 03 29 + .byte $01, $28, $02, $29, $06, $2E, $81, $95, $03, $29, $01, $00, $81, $00, $10, $27 ; CPU:$AC3B PRG:AC3B 01 28 02 29 06 2E 81 95 03 29 01 00 81 00 10 27 + .byte $82, $08, $8F, $0F, $08, $00, $02, $00, $02, $1D, $02, $1E, $02, $1F, $02, $20 ; CPU:$AC4B PRG:AC4B 82 08 8F 0F 08 00 02 00 02 1D 02 1E 02 1F 02 20 + .byte $04, $29, $02, $20, $04, $29, $02, $20, $06, $22, $08, $2A, $02, $22, $02, $21 ; CPU:$AC5B PRG:AC5B 04 29 02 20 04 29 02 20 06 22 08 2A 02 22 02 21 + .byte $02, $20, $04, $29, $02, $20, $04, $29, $02, $20, $06, $22, $08, $2A, $02, $22 ; CPU:$AC6B PRG:AC6B 02 20 04 29 02 20 04 29 02 20 06 22 08 2A 02 22 + .byte $02, $21, $02, $20, $04, $29, $02, $20, $04, $29, $04, $20, $03, $1E, $01, $1D ; CPU:$AC7B PRG:AC7B 02 21 02 20 04 29 02 20 04 29 04 20 03 1E 01 1D + .byte $02, $1E, $06, $27, $14, $25, $8A, $8B, $50, $00, $8C, $50, $00, $89, $82, $04 ; CPU:$AC8B PRG:AC8B 02 1E 06 27 14 25 8A 8B 50 00 8C 50 00 89 82 04 + .byte $84, $18, $87, $F0, $8F, $04, $8E, $02, $40, $00, $04, $1D, $04, $00, $04, $19 ; CPU:$AC9B PRG:AC9B 84 18 87 F0 8F 04 8E 02 40 00 04 1D 04 00 04 19 + .byte $04, $14, $04, $12, $04, $1B, $08, $00, $04, $1D, $04, $00, $04, $19, $04, $14 ; CPU:$ACAB PRG:ACAB 04 14 04 12 04 1B 08 00 04 1D 04 00 04 19 04 14 + .byte $04, $12, $04, $1B, $04, $00, $04, $12, $04, $11, $04, $19, $08, $00, $82, $5A ; CPU:$ACBB PRG:ACBB 04 12 04 1B 04 00 04 12 04 11 04 19 08 00 82 5A + .byte $8F, $0A, $0C, $00, $04, $19, $03, $1E, $01, $20, $02, $22, $06, $1E, $02, $1D ; CPU:$ACCB PRG:ACCB 8F 0A 0C 00 04 19 03 1E 01 20 02 22 06 1E 02 1D + .byte $02, $1E, $04, $1F, $08, $22, $02, $1B, $02, $19, $03, $20, $01, $1F, $02, $20 ; CPU:$ACDB PRG:ACDB 02 1E 04 1F 08 22 02 1B 02 19 03 20 01 1F 02 20 + .byte $04, $25, $02, $25, $02, $20, $02, $1D, $04, $20, $02, $1B, $06, $1A, $04, $1D ; CPU:$ACEB PRG:ACEB 04 25 02 25 02 20 02 1D 04 20 02 1B 06 1A 04 1D + .byte $03, $1B, $01, $1D, $02, $1B, $02, $1D, $02, $1E, $04, $22, $01, $21, $01, $22 ; CPU:$ACFB PRG:ACFB 03 1B 01 1D 02 1B 02 1D 02 1E 04 22 01 21 01 22 + .byte $08, $25, $04, $1D, $04, $20, $06, $22, $06, $23, $04, $24, $82, $04, $8F, $0D ; CPU:$AD0B PRG:AD0B 08 25 04 1D 04 20 06 22 06 23 04 24 82 04 8F 0D + .byte $08, $00, $02, $00, $02, $1D, $02, $1E, $02, $1F, $02, $1D, $04, $20, $02, $1D ; CPU:$AD1B PRG:AD1B 08 00 02 00 02 1D 02 1E 02 1F 02 1D 04 20 02 1D + .byte $04, $20, $02, $1D, $06, $1E, $08, $22, $02, $22, $02, $21, $02, $1D, $04, $20 ; CPU:$AD2B PRG:AD2B 04 20 02 1D 06 1E 08 22 02 22 02 21 02 1D 04 20 + .byte $02, $1D, $04, $20, $02, $1D, $06, $1E, $08, $22, $02, $22, $02, $21, $02, $1D ; CPU:$AD3B PRG:AD3B 02 1D 04 20 02 1D 06 1E 08 22 02 22 02 21 02 1D + .byte $04, $20, $02, $1D, $04, $20, $04, $1D, $03, $16, $01, $15, $02, $16, $06, $1E ; CPU:$AD4B PRG:AD4B 04 20 02 1D 04 20 04 1D 03 16 01 15 02 16 06 1E + .byte $14, $1D, $8A, $8B, $30, $00, $8C, $30, $00, $89, $82, $1E, $8F, $08, $8E, $02 ; CPU:$AD5B PRG:AD5B 14 1D 8A 8B 30 00 8C 30 00 89 82 1E 8F 08 8E 02 + .byte $40, $00, $20, $00, $0C, $19, $04, $19, $0C, $14, $04, $14, $10, $19, $0C, $00 ; CPU:$AD6B PRG:AD6B 40 00 20 00 0C 19 04 19 0C 14 04 14 10 19 0C 00 + .byte $04, $19, $8F, $0A, $06, $1E, $02, $1E, $06, $1E, $02, $1E, $06, $1F, $02, $1F ; CPU:$AD7B PRG:AD7B 04 19 8F 0A 06 1E 02 1E 06 1E 02 1E 06 1F 02 1F + .byte $06, $1F, $02, $1F, $06, $20, $02, $20, $06, $20, $02, $20, $06, $20, $06, $22 ; CPU:$AD8B PRG:AD8B 06 1F 02 1F 06 20 02 20 06 20 02 20 06 20 06 22 + .byte $04, $1D, $06, $1B, $02, $1B, $06, $1B, $02, $1B, $06, $14, $02, $14, $04, $14 ; CPU:$AD9B PRG:AD9B 04 1D 06 1B 02 1B 06 1B 02 1B 06 14 02 14 04 14 + .byte $04, $14, $06, $20, $06, $20, $04, $20, $8F, $0E, $0C, $00, $04, $20, $04, $19 ; CPU:$ADAB PRG:ADAB 04 14 06 20 06 20 04 20 8F 0E 0C 00 04 20 04 19 + .byte $02, $11, $02, $14, $04, $19, $04, $1D, $04, $1E, $02, $16, $02, $19, $04, $1E ; CPU:$ADBB PRG:ADBB 02 11 02 14 04 19 04 1D 04 1E 02 16 02 19 04 1E + .byte $04, $1E, $04, $19, $02, $11, $02, $14, $04, $19, $04, $1D, $04, $1E, $02, $16 ; CPU:$ADCB PRG:ADCB 04 1E 04 19 02 11 02 14 04 19 04 1D 04 1E 02 16 + .byte $02, $19, $04, $1E, $04, $1E, $04, $19, $02, $11, $02, $14, $04, $19, $04, $19 ; CPU:$ADDB PRG:ADDB 02 19 04 1E 04 1E 04 19 02 11 02 14 04 19 04 19 + .byte $04, $12, $04, $12, $04, $14, $04, $14, $04, $19, $02, $11, $02, $14, $04, $19 ; CPU:$ADEB PRG:ADEB 04 12 04 12 04 14 04 14 04 19 02 11 02 14 04 19 + .byte $04, $14, $0C, $19, $04, $19, $8A, $8B, $18, $00, $8C, $18, $00, $89, $8F, $06 ; CPU:$ADFB PRG:ADFB 04 14 0C 19 04 19 8A 8B 18 00 8C 18 00 89 8F 06 + .byte $8E, $03, $04, $44, $04, $44, $04, $44, $04, $44, $02, $3F, $02, $44, $02, $3F ; CPU:$AE0B PRG:AE0B 8E 03 04 44 04 44 04 44 04 44 02 3F 02 44 02 3F + .byte $02, $44, $02, $3F, $02, $44, $02, $3F, $02, $44, $8F, $0B, $02, $3F, $01, $44 ; CPU:$AE1B PRG:AE1B 02 44 02 3F 02 44 02 3F 02 44 8F 0B 02 3F 01 44 + .byte $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F ; CPU:$AE2B PRG:AE2B 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 3F + .byte $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44 ; CPU:$AE3B PRG:AE3B 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 + .byte $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44 ; CPU:$AE4B PRG:AE4B 02 3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 + .byte $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F ; CPU:$AE5B PRG:AE5B 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 3F + .byte $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44 ; CPU:$AE6B PRG:AE6B 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 + .byte $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44 ; CPU:$AE7B PRG:AE7B 02 3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 + .byte $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F ; CPU:$AE8B PRG:AE8B 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 3F + .byte $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44 ; CPU:$AE9B PRG:AE9B 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 + .byte $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $8F, $0C, $02, $40 ; CPU:$AEAB PRG:AEAB 02 3F 01 44 01 44 02 3F 01 44 01 44 8F 0C 02 40 + .byte $02, $40, $02, $44, $02, $40, $02, $40, $02, $40, $02, $44, $02, $40, $02, $40 ; CPU:$AEBB PRG:AEBB 02 40 02 44 02 40 02 40 02 40 02 44 02 40 02 40 + .byte $02, $40, $02, $44, $02, $40, $02, $40, $02, $40, $01, $44, $01, $42, $01, $44 ; CPU:$AECB PRG:AECB 02 40 02 44 02 40 02 40 02 40 01 44 01 42 01 44 + .byte $01, $42, $8A, $8B, $AE, $00, $8C, $AE, $00, $89, $EF, $AE, $84, $AF, $D6, $AF ; CPU:$AEDB PRG:AEDB 01 42 8A 8B AE 00 8C AE 00 89 EF AE 84 AF D6 AF + .byte $2A, $B0, $02, $0F, $82, $BB, $84, $18, $87, $F0, $8F, $0D, $8E, $05, $8D, $02 ; CPU:$AEEB PRG:AEEB 2A B0 02 0F 82 BB 84 18 87 F0 8F 0D 8E 05 8D 02 + .byte $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C, $19, $06, $1D, $06, $1B, $06, $19 ; CPU:$AEFB PRG:AEFB 06 1D 06 1B 06 19 12 1B 0C 19 06 1D 06 1B 06 19 + .byte $12, $1B, $0C, $19, $08, $1D, $08, $1B, $08, $19, $08, $1D, $08, $20, $08, $1E ; CPU:$AF0B PRG:AF0B 12 1B 0C 19 08 1D 08 1B 08 19 08 1D 08 20 08 1E + .byte $24, $1D, $06, $1B, $06, $19, $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C, $19 ; CPU:$AF1B PRG:AF1B 24 1D 06 1B 06 19 06 1D 06 1B 06 19 12 1B 0C 19 + .byte $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C, $19, $30, $19, $12, $12, $12, $14 ; CPU:$AF2B PRG:AF2B 06 1D 06 1B 06 19 12 1B 0C 19 30 19 12 12 12 14 + .byte $0C, $12, $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C, $19, $06, $1D, $06, $1B ; CPU:$AF3B PRG:AF3B 0C 12 06 1D 06 1B 06 19 12 1B 0C 19 06 1D 06 1B + .byte $06, $19, $12, $1B, $0C, $19, $08, $1D, $08, $1B, $08, $19, $08, $1D, $08, $20 ; CPU:$AF4B PRG:AF4B 06 19 12 1B 0C 19 08 1D 08 1B 08 19 08 1D 08 20 + .byte $08, $25, $24, $23, $06, $22, $06, $20, $06, $22, $06, $20, $06, $1E, $0C, $19 ; CPU:$AF5B PRG:AF5B 08 25 24 23 06 22 06 20 06 22 06 20 06 1E 0C 19 + .byte $0C, $18, $06, $19, $06, $1E, $06, $1D, $06, $1B, $12, $19, $0C, $18, $30, $19 ; CPU:$AF6B PRG:AF6B 0C 18 06 19 06 1E 06 1D 06 1B 12 19 0C 18 30 19 + .byte $06, $12, $0C, $14, $0C, $16, $12, $18, $88, $82, $05, $84, $18, $87, $80, $8F ; CPU:$AF7B PRG:AF7B 06 12 0C 14 0C 16 12 18 88 82 05 84 18 87 80 8F + .byte $04, $8E, $05, $12, $14, $06, $14, $12, $14, $06, $14, $12, $15, $06, $15, $12 ; CPU:$AF8B PRG:AF8B 04 8E 05 12 14 06 14 12 14 06 14 12 15 06 15 12 + .byte $15, $06, $15, $12, $16, $06, $16, $12, $16, $06, $16, $12, $17, $06, $17, $12 ; CPU:$AF9B PRG:AF9B 15 06 15 12 16 06 16 12 16 06 16 12 17 06 17 12 + .byte $17, $06, $17, $12, $16, $06, $16, $12, $16, $06, $16, $12, $15, $06, $15, $12 ; CPU:$AFAB PRG:AFAB 17 06 17 12 16 06 16 12 16 06 16 12 15 06 15 12 + .byte $15, $06, $15, $30, $14, $8A, $12, $16, $12, $18, $0C, $16, $8B, $49, $00, $8C ; CPU:$AFBB PRG:AFBB 15 06 15 30 14 8A 12 16 12 18 0C 16 8B 49 00 8C + .byte $0A, $00, $06, $16, $0C, $18, $0C, $19, $12, $1B, $88, $82, $3A, $8F, $0A, $8E ; CPU:$AFCB PRG:AFCB 0A 00 06 16 0C 18 0C 19 12 1B 88 82 3A 8F 0A 8E + .byte $05, $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06 ; CPU:$AFDB PRG:AFDB 05 12 19 06 19 12 19 06 19 12 19 06 19 12 19 06 + .byte $19, $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06 ; CPU:$AFEB PRG:AFEB 19 12 19 06 19 12 19 06 19 12 19 06 19 12 19 06 + .byte $19, $12, $1E, $06, $1E, $12, $1E, $06, $1E, $12, $1E, $06, $1E, $12, $1E, $06 ; CPU:$AFFB PRG:AFFB 19 12 1E 06 1E 12 1E 06 1E 12 1E 06 1E 12 1E 06 + .byte $1E, $12, $19, $06, $19, $12, $19, $06, $19, $8A, $12, $1E, $12, $20, $0C, $1E ; CPU:$B00B PRG:B00B 1E 12 19 06 19 12 19 06 19 8A 12 1E 12 20 0C 1E + .byte $8B, $4B, $00, $8C, $06, $00, $06, $1E, $0C, $20, $0C, $1E, $12, $20, $88, $8F ; CPU:$B01B PRG:B01B 8B 4B 00 8C 06 00 06 1E 0C 20 0C 1E 12 20 88 8F + .byte $0B, $8E, $05, $06, $41, $06, $41, $06, $41, $0C, $40, $0C, $42, $06, $40, $06 ; CPU:$B02B PRG:B02B 0B 8E 05 06 41 06 41 06 41 0C 40 0C 42 06 40 06 + .byte $41, $06, $41, $06, $41, $06, $41, $06, $41, $06, $41, $06, $43, $06, $41, $08 ; CPU:$B03B PRG:B03B 41 06 41 06 41 06 41 06 41 06 41 06 43 06 41 08 + .byte $40, $08, $40, $08, $40, $08, $42, $08, $44, $08, $42, $06, $41, $06, $41, $06 ; CPU:$B04B PRG:B04B 40 08 40 08 40 08 42 08 44 08 42 06 41 06 41 06 + .byte $41, $0C, $43, $06, $42, $06, $42, $06, $41, $88, $6F, $B0, $6E, $B1, $3F, $B2 ; CPU:$B05B PRG:B05B 41 0C 43 06 42 06 42 06 41 88 6F B0 6E B1 3F B2 + .byte $F0, $B2, $02, $0F, $82, $04, $84, $0C, $87, $D0, $8F, $0C, $8E, $03, $8D, $06 ; CPU:$B06B PRG:B06B F0 B2 02 0F 82 04 84 0C 87 D0 8F 0C 8E 03 8D 06 + .byte $06, $0D, $06, $16, $04, $14, $06, $0F, $06, $16, $04, $14, $06, $0D, $06, $16 ; CPU:$B07B PRG:B07B 06 0D 06 16 04 14 06 0F 06 16 04 14 06 0D 06 16 + .byte $04, $14, $06, $0F, $06, $16, $82, $5A, $02, $1D, $02, $1E, $10, $20, $04, $00 ; CPU:$B08B PRG:B08B 04 14 06 0F 06 16 82 5A 02 1D 02 1E 10 20 04 00 + .byte $02, $1E, $02, $1D, $02, $1E, $02, $1D, $02, $1B, $02, $19, $06, $1D, $0A, $20 ; CPU:$B09B PRG:B09B 02 1E 02 1D 02 1E 02 1D 02 1B 02 19 06 1D 0A 20 + .byte $04, $00, $02, $1E, $02, $1D, $02, $1E, $02, $1D, $02, $1B, $02, $19, $02, $1B ; CPU:$B0AB PRG:B0AB 04 00 02 1E 02 1D 02 1E 02 1D 02 1B 02 19 02 1B + .byte $02, $1D, $0C, $19, $04, $00, $02, $1E, $02, $1D, $02, $1E, $02, $1D, $02, $1B ; CPU:$B0BB PRG:B0BB 02 1D 0C 19 04 00 02 1E 02 1D 02 1E 02 1D 02 1B + .byte $02, $19, $10, $00, $0C, $00, $8A, $8B, $69, $00, $8C, $22, $00, $8E, $05, $8A ; CPU:$B0CB PRG:B0CB 02 19 10 00 0C 00 8A 8B 69 00 8C 22 00 8E 05 8A + .byte $8B, $72, $00, $8C, $22, $00, $8E, $07, $8A, $8B, $7B, $00, $8C, $22, $00, $04 ; CPU:$B0DB PRG:B0DB 8B 72 00 8C 22 00 8E 07 8A 8B 7B 00 8C 22 00 04 + .byte $14, $10, $1D, $04, $00, $03, $1E, $01, $1D, $02, $1E, $04, $22, $12, $20, $04 ; CPU:$B0EB PRG:B0EB 14 10 1D 04 00 03 1E 01 1D 02 1E 04 22 12 20 04 + .byte $00, $03, $1E, $01, $1D, $03, $1E, $01, $1D, $02, $1B, $02, $19, $10, $1D, $04 ; CPU:$B0FB PRG:B0FB 00 03 1E 01 1D 03 1E 01 1D 02 1B 02 19 10 1D 04 + .byte $00, $04, $1E, $03, $1D, $01, $1E, $02, $1B, $12, $19, $04, $00, $04, $25, $03 ; CPU:$B10B PRG:B10B 00 04 1E 03 1D 01 1E 02 1B 12 19 04 00 04 25 03 + .byte $24, $01, $25, $02, $22, $12, $20, $04, $00, $04, $25, $03, $24, $01, $25, $02 ; CPU:$B11B PRG:B11B 24 01 25 02 22 12 20 04 00 04 25 03 24 01 25 02 + .byte $22, $12, $20, $04, $00, $03, $1E, $01, $1D, $02, $1E, $04, $22, $12, $20, $04 ; CPU:$B12B PRG:B12B 22 12 20 04 00 03 1E 01 1D 02 1E 04 22 12 20 04 + .byte $00, $04, $1E, $03, $1D, $01, $1E, $02, $1B, $1E, $19, $8E, $08, $8A, $8B, $E0 ; CPU:$B13B PRG:B13B 00 04 1E 03 1D 01 1E 02 1B 1E 19 8E 08 8A 8B E0 + .byte $00, $8C, $7B, $00, $04, $00, $8E, $03, $03, $29, $01, $28, $03, $29, $01, $2D ; CPU:$B14B PRG:B14B 00 8C 7B 00 04 00 8E 03 03 29 01 28 03 29 01 2D + .byte $03, $26, $01, $25, $03, $26, $01, $2B, $03, $25, $01, $24, $02, $25, $06, $2C ; CPU:$B15B PRG:B15B 03 26 01 25 03 26 01 2B 03 25 01 24 02 25 06 2C + .byte $04, $00, $88, $82, $04, $84, $02, $87, $18, $8F, $09, $8E, $03, $3C, $00, $04 ; CPU:$B16B PRG:B16B 04 00 88 82 04 84 02 87 18 8F 09 8E 03 3C 00 04 + .byte $14, $02, $00, $06, $25, $04, $22, $02, $1D, $02, $1E, $04, $20, $0C, $00, $04 ; CPU:$B17B PRG:B17B 14 02 00 06 25 04 22 02 1D 02 1E 04 20 0C 00 04 + .byte $00, $02, $1D, $02, $1B, $02, $1D, $04, $22, $02, $20, $10, $00, $04, $00, $02 ; CPU:$B18B PRG:B18B 00 02 1D 02 1B 02 1D 04 22 02 20 10 00 04 00 02 + .byte $1D, $02, $1B, $02, $1D, $04, $20, $02, $20, $10, $00, $04, $00, $02, $1E, $02 ; CPU:$B19B PRG:B19B 1D 02 1B 02 1D 04 20 02 20 10 00 04 00 02 1E 02 + .byte $1D, $02, $1E, $02, $1D, $02, $1B, $02, $19, $06, $1D, $06, $1B, $04, $00, $8A ; CPU:$B1AB PRG:B1AB 1D 02 1E 02 1D 02 1B 02 19 06 1D 06 1B 04 00 8A + .byte $8B, $53, $00, $8C, $0E, $00, $8E, $05, $8A, $8B, $5C, $00, $8C, $0E, $00, $8E ; CPU:$B1BB PRG:B1BB 8B 53 00 8C 0E 00 8E 05 8A 8B 5C 00 8C 0E 00 8E + .byte $07, $8A, $8B, $65, $00, $8C, $0E, $00, $04, $00, $04, $19, $03, $18, $01, $19 ; CPU:$B1CB PRG:B1CB 07 8A 8B 65 00 8C 0E 00 04 00 04 19 03 18 01 19 + .byte $02, $16, $12, $14, $04, $00, $04, $19, $03, $18, $01, $19, $02, $16, $12, $14 ; CPU:$B1DB PRG:B1DB 02 16 12 14 04 00 04 19 03 18 01 19 02 16 12 14 + .byte $04, $00, $03, $11, $01, $0F, $02, $11, $04, $16, $12, $14, $04, $00, $04, $19 ; CPU:$B1EB PRG:B1EB 04 00 03 11 01 0F 02 11 04 16 12 14 04 00 04 19 + .byte $03, $18, $01, $19, $02, $16, $12, $14, $04, $00, $03, $11, $01, $0F, $02, $11 ; CPU:$B1FB PRG:B1FB 03 18 01 19 02 16 12 14 04 00 03 11 01 0F 02 11 + .byte $04, $16, $12, $14, $04, $00, $03, $11, $01, $0F, $02, $11, $04, $16, $12, $14 ; CPU:$B20B PRG:B20B 04 16 12 14 04 00 03 11 01 0F 02 11 04 16 12 14 + .byte $04, $00, $04, $19, $03, $18, $01, $19, $02, $16, $12, $14, $04, $00, $04, $1D ; CPU:$B21B PRG:B21B 04 00 04 19 03 18 01 19 02 16 12 14 04 00 04 1D + .byte $02, $1C, $06, $1B, $0C, $19, $04, $00, $8E, $08, $8A, $8B, $CE, $00, $8C, $65 ; CPU:$B22B PRG:B22B 02 1C 06 1B 0C 19 04 00 8E 08 8A 8B CE 00 8C 65 + .byte $00, $20, $00, $88, $82, $44, $8F, $0A, $8E, $03, $40, $00, $06, $19, $06, $16 ; CPU:$B23B PRG:B23B 00 20 00 88 82 44 8F 0A 8E 03 40 00 06 19 06 16 + .byte $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16 ; CPU:$B24B PRG:B24B 04 0F 10 14 06 19 06 16 04 0F 10 14 06 19 06 16 + .byte $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F, $0C, $14, $04, $00, $8A, $8B ; CPU:$B25B PRG:B25B 04 0F 10 14 06 19 06 16 04 0F 0C 14 04 00 8A 8B + .byte $31, $00, $8C, $08, $00, $8E, $05, $8A, $8B, $3A, $00, $8C, $08, $00, $8E, $07 ; CPU:$B26B PRG:B26B 31 00 8C 08 00 8E 05 8A 8B 3A 00 8C 08 00 8E 07 + .byte $8A, $8B, $43, $00, $8C, $08, $00, $06, $19, $06, $16, $04, $0F, $10, $14, $06 ; CPU:$B27B PRG:B27B 8A 8B 43 00 8C 08 00 06 19 06 16 04 0F 10 14 06 + .byte $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $06 ; CPU:$B28B PRG:B28B 19 06 16 04 0F 10 14 06 19 06 16 04 0F 10 14 06 + .byte $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $06 ; CPU:$B29B PRG:B29B 19 06 16 04 0F 10 14 06 19 06 16 04 0F 10 14 06 + .byte $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $04 ; CPU:$B2AB PRG:B2AB 19 06 16 04 0F 10 14 06 19 06 16 04 0F 10 14 04 + .byte $00, $04, $14, $02, $17, $06, $18, $10, $19, $8E, $08, $8A, $8B, $8E, $00, $8C ; CPU:$B2BB PRG:B2BB 00 04 14 02 17 06 18 10 19 8E 08 8A 8B 8E 00 8C + .byte $43, $00, $8E, $03, $02, $15, $02, $00, $02, $15, $02, $00, $02, $13, $02, $00 ; CPU:$B2CB PRG:B2CB 43 00 8E 03 02 15 02 00 02 15 02 00 02 13 02 00 + .byte $02, $13, $02, $00, $02, $14, $02, $00, $02, $14, $06, $00, $01, $14, $01, $15 ; CPU:$B2DB PRG:B2DB 02 13 02 00 02 14 02 00 02 14 06 00 01 14 01 15 + .byte $01, $16, $01, $18, $88, $8F, $0A, $8E, $06, $06, $3D, $06, $3D, $04, $3D, $06 ; CPU:$B2EB PRG:B2EB 01 16 01 18 88 8F 0A 8E 06 06 3D 06 3D 04 3D 06 + .byte $3D, $06, $3D, $04, $3D, $06, $3D, $06, $3D, $04, $3D, $06, $3D, $06, $3D, $04 ; CPU:$B2FB PRG:B2FB 3D 06 3D 04 3D 06 3D 06 3D 04 3D 06 3D 06 3D 04 + .byte $3D, $04, $3E, $02, $3F, $04, $3F, $02, $3F, $02, $3F, $02, $3F, $02, $3E, $02 ; CPU:$B30B PRG:B30B 3D 04 3E 02 3F 04 3F 02 3F 02 3F 02 3F 02 3E 02 + .byte $3E, $02, $41, $02, $3E, $02, $3F, $02, $3F, $01, $41, $01, $41, $02, $3F, $8A ; CPU:$B31B PRG:B31B 3E 02 41 02 3E 02 3F 02 3F 01 41 01 41 02 3F 8A + .byte $8B, $1C, $00, $8C, $1C, $00, $89, $3C, $B3, $20, $B5, $DE, $B6, $66, $B7, $02 ; CPU:$B32B PRG:B32B 8B 1C 00 8C 1C 00 89 3C B3 20 B5 DE B6 66 B7 02 + .byte $0F, $82, $96, $84, $18, $87, $F0, $8E, $09, $8D, $06, $8F, $0D, $08, $0D, $08 ; CPU:$B33B PRG:B33B 0F 82 96 84 18 87 F0 8E 09 8D 06 8F 0D 08 0D 08 + .byte $0A, $06, $0F, $04, $08, $02, $08, $02, $0A, $02, $0C, $04, $0D, $04, $0D, $04 ; CPU:$B34B PRG:B34B 0A 06 0F 04 08 02 08 02 0A 02 0C 04 0D 04 0D 04 + .byte $0A, $04, $0A, $04, $0F, $02, $0F, $04, $08, $02, $08, $02, $0A, $02, $0C, $82 ; CPU:$B35B PRG:B35B 0A 04 0A 04 0F 02 0F 04 08 02 08 02 0A 02 0C 82 + .byte $08, $01, $1C, $03, $1D, $04, $1D, $08, $1D, $02, $00, $02, $1B, $02, $1D, $02 ; CPU:$B36B PRG:B36B 08 01 1C 03 1D 04 1D 08 1D 02 00 02 1B 02 1D 02 + .byte $1E, $04, $1D, $04, $1B, $06, $19, $0A, $14, $02, $00, $02, $1B, $02, $1D, $02 ; CPU:$B37B PRG:B37B 1E 04 1D 04 1B 06 19 0A 14 02 00 02 1B 02 1D 02 + .byte $1E, $04, $1D, $04, $1B, $06, $1D, $0A, $20, $02, $00, $02, $1B, $02, $1D, $02 ; CPU:$B38B PRG:B38B 1E 04 1D 04 1B 06 1D 0A 20 02 00 02 1B 02 1D 02 + .byte $1E, $04, $1D, $04, $1B, $10, $19, $10, $00, $01, $1F, $03, $20, $04, $20, $08 ; CPU:$B39B PRG:B39B 1E 04 1D 04 1B 10 19 10 00 01 1F 03 20 04 20 08 + .byte $20, $02, $00, $02, $22, $02, $24, $02, $25, $04, $24, $04, $22, $02, $1F, $04 ; CPU:$B3AB PRG:B3AB 20 02 00 02 22 02 24 02 25 04 24 04 22 02 1F 04 + .byte $20, $0A, $1D, $02, $00, $02, $22, $02, $24, $02, $25, $04, $24, $04, $22, $02 ; CPU:$B3BB PRG:B3BB 20 0A 1D 02 00 02 22 02 24 02 25 04 24 04 22 02 + .byte $1F, $04, $20, $0A, $19, $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04 ; CPU:$B3CB PRG:B3CB 1F 04 20 0A 19 02 00 02 1B 02 1D 02 1E 04 1D 04 + .byte $1B, $10, $19, $10, $00, $04, $00, $03, $1D, $01, $1E, $02, $20, $06, $25, $02 ; CPU:$B3DB PRG:B3DB 1B 10 19 10 00 04 00 03 1D 01 1E 02 20 06 25 02 + .byte $00, $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $06, $20, $0A, $19, $02 ; CPU:$B3EB PRG:B3EB 00 02 1E 02 20 02 22 04 20 04 1E 06 20 0A 19 02 + .byte $00, $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $03, $1D, $01, $1E, $02 ; CPU:$B3FB PRG:B3FB 00 02 1E 02 20 02 22 04 20 04 1E 03 1D 01 1E 02 + .byte $20, $0A, $25, $02, $00, $02, $22, $02, $24, $02, $25, $02, $28, $04, $27, $12 ; CPU:$B40B PRG:B40B 20 0A 25 02 00 02 22 02 24 02 25 02 28 04 27 12 + .byte $25, $10, $00, $04, $00, $03, $1D, $01, $1E, $02, $20, $06, $25, $04, $00, $02 ; CPU:$B41B PRG:B41B 25 10 00 04 00 03 1D 01 1E 02 20 06 25 04 00 02 + .byte $1E, $02, $1D, $02, $1E, $02, $1D, $02, $1E, $02, $22, $06, $20, $0A, $1D, $02 ; CPU:$B42B PRG:B42B 1E 02 1D 02 1E 02 1D 02 1E 02 22 06 20 0A 1D 02 + .byte $00, $02, $1B, $02, $1D, $02, $1E, $02, $22, $02, $21, $02, $22, $02, $21, $06 ; CPU:$B43B PRG:B43B 00 02 1B 02 1D 02 1E 02 22 02 21 02 22 02 21 06 + .byte $20, $06, $25, $04, $19, $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04 ; CPU:$B44B PRG:B44B 20 06 25 04 19 02 00 02 1B 02 1D 02 1E 04 1D 04 + .byte $1B, $10, $19, $10, $00, $04, $00, $03, $1D, $01, $1E, $02, $20, $06, $25, $02 ; CPU:$B45B PRG:B45B 1B 10 19 10 00 04 00 03 1D 01 1E 02 20 06 25 02 + .byte $00, $02, $27, $02, $29, $02, $2A, $04, $28, $04, $27, $06, $25, $0A, $20, $02 ; CPU:$B46B PRG:B46B 00 02 27 02 29 02 2A 04 28 04 27 06 25 0A 20 02 + .byte $00, $02, $27, $02, $29, $02, $2A, $04, $28, $04, $27, $06, $25, $0A, $20, $02 ; CPU:$B47B PRG:B47B 00 02 27 02 29 02 2A 04 28 04 27 06 25 0A 20 02 + .byte $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B, $10, $19, $10, $00, $04 ; CPU:$B48B PRG:B48B 00 02 1B 02 1D 02 1E 04 1D 04 1B 10 19 10 00 04 + .byte $1D, $04, $1D, $08, $1D, $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04 ; CPU:$B49B PRG:B49B 1D 04 1D 08 1D 02 00 02 1B 02 1D 02 1E 04 1D 04 + .byte $1B, $06, $19, $0A, $14, $02, $00, $02, $1B, $02, $1D, $02, $1E, $02, $1D, $02 ; CPU:$B4AB PRG:B4AB 1B 06 19 0A 14 02 00 02 1B 02 1D 02 1E 02 1D 02 + .byte $1C, $02, $1D, $02, $1C, $02, $1D, $02, $1C, $02, $1D, $02, $1C, $02, $1D, $06 ; CPU:$B4BB PRG:B4BB 1C 02 1D 02 1C 02 1D 02 1C 02 1D 02 1C 02 1D 06 + .byte $25, $02, $00, $02, $22, $02, $24, $02, $25, $04, $29, $04, $27, $10, $25, $10 ; CPU:$B4CB PRG:B4CB 25 02 00 02 22 02 24 02 25 04 29 04 27 10 25 10 + .byte $00, $01, $1F, $03, $20, $04, $20, $08, $20, $02, $00, $02, $22, $02, $24, $02 ; CPU:$B4DB PRG:B4DB 00 01 1F 03 20 04 20 08 20 02 00 02 22 02 24 02 + .byte $25, $04, $24, $04, $22, $02, $1F, $04, $20, $0A, $1D, $02, $00, $02, $22, $02 ; CPU:$B4EB PRG:B4EB 25 04 24 04 22 02 1F 04 20 0A 1D 02 00 02 22 02 + .byte $24, $02, $25, $04, $24, $04, $22, $02, $1F, $04, $20, $0A, $19, $02, $00, $02 ; CPU:$B4FB PRG:B4FB 24 02 25 04 24 04 22 02 1F 04 20 0A 19 02 00 02 + .byte $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B, $10, $19, $10, $00, $8A, $8B, $2E ; CPU:$B50B PRG:B50B 1B 02 1D 02 1E 04 1D 04 1B 10 19 10 00 8A 8B 2E + .byte $00, $8C, $2E, $00, $89, $82, $04, $87, $18, $87, $F0, $8E, $09, $8F, $0C, $40 ; CPU:$B51B PRG:B51B 00 8C 2E 00 89 82 04 87 18 87 F0 8E 09 8F 0C 40 + .byte $00, $01, $13, $03, $14, $04, $14, $08, $14, $02, $00, $02, $12, $02, $14, $02 ; CPU:$B52B PRG:B52B 00 01 13 03 14 04 14 08 14 02 00 02 12 02 14 02 + .byte $16, $04, $14, $04, $12, $06, $14, $0A, $11, $02, $00, $02, $12, $02, $14, $02 ; CPU:$B53B PRG:B53B 16 04 14 04 12 06 14 0A 11 02 00 02 12 02 14 02 + .byte $16, $04, $14, $04, $12, $06, $14, $0A, $1D, $02, $00, $02, $12, $02, $14, $02 ; CPU:$B54B PRG:B54B 16 04 14 04 12 06 14 0A 1D 02 00 02 12 02 14 02 + .byte $16, $04, $14, $04, $12, $10, $11, $10, $00, $01, $1C, $03, $1D, $04, $1D, $08 ; CPU:$B55B PRG:B55B 16 04 14 04 12 10 11 10 00 01 1C 03 1D 04 1D 08 + .byte $1D, $02, $00, $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $02, $1C, $04 ; CPU:$B56B PRG:B56B 1D 02 00 02 1E 02 20 02 22 04 20 04 1E 02 1C 04 + .byte $1D, $0A, $19, $02, $00, $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $06 ; CPU:$B57B PRG:B57B 1D 0A 19 02 00 02 1E 02 20 02 22 04 20 04 1E 06 + .byte $1D, $0A, $22, $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12, $10 ; CPU:$B58B PRG:B58B 1D 0A 22 02 00 02 12 02 14 02 16 04 14 04 12 10 + .byte $11, $10, $00, $04, $00, $03, $19, $01, $1B, $02, $1D, $06, $22, $02, $00, $02 ; CPU:$B59B PRG:B59B 11 10 00 04 00 03 19 01 1B 02 1D 06 22 02 00 02 + .byte $16, $02, $18, $02, $19, $04, $18, $04, $16, $06, $14, $0A, $11, $02, $00, $02 ; CPU:$B5AB PRG:B5AB 16 02 18 02 19 04 18 04 16 06 14 0A 11 02 00 02 + .byte $16, $02, $18, $02, $19, $04, $18, $04, $16, $03, $14, $01, $16, $02, $18, $06 ; CPU:$B5BB PRG:B5BB 16 02 18 02 19 04 18 04 16 03 14 01 16 02 18 06 + .byte $16, $04, $19, $02, $00, $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $10 ; CPU:$B5CB PRG:B5CB 16 04 19 02 00 02 1E 02 20 02 22 04 20 04 1E 10 + .byte $1D, $10, $00, $04, $00, $03, $19, $01, $1B, $02, $1D, $06, $22, $04, $00, $02 ; CPU:$B5DB PRG:B5DB 1D 10 00 04 00 03 19 01 1B 02 1D 06 22 04 00 02 + .byte $16, $02, $15, $02, $16, $02, $15, $02, $16, $02, $19, $06, $1D, $0A, $19, $02 ; CPU:$B5EB PRG:B5EB 16 02 15 02 16 02 15 02 16 02 19 06 1D 0A 19 02 + .byte $00, $02, $12, $02, $14, $02, $16, $02, $19, $02, $18, $02, $19, $02, $18, $06 ; CPU:$B5FB PRG:B5FB 00 02 12 02 14 02 16 02 19 02 18 02 19 02 18 06 + .byte $1D, $06, $22, $04, $11, $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04 ; CPU:$B60B PRG:B60B 1D 06 22 04 11 02 00 02 12 02 14 02 16 04 14 04 + .byte $12, $10, $11, $10, $00, $04, $00, $03, $19, $01, $1B, $02, $1D, $06, $22, $02 ; CPU:$B61B PRG:B61B 12 10 11 10 00 04 00 03 19 01 1B 02 1D 06 22 02 + .byte $00, $02, $1E, $02, $20, $02, $22, $04, $23, $04, $22, $06, $20, $0A, $1D, $02 ; CPU:$B62B PRG:B62B 00 02 1E 02 20 02 22 04 23 04 22 06 20 0A 1D 02 + .byte $00, $02, $1E, $02, $20, $02, $22, $04, $23, $04, $22, $06, $20, $0A, $1D, $02 ; CPU:$B63B PRG:B63B 00 02 1E 02 20 02 22 04 23 04 22 06 20 0A 1D 02 + .byte $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12, $10, $11, $10, $00, $04 ; CPU:$B64B PRG:B64B 00 02 12 02 14 02 16 04 14 04 12 10 11 10 00 04 + .byte $14, $04, $14, $08, $14, $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04 ; CPU:$B65B PRG:B65B 14 04 14 08 14 02 00 02 12 02 14 02 16 04 14 04 + .byte $12, $06, $14, $0A, $11, $02, $00, $02, $12, $02, $14, $02, $16, $02, $14, $02 ; CPU:$B66B PRG:B66B 12 06 14 0A 11 02 00 02 12 02 14 02 16 02 14 02 + .byte $13, $02, $14, $02, $13, $02, $14, $02, $13, $02, $14, $02, $13, $02, $14, $06 ; CPU:$B67B PRG:B67B 13 02 14 02 13 02 14 02 13 02 14 02 13 02 14 06 + .byte $1D, $02, $00, $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $10, $1D, $10 ; CPU:$B68B PRG:B68B 1D 02 00 02 1E 02 20 02 22 04 20 04 1E 10 1D 10 + .byte $00, $01, $1C, $03, $1D, $04, $1D, $08, $1D, $02, $00, $02, $1E, $02, $20, $02 ; CPU:$B69B PRG:B69B 00 01 1C 03 1D 04 1D 08 1D 02 00 02 1E 02 20 02 + .byte $22, $04, $20, $04, $1E, $02, $1C, $04, $1D, $0A, $19, $02, $00, $02, $1E, $02 ; CPU:$B6AB PRG:B6AB 22 04 20 04 1E 02 1C 04 1D 0A 19 02 00 02 1E 02 + .byte $20, $02, $22, $04, $20, $04, $1E, $06, $1D, $0A, $22, $02, $00, $02, $12, $02 ; CPU:$B6BB PRG:B6BB 20 02 22 04 20 04 1E 06 1D 0A 22 02 00 02 12 02 + .byte $14, $02, $16, $04, $15, $04, $12, $10, $11, $10, $00, $8A, $8B, $0C, $00, $8C ; CPU:$B6CB PRG:B6CB 14 02 16 04 15 04 12 10 11 10 00 8A 8B 0C 00 8C + .byte $0C, $00, $89, $82, $20, $84, $18, $87, $F0, $8E, $09, $8D, $06, $8F, $0D, $08 ; CPU:$B6DB PRG:B6DB 0C 00 89 82 20 84 18 87 F0 8E 09 8D 06 8F 0D 08 + .byte $19, $08, $16, $06, $1B, $04, $14, $02, $14, $02, $16, $02, $18, $04, $19, $04 ; CPU:$B6EB PRG:B6EB 19 08 16 06 1B 04 14 02 14 02 16 02 18 04 19 04 + .byte $19, $04, $16, $04, $16, $04, $1B, $02, $1B, $04, $14, $02, $14, $02, $16, $02 ; CPU:$B6FB PRG:B6FB 19 04 16 04 16 04 1B 02 1B 04 14 02 14 02 16 02 + .byte $18, $04, $19, $04, $19, $04, $16, $04, $16, $04, $1B, $02, $1B, $04, $14, $02 ; CPU:$B70B PRG:B70B 18 04 19 04 19 04 16 04 16 04 1B 02 1B 04 14 02 + .byte $14, $02, $16, $02, $18, $04, $19, $04, $19, $04, $16, $04, $16, $06, $1B, $04 ; CPU:$B71B PRG:B71B 14 02 16 02 18 04 19 04 19 04 16 04 16 06 1B 04 + .byte $14, $02, $14, $02, $16, $02, $18, $04, $19, $04, $19, $04, $16, $02, $16, $04 ; CPU:$B72B PRG:B72B 14 02 14 02 16 02 18 04 19 04 19 04 16 02 16 04 + .byte $1B, $04, $1B, $02, $1B, $02, $14, $02, $14, $02, $16, $02, $18, $04, $19, $04 ; CPU:$B73B PRG:B73B 1B 04 1B 02 1B 02 14 02 14 02 16 02 18 04 19 04 + .byte $19, $04, $16, $04, $16, $03, $1B, $01, $1A, $02, $1B, $04, $14, $02, $14, $02 ; CPU:$B74B PRG:B74B 19 04 16 04 16 03 1B 01 1A 02 1B 04 14 02 14 02 + .byte $16, $02, $18, $8A, $8B, $2E, $00, $8C, $2E, $00, $89, $8F, $01, $8E, $45, $20 ; CPU:$B75B PRG:B75B 16 02 18 8A 8B 2E 00 8C 2E 00 89 8F 01 8E 45 20 + .byte $3E, $8F, $09, $8E, $04, $04, $42, $04, $42, $04, $42, $04, $42, $04, $3E, $03 ; CPU:$B76B PRG:B76B 3E 8F 09 8E 04 04 42 04 42 04 42 04 42 04 3E 03 + .byte $42, $01, $40, $03, $3E, $01, $41, $02, $44, $02, $42, $04, $3D, $01, $41, $03 ; CPU:$B77B PRG:B77B 42 01 40 03 3E 01 41 02 44 02 42 04 3D 01 41 03 + .byte $42, $04, $3D, $01, $41, $03, $43, $03, $3D, $01, $41, $02, $44, $02, $42, $02 ; CPU:$B78B PRG:B78B 42 04 3D 01 41 03 43 03 3D 01 41 02 44 02 42 02 + .byte $3D, $01, $41, $01, $41, $02, $44, $02, $42, $8A, $8B, $20, $00, $8C, $20, $00 ; CPU:$B79B PRG:B79B 3D 01 41 01 41 02 44 02 42 8A 8B 20 00 8C 20 00 + .byte $89, $B6, $B7, $47, $B8, $D4, $B8, $3F, $B9, $02, $0F, $84, $14, $87, $B4, $8F ; CPU:$B7AB PRG:B7AB 89 B6 B7 47 B8 D4 B8 3F B9 02 0F 84 14 87 B4 8F + .byte $0D, $8D, $06, $82, $CD, $8E, $0C, $03, $1D, $01, $1C, $02, $1D, $06, $20, $04 ; CPU:$B7BB PRG:B7BB 0D 8D 06 82 CD 8E 0C 03 1D 01 1C 02 1D 06 20 04 + .byte $25, $0C, $25, $03, $24, $01, $25, $03, $27, $01, $25, $02, $24, $06, $25, $04 ; CPU:$B7CB PRG:B7CB 25 0C 25 03 24 01 25 03 27 01 25 02 24 06 25 04 + .byte $22, $0C, $1E, $03, $1D, $01, $1C, $03, $1D, $01, $1C, $02, $1D, $06, $25, $04 ; CPU:$B7DB PRG:B7DB 22 0C 1E 03 1D 01 1C 03 1D 01 1C 02 1D 06 25 04 + .byte $1D, $03, $1B, $01, $1A, $02, $1B, $06, $22, $04, $19, $03, $18, $01, $17, $02 ; CPU:$B7EB PRG:B7EB 1D 03 1B 01 1A 02 1B 06 22 04 19 03 18 01 17 02 + .byte $18, $0A, $20, $03, $1E, $01, $1D, $02, $1E, $06, $1D, $04, $1B, $03, $1D, $01 ; CPU:$B7FB PRG:B7FB 18 0A 20 03 1E 01 1D 02 1E 06 1D 04 1B 03 1D 01 + .byte $1C, $02, $1D, $06, $20, $04, $25, $0C, $25, $03, $24, $01, $25, $03, $27, $01 ; CPU:$B80B PRG:B80B 1C 02 1D 06 20 04 25 0C 25 03 24 01 25 03 27 01 + .byte $25, $02, $24, $06, $25, $04, $22, $0C, $1E, $03, $1D, $01, $1C, $03, $1D, $01 ; CPU:$B81B PRG:B81B 25 02 24 06 25 04 22 0C 1E 03 1D 01 1C 03 1D 01 + .byte $1C, $02, $1D, $06, $25, $04, $1D, $03, $1B, $01, $1D, $02, $1E, $06, $1D, $04 ; CPU:$B82B PRG:B82B 1C 02 1D 06 25 04 1D 03 1B 01 1D 02 1E 06 1D 04 + .byte $1B, $10, $19, $02, $21, $04, $20, $02, $21, $08, $20, $88, $82, $BB, $84, $14 ; CPU:$B83B PRG:B83B 1B 10 19 02 21 04 20 02 21 08 20 88 82 BB 84 14 + .byte $87, $B4, $8F, $0D, $8E, $00, $04, $00, $02, $1D, $02, $1C, $04, $1D, $04, $25 ; CPU:$B84B PRG:B84B 87 B4 8F 0D 8E 00 04 00 02 1D 02 1C 04 1D 04 25 + .byte $0C, $23, $02, $20, $02, $1E, $04, $22, $04, $20, $04, $1E, $04, $19, $0C, $21 ; CPU:$B85B PRG:B85B 0C 23 02 20 02 1E 04 22 04 20 04 1E 04 19 0C 21 + .byte $04, $00, $04, $00, $03, $1D, $01, $1C, $02, $1D, $06, $25, $04, $00, $03, $1F ; CPU:$B86B PRG:B86B 04 00 04 00 03 1D 01 1C 02 1D 06 25 04 00 03 1F + .byte $01, $20, $04, $22, $04, $25, $04, $20, $02, $1F, $02, $20, $04, $22, $04, $25 ; CPU:$B87B PRG:B87B 01 20 04 22 04 25 04 20 02 1F 02 20 04 22 04 25 + .byte $03, $24, $01, $22, $02, $24, $06, $22, $04, $20, $04, $00, $02, $1D, $02, $1C ; CPU:$B88B PRG:B88B 03 24 01 22 02 24 06 22 04 20 04 00 02 1D 02 1C + .byte $04, $1D, $04, $25, $0C, $23, $02, $20, $02, $1E, $04, $22, $04, $20, $04, $1E ; CPU:$B89B PRG:B89B 04 1D 04 25 0C 23 02 20 02 1E 04 22 04 20 04 1E + .byte $04, $19, $0C, $21, $04, $00, $04, $00, $03, $1D, $01, $1C, $02, $1D, $06, $25 ; CPU:$B8AB PRG:B8AB 04 19 0C 21 04 00 04 00 03 1D 01 1C 02 1D 06 25 + .byte $04, $22, $02, $12, $02, $14, $02, $16, $02, $18, $02, $19, $02, $1B, $10, $1D ; CPU:$B8BB PRG:B8BB 04 22 02 12 02 14 02 16 02 18 02 19 02 1B 10 1D + .byte $02, $1E, $04, $20, $02, $1E, $08, $20, $88, $8F, $0C, $8E, $00, $82, $5A, $06 ; CPU:$B8CB PRG:B8CB 02 1E 04 20 02 1E 08 20 88 8F 0C 8E 00 82 5A 06 + .byte $25, $06, $1D, $04, $20, $06, $25, $06, $1D, $04, $20, $06, $1E, $06, $16, $04 ; CPU:$B8DB PRG:B8DB 25 06 1D 04 20 06 25 06 1D 04 20 06 1E 06 16 04 + .byte $19, $06, $1E, $06, $21, $04, $19, $06, $1D, $06, $14, $04, $19, $06, $1B, $06 ; CPU:$B8EB PRG:B8EB 19 06 1E 06 21 04 19 06 1D 06 14 04 19 06 1B 06 + .byte $1F, $04, $22, $06, $20, $06, $18, $04, $1B, $04, $20, $04, $1E, $04, $1D, $04 ; CPU:$B8FB PRG:B8FB 1F 04 22 06 20 06 18 04 1B 04 20 04 1E 04 1D 04 + .byte $1B, $06, $25, $06, $1D, $04, $20, $06, $25, $06, $1D, $04, $20, $06, $1E, $06 ; CPU:$B90B PRG:B90B 1B 06 25 06 1D 04 20 06 25 06 1D 04 20 06 1E 06 + .byte $16, $04, $19, $06, $1E, $06, $21, $04, $19, $06, $1D, $06, $14, $04, $19, $06 ; CPU:$B91B PRG:B91B 16 04 19 06 1E 06 21 04 19 06 1D 06 14 04 19 06 + .byte $20, $06, $20, $04, $20, $06, $19, $06, $14, $04, $19, $02, $21, $04, $20, $02 ; CPU:$B92B PRG:B92B 20 06 20 04 20 06 19 06 14 04 19 02 21 04 20 02 + .byte $21, $08, $20, $88, $8F, $0D, $8E, $04, $04, $3E, $02, $44, $02, $42, $02, $3F ; CPU:$B93B PRG:B93B 21 08 20 88 8F 0D 8E 04 04 3E 02 44 02 42 02 3F + .byte $02, $3F, $02, $44, $02, $3F, $88, $5C, $B9, $AD, $B9, $F0, $B9, $33, $BA, $02 ; CPU:$B94B PRG:B94B 02 3F 02 44 02 3F 88 5C B9 AD B9 F0 B9 33 BA 02 + .byte $0F, $82, $02, $84, $18, $87, $78, $8F, $0D, $8E, $13, $8D, $05, $04, $1D, $04 ; CPU:$B95B PRG:B95B 0F 82 02 84 18 87 78 8F 0D 8E 13 8D 05 04 1D 04 + .byte $00, $04, $20, $04, $00, $03, $1B, $01, $1A, $02, $1B, $06, $20, $04, $00, $04 ; CPU:$B96B PRG:B96B 00 04 20 04 00 03 1B 01 1A 02 1B 06 20 04 00 04 + .byte $1D, $04, $00, $04, $20, $04, $00, $03, $22, $01, $21, $02, $22, $06, $1B, $04 ; CPU:$B97B PRG:B97B 1D 04 00 04 20 04 00 03 22 01 21 02 22 06 1B 04 + .byte $00, $04, $1D, $04, $00, $04, $20, $04, $00, $03, $1B, $01, $1A, $02, $1B, $06 ; CPU:$B98B PRG:B98B 00 04 1D 04 00 04 20 04 00 03 1B 01 1A 02 1B 06 + .byte $20, $04, $1D, $04, $19, $04, $00, $04, $17, $04, $00, $06, $15, $06, $14, $04 ; CPU:$B99B PRG:B99B 20 04 1D 04 19 04 00 04 17 04 00 06 15 06 14 04 + .byte $00, $88, $82, $04, $8F, $0D, $8E, $07, $04, $19, $04, $11, $04, $1D, $04, $0D ; CPU:$B9AB PRG:B9AB 00 88 82 04 8F 0D 8E 07 04 19 04 11 04 1D 04 0D + .byte $04, $00, $02, $13, $06, $00, $04, $18, $04, $19, $04, $11, $04, $1D, $04, $0D ; CPU:$B9BB PRG:B9BB 04 00 02 13 06 00 04 18 04 19 04 11 04 1D 04 0D + .byte $04, $00, $04, $13, $04, $00, $04, $18, $04, $19, $04, $11, $04, $1D, $04, $0D ; CPU:$B9CB PRG:B9CB 04 00 04 13 04 00 04 18 04 19 04 11 04 1D 04 0D + .byte $04, $00, $02, $13, $06, $00, $04, $18, $04, $00, $04, $19, $08, $1B, $06, $19 ; CPU:$B9DB PRG:B9DB 04 00 02 13 06 00 04 18 04 00 04 19 08 1B 06 19 + .byte $06, $18, $04, $00, $88, $82, $24, $8F, $0C, $8E, $07, $04, $00, $04, $19, $04 ; CPU:$B9EB PRG:B9EB 06 18 04 00 88 82 24 8F 0C 8E 07 04 00 04 19 04 + .byte $00, $04, $16, $04, $00, $04, $1B, $04, $00, $04, $14, $04, $00, $04, $19, $04 ; CPU:$B9FB PRG:B9FB 00 04 16 04 00 04 1B 04 00 04 14 04 00 04 19 04 + .byte $00, $04, $16, $04, $00, $04, $1B, $04, $00, $04, $14, $04, $00, $04, $19, $04 ; CPU:$BA0B PRG:BA0B 00 04 16 04 00 04 1B 04 00 04 14 04 00 04 19 04 + .byte $00, $04, $16, $04, $00, $04, $1B, $04, $00, $04, $14, $04, $00, $04, $19, $08 ; CPU:$BA1B PRG:BA1B 00 04 16 04 00 04 1B 04 00 04 14 04 00 04 19 08 + .byte $17, $06, $15, $06, $14, $04, $00, $88, $8F, $0D, $8E, $03, $04, $40, $02, $44 ; CPU:$BA2B PRG:BA2B 17 06 15 06 14 04 00 88 8F 0D 8E 03 04 40 02 44 + .byte $02, $41, $04, $40, $02, $44, $02, $41, $02, $40, $02, $40, $02, $44, $04, $40 ; CPU:$BA3B PRG:BA3B 02 41 04 40 02 44 02 41 02 40 02 40 02 44 04 40 + .byte $02, $41, $02, $44, $02, $41, $04, $40, $02, $44, $02, $41, $02, $40, $02, $40 ; CPU:$BA4B PRG:BA4B 02 41 02 44 02 41 04 40 02 44 02 41 02 40 02 40 + .byte $02, $44, $02, $41, $04, $40, $02, $40, $04, $44, $02, $44, $02, $44, $02, $44 ; CPU:$BA5B PRG:BA5B 02 44 02 41 04 40 02 40 04 44 02 44 02 44 02 44 + .byte $04, $40, $02, $44, $02, $41, $04, $40, $02, $44, $02, $41, $04, $40, $02, $40 ; CPU:$BA6B PRG:BA6B 04 40 02 44 02 41 04 40 02 44 02 41 04 40 02 40 + .byte $04, $44, $02, $44, $02, $44, $02, $44, $02, $43, $01, $43, $01, $43, $02, $43 ; CPU:$BA7B PRG:BA7B 04 44 02 44 02 44 02 44 02 43 01 43 01 43 02 43 + .byte $04, $41, $02, $43, $02, $43, $02, $43, $02, $43, $01, $43, $01, $43, $02, $43 ; CPU:$BA8B PRG:BA8B 04 41 02 43 02 43 02 43 02 43 01 43 01 43 02 43 + .byte $04, $40, $01, $42, $01, $42, $02, $42, $02, $42, $88, $B0, $BA, $DB, $BA, $02 ; CPU:$BA9B PRG:BA9B 04 40 01 42 01 42 02 42 02 42 88 B0 BA DB BA 02 + .byte $BB, $27, $BB, $02, $0F, $82, $49, $84, $18, $87, $F0, $8E, $07, $8D, $06, $8F ; CPU:$BAAB PRG:BAAB BB 27 BB 02 0F 82 49 84 18 87 F0 8E 07 8D 06 8F + .byte $0E, $01, $19, $02, $19, $01, $19, $02, $18, $02, $18, $02, $16, $02, $16, $02 ; CPU:$BABB PRG:BABB 0E 01 19 02 19 01 19 02 18 02 18 02 16 02 16 02 + .byte $18, $02, $18, $01, $19, $02, $19, $01, $19, $02, $1B, $02, $1B, $10, $1D, $89 ; CPU:$BACB PRG:BACB 18 02 18 01 19 02 19 01 19 02 1B 02 1B 10 1D 89 + .byte $82, $49, $84, $18, $87, $F0, $8E, $07, $01, $16, $02, $16, $01, $16, $02, $14 ; CPU:$BADB PRG:BADB 82 49 84 18 87 F0 8E 07 01 16 02 16 01 16 02 14 + .byte $02, $14, $02, $12, $02, $12, $02, $14, $02, $14, $01, $16, $02, $16, $01, $16 ; CPU:$BAEB PRG:BAEB 02 14 02 12 02 12 02 14 02 14 01 16 02 16 01 16 + .byte $02, $18, $02, $18, $10, $1A, $89, $82, $2A, $8E, $07, $01, $16, $02, $16, $01 ; CPU:$BAFB PRG:BAFB 02 18 02 18 10 1A 89 82 2A 8E 07 01 16 02 16 01 + .byte $16, $02, $14, $02, $14, $02, $12, $02, $12, $02, $14, $02, $14, $01, $12, $02 ; CPU:$BB0B PRG:BB0B 16 02 14 02 14 02 12 02 12 02 14 02 14 01 12 02 + .byte $12, $01, $12, $02, $14, $02, $14, $82, $78, $10, $16, $89, $8F, $0D, $8E, $03 ; CPU:$BB1B PRG:BB1B 12 01 12 02 14 02 14 82 78 10 16 89 8F 0D 8E 03 + .byte $01, $43, $02, $43, $01, $43, $02, $41, $02, $41, $01, $43, $02, $43, $01, $43 ; CPU:$BB2B PRG:BB2B 01 43 02 43 01 43 02 41 02 41 01 43 02 43 01 43 + .byte $02, $41, $02, $41, $01, $43, $02, $43, $01, $43, $02, $41, $02, $41, $10, $44 ; CPU:$BB3B PRG:BB3B 02 41 02 41 01 43 02 43 01 43 02 41 02 41 10 44 + .byte $89, $56, $BB, $1F, $BD, $EA, $BE, $47, $C0, $02, $0F, $82, $CD, $84, $18, $87 ; CPU:$BB4B PRG:BB4B 89 56 BB 1F BD EA BE 47 C0 02 0F 82 CD 84 18 87 + .byte $F0, $8E, $0C, $8D, $06, $8F, $0F, $03, $22, $01, $20, $02, $1D, $06, $22, $04 ; CPU:$BB5B PRG:BB5B F0 8E 0C 8D 06 8F 0F 03 22 01 20 02 1D 06 22 04 + .byte $20, $0C, $20, $04, $00, $03, $22, $01, $20, $02, $1D, $04, $22, $02, $24, $02 ; CPU:$BB6B PRG:BB6B 20 0C 20 04 00 03 22 01 20 02 1D 04 22 02 24 02 + .byte $22, $06, $20, $02, $00, $02, $1D, $02, $20, $02, $1D, $02, $1B, $02, $19, $06 ; CPU:$BB7B PRG:BB7B 22 06 20 02 00 02 1D 02 20 02 1D 02 1B 02 19 06 + .byte $1C, $06, $1B, $08, $19, $02, $00, $02, $19, $02, $1E, $02, $1C, $02, $1B, $02 ; CPU:$BB8B PRG:BB8B 1C 06 1B 08 19 02 00 02 19 02 1E 02 1C 02 1B 02 + .byte $19, $03, $1D, $01, $1B, $02, $1D, $06, $20, $04, $20, $0C, $20, $02, $1B, $02 ; CPU:$BB9B PRG:BB9B 19 03 1D 01 1B 02 1D 06 20 04 20 0C 20 02 1B 02 + .byte $1D, $03, $1E, $01, $1C, $02, $19, $06, $16, $04, $19, $08, $20, $02, $20, $04 ; CPU:$BBAB PRG:BBAB 1D 03 1E 01 1C 02 19 06 16 04 19 08 20 02 20 04 + .byte $1F, $0A, $1E, $02, $1C, $04, $1B, $22, $19, $82, $08, $8E, $00, $02, $23, $02 ; CPU:$BBBB PRG:BBBB 1F 0A 1E 02 1C 04 1B 22 19 82 08 8E 00 02 23 02 + .byte $23, $02, $23, $02, $23, $02, $23, $02, $23, $02, $23, $04, $22, $02, $22, $02 ; CPU:$BBCB PRG:BBCB 23 02 23 02 23 02 23 02 23 02 23 04 22 02 22 02 + .byte $22, $02, $22, $02, $22, $02, $22, $02, $22, $06, $25, $02, $00, $02, $20, $03 ; CPU:$BBDB PRG:BBDB 22 02 22 02 22 02 22 02 22 06 25 02 00 02 20 03 + .byte $22, $01, $20, $02, $22, $02, $20, $02, $22, $04, $25, $02, $20, $02, $22, $04 ; CPU:$BBEB PRG:BBEB 22 01 20 02 22 02 20 02 22 04 25 02 20 02 22 04 + .byte $25, $02, $20, $02, $23, $02, $23, $02, $23, $02, $23, $02, $23, $02, $23, $02 ; CPU:$BBFB PRG:BBFB 25 02 20 02 23 02 23 02 23 02 23 02 23 02 23 02 + .byte $23, $04, $22, $02, $22, $02, $22, $02, $22, $02, $22, $02, $22, $02, $22, $06 ; CPU:$BC0B PRG:BC0B 23 04 22 02 22 02 22 02 22 02 22 02 22 02 22 06 + .byte $25, $02, $00, $02, $20, $03, $22, $01, $20, $02, $22, $02, $20, $02, $22, $04 ; CPU:$BC1B PRG:BC1B 25 02 00 02 20 03 22 01 20 02 22 02 20 02 22 04 + .byte $25, $02, $20, $02, $22, $04, $25, $02, $20, $8A, $82, $CD, $8B, $E7, $00, $8C ; CPU:$BC2B PRG:BC2B 25 02 20 02 22 04 25 02 20 8A 82 CD 8B E7 00 8C + .byte $0C, $00, $8E, $11, $82, $CD, $06, $14, $02, $14, $03, $16, $01, $14, $02, $16 ; CPU:$BC3B PRG:BC3B 0C 00 8E 11 82 CD 06 14 02 14 03 16 01 14 02 16 + .byte $02, $14, $03, $10, $01, $11, $02, $16, $04, $19, $02, $1C, $02, $1B, $02, $19 ; CPU:$BC4B PRG:BC4B 02 14 03 10 01 11 02 16 04 19 02 1C 02 1B 02 19 + .byte $03, $1D, $01, $1C, $02, $1D, $06, $20, $04, $1D, $03, $1C, $01, $1B, $02, $1C ; CPU:$BC5B PRG:BC5B 03 1D 01 1C 02 1D 06 20 04 1D 03 1C 01 1B 02 1C + .byte $06, $20, $04, $1C, $03, $1D, $01, $1C, $02, $1D, $06, $20, $04, $1D, $03, $1C ; CPU:$BC6B PRG:BC6B 06 20 04 1C 03 1D 01 1C 02 1D 06 20 04 1D 03 1C + .byte $01, $1B, $02, $1C, $06, $20, $04, $20, $03, $1F, $01, $1E, $02, $1F, $06, $25 ; CPU:$BC7B PRG:BC7B 01 1B 02 1C 06 20 04 20 03 1F 01 1E 02 1F 06 25 + .byte $04, $1F, $03, $20, $01, $1F, $02, $20, $04, $23, $01, $22, $01, $23, $02, $22 ; CPU:$BC8B PRG:BC8B 04 1F 03 20 01 1F 02 20 04 23 01 22 01 23 02 22 + .byte $02, $20, $03, $22, $01, $21, $02, $22, $1A, $27, $8A, $8B, $56, $01, $8C, $05 ; CPU:$BC9B PRG:BC9B 02 20 03 22 01 21 02 22 1A 27 8A 8B 56 01 8C 05 + .byte $01, $8E, $0C, $08, $00, $02, $20, $04, $1F, $0A, $1E, $02, $1C, $04, $1B, $22 ; CPU:$BCAB PRG:BCAB 01 8E 0C 08 00 02 20 04 1F 0A 1E 02 1C 04 1B 22 + .byte $19, $03, $22, $01, $20, $02, $1D, $06, $22, $04, $20, $0C, $20, $04, $00, $03 ; CPU:$BCBB PRG:BCBB 19 03 22 01 20 02 1D 06 22 04 20 0C 20 04 00 03 + .byte $22, $01, $20, $02, $1D, $04, $22, $02, $24, $02, $22, $06, $20, $02, $00, $02 ; CPU:$BCCB PRG:BCCB 22 01 20 02 1D 04 22 02 24 02 22 06 20 02 00 02 + .byte $1D, $02, $20, $02, $1D, $02, $1B, $02, $19, $06, $1C, $06, $1B, $08, $19, $02 ; CPU:$BCDB PRG:BCDB 1D 02 20 02 1D 02 1B 02 19 06 1C 06 1B 08 19 02 + .byte $00, $02, $19, $02, $1E, $02, $1C, $02, $1B, $02, $19, $03, $1D, $01, $1B, $02 ; CPU:$BCEB PRG:BCEB 00 02 19 02 1E 02 1C 02 1B 02 19 03 1D 01 1B 02 + .byte $1D, $06, $20, $04, $20, $0C, $20, $02, $1B, $02, $1D, $03, $1E, $01, $1C, $02 ; CPU:$BCFB PRG:BCFB 1D 06 20 04 20 0C 20 02 1B 02 1D 03 1E 01 1C 02 + .byte $19, $06, $16, $04, $19, $08, $20, $02, $20, $04, $1F, $0A, $1E, $02, $1C, $04 ; CPU:$BD0B PRG:BD0B 19 06 16 04 19 08 20 02 20 04 1F 0A 1E 02 1C 04 + .byte $1B, $22, $19, $88, $82, $B8, $84, $18, $87, $F0, $8F, $0A, $8E, $00, $04, $00 ; CPU:$BD1B PRG:BD1B 1B 22 19 88 82 B8 84 18 87 F0 8F 0A 8E 00 04 00 + .byte $04, $16, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00 ; CPU:$BD2B PRG:BD2B 04 16 04 00 04 16 04 00 04 16 04 00 04 16 04 00 + .byte $04, $16, $04, $00, $04, $16, $04, $00, $04, $17, $04, $00, $04, $17, $04, $00 ; CPU:$BD3B PRG:BD3B 04 16 04 00 04 16 04 00 04 17 04 00 04 17 04 00 + .byte $04, $1C, $04, $00, $04, $1C, $04, $00, $04, $1C, $04, $00, $04, $1C, $04, $00 ; CPU:$BD4B PRG:BD4B 04 1C 04 00 04 1C 04 00 04 1C 04 00 04 1C 04 00 + .byte $04, $16, $04, $00, $04, $16, $04, $00, $04, $18, $04, $00, $04, $18, $04, $00 ; CPU:$BD5B PRG:BD5B 04 16 04 00 04 16 04 00 04 18 04 00 04 18 04 00 + .byte $04, $1C, $04, $00, $04, $1C, $02, $00, $02, $0F, $02, $14, $02, $18, $08, $1B ; CPU:$BD6B PRG:BD6B 04 1C 04 00 04 1C 02 00 02 0F 02 14 02 18 08 1B + .byte $02, $00, $02, $0D, $02, $12, $02, $16, $08, $19, $06, $00, $02, $0F, $02, $10 ; CPU:$BD7B PRG:BD7B 02 00 02 0D 02 12 02 16 08 19 06 00 02 0F 02 10 + .byte $06, $11, $10, $19, $82, $08, $02, $20, $02, $20, $02, $20, $02, $20, $02, $20 ; CPU:$BD8B PRG:BD8B 06 11 10 19 82 08 02 20 02 20 02 20 02 20 02 20 + .byte $02, $20, $02, $20, $04, $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E ; CPU:$BD9B PRG:BD9B 02 20 02 20 04 1E 02 1E 02 1E 02 1E 02 1E 02 1E + .byte $02, $1E, $06, $20, $02, $00, $02, $20, $03, $22, $01, $20, $02, $22, $02, $20 ; CPU:$BDAB PRG:BDAB 02 1E 06 20 02 00 02 20 03 22 01 20 02 22 02 20 + .byte $02, $22, $04, $25, $02, $20, $02, $22, $04, $25, $02, $20, $02, $20, $02, $20 ; CPU:$BDBB PRG:BDBB 02 22 04 25 02 20 02 22 04 25 02 20 02 20 02 20 + .byte $02, $20, $02, $20, $02, $20, $02, $20, $02, $20, $04, $1E, $02, $1E, $02, $1E ; CPU:$BDCB PRG:BDCB 02 20 02 20 02 20 02 20 02 20 04 1E 02 1E 02 1E + .byte $02, $1E, $02, $1E, $02, $1E, $02, $1E, $06, $20, $02, $00, $02, $20, $03, $22 ; CPU:$BDDB PRG:BDDB 02 1E 02 1E 02 1E 02 1E 06 20 02 00 02 20 03 22 + .byte $01, $20, $02, $22, $02, $20, $02, $22, $04, $25, $02, $20, $02, $22, $04, $25 ; CPU:$BDEB PRG:BDEB 01 20 02 22 02 20 02 22 04 25 02 20 02 22 04 25 + .byte $02, $20, $8A, $82, $B8, $8B, $E7, $00, $8C, $08, $00, $8E, $05, $82, $02, $04 ; CPU:$BDFB PRG:BDFB 02 20 8A 82 B8 8B E7 00 8C 08 00 8E 05 82 02 04 + .byte $11, $04, $11, $04, $11, $04, $11, $04, $10, $04, $10, $04, $10, $04, $10, $82 ; CPU:$BE0B PRG:BE0B 11 04 11 04 11 04 11 04 10 04 10 04 10 04 10 82 + .byte $B8, $04, $00, $04, $17, $04, $00, $04, $17, $04, $00, $04, $12, $04, $00, $04 ; CPU:$BE1B PRG:BE1B B8 04 00 04 17 04 00 04 17 04 00 04 12 04 00 04 + .byte $12, $04, $00, $04, $17, $04, $00, $04, $17, $04, $00, $04, $12, $04, $00, $04 ; CPU:$BE2B PRG:BE2B 12 04 00 04 17 04 00 04 17 04 00 04 12 04 00 04 + .byte $12, $04, $00, $04, $19, $04, $00, $04, $19, $04, $00, $04, $17, $04, $00, $04 ; CPU:$BE3B PRG:BE3B 12 04 00 04 19 04 00 04 19 04 00 04 17 04 00 04 + .byte $17, $04, $00, $04, $1B, $04, $00, $04, $1B, $04, $00, $04, $19, $04, $00, $04 ; CPU:$BE4B PRG:BE4B 17 04 00 04 1B 04 00 04 1B 04 00 04 19 04 00 04 + .byte $19, $8A, $8B, $44, $01, $8C, $FD, $00, $8E, $00, $02, $00, $02, $0F, $02, $14 ; CPU:$BE5B PRG:BE5B 19 8A 8B 44 01 8C FD 00 8E 00 02 00 02 0F 02 14 + .byte $02, $18, $08, $1B, $02, $00, $02, $0D, $02, $12, $02, $16, $08, $19, $06, $00 ; CPU:$BE6B PRG:BE6B 02 18 08 1B 02 00 02 0D 02 12 02 16 08 19 06 00 + .byte $02, $0F, $02, $10, $06, $11, $10, $19, $04, $00, $04, $16, $04, $00, $04, $16 ; CPU:$BE7B PRG:BE7B 02 0F 02 10 06 11 10 19 04 00 04 16 04 00 04 16 + .byte $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $16 ; CPU:$BE8B PRG:BE8B 04 00 04 16 04 00 04 16 04 00 04 16 04 00 04 16 + .byte $04, $00, $04, $17, $04, $00, $04, $17, $04, $00, $04, $1C, $04, $00, $04, $1C ; CPU:$BE9B PRG:BE9B 04 00 04 17 04 00 04 17 04 00 04 1C 04 00 04 1C + .byte $04, $00, $04, $1C, $04, $00, $04, $1C, $04, $00, $04, $16, $04, $00, $04, $16 ; CPU:$BEAB PRG:BEAB 04 00 04 1C 04 00 04 1C 04 00 04 16 04 00 04 16 + .byte $04, $00, $04, $18, $04, $00, $04, $18, $04, $00, $04, $1C, $04, $00, $04, $1C ; CPU:$BEBB PRG:BEBB 04 00 04 18 04 00 04 18 04 00 04 1C 04 00 04 1C + .byte $02, $00, $02, $0F, $02, $14, $02, $18, $08, $1B, $02, $00, $02, $0D, $02, $12 ; CPU:$BECB PRG:BECB 02 00 02 0F 02 14 02 18 08 1B 02 00 02 0D 02 12 + .byte $02, $16, $08, $19, $06, $00, $02, $0F, $02, $10, $06, $11, $10, $19, $88, $82 ; CPU:$BEDB PRG:BEDB 02 16 08 19 06 00 02 0F 02 10 06 11 10 19 88 82 + .byte $43, $8F, $0A, $8E, $00, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04 ; CPU:$BEEB PRG:BEEB 43 8F 0A 8E 00 04 19 04 20 04 19 04 20 04 19 04 + .byte $20, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04 ; CPU:$BEFB PRG:BEFB 20 04 19 04 20 04 19 04 20 04 19 04 20 04 19 04 + .byte $20, $04, $19, $04, $20, $04, $1E, $04, $25, $04, $1E, $04, $25, $04, $1E, $04 ; CPU:$BF0B PRG:BF0B 20 04 19 04 20 04 1E 04 25 04 1E 04 25 04 1E 04 + .byte $25, $04, $1E, $04, $25, $04, $19, $04, $20, $04, $19, $04, $20, $04, $14, $04 ; CPU:$BF1B PRG:BF1B 25 04 1E 04 25 04 19 04 20 04 19 04 20 04 14 04 + .byte $20, $04, $14, $04, $20, $04, $1E, $04, $25, $04, $1E, $04, $25, $10, $14, $10 ; CPU:$BF2B PRG:BF2B 20 04 14 04 20 04 1E 04 25 04 1E 04 25 10 14 10 + .byte $12, $02, $0D, $02, $14, $1C, $19, $8E, $0C, $82, $0C, $02, $1D, $02, $1D, $02 ; CPU:$BF3B PRG:BF3B 12 02 0D 02 14 1C 19 8E 0C 82 0C 02 1D 02 1D 02 + .byte $1D, $02, $1D, $02, $1D, $02, $1D, $02, $1D, $04, $1C, $02, $1C, $02, $1C, $02 ; CPU:$BF4B PRG:BF4B 1D 02 1D 02 1D 02 1D 02 1D 04 1C 02 1C 02 1C 02 + .byte $1C, $02, $1C, $02, $1C, $02, $1C, $22, $1D, $02, $1D, $02, $1D, $02, $1D, $02 ; CPU:$BF5B PRG:BF5B 1C 02 1C 02 1C 02 1C 22 1D 02 1D 02 1D 02 1D 02 + .byte $1D, $02, $1D, $02, $1D, $02, $1D, $04, $1C, $02, $1C, $02, $1C, $02, $1C, $02 ; CPU:$BF6B PRG:BF6B 1D 02 1D 02 1D 02 1D 04 1C 02 1C 02 1C 02 1C 02 + .byte $1C, $02, $1C, $02, $1C, $22, $1D, $8A, $8E, $00, $82, $43, $8B, $A3, $00, $8C ; CPU:$BF7B PRG:BF7B 1C 02 1C 02 1C 22 1D 8A 8E 00 82 43 8B A3 00 8C + .byte $04, $00, $8E, $05, $04, $19, $04, $19, $04, $19, $04, $19, $04, $12, $04, $14 ; CPU:$BF8B PRG:BF8B 04 00 8E 05 04 19 04 19 04 19 04 19 04 12 04 14 + .byte $04, $16, $04, $12, $82, $43, $04, $19, $04, $20, $04, $19, $04, $20, $04, $12 ; CPU:$BF9B PRG:BF9B 04 16 04 12 82 43 04 19 04 20 04 19 04 20 04 12 + .byte $04, $1C, $04, $12, $04, $1C, $04, $19, $04, $20, $04, $19, $04, $20, $04, $12 ; CPU:$BFAB PRG:BFAB 04 1C 04 12 04 1C 04 19 04 20 04 19 04 20 04 12 + .byte $04, $1C, $04, $12, $04, $1C, $04, $1F, $04, $22, $04, $1F, $04, $22, $04, $19 ; CPU:$BFBB PRG:BFBB 04 1C 04 12 04 1C 04 1F 04 22 04 1F 04 22 04 19 + .byte $04, $20, $04, $19, $04, $20, $04, $1B, $04, $22, $04, $1B, $04, $22, $04, $1B ; CPU:$BFCB PRG:BFCB 04 20 04 19 04 20 04 1B 04 22 04 1B 04 22 04 1B + .byte $04, $22, $04, $1B, $04, $22, $8A, $8B, $FE, $00, $8C, $B7, $00, $8E, $00, $10 ; CPU:$BFDB PRG:BFDB 04 22 04 1B 04 22 8A 8B FE 00 8C B7 00 8E 00 10 + .byte $14, $10, $12, $02, $0D, $02, $14, $1C, $19, $04, $19, $04, $20, $04, $19, $04 ; CPU:$BFEB PRG:BFEB 14 10 12 02 0D 02 14 1C 19 04 19 04 20 04 19 04 + .byte $20, $04, $19, $04, $20 ; CPU:$BFFB PRG:BFFB 20 04 19 04 20 +.segment "PRG6" +.org $C000 - -bank3_data: -; ---- data $C000-$FEFF (16128 bytes) ---- +; ---- data $C000-$DFFF (8192 bytes) ---- .byte $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20 ; CPU:$C000 PRG:C000 04 19 04 20 04 19 04 20 04 19 04 20 04 19 04 20 .byte $04, $19, $04, $20, $04, $1E, $04, $25, $04, $1E, $04, $25, $04, $1E, $04, $25 ; CPU:$C010 PRG:C010 04 19 04 20 04 1E 04 25 04 1E 04 25 04 1E 04 25 .byte $04, $1E, $04, $25, $04, $19, $04, $20, $04, $19, $04, $20, $04, $14, $04, $20 ; CPU:$C020 PRG:C020 04 1E 04 25 04 19 04 20 04 19 04 20 04 14 04 20 @@ -3742,6 +11675,10 @@ bank3_data: .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFD0 PRG:DFD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFE0 PRG:DFE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFF0 PRG:DFF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +.segment "PRG7" +.org $E000 + +; ---- data $E000-$FF6F (8048 bytes) ---- .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E000 PRG:E000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E010 PRG:E010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E020 PRG:E020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF @@ -4238,164 +12175,32 @@ bank3_data: .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FED0 PRG:FED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEE0 PRG:FEE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEF0 PRG:FEF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $A2, $FF, $9A, $78, $D8, $A9, $00, $8D, $00, $20, $8D, $01, $20, $A9, $30, $20 ; CPU:$FF00 PRG:FF00 A2 FF 9A 78 D8 A9 00 8D 00 20 8D 01 20 A9 30 20 + .byte $49, $FF, $20, $57, $FF, $90, $18, $A9, $10, $20, $49, $FF, $A9, $30, $20, $49 ; CPU:$FF10 PRG:FF10 49 FF 20 57 FF 90 18 A9 10 20 49 FF A9 30 20 49 + .byte $FF, $20, $4C, $FF, $20, $4C, $FF, $A9, $10, $20, $49, $FF, $4C, $3E, $FF, $A9 ; CPU:$FF20 PRG:FF20 FF 20 4C FF 20 4C FF A9 10 20 49 FF 4C 3E FF A9 + .byte $20, $20, $49, $FF, $A9, $30, $20, $49, $FF, $A9, $20, $20, $49, $FF, $A9, $30 ; CPU:$FF30 PRG:FF30 20 20 49 FF A9 30 20 49 FF A9 20 20 49 FF A9 30 + .byte $8D, $00, $41, $20, $62, $FF, $4C, $36, $80, $8D, $00, $41, $A0, $04, $A2, $CE ; CPU:$FF40 PRG:FF40 8D 00 41 20 62 FF 4C 36 80 8D 00 41 A0 04 A2 CE + .byte $CA, $D0, $FD, $88, $D0, $F8, $60, $A9, $41, $CD, $F0, $07, $D0, $02, $38, $60 ; CPU:$FF50 PRG:FF50 CA D0 FD 88 D0 F8 60 A9 41 CD F0 07 D0 02 38 60 + .byte $18, $60, $A9, $41, $8D, $F0, $07, $60, $A9, $5A, $8D, $F0, $07, $60, $FF, $FF ; CPU:$FF60 PRG:FF60 18 60 A9 41 8D F0 07 60 A9 5A 8D F0 07 60 FF FF ; ----------------------------------------------------------------------------- -; Routine: Reset -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. +; Routine: Bank7_SwitchPrgBank +; Global: The copy of the bank switch the last bank of the image carries. +; Local: Called from the routine that owns it; its state lives in the zero page. +; Parameters: none - the routine reads its state from the zero page. +; Returns: none - the result is left in the registers the caller reads. +; Clobbers: A, X, Y and the zero-page scratch it uses. ; ----------------------------------------------------------------------------- -Reset: - ldx #$FF ; CPU:$FF00 PRG:FF00 A2 FF - txs ; CPU:$FF02 PRG:FF02 9A - sei ; CPU:$FF03 PRG:FF03 78 - cld ; CPU:$FF04 PRG:FF04 D8 - lda #$00 ; CPU:$FF05 PRG:FF05 A9 00 - sta $2000 ; CPU:$FF07 PRG:FF07 8D 00 20 - sta $2001 ; CPU:$FF0A PRG:FF0A 8D 01 20 - lda #$30 ; CPU:$FF0D PRG:FF0D A9 30 - jsr $FF49 ; CPU:$FF0F PRG:FF0F 20 49 FF - jsr $FF57 ; CPU:$FF12 PRG:FF12 20 57 FF - bcc Sub_NMIHandler ; CPU:$FF15 PRG:FF15 90 18 - lda #$10 ; CPU:$FF17 PRG:FF17 A9 10 - jsr $FF49 ; CPU:$FF19 PRG:FF19 20 49 FF - lda #$30 ; CPU:$FF1C PRG:FF1C A9 30 - jsr $FF49 ; CPU:$FF1E PRG:FF1E 20 49 FF - jsr $FF4C ; CPU:$FF21 PRG:FF21 20 4C FF - jsr $FF4C ; CPU:$FF24 PRG:FF24 20 4C FF - lda #$10 ; CPU:$FF27 PRG:FF27 A9 10 - jsr $FF49 ; CPU:$FF29 PRG:FF29 20 49 FF - jmp NMIHandler ; CPU:$FF2C PRG:FF2C 4C 3E FF -; ----------------------------------------------------------------------------- -; Routine: NMIHandler -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -NMIHandler: - lda #$20 ; CPU:$FF2F PRG:FF2F A9 20 - jsr $FF49 ; CPU:$FF31 PRG:FF31 20 49 FF - lda #$30 ; CPU:$FF34 PRG:FF34 A9 30 - jsr $FF49 ; CPU:$FF36 PRG:FF36 20 49 FF - lda #$20 ; CPU:$FF39 PRG:FF39 A9 20 - jsr $FF49 ; CPU:$FF3B PRG:FF3B 20 49 FF -; ----------------------------------------------------------------------------- -; Routine: CommandWrite -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -CommandWrite: - lda #$30 ; CPU:$FF3E PRG:FF3E A9 30 - sta $4100 ; CPU:$FF40 PRG:FF40 8D 00 41 - jsr $FF62 ; CPU:$FF43 PRG:FF43 20 62 FF - jmp MainInit ; CPU:$FF46 PRG:FF46 4C 36 80 -; ----------------------------------------------------------------------------- -; Routine: RegisterSetup -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -RegisterSetup: - sta $4100 ; CPU:$FF49 PRG:FF49 8D 00 41 -; ----------------------------------------------------------------------------- -; Routine: IndexSetup -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -IndexSetup: - ldy #$04 ; CPU:$FF4C PRG:FF4C A0 04 -; ----------------------------------------------------------------------------- -; Routine: IndexLoop -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -IndexLoop: - ldx #$CE ; CPU:$FF4E PRG:FF4E A2 CE -; ----------------------------------------------------------------------------- -; Routine: IndexDecrement -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -IndexDecrement: - dex ; CPU:$FF50 PRG:FF50 CA - bne Sub_IndexDecrement ; CPU:$FF51 PRG:FF51 D0 FD - dey ; CPU:$FF53 PRG:FF53 88 - bne Sub_IndexLoop ; CPU:$FF54 PRG:FF54 D0 F8 - rts ; CPU:$FF56 PRG:FF56 60 -; ----------------------------------------------------------------------------- -; Routine: ReturnFromCode -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -ReturnFromCode: - lda #$41 ; CPU:$FF57 PRG:FF57 A9 41 - cmp $07F0 ; CPU:$FF59 PRG:FF59 CD F0 07 - bne Sub_ReturnClean ; CPU:$FF5C PRG:FF5C D0 02 - sec ; CPU:$FF5E PRG:FF5E 38 - rts ; CPU:$FF5F PRG:FF5F 60 -; ----------------------------------------------------------------------------- -; Routine: ReturnClean -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -ReturnClean: - clc ; CPU:$FF60 PRG:FF60 18 - rts ; CPU:$FF61 PRG:FF61 60 -; ----------------------------------------------------------------------------- -; Routine: ByteWriteReturn -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -ByteWriteReturn: - lda #$41 ; CPU:$FF62 PRG:FF62 A9 41 - sta $07F0 ; CPU:$FF64 PRG:FF64 8D F0 07 -nmi_table: - rts ; CPU:$FF67 PRG:FF67 60 -; ---- data $FF68-$FFFF (152 bytes) ---- - .byte $A9, $5A, $8D, $F0, $07, $60, $FF, $FF, $09, $30, $8D, $00, $41, $60, $FF, $FF ; CPU:$FF68 PRG:FF68 A9 5A 8D F0 07 60 FF FF 09 30 8D 00 41 60 FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF78 PRG:FF78 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF88 PRG:FF88 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF98 PRG:FF98 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFA8 PRG:FFA8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFB8 PRG:FFB8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFC8 PRG:FFC8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFD8 PRG:FFD8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFE8 PRG:FFE8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $89, $81, $00, $FF, $36, $80 ; CPU:$FFF8 PRG:FFF8 FF FF 89 81 00 FF 36 80 - +Bank7_SwitchPrgBank: + ora #$30 ; CPU:$FF70 PRG:FF70 09 30 + sta $4100 ; CPU:$FF72 PRG:FF72 8D 00 41 + rts ; CPU:$FF75 PRG:FF75 60 +; ---- data $FF76-$FFFF (138 bytes) ---- + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF76 PRG:FF76 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF86 PRG:FF86 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF96 PRG:FF96 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFA6 PRG:FFA6 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFB6 PRG:FFB6 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFC6 PRG:FFC6 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFD6 PRG:FFD6 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFE6 PRG:FFE6 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $89, $81, $00, $FF, $36, $80 ; CPU:$FFF6 PRG:FFF6 FF FF FF FF 89 81 00 FF 36 80 diff --git a/MAPPER8/Mermaids of Atlantis (U)/regen.sh b/MAPPER8/Mermaids of Atlantis (U)/regen.sh new file mode 100755 index 0000000..4436a58 --- /dev/null +++ b/MAPPER8/Mermaids of Atlantis (U)/regen.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# Regenerate prg.s from the ROM and the Mesen CDL capture. +# +# The pass order is the one the repo uses: +# 1. Pass 1 - banked_dis.py traces every MMC3 bank separately, seeded from +# the Mesen Code Data Logger capture, and writes prg.s. +# 2. Pass 2 - derive_branch_names.py adds the mechanical branch-target names +# to the hand-written routine map, apply_pass2_map.py renames the file. +# 3. The audit comments are re-aligned, because the rename makes the +# operands longer. +# +# The CDL capture is not kept in the repository: it is 64 KB of emulator +# state. Re-take it with Mesen (see README.md) if the split has to be +# re-derived. +set -e + +PROJ="$(dirname "$0")" +TOOLS="$PROJ/../../_tools" +CDL="${CDL:-/tmp/opencode/mermaids_union.cdl}" + +python3 "$TOOLS/banked_dis.py" \ + --prg "$PROJ/prg.bin" \ + --cdl "$CDL" \ + --project "Mermaids of Atlantis (U)" \ + --out "$PROJ/prg.s" \ + --symbols "$PROJ/symbols.inc" \ + --undocumented \ + --banks "0:8000,2000:A000,4000:C000,6000:E000,8000:8000,A000:A000,C000:C000,E000:E000" \ + --prefix "8000:Bank4,A000:Bank5,C000:Bank6,E000:Bank7" \ + --label "4000:C00E" + +python3 "$TOOLS/derive_branch_names.py" "$PROJ" "$PROJ/routinemap.tsv" \ + "0:,8000:Bank4,A000:Bank5,C000:Bank6,E000:Bank7" "$PROJ/labelmap.tsv" + +python3 "$TOOLS/apply_pass2_map.py" "$PROJ" "$PROJ/labelmap.tsv" \ + --bank-prefix "0:,8000:Bank4,A000:Bank5,C000:Bank6,E000:Bank7" --write + +# The semantic zero-page names, the routine descriptions and the audit +# comment column are the last three passes. +python3 "$TOOLS/apply_zp_aliases.py" "$PROJ" --write \ + --alias ButtonState1=Zp26 --alias ButtonState2=Zp27 \ + --alias PrevButton1=Zp28 --alias PrevButton2=Zp29 \ + --alias NewButton1=Zp2A --alias NewButton2=Zp2B \ + --alias PrgBankNumber=Zp2C --alias HandlerIndex=Zp2D \ + --alias IdleCounter=Zp2F --alias FrameCounter=Zp31 \ + --alias ControllerBits=Zp05 --alias ControllerByte=Zp07 \ + --alias GameMode=Zp6A + +python3 "$TOOLS/describe_routines.py" "$PROJ/prg.s" "$PROJ/routinedesc.tsv" + +python3 "$TOOLS/align_audit_comments.py" "$PROJ" --write diff --git a/MAPPER8/Mermaids of Atlantis (U)/routinedesc.tsv b/MAPPER8/Mermaids of Atlantis (U)/routinedesc.tsv new file mode 100644 index 0000000..d1911e1 --- /dev/null +++ b/MAPPER8/Mermaids of Atlantis (U)/routinedesc.tsv @@ -0,0 +1,111 @@ +# Mermaids of Atlantis (U) - routine descriptions. +# +# Name description. Used by the routine-header tool; the routines +# that are not listed here get a description built from their name. + +# ---- fixed bank (file $6000-$7FFF, CPU $E000-$FFFF) ---- +Reset Power-on entry: sets up the stack, clears the PPU and starts the bank switch. +SelectChrBanks Picks the CHR banks for the stage that is about to be drawn. +StartGame Switches to the first PRG bank and hands over to the game code. +WritePrgBankReg Writes the MMC3 PRG bank register at $4100. +DelayOuterLoop Outer half of the power-on delay loop. +DelayInnerLoop Inner half of the power-on delay loop. +WaitForBankSwitch Waits for the bank switch counter to run out. +StartBankSwitchDelay Starts the bank switch delay counter. +SwitchPrgBank Writes A to the MMC3 PRG bank register with the mode bits forced on. +SwitchPrgBankKeepA Writes X to the MMC3 PRG bank register and keeps A. + +# ---- bank 0 (file $0000-$1FFF, CPU $8000-$9FFF) ---- +BankedCall Switches the PRG bank and dispatches to the handler the caller named. +SelectPrgBankByIndex Switches the PRG bank to the one in X. +InitializeGame Resets the CPU, the PPU and the work RAM, then idles for the NMI. +WaitForVBlank Spins until the PPU signals the start of vertical blank. +ClearRamLoop Clears the work RAM one 224 byte page at a time. +ClearRamPageDone Moves on to the next page of the RAM clear. +InitGameVariables Sets the sound, scroll and sprite registers up. +IdleWaitLoop The loop the game sits in between two NMI handlers. +NmiHandler The frame handler: redraws the screen, reads the pad and runs the game. +UploadOam Copies the sprite shadow into the OAM through the DMA register. +RunGameLogic Runs the game logic for the current mode. +ReadControllers Strobes the controller ports and reads both of them. +ReadControllerBits Shifts one controller byte into the button bit mask. +DispatchByJumpTable Jumps to the handler whose address follows the call. +ClearOamShadow Fills the sprite shadow at $0200 with the "empty" value $F8. +UpdateNametable Rewrites the nametable entries that changed. +UpdateSprites Walks the sixteen sprite slots and redraws the active ones. +UpdateActorSprites Walks the actor slots and redraws their sprites. +StartVramWrite Sets the PPU address for the next VRAM write. +WriteVramTiles Writes the tile data to VRAM. +TickAnimationCounter Advances the animation counter once per frame. +ApplyGraphicsMode Switches the PPU to the graphics mode the level asks for. +AnimatePalette Cycles the palette entries of the animated tiles. +InitLevelState Sets up the state of a new level. +CopyStackPage Copies the stack page so the game can use it as scratch RAM. +ReadPlayerInput Turns the raw button bits into the player's movement. +BuildOamBuffer Fills the sprite shadow from the actor and bubble tables. +ClearSpriteSlots Empties the sixteen sprite slots. +TickLevelTimer Counts the level timer and resets it when it runs out. +LoadSpriteTable Copies a sprite table out of the fixed bank. +SetGraphicsMode Switches the PPU between the background and the overlay. +UpdateGameState Runs the mode machine: title, demo, play and game over. +ResetLevelTimers Clears the level timers when a new level starts. +SetTablePointer Points the data pointer at a table in RAM. + +# ---- bank 1 (file $2000-$3FFF, CPU $A000-$BFFF) ---- +ClearBubbleSlots Empties the bubble slots. +ClearActorSlots Empties the actor slots. +ClearActorTable Empties the actor table in RAM. +SoundTimerTick Counts the sound effect timer down. +PlaySoundEffect Starts a sound effect from the sound table. +LoadActorTemplate Copies an actor template out of the table. +CopyActorToSpriteTable Copies an actor into the sprite table. +UpdatePlayerState Updates the player state for the current frame. +HandleDemoMode Runs the attract mode when no credit is left. +HandlePlayerInput Turns the button bits into the player's actions. +CountPlayerFrames Counts the frames the player state has been in. +MovePlayer Moves the player by one step. +ApplyPlayerDirection Turns the direction bits into a movement delta. +ComputePlayerPosition Computes the player's position from the tile map. +StorePlayerSprite Stores the player's sprite in the sprite table. +BuildBubbleTable Builds the table of the bubbles on the screen. +UpdateBubbles Updates every bubble on the screen. +PlayBubbleSound Plays the sound of a bubble that burst. +SpawnBubble Puts a new bubble on the screen. +DrawBubble Draws one bubble. +DispatchBubbleHandler Jumps to the handler the bubble table names. +ResetLevel Resets the level and the player. +ClearSpriteTable Empties the sprite table in RAM. + +# ---- bank 2 (file $4000-$5FFF, CPU $C000-$DFFF) ---- +ClearNametableRam Clears the nametable RAM the game writes to. +PlayStageMusic Runs the stage script: the music, the waves and the timer. +DispatchLevelScript Jumps to the level script step the game is on. +ResetPpuAndLoadTiles Turns the PPU off and loads the tile set. +SetVramPointer Points the VRAM pointer at the tile set. +ClearSpriteEntry Clears one entry of the sprite table. +TickStageDelay Counts the delay between two stage script steps. +UpdateStageMode Updates the mode the stage script is in. +DisablePpuRendering Turns the PPU off. +SetPlayerActive Marks the player as active. +CheckPlayerActive Tests whether the player is still in play. +TickSoundOnEvenFrame Updates the sound on every second frame. +UpdateSoundEngine Updates the sound engine. +CheckActorCount Tests how many actors are on the screen. +TickActorsOnEvenFrame Updates the actors on every second frame. +InitPlayerPosition Places the player at the start of the level. +TickTimerOnEvenFrame Updates the level timer on every second frame. +ResetScrollOnEvenFrame Resets the scroll on every second frame. +InitBubbleState Sets the bubble state up for a new wave. +UpdateBubbleFrame Updates the bubbles once per frame. +TickHudOnEvenFrame Updates the score display on every second frame. +TickSpritesOnEvenFrame Updates the sprite table on every second frame. +SetSoundChannels Turns the APU channels on. + +# ---- the second half of the image (banks 4-7) ---- +Bank4_CallBankedHandler Switches the PRG bank and dispatches to the handler the caller named. +Bank4_StartVramWrite Sets the PPU address for the next VRAM write. +Bank4_UpdateNametable Rewrites the nametable entries that changed. +Bank5_UpdateSound Updates the sound engine of the second half. +Bank5_ReadSoundTable Reads the sound table of the second half. +Bank5_SetSoundMode Turns the sound channels on in the second half. +Bank7_SwitchPrgBank The copy of the bank switch the last bank of the image carries. diff --git a/MAPPER8/Mermaids of Atlantis (U)/routinemap.tsv b/MAPPER8/Mermaids of Atlantis (U)/routinemap.tsv new file mode 100644 index 0000000..9cbb028 --- /dev/null +++ b/MAPPER8/Mermaids of Atlantis (U)/routinemap.tsv @@ -0,0 +1,105 @@ + +FF00 Reset +FF2F SelectChrBanks +FF3E StartGame +FF49 WritePrgBankReg +FF4C DelayOuterLoop +FF50 DelayInnerLoop +FF57 WaitForBankSwitch +FF62 StartBankSwitchDelay +FF70 SwitchPrgBank +FF80 SwitchPrgBankKeepA + +8004 BankedCall +801B SelectPrgBankByIndex +8036 InitializeGame +8038 WaitForVBlank +8057 ClearRamLoop +8062 ClearRamPageDone +806B InitGameVariables +8083 IdleWaitLoop +808F NmiHandler +80A6 UploadOam +811C RunGameLogic +85DD TickAnimationCounter +8606 ApplyGraphicsMode +8A5F InitLevelState +8E34 CopyStackPage +9621 TickLevelTimer +97EC ResetLevelTimers +813F ReadControllers +814D ReadControllerBits +8173 DispatchByJumpTable +8188 ClearOamShadow +81B1 UpdateNametable +82E9 UpdateSprites +83C3 UpdateActorSprites +849D StartVramWrite +84A4 WriteVramTiles +89FC AnimatePalette +90A9 ReadPlayerInput +91AC BuildOamBuffer +9228 ClearSpriteSlots +962E LoadSpriteTable +967C SetGraphicsMode +9786 UpdateGameState +981B SetTablePointer + +AEC7 ClearBubbleSlots +BB4F ClearActorSlots +BB5B ClearActorTable +BB68 SoundTimerTick +BB7E PlaySoundEffect +BB94 LoadActorTemplate +BB9E CopyActorToSpriteTable +BBFA UpdatePlayerState +BC1C HandleDemoMode +BC38 HandlePlayerInput +BC44 CountPlayerFrames +BCF9 MovePlayer +BD26 ApplyPlayerDirection +BD70 ComputePlayerPosition +BDE1 StorePlayerSprite +BEE4 BuildBubbleTable +BF17 UpdateBubbles +BF53 PlayBubbleSound +BF67 SpawnBubble +BF83 DrawBubble +BF9A DispatchBubbleHandler +BFAF ResetLevel +BFBA ClearSpriteTable + +C000 ClearNametableRam +C00F PlayStageMusic +C2A7 DispatchLevelScript +C2BF ResetPpuAndLoadTiles +C3C8 SetVramPointer +C414 ClearSpriteEntry +C456 TickStageDelay +C505 UpdateStageMode +C62A DisablePpuRendering +CC11 SetPlayerActive +CC56 CheckPlayerActive +CCCF TickSoundOnEvenFrame +CD18 UpdateSoundEngine +CF32 CheckActorCount +D0E7 TickActorsOnEvenFrame +D1B0 InitPlayerPosition +D21A TickTimerOnEvenFrame +D2C0 ResetScrollOnEvenFrame +D507 InitBubbleState +D537 UpdateBubbleFrame +D563 TickHudOnEvenFrame +D5CF TickSpritesOnEvenFrame +D615 SetSoundChannels + + + +# ---- the second half of the image (banks 4-7) ---- +Bank4:800D Bank4_CallBankedHandler +Bank4:80A7 Bank4_StartVramWrite +Bank4:8161 Bank4_UpdateNametable +Bank5:A726 Bank5_UpdateSound +Bank5:A784 Bank5_ReadSoundTable +Bank5:AB50 Bank5_SetSoundMode +Bank7:FF70 Bank7_SwitchPrgBank diff --git a/Makefile b/Makefile index e40ec43..525d2e5 100644 --- a/Makefile +++ b/Makefile @@ -1,63 +1,83 @@ # Top-level build Makefile for NES disassembly projects # Builds every project under the mapper directories at once. +# +# Two tiers live in this repo: +# // promoted projects - built by "all", "clean" and "" +# _wip/// pre-promotion tier - built only by "wip" +# Nothing except "wip"/"wipclean" touches the _wip/ tree. MAPPERS := NROM AOROM CNROM MMC1 MMC3 MMC5 UNROM MAPPER8 -.PHONY: all clean $(MAPPERS) help +# The pre-promotion tier lives under _wip/. Only the "wip" and "wipclean" +# targets reach it; "all", "clean" and "" never do. +WIP := _wip + +.PHONY: all clean wip wipclean $(MAPPERS) help + +# Build one project directory. Expects the shell variable "project" to hold +# the project path; records the result in status/passed/failed/count. +define build_project +if [ -f "$$project/Makefile" ]; then \ + echo "=== Building $$project ==="; \ + count=$$((count + 1)); \ + if $(MAKE) -C "$$project"; then \ + printf '%b' "$$GREEN"; \ + echo ">>> $$project: Passed"; \ + printf '%b' "$$RESET"; \ + passed="$$passed|$$project"; \ + else \ + printf '%b' "$$RED"; \ + echo ">>> $$project: Failed"; \ + printf '%b' "$$RESET"; \ + failed="$$failed|$$project"; \ + status=1; \ + fi; \ +else \ + echo "=== Skipping $$project (no Makefile) ==="; \ +fi; +endef + +# Print the pass/fail summary. Expects the shell variables status/passed/ +# failed/count and msg (the success headline) to be set. +define summary +echo ""; \ +echo "=== $1 Summary ==="; \ +printf '%b' "$$GREEN"; \ +pcount=$$(echo "$$passed" | tr '|' '\n' | grep -c .); \ +echo "Passed ($$pcount):"; \ +echo "$$passed" | tr '|' '\n' | grep -v '^$$' | sed 's/^/ - /'; \ +printf '%b' "$$RESET"; \ +if [ -n "$$failed" ]; then \ + printf '%b' "$$RED$$BOLD"; \ + fcount=$$(echo "$$failed" | tr '|' '\n' | grep -c .); \ + echo "Failed ($$fcount):"; \ + echo "$$failed" | tr '|' '\n' | grep -v '^$$' | sed 's/^/ - /'; \ + printf '%b' "$$RESET"; \ +fi; \ +if [ $$status -eq 0 ]; then \ + printf '%b' "$$GREEN$$BOLD"; \ + echo ">>> $$msg"; \ + printf '%b' "$$RESET"; \ +else \ + printf '%b' "$$RED$$BOLD"; \ + echo ">>> Some projects Failed"; \ + printf '%b' "$$RESET"; \ +fi; +endef all: @status=0; \ GREEN='\033[32m'; RED='\033[31m'; BOLD='\033[1m'; RESET='\033[0m'; \ - passed=""; failed=""; count=0; fcount=0; \ + passed=""; failed=""; count=0; \ for m in $(MAPPERS); do \ for d in "$$m"/*/; do \ [ -d "$$d" ] || continue; \ project="$${d%/}"; \ - if [ -f "$$project/Makefile" ]; then \ - echo "=== Building $$project ==="; \ - count=$$((count + 1)); \ - if $(MAKE) -C "$$project"; then \ - printf '%b' "$$GREEN"; \ - echo ">>> $$project: Passed"; \ - printf '%b' "$$RESET"; \ - passed="$$passed|$$project"; \ - else \ - printf '%b' "$$RED"; \ - echo ">>> $$project: Failed"; \ - printf '%b' "$$RESET"; \ - failed="$$failed|$$project"; \ - fcount=$$((fcount + 1)); \ - status=1; \ - fi; \ - else \ - echo "=== Skipping $$project (no Makefile) ==="; \ - fi; \ + $(call build_project) \ done; \ done; \ - echo ""; \ - echo "=== Build Summary ==="; \ - echo "Total projects built: $$count"; \ - printf '%b' "$$GREEN"; \ - pcount=$$(echo "$$passed" | tr '|' '\n' | grep -c .); \ - echo "Passed ($$pcount):"; \ - echo "$$passed" | tr '|' '\n' | grep -v '^$$' | sed 's/^/ - /'; \ - printf '%b' "$$RESET"; \ - if [ -n "$$failed" ]; then \ - printf '%b' "$$RED$$BOLD"; \ - fcount=$$(echo "$$failed" | tr '|' '\n' | grep -c .); \ - echo "Failed ($$fcount):"; \ - echo "$$failed" | tr '|' '\n' | grep -v '^$$' | sed 's/^/ - /'; \ - printf '%b' "$$RESET"; \ - fi; \ - if [ $$status -eq 0 ]; then \ - printf '%b' "$$GREEN$$BOLD"; \ - echo ">>> All projects Passed"; \ - printf '%b' "$$RESET"; \ - else \ - printf '%b' "$$RED$$BOLD"; \ - echo ">>> Some projects Failed"; \ - printf '%b' "$$RESET"; \ - fi; \ + msg="All $$count Projects Passed"; \ + $(call summary,Build) \ exit $$status clean: @@ -74,43 +94,61 @@ clean: done; \ exit $$status +# Pre-promotion tier (_wip///). Explicitly opt-in: no other +# target builds, cleans or otherwise reaches into the _wip/ tree. +wip: + @status=0; \ + GREEN='\033[32m'; RED='\033[31m'; BOLD='\033[1m'; RESET='\033[0m'; \ + passed=""; failed=""; count=0; \ + for m in $(WIP)/*/; do \ + [ -d "$$m" ] || continue; \ + for d in "$$m"*/; do \ + [ -d "$$d" ] || continue; \ + project="$${d%/}"; \ + $(call build_project) \ + done; \ + done; \ + msg="All $$count WIP Projects Passed"; \ + $(call summary,WIP Build) \ + exit $$status + +# Clean the pre-promotion tier only. +wipclean: + @status=0; \ + for m in $(WIP)/*/; do \ + [ -d "$$m" ] || continue; \ + for d in "$$m"*/; do \ + [ -d "$$d" ] || continue; \ + project="$${d%/}"; \ + if [ -f "$$project/Makefile" ]; then \ + echo "=== Cleaning $$project ==="; \ + $(MAKE) -C "$$project" clean || status=1; \ + fi; \ + done; \ + done; \ + exit $$status + # Per-mapper targets, e.g. "make MMC3" $(MAPPERS): @status=0; \ GREEN='\033[32m'; RED='\033[31m'; BOLD='\033[1m'; RESET='\033[0m'; \ + passed=""; failed=""; count=0; \ for d in "$@"/*/; do \ [ -d "$$d" ] || continue; \ project="$${d%/}"; \ - if [ -f "$$project/Makefile" ]; then \ - echo "=== Building $$project ==="; \ - if $(MAKE) -C "$$project"; then \ - printf '%b' "$$GREEN"; \ - echo ">>> $$project: Passed"; \ - printf '%b' "$$RESET"; \ - else \ - printf '%b' "$$RED"; \ - echo ">>> $$project: Failed"; \ - printf '%b' "$$RESET"; \ - status=1; \ - fi; \ - fi; \ + $(call build_project) \ done; \ - if [ $$status -eq 0 ]; then \ - printf '%b' "$$GREEN$$BOLD"; \ - echo ">>> All $$@ projects Passed"; \ - printf '%b' "$$RESET"; \ - else \ - printf '%b' "$$RED$$BOLD"; \ - echo ">>> Some $$@ projects Failed"; \ - printf '%b' "$$RESET"; \ - fi; \ + msg="All $$count $@ Projects Passed"; \ + $(call summary,$@ Build) \ exit $$status help: @echo "Usage: make [target]" @echo "" @echo "Targets:" - @echo " all - Build and verify every project (all mappers)" - @echo " clean - Clean build artifacts in every project" + @echo " all - Build and verify every promoted project (all mappers)" + @echo " clean - Clean build artifacts in every promoted project" @echo " - Build only one mapper: $(MAPPERS)" + @echo " wip - Build and verify every project under $(WIP)/ (pre-promotion tier)" + @echo " wipclean - Clean build artifacts under $(WIP)/" @echo " help - Show this help" diff --git a/NROM/Balloon Fight (JU)/README.md b/NROM/Balloon Fight (JU)/README.md index 11c09f8..3e83e49 100644 --- a/NROM/Balloon Fight (JU)/README.md +++ b/NROM/Balloon Fight (JU)/README.md @@ -294,4 +294,96 @@ and `SwapObjectIndexes`. Those operands are deliberately left numeric rather tha a speculative name; a neutral `$13` companion to `Temp12` would close them. Build verification: `make` in `copilot/` produces `reconstructed.nes`, compared whole-ROM -against `rom.nes` (byte-identical). \ No newline at end of file +against `rom.nes` (byte-identical). + +--- + +## 11. Audit Trail (comment format) + +Every instruction and data line in `prg.s` carries the canonical repo audit comment — +`; CPU:$XXXX PRG:XXXX AA BB` — giving the CPU address, the PRG offset and the exact +emitted bytes. That comment is the byte-identity trail, so its *contents* and its +*column* both matter. + +**What was wrong (fixed 2026-10-21).** + +1. **The addresses were stale by two bytes.** The comment trail had been generated when + the warm-start signature was still a single byte, so from + `ResetInitializationData` ($C085) onward every comment claimed a CPU address and PRG + offset two bytes below the truth — `NmiHandler` read `$C092` instead of `$C094`, + `AllocateEffectObject` read `$C469` instead of `$C46B`, and so on. The `.byte "HAL"` + string at $C082–$C084 is three bytes, not one. **5,944 of the 6,007** comments were + affected; the routine headers (`; PRG offsets:` / `; CPU range:`) and the linker + labels were right all along, so the two disagreed with each other. +2. **The comments were not in the canonical column.** They sat two spaces after the + mnemonic instead of in the column-35 field that `nesdis.py` emits + (`f" {text:<31}; CPU:…"`), so the file had no column discipline at all. + +**What was done.** `_tools/repair_audit_comments.py` rebuilt the trail from the `ca65 -l` +listing (the linker is ground truth for each source line's offset and byte span) and +validated every rewritten comment against `prg.bin`; `_tools/align_audit_comments.py` +then restored the column. Both steps are whitespace-and-comment only — the code text of +all 8,544 lines is unchanged, so the rebuild stays byte-identical. + +A bug in `_tools/align_audit_comments.py` was fixed at the same time: it tested the +*indented* code length against 31 rather than against 35, so code texts of 28–31 +characters (83 + 36 + 51 lines here) were never padded into the column. + +**Verification.** + +- `make` → `Byte-identical ROM verified.` +- All **6,007** audit comments re-checked against `prg.bin`: every byte list matches the + ROM at the offset it names, and every `CPU` field equals `$C000 + PRG`. +- All **63** routine headers re-checked against the instruction comments they describe: + every `; PRG offsets:` range and `; PRG offset:` entry point agrees. +- Every label in the source agrees with the linker label file (`reconstructed.lbl`). +- `python3 _tools/verify_pass1.py "Balloon Fight (JU)"` → `canonical`, verdict `OK`. + +--- + +## 12. Routine Headers — the `Clobbers:` Section + +The header template `AGENTS.md` describes is *global + local description, parameters, +returns, clobbers*. The first four were already here; the fifth was missing from 61 of +the 63 routine headers (only `AllocateEffectObject` and `AllocateGameplayObject` had +one, and both were incomplete). All 63 now carry a `; Clobbers:` block, so every header +in the file is complete. + +**Nothing was guessed.** `_tools/derive_clobbers.py` derives the block from the source: + +- the **opcode** comes from the audit comment's byte list, so the addressing mode is + exact (`sta $0400,x` is ABSX, `sta Zp00` is ZP) and a data directive is never + mistaken for an instruction; +- the **operand** is resolved through `locals.inc`, `symbols.inc` and the labels in + `prg.s`, so a clobber can be named — and where several names share one address + (`Temp12` and `RecordIndex` are both $12) the first name in `locals.inc` is used; +- the **control flow** comes from the instructions. A *unit* is a named entry point in + the source; the code a unit reaches — the shared tails it branches into, the block it + falls through into — is its own, while a `jsr`/`jmp` to another unit is a call, so + the callee's clobbers count but its code is not merged in; +- **register preservation** is modelled: a small abstract interpreter carries the value + of A, X, Y and of each processor flag through the unit, so a routine that saves a + register on the stack and puts it back is not reported as clobbering it. That is why + `FlushPpuCommandPreserved` reports only A, and why `NmiHandler` — which saves and + restores A, X and Y around the frame — reports *no register* at all; +- a call into code the project has not decoded (a forward reference in `locals.inc` + that lands in the undecoded upper bank) can damage anything, so it is reported as a + clobber of every register and every flag. + +The flags are named individually — `the N, Z, C and V flags` — because that is what the +instructions actually set. + +**Results worth noting.** + +| Routine | Clobbers | Why | +|---|---|---| +| `NmiHandler` | no register, the N, Z, C and V flags | saves and restores A, X and Y around the frame | +| `FlushPpuCommandPreserved` | A, the N, Z and C flags | the name is the contract: X and Y come back unchanged | +| `IrqHandler` | nothing | a one-instruction self-loop | +| `TriggerBonusObjectEffect` | A, the N, Z, C and V flags | moves Y into X and puts the old X back into X; A is left holding the old X | +| `AllocateEffectObject` | A and X, the N and Z flags | the hand-written "A and X." was right about the registers and silent about the rest | + +**Verification.** Comment-only change: the code text of all 8,538 lines is unchanged, +`make` still prints **Byte-identical ROM verified.**, the 6,007 audit comments still +re-check against `prg.bin`, and the tool is idempotent — running it twice leaves the +file byte-identical. \ No newline at end of file diff --git a/NROM/Balloon Fight (JU)/locals.inc b/NROM/Balloon Fight (JU)/locals.inc index 8b641d5..a1b89a1 100644 --- a/NROM/Balloon Fight (JU)/locals.inc +++ b/NROM/Balloon Fight (JU)/locals.inc @@ -224,6 +224,3 @@ UpdateGameplayObjects = $E691 ApplyBonusEffect = $E983 AdjustPlayerHorizontalState = $EBB2 AdjustPlayerVerticalState = $EBBB - -ReflectObjectYVelocity = $CA4F -UpdateSpecialObjectSystem = $C6F9 \ No newline at end of file diff --git a/NROM/Balloon Fight (JU)/prg.s b/NROM/Balloon Fight (JU)/prg.s index 4c7235c..c7d9b3d 100644 --- a/NROM/Balloon Fight (JU)/prg.s +++ b/NROM/Balloon Fight (JU)/prg.s @@ -16,111 +16,115 @@ ; Returns: ; Does not return. Execution continues in the preserved PRG region. ; +; Clobbers: +; A, X and Y, all the processor flags, the OAM shadow and the RAM fields +; it writes. +; ; PRG offsets: $0000-$007E ; CPU range: $C000-$C07E ; Size: $007F bytes ;=============================================================================== Reset: - lda #$00 ; CPU:$C000 PRG:0000 A9 00 - sta PPUCTRL ; CPU:$C002 PRG:0002 8D 00 20 - sta PPUMASK ; CPU:$C005 PRG:0005 8D 01 20 + lda #$00 ; CPU:$C000 PRG:0000 A9 00 + sta PPUCTRL ; CPU:$C002 PRG:0002 8D 00 20 + sta PPUMASK ; CPU:$C005 PRG:0005 8D 01 20 WaitForVBlankSet: - lda PPUSTATUS ; CPU:$C008 PRG:0008 AD 02 20 - bpl WaitForVBlankSet ; CPU:$C00B PRG:000B 10 FB + lda PPUSTATUS ; CPU:$C008 PRG:0008 AD 02 20 + bpl WaitForVBlankSet ; CPU:$C00B PRG:000B 10 FB WaitForVBlankClear: - lda PPUSTATUS ; CPU:$C00D PRG:000D AD 02 20 - bmi WaitForVBlankClear ; CPU:$C010 PRG:0010 30 FB + lda PPUSTATUS ; CPU:$C00D PRG:000D AD 02 20 + bmi WaitForVBlankClear ; CPU:$C010 PRG:0010 30 FB WaitForSecondVBlank: - lda PPUSTATUS ; CPU:$C012 PRG:0012 AD 02 20 - bpl WaitForSecondVBlank ; CPU:$C015 PRG:0015 10 FB + lda PPUSTATUS ; CPU:$C012 PRG:0012 AD 02 20 + bpl WaitForSecondVBlank ; CPU:$C015 PRG:0015 10 FB - sei ; CPU:$C017 PRG:0017 78 - cld ; CPU:$C018 PRG:0018 D8 - ldx #$FF ; CPU:$C019 PRG:0019 A2 FF - txs ; CPU:$C01B PRG:001B 9A - ldx #$12 ; CPU:$C01C PRG:001C A2 12 - lda #$00 ; CPU:$C01E PRG:001E A9 00 + sei ; CPU:$C017 PRG:0017 78 + cld ; CPU:$C018 PRG:0018 D8 + ldx #$FF ; CPU:$C019 PRG:0019 A2 FF + txs ; CPU:$C01B PRG:001B 9A + ldx #$12 ; CPU:$C01C PRG:001C A2 12 + lda #$00 ; CPU:$C01E PRG:001E A9 00 ClearZeroPage: - sta PpuControlShadow,x ; CPU:$C020 PRG:0020 95 00 - inx ; CPU:$C022 PRG:0022 E8 - bne ClearZeroPage ; CPU:$C023 PRG:0023 D0 FB + sta PpuControlShadow,x ; CPU:$C020 PRG:0020 95 00 + inx ; CPU:$C022 PRG:0022 E8 + bne ClearZeroPage ; CPU:$C023 PRG:0023 D0 FB - ldx #$02 ; CPU:$C025 PRG:0025 A2 02 + ldx #$02 ; CPU:$C025 PRG:0025 A2 02 CheckSavedSignature: - lda $07FA,x ; CPU:$C027 PRG:0027 BD FA 07 - cmp $C082,x ; CPU:$C02A PRG:002A DD 82 C0 - bne InitializeMemory ; CPU:$C02D PRG:002D D0 05 - dex ; CPU:$C02F PRG:002F CA - bpl CheckSavedSignature ; CPU:$C030 PRG:0030 10 F5 - bmi SavedSignatureValid ; CPU:$C032 PRG:0032 30 43 + lda $07FA,x ; CPU:$C027 PRG:0027 BD FA 07 + cmp $C082,x ; CPU:$C02A PRG:002A DD 82 C0 + bne InitializeMemory ; CPU:$C02D PRG:002D D0 05 + dex ; CPU:$C02F PRG:002F CA + bpl CheckSavedSignature ; CPU:$C030 PRG:0030 10 F5 + bmi SavedSignatureValid ; CPU:$C032 PRG:0032 30 43 InitializeMemory: - ldx #$00 ; CPU:$C034 PRG:0034 A2 00 - txa ; CPU:$C036 PRG:0036 8A + ldx #$00 ; CPU:$C034 PRG:0034 A2 00 + txa ; CPU:$C036 PRG:0036 8A ClearZeroPageAndStackPage: - sta PpuControlShadow,x ; CPU:$C037 PRG:0037 95 00 - sta SortedRecordTable,x ; CPU:$C039 PRG:0039 9D 00 07 - inx ; CPU:$C03C PRG:003C E8 + sta PpuControlShadow,x ; CPU:$C037 PRG:0037 95 00 + sta SortedRecordTable,x ; CPU:$C039 PRG:0039 9D 00 07 + inx ; CPU:$C03C PRG:003C E8 bne ClearZeroPageAndStackPage ; CPU:$C03D PRG:003D D0 F8 - lda #$32 ; CPU:$C03F PRG:003F A9 32 - sta SpawnPixelPosition ; CPU:$C041 PRG:0041 85 15 + lda #$32 ; CPU:$C03F PRG:003F A9 32 + sta SpawnPixelPosition ; CPU:$C041 PRG:0041 85 15 InitializeBlockLoop: - lda #$32 ; CPU:$C043 PRG:0043 A9 32 - jsr InitializeOrQueueObject ; CPU:$C045 PRG:0045 20 DE D6 - lda #$00 ; CPU:$C048 PRG:0048 A9 00 - sta SequenceStep ; CPU:$C04A PRG:004A 85 46 - jsr SortOrInitializeRecords ; CPU:$C04C PRG:004C 20 79 C5 - dec SpawnPixelPosition ; CPU:$C04F PRG:004F C6 15 - bne InitializeBlockLoop ; CPU:$C051 PRG:0051 D0 F0 + lda #$32 ; CPU:$C043 PRG:0043 A9 32 + jsr InitializeOrQueueObject ; CPU:$C045 PRG:0045 20 DE D6 + lda #$00 ; CPU:$C048 PRG:0048 A9 00 + sta SequenceStep ; CPU:$C04A PRG:004A 85 46 + jsr SortOrInitializeRecords ; CPU:$C04C PRG:004C 20 79 C5 + dec SpawnPixelPosition ; CPU:$C04F PRG:004F C6 15 + bne InitializeBlockLoop ; CPU:$C051 PRG:0051 D0 F0 - ldx #$0E ; CPU:$C053 PRG:0053 A2 0E + ldx #$0E ; CPU:$C053 PRG:0053 A2 0E CopyInitializationData: - lda $C085,x ; CPU:$C055 PRG:0055 BD 85 C0 - sta $0629,x ; CPU:$C058 PRG:0058 9D 29 06 - dex ; CPU:$C05B PRG:005B CA - bpl CopyInitializationData ; CPU:$C05C PRG:005C 10 F7 + lda $C085,x ; CPU:$C055 PRG:0055 BD 85 C0 + sta $0629,x ; CPU:$C058 PRG:0058 9D 29 06 + dex ; CPU:$C05B PRG:005B CA + bpl CopyInitializationData ; CPU:$C05C PRG:005C 10 F7 - ldx #$04 ; CPU:$C05E PRG:005E A2 04 + ldx #$04 ; CPU:$C05E PRG:005E A2 04 ClearLocalVariables: - lda #$00 ; CPU:$C060 PRG:0060 A9 00 - sta CurrentRecord,x ; CPU:$C062 PRG:0062 95 03 - dex ; CPU:$C064 PRG:0064 CA - bpl ClearLocalVariables ; CPU:$C065 PRG:0065 10 F9 + lda #$00 ; CPU:$C060 PRG:0060 A9 00 + sta CurrentRecord,x ; CPU:$C062 PRG:0062 95 03 + dex ; CPU:$C064 PRG:0064 CA + bpl ClearLocalVariables ; CPU:$C065 PRG:0065 10 F9 - lda #$00 ; CPU:$C067 PRG:0067 A9 00 - jsr InitializeOrQueueObject ; CPU:$C069 PRG:0069 20 DE D6 - ldx #$02 ; CPU:$C06C PRG:006C A2 02 + lda #$00 ; CPU:$C067 PRG:0067 A9 00 + jsr InitializeOrQueueObject ; CPU:$C069 PRG:0069 20 DE D6 + ldx #$02 ; CPU:$C06C PRG:006C A2 02 CopySavedSignature: - lda $C082,x ; CPU:$C06E PRG:006E BD 82 C0 - sta $07FA,x ; CPU:$C071 PRG:0071 9D FA 07 - dex ; CPU:$C074 PRG:0074 CA - bpl CopySavedSignature ; CPU:$C075 PRG:0075 10 F7 + lda $C082,x ; CPU:$C06E PRG:006E BD 82 C0 + sta $07FA,x ; CPU:$C071 PRG:0071 9D FA 07 + dex ; CPU:$C074 PRG:0074 CA + bpl CopySavedSignature ; CPU:$C075 PRG:0075 10 F7 SavedSignatureValid: - lda #$1E ; CPU:$C077 PRG:0077 A9 1E - sta PpuMaskShadow ; CPU:$C079 PRG:0079 85 01 - lda #$90 ; CPU:$C07B PRG:007B A9 90 - sta PpuControlShadow ; CPU:$C07D PRG:007D 85 00 + lda #$1E ; CPU:$C077 PRG:0077 A9 1E + sta PpuMaskShadow ; CPU:$C079 PRG:0079 85 01 + lda #$90 ; CPU:$C07B PRG:007B A9 90 + sta PpuControlShadow ; CPU:$C07D PRG:007D 85 00 ; Decoded PRG block $007F-$046A. EnterMainInitialization: - jmp MainInitialization ; CPU:$C07F PRG:007F 4C D4 F1 + jmp MainInitialization ; CPU:$C07F PRG:007F 4C D4 F1 WarmStartSignature: .byte "HAL" ; CPU:$C082 PRG:0082 48 41 4C ResetInitializationData: - .byte $00, $00, $00, $01, $00, $00, $00, $00 ; CPU:$C083 PRG:0083 00 00 00 01 00 00 00 00 - .byte $01, $00, $00, $00, $05, $02, $00 ; CPU:$C08B PRG:008B 01 00 00 00 05 02 00 + .byte $00, $00, $00, $01, $00, $00, $00, $00 ; CPU:$C085 PRG:0085 00 00 00 01 00 00 00 00 + .byte $01, $00, $00, $00, $05, $02, $00 ; CPU:$C08D PRG:008D 01 00 00 00 05 02 00 ;=============================================================================== ; NmiHandler ; @@ -137,64 +141,67 @@ ResetInitializationData: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; no register, the N, Z, C and V flags, the RAM fields it writes. +; ; PRG offset: $0094 ; CPU address: $C094 ;=============================================================================== NmiHandler: - pha ; CPU:$C092 PRG:0092 48 - txa ; CPU:$C093 PRG:0093 8A - pha ; CPU:$C094 PRG:0094 48 - tya ; CPU:$C095 PRG:0095 98 - pha ; CPU:$C096 PRG:0096 48 - lda #$00 ; CPU:$C097 PRG:0097 A9 00 - sta OAMADDR ; CPU:$C099 PRG:0099 8D 03 20 - lda #$02 ; CPU:$C09C PRG:009C A9 02 - sta OAMDMA ; CPU:$C09E PRG:009E 8D 14 40 - lda PpuBufferReadOffset ; CPU:$C0A1 PRG:00A1 A5 52 - cmp PpuBufferWriteOffset ; CPU:$C0A3 PRG:00A3 C5 53 - beq NmiHandler_Block ; CPU:$C0A5 PRG:00A5 F0 03 - jsr FlushPpuCommandPreserved ; CPU:$C0A7 PRG:00A7 20 7C C1 + pha ; CPU:$C094 PRG:0094 48 + txa ; CPU:$C095 PRG:0095 8A + pha ; CPU:$C096 PRG:0096 48 + tya ; CPU:$C097 PRG:0097 98 + pha ; CPU:$C098 PRG:0098 48 + lda #$00 ; CPU:$C099 PRG:0099 A9 00 + sta OAMADDR ; CPU:$C09B PRG:009B 8D 03 20 + lda #$02 ; CPU:$C09E PRG:009E A9 02 + sta OAMDMA ; CPU:$C0A0 PRG:00A0 8D 14 40 + lda PpuBufferReadOffset ; CPU:$C0A3 PRG:00A3 A5 52 + cmp PpuBufferWriteOffset ; CPU:$C0A5 PRG:00A5 C5 53 + beq NmiHandler_Block ; CPU:$C0A7 PRG:00A7 F0 03 + jsr FlushPpuCommandPreserved ; CPU:$C0A9 PRG:00A9 20 7C C1 NmiHandler_Block: - jsr UpdatePpuTransferSources ; CPU:$C0AA PRG:00AA 20 0D D6 - jsr BuildFrameOam ; CPU:$C0AD PRG:00AD 20 98 D7 - inc FrameCounter ; CPU:$C0B0 PRG:00B0 E6 19 - lda #$20 ; CPU:$C0B2 PRG:00B2 A9 20 - sta PPUADDR ; CPU:$C0B4 PRG:00B4 8D 06 20 - lda #$00 ; CPU:$C0B7 PRG:00B7 A9 00 - sta PPUADDR ; CPU:$C0B9 PRG:00B9 8D 06 20 - lda #$00 ; CPU:$C0BC PRG:00BC A9 00 - sta PPUSCROLL ; CPU:$C0BE PRG:00BE 8D 05 20 - sta PPUSCROLL ; CPU:$C0C1 PRG:00C1 8D 05 20 - jsr UpdateAudioFrame ; CPU:$C0C4 PRG:00C4 20 F7 FF - lda #$01 ; CPU:$C0C7 PRG:00C7 A9 01 - sta NmiCompletedFlag ; CPU:$C0C9 PRG:00C9 85 02 - lda RenderingDisabledFlag ; CPU:$C0CB PRG:00CB A5 16 - beq NmiHandler_Block_3 ; CPU:$C0CD PRG:00CD F0 20 + jsr UpdatePpuTransferSources ; CPU:$C0AC PRG:00AC 20 0D D6 + jsr BuildFrameOam ; CPU:$C0AF PRG:00AF 20 98 D7 + inc FrameCounter ; CPU:$C0B2 PRG:00B2 E6 19 + lda #$20 ; CPU:$C0B4 PRG:00B4 A9 20 + sta PPUADDR ; CPU:$C0B6 PRG:00B6 8D 06 20 + lda #$00 ; CPU:$C0B9 PRG:00B9 A9 00 + sta PPUADDR ; CPU:$C0BB PRG:00BB 8D 06 20 + lda #$00 ; CPU:$C0BE PRG:00BE A9 00 + sta PPUSCROLL ; CPU:$C0C0 PRG:00C0 8D 05 20 + sta PPUSCROLL ; CPU:$C0C3 PRG:00C3 8D 05 20 + jsr UpdateAudioFrame ; CPU:$C0C6 PRG:00C6 20 F7 FF + lda #$01 ; CPU:$C0C9 PRG:00C9 A9 01 + sta NmiCompletedFlag ; CPU:$C0CB PRG:00CB 85 02 + lda RenderingDisabledFlag ; CPU:$C0CD PRG:00CD A5 16 + beq NmiHandler_Block_3 ; CPU:$C0CF PRG:00CF F0 20 NmiHandler_Block_1: - lda PPUSTATUS ; CPU:$C0CF PRG:00CF AD 02 20 - bmi NmiHandler_Block_1 ; CPU:$C0D2 PRG:00D2 30 FB - ldx #$04 ; CPU:$C0D4 PRG:00D4 A2 04 - ldy #$C6 ; CPU:$C0D6 PRG:00D6 A0 C6 + lda PPUSTATUS ; CPU:$C0D1 PRG:00D1 AD 02 20 + bmi NmiHandler_Block_1 ; CPU:$C0D4 PRG:00D4 30 FB + ldx #$04 ; CPU:$C0D6 PRG:00D6 A2 04 + ldy #$C6 ; CPU:$C0D8 PRG:00D8 A0 C6 NmiHandler_Block_2: - dey ; CPU:$C0D8 PRG:00D8 88 - bne NmiHandler_Block_2 ; CPU:$C0D9 PRG:00D9 D0 FD - dex ; CPU:$C0DB PRG:00DB CA - bne NmiHandler_Block_2 ; CPU:$C0DC PRG:00DC D0 FA - lda PpuControlBase ; CPU:$C0DE PRG:00DE A5 18 - ora PpuControlShadow ; CPU:$C0E0 PRG:00E0 05 00 - sta PPUCTRL ; CPU:$C0E2 PRG:00E2 8D 00 20 - lda PpuScrollX ; CPU:$C0E5 PRG:00E5 A5 17 - sta PPUSCROLL ; CPU:$C0E7 PRG:00E7 8D 05 20 - lda #$00 ; CPU:$C0EA PRG:00EA A9 00 - sta PPUSCROLL ; CPU:$C0EC PRG:00EC 8D 05 20 + dey ; CPU:$C0DA PRG:00DA 88 + bne NmiHandler_Block_2 ; CPU:$C0DB PRG:00DB D0 FD + dex ; CPU:$C0DD PRG:00DD CA + bne NmiHandler_Block_2 ; CPU:$C0DE PRG:00DE D0 FA + lda PpuControlBase ; CPU:$C0E0 PRG:00E0 A5 18 + ora PpuControlShadow ; CPU:$C0E2 PRG:00E2 05 00 + sta PPUCTRL ; CPU:$C0E4 PRG:00E4 8D 00 20 + lda PpuScrollX ; CPU:$C0E7 PRG:00E7 A5 17 + sta PPUSCROLL ; CPU:$C0E9 PRG:00E9 8D 05 20 + lda #$00 ; CPU:$C0EC PRG:00EC A9 00 + sta PPUSCROLL ; CPU:$C0EE PRG:00EE 8D 05 20 NmiHandler_Block_3: - pla ; CPU:$C0EF PRG:00EF 68 - tay ; CPU:$C0F0 PRG:00F0 A8 - pla ; CPU:$C0F1 PRG:00F1 68 - tax ; CPU:$C0F2 PRG:00F2 AA - pla ; CPU:$C0F3 PRG:00F3 68 - rti ; CPU:$C0F4 PRG:00F4 40 + pla ; CPU:$C0F1 PRG:00F1 68 + tay ; CPU:$C0F2 PRG:00F2 A8 + pla ; CPU:$C0F3 PRG:00F3 68 + tax ; CPU:$C0F4 PRG:00F4 AA + pla ; CPU:$C0F5 PRG:00F5 68 + rti ; CPU:$C0F6 PRG:00F6 40 ;=============================================================================== ; IrqHandler ; @@ -211,12 +218,15 @@ NmiHandler_Block_3: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; nothing. +; ; PRG offset: $00F7 ; CPU address: $C0F7 ;=============================================================================== IrqHandler: - jmp IrqHandler ; CPU:$C0F5 PRG:00F5 4C F7 C0 + jmp IrqHandler ; CPU:$C0F7 PRG:00F7 4C F7 C0 ;=============================================================================== ; DisableNmi ; @@ -233,17 +243,20 @@ IrqHandler: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, the N and Z flags, PpuControlShadow, PPUCTRL. +; ; PRG offset: $00FA ; CPU address: $C0FA ;=============================================================================== DisableNmi: - lda PpuControlShadow ; CPU:$C0F8 PRG:00F8 A5 00 - and #$7F ; CPU:$C0FA PRG:00FA 29 7F + lda PpuControlShadow ; CPU:$C0FA PRG:00FA A5 00 + and #$7F ; CPU:$C0FC PRG:00FC 29 7F DisableNmi_Block: - sta PPUCTRL ; CPU:$C0FC PRG:00FC 8D 00 20 - sta PpuControlShadow ; CPU:$C0FF PRG:00FF 85 00 - rts ; CPU:$C101 PRG:0101 60 + sta PPUCTRL ; CPU:$C0FE PRG:00FE 8D 00 20 + sta PpuControlShadow ; CPU:$C101 PRG:0101 85 00 + rts ; CPU:$C103 PRG:0103 60 ;=============================================================================== ; EnableNmi ; @@ -260,14 +273,18 @@ DisableNmi_Block: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, the N and Z flags, PpuControlShadow, NmiCompletedFlag, PPUCTRL, +; PPUMASK. +; ; PRG offset: $0104 ; CPU address: $C104 ;=============================================================================== EnableNmi: - lda PpuControlShadow ; CPU:$C102 PRG:0102 A5 00 - ora #$80 ; CPU:$C104 PRG:0104 09 80 - bne DisableNmi_Block ; CPU:$C106 PRG:0106 D0 F4 + lda PpuControlShadow ; CPU:$C104 PRG:0104 A5 00 + ora #$80 ; CPU:$C106 PRG:0106 09 80 + bne DisableNmi_Block ; CPU:$C108 PRG:0108 D0 F4 ;=============================================================================== ; SetPpuControl ; @@ -284,18 +301,21 @@ EnableNmi: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, the N and Z flags, NmiCompletedFlag, PPUMASK. +; ; PRG offset: $010A ; CPU address: $C10A ;=============================================================================== SetPpuControl: - lda #$00 ; CPU:$C108 PRG:0108 A9 00 + lda #$00 ; CPU:$C10A PRG:010A A9 00 SetPpuControl_Block: - pha ; CPU:$C10A PRG:010A 48 - jsr WaitForFrame ; CPU:$C10B PRG:010B 20 65 F4 - pla ; CPU:$C10E PRG:010E 68 - sta PPUMASK ; CPU:$C10F PRG:010F 8D 01 20 - rts ; CPU:$C112 PRG:0112 60 + pha ; CPU:$C10C PRG:010C 48 + jsr WaitForFrame ; CPU:$C10D PRG:010D 20 65 F4 + pla ; CPU:$C110 PRG:0110 68 + sta PPUMASK ; CPU:$C111 PRG:0111 8D 01 20 + rts ; CPU:$C114 PRG:0114 60 ;=============================================================================== ; SetPpuMask ; @@ -312,13 +332,17 @@ SetPpuControl_Block: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, X and Y, the N, Z and C flags, NmiCompletedFlag, Temp12, +; PpuBufferWriteOffset, $0300, PPUMASK. +; ; PRG offset: $0115 ; CPU address: $C115 ;=============================================================================== SetPpuMask: - lda PpuMaskShadow ; CPU:$C113 PRG:0113 A5 01 - bne SetPpuControl_Block ; CPU:$C115 PRG:0115 D0 F3 + lda PpuMaskShadow ; CPU:$C115 PRG:0115 A5 01 + bne SetPpuControl_Block ; CPU:$C117 PRG:0117 D0 F3 ;=============================================================================== ; WaitForFrameAndSetPpuMask ; @@ -335,22 +359,25 @@ SetPpuMask: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, X and Y, the N, Z and C flags, Temp12, PpuBufferWriteOffset, $0300. +; ; PRG offset: $0119 ; CPU address: $C119 ;=============================================================================== WaitForFrameAndSetPpuMask: - jsr BuildPpuCommand ; CPU:$C117 PRG:0117 20 54 C1 - ldy #$00 ; CPU:$C11A PRG:011A A0 00 + jsr BuildPpuCommand ; CPU:$C119 PRG:0119 20 54 C1 + ldy #$00 ; CPU:$C11C PRG:011C A0 00 WaitForFrameAndSetPpuMask_Block: - lda a:PpuCommandData0,y ; CPU:$C11C PRG:011C B9 57 00 - sta $0300,x ; CPU:$C11F PRG:011F 9D 00 03 - inx ; CPU:$C122 PRG:0122 E8 - iny ; CPU:$C123 PRG:0123 C8 - cpy PpuCommandLength ; CPU:$C124 PRG:0124 C4 56 - bne WaitForFrameAndSetPpuMask_Block ; CPU:$C126 PRG:0126 D0 F4 - stx PpuBufferWriteOffset ; CPU:$C128 PRG:0128 86 53 - rts ; CPU:$C12A PRG:012A 60 + lda a:PpuCommandData0,y ; CPU:$C11E PRG:011E B9 57 00 + sta $0300,x ; CPU:$C121 PRG:0121 9D 00 03 + inx ; CPU:$C124 PRG:0124 E8 + iny ; CPU:$C125 PRG:0125 C8 + cpy PpuCommandLength ; CPU:$C126 PRG:0126 C4 56 + bne WaitForFrameAndSetPpuMask_Block ; CPU:$C128 PRG:0128 D0 F4 + stx PpuBufferWriteOffset ; CPU:$C12A PRG:012A 86 53 + rts ; CPU:$C12C PRG:012C 60 ;=============================================================================== ; CopyBytesToPpuBuffer ; @@ -367,13 +394,17 @@ WaitForFrameAndSetPpuMask_Block: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A and Y, the N, Z, C and V flags, Temp12, PpuSourcePtrLo, +; PpuSourcePtrHi, PpuBufferWriteOffset, $0300. +; ; PRG offset: $012D ; CPU address: $C12D ;=============================================================================== CopyBytesToPpuBuffer: - lda #$57 ; CPU:$C12B PRG:012B A9 57 - ldy #$00 ; CPU:$C12D PRG:012D A0 00 + lda #$57 ; CPU:$C12D PRG:012D A9 57 + ldy #$00 ; CPU:$C12F PRG:012F A0 00 ;=============================================================================== ; AppendBytesToPpuBuffer ; @@ -390,16 +421,20 @@ CopyBytesToPpuBuffer: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A and Y, the N, Z, C and V flags, Temp12, PpuSourcePtrLo, +; PpuSourcePtrHi, PpuBufferWriteOffset, $0300. +; ; PRG offset: $0131 ; CPU address: $C131 ;=============================================================================== AppendBytesToPpuBuffer: - sta PpuSourcePtrLo ; CPU:$C12F PRG:012F 85 21 - sty PpuSourcePtrHi ; CPU:$C131 PRG:0131 84 22 - txa ; CPU:$C133 PRG:0133 8A - pha ; CPU:$C134 PRG:0134 48 - ldy #$02 ; CPU:$C135 PRG:0135 A0 02 + sta PpuSourcePtrLo ; CPU:$C131 PRG:0131 85 21 + sty PpuSourcePtrHi ; CPU:$C133 PRG:0133 84 22 + txa ; CPU:$C135 PRG:0135 8A + pha ; CPU:$C136 PRG:0136 48 + ldy #$02 ; CPU:$C137 PRG:0137 A0 02 ;=============================================================================== ; AppendLengthPrefixedPpuData ; @@ -416,28 +451,32 @@ AppendBytesToPpuBuffer: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, PpuBufferWriteOffset, +; $0300. +; ; PRG offset: $0139 ; CPU address: $C139 ;=============================================================================== AppendLengthPrefixedPpuData: - lda (PpuSourcePtrLo),y ; CPU:$C137 PRG:0137 B1 21 - clc ; CPU:$C139 PRG:0139 18 - adc #$03 ; CPU:$C13A PRG:013A 69 03 - sta Temp12 ; CPU:$C13C PRG:013C 85 12 - ldx PpuBufferWriteOffset ; CPU:$C13E PRG:013E A6 53 - ldy #$00 ; CPU:$C140 PRG:0140 A0 00 + lda (PpuSourcePtrLo),y ; CPU:$C139 PRG:0139 B1 21 + clc ; CPU:$C13B PRG:013B 18 + adc #$03 ; CPU:$C13C PRG:013C 69 03 + sta Temp12 ; CPU:$C13E PRG:013E 85 12 + ldx PpuBufferWriteOffset ; CPU:$C140 PRG:0140 A6 53 + ldy #$00 ; CPU:$C142 PRG:0142 A0 00 AppendLengthPrefixedPpuData_Block: - lda (PpuSourcePtrLo),y ; CPU:$C142 PRG:0142 B1 21 - sta $0300,x ; CPU:$C144 PRG:0144 9D 00 03 - inx ; CPU:$C147 PRG:0147 E8 - iny ; CPU:$C148 PRG:0148 C8 - cpy Temp12 ; CPU:$C149 PRG:0149 C4 12 - bne AppendLengthPrefixedPpuData_Block ; CPU:$C14B PRG:014B D0 F5 - stx PpuBufferWriteOffset ; CPU:$C14D PRG:014D 86 53 - pla ; CPU:$C14F PRG:014F 68 - tax ; CPU:$C150 PRG:0150 AA - rts ; CPU:$C151 PRG:0151 60 + lda (PpuSourcePtrLo),y ; CPU:$C144 PRG:0144 B1 21 + sta $0300,x ; CPU:$C146 PRG:0146 9D 00 03 + inx ; CPU:$C149 PRG:0149 E8 + iny ; CPU:$C14A PRG:014A C8 + cpy Temp12 ; CPU:$C14B PRG:014B C4 12 + bne AppendLengthPrefixedPpuData_Block ; CPU:$C14D PRG:014D D0 F5 + stx PpuBufferWriteOffset ; CPU:$C14F PRG:014F 86 53 + pla ; CPU:$C151 PRG:0151 68 + tax ; CPU:$C152 PRG:0152 AA + rts ; CPU:$C153 PRG:0153 60 ;=============================================================================== ; BuildPpuCommand ; @@ -455,21 +494,24 @@ AppendLengthPrefixedPpuData_Block: ; Returns: ; PpuBufferWriteOffset advanced; command bytes appended to $0300 buffer. ; +; Clobbers: +; A and X, the N, Z and C flags, Temp12, $0300. +; ; PRG offset: $0154 ; CPU address: $C154 ;=============================================================================== BuildPpuCommand: - ldx PpuBufferWriteOffset ; CPU:$C152 PRG:0152 A6 53 - lda #$00 ; CPU:$C154 PRG:0154 A9 00 - sta Temp12 ; CPU:$C156 PRG:0156 85 12 - lda PpuCommandAddressLo ; CPU:$C158 PRG:0158 A5 55 - asl a ; CPU:$C15A PRG:015A 0A - asl a ; CPU:$C15B PRG:015B 0A - asl a ; CPU:$C15C PRG:015C 0A - asl a ; CPU:$C15D PRG:015D 0A - rol Temp12 ; CPU:$C15E PRG:015E 26 12 - asl a ; CPU:$C160 PRG:0160 0A + ldx PpuBufferWriteOffset ; CPU:$C154 PRG:0154 A6 53 + lda #$00 ; CPU:$C156 PRG:0156 A9 00 + sta Temp12 ; CPU:$C158 PRG:0158 85 12 + lda PpuCommandAddressLo ; CPU:$C15A PRG:015A A5 55 + asl a ; CPU:$C15C PRG:015C 0A + asl a ; CPU:$C15D PRG:015D 0A + asl a ; CPU:$C15E PRG:015E 0A + asl a ; CPU:$C15F PRG:015F 0A + rol Temp12 ; CPU:$C160 PRG:0160 26 12 + asl a ; CPU:$C162 PRG:0162 0A ;=============================================================================== ; AppendPpuAddressAndLength ; @@ -486,25 +528,28 @@ BuildPpuCommand: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A and X, the N, Z and C flags, Temp12, $0300. +; ; PRG offset: $0163 ; CPU address: $C163 ;=============================================================================== AppendPpuAddressAndLength: - rol Temp12 ; CPU:$C161 PRG:0161 26 12 - ora PpuCommandAddressHi ; CPU:$C163 PRG:0163 05 54 - pha ; CPU:$C165 PRG:0165 48 - lda Temp12 ; CPU:$C166 PRG:0166 A5 12 - ora #$20 ; CPU:$C168 PRG:0168 09 20 - sta $0300,x ; CPU:$C16A PRG:016A 9D 00 03 - inx ; CPU:$C16D PRG:016D E8 - pla ; CPU:$C16E PRG:016E 68 - sta $0300,x ; CPU:$C16F PRG:016F 9D 00 03 - inx ; CPU:$C172 PRG:0172 E8 - lda PpuCommandLength ; CPU:$C173 PRG:0173 A5 56 - sta $0300,x ; CPU:$C175 PRG:0175 9D 00 03 - inx ; CPU:$C178 PRG:0178 E8 - rts ; CPU:$C179 PRG:0179 60 + rol Temp12 ; CPU:$C163 PRG:0163 26 12 + ora PpuCommandAddressHi ; CPU:$C165 PRG:0165 05 54 + pha ; CPU:$C167 PRG:0167 48 + lda Temp12 ; CPU:$C168 PRG:0168 A5 12 + ora #$20 ; CPU:$C16A PRG:016A 09 20 + sta $0300,x ; CPU:$C16C PRG:016C 9D 00 03 + inx ; CPU:$C16F PRG:016F E8 + pla ; CPU:$C170 PRG:0170 68 + sta $0300,x ; CPU:$C171 PRG:0171 9D 00 03 + inx ; CPU:$C174 PRG:0174 E8 + lda PpuCommandLength ; CPU:$C175 PRG:0175 A5 56 + sta $0300,x ; CPU:$C177 PRG:0177 9D 00 03 + inx ; CPU:$C17A PRG:017A E8 + rts ; CPU:$C17B PRG:017B 60 ;=============================================================================== ; FlushPpuCommandPreserved ; @@ -521,21 +566,25 @@ AppendPpuAddressAndLength: ; Returns: ; X and Y preserved; PPU command buffer drained. ; +; Clobbers: +; A, the N, Z and C flags, PpuDestinationHi, PpuBufferReadOffset, +; PPUADDR, PPUDATA. +; ; PRG offset: $017C ; CPU address: $C17C ;=============================================================================== FlushPpuCommandPreserved: - tya ; CPU:$C17A PRG:017A 98 - pha ; CPU:$C17B PRG:017B 48 - txa ; CPU:$C17C PRG:017C 8A - pha ; CPU:$C17D PRG:017D 48 - jsr PreserveXYAndFinalizePpuCommand ; CPU:$C17E PRG:017E 20 88 C1 - pla ; CPU:$C181 PRG:0181 68 - tax ; CPU:$C182 PRG:0182 AA - pla ; CPU:$C183 PRG:0183 68 - tay ; CPU:$C184 PRG:0184 A8 - rts ; CPU:$C185 PRG:0185 60 + tya ; CPU:$C17C PRG:017C 98 + pha ; CPU:$C17D PRG:017D 48 + txa ; CPU:$C17E PRG:017E 8A + pha ; CPU:$C17F PRG:017F 48 + jsr PreserveXYAndFinalizePpuCommand ; CPU:$C180 PRG:0180 20 88 C1 + pla ; CPU:$C183 PRG:0183 68 + tax ; CPU:$C184 PRG:0184 AA + pla ; CPU:$C185 PRG:0185 68 + tay ; CPU:$C186 PRG:0186 A8 + rts ; CPU:$C187 PRG:0187 60 ;=============================================================================== ; PreserveXYAndFinalizePpuCommand ; @@ -552,16 +601,20 @@ FlushPpuCommandPreserved: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, X and Y, the N, Z and C flags, PpuDestinationHi, +; PpuBufferReadOffset, PPUADDR, PPUDATA. +; ; PRG offset: $0188 ; CPU address: $C188 ;=============================================================================== PreserveXYAndFinalizePpuCommand: - ldx PpuBufferReadOffset ; CPU:$C186 PRG:0186 A6 52 - lda $0300,x ; CPU:$C188 PRG:0188 BD 00 03 - inx ; CPU:$C18B PRG:018B E8 - sta PpuDestinationHi ; CPU:$C18C PRG:018C 85 50 - sta PPUADDR ; CPU:$C18E PRG:018E 8D 06 20 + ldx PpuBufferReadOffset ; CPU:$C188 PRG:0188 A6 52 + lda $0300,x ; CPU:$C18A PRG:018A BD 00 03 + inx ; CPU:$C18D PRG:018D E8 + sta PpuDestinationHi ; CPU:$C18E PRG:018E 85 50 + sta PPUADDR ; CPU:$C190 PRG:0190 8D 06 20 ;=============================================================================== ; FlushPpuCommandBuffer ; @@ -578,85 +631,89 @@ PreserveXYAndFinalizePpuCommand: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, X and Y, the N, Z and C flags, PpuDestinationHi, +; PpuBufferReadOffset, PPUADDR, PPUDATA. +; ; PRG offset: $0193 ; CPU address: $C193 ;=============================================================================== FlushPpuCommandBuffer: - lda $0300,x ; CPU:$C191 PRG:0191 BD 00 03 - inx ; CPU:$C194 PRG:0194 E8 - sta PPUADDR ; CPU:$C195 PRG:0195 8D 06 20 - ldy $0300,x ; CPU:$C198 PRG:0198 BC 00 03 - inx ; CPU:$C19B PRG:019B E8 + lda $0300,x ; CPU:$C193 PRG:0193 BD 00 03 + inx ; CPU:$C196 PRG:0196 E8 + sta PPUADDR ; CPU:$C197 PRG:0197 8D 06 20 + ldy $0300,x ; CPU:$C19A PRG:019A BC 00 03 + inx ; CPU:$C19D PRG:019D E8 FlushPpuCommandBuffer_Block: - lda $0300,x ; CPU:$C19C PRG:019C BD 00 03 - inx ; CPU:$C19F PRG:019F E8 - sta PPUDATA ; CPU:$C1A0 PRG:01A0 8D 07 20 - dey ; CPU:$C1A3 PRG:01A3 88 - bne FlushPpuCommandBuffer_Block ; CPU:$C1A4 PRG:01A4 D0 F6 - lda PpuDestinationHi ; CPU:$C1A6 PRG:01A6 A5 50 - cmp #$3F ; CPU:$C1A8 PRG:01A8 C9 3F - bne FlushPpuCommandBuffer_Block_1 ; CPU:$C1AA PRG:01AA D0 10 - lda #$3F ; CPU:$C1AC PRG:01AC A9 3F - sta PPUADDR ; CPU:$C1AE PRG:01AE 8D 06 20 - lda #$00 ; CPU:$C1B1 PRG:01B1 A9 00 - sta PPUADDR ; CPU:$C1B3 PRG:01B3 8D 06 20 - sta PPUADDR ; CPU:$C1B6 PRG:01B6 8D 06 20 - sta PPUADDR ; CPU:$C1B9 PRG:01B9 8D 06 20 + lda $0300,x ; CPU:$C19E PRG:019E BD 00 03 + inx ; CPU:$C1A1 PRG:01A1 E8 + sta PPUDATA ; CPU:$C1A2 PRG:01A2 8D 07 20 + dey ; CPU:$C1A5 PRG:01A5 88 + bne FlushPpuCommandBuffer_Block; CPU:$C1A6 PRG:01A6 D0 F6 + lda PpuDestinationHi ; CPU:$C1A8 PRG:01A8 A5 50 + cmp #$3F ; CPU:$C1AA PRG:01AA C9 3F + bne FlushPpuCommandBuffer_Block_1 ; CPU:$C1AC PRG:01AC D0 10 + lda #$3F ; CPU:$C1AE PRG:01AE A9 3F + sta PPUADDR ; CPU:$C1B0 PRG:01B0 8D 06 20 + lda #$00 ; CPU:$C1B3 PRG:01B3 A9 00 + sta PPUADDR ; CPU:$C1B5 PRG:01B5 8D 06 20 + sta PPUADDR ; CPU:$C1B8 PRG:01B8 8D 06 20 + sta PPUADDR ; CPU:$C1BB PRG:01BB 8D 06 20 FlushPpuCommandBuffer_Block_1: - stx PpuBufferReadOffset ; CPU:$C1BC PRG:01BC 86 52 - cpx PpuBufferWriteOffset ; CPU:$C1BE PRG:01BE E4 53 - bne PreserveXYAndFinalizePpuCommand ; CPU:$C1C0 PRG:01C0 D0 C4 - rts ; CPU:$C1C2 PRG:01C2 60 + stx PpuBufferReadOffset ; CPU:$C1BE PRG:01BE 86 52 + cpx PpuBufferWriteOffset ; CPU:$C1C0 PRG:01C0 E4 53 + bne PreserveXYAndFinalizePpuCommand ; CPU:$C1C2 PRG:01C2 D0 C4 + rts ; CPU:$C1C4 PRG:01C4 60 FlushPpuCommandBuffer_Block_2: - lda #$20 ; CPU:$C1C3 PRG:01C3 A9 20 - sta SoundRequestFlags2 ; CPU:$C1C5 PRG:01C5 85 F2 - jsr $C527 ; CPU:$C1C7 PRG:01C7 20 27 C5 - jsr $C539 ; CPU:$C1CA PRG:01CA 20 39 C5 - lda #$FF ; CPU:$C1CD PRG:01CD A9 FF - sta BoundsCandidateIndex ; CPU:$C1CF PRG:01CF 85 CD - lda #$AD ; CPU:$C1D1 PRG:01D1 A9 AD - sta SpawnCommandPointerLo ; CPU:$C1D3 PRG:01D3 85 23 - lda #$C4 ; CPU:$C1D5 PRG:01D5 A9 C4 - sta SpawnCommandPointerHi ; CPU:$C1D7 PRG:01D7 85 24 - lda #$80 ; CPU:$C1D9 PRG:01D9 A9 80 - sta PlayerPosX ; CPU:$C1DB PRG:01DB 85 91 - sta $0488 ; CPU:$C1DD PRG:01DD 8D 88 04 - lda #$70 ; CPU:$C1E0 PRG:01E0 A9 70 - sta PlayerPosY ; CPU:$C1E2 PRG:01E2 85 9A - jsr InitializeParticleSlots ; CPU:$C1E4 PRG:01E4 20 4A CD - lda #$00 ; CPU:$C1E7 PRG:01E7 A9 00 - sta PlayerActiveFlags ; CPU:$C1E9 PRG:01E9 85 41 - sta $C9 ; CPU:$C1EB PRG:01EB 85 C9 - sta $CA ; CPU:$C1ED PRG:01ED 85 CA - sta SpawnSelector ; CPU:$C1EF PRG:01EF 85 BA - sta $C5 ; CPU:$C1F1 PRG:01F1 85 C5 - sta $C8 ; CPU:$C1F3 PRG:01F3 85 C8 - jsr InitializeAudio ; CPU:$C1F5 PRG:01F5 20 A5 F4 - ldx #$13 ; CPU:$C1F8 PRG:01F8 A2 13 + lda #$20 ; CPU:$C1C5 PRG:01C5 A9 20 + sta SoundRequestFlags2 ; CPU:$C1C7 PRG:01C7 85 F2 + jsr $C527 ; CPU:$C1C9 PRG:01C9 20 27 C5 + jsr $C539 ; CPU:$C1CC PRG:01CC 20 39 C5 + lda #$FF ; CPU:$C1CF PRG:01CF A9 FF + sta BoundsCandidateIndex ; CPU:$C1D1 PRG:01D1 85 CD + lda #$AD ; CPU:$C1D3 PRG:01D3 A9 AD + sta SpawnCommandPointerLo ; CPU:$C1D5 PRG:01D5 85 23 + lda #$C4 ; CPU:$C1D7 PRG:01D7 A9 C4 + sta SpawnCommandPointerHi ; CPU:$C1D9 PRG:01D9 85 24 + lda #$80 ; CPU:$C1DB PRG:01DB A9 80 + sta PlayerPosX ; CPU:$C1DD PRG:01DD 85 91 + sta $0488 ; CPU:$C1DF PRG:01DF 8D 88 04 + lda #$70 ; CPU:$C1E2 PRG:01E2 A9 70 + sta PlayerPosY ; CPU:$C1E4 PRG:01E4 85 9A + jsr InitializeParticleSlots ; CPU:$C1E6 PRG:01E6 20 4A CD + lda #$00 ; CPU:$C1E9 PRG:01E9 A9 00 + sta PlayerActiveFlags ; CPU:$C1EB PRG:01EB 85 41 + sta $C9 ; CPU:$C1ED PRG:01ED 85 C9 + sta $CA ; CPU:$C1EF PRG:01EF 85 CA + sta SpawnSelector ; CPU:$C1F1 PRG:01F1 85 BA + sta $C5 ; CPU:$C1F3 PRG:01F3 85 C5 + sta $C8 ; CPU:$C1F5 PRG:01F5 85 C8 + jsr InitializeAudio ; CPU:$C1F7 PRG:01F7 20 A5 F4 + ldx #$13 ; CPU:$C1FA PRG:01FA A2 13 FlushPpuCommandBuffer_Block_3: - lda #$FF ; CPU:$C1FA PRG:01FA A9 FF - sta GameplayObjectState,x ; CPU:$C1FC PRG:01FC 9D 30 05 - lda #$F0 ; CPU:$C1FF PRG:01FF A9 F0 - sta GameplayObjectPosY,x ; CPU:$C201 PRG:0201 9D A4 04 - dex ; CPU:$C204 PRG:0204 CA - bpl FlushPpuCommandBuffer_Block_3 ; CPU:$C205 PRG:0205 10 F3 + lda #$FF ; CPU:$C1FC PRG:01FC A9 FF + sta GameplayObjectState,x ; CPU:$C1FE PRG:01FE 9D 30 05 + lda #$F0 ; CPU:$C201 PRG:0201 A9 F0 + sta GameplayObjectPosY,x ; CPU:$C203 PRG:0203 9D A4 04 + dex ; CPU:$C206 PRG:0206 CA + bpl FlushPpuCommandBuffer_Block_3 ; CPU:$C207 PRG:0207 10 F3 FlushPpuCommandBuffer_Block_4: - jsr $F470 ; CPU:$C207 PRG:0207 20 70 F4 - jsr UpdateGameplayObjects ; CPU:$C20A PRG:020A 20 91 E6 - lda $C5 ; CPU:$C20D PRG:020D A5 C5 - bne FlushPpuCommandBuffer_Block_5 ; CPU:$C20F PRG:020F D0 03 - jsr UpdateSpecialObjectSystem ; CPU:$C211 PRG:0211 20 F9 C6 + jsr $F470 ; CPU:$C209 PRG:0209 20 70 F4 + jsr UpdateGameplayObjects ; CPU:$C20C PRG:020C 20 91 E6 + lda $C5 ; CPU:$C20F PRG:020F A5 C5 + bne FlushPpuCommandBuffer_Block_5 ; CPU:$C211 PRG:0211 D0 03 + jsr UpdateSpecialObjectSystem ; CPU:$C213 PRG:0213 20 F9 C6 FlushPpuCommandBuffer_Block_5: - lda FrameCounter ; CPU:$C214 PRG:0214 A5 19 - lsr a ; CPU:$C216 PRG:0216 4A - bcs FlushPpuCommandBuffer_Block_6 ; CPU:$C217 PRG:0217 B0 03 - jmp RunGameplayFrame_Block_8 ; CPU:$C219 PRG:0219 4C D0 C2 + lda FrameCounter ; CPU:$C216 PRG:0216 A5 19 + lsr a ; CPU:$C218 PRG:0218 4A + bcs FlushPpuCommandBuffer_Block_6 ; CPU:$C219 PRG:0219 B0 03 + jmp RunGameplayFrame_Block_8 ; CPU:$C21B PRG:021B 4C D0 C2 FlushPpuCommandBuffer_Block_6: - lda $C5 ; CPU:$C21C PRG:021C A5 C5 - beq RunGameplayFrame ; CPU:$C21E PRG:021E F0 05 - dec $C5 ; CPU:$C220 PRG:0220 C6 C5 - jmp RunGameplayFrame_Block_8 ; CPU:$C222 PRG:0222 4C D0 C2 + lda $C5 ; CPU:$C21E PRG:021E A5 C5 + beq RunGameplayFrame ; CPU:$C220 PRG:0220 F0 05 + dec $C5 ; CPU:$C222 PRG:0222 C6 C5 + jmp RunGameplayFrame_Block_8 ; CPU:$C224 PRG:0224 4C D0 C2 ;=============================================================================== ; RunGameplayFrame ; @@ -673,210 +730,214 @@ FlushPpuCommandBuffer_Block_6: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, X and Y, the N, Z, C, I and V flags, the OAM shadow and the RAM +; fields it writes. +; ; PRG offset: $0227 ; CPU address: $C227 ;=============================================================================== RunGameplayFrame: - lda PpuScrollX ; CPU:$C225 PRG:0225 A5 17 - bne RunGameplayFrame_Block ; CPU:$C227 PRG:0227 D0 06 - lda PpuControlBase ; CPU:$C229 PRG:0229 A5 18 - eor #$01 ; CPU:$C22B PRG:022B 49 01 - sta PpuControlBase ; CPU:$C22D PRG:022D 85 18 + lda PpuScrollX ; CPU:$C227 PRG:0227 A5 17 + bne RunGameplayFrame_Block ; CPU:$C229 PRG:0229 D0 06 + lda PpuControlBase ; CPU:$C22B PRG:022B A5 18 + eor #$01 ; CPU:$C22D PRG:022D 49 01 + sta PpuControlBase ; CPU:$C22F PRG:022F 85 18 RunGameplayFrame_Block: - dec PpuScrollX ; CPU:$C22F PRG:022F C6 17 - lda $0488 ; CPU:$C231 PRG:0231 AD 88 04 - beq RunGameplayFrame_Block_2 ; CPU:$C234 PRG:0234 F0 15 - inc $0488 ; CPU:$C236 PRG:0236 EE 88 04 - lda $0488 ; CPU:$C239 PRG:0239 AD 88 04 - cmp #$F0 ; CPU:$C23C PRG:023C C9 F0 - bcc RunGameplayFrame_Block_1 ; CPU:$C23E PRG:023E 90 05 - lda #$00 ; CPU:$C240 PRG:0240 A9 00 - sta $0488 ; CPU:$C242 PRG:0242 8D 88 04 + dec PpuScrollX ; CPU:$C231 PRG:0231 C6 17 + lda $0488 ; CPU:$C233 PRG:0233 AD 88 04 + beq RunGameplayFrame_Block_2 ; CPU:$C236 PRG:0236 F0 15 + inc $0488 ; CPU:$C238 PRG:0238 EE 88 04 + lda $0488 ; CPU:$C23B PRG:023B AD 88 04 + cmp #$F0 ; CPU:$C23E PRG:023E C9 F0 + bcc RunGameplayFrame_Block_1 ; CPU:$C240 PRG:0240 90 05 + lda #$00 ; CPU:$C242 PRG:0242 A9 00 + sta $0488 ; CPU:$C244 PRG:0244 8D 88 04 RunGameplayFrame_Block_1: - lda PlayerCollisionDisable ; CPU:$C245 PRG:0245 A5 BD - beq RunGameplayFrame_Block_2 ; CPU:$C247 PRG:0247 F0 02 - inc PlayerPosX ; CPU:$C249 PRG:0249 E6 91 + lda PlayerCollisionDisable ; CPU:$C247 PRG:0247 A5 BD + beq RunGameplayFrame_Block_2 ; CPU:$C249 PRG:0249 F0 02 + inc PlayerPosX ; CPU:$C24B PRG:024B E6 91 RunGameplayFrame_Block_2: - ldx #$07 ; CPU:$C24B PRG:024B A2 07 + ldx #$07 ; CPU:$C24D PRG:024D A2 07 RunGameplayFrame_Block_3: - lda EffectObjectState,x ; CPU:$C24D PRG:024D BD 5D 05 - bmi RunGameplayFrame_Block_4 ; CPU:$C250 PRG:0250 30 19 - inc EffectObjectPosX,x ; CPU:$C252 PRG:0252 FE 67 05 - lda EffectObjectPosX,x ; CPU:$C255 PRG:0255 BD 67 05 - cmp #$F8 ; CPU:$C258 PRG:0258 C9 F8 - bne RunGameplayFrame_Block_4 ; CPU:$C25A PRG:025A D0 0F - lda #$FF ; CPU:$C25C PRG:025C A9 FF - sta EffectObjectState,x ; CPU:$C25E PRG:025E 9D 5D 05 - lda #$F0 ; CPU:$C261 PRG:0261 A9 F0 - sta EffectObjectPosY,x ; CPU:$C263 PRG:0263 9D 7B 05 - lda #$00 ; CPU:$C266 PRG:0266 A9 00 - sta PlayerParticleHitCount2 ; CPU:$C268 PRG:0268 8D CE 05 + lda EffectObjectState,x ; CPU:$C24F PRG:024F BD 5D 05 + bmi RunGameplayFrame_Block_4 ; CPU:$C252 PRG:0252 30 19 + inc EffectObjectPosX,x ; CPU:$C254 PRG:0254 FE 67 05 + lda EffectObjectPosX,x ; CPU:$C257 PRG:0257 BD 67 05 + cmp #$F8 ; CPU:$C25A PRG:025A C9 F8 + bne RunGameplayFrame_Block_4 ; CPU:$C25C PRG:025C D0 0F + lda #$FF ; CPU:$C25E PRG:025E A9 FF + sta EffectObjectState,x ; CPU:$C260 PRG:0260 9D 5D 05 + lda #$F0 ; CPU:$C263 PRG:0263 A9 F0 + sta EffectObjectPosY,x ; CPU:$C265 PRG:0265 9D 7B 05 + lda #$00 ; CPU:$C268 PRG:0268 A9 00 + sta PlayerParticleHitCount2 ; CPU:$C26A PRG:026A 8D CE 05 RunGameplayFrame_Block_4: - dex ; CPU:$C26B PRG:026B CA - bpl RunGameplayFrame_Block_3 ; CPU:$C26C PRG:026C 10 DF - ldx #$13 ; CPU:$C26E PRG:026E A2 13 + dex ; CPU:$C26D PRG:026D CA + bpl RunGameplayFrame_Block_3 ; CPU:$C26E PRG:026E 10 DF + ldx #$13 ; CPU:$C270 PRG:0270 A2 13 RunGameplayFrame_Block_5: - lda GameplayObjectState,x ; CPU:$C270 PRG:0270 BD 30 05 - bmi RunGameplayFrame_Block_6 ; CPU:$C273 PRG:0273 30 12 - inc GameplayObjectPosX,x ; CPU:$C275 PRG:0275 FE 90 04 - lda GameplayObjectPosX,x ; CPU:$C278 PRG:0278 BD 90 04 - cmp #$F8 ; CPU:$C27B PRG:027B C9 F8 - bcc RunGameplayFrame_Block_6 ; CPU:$C27D PRG:027D 90 08 - lda #$F0 ; CPU:$C27F PRG:027F A9 F0 - sta GameplayObjectPosY,x ; CPU:$C281 PRG:0281 9D A4 04 - sta GameplayObjectState,x ; CPU:$C284 PRG:0284 9D 30 05 + lda GameplayObjectState,x ; CPU:$C272 PRG:0272 BD 30 05 + bmi RunGameplayFrame_Block_6 ; CPU:$C275 PRG:0275 30 12 + inc GameplayObjectPosX,x ; CPU:$C277 PRG:0277 FE 90 04 + lda GameplayObjectPosX,x ; CPU:$C27A PRG:027A BD 90 04 + cmp #$F8 ; CPU:$C27D PRG:027D C9 F8 + bcc RunGameplayFrame_Block_6 ; CPU:$C27F PRG:027F 90 08 + lda #$F0 ; CPU:$C281 PRG:0281 A9 F0 + sta GameplayObjectPosY,x ; CPU:$C283 PRG:0283 9D A4 04 + sta GameplayObjectState,x ; CPU:$C286 PRG:0286 9D 30 05 RunGameplayFrame_Block_6: - dex ; CPU:$C287 PRG:0287 CA - bpl RunGameplayFrame_Block_5 ; CPU:$C288 PRG:0288 10 E6 - lda PpuScrollX ; CPU:$C28A PRG:028A A5 17 - and #$07 ; CPU:$C28C PRG:028C 29 07 - bne RunGameplayFrame_Block_8 ; CPU:$C28E PRG:028E D0 3E - ldx PlayerSlotState ; CPU:$C290 PRG:0290 A6 88 - dex ; CPU:$C292 PRG:0292 CA - bmi RunGameplayFrame_Block_8 ; CPU:$C293 PRG:0293 30 39 - lda #$00 ; CPU:$C295 PRG:0295 A9 00 - sta CurrentObjectIndex ; CPU:$C297 PRG:0297 85 3E - lda #$01 ; CPU:$C299 PRG:0299 A9 01 - jsr InitializeOrQueueObject ; CPU:$C29B PRG:029B 20 DE D6 - inc $C9 ; CPU:$C29E PRG:029E E6 C9 - lda $C9 ; CPU:$C2A0 PRG:02A0 A5 C9 - and #$1F ; CPU:$C2A2 PRG:02A2 29 1F - bne RunGameplayFrame_Block_7 ; CPU:$C2A4 PRG:02A4 D0 14 - inc $CA ; CPU:$C2A6 PRG:02A6 E6 CA - lda $CA ; CPU:$C2A8 PRG:02A8 A5 CA - cmp #$0A ; CPU:$C2AA PRG:02AA C9 0A - bne RunGameplayFrame_Block_7 ; CPU:$C2AC PRG:02AC D0 0C - lda #$02 ; CPU:$C2AE PRG:02AE A9 02 - sta $CA ; CPU:$C2B0 PRG:02B0 85 CA - ldy SpawnSelector ; CPU:$C2B2 PRG:02B2 A4 BA - iny ; CPU:$C2B4 PRG:02B4 C8 - tya ; CPU:$C2B5 PRG:02B5 98 - and #$03 ; CPU:$C2B6 PRG:02B6 29 03 - sta SpawnSelector ; CPU:$C2B8 PRG:02B8 85 BA + dex ; CPU:$C289 PRG:0289 CA + bpl RunGameplayFrame_Block_5 ; CPU:$C28A PRG:028A 10 E6 + lda PpuScrollX ; CPU:$C28C PRG:028C A5 17 + and #$07 ; CPU:$C28E PRG:028E 29 07 + bne RunGameplayFrame_Block_8 ; CPU:$C290 PRG:0290 D0 3E + ldx PlayerSlotState ; CPU:$C292 PRG:0292 A6 88 + dex ; CPU:$C294 PRG:0294 CA + bmi RunGameplayFrame_Block_8 ; CPU:$C295 PRG:0295 30 39 + lda #$00 ; CPU:$C297 PRG:0297 A9 00 + sta CurrentObjectIndex ; CPU:$C299 PRG:0299 85 3E + lda #$01 ; CPU:$C29B PRG:029B A9 01 + jsr InitializeOrQueueObject ; CPU:$C29D PRG:029D 20 DE D6 + inc $C9 ; CPU:$C2A0 PRG:02A0 E6 C9 + lda $C9 ; CPU:$C2A2 PRG:02A2 A5 C9 + and #$1F ; CPU:$C2A4 PRG:02A4 29 1F + bne RunGameplayFrame_Block_7 ; CPU:$C2A6 PRG:02A6 D0 14 + inc $CA ; CPU:$C2A8 PRG:02A8 E6 CA + lda $CA ; CPU:$C2AA PRG:02AA A5 CA + cmp #$0A ; CPU:$C2AC PRG:02AC C9 0A + bne RunGameplayFrame_Block_7 ; CPU:$C2AE PRG:02AE D0 0C + lda #$02 ; CPU:$C2B0 PRG:02B0 A9 02 + sta $CA ; CPU:$C2B2 PRG:02B2 85 CA + ldy SpawnSelector ; CPU:$C2B4 PRG:02B4 A4 BA + iny ; CPU:$C2B6 PRG:02B6 C8 + tya ; CPU:$C2B7 PRG:02B7 98 + and #$03 ; CPU:$C2B8 PRG:02B8 29 03 + sta SpawnSelector ; CPU:$C2BA PRG:02BA 85 BA RunGameplayFrame_Block_7: - ldx $CA ; CPU:$C2BA PRG:02BA A6 CA - lda SpawnPatternIndexTable,x ; CPU:$C2BC PRG:02BC BD BF C3 - asl a ; CPU:$C2BF PRG:02BF 0A - tay ; CPU:$C2C0 PRG:02C0 A8 - lda SpawnPatternHandlerTable,y ; CPU:$C2C1 PRG:02C1 B9 B5 C3 - sta DispatchPointerLo ; CPU:$C2C4 PRG:02C4 85 25 - lda $C3B6,y ; CPU:$C2C6 PRG:02C6 B9 B6 C3 - sta DispatchPointerHi ; CPU:$C2C9 PRG:02C9 85 26 - jsr DispatchSpawnPattern ; CPU:$C2CB PRG:02CB 20 B2 C3 + ldx $CA ; CPU:$C2BC PRG:02BC A6 CA + lda SpawnPatternIndexTable,x ; CPU:$C2BE PRG:02BE BD BF C3 + asl a ; CPU:$C2C1 PRG:02C1 0A + tay ; CPU:$C2C2 PRG:02C2 A8 + lda SpawnPatternHandlerTable,y ; CPU:$C2C3 PRG:02C3 B9 B5 C3 + sta DispatchPointerLo ; CPU:$C2C6 PRG:02C6 85 25 + lda $C3B6,y ; CPU:$C2C8 PRG:02C8 B9 B6 C3 + sta DispatchPointerHi ; CPU:$C2CB PRG:02CB 85 26 + jsr DispatchSpawnPattern ; CPU:$C2CD PRG:02CD 20 B2 C3 RunGameplayFrame_Block_8: - ldx #$07 ; CPU:$C2CE PRG:02CE A2 07 + ldx #$07 ; CPU:$C2D0 PRG:02D0 A2 07 RunGameplayFrame_Block_9: - lda EffectObjectState,x ; CPU:$C2D0 PRG:02D0 BD 5D 05 - bmi RunGameplayFrame_Block_10 ; CPU:$C2D3 PRG:02D3 30 18 - jsr $CECE ; CPU:$C2D5 PRG:02D5 20 CE CE - lda PlayerParticleHitCount ; CPU:$C2D8 PRG:02D8 AD CD 05 - beq RunGameplayFrame_Block_10 ; CPU:$C2DB PRG:02DB F0 10 - dec PlayerParticleHitCount ; CPU:$C2DD PRG:02DD CE CD 05 - inc PlayerParticleHitCount2 ; CPU:$C2E0 PRG:02E0 EE CE 05 - txa ; CPU:$C2E3 PRG:02E3 8A - pha ; CPU:$C2E4 PRG:02E4 48 - lda ParticleSequenceValue ; CPU:$C2E5 PRG:02E5 AD 59 05 - jsr InitializeOrQueueObject ; CPU:$C2E8 PRG:02E8 20 DE D6 - pla ; CPU:$C2EB PRG:02EB 68 - tax ; CPU:$C2EC PRG:02EC AA + lda EffectObjectState,x ; CPU:$C2D2 PRG:02D2 BD 5D 05 + bmi RunGameplayFrame_Block_10 ; CPU:$C2D5 PRG:02D5 30 18 + jsr $CECE ; CPU:$C2D7 PRG:02D7 20 CE CE + lda PlayerParticleHitCount ; CPU:$C2DA PRG:02DA AD CD 05 + beq RunGameplayFrame_Block_10 ; CPU:$C2DD PRG:02DD F0 10 + dec PlayerParticleHitCount ; CPU:$C2DF PRG:02DF CE CD 05 + inc PlayerParticleHitCount2 ; CPU:$C2E2 PRG:02E2 EE CE 05 + txa ; CPU:$C2E5 PRG:02E5 8A + pha ; CPU:$C2E6 PRG:02E6 48 + lda ParticleSequenceValue ; CPU:$C2E7 PRG:02E7 AD 59 05 + jsr InitializeOrQueueObject ; CPU:$C2EA PRG:02EA 20 DE D6 + pla ; CPU:$C2ED PRG:02ED 68 + tax ; CPU:$C2EE PRG:02EE AA RunGameplayFrame_Block_10: - jsr $CE2F ; CPU:$C2ED PRG:02ED 20 2F CE - dex ; CPU:$C2F0 PRG:02F0 CA - bpl RunGameplayFrame_Block_9 ; CPU:$C2F1 PRG:02F1 10 DD - ldx #$13 ; CPU:$C2F3 PRG:02F3 A2 13 + jsr $CE2F ; CPU:$C2EF PRG:02EF 20 2F CE + dex ; CPU:$C2F2 PRG:02F2 CA + bpl RunGameplayFrame_Block_9 ; CPU:$C2F3 PRG:02F3 10 DD + ldx #$13 ; CPU:$C2F5 PRG:02F5 A2 13 RunGameplayFrame_Block_11: - lda GameplayObjectState,x ; CPU:$C2F5 PRG:02F5 BD 30 05 - bmi RunGameplayFrame_Block_14 ; CPU:$C2F8 PRG:02F8 30 1B - lda $C5 ; CPU:$C2FA PRG:02FA A5 C5 - bne RunGameplayFrame_Block_13 ; CPU:$C2FC PRG:02FC D0 14 - jsr $C9B6 ; CPU:$C2FE PRG:02FE 20 B6 C9 - lda GameplayObjectPosY,x ; CPU:$C301 PRG:0301 BD A4 04 - cmp #$02 ; CPU:$C304 PRG:0304 C9 02 - bcs RunGameplayFrame_Block_12 ; CPU:$C306 PRG:0306 B0 03 - jsr ReflectObjectYVelocity ; CPU:$C308 PRG:0308 20 4F CA + lda GameplayObjectState,x ; CPU:$C2F7 PRG:02F7 BD 30 05 + bmi RunGameplayFrame_Block_14 ; CPU:$C2FA PRG:02FA 30 1B + lda $C5 ; CPU:$C2FC PRG:02FC A5 C5 + bne RunGameplayFrame_Block_13 ; CPU:$C2FE PRG:02FE D0 14 + jsr $C9B6 ; CPU:$C300 PRG:0300 20 B6 C9 + lda GameplayObjectPosY,x ; CPU:$C303 PRG:0303 BD A4 04 + cmp #$02 ; CPU:$C306 PRG:0306 C9 02 + bcs RunGameplayFrame_Block_12 ; CPU:$C308 PRG:0308 B0 03 + jsr ReflectObjectYVelocity ; CPU:$C30A PRG:030A 20 4F CA RunGameplayFrame_Block_12: - cmp #$D8 ; CPU:$C30B PRG:030B C9 D8 - bcc RunGameplayFrame_Block_13 ; CPU:$C30D PRG:030D 90 03 - jsr ReflectObjectYVelocity ; CPU:$C30F PRG:030F 20 4F CA + cmp #$D8 ; CPU:$C30D PRG:030D C9 D8 + bcc RunGameplayFrame_Block_13 ; CPU:$C30F PRG:030F 90 03 + jsr ReflectObjectYVelocity ; CPU:$C311 PRG:0311 20 4F CA RunGameplayFrame_Block_13: - jsr $CB1C ; CPU:$C312 PRG:0312 20 1C CB + jsr $CB1C ; CPU:$C314 PRG:0314 20 1C CB RunGameplayFrame_Block_14: - lda FrameCounter ; CPU:$C315 PRG:0315 A5 19 - and #$07 ; CPU:$C317 PRG:0317 29 07 - lsr a ; CPU:$C319 PRG:0319 4A - tay ; CPU:$C31A PRG:031A A8 - lda $C9DD,y ; CPU:$C31B PRG:031B B9 DD C9 - pha ; CPU:$C31E PRG:031E 48 - lda FrameCounter ; CPU:$C31F PRG:031F A5 19 - lsr a ; CPU:$C321 PRG:0321 4A - txa ; CPU:$C322 PRG:0322 8A - bcc RunGameplayFrame_Block_15 ; CPU:$C323 PRG:0323 90 06 - sta Temp12 ; CPU:$C325 PRG:0325 85 12 - lda #$13 ; CPU:$C327 PRG:0327 A9 13 - sbc Temp12 ; CPU:$C329 PRG:0329 E5 12 + lda FrameCounter ; CPU:$C317 PRG:0317 A5 19 + and #$07 ; CPU:$C319 PRG:0319 29 07 + lsr a ; CPU:$C31B PRG:031B 4A + tay ; CPU:$C31C PRG:031C A8 + lda $C9DD,y ; CPU:$C31D PRG:031D B9 DD C9 + pha ; CPU:$C320 PRG:0320 48 + lda FrameCounter ; CPU:$C321 PRG:0321 A5 19 + lsr a ; CPU:$C323 PRG:0323 4A + txa ; CPU:$C324 PRG:0324 8A + bcc RunGameplayFrame_Block_15 ; CPU:$C325 PRG:0325 90 06 + sta Temp12 ; CPU:$C327 PRG:0327 85 12 + lda #$13 ; CPU:$C329 PRG:0329 A9 13 + sbc Temp12 ; CPU:$C32B PRG:032B E5 12 RunGameplayFrame_Block_15: - asl a ; CPU:$C32B PRG:032B 0A - asl a ; CPU:$C32C PRG:032C 0A - tay ; CPU:$C32D PRG:032D A8 - pla ; CPU:$C32E PRG:032E 68 - sta $02B1,y ; CPU:$C32F PRG:032F 99 B1 02 - lda GameplayObjectPosY,x ; CPU:$C332 PRG:0332 BD A4 04 - sta $02B0,y ; CPU:$C335 PRG:0335 99 B0 02 - lda GameplayObjectPosX,x ; CPU:$C338 PRG:0338 BD 90 04 - sta $02B3,y ; CPU:$C33B PRG:033B 99 B3 02 - lda #$00 ; CPU:$C33E PRG:033E A9 00 - sta $02B2,y ; CPU:$C340 PRG:0340 99 B2 02 - dex ; CPU:$C343 PRG:0343 CA - bpl RunGameplayFrame_Block_11 ; CPU:$C344 PRG:0344 10 AF - lda PlayerParticleHitCount2 ; CPU:$C346 PRG:0346 AD CE 05 - cmp #$14 ; CPU:$C349 PRG:0349 C9 14 - bcc RunGameplayFrame_Block_16 ; CPU:$C34B PRG:034B 90 20 - inc SequenceValueLo ; CPU:$C34D PRG:034D E6 47 - lda #$00 ; CPU:$C34F PRG:034F A9 00 - jsr InitializeOrQueueObject ; CPU:$C351 PRG:0351 20 DE D6 - dec SequenceValueLo ; CPU:$C354 PRG:0354 C6 47 - lda #$10 ; CPU:$C356 PRG:0356 A9 10 - sta SoundRequestFlags2 ; CPU:$C358 PRG:0358 85 F2 - inc $C8 ; CPU:$C35A PRG:035A E6 C8 - jsr $D3ED ; CPU:$C35C PRG:035C 20 ED D3 - jsr $C527 ; CPU:$C35F PRG:035F 20 27 C5 - dec $C8 ; CPU:$C362 PRG:0362 C6 C8 - ldx #$64 ; CPU:$C364 PRG:0364 A2 64 - jsr $F45E ; CPU:$C366 PRG:0366 20 5E F4 - lda #$20 ; CPU:$C369 PRG:0369 A9 20 - sta SoundRequestFlags2 ; CPU:$C36B PRG:036B 85 F2 + asl a ; CPU:$C32D PRG:032D 0A + asl a ; CPU:$C32E PRG:032E 0A + tay ; CPU:$C32F PRG:032F A8 + pla ; CPU:$C330 PRG:0330 68 + sta $02B1,y ; CPU:$C331 PRG:0331 99 B1 02 + lda GameplayObjectPosY,x ; CPU:$C334 PRG:0334 BD A4 04 + sta $02B0,y ; CPU:$C337 PRG:0337 99 B0 02 + lda GameplayObjectPosX,x ; CPU:$C33A PRG:033A BD 90 04 + sta $02B3,y ; CPU:$C33D PRG:033D 99 B3 02 + lda #$00 ; CPU:$C340 PRG:0340 A9 00 + sta $02B2,y ; CPU:$C342 PRG:0342 99 B2 02 + dex ; CPU:$C345 PRG:0345 CA + bpl RunGameplayFrame_Block_11 ; CPU:$C346 PRG:0346 10 AF + lda PlayerParticleHitCount2 ; CPU:$C348 PRG:0348 AD CE 05 + cmp #$14 ; CPU:$C34B PRG:034B C9 14 + bcc RunGameplayFrame_Block_16 ; CPU:$C34D PRG:034D 90 20 + inc SequenceValueLo ; CPU:$C34F PRG:034F E6 47 + lda #$00 ; CPU:$C351 PRG:0351 A9 00 + jsr InitializeOrQueueObject ; CPU:$C353 PRG:0353 20 DE D6 + dec SequenceValueLo ; CPU:$C356 PRG:0356 C6 47 + lda #$10 ; CPU:$C358 PRG:0358 A9 10 + sta SoundRequestFlags2 ; CPU:$C35A PRG:035A 85 F2 + inc $C8 ; CPU:$C35C PRG:035C E6 C8 + jsr $D3ED ; CPU:$C35E PRG:035E 20 ED D3 + jsr $C527 ; CPU:$C361 PRG:0361 20 27 C5 + dec $C8 ; CPU:$C364 PRG:0364 C6 C8 + ldx #$64 ; CPU:$C366 PRG:0366 A2 64 + jsr $F45E ; CPU:$C368 PRG:0368 20 5E F4 + lda #$20 ; CPU:$C36B PRG:036B A9 20 + sta SoundRequestFlags2 ; CPU:$C36D PRG:036D 85 F2 RunGameplayFrame_Block_16: - ldx #$F0 ; CPU:$C36D PRG:036D A2 F0 - lda $0488 ; CPU:$C36F PRG:036F AD 88 04 - beq RunGameplayFrame_Block_17 ; CPU:$C372 PRG:0372 F0 02 - ldx #$88 ; CPU:$C374 PRG:0374 A2 88 + ldx #$F0 ; CPU:$C36F PRG:036F A2 F0 + lda $0488 ; CPU:$C371 PRG:0371 AD 88 04 + beq RunGameplayFrame_Block_17 ; CPU:$C374 PRG:0374 F0 02 + ldx #$88 ; CPU:$C376 PRG:0376 A2 88 RunGameplayFrame_Block_17: - stx OamBuffer ; CPU:$C376 PRG:0376 8E 00 02 - stx $0204 ; CPU:$C379 PRG:0379 8E 04 02 - sta $0203 ; CPU:$C37C PRG:037C 8D 03 02 - clc ; CPU:$C37F PRG:037F 18 - adc #$08 ; CPU:$C380 PRG:0380 69 08 - sta $0207 ; CPU:$C382 PRG:0382 8D 07 02 - lda FrameCounter ; CPU:$C385 PRG:0385 A5 19 - and #$03 ; CPU:$C387 PRG:0387 29 03 - sta $0202 ; CPU:$C389 PRG:0389 8D 02 02 - sta $0206 ; CPU:$C38C PRG:038C 8D 06 02 - ldx #$E3 ; CPU:$C38F PRG:038F A2 E3 - stx $0201 ; CPU:$C391 PRG:0391 8E 01 02 - inx ; CPU:$C394 PRG:0394 E8 - stx $0205 ; CPU:$C395 PRG:0395 8E 05 02 - lda PlayerSlotState ; CPU:$C398 PRG:0398 A5 88 - bmi RunGameplayFrame_Block_18 ; CPU:$C39A PRG:039A 30 03 - jmp FlushPpuCommandBuffer_Block_4 ; CPU:$C39C PRG:039C 4C 09 C2 + stx OamBuffer ; CPU:$C378 PRG:0378 8E 00 02 + stx $0204 ; CPU:$C37B PRG:037B 8E 04 02 + sta $0203 ; CPU:$C37E PRG:037E 8D 03 02 + clc ; CPU:$C381 PRG:0381 18 + adc #$08 ; CPU:$C382 PRG:0382 69 08 + sta $0207 ; CPU:$C384 PRG:0384 8D 07 02 + lda FrameCounter ; CPU:$C387 PRG:0387 A5 19 + and #$03 ; CPU:$C389 PRG:0389 29 03 + sta $0202 ; CPU:$C38B PRG:038B 8D 02 02 + sta $0206 ; CPU:$C38E PRG:038E 8D 06 02 + ldx #$E3 ; CPU:$C391 PRG:0391 A2 E3 + stx $0201 ; CPU:$C393 PRG:0393 8E 01 02 + inx ; CPU:$C396 PRG:0396 E8 + stx $0205 ; CPU:$C397 PRG:0397 8E 05 02 + lda PlayerSlotState ; CPU:$C39A PRG:039A A5 88 + bmi RunGameplayFrame_Block_18 ; CPU:$C39C PRG:039C 30 03 + jmp FlushPpuCommandBuffer_Block_4 ; CPU:$C39E PRG:039E 4C 09 C2 RunGameplayFrame_Block_18: - jsr SortOrInitializeRecords ; CPU:$C39F PRG:039F 20 79 C5 - lda #$01 ; CPU:$C3A2 PRG:03A2 A9 01 - sta SoundRequestFlags0 ; CPU:$C3A4 PRG:03A4 85 F0 - jsr WaitForFrame ; CPU:$C3A6 PRG:03A6 20 65 F4 - lda #$02 ; CPU:$C3A9 PRG:03A9 A9 02 - sta SoundRequestFlags2 ; CPU:$C3AB PRG:03AB 85 F2 - jmp $F36A ; CPU:$C3AD PRG:03AD 4C 6A F3 + jsr SortOrInitializeRecords ; CPU:$C3A1 PRG:03A1 20 79 C5 + lda #$01 ; CPU:$C3A4 PRG:03A4 A9 01 + sta SoundRequestFlags0 ; CPU:$C3A6 PRG:03A6 85 F0 + jsr WaitForFrame ; CPU:$C3A8 PRG:03A8 20 65 F4 + lda #$02 ; CPU:$C3AB PRG:03AB A9 02 + sta SoundRequestFlags2 ; CPU:$C3AD PRG:03AD 85 F2 + jmp $F36A ; CPU:$C3AF PRG:03AF 4C 6A F3 ;=============================================================================== ; DispatchSpawnPattern ; @@ -893,20 +954,23 @@ RunGameplayFrame_Block_18: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; nothing. +; ; PRG offset: $03B2 ; CPU address: $C3B2 ;=============================================================================== DispatchSpawnPattern: - jmp (DispatchPointerLo) ; CPU:$C3B0 PRG:03B0 6C 25 00 + jmp (DispatchPointerLo) ; CPU:$C3B2 PRG:03B2 6C 25 00 SpawnPatternHandlerTable: - .word SpawnFromCommandStream ; CPU:$C3B3 PRG:03B3 C9 C3 - .word SpawnAtRandomPosition ; CPU:$C3B5 PRG:03B5 F7 C3 - .word SpawnPatternNone ; CPU:$C3B7 PRG:03B7 3E C4 - .word InitializeSpecialObject ; CPU:$C3B9 PRG:03B9 5F C4 - .word SpawnPatternNoneAlt ; CPU:$C3BB PRG:03BB 5E C4 + .word SpawnFromCommandStream ; CPU:$C3B5 PRG:03B5 C9 C3 + .word SpawnAtRandomPosition ; CPU:$C3B7 PRG:03B7 F7 C3 + .word SpawnPatternNone ; CPU:$C3B9 PRG:03B9 3E C4 + .word InitializeSpecialObject ; CPU:$C3BB PRG:03BB 5F C4 + .word SpawnPatternNoneAlt ; CPU:$C3BD PRG:03BD 5E C4 SpawnPatternIndexTable: - .byte $00, $00, $02, $02, $02, $02, $02, $04, $03, $01 ; CPU:$C3BD PRG:03BD 00 00 02 02 02 02 02 04 03 01 + .byte $00, $00, $02, $02, $02, $02, $02, $04, $03, $01 ; CPU:$C3BF PRG:03BF 00 00 02 02 02 02 02 04 03 01 ;=============================================================================== ; SpawnFromCommandStream ; @@ -923,38 +987,45 @@ SpawnPatternIndexTable: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, X and Y, the N, Z and C flags, SpawnParameter, SpawnPixelPosition, +; SpawnCommandPointerLo, SpawnCommandPointerHi, GameplayObjectPosX, +; GameplayObjectPosY, GameplayObjectVelocityY, GameplayObjectVelocityX, +; GameplayObjectParameter, GameplayObjectPosXHi, GameplayObjectState, +; EffectObjectState, EffectObjectPosX, EffectObjectPosY. +; ; PRG offset: $03C9 ; CPU address: $C3C9 ;=============================================================================== SpawnFromCommandStream: - ldy #$00 ; CPU:$C3C7 PRG:03C7 A0 00 - lda (SpawnCommandPointerLo),y ; CPU:$C3C9 PRG:03C9 B1 23 - inc SpawnCommandPointerLo ; CPU:$C3CB PRG:03CB E6 23 - bne SpawnFromCommandStream_Block ; CPU:$C3CD PRG:03CD D0 02 - inc SpawnCommandPointerHi ; CPU:$C3CF PRG:03CF E6 24 + ldy #$00 ; CPU:$C3C9 PRG:03C9 A0 00 + lda (SpawnCommandPointerLo),y ; CPU:$C3CB PRG:03CB B1 23 + inc SpawnCommandPointerLo ; CPU:$C3CD PRG:03CD E6 23 + bne SpawnFromCommandStream_Block ; CPU:$C3CF PRG:03CF D0 02 + inc SpawnCommandPointerHi ; CPU:$C3D1 PRG:03D1 E6 24 SpawnFromCommandStream_Block: - tax ; CPU:$C3D1 PRG:03D1 AA - beq SpawnFromCommandStream_Block_2 ; CPU:$C3D2 PRG:03D2 F0 20 - asl a ; CPU:$C3D4 PRG:03D4 0A - asl a ; CPU:$C3D5 PRG:03D5 0A - asl a ; CPU:$C3D6 PRG:03D6 0A - sta SpawnPixelPosition ; CPU:$C3D7 PRG:03D7 85 15 - lda #$00 ; CPU:$C3D9 PRG:03D9 A9 00 - sta SpawnParameter ; CPU:$C3DB PRG:03DB 85 14 - txa ; CPU:$C3DD PRG:03DD 8A - and #$C0 ; CPU:$C3DE PRG:03DE 29 C0 - cmp #$80 ; CPU:$C3E0 PRG:03E0 C9 80 - bne SpawnFromCommandStream_Block_1 ; CPU:$C3E2 PRG:03E2 D0 06 - jsr AllocateEffectObject ; CPU:$C3E4 PRG:03E4 20 6B C4 - jmp SpawnFromCommandStream ; CPU:$C3E7 PRG:03E7 4C C9 C3 + tax ; CPU:$C3D3 PRG:03D3 AA + beq SpawnFromCommandStream_Block_2 ; CPU:$C3D4 PRG:03D4 F0 20 + asl a ; CPU:$C3D6 PRG:03D6 0A + asl a ; CPU:$C3D7 PRG:03D7 0A + asl a ; CPU:$C3D8 PRG:03D8 0A + sta SpawnPixelPosition ; CPU:$C3D9 PRG:03D9 85 15 + lda #$00 ; CPU:$C3DB PRG:03DB A9 00 + sta SpawnParameter ; CPU:$C3DD PRG:03DD 85 14 + txa ; CPU:$C3DF PRG:03DF 8A + and #$C0 ; CPU:$C3E0 PRG:03E0 29 C0 + cmp #$80 ; CPU:$C3E2 PRG:03E2 C9 80 + bne SpawnFromCommandStream_Block_1 ; CPU:$C3E4 PRG:03E4 D0 06 + jsr AllocateEffectObject ; CPU:$C3E6 PRG:03E6 20 6B C4 + jmp SpawnFromCommandStream ; CPU:$C3E9 PRG:03E9 4C C9 C3 SpawnFromCommandStream_Block_1: - cmp #$00 ; CPU:$C3EA PRG:03EA C9 00 - bne SpawnFromCommandStream_Block_2 ; CPU:$C3EC PRG:03EC D0 06 - jsr $C486 ; CPU:$C3EE PRG:03EE 20 86 C4 - jmp SpawnFromCommandStream ; CPU:$C3F1 PRG:03F1 4C C9 C3 + cmp #$00 ; CPU:$C3EC PRG:03EC C9 00 + bne SpawnFromCommandStream_Block_2 ; CPU:$C3EE PRG:03EE D0 06 + jsr $C486 ; CPU:$C3F0 PRG:03F0 20 86 C4 + jmp SpawnFromCommandStream ; CPU:$C3F3 PRG:03F3 4C C9 C3 SpawnFromCommandStream_Block_2: - rts ; CPU:$C3F4 PRG:03F4 60 + rts ; CPU:$C3F6 PRG:03F6 60 ;=============================================================================== ; SpawnAtRandomPosition ; @@ -971,22 +1042,29 @@ SpawnFromCommandStream_Block_2: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A and X, the N, Z, C and V flags, SpawnParameter, SpawnPixelPosition, +; RandomState, $1C, SoundRequestFlags3, GameplayObjectPosX, +; GameplayObjectPosY, GameplayObjectVelocityY, GameplayObjectVelocityX, +; GameplayObjectParameter, GameplayObjectPosXHi, GameplayObjectState, +; EffectObjectState, EffectObjectPosX, EffectObjectPosY. +; ; PRG offset: $03F7 ; CPU address: $C3F7 ;=============================================================================== SpawnAtRandomPosition: - jsr GetRandomValue ; CPU:$C3F5 PRG:03F5 20 B3 F1 - and #$7F ; CPU:$C3F8 PRG:03F8 29 7F - cmp #$04 ; CPU:$C3FA PRG:03FA C9 04 - bcc SpawnRandomObject ; CPU:$C3FC PRG:03FC 90 0C - cmp #$18 ; CPU:$C3FE PRG:03FE C9 18 - bcs SpawnRandomObject ; CPU:$C400 PRG:0400 B0 08 - asl a ; CPU:$C402 PRG:0402 0A - asl a ; CPU:$C403 PRG:0403 0A - asl a ; CPU:$C404 PRG:0404 0A - sta SpawnPixelPosition ; CPU:$C405 PRG:0405 85 15 - jsr AllocateEffectObject ; CPU:$C407 PRG:0407 20 6B C4 + jsr GetRandomValue ; CPU:$C3F7 PRG:03F7 20 B3 F1 + and #$7F ; CPU:$C3FA PRG:03FA 29 7F + cmp #$04 ; CPU:$C3FC PRG:03FC C9 04 + bcc SpawnRandomObject ; CPU:$C3FE PRG:03FE 90 0C + cmp #$18 ; CPU:$C400 PRG:0400 C9 18 + bcs SpawnRandomObject ; CPU:$C402 PRG:0402 B0 08 + asl a ; CPU:$C404 PRG:0404 0A + asl a ; CPU:$C405 PRG:0405 0A + asl a ; CPU:$C406 PRG:0406 0A + sta SpawnPixelPosition ; CPU:$C407 PRG:0407 85 15 + jsr AllocateEffectObject ; CPU:$C409 PRG:0409 20 6B C4 ;=============================================================================== ; SpawnRandomObject ; @@ -1006,36 +1084,42 @@ SpawnAtRandomPosition: ; A gameplay object allocated and initialized; X = slot ($00-$13) or $FF if ; the pool is full. ; +; Clobbers: +; A and X, the N, Z, C and V flags, SpawnParameter, SpawnPixelPosition, +; RandomState, $1C, SoundRequestFlags3, GameplayObjectPosX, +; GameplayObjectPosY, GameplayObjectVelocityY, GameplayObjectVelocityX, +; GameplayObjectParameter, GameplayObjectPosXHi, GameplayObjectState. +; ; PRG offset: $040C ; CPU address: $C40C ;=============================================================================== SpawnRandomObject: - jsr GetRandomValue ; CPU:$C40A PRG:040A 20 B3 F1 - and #$3F ; CPU:$C40D PRG:040D 29 3F - cmp #$02 ; CPU:$C40F PRG:040F C9 02 - bcc SpawnRandomObject_Block ; CPU:$C411 PRG:0411 90 24 - cmp #$18 ; CPU:$C413 PRG:0413 C9 18 - bcs SpawnRandomObject_Block ; CPU:$C415 PRG:0415 B0 20 - asl a ; CPU:$C417 PRG:0417 0A - asl a ; CPU:$C418 PRG:0418 0A - asl a ; CPU:$C419 PRG:0419 0A - sta SpawnPixelPosition ; CPU:$C41A PRG:041A 85 15 - jsr GetRandomValue ; CPU:$C41C PRG:041C 20 B3 F1 - and #$3F ; CPU:$C41F PRG:041F 29 3F - ldx SpawnSelector ; CPU:$C421 PRG:0421 A6 BA - adc SpawnSelectorAdjustmentTable,x ; CPU:$C423 PRG:0423 7D 3A C4 - sta SpawnParameter ; CPU:$C426 PRG:0426 85 14 - jsr $C486 ; CPU:$C428 PRG:0428 20 86 C4 - jsr GetRandomValue ; CPU:$C42B PRG:042B 20 B3 F1 - lsr a ; CPU:$C42E PRG:042E 4A - bcc SpawnRandomObject ; CPU:$C42F PRG:042F 90 D9 - jsr ReflectObjectYVelocity ; CPU:$C431 PRG:0431 20 4F CA - jmp SpawnRandomObject ; CPU:$C434 PRG:0434 4C 0C C4 + jsr GetRandomValue ; CPU:$C40C PRG:040C 20 B3 F1 + and #$3F ; CPU:$C40F PRG:040F 29 3F + cmp #$02 ; CPU:$C411 PRG:0411 C9 02 + bcc SpawnRandomObject_Block ; CPU:$C413 PRG:0413 90 24 + cmp #$18 ; CPU:$C415 PRG:0415 C9 18 + bcs SpawnRandomObject_Block ; CPU:$C417 PRG:0417 B0 20 + asl a ; CPU:$C419 PRG:0419 0A + asl a ; CPU:$C41A PRG:041A 0A + asl a ; CPU:$C41B PRG:041B 0A + sta SpawnPixelPosition ; CPU:$C41C PRG:041C 85 15 + jsr GetRandomValue ; CPU:$C41E PRG:041E 20 B3 F1 + and #$3F ; CPU:$C421 PRG:0421 29 3F + ldx SpawnSelector ; CPU:$C423 PRG:0423 A6 BA + adc SpawnSelectorAdjustmentTable,x ; CPU:$C425 PRG:0425 7D 3A C4 + sta SpawnParameter ; CPU:$C428 PRG:0428 85 14 + jsr $C486 ; CPU:$C42A PRG:042A 20 86 C4 + jsr GetRandomValue ; CPU:$C42D PRG:042D 20 B3 F1 + lsr a ; CPU:$C430 PRG:0430 4A + bcc SpawnRandomObject ; CPU:$C431 PRG:0431 90 D9 + jsr ReflectObjectYVelocity ; CPU:$C433 PRG:0433 20 4F CA + jmp SpawnRandomObject ; CPU:$C436 PRG:0436 4C 0C C4 SpawnRandomObject_Block: - rts ; CPU:$C437 PRG:0437 60 + rts ; CPU:$C439 PRG:0439 60 SpawnSelectorAdjustmentTable: - .byte $20, $30, $40, $60 ; CPU:$C438 PRG:0438 20 30 40 60 + .byte $20, $30, $40, $60 ; CPU:$C43A PRG:043A 20 30 40 60 ;=============================================================================== ; SpawnPatternNone ; @@ -1052,27 +1136,35 @@ SpawnSelectorAdjustmentTable: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, SpawnParameter, +; SpawnPixelPosition, RandomState, $1C, $80, CarrierPhase, Player0PosX, +; Player0PosY, SoundRequestFlags3, GameplayObjectPosX, +; GameplayObjectPosY, GameplayObjectVelocityY, GameplayObjectVelocityX, +; GameplayObjectParameter, GameplayObjectPosXHi, GameplayObjectState, +; EffectObjectState, EffectObjectPosX, EffectObjectPosY. +; ; PRG offset: $043E ; CPU address: $C43E ;=============================================================================== SpawnPatternNone: - jsr GetRandomValue ; CPU:$C43C PRG:043C 20 B3 F1 - and #$CF ; CPU:$C43F PRG:043F 29 CF - bne SpawnAtRandomPosition ; CPU:$C441 PRG:0441 D0 B2 - ldy CarrierPhase ; CPU:$C443 PRG:0443 A4 89 - iny ; CPU:$C445 PRG:0445 C8 - bne SpawnAtRandomPosition ; CPU:$C446 PRG:0446 D0 AD - lda #$E6 ; CPU:$C448 PRG:0448 A9 E6 - sta Player0PosY ; CPU:$C44A PRG:044A 85 9B - lda RandomState ; CPU:$C44C PRG:044C A5 1B - and #$7F ; CPU:$C44E PRG:044E 29 7F - adc #$40 ; CPU:$C450 PRG:0450 69 40 - sta Player0PosX ; CPU:$C452 PRG:0452 85 92 - lda #$80 ; CPU:$C454 PRG:0454 A9 80 - sta CarrierPhase ; CPU:$C456 PRG:0456 85 89 - lda #$00 ; CPU:$C458 PRG:0458 A9 00 - sta $80 ; CPU:$C45A PRG:045A 85 80 + jsr GetRandomValue ; CPU:$C43E PRG:043E 20 B3 F1 + and #$CF ; CPU:$C441 PRG:0441 29 CF + bne SpawnAtRandomPosition ; CPU:$C443 PRG:0443 D0 B2 + ldy CarrierPhase ; CPU:$C445 PRG:0445 A4 89 + iny ; CPU:$C447 PRG:0447 C8 + bne SpawnAtRandomPosition ; CPU:$C448 PRG:0448 D0 AD + lda #$E6 ; CPU:$C44A PRG:044A A9 E6 + sta Player0PosY ; CPU:$C44C PRG:044C 85 9B + lda RandomState ; CPU:$C44E PRG:044E A5 1B + and #$7F ; CPU:$C450 PRG:0450 29 7F + adc #$40 ; CPU:$C452 PRG:0452 69 40 + sta Player0PosX ; CPU:$C454 PRG:0454 85 92 + lda #$80 ; CPU:$C456 PRG:0456 A9 80 + sta CarrierPhase ; CPU:$C458 PRG:0458 85 89 + lda #$00 ; CPU:$C45A PRG:045A A9 00 + sta $80 ; CPU:$C45C PRG:045C 85 80 ;=============================================================================== ; SpawnPatternNoneAlt ; @@ -1089,12 +1181,15 @@ SpawnPatternNone: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; nothing. +; ; PRG offset: $045E ; CPU address: $C45E ;=============================================================================== SpawnPatternNoneAlt: - rts ; CPU:$C45C PRG:045C 60 + rts ; CPU:$C45E PRG:045E 60 ;=============================================================================== ; InitializeSpecialObject ; @@ -1111,16 +1206,22 @@ SpawnPatternNoneAlt: ; Returns: ; Routine-specific result; register preservation remains provisional. ; +; Clobbers: +; A and X, the N, Z, C and V flags, SpawnParameter, SpawnPixelPosition, +; RandomState, $1C, SoundRequestFlags3, GameplayObjectPosX, +; GameplayObjectPosY, GameplayObjectVelocityY, GameplayObjectVelocityX, +; GameplayObjectParameter, GameplayObjectPosXHi, GameplayObjectState. +; ; PRG offset: $045F ; CPU address: $C45F ;=============================================================================== InitializeSpecialObject: - jsr SpawnRandomObject ; CPU:$C45D PRG:045D 20 0C C4 - jsr GetRandomValue ; CPU:$C460 PRG:0460 20 B3 F1 - and #$7F ; CPU:$C463 PRG:0463 29 7F - sta GameplayObjectParameter,x ; CPU:$C465 PRG:0465 9D 08 05 - rts ; CPU:$C468 PRG:0468 60 + jsr SpawnRandomObject ; CPU:$C45F PRG:045F 20 0C C4 + jsr GetRandomValue ; CPU:$C462 PRG:0462 20 B3 F1 + and #$7F ; CPU:$C465 PRG:0465 29 7F + sta GameplayObjectParameter,x ; CPU:$C467 PRG:0467 9D 08 05 + rts ; CPU:$C46A PRG:046A 60 ;=============================================================================== ; AllocateEffectObject @@ -1141,29 +1242,30 @@ InitializeSpecialObject: ; pool fields are changed. ; ; Clobbers: -; A and X. +; A and X, the N and Z flags, EffectObjectState, EffectObjectPosX, +; EffectObjectPosY. ; ; PRG offsets: $046B-$0485 ; CPU range: $C46B-$C485 ;=============================================================================== AllocateEffectObject: - ldx #$07 ; CPU:$C469 PRG:0469 A2 07 + ldx #$07 ; CPU:$C46B PRG:046B A2 07 @FindFreeSlot: - lda EffectObjectState,x ; CPU:$C46B PRG:046B BD 5D 05 - bmi @InitializeSlot ; CPU:$C46E PRG:046E 30 04 - dex ; CPU:$C470 PRG:0470 CA - bpl @FindFreeSlot ; CPU:$C471 PRG:0471 10 F8 - rts ; CPU:$C473 PRG:0473 60 + lda EffectObjectState,x ; CPU:$C46D PRG:046D BD 5D 05 + bmi @InitializeSlot ; CPU:$C470 PRG:0470 30 04 + dex ; CPU:$C472 PRG:0472 CA + bpl @FindFreeSlot ; CPU:$C473 PRG:0473 10 F8 + rts ; CPU:$C475 PRG:0475 60 @InitializeSlot: - lda #$01 ; CPU:$C474 PRG:0474 A9 01 - sta EffectObjectState,x ; CPU:$C476 PRG:0476 9D 5D 05 - lda #$00 ; CPU:$C479 PRG:0479 A9 00 - sta EffectObjectPosX,x ; CPU:$C47B PRG:047B 9D 67 05 - lda SpawnPixelPosition ; CPU:$C47E PRG:047E A5 15 - sta EffectObjectPosY,x ; CPU:$C480 PRG:0480 9D 7B 05 - rts ; CPU:$C483 PRG:0483 60 + lda #$01 ; CPU:$C476 PRG:0476 A9 01 + sta EffectObjectState,x ; CPU:$C478 PRG:0478 9D 5D 05 + lda #$00 ; CPU:$C47B PRG:047B A9 00 + sta EffectObjectPosX,x ; CPU:$C47D PRG:047D 9D 67 05 + lda SpawnPixelPosition ; CPU:$C480 PRG:0480 A5 15 + sta EffectObjectPosY,x ; CPU:$C482 PRG:0482 9D 7B 05 + rts ; CPU:$C485 PRG:0485 60 ;=============================================================================== ; AllocateGameplayObject @@ -1186,33 +1288,35 @@ AllocateEffectObject: ; pool fields are changed. ; ; Clobbers: -; A and X. +; A and X, the N and Z flags, GameplayObjectPosX, GameplayObjectPosY, +; GameplayObjectVelocityY, GameplayObjectVelocityX, +; GameplayObjectParameter, GameplayObjectPosXHi, GameplayObjectState. ; ; PRG offsets: $0486-$04AC ; CPU range: $C486-$C4AC ;=============================================================================== AllocateGameplayObject: - ldx #$13 ; CPU:$C484 PRG:0484 A2 13 + ldx #$13 ; CPU:$C486 PRG:0486 A2 13 @FindFreeSlot: - lda GameplayObjectState,x ; CPU:$C486 PRG:0486 BD 30 05 - bmi @InitializeSlot ; CPU:$C489 PRG:0489 30 04 - dex ; CPU:$C48B PRG:048B CA - bpl @FindFreeSlot ; CPU:$C48C PRG:048C 10 F8 - rts ; CPU:$C48E PRG:048E 60 + lda GameplayObjectState,x ; CPU:$C488 PRG:0488 BD 30 05 + bmi @InitializeSlot ; CPU:$C48B PRG:048B 30 04 + dex ; CPU:$C48D PRG:048D CA + bpl @FindFreeSlot ; CPU:$C48E PRG:048E 10 F8 + rts ; CPU:$C490 PRG:0490 60 @InitializeSlot: - lda #$00 ; CPU:$C48F PRG:048F A9 00 - sta GameplayObjectState,x ; CPU:$C491 PRG:0491 9D 30 05 - sta GameplayObjectPosX,x ; CPU:$C494 PRG:0494 9D 90 04 - sta GameplayObjectVelocityX,x ; CPU:$C497 PRG:0497 9D F4 04 - sta GameplayObjectParameter,x ; CPU:$C49A PRG:049A 9D 08 05 - sta GameplayObjectVelocityY,x ; CPU:$C49D PRG:049D 9D E0 04 - lda SpawnParameter ; CPU:$C4A0 PRG:04A0 A5 14 - sta GameplayObjectPosXHi,x ; CPU:$C4A2 PRG:04A2 9D 1C 05 - lda SpawnPixelPosition ; CPU:$C4A5 PRG:04A5 A5 15 - sta GameplayObjectPosY,x ; CPU:$C4A7 PRG:04A7 9D A4 04 - rts ; CPU:$C4AA PRG:04AA 60 + lda #$00 ; CPU:$C491 PRG:0491 A9 00 + sta GameplayObjectState,x ; CPU:$C493 PRG:0493 9D 30 05 + sta GameplayObjectPosX,x ; CPU:$C496 PRG:0496 9D 90 04 + sta GameplayObjectVelocityX,x ; CPU:$C499 PRG:0499 9D F4 04 + sta GameplayObjectParameter,x ; CPU:$C49C PRG:049C 9D 08 05 + sta GameplayObjectVelocityY,x ; CPU:$C49F PRG:049F 9D E0 04 + lda SpawnParameter ; CPU:$C4A2 PRG:04A2 A5 14 + sta GameplayObjectPosXHi,x ; CPU:$C4A4 PRG:04A4 9D 1C 05 + lda SpawnPixelPosition ; CPU:$C4A7 PRG:04A7 A5 15 + sta GameplayObjectPosY,x ; CPU:$C4A9 PRG:04A9 9D A4 04 + rts ; CPU:$C4AC PRG:04AC 60 ; Round spawn command stream ; @@ -1227,22 +1331,22 @@ AllocateGameplayObject: ;=============================================================================== RoundSpawnCommandStream: - .byte $00, $00, $09, $00, $08, $8C, $00, $07 ; CPU:$C4AB PRG:04AB 00 00 09 00 08 8C 00 07 - .byte $18, $00, $18, $00, $19, $00, $1A, $00 ; CPU:$C4B3 PRG:04B3 18 00 18 00 19 00 1A 00 - .byte $84, $94, $1A, $00, $1A, $00, $1A, $00 ; CPU:$C4BB PRG:04BB 84 94 1A 00 1A 00 1A 00 - .byte $0B, $12, $00, $0C, $13, $00, $0D, $14 ; CPU:$C4C3 PRG:04C3 0B 12 00 0C 13 00 0D 14 - .byte $00, $14, $00, $00, $90, $00, $07, $00 ; CPU:$C4CB PRG:04CB 00 14 00 00 90 00 07 00 - .byte $07, $8C, $96, $00, $08, $00, $09, $00 ; CPU:$C4D3 PRG:04D3 07 8C 96 00 08 00 09 00 - .byte $00, $18, $00, $17, $00, $16, $00, $00 ; CPU:$C4DB PRG:04DB 00 18 00 17 00 16 00 00 - .byte $00, $00, $00, $00, $8A, $90, $00, $00 ; CPU:$C4E3 PRG:04E3 00 00 00 00 8A 90 00 00 - .byte $00, $08, $00, $09, $98, $00, $0A, $00 ; CPU:$C4EB PRG:04EB 00 08 00 09 98 00 0A 00 - .byte $00, $00, $86, $8A, $15, $00, $14, $00 ; CPU:$C4F3 PRG:04F3 00 00 86 8A 15 00 14 00 - .byte $8E, $13, $00, $00, $03, $0D, $00, $0D ; CPU:$C4FB PRG:04FB 8E 13 00 00 03 0D 00 0D - .byte $0E, $00, $0C, $0D, $00, $0D, $19, $00 ; CPU:$C503 PRG:0503 0E 00 0C 0D 00 0D 19 00 - .byte $86, $92, $00, $00, $98, $00, $00, $0A ; CPU:$C50B PRG:050B 86 92 00 00 98 00 00 0A - .byte $12, $00, $09, $13, $00, $08, $14, $00 ; CPU:$C513 PRG:0513 12 00 09 13 00 08 14 00 - .byte $07, $15, $00, $07, $16, $00, $07, $00 ; CPU:$C51B PRG:051B 07 15 00 07 16 00 07 00 - .byte $00, $00 ; CPU:$C523 PRG:0523 00 00 + .byte $00, $00, $09, $00, $08, $8C, $00, $07 ; CPU:$C4AD PRG:04AD 00 00 09 00 08 8C 00 07 + .byte $18, $00, $18, $00, $19, $00, $1A, $00 ; CPU:$C4B5 PRG:04B5 18 00 18 00 19 00 1A 00 + .byte $84, $94, $1A, $00, $1A, $00, $1A, $00 ; CPU:$C4BD PRG:04BD 84 94 1A 00 1A 00 1A 00 + .byte $0B, $12, $00, $0C, $13, $00, $0D, $14 ; CPU:$C4C5 PRG:04C5 0B 12 00 0C 13 00 0D 14 + .byte $00, $14, $00, $00, $90, $00, $07, $00 ; CPU:$C4CD PRG:04CD 00 14 00 00 90 00 07 00 + .byte $07, $8C, $96, $00, $08, $00, $09, $00 ; CPU:$C4D5 PRG:04D5 07 8C 96 00 08 00 09 00 + .byte $00, $18, $00, $17, $00, $16, $00, $00 ; CPU:$C4DD PRG:04DD 00 18 00 17 00 16 00 00 + .byte $00, $00, $00, $00, $8A, $90, $00, $00 ; CPU:$C4E5 PRG:04E5 00 00 00 00 8A 90 00 00 + .byte $00, $08, $00, $09, $98, $00, $0A, $00 ; CPU:$C4ED PRG:04ED 00 08 00 09 98 00 0A 00 + .byte $00, $00, $86, $8A, $15, $00, $14, $00 ; CPU:$C4F5 PRG:04F5 00 00 86 8A 15 00 14 00 + .byte $8E, $13, $00, $00, $03, $0D, $00, $0D ; CPU:$C4FD PRG:04FD 8E 13 00 00 03 0D 00 0D + .byte $0E, $00, $0C, $0D, $00, $0D, $19, $00 ; CPU:$C505 PRG:0505 0E 00 0C 0D 00 0D 19 00 + .byte $86, $92, $00, $00, $98, $00, $00, $0A ; CPU:$C50D PRG:050D 86 92 00 00 98 00 00 0A + .byte $12, $00, $09, $13, $00, $08, $14, $00 ; CPU:$C515 PRG:0515 12 00 09 13 00 08 14 00 + .byte $07, $15, $00, $07, $16, $00, $07, $00 ; CPU:$C51D PRG:051D 07 15 00 07 16 00 07 00 + .byte $00, $00 ; CPU:$C525 PRG:0525 00 00 ;=============================================================================== ; AdvanceRoundSeed @@ -1259,19 +1363,24 @@ RoundSpawnCommandStream: ; Returns: ; RoundSeedValue contains the advanced byte value. ; +; Clobbers: +; A and X, the N, Z, C and V flags, ParticleSequenceIndex, +; RoundSeedValue, ParticleScrollDelta, SequenceDataLo, SequenceDataHi, +; PlayerParticleHitCount, PlayerParticleHitCount2. +; ; PRG offsets: $0527-$0538 ; CPU range: $C527-$C538 ;=============================================================================== AdvanceRoundSeed: - jsr UpdateRoundSeedSource ; CPU:$C525 PRG:0525 20 E2 D0 - asl RoundSeedValue ; CPU:$C528 PRG:0528 0E 59 05 - lda RoundSeedValue ; CPU:$C52B PRG:052B AD 59 05 - asl a ; CPU:$C52E PRG:052E 0A - asl a ; CPU:$C52F PRG:052F 0A - adc RoundSeedValue ; CPU:$C530 PRG:0530 6D 59 05 - sta RoundSeedValue ; CPU:$C533 PRG:0533 8D 59 05 - rts ; CPU:$C536 PRG:0536 60 + jsr UpdateRoundSeedSource ; CPU:$C527 PRG:0527 20 E2 D0 + asl RoundSeedValue ; CPU:$C52A PRG:052A 0E 59 05 + lda RoundSeedValue ; CPU:$C52D PRG:052D AD 59 05 + asl a ; CPU:$C530 PRG:0530 0A + asl a ; CPU:$C531 PRG:0531 0A + adc RoundSeedValue ; CPU:$C532 PRG:0532 6D 59 05 + sta RoundSeedValue ; CPU:$C535 PRG:0535 8D 59 05 + rts ; CPU:$C538 PRG:0538 60 ;=============================================================================== ; FindSortedRecordPosition ; @@ -1287,49 +1396,53 @@ AdvanceRoundSeed: ; Returns: ; A and RecordIndex identify the selected position; $43/$49/$4A receive derived values. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, RecordPtrLo, RecordPtrHi, +; SelectedRecordIndex, SelectedRecordIndexCopy, ScaledRecordValue. +; ; PRG offsets: $0539-$0578 ; CPU range: $C539-$C578 ;=============================================================================== FindSortedRecordPosition: - lda #$00 ; CPU:$C537 PRG:0537 A9 00 - sta RecordIndex ; CPU:$C539 PRG:0539 85 12 + lda #$00 ; CPU:$C539 PRG:0539 A9 00 + sta RecordIndex ; CPU:$C53B PRG:053B 85 12 FindSortedRecordPosition_Block: - lda RecordIndex ; CPU:$C53B PRG:053B A5 12 - asl a ; CPU:$C53D PRG:053D 0A - asl a ; CPU:$C53E PRG:053E 0A - adc RecordIndex ; CPU:$C53F PRG:053F 65 12 - sta RecordPtrLo ; CPU:$C541 PRG:0541 85 1D - lda #$07 ; CPU:$C543 PRG:0543 A9 07 - sta RecordPtrHi ; CPU:$C545 PRG:0545 85 1E - ldy #$04 ; CPU:$C547 PRG:0547 A0 04 + lda RecordIndex ; CPU:$C53D PRG:053D A5 12 + asl a ; CPU:$C53F PRG:053F 0A + asl a ; CPU:$C540 PRG:0540 0A + adc RecordIndex ; CPU:$C541 PRG:0541 65 12 + sta RecordPtrLo ; CPU:$C543 PRG:0543 85 1D + lda #$07 ; CPU:$C545 PRG:0545 A9 07 + sta RecordPtrHi ; CPU:$C547 PRG:0547 85 1E + ldy #$04 ; CPU:$C549 PRG:0549 A0 04 FindSortedRecordPosition_Block_1: - lda (RecordPtrLo),y ; CPU:$C549 PRG:0549 B1 1D - cmp CurrentRecord,y ; CPU:$C54B PRG:054B D9 03 00 - bcc FindSortedRecordPosition_Block_3 ; CPU:$C54E PRG:054E 90 11 - bne FindSortedRecordPosition_Block_2 ; CPU:$C550 PRG:0550 D0 05 - dey ; CPU:$C552 PRG:0552 88 - bpl FindSortedRecordPosition_Block_1 ; CPU:$C553 PRG:0553 10 F4 - bmi FindSortedRecordPosition_Block_3 ; CPU:$C555 PRG:0555 30 0A + lda (RecordPtrLo),y ; CPU:$C54B PRG:054B B1 1D + cmp CurrentRecord,y ; CPU:$C54D PRG:054D D9 03 00 + bcc FindSortedRecordPosition_Block_3 ; CPU:$C550 PRG:0550 90 11 + bne FindSortedRecordPosition_Block_2 ; CPU:$C552 PRG:0552 D0 05 + dey ; CPU:$C554 PRG:0554 88 + bpl FindSortedRecordPosition_Block_1 ; CPU:$C555 PRG:0555 10 F4 + bmi FindSortedRecordPosition_Block_3 ; CPU:$C557 PRG:0557 30 0A FindSortedRecordPosition_Block_2: - inc RecordIndex ; CPU:$C557 PRG:0557 E6 12 - lda RecordIndex ; CPU:$C559 PRG:0559 A5 12 - cmp #$32 ; CPU:$C55B PRG:055B C9 32 - bne FindSortedRecordPosition_Block ; CPU:$C55D PRG:055D D0 DC - dec RecordIndex ; CPU:$C55F PRG:055F C6 12 + inc RecordIndex ; CPU:$C559 PRG:0559 E6 12 + lda RecordIndex ; CPU:$C55B PRG:055B A5 12 + cmp #$32 ; CPU:$C55D PRG:055D C9 32 + bne FindSortedRecordPosition_Block ; CPU:$C55F PRG:055F D0 DC + dec RecordIndex ; CPU:$C561 PRG:0561 C6 12 FindSortedRecordPosition_Block_3: - inc RecordIndex ; CPU:$C561 PRG:0561 E6 12 - lda RecordIndex ; CPU:$C563 PRG:0563 A5 12 - pha ; CPU:$C565 PRG:0565 48 - sta SelectedRecordIndex ; CPU:$C566 PRG:0566 85 43 - ldy #$0A ; CPU:$C568 PRG:0568 A0 0A - jsr DivideOrScaleRecordValue ; CPU:$C56A PRG:056A 20 7C D7 - sta ScaledRecordValue ; CPU:$C56D PRG:056D 85 4A - lda SelectedRecordIndex ; CPU:$C56F PRG:056F A5 43 - sta SelectedRecordIndexCopy ; CPU:$C571 PRG:0571 85 49 - pla ; CPU:$C573 PRG:0573 68 - sta RecordIndex ; CPU:$C574 PRG:0574 85 12 - rts ; CPU:$C576 PRG:0576 60 + inc RecordIndex ; CPU:$C563 PRG:0563 E6 12 + lda RecordIndex ; CPU:$C565 PRG:0565 A5 12 + pha ; CPU:$C567 PRG:0567 48 + sta SelectedRecordIndex ; CPU:$C568 PRG:0568 85 43 + ldy #$0A ; CPU:$C56A PRG:056A A0 0A + jsr DivideOrScaleRecordValue ; CPU:$C56C PRG:056C 20 7C D7 + sta ScaledRecordValue ; CPU:$C56F PRG:056F 85 4A + lda SelectedRecordIndex ; CPU:$C571 PRG:0571 A5 43 + sta SelectedRecordIndexCopy ; CPU:$C573 PRG:0573 85 49 + pla ; CPU:$C575 PRG:0575 68 + sta RecordIndex ; CPU:$C576 PRG:0576 85 12 + rts ; CPU:$C578 PRG:0578 60 ;=============================================================================== ; InsertRecordIntoSortedTable ; @@ -1345,57 +1458,62 @@ FindSortedRecordPosition_Block_3: ; Returns: ; The table at SortedRecordTable-$07F9 is updated in place. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, ReverseRecordIndex, +; RecordPtrLo, RecordPtrHi, DestinationPtrLo, DestinationPtrHi, +; SelectedRecordIndex, SelectedRecordIndexCopy, ScaledRecordValue. +; ; PRG offsets: $0579-$05B6 ; CPU range: $C579-$C5B6 ;=============================================================================== InsertRecordIntoSortedTable: - jsr FindSortedRecordPosition ; CPU:$C577 PRG:0577 20 39 C5 - dec RecordIndex ; CPU:$C57A PRG:057A C6 12 - lda #$31 ; CPU:$C57C PRG:057C A9 31 - sec ; CPU:$C57E PRG:057E 38 - sbc RecordIndex ; CPU:$C57F PRG:057F E5 12 - sta ReverseRecordIndex ; CPU:$C581 PRG:0581 85 13 - asl a ; CPU:$C583 PRG:0583 0A - asl a ; CPU:$C584 PRG:0584 0A - adc ReverseRecordIndex ; CPU:$C585 PRG:0585 65 13 - tay ; CPU:$C587 PRG:0587 A8 - lda RecordIndex ; CPU:$C588 PRG:0588 A5 12 - asl a ; CPU:$C58A PRG:058A 0A - asl a ; CPU:$C58B PRG:058B 0A - adc RecordIndex ; CPU:$C58C PRG:058C 65 12 - sta RecordPtrLo ; CPU:$C58E PRG:058E 85 1D - clc ; CPU:$C590 PRG:0590 18 - adc #$05 ; CPU:$C591 PRG:0591 69 05 - sta DestinationPtrLo ; CPU:$C593 PRG:0593 85 1F - lda #$07 ; CPU:$C595 PRG:0595 A9 07 - sta RecordPtrHi ; CPU:$C597 PRG:0597 85 1E - sta DestinationPtrHi ; CPU:$C599 PRG:0599 85 20 - tya ; CPU:$C59B PRG:059B 98 - beq InsertRecordIntoSortedTable_Block_1 ; CPU:$C59C PRG:059C F0 0C - dey ; CPU:$C59E PRG:059E 88 + jsr FindSortedRecordPosition ; CPU:$C579 PRG:0579 20 39 C5 + dec RecordIndex ; CPU:$C57C PRG:057C C6 12 + lda #$31 ; CPU:$C57E PRG:057E A9 31 + sec ; CPU:$C580 PRG:0580 38 + sbc RecordIndex ; CPU:$C581 PRG:0581 E5 12 + sta ReverseRecordIndex ; CPU:$C583 PRG:0583 85 13 + asl a ; CPU:$C585 PRG:0585 0A + asl a ; CPU:$C586 PRG:0586 0A + adc ReverseRecordIndex ; CPU:$C587 PRG:0587 65 13 + tay ; CPU:$C589 PRG:0589 A8 + lda RecordIndex ; CPU:$C58A PRG:058A A5 12 + asl a ; CPU:$C58C PRG:058C 0A + asl a ; CPU:$C58D PRG:058D 0A + adc RecordIndex ; CPU:$C58E PRG:058E 65 12 + sta RecordPtrLo ; CPU:$C590 PRG:0590 85 1D + clc ; CPU:$C592 PRG:0592 18 + adc #$05 ; CPU:$C593 PRG:0593 69 05 + sta DestinationPtrLo ; CPU:$C595 PRG:0595 85 1F + lda #$07 ; CPU:$C597 PRG:0597 A9 07 + sta RecordPtrHi ; CPU:$C599 PRG:0599 85 1E + sta DestinationPtrHi ; CPU:$C59B PRG:059B 85 20 + tya ; CPU:$C59D PRG:059D 98 + beq InsertRecordIntoSortedTable_Block_1 ; CPU:$C59E PRG:059E F0 0C + dey ; CPU:$C5A0 PRG:05A0 88 InsertRecordIntoSortedTable_Block: - lda (RecordPtrLo),y ; CPU:$C59F PRG:059F B1 1D - sta (DestinationPtrLo),y ; CPU:$C5A1 PRG:05A1 91 1F - dey ; CPU:$C5A3 PRG:05A3 88 - bne InsertRecordIntoSortedTable_Block ; CPU:$C5A4 PRG:05A4 D0 F9 - lda (RecordPtrLo),y ; CPU:$C5A6 PRG:05A6 B1 1D - sta (DestinationPtrLo),y ; CPU:$C5A8 PRG:05A8 91 1F + lda (RecordPtrLo),y ; CPU:$C5A1 PRG:05A1 B1 1D + sta (DestinationPtrLo),y ; CPU:$C5A3 PRG:05A3 91 1F + dey ; CPU:$C5A5 PRG:05A5 88 + bne InsertRecordIntoSortedTable_Block ; CPU:$C5A6 PRG:05A6 D0 F9 + lda (RecordPtrLo),y ; CPU:$C5A8 PRG:05A8 B1 1D + sta (DestinationPtrLo),y ; CPU:$C5AA PRG:05AA 91 1F InsertRecordIntoSortedTable_Block_1: - ldy #$04 ; CPU:$C5AA PRG:05AA A0 04 + ldy #$04 ; CPU:$C5AC PRG:05AC A0 04 InsertRecordIntoSortedTable_Block_2: - lda CurrentRecord,y ; CPU:$C5AC PRG:05AC B9 03 00 - sta (RecordPtrLo),y ; CPU:$C5AF PRG:05AF 91 1D - dey ; CPU:$C5B1 PRG:05B1 88 - bpl InsertRecordIntoSortedTable_Block_2 ; CPU:$C5B2 PRG:05B2 10 F8 - rts ; CPU:$C5B4 PRG:05B4 60 + lda CurrentRecord,y ; CPU:$C5AE PRG:05AE B9 03 00 + sta (RecordPtrLo),y ; CPU:$C5B1 PRG:05B1 91 1D + dey ; CPU:$C5B3 PRG:05B3 88 + bpl InsertRecordIntoSortedTable_Block_2 ; CPU:$C5B4 PRG:05B4 10 F8 + rts ; CPU:$C5B6 PRG:05B6 60 ; Carrier display-selection tables ;=============================================================================== NormalDisplayModeTable: - .byte $01, $02, $03, $03 ; CPU:$C5B5 PRG:05B5 01 02 03 03 + .byte $01, $02, $03, $03 ; CPU:$C5B7 PRG:05B7 01 02 03 03 AlternateDisplayModeTable: - .byte $02, $01, $FF, $03, $04, $05, $06, $FF ; CPU:$C5B9 PRG:05B9 02 01 FF 03 04 05 06 FF + .byte $02, $01, $FF, $03, $04, $05, $06, $FF ; CPU:$C5BB PRG:05BB 02 01 FF 03 04 05 06 FF ;=============================================================================== ; UpdateCarrierObjectDisplay @@ -1412,57 +1530,64 @@ AlternateDisplayModeTable: ; Returns: ; Carrier metasprite and target-player coordinates updated. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, $13, SpawnParameter, +; SpawnPixelPosition, RecordPtrLo, RecordPtrHi, DestinationPtrLo, +; DestinationPtrHi, PpuSourcePtrLo, PpuSourcePtrHi, CarrierDisplayMode, +; PlayerSlotState, PlayerPosX, PlayerPosY, SoundRequestFlags1, OamBuffer, +; the OAM shadow, PlayerStateTimer. +; ; PRG offsets: $05C3-$0613 ; CPU range: $C5C3-$C613 ;=============================================================================== UpdateCarrierObjectDisplay: - lda CarrierSequenceTimer ; CPU:$C5C1 PRG:05C1 AD 8D 04 - lsr a ; CPU:$C5C4 PRG:05C4 4A - lsr a ; CPU:$C5C5 PRG:05C5 4A - lsr a ; CPU:$C5C6 PRG:05C6 4A - tax ; CPU:$C5C7 PRG:05C7 AA - lda CarrierMode ; CPU:$C5C8 PRG:05C8 AD 8A 04 - bne UpdateCarrierObjectDisplay_Block ; CPU:$C5CB PRG:05CB D0 06 - lda NormalDisplayModeTable,x ; CPU:$C5CD PRG:05CD BD B7 C5 - jmp UpdateCarrierObjectDisplay_Store ; CPU:$C5D0 PRG:05D0 4C D8 C5 + lda CarrierSequenceTimer ; CPU:$C5C3 PRG:05C3 AD 8D 04 + lsr a ; CPU:$C5C6 PRG:05C6 4A + lsr a ; CPU:$C5C7 PRG:05C7 4A + lsr a ; CPU:$C5C8 PRG:05C8 4A + tax ; CPU:$C5C9 PRG:05C9 AA + lda CarrierMode ; CPU:$C5CA PRG:05CA AD 8A 04 + bne UpdateCarrierObjectDisplay_Block ; CPU:$C5CD PRG:05CD D0 06 + lda NormalDisplayModeTable,x ; CPU:$C5CF PRG:05CF BD B7 C5 + jmp UpdateCarrierObjectDisplay_Store ; CPU:$C5D2 PRG:05D2 4C D8 C5 UpdateCarrierObjectDisplay_Block: - lda AlternateDisplayModeTable,x ; CPU:$C5D3 PRG:05D3 BD BB C5 + lda AlternateDisplayModeTable,x; CPU:$C5D5 PRG:05D5 BD BB C5 UpdateCarrierObjectDisplay_Store: - sta CarrierDisplayMode ; CPU:$C5D6 PRG:05D6 85 87 - ldx #$08 ; CPU:$C5D8 PRG:05D8 A2 08 - jsr BuildObjectMetasprite ; CPU:$C5DA PRG:05DA 20 A4 E3 - lda CarrierDropPending ; CPU:$C5DD PRG:05DD AD 8C 04 - beq UpdateCarrierObjectDisplay_Block_5 ; CPU:$C5E0 PRG:05E0 F0 2F - ldx CarrierTargetPlayer ; CPU:$C5E2 PRG:05E2 AE 8B 04 - lda CarrierSequenceTimer ; CPU:$C5E5 PRG:05E5 AD 8D 04 - cmp #$20 ; CPU:$C5E8 PRG:05E8 C9 20 - bne UpdateCarrierObjectDisplay_Block_1 ; CPU:$C5EA PRG:05EA D0 06 - lda #$FF ; CPU:$C5EC PRG:05EC A9 FF - sta PlayerSlotState,x ; CPU:$C5EE PRG:05EE 95 88 - bmi UpdateCarrierObjectDisplay_Block_4 ; CPU:$C5F0 PRG:05F0 30 1C + sta CarrierDisplayMode ; CPU:$C5D8 PRG:05D8 85 87 + ldx #$08 ; CPU:$C5DA PRG:05DA A2 08 + jsr BuildObjectMetasprite ; CPU:$C5DC PRG:05DC 20 A4 E3 + lda CarrierDropPending ; CPU:$C5DF PRG:05DF AD 8C 04 + beq UpdateCarrierObjectDisplay_Block_5 ; CPU:$C5E2 PRG:05E2 F0 2F + ldx CarrierTargetPlayer ; CPU:$C5E4 PRG:05E4 AE 8B 04 + lda CarrierSequenceTimer ; CPU:$C5E7 PRG:05E7 AD 8D 04 + cmp #$20 ; CPU:$C5EA PRG:05EA C9 20 + bne UpdateCarrierObjectDisplay_Block_1 ; CPU:$C5EC PRG:05EC D0 06 + lda #$FF ; CPU:$C5EE PRG:05EE A9 FF + sta PlayerSlotState,x ; CPU:$C5F0 PRG:05F0 95 88 + bmi UpdateCarrierObjectDisplay_Block_4 ; CPU:$C5F2 PRG:05F2 30 1C UpdateCarrierObjectDisplay_Block_1: - bcs UpdateCarrierObjectDisplay_Block_5 ; CPU:$C5F2 PRG:05F2 B0 1D - lda CarrierSavedValue ; CPU:$C5F4 PRG:05F4 AD 50 04 - bne UpdateCarrierObjectDisplay_Block_2 ; CPU:$C5F7 PRG:05F7 D0 07 - lda CarrierTargetX ; CPU:$C5F9 PRG:05F9 A5 99 - clc ; CPU:$C5FB PRG:05FB 18 - adc #$04 ; CPU:$C5FC PRG:05FC 69 04 - bne UpdateCarrierObjectDisplay_Block_3 ; CPU:$C5FE PRG:05FE D0 05 + bcs UpdateCarrierObjectDisplay_Block_5 ; CPU:$C5F4 PRG:05F4 B0 1D + lda CarrierSavedValue ; CPU:$C5F6 PRG:05F6 AD 50 04 + bne UpdateCarrierObjectDisplay_Block_2 ; CPU:$C5F9 PRG:05F9 D0 07 + lda CarrierTargetX ; CPU:$C5FB PRG:05FB A5 99 + clc ; CPU:$C5FD PRG:05FD 18 + adc #$04 ; CPU:$C5FE PRG:05FE 69 04 + bne UpdateCarrierObjectDisplay_Block_3 ; CPU:$C600 PRG:0600 D0 05 UpdateCarrierObjectDisplay_Block_2: - lda CarrierTargetX ; CPU:$C600 PRG:0600 A5 99 - sec ; CPU:$C602 PRG:0602 38 - sbc #$04 ; CPU:$C603 PRG:0603 E9 04 + lda CarrierTargetX ; CPU:$C602 PRG:0602 A5 99 + sec ; CPU:$C604 PRG:0604 38 + sbc #$04 ; CPU:$C605 PRG:0605 E9 04 UpdateCarrierObjectDisplay_Block_3: - sta PlayerPosX,x ; CPU:$C605 PRG:0605 95 91 - lda CarrierPosY ; CPU:$C607 PRG:0607 A5 A2 - sec ; CPU:$C609 PRG:0609 38 - sbc #$0A ; CPU:$C60A PRG:060A E9 0A - sta PlayerPosY,x ; CPU:$C60C PRG:060C 95 9A + sta PlayerPosX,x ; CPU:$C607 PRG:0607 95 91 + lda CarrierPosY ; CPU:$C609 PRG:0609 A5 A2 + sec ; CPU:$C60B PRG:060B 38 + sbc #$0A ; CPU:$C60C PRG:060C E9 0A + sta PlayerPosY,x ; CPU:$C60E PRG:060E 95 9A UpdateCarrierObjectDisplay_Block_4: - jsr BuildObjectMetasprite ; CPU:$C60E PRG:060E 20 A4 E3 + jsr BuildObjectMetasprite ; CPU:$C610 PRG:0610 20 A4 E3 UpdateCarrierObjectDisplay_Block_5: - rts ; CPU:$C611 PRG:0611 60 + rts ; CPU:$C613 PRG:0613 60 ;=============================================================================== ; FindEligiblePlayerForCarrier ; @@ -1478,39 +1603,44 @@ UpdateCarrierObjectDisplay_Block_5: ; Returns: ; CarrierTargetPlayer is set when an eligible player is found; $FF indicates none. ; +; Clobbers: +; A and X, the N, Z and C flags, CarrierPosY, CarrierSavedValue, +; CarrierSequenceActive, CarrierMode, CarrierTargetPlayer, +; CarrierDropPending, CarrierSequenceTimer. +; ; PRG offsets: $0614-$064A ; CPU range: $C614-$C64A ;=============================================================================== FindEligiblePlayerForCarrier: - lda #$FF ; CPU:$C612 PRG:0612 A9 FF - sta CarrierTargetPlayer ; CPU:$C614 PRG:0614 8D 8B 04 - ldx #$07 ; CPU:$C617 PRG:0617 A2 07 + lda #$FF ; CPU:$C614 PRG:0614 A9 FF + sta CarrierTargetPlayer ; CPU:$C616 PRG:0616 8D 8B 04 + ldx #$07 ; CPU:$C619 PRG:0619 A2 07 FindEligiblePlayerForCarrier_Block: - lda PlayerSlotState,x ; CPU:$C619 PRG:0619 B5 88 - bmi FindEligiblePlayerForCarrier_Block_1 ; CPU:$C61B PRG:061B 30 0C - lda PlayerPosY,x ; CPU:$C61D PRG:061D B5 9A - cmp #$B4 ; CPU:$C61F PRG:061F C9 B4 - bcc FindEligiblePlayerForCarrier_Block_1 ; CPU:$C621 PRG:0621 90 06 - lda PlayerPosX,x ; CPU:$C623 PRG:0623 B5 91 - cmp CarrierTargetX ; CPU:$C625 PRG:0625 C5 99 - beq FindEligiblePlayerForCarrier_Block_2 ; CPU:$C627 PRG:0627 F0 04 + lda PlayerSlotState,x ; CPU:$C61B PRG:061B B5 88 + bmi FindEligiblePlayerForCarrier_Block_1 ; CPU:$C61D PRG:061D 30 0C + lda PlayerPosY,x ; CPU:$C61F PRG:061F B5 9A + cmp #$B4 ; CPU:$C621 PRG:0621 C9 B4 + bcc FindEligiblePlayerForCarrier_Block_1 ; CPU:$C623 PRG:0623 90 06 + lda PlayerPosX,x ; CPU:$C625 PRG:0625 B5 91 + cmp CarrierTargetX ; CPU:$C627 PRG:0627 C5 99 + beq FindEligiblePlayerForCarrier_Block_2 ; CPU:$C629 PRG:0629 F0 04 FindEligiblePlayerForCarrier_Block_1: - dex ; CPU:$C629 PRG:0629 CA - bpl FindEligiblePlayerForCarrier_Block ; CPU:$C62A PRG:062A 10 ED - rts ; CPU:$C62C PRG:062C 60 + dex ; CPU:$C62B PRG:062B CA + bpl FindEligiblePlayerForCarrier_Block ; CPU:$C62C PRG:062C 10 ED + rts ; CPU:$C62E PRG:062E 60 FindEligiblePlayerForCarrier_Block_2: - stx CarrierTargetPlayer ; CPU:$C62D PRG:062D 8E 8B 04 - lda PlayerVariantTable,x ; CPU:$C630 PRG:0630 BD 48 04 - sta CarrierSavedValue ; CPU:$C633 PRG:0633 8D 50 04 - lda #$00 ; CPU:$C636 PRG:0636 A9 00 - sta CarrierMode ; CPU:$C638 PRG:0638 8D 8A 04 - sta CarrierSequenceTimer ; CPU:$C63B PRG:063B 8D 8D 04 - sta CarrierDropPending ; CPU:$C63E PRG:063E 8D 8C 04 - sta CarrierSequenceActive ; CPU:$C641 PRG:0641 8D 89 04 - lda #$DC ; CPU:$C644 PRG:0644 A9 DC - sta CarrierPosY ; CPU:$C646 PRG:0646 85 A2 - rts ; CPU:$C648 PRG:0648 60 + stx CarrierTargetPlayer ; CPU:$C62F PRG:062F 8E 8B 04 + lda PlayerVariantTable,x ; CPU:$C632 PRG:0632 BD 48 04 + sta CarrierSavedValue ; CPU:$C635 PRG:0635 8D 50 04 + lda #$00 ; CPU:$C638 PRG:0638 A9 00 + sta CarrierMode ; CPU:$C63A PRG:063A 8D 8A 04 + sta CarrierSequenceTimer ; CPU:$C63D PRG:063D 8D 8D 04 + sta CarrierDropPending ; CPU:$C640 PRG:0640 8D 8C 04 + sta CarrierSequenceActive ; CPU:$C643 PRG:0643 8D 89 04 + lda #$DC ; CPU:$C646 PRG:0646 A9 DC + sta CarrierPosY ; CPU:$C648 PRG:0648 85 A2 + rts ; CPU:$C64A PRG:064A 60 ;=============================================================================== ; AdvanceCarrierTargetX ; @@ -1526,19 +1656,22 @@ FindEligiblePlayerForCarrier_Block_2: ; Returns: ; CarrierTargetX updated. ; +; Clobbers: +; A, the N, Z and C flags, CarrierTargetX. +; ; PRG offsets: $064B-$0657 ; CPU range: $C64B-$C657 ;=============================================================================== AdvanceCarrierTargetX: - inc CarrierTargetX ; CPU:$C649 PRG:0649 E6 99 - lda CarrierTargetX ; CPU:$C64B PRG:064B A5 99 - cmp #$B1 ; CPU:$C64D PRG:064D C9 B1 - bcc AdvanceCarrierTargetX_Block ; CPU:$C64F PRG:064F 90 04 - lda #$40 ; CPU:$C651 PRG:0651 A9 40 - sta CarrierTargetX ; CPU:$C653 PRG:0653 85 99 + inc CarrierTargetX ; CPU:$C64B PRG:064B E6 99 + lda CarrierTargetX ; CPU:$C64D PRG:064D A5 99 + cmp #$B1 ; CPU:$C64F PRG:064F C9 B1 + bcc AdvanceCarrierTargetX_Block; CPU:$C651 PRG:0651 90 04 + lda #$40 ; CPU:$C653 PRG:0653 A9 40 + sta CarrierTargetX ; CPU:$C655 PRG:0655 85 99 AdvanceCarrierTargetX_Block: - rts ; CPU:$C655 PRG:0655 60 + rts ; CPU:$C657 PRG:0657 60 ;=============================================================================== ; UpdateCarrierArrivalSequence ; @@ -1554,67 +1687,73 @@ AdvanceCarrierTargetX_Block: ; Returns: ; Carrier sequence state, player state, and sound request flags updated. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, PlayerLifecycleState, +; PlayerSlotState, CarrierPosY, SoundRequestFlags2, PlayerAnimationState, +; CarrierSequenceActive, CarrierMode, CarrierDropPending, +; CarrierSequenceTimer. +; ; PRG offsets: $0658-$06B7 ; CPU range: $C658-$C6B7 ;=============================================================================== UpdateCarrierArrivalSequence: - lda CarrierSequenceActive ; CPU:$C656 PRG:0656 AD 89 04 - bne UpdateCarrierArrivalSequence_Block ; CPU:$C659 PRG:0659 D0 12 - dec CarrierPosY ; CPU:$C65B PRG:065B C6 A2 - lda CarrierPosY ; CPU:$C65D PRG:065D A5 A2 - cmp #$C4 ; CPU:$C65F PRG:065F C9 C4 - bcs UpdateCarrierArrivalSequence_Block_1 ; CPU:$C661 PRG:0661 B0 0C - inc CarrierPosY ; CPU:$C663 PRG:0663 E6 A2 - inc CarrierMode ; CPU:$C665 PRG:0665 EE 8A 04 - inc CarrierSequenceActive ; CPU:$C668 PRG:0668 EE 89 04 - bne UpdateCarrierArrivalSequence_Block_1 ; CPU:$C66B PRG:066B D0 02 + lda CarrierSequenceActive ; CPU:$C658 PRG:0658 AD 89 04 + bne UpdateCarrierArrivalSequence_Block ; CPU:$C65B PRG:065B D0 12 + dec CarrierPosY ; CPU:$C65D PRG:065D C6 A2 + lda CarrierPosY ; CPU:$C65F PRG:065F A5 A2 + cmp #$C4 ; CPU:$C661 PRG:0661 C9 C4 + bcs UpdateCarrierArrivalSequence_Block_1 ; CPU:$C663 PRG:0663 B0 0C + inc CarrierPosY ; CPU:$C665 PRG:0665 E6 A2 + inc CarrierMode ; CPU:$C667 PRG:0667 EE 8A 04 + inc CarrierSequenceActive ; CPU:$C66A PRG:066A EE 89 04 + bne UpdateCarrierArrivalSequence_Block_1 ; CPU:$C66D PRG:066D D0 02 UpdateCarrierArrivalSequence_Block: - inc CarrierPosY ; CPU:$C66D PRG:066D E6 A2 + inc CarrierPosY ; CPU:$C66F PRG:066F E6 A2 UpdateCarrierArrivalSequence_Block_1: - inc CarrierSequenceTimer ; CPU:$C66F PRG:066F EE 8D 04 - lda CarrierSequenceTimer ; CPU:$C672 PRG:0672 AD 8D 04 - cmp #$18 ; CPU:$C675 PRG:0675 C9 18 - bne UpdateCarrierArrivalSequence_Block_2 ; CPU:$C677 PRG:0677 D0 28 - ldx CarrierTargetPlayer ; CPU:$C679 PRG:0679 AE 8B 04 - lda PlayerSlotState,x ; CPU:$C67C PRG:067C B5 88 - bmi UpdateCarrierArrivalSequence_Block_2 ; CPU:$C67E PRG:067E 30 21 - lda PlayerPosY,x ; CPU:$C680 PRG:0680 B5 9A - clc ; CPU:$C682 PRG:0682 18 - adc #$10 ; CPU:$C683 PRG:0683 69 10 - cmp CarrierPosY ; CPU:$C685 PRG:0685 C5 A2 - bcc UpdateCarrierArrivalSequence_Block_2 ; CPU:$C687 PRG:0687 90 18 - ldy PlayerAnimationState,x ; CPU:$C689 PRG:0689 BC 51 04 - lda CarrierAnimationSequenceTable,y ; CPU:$C68C PRG:068C B9 B8 C6 - sta PlayerAnimationState,x ; CPU:$C68F PRG:068F 9D 51 04 - lda #$00 ; CPU:$C692 PRG:0692 A9 00 - sta PlayerLifecycleState,x ; CPU:$C694 PRG:0694 95 7F - sta PlayerSlotState,x ; CPU:$C696 PRG:0696 95 88 - lda SoundRequestFlags2 ; CPU:$C698 PRG:0698 A5 F2 - ora #$40 ; CPU:$C69A PRG:069A 09 40 - sta SoundRequestFlags2 ; CPU:$C69C PRG:069C 85 F2 - inc CarrierDropPending ; CPU:$C69E PRG:069E EE 8C 04 + inc CarrierSequenceTimer ; CPU:$C671 PRG:0671 EE 8D 04 + lda CarrierSequenceTimer ; CPU:$C674 PRG:0674 AD 8D 04 + cmp #$18 ; CPU:$C677 PRG:0677 C9 18 + bne UpdateCarrierArrivalSequence_Block_2 ; CPU:$C679 PRG:0679 D0 28 + ldx CarrierTargetPlayer ; CPU:$C67B PRG:067B AE 8B 04 + lda PlayerSlotState,x ; CPU:$C67E PRG:067E B5 88 + bmi UpdateCarrierArrivalSequence_Block_2 ; CPU:$C680 PRG:0680 30 21 + lda PlayerPosY,x ; CPU:$C682 PRG:0682 B5 9A + clc ; CPU:$C684 PRG:0684 18 + adc #$10 ; CPU:$C685 PRG:0685 69 10 + cmp CarrierPosY ; CPU:$C687 PRG:0687 C5 A2 + bcc UpdateCarrierArrivalSequence_Block_2 ; CPU:$C689 PRG:0689 90 18 + ldy PlayerAnimationState,x ; CPU:$C68B PRG:068B BC 51 04 + lda CarrierAnimationSequenceTable,y ; CPU:$C68E PRG:068E B9 B8 C6 + sta PlayerAnimationState,x ; CPU:$C691 PRG:0691 9D 51 04 + lda #$00 ; CPU:$C694 PRG:0694 A9 00 + sta PlayerLifecycleState,x ; CPU:$C696 PRG:0696 95 7F + sta PlayerSlotState,x ; CPU:$C698 PRG:0698 95 88 + lda SoundRequestFlags2 ; CPU:$C69A PRG:069A A5 F2 + ora #$40 ; CPU:$C69C PRG:069C 09 40 + sta SoundRequestFlags2 ; CPU:$C69E PRG:069E 85 F2 + inc CarrierDropPending ; CPU:$C6A0 PRG:06A0 EE 8C 04 UpdateCarrierArrivalSequence_Block_2: - lda CarrierMode ; CPU:$C6A1 PRG:06A1 AD 8A 04 - beq UpdateCarrierArrivalSequence_Block_4 ; CPU:$C6A4 PRG:06A4 F0 0F - lda CarrierSequenceTimer ; CPU:$C6A6 PRG:06A6 AD 8D 04 - cmp #$28 ; CPU:$C6A9 PRG:06A9 C9 28 - beq UpdateCarrierArrivalSequence_Block_3 ; CPU:$C6AB PRG:06AB F0 04 - cmp #$30 ; CPU:$C6AD PRG:06AD C9 30 - bne UpdateCarrierArrivalSequence_Block_4 ; CPU:$C6AF PRG:06AF D0 04 + lda CarrierMode ; CPU:$C6A3 PRG:06A3 AD 8A 04 + beq UpdateCarrierArrivalSequence_Block_4 ; CPU:$C6A6 PRG:06A6 F0 0F + lda CarrierSequenceTimer ; CPU:$C6A8 PRG:06A8 AD 8D 04 + cmp #$28 ; CPU:$C6AB PRG:06AB C9 28 + beq UpdateCarrierArrivalSequence_Block_3 ; CPU:$C6AD PRG:06AD F0 04 + cmp #$30 ; CPU:$C6AF PRG:06AF C9 30 + bne UpdateCarrierArrivalSequence_Block_4 ; CPU:$C6B1 PRG:06B1 D0 04 UpdateCarrierArrivalSequence_Block_3: - lda #$CC ; CPU:$C6B1 PRG:06B1 A9 CC - sta CarrierPosY ; CPU:$C6B3 PRG:06B3 85 A2 + lda #$CC ; CPU:$C6B3 PRG:06B3 A9 CC + sta CarrierPosY ; CPU:$C6B5 PRG:06B5 85 A2 UpdateCarrierArrivalSequence_Block_4: - rts ; CPU:$C6B5 PRG:06B5 60 + rts ; CPU:$C6B7 PRG:06B7 60 ; Carrier animation remap table ; Maps player animation states to the carrier-sequence animation states. ;=============================================================================== CarrierAnimationSequenceTable: - .byte $08, $09, $0A, $0B ; CPU:$C6B6 PRG:06B6 08 09 0A 0B - .byte $08, $09, $0A, $0B ; CPU:$C6BA PRG:06BA 08 09 0A 0B - .byte $08, $09, $0A, $0B ; CPU:$C6BE PRG:06BE 08 09 0A 0B + .byte $08, $09, $0A, $0B ; CPU:$C6B8 PRG:06B8 08 09 0A 0B + .byte $08, $09, $0A, $0B ; CPU:$C6BC PRG:06BC 08 09 0A 0B + .byte $08, $09, $0A, $0B ; CPU:$C6C0 PRG:06C0 08 09 0A 0B ;=============================================================================== ; BeginCarrierTargetSequence @@ -1631,38 +1770,42 @@ CarrierAnimationSequenceTable: ; Returns: ; Carrier sequence activated when a valid target exists. ; +; Clobbers: +; A and X, the N, Z, C and V flags, CarrierTargetX, CarrierSavedValue, +; CarrierSequenceActive, CarrierSequenceTimer. +; ; PRG offsets: $06C4-$06F8 ; CPU range: $C6C4-$C6F8 ;=============================================================================== BeginCarrierTargetSequence: - lda CarrierSequenceActive ; CPU:$C6C2 PRG:06C2 AD 89 04 - bne BeginCarrierTargetSequence_Block_2 ; CPU:$C6C5 PRG:06C5 D0 2F - ldx CarrierTargetPlayer ; CPU:$C6C7 PRG:06C7 AE 8B 04 - lda PlayerSlotState,x ; CPU:$C6CA PRG:06CA B5 88 - bmi BeginCarrierTargetSequence_Block ; CPU:$C6CC PRG:06CC 30 10 - lda PlayerPosY,x ; CPU:$C6CE PRG:06CE B5 9A - cmp #$B4 ; CPU:$C6D0 PRG:06D0 C9 B4 - bcc BeginCarrierTargetSequence_Block ; CPU:$C6D2 PRG:06D2 90 0A - lda PlayerPosX,x ; CPU:$C6D4 PRG:06D4 B5 91 - cmp #$40 ; CPU:$C6D6 PRG:06D6 C9 40 - bcc BeginCarrierTargetSequence_Block ; CPU:$C6D8 PRG:06D8 90 04 - cmp #$B1 ; CPU:$C6DA PRG:06DA C9 B1 - bcc BeginCarrierTargetSequence_Block_1 ; CPU:$C6DC PRG:06DC 90 0E + lda CarrierSequenceActive ; CPU:$C6C4 PRG:06C4 AD 89 04 + bne BeginCarrierTargetSequence_Block_2 ; CPU:$C6C7 PRG:06C7 D0 2F + ldx CarrierTargetPlayer ; CPU:$C6C9 PRG:06C9 AE 8B 04 + lda PlayerSlotState,x ; CPU:$C6CC PRG:06CC B5 88 + bmi BeginCarrierTargetSequence_Block ; CPU:$C6CE PRG:06CE 30 10 + lda PlayerPosY,x ; CPU:$C6D0 PRG:06D0 B5 9A + cmp #$B4 ; CPU:$C6D2 PRG:06D2 C9 B4 + bcc BeginCarrierTargetSequence_Block ; CPU:$C6D4 PRG:06D4 90 0A + lda PlayerPosX,x ; CPU:$C6D6 PRG:06D6 B5 91 + cmp #$40 ; CPU:$C6D8 PRG:06D8 C9 40 + bcc BeginCarrierTargetSequence_Block ; CPU:$C6DA PRG:06DA 90 04 + cmp #$B1 ; CPU:$C6DC PRG:06DC C9 B1 + bcc BeginCarrierTargetSequence_Block_1 ; CPU:$C6DE PRG:06DE 90 0E BeginCarrierTargetSequence_Block: - lda #$30 ; CPU:$C6DE PRG:06DE A9 30 - sec ; CPU:$C6E0 PRG:06E0 38 - sbc CarrierSequenceTimer ; CPU:$C6E1 PRG:06E1 ED 8D 04 - sta CarrierSequenceTimer ; CPU:$C6E4 PRG:06E4 8D 8D 04 - inc CarrierSequenceActive ; CPU:$C6E7 PRG:06E7 EE 89 04 - bne BeginCarrierTargetSequence_Block_2 ; CPU:$C6EA PRG:06EA D0 0A + lda #$30 ; CPU:$C6E0 PRG:06E0 A9 30 + sec ; CPU:$C6E2 PRG:06E2 38 + sbc CarrierSequenceTimer ; CPU:$C6E3 PRG:06E3 ED 8D 04 + sta CarrierSequenceTimer ; CPU:$C6E6 PRG:06E6 8D 8D 04 + inc CarrierSequenceActive ; CPU:$C6E9 PRG:06E9 EE 89 04 + bne BeginCarrierTargetSequence_Block_2 ; CPU:$C6EC PRG:06EC D0 0A BeginCarrierTargetSequence_Block_1: - lda PlayerPosX,x ; CPU:$C6EC PRG:06EC B5 91 - sta CarrierTargetX ; CPU:$C6EE PRG:06EE 85 99 - lda PlayerVariantTable,x ; CPU:$C6F0 PRG:06F0 BD 48 04 - sta CarrierSavedValue ; CPU:$C6F3 PRG:06F3 8D 50 04 + lda PlayerPosX,x ; CPU:$C6EE PRG:06EE B5 91 + sta CarrierTargetX ; CPU:$C6F0 PRG:06F0 85 99 + lda PlayerVariantTable,x ; CPU:$C6F2 PRG:06F2 BD 48 04 + sta CarrierSavedValue ; CPU:$C6F5 PRG:06F5 8D 50 04 BeginCarrierTargetSequence_Block_2: - rts ; CPU:$C6F6 PRG:06F6 60 + rts ; CPU:$C6F8 PRG:06F8 60 ;=============================================================================== ; UpdateCarrierSequence ; @@ -1678,25 +1821,29 @@ BeginCarrierTargetSequence_Block_2: ; Returns: ; Carrier and player state updated for the frame. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, the OAM shadow and the RAM fields +; it writes. +; ; PRG offsets: $06F9-$0715 ; CPU range: $C6F9-$C715 ;=============================================================================== - +UpdateSpecialObjectSystem: UpdateCarrierSequence: - lda CarrierDisplayMode ; CPU:$C6F7 PRG:06F7 A5 87 - bpl UpdateCarrierSequence_Block_1 ; CPU:$C6F9 PRG:06F9 10 10 - jsr AdvanceCarrierTargetX ; CPU:$C6FB PRG:06FB 20 4B C6 - jsr FindEligiblePlayerForCarrier ; CPU:$C6FE PRG:06FE 20 14 C6 - lda CarrierTargetPlayer ; CPU:$C701 PRG:0701 AD 8B 04 - bpl UpdateCarrierSequence_Block ; CPU:$C704 PRG:0704 10 01 - rts ; CPU:$C706 PRG:0706 60 + lda CarrierDisplayMode ; CPU:$C6F9 PRG:06F9 A5 87 + bpl UpdateCarrierSequence_Block_1 ; CPU:$C6FB PRG:06FB 10 10 + jsr AdvanceCarrierTargetX ; CPU:$C6FD PRG:06FD 20 4B C6 + jsr FindEligiblePlayerForCarrier ; CPU:$C700 PRG:0700 20 14 C6 + lda CarrierTargetPlayer ; CPU:$C703 PRG:0703 AD 8B 04 + bpl UpdateCarrierSequence_Block; CPU:$C706 PRG:0706 10 01 + rts ; CPU:$C708 PRG:0708 60 UpdateCarrierSequence_Block: - lda #$40 ; CPU:$C707 PRG:0707 A9 40 - sta SoundRequestFlags3 ; CPU:$C709 PRG:0709 85 F3 + lda #$40 ; CPU:$C709 PRG:0709 A9 40 + sta SoundRequestFlags3 ; CPU:$C70B PRG:070B 85 F3 UpdateCarrierSequence_Block_1: - jsr BeginCarrierTargetSequence ; CPU:$C70B PRG:070B 20 C4 C6 - jsr UpdateCarrierArrivalSequence ; CPU:$C70E PRG:070E 20 58 C6 - jmp UpdateCarrierObjectDisplay ; CPU:$C711 PRG:0711 4C C3 C5 + jsr BeginCarrierTargetSequence ; CPU:$C70D PRG:070D 20 C4 C6 + jsr UpdateCarrierArrivalSequence ; CPU:$C710 PRG:0710 20 58 C6 + jmp UpdateCarrierObjectDisplay ; CPU:$C713 PRG:0713 4C C3 C5 ;=============================================================================== ; InitializeRoundObjectPools ; @@ -1712,19 +1859,27 @@ UpdateCarrierSequence_Block_1: ; Returns: ; Object pools initialized and spawn processing started. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, RandomState, $1C, +; PpuSourcePtrLo, PpuSourcePtrHi, PpuBufferWriteOffset, +; RoundHudCommandAddressHi, RoundHudCommandAddressLo, +; RoundHudCommandLength, RoundHudTile, SelectedSpawnIndex, +; RoundSpawnDelay, SpawnSelector, OamEntryE0Y, OamEntryE4Y, OamEntryE8Y, +; $0300, GameplayObjectState, GameplayObjectAuxState. +; ; PRG offsets: $0716-$0725 ; CPU range: $C716-$C725 ;=============================================================================== InitializeRoundObjectPools: - ldx #$01 ; CPU:$C714 PRG:0714 A2 01 + ldx #$01 ; CPU:$C716 PRG:0716 A2 01 InitializeRoundObjectPools_Block: - lda #$FF ; CPU:$C716 PRG:0716 A9 FF - sta GameplayObjectState,x ; CPU:$C718 PRG:0718 9D 30 05 - sta GameplayObjectAuxState,x ; CPU:$C71B PRG:071B 9D 44 05 - dex ; CPU:$C71E PRG:071E CA - bpl InitializeRoundObjectPools_Block ; CPU:$C71F PRG:071F 10 F5 - jsr SpawnRoundObjects ; CPU:$C721 PRG:0721 20 7A C7 + lda #$FF ; CPU:$C718 PRG:0718 A9 FF + sta GameplayObjectState,x ; CPU:$C71A PRG:071A 9D 30 05 + sta GameplayObjectAuxState,x ; CPU:$C71D PRG:071D 9D 44 05 + dex ; CPU:$C720 PRG:0720 CA + bpl InitializeRoundObjectPools_Block ; CPU:$C721 PRG:0721 10 F5 + jsr SpawnRoundObjects ; CPU:$C723 PRG:0723 20 7A C7 ;=============================================================================== ; InitializeRoundPresentation ; @@ -1740,39 +1895,46 @@ InitializeRoundObjectPools_Block: ; Returns: ; RoundSpawnDelay, SpawnSelector, OAM, and presentation state initialized. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, PpuSourcePtrLo, +; PpuSourcePtrHi, PpuBufferWriteOffset, RoundHudCommandAddressHi, +; RoundHudCommandAddressLo, RoundHudCommandLength, RoundHudTile, +; RoundSpawnDelay, SpawnSelector, OamEntryE0Y, OamEntryE4Y, OamEntryE8Y, +; $0300. +; ; PRG offsets: $0726-$0747 ; CPU range: $C726-$C747 ;=============================================================================== InitializeRoundPresentation: - ldx RoundIndex ; CPU:$C724 PRG:0724 A6 3C - cpx #$18 ; CPU:$C726 PRG:0726 E0 18 - bcc InitializeRoundPresentation_Block ; CPU:$C728 PRG:0728 90 02 - ldx #$18 ; CPU:$C72A PRG:072A A2 18 + ldx RoundIndex ; CPU:$C726 PRG:0726 A6 3C + cpx #$18 ; CPU:$C728 PRG:0728 E0 18 + bcc InitializeRoundPresentation_Block ; CPU:$C72A PRG:072A 90 02 + ldx #$18 ; CPU:$C72C PRG:072C A2 18 InitializeRoundPresentation_Block: - lda RoundObjectCountTable,x ; CPU:$C72C PRG:072C BD 48 C7 - sta SpawnSelector ; CPU:$C72F PRG:072F 85 BA - lda RoundDelayTable,x ; CPU:$C731 PRG:0731 BD 61 C7 - sta RoundSpawnDelay ; CPU:$C734 PRG:0734 85 B8 - lda #$F0 ; CPU:$C736 PRG:0736 A9 F0 - sta OamEntryE0Y ; CPU:$C738 PRG:0738 8D E0 02 - sta OamEntryE4Y ; CPU:$C73B PRG:073B 8D E4 02 - sta OamEntryE8Y ; CPU:$C73E PRG:073E 8D E8 02 - lda #$03 ; CPU:$C741 PRG:0741 A9 03 - jmp ConfigureRoundPresentation ; CPU:$C743 PRG:0743 4C 56 C8 + lda RoundObjectCountTable,x ; CPU:$C72E PRG:072E BD 48 C7 + sta SpawnSelector ; CPU:$C731 PRG:0731 85 BA + lda RoundDelayTable,x ; CPU:$C733 PRG:0733 BD 61 C7 + sta RoundSpawnDelay ; CPU:$C736 PRG:0736 85 B8 + lda #$F0 ; CPU:$C738 PRG:0738 A9 F0 + sta OamEntryE0Y ; CPU:$C73A PRG:073A 8D E0 02 + sta OamEntryE4Y ; CPU:$C73D PRG:073D 8D E4 02 + sta OamEntryE8Y ; CPU:$C740 PRG:0740 8D E8 02 + lda #$03 ; CPU:$C743 PRG:0743 A9 03 + jmp ConfigureRoundPresentation ; CPU:$C745 PRG:0745 4C 56 C8 ; Round spawn lookup tables ;=============================================================================== RoundObjectCountTable: - .byte $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$C746 PRG:0746 00 00 00 00 00 00 00 00 - .byte $00, $00, $01, $01, $01, $01, $01, $01 ; CPU:$C74E PRG:074E 00 00 01 01 01 01 01 01 - .byte $02, $01, $01, $01, $01, $01, $01, $01 ; CPU:$C756 PRG:0756 02 01 01 01 01 01 01 01 - .byte $01 ; CPU:$C75E PRG:075E 01 + .byte $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$C748 PRG:0748 00 00 00 00 00 00 00 00 + .byte $00, $00, $01, $01, $01, $01, $01, $01 ; CPU:$C750 PRG:0750 00 00 01 01 01 01 01 01 + .byte $02, $01, $01, $01, $01, $01, $01, $01 ; CPU:$C758 PRG:0758 02 01 01 01 01 01 01 01 + .byte $01 ; CPU:$C760 PRG:0760 01 RoundDelayTable: - .byte $0F, $0F, $0C, $0C, $0C, $0C, $0A, $0A ; CPU:$C75F PRG:075F 0F 0F 0C 0C 0C 0C 0A 0A - .byte $0A, $0A, $0C, $0C, $0A, $0A, $0A, $08 ; CPU:$C767 PRG:0767 0A 0A 0C 0C 0A 0A 0A 08 - .byte $0A, $0A, $08, $08, $08, $08, $08, $08 ; CPU:$C76F PRG:076F 0A 0A 08 08 08 08 08 08 - .byte $05 ; CPU:$C777 PRG:0777 05 + .byte $0F, $0F, $0C, $0C, $0C, $0C, $0A, $0A ; CPU:$C761 PRG:0761 0F 0F 0C 0C 0C 0C 0A 0A + .byte $0A, $0A, $0C, $0C, $0A, $0A, $0A, $08 ; CPU:$C769 PRG:0769 0A 0A 0C 0C 0A 0A 0A 08 + .byte $0A, $0A, $08, $08, $08, $08, $08, $08 ; CPU:$C771 PRG:0771 0A 0A 08 08 08 08 08 08 + .byte $05 ; CPU:$C779 PRG:0779 05 ;=============================================================================== ; ChooseRoundSpawnIndex @@ -1789,25 +1951,28 @@ RoundDelayTable: ; Returns: ; A contains the selected nonzero index and SelectedSpawnIndex is updated when needed. ; +; Clobbers: +; A, the N, Z, C and V flags, RandomState, $1C, SelectedSpawnIndex. +; ; PRG offsets: $077A-$078F ; CPU range: $C77A-$C78F ;=============================================================================== ChooseRoundSpawnIndex: - lda RoundSpawnRandomLimit ; CPU:$C778 PRG:0778 A5 A3 - bpl ChooseRoundSpawnIndex_Block_1 ; CPU:$C77A PRG:077A 10 03 + lda RoundSpawnRandomLimit ; CPU:$C77A PRG:077A A5 A3 + bpl ChooseRoundSpawnIndex_Block_1 ; CPU:$C77C PRG:077C 10 03 ChooseRoundSpawnIndex_Block: - sta SelectedSpawnIndex ; CPU:$C77C PRG:077C 85 A4 - rts ; CPU:$C77E PRG:077E 60 + sta SelectedSpawnIndex ; CPU:$C77E PRG:077E 85 A4 + rts ; CPU:$C780 PRG:0780 60 ChooseRoundSpawnIndex_Block_1: - jsr GetRandomValue ; CPU:$C77F PRG:077F 20 B3 F1 + jsr GetRandomValue ; CPU:$C781 PRG:0781 20 B3 F1 ChooseRoundSpawnIndex_Block_2: - cmp RoundSpawnRandomLimit ; CPU:$C782 PRG:0782 C5 A3 - bcc ChooseRoundSpawnIndex_Block ; CPU:$C784 PRG:0784 90 F6 - beq ChooseRoundSpawnIndex_Block ; CPU:$C786 PRG:0786 F0 F4 - clc ; CPU:$C788 PRG:0788 18 - sbc RoundSpawnRandomLimit ; CPU:$C789 PRG:0789 E5 A3 - jmp ChooseRoundSpawnIndex_Block_2 ; CPU:$C78B PRG:078B 4C 84 C7 + cmp RoundSpawnRandomLimit ; CPU:$C784 PRG:0784 C5 A3 + bcc ChooseRoundSpawnIndex_Block; CPU:$C786 PRG:0786 90 F6 + beq ChooseRoundSpawnIndex_Block; CPU:$C788 PRG:0788 F0 F4 + clc ; CPU:$C78A PRG:078A 18 + sbc RoundSpawnRandomLimit ; CPU:$C78B PRG:078B E5 A3 + jmp ChooseRoundSpawnIndex_Block_2 ; CPU:$C78D PRG:078D 4C 84 C7 ;=============================================================================== ; UpdateRoundSpawner ; @@ -1823,87 +1988,96 @@ ChooseRoundSpawnIndex_Block_2: ; Returns: ; A gameplay object may be initialized; round counters and sound requests are updated. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, RandomState, $1C, +; SelectedSpawnIndex, SelectedSpawnIndexCopy, RoundSpawnDelay, +; SpawnSelector, SoundRequestFlags0, GameplayObjectPosX, +; GameplayObjectPosY, GameplayObjectVelocityFracY, +; GameplayObjectVelocityIntY, GameplayObjectVelocityY, +; GameplayObjectVelocityX, GameplayObjectParameter, GameplayObjectPosXHi, +; GameplayObjectState, GameplayObjectAuxState. +; ; PRG offsets: $0790-$0830 ; CPU range: $C790-$C830 ;=============================================================================== UpdateRoundSpawner: - lda FrameCounter ; CPU:$C78E PRG:078E A5 19 - and #$7F ; CPU:$C790 PRG:0790 29 7F - beq UpdateRoundSpawner_Block_1 ; CPU:$C792 PRG:0792 F0 01 + lda FrameCounter ; CPU:$C790 PRG:0790 A5 19 + and #$7F ; CPU:$C792 PRG:0792 29 7F + beq UpdateRoundSpawner_Block_1 ; CPU:$C794 PRG:0794 F0 01 UpdateRoundSpawner_Block: - rts ; CPU:$C794 PRG:0794 60 + rts ; CPU:$C796 PRG:0796 60 UpdateRoundSpawner_Block_1: - dec RoundSpawnDelay ; CPU:$C795 PRG:0795 C6 B8 - bne UpdateRoundSpawner_Block ; CPU:$C797 PRG:0797 D0 FB - ldx #$00 ; CPU:$C799 PRG:0799 A2 00 - lda GameplayObjectState,x ; CPU:$C79B PRG:079B BD 30 05 - bmi UpdateRoundSpawner_Block_2 ; CPU:$C79E PRG:079E 30 0B - inx ; CPU:$C7A0 PRG:07A0 E8 - lda GameplayObjectState,x ; CPU:$C7A1 PRG:07A1 BD 30 05 - bmi UpdateRoundSpawner_Block_2 ; CPU:$C7A4 PRG:07A4 30 05 - lda #$01 ; CPU:$C7A6 PRG:07A6 A9 01 - sta RoundSpawnDelay ; CPU:$C7A8 PRG:07A8 85 B8 - rts ; CPU:$C7AA PRG:07AA 60 + dec RoundSpawnDelay ; CPU:$C797 PRG:0797 C6 B8 + bne UpdateRoundSpawner_Block ; CPU:$C799 PRG:0799 D0 FB + ldx #$00 ; CPU:$C79B PRG:079B A2 00 + lda GameplayObjectState,x ; CPU:$C79D PRG:079D BD 30 05 + bmi UpdateRoundSpawner_Block_2 ; CPU:$C7A0 PRG:07A0 30 0B + inx ; CPU:$C7A2 PRG:07A2 E8 + lda GameplayObjectState,x ; CPU:$C7A3 PRG:07A3 BD 30 05 + bmi UpdateRoundSpawner_Block_2 ; CPU:$C7A6 PRG:07A6 30 05 + lda #$01 ; CPU:$C7A8 PRG:07A8 A9 01 + sta RoundSpawnDelay ; CPU:$C7AA PRG:07AA 85 B8 + rts ; CPU:$C7AC PRG:07AC 60 UpdateRoundSpawner_Block_2: - ldy SelectedSpawnIndex ; CPU:$C7AB PRG:07AB A4 A4 - sty SelectedSpawnIndexCopy ; CPU:$C7AD PRG:07AD 84 A5 - bpl UpdateRoundSpawner_Block_3 ; CPU:$C7AF PRG:07AF 10 01 - rts ; CPU:$C7B1 PRG:07B1 60 + ldy SelectedSpawnIndex ; CPU:$C7AD PRG:07AD A4 A4 + sty SelectedSpawnIndexCopy ; CPU:$C7AF PRG:07AF 84 A5 + bpl UpdateRoundSpawner_Block_3 ; CPU:$C7B1 PRG:07B1 10 01 + rts ; CPU:$C7B3 PRG:07B3 60 UpdateRoundSpawner_Block_3: - lda #$80 ; CPU:$C7B2 PRG:07B2 A9 80 - sta GameplayObjectVelocityFracY,x ; CPU:$C7B4 PRG:07B4 9D B8 04 - sta GameplayObjectVelocityIntY,x ; CPU:$C7B7 PRG:07B7 9D CC 04 - lda #$00 ; CPU:$C7BA PRG:07BA A9 00 - sta GameplayObjectState,x ; CPU:$C7BC PRG:07BC 9D 30 05 - lda a:RoundSpawnBaseX,y ; CPU:$C7BF PRG:07BF B9 B2 00 - sta GameplayObjectPosX,x ; CPU:$C7C2 PRG:07C2 9D 90 04 - lda a:RoundSpawnBaseY,y ; CPU:$C7C5 PRG:07C5 B9 B5 00 - sta GameplayObjectPosY,x ; CPU:$C7C8 PRG:07C8 9D A4 04 - ldy SpawnSelector ; CPU:$C7CB PRG:07CB A4 BA - jsr GetRandomValue ; CPU:$C7CD PRG:07CD 20 B3 F1 - and #$1F ; CPU:$C7D0 PRG:07D0 29 1F - adc SpawnParameterTable,y ; CPU:$C7D2 PRG:07D2 79 9F C8 - sta GameplayObjectParameter,x ; CPU:$C7D5 PRG:07D5 9D 08 05 - lda SpawnPositionHiTable,y ; CPU:$C7D8 PRG:07D8 B9 AB C8 - sta GameplayObjectPosXHi,x ; CPU:$C7DB PRG:07DB 9D 1C 05 - lda SpawnVelocityYTable,y ; CPU:$C7DE PRG:07DE B9 A5 C8 - sta GameplayObjectVelocityY,x ; CPU:$C7E1 PRG:07E1 9D E0 04 - lda SpawnVelocityXTable,y ; CPU:$C7E4 PRG:07E4 B9 B1 C8 - sta GameplayObjectVelocityX,x ; CPU:$C7E7 PRG:07E7 9D F4 04 - jsr GetRandomValue ; CPU:$C7EA PRG:07EA 20 B3 F1 - and #$03 ; CPU:$C7ED PRG:07ED 29 03 - sta GameplayObjectAuxState,x ; CPU:$C7EF PRG:07EF 9D 44 05 - tay ; CPU:$C7F2 PRG:07F2 A8 - lda SpawnXOffsetTable,y ; CPU:$C7F3 PRG:07F3 B9 97 C8 - clc ; CPU:$C7F6 PRG:07F6 18 - adc GameplayObjectPosX,x ; CPU:$C7F7 PRG:07F7 7D 90 04 - sta GameplayObjectPosX,x ; CPU:$C7FA PRG:07FA 9D 90 04 - lda SpawnYOffsetTable,y ; CPU:$C7FD PRG:07FD B9 9B C8 - clc ; CPU:$C800 PRG:0800 18 - adc GameplayObjectPosY,x ; CPU:$C801 PRG:0801 7D A4 04 - sta GameplayObjectPosY,x ; CPU:$C804 PRG:0804 9D A4 04 - lda SpawnFlipYTable,y ; CPU:$C807 PRG:0807 B9 8F C8 - beq UpdateRoundSpawner_Block_4 ; CPU:$C80A PRG:080A F0 03 - jsr NegateGameplayObjectVelocityY ; CPU:$C80C PRG:080C 20 3D CA + lda #$80 ; CPU:$C7B4 PRG:07B4 A9 80 + sta GameplayObjectVelocityFracY,x ; CPU:$C7B6 PRG:07B6 9D B8 04 + sta GameplayObjectVelocityIntY,x ; CPU:$C7B9 PRG:07B9 9D CC 04 + lda #$00 ; CPU:$C7BC PRG:07BC A9 00 + sta GameplayObjectState,x ; CPU:$C7BE PRG:07BE 9D 30 05 + lda a:RoundSpawnBaseX,y ; CPU:$C7C1 PRG:07C1 B9 B2 00 + sta GameplayObjectPosX,x ; CPU:$C7C4 PRG:07C4 9D 90 04 + lda a:RoundSpawnBaseY,y ; CPU:$C7C7 PRG:07C7 B9 B5 00 + sta GameplayObjectPosY,x ; CPU:$C7CA PRG:07CA 9D A4 04 + ldy SpawnSelector ; CPU:$C7CD PRG:07CD A4 BA + jsr GetRandomValue ; CPU:$C7CF PRG:07CF 20 B3 F1 + and #$1F ; CPU:$C7D2 PRG:07D2 29 1F + adc SpawnParameterTable,y ; CPU:$C7D4 PRG:07D4 79 9F C8 + sta GameplayObjectParameter,x ; CPU:$C7D7 PRG:07D7 9D 08 05 + lda SpawnPositionHiTable,y ; CPU:$C7DA PRG:07DA B9 AB C8 + sta GameplayObjectPosXHi,x ; CPU:$C7DD PRG:07DD 9D 1C 05 + lda SpawnVelocityYTable,y ; CPU:$C7E0 PRG:07E0 B9 A5 C8 + sta GameplayObjectVelocityY,x ; CPU:$C7E3 PRG:07E3 9D E0 04 + lda SpawnVelocityXTable,y ; CPU:$C7E6 PRG:07E6 B9 B1 C8 + sta GameplayObjectVelocityX,x ; CPU:$C7E9 PRG:07E9 9D F4 04 + jsr GetRandomValue ; CPU:$C7EC PRG:07EC 20 B3 F1 + and #$03 ; CPU:$C7EF PRG:07EF 29 03 + sta GameplayObjectAuxState,x ; CPU:$C7F1 PRG:07F1 9D 44 05 + tay ; CPU:$C7F4 PRG:07F4 A8 + lda SpawnXOffsetTable,y ; CPU:$C7F5 PRG:07F5 B9 97 C8 + clc ; CPU:$C7F8 PRG:07F8 18 + adc GameplayObjectPosX,x ; CPU:$C7F9 PRG:07F9 7D 90 04 + sta GameplayObjectPosX,x ; CPU:$C7FC PRG:07FC 9D 90 04 + lda SpawnYOffsetTable,y ; CPU:$C7FF PRG:07FF B9 9B C8 + clc ; CPU:$C802 PRG:0802 18 + adc GameplayObjectPosY,x ; CPU:$C803 PRG:0803 7D A4 04 + sta GameplayObjectPosY,x ; CPU:$C806 PRG:0806 9D A4 04 + lda SpawnFlipYTable,y ; CPU:$C809 PRG:0809 B9 8F C8 + beq UpdateRoundSpawner_Block_4 ; CPU:$C80C PRG:080C F0 03 + jsr NegateGameplayObjectVelocityY ; CPU:$C80E PRG:080E 20 3D CA UpdateRoundSpawner_Block_4: - lda SpawnFlipXTable,y ; CPU:$C80F PRG:080F B9 93 C8 - beq UpdateRoundSpawner_Block_5 ; CPU:$C812 PRG:0812 F0 03 - jsr NegateGameplayObjectVelocityX ; CPU:$C814 PRG:0814 20 55 CA + lda SpawnFlipXTable,y ; CPU:$C811 PRG:0811 B9 93 C8 + beq UpdateRoundSpawner_Block_5 ; CPU:$C814 PRG:0814 F0 03 + jsr NegateGameplayObjectVelocityX ; CPU:$C816 PRG:0816 20 55 CA UpdateRoundSpawner_Block_5: - lda SpawnSelector ; CPU:$C817 PRG:0817 A5 BA - cmp #$05 ; CPU:$C819 PRG:0819 C9 05 - bcs UpdateRoundSpawner_Block_6 ; CPU:$C81B PRG:081B B0 02 - inc SpawnSelector ; CPU:$C81D PRG:081D E6 BA + lda SpawnSelector ; CPU:$C819 PRG:0819 A5 BA + cmp #$05 ; CPU:$C81B PRG:081B C9 05 + bcs UpdateRoundSpawner_Block_6 ; CPU:$C81D PRG:081D B0 02 + inc SpawnSelector ; CPU:$C81F PRG:081F E6 BA UpdateRoundSpawner_Block_6: - lda #$06 ; CPU:$C81F PRG:081F A9 06 - sec ; CPU:$C821 PRG:0821 38 - sbc SpawnSelector ; CPU:$C822 PRG:0822 E5 BA - sta RoundSpawnDelay ; CPU:$C824 PRG:0824 85 B8 - lda SoundRequestFlags0 ; CPU:$C826 PRG:0826 A5 F0 - ora #$04 ; CPU:$C828 PRG:0828 09 04 - sta SoundRequestFlags0 ; CPU:$C82A PRG:082A 85 F0 - jmp ChooseRoundSpawnIndex ; CPU:$C82C PRG:082C 4C 7A C7 + lda #$06 ; CPU:$C821 PRG:0821 A9 06 + sec ; CPU:$C823 PRG:0823 38 + sbc SpawnSelector ; CPU:$C824 PRG:0824 E5 BA + sta RoundSpawnDelay ; CPU:$C826 PRG:0826 85 B8 + lda SoundRequestFlags0 ; CPU:$C828 PRG:0828 A5 F0 + ora #$04 ; CPU:$C82A PRG:082A 09 04 + sta SoundRequestFlags0 ; CPU:$C82C PRG:082C 85 F0 + jmp ChooseRoundSpawnIndex ; CPU:$C82E PRG:082E 4C 7A C7 ;=============================================================================== ; UpdateRoundHud ; @@ -1919,30 +2093,36 @@ UpdateRoundSpawner_Block_6: ; Returns: ; PPU command buffer receives the updated HUD values. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, PpuSourcePtrLo, +; PpuSourcePtrHi, PpuBufferWriteOffset, RoundHudCommandAddressHi, +; RoundHudCommandAddressLo, RoundHudCommandLength, RoundHudTile, +; RoundSpawnDelay, SoundRequestFlags1, $0300. +; ; PRG offsets: $0831-$0855 ; CPU range: $C831-$C855 ;=============================================================================== UpdateRoundHud: - lda RoundSpawnDelay ; CPU:$C82F PRG:082F A5 B8 - cmp #$01 ; CPU:$C831 PRG:0831 C9 01 - bne AppendRoundHudValue_Block ; CPU:$C833 PRG:0833 D0 53 - lda GameplayObjectState ; CPU:$C835 PRG:0835 AD 30 05 - bmi UpdateRoundHud_Block ; CPU:$C838 PRG:0838 30 0A - lda $0531 ; CPU:$C83A PRG:083A AD 31 05 - bmi UpdateRoundHud_Block ; CPU:$C83D PRG:083D 30 05 - lda #$02 ; CPU:$C83F PRG:083F A9 02 - sta RoundSpawnDelay ; CPU:$C841 PRG:0841 85 B8 - rts ; CPU:$C843 PRG:0843 60 + lda RoundSpawnDelay ; CPU:$C831 PRG:0831 A5 B8 + cmp #$01 ; CPU:$C833 PRG:0833 C9 01 + bne AppendRoundHudValue_Block ; CPU:$C835 PRG:0835 D0 53 + lda GameplayObjectState ; CPU:$C837 PRG:0837 AD 30 05 + bmi UpdateRoundHud_Block ; CPU:$C83A PRG:083A 30 0A + lda $0531 ; CPU:$C83C PRG:083C AD 31 05 + bmi UpdateRoundHud_Block ; CPU:$C83F PRG:083F 30 05 + lda #$02 ; CPU:$C841 PRG:0841 A9 02 + sta RoundSpawnDelay ; CPU:$C843 PRG:0843 85 B8 + rts ; CPU:$C845 PRG:0845 60 UpdateRoundHud_Block: - lda FrameCounter ; CPU:$C844 PRG:0844 A5 19 - and #$7F ; CPU:$C846 PRG:0846 29 7F - cmp #$40 ; CPU:$C848 PRG:0848 C9 40 - bcc AppendRoundHudValue_Block ; CPU:$C84A PRG:084A 90 3C - bne ConfigureRoundPresentation ; CPU:$C84C PRG:084C D0 06 - lda SoundRequestFlags1 ; CPU:$C84E PRG:084E A5 F1 - ora #$08 ; CPU:$C850 PRG:0850 09 08 - sta SoundRequestFlags1 ; CPU:$C852 PRG:0852 85 F1 + lda FrameCounter ; CPU:$C846 PRG:0846 A5 19 + and #$7F ; CPU:$C848 PRG:0848 29 7F + cmp #$40 ; CPU:$C84A PRG:084A C9 40 + bcc AppendRoundHudValue_Block ; CPU:$C84C PRG:084C 90 3C + bne ConfigureRoundPresentation ; CPU:$C84E PRG:084E D0 06 + lda SoundRequestFlags1 ; CPU:$C850 PRG:0850 A5 F1 + ora #$08 ; CPU:$C852 PRG:0852 09 08 + sta SoundRequestFlags1 ; CPU:$C854 PRG:0854 85 F1 ;=============================================================================== ; ConfigureRoundPresentation ; @@ -1958,32 +2138,37 @@ UpdateRoundHud_Block: ; Returns: ; PPU command buffer updated. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, PpuSourcePtrLo, +; PpuSourcePtrHi, PpuBufferWriteOffset, RoundHudCommandAddressHi, +; RoundHudCommandAddressLo, RoundHudCommandLength, RoundHudTile, $0300. +; ; PRG offsets: $0856-$0882 ; CPU range: $C856-$C882 ;=============================================================================== ConfigureRoundPresentation: - and #$03 ; CPU:$C854 PRG:0854 29 03 - tax ; CPU:$C856 PRG:0856 AA - lda RoundHudTileTable,x ; CPU:$C857 PRG:0857 BD 8B C8 - sta RoundHudTile ; CPU:$C85A PRG:085A 85 5A - ldx SelectedSpawnIndex ; CPU:$C85C PRG:085C A6 A4 - bmi AppendRoundHudValue_Block ; CPU:$C85E PRG:085E 30 28 - lda #$23 ; CPU:$C860 PRG:0860 A9 23 - sta RoundHudCommandAddressHi ; CPU:$C862 PRG:0862 85 57 - lda $A6,x ; CPU:$C864 PRG:0864 B5 A6 - sta RoundHudCommandAddressLo ; CPU:$C866 PRG:0866 85 58 - lda #$01 ; CPU:$C868 PRG:0868 A9 01 - sta RoundHudCommandLength ; CPU:$C86A PRG:086A 85 59 - jsr AppendRoundHudValue ; CPU:$C86C PRG:086C 20 83 C8 - lda $A9,x ; CPU:$C86F PRG:086F B5 A9 - sta RoundHudCommandAddressLo ; CPU:$C871 PRG:0871 85 58 - jsr AppendRoundHudValue ; CPU:$C873 PRG:0873 20 83 C8 - lda $AC,x ; CPU:$C876 PRG:0876 B5 AC - sta RoundHudCommandAddressLo ; CPU:$C878 PRG:0878 85 58 - jsr AppendRoundHudValue ; CPU:$C87A PRG:087A 20 83 C8 - lda $AF,x ; CPU:$C87D PRG:087D B5 AF - sta RoundHudCommandAddressLo ; CPU:$C87F PRG:087F 85 58 + and #$03 ; CPU:$C856 PRG:0856 29 03 + tax ; CPU:$C858 PRG:0858 AA + lda RoundHudTileTable,x ; CPU:$C859 PRG:0859 BD 8B C8 + sta RoundHudTile ; CPU:$C85C PRG:085C 85 5A + ldx SelectedSpawnIndex ; CPU:$C85E PRG:085E A6 A4 + bmi AppendRoundHudValue_Block ; CPU:$C860 PRG:0860 30 28 + lda #$23 ; CPU:$C862 PRG:0862 A9 23 + sta RoundHudCommandAddressHi ; CPU:$C864 PRG:0864 85 57 + lda $A6,x ; CPU:$C866 PRG:0866 B5 A6 + sta RoundHudCommandAddressLo ; CPU:$C868 PRG:0868 85 58 + lda #$01 ; CPU:$C86A PRG:086A A9 01 + sta RoundHudCommandLength ; CPU:$C86C PRG:086C 85 59 + jsr AppendRoundHudValue ; CPU:$C86E PRG:086E 20 83 C8 + lda $A9,x ; CPU:$C871 PRG:0871 B5 A9 + sta RoundHudCommandAddressLo ; CPU:$C873 PRG:0873 85 58 + jsr AppendRoundHudValue ; CPU:$C875 PRG:0875 20 83 C8 + lda $AC,x ; CPU:$C878 PRG:0878 B5 AC + sta RoundHudCommandAddressLo ; CPU:$C87A PRG:087A 85 58 + jsr AppendRoundHudValue ; CPU:$C87C PRG:087C 20 83 C8 + lda $AF,x ; CPU:$C87F PRG:087F B5 AF + sta RoundHudCommandAddressLo ; CPU:$C881 PRG:0881 85 58 ;=============================================================================== ; AppendRoundHudValue ; @@ -1999,37 +2184,41 @@ ConfigureRoundPresentation: ; Returns: ; One HUD update command appended. ; +; Clobbers: +; A and Y, the N, Z, C and V flags, Temp12, PpuSourcePtrLo, +; PpuSourcePtrHi, PpuBufferWriteOffset, $0300. +; ; PRG offsets: $0883-$088A ; CPU range: $C883-$C88A ;=============================================================================== AppendRoundHudValue: - lda #$57 ; CPU:$C881 PRG:0881 A9 57 - ldy #$00 ; CPU:$C883 PRG:0883 A0 00 - jmp AppendBytesToPpuBuffer ; CPU:$C885 PRG:0885 4C 31 C1 + lda #$57 ; CPU:$C883 PRG:0883 A9 57 + ldy #$00 ; CPU:$C885 PRG:0885 A0 00 + jmp AppendBytesToPpuBuffer ; CPU:$C887 PRG:0887 4C 31 C1 AppendRoundHudValue_Block: - rts ; CPU:$C888 PRG:0888 60 + rts ; CPU:$C88A PRG:088A 60 ; Round spawner and sprite lookup tables ;=============================================================================== RoundHudTileTable: - .byte $55, $FF, $00, $FF ; CPU:$C889 PRG:0889 55 FF 00 FF + .byte $55, $FF, $00, $FF ; CPU:$C88B PRG:088B 55 FF 00 FF SpawnFlipYTable: - .byte $00, $00, $FF, $FF ; CPU:$C88D PRG:088D 00 00 FF FF + .byte $00, $00, $FF, $FF ; CPU:$C88F PRG:088F 00 00 FF FF SpawnFlipXTable: - .byte $FF, $00, $00, $FF ; CPU:$C891 PRG:0891 FF 00 00 FF + .byte $FF, $00, $00, $FF ; CPU:$C893 PRG:0893 FF 00 00 FF SpawnXOffsetTable: - .byte $10, $10, $F0, $F0 ; CPU:$C895 PRG:0895 10 10 F0 F0 + .byte $10, $10, $F0, $F0 ; CPU:$C897 PRG:0897 10 10 F0 F0 SpawnYOffsetTable: - .byte $DE, $22, $22, $DE ; CPU:$C899 PRG:0899 DE 22 22 DE + .byte $DE, $22, $22, $DE ; CPU:$C89B PRG:089B DE 22 22 DE SpawnParameterTable: - .byte $60, $70, $80, $90, $A0, $B0 ; CPU:$C89D PRG:089D 60 70 80 90 A0 B0 + .byte $60, $70, $80, $90, $A0, $B0 ; CPU:$C89F PRG:089F 60 70 80 90 A0 B0 SpawnVelocityYTable: - .byte $00, $00, $00, $00, $00, $00 ; CPU:$C8A3 PRG:08A3 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00 ; CPU:$C8A5 PRG:08A5 00 00 00 00 00 00 SpawnPositionHiTable: - .byte $C0, $F0, $20, $50, $80, $B0 ; CPU:$C8A9 PRG:08A9 C0 F0 20 50 80 B0 + .byte $C0, $F0, $20, $50, $80, $B0 ; CPU:$C8AB PRG:08AB C0 F0 20 50 80 B0 SpawnVelocityXTable: - .byte $00, $00, $01, $01, $01, $01 ; CPU:$C8AF PRG:08AF 00 00 01 01 01 01 + .byte $00, $00, $01, $01, $01, $01 ; CPU:$C8B1 PRG:08B1 00 00 01 01 01 01 ;=============================================================================== ; UpdateRoundObjectSpritesAndPhysics @@ -2046,137 +2235,141 @@ SpawnVelocityXTable: ; Returns: ; Object state, positions, animation, and OAM entries are updated. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, the OAM shadow and the RAM fields +; it writes. +; ; PRG offsets: $08B7-$09B5 ; CPU range: $C8B7-$C9B5 ;=============================================================================== UpdateRoundObjectSpritesAndPhysics: - ldx #$01 ; CPU:$C8B5 PRG:08B5 A2 01 + ldx #$01 ; CPU:$C8B7 PRG:08B7 A2 01 UpdateRoundObjectSpritesAndPhysics_Load: - lda GameplayObjectState,x ; CPU:$C8B7 PRG:08B7 BD 30 05 - bpl UpdateRoundObjectSpritesAndPhysics_Block ; CPU:$C8BA PRG:08BA 10 03 - jmp UpdateRoundObjectSpritesAndPhysics_Block_9 ; CPU:$C8BC PRG:08BC 4C AF C9 + lda GameplayObjectState,x ; CPU:$C8B9 PRG:08B9 BD 30 05 + bpl UpdateRoundObjectSpritesAndPhysics_Block ; CPU:$C8BC PRG:08BC 10 03 + jmp UpdateRoundObjectSpritesAndPhysics_Block_9 ; CPU:$C8BE PRG:08BE 4C AF C9 UpdateRoundObjectSpritesAndPhysics_Block: - lda GameplayObjectAuxState,x ; CPU:$C8BF PRG:08BF BD 44 05 - bmi UpdateRoundObjectSpritesAndPhysics_Block_3 ; CPU:$C8C2 PRG:08C2 30 7B - tay ; CPU:$C8C4 PRG:08C4 A8 - txa ; CPU:$C8C5 PRG:08C5 8A - pha ; CPU:$C8C6 PRG:08C6 48 - ldx SelectedSpawnIndexCopy ; CPU:$C8C7 PRG:08C7 A6 A5 - lda RoundSpawnBaseX,x ; CPU:$C8C9 PRG:08C9 B5 B2 - adc RoundObjectXOffsetTable,y ; CPU:$C8CB PRG:08CB 79 E5 C9 - sta $02E3 ; CPU:$C8CE PRG:08CE 8D E3 02 - sta $02E7 ; CPU:$C8D1 PRG:08D1 8D E7 02 - sta $02EB ; CPU:$C8D4 PRG:08D4 8D EB 02 - lda RoundSpawnBaseY,x ; CPU:$C8D7 PRG:08D7 B5 B5 - adc RoundObjectYOffsetTable,y ; CPU:$C8D9 PRG:08D9 79 F5 C9 - sta OamEntryE0Y ; CPU:$C8DC PRG:08DC 8D E0 02 - adc RoundObjectVerticalSpacingTable,y ; CPU:$C8DF PRG:08DF 79 05 CA - sta OamEntryE4Y ; CPU:$C8E2 PRG:08E2 8D E4 02 - adc RoundObjectVerticalSpacingTable,y ; CPU:$C8E5 PRG:08E5 79 05 CA - sta OamEntryE8Y ; CPU:$C8E8 PRG:08E8 8D E8 02 - tya ; CPU:$C8EB PRG:08EB 98 - and #$03 ; CPU:$C8EC PRG:08EC 29 03 - tax ; CPU:$C8EE PRG:08EE AA - tya ; CPU:$C8EF PRG:08EF 98 - lsr a ; CPU:$C8F0 PRG:08F0 4A - lsr a ; CPU:$C8F1 PRG:08F1 4A - tay ; CPU:$C8F2 PRG:08F2 A8 - lda FrameCounter ; CPU:$C8F3 PRG:08F3 A5 19 - lsr a ; CPU:$C8F5 PRG:08F5 4A - lsr a ; CPU:$C8F6 PRG:08F6 4A - bcs UpdateRoundObjectSpritesAndPhysics_Block_1 ; CPU:$C8F7 PRG:08F7 B0 04 - tya ; CPU:$C8F9 PRG:08F9 98 - adc #$05 ; CPU:$C8FA PRG:08FA 69 05 - tay ; CPU:$C8FC PRG:08FC A8 + lda GameplayObjectAuxState,x ; CPU:$C8C1 PRG:08C1 BD 44 05 + bmi UpdateRoundObjectSpritesAndPhysics_Block_3 ; CPU:$C8C4 PRG:08C4 30 7B + tay ; CPU:$C8C6 PRG:08C6 A8 + txa ; CPU:$C8C7 PRG:08C7 8A + pha ; CPU:$C8C8 PRG:08C8 48 + ldx SelectedSpawnIndexCopy ; CPU:$C8C9 PRG:08C9 A6 A5 + lda RoundSpawnBaseX,x ; CPU:$C8CB PRG:08CB B5 B2 + adc RoundObjectXOffsetTable,y ; CPU:$C8CD PRG:08CD 79 E5 C9 + sta $02E3 ; CPU:$C8D0 PRG:08D0 8D E3 02 + sta $02E7 ; CPU:$C8D3 PRG:08D3 8D E7 02 + sta $02EB ; CPU:$C8D6 PRG:08D6 8D EB 02 + lda RoundSpawnBaseY,x ; CPU:$C8D9 PRG:08D9 B5 B5 + adc RoundObjectYOffsetTable,y ; CPU:$C8DB PRG:08DB 79 F5 C9 + sta OamEntryE0Y ; CPU:$C8DE PRG:08DE 8D E0 02 + adc RoundObjectVerticalSpacingTable,y ; CPU:$C8E1 PRG:08E1 79 05 CA + sta OamEntryE4Y ; CPU:$C8E4 PRG:08E4 8D E4 02 + adc RoundObjectVerticalSpacingTable,y ; CPU:$C8E7 PRG:08E7 79 05 CA + sta OamEntryE8Y ; CPU:$C8EA PRG:08EA 8D E8 02 + tya ; CPU:$C8ED PRG:08ED 98 + and #$03 ; CPU:$C8EE PRG:08EE 29 03 + tax ; CPU:$C8F0 PRG:08F0 AA + tya ; CPU:$C8F1 PRG:08F1 98 + lsr a ; CPU:$C8F2 PRG:08F2 4A + lsr a ; CPU:$C8F3 PRG:08F3 4A + tay ; CPU:$C8F4 PRG:08F4 A8 + lda FrameCounter ; CPU:$C8F5 PRG:08F5 A5 19 + lsr a ; CPU:$C8F7 PRG:08F7 4A + lsr a ; CPU:$C8F8 PRG:08F8 4A + bcs UpdateRoundObjectSpritesAndPhysics_Block_1 ; CPU:$C8F9 PRG:08F9 B0 04 + tya ; CPU:$C8FB PRG:08FB 98 + adc #$05 ; CPU:$C8FC PRG:08FC 69 05 + tay ; CPU:$C8FE PRG:08FE A8 UpdateRoundObjectSpritesAndPhysics_Block_1: - lda RoundObjectTileTopTable,y ; CPU:$C8FD PRG:08FD B9 15 CA - sta $02E1 ; CPU:$C900 PRG:0900 8D E1 02 - lda RoundObjectTileMiddleTable,y ; CPU:$C903 PRG:0903 B9 1F CA - sta $02E5 ; CPU:$C906 PRG:0906 8D E5 02 - lda RoundObjectTileBottomTable,y ; CPU:$C909 PRG:0909 B9 29 CA - sta $02E9 ; CPU:$C90C PRG:090C 8D E9 02 - lda RoundObjectAttributeTable,x ; CPU:$C90F PRG:090F BD 33 CA - sta $02E2 ; CPU:$C912 PRG:0912 8D E2 02 - sta $02E6 ; CPU:$C915 PRG:0915 8D E6 02 - sta $02EA ; CPU:$C918 PRG:0918 8D EA 02 - pla ; CPU:$C91B PRG:091B 68 - tax ; CPU:$C91C PRG:091C AA - lda FrameCounter ; CPU:$C91D PRG:091D A5 19 - and #$07 ; CPU:$C91F PRG:091F 29 07 - bne UpdateRoundObjectSpritesAndPhysics_Block_2 ; CPU:$C921 PRG:0921 D0 12 - lda GameplayObjectAuxState,x ; CPU:$C923 PRG:0923 BD 44 05 - clc ; CPU:$C926 PRG:0926 18 - adc #$04 ; CPU:$C927 PRG:0927 69 04 - sta GameplayObjectAuxState,x ; CPU:$C929 PRG:0929 9D 44 05 - cmp #$14 ; CPU:$C92C PRG:092C C9 14 - bcc UpdateRoundObjectSpritesAndPhysics_Block_2 ; CPU:$C92E PRG:092E 90 05 - lda #$FF ; CPU:$C930 PRG:0930 A9 FF - sta GameplayObjectAuxState,x ; CPU:$C932 PRG:0932 9D 44 05 + lda RoundObjectTileTopTable,y ; CPU:$C8FF PRG:08FF B9 15 CA + sta $02E1 ; CPU:$C902 PRG:0902 8D E1 02 + lda RoundObjectTileMiddleTable,y ; CPU:$C905 PRG:0905 B9 1F CA + sta $02E5 ; CPU:$C908 PRG:0908 8D E5 02 + lda RoundObjectTileBottomTable,y ; CPU:$C90B PRG:090B B9 29 CA + sta $02E9 ; CPU:$C90E PRG:090E 8D E9 02 + lda RoundObjectAttributeTable,x; CPU:$C911 PRG:0911 BD 33 CA + sta $02E2 ; CPU:$C914 PRG:0914 8D E2 02 + sta $02E6 ; CPU:$C917 PRG:0917 8D E6 02 + sta $02EA ; CPU:$C91A PRG:091A 8D EA 02 + pla ; CPU:$C91D PRG:091D 68 + tax ; CPU:$C91E PRG:091E AA + lda FrameCounter ; CPU:$C91F PRG:091F A5 19 + and #$07 ; CPU:$C921 PRG:0921 29 07 + bne UpdateRoundObjectSpritesAndPhysics_Block_2 ; CPU:$C923 PRG:0923 D0 12 + lda GameplayObjectAuxState,x ; CPU:$C925 PRG:0925 BD 44 05 + clc ; CPU:$C928 PRG:0928 18 + adc #$04 ; CPU:$C929 PRG:0929 69 04 + sta GameplayObjectAuxState,x ; CPU:$C92B PRG:092B 9D 44 05 + cmp #$14 ; CPU:$C92E PRG:092E C9 14 + bcc UpdateRoundObjectSpritesAndPhysics_Block_2 ; CPU:$C930 PRG:0930 90 05 + lda #$FF ; CPU:$C932 PRG:0932 A9 FF + sta GameplayObjectAuxState,x ; CPU:$C934 PRG:0934 9D 44 05 UpdateRoundObjectSpritesAndPhysics_Block_2: - lda GameplayObjectAuxState,x ; CPU:$C935 PRG:0935 BD 44 05 - cmp #$10 ; CPU:$C938 PRG:0938 C9 10 - bcs UpdateRoundObjectSpritesAndPhysics_Block_3 ; CPU:$C93A PRG:093A B0 03 - jmp UpdateRoundObjectSpritesAndPhysics_Block_9 ; CPU:$C93C PRG:093C 4C AF C9 + lda GameplayObjectAuxState,x ; CPU:$C937 PRG:0937 BD 44 05 + cmp #$10 ; CPU:$C93A PRG:093A C9 10 + bcs UpdateRoundObjectSpritesAndPhysics_Block_3 ; CPU:$C93C PRG:093C B0 03 + jmp UpdateRoundObjectSpritesAndPhysics_Block_9 ; CPU:$C93E PRG:093E 4C AF C9 UpdateRoundObjectSpritesAndPhysics_Block_3: - jsr IntegrateGameplayObjectPosition ; CPU:$C93F PRG:093F 20 B6 C9 - lda GameplayObjectPosX,x ; CPU:$C942 PRG:0942 BD 90 04 - cmp #$02 ; CPU:$C945 PRG:0945 C9 02 - bcs UpdateRoundObjectSpritesAndPhysics_Block_4 ; CPU:$C947 PRG:0947 B0 03 - jsr BounceGameplayObjectY ; CPU:$C949 PRG:0949 20 37 CA + jsr IntegrateGameplayObjectPosition ; CPU:$C941 PRG:0941 20 B6 C9 + lda GameplayObjectPosX,x ; CPU:$C944 PRG:0944 BD 90 04 + cmp #$02 ; CPU:$C947 PRG:0947 C9 02 + bcs UpdateRoundObjectSpritesAndPhysics_Block_4 ; CPU:$C949 PRG:0949 B0 03 + jsr BounceGameplayObjectY ; CPU:$C94B PRG:094B 20 37 CA UpdateRoundObjectSpritesAndPhysics_Block_4: - lda GameplayObjectPosX,x ; CPU:$C94C PRG:094C BD 90 04 - cmp #$F7 ; CPU:$C94F PRG:094F C9 F7 - bcc UpdateRoundObjectSpritesAndPhysics_Block_5 ; CPU:$C951 PRG:0951 90 03 - jsr BounceGameplayObjectY ; CPU:$C953 PRG:0953 20 37 CA + lda GameplayObjectPosX,x ; CPU:$C94E PRG:094E BD 90 04 + cmp #$F7 ; CPU:$C951 PRG:0951 C9 F7 + bcc UpdateRoundObjectSpritesAndPhysics_Block_5 ; CPU:$C953 PRG:0953 90 03 + jsr BounceGameplayObjectY ; CPU:$C955 PRG:0955 20 37 CA UpdateRoundObjectSpritesAndPhysics_Block_5: - lda GameplayObjectPosY,x ; CPU:$C956 PRG:0956 BD A4 04 - cmp #$02 ; CPU:$C959 PRG:0959 C9 02 - bcs UpdateRoundObjectSpritesAndPhysics_Block_6 ; CPU:$C95B PRG:095B B0 03 - jsr BounceGameplayObjectX ; CPU:$C95D PRG:095D 20 4F CA + lda GameplayObjectPosY,x ; CPU:$C958 PRG:0958 BD A4 04 + cmp #$02 ; CPU:$C95B PRG:095B C9 02 + bcs UpdateRoundObjectSpritesAndPhysics_Block_6 ; CPU:$C95D PRG:095D B0 03 + jsr BounceGameplayObjectX ; CPU:$C95F PRG:095F 20 4F CA UpdateRoundObjectSpritesAndPhysics_Block_6: - lda GameplayObjectPosY,x ; CPU:$C960 PRG:0960 BD A4 04 - cmp #$E0 ; CPU:$C963 PRG:0963 C9 E0 - bcc UpdateRoundObjectSpritesAndPhysics_Block_7 ; CPU:$C965 PRG:0965 90 0D - lda #$FF ; CPU:$C967 PRG:0967 A9 FF - sta GameplayObjectState,x ; CPU:$C969 PRG:0969 9D 30 05 - lda #$F0 ; CPU:$C96C PRG:096C A9 F0 - sta GameplayObjectPosY,x ; CPU:$C96E PRG:096E 9D A4 04 - jmp UpdateRoundObjectSpritesAndPhysics_Block_9 ; CPU:$C971 PRG:0971 4C AF C9 + lda GameplayObjectPosY,x ; CPU:$C962 PRG:0962 BD A4 04 + cmp #$E0 ; CPU:$C965 PRG:0965 C9 E0 + bcc UpdateRoundObjectSpritesAndPhysics_Block_7 ; CPU:$C967 PRG:0967 90 0D + lda #$FF ; CPU:$C969 PRG:0969 A9 FF + sta GameplayObjectState,x ; CPU:$C96B PRG:096B 9D 30 05 + lda #$F0 ; CPU:$C96E PRG:096E A9 F0 + sta GameplayObjectPosY,x ; CPU:$C970 PRG:0970 9D A4 04 + jmp UpdateRoundObjectSpritesAndPhysics_Block_9 ; CPU:$C973 PRG:0973 4C AF C9 UpdateRoundObjectSpritesAndPhysics_Block_7: - jsr TestGameplayObjectAgainstBounds ; CPU:$C974 PRG:0974 20 67 CA - jsr ResolveGameplayObjectInteraction ; CPU:$C977 PRG:0977 20 1C CB - ldy GameplayObjectState,x ; CPU:$C97A PRG:097A BC 30 05 - iny ; CPU:$C97D PRG:097D C8 - tya ; CPU:$C97E PRG:097E 98 - and #$07 ; CPU:$C97F PRG:097F 29 07 - sta GameplayObjectState,x ; CPU:$C981 PRG:0981 9D 30 05 - ldy GameplayObjectState,x ; CPU:$C984 PRG:0984 BC 30 05 - lda RoundObjectTileTable,y ; CPU:$C987 PRG:0987 B9 DD C9 - sta CurrentRoundObjectTile ; CPU:$C98A PRG:098A 85 12 - txa ; CPU:$C98C PRG:098C 8A - asl a ; CPU:$C98D PRG:098D 0A - asl a ; CPU:$C98E PRG:098E 0A - clc ; CPU:$C98F PRG:098F 18 - tay ; CPU:$C990 PRG:0990 A8 - lda GameplayObjectPosY,x ; CPU:$C991 PRG:0991 BD A4 04 - cmp #$D0 ; CPU:$C994 PRG:0994 C9 D0 - sta OamBuffer,y ; CPU:$C996 PRG:0996 99 00 02 - lda GameplayObjectPosX,x ; CPU:$C999 PRG:0999 BD 90 04 - sta $0203,y ; CPU:$C99C PRG:099C 99 03 02 - lda CurrentRoundObjectTile ; CPU:$C99F PRG:099F A5 12 - sta $0201,y ; CPU:$C9A1 PRG:09A1 99 01 02 - lda #$00 ; CPU:$C9A4 PRG:09A4 A9 00 - bcc UpdateRoundObjectSpritesAndPhysics_Block_8 ; CPU:$C9A6 PRG:09A6 90 02 - lda #$20 ; CPU:$C9A8 PRG:09A8 A9 20 + jsr TestGameplayObjectAgainstBounds ; CPU:$C976 PRG:0976 20 67 CA + jsr ResolveGameplayObjectInteraction ; CPU:$C979 PRG:0979 20 1C CB + ldy GameplayObjectState,x ; CPU:$C97C PRG:097C BC 30 05 + iny ; CPU:$C97F PRG:097F C8 + tya ; CPU:$C980 PRG:0980 98 + and #$07 ; CPU:$C981 PRG:0981 29 07 + sta GameplayObjectState,x ; CPU:$C983 PRG:0983 9D 30 05 + ldy GameplayObjectState,x ; CPU:$C986 PRG:0986 BC 30 05 + lda RoundObjectTileTable,y ; CPU:$C989 PRG:0989 B9 DD C9 + sta CurrentRoundObjectTile ; CPU:$C98C PRG:098C 85 12 + txa ; CPU:$C98E PRG:098E 8A + asl a ; CPU:$C98F PRG:098F 0A + asl a ; CPU:$C990 PRG:0990 0A + clc ; CPU:$C991 PRG:0991 18 + tay ; CPU:$C992 PRG:0992 A8 + lda GameplayObjectPosY,x ; CPU:$C993 PRG:0993 BD A4 04 + cmp #$D0 ; CPU:$C996 PRG:0996 C9 D0 + sta OamBuffer,y ; CPU:$C998 PRG:0998 99 00 02 + lda GameplayObjectPosX,x ; CPU:$C99B PRG:099B BD 90 04 + sta $0203,y ; CPU:$C99E PRG:099E 99 03 02 + lda CurrentRoundObjectTile ; CPU:$C9A1 PRG:09A1 A5 12 + sta $0201,y ; CPU:$C9A3 PRG:09A3 99 01 02 + lda #$00 ; CPU:$C9A6 PRG:09A6 A9 00 + bcc UpdateRoundObjectSpritesAndPhysics_Block_8 ; CPU:$C9A8 PRG:09A8 90 02 + lda #$20 ; CPU:$C9AA PRG:09AA A9 20 UpdateRoundObjectSpritesAndPhysics_Block_8: - sta $0202,y ; CPU:$C9AA PRG:09AA 99 02 02 + sta $0202,y ; CPU:$C9AC PRG:09AC 99 02 02 UpdateRoundObjectSpritesAndPhysics_Block_9: - dex ; CPU:$C9AD PRG:09AD CA - bmi UpdateRoundObjectSpritesAndPhysics_Block_10 ; CPU:$C9AE PRG:09AE 30 03 - jmp UpdateRoundObjectSpritesAndPhysics_Load ; CPU:$C9B0 PRG:09B0 4C B9 C8 + dex ; CPU:$C9AF PRG:09AF CA + bmi UpdateRoundObjectSpritesAndPhysics_Block_10 ; CPU:$C9B0 PRG:09B0 30 03 + jmp UpdateRoundObjectSpritesAndPhysics_Load ; CPU:$C9B2 PRG:09B2 4C B9 C8 UpdateRoundObjectSpritesAndPhysics_Block_10: - rts ; CPU:$C9B3 PRG:09B3 60 + rts ; CPU:$C9B5 PRG:09B5 60 ;=============================================================================== ; IntegrateGameplayObjectPosition ; @@ -2192,51 +2385,55 @@ UpdateRoundObjectSpritesAndPhysics_Block_10: ; Returns: ; Gameplay object X/Y fixed-point positions updated. ; +; Clobbers: +; A, the N, Z, C and V flags, GameplayObjectPosX, GameplayObjectPosY, +; GameplayObjectVelocityFracY, GameplayObjectVelocityIntY. +; ; PRG offsets: $09B6-$09DC ; CPU range: $C9B6-$C9DC ;=============================================================================== IntegrateGameplayObjectPosition: - lda GameplayObjectParameter,x ; CPU:$C9B4 PRG:09B4 BD 08 05 - clc ; CPU:$C9B7 PRG:09B7 18 - adc GameplayObjectVelocityFracY,x ; CPU:$C9B8 PRG:09B8 7D B8 04 - sta GameplayObjectVelocityFracY,x ; CPU:$C9BB PRG:09BB 9D B8 04 - lda GameplayObjectVelocityY,x ; CPU:$C9BE PRG:09BE BD E0 04 - adc GameplayObjectPosX,x ; CPU:$C9C1 PRG:09C1 7D 90 04 - sta GameplayObjectPosX,x ; CPU:$C9C4 PRG:09C4 9D 90 04 - lda GameplayObjectPosXHi,x ; CPU:$C9C7 PRG:09C7 BD 1C 05 - clc ; CPU:$C9CA PRG:09CA 18 - adc GameplayObjectVelocityIntY,x ; CPU:$C9CB PRG:09CB 7D CC 04 - sta GameplayObjectVelocityIntY,x ; CPU:$C9CE PRG:09CE 9D CC 04 - lda GameplayObjectVelocityX,x ; CPU:$C9D1 PRG:09D1 BD F4 04 - adc GameplayObjectPosY,x ; CPU:$C9D4 PRG:09D4 7D A4 04 - sta GameplayObjectPosY,x ; CPU:$C9D7 PRG:09D7 9D A4 04 - rts ; CPU:$C9DA PRG:09DA 60 + lda GameplayObjectParameter,x ; CPU:$C9B6 PRG:09B6 BD 08 05 + clc ; CPU:$C9B9 PRG:09B9 18 + adc GameplayObjectVelocityFracY,x ; CPU:$C9BA PRG:09BA 7D B8 04 + sta GameplayObjectVelocityFracY,x ; CPU:$C9BD PRG:09BD 9D B8 04 + lda GameplayObjectVelocityY,x ; CPU:$C9C0 PRG:09C0 BD E0 04 + adc GameplayObjectPosX,x ; CPU:$C9C3 PRG:09C3 7D 90 04 + sta GameplayObjectPosX,x ; CPU:$C9C6 PRG:09C6 9D 90 04 + lda GameplayObjectPosXHi,x ; CPU:$C9C9 PRG:09C9 BD 1C 05 + clc ; CPU:$C9CC PRG:09CC 18 + adc GameplayObjectVelocityIntY,x ; CPU:$C9CD PRG:09CD 7D CC 04 + sta GameplayObjectVelocityIntY,x ; CPU:$C9D0 PRG:09D0 9D CC 04 + lda GameplayObjectVelocityX,x ; CPU:$C9D3 PRG:09D3 BD F4 04 + adc GameplayObjectPosY,x ; CPU:$C9D6 PRG:09D6 7D A4 04 + sta GameplayObjectPosY,x ; CPU:$C9D9 PRG:09D9 9D A4 04 + rts ; CPU:$C9DC PRG:09DC 60 ; Round-object sprite tables ;=============================================================================== RoundObjectTileTable: - .byte $9D, $9E, $9F, $9E, $9D, $A0, $A1, $A0 ; CPU:$C9DB PRG:09DB 9D 9E 9F 9E 9D A0 A1 A0 + .byte $9D, $9E, $9F, $9E, $9D, $A0, $A1, $A0 ; CPU:$C9DD PRG:09DD 9D 9E 9F 9E 9D A0 A1 A0 RoundObjectXOffsetTable: - .byte $08, $08, $F0, $F0, $08, $08, $F0, $F0 ; CPU:$C9E3 PRG:09E3 08 08 F0 F0 08 08 F0 F0 - .byte $08, $08, $F0, $F0, $08, $08, $F0, $F0 ; CPU:$C9EB PRG:09EB 08 08 F0 F0 08 08 F0 F0 + .byte $08, $08, $F0, $F0, $08, $08, $F0, $F0 ; CPU:$C9E5 PRG:09E5 08 08 F0 F0 08 08 F0 F0 + .byte $08, $08, $F0, $F0, $08, $08, $F0, $F0 ; CPU:$C9ED PRG:09ED 08 08 F0 F0 08 08 F0 F0 RoundObjectYOffsetTable: - .byte $EE, $0A, $0A, $EE, $EE, $0A, $0A, $EE ; CPU:$C9F3 PRG:09F3 EE 0A 0A EE EE 0A 0A EE - .byte $EE, $0A, $0A, $EE, $EE, $0A, $0A, $EE ; CPU:$C9FB PRG:09FB EE 0A 0A EE EE 0A 0A EE + .byte $EE, $0A, $0A, $EE, $EE, $0A, $0A, $EE ; CPU:$C9F5 PRG:09F5 EE 0A 0A EE EE 0A 0A EE + .byte $EE, $0A, $0A, $EE, $EE, $0A, $0A, $EE ; CPU:$C9FD PRG:09FD EE 0A 0A EE EE 0A 0A EE RoundObjectVerticalSpacingTable: - .byte $F8, $08, $08, $F8, $F8, $08, $08, $F8 ; CPU:$CA03 PRG:0A03 F8 08 08 F8 F8 08 08 F8 - .byte $F8, $08, $08, $F8, $F8, $08, $08, $F8 ; CPU:$CA0B PRG:0A0B F8 08 08 F8 F8 08 08 F8 + .byte $F8, $08, $08, $F8, $F8, $08, $08, $F8 ; CPU:$CA05 PRG:0A05 F8 08 08 F8 F8 08 08 F8 + .byte $F8, $08, $08, $F8, $F8, $08, $08, $F8 ; CPU:$CA0D PRG:0A0D F8 08 08 F8 F8 08 08 F8 RoundObjectTileTopTable: - .byte $91, $93, $97, $97, $FC, $92, $95, $9A ; CPU:$CA13 PRG:0A13 91 93 97 97 FC 92 95 9A - .byte $9A, $FC ; CPU:$CA1B PRG:0A1B 9A FC + .byte $91, $93, $97, $97, $FC, $92, $95, $9A ; CPU:$CA15 PRG:0A15 91 93 97 97 FC 92 95 9A + .byte $9A, $FC ; CPU:$CA1D PRG:0A1D 9A FC RoundObjectTileMiddleTable: - .byte $FC, $94, $98, $98, $FC, $FC, $96, $9B ; CPU:$CA1D PRG:0A1D FC 94 98 98 FC FC 96 9B - .byte $9B, $FC ; CPU:$CA25 PRG:0A25 9B FC + .byte $FC, $94, $98, $98, $FC, $FC, $96, $9B ; CPU:$CA1F PRG:0A1F FC 94 98 98 FC FC 96 9B + .byte $9B, $FC ; CPU:$CA27 PRG:0A27 9B FC RoundObjectTileBottomTable: - .byte $FC, $FC, $99, $99, $FC, $FC, $FC, $9C ; CPU:$CA27 PRG:0A27 FC FC 99 99 FC FC FC 9C - .byte $9C, $FC ; CPU:$CA2F PRG:0A2F 9C FC + .byte $FC, $FC, $99, $99, $FC, $FC, $FC, $9C ; CPU:$CA29 PRG:0A29 FC FC 99 99 FC FC FC 9C + .byte $9C, $FC ; CPU:$CA31 PRG:0A31 9C FC RoundObjectAttributeTable: - .byte $C0, $40, $00, $80 ; CPU:$CA31 PRG:0A31 C0 40 00 80 + .byte $C0, $40, $00, $80 ; CPU:$CA33 PRG:0A33 C0 40 00 80 ;=============================================================================== ; NegateGameplayObjectVelocityY @@ -2253,23 +2450,27 @@ RoundObjectAttributeTable: ; Returns: ; The selected velocity pair is negated. ; +; Clobbers: +; A, the N, Z, C and V flags, SoundRequestFlags3, +; GameplayObjectVelocityY, GameplayObjectParameter. +; ; PRG offsets: $0A37-$0A4E ; CPU range: $CA37-$CA4E ;=============================================================================== BounceGameplayObjectY: - lda SoundRequestFlags3 ; CPU:$CA35 PRG:0A35 A5 F3 - ora #$80 ; CPU:$CA37 PRG:0A37 09 80 - sta SoundRequestFlags3 ; CPU:$CA39 PRG:0A39 85 F3 + lda SoundRequestFlags3 ; CPU:$CA37 PRG:0A37 A5 F3 + ora #$80 ; CPU:$CA39 PRG:0A39 09 80 + sta SoundRequestFlags3 ; CPU:$CA3B PRG:0A3B 85 F3 NegateGameplayObjectVelocityY: - lda #$00 ; CPU:$CA3B PRG:0A3B A9 00 - sec ; CPU:$CA3D PRG:0A3D 38 - sbc GameplayObjectParameter,x ; CPU:$CA3E PRG:0A3E FD 08 05 - sta GameplayObjectParameter,x ; CPU:$CA41 PRG:0A41 9D 08 05 - lda #$00 ; CPU:$CA44 PRG:0A44 A9 00 - sbc GameplayObjectVelocityY,x ; CPU:$CA46 PRG:0A46 FD E0 04 - sta GameplayObjectVelocityY,x ; CPU:$CA49 PRG:0A49 9D E0 04 - rts ; CPU:$CA4C PRG:0A4C 60 + lda #$00 ; CPU:$CA3D PRG:0A3D A9 00 + sec ; CPU:$CA3F PRG:0A3F 38 + sbc GameplayObjectParameter,x ; CPU:$CA40 PRG:0A40 FD 08 05 + sta GameplayObjectParameter,x ; CPU:$CA43 PRG:0A43 9D 08 05 + lda #$00 ; CPU:$CA46 PRG:0A46 A9 00 + sbc GameplayObjectVelocityY,x ; CPU:$CA48 PRG:0A48 FD E0 04 + sta GameplayObjectVelocityY,x ; CPU:$CA4B PRG:0A4B 9D E0 04 + rts ; CPU:$CA4E PRG:0A4E 60 ;=============================================================================== ; NegateGameplayObjectVelocityX ; @@ -2285,23 +2486,27 @@ NegateGameplayObjectVelocityY: ; Returns: ; The selected velocity pair is negated. ; +; Clobbers: +; A, the N, Z, C and V flags, SoundRequestFlags3, +; GameplayObjectVelocityX, GameplayObjectPosXHi. +; ; PRG offsets: $0A4F-$0A66 ; CPU range: $CA4F-$CA66 ;=============================================================================== - +ReflectObjectYVelocity: BounceGameplayObjectX: - lda SoundRequestFlags3 ; CPU:$CA4D PRG:0A4D A5 F3 - ora #$80 ; CPU:$CA4F PRG:0A4F 09 80 - sta SoundRequestFlags3 ; CPU:$CA51 PRG:0A51 85 F3 + lda SoundRequestFlags3 ; CPU:$CA4F PRG:0A4F A5 F3 + ora #$80 ; CPU:$CA51 PRG:0A51 09 80 + sta SoundRequestFlags3 ; CPU:$CA53 PRG:0A53 85 F3 NegateGameplayObjectVelocityX: - lda #$00 ; CPU:$CA53 PRG:0A53 A9 00 - sec ; CPU:$CA55 PRG:0A55 38 - sbc GameplayObjectPosXHi,x ; CPU:$CA56 PRG:0A56 FD 1C 05 - sta GameplayObjectPosXHi,x ; CPU:$CA59 PRG:0A59 9D 1C 05 - lda #$00 ; CPU:$CA5C PRG:0A5C A9 00 - sbc GameplayObjectVelocityX,x ; CPU:$CA5E PRG:0A5E FD F4 04 - sta GameplayObjectVelocityX,x ; CPU:$CA61 PRG:0A61 9D F4 04 - rts ; CPU:$CA64 PRG:0A64 60 + lda #$00 ; CPU:$CA55 PRG:0A55 A9 00 + sec ; CPU:$CA57 PRG:0A57 38 + sbc GameplayObjectPosXHi,x ; CPU:$CA58 PRG:0A58 FD 1C 05 + sta GameplayObjectPosXHi,x ; CPU:$CA5B PRG:0A5B 9D 1C 05 + lda #$00 ; CPU:$CA5E PRG:0A5E A9 00 + sbc GameplayObjectVelocityX,x ; CPU:$CA60 PRG:0A60 FD F4 04 + sta GameplayObjectVelocityX,x ; CPU:$CA63 PRG:0A63 9D F4 04 + rts ; CPU:$CA66 PRG:0A66 60 ;=============================================================================== ; TestGameplayObjectAgainstBounds ; @@ -2317,113 +2522,118 @@ NegateGameplayObjectVelocityX: ; Returns: ; GameplayObjectCollisionFlags contains overlap sides; velocity components may be negated. ; +; Clobbers: +; A and Y, the N, Z, C and V flags, GameplayObjectCollisionFlags, +; SoundRequestFlags3, GameplayObjectVelocityY, GameplayObjectVelocityX, +; GameplayObjectParameter, GameplayObjectPosXHi. +; ; PRG offsets: $0A67-$0B1A ; CPU range: $CA67-$CB1A ;=============================================================================== TestGameplayObjectAgainstBounds: - ldy BoundsCandidateIndex ; CPU:$CA65 PRG:0A65 A4 CD + ldy BoundsCandidateIndex ; CPU:$CA67 PRG:0A67 A4 CD TestGameplayObjectAgainstBounds_Load: - lda #$00 ; CPU:$CA67 PRG:0A67 A9 00 - sta GameplayObjectCollisionFlags ; CPU:$CA69 PRG:0A69 85 CC - lda (BoundsTopPtrLo),y ; CPU:$CA6B PRG:0A6B B1 27 - sec ; CPU:$CA6D PRG:0A6D 38 - sbc #$08 ; CPU:$CA6E PRG:0A6E E9 08 - cmp GameplayObjectPosY,x ; CPU:$CA70 PRG:0A70 DD A4 04 - bcs TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CA73 PRG:0A73 B0 66 - adc #$03 ; CPU:$CA75 PRG:0A75 69 03 - cmp GameplayObjectPosY,x ; CPU:$CA77 PRG:0A77 DD A4 04 - bcc TestGameplayObjectAgainstBounds_Block ; CPU:$CA7A PRG:0A7A 90 04 - lda #$01 ; CPU:$CA7C PRG:0A7C A9 01 - bne TestGameplayObjectAgainstBounds_Block_1 ; CPU:$CA7E PRG:0A7E D0 10 + lda #$00 ; CPU:$CA69 PRG:0A69 A9 00 + sta GameplayObjectCollisionFlags ; CPU:$CA6B PRG:0A6B 85 CC + lda (BoundsTopPtrLo),y ; CPU:$CA6D PRG:0A6D B1 27 + sec ; CPU:$CA6F PRG:0A6F 38 + sbc #$08 ; CPU:$CA70 PRG:0A70 E9 08 + cmp GameplayObjectPosY,x ; CPU:$CA72 PRG:0A72 DD A4 04 + bcs TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CA75 PRG:0A75 B0 66 + adc #$03 ; CPU:$CA77 PRG:0A77 69 03 + cmp GameplayObjectPosY,x ; CPU:$CA79 PRG:0A79 DD A4 04 + bcc TestGameplayObjectAgainstBounds_Block ; CPU:$CA7C PRG:0A7C 90 04 + lda #$01 ; CPU:$CA7E PRG:0A7E A9 01 + bne TestGameplayObjectAgainstBounds_Block_1 ; CPU:$CA80 PRG:0A80 D0 10 TestGameplayObjectAgainstBounds_Block: - lda (BoundsBottomPtrLo),y ; CPU:$CA80 PRG:0A80 B1 29 - cmp GameplayObjectPosY,x ; CPU:$CA82 PRG:0A82 DD A4 04 - bcc TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CA85 PRG:0A85 90 54 - sbc #$03 ; CPU:$CA87 PRG:0A87 E9 03 - cmp GameplayObjectPosY,x ; CPU:$CA89 PRG:0A89 DD A4 04 - bcs TestGameplayObjectAgainstBounds_Block_4 ; CPU:$CA8C PRG:0A8C B0 1D - lda #$02 ; CPU:$CA8E PRG:0A8E A9 02 + lda (BoundsBottomPtrLo),y ; CPU:$CA82 PRG:0A82 B1 29 + cmp GameplayObjectPosY,x ; CPU:$CA84 PRG:0A84 DD A4 04 + bcc TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CA87 PRG:0A87 90 54 + sbc #$03 ; CPU:$CA89 PRG:0A89 E9 03 + cmp GameplayObjectPosY,x ; CPU:$CA8B PRG:0A8B DD A4 04 + bcs TestGameplayObjectAgainstBounds_Block_4 ; CPU:$CA8E PRG:0A8E B0 1D + lda #$02 ; CPU:$CA90 PRG:0A90 A9 02 TestGameplayObjectAgainstBounds_Block_1: - sta GameplayObjectCollisionFlags ; CPU:$CA90 PRG:0A90 85 CC - lda (BoundsLeftPtrLo),y ; CPU:$CA92 PRG:0A92 B1 23 - cmp #$10 ; CPU:$CA94 PRG:0A94 C9 10 - beq TestGameplayObjectAgainstBounds_Block_2 ; CPU:$CA96 PRG:0A96 F0 08 - sec ; CPU:$CA98 PRG:0A98 38 - sbc #$04 ; CPU:$CA99 PRG:0A99 E9 04 - cmp GameplayObjectPosX,x ; CPU:$CA9B PRG:0A9B DD 90 04 - bcs TestGameplayObjectAgainstBounds_Block_3 ; CPU:$CA9E PRG:0A9E B0 07 + sta GameplayObjectCollisionFlags ; CPU:$CA92 PRG:0A92 85 CC + lda (BoundsLeftPtrLo),y ; CPU:$CA94 PRG:0A94 B1 23 + cmp #$10 ; CPU:$CA96 PRG:0A96 C9 10 + beq TestGameplayObjectAgainstBounds_Block_2 ; CPU:$CA98 PRG:0A98 F0 08 + sec ; CPU:$CA9A PRG:0A9A 38 + sbc #$04 ; CPU:$CA9B PRG:0A9B E9 04 + cmp GameplayObjectPosX,x ; CPU:$CA9D PRG:0A9D DD 90 04 + bcs TestGameplayObjectAgainstBounds_Block_3 ; CPU:$CAA0 PRG:0AA0 B0 07 TestGameplayObjectAgainstBounds_Block_2: - lda (BoundsRightPtrLo),y ; CPU:$CAA0 PRG:0AA0 B1 25 - cmp GameplayObjectPosX,x ; CPU:$CAA2 PRG:0AA2 DD 90 04 - bcs TestGameplayObjectAgainstBounds_Block_4 ; CPU:$CAA5 PRG:0AA5 B0 04 + lda (BoundsRightPtrLo),y ; CPU:$CAA2 PRG:0AA2 B1 25 + cmp GameplayObjectPosX,x ; CPU:$CAA4 PRG:0AA4 DD 90 04 + bcs TestGameplayObjectAgainstBounds_Block_4 ; CPU:$CAA7 PRG:0AA7 B0 04 TestGameplayObjectAgainstBounds_Block_3: - lda #$00 ; CPU:$CAA7 PRG:0AA7 A9 00 - sta GameplayObjectCollisionFlags ; CPU:$CAA9 PRG:0AA9 85 CC + lda #$00 ; CPU:$CAA9 PRG:0AA9 A9 00 + sta GameplayObjectCollisionFlags ; CPU:$CAAB PRG:0AAB 85 CC TestGameplayObjectAgainstBounds_Block_4: - lda (BoundsLeftPtrLo),y ; CPU:$CAAB PRG:0AAB B1 23 - cmp #$10 ; CPU:$CAAD PRG:0AAD C9 10 - beq TestGameplayObjectAgainstBounds_Block_5 ; CPU:$CAAF PRG:0AAF F0 15 - sec ; CPU:$CAB1 PRG:0AB1 38 - sbc #$08 ; CPU:$CAB2 PRG:0AB2 E9 08 - cmp GameplayObjectPosX,x ; CPU:$CAB4 PRG:0AB4 DD 90 04 - bcs TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CAB7 PRG:0AB7 B0 22 - adc #$03 ; CPU:$CAB9 PRG:0AB9 69 03 - cmp GameplayObjectPosX,x ; CPU:$CABB PRG:0ABB DD 90 04 - bcc TestGameplayObjectAgainstBounds_Block_5 ; CPU:$CABE PRG:0ABE 90 06 - lda GameplayObjectCollisionFlags ; CPU:$CAC0 PRG:0AC0 A5 CC - ora #$04 ; CPU:$CAC2 PRG:0AC2 09 04 - bne TestGameplayObjectAgainstBounds_Block_6 ; CPU:$CAC4 PRG:0AC4 D0 13 + lda (BoundsLeftPtrLo),y ; CPU:$CAAD PRG:0AAD B1 23 + cmp #$10 ; CPU:$CAAF PRG:0AAF C9 10 + beq TestGameplayObjectAgainstBounds_Block_5 ; CPU:$CAB1 PRG:0AB1 F0 15 + sec ; CPU:$CAB3 PRG:0AB3 38 + sbc #$08 ; CPU:$CAB4 PRG:0AB4 E9 08 + cmp GameplayObjectPosX,x ; CPU:$CAB6 PRG:0AB6 DD 90 04 + bcs TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CAB9 PRG:0AB9 B0 22 + adc #$03 ; CPU:$CABB PRG:0ABB 69 03 + cmp GameplayObjectPosX,x ; CPU:$CABD PRG:0ABD DD 90 04 + bcc TestGameplayObjectAgainstBounds_Block_5 ; CPU:$CAC0 PRG:0AC0 90 06 + lda GameplayObjectCollisionFlags ; CPU:$CAC2 PRG:0AC2 A5 CC + ora #$04 ; CPU:$CAC4 PRG:0AC4 09 04 + bne TestGameplayObjectAgainstBounds_Block_6 ; CPU:$CAC6 PRG:0AC6 D0 13 TestGameplayObjectAgainstBounds_Block_5: - lda (BoundsRightPtrLo),y ; CPU:$CAC6 PRG:0AC6 B1 25 - cmp #$FF ; CPU:$CAC8 PRG:0AC8 C9 FF - beq TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CACA PRG:0ACA F0 0F - cmp GameplayObjectPosX,x ; CPU:$CACC PRG:0ACC DD 90 04 - bcc TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CACF PRG:0ACF 90 0A - sbc #$03 ; CPU:$CAD1 PRG:0AD1 E9 03 - bcs TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CAD3 PRG:0AD3 B0 06 - lda GameplayObjectCollisionFlags ; CPU:$CAD5 PRG:0AD5 A5 CC - ora #$08 ; CPU:$CAD7 PRG:0AD7 09 08 + lda (BoundsRightPtrLo),y ; CPU:$CAC8 PRG:0AC8 B1 25 + cmp #$FF ; CPU:$CACA PRG:0ACA C9 FF + beq TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CACC PRG:0ACC F0 0F + cmp GameplayObjectPosX,x ; CPU:$CACE PRG:0ACE DD 90 04 + bcc TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CAD1 PRG:0AD1 90 0A + sbc #$03 ; CPU:$CAD3 PRG:0AD3 E9 03 + bcs TestGameplayObjectAgainstBounds_Block_7 ; CPU:$CAD5 PRG:0AD5 B0 06 + lda GameplayObjectCollisionFlags ; CPU:$CAD7 PRG:0AD7 A5 CC + ora #$08 ; CPU:$CAD9 PRG:0AD9 09 08 TestGameplayObjectAgainstBounds_Block_6: - sta GameplayObjectCollisionFlags ; CPU:$CAD9 PRG:0AD9 85 CC + sta GameplayObjectCollisionFlags ; CPU:$CADB PRG:0ADB 85 CC TestGameplayObjectAgainstBounds_Block_7: - lda GameplayObjectCollisionFlags ; CPU:$CADB PRG:0ADB A5 CC - bne TestGameplayObjectAgainstBounds_Block_9 ; CPU:$CADD PRG:0ADD D0 07 + lda GameplayObjectCollisionFlags ; CPU:$CADD PRG:0ADD A5 CC + bne TestGameplayObjectAgainstBounds_Block_9 ; CPU:$CADF PRG:0ADF D0 07 TestGameplayObjectAgainstBounds_Decrement: - dey ; CPU:$CADF PRG:0ADF 88 - bmi TestGameplayObjectAgainstBounds_Block_8 ; CPU:$CAE0 PRG:0AE0 30 03 - jmp TestGameplayObjectAgainstBounds_Load ; CPU:$CAE2 PRG:0AE2 4C 69 CA + dey ; CPU:$CAE1 PRG:0AE1 88 + bmi TestGameplayObjectAgainstBounds_Block_8 ; CPU:$CAE2 PRG:0AE2 30 03 + jmp TestGameplayObjectAgainstBounds_Load ; CPU:$CAE4 PRG:0AE4 4C 69 CA TestGameplayObjectAgainstBounds_Block_8: - rts ; CPU:$CAE5 PRG:0AE5 60 + rts ; CPU:$CAE7 PRG:0AE7 60 TestGameplayObjectAgainstBounds_Block_9: - lsr GameplayObjectCollisionFlags ; CPU:$CAE6 PRG:0AE6 46 CC - bcc TestGameplayObjectAgainstBounds_Block_10 ; CPU:$CAE8 PRG:0AE8 90 08 - lda GameplayObjectVelocityX,x ; CPU:$CAEA PRG:0AEA BD F4 04 - bmi TestGameplayObjectAgainstBounds_Block_10 ; CPU:$CAED PRG:0AED 30 03 - jsr BounceGameplayObjectX ; CPU:$CAEF PRG:0AEF 20 4F CA + lsr GameplayObjectCollisionFlags ; CPU:$CAE8 PRG:0AE8 46 CC + bcc TestGameplayObjectAgainstBounds_Block_10 ; CPU:$CAEA PRG:0AEA 90 08 + lda GameplayObjectVelocityX,x ; CPU:$CAEC PRG:0AEC BD F4 04 + bmi TestGameplayObjectAgainstBounds_Block_10 ; CPU:$CAEF PRG:0AEF 30 03 + jsr BounceGameplayObjectX ; CPU:$CAF1 PRG:0AF1 20 4F CA TestGameplayObjectAgainstBounds_Block_10: - lsr GameplayObjectCollisionFlags ; CPU:$CAF2 PRG:0AF2 46 CC - bcc TestGameplayObjectAgainstBounds_Block_11 ; CPU:$CAF4 PRG:0AF4 90 08 - lda GameplayObjectVelocityX,x ; CPU:$CAF6 PRG:0AF6 BD F4 04 - bpl TestGameplayObjectAgainstBounds_Block_11 ; CPU:$CAF9 PRG:0AF9 10 03 - jsr BounceGameplayObjectX ; CPU:$CAFB PRG:0AFB 20 4F CA + lsr GameplayObjectCollisionFlags ; CPU:$CAF4 PRG:0AF4 46 CC + bcc TestGameplayObjectAgainstBounds_Block_11 ; CPU:$CAF6 PRG:0AF6 90 08 + lda GameplayObjectVelocityX,x ; CPU:$CAF8 PRG:0AF8 BD F4 04 + bpl TestGameplayObjectAgainstBounds_Block_11 ; CPU:$CAFB PRG:0AFB 10 03 + jsr BounceGameplayObjectX ; CPU:$CAFD PRG:0AFD 20 4F CA TestGameplayObjectAgainstBounds_Block_11: - lsr GameplayObjectCollisionFlags ; CPU:$CAFE PRG:0AFE 46 CC - bcc TestGameplayObjectAgainstBounds_Block_12 ; CPU:$CB00 PRG:0B00 90 08 - lda GameplayObjectVelocityY,x ; CPU:$CB02 PRG:0B02 BD E0 04 - bmi TestGameplayObjectAgainstBounds_Block_12 ; CPU:$CB05 PRG:0B05 30 03 - jsr BounceGameplayObjectY ; CPU:$CB07 PRG:0B07 20 37 CA + lsr GameplayObjectCollisionFlags ; CPU:$CB00 PRG:0B00 46 CC + bcc TestGameplayObjectAgainstBounds_Block_12 ; CPU:$CB02 PRG:0B02 90 08 + lda GameplayObjectVelocityY,x ; CPU:$CB04 PRG:0B04 BD E0 04 + bmi TestGameplayObjectAgainstBounds_Block_12 ; CPU:$CB07 PRG:0B07 30 03 + jsr BounceGameplayObjectY ; CPU:$CB09 PRG:0B09 20 37 CA TestGameplayObjectAgainstBounds_Block_12: - lsr GameplayObjectCollisionFlags ; CPU:$CB0A PRG:0B0A 46 CC - bcc TestGameplayObjectAgainstBounds_Block_13 ; CPU:$CB0C PRG:0B0C 90 08 - lda GameplayObjectVelocityY,x ; CPU:$CB0E PRG:0B0E BD E0 04 - bpl TestGameplayObjectAgainstBounds_Block_13 ; CPU:$CB11 PRG:0B11 10 03 - jsr BounceGameplayObjectY ; CPU:$CB13 PRG:0B13 20 37 CA + lsr GameplayObjectCollisionFlags ; CPU:$CB0C PRG:0B0C 46 CC + bcc TestGameplayObjectAgainstBounds_Block_13 ; CPU:$CB0E PRG:0B0E 90 08 + lda GameplayObjectVelocityY,x ; CPU:$CB10 PRG:0B10 BD E0 04 + bpl TestGameplayObjectAgainstBounds_Block_13 ; CPU:$CB13 PRG:0B13 10 03 + jsr BounceGameplayObjectY ; CPU:$CB15 PRG:0B15 20 37 CA TestGameplayObjectAgainstBounds_Block_13: - jmp TestGameplayObjectAgainstBounds_Decrement ; CPU:$CB16 PRG:0B16 4C E1 CA + jmp TestGameplayObjectAgainstBounds_Decrement ; CPU:$CB18 PRG:0B18 4C E1 CA ; $0B1B: RTS terminating TestGameplayObjectAgainstBounds. - rts ; CPU:$CB19 PRG:0B19 60 + rts ; CPU:$CB1B PRG:0B1B 60 ;=============================================================================== ; ResolveGameplayObjectInteraction @@ -2440,52 +2650,57 @@ TestGameplayObjectAgainstBounds_Block_13: ; Returns: ; Player and gameplay-object state may be changed. ; +; Clobbers: +; A and Y, the N, Z, C and V flags, $00C1, SoundRequestFlags0, +; PlayerAnimationState, PlayerStateTimer, GameplayObjectPosY, +; GameplayObjectState. +; ; PRG offsets: $0B1C-$0B73 ; CPU range: $CB1C-$CB73 ;=============================================================================== ResolveGameplayObjectInteraction: - ldy #$01 ; CPU:$CB1A PRG:0B1A A0 01 + ldy #$01 ; CPU:$CB1C PRG:0B1C A0 01 ResolveGameplayObjectInteraction_Block: - lda a:PlayerSlotState,y ; CPU:$CB1C PRG:0B1C B9 88 00 - bmi ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB1F PRG:0B1F 30 4D - beq ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB21 PRG:0B21 F0 4B - lda a:PlayerCollisionDisable,y ; CPU:$CB23 PRG:0B23 B9 BD 00 - bne ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB26 PRG:0B26 D0 46 - lda GameplayObjectPosX,x ; CPU:$CB28 PRG:0B28 BD 90 04 - sec ; CPU:$CB2B PRG:0B2B 38 - sbc a:PlayerPosX,y ; CPU:$CB2C PRG:0B2C F9 91 00 - jsr AbsoluteDifference ; CPU:$CB2F PRG:0B2F 20 8E F0 - cmp #$08 ; CPU:$CB32 PRG:0B32 C9 08 - bcs ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB34 PRG:0B34 B0 38 - lda GameplayObjectPosY,x ; CPU:$CB36 PRG:0B36 BD A4 04 - sec ; CPU:$CB39 PRG:0B39 38 - sbc a:PlayerPosY,y ; CPU:$CB3A PRG:0B3A F9 9A 00 - sec ; CPU:$CB3D PRG:0B3D 38 - sbc #$08 ; CPU:$CB3E PRG:0B3E E9 08 - jsr AbsoluteDifference ; CPU:$CB40 PRG:0B40 20 8E F0 - cmp #$0C ; CPU:$CB43 PRG:0B43 C9 0C - bcs ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB45 PRG:0B45 B0 27 - lda #$00 ; CPU:$CB47 PRG:0B47 A9 00 - sta a:PlayerSlotState,y ; CPU:$CB49 PRG:0B49 99 88 00 - lda #$01 ; CPU:$CB4C PRG:0B4C A9 01 - sta a:PlayerLifecycleState,y ; CPU:$CB4E PRG:0B4E 99 7F 00 - sta $00C1,y ; CPU:$CB51 PRG:0B51 99 C1 00 - lda #$0B ; CPU:$CB54 PRG:0B54 A9 0B - sta PlayerAnimationState,y ; CPU:$CB56 PRG:0B56 99 51 04 - lda #$20 ; CPU:$CB59 PRG:0B59 A9 20 - sta PlayerStateTimer,y ; CPU:$CB5B PRG:0B5B 99 5A 04 - lda SoundRequestFlags0 ; CPU:$CB5E PRG:0B5E A5 F0 - ora #$80 ; CPU:$CB60 PRG:0B60 09 80 - sta SoundRequestFlags0 ; CPU:$CB62 PRG:0B62 85 F0 - lda #$F0 ; CPU:$CB64 PRG:0B64 A9 F0 - sta GameplayObjectPosY,x ; CPU:$CB66 PRG:0B66 9D A4 04 - lda #$FF ; CPU:$CB69 PRG:0B69 A9 FF - sta GameplayObjectState,x ; CPU:$CB6B PRG:0B6B 9D 30 05 + lda a:PlayerSlotState,y ; CPU:$CB1E PRG:0B1E B9 88 00 + bmi ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB21 PRG:0B21 30 4D + beq ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB23 PRG:0B23 F0 4B + lda a:PlayerCollisionDisable,y ; CPU:$CB25 PRG:0B25 B9 BD 00 + bne ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB28 PRG:0B28 D0 46 + lda GameplayObjectPosX,x ; CPU:$CB2A PRG:0B2A BD 90 04 + sec ; CPU:$CB2D PRG:0B2D 38 + sbc a:PlayerPosX,y ; CPU:$CB2E PRG:0B2E F9 91 00 + jsr AbsoluteDifference ; CPU:$CB31 PRG:0B31 20 8E F0 + cmp #$08 ; CPU:$CB34 PRG:0B34 C9 08 + bcs ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB36 PRG:0B36 B0 38 + lda GameplayObjectPosY,x ; CPU:$CB38 PRG:0B38 BD A4 04 + sec ; CPU:$CB3B PRG:0B3B 38 + sbc a:PlayerPosY,y ; CPU:$CB3C PRG:0B3C F9 9A 00 + sec ; CPU:$CB3F PRG:0B3F 38 + sbc #$08 ; CPU:$CB40 PRG:0B40 E9 08 + jsr AbsoluteDifference ; CPU:$CB42 PRG:0B42 20 8E F0 + cmp #$0C ; CPU:$CB45 PRG:0B45 C9 0C + bcs ResolveGameplayObjectInteraction_Block_1 ; CPU:$CB47 PRG:0B47 B0 27 + lda #$00 ; CPU:$CB49 PRG:0B49 A9 00 + sta a:PlayerSlotState,y ; CPU:$CB4B PRG:0B4B 99 88 00 + lda #$01 ; CPU:$CB4E PRG:0B4E A9 01 + sta a:PlayerLifecycleState,y ; CPU:$CB50 PRG:0B50 99 7F 00 + sta $00C1,y ; CPU:$CB53 PRG:0B53 99 C1 00 + lda #$0B ; CPU:$CB56 PRG:0B56 A9 0B + sta PlayerAnimationState,y ; CPU:$CB58 PRG:0B58 99 51 04 + lda #$20 ; CPU:$CB5B PRG:0B5B A9 20 + sta PlayerStateTimer,y ; CPU:$CB5D PRG:0B5D 99 5A 04 + lda SoundRequestFlags0 ; CPU:$CB60 PRG:0B60 A5 F0 + ora #$80 ; CPU:$CB62 PRG:0B62 09 80 + sta SoundRequestFlags0 ; CPU:$CB64 PRG:0B64 85 F0 + lda #$F0 ; CPU:$CB66 PRG:0B66 A9 F0 + sta GameplayObjectPosY,x ; CPU:$CB68 PRG:0B68 9D A4 04 + lda #$FF ; CPU:$CB6B PRG:0B6B A9 FF + sta GameplayObjectState,x ; CPU:$CB6D PRG:0B6D 9D 30 05 ResolveGameplayObjectInteraction_Block_1: - dey ; CPU:$CB6E PRG:0B6E 88 - bpl ResolveGameplayObjectInteraction_Block ; CPU:$CB6F PRG:0B6F 10 AB - rts ; CPU:$CB71 PRG:0B71 60 + dey ; CPU:$CB70 PRG:0B70 88 + bpl ResolveGameplayObjectInteraction_Block ; CPU:$CB71 PRG:0B71 10 AB + rts ; CPU:$CB73 PRG:0B73 60 ;=============================================================================== ; UpdateBonusObjectSystem ; @@ -2501,38 +2716,41 @@ ResolveGameplayObjectInteraction_Block_1: ; Returns: ; Bonus object state and player effects may be updated. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, the RAM fields it writes. +; ; PRG offsets: $0B74-$0BA7 ; CPU range: $CB74-$CBA7 ;=============================================================================== UpdateBonusObjectSystem: - ldx ActiveBonusObjectIndex ; CPU:$CB72 PRG:0B72 AE D1 05 - bmi UpdateBonusObjectSystem_Block_2 ; CPU:$CB75 PRG:0B75 30 2E + ldx ActiveBonusObjectIndex ; CPU:$CB74 PRG:0B74 AE D1 05 + bmi UpdateBonusObjectSystem_Block_2 ; CPU:$CB77 PRG:0B77 30 2E UpdateBonusObjectSystem_Block: - jsr FindActiveBonusObject ; CPU:$CB77 PRG:0B77 20 A8 CB - lda BonusObjectTimer,x ; CPU:$CB7A PRG:0B7A BD 04 06 - beq UpdateBonusObjectSystem_Block_1 ; CPU:$CB7D PRG:0B7D F0 23 - txa ; CPU:$CB7F PRG:0B7F 8A - eor FrameCounter ; CPU:$CB80 PRG:0B80 45 19 - and #$01 ; CPU:$CB82 PRG:0B82 29 01 - bne UpdateBonusObjectSystem_Block_1 ; CPU:$CB84 PRG:0B84 D0 1C - ldy BonusObjectPhase,x ; CPU:$CB86 PRG:0B86 BC FA 05 - iny ; CPU:$CB89 PRG:0B89 C8 - tya ; CPU:$CB8A PRG:0B8A 98 - and #$03 ; CPU:$CB8B PRG:0B8B 29 03 - sta BonusObjectPhase,x ; CPU:$CB8D PRG:0B8D 9D FA 05 - jsr DrawBonusObjectHud ; CPU:$CB90 PRG:0B90 20 CB CC - lda BonusObjectPhase,x ; CPU:$CB93 PRG:0B93 BD FA 05 - cmp #$01 ; CPU:$CB96 PRG:0B96 C9 01 - bne UpdateBonusObjectSystem_Block_1 ; CPU:$CB98 PRG:0B98 D0 08 - dec BonusObjectPhaseTimer,x ; CPU:$CB9A PRG:0B9A DE 0E 06 - bne UpdateBonusObjectSystem_Block_1 ; CPU:$CB9D PRG:0B9D D0 03 - dec BonusObjectTimer,x ; CPU:$CB9F PRG:0B9F DE 04 06 + jsr FindActiveBonusObject ; CPU:$CB79 PRG:0B79 20 A8 CB + lda BonusObjectTimer,x ; CPU:$CB7C PRG:0B7C BD 04 06 + beq UpdateBonusObjectSystem_Block_1 ; CPU:$CB7F PRG:0B7F F0 23 + txa ; CPU:$CB81 PRG:0B81 8A + eor FrameCounter ; CPU:$CB82 PRG:0B82 45 19 + and #$01 ; CPU:$CB84 PRG:0B84 29 01 + bne UpdateBonusObjectSystem_Block_1 ; CPU:$CB86 PRG:0B86 D0 1C + ldy BonusObjectPhase,x ; CPU:$CB88 PRG:0B88 BC FA 05 + iny ; CPU:$CB8B PRG:0B8B C8 + tya ; CPU:$CB8C PRG:0B8C 98 + and #$03 ; CPU:$CB8D PRG:0B8D 29 03 + sta BonusObjectPhase,x ; CPU:$CB8F PRG:0B8F 9D FA 05 + jsr DrawBonusObjectHud ; CPU:$CB92 PRG:0B92 20 CB CC + lda BonusObjectPhase,x ; CPU:$CB95 PRG:0B95 BD FA 05 + cmp #$01 ; CPU:$CB98 PRG:0B98 C9 01 + bne UpdateBonusObjectSystem_Block_1 ; CPU:$CB9A PRG:0B9A D0 08 + dec BonusObjectPhaseTimer,x ; CPU:$CB9C PRG:0B9C DE 0E 06 + bne UpdateBonusObjectSystem_Block_1 ; CPU:$CB9F PRG:0B9F D0 03 + dec BonusObjectTimer,x ; CPU:$CBA1 PRG:0BA1 DE 04 06 UpdateBonusObjectSystem_Block_1: - dex ; CPU:$CBA2 PRG:0BA2 CA - bpl UpdateBonusObjectSystem_Block ; CPU:$CBA3 PRG:0BA3 10 D2 + dex ; CPU:$CBA4 PRG:0BA4 CA + bpl UpdateBonusObjectSystem_Block ; CPU:$CBA5 PRG:0BA5 10 D2 UpdateBonusObjectSystem_Block_2: - rts ; CPU:$CBA5 PRG:0BA5 60 + rts ; CPU:$CBA7 PRG:0BA7 60 ;=============================================================================== ; FindActiveBonusObject ; @@ -2548,15 +2766,22 @@ UpdateBonusObjectSystem_Block_2: ; Returns: ; Condition codes and A reflect slot activity. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, ReverseRecordIndex, +; PlayerLifecycleState, PlayerPosX, PlayerPosY, BonusEffectCounter, +; SoundRequestFlags1, $0400, $0409, $0412, PlayerHorizontalImpulse, +; $0424, PlayerVerticalImpulse, $043F, PlayerStateTimer, $0463, $046C, +; BonusObjectTimer, BonusObjectPhaseTimer. +; ; PRG offsets: $0BA8-$0BB1 ; CPU range: $CBA8-$CBB1 ;=============================================================================== FindActiveBonusObject: - ldy #$07 ; CPU:$CBA6 PRG:0BA6 A0 07 - lda BonusObjectTimer,x ; CPU:$CBA8 PRG:0BA8 BD 04 06 - bne TestBonusObjectPlayerOverlap ; CPU:$CBAB PRG:0BAB D0 03 - jmp TestBonusObjectCollection ; CPU:$CBAD PRG:0BAD 4C 3A CC + ldy #$07 ; CPU:$CBA8 PRG:0BA8 A0 07 + lda BonusObjectTimer,x ; CPU:$CBAA PRG:0BAA BD 04 06 + bne TestBonusObjectPlayerOverlap ; CPU:$CBAD PRG:0BAD D0 03 + jmp TestBonusObjectCollection ; CPU:$CBAF PRG:0BAF 4C 3A CC ;=============================================================================== ; TestBonusObjectPlayerOverlap ; @@ -2572,74 +2797,79 @@ FindActiveBonusObject: ; Returns: ; Player motion state and sound flags may be updated. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, ReverseRecordIndex, +; PlayerPosX, PlayerPosY, SoundRequestFlags1, $0400, $0409, +; PlayerHorizontalImpulse, PlayerVerticalImpulse. +; ; PRG offsets: $0BB2-$0C32 ; CPU range: $CBB2-$CC32 ;=============================================================================== TestBonusObjectPlayerOverlap: - lda a:PlayerSlotState,y ; CPU:$CBB0 PRG:0BB0 B9 88 00 - bmi TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBB3 PRG:0BB3 30 78 - beq TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBB5 PRG:0BB5 F0 76 - cpy #$02 ; CPU:$CBB7 PRG:0BB7 C0 02 - bcc TestBonusObjectPlayerOverlap_Block ; CPU:$CBB9 PRG:0BB9 90 04 - cmp #$01 ; CPU:$CBBB PRG:0BBB C9 01 - beq TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBBD PRG:0BBD F0 6E + lda a:PlayerSlotState,y ; CPU:$CBB2 PRG:0BB2 B9 88 00 + bmi TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBB5 PRG:0BB5 30 78 + beq TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBB7 PRG:0BB7 F0 76 + cpy #$02 ; CPU:$CBB9 PRG:0BB9 C0 02 + bcc TestBonusObjectPlayerOverlap_Block ; CPU:$CBBB PRG:0BBB 90 04 + cmp #$01 ; CPU:$CBBD PRG:0BBD C9 01 + beq TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBBF PRG:0BBF F0 6E TestBonusObjectPlayerOverlap_Block: - lda a:PlayerPosX,y ; CPU:$CBBF PRG:0BBF B9 91 00 - clc ; CPU:$CBC2 PRG:0BC2 18 - adc #$08 ; CPU:$CBC3 PRG:0BC3 69 08 - sec ; CPU:$CBC5 PRG:0BC5 38 - sbc BonusObjectPosX,x ; CPU:$CBC6 PRG:0BC6 FD D2 05 - sta CollisionDeltaX ; CPU:$CBC9 PRG:0BC9 85 12 - jsr AbsoluteDifference ; CPU:$CBCB PRG:0BCB 20 8E F0 - cmp #$12 ; CPU:$CBCE PRG:0BCE C9 12 - bcs TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBD0 PRG:0BD0 B0 5B - lda a:PlayerPosY,y ; CPU:$CBD2 PRG:0BD2 B9 9A 00 - clc ; CPU:$CBD5 PRG:0BD5 18 - adc #$0C ; CPU:$CBD6 PRG:0BD6 69 0C - sec ; CPU:$CBD8 PRG:0BD8 38 - sbc BonusObjectPosY,x ; CPU:$CBD9 PRG:0BD9 FD DC 05 - sta CollisionDeltaY ; CPU:$CBDC PRG:0BDC 85 13 - jsr AbsoluteDifference ; CPU:$CBDE PRG:0BDE 20 8E F0 - cmp #$12 ; CPU:$CBE1 PRG:0BE1 C9 12 - bcs TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBE3 PRG:0BE3 B0 48 - lda CollisionDeltaX ; CPU:$CBE5 PRG:0BE5 A5 12 - bmi TestBonusObjectPlayerOverlap_Block_1 ; CPU:$CBE7 PRG:0BE7 30 11 - cmp #$03 ; CPU:$CBE9 PRG:0BE9 C9 03 - bcc TestBonusObjectPlayerOverlap_Block_2 ; CPU:$CBEB PRG:0BEB 90 1C - lda #$02 ; CPU:$CBED PRG:0BED A9 02 - sta PlayerHorizontalImpulse,y ; CPU:$CBEF PRG:0BEF 99 1B 04 - jsr RequestCollisionSound ; CPU:$CBF2 PRG:0BF2 20 33 CC - jsr AdjustPlayerVerticalState ; CPU:$CBF5 PRG:0BF5 20 BB EB - bne TestBonusObjectPlayerOverlap_Block_2 ; CPU:$CBF8 PRG:0BF8 D0 0F + lda a:PlayerPosX,y ; CPU:$CBC1 PRG:0BC1 B9 91 00 + clc ; CPU:$CBC4 PRG:0BC4 18 + adc #$08 ; CPU:$CBC5 PRG:0BC5 69 08 + sec ; CPU:$CBC7 PRG:0BC7 38 + sbc BonusObjectPosX,x ; CPU:$CBC8 PRG:0BC8 FD D2 05 + sta CollisionDeltaX ; CPU:$CBCB PRG:0BCB 85 12 + jsr AbsoluteDifference ; CPU:$CBCD PRG:0BCD 20 8E F0 + cmp #$12 ; CPU:$CBD0 PRG:0BD0 C9 12 + bcs TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBD2 PRG:0BD2 B0 5B + lda a:PlayerPosY,y ; CPU:$CBD4 PRG:0BD4 B9 9A 00 + clc ; CPU:$CBD7 PRG:0BD7 18 + adc #$0C ; CPU:$CBD8 PRG:0BD8 69 0C + sec ; CPU:$CBDA PRG:0BDA 38 + sbc BonusObjectPosY,x ; CPU:$CBDB PRG:0BDB FD DC 05 + sta CollisionDeltaY ; CPU:$CBDE PRG:0BDE 85 13 + jsr AbsoluteDifference ; CPU:$CBE0 PRG:0BE0 20 8E F0 + cmp #$12 ; CPU:$CBE3 PRG:0BE3 C9 12 + bcs TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CBE5 PRG:0BE5 B0 48 + lda CollisionDeltaX ; CPU:$CBE7 PRG:0BE7 A5 12 + bmi TestBonusObjectPlayerOverlap_Block_1 ; CPU:$CBE9 PRG:0BE9 30 11 + cmp #$03 ; CPU:$CBEB PRG:0BEB C9 03 + bcc TestBonusObjectPlayerOverlap_Block_2 ; CPU:$CBED PRG:0BED 90 1C + lda #$02 ; CPU:$CBEF PRG:0BEF A9 02 + sta PlayerHorizontalImpulse,y ; CPU:$CBF1 PRG:0BF1 99 1B 04 + jsr RequestCollisionSound ; CPU:$CBF4 PRG:0BF4 20 33 CC + jsr AdjustPlayerVerticalState ; CPU:$CBF7 PRG:0BF7 20 BB EB + bne TestBonusObjectPlayerOverlap_Block_2 ; CPU:$CBFA PRG:0BFA D0 0F TestBonusObjectPlayerOverlap_Block_1: - cmp #$FD ; CPU:$CBFA PRG:0BFA C9 FD - bcs TestBonusObjectPlayerOverlap_Block_2 ; CPU:$CBFC PRG:0BFC B0 0B - lda #$FE ; CPU:$CBFE PRG:0BFE A9 FE - sta PlayerHorizontalImpulse,y ; CPU:$CC00 PRG:0C00 99 1B 04 - jsr AdjustPlayerVerticalState ; CPU:$CC03 PRG:0C03 20 BB EB - jsr RequestCollisionSound ; CPU:$CC06 PRG:0C06 20 33 CC + cmp #$FD ; CPU:$CBFC PRG:0BFC C9 FD + bcs TestBonusObjectPlayerOverlap_Block_2 ; CPU:$CBFE PRG:0BFE B0 0B + lda #$FE ; CPU:$CC00 PRG:0C00 A9 FE + sta PlayerHorizontalImpulse,y ; CPU:$CC02 PRG:0C02 99 1B 04 + jsr AdjustPlayerVerticalState ; CPU:$CC05 PRG:0C05 20 BB EB + jsr RequestCollisionSound ; CPU:$CC08 PRG:0C08 20 33 CC TestBonusObjectPlayerOverlap_Block_2: - lda CollisionDeltaY ; CPU:$CC09 PRG:0C09 A5 13 - bmi TestBonusObjectPlayerOverlap_Block_3 ; CPU:$CC0B PRG:0C0B 30 11 - cmp #$03 ; CPU:$CC0D PRG:0C0D C9 03 - bcc TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CC0F PRG:0C0F 90 1C - lda #$02 ; CPU:$CC11 PRG:0C11 A9 02 - sta PlayerVerticalImpulse,y ; CPU:$CC13 PRG:0C13 99 2D 04 - jsr AdjustPlayerHorizontalState ; CPU:$CC16 PRG:0C16 20 B2 EB - jsr RequestCollisionSound ; CPU:$CC19 PRG:0C19 20 33 CC - bne TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CC1C PRG:0C1C D0 0F + lda CollisionDeltaY ; CPU:$CC0B PRG:0C0B A5 13 + bmi TestBonusObjectPlayerOverlap_Block_3 ; CPU:$CC0D PRG:0C0D 30 11 + cmp #$03 ; CPU:$CC0F PRG:0C0F C9 03 + bcc TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CC11 PRG:0C11 90 1C + lda #$02 ; CPU:$CC13 PRG:0C13 A9 02 + sta PlayerVerticalImpulse,y ; CPU:$CC15 PRG:0C15 99 2D 04 + jsr AdjustPlayerHorizontalState; CPU:$CC18 PRG:0C18 20 B2 EB + jsr RequestCollisionSound ; CPU:$CC1B PRG:0C1B 20 33 CC + bne TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CC1E PRG:0C1E D0 0F TestBonusObjectPlayerOverlap_Block_3: - cmp #$FD ; CPU:$CC1E PRG:0C1E C9 FD - bcs TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CC20 PRG:0C20 B0 0B - lda #$FE ; CPU:$CC22 PRG:0C22 A9 FE - sta PlayerVerticalImpulse,y ; CPU:$CC24 PRG:0C24 99 2D 04 - jsr AdjustPlayerHorizontalState ; CPU:$CC27 PRG:0C27 20 B2 EB - jsr RequestCollisionSound ; CPU:$CC2A PRG:0C2A 20 33 CC + cmp #$FD ; CPU:$CC20 PRG:0C20 C9 FD + bcs TestBonusObjectPlayerOverlap_Block_4 ; CPU:$CC22 PRG:0C22 B0 0B + lda #$FE ; CPU:$CC24 PRG:0C24 A9 FE + sta PlayerVerticalImpulse,y ; CPU:$CC26 PRG:0C26 99 2D 04 + jsr AdjustPlayerHorizontalState; CPU:$CC29 PRG:0C29 20 B2 EB + jsr RequestCollisionSound ; CPU:$CC2C PRG:0C2C 20 33 CC TestBonusObjectPlayerOverlap_Block_4: - dey ; CPU:$CC2D PRG:0C2D 88 - bpl TestBonusObjectPlayerOverlap ; CPU:$CC2E PRG:0C2E 10 80 - rts ; CPU:$CC30 PRG:0C30 60 + dey ; CPU:$CC2F PRG:0C2F 88 + bpl TestBonusObjectPlayerOverlap ; CPU:$CC30 PRG:0C30 10 80 + rts ; CPU:$CC32 PRG:0C32 60 ;=============================================================================== ; RequestCollisionSound ; @@ -2655,15 +2885,18 @@ TestBonusObjectPlayerOverlap_Block_4: ; Returns: ; Sound request flag updated. ; +; Clobbers: +; A, the N and Z flags, SoundRequestFlags1. +; ; PRG offsets: $0C33-$0C39 ; CPU range: $CC33-$CC39 ;=============================================================================== RequestCollisionSound: - lda SoundRequestFlags1 ; CPU:$CC31 PRG:0C31 A5 F1 - ora #$02 ; CPU:$CC33 PRG:0C33 09 02 - sta SoundRequestFlags1 ; CPU:$CC35 PRG:0C35 85 F1 - rts ; CPU:$CC37 PRG:0C37 60 + lda SoundRequestFlags1 ; CPU:$CC33 PRG:0C33 A5 F1 + ora #$02 ; CPU:$CC35 PRG:0C35 09 02 + sta SoundRequestFlags1 ; CPU:$CC37 PRG:0C37 85 F1 + rts ; CPU:$CC39 PRG:0C39 60 ;=============================================================================== ; TestBonusObjectCollection ; @@ -2679,77 +2912,84 @@ RequestCollisionSound: ; Returns: ; Bonus object phase/timer may be changed. ; +; Clobbers: +; A and Y, the N, Z, C and V flags, Temp12, ReverseRecordIndex, +; PlayerLifecycleState, BonusEffectCounter, SoundRequestFlags1, $0409, +; $0412, PlayerHorizontalImpulse, $0424, PlayerVerticalImpulse, $043F, +; PlayerStateTimer, $0463, $046C, BonusObjectTimer, +; BonusObjectPhaseTimer. +; ; PRG offsets: $0C3A-$0CBE ; CPU range: $CC3A-$CCBE ;=============================================================================== TestBonusObjectCollection: - lda a:PlayerSlotState,y ; CPU:$CC38 PRG:0C38 B9 88 00 - bmi TestBonusObjectCollection_Block_2 ; CPU:$CC3B PRG:0C3B 30 79 - beq TestBonusObjectCollection_Block_2 ; CPU:$CC3D PRG:0C3D F0 77 - cpy #$02 ; CPU:$CC3F PRG:0C3F C0 02 - bcc TestBonusObjectCollection_Block ; CPU:$CC41 PRG:0C41 90 2E - lda BonusObjectPhase,x ; CPU:$CC43 PRG:0C43 BD FA 05 - cmp #$03 ; CPU:$CC46 PRG:0C46 C9 03 - bne TestBonusObjectCollection_Block ; CPU:$CC48 PRG:0C48 D0 27 - lda BonusObjectPosX,x ; CPU:$CC4A PRG:0C4A BD D2 05 - sec ; CPU:$CC4D PRG:0C4D 38 - sbc #$0A ; CPU:$CC4E PRG:0C4E E9 0A - cmp a:PlayerPosX,y ; CPU:$CC50 PRG:0C50 D9 91 00 - bcs TestBonusObjectCollection_Block ; CPU:$CC53 PRG:0C53 B0 1C - adc #$04 ; CPU:$CC55 PRG:0C55 69 04 - cmp a:PlayerPosX,y ; CPU:$CC57 PRG:0C57 D9 91 00 - bcc TestBonusObjectCollection_Block ; CPU:$CC5A PRG:0C5A 90 15 - lda BonusObjectPosY,x ; CPU:$CC5C PRG:0C5C BD DC 05 - sec ; CPU:$CC5F PRG:0C5F 38 - sbc #$1C ; CPU:$CC60 PRG:0C60 E9 1C - cmp a:PlayerPosY,y ; CPU:$CC62 PRG:0C62 D9 9A 00 - bcs TestBonusObjectCollection_Block ; CPU:$CC65 PRG:0C65 B0 0A - adc #$04 ; CPU:$CC67 PRG:0C67 69 04 - cmp a:PlayerPosY,y ; CPU:$CC69 PRG:0C69 D9 9A 00 - bcc TestBonusObjectCollection_Block ; CPU:$CC6C PRG:0C6C 90 03 - jsr TriggerBonusObjectEffect ; CPU:$CC6E PRG:0C6E 20 BF CC + lda a:PlayerSlotState,y ; CPU:$CC3A PRG:0C3A B9 88 00 + bmi TestBonusObjectCollection_Block_2 ; CPU:$CC3D PRG:0C3D 30 79 + beq TestBonusObjectCollection_Block_2 ; CPU:$CC3F PRG:0C3F F0 77 + cpy #$02 ; CPU:$CC41 PRG:0C41 C0 02 + bcc TestBonusObjectCollection_Block ; CPU:$CC43 PRG:0C43 90 2E + lda BonusObjectPhase,x ; CPU:$CC45 PRG:0C45 BD FA 05 + cmp #$03 ; CPU:$CC48 PRG:0C48 C9 03 + bne TestBonusObjectCollection_Block ; CPU:$CC4A PRG:0C4A D0 27 + lda BonusObjectPosX,x ; CPU:$CC4C PRG:0C4C BD D2 05 + sec ; CPU:$CC4F PRG:0C4F 38 + sbc #$0A ; CPU:$CC50 PRG:0C50 E9 0A + cmp a:PlayerPosX,y ; CPU:$CC52 PRG:0C52 D9 91 00 + bcs TestBonusObjectCollection_Block ; CPU:$CC55 PRG:0C55 B0 1C + adc #$04 ; CPU:$CC57 PRG:0C57 69 04 + cmp a:PlayerPosX,y ; CPU:$CC59 PRG:0C59 D9 91 00 + bcc TestBonusObjectCollection_Block ; CPU:$CC5C PRG:0C5C 90 15 + lda BonusObjectPosY,x ; CPU:$CC5E PRG:0C5E BD DC 05 + sec ; CPU:$CC61 PRG:0C61 38 + sbc #$1C ; CPU:$CC62 PRG:0C62 E9 1C + cmp a:PlayerPosY,y ; CPU:$CC64 PRG:0C64 D9 9A 00 + bcs TestBonusObjectCollection_Block ; CPU:$CC67 PRG:0C67 B0 0A + adc #$04 ; CPU:$CC69 PRG:0C69 69 04 + cmp a:PlayerPosY,y ; CPU:$CC6B PRG:0C6B D9 9A 00 + bcc TestBonusObjectCollection_Block ; CPU:$CC6E PRG:0C6E 90 03 + jsr TriggerBonusObjectEffect ; CPU:$CC70 PRG:0C70 20 BF CC TestBonusObjectCollection_Block: - lda a:PlayerPosX,y ; CPU:$CC71 PRG:0C71 B9 91 00 - clc ; CPU:$CC74 PRG:0C74 18 - adc #$08 ; CPU:$CC75 PRG:0C75 69 08 - sec ; CPU:$CC77 PRG:0C77 38 - sbc BonusObjectPosX,x ; CPU:$CC78 PRG:0C78 FD D2 05 - jsr AbsoluteDifference ; CPU:$CC7B PRG:0C7B 20 8E F0 - sta CollisionDeltaX ; CPU:$CC7E PRG:0C7E 85 12 - lda a:PlayerPosY,y ; CPU:$CC80 PRG:0C80 B9 9A 00 - clc ; CPU:$CC83 PRG:0C83 18 - adc #$0C ; CPU:$CC84 PRG:0C84 69 0C - sec ; CPU:$CC86 PRG:0C86 38 - sbc BonusObjectPosY,x ; CPU:$CC87 PRG:0C87 FD DC 05 - jsr AbsoluteDifference ; CPU:$CC8A PRG:0C8A 20 8E F0 - sta CollisionDeltaY ; CPU:$CC8D PRG:0C8D 85 13 - lda BonusObjectPhase,x ; CPU:$CC8F PRG:0C8F BD FA 05 - cmp #$03 ; CPU:$CC92 PRG:0C92 C9 03 - beq TestBonusObjectCollection_Block_1 ; CPU:$CC94 PRG:0C94 F0 0A - lda CollisionDeltaX ; CPU:$CC96 PRG:0C96 A5 12 - pha ; CPU:$CC98 PRG:0C98 48 - lda CollisionDeltaY ; CPU:$CC99 PRG:0C99 A5 13 - sta CollisionDeltaX ; CPU:$CC9B PRG:0C9B 85 12 - pla ; CPU:$CC9D PRG:0C9D 68 - sta CollisionDeltaY ; CPU:$CC9E PRG:0C9E 85 13 + lda a:PlayerPosX,y ; CPU:$CC73 PRG:0C73 B9 91 00 + clc ; CPU:$CC76 PRG:0C76 18 + adc #$08 ; CPU:$CC77 PRG:0C77 69 08 + sec ; CPU:$CC79 PRG:0C79 38 + sbc BonusObjectPosX,x ; CPU:$CC7A PRG:0C7A FD D2 05 + jsr AbsoluteDifference ; CPU:$CC7D PRG:0C7D 20 8E F0 + sta CollisionDeltaX ; CPU:$CC80 PRG:0C80 85 12 + lda a:PlayerPosY,y ; CPU:$CC82 PRG:0C82 B9 9A 00 + clc ; CPU:$CC85 PRG:0C85 18 + adc #$0C ; CPU:$CC86 PRG:0C86 69 0C + sec ; CPU:$CC88 PRG:0C88 38 + sbc BonusObjectPosY,x ; CPU:$CC89 PRG:0C89 FD DC 05 + jsr AbsoluteDifference ; CPU:$CC8C PRG:0C8C 20 8E F0 + sta CollisionDeltaY ; CPU:$CC8F PRG:0C8F 85 13 + lda BonusObjectPhase,x ; CPU:$CC91 PRG:0C91 BD FA 05 + cmp #$03 ; CPU:$CC94 PRG:0C94 C9 03 + beq TestBonusObjectCollection_Block_1 ; CPU:$CC96 PRG:0C96 F0 0A + lda CollisionDeltaX ; CPU:$CC98 PRG:0C98 A5 12 + pha ; CPU:$CC9A PRG:0C9A 48 + lda CollisionDeltaY ; CPU:$CC9B PRG:0C9B A5 13 + sta CollisionDeltaX ; CPU:$CC9D PRG:0C9D 85 12 + pla ; CPU:$CC9F PRG:0C9F 68 + sta CollisionDeltaY ; CPU:$CCA0 PRG:0CA0 85 13 TestBonusObjectCollection_Block_1: - lda CollisionDeltaX ; CPU:$CCA0 PRG:0CA0 A5 12 - cmp #$14 ; CPU:$CCA2 PRG:0CA2 C9 14 - bcs TestBonusObjectCollection_Block_2 ; CPU:$CCA4 PRG:0CA4 B0 10 - lda CollisionDeltaY ; CPU:$CCA6 PRG:0CA6 A5 13 - cmp #$0B ; CPU:$CCA8 PRG:0CA8 C9 0B - bcs TestBonusObjectCollection_Block_2 ; CPU:$CCAA PRG:0CAA B0 0A - lda #$01 ; CPU:$CCAC PRG:0CAC A9 01 - sta BonusObjectTimer,x ; CPU:$CCAE PRG:0CAE 9D 04 06 - lda #$32 ; CPU:$CCB1 PRG:0CB1 A9 32 - sta BonusObjectPhaseTimer,x ; CPU:$CCB3 PRG:0CB3 9D 0E 06 + lda CollisionDeltaX ; CPU:$CCA2 PRG:0CA2 A5 12 + cmp #$14 ; CPU:$CCA4 PRG:0CA4 C9 14 + bcs TestBonusObjectCollection_Block_2 ; CPU:$CCA6 PRG:0CA6 B0 10 + lda CollisionDeltaY ; CPU:$CCA8 PRG:0CA8 A5 13 + cmp #$0B ; CPU:$CCAA PRG:0CAA C9 0B + bcs TestBonusObjectCollection_Block_2 ; CPU:$CCAC PRG:0CAC B0 0A + lda #$01 ; CPU:$CCAE PRG:0CAE A9 01 + sta BonusObjectTimer,x ; CPU:$CCB0 PRG:0CB0 9D 04 06 + lda #$32 ; CPU:$CCB3 PRG:0CB3 A9 32 + sta BonusObjectPhaseTimer,x ; CPU:$CCB5 PRG:0CB5 9D 0E 06 TestBonusObjectCollection_Block_2: - dey ; CPU:$CCB6 PRG:0CB6 88 - bmi TestBonusObjectCollection_Block_3 ; CPU:$CCB7 PRG:0CB7 30 03 - jmp TestBonusObjectCollection ; CPU:$CCB9 PRG:0CB9 4C 3A CC + dey ; CPU:$CCB8 PRG:0CB8 88 + bmi TestBonusObjectCollection_Block_3 ; CPU:$CCB9 PRG:0CB9 30 03 + jmp TestBonusObjectCollection ; CPU:$CCBB PRG:0CBB 4C 3A CC TestBonusObjectCollection_Block_3: - rts ; CPU:$CCBC PRG:0CBC 60 + rts ; CPU:$CCBE PRG:0CBE 60 ;=============================================================================== ; TriggerBonusObjectEffect ; @@ -2765,20 +3005,25 @@ TestBonusObjectCollection_Block_3: ; Returns: ; Bonus effect counter and player state updated. ; +; Clobbers: +; A, the N, Z, C and V flags, PlayerLifecycleState, BonusEffectCounter, +; SoundRequestFlags1, $0409, $0412, PlayerHorizontalImpulse, $0424, +; PlayerVerticalImpulse, $043F, PlayerStateTimer, $0463, $046C. +; ; PRG offsets: $0CBF-$0CCA ; CPU range: $CCBF-$CCCA ;=============================================================================== TriggerBonusObjectEffect: - txa ; CPU:$CCBD PRG:0CBD 8A - pha ; CPU:$CCBE PRG:0CBE 48 - tya ; CPU:$CCBF PRG:0CBF 98 - tax ; CPU:$CCC0 PRG:0CC0 AA - inc BonusEffectCounter ; CPU:$CCC1 PRG:0CC1 E6 CB - jsr ApplyBonusEffect ; CPU:$CCC3 PRG:0CC3 20 83 E9 - pla ; CPU:$CCC6 PRG:0CC6 68 - tax ; CPU:$CCC7 PRG:0CC7 AA - rts ; CPU:$CCC8 PRG:0CC8 60 + txa ; CPU:$CCBF PRG:0CBF 8A + pha ; CPU:$CCC0 PRG:0CC0 48 + tya ; CPU:$CCC1 PRG:0CC1 98 + tax ; CPU:$CCC2 PRG:0CC2 AA + inc BonusEffectCounter ; CPU:$CCC3 PRG:0CC3 E6 CB + jsr ApplyBonusEffect ; CPU:$CCC5 PRG:0CC5 20 83 E9 + pla ; CPU:$CCC8 PRG:0CC8 68 + tax ; CPU:$CCC9 PRG:0CC9 AA + rts ; CPU:$CCCA PRG:0CCA 60 ;=============================================================================== ; DrawBonusObjectHud ; @@ -2794,38 +3039,44 @@ TriggerBonusObjectEffect: ; Returns: ; Three HUD command groups appended. ; +; Clobbers: +; A and Y, the N, Z, C and V flags, Temp12, PpuSourcePtrLo, +; PpuSourcePtrHi, PpuBufferWriteOffset, RoundHudCommandAddressHi, +; RoundHudCommandAddressLo, RoundHudCommandLength, RoundHudTile, +; HudCommandTile1, HudCommandTile2, $0300. +; ; PRG offsets: $0CCB-$0D0E ; CPU range: $CCCB-$CD0E ;=============================================================================== DrawBonusObjectHud: - lda BonusHudAddressHi,x ; CPU:$CCC9 PRG:0CC9 BD F0 05 - sta HudCommandAddressHi ; CPU:$CCCC PRG:0CCC 85 57 - lda BonusHudAddressLo,x ; CPU:$CCCE PRG:0CCE BD E6 05 - sta HudCommandAddressLo ; CPU:$CCD1 PRG:0CD1 85 58 - lda #$03 ; CPU:$CCD3 PRG:0CD3 A9 03 - sta HudCommandLength ; CPU:$CCD5 PRG:0CD5 85 59 - ldy BonusObjectPhase,x ; CPU:$CCD7 PRG:0CD7 BC FA 05 - lda BonusHudRow0Tile0Table,y ; CPU:$CCDA PRG:0CDA B9 26 CD - sta HudCommandTile0 ; CPU:$CCDD PRG:0CDD 85 5A - lda BonusHudRow0Tile1Table,y ; CPU:$CCDF PRG:0CDF B9 2A CD - sta HudCommandTile1 ; CPU:$CCE2 PRG:0CE2 85 5B - lda BonusHudRow0Tile2Table,y ; CPU:$CCE4 PRG:0CE4 B9 2E CD - sta HudCommandTile2 ; CPU:$CCE7 PRG:0CE7 85 5C - jsr AdvanceHudCommandAddress ; CPU:$CCE9 PRG:0CE9 20 0F CD - lda BonusHudRow1Tile0Table,y ; CPU:$CCEC PRG:0CEC B9 32 CD - sta HudCommandTile0 ; CPU:$CCEF PRG:0CEF 85 5A - lda BonusHudRow1Tile1Table,y ; CPU:$CCF1 PRG:0CF1 B9 36 CD - sta HudCommandTile1 ; CPU:$CCF4 PRG:0CF4 85 5B - lda BonusHudRow1Tile2Table,y ; CPU:$CCF6 PRG:0CF6 B9 3A CD - sta HudCommandTile2 ; CPU:$CCF9 PRG:0CF9 85 5C - jsr AdvanceHudCommandAddress ; CPU:$CCFB PRG:0CFB 20 0F CD - lda BonusHudRow2Tile0Table,y ; CPU:$CCFE PRG:0CFE B9 3E CD - sta HudCommandTile0 ; CPU:$CD01 PRG:0D01 85 5A - lda BonusHudRow2Tile1Table,y ; CPU:$CD03 PRG:0D03 B9 42 CD - sta HudCommandTile1 ; CPU:$CD06 PRG:0D06 85 5B - lda BonusHudRow2Tile2Table,y ; CPU:$CD08 PRG:0D08 B9 46 CD - sta HudCommandTile2 ; CPU:$CD0B PRG:0D0B 85 5C + lda BonusHudAddressHi,x ; CPU:$CCCB PRG:0CCB BD F0 05 + sta HudCommandAddressHi ; CPU:$CCCE PRG:0CCE 85 57 + lda BonusHudAddressLo,x ; CPU:$CCD0 PRG:0CD0 BD E6 05 + sta HudCommandAddressLo ; CPU:$CCD3 PRG:0CD3 85 58 + lda #$03 ; CPU:$CCD5 PRG:0CD5 A9 03 + sta HudCommandLength ; CPU:$CCD7 PRG:0CD7 85 59 + ldy BonusObjectPhase,x ; CPU:$CCD9 PRG:0CD9 BC FA 05 + lda BonusHudRow0Tile0Table,y ; CPU:$CCDC PRG:0CDC B9 26 CD + sta HudCommandTile0 ; CPU:$CCDF PRG:0CDF 85 5A + lda BonusHudRow0Tile1Table,y ; CPU:$CCE1 PRG:0CE1 B9 2A CD + sta HudCommandTile1 ; CPU:$CCE4 PRG:0CE4 85 5B + lda BonusHudRow0Tile2Table,y ; CPU:$CCE6 PRG:0CE6 B9 2E CD + sta HudCommandTile2 ; CPU:$CCE9 PRG:0CE9 85 5C + jsr AdvanceHudCommandAddress ; CPU:$CCEB PRG:0CEB 20 0F CD + lda BonusHudRow1Tile0Table,y ; CPU:$CCEE PRG:0CEE B9 32 CD + sta HudCommandTile0 ; CPU:$CCF1 PRG:0CF1 85 5A + lda BonusHudRow1Tile1Table,y ; CPU:$CCF3 PRG:0CF3 B9 36 CD + sta HudCommandTile1 ; CPU:$CCF6 PRG:0CF6 85 5B + lda BonusHudRow1Tile2Table,y ; CPU:$CCF8 PRG:0CF8 B9 3A CD + sta HudCommandTile2 ; CPU:$CCFB PRG:0CFB 85 5C + jsr AdvanceHudCommandAddress ; CPU:$CCFD PRG:0CFD 20 0F CD + lda BonusHudRow2Tile0Table,y ; CPU:$CD00 PRG:0D00 B9 3E CD + sta HudCommandTile0 ; CPU:$CD03 PRG:0D03 85 5A + lda BonusHudRow2Tile1Table,y ; CPU:$CD05 PRG:0D05 B9 42 CD + sta HudCommandTile1 ; CPU:$CD08 PRG:0D08 85 5B + lda BonusHudRow2Tile2Table,y ; CPU:$CD0A PRG:0D0A B9 46 CD + sta HudCommandTile2 ; CPU:$CD0D PRG:0D0D 85 5C ;=============================================================================== ; AdvanceHudCommandAddress ; @@ -2841,26 +3092,31 @@ DrawBonusObjectHud: ; Returns: ; HUD command appended and destination advanced. ; +; Clobbers: +; A, the N, Z, C and V flags, Temp12, PpuSourcePtrLo, PpuSourcePtrHi, +; PpuBufferWriteOffset, RoundHudCommandAddressHi, +; RoundHudCommandAddressLo, $0300. +; ; PRG offsets: $0D0F-$0D25 ; CPU range: $CD0F-$CD25 ;=============================================================================== AdvanceHudCommandAddress: - tya ; CPU:$CD0D PRG:0D0D 98 - pha ; CPU:$CD0E PRG:0D0E 48 - lda #$57 ; CPU:$CD0F PRG:0D0F A9 57 - ldy #$00 ; CPU:$CD11 PRG:0D11 A0 00 - jsr $C131 ; CPU:$CD13 PRG:0D13 20 31 C1 - pla ; CPU:$CD16 PRG:0D16 68 - tay ; CPU:$CD17 PRG:0D17 A8 - lda HudCommandAddressLo ; CPU:$CD18 PRG:0D18 A5 58 - clc ; CPU:$CD1A PRG:0D1A 18 - adc #$20 ; CPU:$CD1B PRG:0D1B 69 20 - sta HudCommandAddressLo ; CPU:$CD1D PRG:0D1D 85 58 - bcc AdvanceHudCommandAddress_Block ; CPU:$CD1F PRG:0D1F 90 02 - inc HudCommandAddressHi ; CPU:$CD21 PRG:0D21 E6 57 + tya ; CPU:$CD0F PRG:0D0F 98 + pha ; CPU:$CD10 PRG:0D10 48 + lda #$57 ; CPU:$CD11 PRG:0D11 A9 57 + ldy #$00 ; CPU:$CD13 PRG:0D13 A0 00 + jsr $C131 ; CPU:$CD15 PRG:0D15 20 31 C1 + pla ; CPU:$CD18 PRG:0D18 68 + tay ; CPU:$CD19 PRG:0D19 A8 + lda HudCommandAddressLo ; CPU:$CD1A PRG:0D1A A5 58 + clc ; CPU:$CD1C PRG:0D1C 18 + adc #$20 ; CPU:$CD1D PRG:0D1D 69 20 + sta HudCommandAddressLo ; CPU:$CD1F PRG:0D1F 85 58 + bcc AdvanceHudCommandAddress_Block ; CPU:$CD21 PRG:0D21 90 02 + inc HudCommandAddressHi ; CPU:$CD23 PRG:0D23 E6 57 AdvanceHudCommandAddress_Block: - rts ; CPU:$CD23 PRG:0D23 60 + rts ; CPU:$CD25 PRG:0D25 60 ; Bonus-object HUD tile triplets ; @@ -2873,25 +3129,25 @@ AdvanceHudCommandAddress_Block: ;=============================================================================== BonusHudRow0Tile0Table: - .byte $A1, $24, $24, $24 ; CPU:$CD24 PRG:0D24 A1 24 24 24 + .byte $A1, $24, $24, $24 ; CPU:$CD26 PRG:0D26 A1 24 24 24 BonusHudRow0Tile1Table: - .byte $A2, $9E, $AB, $24 ; CPU:$CD28 PRG:0D28 A2 9E AB 24 + .byte $A2, $9E, $AB, $24 ; CPU:$CD2A PRG:0D2A A2 9E AB 24 BonusHudRow0Tile2Table: - .byte $24, $24, $AC, $24 ; CPU:$CD2C PRG:0D2C 24 24 AC 24 + .byte $24, $24, $AC, $24 ; CPU:$CD2E PRG:0D2E 24 24 AC 24 BonusHudRow1Tile0Table: - .byte $A3, $24, $AD, $A8 ; CPU:$CD30 PRG:0D30 A3 24 AD A8 + .byte $A3, $24, $AD, $A8 ; CPU:$CD32 PRG:0D32 A3 24 AD A8 BonusHudRow1Tile1Table: - .byte $A4, $9F, $AE, $A9 ; CPU:$CD34 PRG:0D34 A4 9F AE A9 + .byte $A4, $9F, $AE, $A9 ; CPU:$CD36 PRG:0D36 A4 9F AE A9 BonusHudRow1Tile2Table: - .byte $A5, $24, $AF, $AA ; CPU:$CD38 PRG:0D38 A5 24 AF AA + .byte $A5, $24, $AF, $AA ; CPU:$CD3A PRG:0D3A A5 24 AF AA BonusHudRow2Tile0Table: - .byte $24, $24, $B0, $24 ; CPU:$CD3C PRG:0D3C 24 24 B0 24 + .byte $24, $24, $B0, $24 ; CPU:$CD3E PRG:0D3E 24 24 B0 24 BonusHudRow2Tile1Table: - .byte $A6, $A0, $B1, $24 ; CPU:$CD40 PRG:0D40 A6 A0 B1 24 + .byte $A6, $A0, $B1, $24 ; CPU:$CD42 PRG:0D42 A6 A0 B1 24 BonusHudRow2Tile2Table: - .byte $A7, $24, $24, $24 ; CPU:$CD44 PRG:0D44 A7 24 24 24 + .byte $A7, $24, $24, $24 ; CPU:$CD46 PRG:0D46 A7 24 24 24 ;=============================================================================== ; InitializeParticleSlots @@ -2908,20 +3164,23 @@ BonusHudRow2Tile2Table: ; Returns: ; Particle slots 0-9 are inactive and hidden. ; +; Clobbers: +; A and X, the N and Z flags, EffectObjectState, EffectObjectPosY. +; ; PRG offsets: $0D4A-$0D59 ; CPU range: $CD4A-$CD59 ;=============================================================================== InitializeParticleSlots: - ldx #$09 ; CPU:$CD48 PRG:0D48 A2 09 + ldx #$09 ; CPU:$CD4A PRG:0D4A A2 09 InitializeParticleSlots_Block: - lda #$FF ; CPU:$CD4A PRG:0D4A A9 FF - sta ParticleState,x ; CPU:$CD4C PRG:0D4C 9D 5D 05 - lda #$F0 ; CPU:$CD4F PRG:0D4F A9 F0 - sta ParticlePosY,x ; CPU:$CD51 PRG:0D51 9D 7B 05 - dex ; CPU:$CD54 PRG:0D54 CA - bpl InitializeParticleSlots_Block ; CPU:$CD55 PRG:0D55 10 F3 - rts ; CPU:$CD57 PRG:0D57 60 + lda #$FF ; CPU:$CD4C PRG:0D4C A9 FF + sta ParticleState,x ; CPU:$CD4E PRG:0D4E 9D 5D 05 + lda #$F0 ; CPU:$CD51 PRG:0D51 A9 F0 + sta ParticlePosY,x ; CPU:$CD53 PRG:0D53 9D 7B 05 + dex ; CPU:$CD56 PRG:0D56 CA + bpl InitializeParticleSlots_Block ; CPU:$CD57 PRG:0D57 10 F3 + rts ; CPU:$CD59 PRG:0D59 60 ;=============================================================================== ; SpawnTimedParticle ; @@ -2937,51 +3196,58 @@ InitializeParticleSlots_Block: ; Returns: ; One particle may be activated; spawn counters are updated. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, RandomState, $1C, +; EffectObjectState, EffectObjectPosX, ParticlePosXFrac, +; EffectObjectPosY, ParticlePosYFrac, ParticleVelocityXHi, +; ParticleVelocityXLo, ParticleVelocityYLo, ParticleVelocityYHi, +; ParticleSpawnRemaining, ParticleSpawnCountdown. +; ; PRG offsets: $0D5A-$0DA9 ; CPU range: $CD5A-$CDA9 ;=============================================================================== SpawnTimedParticle: - dec ParticleSpawnCountdown ; CPU:$CD58 PRG:0D58 CE CC 05 - beq SpawnTimedParticle_Block ; CPU:$CD5B PRG:0D5B F0 01 - rts ; CPU:$CD5D PRG:0D5D 60 + dec ParticleSpawnCountdown ; CPU:$CD5A PRG:0D5A CE CC 05 + beq SpawnTimedParticle_Block ; CPU:$CD5D PRG:0D5D F0 01 + rts ; CPU:$CD5F PRG:0D5F 60 SpawnTimedParticle_Block: - lda RandomState ; CPU:$CD5E PRG:0D5E A5 1B - and #$3F ; CPU:$CD60 PRG:0D60 29 3F - adc #$28 ; CPU:$CD62 PRG:0D62 69 28 - sta ParticleSpawnCountdown ; CPU:$CD64 PRG:0D64 8D CC 05 - ldx #$09 ; CPU:$CD67 PRG:0D67 A2 09 + lda RandomState ; CPU:$CD60 PRG:0D60 A5 1B + and #$3F ; CPU:$CD62 PRG:0D62 29 3F + adc #$28 ; CPU:$CD64 PRG:0D64 69 28 + sta ParticleSpawnCountdown ; CPU:$CD66 PRG:0D66 8D CC 05 + ldx #$09 ; CPU:$CD69 PRG:0D69 A2 09 SpawnTimedParticle_Block_1: - lda ParticleState,x ; CPU:$CD69 PRG:0D69 BD 5D 05 - bmi SpawnTimedParticle_Block_2 ; CPU:$CD6C PRG:0D6C 30 04 - dex ; CPU:$CD6E PRG:0D6E CA - bpl SpawnTimedParticle_Block_1 ; CPU:$CD6F PRG:0D6F 10 F8 - rts ; CPU:$CD71 PRG:0D71 60 + lda ParticleState,x ; CPU:$CD6B PRG:0D6B BD 5D 05 + bmi SpawnTimedParticle_Block_2 ; CPU:$CD6E PRG:0D6E 30 04 + dex ; CPU:$CD70 PRG:0D70 CA + bpl SpawnTimedParticle_Block_1 ; CPU:$CD71 PRG:0D71 10 F8 + rts ; CPU:$CD73 PRG:0D73 60 SpawnTimedParticle_Block_2: - lda #$00 ; CPU:$CD72 PRG:0D72 A9 00 - sta ParticleState,x ; CPU:$CD74 PRG:0D74 9D 5D 05 - sta ParticleVelocityXLo,x ; CPU:$CD77 PRG:0D77 9D 99 05 - sta ParticleVelocityXHi,x ; CPU:$CD7A PRG:0D7A 9D 8F 05 - lda #$80 ; CPU:$CD7D PRG:0D7D A9 80 - sta ParticlePosXFrac,x ; CPU:$CD7F PRG:0D7F 9D 71 05 - sta ParticlePosYFrac,x ; CPU:$CD82 PRG:0D82 9D 85 05 - lda #$D0 ; CPU:$CD85 PRG:0D85 A9 D0 - sta ParticlePosY,x ; CPU:$CD87 PRG:0D87 9D 7B 05 - jsr GetRandomValue ; CPU:$CD8A PRG:0D8A 20 B3 F1 - and #$03 ; CPU:$CD8D PRG:0D8D 29 03 - tay ; CPU:$CD8F PRG:0D8F A8 - lda ParticleInitialVelocityTable,y ; CPU:$CD90 PRG:0D90 B9 AE CE - sta ParticlePosX,x ; CPU:$CD93 PRG:0D93 9D 67 05 - ldy #$00 ; CPU:$CD96 PRG:0D96 A0 00 - lda RandomState ; CPU:$CD98 PRG:0D98 A5 1B - sta ParticleVelocityYLo,x ; CPU:$CD9A PRG:0D9A 9D B7 05 - bpl SpawnTimedParticle_Block_3 ; CPU:$CD9D PRG:0D9D 10 01 - dey ; CPU:$CD9F PRG:0D9F 88 + lda #$00 ; CPU:$CD74 PRG:0D74 A9 00 + sta ParticleState,x ; CPU:$CD76 PRG:0D76 9D 5D 05 + sta ParticleVelocityXLo,x ; CPU:$CD79 PRG:0D79 9D 99 05 + sta ParticleVelocityXHi,x ; CPU:$CD7C PRG:0D7C 9D 8F 05 + lda #$80 ; CPU:$CD7F PRG:0D7F A9 80 + sta ParticlePosXFrac,x ; CPU:$CD81 PRG:0D81 9D 71 05 + sta ParticlePosYFrac,x ; CPU:$CD84 PRG:0D84 9D 85 05 + lda #$D0 ; CPU:$CD87 PRG:0D87 A9 D0 + sta ParticlePosY,x ; CPU:$CD89 PRG:0D89 9D 7B 05 + jsr GetRandomValue ; CPU:$CD8C PRG:0D8C 20 B3 F1 + and #$03 ; CPU:$CD8F PRG:0D8F 29 03 + tay ; CPU:$CD91 PRG:0D91 A8 + lda ParticleInitialVelocityTable,y ; CPU:$CD92 PRG:0D92 B9 AE CE + sta ParticlePosX,x ; CPU:$CD95 PRG:0D95 9D 67 05 + ldy #$00 ; CPU:$CD98 PRG:0D98 A0 00 + lda RandomState ; CPU:$CD9A PRG:0D9A A5 1B + sta ParticleVelocityYLo,x ; CPU:$CD9C PRG:0D9C 9D B7 05 + bpl SpawnTimedParticle_Block_3 ; CPU:$CD9F PRG:0D9F 10 01 + dey ; CPU:$CDA1 PRG:0DA1 88 SpawnTimedParticle_Block_3: - tya ; CPU:$CDA0 PRG:0DA0 98 - sta ParticleVelocityYHi,x ; CPU:$CDA1 PRG:0DA1 9D C1 05 - dec ParticleSpawnRemaining ; CPU:$CDA4 PRG:0DA4 CE CB 05 - rts ; CPU:$CDA7 PRG:0DA7 60 + tya ; CPU:$CDA2 PRG:0DA2 98 + sta ParticleVelocityYHi,x ; CPU:$CDA3 PRG:0DA3 9D C1 05 + dec ParticleSpawnRemaining ; CPU:$CDA6 PRG:0DA6 CE CB 05 + rts ; CPU:$CDA9 PRG:0DA9 60 ;=============================================================================== ; UpdateParticleSystem ; @@ -2997,72 +3263,79 @@ SpawnTimedParticle_Block_3: ; Returns: ; Particle positions, states, OAM, and player interactions are updated. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, ReverseRecordIndex, +; SoundRequestFlags0, ParticleOamBase, the OAM shadow, EffectObjectState, +; EffectObjectPosX, ParticlePosXFrac, EffectObjectPosY, ParticlePosYFrac, +; ParticleVelocityXHi, ParticleVelocityXLo, ParticleVelocityYLo, +; ParticleVelocityYHi, PlayerParticleHitCount. +; ; PRG offsets: $0DAA-$0E2E ; CPU range: $CDAA-$CE2E ;=============================================================================== UpdateParticleSystem: - ldx #$09 ; CPU:$CDA8 PRG:0DA8 A2 09 + ldx #$09 ; CPU:$CDAA PRG:0DAA A2 09 UpdateParticleSystem_Load: - lda ParticleState,x ; CPU:$CDAA PRG:0DAA BD 5D 05 - bmi UpdateParticleSystem_Block_3 ; CPU:$CDAD PRG:0DAD 30 71 - beq UpdateParticleSystem_Block ; CPU:$CDAF PRG:0DAF F0 49 - lda ParticleVelocityXLo,x ; CPU:$CDB1 PRG:0DB1 BD 99 05 - sta MotionDeltaLo ; CPU:$CDB4 PRG:0DB4 85 12 - lda ParticleVelocityXHi,x ; CPU:$CDB6 PRG:0DB6 BD 8F 05 - sta MotionDeltaHi ; CPU:$CDB9 PRG:0DB9 85 13 - jsr UpdateSignedMotionAccumulator ; CPU:$CDBB PRG:0DBB 20 A6 F1 - lda ParticleVelocityYLo,x ; CPU:$CDBE PRG:0DBE BD B7 05 - clc ; CPU:$CDC1 PRG:0DC1 18 - adc MotionDeltaLo ; CPU:$CDC2 PRG:0DC2 65 12 - sta ParticleVelocityYLo,x ; CPU:$CDC4 PRG:0DC4 9D B7 05 - sta MotionDeltaLo ; CPU:$CDC7 PRG:0DC7 85 12 - lda ParticleVelocityYHi,x ; CPU:$CDC9 PRG:0DC9 BD C1 05 - adc MotionDeltaHi ; CPU:$CDCC PRG:0DCC 65 13 - sta ParticleVelocityYHi,x ; CPU:$CDCE PRG:0DCE 9D C1 05 - sta MotionDeltaHi ; CPU:$CDD1 PRG:0DD1 85 13 - jsr UpdateSignedMotionAccumulator ; CPU:$CDD3 PRG:0DD3 20 A6 F1 - lda ParticleVelocityXLo,x ; CPU:$CDD6 PRG:0DD6 BD 99 05 - sec ; CPU:$CDD9 PRG:0DD9 38 - sbc MotionDeltaLo ; CPU:$CDDA PRG:0DDA E5 12 - sta ParticleVelocityXLo,x ; CPU:$CDDC PRG:0DDC 9D 99 05 - lda ParticleVelocityXHi,x ; CPU:$CDDF PRG:0DDF BD 8F 05 - sbc MotionDeltaHi ; CPU:$CDE2 PRG:0DE2 E5 13 - sta ParticleVelocityXHi,x ; CPU:$CDE4 PRG:0DE4 9D 8F 05 - lda ParticlePosXFrac,x ; CPU:$CDE7 PRG:0DE7 BD 71 05 - clc ; CPU:$CDEA PRG:0DEA 18 - adc ParticleVelocityXLo,x ; CPU:$CDEB PRG:0DEB 7D 99 05 - sta ParticlePosXFrac,x ; CPU:$CDEE PRG:0DEE 9D 71 05 - lda ParticlePosX,x ; CPU:$CDF1 PRG:0DF1 BD 67 05 - adc ParticleVelocityXHi,x ; CPU:$CDF4 PRG:0DF4 7D 8F 05 - sta ParticlePosX,x ; CPU:$CDF7 PRG:0DF7 9D 67 05 + lda ParticleState,x ; CPU:$CDAC PRG:0DAC BD 5D 05 + bmi UpdateParticleSystem_Block_3 ; CPU:$CDAF PRG:0DAF 30 71 + beq UpdateParticleSystem_Block ; CPU:$CDB1 PRG:0DB1 F0 49 + lda ParticleVelocityXLo,x ; CPU:$CDB3 PRG:0DB3 BD 99 05 + sta MotionDeltaLo ; CPU:$CDB6 PRG:0DB6 85 12 + lda ParticleVelocityXHi,x ; CPU:$CDB8 PRG:0DB8 BD 8F 05 + sta MotionDeltaHi ; CPU:$CDBB PRG:0DBB 85 13 + jsr UpdateSignedMotionAccumulator ; CPU:$CDBD PRG:0DBD 20 A6 F1 + lda ParticleVelocityYLo,x ; CPU:$CDC0 PRG:0DC0 BD B7 05 + clc ; CPU:$CDC3 PRG:0DC3 18 + adc MotionDeltaLo ; CPU:$CDC4 PRG:0DC4 65 12 + sta ParticleVelocityYLo,x ; CPU:$CDC6 PRG:0DC6 9D B7 05 + sta MotionDeltaLo ; CPU:$CDC9 PRG:0DC9 85 12 + lda ParticleVelocityYHi,x ; CPU:$CDCB PRG:0DCB BD C1 05 + adc MotionDeltaHi ; CPU:$CDCE PRG:0DCE 65 13 + sta ParticleVelocityYHi,x ; CPU:$CDD0 PRG:0DD0 9D C1 05 + sta MotionDeltaHi ; CPU:$CDD3 PRG:0DD3 85 13 + jsr UpdateSignedMotionAccumulator ; CPU:$CDD5 PRG:0DD5 20 A6 F1 + lda ParticleVelocityXLo,x ; CPU:$CDD8 PRG:0DD8 BD 99 05 + sec ; CPU:$CDDB PRG:0DDB 38 + sbc MotionDeltaLo ; CPU:$CDDC PRG:0DDC E5 12 + sta ParticleVelocityXLo,x ; CPU:$CDDE PRG:0DDE 9D 99 05 + lda ParticleVelocityXHi,x ; CPU:$CDE1 PRG:0DE1 BD 8F 05 + sbc MotionDeltaHi ; CPU:$CDE4 PRG:0DE4 E5 13 + sta ParticleVelocityXHi,x ; CPU:$CDE6 PRG:0DE6 9D 8F 05 + lda ParticlePosXFrac,x ; CPU:$CDE9 PRG:0DE9 BD 71 05 + clc ; CPU:$CDEC PRG:0DEC 18 + adc ParticleVelocityXLo,x ; CPU:$CDED PRG:0DED 7D 99 05 + sta ParticlePosXFrac,x ; CPU:$CDF0 PRG:0DF0 9D 71 05 + lda ParticlePosX,x ; CPU:$CDF3 PRG:0DF3 BD 67 05 + adc ParticleVelocityXHi,x ; CPU:$CDF6 PRG:0DF6 7D 8F 05 + sta ParticlePosX,x ; CPU:$CDF9 PRG:0DF9 9D 67 05 UpdateParticleSystem_Block: - lda ParticlePosYFrac,x ; CPU:$CDFA PRG:0DFA BD 85 05 - sec ; CPU:$CDFD PRG:0DFD 38 - sbc ParticleScrollDelta ; CPU:$CDFE PRG:0DFE ED 5A 05 - sta ParticlePosYFrac,x ; CPU:$CE01 PRG:0E01 9D 85 05 - bcs UpdateParticleSystem_Block_1 ; CPU:$CE04 PRG:0E04 B0 03 - dec ParticlePosY,x ; CPU:$CE06 PRG:0E06 DE 7B 05 + lda ParticlePosYFrac,x ; CPU:$CDFC PRG:0DFC BD 85 05 + sec ; CPU:$CDFF PRG:0DFF 38 + sbc ParticleScrollDelta ; CPU:$CE00 PRG:0E00 ED 5A 05 + sta ParticlePosYFrac,x ; CPU:$CE03 PRG:0E03 9D 85 05 + bcs UpdateParticleSystem_Block_1 ; CPU:$CE06 PRG:0E06 B0 03 + dec ParticlePosY,x ; CPU:$CE08 PRG:0E08 DE 7B 05 UpdateParticleSystem_Block_1: - lda ParticlePosY,x ; CPU:$CE09 PRG:0E09 BD 7B 05 - cmp #$F0 ; CPU:$CE0C PRG:0E0C C9 F0 - beq UpdateParticleSystem_Block_2 ; CPU:$CE0E PRG:0E0E F0 0B - cmp #$A8 ; CPU:$CE10 PRG:0E10 C9 A8 - bcs UpdateParticleSystem_Block_3 ; CPU:$CE12 PRG:0E12 B0 0C - lda #$01 ; CPU:$CE14 PRG:0E14 A9 01 - sta ParticleState,x ; CPU:$CE16 PRG:0E16 9D 5D 05 - bne UpdateParticleSystem_Block_3 ; CPU:$CE19 PRG:0E19 D0 05 + lda ParticlePosY,x ; CPU:$CE0B PRG:0E0B BD 7B 05 + cmp #$F0 ; CPU:$CE0E PRG:0E0E C9 F0 + beq UpdateParticleSystem_Block_2 ; CPU:$CE10 PRG:0E10 F0 0B + cmp #$A8 ; CPU:$CE12 PRG:0E12 C9 A8 + bcs UpdateParticleSystem_Block_3 ; CPU:$CE14 PRG:0E14 B0 0C + lda #$01 ; CPU:$CE16 PRG:0E16 A9 01 + sta ParticleState,x ; CPU:$CE18 PRG:0E18 9D 5D 05 + bne UpdateParticleSystem_Block_3 ; CPU:$CE1B PRG:0E1B D0 05 UpdateParticleSystem_Block_2: - lda #$FF ; CPU:$CE1B PRG:0E1B A9 FF - sta ParticleState,x ; CPU:$CE1D PRG:0E1D 9D 5D 05 + lda #$FF ; CPU:$CE1D PRG:0E1D A9 FF + sta ParticleState,x ; CPU:$CE1F PRG:0E1F 9D 5D 05 UpdateParticleSystem_Block_3: - jsr DrawParticleSprites ; CPU:$CE20 PRG:0E20 20 2F CE - jsr TestParticlePlayerOverlap ; CPU:$CE23 PRG:0E23 20 CE CE - dex ; CPU:$CE26 PRG:0E26 CA - bmi UpdateParticleSystem_Block_4 ; CPU:$CE27 PRG:0E27 30 03 - jmp UpdateParticleSystem_Load ; CPU:$CE29 PRG:0E29 4C AC CD + jsr DrawParticleSprites ; CPU:$CE22 PRG:0E22 20 2F CE + jsr TestParticlePlayerOverlap ; CPU:$CE25 PRG:0E25 20 CE CE + dex ; CPU:$CE28 PRG:0E28 CA + bmi UpdateParticleSystem_Block_4 ; CPU:$CE29 PRG:0E29 30 03 + jmp UpdateParticleSystem_Load ; CPU:$CE2B PRG:0E2B 4C AC CD UpdateParticleSystem_Block_4: - rts ; CPU:$CE2C PRG:0E2C 60 + rts ; CPU:$CE2E PRG:0E2E 60 ;=============================================================================== ; DrawParticleSprites ; @@ -3078,84 +3351,88 @@ UpdateParticleSystem_Block_4: ; Returns: ; OAM entries for the selected particle are written. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, Temp12, ReverseRecordIndex, +; ParticleOamBase, the OAM shadow, EffectObjectPosY. +; ; PRG offsets: $0E2F-$0EAD ; CPU range: $CE2F-$CEAD ;=============================================================================== DrawParticleSprites: - ldy ParticleState,x ; CPU:$CE2D PRG:0E2D BC 5D 05 - iny ; CPU:$CE30 PRG:0E30 C8 - lda ParticleAttributeTable,y ; CPU:$CE31 PRG:0E31 B9 B2 CE - sta MotionDeltaHi ; CPU:$CE34 PRG:0E34 85 13 - txa ; CPU:$CE36 PRG:0E36 8A - sta MotionDeltaLo ; CPU:$CE37 PRG:0E37 85 12 - asl a ; CPU:$CE39 PRG:0E39 0A - adc MotionDeltaLo ; CPU:$CE3A PRG:0E3A 65 12 - asl a ; CPU:$CE3C PRG:0E3C 0A - asl a ; CPU:$CE3D PRG:0E3D 0A - tay ; CPU:$CE3E PRG:0E3E A8 - lda ParticlePosY,x ; CPU:$CE3F PRG:0E3F BD 7B 05 - sta ParticleOamBase,y ; CPU:$CE42 PRG:0E42 99 50 02 - sta $0254,y ; CPU:$CE45 PRG:0E45 99 54 02 - clc ; CPU:$CE48 PRG:0E48 18 - adc #$08 ; CPU:$CE49 PRG:0E49 69 08 - sta $0258,y ; CPU:$CE4B PRG:0E4B 99 58 02 - lda ParticlePosX,x ; CPU:$CE4E PRG:0E4E BD 67 05 - sta $0253,y ; CPU:$CE51 PRG:0E51 99 53 02 - clc ; CPU:$CE54 PRG:0E54 18 - adc #$04 ; CPU:$CE55 PRG:0E55 69 04 - sta $025B,y ; CPU:$CE57 PRG:0E57 99 5B 02 - clc ; CPU:$CE5A PRG:0E5A 18 - adc #$04 ; CPU:$CE5B PRG:0E5B 69 04 - sta $0257,y ; CPU:$CE5D PRG:0E5D 99 57 02 - lda MotionDeltaHi ; CPU:$CE60 PRG:0E60 A5 13 - sta $0252,y ; CPU:$CE62 PRG:0E62 99 52 02 - sta $0256,y ; CPU:$CE65 PRG:0E65 99 56 02 - sta $025A,y ; CPU:$CE68 PRG:0E68 99 5A 02 - lda ParticleState,x ; CPU:$CE6B PRG:0E6B BD 5D 05 - bmi DrawParticleSprites_Block ; CPU:$CE6E PRG:0E6E 30 27 - lda #$A8 ; CPU:$CE70 PRG:0E70 A9 A8 - sta $0251,y ; CPU:$CE72 PRG:0E72 99 51 02 - lda #$A9 ; CPU:$CE75 PRG:0E75 A9 A9 - sta $0255,y ; CPU:$CE77 PRG:0E77 99 55 02 - lda FrameCounter ; CPU:$CE7A PRG:0E7A A5 19 - lsr a ; CPU:$CE7C PRG:0E7C 4A - lsr a ; CPU:$CE7D PRG:0E7D 4A - lsr a ; CPU:$CE7E PRG:0E7E 4A - lsr a ; CPU:$CE7F PRG:0E7F 4A - and #$07 ; CPU:$CE80 PRG:0E80 29 07 - stx MotionDeltaHi ; CPU:$CE82 PRG:0E82 86 13 - tax ; CPU:$CE84 PRG:0E84 AA - lda ParticleAnimationTileTable,x ; CPU:$CE85 PRG:0E85 BD B5 CE - sta $0259,y ; CPU:$CE88 PRG:0E88 99 59 02 - lda $025A,y ; CPU:$CE8B PRG:0E8B B9 5A 02 - eor ParticleAnimationAttributeMaskTable,x ; CPU:$CE8E PRG:0E8E 5D BD CE - sta $025A,y ; CPU:$CE91 PRG:0E91 99 5A 02 - ldx MotionDeltaHi ; CPU:$CE94 PRG:0E94 A6 13 - rts ; CPU:$CE96 PRG:0E96 60 + ldy ParticleState,x ; CPU:$CE2F PRG:0E2F BC 5D 05 + iny ; CPU:$CE32 PRG:0E32 C8 + lda ParticleAttributeTable,y ; CPU:$CE33 PRG:0E33 B9 B2 CE + sta MotionDeltaHi ; CPU:$CE36 PRG:0E36 85 13 + txa ; CPU:$CE38 PRG:0E38 8A + sta MotionDeltaLo ; CPU:$CE39 PRG:0E39 85 12 + asl a ; CPU:$CE3B PRG:0E3B 0A + adc MotionDeltaLo ; CPU:$CE3C PRG:0E3C 65 12 + asl a ; CPU:$CE3E PRG:0E3E 0A + asl a ; CPU:$CE3F PRG:0E3F 0A + tay ; CPU:$CE40 PRG:0E40 A8 + lda ParticlePosY,x ; CPU:$CE41 PRG:0E41 BD 7B 05 + sta ParticleOamBase,y ; CPU:$CE44 PRG:0E44 99 50 02 + sta $0254,y ; CPU:$CE47 PRG:0E47 99 54 02 + clc ; CPU:$CE4A PRG:0E4A 18 + adc #$08 ; CPU:$CE4B PRG:0E4B 69 08 + sta $0258,y ; CPU:$CE4D PRG:0E4D 99 58 02 + lda ParticlePosX,x ; CPU:$CE50 PRG:0E50 BD 67 05 + sta $0253,y ; CPU:$CE53 PRG:0E53 99 53 02 + clc ; CPU:$CE56 PRG:0E56 18 + adc #$04 ; CPU:$CE57 PRG:0E57 69 04 + sta $025B,y ; CPU:$CE59 PRG:0E59 99 5B 02 + clc ; CPU:$CE5C PRG:0E5C 18 + adc #$04 ; CPU:$CE5D PRG:0E5D 69 04 + sta $0257,y ; CPU:$CE5F PRG:0E5F 99 57 02 + lda MotionDeltaHi ; CPU:$CE62 PRG:0E62 A5 13 + sta $0252,y ; CPU:$CE64 PRG:0E64 99 52 02 + sta $0256,y ; CPU:$CE67 PRG:0E67 99 56 02 + sta $025A,y ; CPU:$CE6A PRG:0E6A 99 5A 02 + lda ParticleState,x ; CPU:$CE6D PRG:0E6D BD 5D 05 + bmi DrawParticleSprites_Block ; CPU:$CE70 PRG:0E70 30 27 + lda #$A8 ; CPU:$CE72 PRG:0E72 A9 A8 + sta $0251,y ; CPU:$CE74 PRG:0E74 99 51 02 + lda #$A9 ; CPU:$CE77 PRG:0E77 A9 A9 + sta $0255,y ; CPU:$CE79 PRG:0E79 99 55 02 + lda FrameCounter ; CPU:$CE7C PRG:0E7C A5 19 + lsr a ; CPU:$CE7E PRG:0E7E 4A + lsr a ; CPU:$CE7F PRG:0E7F 4A + lsr a ; CPU:$CE80 PRG:0E80 4A + lsr a ; CPU:$CE81 PRG:0E81 4A + and #$07 ; CPU:$CE82 PRG:0E82 29 07 + stx MotionDeltaHi ; CPU:$CE84 PRG:0E84 86 13 + tax ; CPU:$CE86 PRG:0E86 AA + lda ParticleAnimationTileTable,x ; CPU:$CE87 PRG:0E87 BD B5 CE + sta $0259,y ; CPU:$CE8A PRG:0E8A 99 59 02 + lda $025A,y ; CPU:$CE8D PRG:0E8D B9 5A 02 + eor ParticleAnimationAttributeMaskTable,x ; CPU:$CE90 PRG:0E90 5D BD CE + sta $025A,y ; CPU:$CE93 PRG:0E93 99 5A 02 + ldx MotionDeltaHi ; CPU:$CE96 PRG:0E96 A6 13 + rts ; CPU:$CE98 PRG:0E98 60 DrawParticleSprites_Block: - lda #$F0 ; CPU:$CE97 PRG:0E97 A9 F0 - sta ParticlePosY,x ; CPU:$CE99 PRG:0E99 9D 7B 05 - lda #$AC ; CPU:$CE9C PRG:0E9C A9 AC - sta $0251,y ; CPU:$CE9E PRG:0E9E 99 51 02 - lda #$AD ; CPU:$CEA1 PRG:0EA1 A9 AD - sta $0255,y ; CPU:$CEA3 PRG:0EA3 99 55 02 - lda #$FC ; CPU:$CEA6 PRG:0EA6 A9 FC - sta $0259,y ; CPU:$CEA8 PRG:0EA8 99 59 02 - rts ; CPU:$CEAB PRG:0EAB 60 + lda #$F0 ; CPU:$CE99 PRG:0E99 A9 F0 + sta ParticlePosY,x ; CPU:$CE9B PRG:0E9B 9D 7B 05 + lda #$AC ; CPU:$CE9E PRG:0E9E A9 AC + sta $0251,y ; CPU:$CEA0 PRG:0EA0 99 51 02 + lda #$AD ; CPU:$CEA3 PRG:0EA3 A9 AD + sta $0255,y ; CPU:$CEA5 PRG:0EA5 99 55 02 + lda #$FC ; CPU:$CEA8 PRG:0EA8 A9 FC + sta $0259,y ; CPU:$CEAA PRG:0EAA 99 59 02 + rts ; CPU:$CEAD PRG:0EAD 60 ; Particle rendering tables ;=============================================================================== ParticleInitialVelocityTable: - .byte $20, $50, $A0, $D0 ; CPU:$CEAC PRG:0EAC 20 50 A0 D0 + .byte $20, $50, $A0, $D0 ; CPU:$CEAE PRG:0EAE 20 50 A0 D0 ParticleAttributeTable: - .byte $02, $22, $02 ; CPU:$CEB0 PRG:0EB0 02 22 02 + .byte $02, $22, $02 ; CPU:$CEB2 PRG:0EB2 02 22 02 ParticleAnimationTileTable: - .byte $AA, $AB, $AB, $AA, $AA, $AB, $AB, $AA ; CPU:$CEB3 PRG:0EB3 AA AB AB AA AA AB AB AA + .byte $AA, $AB, $AB, $AA, $AA, $AB, $AB, $AA ; CPU:$CEB5 PRG:0EB5 AA AB AB AA AA AB AB AA ParticleAnimationAttributeMaskTable: - .byte $00, $00, $40, $40, $40, $40, $00, $00 ; CPU:$CEBB PRG:0EBB 00 00 40 40 40 40 00 00 - .byte $FC, $FC, $DF, $FC, $FC, $E0, $E2, $E1 ; CPU:$CEC3 PRG:0EC3 FC FC DF FC FC E0 E2 E1 - .byte $FC ; CPU:$CECB PRG:0ECB FC + .byte $00, $00, $40, $40, $40, $40, $00, $00 ; CPU:$CEBD PRG:0EBD 00 00 40 40 40 40 00 00 + .byte $FC, $FC, $DF, $FC, $FC, $E0, $E2, $E1 ; CPU:$CEC5 PRG:0EC5 FC FC DF FC FC E0 E2 E1 + .byte $FC ; CPU:$CECD PRG:0ECD FC ;=============================================================================== ; TestParticlePlayerOverlap @@ -3172,46 +3449,50 @@ ParticleAnimationAttributeMaskTable: ; Returns: ; Particle and player hit state may be updated. ; +; Clobbers: +; A and Y, the N, Z, C and V flags, SoundRequestFlags0, +; EffectObjectState, PlayerParticleHitCount. +; ; PRG offsets: $0ECE-$0F12 ; CPU range: $CECE-$CF12 ;=============================================================================== TestParticlePlayerOverlap: - ldy #$01 ; CPU:$CECC PRG:0ECC A0 01 + ldy #$01 ; CPU:$CECE PRG:0ECE A0 01 TestParticlePlayerOverlap_Block: - lda a:PlayerSlotState,y ; CPU:$CECE PRG:0ECE B9 88 00 - bmi TestParticlePlayerOverlap_Block_1 ; CPU:$CED1 PRG:0ED1 30 3A - beq TestParticlePlayerOverlap_Block_1 ; CPU:$CED3 PRG:0ED3 F0 38 - lda ParticleState,x ; CPU:$CED5 PRG:0ED5 BD 5D 05 - bmi TestParticlePlayerOverlap_Block_2 ; CPU:$CED8 PRG:0ED8 30 36 - lda a:PlayerPosY,y ; CPU:$CEDA PRG:0EDA B9 9A 00 - cmp #$C0 ; CPU:$CEDD PRG:0EDD C9 C0 - bcs TestParticlePlayerOverlap_Block_1 ; CPU:$CEDF PRG:0EDF B0 2C - sec ; CPU:$CEE1 PRG:0EE1 38 - sbc ParticlePosY,x ; CPU:$CEE2 PRG:0EE2 FD 7B 05 - jsr AbsoluteDifference ; CPU:$CEE5 PRG:0EE5 20 8E F0 - cmp #$18 ; CPU:$CEE8 PRG:0EE8 C9 18 - bcs TestParticlePlayerOverlap_Block_1 ; CPU:$CEEA PRG:0EEA B0 21 - lda a:PlayerPosX,y ; CPU:$CEEC PRG:0EEC B9 91 00 - sec ; CPU:$CEEF PRG:0EEF 38 - sbc ParticlePosX,x ; CPU:$CEF0 PRG:0EF0 FD 67 05 - jsr AbsoluteDifference ; CPU:$CEF3 PRG:0EF3 20 8E F0 - cmp #$10 ; CPU:$CEF6 PRG:0EF6 C9 10 - bcs TestParticlePlayerOverlap_Block_1 ; CPU:$CEF8 PRG:0EF8 B0 13 - lda #$FF ; CPU:$CEFA PRG:0EFA A9 FF - sta ParticleState,x ; CPU:$CEFC PRG:0EFC 9D 5D 05 - lda PlayerParticleHitCount,y ; CPU:$CEFF PRG:0EFF B9 CD 05 - clc ; CPU:$CF02 PRG:0F02 18 - adc #$01 ; CPU:$CF03 PRG:0F03 69 01 - sta PlayerParticleHitCount,y ; CPU:$CF05 PRG:0F05 99 CD 05 - lda #$02 ; CPU:$CF08 PRG:0F08 A9 02 - sta SoundRequestFlags0 ; CPU:$CF0A PRG:0F0A 85 F0 - rts ; CPU:$CF0C PRG:0F0C 60 + lda a:PlayerSlotState,y ; CPU:$CED0 PRG:0ED0 B9 88 00 + bmi TestParticlePlayerOverlap_Block_1 ; CPU:$CED3 PRG:0ED3 30 3A + beq TestParticlePlayerOverlap_Block_1 ; CPU:$CED5 PRG:0ED5 F0 38 + lda ParticleState,x ; CPU:$CED7 PRG:0ED7 BD 5D 05 + bmi TestParticlePlayerOverlap_Block_2 ; CPU:$CEDA PRG:0EDA 30 36 + lda a:PlayerPosY,y ; CPU:$CEDC PRG:0EDC B9 9A 00 + cmp #$C0 ; CPU:$CEDF PRG:0EDF C9 C0 + bcs TestParticlePlayerOverlap_Block_1 ; CPU:$CEE1 PRG:0EE1 B0 2C + sec ; CPU:$CEE3 PRG:0EE3 38 + sbc ParticlePosY,x ; CPU:$CEE4 PRG:0EE4 FD 7B 05 + jsr AbsoluteDifference ; CPU:$CEE7 PRG:0EE7 20 8E F0 + cmp #$18 ; CPU:$CEEA PRG:0EEA C9 18 + bcs TestParticlePlayerOverlap_Block_1 ; CPU:$CEEC PRG:0EEC B0 21 + lda a:PlayerPosX,y ; CPU:$CEEE PRG:0EEE B9 91 00 + sec ; CPU:$CEF1 PRG:0EF1 38 + sbc ParticlePosX,x ; CPU:$CEF2 PRG:0EF2 FD 67 05 + jsr AbsoluteDifference ; CPU:$CEF5 PRG:0EF5 20 8E F0 + cmp #$10 ; CPU:$CEF8 PRG:0EF8 C9 10 + bcs TestParticlePlayerOverlap_Block_1 ; CPU:$CEFA PRG:0EFA B0 13 + lda #$FF ; CPU:$CEFC PRG:0EFC A9 FF + sta ParticleState,x ; CPU:$CEFE PRG:0EFE 9D 5D 05 + lda PlayerParticleHitCount,y ; CPU:$CF01 PRG:0F01 B9 CD 05 + clc ; CPU:$CF04 PRG:0F04 18 + adc #$01 ; CPU:$CF05 PRG:0F05 69 01 + sta PlayerParticleHitCount,y ; CPU:$CF07 PRG:0F07 99 CD 05 + lda #$02 ; CPU:$CF0A PRG:0F0A A9 02 + sta SoundRequestFlags0 ; CPU:$CF0C PRG:0F0C 85 F0 + rts ; CPU:$CF0E PRG:0F0E 60 TestParticlePlayerOverlap_Block_1: - dey ; CPU:$CF0D PRG:0F0D 88 - bpl TestParticlePlayerOverlap_Block ; CPU:$CF0E PRG:0F0E 10 BE + dey ; CPU:$CF0F PRG:0F0F 88 + bpl TestParticlePlayerOverlap_Block ; CPU:$CF10 PRG:0F10 10 BE TestParticlePlayerOverlap_Block_2: - rts ; CPU:$CF10 PRG:0F10 60 + rts ; CPU:$CF12 PRG:0F12 60 ;=============================================================================== ; RunParticleBonusSequence ; @@ -3227,233 +3508,237 @@ TestParticlePlayerOverlap_Block_2: ; Returns: ; Sequence completes and returns to the main state flow. ; +; Clobbers: +; A, X and Y, the N, Z, C and V flags, the OAM shadow and the RAM fields +; it writes. +; ; PRG offsets: $0F13-$10E1 ; CPU range: $CF13-$D0E1 ;=============================================================================== RunParticleBonusSequence: - lda #$20 ; CPU:$CF11 PRG:0F11 A9 20 - sta SoundRequestFlags2 ; CPU:$CF13 PRG:0F13 85 F2 - jsr LoadParticleSequenceData ; CPU:$CF15 PRG:0F15 20 E2 D0 - jsr InitializeParticleSlots ; CPU:$CF18 PRG:0F18 20 4A CD - ldx PlayerCountMinusOne ; CPU:$CF1B PRG:0F1B A6 40 + lda #$20 ; CPU:$CF13 PRG:0F13 A9 20 + sta SoundRequestFlags2 ; CPU:$CF15 PRG:0F15 85 F2 + jsr LoadParticleSequenceData ; CPU:$CF17 PRG:0F17 20 E2 D0 + jsr InitializeParticleSlots ; CPU:$CF1A PRG:0F1A 20 4A CD + ldx PlayerCountMinusOne ; CPU:$CF1D PRG:0F1D A6 40 RunParticleBonusSequence_Block: - lda PlayerActiveFlags,x ; CPU:$CF1D PRG:0F1D B5 41 - bmi RunParticleBonusSequence_Block_1 ; CPU:$CF1F PRG:0F1F 30 03 - jsr $F3B0 ; CPU:$CF21 PRG:0F21 20 B0 F3 + lda PlayerActiveFlags,x ; CPU:$CF1F PRG:0F1F B5 41 + bmi RunParticleBonusSequence_Block_1 ; CPU:$CF21 PRG:0F21 30 03 + jsr $F3B0 ; CPU:$CF23 PRG:0F23 20 B0 F3 RunParticleBonusSequence_Block_1: - dex ; CPU:$CF24 PRG:0F24 CA - bpl RunParticleBonusSequence_Block ; CPU:$CF25 PRG:0F25 10 F6 - ldx #$00 ; CPU:$CF27 PRG:0F27 A2 00 - stx PlayerCollisionDisable ; CPU:$CF29 PRG:0F29 86 BD - stx SequenceState ; CPU:$CF2B PRG:0F2B 86 BE - lda #$14 ; CPU:$CF2D PRG:0F2D A9 14 - sta ParticleSpawnRemaining ; CPU:$CF2F PRG:0F2F 8D CB 05 + dex ; CPU:$CF26 PRG:0F26 CA + bpl RunParticleBonusSequence_Block ; CPU:$CF27 PRG:0F27 10 F6 + ldx #$00 ; CPU:$CF29 PRG:0F29 A2 00 + stx PlayerCollisionDisable ; CPU:$CF2B PRG:0F2B 86 BD + stx SequenceState ; CPU:$CF2D PRG:0F2D 86 BE + lda #$14 ; CPU:$CF2F PRG:0F2F A9 14 + sta ParticleSpawnRemaining ; CPU:$CF31 PRG:0F31 8D CB 05 RunParticleBonusSequence_Block_2: - jsr $F470 ; CPU:$CF32 PRG:0F32 20 70 F4 - inc $4C ; CPU:$CF35 PRG:0F35 E6 4C - jsr $D8DD ; CPU:$CF37 PRG:0F37 20 DD D8 - jsr UpdateGameplayObjects ; CPU:$CF3A PRG:0F3A 20 91 E6 - lda ParticleSpawnRemaining ; CPU:$CF3D PRG:0F3D AD CB 05 - beq RunParticleBonusSequence_Block_3 ; CPU:$CF40 PRG:0F40 F0 03 - jsr SpawnTimedParticle ; CPU:$CF42 PRG:0F42 20 5A CD + jsr $F470 ; CPU:$CF34 PRG:0F34 20 70 F4 + inc $4C ; CPU:$CF37 PRG:0F37 E6 4C + jsr $D8DD ; CPU:$CF39 PRG:0F39 20 DD D8 + jsr UpdateGameplayObjects ; CPU:$CF3C PRG:0F3C 20 91 E6 + lda ParticleSpawnRemaining ; CPU:$CF3F PRG:0F3F AD CB 05 + beq RunParticleBonusSequence_Block_3 ; CPU:$CF42 PRG:0F42 F0 03 + jsr SpawnTimedParticle ; CPU:$CF44 PRG:0F44 20 5A CD RunParticleBonusSequence_Block_3: - jsr UpdateParticleSystem ; CPU:$CF45 PRG:0F45 20 AA CD - lda ParticleSpawnRemaining ; CPU:$CF48 PRG:0F48 AD CB 05 - bne RunParticleBonusSequence_Block_2 ; CPU:$CF4B PRG:0F4B D0 E5 - ldx #$09 ; CPU:$CF4D PRG:0F4D A2 09 + jsr UpdateParticleSystem ; CPU:$CF47 PRG:0F47 20 AA CD + lda ParticleSpawnRemaining ; CPU:$CF4A PRG:0F4A AD CB 05 + bne RunParticleBonusSequence_Block_2 ; CPU:$CF4D PRG:0F4D D0 E5 + ldx #$09 ; CPU:$CF4F PRG:0F4F A2 09 RunParticleBonusSequence_Block_4: - lda ParticleState,x ; CPU:$CF4F PRG:0F4F BD 5D 05 - bpl RunParticleBonusSequence_Block_2 ; CPU:$CF52 PRG:0F52 10 DE - dex ; CPU:$CF54 PRG:0F54 CA - bpl RunParticleBonusSequence_Block_4 ; CPU:$CF55 PRG:0F55 10 F8 - lda FrameCounter ; CPU:$CF57 PRG:0F57 A5 19 - bne RunParticleBonusSequence_Block_2 ; CPU:$CF59 PRG:0F59 D0 D7 - jsr $D246 ; CPU:$CF5B PRG:0F5B 20 46 D2 - ldx #$02 ; CPU:$CF5E PRG:0F5E A2 02 - stx SequenceStep ; CPU:$CF60 PRG:0F60 86 46 - jsr $F45E ; CPU:$CF62 PRG:0F62 20 5E F4 - lda #$2B ; CPU:$CF65 PRG:0F65 A9 2B - ldy #$D1 ; CPU:$CF67 PRG:0F67 A0 D1 - jsr $C131 ; CPU:$CF69 PRG:0F69 20 31 C1 - lda #$5A ; CPU:$CF6C PRG:0F6C A9 5A - ldy #$D1 ; CPU:$CF6E PRG:0F6E A0 D1 - jsr $C131 ; CPU:$CF70 PRG:0F70 20 31 C1 - lda #$65 ; CPU:$CF73 PRG:0F73 A9 65 - ldy #$D1 ; CPU:$CF75 PRG:0F75 A0 D1 - jsr $C131 ; CPU:$CF77 PRG:0F77 20 31 C1 - ldx PlayerCountMinusOne ; CPU:$CF7A PRG:0F7A A6 40 + lda ParticleState,x ; CPU:$CF51 PRG:0F51 BD 5D 05 + bpl RunParticleBonusSequence_Block_2 ; CPU:$CF54 PRG:0F54 10 DE + dex ; CPU:$CF56 PRG:0F56 CA + bpl RunParticleBonusSequence_Block_4 ; CPU:$CF57 PRG:0F57 10 F8 + lda FrameCounter ; CPU:$CF59 PRG:0F59 A5 19 + bne RunParticleBonusSequence_Block_2 ; CPU:$CF5B PRG:0F5B D0 D7 + jsr $D246 ; CPU:$CF5D PRG:0F5D 20 46 D2 + ldx #$02 ; CPU:$CF60 PRG:0F60 A2 02 + stx SequenceStep ; CPU:$CF62 PRG:0F62 86 46 + jsr $F45E ; CPU:$CF64 PRG:0F64 20 5E F4 + lda #$2B ; CPU:$CF67 PRG:0F67 A9 2B + ldy #$D1 ; CPU:$CF69 PRG:0F69 A0 D1 + jsr $C131 ; CPU:$CF6B PRG:0F6B 20 31 C1 + lda #$5A ; CPU:$CF6E PRG:0F6E A9 5A + ldy #$D1 ; CPU:$CF70 PRG:0F70 A0 D1 + jsr $C131 ; CPU:$CF72 PRG:0F72 20 31 C1 + lda #$65 ; CPU:$CF75 PRG:0F75 A9 65 + ldy #$D1 ; CPU:$CF77 PRG:0F77 A0 D1 + jsr $C131 ; CPU:$CF79 PRG:0F79 20 31 C1 + ldx PlayerCountMinusOne ; CPU:$CF7C PRG:0F7C A6 40 RunParticleBonusSequence_Block_5: - lda #$20 ; CPU:$CF7C PRG:0F7C A9 20 - sta PlayerPosX,x ; CPU:$CF7E PRG:0F7E 95 91 - lda $D19E,x ; CPU:$CF80 PRG:0F80 BD 9E D1 - sta PlayerPosY,x ; CPU:$CF83 PRG:0F83 95 9A - lda #$03 ; CPU:$CF85 PRG:0F85 A9 03 - sta PlayerLifecycleState,x ; CPU:$CF87 PRG:0F87 95 7F - lda #$01 ; CPU:$CF89 PRG:0F89 A9 01 - sta PlayerVariantTable,x ; CPU:$CF8B PRG:0F8B 9D 48 04 - jsr $F3B0 ; CPU:$CF8E PRG:0F8E 20 B0 F3 - jsr BuildObjectMetasprite ; CPU:$CF91 PRG:0F91 20 A4 E3 - dex ; CPU:$CF94 PRG:0F94 CA - bpl RunParticleBonusSequence_Block_5 ; CPU:$CF95 PRG:0F95 10 E5 - lda #$44 ; CPU:$CF97 PRG:0F97 A9 44 - sta ParticlePosX ; CPU:$CF99 PRG:0F99 8D 67 05 - sta $0568 ; CPU:$CF9C PRG:0F9C 8D 68 05 - lda #$54 ; CPU:$CF9F PRG:0F9F A9 54 - sta ParticlePosY ; CPU:$CFA1 PRG:0FA1 8D 7B 05 - lda #$74 ; CPU:$CFA4 PRG:0FA4 A9 74 - sta $057C ; CPU:$CFA6 PRG:0FA6 8D 7C 05 - lda #$01 ; CPU:$CFA9 PRG:0FA9 A9 01 - sta ParticleState ; CPU:$CFAB PRG:0FAB 8D 5D 05 - sta $055E ; CPU:$CFAE PRG:0FAE 8D 5E 05 - ldx PlayerCountMinusOne ; CPU:$CFB1 PRG:0FB1 A6 40 + lda #$20 ; CPU:$CF7E PRG:0F7E A9 20 + sta PlayerPosX,x ; CPU:$CF80 PRG:0F80 95 91 + lda $D19E,x ; CPU:$CF82 PRG:0F82 BD 9E D1 + sta PlayerPosY,x ; CPU:$CF85 PRG:0F85 95 9A + lda #$03 ; CPU:$CF87 PRG:0F87 A9 03 + sta PlayerLifecycleState,x ; CPU:$CF89 PRG:0F89 95 7F + lda #$01 ; CPU:$CF8B PRG:0F8B A9 01 + sta PlayerVariantTable,x ; CPU:$CF8D PRG:0F8D 9D 48 04 + jsr $F3B0 ; CPU:$CF90 PRG:0F90 20 B0 F3 + jsr BuildObjectMetasprite ; CPU:$CF93 PRG:0F93 20 A4 E3 + dex ; CPU:$CF96 PRG:0F96 CA + bpl RunParticleBonusSequence_Block_5 ; CPU:$CF97 PRG:0F97 10 E5 + lda #$44 ; CPU:$CF99 PRG:0F99 A9 44 + sta ParticlePosX ; CPU:$CF9B PRG:0F9B 8D 67 05 + sta $0568 ; CPU:$CF9E PRG:0F9E 8D 68 05 + lda #$54 ; CPU:$CFA1 PRG:0FA1 A9 54 + sta ParticlePosY ; CPU:$CFA3 PRG:0FA3 8D 7B 05 + lda #$74 ; CPU:$CFA6 PRG:0FA6 A9 74 + sta $057C ; CPU:$CFA8 PRG:0FA8 8D 7C 05 + lda #$01 ; CPU:$CFAB PRG:0FAB A9 01 + sta ParticleState ; CPU:$CFAD PRG:0FAD 8D 5D 05 + sta $055E ; CPU:$CFB0 PRG:0FB0 8D 5E 05 + ldx PlayerCountMinusOne ; CPU:$CFB3 PRG:0FB3 A6 40 RunParticleBonusSequence_Block_6: - jsr DrawParticleSprites ; CPU:$CFB3 PRG:0FB3 20 2F CE - dex ; CPU:$CFB6 PRG:0FB6 CA - bpl RunParticleBonusSequence_Block_6 ; CPU:$CFB7 PRG:0FB7 10 FA - jsr $F45C ; CPU:$CFB9 PRG:0FB9 20 5C F4 - lda #$2B ; CPU:$CFBC PRG:0FBC A9 2B - sta PpuCommandData0 ; CPU:$CFBE PRG:0FBE 85 57 - lda #$24 ; CPU:$CFC0 PRG:0FC0 A9 24 - sta PpuCommandData1 ; CPU:$CFC2 PRG:0FC2 85 58 - sta PpuCommandData2 ; CPU:$CFC4 PRG:0FC4 85 59 - lda #$0C ; CPU:$CFC6 PRG:0FC6 A9 0C - sta PpuCommandAddressHi ; CPU:$CFC8 PRG:0FC8 85 54 - lda #$0B ; CPU:$CFCA PRG:0FCA A9 0B - sta PpuCommandAddressLo ; CPU:$CFCC PRG:0FCC 85 55 - lda #$05 ; CPU:$CFCE PRG:0FCE A9 05 - sta PpuCommandLength ; CPU:$CFD0 PRG:0FD0 85 56 - lda PlayerParticleHitCount ; CPU:$CFD2 PRG:0FD2 AD CD 05 - jsr $D1C9 ; CPU:$CFD5 PRG:0FD5 20 C9 D1 - lda PlayerCountMinusOne ; CPU:$CFD8 PRG:0FD8 A5 40 - beq RunParticleBonusSequence_Block_7 ; CPU:$CFDA PRG:0FDA F0 0A - lda #$0F ; CPU:$CFDC PRG:0FDC A9 0F - sta PpuCommandAddressLo ; CPU:$CFDE PRG:0FDE 85 55 - lda PlayerParticleHitCount2 ; CPU:$CFE0 PRG:0FE0 AD CE 05 - jsr $D1C9 ; CPU:$CFE3 PRG:0FE3 20 C9 D1 + jsr DrawParticleSprites ; CPU:$CFB5 PRG:0FB5 20 2F CE + dex ; CPU:$CFB8 PRG:0FB8 CA + bpl RunParticleBonusSequence_Block_6 ; CPU:$CFB9 PRG:0FB9 10 FA + jsr $F45C ; CPU:$CFBB PRG:0FBB 20 5C F4 + lda #$2B ; CPU:$CFBE PRG:0FBE A9 2B + sta PpuCommandData0 ; CPU:$CFC0 PRG:0FC0 85 57 + lda #$24 ; CPU:$CFC2 PRG:0FC2 A9 24 + sta PpuCommandData1 ; CPU:$CFC4 PRG:0FC4 85 58 + sta PpuCommandData2 ; CPU:$CFC6 PRG:0FC6 85 59 + lda #$0C ; CPU:$CFC8 PRG:0FC8 A9 0C + sta PpuCommandAddressHi ; CPU:$CFCA PRG:0FCA 85 54 + lda #$0B ; CPU:$CFCC PRG:0FCC A9 0B + sta PpuCommandAddressLo ; CPU:$CFCE PRG:0FCE 85 55 + lda #$05 ; CPU:$CFD0 PRG:0FD0 A9 05 + sta PpuCommandLength ; CPU:$CFD2 PRG:0FD2 85 56 + lda PlayerParticleHitCount ; CPU:$CFD4 PRG:0FD4 AD CD 05 + jsr $D1C9 ; CPU:$CFD7 PRG:0FD7 20 C9 D1 + lda PlayerCountMinusOne ; CPU:$CFDA PRG:0FDA A5 40 + beq RunParticleBonusSequence_Block_7 ; CPU:$CFDC PRG:0FDC F0 0A + lda #$0F ; CPU:$CFDE PRG:0FDE A9 0F + sta PpuCommandAddressLo ; CPU:$CFE0 PRG:0FE0 85 55 + lda PlayerParticleHitCount2 ; CPU:$CFE2 PRG:0FE2 AD CE 05 + jsr $D1C9 ; CPU:$CFE5 PRG:0FE5 20 C9 D1 RunParticleBonusSequence_Block_7: - jsr $F45C ; CPU:$CFE6 PRG:0FE6 20 5C F4 - lda ParticleSequenceValue ; CPU:$CFE9 PRG:0FE9 AD 59 05 - sta PpuCommandData0 ; CPU:$CFEC PRG:0FEC 85 57 - lda #$00 ; CPU:$CFEE PRG:0FEE A9 00 - sta PpuCommandData1 ; CPU:$CFF0 PRG:0FF0 85 58 - sta PpuCommandData2 ; CPU:$CFF2 PRG:0FF2 85 59 - lda #$08 ; CPU:$CFF4 PRG:0FF4 A9 08 - sta PpuCommandAddressHi ; CPU:$CFF6 PRG:0FF6 85 54 - lda #$0B ; CPU:$CFF8 PRG:0FF8 A9 0B - sta PpuCommandAddressLo ; CPU:$CFFA PRG:0FFA 85 55 - lda #$03 ; CPU:$CFFC PRG:0FFC A9 03 - sta PpuCommandLength ; CPU:$CFFE PRG:0FFE 85 56 - lda ParticleSequenceValue ; CPU:$D000 PRG:1000 AD 59 05 - jsr $C119 ; CPU:$D003 PRG:1003 20 19 C1 - lda PlayerCountMinusOne ; CPU:$D006 PRG:1006 A5 40 - beq RunParticleBonusSequence_Block_8 ; CPU:$D008 PRG:1008 F0 07 - lda #$0F ; CPU:$D00A PRG:100A A9 0F - sta PpuCommandAddressLo ; CPU:$D00C PRG:100C 85 55 - jsr $C119 ; CPU:$D00E PRG:100E 20 19 C1 + jsr $F45C ; CPU:$CFE8 PRG:0FE8 20 5C F4 + lda ParticleSequenceValue ; CPU:$CFEB PRG:0FEB AD 59 05 + sta PpuCommandData0 ; CPU:$CFEE PRG:0FEE 85 57 + lda #$00 ; CPU:$CFF0 PRG:0FF0 A9 00 + sta PpuCommandData1 ; CPU:$CFF2 PRG:0FF2 85 58 + sta PpuCommandData2 ; CPU:$CFF4 PRG:0FF4 85 59 + lda #$08 ; CPU:$CFF6 PRG:0FF6 A9 08 + sta PpuCommandAddressHi ; CPU:$CFF8 PRG:0FF8 85 54 + lda #$0B ; CPU:$CFFA PRG:0FFA A9 0B + sta PpuCommandAddressLo ; CPU:$CFFC PRG:0FFC 85 55 + lda #$03 ; CPU:$CFFE PRG:0FFE A9 03 + sta PpuCommandLength ; CPU:$D000 PRG:1000 85 56 + lda ParticleSequenceValue ; CPU:$D002 PRG:1002 AD 59 05 + jsr $C119 ; CPU:$D005 PRG:1005 20 19 C1 + lda PlayerCountMinusOne ; CPU:$D008 PRG:1008 A5 40 + beq RunParticleBonusSequence_Block_8 ; CPU:$D00A PRG:100A F0 07 + lda #$0F ; CPU:$D00C PRG:100C A9 0F + sta PpuCommandAddressLo ; CPU:$D00E PRG:100E 85 55 + jsr $C119 ; CPU:$D010 PRG:1010 20 19 C1 RunParticleBonusSequence_Block_8: - lda #$FF ; CPU:$D011 PRG:1011 A9 FF - sta ParticleState ; CPU:$D013 PRG:1013 8D 5D 05 - sta $055E ; CPU:$D016 PRG:1016 8D 5E 05 - ldx PlayerCountMinusOne ; CPU:$D019 PRG:1019 A6 40 + lda #$FF ; CPU:$D013 PRG:1013 A9 FF + sta ParticleState ; CPU:$D015 PRG:1015 8D 5D 05 + sta $055E ; CPU:$D018 PRG:1018 8D 5E 05 + ldx PlayerCountMinusOne ; CPU:$D01B PRG:101B A6 40 RunParticleBonusSequence_Block_9: - jsr DrawParticleSprites ; CPU:$D01B PRG:101B 20 2F CE - dex ; CPU:$D01E PRG:101E CA - bpl RunParticleBonusSequence_Block_9 ; CPU:$D01F PRG:101F 10 FA - lda #$02 ; CPU:$D021 PRG:1021 A9 02 - sta SoundRequestFlags0 ; CPU:$D023 PRG:1023 85 F0 - ldx #$02 ; CPU:$D025 PRG:1025 A2 02 - jsr $F45E ; CPU:$D027 PRG:1027 20 5E F4 - ldx PlayerCountMinusOne ; CPU:$D02A PRG:102A A6 40 + jsr DrawParticleSprites ; CPU:$D01D PRG:101D 20 2F CE + dex ; CPU:$D020 PRG:1020 CA + bpl RunParticleBonusSequence_Block_9 ; CPU:$D021 PRG:1021 10 FA + lda #$02 ; CPU:$D023 PRG:1023 A9 02 + sta SoundRequestFlags0 ; CPU:$D025 PRG:1025 85 F0 + ldx #$02 ; CPU:$D027 PRG:1027 A2 02 + jsr $F45E ; CPU:$D029 PRG:1029 20 5E F4 + ldx PlayerCountMinusOne ; CPU:$D02C PRG:102C A6 40 RunParticleBonusSequence_Block_10: - jsr DrawParticleSprites ; CPU:$D02C PRG:102C 20 2F CE - dex ; CPU:$D02F PRG:102F CA - bpl RunParticleBonusSequence_Block_10 ; CPU:$D030 PRG:1030 10 FA - jsr $D1A0 ; CPU:$D032 PRG:1032 20 A0 D1 - jsr $F45C ; CPU:$D035 PRG:1035 20 5C F4 - lda #$01 ; CPU:$D038 PRG:1038 A9 01 - sta SoundRequestFlags0 ; CPU:$D03A PRG:103A 85 F0 - jsr $D121 ; CPU:$D03C PRG:103C 20 21 D1 - bne RunParticleBonusSequence_Block_12 ; CPU:$D03F PRG:103F D0 25 - lda #$70 ; CPU:$D041 PRG:1041 A9 70 - ldy #$D1 ; CPU:$D043 PRG:1043 A0 D1 - jsr $C131 ; CPU:$D045 PRG:1045 20 31 C1 - jsr WaitForFrame ; CPU:$D048 PRG:1048 20 65 F4 - ldx #$1A ; CPU:$D04B PRG:104B A2 1A + jsr DrawParticleSprites ; CPU:$D02E PRG:102E 20 2F CE + dex ; CPU:$D031 PRG:1031 CA + bpl RunParticleBonusSequence_Block_10 ; CPU:$D032 PRG:1032 10 FA + jsr $D1A0 ; CPU:$D034 PRG:1034 20 A0 D1 + jsr $F45C ; CPU:$D037 PRG:1037 20 5C F4 + lda #$01 ; CPU:$D03A PRG:103A A9 01 + sta SoundRequestFlags0 ; CPU:$D03C PRG:103C 85 F0 + jsr $D121 ; CPU:$D03E PRG:103E 20 21 D1 + bne RunParticleBonusSequence_Block_12 ; CPU:$D041 PRG:1041 D0 25 + lda #$70 ; CPU:$D043 PRG:1043 A9 70 + ldy #$D1 ; CPU:$D045 PRG:1045 A0 D1 + jsr $C131 ; CPU:$D047 PRG:1047 20 31 C1 + jsr WaitForFrame ; CPU:$D04A PRG:104A 20 65 F4 + ldx #$1A ; CPU:$D04D PRG:104D A2 1A RunParticleBonusSequence_Block_11: - lda $D184,x ; CPU:$D04D PRG:104D BD 84 D1 - sta PpuCommandData0,x ; CPU:$D050 PRG:1050 95 57 - dex ; CPU:$D052 PRG:1052 CA - bpl RunParticleBonusSequence_Block_11 ; CPU:$D053 PRG:1053 10 F8 - lda SequenceDataLo ; CPU:$D055 PRG:1055 AD 5B 05 - sta SequencePointerLo ; CPU:$D058 PRG:1058 85 68 - lda SequenceDataHi ; CPU:$D05A PRG:105A AD 5C 05 - sta SequencePointerHi ; CPU:$D05D PRG:105D 85 69 - jsr $C12D ; CPU:$D05F PRG:105F 20 2D C1 - lda #$10 ; CPU:$D062 PRG:1062 A9 10 - sta SoundRequestFlags2 ; CPU:$D064 PRG:1064 85 F2 + lda $D184,x ; CPU:$D04F PRG:104F BD 84 D1 + sta PpuCommandData0,x ; CPU:$D052 PRG:1052 95 57 + dex ; CPU:$D054 PRG:1054 CA + bpl RunParticleBonusSequence_Block_11 ; CPU:$D055 PRG:1055 10 F8 + lda SequenceDataLo ; CPU:$D057 PRG:1057 AD 5B 05 + sta SequencePointerLo ; CPU:$D05A PRG:105A 85 68 + lda SequenceDataHi ; CPU:$D05C PRG:105C AD 5C 05 + sta SequencePointerHi ; CPU:$D05F PRG:105F 85 69 + jsr $C12D ; CPU:$D061 PRG:1061 20 2D C1 + lda #$10 ; CPU:$D064 PRG:1064 A9 10 + sta SoundRequestFlags2 ; CPU:$D066 PRG:1066 85 F2 RunParticleBonusSequence_Block_12: - ldx #$78 ; CPU:$D066 PRG:1066 A2 78 - jsr $F45E ; CPU:$D068 PRG:1068 20 5E F4 - jsr $D1A0 ; CPU:$D06B PRG:106B 20 A0 D1 + ldx #$78 ; CPU:$D068 PRG:1068 A2 78 + jsr $F45E ; CPU:$D06A PRG:106A 20 5E F4 + jsr $D1A0 ; CPU:$D06D PRG:106D 20 A0 D1 RunParticleBonusSequence_Block_13: - lda #$00 ; CPU:$D06E PRG:106E A9 00 - sta SequencePlayerIndex ; CPU:$D070 PRG:1070 85 3E - ldx #$04 ; CPU:$D072 PRG:1072 A2 04 - jsr $D213 ; CPU:$D074 PRG:1074 20 13 D2 - jsr $C12D ; CPU:$D077 PRG:1077 20 2D C1 - lda PlayerCountMinusOne ; CPU:$D07A PRG:107A A5 40 - beq RunParticleBonusSequence_Block_14 ; CPU:$D07C PRG:107C F0 0E - inc SequencePlayerIndex ; CPU:$D07E PRG:107E E6 3E - ldx #$12 ; CPU:$D080 PRG:1080 A2 12 - jsr $D213 ; CPU:$D082 PRG:1082 20 13 D2 - lda #$65 ; CPU:$D085 PRG:1085 A9 65 - ldy #$00 ; CPU:$D087 PRG:1087 A0 00 - jsr $C131 ; CPU:$D089 PRG:1089 20 31 C1 + lda #$00 ; CPU:$D070 PRG:1070 A9 00 + sta SequencePlayerIndex ; CPU:$D072 PRG:1072 85 3E + ldx #$04 ; CPU:$D074 PRG:1074 A2 04 + jsr $D213 ; CPU:$D076 PRG:1076 20 13 D2 + jsr $C12D ; CPU:$D079 PRG:1079 20 2D C1 + lda PlayerCountMinusOne ; CPU:$D07C PRG:107C A5 40 + beq RunParticleBonusSequence_Block_14 ; CPU:$D07E PRG:107E F0 0E + inc SequencePlayerIndex ; CPU:$D080 PRG:1080 E6 3E + ldx #$12 ; CPU:$D082 PRG:1082 A2 12 + jsr $D213 ; CPU:$D084 PRG:1084 20 13 D2 + lda #$65 ; CPU:$D087 PRG:1087 A9 65 + ldy #$00 ; CPU:$D089 PRG:1089 A0 00 + jsr $C131 ; CPU:$D08B PRG:108B 20 31 C1 RunParticleBonusSequence_Block_14: - lda #$01 ; CPU:$D08C PRG:108C A9 01 - sta SoundRequestFlags1 ; CPU:$D08E PRG:108E 85 F1 - ldx #$02 ; CPU:$D090 PRG:1090 A2 02 - jsr $F45E ; CPU:$D092 PRG:1092 20 5E F4 - lda PpuBufferHead ; CPU:$D095 PRG:1095 A5 5D - cmp #$24 ; CPU:$D097 PRG:1097 C9 24 - bne RunParticleBonusSequence_Block_13 ; CPU:$D099 PRG:1099 D0 D3 - lda PlayerCountMinusOne ; CPU:$D09B PRG:109B A5 40 - beq RunParticleBonusSequence_Block_15 ; CPU:$D09D PRG:109D F0 07 - lda a:$006B ; CPU:$D09F PRG:109F AD 6B 00 - cmp #$24 ; CPU:$D0A2 PRG:10A2 C9 24 - bne RunParticleBonusSequence_Block_13 ; CPU:$D0A4 PRG:10A4 D0 C8 + lda #$01 ; CPU:$D08E PRG:108E A9 01 + sta SoundRequestFlags1 ; CPU:$D090 PRG:1090 85 F1 + ldx #$02 ; CPU:$D092 PRG:1092 A2 02 + jsr $F45E ; CPU:$D094 PRG:1094 20 5E F4 + lda PpuBufferHead ; CPU:$D097 PRG:1097 A5 5D + cmp #$24 ; CPU:$D099 PRG:1099 C9 24 + bne RunParticleBonusSequence_Block_13 ; CPU:$D09B PRG:109B D0 D3 + lda PlayerCountMinusOne ; CPU:$D09D PRG:109D A5 40 + beq RunParticleBonusSequence_Block_15 ; CPU:$D09F PRG:109F F0 07 + lda a:$006B ; CPU:$D0A1 PRG:10A1 AD 6B 00 + cmp #$24 ; CPU:$D0A4 PRG:10A4 C9 24 + bne RunParticleBonusSequence_Block_13 ; CPU:$D0A6 PRG:10A6 D0 C8 RunParticleBonusSequence_Block_15: - ldx #$0A ; CPU:$D0A6 PRG:10A6 A2 0A - jsr $F45E ; CPU:$D0A8 PRG:10A8 20 5E F4 - jsr $D121 ; CPU:$D0AB PRG:10AB 20 21 D1 - bne RunParticleBonusSequence_Block_17 ; CPU:$D0AE PRG:10AE D0 1C - lda SequenceDataLo ; CPU:$D0B0 PRG:10B0 AD 5B 05 - sta SequenceValueLo ; CPU:$D0B3 PRG:10B3 85 47 - lda SequenceDataHi ; CPU:$D0B5 PRG:10B5 AD 5C 05 - sta SequenceValueHi ; CPU:$D0B8 PRG:10B8 85 48 - lda PlayerCountMinusOne ; CPU:$D0BA PRG:10BA A5 40 - sta SequencePlayerIndex ; CPU:$D0BC PRG:10BC 85 3E + ldx #$0A ; CPU:$D0A8 PRG:10A8 A2 0A + jsr $F45E ; CPU:$D0AA PRG:10AA 20 5E F4 + jsr $D121 ; CPU:$D0AD PRG:10AD 20 21 D1 + bne RunParticleBonusSequence_Block_17 ; CPU:$D0B0 PRG:10B0 D0 1C + lda SequenceDataLo ; CPU:$D0B2 PRG:10B2 AD 5B 05 + sta SequenceValueLo ; CPU:$D0B5 PRG:10B5 85 47 + lda SequenceDataHi ; CPU:$D0B7 PRG:10B7 AD 5C 05 + sta SequenceValueHi ; CPU:$D0BA PRG:10BA 85 48 + lda PlayerCountMinusOne ; CPU:$D0BC PRG:10BC A5 40 + sta SequencePlayerIndex ; CPU:$D0BE PRG:10BE 85 3E RunParticleBonusSequence_Block_16: - jsr $D6DC ; CPU:$D0BE PRG:10BE 20 DC D6 - dec SequencePlayerIndex ; CPU:$D0C1 PRG:10C1 C6 3E - bpl RunParticleBonusSequence_Block_16 ; CPU:$D0C3 PRG:10C3 10 F9 - lda #$01 ; CPU:$D0C5 PRG:10C5 A9 01 - sta SoundRequestFlags1 ; CPU:$D0C7 PRG:10C7 85 F1 - jsr $F45C ; CPU:$D0C9 PRG:10C9 20 5C F4 + jsr $D6DC ; CPU:$D0C0 PRG:10C0 20 DC D6 + dec SequencePlayerIndex ; CPU:$D0C3 PRG:10C3 C6 3E + bpl RunParticleBonusSequence_Block_16 ; CPU:$D0C5 PRG:10C5 10 F9 + lda #$01 ; CPU:$D0C7 PRG:10C7 A9 01 + sta SoundRequestFlags1 ; CPU:$D0C9 PRG:10C9 85 F1 + jsr $F45C ; CPU:$D0CB PRG:10CB 20 5C F4 RunParticleBonusSequence_Block_17: - lda #$00 ; CPU:$D0CC PRG:10CC A9 00 - sta SequenceValueLo ; CPU:$D0CE PRG:10CE 85 47 - sta SequenceValueHi ; CPU:$D0D0 PRG:10D0 85 48 - ldx #$01 ; CPU:$D0D2 PRG:10D2 A2 01 + lda #$00 ; CPU:$D0CE PRG:10CE A9 00 + sta SequenceValueLo ; CPU:$D0D0 PRG:10D0 85 47 + sta SequenceValueHi ; CPU:$D0D2 PRG:10D2 85 48 + ldx #$01 ; CPU:$D0D4 PRG:10D4 A2 01 RunParticleBonusSequence_Block_18: - lda PlayerActiveFlags,x ; CPU:$D0D4 PRG:10D4 B5 41 - bpl RunParticleBonusSequence_Block_19 ; CPU:$D0D6 PRG:10D6 10 02 - sta PlayerSlotState,x ; CPU:$D0D8 PRG:10D8 95 88 + lda PlayerActiveFlags,x ; CPU:$D0D6 PRG:10D6 B5 41 + bpl RunParticleBonusSequence_Block_19 ; CPU:$D0D8 PRG:10D8 10 02 + sta PlayerSlotState,x ; CPU:$D0DA PRG:10DA 95 88 RunParticleBonusSequence_Block_19: - dex ; CPU:$D0DA PRG:10DA CA - bpl RunParticleBonusSequence_Block_18 ; CPU:$D0DB PRG:10DB 10 F7 - jmp $F353 ; CPU:$D0DD PRG:10DD 4C 53 F3 + dex ; CPU:$D0DC PRG:10DC CA + bpl RunParticleBonusSequence_Block_18 ; CPU:$D0DD PRG:10DD 10 F7 + jmp $F353 ; CPU:$D0DF PRG:10DF 4C 53 F3 ;=============================================================================== ; LoadParticleSequenceData ; @@ -3469,1150 +3754,1155 @@ RunParticleBonusSequence_Block_19: ; Returns: ; Sequence parameters loaded and result counters cleared. ; +; Clobbers: +; A and X, the N, Z and C flags, ParticleSequenceIndex, RoundSeedValue, +; ParticleScrollDelta, SequenceDataLo, SequenceDataHi, +; PlayerParticleHitCount, PlayerParticleHitCount2. +; ; PRG offsets: $10E2-$110C ; CPU range: $D0E2-$D10C ;=============================================================================== LoadParticleSequenceData: - ldx ParticleSequenceIndex ; CPU:$D0E0 PRG:10E0 AE 58 05 - lda ParticleSequenceIndexTable,x ; CPU:$D0E3 PRG:10E3 BD 0D D1 - sta ParticleSequenceValue ; CPU:$D0E6 PRG:10E6 8D 59 05 - lda ParticleSequenceValueTableA,x ; CPU:$D0E9 PRG:10E9 BD 12 D1 - sta ParticleScrollDelta ; CPU:$D0EC PRG:10EC 8D 5A 05 - lda ParticleSequenceValueTableB,x ; CPU:$D0EF PRG:10EF BD 17 D1 - sta SequenceDataLo ; CPU:$D0F2 PRG:10F2 8D 5B 05 - lda ParticleSequenceValueTableC,x ; CPU:$D0F5 PRG:10F5 BD 1C D1 - sta SequenceDataHi ; CPU:$D0F8 PRG:10F8 8D 5C 05 - cpx #$04 ; CPU:$D0FB PRG:10FB E0 04 - bcs LoadParticleSequenceData_Block ; CPU:$D0FD PRG:10FD B0 03 - inc ParticleSequenceIndex ; CPU:$D0FF PRG:10FF EE 58 05 + ldx ParticleSequenceIndex ; CPU:$D0E2 PRG:10E2 AE 58 05 + lda ParticleSequenceIndexTable,x ; CPU:$D0E5 PRG:10E5 BD 0D D1 + sta ParticleSequenceValue ; CPU:$D0E8 PRG:10E8 8D 59 05 + lda ParticleSequenceValueTableA,x ; CPU:$D0EB PRG:10EB BD 12 D1 + sta ParticleScrollDelta ; CPU:$D0EE PRG:10EE 8D 5A 05 + lda ParticleSequenceValueTableB,x ; CPU:$D0F1 PRG:10F1 BD 17 D1 + sta SequenceDataLo ; CPU:$D0F4 PRG:10F4 8D 5B 05 + lda ParticleSequenceValueTableC,x ; CPU:$D0F7 PRG:10F7 BD 1C D1 + sta SequenceDataHi ; CPU:$D0FA PRG:10FA 8D 5C 05 + cpx #$04 ; CPU:$D0FD PRG:10FD E0 04 + bcs LoadParticleSequenceData_Block ; CPU:$D0FF PRG:10FF B0 03 + inc ParticleSequenceIndex ; CPU:$D101 PRG:1101 EE 58 05 LoadParticleSequenceData_Block: - lda #$00 ; CPU:$D102 PRG:1102 A9 00 - sta PlayerParticleHitCount ; CPU:$D104 PRG:1104 8D CD 05 - sta PlayerParticleHitCount2 ; CPU:$D107 PRG:1107 8D CE 05 - rts ; CPU:$D10A PRG:110A 60 + lda #$00 ; CPU:$D104 PRG:1104 A9 00 + sta PlayerParticleHitCount ; CPU:$D106 PRG:1106 8D CD 05 + sta PlayerParticleHitCount2 ; CPU:$D109 PRG:1109 8D CE 05 + rts ; CPU:$D10C PRG:110C 60 ; Sequence parameter tables ParticleSequenceIndexTable: - .byte $03, $05, $07, $07, $07 ; CPU:$D10B PRG:110B 03 05 07 07 07 + .byte $03, $05, $07, $07, $07 ; CPU:$D10D PRG:110D 03 05 07 07 07 ParticleSequenceValueTableA: - .byte $80, $90, $98, $A0, $A8 ; CPU:$D110 PRG:1110 80 90 98 A0 A8 + .byte $80, $90, $98, $A0, $A8 ; CPU:$D112 PRG:1112 80 90 98 A0 A8 ParticleSequenceValueTableB: - .byte $01, $01, $02, $02, $03 ; CPU:$D115 PRG:1115 01 01 02 02 03 + .byte $01, $01, $02, $02, $03 ; CPU:$D117 PRG:1117 01 01 02 02 03 ParticleSequenceValueTableC: - .byte $00, $05, $00, $05, $00 ; CPU:$D11A PRG:111A 00 05 00 05 00 + .byte $00, $05, $00, $05, $00 ; CPU:$D11C PRG:111C 00 05 00 05 00 ; Sum player particle-hit totals SumParticleHitCounts: - lda PlayerParticleHitCount ; CPU:$D11F PRG:111F AD CD 05 - clc ; CPU:$D122 PRG:1122 18 - adc PlayerParticleHitCount2 ; CPU:$D123 PRG:1123 6D CE 05 - cmp #$14 ; CPU:$D126 PRG:1126 C9 14 - rts ; CPU:$D128 PRG:1128 60 + lda PlayerParticleHitCount ; CPU:$D121 PRG:1121 AD CD 05 + clc ; CPU:$D124 PRG:1124 18 + adc PlayerParticleHitCount2 ; CPU:$D125 PRG:1125 6D CE 05 + cmp #$14 ; CPU:$D128 PRG:1128 C9 14 + rts ; CPU:$D12A PRG:112A 60 ; Embedded PPU templates, strings, and position tables ($D12B-$D19F) ParticleResultsData: - .byte $3F, $00, $10, $0F, $30, $30, $30, $0F ; CPU:$D129 PRG:1129 3F 00 10 0F 30 30 30 0F - .byte $30, $27, $15, $0F, $30, $02, $21, $0F ; CPU:$D131 PRG:1131 30 27 15 0F 30 02 21 0F - .byte $16, $16, $16 ; CPU:$D139 PRG:1139 16 16 16 + .byte $3F, $00, $10, $0F, $30, $30, $30, $0F ; CPU:$D12B PRG:112B 3F 00 10 0F 30 30 30 0F + .byte $30, $27, $15, $0F, $30, $02, $21, $0F ; CPU:$D133 PRG:1133 30 27 15 0F 30 02 21 0F + .byte $16, $16, $16 ; CPU:$D13B PRG:113B 16 16 16 ParticleResultsPpuTemplate: - .byte $21, $73, $0B, $29, $00 ; CPU:$D13C PRG:113C 21 73 0B 29 00 - .byte $00, $00, $00, $00, $24, $19, $1D, $1C ; CPU:$D141 PRG:1141 00 00 00 00 24 19 1D 1C - .byte $26, $21, $F3, $0B, $29, $00, $00, $00 ; CPU:$D149 PRG:1149 26 21 F3 0B 29 00 00 00 - .byte $00, $00, $24, $19, $1D, $1C, $26, $23 ; CPU:$D151 PRG:1151 00 00 24 19 1D 1C 26 23 - .byte $E8, $08, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D159 PRG:1159 E8 08 FF FF FF FF FF FF - .byte $FF, $FF, $23, $C0, $08, $40, $50, $50 ; CPU:$D161 PRG:1161 FF FF 23 C0 08 40 50 50 - .byte $50, $50, $90, $A0, $A0, $22, $88, $11 ; CPU:$D169 PRG:1169 50 50 90 A0 A0 22 88 11 - .byte $19, $24, $0E, $24, $1B, $24, $0F, $24 ; CPU:$D171 PRG:1171 19 24 0E 24 1B 24 0F 24 - .byte $0E, $24, $0C, $24, $1D, $24, $2C, $2C ; CPU:$D179 PRG:1179 0E 24 0C 24 1D 24 2C 2C - .byte $2C ; CPU:$D181 PRG:1181 2C + .byte $21, $73, $0B, $29, $00 ; CPU:$D13E PRG:113E 21 73 0B 29 00 + .byte $00, $00, $00, $00, $24, $19, $1D, $1C ; CPU:$D143 PRG:1143 00 00 00 00 24 19 1D 1C + .byte $26, $21, $F3, $0B, $29, $00, $00, $00 ; CPU:$D14B PRG:114B 26 21 F3 0B 29 00 00 00 + .byte $00, $00, $24, $19, $1D, $1C, $26, $23 ; CPU:$D153 PRG:1153 00 00 24 19 1D 1C 26 23 + .byte $E8, $08, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D15B PRG:115B E8 08 FF FF FF FF FF FF + .byte $FF, $FF, $23, $C0, $08, $40, $50, $50 ; CPU:$D163 PRG:1163 FF FF 23 C0 08 40 50 50 + .byte $50, $50, $90, $A0, $A0, $22, $88, $11 ; CPU:$D16B PRG:116B 50 50 90 A0 A0 22 88 11 + .byte $19, $24, $0E, $24, $1B, $24, $0F, $24 ; CPU:$D173 PRG:1173 19 24 0E 24 1B 24 0F 24 + .byte $0E, $24, $0C, $24, $1D, $24, $2C, $2C ; CPU:$D17B PRG:117B 0E 24 0C 24 1D 24 2C 2C + .byte $2C ; CPU:$D183 PRG:1183 2C PlayerStartYTable: - .byte $22, $C6, $17, $1C, $1E, $19, $0E ; CPU:$D182 PRG:1182 22 C6 17 1C 1E 19 0E - .byte $1B, $24, $0B, $18, $17, $1E, $1C, $24 ; CPU:$D189 PRG:1189 1B 24 0B 18 17 1E 1C 24 - .byte $24, $24, $01, $00, $00, $00, $00, $19 ; CPU:$D191 PRG:1191 24 24 01 00 00 00 00 19 - .byte $1D, $1C, $2C ; CPU:$D199 PRG:1199 1D 1C 2C + .byte $22, $C6, $17, $1C, $1E, $19, $0E ; CPU:$D184 PRG:1184 22 C6 17 1C 1E 19 0E + .byte $1B, $24, $0B, $18, $17, $1E, $1C, $24 ; CPU:$D18B PRG:118B 1B 24 0B 18 17 1E 1C 24 + .byte $24, $24, $01, $00, $00, $00, $00, $19 ; CPU:$D193 PRG:1193 24 24 01 00 00 00 00 19 + .byte $1D, $1C, $2C ; CPU:$D19B PRG:119B 1D 1C 2C PlayerStartXTable: - .byte $50, $70 ; CPU:$D19C PRG:119C 50 70 + .byte $50, $70 ; CPU:$D19E PRG:119E 50 70 DrawParticleBonusResults: - ldx #$1C ; CPU:$D19E PRG:119E A2 1C + ldx #$1C ; CPU:$D1A0 PRG:11A0 A2 1C DrawParticleBonusResults_Block: - lda ParticleResultsPpuTemplate,x ; CPU:$D1A0 PRG:11A0 BD 3E D1 - sta PpuCommandData0,x ; CPU:$D1A3 PRG:11A3 95 57 - dex ; CPU:$D1A5 PRG:11A5 CA - bpl DrawParticleBonusResults_Block ; CPU:$D1A6 PRG:11A6 10 F8 - ldx #$04 ; CPU:$D1A8 PRG:11A8 A2 04 - ldy PlayerParticleHitCount ; CPU:$D1AA PRG:11AA AC CD 05 - jsr AddParticleResultDigits ; CPU:$D1AD PRG:11AD 20 DC D1 - ldx #$12 ; CPU:$D1B0 PRG:11B0 A2 12 - ldy PlayerParticleHitCount2 ; CPU:$D1B2 PRG:11B2 AC CE 05 - jsr AddParticleResultDigits ; CPU:$D1B5 PRG:11B5 20 DC D1 - jsr $C12D ; CPU:$D1B8 PRG:11B8 20 2D C1 - lda PlayerCountMinusOne ; CPU:$D1BB PRG:11BB A5 40 - bne DrawParticleBonusResults_Block_1 ; CPU:$D1BD PRG:11BD D0 01 - rts ; CPU:$D1BF PRG:11BF 60 + lda ParticleResultsPpuTemplate,x ; CPU:$D1A2 PRG:11A2 BD 3E D1 + sta PpuCommandData0,x ; CPU:$D1A5 PRG:11A5 95 57 + dex ; CPU:$D1A7 PRG:11A7 CA + bpl DrawParticleBonusResults_Block ; CPU:$D1A8 PRG:11A8 10 F8 + ldx #$04 ; CPU:$D1AA PRG:11AA A2 04 + ldy PlayerParticleHitCount ; CPU:$D1AC PRG:11AC AC CD 05 + jsr AddParticleResultDigits ; CPU:$D1AF PRG:11AF 20 DC D1 + ldx #$12 ; CPU:$D1B2 PRG:11B2 A2 12 + ldy PlayerParticleHitCount2 ; CPU:$D1B4 PRG:11B4 AC CE 05 + jsr AddParticleResultDigits ; CPU:$D1B7 PRG:11B7 20 DC D1 + jsr $C12D ; CPU:$D1BA PRG:11BA 20 2D C1 + lda PlayerCountMinusOne ; CPU:$D1BD PRG:11BD A5 40 + bne DrawParticleBonusResults_Block_1 ; CPU:$D1BF PRG:11BF D0 01 + rts ; CPU:$D1C1 PRG:11C1 60 DrawParticleBonusResults_Block_1: - lda #$65 ; CPU:$D1C0 PRG:11C0 A9 65 - ldy #$00 ; CPU:$D1C2 PRG:11C2 A0 00 - jmp $C131 ; CPU:$D1C4 PRG:11C4 4C 31 C1 + lda #$65 ; CPU:$D1C2 PRG:11C2 A9 65 + ldy #$00 ; CPU:$D1C4 PRG:11C4 A0 00 + jmp $C131 ; CPU:$D1C6 PRG:11C6 4C 31 C1 ConvertValueToDecimalDigits: - ldy #$00 ; CPU:$D1C7 PRG:11C7 A0 00 + ldy #$00 ; CPU:$D1C9 PRG:11C9 A0 00 ConvertValueToDecimalDigits_Block: - cmp #$0A ; CPU:$D1C9 PRG:11C9 C9 0A - bcc ConvertValueToDecimalDigits_Block_1 ; CPU:$D1CB PRG:11CB 90 06 - iny ; CPU:$D1CD PRG:11CD C8 - sbc #$0A ; CPU:$D1CE PRG:11CE E9 0A - jmp ConvertValueToDecimalDigits_Block ; CPU:$D1D0 PRG:11D0 4C CB D1 + cmp #$0A ; CPU:$D1CB PRG:11CB C9 0A + bcc ConvertValueToDecimalDigits_Block_1 ; CPU:$D1CD PRG:11CD 90 06 + iny ; CPU:$D1CF PRG:11CF C8 + sbc #$0A ; CPU:$D1D0 PRG:11D0 E9 0A + jmp ConvertValueToDecimalDigits_Block ; CPU:$D1D2 PRG:11D2 4C CB D1 ConvertValueToDecimalDigits_Block_1: - sty HudCommandTile0 ; CPU:$D1D3 PRG:11D3 84 5A - sta HudCommandTile1 ; CPU:$D1D5 PRG:11D5 85 5B - jmp $C119 ; CPU:$D1D7 PRG:11D7 4C 19 C1 + sty HudCommandTile0 ; CPU:$D1D5 PRG:11D5 84 5A + sta HudCommandTile1 ; CPU:$D1D7 PRG:11D7 85 5B + jmp $C119 ; CPU:$D1D9 PRG:11D9 4C 19 C1 AddParticleResultDigits: - dey ; CPU:$D1DA PRG:11DA 88 - bmi AddParticleResultDigits_Block_2 ; CPU:$D1DB PRG:11DB 30 1F - lda ParticleSequenceValue ; CPU:$D1DD PRG:11DD AD 59 05 - clc ; CPU:$D1E0 PRG:11E0 18 - adc PpuCommandData2,x ; CPU:$D1E1 PRG:11E1 75 59 - cmp #$0A ; CPU:$D1E3 PRG:11E3 C9 0A - bcc AddParticleResultDigits_Block ; CPU:$D1E5 PRG:11E5 90 04 - sbc #$0A ; CPU:$D1E7 PRG:11E7 E9 0A - inc PpuCommandData1,x ; CPU:$D1E9 PRG:11E9 F6 58 + dey ; CPU:$D1DC PRG:11DC 88 + bmi AddParticleResultDigits_Block_2 ; CPU:$D1DD PRG:11DD 30 1F + lda ParticleSequenceValue ; CPU:$D1DF PRG:11DF AD 59 05 + clc ; CPU:$D1E2 PRG:11E2 18 + adc PpuCommandData2,x ; CPU:$D1E3 PRG:11E3 75 59 + cmp #$0A ; CPU:$D1E5 PRG:11E5 C9 0A + bcc AddParticleResultDigits_Block ; CPU:$D1E7 PRG:11E7 90 04 + sbc #$0A ; CPU:$D1E9 PRG:11E9 E9 0A + inc PpuCommandData1,x ; CPU:$D1EB PRG:11EB F6 58 AddParticleResultDigits_Block: - sta PpuCommandData2,x ; CPU:$D1EB PRG:11EB 95 59 - lda PpuCommandData1,x ; CPU:$D1ED PRG:11ED B5 58 - cmp #$0A ; CPU:$D1EF PRG:11EF C9 0A - bcc AddParticleResultDigits_Block_1 ; CPU:$D1F1 PRG:11F1 90 06 - sbc #$0A ; CPU:$D1F3 PRG:11F3 E9 0A - inc PpuCommandData0,x ; CPU:$D1F5 PRG:11F5 F6 57 - sta PpuCommandData1,x ; CPU:$D1F7 PRG:11F7 95 58 + sta PpuCommandData2,x ; CPU:$D1ED PRG:11ED 95 59 + lda PpuCommandData1,x ; CPU:$D1EF PRG:11EF B5 58 + cmp #$0A ; CPU:$D1F1 PRG:11F1 C9 0A + bcc AddParticleResultDigits_Block_1 ; CPU:$D1F3 PRG:11F3 90 06 + sbc #$0A ; CPU:$D1F5 PRG:11F5 E9 0A + inc PpuCommandData0,x ; CPU:$D1F7 PRG:11F7 F6 57 + sta PpuCommandData1,x ; CPU:$D1F9 PRG:11F9 95 58 AddParticleResultDigits_Block_1: - jmp AddParticleResultDigits ; CPU:$D1F9 PRG:11F9 4C DC D1 + jmp AddParticleResultDigits ; CPU:$D1FB PRG:11FB 4C DC D1 AddParticleResultDigits_Block_2: - ldy #$00 ; CPU:$D1FC PRG:11FC A0 00 + ldy #$00 ; CPU:$D1FE PRG:11FE A0 00 AddParticleResultDigits_Block_3: - lda PpuCommandData0,x ; CPU:$D1FE PRG:11FE B5 57 - beq AddParticleResultDigits_Block_4 ; CPU:$D200 PRG:1200 F0 04 - cmp #$24 ; CPU:$D202 PRG:1202 C9 24 - bne AddParticleResultDigits_Block_5 ; CPU:$D204 PRG:1204 D0 0A + lda PpuCommandData0,x ; CPU:$D200 PRG:1200 B5 57 + beq AddParticleResultDigits_Block_4 ; CPU:$D202 PRG:1202 F0 04 + cmp #$24 ; CPU:$D204 PRG:1204 C9 24 + bne AddParticleResultDigits_Block_5 ; CPU:$D206 PRG:1206 D0 0A AddParticleResultDigits_Block_4: - lda #$24 ; CPU:$D206 PRG:1206 A9 24 - sta PpuCommandData0,x ; CPU:$D208 PRG:1208 95 57 - inx ; CPU:$D20A PRG:120A E8 - iny ; CPU:$D20B PRG:120B C8 - cpy #$04 ; CPU:$D20C PRG:120C C0 04 - bne AddParticleResultDigits_Block_3 ; CPU:$D20E PRG:120E D0 EE + lda #$24 ; CPU:$D208 PRG:1208 A9 24 + sta PpuCommandData0,x ; CPU:$D20A PRG:120A 95 57 + inx ; CPU:$D20C PRG:120C E8 + iny ; CPU:$D20D PRG:120D C8 + cpy #$04 ; CPU:$D20E PRG:120E C0 04 + bne AddParticleResultDigits_Block_3 ; CPU:$D210 PRG:1210 D0 EE AddParticleResultDigits_Block_5: - rts ; CPU:$D210 PRG:1210 60 + rts ; CPU:$D212 PRG:1212 60 DecrementDecimalDigits: - lda PpuCommandData2,x ; CPU:$D211 PRG:1211 B5 59 - cmp #$24 ; CPU:$D213 PRG:1213 C9 24 - beq DecrementDecimalDigits_Block_2 ; CPU:$D215 PRG:1215 F0 2A - tay ; CPU:$D217 PRG:1217 A8 - bne DecrementDecimalDigits_Block_1 ; CPU:$D218 PRG:1218 D0 1C - lda PpuCommandData1,x ; CPU:$D21A PRG:121A B5 58 - cmp #$24 ; CPU:$D21C PRG:121C C9 24 - beq DecrementDecimalDigits_Block_2 ; CPU:$D21E PRG:121E F0 21 - lda PpuCommandData1,x ; CPU:$D220 PRG:1220 B5 58 - bne DecrementDecimalDigits_Block ; CPU:$D222 PRG:1222 D0 0C - lda PpuCommandData0,x ; CPU:$D224 PRG:1224 B5 57 - cmp #$24 ; CPU:$D226 PRG:1226 C9 24 - beq DecrementDecimalDigits_Block_2 ; CPU:$D228 PRG:1228 F0 17 - lda #$0A ; CPU:$D22A PRG:122A A9 0A - sta PpuCommandData1,x ; CPU:$D22C PRG:122C 95 58 - dec PpuCommandData0,x ; CPU:$D22E PRG:122E D6 57 + lda PpuCommandData2,x ; CPU:$D213 PRG:1213 B5 59 + cmp #$24 ; CPU:$D215 PRG:1215 C9 24 + beq DecrementDecimalDigits_Block_2 ; CPU:$D217 PRG:1217 F0 2A + tay ; CPU:$D219 PRG:1219 A8 + bne DecrementDecimalDigits_Block_1 ; CPU:$D21A PRG:121A D0 1C + lda PpuCommandData1,x ; CPU:$D21C PRG:121C B5 58 + cmp #$24 ; CPU:$D21E PRG:121E C9 24 + beq DecrementDecimalDigits_Block_2 ; CPU:$D220 PRG:1220 F0 21 + lda PpuCommandData1,x ; CPU:$D222 PRG:1222 B5 58 + bne DecrementDecimalDigits_Block ; CPU:$D224 PRG:1224 D0 0C + lda PpuCommandData0,x ; CPU:$D226 PRG:1226 B5 57 + cmp #$24 ; CPU:$D228 PRG:1228 C9 24 + beq DecrementDecimalDigits_Block_2 ; CPU:$D22A PRG:122A F0 17 + lda #$0A ; CPU:$D22C PRG:122C A9 0A + sta PpuCommandData1,x ; CPU:$D22E PRG:122E 95 58 + dec PpuCommandData0,x ; CPU:$D230 PRG:1230 D6 57 DecrementDecimalDigits_Block: - lda #$0A ; CPU:$D230 PRG:1230 A9 0A - sta PpuCommandData2,x ; CPU:$D232 PRG:1232 95 59 - dec PpuCommandData1,x ; CPU:$D234 PRG:1234 D6 58 + lda #$0A ; CPU:$D232 PRG:1232 A9 0A + sta PpuCommandData2,x ; CPU:$D234 PRG:1234 95 59 + dec PpuCommandData1,x ; CPU:$D236 PRG:1236 D6 58 DecrementDecimalDigits_Block_1: - dec PpuCommandData2,x ; CPU:$D236 PRG:1236 D6 59 - txa ; CPU:$D238 PRG:1238 8A - pha ; CPU:$D239 PRG:1239 48 - lda #$0A ; CPU:$D23A PRG:123A A9 0A - jsr InitializeOrQueueObject ; CPU:$D23C PRG:123C 20 DE D6 - pla ; CPU:$D23F PRG:123F 68 - tax ; CPU:$D240 PRG:1240 AA + dec PpuCommandData2,x ; CPU:$D238 PRG:1238 D6 59 + txa ; CPU:$D23A PRG:123A 8A + pha ; CPU:$D23B PRG:123B 48 + lda #$0A ; CPU:$D23C PRG:123C A9 0A + jsr InitializeOrQueueObject ; CPU:$D23E PRG:123E 20 DE D6 + pla ; CPU:$D241 PRG:1241 68 + tax ; CPU:$D242 PRG:1242 AA DecrementDecimalDigits_Block_2: - jmp AddParticleResultDigits_Block_2 ; CPU:$D241 PRG:1241 4C FE D1 + jmp AddParticleResultDigits_Block_2 ; CPU:$D243 PRG:1243 4C FE D1 ClearPpuAndOamBuffers: - jsr $C10A ; CPU:$D244 PRG:1244 20 0A C1 - jsr $C0FA ; CPU:$D247 PRG:1247 20 FA C0 - lda #$20 ; CPU:$D24A PRG:124A A9 20 - sta PPUADDR ; CPU:$D24C PRG:124C 8D 06 20 - lda #$00 ; CPU:$D24F PRG:124F A9 00 - sta PPUADDR ; CPU:$D251 PRG:1251 8D 06 20 - jsr ClearNametable ; CPU:$D254 PRG:1254 20 75 D2 - jsr ClearNametable ; CPU:$D257 PRG:1257 20 75 D2 - jsr $C104 ; CPU:$D25A PRG:125A 20 04 C1 - jsr $C115 ; CPU:$D25D PRG:125D 20 15 C1 - ldx #$3F ; CPU:$D260 PRG:1260 A2 3F - ldy #$00 ; CPU:$D262 PRG:1262 A0 00 - sty $4C ; CPU:$D264 PRG:1264 84 4C + jsr $C10A ; CPU:$D246 PRG:1246 20 0A C1 + jsr $C0FA ; CPU:$D249 PRG:1249 20 FA C0 + lda #$20 ; CPU:$D24C PRG:124C A9 20 + sta PPUADDR ; CPU:$D24E PRG:124E 8D 06 20 + lda #$00 ; CPU:$D251 PRG:1251 A9 00 + sta PPUADDR ; CPU:$D253 PRG:1253 8D 06 20 + jsr ClearNametable ; CPU:$D256 PRG:1256 20 75 D2 + jsr ClearNametable ; CPU:$D259 PRG:1259 20 75 D2 + jsr $C104 ; CPU:$D25C PRG:125C 20 04 C1 + jsr $C115 ; CPU:$D25F PRG:125F 20 15 C1 + ldx #$3F ; CPU:$D262 PRG:1262 A2 3F + ldy #$00 ; CPU:$D264 PRG:1264 A0 00 + sty $4C ; CPU:$D266 PRG:1266 84 4C ClearPpuAndOamBuffers_Block: - lda #$F0 ; CPU:$D266 PRG:1266 A9 F0 - sta OamBuffer,y ; CPU:$D268 PRG:1268 99 00 02 - iny ; CPU:$D26B PRG:126B C8 - iny ; CPU:$D26C PRG:126C C8 - iny ; CPU:$D26D PRG:126D C8 - iny ; CPU:$D26E PRG:126E C8 - dex ; CPU:$D26F PRG:126F CA - bpl ClearPpuAndOamBuffers_Block ; CPU:$D270 PRG:1270 10 F4 - rts ; CPU:$D272 PRG:1272 60 + lda #$F0 ; CPU:$D268 PRG:1268 A9 F0 + sta OamBuffer,y ; CPU:$D26A PRG:126A 99 00 02 + iny ; CPU:$D26D PRG:126D C8 + iny ; CPU:$D26E PRG:126E C8 + iny ; CPU:$D26F PRG:126F C8 + iny ; CPU:$D270 PRG:1270 C8 + dex ; CPU:$D271 PRG:1271 CA + bpl ClearPpuAndOamBuffers_Block; CPU:$D272 PRG:1272 10 F4 + rts ; CPU:$D274 PRG:1274 60 ClearNametable: - ldx #$F0 ; CPU:$D273 PRG:1273 A2 F0 - lda #$24 ; CPU:$D275 PRG:1275 A9 24 + ldx #$F0 ; CPU:$D275 PRG:1275 A2 F0 + lda #$24 ; CPU:$D277 PRG:1277 A9 24 ClearNametable_Block: - sta PPUDATA ; CPU:$D277 PRG:1277 8D 07 20 - sta PPUDATA ; CPU:$D27A PRG:127A 8D 07 20 - sta PPUDATA ; CPU:$D27D PRG:127D 8D 07 20 - sta PPUDATA ; CPU:$D280 PRG:1280 8D 07 20 - dex ; CPU:$D283 PRG:1283 CA - bne ClearNametable_Block ; CPU:$D284 PRG:1284 D0 F1 - ldx #$40 ; CPU:$D286 PRG:1286 A2 40 - lda #$00 ; CPU:$D288 PRG:1288 A9 00 + sta PPUDATA ; CPU:$D279 PRG:1279 8D 07 20 + sta PPUDATA ; CPU:$D27C PRG:127C 8D 07 20 + sta PPUDATA ; CPU:$D27F PRG:127F 8D 07 20 + sta PPUDATA ; CPU:$D282 PRG:1282 8D 07 20 + dex ; CPU:$D285 PRG:1285 CA + bne ClearNametable_Block ; CPU:$D286 PRG:1286 D0 F1 + ldx #$40 ; CPU:$D288 PRG:1288 A2 40 + lda #$00 ; CPU:$D28A PRG:128A A9 00 ClearNametable_Block_1: - sta PPUDATA ; CPU:$D28A PRG:128A 8D 07 20 - dex ; CPU:$D28D PRG:128D CA - bne ClearNametable_Block_1 ; CPU:$D28E PRG:128E D0 FA - rts ; CPU:$D290 PRG:1290 60 + sta PPUDATA ; CPU:$D28C PRG:128C 8D 07 20 + dex ; CPU:$D28F PRG:128F CA + bne ClearNametable_Block_1 ; CPU:$D290 PRG:1290 D0 FA + rts ; CPU:$D292 PRG:1292 60 LoadStageObjectData: - jsr $C10A ; CPU:$D291 PRG:1291 20 0A C1 - jsr $C0FA ; CPU:$D294 PRG:1294 20 FA C0 - lda RenderingDisabledFlag ; CPU:$D297 PRG:1297 A5 16 - beq LoadStageObjectData_Block ; CPU:$D299 PRG:1299 F0 03 - jmp $D572 ; CPU:$D29B PRG:129B 4C 72 D5 + jsr $C10A ; CPU:$D293 PRG:1293 20 0A C1 + jsr $C0FA ; CPU:$D296 PRG:1296 20 FA C0 + lda RenderingDisabledFlag ; CPU:$D299 PRG:1299 A5 16 + beq LoadStageObjectData_Block ; CPU:$D29B PRG:129B F0 03 + jmp $D572 ; CPU:$D29D PRG:129D 4C 72 D5 LoadStageObjectData_Block: - ldy $3B ; CPU:$D29E PRG:129E A4 3B - lda StageStreamPointerLoTable,y ; CPU:$D2A0 PRG:12A0 B9 2A DB - sta RecordPtrLo ; CPU:$D2A3 PRG:12A3 85 1D - lda StageStreamPointerHiTable,y ; CPU:$D2A5 PRG:12A5 B9 3A DB - sta RecordPtrHi ; CPU:$D2A8 PRG:12A8 85 1E - jsr $D497 ; CPU:$D2AA PRG:12AA 20 97 D4 - ldx #$00 ; CPU:$D2AD PRG:12AD A2 00 + ldy $3B ; CPU:$D2A0 PRG:12A0 A4 3B + lda StageStreamPointerLoTable,y; CPU:$D2A2 PRG:12A2 B9 2A DB + sta RecordPtrLo ; CPU:$D2A5 PRG:12A5 85 1D + lda StageStreamPointerHiTable,y; CPU:$D2A7 PRG:12A7 B9 3A DB + sta RecordPtrHi ; CPU:$D2AA PRG:12AA 85 1E + jsr $D497 ; CPU:$D2AC PRG:12AC 20 97 D4 + ldx #$00 ; CPU:$D2AF PRG:12AF A2 00 LoadStageObjectData_Block_1: - jsr $D4E5 ; CPU:$D2AF PRG:12AF 20 E5 D4 - cmp #$FF ; CPU:$D2B2 PRG:12B2 C9 FF - beq LoadStageObjectData_Block_4 ; CPU:$D2B4 PRG:12B4 F0 6A - sta PpuCommandAddressHi ; CPU:$D2B6 PRG:12B6 85 54 - jsr $D4E5 ; CPU:$D2B8 PRG:12B8 20 E5 D4 - sta PpuCommandAddressLo ; CPU:$D2BB PRG:12BB 85 55 - ldy #$03 ; CPU:$D2BD PRG:12BD A0 03 + jsr $D4E5 ; CPU:$D2B1 PRG:12B1 20 E5 D4 + cmp #$FF ; CPU:$D2B4 PRG:12B4 C9 FF + beq LoadStageObjectData_Block_4; CPU:$D2B6 PRG:12B6 F0 6A + sta PpuCommandAddressHi ; CPU:$D2B8 PRG:12B8 85 54 + jsr $D4E5 ; CPU:$D2BA PRG:12BA 20 E5 D4 + sta PpuCommandAddressLo ; CPU:$D2BD PRG:12BD 85 55 + ldy #$03 ; CPU:$D2BF PRG:12BF A0 03 LoadStageObjectData_Block_2: - jsr $D4FB ; CPU:$D2BF PRG:12BF 20 FB D4 - lda #$04 ; CPU:$D2C2 PRG:12C2 A9 04 - sta Temp12 ; CPU:$D2C4 PRG:12C4 85 12 - lda $D493,y ; CPU:$D2C6 PRG:12C6 B9 93 D4 + jsr $D4FB ; CPU:$D2C1 PRG:12C1 20 FB D4 + lda #$04 ; CPU:$D2C4 PRG:12C4 A9 04 + sta Temp12 ; CPU:$D2C6 PRG:12C6 85 12 + lda $D493,y ; CPU:$D2C8 PRG:12C8 B9 93 D4 LoadStageObjectData_Block_3: - sta PPUDATA ; CPU:$D2C9 PRG:12C9 8D 07 20 - clc ; CPU:$D2CC PRG:12CC 18 - adc #$04 ; CPU:$D2CD PRG:12CD 69 04 - dec Temp12 ; CPU:$D2CF PRG:12CF C6 12 - bne LoadStageObjectData_Block_3 ; CPU:$D2D1 PRG:12D1 D0 F6 - inc PpuCommandAddressLo ; CPU:$D2D3 PRG:12D3 E6 55 - dey ; CPU:$D2D5 PRG:12D5 88 - bpl LoadStageObjectData_Block_2 ; CPU:$D2D6 PRG:12D6 10 E7 - lda PpuCommandAddressLo ; CPU:$D2D8 PRG:12D8 A5 55 - sec ; CPU:$D2DA PRG:12DA 38 - sbc #$04 ; CPU:$D2DB PRG:12DB E9 04 - sta PpuCommandAddressLo ; CPU:$D2DD PRG:12DD 85 55 - jsr $D51C ; CPU:$D2DF PRG:12DF 20 1C D5 - sta $A6,x ; CPU:$D2E2 PRG:12E2 95 A6 - inc PpuCommandAddressHi ; CPU:$D2E4 PRG:12E4 E6 54 - inc PpuCommandAddressHi ; CPU:$D2E6 PRG:12E6 E6 54 - jsr $D51C ; CPU:$D2E8 PRG:12E8 20 1C D5 - sta $A9,x ; CPU:$D2EB PRG:12EB 95 A9 - inc PpuCommandAddressLo ; CPU:$D2ED PRG:12ED E6 55 - inc PpuCommandAddressLo ; CPU:$D2EF PRG:12EF E6 55 - jsr $D51C ; CPU:$D2F1 PRG:12F1 20 1C D5 - sta $AF,x ; CPU:$D2F4 PRG:12F4 95 AF - dec PpuCommandAddressHi ; CPU:$D2F6 PRG:12F6 C6 54 - dec PpuCommandAddressHi ; CPU:$D2F8 PRG:12F8 C6 54 - jsr $D51C ; CPU:$D2FA PRG:12FA 20 1C D5 - sta $AC,x ; CPU:$D2FD PRG:12FD 95 AC - stx SelectedSpawnIndex ; CPU:$D2FF PRG:12FF 86 A4 - lda #$03 ; CPU:$D301 PRG:1301 A9 03 - jsr $C856 ; CPU:$D303 PRG:1303 20 56 C8 - jsr $C17C ; CPU:$D306 PRG:1306 20 7C C1 - ldx SelectedSpawnIndex ; CPU:$D309 PRG:1309 A6 A4 - lda PpuCommandAddressHi ; CPU:$D30B PRG:130B A5 54 - asl a ; CPU:$D30D PRG:130D 0A - asl a ; CPU:$D30E PRG:130E 0A - asl a ; CPU:$D30F PRG:130F 0A - clc ; CPU:$D310 PRG:1310 18 - adc #$10 ; CPU:$D311 PRG:1311 69 10 - sta RoundSpawnBaseX,x ; CPU:$D313 PRG:1313 95 B2 - lda PpuCommandAddressLo ; CPU:$D315 PRG:1315 A5 55 - asl a ; CPU:$D317 PRG:1317 0A - asl a ; CPU:$D318 PRG:1318 0A - asl a ; CPU:$D319 PRG:1319 0A - sta RoundSpawnBaseY,x ; CPU:$D31A PRG:131A 95 B5 - inx ; CPU:$D31C PRG:131C E8 - jmp LoadStageObjectData_Block_1 ; CPU:$D31D PRG:131D 4C B1 D2 + sta PPUDATA ; CPU:$D2CB PRG:12CB 8D 07 20 + clc ; CPU:$D2CE PRG:12CE 18 + adc #$04 ; CPU:$D2CF PRG:12CF 69 04 + dec Temp12 ; CPU:$D2D1 PRG:12D1 C6 12 + bne LoadStageObjectData_Block_3; CPU:$D2D3 PRG:12D3 D0 F6 + inc PpuCommandAddressLo ; CPU:$D2D5 PRG:12D5 E6 55 + dey ; CPU:$D2D7 PRG:12D7 88 + bpl LoadStageObjectData_Block_2; CPU:$D2D8 PRG:12D8 10 E7 + lda PpuCommandAddressLo ; CPU:$D2DA PRG:12DA A5 55 + sec ; CPU:$D2DC PRG:12DC 38 + sbc #$04 ; CPU:$D2DD PRG:12DD E9 04 + sta PpuCommandAddressLo ; CPU:$D2DF PRG:12DF 85 55 + jsr $D51C ; CPU:$D2E1 PRG:12E1 20 1C D5 + sta $A6,x ; CPU:$D2E4 PRG:12E4 95 A6 + inc PpuCommandAddressHi ; CPU:$D2E6 PRG:12E6 E6 54 + inc PpuCommandAddressHi ; CPU:$D2E8 PRG:12E8 E6 54 + jsr $D51C ; CPU:$D2EA PRG:12EA 20 1C D5 + sta $A9,x ; CPU:$D2ED PRG:12ED 95 A9 + inc PpuCommandAddressLo ; CPU:$D2EF PRG:12EF E6 55 + inc PpuCommandAddressLo ; CPU:$D2F1 PRG:12F1 E6 55 + jsr $D51C ; CPU:$D2F3 PRG:12F3 20 1C D5 + sta $AF,x ; CPU:$D2F6 PRG:12F6 95 AF + dec PpuCommandAddressHi ; CPU:$D2F8 PRG:12F8 C6 54 + dec PpuCommandAddressHi ; CPU:$D2FA PRG:12FA C6 54 + jsr $D51C ; CPU:$D2FC PRG:12FC 20 1C D5 + sta $AC,x ; CPU:$D2FF PRG:12FF 95 AC + stx SelectedSpawnIndex ; CPU:$D301 PRG:1301 86 A4 + lda #$03 ; CPU:$D303 PRG:1303 A9 03 + jsr $C856 ; CPU:$D305 PRG:1305 20 56 C8 + jsr $C17C ; CPU:$D308 PRG:1308 20 7C C1 + ldx SelectedSpawnIndex ; CPU:$D30B PRG:130B A6 A4 + lda PpuCommandAddressHi ; CPU:$D30D PRG:130D A5 54 + asl a ; CPU:$D30F PRG:130F 0A + asl a ; CPU:$D310 PRG:1310 0A + asl a ; CPU:$D311 PRG:1311 0A + clc ; CPU:$D312 PRG:1312 18 + adc #$10 ; CPU:$D313 PRG:1313 69 10 + sta RoundSpawnBaseX,x ; CPU:$D315 PRG:1315 95 B2 + lda PpuCommandAddressLo ; CPU:$D317 PRG:1317 A5 55 + asl a ; CPU:$D319 PRG:1319 0A + asl a ; CPU:$D31A PRG:131A 0A + asl a ; CPU:$D31B PRG:131B 0A + sta RoundSpawnBaseY,x ; CPU:$D31C PRG:131C 95 B5 + inx ; CPU:$D31E PRG:131E E8 + jmp LoadStageObjectData_Block_1; CPU:$D31F PRG:131F 4C B1 D2 LoadStageObjectData_Block_4: - dex ; CPU:$D320 PRG:1320 CA - stx RoundSpawnRandomLimit ; CPU:$D321 PRG:1321 86 A3 - ldx #$00 ; CPU:$D323 PRG:1323 A2 00 + dex ; CPU:$D322 PRG:1322 CA + stx RoundSpawnRandomLimit ; CPU:$D323 PRG:1323 86 A3 + ldx #$00 ; CPU:$D325 PRG:1325 A2 00 LoadStageObjectData_Block_5: - jsr $D4E5 ; CPU:$D325 PRG:1325 20 E5 D4 - cmp #$FF ; CPU:$D328 PRG:1328 C9 FF - beq LoadStageObjectData_Block_6 ; CPU:$D32A PRG:132A F0 50 - sta PpuCommandAddressHi ; CPU:$D32C PRG:132C 85 54 - jsr $D4E5 ; CPU:$D32E PRG:132E 20 E5 D4 - sta PpuCommandAddressLo ; CPU:$D331 PRG:1331 85 55 - jsr $D4E5 ; CPU:$D333 PRG:1333 20 E5 D4 - sta BonusObjectPhase,x ; CPU:$D336 PRG:1336 9D FA 05 - lda PpuCommandAddressHi ; CPU:$D339 PRG:1339 A5 54 - asl a ; CPU:$D33B PRG:133B 0A - asl a ; CPU:$D33C PRG:133C 0A - asl a ; CPU:$D33D PRG:133D 0A - adc #$0C ; CPU:$D33E PRG:133E 69 0C - sta BonusObjectPosX,x ; CPU:$D340 PRG:1340 9D D2 05 - lda PpuCommandAddressLo ; CPU:$D343 PRG:1343 A5 55 - asl a ; CPU:$D345 PRG:1345 0A - asl a ; CPU:$D346 PRG:1346 0A - asl a ; CPU:$D347 PRG:1347 0A - adc #$0C ; CPU:$D348 PRG:1348 69 0C - sta BonusObjectPosY,x ; CPU:$D34A PRG:134A 9D DC 05 - lda #$00 ; CPU:$D34D PRG:134D A9 00 - sta BonusObjectTimer,x ; CPU:$D34F PRG:134F 9D 04 06 - jsr $D4FB ; CPU:$D352 PRG:1352 20 FB D4 - sta BonusHudAddressLo,x ; CPU:$D355 PRG:1355 9D E6 05 - lda $13 ; CPU:$D358 PRG:1358 A5 13 - sta BonusHudAddressHi,x ; CPU:$D35A PRG:135A 9D F0 05 - jsr $D56C ; CPU:$D35D PRG:135D 20 6C D5 - jsr $D53C ; CPU:$D360 PRG:1360 20 3C D5 - inc PpuCommandAddressHi ; CPU:$D363 PRG:1363 E6 54 - inc PpuCommandAddressHi ; CPU:$D365 PRG:1365 E6 54 - jsr $D53C ; CPU:$D367 PRG:1367 20 3C D5 - inc PpuCommandAddressLo ; CPU:$D36A PRG:136A E6 55 - inc PpuCommandAddressLo ; CPU:$D36C PRG:136C E6 55 - jsr $D53C ; CPU:$D36E PRG:136E 20 3C D5 - dec PpuCommandAddressHi ; CPU:$D371 PRG:1371 C6 54 - dec PpuCommandAddressHi ; CPU:$D373 PRG:1373 C6 54 - jsr $D53C ; CPU:$D375 PRG:1375 20 3C D5 - inx ; CPU:$D378 PRG:1378 E8 - jmp LoadStageObjectData_Block_5 ; CPU:$D379 PRG:1379 4C 27 D3 + jsr $D4E5 ; CPU:$D327 PRG:1327 20 E5 D4 + cmp #$FF ; CPU:$D32A PRG:132A C9 FF + beq LoadStageObjectData_Block_6; CPU:$D32C PRG:132C F0 50 + sta PpuCommandAddressHi ; CPU:$D32E PRG:132E 85 54 + jsr $D4E5 ; CPU:$D330 PRG:1330 20 E5 D4 + sta PpuCommandAddressLo ; CPU:$D333 PRG:1333 85 55 + jsr $D4E5 ; CPU:$D335 PRG:1335 20 E5 D4 + sta BonusObjectPhase,x ; CPU:$D338 PRG:1338 9D FA 05 + lda PpuCommandAddressHi ; CPU:$D33B PRG:133B A5 54 + asl a ; CPU:$D33D PRG:133D 0A + asl a ; CPU:$D33E PRG:133E 0A + asl a ; CPU:$D33F PRG:133F 0A + adc #$0C ; CPU:$D340 PRG:1340 69 0C + sta BonusObjectPosX,x ; CPU:$D342 PRG:1342 9D D2 05 + lda PpuCommandAddressLo ; CPU:$D345 PRG:1345 A5 55 + asl a ; CPU:$D347 PRG:1347 0A + asl a ; CPU:$D348 PRG:1348 0A + asl a ; CPU:$D349 PRG:1349 0A + adc #$0C ; CPU:$D34A PRG:134A 69 0C + sta BonusObjectPosY,x ; CPU:$D34C PRG:134C 9D DC 05 + lda #$00 ; CPU:$D34F PRG:134F A9 00 + sta BonusObjectTimer,x ; CPU:$D351 PRG:1351 9D 04 06 + jsr $D4FB ; CPU:$D354 PRG:1354 20 FB D4 + sta BonusHudAddressLo,x ; CPU:$D357 PRG:1357 9D E6 05 + lda $13 ; CPU:$D35A PRG:135A A5 13 + sta BonusHudAddressHi,x ; CPU:$D35C PRG:135C 9D F0 05 + jsr $D56C ; CPU:$D35F PRG:135F 20 6C D5 + jsr $D53C ; CPU:$D362 PRG:1362 20 3C D5 + inc PpuCommandAddressHi ; CPU:$D365 PRG:1365 E6 54 + inc PpuCommandAddressHi ; CPU:$D367 PRG:1367 E6 54 + jsr $D53C ; CPU:$D369 PRG:1369 20 3C D5 + inc PpuCommandAddressLo ; CPU:$D36C PRG:136C E6 55 + inc PpuCommandAddressLo ; CPU:$D36E PRG:136E E6 55 + jsr $D53C ; CPU:$D370 PRG:1370 20 3C D5 + dec PpuCommandAddressHi ; CPU:$D373 PRG:1373 C6 54 + dec PpuCommandAddressHi ; CPU:$D375 PRG:1375 C6 54 + jsr $D53C ; CPU:$D377 PRG:1377 20 3C D5 + inx ; CPU:$D37A PRG:137A E8 + jmp LoadStageObjectData_Block_5; CPU:$D37B PRG:137B 4C 27 D3 LoadStageObjectData_Block_6: - dex ; CPU:$D37C PRG:137C CA - stx ActiveBonusObjectIndex ; CPU:$D37D PRG:137D 8E D1 05 - jsr $D4E5 ; CPU:$D380 PRG:1380 20 E5 D4 - sta DestinationPtrLo ; CPU:$D383 PRG:1383 85 1F - jsr $D4E5 ; CPU:$D385 PRG:1385 20 E5 D4 - sta DestinationPtrHi ; CPU:$D388 PRG:1388 85 20 - ldy #$00 ; CPU:$D38A PRG:138A A0 00 - lda (DestinationPtrLo),y ; CPU:$D38C PRG:138C B1 1F - tax ; CPU:$D38E PRG:138E AA - dex ; CPU:$D38F PRG:138F CA - bpl LoadStageObjectData_Block_7 ; CPU:$D390 PRG:1390 10 05 - inc $C8 ; CPU:$D392 PRG:1392 E6 C8 - jmp LoadStageObjectData_Block_9 ; CPU:$D394 PRG:1394 4C BA D3 + dex ; CPU:$D37E PRG:137E CA + stx ActiveBonusObjectIndex ; CPU:$D37F PRG:137F 8E D1 05 + jsr $D4E5 ; CPU:$D382 PRG:1382 20 E5 D4 + sta DestinationPtrLo ; CPU:$D385 PRG:1385 85 1F + jsr $D4E5 ; CPU:$D387 PRG:1387 20 E5 D4 + sta DestinationPtrHi ; CPU:$D38A PRG:138A 85 20 + ldy #$00 ; CPU:$D38C PRG:138C A0 00 + lda (DestinationPtrLo),y ; CPU:$D38E PRG:138E B1 1F + tax ; CPU:$D390 PRG:1390 AA + dex ; CPU:$D391 PRG:1391 CA + bpl LoadStageObjectData_Block_7; CPU:$D392 PRG:1392 10 05 + inc $C8 ; CPU:$D394 PRG:1394 E6 C8 + jmp LoadStageObjectData_Block_9; CPU:$D396 PRG:1396 4C BA D3 LoadStageObjectData_Block_7: - iny ; CPU:$D397 PRG:1397 C8 + iny ; CPU:$D399 PRG:1399 C8 LoadStageObjectData_Block_8: - lda (DestinationPtrLo),y ; CPU:$D398 PRG:1398 B1 1F - iny ; CPU:$D39A PRG:139A C8 - sta $93,x ; CPU:$D39B PRG:139B 95 93 - lda (DestinationPtrLo),y ; CPU:$D39D PRG:139D B1 1F - iny ; CPU:$D39F PRG:139F C8 - sta $9C,x ; CPU:$D3A0 PRG:13A0 95 9C - lda (DestinationPtrLo),y ; CPU:$D3A2 PRG:13A2 B1 1F - iny ; CPU:$D3A4 PRG:13A4 C8 - sta $0453,x ; CPU:$D3A5 PRG:13A5 9D 53 04 - lda #$02 ; CPU:$D3A8 PRG:13A8 A9 02 - sta $81,x ; CPU:$D3AA PRG:13AA 95 81 - lda #$01 ; CPU:$D3AC PRG:13AC A9 01 - sta $8A,x ; CPU:$D3AE PRG:13AE 95 8A - lda $C6 ; CPU:$D3B0 PRG:13B0 A5 C6 - sta $0441,x ; CPU:$D3B2 PRG:13B2 9D 41 04 - dex ; CPU:$D3B5 PRG:13B5 CA - bpl LoadStageObjectData_Block_8 ; CPU:$D3B6 PRG:13B6 10 E0 + lda (DestinationPtrLo),y ; CPU:$D39A PRG:139A B1 1F + iny ; CPU:$D39C PRG:139C C8 + sta $93,x ; CPU:$D39D PRG:139D 95 93 + lda (DestinationPtrLo),y ; CPU:$D39F PRG:139F B1 1F + iny ; CPU:$D3A1 PRG:13A1 C8 + sta $9C,x ; CPU:$D3A2 PRG:13A2 95 9C + lda (DestinationPtrLo),y ; CPU:$D3A4 PRG:13A4 B1 1F + iny ; CPU:$D3A6 PRG:13A6 C8 + sta $0453,x ; CPU:$D3A7 PRG:13A7 9D 53 04 + lda #$02 ; CPU:$D3AA PRG:13AA A9 02 + sta $81,x ; CPU:$D3AC PRG:13AC 95 81 + lda #$01 ; CPU:$D3AE PRG:13AE A9 01 + sta $8A,x ; CPU:$D3B0 PRG:13B0 95 8A + lda $C6 ; CPU:$D3B2 PRG:13B2 A5 C6 + sta $0441,x ; CPU:$D3B4 PRG:13B4 9D 41 04 + dex ; CPU:$D3B7 PRG:13B7 CA + bpl LoadStageObjectData_Block_8; CPU:$D3B8 PRG:13B8 10 E0 LoadStageObjectData_Block_9: - jsr $D4E5 ; CPU:$D3B8 PRG:13B8 20 E5 D4 - sta BoundsCandidateIndex ; CPU:$D3BB PRG:13BB 85 CD - jsr $D4E5 ; CPU:$D3BD PRG:13BD 20 E5 D4 - sta BoundsLeftPtrLo ; CPU:$D3C0 PRG:13C0 85 23 - jsr $D4E5 ; CPU:$D3C2 PRG:13C2 20 E5 D4 - tay ; CPU:$D3C5 PRG:13C5 A8 - sta BoundsLeftPtrHi ; CPU:$D3C6 PRG:13C6 85 24 - lda BoundsLeftPtrLo ; CPU:$D3C8 PRG:13C8 A5 23 - jsr $D48C ; CPU:$D3CA PRG:13CA 20 8C D4 - sta BoundsRightPtrLo ; CPU:$D3CD PRG:13CD 85 25 - sty BoundsRightPtrHi ; CPU:$D3CF PRG:13CF 84 26 - jsr $D48C ; CPU:$D3D1 PRG:13D1 20 8C D4 - sta BoundsTopPtrLo ; CPU:$D3D4 PRG:13D4 85 27 - sty BoundsTopPtrHi ; CPU:$D3D6 PRG:13D6 84 28 - jsr $D48C ; CPU:$D3D8 PRG:13D8 20 8C D4 - sta BoundsBottomPtrLo ; CPU:$D3DB PRG:13DB 85 29 - sty BoundsBottomPtrHi ; CPU:$D3DD PRG:13DD 84 2A - jsr $D5D9 ; CPU:$D3DF PRG:13DF 20 D9 D5 - jsr BuildStagePpuCommands ; CPU:$D3E2 PRG:13E2 20 ED D3 - jsr $C104 ; CPU:$D3E5 PRG:13E5 20 04 C1 - jmp $C115 ; CPU:$D3E8 PRG:13E8 4C 15 C1 + jsr $D4E5 ; CPU:$D3BA PRG:13BA 20 E5 D4 + sta BoundsCandidateIndex ; CPU:$D3BD PRG:13BD 85 CD + jsr $D4E5 ; CPU:$D3BF PRG:13BF 20 E5 D4 + sta BoundsLeftPtrLo ; CPU:$D3C2 PRG:13C2 85 23 + jsr $D4E5 ; CPU:$D3C4 PRG:13C4 20 E5 D4 + tay ; CPU:$D3C7 PRG:13C7 A8 + sta BoundsLeftPtrHi ; CPU:$D3C8 PRG:13C8 85 24 + lda BoundsLeftPtrLo ; CPU:$D3CA PRG:13CA A5 23 + jsr $D48C ; CPU:$D3CC PRG:13CC 20 8C D4 + sta BoundsRightPtrLo ; CPU:$D3CF PRG:13CF 85 25 + sty BoundsRightPtrHi ; CPU:$D3D1 PRG:13D1 84 26 + jsr $D48C ; CPU:$D3D3 PRG:13D3 20 8C D4 + sta BoundsTopPtrLo ; CPU:$D3D6 PRG:13D6 85 27 + sty BoundsTopPtrHi ; CPU:$D3D8 PRG:13D8 84 28 + jsr $D48C ; CPU:$D3DA PRG:13DA 20 8C D4 + sta BoundsBottomPtrLo ; CPU:$D3DD PRG:13DD 85 29 + sty BoundsBottomPtrHi ; CPU:$D3DF PRG:13DF 84 2A + jsr $D5D9 ; CPU:$D3E1 PRG:13E1 20 D9 D5 + jsr BuildStagePpuCommands ; CPU:$D3E4 PRG:13E4 20 ED D3 + jsr $C104 ; CPU:$D3E7 PRG:13E7 20 04 C1 + jmp $C115 ; CPU:$D3EA PRG:13EA 4C 15 C1 BuildStagePpuCommands: - ldx #$22 ; CPU:$D3EB PRG:13EB A2 22 + ldx #$22 ; CPU:$D3ED PRG:13ED A2 22 BuildStagePpuCommands_Block: - lda StagePaletteAndTileData,x ; CPU:$D3ED PRG:13ED BD 37 D4 - sta PpuCommandData0,x ; CPU:$D3F0 PRG:13F0 95 57 - dex ; CPU:$D3F2 PRG:13F2 CA - bpl BuildStagePpuCommands_Block ; CPU:$D3F3 PRG:13F3 10 F8 - lda $C8 ; CPU:$D3F5 PRG:13F5 A5 C8 - bne BuildStagePpuCommands_Block_3 ; CPU:$D3F7 PRG:13F7 D0 15 - lda $3B ; CPU:$D3F9 PRG:13F9 A5 3B - and #$0C ; CPU:$D3FB PRG:13FB 29 0C - ora #$03 ; CPU:$D3FD PRG:13FD 09 03 - tay ; CPU:$D3FF PRG:13FF A8 - ldx #$03 ; CPU:$D400 PRG:1400 A2 03 + lda StagePaletteAndTileData,x ; CPU:$D3EF PRG:13EF BD 37 D4 + sta PpuCommandData0,x ; CPU:$D3F2 PRG:13F2 95 57 + dex ; CPU:$D3F4 PRG:13F4 CA + bpl BuildStagePpuCommands_Block; CPU:$D3F5 PRG:13F5 10 F8 + lda $C8 ; CPU:$D3F7 PRG:13F7 A5 C8 + bne BuildStagePpuCommands_Block_3 ; CPU:$D3F9 PRG:13F9 D0 15 + lda $3B ; CPU:$D3FB PRG:13FB A5 3B + and #$0C ; CPU:$D3FD PRG:13FD 29 0C + ora #$03 ; CPU:$D3FF PRG:13FF 09 03 + tay ; CPU:$D401 PRG:1401 A8 + ldx #$03 ; CPU:$D402 PRG:1402 A2 03 BuildStagePpuCommands_Block_1: - lda $D45A,y ; CPU:$D402 PRG:1402 B9 5A D4 - sta HudCommandTile0,x ; CPU:$D405 PRG:1405 95 5A - dey ; CPU:$D407 PRG:1407 88 - dex ; CPU:$D408 PRG:1408 CA - bpl BuildStagePpuCommands_Block_1 ; CPU:$D409 PRG:1409 10 F7 + lda $D45A,y ; CPU:$D404 PRG:1404 B9 5A D4 + sta HudCommandTile0,x ; CPU:$D407 PRG:1407 95 5A + dey ; CPU:$D409 PRG:1409 88 + dex ; CPU:$D40A PRG:140A CA + bpl BuildStagePpuCommands_Block_1 ; CPU:$D40B PRG:140B 10 F7 BuildStagePpuCommands_Block_2: - jmp $C12D ; CPU:$D40B PRG:140B 4C 2D C1 + jmp $C12D ; CPU:$D40D PRG:140D 4C 2D C1 BuildStagePpuCommands_Block_3: - ldx ParticleSequenceIndex ; CPU:$D40E PRG:140E AE 58 05 - lda $D46A,x ; CPU:$D411 PRG:1411 BD 6A D4 - sta RecordPtrLo ; CPU:$D414 PRG:1414 85 1D - lda $D46F,x ; CPU:$D416 PRG:1416 BD 6F D4 - sta RecordPtrHi ; CPU:$D419 PRG:1419 85 1E - ldx #$03 ; CPU:$D41B PRG:141B A2 03 - ldy #$07 ; CPU:$D41D PRG:141D A0 07 + ldx ParticleSequenceIndex ; CPU:$D410 PRG:1410 AE 58 05 + lda $D46A,x ; CPU:$D413 PRG:1413 BD 6A D4 + sta RecordPtrLo ; CPU:$D416 PRG:1416 85 1D + lda $D46F,x ; CPU:$D418 PRG:1418 BD 6F D4 + sta RecordPtrHi ; CPU:$D41B PRG:141B 85 1E + ldx #$03 ; CPU:$D41D PRG:141D A2 03 + ldy #$07 ; CPU:$D41F PRG:141F A0 07 BuildStagePpuCommands_Block_4: - lda (RecordPtrLo),y ; CPU:$D41F PRG:141F B1 1D - sta $72,x ; CPU:$D421 PRG:1421 95 72 - dey ; CPU:$D423 PRG:1423 88 - dex ; CPU:$D424 PRG:1424 CA - bpl BuildStagePpuCommands_Block_4 ; CPU:$D425 PRG:1425 10 F8 - lda RenderingDisabledFlag ; CPU:$D427 PRG:1427 A5 16 - bne BuildStagePpuCommands_Block_2 ; CPU:$D429 PRG:1429 D0 E0 + lda (RecordPtrLo),y ; CPU:$D421 PRG:1421 B1 1D + sta $72,x ; CPU:$D423 PRG:1423 95 72 + dey ; CPU:$D425 PRG:1425 88 + dex ; CPU:$D426 PRG:1426 CA + bpl BuildStagePpuCommands_Block_4 ; CPU:$D427 PRG:1427 10 F8 + lda RenderingDisabledFlag ; CPU:$D429 PRG:1429 A5 16 + bne BuildStagePpuCommands_Block_2 ; CPU:$D42B PRG:142B D0 E0 BuildStagePpuCommands_Block_5: - lda (RecordPtrLo),y ; CPU:$D42B PRG:142B B1 1D - sta a:HudCommandTile0,y ; CPU:$D42D PRG:142D 99 5A 00 - dey ; CPU:$D430 PRG:1430 88 - bpl BuildStagePpuCommands_Block_5 ; CPU:$D431 PRG:1431 10 F8 - bmi BuildStagePpuCommands_Block_2 ; CPU:$D433 PRG:1433 30 D6 + lda (RecordPtrLo),y ; CPU:$D42D PRG:142D B1 1D + sta a:HudCommandTile0,y ; CPU:$D42F PRG:142F 99 5A 00 + dey ; CPU:$D432 PRG:1432 88 + bpl BuildStagePpuCommands_Block_5 ; CPU:$D433 PRG:1433 10 F8 + bmi BuildStagePpuCommands_Block_2 ; CPU:$D435 PRG:1435 30 D6 StagePaletteAndTileData: - .byte $3F, $00, $20, $0F, $2A, $09, $07, $0F ; CPU:$D435 PRG:1435 3F 00 20 0F 2A 09 07 0F - .byte $30, $27, $15, $0F, $30, $02, $21, $0F ; CPU:$D43D PRG:143D 30 27 15 0F 30 02 21 0F - .byte $30, $00, $10, $0F, $16, $12, $37, $0F ; CPU:$D445 PRG:1445 30 00 10 0F 16 12 37 0F - .byte $12, $16, $37, $0F, $17, $11, $35, $0F ; CPU:$D44D PRG:144D 12 16 37 0F 17 11 35 0F - .byte $17, $11, $2B, $0F, $2A, $09, $07, $0F ; CPU:$D455 PRG:1455 17 11 2B 0F 2A 09 07 0F - .byte $26, $06, $07, $0F, $1B, $0C, $07, $0F ; CPU:$D45D PRG:145D 26 06 07 0F 1B 0C 07 0F - .byte $2C, $01, $06, $74, $7C, $84, $84, $84 ; CPU:$D465 PRG:1465 2C 01 06 74 7C 84 84 84 - .byte $D4, $D4, $D4, $D4, $D4, $0F, $02, $08 ; CPU:$D46D PRG:146D D4 D4 D4 D4 D4 0F 02 08 - .byte $06, $0F, $2B, $30, $12, $0F, $07, $0A ; CPU:$D475 PRG:1475 06 0F 2B 30 12 0F 07 0A - .byte $19, $0F, $26, $30, $2B, $0F, $07, $0C ; CPU:$D47D PRG:147D 19 0F 26 30 2B 0F 07 0C - .byte $1C, $0F, $15, $30, $26 ; CPU:$D485 PRG:1485 1C 0F 15 30 26 + .byte $3F, $00, $20, $0F, $2A, $09, $07, $0F ; CPU:$D437 PRG:1437 3F 00 20 0F 2A 09 07 0F + .byte $30, $27, $15, $0F, $30, $02, $21, $0F ; CPU:$D43F PRG:143F 30 27 15 0F 30 02 21 0F + .byte $30, $00, $10, $0F, $16, $12, $37, $0F ; CPU:$D447 PRG:1447 30 00 10 0F 16 12 37 0F + .byte $12, $16, $37, $0F, $17, $11, $35, $0F ; CPU:$D44F PRG:144F 12 16 37 0F 17 11 35 0F + .byte $17, $11, $2B, $0F, $2A, $09, $07, $0F ; CPU:$D457 PRG:1457 17 11 2B 0F 2A 09 07 0F + .byte $26, $06, $07, $0F, $1B, $0C, $07, $0F ; CPU:$D45F PRG:145F 26 06 07 0F 1B 0C 07 0F + .byte $2C, $01, $06, $74, $7C, $84, $84, $84 ; CPU:$D467 PRG:1467 2C 01 06 74 7C 84 84 84 + .byte $D4, $D4, $D4, $D4, $D4, $0F, $02, $08 ; CPU:$D46F PRG:146F D4 D4 D4 D4 D4 0F 02 08 + .byte $06, $0F, $2B, $30, $12, $0F, $07, $0A ; CPU:$D477 PRG:1477 06 0F 2B 30 12 0F 07 0A + .byte $19, $0F, $26, $30, $2B, $0F, $07, $0C ; CPU:$D47F PRG:147F 19 0F 26 30 2B 0F 07 0C + .byte $1C, $0F, $15, $30, $26 ; CPU:$D487 PRG:1487 1C 0F 15 30 26 AddOffsetToStreamPointer: - sec ; CPU:$D48A PRG:148A 38 - adc BoundsCandidateIndex ; CPU:$D48B PRG:148B 65 CD - bcc AddOffsetToStreamPointer_Block ; CPU:$D48D PRG:148D 90 01 - iny ; CPU:$D48F PRG:148F C8 + sec ; CPU:$D48C PRG:148C 38 + adc BoundsCandidateIndex ; CPU:$D48D PRG:148D 65 CD + bcc AddOffsetToStreamPointer_Block ; CPU:$D48F PRG:148F 90 01 + iny ; CPU:$D491 PRG:1491 C8 AddOffsetToStreamPointer_Block: - rts ; CPU:$D490 PRG:1490 60 + rts ; CPU:$D492 PRG:1492 60 StreamPointerAdjustmentTable: - .byte $7F, $7E, $7D, $7C ; CPU:$D491 PRG:1491 7F 7E 7D 7C + .byte $7F, $7E, $7D, $7C ; CPU:$D493 PRG:1493 7F 7E 7D 7C DecodePpuCommandStream: - jsr ReadStageStreamByte ; CPU:$D495 PRG:1495 20 E5 D4 - sta DestinationPtrLo ; CPU:$D498 PRG:1498 85 1F - jsr ReadStageStreamByte ; CPU:$D49A PRG:149A 20 E5 D4 - sta DestinationPtrHi ; CPU:$D49D PRG:149D 85 20 - tax ; CPU:$D49F PRG:149F AA - beq DecodePpuCommandStream_Block_4 ; CPU:$D4A0 PRG:14A0 F0 40 + jsr ReadStageStreamByte ; CPU:$D497 PRG:1497 20 E5 D4 + sta DestinationPtrLo ; CPU:$D49A PRG:149A 85 1F + jsr ReadStageStreamByte ; CPU:$D49C PRG:149C 20 E5 D4 + sta DestinationPtrHi ; CPU:$D49F PRG:149F 85 20 + tax ; CPU:$D4A1 PRG:14A1 AA + beq DecodePpuCommandStream_Block_4 ; CPU:$D4A2 PRG:14A2 F0 40 DecodePpuCommandStream_Block: - jsr ReadPpuStreamByte ; CPU:$D4A2 PRG:14A2 20 F0 D4 - tax ; CPU:$D4A5 PRG:14A5 AA - beq DecodePpuCommandStream ; CPU:$D4A6 PRG:14A6 F0 ED - and #$7F ; CPU:$D4A8 PRG:14A8 29 7F - sta PPUADDR ; CPU:$D4AA PRG:14AA 8D 06 20 - jsr ReadPpuStreamByte ; CPU:$D4AD PRG:14AD 20 F0 D4 - sta PPUADDR ; CPU:$D4B0 PRG:14B0 8D 06 20 - jsr ReadPpuStreamByte ; CPU:$D4B3 PRG:14B3 20 F0 D4 - sta Temp12 ; CPU:$D4B6 PRG:14B6 85 12 - txa ; CPU:$D4B8 PRG:14B8 8A - and #$80 ; CPU:$D4B9 PRG:14B9 29 80 - lsr a ; CPU:$D4BB PRG:14BB 4A - lsr a ; CPU:$D4BC PRG:14BC 4A - lsr a ; CPU:$D4BD PRG:14BD 4A - lsr a ; CPU:$D4BE PRG:14BE 4A - lsr a ; CPU:$D4BF PRG:14BF 4A - ora PpuControlShadow ; CPU:$D4C0 PRG:14C0 05 00 - sta PPUCTRL ; CPU:$D4C2 PRG:14C2 8D 00 20 - txa ; CPU:$D4C5 PRG:14C5 8A - and #$40 ; CPU:$D4C6 PRG:14C6 29 40 - bne DecodePpuCommandStream_Block_2 ; CPU:$D4C8 PRG:14C8 D0 0C + jsr ReadPpuStreamByte ; CPU:$D4A4 PRG:14A4 20 F0 D4 + tax ; CPU:$D4A7 PRG:14A7 AA + beq DecodePpuCommandStream ; CPU:$D4A8 PRG:14A8 F0 ED + and #$7F ; CPU:$D4AA PRG:14AA 29 7F + sta PPUADDR ; CPU:$D4AC PRG:14AC 8D 06 20 + jsr ReadPpuStreamByte ; CPU:$D4AF PRG:14AF 20 F0 D4 + sta PPUADDR ; CPU:$D4B2 PRG:14B2 8D 06 20 + jsr ReadPpuStreamByte ; CPU:$D4B5 PRG:14B5 20 F0 D4 + sta Temp12 ; CPU:$D4B8 PRG:14B8 85 12 + txa ; CPU:$D4BA PRG:14BA 8A + and #$80 ; CPU:$D4BB PRG:14BB 29 80 + lsr a ; CPU:$D4BD PRG:14BD 4A + lsr a ; CPU:$D4BE PRG:14BE 4A + lsr a ; CPU:$D4BF PRG:14BF 4A + lsr a ; CPU:$D4C0 PRG:14C0 4A + lsr a ; CPU:$D4C1 PRG:14C1 4A + ora PpuControlShadow ; CPU:$D4C2 PRG:14C2 05 00 + sta PPUCTRL ; CPU:$D4C4 PRG:14C4 8D 00 20 + txa ; CPU:$D4C7 PRG:14C7 8A + and #$40 ; CPU:$D4C8 PRG:14C8 29 40 + bne DecodePpuCommandStream_Block_2 ; CPU:$D4CA PRG:14CA D0 0C DecodePpuCommandStream_Block_1: - jsr ReadPpuStreamByte ; CPU:$D4CA PRG:14CA 20 F0 D4 - sta PPUDATA ; CPU:$D4CD PRG:14CD 8D 07 20 - dec Temp12 ; CPU:$D4D0 PRG:14D0 C6 12 - bne DecodePpuCommandStream_Block_1 ; CPU:$D4D2 PRG:14D2 D0 F6 - beq DecodePpuCommandStream_Block ; CPU:$D4D4 PRG:14D4 F0 CC + jsr ReadPpuStreamByte ; CPU:$D4CC PRG:14CC 20 F0 D4 + sta PPUDATA ; CPU:$D4CF PRG:14CF 8D 07 20 + dec Temp12 ; CPU:$D4D2 PRG:14D2 C6 12 + bne DecodePpuCommandStream_Block_1 ; CPU:$D4D4 PRG:14D4 D0 F6 + beq DecodePpuCommandStream_Block ; CPU:$D4D6 PRG:14D6 F0 CC DecodePpuCommandStream_Block_2: - jsr ReadPpuStreamByte ; CPU:$D4D6 PRG:14D6 20 F0 D4 + jsr ReadPpuStreamByte ; CPU:$D4D8 PRG:14D8 20 F0 D4 DecodePpuCommandStream_Block_3: - sta PPUDATA ; CPU:$D4D9 PRG:14D9 8D 07 20 - dec Temp12 ; CPU:$D4DC PRG:14DC C6 12 - bne DecodePpuCommandStream_Block_3 ; CPU:$D4DE PRG:14DE D0 F9 - beq DecodePpuCommandStream_Block ; CPU:$D4E0 PRG:14E0 F0 C0 + sta PPUDATA ; CPU:$D4DB PRG:14DB 8D 07 20 + dec Temp12 ; CPU:$D4DE PRG:14DE C6 12 + bne DecodePpuCommandStream_Block_3 ; CPU:$D4E0 PRG:14E0 D0 F9 + beq DecodePpuCommandStream_Block ; CPU:$D4E2 PRG:14E2 F0 C0 DecodePpuCommandStream_Block_4: - rts ; CPU:$D4E2 PRG:14E2 60 + rts ; CPU:$D4E4 PRG:14E4 60 ReadStageStreamByte: - ldy #$00 ; CPU:$D4E3 PRG:14E3 A0 00 - lda (RecordPtrLo),y ; CPU:$D4E5 PRG:14E5 B1 1D - inc RecordPtrLo ; CPU:$D4E7 PRG:14E7 E6 1D - bne ReadStageStreamByte_Block ; CPU:$D4E9 PRG:14E9 D0 02 - inc RecordPtrHi ; CPU:$D4EB PRG:14EB E6 1E + ldy #$00 ; CPU:$D4E5 PRG:14E5 A0 00 + lda (RecordPtrLo),y ; CPU:$D4E7 PRG:14E7 B1 1D + inc RecordPtrLo ; CPU:$D4E9 PRG:14E9 E6 1D + bne ReadStageStreamByte_Block ; CPU:$D4EB PRG:14EB D0 02 + inc RecordPtrHi ; CPU:$D4ED PRG:14ED E6 1E ReadStageStreamByte_Block: - rts ; CPU:$D4ED PRG:14ED 60 + rts ; CPU:$D4EF PRG:14EF 60 ReadPpuStreamByte: - ldy #$00 ; CPU:$D4EE PRG:14EE A0 00 - lda (DestinationPtrLo),y ; CPU:$D4F0 PRG:14F0 B1 1F - inc DestinationPtrLo ; CPU:$D4F2 PRG:14F2 E6 1F - bne ReadPpuStreamByte_Block ; CPU:$D4F4 PRG:14F4 D0 02 - inc DestinationPtrHi ; CPU:$D4F6 PRG:14F6 E6 20 + ldy #$00 ; CPU:$D4F0 PRG:14F0 A0 00 + lda (DestinationPtrLo),y ; CPU:$D4F2 PRG:14F2 B1 1F + inc DestinationPtrLo ; CPU:$D4F4 PRG:14F4 E6 1F + bne ReadPpuStreamByte_Block ; CPU:$D4F6 PRG:14F6 D0 02 + inc DestinationPtrHi ; CPU:$D4F8 PRG:14F8 E6 20 ReadPpuStreamByte_Block: - rts ; CPU:$D4F8 PRG:14F8 60 + rts ; CPU:$D4FA PRG:14FA 60 ReadPpuStreamByte_Block_1: - lda PpuCommandAddressLo ; CPU:$D4F9 PRG:14F9 A5 55 - sta Temp12 ; CPU:$D4FB PRG:14FB 85 12 - lda #$00 ; CPU:$D4FD PRG:14FD A9 00 - asl Temp12 ; CPU:$D4FF PRG:14FF 06 12 - asl Temp12 ; CPU:$D501 PRG:1501 06 12 - asl Temp12 ; CPU:$D503 PRG:1503 06 12 - asl Temp12 ; CPU:$D505 PRG:1505 06 12 - rol a ; CPU:$D507 PRG:1507 2A - asl Temp12 ; CPU:$D508 PRG:1508 06 12 - rol a ; CPU:$D50A PRG:150A 2A - ora #$20 ; CPU:$D50B PRG:150B 09 20 - sta PPUADDR ; CPU:$D50D PRG:150D 8D 06 20 - sta $13 ; CPU:$D510 PRG:1510 85 13 - lda Temp12 ; CPU:$D512 PRG:1512 A5 12 - ora PpuCommandAddressHi ; CPU:$D514 PRG:1514 05 54 - sta PPUADDR ; CPU:$D516 PRG:1516 8D 06 20 - rts ; CPU:$D519 PRG:1519 60 + lda PpuCommandAddressLo ; CPU:$D4FB PRG:14FB A5 55 + sta Temp12 ; CPU:$D4FD PRG:14FD 85 12 + lda #$00 ; CPU:$D4FF PRG:14FF A9 00 + asl Temp12 ; CPU:$D501 PRG:1501 06 12 + asl Temp12 ; CPU:$D503 PRG:1503 06 12 + asl Temp12 ; CPU:$D505 PRG:1505 06 12 + asl Temp12 ; CPU:$D507 PRG:1507 06 12 + rol a ; CPU:$D509 PRG:1509 2A + asl Temp12 ; CPU:$D50A PRG:150A 06 12 + rol a ; CPU:$D50C PRG:150C 2A + ora #$20 ; CPU:$D50D PRG:150D 09 20 + sta PPUADDR ; CPU:$D50F PRG:150F 8D 06 20 + sta $13 ; CPU:$D512 PRG:1512 85 13 + lda Temp12 ; CPU:$D514 PRG:1514 A5 12 + ora PpuCommandAddressHi ; CPU:$D516 PRG:1516 05 54 + sta PPUADDR ; CPU:$D518 PRG:1518 8D 06 20 + rts ; CPU:$D51B PRG:151B 60 SetTileAddressFromCoordinates: - lda PpuCommandAddressLo ; CPU:$D51A PRG:151A A5 55 - and #$FC ; CPU:$D51C PRG:151C 29 FC - asl a ; CPU:$D51E PRG:151E 0A - sta Temp12 ; CPU:$D51F PRG:151F 85 12 - lda PpuCommandAddressHi ; CPU:$D521 PRG:1521 A5 54 - lsr a ; CPU:$D523 PRG:1523 4A - lsr a ; CPU:$D524 PRG:1524 4A - ora Temp12 ; CPU:$D525 PRG:1525 05 12 - ora #$C0 ; CPU:$D527 PRG:1527 09 C0 - pha ; CPU:$D529 PRG:1529 48 - lda PpuCommandAddressLo ; CPU:$D52A PRG:152A A5 55 - and #$02 ; CPU:$D52C PRG:152C 29 02 - sta Temp12 ; CPU:$D52E PRG:152E 85 12 - lda PpuCommandAddressHi ; CPU:$D530 PRG:1530 A5 54 - and #$02 ; CPU:$D532 PRG:1532 29 02 - lsr a ; CPU:$D534 PRG:1534 4A - ora Temp12 ; CPU:$D535 PRG:1535 05 12 - tay ; CPU:$D537 PRG:1537 A8 - pla ; CPU:$D538 PRG:1538 68 - rts ; CPU:$D539 PRG:1539 60 + lda PpuCommandAddressLo ; CPU:$D51C PRG:151C A5 55 + and #$FC ; CPU:$D51E PRG:151E 29 FC + asl a ; CPU:$D520 PRG:1520 0A + sta Temp12 ; CPU:$D521 PRG:1521 85 12 + lda PpuCommandAddressHi ; CPU:$D523 PRG:1523 A5 54 + lsr a ; CPU:$D525 PRG:1525 4A + lsr a ; CPU:$D526 PRG:1526 4A + ora Temp12 ; CPU:$D527 PRG:1527 05 12 + ora #$C0 ; CPU:$D529 PRG:1529 09 C0 + pha ; CPU:$D52B PRG:152B 48 + lda PpuCommandAddressLo ; CPU:$D52C PRG:152C A5 55 + and #$02 ; CPU:$D52E PRG:152E 29 02 + sta Temp12 ; CPU:$D530 PRG:1530 85 12 + lda PpuCommandAddressHi ; CPU:$D532 PRG:1532 A5 54 + and #$02 ; CPU:$D534 PRG:1534 29 02 + lsr a ; CPU:$D536 PRG:1536 4A + ora Temp12 ; CPU:$D537 PRG:1537 05 12 + tay ; CPU:$D539 PRG:1539 A8 + pla ; CPU:$D53A PRG:153A 68 + rts ; CPU:$D53B PRG:153B 60 ReadModifyAttributeByte: - lda #$23 ; CPU:$D53A PRG:153A A9 23 - sta PPUADDR ; CPU:$D53C PRG:153C 8D 06 20 - jsr SetTileAddressFromCoordinates ; CPU:$D53F PRG:153F 20 1C D5 - sta PPUADDR ; CPU:$D542 PRG:1542 8D 06 20 - lda PPUDATA ; CPU:$D545 PRG:1545 AD 07 20 - lda PPUDATA ; CPU:$D548 PRG:1548 AD 07 20 - and AttributeClearMaskTable,y ; CPU:$D54B PRG:154B 39 64 D5 - ora AttributeSetMaskTable,y ; CPU:$D54E PRG:154E 19 68 D5 - pha ; CPU:$D551 PRG:1551 48 - lda #$23 ; CPU:$D552 PRG:1552 A9 23 - sta PPUADDR ; CPU:$D554 PRG:1554 8D 06 20 - jsr SetTileAddressFromCoordinates ; CPU:$D557 PRG:1557 20 1C D5 - sta PPUADDR ; CPU:$D55A PRG:155A 8D 06 20 - pla ; CPU:$D55D PRG:155D 68 - sta PPUDATA ; CPU:$D55E PRG:155E 8D 07 20 - rts ; CPU:$D561 PRG:1561 60 + lda #$23 ; CPU:$D53C PRG:153C A9 23 + sta PPUADDR ; CPU:$D53E PRG:153E 8D 06 20 + jsr SetTileAddressFromCoordinates ; CPU:$D541 PRG:1541 20 1C D5 + sta PPUADDR ; CPU:$D544 PRG:1544 8D 06 20 + lda PPUDATA ; CPU:$D547 PRG:1547 AD 07 20 + lda PPUDATA ; CPU:$D54A PRG:154A AD 07 20 + and AttributeClearMaskTable,y ; CPU:$D54D PRG:154D 39 64 D5 + ora AttributeSetMaskTable,y ; CPU:$D550 PRG:1550 19 68 D5 + pha ; CPU:$D553 PRG:1553 48 + lda #$23 ; CPU:$D554 PRG:1554 A9 23 + sta PPUADDR ; CPU:$D556 PRG:1556 8D 06 20 + jsr SetTileAddressFromCoordinates ; CPU:$D559 PRG:1559 20 1C D5 + sta PPUADDR ; CPU:$D55C PRG:155C 8D 06 20 + pla ; CPU:$D55F PRG:155F 68 + sta PPUDATA ; CPU:$D560 PRG:1560 8D 07 20 + rts ; CPU:$D563 PRG:1563 60 AttributeClearMaskTable: - .byte $FC, $F3, $CF, $3F ; CPU:$D562 PRG:1562 FC F3 CF 3F + .byte $FC, $F3, $CF, $3F ; CPU:$D564 PRG:1564 FC F3 CF 3F AttributeSetMaskTable: - .byte $01, $04, $10, $40 ; CPU:$D566 PRG:1566 01 04 10 40 + .byte $01, $04, $10, $40 ; CPU:$D568 PRG:1568 01 04 10 40 InitializeNametablePatterns: - jsr $CCCB ; CPU:$D56A PRG:156A 20 CB CC - jmp $C17C ; CPU:$D56D PRG:156D 4C 7C C1 + jsr $CCCB ; CPU:$D56C PRG:156C 20 CB CC + jmp $C17C ; CPU:$D56F PRG:156F 4C 7C C1 InitializeNametablePatterns_Block: - lda #$C0 ; CPU:$D570 PRG:1570 A9 C0 - ldy #$23 ; CPU:$D572 PRG:1572 A0 23 - jsr WriteNametableHeaderPattern ; CPU:$D574 PRG:1574 20 93 D5 - lda #$C0 ; CPU:$D577 PRG:1577 A9 C0 - ldy #$27 ; CPU:$D579 PRG:1579 A0 27 - jsr WriteNametableHeaderPattern ; CPU:$D57B PRG:157B 20 93 D5 - ldy #$23 ; CPU:$D57E PRG:157E A0 23 - lda #$60 ; CPU:$D580 PRG:1580 A9 60 - jsr WriteNametableAttributePattern ; CPU:$D582 PRG:1582 20 B8 D5 - ldy #$27 ; CPU:$D585 PRG:1585 A0 27 - lda #$60 ; CPU:$D587 PRG:1587 A9 60 - jsr WriteNametableAttributePattern ; CPU:$D589 PRG:1589 20 B8 D5 - inc $C8 ; CPU:$D58C PRG:158C E6 C8 - jmp $D3E1 ; CPU:$D58E PRG:158E 4C E1 D3 + lda #$C0 ; CPU:$D572 PRG:1572 A9 C0 + ldy #$23 ; CPU:$D574 PRG:1574 A0 23 + jsr WriteNametableHeaderPattern; CPU:$D576 PRG:1576 20 93 D5 + lda #$C0 ; CPU:$D579 PRG:1579 A9 C0 + ldy #$27 ; CPU:$D57B PRG:157B A0 27 + jsr WriteNametableHeaderPattern; CPU:$D57D PRG:157D 20 93 D5 + ldy #$23 ; CPU:$D580 PRG:1580 A0 23 + lda #$60 ; CPU:$D582 PRG:1582 A9 60 + jsr WriteNametableAttributePattern ; CPU:$D584 PRG:1584 20 B8 D5 + ldy #$27 ; CPU:$D587 PRG:1587 A0 27 + lda #$60 ; CPU:$D589 PRG:1589 A9 60 + jsr WriteNametableAttributePattern ; CPU:$D58B PRG:158B 20 B8 D5 + inc $C8 ; CPU:$D58E PRG:158E E6 C8 + jmp $D3E1 ; CPU:$D590 PRG:1590 4C E1 D3 WriteNametableHeaderPattern: - sty PPUADDR ; CPU:$D591 PRG:1591 8C 06 20 - sta PPUADDR ; CPU:$D594 PRG:1594 8D 06 20 - ldx #$00 ; CPU:$D597 PRG:1597 A2 00 + sty PPUADDR ; CPU:$D593 PRG:1593 8C 06 20 + sta PPUADDR ; CPU:$D596 PRG:1596 8D 06 20 + ldx #$00 ; CPU:$D599 PRG:1599 A2 00 WriteNametableHeaderPattern_Block: - lda $DCAE,x ; CPU:$D599 PRG:1599 BD AE DC - sta PPUDATA ; CPU:$D59C PRG:159C 8D 07 20 - inx ; CPU:$D59F PRG:159F E8 - cpx #$08 ; CPU:$D5A0 PRG:15A0 E0 08 - bne WriteNametableHeaderPattern_Block ; CPU:$D5A2 PRG:15A2 D0 F5 - lda #$00 ; CPU:$D5A4 PRG:15A4 A9 00 - ldx #$28 ; CPU:$D5A6 PRG:15A6 A2 28 - jsr FillPpuBytes ; CPU:$D5A8 PRG:15A8 20 B1 D5 - lda #$AA ; CPU:$D5AB PRG:15AB A9 AA - ldx #$10 ; CPU:$D5AD PRG:15AD A2 10 + lda $DCAE,x ; CPU:$D59B PRG:159B BD AE DC + sta PPUDATA ; CPU:$D59E PRG:159E 8D 07 20 + inx ; CPU:$D5A1 PRG:15A1 E8 + cpx #$08 ; CPU:$D5A2 PRG:15A2 E0 08 + bne WriteNametableHeaderPattern_Block ; CPU:$D5A4 PRG:15A4 D0 F5 + lda #$00 ; CPU:$D5A6 PRG:15A6 A9 00 + ldx #$28 ; CPU:$D5A8 PRG:15A8 A2 28 + jsr FillPpuBytes ; CPU:$D5AA PRG:15AA 20 B1 D5 + lda #$AA ; CPU:$D5AD PRG:15AD A9 AA + ldx #$10 ; CPU:$D5AF PRG:15AF A2 10 FillPpuBytes: - sta PPUDATA ; CPU:$D5AF PRG:15AF 8D 07 20 - dex ; CPU:$D5B2 PRG:15B2 CA - bne FillPpuBytes ; CPU:$D5B3 PRG:15B3 D0 FA - rts ; CPU:$D5B5 PRG:15B5 60 + sta PPUDATA ; CPU:$D5B1 PRG:15B1 8D 07 20 + dex ; CPU:$D5B4 PRG:15B4 CA + bne FillPpuBytes ; CPU:$D5B5 PRG:15B5 D0 FA + rts ; CPU:$D5B7 PRG:15B7 60 WriteNametableAttributePattern: - sty PPUADDR ; CPU:$D5B6 PRG:15B6 8C 06 20 - sta PPUADDR ; CPU:$D5B9 PRG:15B9 8D 06 20 - ldx #$20 ; CPU:$D5BC PRG:15BC A2 20 - lda #$58 ; CPU:$D5BE PRG:15BE A9 58 - jsr WriteAttributeQuadrants ; CPU:$D5C0 PRG:15C0 20 C9 D5 - ldx #$40 ; CPU:$D5C3 PRG:15C3 A2 40 - lda #$5C ; CPU:$D5C5 PRG:15C5 A9 5C + sty PPUADDR ; CPU:$D5B8 PRG:15B8 8C 06 20 + sta PPUADDR ; CPU:$D5BB PRG:15BB 8D 06 20 + ldx #$20 ; CPU:$D5BE PRG:15BE A2 20 + lda #$58 ; CPU:$D5C0 PRG:15C0 A9 58 + jsr WriteAttributeQuadrants ; CPU:$D5C2 PRG:15C2 20 C9 D5 + ldx #$40 ; CPU:$D5C5 PRG:15C5 A2 40 + lda #$5C ; CPU:$D5C7 PRG:15C7 A9 5C WriteAttributeQuadrants: - sta Temp12 ; CPU:$D5C7 PRG:15C7 85 12 + sta Temp12 ; CPU:$D5C9 PRG:15C9 85 12 WriteAttributeQuadrants_Block: - txa ; CPU:$D5C9 PRG:15C9 8A - and #$03 ; CPU:$D5CA PRG:15CA 29 03 - eor #$03 ; CPU:$D5CC PRG:15CC 49 03 - ora Temp12 ; CPU:$D5CE PRG:15CE 05 12 - sta PPUDATA ; CPU:$D5D0 PRG:15D0 8D 07 20 - dex ; CPU:$D5D3 PRG:15D3 CA - bne WriteAttributeQuadrants_Block ; CPU:$D5D4 PRG:15D4 D0 F3 - rts ; CPU:$D5D6 PRG:15D6 60 + txa ; CPU:$D5CB PRG:15CB 8A + and #$03 ; CPU:$D5CC PRG:15CC 29 03 + eor #$03 ; CPU:$D5CE PRG:15CE 49 03 + ora Temp12 ; CPU:$D5D0 PRG:15D0 05 12 + sta PPUDATA ; CPU:$D5D2 PRG:15D2 8D 07 20 + dex ; CPU:$D5D5 PRG:15D5 CA + bne WriteAttributeQuadrants_Block ; CPU:$D5D6 PRG:15D6 D0 F3 + rts ; CPU:$D5D8 PRG:15D8 60 ScanNametableTiles: - ldx #$00 ; CPU:$D5D7 PRG:15D7 A2 00 + ldx #$00 ; CPU:$D5D9 PRG:15D9 A2 00 ScanNametableTiles_Block: - jsr GetNametableAddressForIndex ; CPU:$D5D9 PRG:15D9 20 51 D6 - jsr ClassifyNametableTile ; CPU:$D5DC PRG:15DC 20 F1 D5 - lda $51 ; CPU:$D5DF PRG:15DF A5 51 - ora #$04 ; CPU:$D5E1 PRG:15E1 09 04 - sta $51 ; CPU:$D5E3 PRG:15E3 85 51 - jsr ClassifyNametableTile ; CPU:$D5E5 PRG:15E5 20 F1 D5 - inx ; CPU:$D5E8 PRG:15E8 E8 - inx ; CPU:$D5E9 PRG:15E9 E8 - cpx #$80 ; CPU:$D5EA PRG:15EA E0 80 - bne ScanNametableTiles_Block ; CPU:$D5EC PRG:15EC D0 EB - rts ; CPU:$D5EE PRG:15EE 60 + jsr GetNametableAddressForIndex; CPU:$D5DB PRG:15DB 20 51 D6 + jsr ClassifyNametableTile ; CPU:$D5DE PRG:15DE 20 F1 D5 + lda $51 ; CPU:$D5E1 PRG:15E1 A5 51 + ora #$04 ; CPU:$D5E3 PRG:15E3 09 04 + sta $51 ; CPU:$D5E5 PRG:15E5 85 51 + jsr ClassifyNametableTile ; CPU:$D5E7 PRG:15E7 20 F1 D5 + inx ; CPU:$D5EA PRG:15EA E8 + inx ; CPU:$D5EB PRG:15EB E8 + cpx #$80 ; CPU:$D5EC PRG:15EC E0 80 + bne ScanNametableTiles_Block ; CPU:$D5EE PRG:15EE D0 EB + rts ; CPU:$D5F0 PRG:15F0 60 ClassifyNametableTile: - lda $51 ; CPU:$D5EF PRG:15EF A5 51 - sta PPUADDR ; CPU:$D5F1 PRG:15F1 8D 06 20 - lda PpuDestinationHi ; CPU:$D5F4 PRG:15F4 A5 50 - sta PPUADDR ; CPU:$D5F6 PRG:15F6 8D 06 20 - lda PPUDATA ; CPU:$D5F9 PRG:15F9 AD 07 20 - lda PPUDATA ; CPU:$D5FC PRG:15FC AD 07 20 - cmp #$24 ; CPU:$D5FF PRG:15FF C9 24 - bne ClassifyNametableTile_Block ; CPU:$D601 PRG:1601 D0 07 - txa ; CPU:$D603 PRG:1603 8A - and #$03 ; CPU:$D604 PRG:1604 29 03 - tay ; CPU:$D606 PRG:1606 A8 - jmp ClassifyNametableTile_Load ; CPU:$D607 PRG:1607 4C 3B D6 + lda $51 ; CPU:$D5F1 PRG:15F1 A5 51 + sta PPUADDR ; CPU:$D5F3 PRG:15F3 8D 06 20 + lda PpuDestinationHi ; CPU:$D5F6 PRG:15F6 A5 50 + sta PPUADDR ; CPU:$D5F8 PRG:15F8 8D 06 20 + lda PPUDATA ; CPU:$D5FB PRG:15FB AD 07 20 + lda PPUDATA ; CPU:$D5FE PRG:15FE AD 07 20 + cmp #$24 ; CPU:$D601 PRG:1601 C9 24 + bne ClassifyNametableTile_Block; CPU:$D603 PRG:1603 D0 07 + txa ; CPU:$D605 PRG:1605 8A + and #$03 ; CPU:$D606 PRG:1606 29 03 + tay ; CPU:$D608 PRG:1608 A8 + jmp ClassifyNametableTile_Load ; CPU:$D609 PRG:1609 4C 3B D6 ClassifyNametableTile_Block: - rts ; CPU:$D60A PRG:160A 60 + rts ; CPU:$D60C PRG:160C 60 ClassifyNametableTile_Block_1: - lda $4C ; CPU:$D60B PRG:160B A5 4C - beq ClassifyNametableTile_Block_3 ; CPU:$D60D PRG:160D F0 29 - dec $4C ; CPU:$D60F PRG:160F C6 4C - lda $4F ; CPU:$D611 PRG:1611 A5 4F - clc ; CPU:$D613 PRG:1613 18 - adc #$02 ; CPU:$D614 PRG:1614 69 02 - and #$3F ; CPU:$D616 PRG:1616 29 3F - sta $4F ; CPU:$D618 PRG:1618 85 4F - tax ; CPU:$D61A PRG:161A AA - jsr GetNametableAddressForIndex ; CPU:$D61B PRG:161B 20 51 D6 - lda $51 ; CPU:$D61E PRG:161E A5 51 - sta PPUADDR ; CPU:$D620 PRG:1620 8D 06 20 - lda PpuDestinationHi ; CPU:$D623 PRG:1623 A5 50 - sta PPUADDR ; CPU:$D625 PRG:1625 8D 06 20 - lda PPUDATA ; CPU:$D628 PRG:1628 AD 07 20 - lda PPUDATA ; CPU:$D62B PRG:162B AD 07 20 - ldy #$03 ; CPU:$D62E PRG:162E A0 03 + lda $4C ; CPU:$D60D PRG:160D A5 4C + beq ClassifyNametableTile_Block_3 ; CPU:$D60F PRG:160F F0 29 + dec $4C ; CPU:$D611 PRG:1611 C6 4C + lda $4F ; CPU:$D613 PRG:1613 A5 4F + clc ; CPU:$D615 PRG:1615 18 + adc #$02 ; CPU:$D616 PRG:1616 69 02 + and #$3F ; CPU:$D618 PRG:1618 29 3F + sta $4F ; CPU:$D61A PRG:161A 85 4F + tax ; CPU:$D61C PRG:161C AA + jsr GetNametableAddressForIndex; CPU:$D61D PRG:161D 20 51 D6 + lda $51 ; CPU:$D620 PRG:1620 A5 51 + sta PPUADDR ; CPU:$D622 PRG:1622 8D 06 20 + lda PpuDestinationHi ; CPU:$D625 PRG:1625 A5 50 + sta PPUADDR ; CPU:$D627 PRG:1627 8D 06 20 + lda PPUDATA ; CPU:$D62A PRG:162A AD 07 20 + lda PPUDATA ; CPU:$D62D PRG:162D AD 07 20 + ldy #$03 ; CPU:$D630 PRG:1630 A0 03 ClassifyNametableTile_Block_2: - cmp NametableTileClassTable,y ; CPU:$D630 PRG:1630 D9 4C D6 - beq ClassifyNametableTile_Load ; CPU:$D633 PRG:1633 F0 04 - dey ; CPU:$D635 PRG:1635 88 - bpl ClassifyNametableTile_Block_2 ; CPU:$D636 PRG:1636 10 F8 + cmp NametableTileClassTable,y ; CPU:$D632 PRG:1632 D9 4C D6 + beq ClassifyNametableTile_Load ; CPU:$D635 PRG:1635 F0 04 + dey ; CPU:$D637 PRG:1637 88 + bpl ClassifyNametableTile_Block_2 ; CPU:$D638 PRG:1638 10 F8 ClassifyNametableTile_Block_3: - rts ; CPU:$D638 PRG:1638 60 + rts ; CPU:$D63A PRG:163A 60 ClassifyNametableTile_Load: - lda $51 ; CPU:$D639 PRG:1639 A5 51 - sta PPUADDR ; CPU:$D63B PRG:163B 8D 06 20 - lda PpuDestinationHi ; CPU:$D63E PRG:163E A5 50 - sta PPUADDR ; CPU:$D640 PRG:1640 8D 06 20 - lda $D64D,y ; CPU:$D643 PRG:1643 B9 4D D6 - sta PPUDATA ; CPU:$D646 PRG:1646 8D 07 20 - rts ; CPU:$D649 PRG:1649 60 + lda $51 ; CPU:$D63B PRG:163B A5 51 + sta PPUADDR ; CPU:$D63D PRG:163D 8D 06 20 + lda PpuDestinationHi ; CPU:$D640 PRG:1640 A5 50 + sta PPUADDR ; CPU:$D642 PRG:1642 8D 06 20 + lda $D64D,y ; CPU:$D645 PRG:1645 B9 4D D6 + sta PPUDATA ; CPU:$D648 PRG:1648 8D 07 20 + rts ; CPU:$D64B PRG:164B 60 NametableTileClassTable: - .byte $24, $ED, $EE, $EF, $24 ; CPU:$D64A PRG:164A 24 ED EE EF 24 + .byte $24, $ED, $EE, $EF, $24 ; CPU:$D64C PRG:164C 24 ED EE EF 24 GetNametableAddressForIndex: - lda NametableAddressPairTable,x ; CPU:$D64F PRG:164F BD 5C D6 - sta PpuDestinationHi ; CPU:$D652 PRG:1652 85 50 - lda NametableAddressPairTable+1,x ; CPU:$D654 PRG:1654 BD 5D D6 - sta $51 ; CPU:$D657 PRG:1657 85 51 - rts ; CPU:$D659 PRG:1659 60 + lda NametableAddressPairTable,x; CPU:$D651 PRG:1651 BD 5C D6 + sta PpuDestinationHi ; CPU:$D654 PRG:1654 85 50 + lda NametableAddressPairTable+1,x ; CPU:$D656 PRG:1656 BD 5D D6 + sta $51 ; CPU:$D659 PRG:1659 85 51 + rts ; CPU:$D65B PRG:165B 60 NametableAddressPairTable: - .byte $63, $21, $A5, $21, $CB, $20, $B7, $20 ; CPU:$D65A PRG:165A 63 21 A5 21 CB 20 B7 20 - .byte $7D, $21, $9B, $22, $F2, $20, $49, $22 ; CPU:$D662 PRG:1662 7D 21 9B 22 F2 20 49 22 - .byte $6D, $21, $0B, $22, $92, $22, $95, $21 ; CPU:$D66A PRG:166A 6D 21 0B 22 92 22 95 21 - .byte $1C, $21, $48, $21, $E0, $20, $0B, $23 ; CPU:$D672 PRG:1672 1C 21 48 21 E0 20 0B 23 - .byte $CE, $20, $D0, $21, $06, $21, $19, $21 ; CPU:$D67A PRG:167A CE 20 D0 21 06 21 19 21 - .byte $30, $22, $8A, $22, $88, $22, $A4, $20 ; CPU:$D682 PRG:1682 30 22 8A 22 88 22 A4 20 - .byte $42, $22, $68, $21, $3C, $22, $36, $21 ; CPU:$D68A PRG:168A 42 22 68 21 3C 22 36 21 - .byte $CA, $21, $BC, $20, $96, $21, $4C, $21 ; CPU:$D692 PRG:1692 CA 21 BC 20 96 21 4C 21 - .byte $35, $22, $EF, $20, $68, $22, $A6, $20 ; CPU:$D69A PRG:169A 35 22 EF 20 68 22 A6 20 - .byte $BB, $21, $7A, $21, $EA, $20, $F1, $21 ; CPU:$D6A2 PRG:16A2 BB 21 7A 21 EA 20 F1 21 - .byte $C2, $20, $77, $21, $54, $21, $BA, $20 ; CPU:$D6AA PRG:16AA C2 20 77 21 54 21 BA 20 - .byte $C5, $22, $BE, $20, $FA, $20, $AE, $21 ; CPU:$D6B2 PRG:16B2 C5 22 BE 20 FA 20 AE 21 - .byte $46, $21, $9A, $21, $D2, $20, $3D, $21 ; CPU:$D6BA PRG:16BA 46 21 9A 21 D2 20 3D 21 - .byte $2B, $22, $B0, $20, $B6, $21, $AC, $20 ; CPU:$D6C2 PRG:16C2 2B 22 B0 20 B6 21 AC 20 - .byte $B3, $20, $DB, $20, $F6, $20, $2C, $21 ; CPU:$D6CA PRG:16CA B3 20 DB 20 F6 20 2C 21 - .byte $E7, $20, $62, $21, $E4, $21, $4E, $21 ; CPU:$D6D2 PRG:16D2 E7 20 62 21 E4 21 4E 21 + .byte $63, $21, $A5, $21, $CB, $20, $B7, $20 ; CPU:$D65C PRG:165C 63 21 A5 21 CB 20 B7 20 + .byte $7D, $21, $9B, $22, $F2, $20, $49, $22 ; CPU:$D664 PRG:1664 7D 21 9B 22 F2 20 49 22 + .byte $6D, $21, $0B, $22, $92, $22, $95, $21 ; CPU:$D66C PRG:166C 6D 21 0B 22 92 22 95 21 + .byte $1C, $21, $48, $21, $E0, $20, $0B, $23 ; CPU:$D674 PRG:1674 1C 21 48 21 E0 20 0B 23 + .byte $CE, $20, $D0, $21, $06, $21, $19, $21 ; CPU:$D67C PRG:167C CE 20 D0 21 06 21 19 21 + .byte $30, $22, $8A, $22, $88, $22, $A4, $20 ; CPU:$D684 PRG:1684 30 22 8A 22 88 22 A4 20 + .byte $42, $22, $68, $21, $3C, $22, $36, $21 ; CPU:$D68C PRG:168C 42 22 68 21 3C 22 36 21 + .byte $CA, $21, $BC, $20, $96, $21, $4C, $21 ; CPU:$D694 PRG:1694 CA 21 BC 20 96 21 4C 21 + .byte $35, $22, $EF, $20, $68, $22, $A6, $20 ; CPU:$D69C PRG:169C 35 22 EF 20 68 22 A6 20 + .byte $BB, $21, $7A, $21, $EA, $20, $F1, $21 ; CPU:$D6A4 PRG:16A4 BB 21 7A 21 EA 20 F1 21 + .byte $C2, $20, $77, $21, $54, $21, $BA, $20 ; CPU:$D6AC PRG:16AC C2 20 77 21 54 21 BA 20 + .byte $C5, $22, $BE, $20, $FA, $20, $AE, $21 ; CPU:$D6B4 PRG:16B4 C5 22 BE 20 FA 20 AE 21 + .byte $46, $21, $9A, $21, $D2, $20, $3D, $21 ; CPU:$D6BC PRG:16BC 46 21 9A 21 D2 20 3D 21 + .byte $2B, $22, $B0, $20, $B6, $21, $AC, $20 ; CPU:$D6C4 PRG:16C4 2B 22 B0 20 B6 21 AC 20 + .byte $B3, $20, $DB, $20, $F6, $20, $2C, $21 ; CPU:$D6CC PRG:16CC B3 20 DB 20 F6 20 2C 21 + .byte $E7, $20, $62, $21, $E4, $21, $4E, $21 ; CPU:$D6D4 PRG:16D4 E7 20 62 21 E4 21 4E 21 UpdateBonusScoreTotals: - lda #$00 ; CPU:$D6DA PRG:16DA A9 00 + lda #$00 ; CPU:$D6DC PRG:16DC A9 00 AccumulatePlayerBonusScore: - sta SelectedRecordIndex ; CPU:$D6DC PRG:16DC 85 43 - lda $3A ; CPU:$D6DE PRG:16DE A5 3A - beq AccumulatePlayerBonusScore_Block_1 ; CPU:$D6E0 PRG:16E0 F0 01 + sta SelectedRecordIndex ; CPU:$D6DE PRG:16DE 85 43 + lda $3A ; CPU:$D6E0 PRG:16E0 A5 3A + beq AccumulatePlayerBonusScore_Block_1 ; CPU:$D6E2 PRG:16E2 F0 01 AccumulatePlayerBonusScore_Block: - rts ; CPU:$D6E2 PRG:16E2 60 + rts ; CPU:$D6E4 PRG:16E4 60 AccumulatePlayerBonusScore_Block_1: - ldx SequencePlayerIndex ; CPU:$D6E3 PRG:16E3 A6 3E - cpx #$02 ; CPU:$D6E5 PRG:16E5 E0 02 - bcs AccumulatePlayerBonusScore_Block ; CPU:$D6E7 PRG:16E7 B0 F9 - lda PlayerActiveFlags,x ; CPU:$D6E9 PRG:16E9 B5 41 - bmi AccumulatePlayerBonusScore_Block ; CPU:$D6EB PRG:16EB 30 F5 - ldy #$64 ; CPU:$D6ED PRG:16ED A0 64 - jsr DivideBonusValue ; CPU:$D6EF PRG:16EF 20 7C D7 - clc ; CPU:$D6F2 PRG:16F2 18 - adc SequenceValueHi ; CPU:$D6F3 PRG:16F3 65 48 - sta $45 ; CPU:$D6F5 PRG:16F5 85 45 - ldy #$0A ; CPU:$D6F7 PRG:16F7 A0 0A - jsr DivideBonusValue ; CPU:$D6F9 PRG:16F9 20 7C D7 - sta $44 ; CPU:$D6FC PRG:16FC 85 44 - ldx $3F ; CPU:$D6FE PRG:16FE A6 3F - lda BonusScoreWeightTable,x ; CPU:$D700 PRG:1700 BD 79 D7 - sta PpuSourcePtrLo ; CPU:$D703 PRG:1703 85 21 - lda #$06 ; CPU:$D705 PRG:1705 A9 06 - sta PpuSourcePtrHi ; CPU:$D707 PRG:1707 85 22 - lda SequencePlayerIndex ; CPU:$D709 PRG:1709 A5 3E - asl a ; CPU:$D70B PRG:170B 0A - asl a ; CPU:$D70C PRG:170C 0A - ora SequencePlayerIndex ; CPU:$D70D PRG:170D 05 3E - tax ; CPU:$D70F PRG:170F AA - clc ; CPU:$D710 PRG:1710 18 - lda CurrentRecord,x ; CPU:$D711 PRG:1711 B5 03 - adc SelectedRecordIndex ; CPU:$D713 PRG:1713 65 43 - jsr ClampDecimalDigit ; CPU:$D715 PRG:1715 20 8F D7 - sta CurrentRecord,x ; CPU:$D718 PRG:1718 95 03 - lda $04,x ; CPU:$D71A PRG:171A B5 04 - adc $44 ; CPU:$D71C PRG:171C 65 44 - jsr ClampDecimalDigit ; CPU:$D71E PRG:171E 20 8F D7 - sta $04,x ; CPU:$D721 PRG:1721 95 04 - lda $05,x ; CPU:$D723 PRG:1723 B5 05 - adc $45 ; CPU:$D725 PRG:1725 65 45 - jsr ClampDecimalDigit ; CPU:$D727 PRG:1727 20 8F D7 - sta $05,x ; CPU:$D72A PRG:172A 95 05 - lda $06,x ; CPU:$D72C PRG:172C B5 06 - adc SequenceValueLo ; CPU:$D72E PRG:172E 65 47 - jsr ClampDecimalDigit ; CPU:$D730 PRG:1730 20 8F D7 - sta $06,x ; CPU:$D733 PRG:1733 95 06 - lda $07,x ; CPU:$D735 PRG:1735 B5 07 - adc #$00 ; CPU:$D737 PRG:1737 69 00 - jsr ClampDecimalDigit ; CPU:$D739 PRG:1739 20 8F D7 - sta $07,x ; CPU:$D73C PRG:173C 95 07 - inx ; CPU:$D73E PRG:173E E8 - inx ; CPU:$D73F PRG:173F E8 - inx ; CPU:$D740 PRG:1740 E8 - inx ; CPU:$D741 PRG:1741 E8 - ldy #$04 ; CPU:$D742 PRG:1742 A0 04 + ldx SequencePlayerIndex ; CPU:$D6E5 PRG:16E5 A6 3E + cpx #$02 ; CPU:$D6E7 PRG:16E7 E0 02 + bcs AccumulatePlayerBonusScore_Block ; CPU:$D6E9 PRG:16E9 B0 F9 + lda PlayerActiveFlags,x ; CPU:$D6EB PRG:16EB B5 41 + bmi AccumulatePlayerBonusScore_Block ; CPU:$D6ED PRG:16ED 30 F5 + ldy #$64 ; CPU:$D6EF PRG:16EF A0 64 + jsr DivideBonusValue ; CPU:$D6F1 PRG:16F1 20 7C D7 + clc ; CPU:$D6F4 PRG:16F4 18 + adc SequenceValueHi ; CPU:$D6F5 PRG:16F5 65 48 + sta $45 ; CPU:$D6F7 PRG:16F7 85 45 + ldy #$0A ; CPU:$D6F9 PRG:16F9 A0 0A + jsr DivideBonusValue ; CPU:$D6FB PRG:16FB 20 7C D7 + sta $44 ; CPU:$D6FE PRG:16FE 85 44 + ldx $3F ; CPU:$D700 PRG:1700 A6 3F + lda BonusScoreWeightTable,x ; CPU:$D702 PRG:1702 BD 79 D7 + sta PpuSourcePtrLo ; CPU:$D705 PRG:1705 85 21 + lda #$06 ; CPU:$D707 PRG:1707 A9 06 + sta PpuSourcePtrHi ; CPU:$D709 PRG:1709 85 22 + lda SequencePlayerIndex ; CPU:$D70B PRG:170B A5 3E + asl a ; CPU:$D70D PRG:170D 0A + asl a ; CPU:$D70E PRG:170E 0A + ora SequencePlayerIndex ; CPU:$D70F PRG:170F 05 3E + tax ; CPU:$D711 PRG:1711 AA + clc ; CPU:$D712 PRG:1712 18 + lda CurrentRecord,x ; CPU:$D713 PRG:1713 B5 03 + adc SelectedRecordIndex ; CPU:$D715 PRG:1715 65 43 + jsr ClampDecimalDigit ; CPU:$D717 PRG:1717 20 8F D7 + sta CurrentRecord,x ; CPU:$D71A PRG:171A 95 03 + lda $04,x ; CPU:$D71C PRG:171C B5 04 + adc $44 ; CPU:$D71E PRG:171E 65 44 + jsr ClampDecimalDigit ; CPU:$D720 PRG:1720 20 8F D7 + sta $04,x ; CPU:$D723 PRG:1723 95 04 + lda $05,x ; CPU:$D725 PRG:1725 B5 05 + adc $45 ; CPU:$D727 PRG:1727 65 45 + jsr ClampDecimalDigit ; CPU:$D729 PRG:1729 20 8F D7 + sta $05,x ; CPU:$D72C PRG:172C 95 05 + lda $06,x ; CPU:$D72E PRG:172E B5 06 + adc SequenceValueLo ; CPU:$D730 PRG:1730 65 47 + jsr ClampDecimalDigit ; CPU:$D732 PRG:1732 20 8F D7 + sta $06,x ; CPU:$D735 PRG:1735 95 06 + lda $07,x ; CPU:$D737 PRG:1737 B5 07 + adc #$00 ; CPU:$D739 PRG:1739 69 00 + jsr ClampDecimalDigit ; CPU:$D73B PRG:173B 20 8F D7 + sta $07,x ; CPU:$D73E PRG:173E 95 07 + inx ; CPU:$D740 PRG:1740 E8 + inx ; CPU:$D741 PRG:1741 E8 + inx ; CPU:$D742 PRG:1742 E8 + inx ; CPU:$D743 PRG:1743 E8 + ldy #$04 ; CPU:$D744 PRG:1744 A0 04 AccumulatePlayerBonusScore_Block_2: - lda CurrentRecord,x ; CPU:$D744 PRG:1744 B5 03 - cmp (PpuSourcePtrLo),y ; CPU:$D746 PRG:1746 D1 21 - bcc AccumulatePlayerBonusScore_Block_5 ; CPU:$D748 PRG:1748 90 19 - bne AccumulatePlayerBonusScore_Block_3 ; CPU:$D74A PRG:174A D0 04 - dex ; CPU:$D74C PRG:174C CA - dey ; CPU:$D74D PRG:174D 88 - bpl AccumulatePlayerBonusScore_Block_2 ; CPU:$D74E PRG:174E 10 F4 + lda CurrentRecord,x ; CPU:$D746 PRG:1746 B5 03 + cmp (PpuSourcePtrLo),y ; CPU:$D748 PRG:1748 D1 21 + bcc AccumulatePlayerBonusScore_Block_5 ; CPU:$D74A PRG:174A 90 19 + bne AccumulatePlayerBonusScore_Block_3 ; CPU:$D74C PRG:174C D0 04 + dex ; CPU:$D74E PRG:174E CA + dey ; CPU:$D74F PRG:174F 88 + bpl AccumulatePlayerBonusScore_Block_2 ; CPU:$D750 PRG:1750 10 F4 AccumulatePlayerBonusScore_Block_3: - ldy #$00 ; CPU:$D750 PRG:1750 A0 00 - lda SequencePlayerIndex ; CPU:$D752 PRG:1752 A5 3E - asl a ; CPU:$D754 PRG:1754 0A - asl a ; CPU:$D755 PRG:1755 0A - ora SequencePlayerIndex ; CPU:$D756 PRG:1756 05 3E - tax ; CPU:$D758 PRG:1758 AA + ldy #$00 ; CPU:$D752 PRG:1752 A0 00 + lda SequencePlayerIndex ; CPU:$D754 PRG:1754 A5 3E + asl a ; CPU:$D756 PRG:1756 0A + asl a ; CPU:$D757 PRG:1757 0A + ora SequencePlayerIndex ; CPU:$D758 PRG:1758 05 3E + tax ; CPU:$D75A PRG:175A AA AccumulatePlayerBonusScore_Block_4: - lda CurrentRecord,x ; CPU:$D759 PRG:1759 B5 03 - sta (PpuSourcePtrLo),y ; CPU:$D75B PRG:175B 91 21 - inx ; CPU:$D75D PRG:175D E8 - iny ; CPU:$D75E PRG:175E C8 - cpy #$05 ; CPU:$D75F PRG:175F C0 05 - bne AccumulatePlayerBonusScore_Block_4 ; CPU:$D761 PRG:1761 D0 F6 + lda CurrentRecord,x ; CPU:$D75B PRG:175B B5 03 + sta (PpuSourcePtrLo),y ; CPU:$D75D PRG:175D 91 21 + inx ; CPU:$D75F PRG:175F E8 + iny ; CPU:$D760 PRG:1760 C8 + cpy #$05 ; CPU:$D761 PRG:1761 C0 05 + bne AccumulatePlayerBonusScore_Block_4 ; CPU:$D763 PRG:1763 D0 F6 AccumulatePlayerBonusScore_Block_5: - ldy #$04 ; CPU:$D763 PRG:1763 A0 04 + ldy #$04 ; CPU:$D765 PRG:1765 A0 04 AccumulatePlayerBonusScore_Block_6: - lda (PpuSourcePtrLo),y ; CPU:$D765 PRG:1765 B1 21 - sta a:$000D,y ; CPU:$D767 PRG:1767 99 0D 00 - dey ; CPU:$D76A PRG:176A 88 - bpl AccumulatePlayerBonusScore_Block_6 ; CPU:$D76B PRG:176B 10 F8 - inc SequenceStep ; CPU:$D76D PRG:176D E6 46 - lda RenderingDisabledFlag ; CPU:$D76F PRG:176F A5 16 - beq AccumulatePlayerBonusScore_Block_7 ; CPU:$D771 PRG:1771 F0 03 - jsr $C539 ; CPU:$D773 PRG:1773 20 39 C5 + lda (PpuSourcePtrLo),y ; CPU:$D767 PRG:1767 B1 21 + sta a:$000D,y ; CPU:$D769 PRG:1769 99 0D 00 + dey ; CPU:$D76C PRG:176C 88 + bpl AccumulatePlayerBonusScore_Block_6 ; CPU:$D76D PRG:176D 10 F8 + inc SequenceStep ; CPU:$D76F PRG:176F E6 46 + lda RenderingDisabledFlag ; CPU:$D771 PRG:1771 A5 16 + beq AccumulatePlayerBonusScore_Block_7 ; CPU:$D773 PRG:1773 F0 03 + jsr $C539 ; CPU:$D775 PRG:1775 20 39 C5 AccumulatePlayerBonusScore_Block_7: - rts ; CPU:$D776 PRG:1776 60 + rts ; CPU:$D778 PRG:1778 60 BonusScoreWeightTable: - .byte $29, $2E, $33 ; CPU:$D777 PRG:1777 29 2E 33 + .byte $29, $2E, $33 ; CPU:$D779 PRG:1779 29 2E 33 DivideBonusValue: - sty Temp12 ; CPU:$D77A PRG:177A 84 12 - ldx #$FF ; CPU:$D77C PRG:177C A2 FF - lda SelectedRecordIndex ; CPU:$D77E PRG:177E A5 43 + sty Temp12 ; CPU:$D77C PRG:177C 84 12 + ldx #$FF ; CPU:$D77E PRG:177E A2 FF + lda SelectedRecordIndex ; CPU:$D780 PRG:1780 A5 43 DivideBonusValue_Block: - sec ; CPU:$D780 PRG:1780 38 - sbc Temp12 ; CPU:$D781 PRG:1781 E5 12 - inx ; CPU:$D783 PRG:1783 E8 - bcs DivideBonusValue_Block ; CPU:$D784 PRG:1784 B0 FA - clc ; CPU:$D786 PRG:1786 18 - adc Temp12 ; CPU:$D787 PRG:1787 65 12 - sta SelectedRecordIndex ; CPU:$D789 PRG:1789 85 43 - txa ; CPU:$D78B PRG:178B 8A - rts ; CPU:$D78C PRG:178C 60 + sec ; CPU:$D782 PRG:1782 38 + sbc Temp12 ; CPU:$D783 PRG:1783 E5 12 + inx ; CPU:$D785 PRG:1785 E8 + bcs DivideBonusValue_Block ; CPU:$D786 PRG:1786 B0 FA + clc ; CPU:$D788 PRG:1788 18 + adc Temp12 ; CPU:$D789 PRG:1789 65 12 + sta SelectedRecordIndex ; CPU:$D78B PRG:178B 85 43 + txa ; CPU:$D78D PRG:178D 8A + rts ; CPU:$D78E PRG:178E 60 ClampDecimalDigit: - cmp #$0A ; CPU:$D78D PRG:178D C9 0A - bcs ClampDecimalDigit_Block ; CPU:$D78F PRG:178F B0 01 - rts ; CPU:$D791 PRG:1791 60 + cmp #$0A ; CPU:$D78F PRG:178F C9 0A + bcs ClampDecimalDigit_Block ; CPU:$D791 PRG:1791 B0 01 + rts ; CPU:$D793 PRG:1793 60 ClampDecimalDigit_Block: - sec ; CPU:$D792 PRG:1792 38 - sbc #$0A ; CPU:$D793 PRG:1793 E9 0A - rts ; CPU:$D795 PRG:1795 60 + sec ; CPU:$D794 PRG:1794 38 + sbc #$0A ; CPU:$D795 PRG:1795 E9 0A + rts ; CPU:$D797 PRG:1797 60 DrawBonusResultScreen: - ldy SequenceStep ; CPU:$D796 PRG:1796 A4 46 - dey ; CPU:$D798 PRG:1798 88 - beq DrawBonusResultScreen_Block ; CPU:$D799 PRG:1799 F0 03 - bpl DrawBonusResultScreen_Block_5 ; CPU:$D79B PRG:179B 10 66 - rts ; CPU:$D79D PRG:179D 60 + ldy SequenceStep ; CPU:$D798 PRG:1798 A4 46 + dey ; CPU:$D79A PRG:179A 88 + beq DrawBonusResultScreen_Block; CPU:$D79B PRG:179B F0 03 + bpl DrawBonusResultScreen_Block_5 ; CPU:$D79D PRG:179D 10 66 + rts ; CPU:$D79F PRG:179F 60 DrawBonusResultScreen_Block: - lda #$20 ; CPU:$D79E PRG:179E A9 20 - sta PPUADDR ; CPU:$D7A0 PRG:17A0 8D 06 20 - lda #$43 ; CPU:$D7A3 PRG:17A3 A9 43 - sta PPUADDR ; CPU:$D7A5 PRG:17A5 8D 06 20 - lda #$8E ; CPU:$D7A8 PRG:17A8 A9 8E - sta PPUDATA ; CPU:$D7AA PRG:17AA 8D 07 20 - ldx #$04 ; CPU:$D7AD PRG:17AD A2 04 + lda #$20 ; CPU:$D7A0 PRG:17A0 A9 20 + sta PPUADDR ; CPU:$D7A2 PRG:17A2 8D 06 20 + lda #$43 ; CPU:$D7A5 PRG:17A5 A9 43 + sta PPUADDR ; CPU:$D7A7 PRG:17A7 8D 06 20 + lda #$8E ; CPU:$D7AA PRG:17AA A9 8E + sta PPUDATA ; CPU:$D7AC PRG:17AC 8D 07 20 + ldx #$04 ; CPU:$D7AF PRG:17AF A2 04 DrawBonusResultScreen_Block_1: - lda CurrentRecord,x ; CPU:$D7AF PRG:17AF B5 03 - sta PPUDATA ; CPU:$D7B1 PRG:17B1 8D 07 20 - dex ; CPU:$D7B4 PRG:17B4 CA - bpl DrawBonusResultScreen_Block_1 ; CPU:$D7B5 PRG:17B5 10 F8 - lda #$00 ; CPU:$D7B7 PRG:17B7 A9 00 - sta PPUDATA ; CPU:$D7B9 PRG:17B9 8D 07 20 - lda #$24 ; CPU:$D7BC PRG:17BC A9 24 - sta PPUDATA ; CPU:$D7BE PRG:17BE 8D 07 20 - sta PPUDATA ; CPU:$D7C1 PRG:17C1 8D 07 20 - ldx #$8C ; CPU:$D7C4 PRG:17C4 A2 8C - stx PPUDATA ; CPU:$D7C6 PRG:17C6 8E 07 20 - inx ; CPU:$D7C9 PRG:17C9 E8 - stx PPUDATA ; CPU:$D7CA PRG:17CA 8E 07 20 - ldx #$04 ; CPU:$D7CD PRG:17CD A2 04 + lda CurrentRecord,x ; CPU:$D7B1 PRG:17B1 B5 03 + sta PPUDATA ; CPU:$D7B3 PRG:17B3 8D 07 20 + dex ; CPU:$D7B6 PRG:17B6 CA + bpl DrawBonusResultScreen_Block_1 ; CPU:$D7B7 PRG:17B7 10 F8 + lda #$00 ; CPU:$D7B9 PRG:17B9 A9 00 + sta PPUDATA ; CPU:$D7BB PRG:17BB 8D 07 20 + lda #$24 ; CPU:$D7BE PRG:17BE A9 24 + sta PPUDATA ; CPU:$D7C0 PRG:17C0 8D 07 20 + sta PPUDATA ; CPU:$D7C3 PRG:17C3 8D 07 20 + ldx #$8C ; CPU:$D7C6 PRG:17C6 A2 8C + stx PPUDATA ; CPU:$D7C8 PRG:17C8 8E 07 20 + inx ; CPU:$D7CB PRG:17CB E8 + stx PPUDATA ; CPU:$D7CC PRG:17CC 8E 07 20 + ldx #$04 ; CPU:$D7CF PRG:17CF A2 04 DrawBonusResultScreen_Block_2: - lda $0D,x ; CPU:$D7CF PRG:17CF B5 0D - sta PPUDATA ; CPU:$D7D1 PRG:17D1 8D 07 20 - dex ; CPU:$D7D4 PRG:17D4 CA - bpl DrawBonusResultScreen_Block_2 ; CPU:$D7D5 PRG:17D5 10 F8 - lda #$00 ; CPU:$D7D7 PRG:17D7 A9 00 - sta PPUDATA ; CPU:$D7D9 PRG:17D9 8D 07 20 - lda #$24 ; CPU:$D7DC PRG:17DC A9 24 - sta PPUDATA ; CPU:$D7DE PRG:17DE 8D 07 20 - sta PPUDATA ; CPU:$D7E1 PRG:17E1 8D 07 20 - lda RenderingDisabledFlag ; CPU:$D7E4 PRG:17E4 A5 16 - bne DrawBonusValueDigits ; CPU:$D7E6 PRG:17E6 D0 6A - lda PlayerCountMinusOne ; CPU:$D7E8 PRG:17E8 A5 40 - beq DrawBonusResultScreen_Block_4 ; CPU:$D7EA PRG:17EA F0 14 - lda #$8F ; CPU:$D7EC PRG:17EC A9 8F - sta PPUDATA ; CPU:$D7EE PRG:17EE 8D 07 20 - ldx #$04 ; CPU:$D7F1 PRG:17F1 A2 04 + lda $0D,x ; CPU:$D7D1 PRG:17D1 B5 0D + sta PPUDATA ; CPU:$D7D3 PRG:17D3 8D 07 20 + dex ; CPU:$D7D6 PRG:17D6 CA + bpl DrawBonusResultScreen_Block_2 ; CPU:$D7D7 PRG:17D7 10 F8 + lda #$00 ; CPU:$D7D9 PRG:17D9 A9 00 + sta PPUDATA ; CPU:$D7DB PRG:17DB 8D 07 20 + lda #$24 ; CPU:$D7DE PRG:17DE A9 24 + sta PPUDATA ; CPU:$D7E0 PRG:17E0 8D 07 20 + sta PPUDATA ; CPU:$D7E3 PRG:17E3 8D 07 20 + lda RenderingDisabledFlag ; CPU:$D7E6 PRG:17E6 A5 16 + bne DrawBonusValueDigits ; CPU:$D7E8 PRG:17E8 D0 6A + lda PlayerCountMinusOne ; CPU:$D7EA PRG:17EA A5 40 + beq DrawBonusResultScreen_Block_4 ; CPU:$D7EC PRG:17EC F0 14 + lda #$8F ; CPU:$D7EE PRG:17EE A9 8F + sta PPUDATA ; CPU:$D7F0 PRG:17F0 8D 07 20 + ldx #$04 ; CPU:$D7F3 PRG:17F3 A2 04 DrawBonusResultScreen_Block_3: - lda $08,x ; CPU:$D7F3 PRG:17F3 B5 08 - sta PPUDATA ; CPU:$D7F5 PRG:17F5 8D 07 20 - dex ; CPU:$D7F8 PRG:17F8 CA - bpl DrawBonusResultScreen_Block_3 ; CPU:$D7F9 PRG:17F9 10 F8 - lda #$00 ; CPU:$D7FB PRG:17FB A9 00 - sta PPUDATA ; CPU:$D7FD PRG:17FD 8D 07 20 + lda $08,x ; CPU:$D7F5 PRG:17F5 B5 08 + sta PPUDATA ; CPU:$D7F7 PRG:17F7 8D 07 20 + dex ; CPU:$D7FA PRG:17FA CA + bpl DrawBonusResultScreen_Block_3 ; CPU:$D7FB PRG:17FB 10 F8 + lda #$00 ; CPU:$D7FD PRG:17FD A9 00 + sta PPUDATA ; CPU:$D7FF PRG:17FF 8D 07 20 DrawBonusResultScreen_Block_4: - dec SequenceStep ; CPU:$D800 PRG:1800 C6 46 - rts ; CPU:$D802 PRG:1802 60 + dec SequenceStep ; CPU:$D802 PRG:1802 C6 46 + rts ; CPU:$D804 PRG:1804 60 DrawBonusResultScreen_Block_5: - dec SequenceStep ; CPU:$D803 PRG:1803 C6 46 - lda #$20 ; CPU:$D805 PRG:1805 A9 20 - sta PPUADDR ; CPU:$D807 PRG:1807 8D 06 20 - lda #$62 ; CPU:$D80A PRG:180A A9 62 - sta PPUADDR ; CPU:$D80C PRG:180C 8D 06 20 - lda PlayerActiveFlags ; CPU:$D80F PRG:180F A5 41 - jsr DrawBonusMeter ; CPU:$D811 PRG:1811 20 26 D8 - lda PlayerCountMinusOne ; CPU:$D814 PRG:1814 A5 40 - beq DrawBonusMeter_Block_3 ; CPU:$D816 PRG:1816 F0 20 - lda #$20 ; CPU:$D818 PRG:1818 A9 20 - sta PPUADDR ; CPU:$D81A PRG:181A 8D 06 20 - lda #$75 ; CPU:$D81D PRG:181D A9 75 - sta PPUADDR ; CPU:$D81F PRG:181F 8D 06 20 - lda $42 ; CPU:$D822 PRG:1822 A5 42 + dec SequenceStep ; CPU:$D805 PRG:1805 C6 46 + lda #$20 ; CPU:$D807 PRG:1807 A9 20 + sta PPUADDR ; CPU:$D809 PRG:1809 8D 06 20 + lda #$62 ; CPU:$D80C PRG:180C A9 62 + sta PPUADDR ; CPU:$D80E PRG:180E 8D 06 20 + lda PlayerActiveFlags ; CPU:$D811 PRG:1811 A5 41 + jsr DrawBonusMeter ; CPU:$D813 PRG:1813 20 26 D8 + lda PlayerCountMinusOne ; CPU:$D816 PRG:1816 A5 40 + beq DrawBonusMeter_Block_3 ; CPU:$D818 PRG:1818 F0 20 + lda #$20 ; CPU:$D81A PRG:181A A9 20 + sta PPUADDR ; CPU:$D81C PRG:181C 8D 06 20 + lda #$75 ; CPU:$D81F PRG:181F A9 75 + sta PPUADDR ; CPU:$D821 PRG:1821 8D 06 20 + lda $42 ; CPU:$D824 PRG:1824 A5 42 DrawBonusMeter: - bmi DrawBonusMeter_Block_4 ; CPU:$D824 PRG:1824 30 13 + bmi DrawBonusMeter_Block_4 ; CPU:$D826 PRG:1826 30 13 DrawBonusMeter_Block: - sta PpuDestinationHi ; CPU:$D826 PRG:1826 85 50 - ldx #$06 ; CPU:$D828 PRG:1828 A2 06 + sta PpuDestinationHi ; CPU:$D828 PRG:1828 85 50 + ldx #$06 ; CPU:$D82A PRG:182A A2 06 DrawBonusMeter_Block_1: - lda #$24 ; CPU:$D82A PRG:182A A9 24 - cpx PpuDestinationHi ; CPU:$D82C PRG:182C E4 50 - bcs DrawBonusMeter_Block_2 ; CPU:$D82E PRG:182E B0 02 - lda #$2A ; CPU:$D830 PRG:1830 A9 2A + lda #$24 ; CPU:$D82C PRG:182C A9 24 + cpx PpuDestinationHi ; CPU:$D82E PRG:182E E4 50 + bcs DrawBonusMeter_Block_2 ; CPU:$D830 PRG:1830 B0 02 + lda #$2A ; CPU:$D832 PRG:1832 A9 2A DrawBonusMeter_Block_2: - sta PPUDATA ; CPU:$D832 PRG:1832 8D 07 20 - dex ; CPU:$D835 PRG:1835 CA - bpl DrawBonusMeter_Block_1 ; CPU:$D836 PRG:1836 10 F2 + sta PPUDATA ; CPU:$D834 PRG:1834 8D 07 20 + dex ; CPU:$D837 PRG:1837 CA + bpl DrawBonusMeter_Block_1 ; CPU:$D838 PRG:1838 10 F2 DrawBonusMeter_Block_3: - rts ; CPU:$D838 PRG:1838 60 + rts ; CPU:$D83A PRG:183A 60 DrawBonusMeter_Block_4: - lda PlayerCountMinusOne ; CPU:$D839 PRG:1839 A5 40 - beq DrawBonusMeter_Block ; CPU:$D83B PRG:183B F0 E9 - ldx #$08 ; CPU:$D83D PRG:183D A2 08 + lda PlayerCountMinusOne ; CPU:$D83B PRG:183B A5 40 + beq DrawBonusMeter_Block ; CPU:$D83D PRG:183D F0 E9 + ldx #$08 ; CPU:$D83F PRG:183F A2 08 DrawBonusMeter_Block_5: - lda BonusLabelTiles,x ; CPU:$D83F PRG:183F BD 4B D8 - sta PPUDATA ; CPU:$D842 PRG:1842 8D 07 20 - dex ; CPU:$D845 PRG:1845 CA - bpl DrawBonusMeter_Block_5 ; CPU:$D846 PRG:1846 10 F7 - rts ; CPU:$D848 PRG:1848 60 + lda BonusLabelTiles,x ; CPU:$D841 PRG:1841 BD 4B D8 + sta PPUDATA ; CPU:$D844 PRG:1844 8D 07 20 + dex ; CPU:$D847 PRG:1847 CA + bpl DrawBonusMeter_Block_5 ; CPU:$D848 PRG:1848 10 F7 + rts ; CPU:$D84A PRG:184A 60 BonusLabelTiles: - .byte $1B, $0E, $1F, $18, $24, $0E, $16, $0A ; CPU:$D849 PRG:1849 1B 0E 1F 18 24 0E 16 0A - .byte $10 ; CPU:$D851 PRG:1851 10 + .byte $1B, $0E, $1F, $18, $24, $0E, $16, $0A ; CPU:$D84B PRG:184B 1B 0E 1F 18 24 0E 16 0A + .byte $10 ; CPU:$D853 PRG:1853 10 DrawBonusValueDigits: - ldy #$04 ; CPU:$D852 PRG:1852 A0 04 + ldy #$04 ; CPU:$D854 PRG:1854 A0 04 DrawBonusValueDigits_Block: - lda BonusDigitOffsetTable,y ; CPU:$D854 PRG:1854 B9 6C D8 - sta PPUDATA ; CPU:$D857 PRG:1857 8D 07 20 - dey ; CPU:$D85A PRG:185A 88 - bpl DrawBonusValueDigits_Block ; CPU:$D85B PRG:185B 10 F7 - lda ScaledRecordValue ; CPU:$D85D PRG:185D A5 4A - sta PPUDATA ; CPU:$D85F PRG:185F 8D 07 20 - lda SelectedRecordIndexCopy ; CPU:$D862 PRG:1862 A5 49 - sta PPUDATA ; CPU:$D864 PRG:1864 8D 07 20 - dec SequenceStep ; CPU:$D867 PRG:1867 C6 46 - rts ; CPU:$D869 PRG:1869 60 + lda BonusDigitOffsetTable,y ; CPU:$D856 PRG:1856 B9 6C D8 + sta PPUDATA ; CPU:$D859 PRG:1859 8D 07 20 + dey ; CPU:$D85C PRG:185C 88 + bpl DrawBonusValueDigits_Block ; CPU:$D85D PRG:185D 10 F7 + lda ScaledRecordValue ; CPU:$D85F PRG:185F A5 4A + sta PPUDATA ; CPU:$D861 PRG:1861 8D 07 20 + lda SelectedRecordIndexCopy ; CPU:$D864 PRG:1864 A5 49 + sta PPUDATA ; CPU:$D866 PRG:1866 8D 07 20 + dec SequenceStep ; CPU:$D869 PRG:1869 C6 46 + rts ; CPU:$D86B PRG:186B 60 BonusDigitOffsetTable: - .byte $FB, $FA, $F9, $F8, $F7 ; CPU:$D86A PRG:186A FB FA F9 F8 F7 + .byte $FB, $FA, $F9, $F8, $F7 ; CPU:$D86C PRG:186C FB FA F9 F8 F7 CreateBonusResultSprites: - sta Temp12 ; CPU:$D86F PRG:186F 85 12 - stx $13 ; CPU:$D871 PRG:1871 86 13 - sty SpawnParameter ; CPU:$D873 PRG:1873 84 14 - ldx #$01 ; CPU:$D875 PRG:1875 A2 01 + sta Temp12 ; CPU:$D871 PRG:1871 85 12 + stx $13 ; CPU:$D873 PRG:1873 86 13 + sty SpawnParameter ; CPU:$D875 PRG:1875 84 14 + ldx #$01 ; CPU:$D877 PRG:1877 A2 01 CreateBonusResultSprites_Block: - lda $061A,x ; CPU:$D877 PRG:1877 BD 1A 06 - bmi CreateBonusResultSprites_Block_1 ; CPU:$D87A PRG:187A 30 0E - dex ; CPU:$D87C PRG:187C CA - bpl CreateBonusResultSprites_Block ; CPU:$D87D PRG:187D 10 F8 - ldx #$01 ; CPU:$D87F PRG:187F A2 01 - lda $0619 ; CPU:$D881 PRG:1881 AD 19 06 - cmp $0618 ; CPU:$D884 PRG:1884 CD 18 06 - bcc CreateBonusResultSprites_Block_1 ; CPU:$D887 PRG:1887 90 01 - dex ; CPU:$D889 PRG:1889 CA + lda $061A,x ; CPU:$D879 PRG:1879 BD 1A 06 + bmi CreateBonusResultSprites_Block_1 ; CPU:$D87C PRG:187C 30 0E + dex ; CPU:$D87E PRG:187E CA + bpl CreateBonusResultSprites_Block ; CPU:$D87F PRG:187F 10 F8 + ldx #$01 ; CPU:$D881 PRG:1881 A2 01 + lda $0619 ; CPU:$D883 PRG:1883 AD 19 06 + cmp $0618 ; CPU:$D886 PRG:1886 CD 18 06 + bcc CreateBonusResultSprites_Block_1 ; CPU:$D889 PRG:1889 90 01 + dex ; CPU:$D88B PRG:188B CA CreateBonusResultSprites_Block_1: - lda #$64 ; CPU:$D88A PRG:188A A9 64 - sta $0618,x ; CPU:$D88C PRG:188C 9D 18 06 - lda Temp12 ; CPU:$D88F PRG:188F A5 12 - sta $061A,x ; CPU:$D891 PRG:1891 9D 1A 06 - tay ; CPU:$D894 PRG:1894 A8 - txa ; CPU:$D895 PRG:1895 8A - asl a ; CPU:$D896 PRG:1896 0A - asl a ; CPU:$D897 PRG:1897 0A - asl a ; CPU:$D898 PRG:1898 0A - tax ; CPU:$D899 PRG:1899 AA - lda BonusSpriteTileTableA,y ; CPU:$D89A PRG:189A B9 D1 D8 - sta $02F1,x ; CPU:$D89D PRG:189D 9D F1 02 - lda BonusSpriteTileTableB,y ; CPU:$D8A0 PRG:18A0 B9 D7 D8 - sta $02F5,x ; CPU:$D8A3 PRG:18A3 9D F5 02 - ldy $13 ; CPU:$D8A6 PRG:18A6 A4 13 - lda a:PlayerPosY,y ; CPU:$D8A8 PRG:18A8 B9 9A 00 - sec ; CPU:$D8AB PRG:18AB 38 - sbc #$08 ; CPU:$D8AC PRG:18AC E9 08 - sta $02F0,x ; CPU:$D8AE PRG:18AE 9D F0 02 - sta $02F4,x ; CPU:$D8B1 PRG:18B1 9D F4 02 - lda a:PlayerPosX,y ; CPU:$D8B4 PRG:18B4 B9 91 00 - sta $02F3,x ; CPU:$D8B7 PRG:18B7 9D F3 02 - clc ; CPU:$D8BA PRG:18BA 18 - adc #$08 ; CPU:$D8BB PRG:18BB 69 08 - sta $02F7,x ; CPU:$D8BD PRG:18BD 9D F7 02 - lda CurrentObjectIndex ; CPU:$D8C0 PRG:18C0 A5 3E - sta $02F2,x ; CPU:$D8C2 PRG:18C2 9D F2 02 - sta $02F6,x ; CPU:$D8C5 PRG:18C5 9D F6 02 - ldy SpawnParameter ; CPU:$D8C8 PRG:18C8 A4 14 - ldx $13 ; CPU:$D8CA PRG:18CA A6 13 - lda Temp12 ; CPU:$D8CC PRG:18CC A5 12 - rts ; CPU:$D8CE PRG:18CE 60 + lda #$64 ; CPU:$D88C PRG:188C A9 64 + sta $0618,x ; CPU:$D88E PRG:188E 9D 18 06 + lda Temp12 ; CPU:$D891 PRG:1891 A5 12 + sta $061A,x ; CPU:$D893 PRG:1893 9D 1A 06 + tay ; CPU:$D896 PRG:1896 A8 + txa ; CPU:$D897 PRG:1897 8A + asl a ; CPU:$D898 PRG:1898 0A + asl a ; CPU:$D899 PRG:1899 0A + asl a ; CPU:$D89A PRG:189A 0A + tax ; CPU:$D89B PRG:189B AA + lda BonusSpriteTileTableA,y ; CPU:$D89C PRG:189C B9 D1 D8 + sta $02F1,x ; CPU:$D89F PRG:189F 9D F1 02 + lda BonusSpriteTileTableB,y ; CPU:$D8A2 PRG:18A2 B9 D7 D8 + sta $02F5,x ; CPU:$D8A5 PRG:18A5 9D F5 02 + ldy $13 ; CPU:$D8A8 PRG:18A8 A4 13 + lda a:PlayerPosY,y ; CPU:$D8AA PRG:18AA B9 9A 00 + sec ; CPU:$D8AD PRG:18AD 38 + sbc #$08 ; CPU:$D8AE PRG:18AE E9 08 + sta $02F0,x ; CPU:$D8B0 PRG:18B0 9D F0 02 + sta $02F4,x ; CPU:$D8B3 PRG:18B3 9D F4 02 + lda a:PlayerPosX,y ; CPU:$D8B6 PRG:18B6 B9 91 00 + sta $02F3,x ; CPU:$D8B9 PRG:18B9 9D F3 02 + clc ; CPU:$D8BC PRG:18BC 18 + adc #$08 ; CPU:$D8BD PRG:18BD 69 08 + sta $02F7,x ; CPU:$D8BF PRG:18BF 9D F7 02 + lda CurrentObjectIndex ; CPU:$D8C2 PRG:18C2 A5 3E + sta $02F2,x ; CPU:$D8C4 PRG:18C4 9D F2 02 + sta $02F6,x ; CPU:$D8C7 PRG:18C7 9D F6 02 + ldy SpawnParameter ; CPU:$D8CA PRG:18CA A4 14 + ldx $13 ; CPU:$D8CC PRG:18CC A6 13 + lda Temp12 ; CPU:$D8CE PRG:18CE A5 12 + rts ; CPU:$D8D0 PRG:18D0 60 BonusSpriteTileTableA: - .byte $F4, $F5, $F6, $F7, $F8, $F9 ; CPU:$D8CF PRG:18CF F4 F5 F6 F7 F8 F9 + .byte $F4, $F5, $F6, $F7, $F8, $F9 ; CPU:$D8D1 PRG:18D1 F4 F5 F6 F7 F8 F9 BonusSpriteTileTableB: - .byte $FB, $FB, $FA, $FB, $FB, $FB ; CPU:$D8D5 PRG:18D5 FB FB FA FB FB FB + .byte $FB, $FB, $FA, $FB, $FB, $FB ; CPU:$D8D7 PRG:18D7 FB FB FA FB FB FB UpdateBonusResultSprites: - ldx #$01 ; CPU:$D8DB PRG:18DB A2 01 + ldx #$01 ; CPU:$D8DD PRG:18DD A2 01 UpdateBonusResultSprites_Block: - lda $061A,x ; CPU:$D8DD PRG:18DD BD 1A 06 - bmi UpdateBonusResultSprites_Block_1 ; CPU:$D8E0 PRG:18E0 30 17 - dec $0618,x ; CPU:$D8E2 PRG:18E2 DE 18 06 - bne UpdateBonusResultSprites_Block_1 ; CPU:$D8E5 PRG:18E5 D0 12 - lda #$FF ; CPU:$D8E7 PRG:18E7 A9 FF - sta $061A,x ; CPU:$D8E9 PRG:18E9 9D 1A 06 - txa ; CPU:$D8EC PRG:18EC 8A - asl a ; CPU:$D8ED PRG:18ED 0A - asl a ; CPU:$D8EE PRG:18EE 0A - asl a ; CPU:$D8EF PRG:18EF 0A - tay ; CPU:$D8F0 PRG:18F0 A8 - lda #$F0 ; CPU:$D8F1 PRG:18F1 A9 F0 - sta $02F0,y ; CPU:$D8F3 PRG:18F3 99 F0 02 - sta $02F4,y ; CPU:$D8F6 PRG:18F6 99 F4 02 + lda $061A,x ; CPU:$D8DF PRG:18DF BD 1A 06 + bmi UpdateBonusResultSprites_Block_1 ; CPU:$D8E2 PRG:18E2 30 17 + dec $0618,x ; CPU:$D8E4 PRG:18E4 DE 18 06 + bne UpdateBonusResultSprites_Block_1 ; CPU:$D8E7 PRG:18E7 D0 12 + lda #$FF ; CPU:$D8E9 PRG:18E9 A9 FF + sta $061A,x ; CPU:$D8EB PRG:18EB 9D 1A 06 + txa ; CPU:$D8EE PRG:18EE 8A + asl a ; CPU:$D8EF PRG:18EF 0A + asl a ; CPU:$D8F0 PRG:18F0 0A + asl a ; CPU:$D8F1 PRG:18F1 0A + tay ; CPU:$D8F2 PRG:18F2 A8 + lda #$F0 ; CPU:$D8F3 PRG:18F3 A9 F0 + sta $02F0,y ; CPU:$D8F5 PRG:18F5 99 F0 02 + sta $02F4,y ; CPU:$D8F8 PRG:18F8 99 F4 02 UpdateBonusResultSprites_Block_1: - dex ; CPU:$D8F9 PRG:18F9 CA - bpl UpdateBonusResultSprites_Block ; CPU:$D8FA PRG:18FA 10 E1 - rts ; CPU:$D8FC PRG:18FC 60 + dex ; CPU:$D8FB PRG:18FB CA + bpl UpdateBonusResultSprites_Block ; CPU:$D8FC PRG:18FC 10 E1 + rts ; CPU:$D8FE PRG:18FE 60 ClearBonusResultSprites: - ldx #$01 ; CPU:$D8FD PRG:18FD A2 01 + ldx #$01 ; CPU:$D8FF PRG:18FF A2 01 ClearBonusResultSprites_Block: - lda #$00 ; CPU:$D8FF PRG:18FF A9 00 - sta $0618,x ; CPU:$D901 PRG:1901 9D 18 06 - lda #$FF ; CPU:$D904 PRG:1904 A9 FF - sta $061A,x ; CPU:$D906 PRG:1906 9D 1A 06 - dex ; CPU:$D909 PRG:1909 CA - bpl ClearBonusResultSprites_Block ; CPU:$D90A PRG:190A 10 F3 - rts ; CPU:$D90C PRG:190C 60 + lda #$00 ; CPU:$D901 PRG:1901 A9 00 + sta $0618,x ; CPU:$D903 PRG:1903 9D 18 06 + lda #$FF ; CPU:$D906 PRG:1906 A9 FF + sta $061A,x ; CPU:$D908 PRG:1908 9D 1A 06 + dex ; CPU:$D90B PRG:190B CA + bpl ClearBonusResultSprites_Block ; CPU:$D90C PRG:190C 10 F3 + rts ; CPU:$D90E PRG:190E 60 ClearBonusResultSprites_Block_1: - jsr $D246 ; CPU:$D90D PRG:190D 20 46 D2 - jsr $C10A ; CPU:$D910 PRG:1910 20 0A C1 - jsr WaitForFrame ; CPU:$D913 PRG:1913 20 65 F4 - jsr $C0FA ; CPU:$D916 PRG:1916 20 FA C0 - lda #$2C ; CPU:$D919 PRG:1919 A9 2C - sta RecordPtrLo ; CPU:$D91B PRG:191B 85 1D - lda #$D9 ; CPU:$D91D PRG:191D A9 D9 - sta RecordPtrHi ; CPU:$D91F PRG:191F 85 1E - jsr $D497 ; CPU:$D921 PRG:1921 20 97 D4 - jsr $C104 ; CPU:$D924 PRG:1924 20 04 C1 - jmp $C115 ; CPU:$D927 PRG:1927 4C 15 C1 + jsr $D246 ; CPU:$D90F PRG:190F 20 46 D2 + jsr $C10A ; CPU:$D912 PRG:1912 20 0A C1 + jsr WaitForFrame ; CPU:$D915 PRG:1915 20 65 F4 + jsr $C0FA ; CPU:$D918 PRG:1918 20 FA C0 + lda #$2C ; CPU:$D91B PRG:191B A9 2C + sta RecordPtrLo ; CPU:$D91D PRG:191D 85 1D + lda #$D9 ; CPU:$D91F PRG:191F A9 D9 + sta RecordPtrHi ; CPU:$D921 PRG:1921 85 1E + jsr $D497 ; CPU:$D923 PRG:1923 20 97 D4 + jsr $C104 ; CPU:$D926 PRG:1926 20 04 C1 + jmp $C115 ; CPU:$D929 PRG:1929 4C 15 C1 ; Title/menu PPU command streams and tile data TitleScreenPpuData: - .byte $30, $D9, $00, $00, $3F, $00, $04, $0F ; CPU:$D92A PRG:192A 30 D9 00 00 3F 00 04 0F - .byte $30, $27, $2A, $3F, $18, $04, $0F, $16 ; CPU:$D932 PRG:1932 30 27 2A 3F 18 04 0F 16 - .byte $30, $21, $20, $7C, $21, $F0, $F1, $24 ; CPU:$D93A PRG:193A 30 21 20 7C 21 F0 F1 24 - .byte $24, $24, $24, $E0, $E1, $E1, $E2, $E0 ; CPU:$D942 PRG:1942 24 24 24 E0 E1 E1 E2 E0 - .byte $E1, $E1, $E2, $E0, $E2, $24, $E0, $E2 ; CPU:$D94A PRG:194A E1 E1 E2 E0 E2 24 E0 E2 - .byte $24, $E0, $E1, $E1, $E2, $E0, $E1, $E1 ; CPU:$D952 PRG:1952 24 E0 E1 E1 E2 E0 E1 E1 - .byte $E2, $E0, $EC, $24, $E0, $E2, $20, $A2 ; CPU:$D95A PRG:195A E2 E0 EC 24 E0 E2 20 A2 - .byte $1B, $E3, $E3, $E3, $E5, $E3, $E3, $E3 ; CPU:$D962 PRG:1962 1B E3 E3 E3 E5 E3 E3 E3 - .byte $E5, $E3, $E5, $24, $E3, $E5, $24, $E3 ; CPU:$D96A PRG:196A E5 E3 E5 24 E3 E5 24 E3 - .byte $E3, $E3, $E5, $E3, $E3, $E3, $E5, $E3 ; CPU:$D972 PRG:1972 E3 E3 E5 E3 E3 E3 E5 E3 - .byte $E3, $F3, $E3, $E5, $20, $C2, $1B, $E3 ; CPU:$D97A PRG:197A E3 F3 E3 E5 20 C2 1B E3 - .byte $E4, $E3, $E7, $E3, $E4, $E3, $E5, $E3 ; CPU:$D982 PRG:1982 E4 E3 E7 E3 E4 E3 E5 E3 - .byte $E5, $24, $E3, $E5, $24, $E3, $E4, $E3 ; CPU:$D98A PRG:198A E5 24 E3 E5 24 E3 E4 E3 - .byte $E5, $E3, $E4, $E3, $E5, $E3, $E3, $E3 ; CPU:$D992 PRG:1992 E5 E3 E4 E3 E5 E3 E3 E3 - .byte $E3, $E5, $20, $E2, $1B, $E3, $E3, $E3 ; CPU:$D99A PRG:199A E3 E5 20 E2 1B E3 E3 E3 - .byte $E2, $E3, $E3, $E3, $E5, $E3, $E5, $24 ; CPU:$D9A2 PRG:19A2 E2 E3 E3 E3 E5 E3 E5 24 - .byte $E3, $E5, $24, $E3, $E3, $E3, $E5, $E3 ; CPU:$D9AA PRG:19AA E3 E5 24 E3 E3 E3 E5 E3 - .byte $E3, $E3, $E5, $E3, $E3, $E3, $E3, $E5 ; CPU:$D9B2 PRG:19B2 E3 E3 E5 E3 E3 E3 E3 E5 - .byte $21, $02, $1B, $E3, $E4, $E3, $E5, $E3 ; CPU:$D9BA PRG:19BA 21 02 1B E3 E4 E3 E5 E3 - .byte $F2, $E3, $E5, $E3, $E3, $E2, $E3, $E3 ; CPU:$D9C2 PRG:19C2 F2 E3 E5 E3 E3 E2 E3 E3 - .byte $E2, $E3, $E3, $E3, $E5, $E3, $E3, $E3 ; CPU:$D9CA PRG:19CA E2 E3 E3 E3 E5 E3 E3 E3 - .byte $E5, $E3, $F2, $E3, $E3, $E5, $21, $22 ; CPU:$D9D2 PRG:19D2 E5 E3 F2 E3 E3 E5 21 22 - .byte $1B, $E6, $E3, $E3, $E7, $EB, $24, $E6 ; CPU:$D9DA PRG:19DA 1B E6 E3 E3 E7 EB 24 E6 - .byte $E7, $E6, $E3, $E7, $E6, $E3, $E7, $E6 ; CPU:$D9E2 PRG:19E2 E7 E6 E3 E7 E6 E3 E7 E6 - .byte $E3, $E3, $E7, $E6, $E3, $E3, $E7, $EB ; CPU:$D9EA PRG:19EA E3 E3 E7 E6 E3 E3 E7 EB - .byte $24, $E6, $E3, $E7, $21, $4C, $12, $E0 ; CPU:$D9F2 PRG:19F2 24 E6 E3 E7 21 4C 12 E0 - .byte $E1, $E1, $E2, $E0, $E2, $E0, $E1, $E1 ; CPU:$D9FA PRG:19FA E1 E1 E2 E0 E2 E0 E1 E1 - .byte $E2, $E8, $24, $E0, $E2, $E0, $E1, $E1 ; CPU:$DA02 PRG:1A02 E2 E8 24 E0 E2 E0 E1 E1 - .byte $E2, $21, $6C, $12, $E3, $E3, $E3, $E7 ; CPU:$DA0A PRG:1A0A E2 21 6C 12 E3 E3 E3 E7 - .byte $E3, $E5, $E3, $F5, $F6, $E7, $E3, $F3 ; CPU:$DA12 PRG:1A12 E3 E5 E3 F5 F6 E7 E3 F3 - .byte $E3, $E5, $E6, $E3, $E3, $E7, $21, $8C ; CPU:$DA1A PRG:1A1A E3 E5 E6 E3 E3 E7 21 8C - .byte $12, $E3, $E3, $EF, $24, $E3, $E5, $E3 ; CPU:$DA22 PRG:1A22 12 E3 E3 EF 24 E3 E5 E3 - .byte $24, $24, $24, $E3, $E3, $E3, $E5, $24 ; CPU:$DA2A PRG:1A2A 24 24 24 E3 E3 E3 E5 24 - .byte $E3, $E5, $24, $21, $AC, $12, $E3, $E3 ; CPU:$DA32 PRG:1A32 E3 E5 24 21 AC 12 E3 E3 - .byte $E1, $EA, $E3, $E5, $E3, $E9, $E3, $E2 ; CPU:$DA3A PRG:1A3A E1 EA E3 E5 E3 E9 E3 E2 - .byte $E3, $E3, $E3, $E5, $24, $E3, $E5, $24 ; CPU:$DA42 PRG:1A42 E3 E3 E3 E5 24 E3 E5 24 - .byte $21, $CC, $12, $E3, $E3, $EF, $24, $E3 ; CPU:$DA4A PRG:1A4A 21 CC 12 E3 E3 EF 24 E3 - .byte $E5, $E3, $F3, $E3, $E5, $E3, $F2, $E3 ; CPU:$DA52 PRG:1A52 E5 E3 F3 E3 E5 E3 F2 E3 - .byte $E5, $24, $E3, $E5, $24, $21, $EC, $12 ; CPU:$DA5A PRG:1A5A E5 24 E3 E5 24 21 EC 12 - .byte $E6, $E7, $24, $24, $E6, $E7, $E6, $E7 ; CPU:$DA62 PRG:1A62 E6 E7 24 24 E6 E7 E6 E7 - .byte $E6, $E7, $EB, $24, $E6, $E7, $24, $E6 ; CPU:$DA6A PRG:1A6A E6 E7 EB 24 E6 E7 24 E6 - .byte $E7, $24, $22, $48, $10, $0A, $24, $24 ; CPU:$DA72 PRG:1A72 E7 24 22 48 10 0A 24 24 - .byte $01, $25, $19, $15, $0A, $22, $0E, $1B ; CPU:$DA7A PRG:1A7A 01 25 19 15 0A 22 0E 1B - .byte $24, $10, $0A, $16, $0E, $22, $88, $10 ; CPU:$DA82 PRG:1A82 24 10 0A 16 0E 22 88 10 - .byte $0B, $24, $24, $02, $25, $19, $15, $0A ; CPU:$DA8A PRG:1A8A 0B 24 24 02 25 19 15 0A - .byte $22, $0E, $1B, $24, $10, $0A, $16, $0E ; CPU:$DA92 PRG:1A92 22 0E 1B 24 10 0A 16 0E - .byte $22, $C8, $10, $0C, $24, $24, $0B, $0A ; CPU:$DA9A PRG:1A9A 22 C8 10 0C 24 24 0B 0A - .byte $15, $15, $18, $18, $17, $24, $24, $1D ; CPU:$DAA2 PRG:1AA2 15 15 18 18 17 24 24 1D - .byte $1B, $12, $19, $23, $49, $0E, $F4, $01 ; CPU:$DAAA PRG:1AAA 1B 12 19 23 49 0E F4 01 - .byte $09, $08, $04, $24, $17, $12, $17, $1D ; CPU:$DAB2 PRG:1AB2 09 08 04 24 17 12 17 1D - .byte $0E, $17, $0D, $18, $00 ; CPU:$DABA PRG:1ABA 0E 17 0D 18 00 + .byte $30, $D9, $00, $00, $3F, $00, $04, $0F ; CPU:$D92C PRG:192C 30 D9 00 00 3F 00 04 0F + .byte $30, $27, $2A, $3F, $18, $04, $0F, $16 ; CPU:$D934 PRG:1934 30 27 2A 3F 18 04 0F 16 + .byte $30, $21, $20, $7C, $21, $F0, $F1, $24 ; CPU:$D93C PRG:193C 30 21 20 7C 21 F0 F1 24 + .byte $24, $24, $24, $E0, $E1, $E1, $E2, $E0 ; CPU:$D944 PRG:1944 24 24 24 E0 E1 E1 E2 E0 + .byte $E1, $E1, $E2, $E0, $E2, $24, $E0, $E2 ; CPU:$D94C PRG:194C E1 E1 E2 E0 E2 24 E0 E2 + .byte $24, $E0, $E1, $E1, $E2, $E0, $E1, $E1 ; CPU:$D954 PRG:1954 24 E0 E1 E1 E2 E0 E1 E1 + .byte $E2, $E0, $EC, $24, $E0, $E2, $20, $A2 ; CPU:$D95C PRG:195C E2 E0 EC 24 E0 E2 20 A2 + .byte $1B, $E3, $E3, $E3, $E5, $E3, $E3, $E3 ; CPU:$D964 PRG:1964 1B E3 E3 E3 E5 E3 E3 E3 + .byte $E5, $E3, $E5, $24, $E3, $E5, $24, $E3 ; CPU:$D96C PRG:196C E5 E3 E5 24 E3 E5 24 E3 + .byte $E3, $E3, $E5, $E3, $E3, $E3, $E5, $E3 ; CPU:$D974 PRG:1974 E3 E3 E5 E3 E3 E3 E5 E3 + .byte $E3, $F3, $E3, $E5, $20, $C2, $1B, $E3 ; CPU:$D97C PRG:197C E3 F3 E3 E5 20 C2 1B E3 + .byte $E4, $E3, $E7, $E3, $E4, $E3, $E5, $E3 ; CPU:$D984 PRG:1984 E4 E3 E7 E3 E4 E3 E5 E3 + .byte $E5, $24, $E3, $E5, $24, $E3, $E4, $E3 ; CPU:$D98C PRG:198C E5 24 E3 E5 24 E3 E4 E3 + .byte $E5, $E3, $E4, $E3, $E5, $E3, $E3, $E3 ; CPU:$D994 PRG:1994 E5 E3 E4 E3 E5 E3 E3 E3 + .byte $E3, $E5, $20, $E2, $1B, $E3, $E3, $E3 ; CPU:$D99C PRG:199C E3 E5 20 E2 1B E3 E3 E3 + .byte $E2, $E3, $E3, $E3, $E5, $E3, $E5, $24 ; CPU:$D9A4 PRG:19A4 E2 E3 E3 E3 E5 E3 E5 24 + .byte $E3, $E5, $24, $E3, $E3, $E3, $E5, $E3 ; CPU:$D9AC PRG:19AC E3 E5 24 E3 E3 E3 E5 E3 + .byte $E3, $E3, $E5, $E3, $E3, $E3, $E3, $E5 ; CPU:$D9B4 PRG:19B4 E3 E3 E5 E3 E3 E3 E3 E5 + .byte $21, $02, $1B, $E3, $E4, $E3, $E5, $E3 ; CPU:$D9BC PRG:19BC 21 02 1B E3 E4 E3 E5 E3 + .byte $F2, $E3, $E5, $E3, $E3, $E2, $E3, $E3 ; CPU:$D9C4 PRG:19C4 F2 E3 E5 E3 E3 E2 E3 E3 + .byte $E2, $E3, $E3, $E3, $E5, $E3, $E3, $E3 ; CPU:$D9CC PRG:19CC E2 E3 E3 E3 E5 E3 E3 E3 + .byte $E5, $E3, $F2, $E3, $E3, $E5, $21, $22 ; CPU:$D9D4 PRG:19D4 E5 E3 F2 E3 E3 E5 21 22 + .byte $1B, $E6, $E3, $E3, $E7, $EB, $24, $E6 ; CPU:$D9DC PRG:19DC 1B E6 E3 E3 E7 EB 24 E6 + .byte $E7, $E6, $E3, $E7, $E6, $E3, $E7, $E6 ; CPU:$D9E4 PRG:19E4 E7 E6 E3 E7 E6 E3 E7 E6 + .byte $E3, $E3, $E7, $E6, $E3, $E3, $E7, $EB ; CPU:$D9EC PRG:19EC E3 E3 E7 E6 E3 E3 E7 EB + .byte $24, $E6, $E3, $E7, $21, $4C, $12, $E0 ; CPU:$D9F4 PRG:19F4 24 E6 E3 E7 21 4C 12 E0 + .byte $E1, $E1, $E2, $E0, $E2, $E0, $E1, $E1 ; CPU:$D9FC PRG:19FC E1 E1 E2 E0 E2 E0 E1 E1 + .byte $E2, $E8, $24, $E0, $E2, $E0, $E1, $E1 ; CPU:$DA04 PRG:1A04 E2 E8 24 E0 E2 E0 E1 E1 + .byte $E2, $21, $6C, $12, $E3, $E3, $E3, $E7 ; CPU:$DA0C PRG:1A0C E2 21 6C 12 E3 E3 E3 E7 + .byte $E3, $E5, $E3, $F5, $F6, $E7, $E3, $F3 ; CPU:$DA14 PRG:1A14 E3 E5 E3 F5 F6 E7 E3 F3 + .byte $E3, $E5, $E6, $E3, $E3, $E7, $21, $8C ; CPU:$DA1C PRG:1A1C E3 E5 E6 E3 E3 E7 21 8C + .byte $12, $E3, $E3, $EF, $24, $E3, $E5, $E3 ; CPU:$DA24 PRG:1A24 12 E3 E3 EF 24 E3 E5 E3 + .byte $24, $24, $24, $E3, $E3, $E3, $E5, $24 ; CPU:$DA2C PRG:1A2C 24 24 24 E3 E3 E3 E5 24 + .byte $E3, $E5, $24, $21, $AC, $12, $E3, $E3 ; CPU:$DA34 PRG:1A34 E3 E5 24 21 AC 12 E3 E3 + .byte $E1, $EA, $E3, $E5, $E3, $E9, $E3, $E2 ; CPU:$DA3C PRG:1A3C E1 EA E3 E5 E3 E9 E3 E2 + .byte $E3, $E3, $E3, $E5, $24, $E3, $E5, $24 ; CPU:$DA44 PRG:1A44 E3 E3 E3 E5 24 E3 E5 24 + .byte $21, $CC, $12, $E3, $E3, $EF, $24, $E3 ; CPU:$DA4C PRG:1A4C 21 CC 12 E3 E3 EF 24 E3 + .byte $E5, $E3, $F3, $E3, $E5, $E3, $F2, $E3 ; CPU:$DA54 PRG:1A54 E5 E3 F3 E3 E5 E3 F2 E3 + .byte $E5, $24, $E3, $E5, $24, $21, $EC, $12 ; CPU:$DA5C PRG:1A5C E5 24 E3 E5 24 21 EC 12 + .byte $E6, $E7, $24, $24, $E6, $E7, $E6, $E7 ; CPU:$DA64 PRG:1A64 E6 E7 24 24 E6 E7 E6 E7 + .byte $E6, $E7, $EB, $24, $E6, $E7, $24, $E6 ; CPU:$DA6C PRG:1A6C E6 E7 EB 24 E6 E7 24 E6 + .byte $E7, $24, $22, $48, $10, $0A, $24, $24 ; CPU:$DA74 PRG:1A74 E7 24 22 48 10 0A 24 24 + .byte $01, $25, $19, $15, $0A, $22, $0E, $1B ; CPU:$DA7C PRG:1A7C 01 25 19 15 0A 22 0E 1B + .byte $24, $10, $0A, $16, $0E, $22, $88, $10 ; CPU:$DA84 PRG:1A84 24 10 0A 16 0E 22 88 10 + .byte $0B, $24, $24, $02, $25, $19, $15, $0A ; CPU:$DA8C PRG:1A8C 0B 24 24 02 25 19 15 0A + .byte $22, $0E, $1B, $24, $10, $0A, $16, $0E ; CPU:$DA94 PRG:1A94 22 0E 1B 24 10 0A 16 0E + .byte $22, $C8, $10, $0C, $24, $24, $0B, $0A ; CPU:$DA9C PRG:1A9C 22 C8 10 0C 24 24 0B 0A + .byte $15, $15, $18, $18, $17, $24, $24, $1D ; CPU:$DAA4 PRG:1AA4 15 15 18 18 17 24 24 1D + .byte $1B, $12, $19, $23, $49, $0E, $F4, $01 ; CPU:$DAAC PRG:1AAC 1B 12 19 23 49 0E F4 01 + .byte $09, $08, $04, $24, $17, $12, $17, $1D ; CPU:$DAB4 PRG:1AB4 09 08 04 24 17 12 17 1D + .byte $0E, $17, $0D, $18, $00 ; CPU:$DABC PRG:1ABC 0E 17 0D 18 00 RunTitleMenuLoop: - jsr $C104 ; CPU:$DABF PRG:1ABF 20 04 C1 - jsr $D90F ; CPU:$DAC2 PRG:1AC2 20 0F D9 - lda #$00 ; CPU:$DAC5 PRG:1AC5 A9 00 - sta FrameCounter ; CPU:$DAC7 PRG:1AC7 85 19 + jsr $C104 ; CPU:$DAC1 PRG:1AC1 20 04 C1 + jsr $D90F ; CPU:$DAC4 PRG:1AC4 20 0F D9 + lda #$00 ; CPU:$DAC7 PRG:1AC7 A9 00 + sta FrameCounter ; CPU:$DAC9 PRG:1AC9 85 19 RunTitleMenuLoop_Block: - jsr WaitForFrame ; CPU:$DAC9 PRG:1AC9 20 65 F4 - lda FrameCounter ; CPU:$DACC PRG:1ACC A5 19 - beq RunTitleMenuLoop_Block_3 ; CPU:$DACE PRG:1ACE F0 1F - jsr ApplySelectedGameMode ; CPU:$DAD0 PRG:1AD0 20 08 DB - jsr $E768 ; CPU:$DAD3 PRG:1AD3 20 68 E7 - tax ; CPU:$DAD6 PRG:1AD6 AA - and #$10 ; CPU:$DAD7 PRG:1AD7 29 10 - bne RunTitleMenuLoop_Block_2 ; CPU:$DAD9 PRG:1AD9 D0 13 - txa ; CPU:$DADB PRG:1ADB 8A - and #$20 ; CPU:$DADC PRG:1ADC 29 20 - beq RunTitleMenuLoop_Block_1 ; CPU:$DADE PRG:1ADE F0 0B - lda #$00 ; CPU:$DAE0 PRG:1AE0 A9 00 - sta FrameCounter ; CPU:$DAE2 PRG:1AE2 85 19 - ldx $3F ; CPU:$DAE4 PRG:1AE4 A6 3F - lda GameModePlayerCountTable,x ; CPU:$DAE6 PRG:1AE6 BD 05 DB - sta $3F ; CPU:$DAE9 PRG:1AE9 85 3F + jsr WaitForFrame ; CPU:$DACB PRG:1ACB 20 65 F4 + lda FrameCounter ; CPU:$DACE PRG:1ACE A5 19 + beq RunTitleMenuLoop_Block_3 ; CPU:$DAD0 PRG:1AD0 F0 1F + jsr ApplySelectedGameMode ; CPU:$DAD2 PRG:1AD2 20 08 DB + jsr $E768 ; CPU:$DAD5 PRG:1AD5 20 68 E7 + tax ; CPU:$DAD8 PRG:1AD8 AA + and #$10 ; CPU:$DAD9 PRG:1AD9 29 10 + bne RunTitleMenuLoop_Block_2 ; CPU:$DADB PRG:1ADB D0 13 + txa ; CPU:$DADD PRG:1ADD 8A + and #$20 ; CPU:$DADE PRG:1ADE 29 20 + beq RunTitleMenuLoop_Block_1 ; CPU:$DAE0 PRG:1AE0 F0 0B + lda #$00 ; CPU:$DAE2 PRG:1AE2 A9 00 + sta FrameCounter ; CPU:$DAE4 PRG:1AE4 85 19 + ldx $3F ; CPU:$DAE6 PRG:1AE6 A6 3F + lda GameModePlayerCountTable,x ; CPU:$DAE8 PRG:1AE8 BD 05 DB + sta $3F ; CPU:$DAEB PRG:1AEB 85 3F RunTitleMenuLoop_Block_1: - jmp RunTitleMenuLoop_Block ; CPU:$DAEB PRG:1AEB 4C CB DA + jmp RunTitleMenuLoop_Block ; CPU:$DAED PRG:1AED 4C CB DA RunTitleMenuLoop_Block_2: - rts ; CPU:$DAEE PRG:1AEE 60 + rts ; CPU:$DAF0 PRG:1AF0 60 RunTitleMenuLoop_Block_3: - inc $3A ; CPU:$DAEF PRG:1AEF E6 3A - inc PlayerCountMinusOne ; CPU:$DAF1 PRG:1AF1 E6 40 - lda #$00 ; CPU:$DAF3 PRG:1AF3 A9 00 - sta APUCTRL ; CPU:$DAF5 PRG:1AF5 8D 15 40 - sta RenderingDisabledFlag ; CPU:$DAF8 PRG:1AF8 85 16 - jsr $F1F2 ; CPU:$DAFA PRG:1AFA 20 F2 F1 - lda #$00 ; CPU:$DAFD PRG:1AFD A9 00 - sta $3A ; CPU:$DAFF PRG:1AFF 85 3A - beq RunTitleMenuLoop ; CPU:$DB01 PRG:1B01 F0 BC + inc $3A ; CPU:$DAF1 PRG:1AF1 E6 3A + inc PlayerCountMinusOne ; CPU:$DAF3 PRG:1AF3 E6 40 + lda #$00 ; CPU:$DAF5 PRG:1AF5 A9 00 + sta APUCTRL ; CPU:$DAF7 PRG:1AF7 8D 15 40 + sta RenderingDisabledFlag ; CPU:$DAFA PRG:1AFA 85 16 + jsr $F1F2 ; CPU:$DAFC PRG:1AFC 20 F2 F1 + lda #$00 ; CPU:$DAFF PRG:1AFF A9 00 + sta $3A ; CPU:$DB01 PRG:1B01 85 3A + beq RunTitleMenuLoop ; CPU:$DB03 PRG:1B03 F0 BC GameModePlayerCountTable: - ora (NmiCompletedFlag,x) ; CPU:$DB03 PRG:1B03 01 02 - brk ; CPU:$DB05 PRG:1B05 00 + ora (NmiCompletedFlag,x) ; CPU:$DB05 PRG:1B05 01 02 + brk ; CPU:$DB07 PRG:1B07 00 ApplySelectedGameMode: - lda $3F ; CPU:$DB06 PRG:1B06 A5 3F - lsr a ; CPU:$DB08 PRG:1B08 4A - sta RenderingDisabledFlag ; CPU:$DB09 PRG:1B09 85 16 - lda $3F ; CPU:$DB0B PRG:1B0B A5 3F - tax ; CPU:$DB0D PRG:1B0D AA - and #$01 ; CPU:$DB0E PRG:1B0E 29 01 - sta PlayerCountMinusOne ; CPU:$DB10 PRG:1B10 85 40 - lda StageDataPointerTableLo,x ; CPU:$DB12 PRG:1B12 BD 27 DB - sta ParticlePosY ; CPU:$DB15 PRG:1B15 8D 7B 05 - lda #$2C ; CPU:$DB18 PRG:1B18 A9 2C - sta ParticlePosX ; CPU:$DB1A PRG:1B1A 8D 67 05 - ldx #$00 ; CPU:$DB1D PRG:1B1D A2 00 - stx ParticleState ; CPU:$DB1F PRG:1B1F 8E 5D 05 - jmp $CE2F ; CPU:$DB22 PRG:1B22 4C 2F CE + lda $3F ; CPU:$DB08 PRG:1B08 A5 3F + lsr a ; CPU:$DB0A PRG:1B0A 4A + sta RenderingDisabledFlag ; CPU:$DB0B PRG:1B0B 85 16 + lda $3F ; CPU:$DB0D PRG:1B0D A5 3F + tax ; CPU:$DB0F PRG:1B0F AA + and #$01 ; CPU:$DB10 PRG:1B10 29 01 + sta PlayerCountMinusOne ; CPU:$DB12 PRG:1B12 85 40 + lda StageDataPointerTableLo,x ; CPU:$DB14 PRG:1B14 BD 27 DB + sta ParticlePosY ; CPU:$DB17 PRG:1B17 8D 7B 05 + lda #$2C ; CPU:$DB1A PRG:1B1A A9 2C + sta ParticlePosX ; CPU:$DB1C PRG:1B1C 8D 67 05 + ldx #$00 ; CPU:$DB1F PRG:1B1F A2 00 + stx ParticleState ; CPU:$DB21 PRG:1B21 8E 5D 05 + jmp $CE2F ; CPU:$DB24 PRG:1B24 4C 2F CE ;=============================================================================== ; Stage data tables @@ -4622,3922 +4912,3922 @@ ApplySelectedGameMode: ;=============================================================================== StageDataPointerTableLo: GameModeInitialStageTable: - .byte $8C, $9C, $AC ; CPU:$DB25 PRG:1B25 8C 9C AC + .byte $8C, $9C, $AC ; CPU:$DB27 PRG:1B27 8C 9C AC StageStreamPointerLoTable: - .byte $4A, $59, $F2, $6C, $77, $88, $E1, $6C ; CPU:$DB28 PRG:1B28 4A 59 F2 6C 77 88 E1 6C - .byte $99, $03, $CA, $6C, $AD, $17, $E1, $6C ; CPU:$DB30 PRG:1B30 99 03 CA 6C AD 17 E1 6C + .byte $4A, $59, $F2, $6C, $77, $88, $E1, $6C ; CPU:$DB2A PRG:1B2A 4A 59 F2 6C 77 88 E1 6C + .byte $99, $03, $CA, $6C, $AD, $17, $E1, $6C ; CPU:$DB32 PRG:1B32 99 03 CA 6C AD 17 E1 6C StageStreamPointerHiTable: - .byte $DB, $DB, $DB, $DB, $DB, $DB, $DB, $DB ; CPU:$DB38 PRG:1B38 DB DB DB DB DB DB DB DB - .byte $DB, $DC, $DB, $DB, $DB, $DC, $DB, $DB ; CPU:$DB40 PRG:1B40 DB DC DB DB DB DC DB DB + .byte $DB, $DB, $DB, $DB, $DB, $DB, $DB, $DB ; CPU:$DB3A PRG:1B3A DB DB DB DB DB DB DB DB + .byte $DB, $DC, $DB, $DB, $DB, $DC, $DB, $DB ; CPU:$DB42 PRG:1B42 DB DC DB DB DB DC DB DB StageStream_00: StageStream_00_Target: - .byte $2B, $DC, $39, $DD, $00, $00, $10, $06 ; CPU:$DB48 PRG:1B48 2B DC 39 DD 00 00 10 06 - .byte $FF, $FF, $96, $DF, $02, $7A, $DE ; CPU:$DB50 PRG:1B50 FF FF 96 DF 02 7A DE + .byte $2B, $DC, $39, $DD, $00, $00, $10, $06 ; CPU:$DB4A PRG:1B4A 2B DC 39 DD 00 00 10 06 + .byte $FF, $FF, $96, $DF, $02, $7A, $DE ; CPU:$DB52 PRG:1B52 FF FF 96 DF 02 7A DE StageStream_01: StageStream_01_Target: - .byte $2B, $DC, $39, $DD, $4B, $DD, $00, $00 ; CPU:$DB57 PRG:1B57 2B DC 39 DD 4B DD 00 00 - .byte $18, $0C, $04, $0E, $FF, $FF, $A0, $DF ; CPU:$DB5F PRG:1B5F 18 0C 04 0E FF FF A0 DF - .byte $04, $86, $DE ; CPU:$DB67 PRG:1B67 04 86 DE + .byte $2B, $DC, $39, $DD, $4B, $DD, $00, $00 ; CPU:$DB59 PRG:1B59 2B DC 39 DD 4B DD 00 00 + .byte $18, $0C, $04, $0E, $FF, $FF, $A0, $DF ; CPU:$DB61 PRG:1B61 18 0C 04 0E FF FF A0 DF + .byte $04, $86, $DE ; CPU:$DB69 PRG:1B69 04 86 DE StageStream_02: StageStream_03_Target: StageStream_07_Target: StageStream_0B_Target: StageStream_0F_Target: - .byte $CA, $DC, $00, $00, $FF, $FF, $B0, $DF ; CPU:$DB6A PRG:1B6A CA DC 00 00 FF FF B0 DF - .byte $00, $9A, $DE ; CPU:$DB72 PRG:1B72 00 9A DE + .byte $CA, $DC, $00, $00, $FF, $FF, $B0, $DF ; CPU:$DB6C PRG:1B6C CA DC 00 00 FF FF B0 DF + .byte $00, $9A, $DE ; CPU:$DB74 PRG:1B74 00 9A DE StageStream_03: StageStream_04_Target: - .byte $2B, $DC, $5E, $DD, $00, $00, $08, $06 ; CPU:$DB75 PRG:1B75 2B DC 5E DD 00 00 08 06 - .byte $18, $0A, $FF, $FF, $B1, $DF, $06, $9E ; CPU:$DB7D PRG:1B7D 18 0A FF FF B1 DF 06 9E - .byte $DE ; CPU:$DB85 PRG:1B85 DE + .byte $2B, $DC, $5E, $DD, $00, $00, $08, $06 ; CPU:$DB77 PRG:1B77 2B DC 5E DD 00 00 08 06 + .byte $18, $0A, $FF, $FF, $B1, $DF, $06, $9E ; CPU:$DB7F PRG:1B7F 18 0A FF FF B1 DF 06 9E + .byte $DE ; CPU:$DB87 PRG:1B87 DE StageStream_05_Target: - .byte $2B, $DC, $7D ; CPU:$DB86 PRG:1B86 2B DC 7D + .byte $2B, $DC, $7D ; CPU:$DB88 PRG:1B88 2B DC 7D StageStream_04: - .byte $DD, $00, $00, $04, $06, $12, $08, $FF ; CPU:$DB89 PRG:1B89 DD 00 00 04 06 12 08 FF - .byte $FF, $C1, $DF, $07, $BA, $DE ; CPU:$DB91 PRG:1B91 FF C1 DF 07 BA DE + .byte $DD, $00, $00, $04, $06, $12, $08, $FF ; CPU:$DB8B PRG:1B8B DD 00 00 04 06 12 08 FF + .byte $FF, $C1, $DF, $07, $BA, $DE ; CPU:$DB93 PRG:1B93 FF C1 DF 07 BA DE StageStream_08_Target: - .byte $2B, $DC, $A3, $DD ; CPU:$DB97 PRG:1B97 2B DC A3 DD + .byte $2B, $DC, $A3, $DD ; CPU:$DB99 PRG:1B99 2B DC A3 DD StageStream_05: - .byte $00, $00, $06, $06, $14, $10, $FF, $0F ; CPU:$DB9B PRG:1B9B 00 00 06 06 14 10 FF 0F - .byte $0D, $01, $FF, $D4, $DF, $09, $DA, $DE ; CPU:$DBA3 PRG:1BA3 0D 01 FF D4 DF 09 DA DE + .byte $00, $00, $06, $06, $14, $10, $FF, $0F ; CPU:$DB9D PRG:1B9D 00 00 06 06 14 10 FF 0F + .byte $0D, $01, $FF, $D4, $DF, $09, $DA, $DE ; CPU:$DBA5 PRG:1BA5 0D 01 FF D4 DF 09 DA DE StageStream_0C_Target: - .byte $2B ; CPU:$DBAB PRG:1BAB 2B + .byte $2B ; CPU:$DBAD PRG:1BAD 2B StageStream_06: - .byte $DC, $CE, $DD, $00, $00, $04, $06, $10 ; CPU:$DBAC PRG:1BAC DC CE DD 00 00 04 06 10 - .byte $0E, $FF, $08, $0E, $03, $0D, $09, $03 ; CPU:$DBB4 PRG:1BB4 0E FF 08 0E 03 0D 09 03 - .byte $12, $08, $03, $17, $0D, $03, $FF, $E7 ; CPU:$DBBC PRG:1BBC 12 08 03 17 0D 03 FF E7 - .byte $DF, $03, $02, $DF ; CPU:$DBC4 PRG:1BC4 DF 03 02 DF + .byte $DC, $CE, $DD, $00, $00, $04, $06, $10 ; CPU:$DBAE PRG:1BAE DC CE DD 00 00 04 06 10 + .byte $0E, $FF, $08, $0E, $03, $0D, $09, $03 ; CPU:$DBB6 PRG:1BB6 0E FF 08 0E 03 0D 09 03 + .byte $12, $08, $03, $17, $0D, $03, $FF, $E7 ; CPU:$DBBE PRG:1BBE 12 08 03 17 0D 03 FF E7 + .byte $DF, $03, $02, $DF ; CPU:$DBC6 PRG:1BC6 DF 03 02 DF StageStream_07: StageStream_0A_Target: - .byte $2B, $DC, $5E, $DD, $00, $00, $10, $06 ; CPU:$DBC8 PRG:1BC8 2B DC 5E DD 00 00 10 06 - .byte $1A, $0C, $FF, $08, $08, $01, $18, $04 ; CPU:$DBD0 PRG:1BD0 1A 0C FF 08 08 01 18 04 - .byte $01, $FF, $B1, $DF, $06 ; CPU:$DBD8 PRG:1BD8 01 FF B1 DF 06 + .byte $2B, $DC, $5E, $DD, $00, $00, $10, $06 ; CPU:$DBCA PRG:1BCA 2B DC 5E DD 00 00 10 06 + .byte $1A, $0C, $FF, $08, $08, $01, $18, $04 ; CPU:$DBD2 PRG:1BD2 1A 0C FF 08 08 01 18 04 + .byte $01, $FF, $B1, $DF, $06 ; CPU:$DBDA PRG:1BDA 01 FF B1 DF 06 StageStream_08: - .byte $9E, $DE ; CPU:$DBDD PRG:1BDD 9E DE + .byte $9E, $DE ; CPU:$DBDF PRG:1BDF 9E DE StageStream_06_Target: StageStream_0E_Target: - .byte $2B, $DC, $DB, $DD, $00, $00, $0E, $06 ; CPU:$DBDF PRG:1BDF 2B DC DB DD 00 00 0E 06 - .byte $0C, $14, $FF, $FF, $F7 ; CPU:$DBE7 PRG:1BE7 0C 14 FF FF F7 + .byte $2B, $DC, $DB, $DD, $00, $00, $0E, $06 ; CPU:$DBE1 PRG:1BE1 2B DC DB DD 00 00 0E 06 + .byte $0C, $14, $FF, $FF, $F7 ; CPU:$DBE9 PRG:1BE9 0C 14 FF FF F7 StageStream_09: - .byte $DF, $06, $12, $DF ; CPU:$DBEC PRG:1BEC DF 06 12 DF + .byte $DF, $06, $12, $DF ; CPU:$DBEE PRG:1BEE DF 06 12 DF StageStream_02_Target: - .byte $2B, $DC, $01, $DE, $00, $00, $04, $08 ; CPU:$DBF0 PRG:1BF0 2B DC 01 DE 00 00 04 08 - .byte $16, $10, $FF, $FF, $07, $E0, $09 ; CPU:$DBF8 PRG:1BF8 16 10 FF FF 07 E0 09 + .byte $2B, $DC, $01, $DE, $00, $00, $04, $08 ; CPU:$DBF2 PRG:1BF2 2B DC 01 DE 00 00 04 08 + .byte $16, $10, $FF, $FF, $07, $E0, $09 ; CPU:$DBFA PRG:1BFA 16 10 FF FF 07 E0 09 StageStream_0A: - .byte $2E, $DF ; CPU:$DBFF PRG:1BFF 2E DF + .byte $2E, $DF ; CPU:$DC01 PRG:1C01 2E DF StageStream_09_Target: - .byte $2B, $DC, $32, $DE, $00, $00, $04, $10 ; CPU:$DC01 PRG:1C01 2B DC 32 DE 00 00 04 10 - .byte $18, $10, $FF, $0E, $06, $01, $FF, $17 ; CPU:$DC09 PRG:1C09 18 10 FF 0E 06 01 FF 17 - .byte $E0, $07, $56, $DF ; CPU:$DC11 PRG:1C11 E0 07 56 DF + .byte $2B, $DC, $32, $DE, $00, $00, $04, $10 ; CPU:$DC03 PRG:1C03 2B DC 32 DE 00 00 04 10 + .byte $18, $10, $FF, $0E, $06, $01, $FF, $17 ; CPU:$DC0B PRG:1C0B 18 10 FF 0E 06 01 FF 17 + .byte $E0, $07, $56, $DF ; CPU:$DC13 PRG:1C13 E0 07 56 DF StageStream_0B: StageStream_0D_Target: - .byte $2B, $DC, $5B, $DE, $00, $00, $04, $08 ; CPU:$DC15 PRG:1C15 2B DC 5B DE 00 00 04 08 - .byte $0E, $10, $FF, $10, $07, $01, $FF, $2A ; CPU:$DC1D PRG:1C1D 0E 10 FF 10 07 01 FF 2A - .byte $E0, $07, $76, $DF ; CPU:$DC25 PRG:1C25 E0 07 76 DF + .byte $2B, $DC, $5B, $DE, $00, $00, $04, $08 ; CPU:$DC17 PRG:1C17 2B DC 5B DE 00 00 04 08 + .byte $0E, $10, $FF, $10, $07, $01, $FF, $2A ; CPU:$DC1F PRG:1C1F 0E 10 FF 10 07 01 FF 2A + .byte $E0, $07, $76, $DF ; CPU:$DC27 PRG:1C27 E0 07 76 DF StagePpuData_Common: - .byte $23, $40, $88, $39, $38, $39, $38, $39 ; CPU:$DC29 PRG:1C29 23 40 88 39 38 39 38 39 - .byte $38, $39, $33, $24, $24, $24, $24, $24 ; CPU:$DC31 PRG:1C31 38 39 33 24 24 24 24 24 - .byte $24, $24, $24, $24, $24, $24, $24, $24 ; CPU:$DC39 PRG:1C39 24 24 24 24 24 24 24 24 - .byte $24, $24, $24, $30, $38, $39, $38, $39 ; CPU:$DC41 PRG:1C41 24 24 24 30 38 39 38 39 - .byte $38, $39, $38, $3C, $3B, $3C, $3B, $3C ; CPU:$DC49 PRG:1C49 38 39 38 3C 3B 3C 3B 3C - .byte $3B, $3C, $3D, $58, $59, $5A, $5B, $58 ; CPU:$DC51 PRG:1C51 3B 3C 3D 58 59 5A 5B 58 - .byte $59, $5A, $5B, $58, $59, $5A, $5B, $58 ; CPU:$DC59 PRG:1C59 59 5A 5B 58 59 5A 5B 58 - .byte $59, $5A, $5B, $3A, $3B, $3C, $3B, $3C ; CPU:$DC61 PRG:1C61 59 5A 5B 3A 3B 3C 3B 3C - .byte $3B, $3C, $3B, $60, $61, $62, $63, $60 ; CPU:$DC69 PRG:1C69 3B 3C 3B 60 61 62 63 60 - .byte $61, $62, $63, $5C, $5D, $5E, $5F, $5C ; CPU:$DC71 PRG:1C71 61 62 63 5C 5D 5E 5F 5C - .byte $5D, $5E, $5F, $5C, $5D, $5E, $5F, $5C ; CPU:$DC79 PRG:1C79 5D 5E 5F 5C 5D 5E 5F 5C - .byte $5D, $5E, $5F, $60, $61, $62, $63, $60 ; CPU:$DC81 PRG:1C81 5D 5E 5F 60 61 62 63 60 - .byte $61, $62, $63, $5C, $5D, $5E, $5F, $5C ; CPU:$DC89 PRG:1C89 61 62 63 5C 5D 5E 5F 5C - .byte $5D, $5E, $5F, $5C, $5D, $5E, $5F, $5C ; CPU:$DC91 PRG:1C91 5D 5E 5F 5C 5D 5E 5F 5C - .byte $5D, $5E, $5F, $5C, $5D, $5E, $5F, $5C ; CPU:$DC99 PRG:1C99 5D 5E 5F 5C 5D 5E 5F 5C - .byte $5D, $5E, $5F, $5C, $5D, $5E, $5F, $5C ; CPU:$DCA1 PRG:1CA1 5D 5E 5F 5C 5D 5E 5F 5C - .byte $5D, $5E, $5F ; CPU:$DCA9 PRG:1CA9 5D 5E 5F + .byte $23, $40, $88, $39, $38, $39, $38, $39 ; CPU:$DC2B PRG:1C2B 23 40 88 39 38 39 38 39 + .byte $38, $39, $33, $24, $24, $24, $24, $24 ; CPU:$DC33 PRG:1C33 38 39 33 24 24 24 24 24 + .byte $24, $24, $24, $24, $24, $24, $24, $24 ; CPU:$DC3B PRG:1C3B 24 24 24 24 24 24 24 24 + .byte $24, $24, $24, $30, $38, $39, $38, $39 ; CPU:$DC43 PRG:1C43 24 24 24 30 38 39 38 39 + .byte $38, $39, $38, $3C, $3B, $3C, $3B, $3C ; CPU:$DC4B PRG:1C4B 38 39 38 3C 3B 3C 3B 3C + .byte $3B, $3C, $3D, $58, $59, $5A, $5B, $58 ; CPU:$DC53 PRG:1C53 3B 3C 3D 58 59 5A 5B 58 + .byte $59, $5A, $5B, $58, $59, $5A, $5B, $58 ; CPU:$DC5B PRG:1C5B 59 5A 5B 58 59 5A 5B 58 + .byte $59, $5A, $5B, $3A, $3B, $3C, $3B, $3C ; CPU:$DC63 PRG:1C63 59 5A 5B 3A 3B 3C 3B 3C + .byte $3B, $3C, $3B, $60, $61, $62, $63, $60 ; CPU:$DC6B PRG:1C6B 3B 3C 3B 60 61 62 63 60 + .byte $61, $62, $63, $5C, $5D, $5E, $5F, $5C ; CPU:$DC73 PRG:1C73 61 62 63 5C 5D 5E 5F 5C + .byte $5D, $5E, $5F, $5C, $5D, $5E, $5F, $5C ; CPU:$DC7B PRG:1C7B 5D 5E 5F 5C 5D 5E 5F 5C + .byte $5D, $5E, $5F, $60, $61, $62, $63, $60 ; CPU:$DC83 PRG:1C83 5D 5E 5F 60 61 62 63 60 + .byte $61, $62, $63, $5C, $5D, $5E, $5F, $5C ; CPU:$DC8B PRG:1C8B 61 62 63 5C 5D 5E 5F 5C + .byte $5D, $5E, $5F, $5C, $5D, $5E, $5F, $5C ; CPU:$DC93 PRG:1C93 5D 5E 5F 5C 5D 5E 5F 5C + .byte $5D, $5E, $5F, $5C, $5D, $5E, $5F, $5C ; CPU:$DC9B PRG:1C9B 5D 5E 5F 5C 5D 5E 5F 5C + .byte $5D, $5E, $5F, $5C, $5D, $5E, $5F, $5C ; CPU:$DCA3 PRG:1CA3 5D 5E 5F 5C 5D 5E 5F 5C + .byte $5D, $5E, $5F ; CPU:$DCAB PRG:1CAB 5D 5E 5F NametableHeaderPatternData: - .byte $40, $50, $50, $50, $50, $90, $A0, $A0 ; CPU:$DCAC PRG:1CAC 40 50 50 50 50 90 A0 A0 - .byte $23, $F0, $10, $00, $00, $A0, $A0, $A0 ; CPU:$DCB4 PRG:1CB4 23 F0 10 00 00 A0 A0 A0 - .byte $A0, $00, $00, $0A, $0A, $0A, $0A, $0A ; CPU:$DCBC PRG:1CBC A0 00 00 0A 0A 0A 0A 0A - .byte $0A, $0A, $0A, $00, $A3, $04, $04, $93 ; CPU:$DCC4 PRG:1CC4 0A 0A 0A 00 A3 04 04 93 - .byte $94, $94, $94, $A3, $05, $04, $95, $96 ; CPU:$DCCC PRG:1CCC 94 94 94 A3 05 04 95 96 - .byte $96, $96, $A2, $EA, $05, $93, $94, $94 ; CPU:$DCD4 PRG:1CD4 96 96 A2 EA 05 93 94 94 - .byte $94, $94, $A2, $EB, $05, $95, $96, $96 ; CPU:$DCDC PRG:1CDC 94 94 A2 EB 05 95 96 96 - .byte $96, $96, $A3, $34, $03, $93, $94, $94 ; CPU:$DCE4 PRG:1CE4 96 96 A3 34 03 93 94 94 - .byte $A3, $35, $03, $95, $96, $96, $A3, $1A ; CPU:$DCEC PRG:1CEC A3 35 03 95 96 96 A3 1A - .byte $04, $93, $94, $94, $94, $A3, $1B, $04 ; CPU:$DCF4 PRG:1CF4 04 93 94 94 94 A3 1B 04 - .byte $95, $96, $96, $96, $63, $80, $20, $97 ; CPU:$DCFC PRG:1CFC 95 96 96 96 63 80 20 97 - .byte $23, $A0, $20, $98, $99, $98, $99, $98 ; CPU:$DD04 PRG:1D04 23 A0 20 98 99 98 99 98 - .byte $99, $98, $99, $98, $99, $98, $99, $98 ; CPU:$DD0C PRG:1D0C 99 98 99 98 99 98 99 98 - .byte $99, $98, $99, $98, $99, $98, $99, $98 ; CPU:$DD14 PRG:1D14 99 98 99 98 99 98 99 98 - .byte $99, $98, $99, $98, $99, $98, $99, $98 ; CPU:$DD1C PRG:1D1C 99 98 99 98 99 98 99 98 - .byte $99, $98, $99, $23, $C0, $08, $40, $50 ; CPU:$DD24 PRG:1D24 99 98 99 23 C0 08 40 50 - .byte $50, $50, $50, $90, $A0, $A0, $63, $E8 ; CPU:$DD2C PRG:1D2C 50 50 50 90 A0 A0 63 E8 - .byte $10, $FF, $00 ; CPU:$DD34 PRG:1D34 10 FF 00 + .byte $40, $50, $50, $50, $50, $90, $A0, $A0 ; CPU:$DCAE PRG:1CAE 40 50 50 50 50 90 A0 A0 + .byte $23, $F0, $10, $00, $00, $A0, $A0, $A0 ; CPU:$DCB6 PRG:1CB6 23 F0 10 00 00 A0 A0 A0 + .byte $A0, $00, $00, $0A, $0A, $0A, $0A, $0A ; CPU:$DCBE PRG:1CBE A0 00 00 0A 0A 0A 0A 0A + .byte $0A, $0A, $0A, $00, $A3, $04, $04, $93 ; CPU:$DCC6 PRG:1CC6 0A 0A 0A 00 A3 04 04 93 + .byte $94, $94, $94, $A3, $05, $04, $95, $96 ; CPU:$DCCE PRG:1CCE 94 94 94 A3 05 04 95 96 + .byte $96, $96, $A2, $EA, $05, $93, $94, $94 ; CPU:$DCD6 PRG:1CD6 96 96 A2 EA 05 93 94 94 + .byte $94, $94, $A2, $EB, $05, $95, $96, $96 ; CPU:$DCDE PRG:1CDE 94 94 A2 EB 05 95 96 96 + .byte $96, $96, $A3, $34, $03, $93, $94, $94 ; CPU:$DCE6 PRG:1CE6 96 96 A3 34 03 93 94 94 + .byte $A3, $35, $03, $95, $96, $96, $A3, $1A ; CPU:$DCEE PRG:1CEE A3 35 03 95 96 96 A3 1A + .byte $04, $93, $94, $94, $94, $A3, $1B, $04 ; CPU:$DCF6 PRG:1CF6 04 93 94 94 94 A3 1B 04 + .byte $95, $96, $96, $96, $63, $80, $20, $97 ; CPU:$DCFE PRG:1CFE 95 96 96 96 63 80 20 97 + .byte $23, $A0, $20, $98, $99, $98, $99, $98 ; CPU:$DD06 PRG:1D06 23 A0 20 98 99 98 99 98 + .byte $99, $98, $99, $98, $99, $98, $99, $98 ; CPU:$DD0E PRG:1D0E 99 98 99 98 99 98 99 98 + .byte $99, $98, $99, $98, $99, $98, $99, $98 ; CPU:$DD16 PRG:1D16 99 98 99 98 99 98 99 98 + .byte $99, $98, $99, $98, $99, $98, $99, $98 ; CPU:$DD1E PRG:1D1E 99 98 99 98 99 98 99 98 + .byte $99, $98, $99, $23, $C0, $08, $40, $50 ; CPU:$DD26 PRG:1D26 99 98 99 23 C0 08 40 50 + .byte $50, $50, $50, $90, $A0, $A0, $63, $E8 ; CPU:$DD2E PRG:1D2E 50 50 50 90 A0 A0 63 E8 + .byte $10, $FF, $00 ; CPU:$DD36 PRG:1D36 10 FF 00 StagePpuLayoutData: - .byte $22, $49, $0E, $30, $31, $32, $31, $32 ; CPU:$DD37 PRG:1D37 22 49 0E 30 31 32 31 32 - .byte $31, $32, $31, $32, $31, $32, $31, $32 ; CPU:$DD3F PRG:1D3F 31 32 31 32 31 32 31 32 - .byte $33, $00, $21, $57, $06, $30, $31, $32 ; CPU:$DD47 PRG:1D47 33 00 21 57 06 30 31 32 - .byte $31, $32, $33, $21, $65, $06, $30, $31 ; CPU:$DD4F PRG:1D4F 31 32 33 21 65 06 30 31 - .byte $32, $31, $32, $33, $00, $21, $90, $03 ; CPU:$DD57 PRG:1D57 32 31 32 33 00 21 90 03 - .byte $30, $31, $33, $22, $26, $03, $30, $31 ; CPU:$DD5F PRG:1D5F 30 31 33 22 26 03 30 31 - .byte $33, $22, $57, $03, $30, $31, $33, $22 ; CPU:$DD67 PRG:1D67 33 22 57 03 30 31 33 22 - .byte $6C, $03, $30, $31, $33, $22, $F2, $03 ; CPU:$DD6F PRG:1D6F 6C 03 30 31 33 22 F2 03 - .byte $30, $31, $33, $00, $20, $CB, $03, $30 ; CPU:$DD77 PRG:1D77 30 31 33 00 20 CB 03 30 - .byte $31, $33, $A1, $6D, $03, $3E, $3F, $40 ; CPU:$DD7F PRG:1D7F 31 33 A1 6D 03 3E 3F 40 - .byte $A1, $59, $04, $3E, $3F, $3F, $40, $A1 ; CPU:$DD87 PRG:1D87 A1 59 04 3E 3F 3F 40 A1 - .byte $A5, $03, $3E, $3F, $40, $22, $AA, $03 ; CPU:$DD8F PRG:1D8F A5 03 3E 3F 40 22 AA 03 - .byte $30, $31, $33, $22, $B3, $03, $30, $31 ; CPU:$DD97 PRG:1D97 30 31 33 22 B3 03 30 31 - .byte $33, $00, $20, $E2, $02, $30, $33, $20 ; CPU:$DD9F PRG:1D9F 33 00 20 E2 02 30 33 20 - .byte $FB, $02, $30, $33, $21, $57, $02, $30 ; CPU:$DDA7 PRG:1DA7 FB 02 30 33 21 57 02 30 - .byte $33, $21, $93, $02, $30, $33, $22, $0B ; CPU:$DDAF PRG:1DAF 33 21 93 02 30 33 22 0B - .byte $02, $30, $33, $22, $47, $02, $30, $33 ; CPU:$DDB7 PRG:1DB7 02 30 33 22 47 02 30 33 - .byte $22, $83, $02, $30, $33, $22, $CF, $04 ; CPU:$DDBF PRG:1DBF 22 83 02 30 33 22 CF 04 - .byte $30, $31, $32, $33, $00, $22, $CA, $03 ; CPU:$DDC7 PRG:1DC7 30 31 32 33 00 22 CA 03 - .byte $30, $31, $33, $22, $D2, $03, $30, $31 ; CPU:$DDCF PRG:1DCF 30 31 33 22 D2 03 30 31 - .byte $33, $00, $21, $08, $04, $30, $31, $32 ; CPU:$DDD7 PRG:1DD7 33 00 21 08 04 30 31 32 - .byte $33, $21, $14, $04, $30, $31, $32, $33 ; CPU:$DDDF PRG:1DDF 33 21 14 04 30 31 32 33 - .byte $A1, $A5, $04, $3E, $3F, $3F, $40, $A1 ; CPU:$DDE7 PRG:1DE7 A1 A5 04 3E 3F 3F 40 A1 - .byte $BA, $04, $3E, $3F, $3F, $40, $22, $6C ; CPU:$DDEF PRG:1DEF BA 04 3E 3F 3F 40 22 6C - .byte $06, $30, $31, $32, $31, $32, $33, $00 ; CPU:$DDF7 PRG:1DF7 06 30 31 32 31 32 33 00 - .byte $22, $EE, $04, $30, $31, $32, $33, $20 ; CPU:$DDFF PRG:1DFF 22 EE 04 30 31 32 33 20 - .byte $F9, $03, $30, $31, $33, $A1, $1A, $03 ; CPU:$DE07 PRG:1E07 F9 03 30 31 33 A1 1A 03 - .byte $3F, $3F, $40, $21, $90, $03, $30, $31 ; CPU:$DE0F PRG:1E0F 3F 3F 40 21 90 03 30 31 - .byte $33, $A1, $B1, $03, $3F, $3F, $40, $22 ; CPU:$DE17 PRG:1E17 33 A1 B1 03 3F 3F 40 22 - .byte $28, $03, $30, $31, $33, $A2, $49, $03 ; CPU:$DE1F PRG:1E1F 28 03 30 31 33 A2 49 03 - .byte $3F, $3F, $40, $20, $EA, $02, $30, $33 ; CPU:$DE27 PRG:1E27 3F 3F 40 20 EA 02 30 33 - .byte $00, $A2, $6C, $03, $3E, $3F, $40, $A2 ; CPU:$DE2F PRG:1E2F 00 A2 6C 03 3E 3F 40 A2 - .byte $73, $03, $3E, $3F, $40, $20, $E4, $04 ; CPU:$DE37 PRG:1E37 73 03 3E 3F 40 20 E4 04 - .byte $30, $31, $32, $33, $20, $F8, $04, $30 ; CPU:$DE3F PRG:1E3F 30 31 32 33 20 F8 04 30 - .byte $31, $32, $33, $21, $A8, $04, $30, $31 ; CPU:$DE47 PRG:1E47 31 32 33 21 A8 04 30 31 - .byte $32, $33, $21, $B5, $04, $30, $31, $32 ; CPU:$DE4F PRG:1E4F 32 33 21 B5 04 30 31 32 - .byte $33, $00, $22, $64, $02, $30, $33, $22 ; CPU:$DE57 PRG:1E57 33 00 22 64 02 30 33 22 - .byte $08, $02, $30, $33, $21, $AC, $02, $30 ; CPU:$DE5F PRG:1E5F 08 02 30 33 21 AC 02 30 - .byte $33, $21, $B4, $02, $30, $33, $22, $18 ; CPU:$DE67 PRG:1E67 33 21 B4 02 30 33 22 18 - .byte $02, $30, $33, $22, $7C, $02, $30, $33 ; CPU:$DE6F PRG:1E6F 02 30 33 22 7C 02 30 33 - .byte $00, $10, $C8, $48, $38, $FF, $B8, $CF ; CPU:$DE77 PRG:1E77 00 10 C8 48 38 FF B8 CF - .byte $CF, $8F, $E0, $E0, $98, $10, $C4, $48 ; CPU:$DE7F PRG:1E7F CF 8F E0 E0 98 10 C4 48 - .byte $B8, $28, $3C, $FF, $B8, $E8, $58, $CF ; CPU:$DE87 PRG:1E87 B8 28 3C FF B8 E8 58 CF - .byte $CF, $8F, $4F, $57, $E0, $E0, $98, $58 ; CPU:$DE8F PRG:1E8F CF 8F 4F 57 E0 E0 98 58 - .byte $60, $10, $FF, $DF, $EC, $10, $C8, $80 ; CPU:$DE97 PRG:1E97 60 10 FF DF EC 10 C8 80 - .byte $30, $B8, $60, $90, $38, $FF, $98, $48 ; CPU:$DE9F PRG:1E9F 30 B8 60 90 38 FF 98 48 - .byte $D0, $78, $A8, $CF, $CF, $5F, $87, $8F ; CPU:$DEA7 PRG:1EA7 D0 78 A8 CF CF 5F 87 8F - .byte $97, $B7, $E0, $E0, $68, $90, $98, $A0 ; CPU:$DEAF PRG:1EAF 97 B7 E0 E0 68 90 98 A0 - .byte $C0, $10, $C8, $58, $68, $C8, $28, $50 ; CPU:$DEB7 PRG:1EB7 C0 10 C8 58 68 C8 28 50 - .byte $98, $38, $FF, $70, $78, $D0, $30, $68 ; CPU:$DEBF PRG:1EBF 98 38 FF 70 78 D0 30 68 - .byte $B0, $CF, $CF, $2F, $57, $4F, $67, $A7 ; CPU:$DEC7 PRG:1EC7 B0 CF CF 2F 57 4F 67 A7 - .byte $A7, $E0, $E0, $38, $6C, $6C, $7C, $B0 ; CPU:$DECF PRG:1ECF A7 E0 E0 38 6C 6C 7C B0 - .byte $B0, $10, $C8, $12, $DA, $BA, $9A, $5A ; CPU:$DED7 PRG:1ED7 B0 10 C8 12 DA BA 9A 5A - .byte $3A, $1A, $7A, $38, $FF, $1E, $E6, $C6 ; CPU:$DEDF PRG:1EDF 3A 1A 7A 38 FF 1E E6 C6 - .byte $A6, $66, $46, $26, $96, $CF, $CF, $37 ; CPU:$DEE7 PRG:1EE7 A6 66 46 26 96 CF CF 37 - .byte $37, $4F, $5F, $7F, $8F, $9F, $AF, $E0 ; CPU:$DEEF PRG:1EEF 37 4F 5F 7F 8F 9F AF E0 - .byte $E0, $40, $40, $58, $68, $88, $98, $A8 ; CPU:$DEF7 PRG:1EF7 E0 40 40 58 68 88 98 A8 - .byte $B8, $10, $C8, $52, $92, $38, $FF, $66 ; CPU:$DEFF PRG:1EFF B8 10 C8 52 92 38 FF 66 - .byte $A6, $CF, $CF, $AF, $AF, $E0, $E0, $B8 ; CPU:$DF07 PRG:1F07 A6 CF CF AF AF E0 E0 B8 - .byte $B8, $10, $C8, $40, $A0, $28, $D0, $60 ; CPU:$DF0F PRG:1F0F B8 10 C8 40 A0 28 D0 60 - .byte $38, $FF, $60, $C0, $30, $D8, $90, $CF ; CPU:$DF17 PRG:1F17 38 FF 60 C0 30 D8 90 CF - .byte $CF, $3F, $3F, $67, $67, $97, $E0, $E0 ; CPU:$DF1F PRG:1F1F CF 3F 3F 67 67 97 E0 E0 - .byte $48, $48, $88, $88, $A0, $10, $C8, $50 ; CPU:$DF27 PRG:1F27 48 48 88 88 A0 10 C8 50 - .byte $C8, $88, $40, $70, $D0, $88, $48, $38 ; CPU:$DF2F PRG:1F2F C8 88 40 70 D0 88 48 38 - .byte $FF, $60, $E0, $98, $58, $90, $D8, $90 ; CPU:$DF37 PRG:1F37 FF 60 E0 98 58 90 D8 90 - .byte $50, $CF, $CF, $37, $37, $5F, $87, $B7 ; CPU:$DF3F PRG:1F3F 50 CF CF 37 37 5F 87 B7 - .byte $3C, $64, $8C, $E0, $E0, $40, $40, $68 ; CPU:$DF47 PRG:1F47 3C 64 8C E0 E0 40 40 68 - .byte $90, $C0, $60, $80, $A8, $10, $C8, $20 ; CPU:$DF4F PRG:1F4F 90 C0 60 80 A8 10 C8 20 - .byte $C0, $40, $A8, $60, $98, $38, $FF, $40 ; CPU:$DF57 PRG:1F57 C0 40 A8 60 98 38 FF 40 - .byte $E0, $60, $C8, $68, $A0, $CF, $CF, $37 ; CPU:$DF5F PRG:1F5F E0 60 C8 68 A0 CF CF 37 - .byte $37, $67, $67, $97, $97, $E0, $E0, $40 ; CPU:$DF67 PRG:1F67 37 67 67 97 97 E0 E0 40 - .byte $40, $70, $70, $B0, $B0, $10, $C8, $20 ; CPU:$DF6F PRG:1F6F 40 70 70 B0 B0 10 C8 20 - .byte $40, $60, $A0, $C0, $E0, $38, $FF, $30 ; CPU:$DF77 PRG:1F77 40 60 A0 C0 E0 38 FF 30 - .byte $50, $70, $B0, $D0, $F0, $CF, $CF, $97 ; CPU:$DF7F PRG:1F7F 50 70 B0 D0 F0 CF CF 97 - .byte $7F, $67, $67, $7F, $97, $E0, $E0, $A0 ; CPU:$DF87 PRG:1F87 7F 67 67 7F 97 E0 E0 A0 - .byte $88, $70, $70, $88, $A0, $03, $58, $78 ; CPU:$DF8F PRG:1F8F 88 70 70 88 A0 03 58 78 - .byte $04, $78, $78, $04, $98, $78, $04, $05 ; CPU:$DF97 PRG:1F97 04 78 78 04 98 78 04 05 - .byte $C8, $38, $05, $38, $40, $05, $58, $78 ; CPU:$DF9F PRG:1F9F C8 38 05 38 40 05 58 78 - .byte $04, $78, $78, $04, $98, $78, $04, $00 ; CPU:$DFA7 PRG:1FA7 04 78 78 04 98 78 04 00 - .byte $05, $94, $A0, $06, $84, $48, $05, $34 ; CPU:$DFAF PRG:1FAF 05 94 A0 06 84 48 05 34 - .byte $70, $04, $64, $80, $04, $BC, $78, $04 ; CPU:$DFB7 PRG:1FB7 70 04 64 80 04 BC 78 04 - .byte $06, $5C, $18, $06, $24, $50, $05, $64 ; CPU:$DFBF PRG:1FBF 06 5C 18 06 24 50 05 64 - .byte $40, $05, $C4, $38, $05, $54, $90, $04 ; CPU:$DFC7 PRG:1FC7 40 05 C4 38 05 54 90 04 - .byte $9C, $90, $04, $06, $10, $20, $06, $D8 ; CPU:$DFCF PRG:1FCF 9C 90 04 06 10 20 06 D8 - .byte $20, $06, $B8, $38, $05, $98, $48, $05 ; CPU:$DFD7 PRG:1FD7 20 06 B8 38 05 98 48 05 - .byte $58, $68, $05, $38, $78, $04, $05, $54 ; CPU:$DFDF PRG:1FDF 58 68 05 38 78 04 05 54 - .byte $98, $05, $94, $98, $05, $6C, $39, $06 ; CPU:$DFE7 PRG:1FE7 98 05 94 98 05 6C 39 06 - .byte $94, $31, $06, $BC, $59, $06, $05, $50 ; CPU:$DFEF PRG:1FEF 94 31 06 BC 59 06 05 50 - .byte $28, $06, $A8, $28, $06, $24, $50, $06 ; CPU:$DFF7 PRG:1FF7 28 06 A8 28 06 24 50 06 - .byte $CC, $50, $06, $70, $80, $04, $05, $50 ; CPU:$DFFF PRG:1FFF CC 50 06 70 80 04 05 50 - .byte $20, $06, $C8, $20, $06, $84, $48, $05 ; CPU:$E007 PRG:2007 20 06 C8 20 06 84 48 05 - .byte $44, $70, $05, $78, $A0, $04, $06, $28 ; CPU:$E00F PRG:200F 44 70 05 78 A0 04 06 28 - .byte $20, $06, $C8, $20, $06, $48, $50, $05 ; CPU:$E017 PRG:2017 20 06 C8 20 06 48 50 05 - .byte $B0, $50, $05, $5C, $80, $04, $94, $80 ; CPU:$E01F PRG:201F B0 50 05 5C 80 04 94 80 - .byte $04, $06, $20, $80, $04, $40, $68, $05 ; CPU:$E027 PRG:2027 04 06 20 80 04 40 68 05 - .byte $60, $50, $06, $A0, $50, $06, $C0, $68 ; CPU:$E02F PRG:202F 60 50 06 A0 50 06 C0 68 - .byte $05, $E0, $80, $04 ; CPU:$E037 PRG:2037 05 E0 80 04 + .byte $22, $49, $0E, $30, $31, $32, $31, $32 ; CPU:$DD39 PRG:1D39 22 49 0E 30 31 32 31 32 + .byte $31, $32, $31, $32, $31, $32, $31, $32 ; CPU:$DD41 PRG:1D41 31 32 31 32 31 32 31 32 + .byte $33, $00, $21, $57, $06, $30, $31, $32 ; CPU:$DD49 PRG:1D49 33 00 21 57 06 30 31 32 + .byte $31, $32, $33, $21, $65, $06, $30, $31 ; CPU:$DD51 PRG:1D51 31 32 33 21 65 06 30 31 + .byte $32, $31, $32, $33, $00, $21, $90, $03 ; CPU:$DD59 PRG:1D59 32 31 32 33 00 21 90 03 + .byte $30, $31, $33, $22, $26, $03, $30, $31 ; CPU:$DD61 PRG:1D61 30 31 33 22 26 03 30 31 + .byte $33, $22, $57, $03, $30, $31, $33, $22 ; CPU:$DD69 PRG:1D69 33 22 57 03 30 31 33 22 + .byte $6C, $03, $30, $31, $33, $22, $F2, $03 ; CPU:$DD71 PRG:1D71 6C 03 30 31 33 22 F2 03 + .byte $30, $31, $33, $00, $20, $CB, $03, $30 ; CPU:$DD79 PRG:1D79 30 31 33 00 20 CB 03 30 + .byte $31, $33, $A1, $6D, $03, $3E, $3F, $40 ; CPU:$DD81 PRG:1D81 31 33 A1 6D 03 3E 3F 40 + .byte $A1, $59, $04, $3E, $3F, $3F, $40, $A1 ; CPU:$DD89 PRG:1D89 A1 59 04 3E 3F 3F 40 A1 + .byte $A5, $03, $3E, $3F, $40, $22, $AA, $03 ; CPU:$DD91 PRG:1D91 A5 03 3E 3F 40 22 AA 03 + .byte $30, $31, $33, $22, $B3, $03, $30, $31 ; CPU:$DD99 PRG:1D99 30 31 33 22 B3 03 30 31 + .byte $33, $00, $20, $E2, $02, $30, $33, $20 ; CPU:$DDA1 PRG:1DA1 33 00 20 E2 02 30 33 20 + .byte $FB, $02, $30, $33, $21, $57, $02, $30 ; CPU:$DDA9 PRG:1DA9 FB 02 30 33 21 57 02 30 + .byte $33, $21, $93, $02, $30, $33, $22, $0B ; CPU:$DDB1 PRG:1DB1 33 21 93 02 30 33 22 0B + .byte $02, $30, $33, $22, $47, $02, $30, $33 ; CPU:$DDB9 PRG:1DB9 02 30 33 22 47 02 30 33 + .byte $22, $83, $02, $30, $33, $22, $CF, $04 ; CPU:$DDC1 PRG:1DC1 22 83 02 30 33 22 CF 04 + .byte $30, $31, $32, $33, $00, $22, $CA, $03 ; CPU:$DDC9 PRG:1DC9 30 31 32 33 00 22 CA 03 + .byte $30, $31, $33, $22, $D2, $03, $30, $31 ; CPU:$DDD1 PRG:1DD1 30 31 33 22 D2 03 30 31 + .byte $33, $00, $21, $08, $04, $30, $31, $32 ; CPU:$DDD9 PRG:1DD9 33 00 21 08 04 30 31 32 + .byte $33, $21, $14, $04, $30, $31, $32, $33 ; CPU:$DDE1 PRG:1DE1 33 21 14 04 30 31 32 33 + .byte $A1, $A5, $04, $3E, $3F, $3F, $40, $A1 ; CPU:$DDE9 PRG:1DE9 A1 A5 04 3E 3F 3F 40 A1 + .byte $BA, $04, $3E, $3F, $3F, $40, $22, $6C ; CPU:$DDF1 PRG:1DF1 BA 04 3E 3F 3F 40 22 6C + .byte $06, $30, $31, $32, $31, $32, $33, $00 ; CPU:$DDF9 PRG:1DF9 06 30 31 32 31 32 33 00 + .byte $22, $EE, $04, $30, $31, $32, $33, $20 ; CPU:$DE01 PRG:1E01 22 EE 04 30 31 32 33 20 + .byte $F9, $03, $30, $31, $33, $A1, $1A, $03 ; CPU:$DE09 PRG:1E09 F9 03 30 31 33 A1 1A 03 + .byte $3F, $3F, $40, $21, $90, $03, $30, $31 ; CPU:$DE11 PRG:1E11 3F 3F 40 21 90 03 30 31 + .byte $33, $A1, $B1, $03, $3F, $3F, $40, $22 ; CPU:$DE19 PRG:1E19 33 A1 B1 03 3F 3F 40 22 + .byte $28, $03, $30, $31, $33, $A2, $49, $03 ; CPU:$DE21 PRG:1E21 28 03 30 31 33 A2 49 03 + .byte $3F, $3F, $40, $20, $EA, $02, $30, $33 ; CPU:$DE29 PRG:1E29 3F 3F 40 20 EA 02 30 33 + .byte $00, $A2, $6C, $03, $3E, $3F, $40, $A2 ; CPU:$DE31 PRG:1E31 00 A2 6C 03 3E 3F 40 A2 + .byte $73, $03, $3E, $3F, $40, $20, $E4, $04 ; CPU:$DE39 PRG:1E39 73 03 3E 3F 40 20 E4 04 + .byte $30, $31, $32, $33, $20, $F8, $04, $30 ; CPU:$DE41 PRG:1E41 30 31 32 33 20 F8 04 30 + .byte $31, $32, $33, $21, $A8, $04, $30, $31 ; CPU:$DE49 PRG:1E49 31 32 33 21 A8 04 30 31 + .byte $32, $33, $21, $B5, $04, $30, $31, $32 ; CPU:$DE51 PRG:1E51 32 33 21 B5 04 30 31 32 + .byte $33, $00, $22, $64, $02, $30, $33, $22 ; CPU:$DE59 PRG:1E59 33 00 22 64 02 30 33 22 + .byte $08, $02, $30, $33, $21, $AC, $02, $30 ; CPU:$DE61 PRG:1E61 08 02 30 33 21 AC 02 30 + .byte $33, $21, $B4, $02, $30, $33, $22, $18 ; CPU:$DE69 PRG:1E69 33 21 B4 02 30 33 22 18 + .byte $02, $30, $33, $22, $7C, $02, $30, $33 ; CPU:$DE71 PRG:1E71 02 30 33 22 7C 02 30 33 + .byte $00, $10, $C8, $48, $38, $FF, $B8, $CF ; CPU:$DE79 PRG:1E79 00 10 C8 48 38 FF B8 CF + .byte $CF, $8F, $E0, $E0, $98, $10, $C4, $48 ; CPU:$DE81 PRG:1E81 CF 8F E0 E0 98 10 C4 48 + .byte $B8, $28, $3C, $FF, $B8, $E8, $58, $CF ; CPU:$DE89 PRG:1E89 B8 28 3C FF B8 E8 58 CF + .byte $CF, $8F, $4F, $57, $E0, $E0, $98, $58 ; CPU:$DE91 PRG:1E91 CF 8F 4F 57 E0 E0 98 58 + .byte $60, $10, $FF, $DF, $EC, $10, $C8, $80 ; CPU:$DE99 PRG:1E99 60 10 FF DF EC 10 C8 80 + .byte $30, $B8, $60, $90, $38, $FF, $98, $48 ; CPU:$DEA1 PRG:1EA1 30 B8 60 90 38 FF 98 48 + .byte $D0, $78, $A8, $CF, $CF, $5F, $87, $8F ; CPU:$DEA9 PRG:1EA9 D0 78 A8 CF CF 5F 87 8F + .byte $97, $B7, $E0, $E0, $68, $90, $98, $A0 ; CPU:$DEB1 PRG:1EB1 97 B7 E0 E0 68 90 98 A0 + .byte $C0, $10, $C8, $58, $68, $C8, $28, $50 ; CPU:$DEB9 PRG:1EB9 C0 10 C8 58 68 C8 28 50 + .byte $98, $38, $FF, $70, $78, $D0, $30, $68 ; CPU:$DEC1 PRG:1EC1 98 38 FF 70 78 D0 30 68 + .byte $B0, $CF, $CF, $2F, $57, $4F, $67, $A7 ; CPU:$DEC9 PRG:1EC9 B0 CF CF 2F 57 4F 67 A7 + .byte $A7, $E0, $E0, $38, $6C, $6C, $7C, $B0 ; CPU:$DED1 PRG:1ED1 A7 E0 E0 38 6C 6C 7C B0 + .byte $B0, $10, $C8, $12, $DA, $BA, $9A, $5A ; CPU:$DED9 PRG:1ED9 B0 10 C8 12 DA BA 9A 5A + .byte $3A, $1A, $7A, $38, $FF, $1E, $E6, $C6 ; CPU:$DEE1 PRG:1EE1 3A 1A 7A 38 FF 1E E6 C6 + .byte $A6, $66, $46, $26, $96, $CF, $CF, $37 ; CPU:$DEE9 PRG:1EE9 A6 66 46 26 96 CF CF 37 + .byte $37, $4F, $5F, $7F, $8F, $9F, $AF, $E0 ; CPU:$DEF1 PRG:1EF1 37 4F 5F 7F 8F 9F AF E0 + .byte $E0, $40, $40, $58, $68, $88, $98, $A8 ; CPU:$DEF9 PRG:1EF9 E0 40 40 58 68 88 98 A8 + .byte $B8, $10, $C8, $52, $92, $38, $FF, $66 ; CPU:$DF01 PRG:1F01 B8 10 C8 52 92 38 FF 66 + .byte $A6, $CF, $CF, $AF, $AF, $E0, $E0, $B8 ; CPU:$DF09 PRG:1F09 A6 CF CF AF AF E0 E0 B8 + .byte $B8, $10, $C8, $40, $A0, $28, $D0, $60 ; CPU:$DF11 PRG:1F11 B8 10 C8 40 A0 28 D0 60 + .byte $38, $FF, $60, $C0, $30, $D8, $90, $CF ; CPU:$DF19 PRG:1F19 38 FF 60 C0 30 D8 90 CF + .byte $CF, $3F, $3F, $67, $67, $97, $E0, $E0 ; CPU:$DF21 PRG:1F21 CF 3F 3F 67 67 97 E0 E0 + .byte $48, $48, $88, $88, $A0, $10, $C8, $50 ; CPU:$DF29 PRG:1F29 48 48 88 88 A0 10 C8 50 + .byte $C8, $88, $40, $70, $D0, $88, $48, $38 ; CPU:$DF31 PRG:1F31 C8 88 40 70 D0 88 48 38 + .byte $FF, $60, $E0, $98, $58, $90, $D8, $90 ; CPU:$DF39 PRG:1F39 FF 60 E0 98 58 90 D8 90 + .byte $50, $CF, $CF, $37, $37, $5F, $87, $B7 ; CPU:$DF41 PRG:1F41 50 CF CF 37 37 5F 87 B7 + .byte $3C, $64, $8C, $E0, $E0, $40, $40, $68 ; CPU:$DF49 PRG:1F49 3C 64 8C E0 E0 40 40 68 + .byte $90, $C0, $60, $80, $A8, $10, $C8, $20 ; CPU:$DF51 PRG:1F51 90 C0 60 80 A8 10 C8 20 + .byte $C0, $40, $A8, $60, $98, $38, $FF, $40 ; CPU:$DF59 PRG:1F59 C0 40 A8 60 98 38 FF 40 + .byte $E0, $60, $C8, $68, $A0, $CF, $CF, $37 ; CPU:$DF61 PRG:1F61 E0 60 C8 68 A0 CF CF 37 + .byte $37, $67, $67, $97, $97, $E0, $E0, $40 ; CPU:$DF69 PRG:1F69 37 67 67 97 97 E0 E0 40 + .byte $40, $70, $70, $B0, $B0, $10, $C8, $20 ; CPU:$DF71 PRG:1F71 40 70 70 B0 B0 10 C8 20 + .byte $40, $60, $A0, $C0, $E0, $38, $FF, $30 ; CPU:$DF79 PRG:1F79 40 60 A0 C0 E0 38 FF 30 + .byte $50, $70, $B0, $D0, $F0, $CF, $CF, $97 ; CPU:$DF81 PRG:1F81 50 70 B0 D0 F0 CF CF 97 + .byte $7F, $67, $67, $7F, $97, $E0, $E0, $A0 ; CPU:$DF89 PRG:1F89 7F 67 67 7F 97 E0 E0 A0 + .byte $88, $70, $70, $88, $A0, $03, $58, $78 ; CPU:$DF91 PRG:1F91 88 70 70 88 A0 03 58 78 + .byte $04, $78, $78, $04, $98, $78, $04, $05 ; CPU:$DF99 PRG:1F99 04 78 78 04 98 78 04 05 + .byte $C8, $38, $05, $38, $40, $05, $58, $78 ; CPU:$DFA1 PRG:1FA1 C8 38 05 38 40 05 58 78 + .byte $04, $78, $78, $04, $98, $78, $04, $00 ; CPU:$DFA9 PRG:1FA9 04 78 78 04 98 78 04 00 + .byte $05, $94, $A0, $06, $84, $48, $05, $34 ; CPU:$DFB1 PRG:1FB1 05 94 A0 06 84 48 05 34 + .byte $70, $04, $64, $80, $04, $BC, $78, $04 ; CPU:$DFB9 PRG:1FB9 70 04 64 80 04 BC 78 04 + .byte $06, $5C, $18, $06, $24, $50, $05, $64 ; CPU:$DFC1 PRG:1FC1 06 5C 18 06 24 50 05 64 + .byte $40, $05, $C4, $38, $05, $54, $90, $04 ; CPU:$DFC9 PRG:1FC9 40 05 C4 38 05 54 90 04 + .byte $9C, $90, $04, $06, $10, $20, $06, $D8 ; CPU:$DFD1 PRG:1FD1 9C 90 04 06 10 20 06 D8 + .byte $20, $06, $B8, $38, $05, $98, $48, $05 ; CPU:$DFD9 PRG:1FD9 20 06 B8 38 05 98 48 05 + .byte $58, $68, $05, $38, $78, $04, $05, $54 ; CPU:$DFE1 PRG:1FE1 58 68 05 38 78 04 05 54 + .byte $98, $05, $94, $98, $05, $6C, $39, $06 ; CPU:$DFE9 PRG:1FE9 98 05 94 98 05 6C 39 06 + .byte $94, $31, $06, $BC, $59, $06, $05, $50 ; CPU:$DFF1 PRG:1FF1 94 31 06 BC 59 06 05 50 + .byte $28, $06, $A8, $28, $06, $24, $50, $06 ; CPU:$DFF9 PRG:1FF9 28 06 A8 28 06 24 50 06 + .byte $CC, $50, $06, $70, $80, $04, $05, $50 ; CPU:$E001 PRG:2001 CC 50 06 70 80 04 05 50 + .byte $20, $06, $C8, $20, $06, $84, $48, $05 ; CPU:$E009 PRG:2009 20 06 C8 20 06 84 48 05 + .byte $44, $70, $05, $78, $A0, $04, $06, $28 ; CPU:$E011 PRG:2011 44 70 05 78 A0 04 06 28 + .byte $20, $06, $C8, $20, $06, $48, $50, $05 ; CPU:$E019 PRG:2019 20 06 C8 20 06 48 50 05 + .byte $B0, $50, $05, $5C, $80, $04, $94, $80 ; CPU:$E021 PRG:2021 B0 50 05 5C 80 04 94 80 + .byte $04, $06, $20, $80, $04, $40, $68, $05 ; CPU:$E029 PRG:2029 04 06 20 80 04 40 68 05 + .byte $60, $50, $06, $A0, $50, $06, $C0, $68 ; CPU:$E031 PRG:2031 60 50 06 A0 50 06 C0 68 + .byte $05, $E0, $80, $04 ; CPU:$E039 PRG:2039 05 E0 80 04 StageObjectPointerData: - .byte $08, $08, $F0, $08, $08, $00, $00, $00 ; CPU:$E03B PRG:203B 08 08 F0 08 08 00 00 00 - .byte $00, $08, $08, $08, $00, $00, $01, $08 ; CPU:$E043 PRG:2043 00 08 08 08 00 00 01 08 - .byte $08, $09, $00, $00, $FF, $08, $08, $07 ; CPU:$E04B PRG:204B 08 09 00 00 FF 08 08 07 - .byte $FE, $00, $00, $06, $08, $08, $02, $00 ; CPU:$E053 PRG:2053 FE 00 00 06 08 08 02 00 - .byte $00, $0A, $08, $08, $02, $00, $01, $0A ; CPU:$E05B PRG:205B 00 0A 08 08 02 00 01 0A - .byte $08, $09, $04, $00, $00, $0C, $08, $08 ; CPU:$E063 PRG:2063 08 09 04 00 00 0C 08 08 - .byte $00, $00, $FE, $08, $08, $06, $FD, $FD ; CPU:$E06B PRG:206B 00 00 FE 08 08 06 FD FD - .byte $FD, $05, $05, $05, $08, $08, $08, $00 ; CPU:$E073 PRG:2073 FD 05 05 05 08 08 08 00 - .byte $00, $00, $08, $08, $07, $00, $00, $FF ; CPU:$E07B PRG:207B 00 00 08 08 07 00 00 FF - .byte $08, $08, $09, $00, $00, $01, $0A, $08 ; CPU:$E083 PRG:2083 08 08 09 00 00 01 0A 08 - .byte $08, $02, $00, $00, $06, $08, $08, $FE ; CPU:$E08B PRG:208B 08 02 00 00 06 08 08 FE - .byte $00, $00, $06, $08, $07, $FE, $00, $FF ; CPU:$E093 PRG:2093 00 00 06 08 07 FE 00 FF - .byte $04, $08, $08, $FC, $00, $00, $08, $08 ; CPU:$E09B PRG:209B 04 08 08 FC 00 00 08 08 - .byte $0A, $00, $00, $02, $0B, $0B, $0B, $03 ; CPU:$E0A3 PRG:20A3 0A 00 00 02 0B 0B 0B 03 - .byte $03, $03, $00, $00, $01, $02, $03, $04 ; CPU:$E0AB PRG:20AB 03 03 00 00 01 02 03 04 - .byte $05, $00, $00, $01, $02, $03, $06, $07 ; CPU:$E0B3 PRG:20B3 05 00 00 01 02 03 06 07 - .byte $00, $00, $01, $02, $03, $06, $08, $00 ; CPU:$E0BB PRG:20BB 00 00 01 02 03 06 08 00 - .byte $09, $0A, $02, $0B, $0C, $05, $00, $00 ; CPU:$E0C3 PRG:20C3 09 0A 02 0B 0C 05 00 00 - .byte $01, $02, $03, $04, $05, $00, $00, $01 ; CPU:$E0CB PRG:20CB 01 02 03 04 05 00 00 01 - .byte $02, $0D, $0E, $05, $00, $1A, $1B, $1C ; CPU:$E0D3 PRG:20D3 02 0D 0E 05 00 1A 1B 1C - .byte $1D, $1E, $1F, $01, $1A, $1B, $20, $1D ; CPU:$E0DB PRG:20DB 1D 1E 1F 01 1A 1B 20 1D - .byte $1E, $FC, $00, $1A, $21, $22, $1D, $23 ; CPU:$E0E3 PRG:20E3 1E FC 00 1A 21 22 1D 23 - .byte $24, $00, $00, $38, $35, $0D, $39, $37 ; CPU:$E0EB PRG:20EB 24 00 00 38 35 0D 39 37 - .byte $00, $00, $34, $35, $03, $36, $37, $00 ; CPU:$E0F3 PRG:20F3 00 00 34 35 03 36 37 00 - .byte $09, $3A, $35, $0B, $3B, $37, $00, $CE ; CPU:$E0FB PRG:20FB 09 3A 35 0B 3B 37 00 CE - .byte $CF, $D0, $D1, $D2, $D3, $00, $25, $26 ; CPU:$E103 PRG:2103 CF D0 D1 D2 D3 00 25 26 - .byte $27, $28, $29, $2A, $01, $28, $29, $2C ; CPU:$E10B PRG:210B 27 28 29 2A 01 28 29 2C - .byte $25, $26, $2B, $00, $4C, $CC, $02, $4D ; CPU:$E113 PRG:2113 25 26 2B 00 4C CC 02 4D - .byte $CD, $05, $00, $4C, $2F, $22, $4D, $30 ; CPU:$E11B PRG:211B CD 05 00 4C 2F 22 4D 30 - .byte $24, $07, $4C, $2F, $35, $4D, $30, $37 ; CPU:$E123 PRG:2123 24 07 4C 2F 35 4D 30 37 - .byte $02, $4C, $2F, $27, $4D, $30, $2A, $07 ; CPU:$E12B PRG:212B 02 4C 2F 27 4D 30 2A 07 - .byte $4C, $2F, $2B, $4D, $30, $2C, $00, $0F ; CPU:$E133 PRG:2133 4C 2F 2B 4D 30 2C 00 0F - .byte $10, $02, $11, $12, $05, $00, $0F, $10 ; CPU:$E13B PRG:213B 10 02 11 12 05 00 0F 10 - .byte $02, $11, $19, $07, $00, $0F, $10, $02 ; CPU:$E143 PRG:2143 02 11 19 07 00 0F 10 02 - .byte $11, $19, $08, $00, $13, $14, $02, $15 ; CPU:$E14B PRG:214B 11 19 08 00 13 14 02 15 - .byte $16, $05, $00, $0F, $10, $02, $11, $12 ; CPU:$E153 PRG:2153 16 05 00 0F 10 02 11 12 - .byte $05, $03, $13, $17, $02, $15, $18, $05 ; CPU:$E15B PRG:215B 05 03 13 17 02 15 18 05 - .byte $04, $13, $2D, $1C, $15, $2E, $1F, $05 ; CPU:$E163 PRG:2163 04 13 2D 1C 15 2E 1F 05 - .byte $13, $2D, $20, $15, $2E, $FC, $04, $13 ; CPU:$E16B PRG:216B 13 2D 20 15 2E FC 04 13 - .byte $2F, $22, $15, $30, $24, $00, $13, $3C ; CPU:$E173 PRG:2173 2F 22 15 30 24 00 13 3C - .byte $35, $15, $3D, $37, $00, $0F, $40, $35 ; CPU:$E17B PRG:217B 35 15 3D 37 00 0F 40 35 - .byte $11, $41, $37, $03, $13, $3E, $35, $15 ; CPU:$E183 PRG:2183 11 41 37 03 13 3E 35 15 - .byte $3F, $37, $00, $D4, $D5, $D0, $D6, $D7 ; CPU:$E18B PRG:218B 3F 37 00 D4 D5 D0 D6 D7 - .byte $D3, $00, $25, $31, $27, $32, $33, $2A ; CPU:$E193 PRG:2193 D3 00 25 31 27 32 33 2A - .byte $02, $25, $31, $27, $32, $33, $2A, $00 ; CPU:$E19B PRG:219B 02 25 31 27 32 33 2A 00 - .byte $FC, $48, $42, $FC, $49, $43, $00, $FC ; CPU:$E1A3 PRG:21A3 FC 48 42 FC 49 43 00 FC - .byte $48, $44, $FC, $49, $45, $00, $FC, $4A ; CPU:$E1AB PRG:21AB 48 44 FC 49 45 00 FC 4A - .byte $46, $FC, $4B, $47, $00, $FC, $A4, $A5 ; CPU:$E1B3 PRG:21B3 46 FC 4B 47 00 FC A4 A5 - .byte $FC, $A6, $A7, $08, $FC, $71, $FC, $FC ; CPU:$E1BB PRG:21BB FC A6 A7 08 FC 71 FC FC - .byte $72, $73, $08, $FC, $74, $FC, $FC, $75 ; CPU:$E1C3 PRG:21C3 72 73 08 FC 74 FC FC 75 - .byte $76, $08, $FC, $71, $77, $FC, $72, $73 ; CPU:$E1CB PRG:21CB 76 08 FC 71 77 FC 72 73 - .byte $08, $FC, $74, $77, $FC, $75, $76, $08 ; CPU:$E1D3 PRG:21D3 08 FC 74 77 FC 75 76 08 - .byte $FC, $71, $78, $FC, $72, $73, $08, $FC ; CPU:$E1DB PRG:21DB FC 71 78 FC 72 73 08 FC - .byte $74, $78, $FC, $75, $76, $08, $FC, $71 ; CPU:$E1E3 PRG:21E3 74 78 FC 75 76 08 FC 71 - .byte $79, $FC, $72, $73, $08, $FC, $74, $79 ; CPU:$E1EB PRG:21EB 79 FC 72 73 08 FC 74 79 - .byte $FC, $75, $76, $00, $4E, $4F, $50, $51 ; CPU:$E1F3 PRG:21F3 FC 75 76 00 4E 4F 50 51 - .byte $52, $53, $00, $4E, $4F, $50, $51, $5E ; CPU:$E1FB PRG:21FB 52 53 00 4E 4F 50 51 5E - .byte $58, $00, $4E, $4F, $50, $51, $5E, $5D ; CPU:$E203 PRG:2203 58 00 4E 4F 50 51 5E 5D - .byte $00, $54, $55, $50, $56, $57, $53, $00 ; CPU:$E20B PRG:220B 00 54 55 50 56 57 53 00 - .byte $4E, $4F, $50, $51, $52, $53, $00, $59 ; CPU:$E213 PRG:2213 4E 4F 50 51 52 53 00 59 - .byte $5A, $50, $5B, $5C, $53, $00, $FC, $5F ; CPU:$E21B PRG:221B 5A 50 5B 5C 53 00 FC 5F - .byte $60, $FC, $61, $62, $06, $63, $64, $60 ; CPU:$E223 PRG:2223 60 FC 61 62 06 63 64 60 - .byte $FC, $65, $62, $00, $66, $67, $60, $68 ; CPU:$E22B PRG:222B FC 65 62 00 66 67 60 68 - .byte $69, $62, $00, $6A, $67, $60, $6B, $69 ; CPU:$E233 PRG:2233 69 62 00 6A 67 60 6B 69 - .byte $62, $00, $FC, $6C, $6D, $FC, $6E, $6F ; CPU:$E23B PRG:223B 62 00 FC 6C 6D FC 6E 6F - .byte $00, $FC, $6C, $6D, $FC, $6E, $70 ; CPU:$E243 PRG:2243 00 FC 6C 6D FC 6E 70 + .byte $08, $08, $F0, $08, $08, $00, $00, $00 ; CPU:$E03D PRG:203D 08 08 F0 08 08 00 00 00 + .byte $00, $08, $08, $08, $00, $00, $01, $08 ; CPU:$E045 PRG:2045 00 08 08 08 00 00 01 08 + .byte $08, $09, $00, $00, $FF, $08, $08, $07 ; CPU:$E04D PRG:204D 08 09 00 00 FF 08 08 07 + .byte $FE, $00, $00, $06, $08, $08, $02, $00 ; CPU:$E055 PRG:2055 FE 00 00 06 08 08 02 00 + .byte $00, $0A, $08, $08, $02, $00, $01, $0A ; CPU:$E05D PRG:205D 00 0A 08 08 02 00 01 0A + .byte $08, $09, $04, $00, $00, $0C, $08, $08 ; CPU:$E065 PRG:2065 08 09 04 00 00 0C 08 08 + .byte $00, $00, $FE, $08, $08, $06, $FD, $FD ; CPU:$E06D PRG:206D 00 00 FE 08 08 06 FD FD + .byte $FD, $05, $05, $05, $08, $08, $08, $00 ; CPU:$E075 PRG:2075 FD 05 05 05 08 08 08 00 + .byte $00, $00, $08, $08, $07, $00, $00, $FF ; CPU:$E07D PRG:207D 00 00 08 08 07 00 00 FF + .byte $08, $08, $09, $00, $00, $01, $0A, $08 ; CPU:$E085 PRG:2085 08 08 09 00 00 01 0A 08 + .byte $08, $02, $00, $00, $06, $08, $08, $FE ; CPU:$E08D PRG:208D 08 02 00 00 06 08 08 FE + .byte $00, $00, $06, $08, $07, $FE, $00, $FF ; CPU:$E095 PRG:2095 00 00 06 08 07 FE 00 FF + .byte $04, $08, $08, $FC, $00, $00, $08, $08 ; CPU:$E09D PRG:209D 04 08 08 FC 00 00 08 08 + .byte $0A, $00, $00, $02, $0B, $0B, $0B, $03 ; CPU:$E0A5 PRG:20A5 0A 00 00 02 0B 0B 0B 03 + .byte $03, $03, $00, $00, $01, $02, $03, $04 ; CPU:$E0AD PRG:20AD 03 03 00 00 01 02 03 04 + .byte $05, $00, $00, $01, $02, $03, $06, $07 ; CPU:$E0B5 PRG:20B5 05 00 00 01 02 03 06 07 + .byte $00, $00, $01, $02, $03, $06, $08, $00 ; CPU:$E0BD PRG:20BD 00 00 01 02 03 06 08 00 + .byte $09, $0A, $02, $0B, $0C, $05, $00, $00 ; CPU:$E0C5 PRG:20C5 09 0A 02 0B 0C 05 00 00 + .byte $01, $02, $03, $04, $05, $00, $00, $01 ; CPU:$E0CD PRG:20CD 01 02 03 04 05 00 00 01 + .byte $02, $0D, $0E, $05, $00, $1A, $1B, $1C ; CPU:$E0D5 PRG:20D5 02 0D 0E 05 00 1A 1B 1C + .byte $1D, $1E, $1F, $01, $1A, $1B, $20, $1D ; CPU:$E0DD PRG:20DD 1D 1E 1F 01 1A 1B 20 1D + .byte $1E, $FC, $00, $1A, $21, $22, $1D, $23 ; CPU:$E0E5 PRG:20E5 1E FC 00 1A 21 22 1D 23 + .byte $24, $00, $00, $38, $35, $0D, $39, $37 ; CPU:$E0ED PRG:20ED 24 00 00 38 35 0D 39 37 + .byte $00, $00, $34, $35, $03, $36, $37, $00 ; CPU:$E0F5 PRG:20F5 00 00 34 35 03 36 37 00 + .byte $09, $3A, $35, $0B, $3B, $37, $00, $CE ; CPU:$E0FD PRG:20FD 09 3A 35 0B 3B 37 00 CE + .byte $CF, $D0, $D1, $D2, $D3, $00, $25, $26 ; CPU:$E105 PRG:2105 CF D0 D1 D2 D3 00 25 26 + .byte $27, $28, $29, $2A, $01, $28, $29, $2C ; CPU:$E10D PRG:210D 27 28 29 2A 01 28 29 2C + .byte $25, $26, $2B, $00, $4C, $CC, $02, $4D ; CPU:$E115 PRG:2115 25 26 2B 00 4C CC 02 4D + .byte $CD, $05, $00, $4C, $2F, $22, $4D, $30 ; CPU:$E11D PRG:211D CD 05 00 4C 2F 22 4D 30 + .byte $24, $07, $4C, $2F, $35, $4D, $30, $37 ; CPU:$E125 PRG:2125 24 07 4C 2F 35 4D 30 37 + .byte $02, $4C, $2F, $27, $4D, $30, $2A, $07 ; CPU:$E12D PRG:212D 02 4C 2F 27 4D 30 2A 07 + .byte $4C, $2F, $2B, $4D, $30, $2C, $00, $0F ; CPU:$E135 PRG:2135 4C 2F 2B 4D 30 2C 00 0F + .byte $10, $02, $11, $12, $05, $00, $0F, $10 ; CPU:$E13D PRG:213D 10 02 11 12 05 00 0F 10 + .byte $02, $11, $19, $07, $00, $0F, $10, $02 ; CPU:$E145 PRG:2145 02 11 19 07 00 0F 10 02 + .byte $11, $19, $08, $00, $13, $14, $02, $15 ; CPU:$E14D PRG:214D 11 19 08 00 13 14 02 15 + .byte $16, $05, $00, $0F, $10, $02, $11, $12 ; CPU:$E155 PRG:2155 16 05 00 0F 10 02 11 12 + .byte $05, $03, $13, $17, $02, $15, $18, $05 ; CPU:$E15D PRG:215D 05 03 13 17 02 15 18 05 + .byte $04, $13, $2D, $1C, $15, $2E, $1F, $05 ; CPU:$E165 PRG:2165 04 13 2D 1C 15 2E 1F 05 + .byte $13, $2D, $20, $15, $2E, $FC, $04, $13 ; CPU:$E16D PRG:216D 13 2D 20 15 2E FC 04 13 + .byte $2F, $22, $15, $30, $24, $00, $13, $3C ; CPU:$E175 PRG:2175 2F 22 15 30 24 00 13 3C + .byte $35, $15, $3D, $37, $00, $0F, $40, $35 ; CPU:$E17D PRG:217D 35 15 3D 37 00 0F 40 35 + .byte $11, $41, $37, $03, $13, $3E, $35, $15 ; CPU:$E185 PRG:2185 11 41 37 03 13 3E 35 15 + .byte $3F, $37, $00, $D4, $D5, $D0, $D6, $D7 ; CPU:$E18D PRG:218D 3F 37 00 D4 D5 D0 D6 D7 + .byte $D3, $00, $25, $31, $27, $32, $33, $2A ; CPU:$E195 PRG:2195 D3 00 25 31 27 32 33 2A + .byte $02, $25, $31, $27, $32, $33, $2A, $00 ; CPU:$E19D PRG:219D 02 25 31 27 32 33 2A 00 + .byte $FC, $48, $42, $FC, $49, $43, $00, $FC ; CPU:$E1A5 PRG:21A5 FC 48 42 FC 49 43 00 FC + .byte $48, $44, $FC, $49, $45, $00, $FC, $4A ; CPU:$E1AD PRG:21AD 48 44 FC 49 45 00 FC 4A + .byte $46, $FC, $4B, $47, $00, $FC, $A4, $A5 ; CPU:$E1B5 PRG:21B5 46 FC 4B 47 00 FC A4 A5 + .byte $FC, $A6, $A7, $08, $FC, $71, $FC, $FC ; CPU:$E1BD PRG:21BD FC A6 A7 08 FC 71 FC FC + .byte $72, $73, $08, $FC, $74, $FC, $FC, $75 ; CPU:$E1C5 PRG:21C5 72 73 08 FC 74 FC FC 75 + .byte $76, $08, $FC, $71, $77, $FC, $72, $73 ; CPU:$E1CD PRG:21CD 76 08 FC 71 77 FC 72 73 + .byte $08, $FC, $74, $77, $FC, $75, $76, $08 ; CPU:$E1D5 PRG:21D5 08 FC 74 77 FC 75 76 08 + .byte $FC, $71, $78, $FC, $72, $73, $08, $FC ; CPU:$E1DD PRG:21DD FC 71 78 FC 72 73 08 FC + .byte $74, $78, $FC, $75, $76, $08, $FC, $71 ; CPU:$E1E5 PRG:21E5 74 78 FC 75 76 08 FC 71 + .byte $79, $FC, $72, $73, $08, $FC, $74, $79 ; CPU:$E1ED PRG:21ED 79 FC 72 73 08 FC 74 79 + .byte $FC, $75, $76, $00, $4E, $4F, $50, $51 ; CPU:$E1F5 PRG:21F5 FC 75 76 00 4E 4F 50 51 + .byte $52, $53, $00, $4E, $4F, $50, $51, $5E ; CPU:$E1FD PRG:21FD 52 53 00 4E 4F 50 51 5E + .byte $58, $00, $4E, $4F, $50, $51, $5E, $5D ; CPU:$E205 PRG:2205 58 00 4E 4F 50 51 5E 5D + .byte $00, $54, $55, $50, $56, $57, $53, $00 ; CPU:$E20D PRG:220D 00 54 55 50 56 57 53 00 + .byte $4E, $4F, $50, $51, $52, $53, $00, $59 ; CPU:$E215 PRG:2215 4E 4F 50 51 52 53 00 59 + .byte $5A, $50, $5B, $5C, $53, $00, $FC, $5F ; CPU:$E21D PRG:221D 5A 50 5B 5C 53 00 FC 5F + .byte $60, $FC, $61, $62, $06, $63, $64, $60 ; CPU:$E225 PRG:2225 60 FC 61 62 06 63 64 60 + .byte $FC, $65, $62, $00, $66, $67, $60, $68 ; CPU:$E22D PRG:222D FC 65 62 00 66 67 60 68 + .byte $69, $62, $00, $6A, $67, $60, $6B, $69 ; CPU:$E235 PRG:2235 69 62 00 6A 67 60 6B 69 + .byte $62, $00, $FC, $6C, $6D, $FC, $6E, $6F ; CPU:$E23D PRG:223D 62 00 FC 6C 6D FC 6E 6F + .byte $00, $FC, $6C, $6D, $FC, $6E, $70 ; CPU:$E245 PRG:2245 00 FC 6C 6D FC 6E 70 StageBoundaryDataA: - .byte $AF, $B6, $BD, $B6, $C4, $CB, $D2, $CB ; CPU:$E24A PRG:224A AF B6 BD B6 C4 CB D2 CB - .byte $D9, $E0, $E7, $E0, $EE, $F5, $FC, $F5 ; CPU:$E252 PRG:2252 D9 E0 E7 E0 EE F5 FC F5 - .byte $0A, $0A, $0A, $0A, $11, $11, $11, $11 ; CPU:$E25A PRG:225A 0A 0A 0A 0A 11 11 11 11 - .byte $18, $18, $18, $18, $1F, $1F, $1F, $1F ; CPU:$E262 PRG:2262 18 18 18 18 1F 1F 1F 1F - .byte $26, $26, $26, $26, $2D, $2D, $2D, $2D ; CPU:$E26A PRG:226A 26 26 26 26 2D 2D 2D 2D - .byte $34, $34, $34, $34, $3B, $42, $49, $42 ; CPU:$E272 PRG:2272 34 34 34 34 3B 42 49 42 - .byte $50, $57, $5E, $57, $65, $6C, $73, $6C ; CPU:$E27A PRG:227A 50 57 5E 57 65 6C 73 6C - .byte $7A, $81, $88, $81, $96, $96, $96, $96 ; CPU:$E282 PRG:2282 7A 81 88 81 96 96 96 96 - .byte $9D, $9D, $9D, $9D, $A4, $AB, $B2, $AB ; CPU:$E28A PRG:228A 9D 9D 9D 9D A4 AB B2 AB - .byte $B9, $A4, $B9, $A4 ; CPU:$E292 PRG:2292 B9 A4 B9 A4 + .byte $AF, $B6, $BD, $B6, $C4, $CB, $D2, $CB ; CPU:$E24C PRG:224C AF B6 BD B6 C4 CB D2 CB + .byte $D9, $E0, $E7, $E0, $EE, $F5, $FC, $F5 ; CPU:$E254 PRG:2254 D9 E0 E7 E0 EE F5 FC F5 + .byte $0A, $0A, $0A, $0A, $11, $11, $11, $11 ; CPU:$E25C PRG:225C 0A 0A 0A 0A 11 11 11 11 + .byte $18, $18, $18, $18, $1F, $1F, $1F, $1F ; CPU:$E264 PRG:2264 18 18 18 18 1F 1F 1F 1F + .byte $26, $26, $26, $26, $2D, $2D, $2D, $2D ; CPU:$E26C PRG:226C 26 26 26 26 2D 2D 2D 2D + .byte $34, $34, $34, $34, $3B, $42, $49, $42 ; CPU:$E274 PRG:2274 34 34 34 34 3B 42 49 42 + .byte $50, $57, $5E, $57, $65, $6C, $73, $6C ; CPU:$E27C PRG:227C 50 57 5E 57 65 6C 73 6C + .byte $7A, $81, $88, $81, $96, $96, $96, $96 ; CPU:$E284 PRG:2284 7A 81 88 81 96 96 96 96 + .byte $9D, $9D, $9D, $9D, $A4, $AB, $B2, $AB ; CPU:$E28C PRG:228C 9D 9D 9D 9D A4 AB B2 AB + .byte $B9, $A4, $B9, $A4 ; CPU:$E294 PRG:2294 B9 A4 B9 A4 StageBoundaryDataB: - .byte $E0, $E0, $E0, $E0, $E0, $E0, $E0, $E0 ; CPU:$E296 PRG:2296 E0 E0 E0 E0 E0 E0 E0 E0 - .byte $E0, $E0, $E0, $E0, $E0, $E0, $E0, $E0 ; CPU:$E29E PRG:229E E0 E0 E0 E0 E0 E0 E0 E0 - .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2A6 PRG:22A6 E1 E1 E1 E1 E1 E1 E1 E1 - .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2AE PRG:22AE E1 E1 E1 E1 E1 E1 E1 E1 - .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2B6 PRG:22B6 E1 E1 E1 E1 E1 E1 E1 E1 - .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2BE PRG:22BE E1 E1 E1 E1 E1 E1 E1 E1 - .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2C6 PRG:22C6 E1 E1 E1 E1 E1 E1 E1 E1 - .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2CE PRG:22CE E1 E1 E1 E1 E1 E1 E1 E1 - .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2D6 PRG:22D6 E1 E1 E1 E1 E1 E1 E1 E1 - .byte $E1, $E1, $E1, $E1 ; CPU:$E2DE PRG:22DE E1 E1 E1 E1 + .byte $E0, $E0, $E0, $E0, $E0, $E0, $E0, $E0 ; CPU:$E298 PRG:2298 E0 E0 E0 E0 E0 E0 E0 E0 + .byte $E0, $E0, $E0, $E0, $E0, $E0, $E0, $E0 ; CPU:$E2A0 PRG:22A0 E0 E0 E0 E0 E0 E0 E0 E0 + .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2A8 PRG:22A8 E1 E1 E1 E1 E1 E1 E1 E1 + .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2B0 PRG:22B0 E1 E1 E1 E1 E1 E1 E1 E1 + .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2B8 PRG:22B8 E1 E1 E1 E1 E1 E1 E1 E1 + .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2C0 PRG:22C0 E1 E1 E1 E1 E1 E1 E1 E1 + .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2C8 PRG:22C8 E1 E1 E1 E1 E1 E1 E1 E1 + .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2D0 PRG:22D0 E1 E1 E1 E1 E1 E1 E1 E1 + .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E2D8 PRG:22D8 E1 E1 E1 E1 E1 E1 E1 E1 + .byte $E1, $E1, $E1, $E1 ; CPU:$E2E0 PRG:22E0 E1 E1 E1 E1 StageObjectTypeData: - .byte $81, $81, $8F, $81, $F5, $F5, $03, $F5 ; CPU:$E2E2 PRG:22E2 81 81 8F 81 F5 F5 03 F5 + .byte $81, $81, $8F, $81, $F5, $F5, $03, $F5 ; CPU:$E2E4 PRG:22E4 81 81 8F 81 F5 F5 03 F5 StageObjectXData: - .byte $E1, $E1, $E1, $E1, $E0, $E0, $E1, $E0 ; CPU:$E2EA PRG:22EA E1 E1 E1 E1 E0 E0 E1 E0 + .byte $E1, $E1, $E1, $E1, $E0, $E0, $E1, $E0 ; CPU:$E2EC PRG:22EC E1 E1 E1 E1 E0 E0 E1 E0 StageObjectYData: - .byte $F8, $FF, $06, $FF, $0D, $14, $1B, $14 ; CPU:$E2F2 PRG:22F2 F8 FF 06 FF 0D 14 1B 14 - .byte $3E, $3E, $22, $29, $30, $30, $30, $30 ; CPU:$E2FA PRG:22FA 3E 3E 22 29 30 30 30 30 - .byte $C0, $C0, $C0, $C0, $C0, $C7, $C0, $C7 ; CPU:$E302 PRG:2302 C0 C0 C0 C0 C0 C7 C0 C7 - .byte $CE, $D5, $CE, $D5, $DC, $E3, $DC, $E3 ; CPU:$E30A PRG:230A CE D5 CE D5 DC E3 DC E3 - .byte $EA, $F1, $EA, $F1, $3E, $45, $3E, $45 ; CPU:$E312 PRG:2312 EA F1 EA F1 3E 45 3E 45 - .byte $37, $37, $37, $37 ; CPU:$E31A PRG:231A 37 37 37 37 + .byte $F8, $FF, $06, $FF, $0D, $14, $1B, $14 ; CPU:$E2F4 PRG:22F4 F8 FF 06 FF 0D 14 1B 14 + .byte $3E, $3E, $22, $29, $30, $30, $30, $30 ; CPU:$E2FC PRG:22FC 3E 3E 22 29 30 30 30 30 + .byte $C0, $C0, $C0, $C0, $C0, $C7, $C0, $C7 ; CPU:$E304 PRG:2304 C0 C0 C0 C0 C0 C7 C0 C7 + .byte $CE, $D5, $CE, $D5, $DC, $E3, $DC, $E3 ; CPU:$E30C PRG:230C CE D5 CE D5 DC E3 DC E3 + .byte $EA, $F1, $EA, $F1, $3E, $45, $3E, $45 ; CPU:$E314 PRG:2314 EA F1 EA F1 3E 45 3E 45 + .byte $37, $37, $37, $37 ; CPU:$E31C PRG:231C 37 37 37 37 StageObjectAttributeData: - .byte $E1, $E1, $E2, $E1, $E2, $E2, $E2, $E2 ; CPU:$E31E PRG:231E E1 E1 E2 E1 E2 E2 E2 E2 - .byte $E2, $E2, $E2, $E2, $E2, $E2, $E2, $E2 ; CPU:$E326 PRG:2326 E2 E2 E2 E2 E2 E2 E2 E2 - .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E32E PRG:232E E1 E1 E1 E1 E1 E1 E1 E1 - .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E336 PRG:2336 E1 E1 E1 E1 E1 E1 E1 E1 - .byte $E1, $E1, $E1, $E1, $E2, $E2, $E2, $E2 ; CPU:$E33E PRG:233E E1 E1 E1 E1 E2 E2 E2 E2 - .byte $E2, $E2, $E2, $E2 ; CPU:$E346 PRG:2346 E2 E2 E2 E2 + .byte $E1, $E1, $E2, $E1, $E2, $E2, $E2, $E2 ; CPU:$E320 PRG:2320 E1 E1 E2 E1 E2 E2 E2 E2 + .byte $E2, $E2, $E2, $E2, $E2, $E2, $E2, $E2 ; CPU:$E328 PRG:2328 E2 E2 E2 E2 E2 E2 E2 E2 + .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E330 PRG:2330 E1 E1 E1 E1 E1 E1 E1 E1 + .byte $E1, $E1, $E1, $E1, $E1, $E1, $E1, $E1 ; CPU:$E338 PRG:2338 E1 E1 E1 E1 E1 E1 E1 E1 + .byte $E1, $E1, $E1, $E1, $E2, $E2, $E2, $E2 ; CPU:$E340 PRG:2340 E1 E1 E1 E1 E2 E2 E2 E2 + .byte $E2, $E2, $E2, $E2 ; CPU:$E348 PRG:2348 E2 E2 E2 E2 StageObjectDataTableA: - .byte $44, $2C, $00 ; CPU:$E34A PRG:234A 44 2C 00 + .byte $44, $2C, $00 ; CPU:$E34C PRG:234C 44 2C 00 StageObjectDataTableB: - .byte $00, $00, $04 ; CPU:$E34D PRG:234D 00 00 04 + .byte $00, $00, $04 ; CPU:$E34F PRG:234F 00 00 04 StageObjectDataTableC: - .byte $24, $08, $00, $00, $FC, $FC, $FE, $FC ; CPU:$E350 PRG:2350 24 08 00 00 FC FC FE FC - .byte $00, $7B, $FC, $FC, $7C, $FC, $FC, $00 ; CPU:$E358 PRG:2358 00 7B FC FC 7C FC FC 00 - .byte $7D, $7E, $FC, $7F, $80, $FC, $00, $81 ; CPU:$E360 PRG:2360 7D 7E FC 7F 80 FC 00 81 - .byte $82, $83, $84, $85, $86, $00, $87, $88 ; CPU:$E368 PRG:2368 82 83 84 85 86 00 87 88 - .byte $FC, $89, $8A, $FC, $00, $8B, $8C, $FC ; CPU:$E370 PRG:2370 FC 89 8A FC 00 8B 8C FC - .byte $8D, $8E, $FC, $00, $8F, $90, $FC, $FC ; CPU:$E378 PRG:2378 8D 8E FC 00 8F 90 FC FC - .byte $FC, $FC ; CPU:$E380 PRG:2380 FC FC + .byte $24, $08, $00, $00, $FC, $FC, $FE, $FC ; CPU:$E352 PRG:2352 24 08 00 00 FC FC FE FC + .byte $00, $7B, $FC, $FC, $7C, $FC, $FC, $00 ; CPU:$E35A PRG:235A 00 7B FC FC 7C FC FC 00 + .byte $7D, $7E, $FC, $7F, $80, $FC, $00, $81 ; CPU:$E362 PRG:2362 7D 7E FC 7F 80 FC 00 81 + .byte $82, $83, $84, $85, $86, $00, $87, $88 ; CPU:$E36A PRG:236A 82 83 84 85 86 00 87 88 + .byte $FC, $89, $8A, $FC, $00, $8B, $8C, $FC ; CPU:$E372 PRG:2372 FC 89 8A FC 00 8B 8C FC + .byte $8D, $8E, $FC, $00, $8F, $90, $FC, $FC ; CPU:$E37A PRG:237A 8D 8E FC 00 8F 90 FC FC + .byte $FC, $FC ; CPU:$E382 PRG:2382 FC FC StageObjectDataTableD: - .byte $55, $5A, $61, $68, $6F, $76, $7D ; CPU:$E382 PRG:2382 55 5A 61 68 6F 76 7D + .byte $55, $5A, $61, $68, $6F, $76, $7D ; CPU:$E384 PRG:2384 55 5A 61 68 6F 76 7D StageObjectDataTableE: - .byte $E3, $E3, $E3, $E3, $E3, $E3, $E3 ; CPU:$E389 PRG:2389 E3 E3 E3 E3 E3 E3 E3 + .byte $E3, $E3, $E3, $E3, $E3, $E3, $E3 ; CPU:$E38B PRG:238B E3 E3 E3 E3 E3 E3 E3 StageSetupPointerLoTable: - .byte $20, $38, $50, $68, $80, $98, $B0, $C8 ; CPU:$E390 PRG:2390 20 38 50 68 80 98 B0 C8 - .byte $08 ; CPU:$E398 PRG:2398 08 + .byte $20, $38, $50, $68, $80, $98, $B0, $C8 ; CPU:$E392 PRG:2392 20 38 50 68 80 98 B0 C8 + .byte $08 ; CPU:$E39A PRG:239A 08 StageSetupPointerHiTable: - .byte $20, $38, $C8, $B0, $98, $80, $68, $50 ; CPU:$E399 PRG:2399 20 38 C8 B0 98 80 68 50 - .byte $08 ; CPU:$E3A1 PRG:23A1 08 + .byte $20, $38, $C8, $B0, $98, $80, $68, $50 ; CPU:$E39B PRG:239B 20 38 C8 B0 98 80 68 50 + .byte $08 ; CPU:$E3A3 PRG:23A3 08 ; RenderObjectSprites ; Purpose: select object animation streams and emit six OAM sprite records. ; Inputs: X = object slot; object state arrays and frame counter in RAM. ; Returns: selected OAM buffer updated; A/Y modified; X restored. RenderObjectSprites: - lda StageSetupPointerLoTable,x ; CPU:$E3A2 PRG:23A2 BD 92 E3 - sta DestinationPtrLo ; CPU:$E3A5 PRG:23A5 85 1F - lda FrameCounter ; CPU:$E3A7 PRG:23A7 A5 19 - lsr a ; CPU:$E3A9 PRG:23A9 4A - bcc RenderObjectSprites_Block ; CPU:$E3AA PRG:23AA 90 05 - lda StageSetupPointerHiTable,x ; CPU:$E3AC PRG:23AC BD 9B E3 - sta DestinationPtrLo ; CPU:$E3AF PRG:23AF 85 1F + lda StageSetupPointerLoTable,x ; CPU:$E3A4 PRG:23A4 BD 92 E3 + sta DestinationPtrLo ; CPU:$E3A7 PRG:23A7 85 1F + lda FrameCounter ; CPU:$E3A9 PRG:23A9 A5 19 + lsr a ; CPU:$E3AB PRG:23AB 4A + bcc RenderObjectSprites_Block ; CPU:$E3AC PRG:23AC 90 05 + lda StageSetupPointerHiTable,x ; CPU:$E3AE PRG:23AE BD 9B E3 + sta DestinationPtrLo ; CPU:$E3B1 PRG:23B1 85 1F RenderObjectSprites_Block: - lda #$02 ; CPU:$E3B1 PRG:23B1 A9 02 - sta DestinationPtrHi ; CPU:$E3B3 PRG:23B3 85 20 - lda PlayerSlotState,x ; CPU:$E3B5 PRG:23B5 B5 88 - bpl RenderObjectSprites_Block_3 ; CPU:$E3B7 PRG:23B7 10 14 - cmp #$FF ; CPU:$E3B9 PRG:23B9 C9 FF - beq RenderObjectSprites_Block_1 ; CPU:$E3BB PRG:23BB F0 03 - jmp RenderLargeObjectSprites ; CPU:$E3BD PRG:23BD 4C D5 E4 + lda #$02 ; CPU:$E3B3 PRG:23B3 A9 02 + sta DestinationPtrHi ; CPU:$E3B5 PRG:23B5 85 20 + lda PlayerSlotState,x ; CPU:$E3B7 PRG:23B7 B5 88 + bpl RenderObjectSprites_Block_3; CPU:$E3B9 PRG:23B9 10 14 + cmp #$FF ; CPU:$E3BB PRG:23BB C9 FF + beq RenderObjectSprites_Block_1; CPU:$E3BD PRG:23BD F0 03 + jmp RenderLargeObjectSprites ; CPU:$E3BF PRG:23BF 4C D5 E4 RenderObjectSprites_Block_1: - ldy #$14 ; CPU:$E3C0 PRG:23C0 A0 14 + ldy #$14 ; CPU:$E3C2 PRG:23C2 A0 14 RenderObjectSprites_Block_2: - lda #$F0 ; CPU:$E3C2 PRG:23C2 A9 F0 - sta (DestinationPtrLo),y ; CPU:$E3C4 PRG:23C4 91 1F - dey ; CPU:$E3C6 PRG:23C6 88 - dey ; CPU:$E3C7 PRG:23C7 88 - dey ; CPU:$E3C8 PRG:23C8 88 - dey ; CPU:$E3C9 PRG:23C9 88 - bpl RenderObjectSprites_Block_2 ; CPU:$E3CA PRG:23CA 10 F6 - rts ; CPU:$E3CC PRG:23CC 60 + lda #$F0 ; CPU:$E3C4 PRG:23C4 A9 F0 + sta (DestinationPtrLo),y ; CPU:$E3C6 PRG:23C6 91 1F + dey ; CPU:$E3C8 PRG:23C8 88 + dey ; CPU:$E3C9 PRG:23C9 88 + dey ; CPU:$E3CA PRG:23CA 88 + dey ; CPU:$E3CB PRG:23CB 88 + bpl RenderObjectSprites_Block_2; CPU:$E3CC PRG:23CC 10 F6 + rts ; CPU:$E3CE PRG:23CE 60 RenderObjectSprites_Block_3: - cpx #$08 ; CPU:$E3CD PRG:23CD E0 08 - beq RenderObjectSprites_Block_5 ; CPU:$E3CF PRG:23CF F0 48 - lda PlayerLifecycleState,x ; CPU:$E3D1 PRG:23D1 B5 7F - asl a ; CPU:$E3D3 PRG:23D3 0A - asl a ; CPU:$E3D4 PRG:23D4 0A - adc $0436,x ; CPU:$E3D5 PRG:23D5 7D 36 04 - cpx #$02 ; CPU:$E3D8 PRG:23D8 E0 02 - bcs RenderObjectSprites_Block_4 ; CPU:$E3DA PRG:23DA B0 2A - ldy PlayerSlotState,x ; CPU:$E3DC PRG:23DC B4 88 - adc $E34C,y ; CPU:$E3DE PRG:23DE 79 4C E3 - tay ; CPU:$E3E1 PRG:23E1 A8 - lda $E24C,y ; CPU:$E3E2 PRG:23E2 B9 4C E2 - sta RecordPtrLo ; CPU:$E3E5 PRG:23E5 85 1D - lda $E298,y ; CPU:$E3E7 PRG:23E7 B9 98 E2 - sta RecordPtrHi ; CPU:$E3EA PRG:23EA 85 1E - lda PlayerCollisionDisable,x ; CPU:$E3EC PRG:23EC B5 BD - beq RenderObjectSprites_Load ; CPU:$E3EE PRG:23EE F0 37 - ldy PlayerSlotState,x ; CPU:$E3F0 PRG:23F0 B4 88 - lda $E34F,y ; CPU:$E3F2 PRG:23F2 B9 4F E3 - adc $0436,x ; CPU:$E3F5 PRG:23F5 7D 36 04 - tay ; CPU:$E3F8 PRG:23F8 A8 - lda $E2E4,y ; CPU:$E3F9 PRG:23F9 B9 E4 E2 - sta RecordPtrLo ; CPU:$E3FC PRG:23FC 85 1D - lda $E2EC,y ; CPU:$E3FE PRG:23FE B9 EC E2 - sta RecordPtrHi ; CPU:$E401 PRG:2401 85 1E - jmp RenderObjectSprites_Load ; CPU:$E403 PRG:2403 4C 29 E4 + cpx #$08 ; CPU:$E3CF PRG:23CF E0 08 + beq RenderObjectSprites_Block_5; CPU:$E3D1 PRG:23D1 F0 48 + lda PlayerLifecycleState,x ; CPU:$E3D3 PRG:23D3 B5 7F + asl a ; CPU:$E3D5 PRG:23D5 0A + asl a ; CPU:$E3D6 PRG:23D6 0A + adc $0436,x ; CPU:$E3D7 PRG:23D7 7D 36 04 + cpx #$02 ; CPU:$E3DA PRG:23DA E0 02 + bcs RenderObjectSprites_Block_4; CPU:$E3DC PRG:23DC B0 2A + ldy PlayerSlotState,x ; CPU:$E3DE PRG:23DE B4 88 + adc $E34C,y ; CPU:$E3E0 PRG:23E0 79 4C E3 + tay ; CPU:$E3E3 PRG:23E3 A8 + lda $E24C,y ; CPU:$E3E4 PRG:23E4 B9 4C E2 + sta RecordPtrLo ; CPU:$E3E7 PRG:23E7 85 1D + lda $E298,y ; CPU:$E3E9 PRG:23E9 B9 98 E2 + sta RecordPtrHi ; CPU:$E3EC PRG:23EC 85 1E + lda PlayerCollisionDisable,x ; CPU:$E3EE PRG:23EE B5 BD + beq RenderObjectSprites_Load ; CPU:$E3F0 PRG:23F0 F0 37 + ldy PlayerSlotState,x ; CPU:$E3F2 PRG:23F2 B4 88 + lda $E34F,y ; CPU:$E3F4 PRG:23F4 B9 4F E3 + adc $0436,x ; CPU:$E3F7 PRG:23F7 7D 36 04 + tay ; CPU:$E3FA PRG:23FA A8 + lda $E2E4,y ; CPU:$E3FB PRG:23FB B9 E4 E2 + sta RecordPtrLo ; CPU:$E3FE PRG:23FE 85 1D + lda $E2EC,y ; CPU:$E400 PRG:2400 B9 EC E2 + sta RecordPtrHi ; CPU:$E403 PRG:2403 85 1E + jmp RenderObjectSprites_Load ; CPU:$E405 PRG:2405 4C 29 E4 RenderObjectSprites_Block_4: - ldy PlayerSlotState,x ; CPU:$E406 PRG:2406 B4 88 - clc ; CPU:$E408 PRG:2408 18 - adc $E352,y ; CPU:$E409 PRG:2409 79 52 E3 - tay ; CPU:$E40C PRG:240C A8 - lda $E2F4,y ; CPU:$E40D PRG:240D B9 F4 E2 - sta RecordPtrLo ; CPU:$E410 PRG:2410 85 1D - lda $E320,y ; CPU:$E412 PRG:2412 B9 20 E3 - sta RecordPtrHi ; CPU:$E415 PRG:2415 85 1E - bne RenderObjectSprites_Load ; CPU:$E417 PRG:2417 D0 0E + ldy PlayerSlotState,x ; CPU:$E408 PRG:2408 B4 88 + clc ; CPU:$E40A PRG:240A 18 + adc $E352,y ; CPU:$E40B PRG:240B 79 52 E3 + tay ; CPU:$E40E PRG:240E A8 + lda $E2F4,y ; CPU:$E40F PRG:240F B9 F4 E2 + sta RecordPtrLo ; CPU:$E412 PRG:2412 85 1D + lda $E320,y ; CPU:$E414 PRG:2414 B9 20 E3 + sta RecordPtrHi ; CPU:$E417 PRG:2417 85 1E + bne RenderObjectSprites_Load ; CPU:$E419 PRG:2419 D0 0E RenderObjectSprites_Block_5: - ldy PlayerLifecycleState,x ; CPU:$E419 PRG:2419 B4 7F - bmi RenderObjectSprites_Block_1 ; CPU:$E41B PRG:241B 30 A3 - lda $E384,y ; CPU:$E41D PRG:241D B9 84 E3 - sta RecordPtrLo ; CPU:$E420 PRG:2420 85 1D - lda $E38B,y ; CPU:$E422 PRG:2422 B9 8B E3 - sta RecordPtrHi ; CPU:$E425 PRG:2425 85 1E + ldy PlayerLifecycleState,x ; CPU:$E41B PRG:241B B4 7F + bmi RenderObjectSprites_Block_1; CPU:$E41D PRG:241D 30 A3 + lda $E384,y ; CPU:$E41F PRG:241F B9 84 E3 + sta RecordPtrLo ; CPU:$E422 PRG:2422 85 1D + lda $E38B,y ; CPU:$E424 PRG:2424 B9 8B E3 + sta RecordPtrHi ; CPU:$E427 PRG:2427 85 1E RenderObjectSprites_Load: - lda PlayerPosX,x ; CPU:$E427 PRG:2427 B5 91 - sta SpawnPixelPosition ; CPU:$E429 PRG:2429 85 15 - lda PlayerPosY,x ; CPU:$E42B PRG:242B B5 9A - sta Temp12 ; CPU:$E42D PRG:242D 85 12 - txa ; CPU:$E42F PRG:242F 8A - beq RenderObjectSprites_Block_7 ; CPU:$E430 PRG:2430 F0 10 - cpx #$01 ; CPU:$E432 PRG:2432 E0 01 - bne RenderObjectSprites_Block_6 ; CPU:$E434 PRG:2434 D0 04 - lda #$01 ; CPU:$E436 PRG:2436 A9 01 - bne RenderObjectSprites_Block_7 ; CPU:$E438 PRG:2438 D0 08 + lda PlayerPosX,x ; CPU:$E429 PRG:2429 B5 91 + sta SpawnPixelPosition ; CPU:$E42B PRG:242B 85 15 + lda PlayerPosY,x ; CPU:$E42D PRG:242D B5 9A + sta Temp12 ; CPU:$E42F PRG:242F 85 12 + txa ; CPU:$E431 PRG:2431 8A + beq RenderObjectSprites_Block_7; CPU:$E432 PRG:2432 F0 10 + cpx #$01 ; CPU:$E434 PRG:2434 E0 01 + bne RenderObjectSprites_Block_6; CPU:$E436 PRG:2436 D0 04 + lda #$01 ; CPU:$E438 PRG:2438 A9 01 + bne RenderObjectSprites_Block_7; CPU:$E43A PRG:243A D0 08 RenderObjectSprites_Block_6: - lda PlayerAnimationState,x ; CPU:$E43A PRG:243A BD 51 04 - clc ; CPU:$E43D PRG:243D 18 - adc #$02 ; CPU:$E43E PRG:243E 69 02 - and #$03 ; CPU:$E440 PRG:2440 29 03 + lda PlayerAnimationState,x ; CPU:$E43C PRG:243C BD 51 04 + clc ; CPU:$E43F PRG:243F 18 + adc #$02 ; CPU:$E440 PRG:2440 69 02 + and #$03 ; CPU:$E442 PRG:2442 29 03 RenderObjectSprites_Block_7: - ldy PlayerVariantTable,x ; CPU:$E442 PRG:2442 BC 48 04 - beq RenderObjectSprites_Block_8 ; CPU:$E445 PRG:2445 F0 02 - ora #$40 ; CPU:$E447 PRG:2447 09 40 + ldy PlayerVariantTable,x ; CPU:$E444 PRG:2444 BC 48 04 + beq RenderObjectSprites_Block_8; CPU:$E447 PRG:2447 F0 02 + ora #$40 ; CPU:$E449 PRG:2449 09 40 RenderObjectSprites_Block_8: - ldy PlayerSlotState,x ; CPU:$E449 PRG:2449 B4 88 - cpy #$02 ; CPU:$E44B PRG:244B C0 02 - bne RenderObjectSprites_Block_9 ; CPU:$E44D PRG:244D D0 08 - ldy PlayerLifecycleState,x ; CPU:$E44F PRG:244F B4 7F - cpy #$05 ; CPU:$E451 PRG:2451 C0 05 - bne RenderObjectSprites_Block_9 ; CPU:$E453 PRG:2453 D0 02 - eor #$40 ; CPU:$E455 PRG:2455 49 40 + ldy PlayerSlotState,x ; CPU:$E44B PRG:244B B4 88 + cpy #$02 ; CPU:$E44D PRG:244D C0 02 + bne RenderObjectSprites_Block_9; CPU:$E44F PRG:244F D0 08 + ldy PlayerLifecycleState,x ; CPU:$E451 PRG:2451 B4 7F + cpy #$05 ; CPU:$E453 PRG:2453 C0 05 + bne RenderObjectSprites_Block_9; CPU:$E455 PRG:2455 D0 02 + eor #$40 ; CPU:$E457 PRG:2457 49 40 RenderObjectSprites_Block_9: - ldy PlayerPosY,x ; CPU:$E457 PRG:2457 B4 9A - cpy #$C9 ; CPU:$E459 PRG:2459 C0 C9 - bcs RenderObjectSprites_Block_10 ; CPU:$E45B PRG:245B B0 04 - cpx #$09 ; CPU:$E45D PRG:245D E0 09 - bne RenderObjectSprites_Block_11 ; CPU:$E45F PRG:245F D0 02 + ldy PlayerPosY,x ; CPU:$E459 PRG:2459 B4 9A + cpy #$C9 ; CPU:$E45B PRG:245B C0 C9 + bcs RenderObjectSprites_Block_10 ; CPU:$E45D PRG:245D B0 04 + cpx #$09 ; CPU:$E45F PRG:245F E0 09 + bne RenderObjectSprites_Block_11 ; CPU:$E461 PRG:2461 D0 02 RenderObjectSprites_Block_10: - ora #$20 ; CPU:$E461 PRG:2461 09 20 + ora #$20 ; CPU:$E463 PRG:2463 09 20 RenderObjectSprites_Block_11: - sta SpawnParameter ; CPU:$E463 PRG:2463 85 14 - lda #$43 ; CPU:$E465 PRG:2465 A9 43 - sta PpuSourcePtrLo ; CPU:$E467 PRG:2467 85 21 - lda #$E0 ; CPU:$E469 PRG:2469 A9 E0 - sta PpuSourcePtrHi ; CPU:$E46B PRG:246B 85 22 - lda PlayerVariantTable,x ; CPU:$E46D PRG:246D BD 48 04 - beq RenderObjectSprites_Block_12 ; CPU:$E470 PRG:2470 F0 08 - lda #$79 ; CPU:$E472 PRG:2472 A9 79 - sta PpuSourcePtrLo ; CPU:$E474 PRG:2474 85 21 - lda #$E0 ; CPU:$E476 PRG:2476 A9 E0 - sta PpuSourcePtrHi ; CPU:$E478 PRG:2478 85 22 + sta SpawnParameter ; CPU:$E465 PRG:2465 85 14 + lda #$43 ; CPU:$E467 PRG:2467 A9 43 + sta PpuSourcePtrLo ; CPU:$E469 PRG:2469 85 21 + lda #$E0 ; CPU:$E46B PRG:246B A9 E0 + sta PpuSourcePtrHi ; CPU:$E46D PRG:246D 85 22 + lda PlayerVariantTable,x ; CPU:$E46F PRG:246F BD 48 04 + beq RenderObjectSprites_Block_12 ; CPU:$E472 PRG:2472 F0 08 + lda #$79 ; CPU:$E474 PRG:2474 A9 79 + sta PpuSourcePtrLo ; CPU:$E476 PRG:2476 85 21 + lda #$E0 ; CPU:$E478 PRG:2478 A9 E0 + sta PpuSourcePtrHi ; CPU:$E47A PRG:247A 85 22 RenderObjectSprites_Block_12: - ldy #$00 ; CPU:$E47A PRG:247A A0 00 - lda (RecordPtrLo),y ; CPU:$E47C PRG:247C B1 1D - inc RecordPtrLo ; CPU:$E47E PRG:247E E6 1D - bne RenderObjectSprites_Block_13 ; CPU:$E480 PRG:2480 D0 02 - inc RecordPtrHi ; CPU:$E482 PRG:2482 E6 1E + ldy #$00 ; CPU:$E47C PRG:247C A0 00 + lda (RecordPtrLo),y ; CPU:$E47E PRG:247E B1 1D + inc RecordPtrLo ; CPU:$E480 PRG:2480 E6 1D + bne RenderObjectSprites_Block_13 ; CPU:$E482 PRG:2482 D0 02 + inc RecordPtrHi ; CPU:$E484 PRG:2484 E6 1E RenderObjectSprites_Block_13: - asl a ; CPU:$E484 PRG:2484 0A - sta $13 ; CPU:$E485 PRG:2485 85 13 - asl a ; CPU:$E487 PRG:2487 0A - adc $13 ; CPU:$E488 PRG:2488 65 13 - adc PpuSourcePtrLo ; CPU:$E48A PRG:248A 65 21 - sta PpuSourcePtrLo ; CPU:$E48C PRG:248C 85 21 - bcc RenderObjectSprites_Block_14 ; CPU:$E48E PRG:248E 90 02 - inc PpuSourcePtrHi ; CPU:$E490 PRG:2490 E6 22 + asl a ; CPU:$E486 PRG:2486 0A + sta $13 ; CPU:$E487 PRG:2487 85 13 + asl a ; CPU:$E489 PRG:2489 0A + adc $13 ; CPU:$E48A PRG:248A 65 13 + adc PpuSourcePtrLo ; CPU:$E48C PRG:248C 65 21 + sta PpuSourcePtrLo ; CPU:$E48E PRG:248E 85 21 + bcc RenderObjectSprites_Block_14 ; CPU:$E490 PRG:2490 90 02 + inc PpuSourcePtrHi ; CPU:$E492 PRG:2492 E6 22 RenderObjectSprites_Block_14: - txa ; CPU:$E492 PRG:2492 8A - pha ; CPU:$E493 PRG:2493 48 - ldx #$05 ; CPU:$E494 PRG:2494 A2 05 - ldy #$00 ; CPU:$E496 PRG:2496 A0 00 + txa ; CPU:$E494 PRG:2494 8A + pha ; CPU:$E495 PRG:2495 48 + ldx #$05 ; CPU:$E496 PRG:2496 A2 05 + ldy #$00 ; CPU:$E498 PRG:2498 A0 00 RenderObjectSprites_Block_15: - lda Temp12 ; CPU:$E498 PRG:2498 A5 12 - clc ; CPU:$E49A PRG:249A 18 - adc $E03D,x ; CPU:$E49B PRG:249B 7D 3D E0 - sta (DestinationPtrLo),y ; CPU:$E49E PRG:249E 91 1F - sta Temp12 ; CPU:$E4A0 PRG:24A0 85 12 - iny ; CPU:$E4A2 PRG:24A2 C8 - sty $13 ; CPU:$E4A3 PRG:24A3 84 13 - ldy #$00 ; CPU:$E4A5 PRG:24A5 A0 00 - lda (RecordPtrLo),y ; CPU:$E4A7 PRG:24A7 B1 1D - inc RecordPtrLo ; CPU:$E4A9 PRG:24A9 E6 1D - bne RenderObjectSprites_Block_16 ; CPU:$E4AB PRG:24AB D0 02 - inc RecordPtrHi ; CPU:$E4AD PRG:24AD E6 1E + lda Temp12 ; CPU:$E49A PRG:249A A5 12 + clc ; CPU:$E49C PRG:249C 18 + adc $E03D,x ; CPU:$E49D PRG:249D 7D 3D E0 + sta (DestinationPtrLo),y ; CPU:$E4A0 PRG:24A0 91 1F + sta Temp12 ; CPU:$E4A2 PRG:24A2 85 12 + iny ; CPU:$E4A4 PRG:24A4 C8 + sty $13 ; CPU:$E4A5 PRG:24A5 84 13 + ldy #$00 ; CPU:$E4A7 PRG:24A7 A0 00 + lda (RecordPtrLo),y ; CPU:$E4A9 PRG:24A9 B1 1D + inc RecordPtrLo ; CPU:$E4AB PRG:24AB E6 1D + bne RenderObjectSprites_Block_16 ; CPU:$E4AD PRG:24AD D0 02 + inc RecordPtrHi ; CPU:$E4AF PRG:24AF E6 1E RenderObjectSprites_Block_16: - ldy $13 ; CPU:$E4AF PRG:24AF A4 13 - sta (DestinationPtrLo),y ; CPU:$E4B1 PRG:24B1 91 1F - iny ; CPU:$E4B3 PRG:24B3 C8 - lda SpawnParameter ; CPU:$E4B4 PRG:24B4 A5 14 - sta (DestinationPtrLo),y ; CPU:$E4B6 PRG:24B6 91 1F - iny ; CPU:$E4B8 PRG:24B8 C8 - sty $13 ; CPU:$E4B9 PRG:24B9 84 13 - ldy #$00 ; CPU:$E4BB PRG:24BB A0 00 - lda SpawnPixelPosition ; CPU:$E4BD PRG:24BD A5 15 - clc ; CPU:$E4BF PRG:24BF 18 - adc (PpuSourcePtrLo),y ; CPU:$E4C0 PRG:24C0 71 21 - inc PpuSourcePtrLo ; CPU:$E4C2 PRG:24C2 E6 21 - bne RenderObjectSprites_Block_17 ; CPU:$E4C4 PRG:24C4 D0 02 - inc PpuSourcePtrHi ; CPU:$E4C6 PRG:24C6 E6 22 + ldy $13 ; CPU:$E4B1 PRG:24B1 A4 13 + sta (DestinationPtrLo),y ; CPU:$E4B3 PRG:24B3 91 1F + iny ; CPU:$E4B5 PRG:24B5 C8 + lda SpawnParameter ; CPU:$E4B6 PRG:24B6 A5 14 + sta (DestinationPtrLo),y ; CPU:$E4B8 PRG:24B8 91 1F + iny ; CPU:$E4BA PRG:24BA C8 + sty $13 ; CPU:$E4BB PRG:24BB 84 13 + ldy #$00 ; CPU:$E4BD PRG:24BD A0 00 + lda SpawnPixelPosition ; CPU:$E4BF PRG:24BF A5 15 + clc ; CPU:$E4C1 PRG:24C1 18 + adc (PpuSourcePtrLo),y ; CPU:$E4C2 PRG:24C2 71 21 + inc PpuSourcePtrLo ; CPU:$E4C4 PRG:24C4 E6 21 + bne RenderObjectSprites_Block_17 ; CPU:$E4C6 PRG:24C6 D0 02 + inc PpuSourcePtrHi ; CPU:$E4C8 PRG:24C8 E6 22 RenderObjectSprites_Block_17: - ldy $13 ; CPU:$E4C8 PRG:24C8 A4 13 - sta (DestinationPtrLo),y ; CPU:$E4CA PRG:24CA 91 1F - iny ; CPU:$E4CC PRG:24CC C8 - dex ; CPU:$E4CD PRG:24CD CA - bpl RenderObjectSprites_Block_15 ; CPU:$E4CE PRG:24CE 10 C8 - pla ; CPU:$E4D0 PRG:24D0 68 - tax ; CPU:$E4D1 PRG:24D1 AA - rts ; CPU:$E4D2 PRG:24D2 60 + ldy $13 ; CPU:$E4CA PRG:24CA A4 13 + sta (DestinationPtrLo),y ; CPU:$E4CC PRG:24CC 91 1F + iny ; CPU:$E4CE PRG:24CE C8 + dex ; CPU:$E4CF PRG:24CF CA + bpl RenderObjectSprites_Block_15 ; CPU:$E4D0 PRG:24D0 10 C8 + pla ; CPU:$E4D2 PRG:24D2 68 + tax ; CPU:$E4D3 PRG:24D3 AA + rts ; CPU:$E4D4 PRG:24D4 60 ; RenderLargeObjectSprites ; Purpose: emit a fixed multi-sprite object and update animation/expiry state. ; Inputs: X = object slot; $1F selects the OAM destination. ; Returns: OAM entries updated; X restored; expired objects disabled. RenderLargeObjectSprites: - txa ; CPU:$E4D3 PRG:24D3 8A - pha ; CPU:$E4D4 PRG:24D4 48 - ldy DestinationPtrLo ; CPU:$E4D5 PRG:24D5 A4 1F - lda PlayerPosY,x ; CPU:$E4D7 PRG:24D7 B5 9A - sta OamBuffer,y ; CPU:$E4D9 PRG:24D9 99 00 02 - sta $0204,y ; CPU:$E4DC PRG:24DC 99 04 02 - clc ; CPU:$E4DF PRG:24DF 18 - adc #$08 ; CPU:$E4E0 PRG:24E0 69 08 - sta $0208,y ; CPU:$E4E2 PRG:24E2 99 08 02 - sta $020C,y ; CPU:$E4E5 PRG:24E5 99 0C 02 - lda #$F0 ; CPU:$E4E8 PRG:24E8 A9 F0 - sta $0210,y ; CPU:$E4EA PRG:24EA 99 10 02 - sta $0214,y ; CPU:$E4ED PRG:24ED 99 14 02 - lda PlayerPosX,x ; CPU:$E4F0 PRG:24F0 B5 91 - sta $0203,y ; CPU:$E4F2 PRG:24F2 99 03 02 - sta $020B,y ; CPU:$E4F5 PRG:24F5 99 0B 02 - clc ; CPU:$E4F8 PRG:24F8 18 - adc #$08 ; CPU:$E4F9 PRG:24F9 69 08 - sta $0207,y ; CPU:$E4FB PRG:24FB 99 07 02 - sta $020F,y ; CPU:$E4FE PRG:24FE 99 0F 02 - lda PlayerPosY,x ; CPU:$E501 PRG:2501 B5 9A - cmp #$D0 ; CPU:$E503 PRG:2503 C9 D0 - lda #$03 ; CPU:$E505 PRG:2505 A9 03 - bcc RenderLargeObjectSprites_Block ; CPU:$E507 PRG:2507 90 02 - lda #$23 ; CPU:$E509 PRG:2509 A9 23 + txa ; CPU:$E4D5 PRG:24D5 8A + pha ; CPU:$E4D6 PRG:24D6 48 + ldy DestinationPtrLo ; CPU:$E4D7 PRG:24D7 A4 1F + lda PlayerPosY,x ; CPU:$E4D9 PRG:24D9 B5 9A + sta OamBuffer,y ; CPU:$E4DB PRG:24DB 99 00 02 + sta $0204,y ; CPU:$E4DE PRG:24DE 99 04 02 + clc ; CPU:$E4E1 PRG:24E1 18 + adc #$08 ; CPU:$E4E2 PRG:24E2 69 08 + sta $0208,y ; CPU:$E4E4 PRG:24E4 99 08 02 + sta $020C,y ; CPU:$E4E7 PRG:24E7 99 0C 02 + lda #$F0 ; CPU:$E4EA PRG:24EA A9 F0 + sta $0210,y ; CPU:$E4EC PRG:24EC 99 10 02 + sta $0214,y ; CPU:$E4EF PRG:24EF 99 14 02 + lda PlayerPosX,x ; CPU:$E4F2 PRG:24F2 B5 91 + sta $0203,y ; CPU:$E4F4 PRG:24F4 99 03 02 + sta $020B,y ; CPU:$E4F7 PRG:24F7 99 0B 02 + clc ; CPU:$E4FA PRG:24FA 18 + adc #$08 ; CPU:$E4FB PRG:24FB 69 08 + sta $0207,y ; CPU:$E4FD PRG:24FD 99 07 02 + sta $020F,y ; CPU:$E500 PRG:2500 99 0F 02 + lda PlayerPosY,x ; CPU:$E503 PRG:2503 B5 9A + cmp #$D0 ; CPU:$E505 PRG:2505 C9 D0 + lda #$03 ; CPU:$E507 PRG:2507 A9 03 + bcc RenderLargeObjectSprites_Block ; CPU:$E509 PRG:2509 90 02 + lda #$23 ; CPU:$E50B PRG:250B A9 23 RenderLargeObjectSprites_Block: - sta $0202,y ; CPU:$E50B PRG:250B 99 02 02 - lda PlayerLifecycleState,x ; CPU:$E50E PRG:250E B5 7F - bne RenderLargeObjectSprites_Block_3 ; CPU:$E510 PRG:2510 D0 3F - lda $0202,y ; CPU:$E512 PRG:2512 B9 02 02 - sta $0206,y ; CPU:$E515 PRG:2515 99 06 02 - sta $020A,y ; CPU:$E518 PRG:2518 99 0A 02 - sta $020E,y ; CPU:$E51B PRG:251B 99 0E 02 - lda #$DA ; CPU:$E51E PRG:251E A9 DA - sta $0201,y ; CPU:$E520 PRG:2520 99 01 02 - lda #$DB ; CPU:$E523 PRG:2523 A9 DB - sta $0205,y ; CPU:$E525 PRG:2525 99 05 02 - lda #$DC ; CPU:$E528 PRG:2528 A9 DC - sta $0209,y ; CPU:$E52A PRG:252A 99 09 02 - lda #$DD ; CPU:$E52D PRG:252D A9 DD - sta $020D,y ; CPU:$E52F PRG:252F 99 0D 02 - ldx DestinationPtrLo ; CPU:$E532 PRG:2532 A6 1F - lda FrameCounter ; CPU:$E534 PRG:2534 A5 19 - and #$20 ; CPU:$E536 PRG:2536 29 20 - beq RenderLargeObjectSprites_Block_2 ; CPU:$E538 PRG:2538 F0 14 - lda FrameCounter ; CPU:$E53A PRG:253A A5 19 - and #$40 ; CPU:$E53C PRG:253C 29 40 - bne RenderLargeObjectSprites_Block_1 ; CPU:$E53E PRG:253E D0 08 - inc OamBuffer,x ; CPU:$E540 PRG:2540 FE 00 02 - inc $0204,x ; CPU:$E543 PRG:2543 FE 04 02 - bne RenderLargeObjectSprites_Block_2 ; CPU:$E546 PRG:2546 D0 06 + sta $0202,y ; CPU:$E50D PRG:250D 99 02 02 + lda PlayerLifecycleState,x ; CPU:$E510 PRG:2510 B5 7F + bne RenderLargeObjectSprites_Block_3 ; CPU:$E512 PRG:2512 D0 3F + lda $0202,y ; CPU:$E514 PRG:2514 B9 02 02 + sta $0206,y ; CPU:$E517 PRG:2517 99 06 02 + sta $020A,y ; CPU:$E51A PRG:251A 99 0A 02 + sta $020E,y ; CPU:$E51D PRG:251D 99 0E 02 + lda #$DA ; CPU:$E520 PRG:2520 A9 DA + sta $0201,y ; CPU:$E522 PRG:2522 99 01 02 + lda #$DB ; CPU:$E525 PRG:2525 A9 DB + sta $0205,y ; CPU:$E527 PRG:2527 99 05 02 + lda #$DC ; CPU:$E52A PRG:252A A9 DC + sta $0209,y ; CPU:$E52C PRG:252C 99 09 02 + lda #$DD ; CPU:$E52F PRG:252F A9 DD + sta $020D,y ; CPU:$E531 PRG:2531 99 0D 02 + ldx DestinationPtrLo ; CPU:$E534 PRG:2534 A6 1F + lda FrameCounter ; CPU:$E536 PRG:2536 A5 19 + and #$20 ; CPU:$E538 PRG:2538 29 20 + beq RenderLargeObjectSprites_Block_2 ; CPU:$E53A PRG:253A F0 14 + lda FrameCounter ; CPU:$E53C PRG:253C A5 19 + and #$40 ; CPU:$E53E PRG:253E 29 40 + bne RenderLargeObjectSprites_Block_1 ; CPU:$E540 PRG:2540 D0 08 + inc OamBuffer,x ; CPU:$E542 PRG:2542 FE 00 02 + inc $0204,x ; CPU:$E545 PRG:2545 FE 04 02 + bne RenderLargeObjectSprites_Block_2 ; CPU:$E548 PRG:2548 D0 06 RenderLargeObjectSprites_Block_1: - inc $0203,x ; CPU:$E548 PRG:2548 FE 03 02 - inc $020B,x ; CPU:$E54B PRG:254B FE 0B 02 + inc $0203,x ; CPU:$E54A PRG:254A FE 03 02 + inc $020B,x ; CPU:$E54D PRG:254D FE 0B 02 RenderLargeObjectSprites_Block_2: - pla ; CPU:$E54E PRG:254E 68 - tax ; CPU:$E54F PRG:254F AA - rts ; CPU:$E550 PRG:2550 60 + pla ; CPU:$E550 PRG:2550 68 + tax ; CPU:$E551 PRG:2551 AA + rts ; CPU:$E552 PRG:2552 60 RenderLargeObjectSprites_Block_3: - lda $0202,y ; CPU:$E551 PRG:2551 B9 02 02 - ora #$40 ; CPU:$E554 PRG:2554 09 40 - sta $0206,y ; CPU:$E556 PRG:2556 99 06 02 - ora #$80 ; CPU:$E559 PRG:2559 09 80 - sta $020E,y ; CPU:$E55B PRG:255B 99 0E 02 - and #$BF ; CPU:$E55E PRG:255E 29 BF - sta $020A,y ; CPU:$E560 PRG:2560 99 0A 02 - lda #$DE ; CPU:$E563 PRG:2563 A9 DE - sta $0201,y ; CPU:$E565 PRG:2565 99 01 02 - sta $0205,y ; CPU:$E568 PRG:2568 99 05 02 - sta $0209,y ; CPU:$E56B PRG:256B 99 09 02 - sta $020D,y ; CPU:$E56E PRG:256E 99 0D 02 - dec PlayerStateTimer,x ; CPU:$E571 PRG:2571 DE 5A 04 - bpl RenderLargeObjectSprites_Block_4 ; CPU:$E574 PRG:2574 10 0C - lda #$FF ; CPU:$E576 PRG:2576 A9 FF - sta PlayerSlotState,x ; CPU:$E578 PRG:2578 95 88 - lda #$F0 ; CPU:$E57A PRG:257A A9 F0 - sta PlayerPosY,x ; CPU:$E57C PRG:257C 95 9A - lda #$04 ; CPU:$E57E PRG:257E A9 04 - sta SoundRequestFlags1 ; CPU:$E580 PRG:2580 85 F1 + lda $0202,y ; CPU:$E553 PRG:2553 B9 02 02 + ora #$40 ; CPU:$E556 PRG:2556 09 40 + sta $0206,y ; CPU:$E558 PRG:2558 99 06 02 + ora #$80 ; CPU:$E55B PRG:255B 09 80 + sta $020E,y ; CPU:$E55D PRG:255D 99 0E 02 + and #$BF ; CPU:$E560 PRG:2560 29 BF + sta $020A,y ; CPU:$E562 PRG:2562 99 0A 02 + lda #$DE ; CPU:$E565 PRG:2565 A9 DE + sta $0201,y ; CPU:$E567 PRG:2567 99 01 02 + sta $0205,y ; CPU:$E56A PRG:256A 99 05 02 + sta $0209,y ; CPU:$E56D PRG:256D 99 09 02 + sta $020D,y ; CPU:$E570 PRG:2570 99 0D 02 + dec PlayerStateTimer,x ; CPU:$E573 PRG:2573 DE 5A 04 + bpl RenderLargeObjectSprites_Block_4 ; CPU:$E576 PRG:2576 10 0C + lda #$FF ; CPU:$E578 PRG:2578 A9 FF + sta PlayerSlotState,x ; CPU:$E57A PRG:257A 95 88 + lda #$F0 ; CPU:$E57C PRG:257C A9 F0 + sta PlayerPosY,x ; CPU:$E57E PRG:257E 95 9A + lda #$04 ; CPU:$E580 PRG:2580 A9 04 + sta SoundRequestFlags1 ; CPU:$E582 PRG:2582 85 F1 RenderLargeObjectSprites_Block_4: - pla ; CPU:$E582 PRG:2582 68 - tax ; CPU:$E583 PRG:2583 AA - rts ; CPU:$E584 PRG:2584 60 + pla ; CPU:$E584 PRG:2584 68 + tax ; CPU:$E585 PRG:2585 AA + rts ; CPU:$E586 PRG:2586 60 ; CopyOverlaySpriteStream ; Purpose: copy a selected 16-byte overlay sprite stream into OAM and apply Y offset. ; Inputs: $BB = stream index, $BC = vertical offset. ; Returns: overlay OAM region updated; may decrement $BB. CopyOverlaySpriteStream: - ldx $BB ; CPU:$E585 PRG:2585 A6 BB - bmi CopyOverlaySpriteStream_Block_3 ; CPU:$E587 PRG:2587 30 39 - lda OverlaySpriteStreamLoTable,x ; CPU:$E589 PRG:2589 BD C5 E5 - sta RecordPtrLo ; CPU:$E58C PRG:258C 85 1D - lda OverlaySpriteStreamHiTable,x ; CPU:$E58E PRG:258E BD CA E5 - sta RecordPtrHi ; CPU:$E591 PRG:2591 85 1E - ldy #$00 ; CPU:$E593 PRG:2593 A0 00 - ldx #$00 ; CPU:$E595 PRG:2595 A2 00 + ldx $BB ; CPU:$E587 PRG:2587 A6 BB + bmi CopyOverlaySpriteStream_Block_3 ; CPU:$E589 PRG:2589 30 39 + lda OverlaySpriteStreamLoTable,x ; CPU:$E58B PRG:258B BD C5 E5 + sta RecordPtrLo ; CPU:$E58E PRG:258E 85 1D + lda OverlaySpriteStreamHiTable,x ; CPU:$E590 PRG:2590 BD CA E5 + sta RecordPtrHi ; CPU:$E593 PRG:2593 85 1E + ldy #$00 ; CPU:$E595 PRG:2595 A0 00 + ldx #$00 ; CPU:$E597 PRG:2597 A2 00 CopyOverlaySpriteStream_Block: - lda (RecordPtrLo),y ; CPU:$E597 PRG:2597 B1 1D - sta OamEntryE0Y,x ; CPU:$E599 PRG:2599 9D E0 02 - iny ; CPU:$E59C PRG:259C C8 - inx ; CPU:$E59D PRG:259D E8 - cmp #$F0 ; CPU:$E59E PRG:259E C9 F0 - bne CopyOverlaySpriteStream_Block_1 ; CPU:$E5A0 PRG:25A0 D0 03 - inx ; CPU:$E5A2 PRG:25A2 E8 - inx ; CPU:$E5A3 PRG:25A3 E8 - inx ; CPU:$E5A4 PRG:25A4 E8 + lda (RecordPtrLo),y ; CPU:$E599 PRG:2599 B1 1D + sta OamEntryE0Y,x ; CPU:$E59B PRG:259B 9D E0 02 + iny ; CPU:$E59E PRG:259E C8 + inx ; CPU:$E59F PRG:259F E8 + cmp #$F0 ; CPU:$E5A0 PRG:25A0 C9 F0 + bne CopyOverlaySpriteStream_Block_1 ; CPU:$E5A2 PRG:25A2 D0 03 + inx ; CPU:$E5A4 PRG:25A4 E8 + inx ; CPU:$E5A5 PRG:25A5 E8 + inx ; CPU:$E5A6 PRG:25A6 E8 CopyOverlaySpriteStream_Block_1: - cpx #$10 ; CPU:$E5A5 PRG:25A5 E0 10 - bne CopyOverlaySpriteStream_Block ; CPU:$E5A7 PRG:25A7 D0 EE - ldy #$0F ; CPU:$E5A9 PRG:25A9 A0 0F + cpx #$10 ; CPU:$E5A7 PRG:25A7 E0 10 + bne CopyOverlaySpriteStream_Block ; CPU:$E5A9 PRG:25A9 D0 EE + ldy #$0F ; CPU:$E5AB PRG:25AB A0 0F CopyOverlaySpriteStream_Block_2: - lda OamEntryE0Y,y ; CPU:$E5AB PRG:25AB B9 E0 02 - clc ; CPU:$E5AE PRG:25AE 18 - adc $BC ; CPU:$E5AF PRG:25AF 65 BC - sta OamEntryE0Y,y ; CPU:$E5B1 PRG:25B1 99 E0 02 - dey ; CPU:$E5B4 PRG:25B4 88 - dey ; CPU:$E5B5 PRG:25B5 88 - dey ; CPU:$E5B6 PRG:25B6 88 - dey ; CPU:$E5B7 PRG:25B7 88 - bpl CopyOverlaySpriteStream_Block_2 ; CPU:$E5B8 PRG:25B8 10 F1 - lda FrameCounter ; CPU:$E5BA PRG:25BA A5 19 - and #$03 ; CPU:$E5BC PRG:25BC 29 03 - bne CopyOverlaySpriteStream_Block_3 ; CPU:$E5BE PRG:25BE D0 02 - dec $BB ; CPU:$E5C0 PRG:25C0 C6 BB + lda OamEntryE0Y,y ; CPU:$E5AD PRG:25AD B9 E0 02 + clc ; CPU:$E5B0 PRG:25B0 18 + adc $BC ; CPU:$E5B1 PRG:25B1 65 BC + sta OamEntryE0Y,y ; CPU:$E5B3 PRG:25B3 99 E0 02 + dey ; CPU:$E5B6 PRG:25B6 88 + dey ; CPU:$E5B7 PRG:25B7 88 + dey ; CPU:$E5B8 PRG:25B8 88 + dey ; CPU:$E5B9 PRG:25B9 88 + bpl CopyOverlaySpriteStream_Block_2 ; CPU:$E5BA PRG:25BA 10 F1 + lda FrameCounter ; CPU:$E5BC PRG:25BC A5 19 + and #$03 ; CPU:$E5BE PRG:25BE 29 03 + bne CopyOverlaySpriteStream_Block_3 ; CPU:$E5C0 PRG:25C0 D0 02 + dec $BB ; CPU:$E5C2 PRG:25C2 C6 BB CopyOverlaySpriteStream_Block_3: - rts ; CPU:$E5C2 PRG:25C2 60 + rts ; CPU:$E5C4 PRG:25C4 60 ; Rendering streams and object motion/physics lookup data OverlaySpriteStreamLoTable: - .byte $FD, $ED, $E0, $D6, $CF ; CPU:$E5C3 PRG:25C3 FD ED E0 D6 CF + .byte $FD, $ED, $E0, $D6, $CF ; CPU:$E5C5 PRG:25C5 FD ED E0 D6 CF OverlaySpriteStreamHiTable: - .byte $E5, $E5, $E5, $E5, $E5, $D0, $AE, $03 ; CPU:$E5C8 PRG:25C8 E5 E5 E5 E5 E5 D0 AE 03 - .byte $04, $F0, $F0, $F0, $C8, $AF, $03, $04 ; CPU:$E5D0 PRG:25D0 04 F0 F0 F0 C8 AF 03 04 - .byte $D0, $B0, $03, $04, $F0, $F0, $C8, $B1 ; CPU:$E5D8 PRG:25D8 D0 B0 03 04 F0 F0 C8 B1 - .byte $03, $FC, $C8, $B2, $03, $04, $D0, $B3 ; CPU:$E5E0 PRG:25E0 03 FC C8 B2 03 04 D0 B3 - .byte $03, $04, $F0, $C8, $B4, $03, $00, $C8 ; CPU:$E5E8 PRG:25E8 03 04 F0 C8 B4 03 00 C8 - .byte $B4, $43, $08, $D0, $B5, $03, $00, $D0 ; CPU:$E5F0 PRG:25F0 B4 43 08 D0 B5 03 00 D0 - .byte $B5, $43, $08, $F0, $F0, $F0, $F0 ; CPU:$E5F8 PRG:25F8 B5 43 08 F0 F0 F0 F0 + .byte $E5, $E5, $E5, $E5, $E5, $D0, $AE, $03 ; CPU:$E5CA PRG:25CA E5 E5 E5 E5 E5 D0 AE 03 + .byte $04, $F0, $F0, $F0, $C8, $AF, $03, $04 ; CPU:$E5D2 PRG:25D2 04 F0 F0 F0 C8 AF 03 04 + .byte $D0, $B0, $03, $04, $F0, $F0, $C8, $B1 ; CPU:$E5DA PRG:25DA D0 B0 03 04 F0 F0 C8 B1 + .byte $03, $FC, $C8, $B2, $03, $04, $D0, $B3 ; CPU:$E5E2 PRG:25E2 03 FC C8 B2 03 04 D0 B3 + .byte $03, $04, $F0, $C8, $B4, $03, $00, $C8 ; CPU:$E5EA PRG:25EA 03 04 F0 C8 B4 03 00 C8 + .byte $B4, $43, $08, $D0, $B5, $03, $00, $D0 ; CPU:$E5F2 PRG:25F2 B4 43 08 D0 B5 03 00 D0 + .byte $B5, $43, $08, $F0, $F0, $F0, $F0 ; CPU:$E5FA PRG:25FA B5 43 08 F0 F0 F0 F0 ObjectAccelerationTableA: - .byte $04, $04, $05, $06, $03, $03, $03, $06 ; CPU:$E5FF PRG:25FF 04 04 05 06 03 03 03 06 - .byte $0A, $0A, $0A, $0A ; CPU:$E607 PRG:2607 0A 0A 0A 0A + .byte $04, $04, $05, $06, $03, $03, $03, $06 ; CPU:$E601 PRG:2601 04 04 05 06 03 03 03 06 + .byte $0A, $0A, $0A, $0A ; CPU:$E609 PRG:2609 0A 0A 0A 0A ObjectAccelerationTableB: - .byte $28, $32, $46, $78, $00, $00, $00, $64 ; CPU:$E60B PRG:260B 28 32 46 78 00 00 00 64 - .byte $00, $00, $00, $00 ; CPU:$E613 PRG:2613 00 00 00 00 + .byte $28, $32, $46, $78, $00, $00, $00, $64 ; CPU:$E60D PRG:260D 28 32 46 78 00 00 00 64 + .byte $00, $00, $00, $00 ; CPU:$E615 PRG:2615 00 00 00 00 ObjectVelocityTableA: - .byte $0A, $1E, $32, $70, $00, $00, $00, $70 ; CPU:$E617 PRG:2617 0A 1E 32 70 00 00 00 70 - .byte $00, $00, $00, $00 ; CPU:$E61F PRG:261F 00 00 00 00 + .byte $0A, $1E, $32, $70, $00, $00, $00, $70 ; CPU:$E619 PRG:2619 0A 1E 32 70 00 00 00 70 + .byte $00, $00, $00, $00 ; CPU:$E621 PRG:2621 00 00 00 00 ObjectVelocityTableB: - .byte $14, $3C, $64, $A0, $00, $00, $00, $A0 ; CPU:$E623 PRG:2623 14 3C 64 A0 00 00 00 A0 - .byte $00, $00, $00, $00 ; CPU:$E62B PRG:262B 00 00 00 00 + .byte $14, $3C, $64, $A0, $00, $00, $00, $A0 ; CPU:$E625 PRG:2625 14 3C 64 A0 00 00 00 A0 + .byte $00, $00, $00, $00 ; CPU:$E62D PRG:262D 00 00 00 00 ObjectVelocityTableC: - .byte $70, $B0, $E0, $40, $80, $80, $80, $40 ; CPU:$E62F PRG:262F 70 B0 E0 40 80 80 80 40 - .byte $00, $00, $00, $00 ; CPU:$E637 PRG:2637 00 00 00 00 + .byte $70, $B0, $E0, $40, $80, $80, $80, $40 ; CPU:$E631 PRG:2631 70 B0 E0 40 80 80 80 40 + .byte $00, $00, $00, $00 ; CPU:$E639 PRG:2639 00 00 00 00 ObjectVelocityTableD: - .byte $00, $00, $00, $01, $00, $00, $00, $01 ; CPU:$E63B PRG:263B 00 00 00 01 00 00 00 01 - .byte $00, $00, $00, $00 ; CPU:$E643 PRG:2643 00 00 00 00 + .byte $00, $00, $00, $01, $00, $00, $00, $01 ; CPU:$E63D PRG:263D 00 00 00 01 00 00 00 01 + .byte $00, $00, $00, $00 ; CPU:$E645 PRG:2645 00 00 00 00 ObjectVelocityTableE: - .byte $90, $50, $20, $C0, $80, $80, $80, $C0 ; CPU:$E647 PRG:2647 90 50 20 C0 80 80 80 C0 - .byte $00, $00, $00, $00 ; CPU:$E64F PRG:264F 00 00 00 00 + .byte $90, $50, $20, $C0, $80, $80, $80, $C0 ; CPU:$E649 PRG:2649 90 50 20 C0 80 80 80 C0 + .byte $00, $00, $00, $00 ; CPU:$E651 PRG:2651 00 00 00 00 ObjectVelocityTableF: - .byte $FF, $FF, $FF, $FE, $FF, $FF, $FF, $FE ; CPU:$E653 PRG:2653 FF FF FF FE FF FF FF FE - .byte $00, $00, $00, $00 ; CPU:$E65B PRG:265B 00 00 00 00 + .byte $FF, $FF, $FF, $FE, $FF, $FF, $FF, $FE ; CPU:$E655 PRG:2655 FF FF FF FE FF FF FF FE + .byte $00, $00, $00, $00 ; CPU:$E65D PRG:265D 00 00 00 00 ObjectMotionTableA: - .byte $50, $90, $C0, $40, $40, $40, $40, $40 ; CPU:$E65F PRG:265F 50 90 C0 40 40 40 40 40 - .byte $00, $00, $00, $00 ; CPU:$E667 PRG:2667 00 00 00 00 + .byte $50, $90, $C0, $40, $40, $40, $40, $40 ; CPU:$E661 PRG:2661 50 90 C0 40 40 40 40 40 + .byte $00, $00, $00, $00 ; CPU:$E669 PRG:2669 00 00 00 00 ObjectMotionTableB: - .byte $00, $00, $00, $01, $00, $00, $00, $01 ; CPU:$E66B PRG:266B 00 00 00 01 00 00 00 01 - .byte $02, $02, $02, $02 ; CPU:$E673 PRG:2673 02 02 02 02 + .byte $00, $00, $00, $01, $00, $00, $00, $01 ; CPU:$E66D PRG:266D 00 00 00 01 00 00 00 01 + .byte $02, $02, $02, $02 ; CPU:$E675 PRG:2675 02 02 02 02 ObjectMotionTableC: - .byte $B0, $70, $40, $C0, $C0, $C0, $C0, $C0 ; CPU:$E677 PRG:2677 B0 70 40 C0 C0 C0 C0 C0 - .byte $C0, $C0, $C0, $C0 ; CPU:$E67F PRG:267F C0 C0 C0 C0 + .byte $B0, $70, $40, $C0, $C0, $C0, $C0, $C0 ; CPU:$E679 PRG:2679 B0 70 40 C0 C0 C0 C0 C0 + .byte $C0, $C0, $C0, $C0 ; CPU:$E681 PRG:2681 C0 C0 C0 C0 ObjectMotionTableD: - .byte $FF, $FF, $FF, $FE, $FF, $FF, $FF, $FE ; CPU:$E683 PRG:2683 FF FF FF FE FF FF FF FE - .byte $FE, $01, $FE, $FE ; CPU:$E68B PRG:268B FE 01 FE FE + .byte $FF, $FF, $FF, $FE, $FF, $FF, $FF, $FE ; CPU:$E685 PRG:2685 FF FF FF FE FF FF FF FE + .byte $FE, $01, $FE, $FE ; CPU:$E68D PRG:268D FE 01 FE FE ; UpdateAllObjects ; Purpose: update active object slots, physics, interactions, and sprite rendering. ; Inputs: global object arrays; no explicit register parameters. ; Returns: all active objects processed; X exhausted to $FF. UpdateAllObjects: - jsr $EE25 ; CPU:$E68F PRG:268F 20 25 EE - ldx #$07 ; CPU:$E692 PRG:2692 A2 07 + jsr $EE25 ; CPU:$E691 PRG:2691 20 25 EE + ldx #$07 ; CPU:$E694 PRG:2694 A2 07 UpdateAllObjects_Block: - lda PlayerSlotState,x ; CPU:$E694 PRG:2694 B5 88 - bpl UpdateAllObjects_Block_1 ; CPU:$E696 PRG:2696 10 0A - cmp #$FF ; CPU:$E698 PRG:2698 C9 FF - beq UpdateAllObjects_Block_5 ; CPU:$E69A PRG:269A F0 44 - jsr $ECBA ; CPU:$E69C PRG:269C 20 BA EC - jmp UpdateAllObjects_Block_5 ; CPU:$E69F PRG:269F 4C E2 E6 + lda PlayerSlotState,x ; CPU:$E696 PRG:2696 B5 88 + bpl UpdateAllObjects_Block_1 ; CPU:$E698 PRG:2698 10 0A + cmp #$FF ; CPU:$E69A PRG:269A C9 FF + beq UpdateAllObjects_Block_5 ; CPU:$E69C PRG:269C F0 44 + jsr $ECBA ; CPU:$E69E PRG:269E 20 BA EC + jmp UpdateAllObjects_Block_5 ; CPU:$E6A1 PRG:26A1 4C E2 E6 UpdateAllObjects_Block_1: - cpx #$02 ; CPU:$E6A2 PRG:26A2 E0 02 - bcc UpdateAllObjects_Block_2 ; CPU:$E6A4 PRG:26A4 90 10 - cmp #$01 ; CPU:$E6A6 PRG:26A6 C9 01 - bne UpdateAllObjects_Block_2 ; CPU:$E6A8 PRG:26A8 D0 0C - lda PlayerLifecycleState,x ; CPU:$E6AA PRG:26AA B5 7F - cmp #$02 ; CPU:$E6AC PRG:26AC C9 02 - bcs UpdateAllObjects_Block_2 ; CPU:$E6AE PRG:26AE B0 06 - lda SoundRequestFlags1 ; CPU:$E6B0 PRG:26B0 A5 F1 - ora #$20 ; CPU:$E6B2 PRG:26B2 09 20 - sta SoundRequestFlags1 ; CPU:$E6B4 PRG:26B4 85 F1 + cpx #$02 ; CPU:$E6A4 PRG:26A4 E0 02 + bcc UpdateAllObjects_Block_2 ; CPU:$E6A6 PRG:26A6 90 10 + cmp #$01 ; CPU:$E6A8 PRG:26A8 C9 01 + bne UpdateAllObjects_Block_2 ; CPU:$E6AA PRG:26AA D0 0C + lda PlayerLifecycleState,x ; CPU:$E6AC PRG:26AC B5 7F + cmp #$02 ; CPU:$E6AE PRG:26AE C9 02 + bcs UpdateAllObjects_Block_2 ; CPU:$E6B0 PRG:26B0 B0 06 + lda SoundRequestFlags1 ; CPU:$E6B2 PRG:26B2 A5 F1 + ora #$20 ; CPU:$E6B4 PRG:26B4 09 20 + sta SoundRequestFlags1 ; CPU:$E6B6 PRG:26B6 85 F1 UpdateAllObjects_Block_2: - dec $043F,x ; CPU:$E6B6 PRG:26B6 DE 3F 04 - bne UpdateAllObjects_Block_4 ; CPU:$E6B9 PRG:26B9 D0 1C - lda #$03 ; CPU:$E6BB PRG:26BB A9 03 - sta $043F,x ; CPU:$E6BD PRG:26BD 9D 3F 04 - cpx #$02 ; CPU:$E6C0 PRG:26C0 E0 02 - bcs UpdateAllObjects_Block_3 ; CPU:$E6C2 PRG:26C2 B0 08 - dec $BF,x ; CPU:$E6C4 PRG:26C4 D6 BF - bne UpdateAllObjects_Block_3 ; CPU:$E6C6 PRG:26C6 D0 04 - lda #$00 ; CPU:$E6C8 PRG:26C8 A9 00 - sta PlayerCollisionDisable,x ; CPU:$E6CA PRG:26CA 95 BD + dec $043F,x ; CPU:$E6B8 PRG:26B8 DE 3F 04 + bne UpdateAllObjects_Block_4 ; CPU:$E6BB PRG:26BB D0 1C + lda #$03 ; CPU:$E6BD PRG:26BD A9 03 + sta $043F,x ; CPU:$E6BF PRG:26BF 9D 3F 04 + cpx #$02 ; CPU:$E6C2 PRG:26C2 E0 02 + bcs UpdateAllObjects_Block_3 ; CPU:$E6C4 PRG:26C4 B0 08 + dec $BF,x ; CPU:$E6C6 PRG:26C6 D6 BF + bne UpdateAllObjects_Block_3 ; CPU:$E6C8 PRG:26C8 D0 04 + lda #$00 ; CPU:$E6CA PRG:26CA A9 00 + sta PlayerCollisionDisable,x ; CPU:$E6CC PRG:26CC 95 BD UpdateAllObjects_Block_3: - jsr $EA18 ; CPU:$E6CC PRG:26CC 20 18 EA - stx CurrentObjectIndex ; CPU:$E6CF PRG:26CF 86 3E - jsr $EBC4 ; CPU:$E6D1 PRG:26D1 20 C4 EB - jsr $E796 ; CPU:$E6D4 PRG:26D4 20 96 E7 + jsr $EA18 ; CPU:$E6CE PRG:26CE 20 18 EA + stx CurrentObjectIndex ; CPU:$E6D1 PRG:26D1 86 3E + jsr $EBC4 ; CPU:$E6D3 PRG:26D3 20 C4 EB + jsr $E796 ; CPU:$E6D6 PRG:26D6 20 96 E7 UpdateAllObjects_Block_4: - jsr $EA58 ; CPU:$E6D7 PRG:26D7 20 58 EA - jsr $ED28 ; CPU:$E6DA PRG:26DA 20 28 ED - jsr ApplyBonusEffect ; CPU:$E6DD PRG:26DD 20 83 E9 + jsr $EA58 ; CPU:$E6D9 PRG:26D9 20 58 EA + jsr $ED28 ; CPU:$E6DC PRG:26DC 20 28 ED + jsr ApplyBonusEffect ; CPU:$E6DF PRG:26DF 20 83 E9 UpdateAllObjects_Block_5: - jsr BuildObjectMetasprite ; CPU:$E6E0 PRG:26E0 20 A4 E3 - dex ; CPU:$E6E3 PRG:26E3 CA - bpl UpdateAllObjects_Block ; CPU:$E6E4 PRG:26E4 10 AE - rts ; CPU:$E6E6 PRG:26E6 60 + jsr BuildObjectMetasprite ; CPU:$E6E2 PRG:26E2 20 A4 E3 + dex ; CPU:$E6E5 PRG:26E5 CA + bpl UpdateAllObjects_Block ; CPU:$E6E6 PRG:26E6 10 AE + rts ; CPU:$E6E8 PRG:26E8 60 ; UpdatePlayerInputState ; Purpose: update per-player directional input and animation timing state. ; Inputs: X = player object slot. ; Returns: direction/state byte $31,X updated. UpdatePlayerInputState: - cpx #$02 ; CPU:$E6E7 PRG:26E7 E0 02 - bcs UpdatePlayerInputState_Block_2 ; CPU:$E6E9 PRG:26E9 B0 18 - lda FrameCounter ; CPU:$E6EB PRG:26EB A5 19 - and #$0F ; CPU:$E6ED PRG:26ED 29 0F - bne UpdatePlayerInputState_Block ; CPU:$E6EF PRG:26EF D0 05 - jsr GetRandomValue ; CPU:$E6F1 PRG:26F1 20 B3 F1 - sta $31,x ; CPU:$E6F4 PRG:26F4 95 31 + cpx #$02 ; CPU:$E6E9 PRG:26E9 E0 02 + bcs UpdatePlayerInputState_Block_2 ; CPU:$E6EB PRG:26EB B0 18 + lda FrameCounter ; CPU:$E6ED PRG:26ED A5 19 + and #$0F ; CPU:$E6EF PRG:26EF 29 0F + bne UpdatePlayerInputState_Block ; CPU:$E6F1 PRG:26F1 D0 05 + jsr GetRandomValue ; CPU:$E6F3 PRG:26F3 20 B3 F1 + sta $31,x ; CPU:$E6F6 PRG:26F6 95 31 UpdatePlayerInputState_Block: - lda $3A ; CPU:$E6F6 PRG:26F6 A5 3A - bne UpdatePlayerInputState_Block_2 ; CPU:$E6F8 PRG:26F8 D0 09 - jsr $E76A ; CPU:$E6FA PRG:26FA 20 6A E7 - lda $061C,x ; CPU:$E6FD PRG:26FD BD 1C 06 - sta $31,x ; CPU:$E700 PRG:2700 95 31 + lda $3A ; CPU:$E6F8 PRG:26F8 A5 3A + bne UpdatePlayerInputState_Block_2 ; CPU:$E6FA PRG:26FA D0 09 + jsr $E76A ; CPU:$E6FC PRG:26FC 20 6A E7 + lda $061C,x ; CPU:$E6FF PRG:26FF BD 1C 06 + sta $31,x ; CPU:$E702 PRG:2702 95 31 UpdatePlayerInputState_Block_1: - rts ; CPU:$E702 PRG:2702 60 + rts ; CPU:$E704 PRG:2704 60 UpdatePlayerInputState_Block_2: - lda PlayerPosY,x ; CPU:$E703 PRG:2703 B5 9A - cmp #$A0 ; CPU:$E705 PRG:2705 C9 A0 - bcc UpdatePlayerInputState_Block_3 ; CPU:$E707 PRG:2707 90 07 - lda $31,x ; CPU:$E709 PRG:2709 B5 31 - ora #$40 ; CPU:$E70B PRG:270B 09 40 - sta $31,x ; CPU:$E70D PRG:270D 95 31 - rts ; CPU:$E70F PRG:270F 60 + lda PlayerPosY,x ; CPU:$E705 PRG:2705 B5 9A + cmp #$A0 ; CPU:$E707 PRG:2707 C9 A0 + bcc UpdatePlayerInputState_Block_3 ; CPU:$E709 PRG:2709 90 07 + lda $31,x ; CPU:$E70B PRG:270B B5 31 + ora #$40 ; CPU:$E70D PRG:270D 09 40 + sta $31,x ; CPU:$E70F PRG:270F 95 31 + rts ; CPU:$E711 PRG:2711 60 UpdatePlayerInputState_Block_3: - dec PlayerStateTimer,x ; CPU:$E710 PRG:2710 DE 5A 04 - bne UpdatePlayerInputState_Block_1 ; CPU:$E713 PRG:2713 D0 ED - jsr GetRandomValue ; CPU:$E715 PRG:2715 20 B3 F1 - ldy PlayerAnimationState,x ; CPU:$E718 PRG:2718 BC 51 04 - and ObjectAnimationPeriodTable,y ; CPU:$E71B PRG:271B 39 62 E7 - adc ControllerBitMaskTable,y ; CPU:$E71E PRG:271E 79 65 E7 - sta PlayerStateTimer,x ; CPU:$E721 PRG:2721 9D 5A 04 - stx Temp12 ; CPU:$E724 PRG:2724 86 12 - lda FrameCounter ; CPU:$E726 PRG:2726 A5 19 - rol a ; CPU:$E728 PRG:2728 2A - rol a ; CPU:$E729 PRG:2729 2A - eor Temp12 ; CPU:$E72A PRG:272A 45 12 - and #$01 ; CPU:$E72C PRG:272C 29 01 - tay ; CPU:$E72E PRG:272E A8 - lda a:PlayerSlotState,y ; CPU:$E72F PRG:272F B9 88 00 - bmi UpdatePlayerInputState_Block_4 ; CPU:$E732 PRG:2732 30 13 - lda a:PlayerCollisionDisable,y ; CPU:$E734 PRG:2734 B9 BD 00 - bne UpdatePlayerInputState_Block_4 ; CPU:$E737 PRG:2737 D0 0E - lda #$00 ; CPU:$E739 PRG:2739 A9 00 - sta $31,x ; CPU:$E73B PRG:273B 95 31 - lda a:PlayerPosY,y ; CPU:$E73D PRG:273D B9 9A 00 - sec ; CPU:$E740 PRG:2740 38 - sbc #$04 ; CPU:$E741 PRG:2741 E9 04 - cmp PlayerPosY,x ; CPU:$E743 PRG:2743 D5 9A - bcs UpdatePlayerInputState_Block_5 ; CPU:$E745 PRG:2745 B0 04 + dec PlayerStateTimer,x ; CPU:$E712 PRG:2712 DE 5A 04 + bne UpdatePlayerInputState_Block_1 ; CPU:$E715 PRG:2715 D0 ED + jsr GetRandomValue ; CPU:$E717 PRG:2717 20 B3 F1 + ldy PlayerAnimationState,x ; CPU:$E71A PRG:271A BC 51 04 + and ObjectAnimationPeriodTable,y ; CPU:$E71D PRG:271D 39 62 E7 + adc ControllerBitMaskTable,y ; CPU:$E720 PRG:2720 79 65 E7 + sta PlayerStateTimer,x ; CPU:$E723 PRG:2723 9D 5A 04 + stx Temp12 ; CPU:$E726 PRG:2726 86 12 + lda FrameCounter ; CPU:$E728 PRG:2728 A5 19 + rol a ; CPU:$E72A PRG:272A 2A + rol a ; CPU:$E72B PRG:272B 2A + eor Temp12 ; CPU:$E72C PRG:272C 45 12 + and #$01 ; CPU:$E72E PRG:272E 29 01 + tay ; CPU:$E730 PRG:2730 A8 + lda a:PlayerSlotState,y ; CPU:$E731 PRG:2731 B9 88 00 + bmi UpdatePlayerInputState_Block_4 ; CPU:$E734 PRG:2734 30 13 + lda a:PlayerCollisionDisable,y ; CPU:$E736 PRG:2736 B9 BD 00 + bne UpdatePlayerInputState_Block_4 ; CPU:$E739 PRG:2739 D0 0E + lda #$00 ; CPU:$E73B PRG:273B A9 00 + sta $31,x ; CPU:$E73D PRG:273D 95 31 + lda a:PlayerPosY,y ; CPU:$E73F PRG:273F B9 9A 00 + sec ; CPU:$E742 PRG:2742 38 + sbc #$04 ; CPU:$E743 PRG:2743 E9 04 + cmp PlayerPosY,x ; CPU:$E745 PRG:2745 D5 9A + bcs UpdatePlayerInputState_Block_5 ; CPU:$E747 PRG:2747 B0 04 UpdatePlayerInputState_Block_4: - lda #$40 ; CPU:$E747 PRG:2747 A9 40 - sta $31,x ; CPU:$E749 PRG:2749 95 31 + lda #$40 ; CPU:$E749 PRG:2749 A9 40 + sta $31,x ; CPU:$E74B PRG:274B 95 31 UpdatePlayerInputState_Block_5: - lda PlayerPosX,x ; CPU:$E74B PRG:274B B5 91 - cmp a:PlayerPosX,y ; CPU:$E74D PRG:274D D9 91 00 - bcs UpdatePlayerInputState_Block_6 ; CPU:$E750 PRG:2750 B0 07 - lda $31,x ; CPU:$E752 PRG:2752 B5 31 - ora #$01 ; CPU:$E754 PRG:2754 09 01 - sta $31,x ; CPU:$E756 PRG:2756 95 31 - rts ; CPU:$E758 PRG:2758 60 + lda PlayerPosX,x ; CPU:$E74D PRG:274D B5 91 + cmp a:PlayerPosX,y ; CPU:$E74F PRG:274F D9 91 00 + bcs UpdatePlayerInputState_Block_6 ; CPU:$E752 PRG:2752 B0 07 + lda $31,x ; CPU:$E754 PRG:2754 B5 31 + ora #$01 ; CPU:$E756 PRG:2756 09 01 + sta $31,x ; CPU:$E758 PRG:2758 95 31 + rts ; CPU:$E75A PRG:275A 60 UpdatePlayerInputState_Block_6: - lda $31,x ; CPU:$E759 PRG:2759 B5 31 - ora #$02 ; CPU:$E75B PRG:275B 09 02 - sta $31,x ; CPU:$E75D PRG:275D 95 31 - rts ; CPU:$E75F PRG:275F 60 + lda $31,x ; CPU:$E75B PRG:275B B5 31 + ora #$02 ; CPU:$E75D PRG:275D 09 02 + sta $31,x ; CPU:$E75F PRG:275F 95 31 + rts ; CPU:$E761 PRG:2761 60 ; Per-object animation timer masks selected by object type/state. ObjectAnimationPeriodTable: - .byte $1F, $0F, $07 ; CPU:$E760 PRG:2760 1F 0F 07 + .byte $1F, $0F, $07 ; CPU:$E762 PRG:2762 1F 0F 07 ; Base timer periods paired with ObjectAnimationPeriodTable. ObjectAnimationBasePeriodTable: ControllerBitMaskTable: - .byte $20, $10, $08 ; CPU:$E763 PRG:2763 20 10 08 + .byte $20, $10, $08 ; CPU:$E765 PRG:2765 20 10 08 ; PollControllers ; Purpose: strobe both NES controller ports and update current/pressed input bytes. ; Inputs: none. ; Returns: controller history at $061C-$061F updated; A/X/Y modified. PollControllers: - ldx #$00 ; CPU:$E766 PRG:2766 A2 00 + ldx #$00 ; CPU:$E768 PRG:2768 A2 00 ReadControllerPort: - lda #$01 ; CPU:$E768 PRG:2768 A9 01 - sta JOY1 ; CPU:$E76A PRG:276A 8D 16 40 - lda #$00 ; CPU:$E76D PRG:276D A9 00 - sta JOY1 ; CPU:$E76F PRG:276F 8D 16 40 - ldy #$07 ; CPU:$E772 PRG:2772 A0 07 + lda #$01 ; CPU:$E76A PRG:276A A9 01 + sta JOY1 ; CPU:$E76C PRG:276C 8D 16 40 + lda #$00 ; CPU:$E76F PRG:276F A9 00 + sta JOY1 ; CPU:$E771 PRG:2771 8D 16 40 + ldy #$07 ; CPU:$E774 PRG:2774 A0 07 ReadControllerPort_Block: - lda JOY1,x ; CPU:$E774 PRG:2774 BD 16 40 - sta Temp12 ; CPU:$E777 PRG:2777 85 12 - lsr a ; CPU:$E779 PRG:2779 4A - ora Temp12 ; CPU:$E77A PRG:277A 05 12 - lsr a ; CPU:$E77C PRG:277C 4A - rol $061C,x ; CPU:$E77D PRG:277D 3E 1C 06 - dey ; CPU:$E780 PRG:2780 88 - bpl ReadControllerPort_Block ; CPU:$E781 PRG:2781 10 F1 - ldy $061E,x ; CPU:$E783 PRG:2783 BC 1E 06 - lda $061C,x ; CPU:$E786 PRG:2786 BD 1C 06 - sta $061E,x ; CPU:$E789 PRG:2789 9D 1E 06 - tya ; CPU:$E78C PRG:278C 98 - eor $061C,x ; CPU:$E78D PRG:278D 5D 1C 06 - and $061C,x ; CPU:$E790 PRG:2790 3D 1C 06 - rts ; CPU:$E793 PRG:2793 60 + lda JOY1,x ; CPU:$E776 PRG:2776 BD 16 40 + sta Temp12 ; CPU:$E779 PRG:2779 85 12 + lsr a ; CPU:$E77B PRG:277B 4A + ora Temp12 ; CPU:$E77C PRG:277C 05 12 + lsr a ; CPU:$E77E PRG:277E 4A + rol $061C,x ; CPU:$E77F PRG:277F 3E 1C 06 + dey ; CPU:$E782 PRG:2782 88 + bpl ReadControllerPort_Block ; CPU:$E783 PRG:2783 10 F1 + ldy $061E,x ; CPU:$E785 PRG:2785 BC 1E 06 + lda $061C,x ; CPU:$E788 PRG:2788 BD 1C 06 + sta $061E,x ; CPU:$E78B PRG:278B 9D 1E 06 + tya ; CPU:$E78E PRG:278E 98 + eor $061C,x ; CPU:$E78F PRG:278F 5D 1C 06 + and $061C,x ; CPU:$E792 PRG:2792 3D 1C 06 + rts ; CPU:$E795 PRG:2795 60 ; UpdateObjectMotionState ; Purpose: clear motion accumulators for inactive objects and integrate active-object velocity. ; Inputs: X = object slot. ; Returns: per-object fixed-point motion values updated. UpdateObjectMotionState: - lda PlayerSlotState,x ; CPU:$E794 PRG:2794 B5 88 - bne UpdateObjectMotionState_Block_1 ; CPU:$E796 PRG:2796 D0 09 + lda PlayerSlotState,x ; CPU:$E796 PRG:2796 B5 88 + bne UpdateObjectMotionState_Block_1 ; CPU:$E798 PRG:2798 D0 09 UpdateObjectMotionState_Block: - lda #$00 ; CPU:$E798 PRG:2798 A9 00 - sta $0424,x ; CPU:$E79A PRG:279A 9D 24 04 - sta PlayerVerticalImpulse,x ; CPU:$E79D PRG:279D 9D 2D 04 - rts ; CPU:$E7A0 PRG:27A0 60 + lda #$00 ; CPU:$E79A PRG:279A A9 00 + sta $0424,x ; CPU:$E79C PRG:279C 9D 24 04 + sta PlayerVerticalImpulse,x ; CPU:$E79F PRG:279F 9D 2D 04 + rts ; CPU:$E7A2 PRG:27A2 60 UpdateObjectMotionState_Block_1: - cmp #$02 ; CPU:$E7A1 PRG:27A1 C9 02 - beq UpdateObjectVelocity_Block ; CPU:$E7A3 PRG:27A3 F0 41 - cpx #$02 ; CPU:$E7A5 PRG:27A5 E0 02 - bcc UpdateObjectVelocity_Block ; CPU:$E7A7 PRG:27A7 90 3D - lda PlayerLifecycleState,x ; CPU:$E7A9 PRG:27A9 B5 7F - cmp #$02 ; CPU:$E7AB PRG:27AB C9 02 - bcs UpdateObjectMotionState_Block ; CPU:$E7AD PRG:27AD B0 E9 + cmp #$02 ; CPU:$E7A3 PRG:27A3 C9 02 + beq UpdateObjectVelocity_Block ; CPU:$E7A5 PRG:27A5 F0 41 + cpx #$02 ; CPU:$E7A7 PRG:27A7 E0 02 + bcc UpdateObjectVelocity_Block ; CPU:$E7A9 PRG:27A9 90 3D + lda PlayerLifecycleState,x ; CPU:$E7AB PRG:27AB B5 7F + cmp #$02 ; CPU:$E7AD PRG:27AD C9 02 + bcs UpdateObjectMotionState_Block ; CPU:$E7AF PRG:27AF B0 E9 ; UpdateObjectVelocity ; Purpose: select movement state and adjust horizontal velocity from directional state. ; Inputs: X = object slot. ; Returns: state $7F,X, facing $0448,X, and velocity $0424/$042D updated. UpdateObjectVelocity: - lda $0424,x ; CPU:$E7AF PRG:27AF BD 24 04 - sta MotionDeltaLo ; CPU:$E7B2 PRG:27B2 85 12 - lda PlayerVerticalImpulse,x ; CPU:$E7B4 PRG:27B4 BD 2D 04 - sta MotionDeltaHi ; CPU:$E7B7 PRG:27B7 85 13 - jsr UpdateSignedMotionAccumulator ; CPU:$E7B9 PRG:27B9 20 A6 F1 - lda $0463,x ; CPU:$E7BC PRG:27BC BD 63 04 - clc ; CPU:$E7BF PRG:27BF 18 - adc MotionDeltaLo ; CPU:$E7C0 PRG:27C0 65 12 - sta $0463,x ; CPU:$E7C2 PRG:27C2 9D 63 04 - sta MotionDeltaLo ; CPU:$E7C5 PRG:27C5 85 12 - lda $046C,x ; CPU:$E7C7 PRG:27C7 BD 6C 04 - adc MotionDeltaHi ; CPU:$E7CA PRG:27CA 65 13 - sta $046C,x ; CPU:$E7CC PRG:27CC 9D 6C 04 - sta MotionDeltaHi ; CPU:$E7CF PRG:27CF 85 13 - jsr UpdateSignedMotionAccumulator ; CPU:$E7D1 PRG:27D1 20 A6 F1 - lda $0424,x ; CPU:$E7D4 PRG:27D4 BD 24 04 - sec ; CPU:$E7D7 PRG:27D7 38 - sbc MotionDeltaLo ; CPU:$E7D8 PRG:27D8 E5 12 - sta $0424,x ; CPU:$E7DA PRG:27DA 9D 24 04 - lda PlayerVerticalImpulse,x ; CPU:$E7DD PRG:27DD BD 2D 04 - sbc MotionDeltaHi ; CPU:$E7E0 PRG:27E0 E5 13 - sta PlayerVerticalImpulse,x ; CPU:$E7E2 PRG:27E2 9D 2D 04 - rts ; CPU:$E7E5 PRG:27E5 60 + lda $0424,x ; CPU:$E7B1 PRG:27B1 BD 24 04 + sta MotionDeltaLo ; CPU:$E7B4 PRG:27B4 85 12 + lda PlayerVerticalImpulse,x ; CPU:$E7B6 PRG:27B6 BD 2D 04 + sta MotionDeltaHi ; CPU:$E7B9 PRG:27B9 85 13 + jsr UpdateSignedMotionAccumulator ; CPU:$E7BB PRG:27BB 20 A6 F1 + lda $0463,x ; CPU:$E7BE PRG:27BE BD 63 04 + clc ; CPU:$E7C1 PRG:27C1 18 + adc MotionDeltaLo ; CPU:$E7C2 PRG:27C2 65 12 + sta $0463,x ; CPU:$E7C4 PRG:27C4 9D 63 04 + sta MotionDeltaLo ; CPU:$E7C7 PRG:27C7 85 12 + lda $046C,x ; CPU:$E7C9 PRG:27C9 BD 6C 04 + adc MotionDeltaHi ; CPU:$E7CC PRG:27CC 65 13 + sta $046C,x ; CPU:$E7CE PRG:27CE 9D 6C 04 + sta MotionDeltaHi ; CPU:$E7D1 PRG:27D1 85 13 + jsr UpdateSignedMotionAccumulator ; CPU:$E7D3 PRG:27D3 20 A6 F1 + lda $0424,x ; CPU:$E7D6 PRG:27D6 BD 24 04 + sec ; CPU:$E7D9 PRG:27D9 38 + sbc MotionDeltaLo ; CPU:$E7DA PRG:27DA E5 12 + sta $0424,x ; CPU:$E7DC PRG:27DC 9D 24 04 + lda PlayerVerticalImpulse,x ; CPU:$E7DF PRG:27DF BD 2D 04 + sbc MotionDeltaHi ; CPU:$E7E2 PRG:27E2 E5 13 + sta PlayerVerticalImpulse,x ; CPU:$E7E4 PRG:27E4 9D 2D 04 + rts ; CPU:$E7E7 PRG:27E7 60 UpdateObjectVelocity_Block: - lda PlayerLifecycleState,x ; CPU:$E7E6 PRG:27E6 B5 7F - cmp #$06 ; CPU:$E7E8 PRG:27E8 C9 06 - bcc UpdateObjectVelocity_Block_1 ; CPU:$E7EA PRG:27EA 90 01 - rts ; CPU:$E7EC PRG:27EC 60 + lda PlayerLifecycleState,x ; CPU:$E7E8 PRG:27E8 B5 7F + cmp #$06 ; CPU:$E7EA PRG:27EA C9 06 + bcc UpdateObjectVelocity_Block_1 ; CPU:$E7EC PRG:27EC 90 01 + rts ; CPU:$E7EE PRG:27EE 60 UpdateObjectVelocity_Block_1: - lda PlayerLifecycleState,x ; CPU:$E7ED PRG:27ED B5 7F - cmp #$04 ; CPU:$E7EF PRG:27EF C9 04 - bne UpdateObjectVelocity_Block_4 ; CPU:$E7F1 PRG:27F1 D0 1C - lda $31,x ; CPU:$E7F3 PRG:27F3 B5 31 - and #$02 ; CPU:$E7F5 PRG:27F5 29 02 - beq UpdateObjectVelocity_Block_2 ; CPU:$E7F7 PRG:27F7 F0 07 - lda PlayerVariantTable,x ; CPU:$E7F9 PRG:27F9 BD 48 04 - beq UpdateObjectVelocity_Block_4 ; CPU:$E7FC PRG:27FC F0 11 - bne UpdateObjectVelocity_Block_3 ; CPU:$E7FE PRG:27FE D0 0B + lda PlayerLifecycleState,x ; CPU:$E7EF PRG:27EF B5 7F + cmp #$04 ; CPU:$E7F1 PRG:27F1 C9 04 + bne UpdateObjectVelocity_Block_4 ; CPU:$E7F3 PRG:27F3 D0 1C + lda $31,x ; CPU:$E7F5 PRG:27F5 B5 31 + and #$02 ; CPU:$E7F7 PRG:27F7 29 02 + beq UpdateObjectVelocity_Block_2 ; CPU:$E7F9 PRG:27F9 F0 07 + lda PlayerVariantTable,x ; CPU:$E7FB PRG:27FB BD 48 04 + beq UpdateObjectVelocity_Block_4 ; CPU:$E7FE PRG:27FE F0 11 + bne UpdateObjectVelocity_Block_3 ; CPU:$E800 PRG:2800 D0 0B UpdateObjectVelocity_Block_2: - lda $31,x ; CPU:$E800 PRG:2800 B5 31 - and #$01 ; CPU:$E802 PRG:2802 29 01 - beq UpdateObjectVelocity_Block_4 ; CPU:$E804 PRG:2804 F0 09 - lda PlayerVariantTable,x ; CPU:$E806 PRG:2806 BD 48 04 - bne UpdateObjectVelocity_Block_4 ; CPU:$E809 PRG:2809 D0 04 + lda $31,x ; CPU:$E802 PRG:2802 B5 31 + and #$01 ; CPU:$E804 PRG:2804 29 01 + beq UpdateObjectVelocity_Block_4 ; CPU:$E806 PRG:2806 F0 09 + lda PlayerVariantTable,x ; CPU:$E808 PRG:2808 BD 48 04 + bne UpdateObjectVelocity_Block_4 ; CPU:$E80B PRG:280B D0 04 UpdateObjectVelocity_Block_3: - lda #$05 ; CPU:$E80B PRG:280B A9 05 - sta PlayerLifecycleState,x ; CPU:$E80D PRG:280D 95 7F + lda #$05 ; CPU:$E80D PRG:280D A9 05 + sta PlayerLifecycleState,x ; CPU:$E80F PRG:280F 95 7F UpdateObjectVelocity_Block_4: - lda PlayerLifecycleState,x ; CPU:$E80F PRG:280F B5 7F - cmp #$02 ; CPU:$E811 PRG:2811 C9 02 - bne UpdateObjectVelocity_Block_8 ; CPU:$E813 PRG:2813 D0 1B - lda $31,x ; CPU:$E815 PRG:2815 B5 31 - and #$02 ; CPU:$E817 PRG:2817 29 02 - beq UpdateObjectVelocity_Block_5 ; CPU:$E819 PRG:2819 F0 04 - lda #$00 ; CPU:$E81B PRG:281B A9 00 - beq UpdateObjectVelocity_Block_6 ; CPU:$E81D PRG:281D F0 08 + lda PlayerLifecycleState,x ; CPU:$E811 PRG:2811 B5 7F + cmp #$02 ; CPU:$E813 PRG:2813 C9 02 + bne UpdateObjectVelocity_Block_8 ; CPU:$E815 PRG:2815 D0 1B + lda $31,x ; CPU:$E817 PRG:2817 B5 31 + and #$02 ; CPU:$E819 PRG:2819 29 02 + beq UpdateObjectVelocity_Block_5 ; CPU:$E81B PRG:281B F0 04 + lda #$00 ; CPU:$E81D PRG:281D A9 00 + beq UpdateObjectVelocity_Block_6 ; CPU:$E81F PRG:281F F0 08 UpdateObjectVelocity_Block_5: - lda $31,x ; CPU:$E81F PRG:281F B5 31 - and #$01 ; CPU:$E821 PRG:2821 29 01 - beq UpdateObjectVelocity_Block_7 ; CPU:$E823 PRG:2823 F0 07 - lda #$01 ; CPU:$E825 PRG:2825 A9 01 + lda $31,x ; CPU:$E821 PRG:2821 B5 31 + and #$01 ; CPU:$E823 PRG:2823 29 01 + beq UpdateObjectVelocity_Block_7 ; CPU:$E825 PRG:2825 F0 07 + lda #$01 ; CPU:$E827 PRG:2827 A9 01 UpdateObjectVelocity_Block_6: - cmp PlayerVariantTable,x ; CPU:$E827 PRG:2827 DD 48 04 - beq UpdateObjectVelocity_Block_8 ; CPU:$E82A PRG:282A F0 04 + cmp PlayerVariantTable,x ; CPU:$E829 PRG:2829 DD 48 04 + beq UpdateObjectVelocity_Block_8 ; CPU:$E82C PRG:282C F0 04 UpdateObjectVelocity_Block_7: - lda #$04 ; CPU:$E82C PRG:282C A9 04 - sta PlayerLifecycleState,x ; CPU:$E82E PRG:282E 95 7F + lda #$04 ; CPU:$E82E PRG:282E A9 04 + sta PlayerLifecycleState,x ; CPU:$E830 PRG:2830 95 7F UpdateObjectVelocity_Block_8: - lda PlayerLifecycleState,x ; CPU:$E830 PRG:2830 B5 7F - cmp #$04 ; CPU:$E832 PRG:2832 C9 04 - bcc UpdateObjectVelocity_Block_11 ; CPU:$E834 PRG:2834 90 1C - lda $31,x ; CPU:$E836 PRG:2836 B5 31 - and #$02 ; CPU:$E838 PRG:2838 29 02 - beq UpdateObjectVelocity_Block_9 ; CPU:$E83A PRG:283A F0 07 - lda PlayerVariantTable,x ; CPU:$E83C PRG:283C BD 48 04 - bne UpdateObjectVelocity_Block_11 ; CPU:$E83F PRG:283F D0 11 - beq UpdateObjectVelocity_Block_10 ; CPU:$E841 PRG:2841 F0 0B + lda PlayerLifecycleState,x ; CPU:$E832 PRG:2832 B5 7F + cmp #$04 ; CPU:$E834 PRG:2834 C9 04 + bcc UpdateObjectVelocity_Block_11 ; CPU:$E836 PRG:2836 90 1C + lda $31,x ; CPU:$E838 PRG:2838 B5 31 + and #$02 ; CPU:$E83A PRG:283A 29 02 + beq UpdateObjectVelocity_Block_9 ; CPU:$E83C PRG:283C F0 07 + lda PlayerVariantTable,x ; CPU:$E83E PRG:283E BD 48 04 + bne UpdateObjectVelocity_Block_11 ; CPU:$E841 PRG:2841 D0 11 + beq UpdateObjectVelocity_Block_10 ; CPU:$E843 PRG:2843 F0 0B UpdateObjectVelocity_Block_9: - lda $31,x ; CPU:$E843 PRG:2843 B5 31 - and #$01 ; CPU:$E845 PRG:2845 29 01 - beq UpdateObjectVelocity_Block_11 ; CPU:$E847 PRG:2847 F0 09 - lda PlayerVariantTable,x ; CPU:$E849 PRG:2849 BD 48 04 - beq UpdateObjectVelocity_Block_11 ; CPU:$E84C PRG:284C F0 04 + lda $31,x ; CPU:$E845 PRG:2845 B5 31 + and #$01 ; CPU:$E847 PRG:2847 29 01 + beq UpdateObjectVelocity_Block_11 ; CPU:$E849 PRG:2849 F0 09 + lda PlayerVariantTable,x ; CPU:$E84B PRG:284B BD 48 04 + beq UpdateObjectVelocity_Block_11 ; CPU:$E84E PRG:284E F0 04 UpdateObjectVelocity_Block_10: - lda #$02 ; CPU:$E84E PRG:284E A9 02 - sta PlayerLifecycleState,x ; CPU:$E850 PRG:2850 95 7F + lda #$02 ; CPU:$E850 PRG:2850 A9 02 + sta PlayerLifecycleState,x ; CPU:$E852 PRG:2852 95 7F UpdateObjectVelocity_Block_11: - lda PlayerLifecycleState,x ; CPU:$E852 PRG:2852 B5 7F - cmp #$03 ; CPU:$E854 PRG:2854 C9 03 - bne UpdateObjectVelocity_Block_12 ; CPU:$E856 PRG:2856 D0 0A - lda $31,x ; CPU:$E858 PRG:2858 B5 31 - and #$03 ; CPU:$E85A PRG:285A 29 03 - beq UpdateObjectVelocity_Block_12 ; CPU:$E85C PRG:285C F0 04 - lda #$02 ; CPU:$E85E PRG:285E A9 02 - sta PlayerLifecycleState,x ; CPU:$E860 PRG:2860 95 7F + lda PlayerLifecycleState,x ; CPU:$E854 PRG:2854 B5 7F + cmp #$03 ; CPU:$E856 PRG:2856 C9 03 + bne UpdateObjectVelocity_Block_12 ; CPU:$E858 PRG:2858 D0 0A + lda $31,x ; CPU:$E85A PRG:285A B5 31 + and #$03 ; CPU:$E85C PRG:285C 29 03 + beq UpdateObjectVelocity_Block_12 ; CPU:$E85E PRG:285E F0 04 + lda #$02 ; CPU:$E860 PRG:2860 A9 02 + sta PlayerLifecycleState,x ; CPU:$E862 PRG:2862 95 7F UpdateObjectVelocity_Block_12: - lda PlayerLifecycleState,x ; CPU:$E862 PRG:2862 B5 7F - cmp #$04 ; CPU:$E864 PRG:2864 C9 04 - bcs UpdateObjectVelocity_Block_15 ; CPU:$E866 PRG:2866 B0 15 - lda $31,x ; CPU:$E868 PRG:2868 B5 31 - and #$02 ; CPU:$E86A PRG:286A 29 02 - beq UpdateObjectVelocity_Block_13 ; CPU:$E86C PRG:286C F0 04 - lda #$00 ; CPU:$E86E PRG:286E A9 00 - beq UpdateObjectVelocity_Block_14 ; CPU:$E870 PRG:2870 F0 08 + lda PlayerLifecycleState,x ; CPU:$E864 PRG:2864 B5 7F + cmp #$04 ; CPU:$E866 PRG:2866 C9 04 + bcs UpdateObjectVelocity_Block_15 ; CPU:$E868 PRG:2868 B0 15 + lda $31,x ; CPU:$E86A PRG:286A B5 31 + and #$02 ; CPU:$E86C PRG:286C 29 02 + beq UpdateObjectVelocity_Block_13 ; CPU:$E86E PRG:286E F0 04 + lda #$00 ; CPU:$E870 PRG:2870 A9 00 + beq UpdateObjectVelocity_Block_14 ; CPU:$E872 PRG:2872 F0 08 UpdateObjectVelocity_Block_13: - lda $31,x ; CPU:$E872 PRG:2872 B5 31 - and #$01 ; CPU:$E874 PRG:2874 29 01 - beq UpdateObjectVelocity_Block_15 ; CPU:$E876 PRG:2876 F0 05 - lda #$01 ; CPU:$E878 PRG:2878 A9 01 + lda $31,x ; CPU:$E874 PRG:2874 B5 31 + and #$01 ; CPU:$E876 PRG:2876 29 01 + beq UpdateObjectVelocity_Block_15 ; CPU:$E878 PRG:2878 F0 05 + lda #$01 ; CPU:$E87A PRG:287A A9 01 UpdateObjectVelocity_Block_14: - sta PlayerVariantTable,x ; CPU:$E87A PRG:287A 9D 48 04 + sta PlayerVariantTable,x ; CPU:$E87C PRG:287C 9D 48 04 UpdateObjectVelocity_Block_15: - lda PlayerLifecycleState,x ; CPU:$E87D PRG:287D B5 7F - cmp #$04 ; CPU:$E87F PRG:287F C9 04 - bcc UpdateObjectVelocity_Block_17 ; CPU:$E881 PRG:2881 90 33 - lda $0436,x ; CPU:$E883 PRG:2883 BD 36 04 - cmp #$01 ; CPU:$E886 PRG:2886 C9 01 - bne UpdateObjectVelocity_Block_17 ; CPU:$E888 PRG:2888 D0 2C - ldy PlayerAnimationState,x ; CPU:$E88A PRG:288A BC 51 04 - lda PlayerVariantTable,x ; CPU:$E88D PRG:288D BD 48 04 - beq UpdateObjectVelocity_Block_16 ; CPU:$E890 PRG:2890 F0 12 - lda $0424,x ; CPU:$E892 PRG:2892 BD 24 04 - sec ; CPU:$E895 PRG:2895 38 - sbc $E625,y ; CPU:$E896 PRG:2896 F9 25 E6 - sta $0424,x ; CPU:$E899 PRG:2899 9D 24 04 - lda PlayerVerticalImpulse,x ; CPU:$E89C PRG:289C BD 2D 04 - sbc #$00 ; CPU:$E89F PRG:289F E9 00 - jmp UpdateObjectVelocity_Store ; CPU:$E8A1 PRG:28A1 4C 01 E9 + lda PlayerLifecycleState,x ; CPU:$E87F PRG:287F B5 7F + cmp #$04 ; CPU:$E881 PRG:2881 C9 04 + bcc UpdateObjectVelocity_Block_17 ; CPU:$E883 PRG:2883 90 33 + lda $0436,x ; CPU:$E885 PRG:2885 BD 36 04 + cmp #$01 ; CPU:$E888 PRG:2888 C9 01 + bne UpdateObjectVelocity_Block_17 ; CPU:$E88A PRG:288A D0 2C + ldy PlayerAnimationState,x ; CPU:$E88C PRG:288C BC 51 04 + lda PlayerVariantTable,x ; CPU:$E88F PRG:288F BD 48 04 + beq UpdateObjectVelocity_Block_16 ; CPU:$E892 PRG:2892 F0 12 + lda $0424,x ; CPU:$E894 PRG:2894 BD 24 04 + sec ; CPU:$E897 PRG:2897 38 + sbc $E625,y ; CPU:$E898 PRG:2898 F9 25 E6 + sta $0424,x ; CPU:$E89B PRG:289B 9D 24 04 + lda PlayerVerticalImpulse,x ; CPU:$E89E PRG:289E BD 2D 04 + sbc #$00 ; CPU:$E8A1 PRG:28A1 E9 00 + jmp UpdateObjectVelocity_Store ; CPU:$E8A3 PRG:28A3 4C 01 E9 UpdateObjectVelocity_Block_16: - lda $0424,x ; CPU:$E8A4 PRG:28A4 BD 24 04 - clc ; CPU:$E8A7 PRG:28A7 18 - adc $E625,y ; CPU:$E8A8 PRG:28A8 79 25 E6 - sta $0424,x ; CPU:$E8AB PRG:28AB 9D 24 04 - lda PlayerVerticalImpulse,x ; CPU:$E8AE PRG:28AE BD 2D 04 - adc #$00 ; CPU:$E8B1 PRG:28B1 69 00 - jmp UpdateObjectVelocity_Store ; CPU:$E8B3 PRG:28B3 4C 01 E9 + lda $0424,x ; CPU:$E8A6 PRG:28A6 BD 24 04 + clc ; CPU:$E8A9 PRG:28A9 18 + adc $E625,y ; CPU:$E8AA PRG:28AA 79 25 E6 + sta $0424,x ; CPU:$E8AD PRG:28AD 9D 24 04 + lda PlayerVerticalImpulse,x ; CPU:$E8B0 PRG:28B0 BD 2D 04 + adc #$00 ; CPU:$E8B3 PRG:28B3 69 00 + jmp UpdateObjectVelocity_Store ; CPU:$E8B5 PRG:28B5 4C 01 E9 UpdateObjectVelocity_Block_17: - lda PlayerLifecycleState,x ; CPU:$E8B6 PRG:28B6 B5 7F - beq UpdateObjectVelocity_Block_18 ; CPU:$E8B8 PRG:28B8 F0 0B - cmp #$02 ; CPU:$E8BA PRG:28BA C9 02 - beq UpdateObjectVelocity_Block_21 ; CPU:$E8BC PRG:28BC F0 47 - cmp #$03 ; CPU:$E8BE PRG:28BE C9 03 - beq UpdateObjectVelocity_Block_18 ; CPU:$E8C0 PRG:28C0 F0 03 - jmp UpdateObjectVelocity_Load ; CPU:$E8C2 PRG:28C2 4C 51 E9 + lda PlayerLifecycleState,x ; CPU:$E8B8 PRG:28B8 B5 7F + beq UpdateObjectVelocity_Block_18 ; CPU:$E8BA PRG:28BA F0 0B + cmp #$02 ; CPU:$E8BC PRG:28BC C9 02 + beq UpdateObjectVelocity_Block_21 ; CPU:$E8BE PRG:28BE F0 47 + cmp #$03 ; CPU:$E8C0 PRG:28C0 C9 03 + beq UpdateObjectVelocity_Block_18 ; CPU:$E8C2 PRG:28C2 F0 03 + jmp UpdateObjectVelocity_Load ; CPU:$E8C4 PRG:28C4 4C 51 E9 UpdateObjectVelocity_Block_18: - lda $0436,x ; CPU:$E8C5 PRG:28C5 BD 36 04 - cmp #$01 ; CPU:$E8C8 PRG:28C8 C9 01 - beq UpdateObjectVelocity_Block_19 ; CPU:$E8CA PRG:28CA F0 03 - jmp UpdateObjectVelocity_Load ; CPU:$E8CC PRG:28CC 4C 51 E9 + lda $0436,x ; CPU:$E8C7 PRG:28C7 BD 36 04 + cmp #$01 ; CPU:$E8CA PRG:28CA C9 01 + beq UpdateObjectVelocity_Block_19 ; CPU:$E8CC PRG:28CC F0 03 + jmp UpdateObjectVelocity_Load ; CPU:$E8CE PRG:28CE 4C 51 E9 UpdateObjectVelocity_Block_19: - ldy PlayerAnimationState,x ; CPU:$E8CF PRG:28CF BC 51 04 - lda $31,x ; CPU:$E8D2 PRG:28D2 B5 31 - and #$02 ; CPU:$E8D4 PRG:28D4 29 02 - beq UpdateObjectVelocity_Block_20 ; CPU:$E8D6 PRG:28D6 F0 12 - lda $0424,x ; CPU:$E8D8 PRG:28D8 BD 24 04 - sec ; CPU:$E8DB PRG:28DB 38 - sbc $E619,y ; CPU:$E8DC PRG:28DC F9 19 E6 - sta $0424,x ; CPU:$E8DF PRG:28DF 9D 24 04 - lda PlayerVerticalImpulse,x ; CPU:$E8E2 PRG:28E2 BD 2D 04 - sbc #$00 ; CPU:$E8E5 PRG:28E5 E9 00 - jmp UpdateObjectVelocity_Store ; CPU:$E8E7 PRG:28E7 4C 01 E9 + ldy PlayerAnimationState,x ; CPU:$E8D1 PRG:28D1 BC 51 04 + lda $31,x ; CPU:$E8D4 PRG:28D4 B5 31 + and #$02 ; CPU:$E8D6 PRG:28D6 29 02 + beq UpdateObjectVelocity_Block_20 ; CPU:$E8D8 PRG:28D8 F0 12 + lda $0424,x ; CPU:$E8DA PRG:28DA BD 24 04 + sec ; CPU:$E8DD PRG:28DD 38 + sbc $E619,y ; CPU:$E8DE PRG:28DE F9 19 E6 + sta $0424,x ; CPU:$E8E1 PRG:28E1 9D 24 04 + lda PlayerVerticalImpulse,x ; CPU:$E8E4 PRG:28E4 BD 2D 04 + sbc #$00 ; CPU:$E8E7 PRG:28E7 E9 00 + jmp UpdateObjectVelocity_Store ; CPU:$E8E9 PRG:28E9 4C 01 E9 UpdateObjectVelocity_Block_20: - lda $31,x ; CPU:$E8EA PRG:28EA B5 31 - and #$01 ; CPU:$E8EC PRG:28EC 29 01 - beq UpdateObjectVelocity_Load ; CPU:$E8EE PRG:28EE F0 5F - lda $0424,x ; CPU:$E8F0 PRG:28F0 BD 24 04 - clc ; CPU:$E8F3 PRG:28F3 18 - adc $E619,y ; CPU:$E8F4 PRG:28F4 79 19 E6 - sta $0424,x ; CPU:$E8F7 PRG:28F7 9D 24 04 - lda PlayerVerticalImpulse,x ; CPU:$E8FA PRG:28FA BD 2D 04 - adc #$00 ; CPU:$E8FD PRG:28FD 69 00 + lda $31,x ; CPU:$E8EC PRG:28EC B5 31 + and #$01 ; CPU:$E8EE PRG:28EE 29 01 + beq UpdateObjectVelocity_Load ; CPU:$E8F0 PRG:28F0 F0 5F + lda $0424,x ; CPU:$E8F2 PRG:28F2 BD 24 04 + clc ; CPU:$E8F5 PRG:28F5 18 + adc $E619,y ; CPU:$E8F6 PRG:28F6 79 19 E6 + sta $0424,x ; CPU:$E8F9 PRG:28F9 9D 24 04 + lda PlayerVerticalImpulse,x ; CPU:$E8FC PRG:28FC BD 2D 04 + adc #$00 ; CPU:$E8FF PRG:28FF 69 00 UpdateObjectVelocity_Store: - sta PlayerVerticalImpulse,x ; CPU:$E8FF PRG:28FF 9D 2D 04 - jmp UpdateObjectVelocity_Load ; CPU:$E902 PRG:2902 4C 51 E9 + sta PlayerVerticalImpulse,x ; CPU:$E901 PRG:2901 9D 2D 04 + jmp UpdateObjectVelocity_Load ; CPU:$E904 PRG:2904 4C 51 E9 UpdateObjectVelocity_Block_21: - lda $0436,x ; CPU:$E905 PRG:2905 BD 36 04 - cmp #$01 ; CPU:$E908 PRG:2908 C9 01 - bne UpdateObjectVelocity_Load ; CPU:$E90A PRG:290A D0 43 - ldy PlayerAnimationState,x ; CPU:$E90C PRG:290C BC 51 04 - lda $31,x ; CPU:$E90F PRG:290F B5 31 - and #$02 ; CPU:$E911 PRG:2911 29 02 - beq UpdateObjectVelocity_Block_22 ; CPU:$E913 PRG:2913 F0 12 - lda $0424,x ; CPU:$E915 PRG:2915 BD 24 04 - sec ; CPU:$E918 PRG:2918 38 - sbc $E625,y ; CPU:$E919 PRG:2919 F9 25 E6 - sta $0424,x ; CPU:$E91C PRG:291C 9D 24 04 - lda PlayerVerticalImpulse,x ; CPU:$E91F PRG:291F BD 2D 04 - sbc #$00 ; CPU:$E922 PRG:2922 E9 00 - jmp UpdateObjectVelocity_Store_1 ; CPU:$E924 PRG:2924 4C 3E E9 + lda $0436,x ; CPU:$E907 PRG:2907 BD 36 04 + cmp #$01 ; CPU:$E90A PRG:290A C9 01 + bne UpdateObjectVelocity_Load ; CPU:$E90C PRG:290C D0 43 + ldy PlayerAnimationState,x ; CPU:$E90E PRG:290E BC 51 04 + lda $31,x ; CPU:$E911 PRG:2911 B5 31 + and #$02 ; CPU:$E913 PRG:2913 29 02 + beq UpdateObjectVelocity_Block_22 ; CPU:$E915 PRG:2915 F0 12 + lda $0424,x ; CPU:$E917 PRG:2917 BD 24 04 + sec ; CPU:$E91A PRG:291A 38 + sbc $E625,y ; CPU:$E91B PRG:291B F9 25 E6 + sta $0424,x ; CPU:$E91E PRG:291E 9D 24 04 + lda PlayerVerticalImpulse,x ; CPU:$E921 PRG:2921 BD 2D 04 + sbc #$00 ; CPU:$E924 PRG:2924 E9 00 + jmp UpdateObjectVelocity_Store_1 ; CPU:$E926 PRG:2926 4C 3E E9 UpdateObjectVelocity_Block_22: - lda $31,x ; CPU:$E927 PRG:2927 B5 31 - and #$01 ; CPU:$E929 PRG:2929 29 01 - beq UpdateObjectVelocity_Load ; CPU:$E92B PRG:292B F0 22 - lda $0424,x ; CPU:$E92D PRG:292D BD 24 04 - clc ; CPU:$E930 PRG:2930 18 - adc $E625,y ; CPU:$E931 PRG:2931 79 25 E6 - sta $0424,x ; CPU:$E934 PRG:2934 9D 24 04 - lda PlayerVerticalImpulse,x ; CPU:$E937 PRG:2937 BD 2D 04 - adc #$00 ; CPU:$E93A PRG:293A 69 00 + lda $31,x ; CPU:$E929 PRG:2929 B5 31 + and #$01 ; CPU:$E92B PRG:292B 29 01 + beq UpdateObjectVelocity_Load ; CPU:$E92D PRG:292D F0 22 + lda $0424,x ; CPU:$E92F PRG:292F BD 24 04 + clc ; CPU:$E932 PRG:2932 18 + adc $E625,y ; CPU:$E933 PRG:2933 79 25 E6 + sta $0424,x ; CPU:$E936 PRG:2936 9D 24 04 + lda PlayerVerticalImpulse,x ; CPU:$E939 PRG:2939 BD 2D 04 + adc #$00 ; CPU:$E93C PRG:293C 69 00 UpdateObjectVelocity_Store_1: - sta PlayerVerticalImpulse,x ; CPU:$E93C PRG:293C 9D 2D 04 - lda $31,x ; CPU:$E93F PRG:293F B5 31 - and #$03 ; CPU:$E941 PRG:2941 29 03 - beq UpdateObjectVelocity_Load ; CPU:$E943 PRG:2943 F0 0A - cpx #$02 ; CPU:$E945 PRG:2945 E0 02 - bcs UpdateObjectVelocity_Load ; CPU:$E947 PRG:2947 B0 06 - lda SoundRequestFlags0 ; CPU:$E949 PRG:2949 A5 F0 - ora #$08 ; CPU:$E94B PRG:294B 09 08 - sta SoundRequestFlags0 ; CPU:$E94D PRG:294D 85 F0 + sta PlayerVerticalImpulse,x ; CPU:$E93E PRG:293E 9D 2D 04 + lda $31,x ; CPU:$E941 PRG:2941 B5 31 + and #$03 ; CPU:$E943 PRG:2943 29 03 + beq UpdateObjectVelocity_Load ; CPU:$E945 PRG:2945 F0 0A + cpx #$02 ; CPU:$E947 PRG:2947 E0 02 + bcs UpdateObjectVelocity_Load ; CPU:$E949 PRG:2949 B0 06 + lda SoundRequestFlags0 ; CPU:$E94B PRG:294B A5 F0 + ora #$08 ; CPU:$E94D PRG:294D 09 08 + sta SoundRequestFlags0 ; CPU:$E94F PRG:294F 85 F0 UpdateObjectVelocity_Load: - lda PlayerLifecycleState,x ; CPU:$E94F PRG:294F B5 7F - cmp #$04 ; CPU:$E951 PRG:2951 C9 04 - bcc UpdateObjectVelocity_Block_26 ; CPU:$E953 PRG:2953 90 2B - lda PlayerVariantTable,x ; CPU:$E955 PRG:2955 BD 48 04 - bne UpdateObjectVelocity_Block_23 ; CPU:$E958 PRG:2958 D0 07 - lda PlayerVerticalImpulse,x ; CPU:$E95A PRG:295A BD 2D 04 - bmi UpdateObjectVelocity_Block_26 ; CPU:$E95D PRG:295D 30 21 - bpl UpdateObjectVelocity_Block_24 ; CPU:$E95F PRG:295F 10 05 + lda PlayerLifecycleState,x ; CPU:$E951 PRG:2951 B5 7F + cmp #$04 ; CPU:$E953 PRG:2953 C9 04 + bcc UpdateObjectVelocity_Block_26 ; CPU:$E955 PRG:2955 90 2B + lda PlayerVariantTable,x ; CPU:$E957 PRG:2957 BD 48 04 + bne UpdateObjectVelocity_Block_23 ; CPU:$E95A PRG:295A D0 07 + lda PlayerVerticalImpulse,x ; CPU:$E95C PRG:295C BD 2D 04 + bmi UpdateObjectVelocity_Block_26 ; CPU:$E95F PRG:295F 30 21 + bpl UpdateObjectVelocity_Block_24 ; CPU:$E961 PRG:2961 10 05 UpdateObjectVelocity_Block_23: - lda PlayerVerticalImpulse,x ; CPU:$E961 PRG:2961 BD 2D 04 - bpl UpdateObjectVelocity_Block_26 ; CPU:$E964 PRG:2964 10 1A + lda PlayerVerticalImpulse,x ; CPU:$E963 PRG:2963 BD 2D 04 + bpl UpdateObjectVelocity_Block_26 ; CPU:$E966 PRG:2966 10 1A UpdateObjectVelocity_Block_24: - lda PlayerLifecycleState,x ; CPU:$E966 PRG:2966 B5 7F - cmp #$05 ; CPU:$E968 PRG:2968 C9 05 - bne UpdateObjectVelocity_Block_25 ; CPU:$E96A PRG:296A D0 08 - lda PlayerVariantTable,x ; CPU:$E96C PRG:296C BD 48 04 - eor #$01 ; CPU:$E96F PRG:296F 49 01 - sta PlayerVariantTable,x ; CPU:$E971 PRG:2971 9D 48 04 + lda PlayerLifecycleState,x ; CPU:$E968 PRG:2968 B5 7F + cmp #$05 ; CPU:$E96A PRG:296A C9 05 + bne UpdateObjectVelocity_Block_25 ; CPU:$E96C PRG:296C D0 08 + lda PlayerVariantTable,x ; CPU:$E96E PRG:296E BD 48 04 + eor #$01 ; CPU:$E971 PRG:2971 49 01 + sta PlayerVariantTable,x ; CPU:$E973 PRG:2973 9D 48 04 UpdateObjectVelocity_Block_25: - lda #$03 ; CPU:$E974 PRG:2974 A9 03 - sta PlayerLifecycleState,x ; CPU:$E976 PRG:2976 95 7F - lda #$00 ; CPU:$E978 PRG:2978 A9 00 - sta $0424,x ; CPU:$E97A PRG:297A 9D 24 04 - sta PlayerVerticalImpulse,x ; CPU:$E97D PRG:297D 9D 2D 04 + lda #$03 ; CPU:$E976 PRG:2976 A9 03 + sta PlayerLifecycleState,x ; CPU:$E978 PRG:2978 95 7F + lda #$00 ; CPU:$E97A PRG:297A A9 00 + sta $0424,x ; CPU:$E97C PRG:297C 9D 24 04 + sta PlayerVerticalImpulse,x ; CPU:$E97F PRG:297F 9D 2D 04 UpdateObjectVelocity_Block_26: - rts ; CPU:$E980 PRG:2980 60 + rts ; CPU:$E982 PRG:2982 60 ; UpdateObjectFacingAndState ; Purpose: normalize movement/facing state using controller direction and object mode. ; Inputs: X = object slot. ; Returns: object state and facing fields updated. UpdateObjectFacingAndState: - lda BonusEffectCounter ; CPU:$E981 PRG:2981 A5 CB - bne UpdateObjectFacingAndState_Block_2 ; CPU:$E983 PRG:2983 D0 2F - lda PlayerCollisionDisable,x ; CPU:$E985 PRG:2985 B5 BD - beq UpdateObjectFacingAndState_Block ; CPU:$E987 PRG:2987 F0 0F - lda $0488 ; CPU:$E989 PRG:2989 AD 88 04 - beq UpdateObjectFacingAndState_Block ; CPU:$E98C PRG:298C F0 0A - sec ; CPU:$E98E PRG:298E 38 - sbc PlayerPosX,x ; CPU:$E98F PRG:298F F5 91 - jsr AbsoluteDifference ; CPU:$E991 PRG:2991 20 8E F0 - cmp #$05 ; CPU:$E994 PRG:2994 C9 05 - bcc UpdateObjectFacingAndState_Block_2 ; CPU:$E996 PRG:2996 90 1C + lda BonusEffectCounter ; CPU:$E983 PRG:2983 A5 CB + bne UpdateObjectFacingAndState_Block_2 ; CPU:$E985 PRG:2985 D0 2F + lda PlayerCollisionDisable,x ; CPU:$E987 PRG:2987 B5 BD + beq UpdateObjectFacingAndState_Block ; CPU:$E989 PRG:2989 F0 0F + lda $0488 ; CPU:$E98B PRG:298B AD 88 04 + beq UpdateObjectFacingAndState_Block ; CPU:$E98E PRG:298E F0 0A + sec ; CPU:$E990 PRG:2990 38 + sbc PlayerPosX,x ; CPU:$E991 PRG:2991 F5 91 + jsr AbsoluteDifference ; CPU:$E993 PRG:2993 20 8E F0 + cmp #$05 ; CPU:$E996 PRG:2996 C9 05 + bcc UpdateObjectFacingAndState_Block_2 ; CPU:$E998 PRG:2998 90 1C UpdateObjectFacingAndState_Block: - cpx #$02 ; CPU:$E998 PRG:2998 E0 02 - bcc UpdateObjectFacingAndState_Block_1 ; CPU:$E99A PRG:299A 90 06 - lda PlayerSlotState,x ; CPU:$E99C PRG:299C B5 88 - cmp #$02 ; CPU:$E99E PRG:299E C9 02 - bne UpdateObjectFacingAndState_Block_3 ; CPU:$E9A0 PRG:29A0 D0 4E + cpx #$02 ; CPU:$E99A PRG:299A E0 02 + bcc UpdateObjectFacingAndState_Block_1 ; CPU:$E99C PRG:299C 90 06 + lda PlayerSlotState,x ; CPU:$E99E PRG:299E B5 88 + cmp #$02 ; CPU:$E9A0 PRG:29A0 C9 02 + bne UpdateObjectFacingAndState_Block_3 ; CPU:$E9A2 PRG:29A2 D0 4E UpdateObjectFacingAndState_Block_1: - lda PlayerLifecycleState,x ; CPU:$E9A2 PRG:29A2 B5 7F - cmp #$02 ; CPU:$E9A4 PRG:29A4 C9 02 - bcc UpdateObjectFacingAndState_Block_3 ; CPU:$E9A6 PRG:29A6 90 48 - cmp #$06 ; CPU:$E9A8 PRG:29A8 C9 06 - bcs UpdateObjectFacingAndState_Block_3 ; CPU:$E9AA PRG:29AA B0 44 - lda #$01 ; CPU:$E9AC PRG:29AC A9 01 - sta PlayerLifecycleState,x ; CPU:$E9AE PRG:29AE 95 7F - sta PlayerStateTimer,x ; CPU:$E9B0 PRG:29B0 9D 5A 04 - rts ; CPU:$E9B3 PRG:29B3 60 + lda PlayerLifecycleState,x ; CPU:$E9A4 PRG:29A4 B5 7F + cmp #$02 ; CPU:$E9A6 PRG:29A6 C9 02 + bcc UpdateObjectFacingAndState_Block_3 ; CPU:$E9A8 PRG:29A8 90 48 + cmp #$06 ; CPU:$E9AA PRG:29AA C9 06 + bcs UpdateObjectFacingAndState_Block_3 ; CPU:$E9AC PRG:29AC B0 44 + lda #$01 ; CPU:$E9AE PRG:29AE A9 01 + sta PlayerLifecycleState,x ; CPU:$E9B0 PRG:29B0 95 7F + sta PlayerStateTimer,x ; CPU:$E9B2 PRG:29B2 9D 5A 04 + rts ; CPU:$E9B5 PRG:29B5 60 UpdateObjectFacingAndState_Block_2: - lda #$00 ; CPU:$E9B4 PRG:29B4 A9 00 - sta $0412,x ; CPU:$E9B6 PRG:29B6 9D 12 04 - sta PlayerHorizontalImpulse,x ; CPU:$E9B9 PRG:29B9 9D 1B 04 - sta $0409,x ; CPU:$E9BC PRG:29BC 9D 09 04 - sta BonusEffectCounter ; CPU:$E9BF PRG:29BF 85 CB - cpx #$02 ; CPU:$E9C1 PRG:29C1 E0 02 - bcc UpdateObjectFacingAndState_Block_5 ; CPU:$E9C3 PRG:29C3 90 36 - lda PlayerSlotState,x ; CPU:$E9C5 PRG:29C5 B5 88 - cmp #$02 ; CPU:$E9C7 PRG:29C7 C9 02 - beq UpdateObjectFacingAndState_Block_4 ; CPU:$E9C9 PRG:29C9 F0 26 - cmp #$01 ; CPU:$E9CB PRG:29CB C9 01 - bne UpdateObjectFacingAndState_Block_3 ; CPU:$E9CD PRG:29CD D0 21 - lda PlayerLifecycleState,x ; CPU:$E9CF PRG:29CF B5 7F - cmp #$02 ; CPU:$E9D1 PRG:29D1 C9 02 - bcs UpdateObjectFacingAndState_Block_3 ; CPU:$E9D3 PRG:29D3 B0 1B - lda #$02 ; CPU:$E9D5 PRG:29D5 A9 02 - sta PlayerLifecycleState,x ; CPU:$E9D7 PRG:29D7 95 7F - lda $C6 ; CPU:$E9D9 PRG:29D9 A5 C6 - sta $043F,x ; CPU:$E9DB PRG:29DB 9D 3F 04 - lda #$00 ; CPU:$E9DE PRG:29DE A9 00 - sta $0424,x ; CPU:$E9E0 PRG:29E0 9D 24 04 - sta PlayerVerticalImpulse,x ; CPU:$E9E3 PRG:29E3 9D 2D 04 - sta $0463,x ; CPU:$E9E6 PRG:29E6 9D 63 04 - sta $046C,x ; CPU:$E9E9 PRG:29E9 9D 6C 04 - lda #$40 ; CPU:$E9EC PRG:29EC A9 40 - sta SoundRequestFlags1 ; CPU:$E9EE PRG:29EE 85 F1 + lda #$00 ; CPU:$E9B6 PRG:29B6 A9 00 + sta $0412,x ; CPU:$E9B8 PRG:29B8 9D 12 04 + sta PlayerHorizontalImpulse,x ; CPU:$E9BB PRG:29BB 9D 1B 04 + sta $0409,x ; CPU:$E9BE PRG:29BE 9D 09 04 + sta BonusEffectCounter ; CPU:$E9C1 PRG:29C1 85 CB + cpx #$02 ; CPU:$E9C3 PRG:29C3 E0 02 + bcc UpdateObjectFacingAndState_Block_5 ; CPU:$E9C5 PRG:29C5 90 36 + lda PlayerSlotState,x ; CPU:$E9C7 PRG:29C7 B5 88 + cmp #$02 ; CPU:$E9C9 PRG:29C9 C9 02 + beq UpdateObjectFacingAndState_Block_4 ; CPU:$E9CB PRG:29CB F0 26 + cmp #$01 ; CPU:$E9CD PRG:29CD C9 01 + bne UpdateObjectFacingAndState_Block_3 ; CPU:$E9CF PRG:29CF D0 21 + lda PlayerLifecycleState,x ; CPU:$E9D1 PRG:29D1 B5 7F + cmp #$02 ; CPU:$E9D3 PRG:29D3 C9 02 + bcs UpdateObjectFacingAndState_Block_3 ; CPU:$E9D5 PRG:29D5 B0 1B + lda #$02 ; CPU:$E9D7 PRG:29D7 A9 02 + sta PlayerLifecycleState,x ; CPU:$E9D9 PRG:29D9 95 7F + lda $C6 ; CPU:$E9DB PRG:29DB A5 C6 + sta $043F,x ; CPU:$E9DD PRG:29DD 9D 3F 04 + lda #$00 ; CPU:$E9E0 PRG:29E0 A9 00 + sta $0424,x ; CPU:$E9E2 PRG:29E2 9D 24 04 + sta PlayerVerticalImpulse,x ; CPU:$E9E5 PRG:29E5 9D 2D 04 + sta $0463,x ; CPU:$E9E8 PRG:29E8 9D 63 04 + sta $046C,x ; CPU:$E9EB PRG:29EB 9D 6C 04 + lda #$40 ; CPU:$E9EE PRG:29EE A9 40 + sta SoundRequestFlags1 ; CPU:$E9F0 PRG:29F0 85 F1 UpdateObjectFacingAndState_Block_3: - rts ; CPU:$E9F0 PRG:29F0 60 + rts ; CPU:$E9F2 PRG:29F2 60 UpdateObjectFacingAndState_Block_4: - lda #$00 ; CPU:$E9F1 PRG:29F1 A9 00 - sta PlayerLifecycleState,x ; CPU:$E9F3 PRG:29F3 95 7F - lda #$01 ; CPU:$E9F5 PRG:29F5 A9 01 - sta PlayerStateTimer,x ; CPU:$E9F7 PRG:29F7 9D 5A 04 - rts ; CPU:$E9FA PRG:29FA 60 + lda #$00 ; CPU:$E9F3 PRG:29F3 A9 00 + sta PlayerLifecycleState,x ; CPU:$E9F5 PRG:29F5 95 7F + lda #$01 ; CPU:$E9F7 PRG:29F7 A9 01 + sta PlayerStateTimer,x ; CPU:$E9F9 PRG:29F9 9D 5A 04 + rts ; CPU:$E9FC PRG:29FC 60 UpdateObjectFacingAndState_Block_5: - lda PlayerLifecycleState,x ; CPU:$E9FB PRG:29FB B5 7F - cmp #$01 ; CPU:$E9FD PRG:29FD C9 01 - bne UpdateObjectFacingAndState_Block_8 ; CPU:$E9FF PRG:29FF D0 14 - cmp #$06 ; CPU:$EA01 PRG:2A01 C9 06 - bcs UpdateObjectFacingAndState_Block_8 ; CPU:$EA03 PRG:2A03 B0 10 - lda $0424,x ; CPU:$EA05 PRG:2A05 BD 24 04 - ora PlayerVerticalImpulse,x ; CPU:$EA08 PRG:2A08 1D 2D 04 - bne UpdateObjectFacingAndState_Block_6 ; CPU:$EA0B PRG:2A0B D0 04 - lda #$03 ; CPU:$EA0D PRG:2A0D A9 03 - bne UpdateObjectFacingAndState_Block_7 ; CPU:$EA0F PRG:2A0F D0 02 + lda PlayerLifecycleState,x ; CPU:$E9FD PRG:29FD B5 7F + cmp #$01 ; CPU:$E9FF PRG:29FF C9 01 + bne UpdateObjectFacingAndState_Block_8 ; CPU:$EA01 PRG:2A01 D0 14 + cmp #$06 ; CPU:$EA03 PRG:2A03 C9 06 + bcs UpdateObjectFacingAndState_Block_8 ; CPU:$EA05 PRG:2A05 B0 10 + lda $0424,x ; CPU:$EA07 PRG:2A07 BD 24 04 + ora PlayerVerticalImpulse,x ; CPU:$EA0A PRG:2A0A 1D 2D 04 + bne UpdateObjectFacingAndState_Block_6 ; CPU:$EA0D PRG:2A0D D0 04 + lda #$03 ; CPU:$EA0F PRG:2A0F A9 03 + bne UpdateObjectFacingAndState_Block_7 ; CPU:$EA11 PRG:2A11 D0 02 UpdateObjectFacingAndState_Block_6: - lda #$02 ; CPU:$EA11 PRG:2A11 A9 02 + lda #$02 ; CPU:$EA13 PRG:2A13 A9 02 UpdateObjectFacingAndState_Block_7: - sta PlayerLifecycleState,x ; CPU:$EA13 PRG:2A13 95 7F + sta PlayerLifecycleState,x ; CPU:$EA15 PRG:2A15 95 7F UpdateObjectFacingAndState_Block_8: - rts ; CPU:$EA15 PRG:2A15 60 + rts ; CPU:$EA17 PRG:2A17 60 ; ApplyObjectHorizontalMotion ; Purpose: clamp and integrate horizontal fixed-point velocity. ; Inputs: X = object slot. ; Returns: horizontal position/velocity updated; may deactivate escaped objects. ApplyObjectHorizontalMotion: - cpx #$02 ; CPU:$EA16 PRG:2A16 E0 02 - bcs ApplyObjectHorizontalMotion_Block ; CPU:$EA18 PRG:2A18 B0 10 - lda PlayerCollisionDisable,x ; CPU:$EA1A PRG:2A1A B5 BD - bne ApplyObjectHorizontalMotion_Block_2 ; CPU:$EA1C PRG:2A1C D0 24 - lda PlayerLifecycleState,x ; CPU:$EA1E PRG:2A1E B5 7F - cmp #$01 ; CPU:$EA20 PRG:2A20 C9 01 - beq ApplyObjectHorizontalMotion_Block_1 ; CPU:$EA22 PRG:2A22 F0 18 - cmp #$03 ; CPU:$EA24 PRG:2A24 C9 03 - bne ApplyObjectHorizontalMotion_Block_2 ; CPU:$EA26 PRG:2A26 D0 1A - beq ApplyObjectHorizontalMotion_Block_1 ; CPU:$EA28 PRG:2A28 F0 12 + cpx #$02 ; CPU:$EA18 PRG:2A18 E0 02 + bcs ApplyObjectHorizontalMotion_Block ; CPU:$EA1A PRG:2A1A B0 10 + lda PlayerCollisionDisable,x ; CPU:$EA1C PRG:2A1C B5 BD + bne ApplyObjectHorizontalMotion_Block_2 ; CPU:$EA1E PRG:2A1E D0 24 + lda PlayerLifecycleState,x ; CPU:$EA20 PRG:2A20 B5 7F + cmp #$01 ; CPU:$EA22 PRG:2A22 C9 01 + beq ApplyObjectHorizontalMotion_Block_1 ; CPU:$EA24 PRG:2A24 F0 18 + cmp #$03 ; CPU:$EA26 PRG:2A26 C9 03 + bne ApplyObjectHorizontalMotion_Block_2 ; CPU:$EA28 PRG:2A28 D0 1A + beq ApplyObjectHorizontalMotion_Block_1 ; CPU:$EA2A PRG:2A2A F0 12 ApplyObjectHorizontalMotion_Block: - lda PlayerLifecycleState,x ; CPU:$EA2A PRG:2A2A B5 7F - cmp #$01 ; CPU:$EA2C PRG:2A2C C9 01 - beq ApplyObjectHorizontalMotion_Block_1 ; CPU:$EA2E PRG:2A2E F0 0C - cmp #$03 ; CPU:$EA30 PRG:2A30 C9 03 - bcc ApplyObjectHorizontalMotion_Block_2 ; CPU:$EA32 PRG:2A32 90 0E - lda FrameCounter ; CPU:$EA34 PRG:2A34 A5 19 - and #$03 ; CPU:$EA36 PRG:2A36 29 03 - bne ApplyObjectHorizontalMotion_Block_3 ; CPU:$EA38 PRG:2A38 D0 0B - beq ApplyObjectHorizontalMotion_Block_2 ; CPU:$EA3A PRG:2A3A F0 06 + lda PlayerLifecycleState,x ; CPU:$EA2C PRG:2A2C B5 7F + cmp #$01 ; CPU:$EA2E PRG:2A2E C9 01 + beq ApplyObjectHorizontalMotion_Block_1 ; CPU:$EA30 PRG:2A30 F0 0C + cmp #$03 ; CPU:$EA32 PRG:2A32 C9 03 + bcc ApplyObjectHorizontalMotion_Block_2 ; CPU:$EA34 PRG:2A34 90 0E + lda FrameCounter ; CPU:$EA36 PRG:2A36 A5 19 + and #$03 ; CPU:$EA38 PRG:2A38 29 03 + bne ApplyObjectHorizontalMotion_Block_3 ; CPU:$EA3A PRG:2A3A D0 0B + beq ApplyObjectHorizontalMotion_Block_2 ; CPU:$EA3C PRG:2A3C F0 06 ApplyObjectHorizontalMotion_Block_1: - lda FrameCounter ; CPU:$EA3C PRG:2A3C A5 19 - and #$07 ; CPU:$EA3E PRG:2A3E 29 07 - bne ApplyObjectHorizontalMotion_Block_3 ; CPU:$EA40 PRG:2A40 D0 03 + lda FrameCounter ; CPU:$EA3E PRG:2A3E A5 19 + and #$07 ; CPU:$EA40 PRG:2A40 29 07 + bne ApplyObjectHorizontalMotion_Block_3 ; CPU:$EA42 PRG:2A42 D0 03 ApplyObjectHorizontalMotion_Block_2: - inc $0436,x ; CPU:$EA42 PRG:2A42 FE 36 04 + inc $0436,x ; CPU:$EA44 PRG:2A44 FE 36 04 ApplyObjectHorizontalMotion_Block_3: - lda $0436,x ; CPU:$EA45 PRG:2A45 BD 36 04 - and #$03 ; CPU:$EA48 PRG:2A48 29 03 - sta $0436,x ; CPU:$EA4A PRG:2A4A 9D 36 04 - bne ApplyObjectHorizontalMotion_Block_4 ; CPU:$EA4D PRG:2A4D D0 06 - lda PlayerLifecycleState,x ; CPU:$EA4F PRG:2A4F B5 7F - bne ApplyObjectHorizontalMotion_Block_4 ; CPU:$EA51 PRG:2A51 D0 02 - inc PlayerLifecycleState,x ; CPU:$EA53 PRG:2A53 F6 7F + lda $0436,x ; CPU:$EA47 PRG:2A47 BD 36 04 + and #$03 ; CPU:$EA4A PRG:2A4A 29 03 + sta $0436,x ; CPU:$EA4C PRG:2A4C 9D 36 04 + bne ApplyObjectHorizontalMotion_Block_4 ; CPU:$EA4F PRG:2A4F D0 06 + lda PlayerLifecycleState,x ; CPU:$EA51 PRG:2A51 B5 7F + bne ApplyObjectHorizontalMotion_Block_4 ; CPU:$EA53 PRG:2A53 D0 02 + inc PlayerLifecycleState,x ; CPU:$EA55 PRG:2A55 F6 7F ApplyObjectHorizontalMotion_Block_4: - rts ; CPU:$EA55 PRG:2A55 60 + rts ; CPU:$EA57 PRG:2A57 60 ; ApplyObjectVerticalMotion ; Purpose: clamp and integrate vertical fixed-point velocity. ; Inputs: X = object slot. ; Returns: vertical position/velocity updated; may trigger object removal. ApplyObjectVerticalMotion: - lda $0475,x ; CPU:$EA56 PRG:2A56 BD 75 04 - beq ApplyObjectVerticalMotion_Block ; CPU:$EA59 PRG:2A59 F0 03 - dec $0475,x ; CPU:$EA5B PRG:2A5B DE 75 04 + lda $0475,x ; CPU:$EA58 PRG:2A58 BD 75 04 + beq ApplyObjectVerticalMotion_Block ; CPU:$EA5B PRG:2A5B F0 03 + dec $0475,x ; CPU:$EA5D PRG:2A5D DE 75 04 ApplyObjectVerticalMotion_Block: - cpx #$02 ; CPU:$EA5E PRG:2A5E E0 02 - bcs ApplyObjectVerticalMotion_Block_2 ; CPU:$EA60 PRG:2A60 B0 28 - lda $C1,x ; CPU:$EA62 PRG:2A62 B5 C1 - beq ApplyObjectVerticalMotion_Block_2 ; CPU:$EA64 PRG:2A64 F0 24 - lda FrameCounter ; CPU:$EA66 PRG:2A66 A5 19 - lsr a ; CPU:$EA68 PRG:2A68 4A - bcc ApplyObjectVerticalMotion_Block_1 ; CPU:$EA69 PRG:2A69 90 1E - inc $0436,x ; CPU:$EA6B PRG:2A6B FE 36 04 - lda $0436,x ; CPU:$EA6E PRG:2A6E BD 36 04 - and #$03 ; CPU:$EA71 PRG:2A71 29 03 - sta $0436,x ; CPU:$EA73 PRG:2A73 9D 36 04 - lda #$01 ; CPU:$EA76 PRG:2A76 A9 01 - sta PlayerLifecycleState,x ; CPU:$EA78 PRG:2A78 95 7F - dec PlayerStateTimer,x ; CPU:$EA7A PRG:2A7A DE 5A 04 - bne ApplyObjectVerticalMotion_Block_1 ; CPU:$EA7D PRG:2A7D D0 0A - lda #$00 ; CPU:$EA7F PRG:2A7F A9 00 - sta $C1,x ; CPU:$EA81 PRG:2A81 95 C1 - sta PlayerLifecycleState,x ; CPU:$EA83 PRG:2A83 95 7F - lda #$20 ; CPU:$EA85 PRG:2A85 A9 20 - sta SoundRequestFlags0 ; CPU:$EA87 PRG:2A87 85 F0 + cpx #$02 ; CPU:$EA60 PRG:2A60 E0 02 + bcs ApplyObjectVerticalMotion_Block_2 ; CPU:$EA62 PRG:2A62 B0 28 + lda $C1,x ; CPU:$EA64 PRG:2A64 B5 C1 + beq ApplyObjectVerticalMotion_Block_2 ; CPU:$EA66 PRG:2A66 F0 24 + lda FrameCounter ; CPU:$EA68 PRG:2A68 A5 19 + lsr a ; CPU:$EA6A PRG:2A6A 4A + bcc ApplyObjectVerticalMotion_Block_1 ; CPU:$EA6B PRG:2A6B 90 1E + inc $0436,x ; CPU:$EA6D PRG:2A6D FE 36 04 + lda $0436,x ; CPU:$EA70 PRG:2A70 BD 36 04 + and #$03 ; CPU:$EA73 PRG:2A73 29 03 + sta $0436,x ; CPU:$EA75 PRG:2A75 9D 36 04 + lda #$01 ; CPU:$EA78 PRG:2A78 A9 01 + sta PlayerLifecycleState,x ; CPU:$EA7A PRG:2A7A 95 7F + dec PlayerStateTimer,x ; CPU:$EA7C PRG:2A7C DE 5A 04 + bne ApplyObjectVerticalMotion_Block_1 ; CPU:$EA7F PRG:2A7F D0 0A + lda #$00 ; CPU:$EA81 PRG:2A81 A9 00 + sta $C1,x ; CPU:$EA83 PRG:2A83 95 C1 + sta PlayerLifecycleState,x ; CPU:$EA85 PRG:2A85 95 7F + lda #$20 ; CPU:$EA87 PRG:2A87 A9 20 + sta SoundRequestFlags0 ; CPU:$EA89 PRG:2A89 85 F0 ApplyObjectVerticalMotion_Block_1: - rts ; CPU:$EA89 PRG:2A89 60 + rts ; CPU:$EA8B PRG:2A8B 60 ApplyObjectVerticalMotion_Block_2: - lda $0412,x ; CPU:$EA8A PRG:2A8A BD 12 04 - clc ; CPU:$EA8D PRG:2A8D 18 - ldy PlayerAnimationState,x ; CPU:$EA8E PRG:2A8E BC 51 04 - adc $E601,y ; CPU:$EA91 PRG:2A91 79 01 E6 - sta $0412,x ; CPU:$EA94 PRG:2A94 9D 12 04 - bcc ApplyObjectVerticalMotion_Block_3 ; CPU:$EA97 PRG:2A97 90 03 - inc PlayerHorizontalImpulse,x ; CPU:$EA99 PRG:2A99 FE 1B 04 + lda $0412,x ; CPU:$EA8C PRG:2A8C BD 12 04 + clc ; CPU:$EA8F PRG:2A8F 18 + ldy PlayerAnimationState,x ; CPU:$EA90 PRG:2A90 BC 51 04 + adc $E601,y ; CPU:$EA93 PRG:2A93 79 01 E6 + sta $0412,x ; CPU:$EA96 PRG:2A96 9D 12 04 + bcc ApplyObjectVerticalMotion_Block_3 ; CPU:$EA99 PRG:2A99 90 03 + inc PlayerHorizontalImpulse,x ; CPU:$EA9B PRG:2A9B FE 1B 04 ApplyObjectVerticalMotion_Block_3: - lda PlayerHorizontalImpulse,x ; CPU:$EA9C PRG:2A9C BD 1B 04 - bmi ApplyObjectVerticalMotion_Block_5 ; CPU:$EA9F PRG:2A9F 30 1E - cmp $E66D,y ; CPU:$EAA1 PRG:2AA1 D9 6D E6 - bcc ApplyObjectVerticalMotion_Block_7 ; CPU:$EAA4 PRG:2AA4 90 34 - bne ApplyObjectVerticalMotion_Block_4 ; CPU:$EAA6 PRG:2AA6 D0 08 - lda $0412,x ; CPU:$EAA8 PRG:2AA8 BD 12 04 - cmp $E661,y ; CPU:$EAAB PRG:2AAB D9 61 E6 - bcc ApplyObjectVerticalMotion_Block_7 ; CPU:$EAAE PRG:2AAE 90 2A + lda PlayerHorizontalImpulse,x ; CPU:$EA9E PRG:2A9E BD 1B 04 + bmi ApplyObjectVerticalMotion_Block_5 ; CPU:$EAA1 PRG:2AA1 30 1E + cmp $E66D,y ; CPU:$EAA3 PRG:2AA3 D9 6D E6 + bcc ApplyObjectVerticalMotion_Block_7 ; CPU:$EAA6 PRG:2AA6 90 34 + bne ApplyObjectVerticalMotion_Block_4 ; CPU:$EAA8 PRG:2AA8 D0 08 + lda $0412,x ; CPU:$EAAA PRG:2AAA BD 12 04 + cmp $E661,y ; CPU:$EAAD PRG:2AAD D9 61 E6 + bcc ApplyObjectVerticalMotion_Block_7 ; CPU:$EAB0 PRG:2AB0 90 2A ApplyObjectVerticalMotion_Block_4: - lda $E661,y ; CPU:$EAB0 PRG:2AB0 B9 61 E6 - sta $0412,x ; CPU:$EAB3 PRG:2AB3 9D 12 04 - lda $E66D,y ; CPU:$EAB6 PRG:2AB6 B9 6D E6 - sta PlayerHorizontalImpulse,x ; CPU:$EAB9 PRG:2AB9 9D 1B 04 - jmp ApplyObjectVerticalMotion_Block_7 ; CPU:$EABC PRG:2ABC 4C DC EA + lda $E661,y ; CPU:$EAB2 PRG:2AB2 B9 61 E6 + sta $0412,x ; CPU:$EAB5 PRG:2AB5 9D 12 04 + lda $E66D,y ; CPU:$EAB8 PRG:2AB8 B9 6D E6 + sta PlayerHorizontalImpulse,x ; CPU:$EABB PRG:2ABB 9D 1B 04 + jmp ApplyObjectVerticalMotion_Block_7 ; CPU:$EABE PRG:2ABE 4C DC EA ApplyObjectVerticalMotion_Block_5: - cmp $E685,y ; CPU:$EABF PRG:2ABF D9 85 E6 - bcc ApplyObjectVerticalMotion_Block_6 ; CPU:$EAC2 PRG:2AC2 90 0A - bne ApplyObjectVerticalMotion_Block_7 ; CPU:$EAC4 PRG:2AC4 D0 14 - lda $0412,x ; CPU:$EAC6 PRG:2AC6 BD 12 04 - cmp $E679,y ; CPU:$EAC9 PRG:2AC9 D9 79 E6 - bcs ApplyObjectVerticalMotion_Block_7 ; CPU:$EACC PRG:2ACC B0 0C + cmp $E685,y ; CPU:$EAC1 PRG:2AC1 D9 85 E6 + bcc ApplyObjectVerticalMotion_Block_6 ; CPU:$EAC4 PRG:2AC4 90 0A + bne ApplyObjectVerticalMotion_Block_7 ; CPU:$EAC6 PRG:2AC6 D0 14 + lda $0412,x ; CPU:$EAC8 PRG:2AC8 BD 12 04 + cmp $E679,y ; CPU:$EACB PRG:2ACB D9 79 E6 + bcs ApplyObjectVerticalMotion_Block_7 ; CPU:$EACE PRG:2ACE B0 0C ApplyObjectVerticalMotion_Block_6: - lda $E679,y ; CPU:$EACE PRG:2ACE B9 79 E6 - sta $0412,x ; CPU:$EAD1 PRG:2AD1 9D 12 04 - lda $E685,y ; CPU:$EAD4 PRG:2AD4 B9 85 E6 - sta PlayerHorizontalImpulse,x ; CPU:$EAD7 PRG:2AD7 9D 1B 04 + lda $E679,y ; CPU:$EAD0 PRG:2AD0 B9 79 E6 + sta $0412,x ; CPU:$EAD3 PRG:2AD3 9D 12 04 + lda $E685,y ; CPU:$EAD6 PRG:2AD6 B9 85 E6 + sta PlayerHorizontalImpulse,x ; CPU:$EAD9 PRG:2AD9 9D 1B 04 ApplyObjectVerticalMotion_Block_7: - jsr IntegrateVerticalPosition ; CPU:$EADA PRG:2ADA 20 A0 EB - cmp #$F8 ; CPU:$EADD PRG:2ADD C9 F8 - bcs ApplyObjectVerticalMotion_Block_9 ; CPU:$EADF PRG:2ADF B0 2A - cmp #$E8 ; CPU:$EAE1 PRG:2AE1 C9 E8 - bcc ApplyObjectVerticalMotion_Block_9 ; CPU:$EAE3 PRG:2AE3 90 26 - lda #$FF ; CPU:$EAE5 PRG:2AE5 A9 FF - sta PlayerSlotState,x ; CPU:$EAE7 PRG:2AE7 95 88 - lda #$04 ; CPU:$EAE9 PRG:2AE9 A9 04 - sta $BB ; CPU:$EAEB PRG:2AEB 85 BB - lda PlayerPosX,x ; CPU:$EAED PRG:2AED B5 91 - sta $BC ; CPU:$EAEF PRG:2AEF 85 BC - cpx #$02 ; CPU:$EAF1 PRG:2AF1 E0 02 - bcc ApplyObjectVerticalMotion_Block_8 ; CPU:$EAF3 PRG:2AF3 90 0E - lda #$80 ; CPU:$EAF5 PRG:2AF5 A9 80 - sta PlayerSlotState,x ; CPU:$EAF7 PRG:2AF7 95 88 - lda #$00 ; CPU:$EAF9 PRG:2AF9 A9 00 - sta PlayerLifecycleState,x ; CPU:$EAFB PRG:2AFB 95 7F - lda #$01 ; CPU:$EAFD PRG:2AFD A9 01 - sta SoundRequestFlags3 ; CPU:$EAFF PRG:2AFF 85 F3 - bne ApplyObjectVerticalMotion_Block_9 ; CPU:$EB01 PRG:2B01 D0 08 + jsr IntegrateVerticalPosition ; CPU:$EADC PRG:2ADC 20 A0 EB + cmp #$F8 ; CPU:$EADF PRG:2ADF C9 F8 + bcs ApplyObjectVerticalMotion_Block_9 ; CPU:$EAE1 PRG:2AE1 B0 2A + cmp #$E8 ; CPU:$EAE3 PRG:2AE3 C9 E8 + bcc ApplyObjectVerticalMotion_Block_9 ; CPU:$EAE5 PRG:2AE5 90 26 + lda #$FF ; CPU:$EAE7 PRG:2AE7 A9 FF + sta PlayerSlotState,x ; CPU:$EAE9 PRG:2AE9 95 88 + lda #$04 ; CPU:$EAEB PRG:2AEB A9 04 + sta $BB ; CPU:$EAED PRG:2AED 85 BB + lda PlayerPosX,x ; CPU:$EAEF PRG:2AEF B5 91 + sta $BC ; CPU:$EAF1 PRG:2AF1 85 BC + cpx #$02 ; CPU:$EAF3 PRG:2AF3 E0 02 + bcc ApplyObjectVerticalMotion_Block_8 ; CPU:$EAF5 PRG:2AF5 90 0E + lda #$80 ; CPU:$EAF7 PRG:2AF7 A9 80 + sta PlayerSlotState,x ; CPU:$EAF9 PRG:2AF9 95 88 + lda #$00 ; CPU:$EAFB PRG:2AFB A9 00 + sta PlayerLifecycleState,x ; CPU:$EAFD PRG:2AFD 95 7F + lda #$01 ; CPU:$EAFF PRG:2AFF A9 01 + sta SoundRequestFlags3 ; CPU:$EB01 PRG:2B01 85 F3 + bne ApplyObjectVerticalMotion_Block_9 ; CPU:$EB03 PRG:2B03 D0 08 ApplyObjectVerticalMotion_Block_8: - lda $C8 ; CPU:$EB03 PRG:2B03 A5 C8 - bne ApplyObjectVerticalMotion_Block_9 ; CPU:$EB05 PRG:2B05 D0 04 - lda #$40 ; CPU:$EB07 PRG:2B07 A9 40 - sta SoundRequestFlags0 ; CPU:$EB09 PRG:2B09 85 F0 + lda $C8 ; CPU:$EB05 PRG:2B05 A5 C8 + bne ApplyObjectVerticalMotion_Block_9 ; CPU:$EB07 PRG:2B07 D0 04 + lda #$40 ; CPU:$EB09 PRG:2B09 A9 40 + sta SoundRequestFlags0 ; CPU:$EB0B PRG:2B0B 85 F0 ApplyObjectVerticalMotion_Block_9: - lda PlayerVerticalImpulse,x ; CPU:$EB0B PRG:2B0B BD 2D 04 - bmi ApplyObjectVerticalMotion_Block_11 ; CPU:$EB0E PRG:2B0E 30 1E - cmp $E63D,y ; CPU:$EB10 PRG:2B10 D9 3D E6 - bcc ApplyObjectVerticalMotion_Block_13 ; CPU:$EB13 PRG:2B13 90 34 - bne ApplyObjectVerticalMotion_Block_10 ; CPU:$EB15 PRG:2B15 D0 08 - lda $0424,x ; CPU:$EB17 PRG:2B17 BD 24 04 - cmp $E631,y ; CPU:$EB1A PRG:2B1A D9 31 E6 - bcc ApplyObjectVerticalMotion_Block_13 ; CPU:$EB1D PRG:2B1D 90 2A + lda PlayerVerticalImpulse,x ; CPU:$EB0D PRG:2B0D BD 2D 04 + bmi ApplyObjectVerticalMotion_Block_11 ; CPU:$EB10 PRG:2B10 30 1E + cmp $E63D,y ; CPU:$EB12 PRG:2B12 D9 3D E6 + bcc ApplyObjectVerticalMotion_Block_13 ; CPU:$EB15 PRG:2B15 90 34 + bne ApplyObjectVerticalMotion_Block_10 ; CPU:$EB17 PRG:2B17 D0 08 + lda $0424,x ; CPU:$EB19 PRG:2B19 BD 24 04 + cmp $E631,y ; CPU:$EB1C PRG:2B1C D9 31 E6 + bcc ApplyObjectVerticalMotion_Block_13 ; CPU:$EB1F PRG:2B1F 90 2A ApplyObjectVerticalMotion_Block_10: - lda $E631,y ; CPU:$EB1F PRG:2B1F B9 31 E6 - sta $0424,x ; CPU:$EB22 PRG:2B22 9D 24 04 - lda $E63D,y ; CPU:$EB25 PRG:2B25 B9 3D E6 - sta PlayerVerticalImpulse,x ; CPU:$EB28 PRG:2B28 9D 2D 04 - jmp ApplyObjectVerticalMotion_Block_13 ; CPU:$EB2B PRG:2B2B 4C 4B EB + lda $E631,y ; CPU:$EB21 PRG:2B21 B9 31 E6 + sta $0424,x ; CPU:$EB24 PRG:2B24 9D 24 04 + lda $E63D,y ; CPU:$EB27 PRG:2B27 B9 3D E6 + sta PlayerVerticalImpulse,x ; CPU:$EB2A PRG:2B2A 9D 2D 04 + jmp ApplyObjectVerticalMotion_Block_13 ; CPU:$EB2D PRG:2B2D 4C 4B EB ApplyObjectVerticalMotion_Block_11: - cmp $E655,y ; CPU:$EB2E PRG:2B2E D9 55 E6 - bcc ApplyObjectVerticalMotion_Block_12 ; CPU:$EB31 PRG:2B31 90 0A - bne ApplyObjectVerticalMotion_Block_13 ; CPU:$EB33 PRG:2B33 D0 14 - lda $0424,x ; CPU:$EB35 PRG:2B35 BD 24 04 - cmp $E649,y ; CPU:$EB38 PRG:2B38 D9 49 E6 - bcs ApplyObjectVerticalMotion_Block_13 ; CPU:$EB3B PRG:2B3B B0 0C + cmp $E655,y ; CPU:$EB30 PRG:2B30 D9 55 E6 + bcc ApplyObjectVerticalMotion_Block_12 ; CPU:$EB33 PRG:2B33 90 0A + bne ApplyObjectVerticalMotion_Block_13 ; CPU:$EB35 PRG:2B35 D0 14 + lda $0424,x ; CPU:$EB37 PRG:2B37 BD 24 04 + cmp $E649,y ; CPU:$EB3A PRG:2B3A D9 49 E6 + bcs ApplyObjectVerticalMotion_Block_13 ; CPU:$EB3D PRG:2B3D B0 0C ApplyObjectVerticalMotion_Block_12: - lda $E649,y ; CPU:$EB3D PRG:2B3D B9 49 E6 - sta $0424,x ; CPU:$EB40 PRG:2B40 9D 24 04 - lda $E655,y ; CPU:$EB43 PRG:2B43 B9 55 E6 - sta PlayerVerticalImpulse,x ; CPU:$EB46 PRG:2B46 9D 2D 04 + lda $E649,y ; CPU:$EB3F PRG:2B3F B9 49 E6 + sta $0424,x ; CPU:$EB42 PRG:2B42 9D 24 04 + lda $E655,y ; CPU:$EB45 PRG:2B45 B9 55 E6 + sta PlayerVerticalImpulse,x ; CPU:$EB48 PRG:2B48 9D 2D 04 ApplyObjectVerticalMotion_Block_13: - jsr IntegrateHorizontalPosition ; CPU:$EB49 PRG:2B49 20 8E EB - lda RenderingDisabledFlag ; CPU:$EB4C PRG:2B4C A5 16 - beq ApplyObjectVerticalMotion_Block_16 ; CPU:$EB4E PRG:2B4E F0 10 - lda PlayerPosX,x ; CPU:$EB50 PRG:2B50 B5 91 - cmp #$10 ; CPU:$EB52 PRG:2B52 C9 10 - bcs ApplyObjectVerticalMotion_Block_14 ; CPU:$EB54 PRG:2B54 B0 02 - lda #$10 ; CPU:$EB56 PRG:2B56 A9 10 + jsr IntegrateHorizontalPosition; CPU:$EB4B PRG:2B4B 20 8E EB + lda RenderingDisabledFlag ; CPU:$EB4E PRG:2B4E A5 16 + beq ApplyObjectVerticalMotion_Block_16 ; CPU:$EB50 PRG:2B50 F0 10 + lda PlayerPosX,x ; CPU:$EB52 PRG:2B52 B5 91 + cmp #$10 ; CPU:$EB54 PRG:2B54 C9 10 + bcs ApplyObjectVerticalMotion_Block_14 ; CPU:$EB56 PRG:2B56 B0 02 + lda #$10 ; CPU:$EB58 PRG:2B58 A9 10 ApplyObjectVerticalMotion_Block_14: - cmp #$E0 ; CPU:$EB58 PRG:2B58 C9 E0 - bcc ApplyObjectVerticalMotion_Block_15 ; CPU:$EB5A PRG:2B5A 90 02 - lda #$E0 ; CPU:$EB5C PRG:2B5C A9 E0 + cmp #$E0 ; CPU:$EB5A PRG:2B5A C9 E0 + bcc ApplyObjectVerticalMotion_Block_15 ; CPU:$EB5C PRG:2B5C 90 02 + lda #$E0 ; CPU:$EB5E PRG:2B5E A9 E0 ApplyObjectVerticalMotion_Block_15: - sta PlayerPosX,x ; CPU:$EB5E PRG:2B5E 95 91 + sta PlayerPosX,x ; CPU:$EB60 PRG:2B60 95 91 ApplyObjectVerticalMotion_Block_16: - lda $C8 ; CPU:$EB60 PRG:2B60 A5 C8 - beq ApplyObjectVerticalMotion_Block_18 ; CPU:$EB62 PRG:2B62 F0 27 - lda PlayerSlotState,x ; CPU:$EB64 PRG:2B64 B5 88 - bne ApplyObjectVerticalMotion_Block_18 ; CPU:$EB66 PRG:2B66 D0 23 - lda PlayerPosY,x ; CPU:$EB68 PRG:2B68 B5 9A - cmp #$C8 ; CPU:$EB6A PRG:2B6A C9 C8 - bcc ApplyObjectVerticalMotion_Block_18 ; CPU:$EB6C PRG:2B6C 90 1D - lda #$C7 ; CPU:$EB6E PRG:2B6E A9 C7 - sta PlayerPosY,x ; CPU:$EB70 PRG:2B70 95 9A - lda PlayerAnimationState,x ; CPU:$EB72 PRG:2B72 BD 51 04 - cmp #$0B ; CPU:$EB75 PRG:2B75 C9 0B - bne ApplyObjectVerticalMotion_Block_17 ; CPU:$EB77 PRG:2B77 D0 09 - dec PlayerAnimationState,x ; CPU:$EB79 PRG:2B79 DE 51 04 - jsr $F107 ; CPU:$EB7C PRG:2B7C 20 07 F1 - jmp $F18C ; CPU:$EB7F PRG:2B7F 4C 8C F1 + lda $C8 ; CPU:$EB62 PRG:2B62 A5 C8 + beq ApplyObjectVerticalMotion_Block_18 ; CPU:$EB64 PRG:2B64 F0 27 + lda PlayerSlotState,x ; CPU:$EB66 PRG:2B66 B5 88 + bne ApplyObjectVerticalMotion_Block_18 ; CPU:$EB68 PRG:2B68 D0 23 + lda PlayerPosY,x ; CPU:$EB6A PRG:2B6A B5 9A + cmp #$C8 ; CPU:$EB6C PRG:2B6C C9 C8 + bcc ApplyObjectVerticalMotion_Block_18 ; CPU:$EB6E PRG:2B6E 90 1D + lda #$C7 ; CPU:$EB70 PRG:2B70 A9 C7 + sta PlayerPosY,x ; CPU:$EB72 PRG:2B72 95 9A + lda PlayerAnimationState,x ; CPU:$EB74 PRG:2B74 BD 51 04 + cmp #$0B ; CPU:$EB77 PRG:2B77 C9 0B + bne ApplyObjectVerticalMotion_Block_17 ; CPU:$EB79 PRG:2B79 D0 09 + dec PlayerAnimationState,x ; CPU:$EB7B PRG:2B7B DE 51 04 + jsr $F107 ; CPU:$EB7E PRG:2B7E 20 07 F1 + jmp $F18C ; CPU:$EB81 PRG:2B81 4C 8C F1 ApplyObjectVerticalMotion_Block_17: - lda #$02 ; CPU:$EB82 PRG:2B82 A9 02 - sta PlayerSlotState,x ; CPU:$EB84 PRG:2B84 95 88 - lda #$03 ; CPU:$EB86 PRG:2B86 A9 03 - sta PlayerAnimationState,x ; CPU:$EB88 PRG:2B88 9D 51 04 + lda #$02 ; CPU:$EB84 PRG:2B84 A9 02 + sta PlayerSlotState,x ; CPU:$EB86 PRG:2B86 95 88 + lda #$03 ; CPU:$EB88 PRG:2B88 A9 03 + sta PlayerAnimationState,x ; CPU:$EB8A PRG:2B8A 9D 51 04 ApplyObjectVerticalMotion_Block_18: - rts ; CPU:$EB8B PRG:2B8B 60 + rts ; CPU:$EB8D PRG:2B8D 60 ; IntegrateHorizontalPosition ; Purpose: add horizontal velocity to fixed-point X position. ; Inputs: X = object slot. ; Returns: $0400,X and $91,X updated. IntegrateHorizontalPosition: - lda $0400,x ; CPU:$EB8C PRG:2B8C BD 00 04 - clc ; CPU:$EB8F PRG:2B8F 18 - adc $0424,x ; CPU:$EB90 PRG:2B90 7D 24 04 - sta $0400,x ; CPU:$EB93 PRG:2B93 9D 00 04 - lda PlayerPosX,x ; CPU:$EB96 PRG:2B96 B5 91 - adc PlayerVerticalImpulse,x ; CPU:$EB98 PRG:2B98 7D 2D 04 - sta PlayerPosX,x ; CPU:$EB9B PRG:2B9B 95 91 - rts ; CPU:$EB9D PRG:2B9D 60 + lda $0400,x ; CPU:$EB8E PRG:2B8E BD 00 04 + clc ; CPU:$EB91 PRG:2B91 18 + adc $0424,x ; CPU:$EB92 PRG:2B92 7D 24 04 + sta $0400,x ; CPU:$EB95 PRG:2B95 9D 00 04 + lda PlayerPosX,x ; CPU:$EB98 PRG:2B98 B5 91 + adc PlayerVerticalImpulse,x ; CPU:$EB9A PRG:2B9A 7D 2D 04 + sta PlayerPosX,x ; CPU:$EB9D PRG:2B9D 95 91 + rts ; CPU:$EB9F PRG:2B9F 60 ; IntegrateVerticalPosition ; Purpose: add vertical velocity to fixed-point Y position. ; Inputs: X = object slot. ; Returns: $0409,X and $9A,X updated. IntegrateVerticalPosition: - lda $0409,x ; CPU:$EB9E PRG:2B9E BD 09 04 - clc ; CPU:$EBA1 PRG:2BA1 18 - adc $0412,x ; CPU:$EBA2 PRG:2BA2 7D 12 04 - sta $0409,x ; CPU:$EBA5 PRG:2BA5 9D 09 04 - lda PlayerPosY,x ; CPU:$EBA8 PRG:2BA8 B5 9A - adc PlayerHorizontalImpulse,x ; CPU:$EBAA PRG:2BAA 7D 1B 04 - sta PlayerPosY,x ; CPU:$EBAD PRG:2BAD 95 9A - rts ; CPU:$EBAF PRG:2BAF 60 + lda $0409,x ; CPU:$EBA0 PRG:2BA0 BD 09 04 + clc ; CPU:$EBA3 PRG:2BA3 18 + adc $0412,x ; CPU:$EBA4 PRG:2BA4 7D 12 04 + sta $0409,x ; CPU:$EBA7 PRG:2BA7 9D 09 04 + lda PlayerPosY,x ; CPU:$EBAA PRG:2BAA B5 9A + adc PlayerHorizontalImpulse,x ; CPU:$EBAC PRG:2BAC 7D 1B 04 + sta PlayerPosY,x ; CPU:$EBAF PRG:2BAF 95 9A + rts ; CPU:$EBB1 PRG:2BB1 60 ; ApplyHorizontalCollisionResponse ; Purpose: run collision handling around horizontal integration. ; Inputs: X = object slot. ; Returns: collision response and position updated. ApplyHorizontalCollisionResponse: - jsr $F0B4 ; CPU:$EBB0 PRG:2BB0 20 B4 F0 - jsr IntegrateHorizontalPosition ; CPU:$EBB3 PRG:2BB3 20 8E EB - jmp $F0B4 ; CPU:$EBB6 PRG:2BB6 4C B4 F0 + jsr $F0B4 ; CPU:$EBB2 PRG:2BB2 20 B4 F0 + jsr IntegrateHorizontalPosition; CPU:$EBB5 PRG:2BB5 20 8E EB + jmp $F0B4 ; CPU:$EBB8 PRG:2BB8 4C B4 F0 ; ApplyVerticalCollisionResponse ; Purpose: run collision handling around vertical integration. ; Inputs: X = object slot. ; Returns: collision response and position updated. ApplyVerticalCollisionResponse: - jsr $F0B4 ; CPU:$EBB9 PRG:2BB9 20 B4 F0 - jsr IntegrateVerticalPosition ; CPU:$EBBC PRG:2BBC 20 A0 EB - jmp $F0B4 ; CPU:$EBBF PRG:2BBF 4C B4 F0 + jsr $F0B4 ; CPU:$EBBB PRG:2BBB 20 B4 F0 + jsr IntegrateVerticalPosition ; CPU:$EBBE PRG:2BBE 20 A0 EB + jmp $F0B4 ; CPU:$EBC1 PRG:2BC1 4C B4 F0 ; UpdateObjectEnvironmentState ; Purpose: update environment-dependent object motion and collision flags. ; Inputs: X = object slot. ; Returns: movement flags and velocities adjusted. UpdateObjectEnvironmentState: - cpx #$02 ; CPU:$EBC2 PRG:2BC2 E0 02 - bcs UpdateObjectEnvironmentState_Block_1 ; CPU:$EBC4 PRG:2BC4 B0 1B - lda PlayerSlotState,x ; CPU:$EBC6 PRG:2BC6 B5 88 - bne UpdateObjectEnvironmentState_Block ; CPU:$EBC8 PRG:2BC8 D0 0A - lda $0436,x ; CPU:$EBCA PRG:2BCA BD 36 04 - bne UpdateObjectEnvironmentState_Block ; CPU:$EBCD PRG:2BCD D0 05 - lda #$00 ; CPU:$EBCF PRG:2BCF A9 00 - sta PlayerLifecycleState,x ; CPU:$EBD1 PRG:2BD1 95 7F - rts ; CPU:$EBD3 PRG:2BD3 60 + cpx #$02 ; CPU:$EBC4 PRG:2BC4 E0 02 + bcs UpdateObjectEnvironmentState_Block_1 ; CPU:$EBC6 PRG:2BC6 B0 1B + lda PlayerSlotState,x ; CPU:$EBC8 PRG:2BC8 B5 88 + bne UpdateObjectEnvironmentState_Block ; CPU:$EBCA PRG:2BCA D0 0A + lda $0436,x ; CPU:$EBCC PRG:2BCC BD 36 04 + bne UpdateObjectEnvironmentState_Block ; CPU:$EBCF PRG:2BCF D0 05 + lda #$00 ; CPU:$EBD1 PRG:2BD1 A9 00 + sta PlayerLifecycleState,x ; CPU:$EBD3 PRG:2BD3 95 7F + rts ; CPU:$EBD5 PRG:2BD5 60 UpdateObjectEnvironmentState_Block: - lda PlayerLifecycleState,x ; CPU:$EBD4 PRG:2BD4 B5 7F - cmp #$06 ; CPU:$EBD6 PRG:2BD6 C9 06 - bcc UpdateObjectEnvironmentState_Block_7 ; CPU:$EBD8 PRG:2BD8 90 5C - lda #$01 ; CPU:$EBDA PRG:2BDA A9 01 - sta PlayerLifecycleState,x ; CPU:$EBDC PRG:2BDC 95 7F - dec PlayerSlotState,x ; CPU:$EBDE PRG:2BDE D6 88 - rts ; CPU:$EBE0 PRG:2BE0 60 + lda PlayerLifecycleState,x ; CPU:$EBD6 PRG:2BD6 B5 7F + cmp #$06 ; CPU:$EBD8 PRG:2BD8 C9 06 + bcc UpdateObjectEnvironmentState_Block_7 ; CPU:$EBDA PRG:2BDA 90 5C + lda #$01 ; CPU:$EBDC PRG:2BDC A9 01 + sta PlayerLifecycleState,x ; CPU:$EBDE PRG:2BDE 95 7F + dec PlayerSlotState,x ; CPU:$EBE0 PRG:2BE0 D6 88 + rts ; CPU:$EBE2 PRG:2BE2 60 UpdateObjectEnvironmentState_Block_1: - lda PlayerSlotState,x ; CPU:$EBE1 PRG:2BE1 B5 88 - cmp #$02 ; CPU:$EBE3 PRG:2BE3 C9 02 - beq UpdateObjectEnvironmentState_Block_7 ; CPU:$EBE5 PRG:2BE5 F0 4F - lda $0436,x ; CPU:$EBE7 PRG:2BE7 BD 36 04 - bne UpdateObjectEnvironmentState_Block_3 ; CPU:$EBEA PRG:2BEA D0 0F - lda PlayerSlotState,x ; CPU:$EBEC PRG:2BEC B5 88 - bne UpdateObjectEnvironmentState_Block_2 ; CPU:$EBEE PRG:2BEE D0 05 - lda #$00 ; CPU:$EBF0 PRG:2BF0 A9 00 - sta PlayerLifecycleState,x ; CPU:$EBF2 PRG:2BF2 95 7F - rts ; CPU:$EBF4 PRG:2BF4 60 + lda PlayerSlotState,x ; CPU:$EBE3 PRG:2BE3 B5 88 + cmp #$02 ; CPU:$EBE5 PRG:2BE5 C9 02 + beq UpdateObjectEnvironmentState_Block_7 ; CPU:$EBE7 PRG:2BE7 F0 4F + lda $0436,x ; CPU:$EBE9 PRG:2BE9 BD 36 04 + bne UpdateObjectEnvironmentState_Block_3 ; CPU:$EBEC PRG:2BEC D0 0F + lda PlayerSlotState,x ; CPU:$EBEE PRG:2BEE B5 88 + bne UpdateObjectEnvironmentState_Block_2 ; CPU:$EBF0 PRG:2BF0 D0 05 + lda #$00 ; CPU:$EBF2 PRG:2BF2 A9 00 + sta PlayerLifecycleState,x ; CPU:$EBF4 PRG:2BF4 95 7F + rts ; CPU:$EBF6 PRG:2BF6 60 UpdateObjectEnvironmentState_Block_2: - lda PlayerLifecycleState,x ; CPU:$EBF5 PRG:2BF5 B5 7F - bne UpdateObjectEnvironmentState_Block_4 ; CPU:$EBF7 PRG:2BF7 D0 03 - inc PlayerLifecycleState,x ; CPU:$EBF9 PRG:2BF9 F6 7F + lda PlayerLifecycleState,x ; CPU:$EBF7 PRG:2BF7 B5 7F + bne UpdateObjectEnvironmentState_Block_4 ; CPU:$EBF9 PRG:2BF9 D0 03 + inc PlayerLifecycleState,x ; CPU:$EBFB PRG:2BFB F6 7F UpdateObjectEnvironmentState_Block_3: - rts ; CPU:$EBFB PRG:2BFB 60 + rts ; CPU:$EBFD PRG:2BFD 60 UpdateObjectEnvironmentState_Block_4: - cmp #$02 ; CPU:$EBFC PRG:2BFC C9 02 - bcc UpdateObjectEnvironmentState_Block_3 ; CPU:$EBFE PRG:2BFE 90 FB - dec PlayerStateTimer,x ; CPU:$EC00 PRG:2C00 DE 5A 04 - bne UpdateObjectEnvironmentState_Block_6 ; CPU:$EC03 PRG:2C03 D0 30 - lda $C7 ; CPU:$EC05 PRG:2C05 A5 C7 - sta PlayerStateTimer,x ; CPU:$EC07 PRG:2C07 9D 5A 04 - inc PlayerLifecycleState,x ; CPU:$EC0A PRG:2C0A F6 7F - lda PlayerLifecycleState,x ; CPU:$EC0C PRG:2C0C B5 7F - cmp #$07 ; CPU:$EC0E PRG:2C0E C9 07 - bcc UpdateObjectEnvironmentState_Block_6 ; CPU:$EC10 PRG:2C10 90 23 - lda #$02 ; CPU:$EC12 PRG:2C12 A9 02 - sta PlayerSlotState,x ; CPU:$EC14 PRG:2C14 95 88 - lda #$00 ; CPU:$EC16 PRG:2C16 A9 00 - sta PlayerLifecycleState,x ; CPU:$EC18 PRG:2C18 95 7F - ldy PlayerAnimationState,x ; CPU:$EC1A PRG:2C1A BC 51 04 - lda EnvironmentStateTable,y ; CPU:$EC1D PRG:2C1D B9 AE EC - ldy $047E,x ; CPU:$EC20 PRG:2C20 BC 7E 04 - bne UpdateObjectEnvironmentState_Block_5 ; CPU:$EC23 PRG:2C23 D0 08 - dec $047E,x ; CPU:$EC25 PRG:2C25 DE 7E 04 - lda PlayerAnimationState,x ; CPU:$EC28 PRG:2C28 BD 51 04 - and #$03 ; CPU:$EC2B PRG:2C2B 29 03 + cmp #$02 ; CPU:$EBFE PRG:2BFE C9 02 + bcc UpdateObjectEnvironmentState_Block_3 ; CPU:$EC00 PRG:2C00 90 FB + dec PlayerStateTimer,x ; CPU:$EC02 PRG:2C02 DE 5A 04 + bne UpdateObjectEnvironmentState_Block_6 ; CPU:$EC05 PRG:2C05 D0 30 + lda $C7 ; CPU:$EC07 PRG:2C07 A5 C7 + sta PlayerStateTimer,x ; CPU:$EC09 PRG:2C09 9D 5A 04 + inc PlayerLifecycleState,x ; CPU:$EC0C PRG:2C0C F6 7F + lda PlayerLifecycleState,x ; CPU:$EC0E PRG:2C0E B5 7F + cmp #$07 ; CPU:$EC10 PRG:2C10 C9 07 + bcc UpdateObjectEnvironmentState_Block_6 ; CPU:$EC12 PRG:2C12 90 23 + lda #$02 ; CPU:$EC14 PRG:2C14 A9 02 + sta PlayerSlotState,x ; CPU:$EC16 PRG:2C16 95 88 + lda #$00 ; CPU:$EC18 PRG:2C18 A9 00 + sta PlayerLifecycleState,x ; CPU:$EC1A PRG:2C1A 95 7F + ldy PlayerAnimationState,x ; CPU:$EC1C PRG:2C1C BC 51 04 + lda EnvironmentStateTable,y ; CPU:$EC1F PRG:2C1F B9 AE EC + ldy $047E,x ; CPU:$EC22 PRG:2C22 BC 7E 04 + bne UpdateObjectEnvironmentState_Block_5 ; CPU:$EC25 PRG:2C25 D0 08 + dec $047E,x ; CPU:$EC27 PRG:2C27 DE 7E 04 + lda PlayerAnimationState,x ; CPU:$EC2A PRG:2C2A BD 51 04 + and #$03 ; CPU:$EC2D PRG:2C2D 29 03 UpdateObjectEnvironmentState_Block_5: - sta PlayerAnimationState,x ; CPU:$EC2D PRG:2C2D 9D 51 04 - lda #$FE ; CPU:$EC30 PRG:2C30 A9 FE - sta PlayerHorizontalImpulse,x ; CPU:$EC32 PRG:2C32 9D 1B 04 + sta PlayerAnimationState,x ; CPU:$EC2F PRG:2C2F 9D 51 04 + lda #$FE ; CPU:$EC32 PRG:2C32 A9 FE + sta PlayerHorizontalImpulse,x ; CPU:$EC34 PRG:2C34 9D 1B 04 UpdateObjectEnvironmentState_Block_6: - rts ; CPU:$EC35 PRG:2C35 60 + rts ; CPU:$EC37 PRG:2C37 60 UpdateObjectEnvironmentState_Block_7: - jsr $E6E9 ; CPU:$EC36 PRG:2C36 20 E9 E6 - lda $31,x ; CPU:$EC39 PRG:2C39 B5 31 - and #$C3 ; CPU:$EC3B PRG:2C3B 29 C3 - beq UpdateObjectEnvironmentState_Block_8 ; CPU:$EC3D PRG:2C3D F0 08 - cpx #$02 ; CPU:$EC3F PRG:2C3F E0 02 - bcs UpdateObjectEnvironmentState_Block_8 ; CPU:$EC41 PRG:2C41 B0 04 - lda #$00 ; CPU:$EC43 PRG:2C43 A9 00 - sta PlayerCollisionDisable,x ; CPU:$EC45 PRG:2C45 95 BD + jsr $E6E9 ; CPU:$EC38 PRG:2C38 20 E9 E6 + lda $31,x ; CPU:$EC3B PRG:2C3B B5 31 + and #$C3 ; CPU:$EC3D PRG:2C3D 29 C3 + beq UpdateObjectEnvironmentState_Block_8 ; CPU:$EC3F PRG:2C3F F0 08 + cpx #$02 ; CPU:$EC41 PRG:2C41 E0 02 + bcs UpdateObjectEnvironmentState_Block_8 ; CPU:$EC43 PRG:2C43 B0 04 + lda #$00 ; CPU:$EC45 PRG:2C45 A9 00 + sta PlayerCollisionDisable,x ; CPU:$EC47 PRG:2C47 95 BD UpdateObjectEnvironmentState_Block_8: - lda $31,x ; CPU:$EC47 PRG:2C47 B5 31 - and #$40 ; CPU:$EC49 PRG:2C49 29 40 - bne UpdateObjectEnvironmentState_Block_10 ; CPU:$EC4B PRG:2C4B D0 12 - lda $31,x ; CPU:$EC4D PRG:2C4D B5 31 - and #$80 ; CPU:$EC4F PRG:2C4F 29 80 - bne UpdateObjectEnvironmentState_Block_9 ; CPU:$EC51 PRG:2C51 D0 07 - lda #$00 ; CPU:$EC53 PRG:2C53 A9 00 - sta $0620,x ; CPU:$EC55 PRG:2C55 9D 20 06 - beq UpdateObjectEnvironmentState_Block_14 ; CPU:$EC58 PRG:2C58 F0 51 + lda $31,x ; CPU:$EC49 PRG:2C49 B5 31 + and #$40 ; CPU:$EC4B PRG:2C4B 29 40 + bne UpdateObjectEnvironmentState_Block_10 ; CPU:$EC4D PRG:2C4D D0 12 + lda $31,x ; CPU:$EC4F PRG:2C4F B5 31 + and #$80 ; CPU:$EC51 PRG:2C51 29 80 + bne UpdateObjectEnvironmentState_Block_9 ; CPU:$EC53 PRG:2C53 D0 07 + lda #$00 ; CPU:$EC55 PRG:2C55 A9 00 + sta $0620,x ; CPU:$EC57 PRG:2C57 9D 20 06 + beq UpdateObjectEnvironmentState_Block_14 ; CPU:$EC5A PRG:2C5A F0 51 UpdateObjectEnvironmentState_Block_9: - lda $0620,x ; CPU:$EC5A PRG:2C5A BD 20 06 - bne UpdateObjectEnvironmentState_Block_14 ; CPU:$EC5D PRG:2C5D D0 4C + lda $0620,x ; CPU:$EC5C PRG:2C5C BD 20 06 + bne UpdateObjectEnvironmentState_Block_14 ; CPU:$EC5F PRG:2C5F D0 4C UpdateObjectEnvironmentState_Block_10: - lda PlayerLifecycleState,x ; CPU:$EC5F PRG:2C5F B5 7F - cmp #$02 ; CPU:$EC61 PRG:2C61 C9 02 - bcc UpdateObjectEnvironmentState_Block_11 ; CPU:$EC63 PRG:2C63 90 0E - dec PlayerPosY,x ; CPU:$EC65 PRG:2C65 D6 9A - dec PlayerPosY,x ; CPU:$EC67 PRG:2C67 D6 9A - lda #$00 ; CPU:$EC69 PRG:2C69 A9 00 - sta $0412,x ; CPU:$EC6B PRG:2C6B 9D 12 04 - sta PlayerHorizontalImpulse,x ; CPU:$EC6E PRG:2C6E 9D 1B 04 - beq UpdateObjectEnvironmentState_Block_12 ; CPU:$EC71 PRG:2C71 F0 09 + lda PlayerLifecycleState,x ; CPU:$EC61 PRG:2C61 B5 7F + cmp #$02 ; CPU:$EC63 PRG:2C63 C9 02 + bcc UpdateObjectEnvironmentState_Block_11 ; CPU:$EC65 PRG:2C65 90 0E + dec PlayerPosY,x ; CPU:$EC67 PRG:2C67 D6 9A + dec PlayerPosY,x ; CPU:$EC69 PRG:2C69 D6 9A + lda #$00 ; CPU:$EC6B PRG:2C6B A9 00 + sta $0412,x ; CPU:$EC6D PRG:2C6D 9D 12 04 + sta PlayerHorizontalImpulse,x ; CPU:$EC70 PRG:2C70 9D 1B 04 + beq UpdateObjectEnvironmentState_Block_12 ; CPU:$EC73 PRG:2C73 F0 09 UpdateObjectEnvironmentState_Block_11: - cmp #$01 ; CPU:$EC73 PRG:2C73 C9 01 - beq UpdateObjectEnvironmentState_Block_12 ; CPU:$EC75 PRG:2C75 F0 05 - lda $0436,x ; CPU:$EC77 PRG:2C77 BD 36 04 - bne UpdateObjectEnvironmentState_Block_14 ; CPU:$EC7A PRG:2C7A D0 2F + cmp #$01 ; CPU:$EC75 PRG:2C75 C9 01 + beq UpdateObjectEnvironmentState_Block_12 ; CPU:$EC77 PRG:2C77 F0 05 + lda $0436,x ; CPU:$EC79 PRG:2C79 BD 36 04 + bne UpdateObjectEnvironmentState_Block_14 ; CPU:$EC7C PRG:2C7C D0 2F UpdateObjectEnvironmentState_Block_12: - lda #$00 ; CPU:$EC7C PRG:2C7C A9 00 - sta PlayerLifecycleState,x ; CPU:$EC7E PRG:2C7E 95 7F - lda #$01 ; CPU:$EC80 PRG:2C80 A9 01 - sta $0436,x ; CPU:$EC82 PRG:2C82 9D 36 04 - lda #$01 ; CPU:$EC85 PRG:2C85 A9 01 - sta $0620,x ; CPU:$EC87 PRG:2C87 9D 20 06 - ldy #$00 ; CPU:$EC8A PRG:2C8A A0 00 - cpx #$02 ; CPU:$EC8C PRG:2C8C E0 02 - bcc UpdateObjectEnvironmentState_Block_13 ; CPU:$EC8E PRG:2C8E 90 01 - iny ; CPU:$EC90 PRG:2C90 C8 + lda #$00 ; CPU:$EC7E PRG:2C7E A9 00 + sta PlayerLifecycleState,x ; CPU:$EC80 PRG:2C80 95 7F + lda #$01 ; CPU:$EC82 PRG:2C82 A9 01 + sta $0436,x ; CPU:$EC84 PRG:2C84 9D 36 04 + lda #$01 ; CPU:$EC87 PRG:2C87 A9 01 + sta $0620,x ; CPU:$EC89 PRG:2C89 9D 20 06 + ldy #$00 ; CPU:$EC8C PRG:2C8C A0 00 + cpx #$02 ; CPU:$EC8E PRG:2C8E E0 02 + bcc UpdateObjectEnvironmentState_Block_13 ; CPU:$EC90 PRG:2C90 90 01 + iny ; CPU:$EC92 PRG:2C92 C8 UpdateObjectEnvironmentState_Block_13: - lda a:SoundRequestFlags0,y ; CPU:$EC91 PRG:2C91 B9 F0 00 - ora #$10 ; CPU:$EC94 PRG:2C94 09 10 - sta a:SoundRequestFlags0,y ; CPU:$EC96 PRG:2C96 99 F0 00 - lda $0412,x ; CPU:$EC99 PRG:2C99 BD 12 04 - sec ; CPU:$EC9C PRG:2C9C 38 - ldy PlayerAnimationState,x ; CPU:$EC9D PRG:2C9D BC 51 04 - sbc $E60D,y ; CPU:$ECA0 PRG:2CA0 F9 0D E6 - sta $0412,x ; CPU:$ECA3 PRG:2CA3 9D 12 04 - bcs UpdateObjectEnvironmentState_Block_14 ; CPU:$ECA6 PRG:2CA6 B0 03 - dec PlayerHorizontalImpulse,x ; CPU:$ECA8 PRG:2CA8 DE 1B 04 + lda a:SoundRequestFlags0,y ; CPU:$EC93 PRG:2C93 B9 F0 00 + ora #$10 ; CPU:$EC96 PRG:2C96 09 10 + sta a:SoundRequestFlags0,y ; CPU:$EC98 PRG:2C98 99 F0 00 + lda $0412,x ; CPU:$EC9B PRG:2C9B BD 12 04 + sec ; CPU:$EC9E PRG:2C9E 38 + ldy PlayerAnimationState,x ; CPU:$EC9F PRG:2C9F BC 51 04 + sbc $E60D,y ; CPU:$ECA2 PRG:2CA2 F9 0D E6 + sta $0412,x ; CPU:$ECA5 PRG:2CA5 9D 12 04 + bcs UpdateObjectEnvironmentState_Block_14 ; CPU:$ECA8 PRG:2CA8 B0 03 + dec PlayerHorizontalImpulse,x ; CPU:$ECAA PRG:2CAA DE 1B 04 UpdateObjectEnvironmentState_Block_14: - rts ; CPU:$ECAB PRG:2CAB 60 + rts ; CPU:$ECAD PRG:2CAD 60 ; Environment response pattern used by UpdateObjectEnvironmentState. EnvironmentStateTable: - .byte $01, $02, $02, $03, $01, $02, $02, $03 ; CPU:$ECAC PRG:2CAC 01 02 02 03 01 02 02 03 - .byte $01, $02, $02, $03 ; CPU:$ECB4 PRG:2CB4 01 02 02 03 + .byte $01, $02, $02, $03, $01, $02, $02, $03 ; CPU:$ECAE PRG:2CAE 01 02 02 03 01 02 02 03 + .byte $01, $02, $02, $03 ; CPU:$ECB6 PRG:2CB6 01 02 02 03 ; UpdateSpecialObjectState ; Purpose: update special/falling object states and test contact with active players. ; Inputs: X = object slot. ; Returns: position/state/event fields updated; X restored. UpdateSpecialObjectState: - lda PlayerLifecycleState,x ; CPU:$ECB8 PRG:2CB8 B5 7F - bne UpdateSpecialObjectState_Block_3 ; CPU:$ECBA PRG:2CBA D0 69 - jsr $E7B1 ; CPU:$ECBC PRG:2CBC 20 B1 E7 - jsr $EB8E ; CPU:$ECBF PRG:2CBF 20 8E EB - lda $0409,x ; CPU:$ECC2 PRG:2CC2 BD 09 04 - sec ; CPU:$ECC5 PRG:2CC5 38 - sbc #$60 ; CPU:$ECC6 PRG:2CC6 E9 60 - sta $0409,x ; CPU:$ECC8 PRG:2CC8 9D 09 04 - lda PlayerPosY,x ; CPU:$ECCB PRG:2CCB B5 9A - sbc #$00 ; CPU:$ECCD PRG:2CCD E9 00 - sta PlayerPosY,x ; CPU:$ECCF PRG:2CCF 95 9A - cmp #$F1 ; CPU:$ECD1 PRG:2CD1 C9 F1 - bcc UpdateSpecialObjectState_Block ; CPU:$ECD3 PRG:2CD3 90 04 - lda #$FF ; CPU:$ECD5 PRG:2CD5 A9 FF - sta PlayerSlotState,x ; CPU:$ECD7 PRG:2CD7 95 88 + lda PlayerLifecycleState,x ; CPU:$ECBA PRG:2CBA B5 7F + bne UpdateSpecialObjectState_Block_3 ; CPU:$ECBC PRG:2CBC D0 69 + jsr $E7B1 ; CPU:$ECBE PRG:2CBE 20 B1 E7 + jsr $EB8E ; CPU:$ECC1 PRG:2CC1 20 8E EB + lda $0409,x ; CPU:$ECC4 PRG:2CC4 BD 09 04 + sec ; CPU:$ECC7 PRG:2CC7 38 + sbc #$60 ; CPU:$ECC8 PRG:2CC8 E9 60 + sta $0409,x ; CPU:$ECCA PRG:2CCA 9D 09 04 + lda PlayerPosY,x ; CPU:$ECCD PRG:2CCD B5 9A + sbc #$00 ; CPU:$ECCF PRG:2CCF E9 00 + sta PlayerPosY,x ; CPU:$ECD1 PRG:2CD1 95 9A + cmp #$F1 ; CPU:$ECD3 PRG:2CD3 C9 F1 + bcc UpdateSpecialObjectState_Block ; CPU:$ECD5 PRG:2CD5 90 04 + lda #$FF ; CPU:$ECD7 PRG:2CD7 A9 FF + sta PlayerSlotState,x ; CPU:$ECD9 PRG:2CD9 95 88 UpdateSpecialObjectState_Block: - txa ; CPU:$ECD9 PRG:2CD9 8A - pha ; CPU:$ECDA PRG:2CDA 48 - ldy #$01 ; CPU:$ECDB PRG:2CDB A0 01 + txa ; CPU:$ECDB PRG:2CDB 8A + pha ; CPU:$ECDC PRG:2CDC 48 + ldy #$01 ; CPU:$ECDD PRG:2CDD A0 01 UpdateSpecialObjectState_Block_1: - lda a:PlayerSlotState,y ; CPU:$ECDD PRG:2CDD B9 88 00 - beq UpdateSpecialObjectState_Block_2 ; CPU:$ECE0 PRG:2CE0 F0 3E - bmi UpdateSpecialObjectState_Block_2 ; CPU:$ECE2 PRG:2CE2 30 3C - lda PlayerPosY,x ; CPU:$ECE4 PRG:2CE4 B5 9A - sec ; CPU:$ECE6 PRG:2CE6 38 - sbc a:PlayerPosY,y ; CPU:$ECE7 PRG:2CE7 F9 9A 00 - jsr AbsoluteDifference ; CPU:$ECEA PRG:2CEA 20 8E F0 - cmp #$18 ; CPU:$ECED PRG:2CED C9 18 - bcs UpdateSpecialObjectState_Block_2 ; CPU:$ECEF PRG:2CEF B0 2F - lda PlayerPosX,x ; CPU:$ECF1 PRG:2CF1 B5 91 - sec ; CPU:$ECF3 PRG:2CF3 38 - sbc a:PlayerPosX,y ; CPU:$ECF4 PRG:2CF4 F9 91 00 - jsr AbsoluteDifference ; CPU:$ECF7 PRG:2CF7 20 8E F0 - cmp #$10 ; CPU:$ECFA PRG:2CFA C9 10 - bcs UpdateSpecialObjectState_Block_2 ; CPU:$ECFC PRG:2CFC B0 22 - lda #$FF ; CPU:$ECFE PRG:2CFE A9 FF - sta PlayerLifecycleState,x ; CPU:$ED00 PRG:2D00 95 7F - lda #$03 ; CPU:$ED02 PRG:2D02 A9 03 - sta PlayerStateTimer,x ; CPU:$ED04 PRG:2D04 9D 5A 04 - lda #$78 ; CPU:$ED07 PRG:2D07 A9 78 - sta $C5 ; CPU:$ED09 PRG:2D09 85 C5 - lda #$02 ; CPU:$ED0B PRG:2D0B A9 02 - sta SoundRequestFlags0 ; CPU:$ED0D PRG:2D0D 85 F0 - lda #$32 ; CPU:$ED0F PRG:2D0F A9 32 - sty CurrentObjectIndex ; CPU:$ED11 PRG:2D11 84 3E - jsr InitializeOrQueueObject ; CPU:$ED13 PRG:2D13 20 DE D6 - lda #$01 ; CPU:$ED16 PRG:2D16 A9 01 - ldx CurrentObjectIndex ; CPU:$ED18 PRG:2D18 A6 3E - jsr $D871 ; CPU:$ED1A PRG:2D1A 20 71 D8 - pla ; CPU:$ED1D PRG:2D1D 68 - tax ; CPU:$ED1E PRG:2D1E AA - rts ; CPU:$ED1F PRG:2D1F 60 + lda a:PlayerSlotState,y ; CPU:$ECDF PRG:2CDF B9 88 00 + beq UpdateSpecialObjectState_Block_2 ; CPU:$ECE2 PRG:2CE2 F0 3E + bmi UpdateSpecialObjectState_Block_2 ; CPU:$ECE4 PRG:2CE4 30 3C + lda PlayerPosY,x ; CPU:$ECE6 PRG:2CE6 B5 9A + sec ; CPU:$ECE8 PRG:2CE8 38 + sbc a:PlayerPosY,y ; CPU:$ECE9 PRG:2CE9 F9 9A 00 + jsr AbsoluteDifference ; CPU:$ECEC PRG:2CEC 20 8E F0 + cmp #$18 ; CPU:$ECEF PRG:2CEF C9 18 + bcs UpdateSpecialObjectState_Block_2 ; CPU:$ECF1 PRG:2CF1 B0 2F + lda PlayerPosX,x ; CPU:$ECF3 PRG:2CF3 B5 91 + sec ; CPU:$ECF5 PRG:2CF5 38 + sbc a:PlayerPosX,y ; CPU:$ECF6 PRG:2CF6 F9 91 00 + jsr AbsoluteDifference ; CPU:$ECF9 PRG:2CF9 20 8E F0 + cmp #$10 ; CPU:$ECFC PRG:2CFC C9 10 + bcs UpdateSpecialObjectState_Block_2 ; CPU:$ECFE PRG:2CFE B0 22 + lda #$FF ; CPU:$ED00 PRG:2D00 A9 FF + sta PlayerLifecycleState,x ; CPU:$ED02 PRG:2D02 95 7F + lda #$03 ; CPU:$ED04 PRG:2D04 A9 03 + sta PlayerStateTimer,x ; CPU:$ED06 PRG:2D06 9D 5A 04 + lda #$78 ; CPU:$ED09 PRG:2D09 A9 78 + sta $C5 ; CPU:$ED0B PRG:2D0B 85 C5 + lda #$02 ; CPU:$ED0D PRG:2D0D A9 02 + sta SoundRequestFlags0 ; CPU:$ED0F PRG:2D0F 85 F0 + lda #$32 ; CPU:$ED11 PRG:2D11 A9 32 + sty CurrentObjectIndex ; CPU:$ED13 PRG:2D13 84 3E + jsr InitializeOrQueueObject ; CPU:$ED15 PRG:2D15 20 DE D6 + lda #$01 ; CPU:$ED18 PRG:2D18 A9 01 + ldx CurrentObjectIndex ; CPU:$ED1A PRG:2D1A A6 3E + jsr $D871 ; CPU:$ED1C PRG:2D1C 20 71 D8 + pla ; CPU:$ED1F PRG:2D1F 68 + tax ; CPU:$ED20 PRG:2D20 AA + rts ; CPU:$ED21 PRG:2D21 60 UpdateSpecialObjectState_Block_2: - dey ; CPU:$ED20 PRG:2D20 88 - bpl UpdateSpecialObjectState_Block_1 ; CPU:$ED21 PRG:2D21 10 BA - pla ; CPU:$ED23 PRG:2D23 68 - tax ; CPU:$ED24 PRG:2D24 AA + dey ; CPU:$ED22 PRG:2D22 88 + bpl UpdateSpecialObjectState_Block_1 ; CPU:$ED23 PRG:2D23 10 BA + pla ; CPU:$ED25 PRG:2D25 68 + tax ; CPU:$ED26 PRG:2D26 AA UpdateSpecialObjectState_Block_3: - rts ; CPU:$ED25 PRG:2D25 60 + rts ; CPU:$ED27 PRG:2D27 60 ; ResolveStageCollision ; Purpose: test an object against stage collision boundaries and classify contact side. ; Inputs: X = object slot; stage collision pointers in zero page. ; Returns: collision mask in $CC and response fields updated. ResolveStageCollision: - ldy PlayerSlotState,x ; CPU:$ED26 PRG:2D26 B4 88 - dey ; CPU:$ED28 PRG:2D28 88 - bpl ResolveStageCollision_Block_1 ; CPU:$ED29 PRG:2D29 10 01 + ldy PlayerSlotState,x ; CPU:$ED28 PRG:2D28 B4 88 + dey ; CPU:$ED2A PRG:2D2A 88 + bpl ResolveStageCollision_Block_1 ; CPU:$ED2B PRG:2D2B 10 01 ResolveStageCollision_Block: - rts ; CPU:$ED2B PRG:2D2B 60 + rts ; CPU:$ED2D PRG:2D2D 60 ResolveStageCollision_Block_1: - lda PlayerPosY,x ; CPU:$ED2C PRG:2D2C B5 9A - cmp #$F9 ; CPU:$ED2E PRG:2D2E C9 F9 - bcc ResolveStageCollision_Block_2 ; CPU:$ED30 PRG:2D30 90 0C - lda PlayerHorizontalImpulse,x ; CPU:$ED32 PRG:2D32 BD 1B 04 - bpl ResolveStageCollision_Block ; CPU:$ED35 PRG:2D35 10 F4 - lda #$00 ; CPU:$ED37 PRG:2D37 A9 00 - sta GameplayObjectCollisionFlags ; CPU:$ED39 PRG:2D39 85 CC - jmp ResolveStageCollision_Store ; CPU:$ED3B PRG:2D3B 4C E1 ED + lda PlayerPosY,x ; CPU:$ED2E PRG:2D2E B5 9A + cmp #$F9 ; CPU:$ED30 PRG:2D30 C9 F9 + bcc ResolveStageCollision_Block_2 ; CPU:$ED32 PRG:2D32 90 0C + lda PlayerHorizontalImpulse,x ; CPU:$ED34 PRG:2D34 BD 1B 04 + bpl ResolveStageCollision_Block; CPU:$ED37 PRG:2D37 10 F4 + lda #$00 ; CPU:$ED39 PRG:2D39 A9 00 + sta GameplayObjectCollisionFlags ; CPU:$ED3B PRG:2D3B 85 CC + jmp ResolveStageCollision_Store; CPU:$ED3D PRG:2D3D 4C E1 ED ResolveStageCollision_Block_2: - ldy BoundsCandidateIndex ; CPU:$ED3E PRG:2D3E A4 CD - bmi UpdateSpecialObjectState_Block_3 ; CPU:$ED40 PRG:2D40 30 E3 + ldy BoundsCandidateIndex ; CPU:$ED40 PRG:2D40 A4 CD + bmi UpdateSpecialObjectState_Block_3 ; CPU:$ED42 PRG:2D42 30 E3 ResolveStageCollision_Load: - lda #$00 ; CPU:$ED42 PRG:2D42 A9 00 - sta GameplayObjectCollisionFlags ; CPU:$ED44 PRG:2D44 85 CC - lda (BoundsTopPtrLo),y ; CPU:$ED46 PRG:2D46 B1 27 - sec ; CPU:$ED48 PRG:2D48 38 - sbc #$18 ; CPU:$ED49 PRG:2D49 E9 18 - cmp PlayerPosY,x ; CPU:$ED4B PRG:2D4B D5 9A - bcs ResolveStageCollision_Block_10 ; CPU:$ED4D PRG:2D4D B0 65 - adc #$03 ; CPU:$ED4F PRG:2D4F 69 03 - cmp PlayerPosY,x ; CPU:$ED51 PRG:2D51 D5 9A - bcc ResolveStageCollision_Block_3 ; CPU:$ED53 PRG:2D53 90 04 - lda #$01 ; CPU:$ED55 PRG:2D55 A9 01 - bne ResolveStageCollision_Block_4 ; CPU:$ED57 PRG:2D57 D0 0E + lda #$00 ; CPU:$ED44 PRG:2D44 A9 00 + sta GameplayObjectCollisionFlags ; CPU:$ED46 PRG:2D46 85 CC + lda (BoundsTopPtrLo),y ; CPU:$ED48 PRG:2D48 B1 27 + sec ; CPU:$ED4A PRG:2D4A 38 + sbc #$18 ; CPU:$ED4B PRG:2D4B E9 18 + cmp PlayerPosY,x ; CPU:$ED4D PRG:2D4D D5 9A + bcs ResolveStageCollision_Block_10 ; CPU:$ED4F PRG:2D4F B0 65 + adc #$03 ; CPU:$ED51 PRG:2D51 69 03 + cmp PlayerPosY,x ; CPU:$ED53 PRG:2D53 D5 9A + bcc ResolveStageCollision_Block_3 ; CPU:$ED55 PRG:2D55 90 04 + lda #$01 ; CPU:$ED57 PRG:2D57 A9 01 + bne ResolveStageCollision_Block_4 ; CPU:$ED59 PRG:2D59 D0 0E ResolveStageCollision_Block_3: - lda (BoundsBottomPtrLo),y ; CPU:$ED59 PRG:2D59 B1 29 - cmp PlayerPosY,x ; CPU:$ED5B PRG:2D5B D5 9A - bcc ResolveStageCollision_Block_10 ; CPU:$ED5D PRG:2D5D 90 55 - sbc #$03 ; CPU:$ED5F PRG:2D5F E9 03 - cmp PlayerPosY,x ; CPU:$ED61 PRG:2D61 D5 9A - bcs ResolveStageCollision_Block_7 ; CPU:$ED63 PRG:2D63 B0 22 - lda #$02 ; CPU:$ED65 PRG:2D65 A9 02 + lda (BoundsBottomPtrLo),y ; CPU:$ED5B PRG:2D5B B1 29 + cmp PlayerPosY,x ; CPU:$ED5D PRG:2D5D D5 9A + bcc ResolveStageCollision_Block_10 ; CPU:$ED5F PRG:2D5F 90 55 + sbc #$03 ; CPU:$ED61 PRG:2D61 E9 03 + cmp PlayerPosY,x ; CPU:$ED63 PRG:2D63 D5 9A + bcs ResolveStageCollision_Block_7 ; CPU:$ED65 PRG:2D65 B0 22 + lda #$02 ; CPU:$ED67 PRG:2D67 A9 02 ResolveStageCollision_Block_4: - sta GameplayObjectCollisionFlags ; CPU:$ED67 PRG:2D67 85 CC - lda (BoundsLeftPtrLo),y ; CPU:$ED69 PRG:2D69 B1 23 - cmp #$10 ; CPU:$ED6B PRG:2D6B C9 10 - beq ResolveStageCollision_Block_5 ; CPU:$ED6D PRG:2D6D F0 07 - sec ; CPU:$ED6F PRG:2D6F 38 - sbc #$0C ; CPU:$ED70 PRG:2D70 E9 0C - cmp PlayerPosX,x ; CPU:$ED72 PRG:2D72 D5 91 - bcs ResolveStageCollision_Block_6 ; CPU:$ED74 PRG:2D74 B0 0D + sta GameplayObjectCollisionFlags ; CPU:$ED69 PRG:2D69 85 CC + lda (BoundsLeftPtrLo),y ; CPU:$ED6B PRG:2D6B B1 23 + cmp #$10 ; CPU:$ED6D PRG:2D6D C9 10 + beq ResolveStageCollision_Block_5 ; CPU:$ED6F PRG:2D6F F0 07 + sec ; CPU:$ED71 PRG:2D71 38 + sbc #$0C ; CPU:$ED72 PRG:2D72 E9 0C + cmp PlayerPosX,x ; CPU:$ED74 PRG:2D74 D5 91 + bcs ResolveStageCollision_Block_6 ; CPU:$ED76 PRG:2D76 B0 0D ResolveStageCollision_Block_5: - lda (BoundsRightPtrLo),y ; CPU:$ED76 PRG:2D76 B1 25 - cmp #$FF ; CPU:$ED78 PRG:2D78 C9 FF - beq ResolveStageCollision_Block_7 ; CPU:$ED7A PRG:2D7A F0 0B - sec ; CPU:$ED7C PRG:2D7C 38 - sbc #$04 ; CPU:$ED7D PRG:2D7D E9 04 - cmp PlayerPosX,x ; CPU:$ED7F PRG:2D7F D5 91 - bcs ResolveStageCollision_Block_7 ; CPU:$ED81 PRG:2D81 B0 04 + lda (BoundsRightPtrLo),y ; CPU:$ED78 PRG:2D78 B1 25 + cmp #$FF ; CPU:$ED7A PRG:2D7A C9 FF + beq ResolveStageCollision_Block_7 ; CPU:$ED7C PRG:2D7C F0 0B + sec ; CPU:$ED7E PRG:2D7E 38 + sbc #$04 ; CPU:$ED7F PRG:2D7F E9 04 + cmp PlayerPosX,x ; CPU:$ED81 PRG:2D81 D5 91 + bcs ResolveStageCollision_Block_7 ; CPU:$ED83 PRG:2D83 B0 04 ResolveStageCollision_Block_6: - lda #$00 ; CPU:$ED83 PRG:2D83 A9 00 - sta GameplayObjectCollisionFlags ; CPU:$ED85 PRG:2D85 85 CC + lda #$00 ; CPU:$ED85 PRG:2D85 A9 00 + sta GameplayObjectCollisionFlags ; CPU:$ED87 PRG:2D87 85 CC ResolveStageCollision_Block_7: - lda (BoundsLeftPtrLo),y ; CPU:$ED87 PRG:2D87 B1 23 - sec ; CPU:$ED89 PRG:2D89 38 - sbc #$10 ; CPU:$ED8A PRG:2D8A E9 10 - beq ResolveStageCollision_Block_8 ; CPU:$ED8C PRG:2D8C F0 10 - cmp PlayerPosX,x ; CPU:$ED8E PRG:2D8E D5 91 - bcs ResolveStageCollision_Block_10 ; CPU:$ED90 PRG:2D90 B0 22 - adc #$04 ; CPU:$ED92 PRG:2D92 69 04 - cmp PlayerPosX,x ; CPU:$ED94 PRG:2D94 D5 91 - bcc ResolveStageCollision_Block_8 ; CPU:$ED96 PRG:2D96 90 06 - lda GameplayObjectCollisionFlags ; CPU:$ED98 PRG:2D98 A5 CC - ora #$04 ; CPU:$ED9A PRG:2D9A 09 04 - bne ResolveStageCollision_Block_9 ; CPU:$ED9C PRG:2D9C D0 14 + lda (BoundsLeftPtrLo),y ; CPU:$ED89 PRG:2D89 B1 23 + sec ; CPU:$ED8B PRG:2D8B 38 + sbc #$10 ; CPU:$ED8C PRG:2D8C E9 10 + beq ResolveStageCollision_Block_8 ; CPU:$ED8E PRG:2D8E F0 10 + cmp PlayerPosX,x ; CPU:$ED90 PRG:2D90 D5 91 + bcs ResolveStageCollision_Block_10 ; CPU:$ED92 PRG:2D92 B0 22 + adc #$04 ; CPU:$ED94 PRG:2D94 69 04 + cmp PlayerPosX,x ; CPU:$ED96 PRG:2D96 D5 91 + bcc ResolveStageCollision_Block_8 ; CPU:$ED98 PRG:2D98 90 06 + lda GameplayObjectCollisionFlags ; CPU:$ED9A PRG:2D9A A5 CC + ora #$04 ; CPU:$ED9C PRG:2D9C 09 04 + bne ResolveStageCollision_Block_9 ; CPU:$ED9E PRG:2D9E D0 14 ResolveStageCollision_Block_8: - lda (BoundsRightPtrLo),y ; CPU:$ED9E PRG:2D9E B1 25 - cmp #$FF ; CPU:$EDA0 PRG:2DA0 C9 FF - beq ResolveStageCollision_Block_10 ; CPU:$EDA2 PRG:2DA2 F0 10 - cmp PlayerPosX,x ; CPU:$EDA4 PRG:2DA4 D5 91 - bcc ResolveStageCollision_Block_10 ; CPU:$EDA6 PRG:2DA6 90 0C - sbc #$04 ; CPU:$EDA8 PRG:2DA8 E9 04 - cmp PlayerPosX,x ; CPU:$EDAA PRG:2DAA D5 91 - bcs ResolveStageCollision_Block_10 ; CPU:$EDAC PRG:2DAC B0 06 - lda GameplayObjectCollisionFlags ; CPU:$EDAE PRG:2DAE A5 CC - ora #$08 ; CPU:$EDB0 PRG:2DB0 09 08 + lda (BoundsRightPtrLo),y ; CPU:$EDA0 PRG:2DA0 B1 25 + cmp #$FF ; CPU:$EDA2 PRG:2DA2 C9 FF + beq ResolveStageCollision_Block_10 ; CPU:$EDA4 PRG:2DA4 F0 10 + cmp PlayerPosX,x ; CPU:$EDA6 PRG:2DA6 D5 91 + bcc ResolveStageCollision_Block_10 ; CPU:$EDA8 PRG:2DA8 90 0C + sbc #$04 ; CPU:$EDAA PRG:2DAA E9 04 + cmp PlayerPosX,x ; CPU:$EDAC PRG:2DAC D5 91 + bcs ResolveStageCollision_Block_10 ; CPU:$EDAE PRG:2DAE B0 06 + lda GameplayObjectCollisionFlags ; CPU:$EDB0 PRG:2DB0 A5 CC + ora #$08 ; CPU:$EDB2 PRG:2DB2 09 08 ResolveStageCollision_Block_9: - sta GameplayObjectCollisionFlags ; CPU:$EDB2 PRG:2DB2 85 CC + sta GameplayObjectCollisionFlags ; CPU:$EDB4 PRG:2DB4 85 CC ResolveStageCollision_Block_10: - lda GameplayObjectCollisionFlags ; CPU:$EDB4 PRG:2DB4 A5 CC - bne ResolveStageCollision_Block_12 ; CPU:$EDB6 PRG:2DB6 D0 07 - dey ; CPU:$EDB8 PRG:2DB8 88 - bmi ResolveStageCollision_Block_11 ; CPU:$EDB9 PRG:2DB9 30 03 - jmp ResolveStageCollision_Load ; CPU:$EDBB PRG:2DBB 4C 44 ED + lda GameplayObjectCollisionFlags ; CPU:$EDB6 PRG:2DB6 A5 CC + bne ResolveStageCollision_Block_12 ; CPU:$EDB8 PRG:2DB8 D0 07 + dey ; CPU:$EDBA PRG:2DBA 88 + bmi ResolveStageCollision_Block_11 ; CPU:$EDBB PRG:2DBB 30 03 + jmp ResolveStageCollision_Load ; CPU:$EDBD PRG:2DBD 4C 44 ED ResolveStageCollision_Block_11: - rts ; CPU:$EDBE PRG:2DBE 60 + rts ; CPU:$EDC0 PRG:2DC0 60 ResolveStageCollision_Block_12: - lsr GameplayObjectCollisionFlags ; CPU:$EDBF PRG:2DBF 46 CC - bcc ResolveStageCollision_Block_13 ; CPU:$EDC1 PRG:2DC1 90 11 - lda PlayerHorizontalImpulse,x ; CPU:$EDC3 PRG:2DC3 BD 1B 04 - bmi ResolveStageCollision_Block_13 ; CPU:$EDC6 PRG:2DC6 30 0C - lda (BoundsTopPtrLo),y ; CPU:$EDC8 PRG:2DC8 B1 27 - sbc #$18 ; CPU:$EDCA PRG:2DCA E9 18 - sta PlayerPosY,x ; CPU:$EDCC PRG:2DCC 95 9A - inc PlayerPosY,x ; CPU:$EDCE PRG:2DCE F6 9A - lda #$01 ; CPU:$EDD0 PRG:2DD0 A9 01 - sta BonusEffectCounter ; CPU:$EDD2 PRG:2DD2 85 CB + lsr GameplayObjectCollisionFlags ; CPU:$EDC1 PRG:2DC1 46 CC + bcc ResolveStageCollision_Block_13 ; CPU:$EDC3 PRG:2DC3 90 11 + lda PlayerHorizontalImpulse,x ; CPU:$EDC5 PRG:2DC5 BD 1B 04 + bmi ResolveStageCollision_Block_13 ; CPU:$EDC8 PRG:2DC8 30 0C + lda (BoundsTopPtrLo),y ; CPU:$EDCA PRG:2DCA B1 27 + sbc #$18 ; CPU:$EDCC PRG:2DCC E9 18 + sta PlayerPosY,x ; CPU:$EDCE PRG:2DCE 95 9A + inc PlayerPosY,x ; CPU:$EDD0 PRG:2DD0 F6 9A + lda #$01 ; CPU:$EDD2 PRG:2DD2 A9 01 + sta BonusEffectCounter ; CPU:$EDD4 PRG:2DD4 85 CB ResolveStageCollision_Block_13: - lsr GameplayObjectCollisionFlags ; CPU:$EDD4 PRG:2DD4 46 CC - bcc ResolveStageCollision_Block_15 ; CPU:$EDD6 PRG:2DD6 90 1A - lda PlayerHorizontalImpulse,x ; CPU:$EDD8 PRG:2DD8 BD 1B 04 - bpl ResolveStageCollision_Block_15 ; CPU:$EDDB PRG:2DDB 10 15 - lda (BoundsBottomPtrLo),y ; CPU:$EDDD PRG:2DDD B1 29 + lsr GameplayObjectCollisionFlags ; CPU:$EDD6 PRG:2DD6 46 CC + bcc ResolveStageCollision_Block_15 ; CPU:$EDD8 PRG:2DD8 90 1A + lda PlayerHorizontalImpulse,x ; CPU:$EDDA PRG:2DDA BD 1B 04 + bpl ResolveStageCollision_Block_15 ; CPU:$EDDD PRG:2DDD 10 15 + lda (BoundsBottomPtrLo),y ; CPU:$EDDF PRG:2DDF B1 29 ResolveStageCollision_Store: - sta PlayerPosY,x ; CPU:$EDDF PRG:2DDF 95 9A - jsr $F107 ; CPU:$EDE1 PRG:2DE1 20 07 F1 - jsr $F18C ; CPU:$EDE4 PRG:2DE4 20 8C F1 - cpx #$02 ; CPU:$EDE7 PRG:2DE7 E0 02 - bcs ResolveStageCollision_Block_14 ; CPU:$EDE9 PRG:2DE9 B0 03 - jsr $CC33 ; CPU:$EDEB PRG:2DEB 20 33 CC + sta PlayerPosY,x ; CPU:$EDE1 PRG:2DE1 95 9A + jsr $F107 ; CPU:$EDE3 PRG:2DE3 20 07 F1 + jsr $F18C ; CPU:$EDE6 PRG:2DE6 20 8C F1 + cpx #$02 ; CPU:$EDE9 PRG:2DE9 E0 02 + bcs ResolveStageCollision_Block_14 ; CPU:$EDEB PRG:2DEB B0 03 + jsr $CC33 ; CPU:$EDED PRG:2DED 20 33 CC ResolveStageCollision_Block_14: - lda BonusEffectCounter ; CPU:$EDEE PRG:2DEE A5 CB - bne ResolveStageCollision_Block_18 ; CPU:$EDF0 PRG:2DF0 D0 30 + lda BonusEffectCounter ; CPU:$EDF0 PRG:2DF0 A5 CB + bne ResolveStageCollision_Block_18 ; CPU:$EDF2 PRG:2DF2 D0 30 ResolveStageCollision_Block_15: - lsr GameplayObjectCollisionFlags ; CPU:$EDF2 PRG:2DF2 46 CC - bcc ResolveStageCollision_Block_16 ; CPU:$EDF4 PRG:2DF4 90 07 - lda PlayerVerticalImpulse,x ; CPU:$EDF6 PRG:2DF6 BD 2D 04 - bmi ResolveStageCollision_Block_16 ; CPU:$EDF9 PRG:2DF9 30 02 - bpl ResolveStageCollision_Block_17 ; CPU:$EDFB PRG:2DFB 10 09 + lsr GameplayObjectCollisionFlags ; CPU:$EDF4 PRG:2DF4 46 CC + bcc ResolveStageCollision_Block_16 ; CPU:$EDF6 PRG:2DF6 90 07 + lda PlayerVerticalImpulse,x ; CPU:$EDF8 PRG:2DF8 BD 2D 04 + bmi ResolveStageCollision_Block_16 ; CPU:$EDFB PRG:2DFB 30 02 + bpl ResolveStageCollision_Block_17 ; CPU:$EDFD PRG:2DFD 10 09 ResolveStageCollision_Block_16: - lsr GameplayObjectCollisionFlags ; CPU:$EDFD PRG:2DFD 46 CC - bcc ResolveStageCollision_Block_18 ; CPU:$EDFF PRG:2DFF 90 21 - lda PlayerVerticalImpulse,x ; CPU:$EE01 PRG:2E01 BD 2D 04 - bpl ResolveStageCollision_Block_18 ; CPU:$EE04 PRG:2E04 10 1C + lsr GameplayObjectCollisionFlags ; CPU:$EDFF PRG:2DFF 46 CC + bcc ResolveStageCollision_Block_18 ; CPU:$EE01 PRG:2E01 90 21 + lda PlayerVerticalImpulse,x ; CPU:$EE03 PRG:2E03 BD 2D 04 + bpl ResolveStageCollision_Block_18 ; CPU:$EE06 PRG:2E06 10 1C ResolveStageCollision_Block_17: - jsr $F0DE ; CPU:$EE06 PRG:2E06 20 DE F0 - jsr $F172 ; CPU:$EE09 PRG:2E09 20 72 F1 - lda PlayerVerticalImpulse,x ; CPU:$EE0C PRG:2E0C BD 2D 04 - ora $0424,x ; CPU:$EE0F PRG:2E0F 1D 24 04 - beq ResolveStageCollision_Block_18 ; CPU:$EE12 PRG:2E12 F0 0E - lda PlayerVariantTable,x ; CPU:$EE14 PRG:2E14 BD 48 04 - eor #$01 ; CPU:$EE17 PRG:2E17 49 01 - sta PlayerVariantTable,x ; CPU:$EE19 PRG:2E19 9D 48 04 - lda SoundRequestFlags1 ; CPU:$EE1C PRG:2E1C A5 F1 - ora #$02 ; CPU:$EE1E PRG:2E1E 09 02 - sta SoundRequestFlags1 ; CPU:$EE20 PRG:2E20 85 F1 + jsr $F0DE ; CPU:$EE08 PRG:2E08 20 DE F0 + jsr $F172 ; CPU:$EE0B PRG:2E0B 20 72 F1 + lda PlayerVerticalImpulse,x ; CPU:$EE0E PRG:2E0E BD 2D 04 + ora $0424,x ; CPU:$EE11 PRG:2E11 1D 24 04 + beq ResolveStageCollision_Block_18 ; CPU:$EE14 PRG:2E14 F0 0E + lda PlayerVariantTable,x ; CPU:$EE16 PRG:2E16 BD 48 04 + eor #$01 ; CPU:$EE19 PRG:2E19 49 01 + sta PlayerVariantTable,x ; CPU:$EE1B PRG:2E1B 9D 48 04 + lda SoundRequestFlags1 ; CPU:$EE1E PRG:2E1E A5 F1 + ora #$02 ; CPU:$EE20 PRG:2E20 09 02 + sta SoundRequestFlags1 ; CPU:$EE22 PRG:2E22 85 F1 ResolveStageCollision_Block_18: - rts ; CPU:$EE22 PRG:2E22 60 + rts ; CPU:$EE24 PRG:2E24 60 ; CheckObjectInteractions ; Purpose: compare active object pairs and dispatch overlap resolution. ; Inputs: active object arrays. ; Returns: collisions resolved; event and score state may be updated. CheckObjectInteractions: - ldx #$07 ; CPU:$EE23 PRG:2E23 A2 07 + ldx #$07 ; CPU:$EE25 PRG:2E25 A2 07 CheckObjectInteractions_Block: - stx Temp12 ; CPU:$EE25 PRG:2E25 86 12 - ldy Temp12 ; CPU:$EE27 PRG:2E27 A4 12 - dey ; CPU:$EE29 PRG:2E29 88 - bpl CheckObjectInteractions_Load ; CPU:$EE2A PRG:2E2A 10 03 + stx Temp12 ; CPU:$EE27 PRG:2E27 86 12 + ldy Temp12 ; CPU:$EE29 PRG:2E29 A4 12 + dey ; CPU:$EE2B PRG:2E2B 88 + bpl CheckObjectInteractions_Load ; CPU:$EE2C PRG:2E2C 10 03 CheckObjectInteractions_Block_1: - jmp CheckObjectInteractions_Decrement ; CPU:$EE2C PRG:2E2C 4C 2A EF + jmp CheckObjectInteractions_Decrement ; CPU:$EE2E PRG:2E2E 4C 2A EF CheckObjectInteractions_Load: - lda PlayerSlotState,x ; CPU:$EE2F PRG:2E2F B5 88 - bmi CheckObjectInteractions_Block_1 ; CPU:$EE31 PRG:2E31 30 F9 - beq CheckObjectInteractions_Block_1 ; CPU:$EE33 PRG:2E33 F0 F7 - lda a:PlayerSlotState,y ; CPU:$EE35 PRG:2E35 B9 88 00 - bmi CheckObjectInteractions_Block_1 ; CPU:$EE38 PRG:2E38 30 F2 - beq CheckObjectInteractions_Block_1 ; CPU:$EE3A PRG:2E3A F0 F0 - lda #$00 ; CPU:$EE3C PRG:2E3C A9 00 - sta GameplayObjectCollisionFlags ; CPU:$EE3E PRG:2E3E 85 CC - lda a:PlayerPosY,y ; CPU:$EE40 PRG:2E40 B9 9A 00 - sec ; CPU:$EE43 PRG:2E43 38 - sbc PlayerPosY,x ; CPU:$EE44 PRG:2E44 F5 9A - jsr AbsoluteDifference ; CPU:$EE46 PRG:2E46 20 8E F0 - cmp #$18 ; CPU:$EE49 PRG:2E49 C9 18 - bcs CheckObjectInteractions_Block_7 ; CPU:$EE4B PRG:2E4B B0 71 - lda PlayerPosY,x ; CPU:$EE4D PRG:2E4D B5 9A - clc ; CPU:$EE4F PRG:2E4F 18 - adc #$18 ; CPU:$EE50 PRG:2E50 69 18 - sta Temp12 ; CPU:$EE52 PRG:2E52 85 12 - lda a:PlayerPosY,y ; CPU:$EE54 PRG:2E54 B9 9A 00 - clc ; CPU:$EE57 PRG:2E57 18 - adc #$07 ; CPU:$EE58 PRG:2E58 69 07 - sec ; CPU:$EE5A PRG:2E5A 38 - sbc Temp12 ; CPU:$EE5B PRG:2E5B E5 12 - jsr AbsoluteDifference ; CPU:$EE5D PRG:2E5D 20 8E F0 - cmp #$04 ; CPU:$EE60 PRG:2E60 C9 04 - bcs CheckObjectInteractions_Block_2 ; CPU:$EE62 PRG:2E62 B0 04 - lda #$01 ; CPU:$EE64 PRG:2E64 A9 01 - bne CheckObjectInteractions_Block_3 ; CPU:$EE66 PRG:2E66 D0 12 + lda PlayerSlotState,x ; CPU:$EE31 PRG:2E31 B5 88 + bmi CheckObjectInteractions_Block_1 ; CPU:$EE33 PRG:2E33 30 F9 + beq CheckObjectInteractions_Block_1 ; CPU:$EE35 PRG:2E35 F0 F7 + lda a:PlayerSlotState,y ; CPU:$EE37 PRG:2E37 B9 88 00 + bmi CheckObjectInteractions_Block_1 ; CPU:$EE3A PRG:2E3A 30 F2 + beq CheckObjectInteractions_Block_1 ; CPU:$EE3C PRG:2E3C F0 F0 + lda #$00 ; CPU:$EE3E PRG:2E3E A9 00 + sta GameplayObjectCollisionFlags ; CPU:$EE40 PRG:2E40 85 CC + lda a:PlayerPosY,y ; CPU:$EE42 PRG:2E42 B9 9A 00 + sec ; CPU:$EE45 PRG:2E45 38 + sbc PlayerPosY,x ; CPU:$EE46 PRG:2E46 F5 9A + jsr AbsoluteDifference ; CPU:$EE48 PRG:2E48 20 8E F0 + cmp #$18 ; CPU:$EE4B PRG:2E4B C9 18 + bcs CheckObjectInteractions_Block_7 ; CPU:$EE4D PRG:2E4D B0 71 + lda PlayerPosY,x ; CPU:$EE4F PRG:2E4F B5 9A + clc ; CPU:$EE51 PRG:2E51 18 + adc #$18 ; CPU:$EE52 PRG:2E52 69 18 + sta Temp12 ; CPU:$EE54 PRG:2E54 85 12 + lda a:PlayerPosY,y ; CPU:$EE56 PRG:2E56 B9 9A 00 + clc ; CPU:$EE59 PRG:2E59 18 + adc #$07 ; CPU:$EE5A PRG:2E5A 69 07 + sec ; CPU:$EE5C PRG:2E5C 38 + sbc Temp12 ; CPU:$EE5D PRG:2E5D E5 12 + jsr AbsoluteDifference ; CPU:$EE5F PRG:2E5F 20 8E F0 + cmp #$04 ; CPU:$EE62 PRG:2E62 C9 04 + bcs CheckObjectInteractions_Block_2 ; CPU:$EE64 PRG:2E64 B0 04 + lda #$01 ; CPU:$EE66 PRG:2E66 A9 01 + bne CheckObjectInteractions_Block_3 ; CPU:$EE68 PRG:2E68 D0 12 CheckObjectInteractions_Block_2: - lda a:PlayerPosY,y ; CPU:$EE68 PRG:2E68 B9 9A 00 - clc ; CPU:$EE6B PRG:2E6B 18 - adc #$11 ; CPU:$EE6C PRG:2E6C 69 11 - sec ; CPU:$EE6E PRG:2E6E 38 - sbc PlayerPosY,x ; CPU:$EE6F PRG:2E6F F5 9A - jsr AbsoluteDifference ; CPU:$EE71 PRG:2E71 20 8E F0 - cmp #$04 ; CPU:$EE74 PRG:2E74 C9 04 - bcs CheckObjectInteractions_Block_4 ; CPU:$EE76 PRG:2E76 B0 15 - lda #$02 ; CPU:$EE78 PRG:2E78 A9 02 + lda a:PlayerPosY,y ; CPU:$EE6A PRG:2E6A B9 9A 00 + clc ; CPU:$EE6D PRG:2E6D 18 + adc #$11 ; CPU:$EE6E PRG:2E6E 69 11 + sec ; CPU:$EE70 PRG:2E70 38 + sbc PlayerPosY,x ; CPU:$EE71 PRG:2E71 F5 9A + jsr AbsoluteDifference ; CPU:$EE73 PRG:2E73 20 8E F0 + cmp #$04 ; CPU:$EE76 PRG:2E76 C9 04 + bcs CheckObjectInteractions_Block_4 ; CPU:$EE78 PRG:2E78 B0 15 + lda #$02 ; CPU:$EE7A PRG:2E7A A9 02 CheckObjectInteractions_Block_3: - sta GameplayObjectCollisionFlags ; CPU:$EE7A PRG:2E7A 85 CC - lda a:PlayerPosX,y ; CPU:$EE7C PRG:2E7C B9 91 00 - sec ; CPU:$EE7F PRG:2E7F 38 - sbc PlayerPosX,x ; CPU:$EE80 PRG:2E80 F5 91 - jsr AbsoluteDifference ; CPU:$EE82 PRG:2E82 20 8E F0 - cmp #$10 ; CPU:$EE85 PRG:2E85 C9 10 - bcc CheckObjectInteractions_Block_4 ; CPU:$EE87 PRG:2E87 90 04 - lda #$00 ; CPU:$EE89 PRG:2E89 A9 00 - sta GameplayObjectCollisionFlags ; CPU:$EE8B PRG:2E8B 85 CC + sta GameplayObjectCollisionFlags ; CPU:$EE7C PRG:2E7C 85 CC + lda a:PlayerPosX,y ; CPU:$EE7E PRG:2E7E B9 91 00 + sec ; CPU:$EE81 PRG:2E81 38 + sbc PlayerPosX,x ; CPU:$EE82 PRG:2E82 F5 91 + jsr AbsoluteDifference ; CPU:$EE84 PRG:2E84 20 8E F0 + cmp #$10 ; CPU:$EE87 PRG:2E87 C9 10 + bcc CheckObjectInteractions_Block_4 ; CPU:$EE89 PRG:2E89 90 04 + lda #$00 ; CPU:$EE8B PRG:2E8B A9 00 + sta GameplayObjectCollisionFlags ; CPU:$EE8D PRG:2E8D 85 CC CheckObjectInteractions_Block_4: - lda PlayerPosX,x ; CPU:$EE8D PRG:2E8D B5 91 - clc ; CPU:$EE8F PRG:2E8F 18 - adc #$10 ; CPU:$EE90 PRG:2E90 69 10 - sta Temp12 ; CPU:$EE92 PRG:2E92 85 12 - lda a:PlayerPosX,y ; CPU:$EE94 PRG:2E94 B9 91 00 - clc ; CPU:$EE97 PRG:2E97 18 - adc #$07 ; CPU:$EE98 PRG:2E98 69 07 - sec ; CPU:$EE9A PRG:2E9A 38 - sbc Temp12 ; CPU:$EE9B PRG:2E9B E5 12 - jsr AbsoluteDifference ; CPU:$EE9D PRG:2E9D 20 8E F0 - cmp #$04 ; CPU:$EEA0 PRG:2EA0 C9 04 - bcs CheckObjectInteractions_Block_5 ; CPU:$EEA2 PRG:2EA2 B0 04 - lda #$04 ; CPU:$EEA4 PRG:2EA4 A9 04 - bne CheckObjectInteractions_Block_6 ; CPU:$EEA6 PRG:2EA6 D0 12 + lda PlayerPosX,x ; CPU:$EE8F PRG:2E8F B5 91 + clc ; CPU:$EE91 PRG:2E91 18 + adc #$10 ; CPU:$EE92 PRG:2E92 69 10 + sta Temp12 ; CPU:$EE94 PRG:2E94 85 12 + lda a:PlayerPosX,y ; CPU:$EE96 PRG:2E96 B9 91 00 + clc ; CPU:$EE99 PRG:2E99 18 + adc #$07 ; CPU:$EE9A PRG:2E9A 69 07 + sec ; CPU:$EE9C PRG:2E9C 38 + sbc Temp12 ; CPU:$EE9D PRG:2E9D E5 12 + jsr AbsoluteDifference ; CPU:$EE9F PRG:2E9F 20 8E F0 + cmp #$04 ; CPU:$EEA2 PRG:2EA2 C9 04 + bcs CheckObjectInteractions_Block_5 ; CPU:$EEA4 PRG:2EA4 B0 04 + lda #$04 ; CPU:$EEA6 PRG:2EA6 A9 04 + bne CheckObjectInteractions_Block_6 ; CPU:$EEA8 PRG:2EA8 D0 12 CheckObjectInteractions_Block_5: - lda a:PlayerPosX,y ; CPU:$EEA8 PRG:2EA8 B9 91 00 - clc ; CPU:$EEAB PRG:2EAB 18 - adc #$09 ; CPU:$EEAC PRG:2EAC 69 09 - sec ; CPU:$EEAE PRG:2EAE 38 - sbc PlayerPosX,x ; CPU:$EEAF PRG:2EAF F5 91 - jsr AbsoluteDifference ; CPU:$EEB1 PRG:2EB1 20 8E F0 - cmp #$04 ; CPU:$EEB4 PRG:2EB4 C9 04 - bcs CheckObjectInteractions_Block_7 ; CPU:$EEB6 PRG:2EB6 B0 06 - lda #$08 ; CPU:$EEB8 PRG:2EB8 A9 08 + lda a:PlayerPosX,y ; CPU:$EEAA PRG:2EAA B9 91 00 + clc ; CPU:$EEAD PRG:2EAD 18 + adc #$09 ; CPU:$EEAE PRG:2EAE 69 09 + sec ; CPU:$EEB0 PRG:2EB0 38 + sbc PlayerPosX,x ; CPU:$EEB1 PRG:2EB1 F5 91 + jsr AbsoluteDifference ; CPU:$EEB3 PRG:2EB3 20 8E F0 + cmp #$04 ; CPU:$EEB6 PRG:2EB6 C9 04 + bcs CheckObjectInteractions_Block_7 ; CPU:$EEB8 PRG:2EB8 B0 06 + lda #$08 ; CPU:$EEBA PRG:2EBA A9 08 CheckObjectInteractions_Block_6: - ora GameplayObjectCollisionFlags ; CPU:$EEBA PRG:2EBA 05 CC - sta GameplayObjectCollisionFlags ; CPU:$EEBC PRG:2EBC 85 CC + ora GameplayObjectCollisionFlags ; CPU:$EEBC PRG:2EBC 05 CC + sta GameplayObjectCollisionFlags ; CPU:$EEBE PRG:2EBE 85 CC CheckObjectInteractions_Block_7: - lda #$00 ; CPU:$EEBE PRG:2EBE A9 00 - sta $4B ; CPU:$EEC0 PRG:2EC0 85 4B - lsr GameplayObjectCollisionFlags ; CPU:$EEC2 PRG:2EC2 46 CC - bcc CheckObjectInteractions_Block_8 ; CPU:$EEC4 PRG:2EC4 90 05 - jsr $F0A6 ; CPU:$EEC6 PRG:2EC6 20 A6 F0 - bmi CheckObjectInteractions_Block_9 ; CPU:$EEC9 PRG:2EC9 30 09 + lda #$00 ; CPU:$EEC0 PRG:2EC0 A9 00 + sta $4B ; CPU:$EEC2 PRG:2EC2 85 4B + lsr GameplayObjectCollisionFlags ; CPU:$EEC4 PRG:2EC4 46 CC + bcc CheckObjectInteractions_Block_8 ; CPU:$EEC6 PRG:2EC6 90 05 + jsr $F0A6 ; CPU:$EEC8 PRG:2EC8 20 A6 F0 + bmi CheckObjectInteractions_Block_9 ; CPU:$EECB PRG:2ECB 30 09 CheckObjectInteractions_Block_8: - lsr GameplayObjectCollisionFlags ; CPU:$EECB PRG:2ECB 46 CC - bcc CheckObjectInteractions_Block_11 ; CPU:$EECD PRG:2ECD 90 20 - jsr $F0A6 ; CPU:$EECF PRG:2ECF 20 A6 F0 - bmi CheckObjectInteractions_Block_11 ; CPU:$EED2 PRG:2ED2 30 1B + lsr GameplayObjectCollisionFlags ; CPU:$EECD PRG:2ECD 46 CC + bcc CheckObjectInteractions_Block_11 ; CPU:$EECF PRG:2ECF 90 20 + jsr $F0A6 ; CPU:$EED1 PRG:2ED1 20 A6 F0 + bmi CheckObjectInteractions_Block_11 ; CPU:$EED4 PRG:2ED4 30 1B CheckObjectInteractions_Block_9: - jsr $F0BD ; CPU:$EED4 PRG:2ED4 20 BD F0 - bcs CheckObjectInteractions_Block_10 ; CPU:$EED7 PRG:2ED7 B0 12 - jsr $F107 ; CPU:$EED9 PRG:2ED9 20 07 F1 - jsr $F18C ; CPU:$EEDC PRG:2EDC 20 8C F1 - jsr $F0B4 ; CPU:$EEDF PRG:2EDF 20 B4 F0 - jsr $F107 ; CPU:$EEE2 PRG:2EE2 20 07 F1 - jsr $F18C ; CPU:$EEE5 PRG:2EE5 20 8C F1 - jsr $F0B4 ; CPU:$EEE8 PRG:2EE8 20 B4 F0 + jsr $F0BD ; CPU:$EED6 PRG:2ED6 20 BD F0 + bcs CheckObjectInteractions_Block_10 ; CPU:$EED9 PRG:2ED9 B0 12 + jsr $F107 ; CPU:$EEDB PRG:2EDB 20 07 F1 + jsr $F18C ; CPU:$EEDE PRG:2EDE 20 8C F1 + jsr $F0B4 ; CPU:$EEE1 PRG:2EE1 20 B4 F0 + jsr $F107 ; CPU:$EEE4 PRG:2EE4 20 07 F1 + jsr $F18C ; CPU:$EEE7 PRG:2EE7 20 8C F1 + jsr $F0B4 ; CPU:$EEEA PRG:2EEA 20 B4 F0 CheckObjectInteractions_Block_10: - lda #$01 ; CPU:$EEEB PRG:2EEB A9 01 - sta $4B ; CPU:$EEED PRG:2EED 85 4B + lda #$01 ; CPU:$EEED PRG:2EED A9 01 + sta $4B ; CPU:$EEEF PRG:2EEF 85 4B CheckObjectInteractions_Block_11: - lsr GameplayObjectCollisionFlags ; CPU:$EEEF PRG:2EEF 46 CC - bcc CheckObjectInteractions_Block_12 ; CPU:$EEF1 PRG:2EF1 90 05 - jsr $F098 ; CPU:$EEF3 PRG:2EF3 20 98 F0 - bmi CheckObjectInteractions_Block_13 ; CPU:$EEF6 PRG:2EF6 30 09 + lsr GameplayObjectCollisionFlags ; CPU:$EEF1 PRG:2EF1 46 CC + bcc CheckObjectInteractions_Block_12 ; CPU:$EEF3 PRG:2EF3 90 05 + jsr $F098 ; CPU:$EEF5 PRG:2EF5 20 98 F0 + bmi CheckObjectInteractions_Block_13 ; CPU:$EEF8 PRG:2EF8 30 09 CheckObjectInteractions_Block_12: - lsr GameplayObjectCollisionFlags ; CPU:$EEF8 PRG:2EF8 46 CC - bcc CheckObjectInteractions_Block_15 ; CPU:$EEFA PRG:2EFA 90 20 - jsr $F098 ; CPU:$EEFC PRG:2EFC 20 98 F0 - bmi CheckObjectInteractions_Block_15 ; CPU:$EEFF PRG:2EFF 30 1B + lsr GameplayObjectCollisionFlags ; CPU:$EEFA PRG:2EFA 46 CC + bcc CheckObjectInteractions_Block_15 ; CPU:$EEFC PRG:2EFC 90 20 + jsr $F098 ; CPU:$EEFE PRG:2EFE 20 98 F0 + bmi CheckObjectInteractions_Block_15 ; CPU:$EF01 PRG:2F01 30 1B CheckObjectInteractions_Block_13: - jsr $F0BD ; CPU:$EF01 PRG:2F01 20 BD F0 - bcs CheckObjectInteractions_Block_14 ; CPU:$EF04 PRG:2F04 B0 12 - jsr $F0DE ; CPU:$EF06 PRG:2F06 20 DE F0 - jsr $F172 ; CPU:$EF09 PRG:2F09 20 72 F1 - jsr $F0B4 ; CPU:$EF0C PRG:2F0C 20 B4 F0 - jsr $F0DE ; CPU:$EF0F PRG:2F0F 20 DE F0 - jsr $F172 ; CPU:$EF12 PRG:2F12 20 72 F1 - jsr $F0B4 ; CPU:$EF15 PRG:2F15 20 B4 F0 + jsr $F0BD ; CPU:$EF03 PRG:2F03 20 BD F0 + bcs CheckObjectInteractions_Block_14 ; CPU:$EF06 PRG:2F06 B0 12 + jsr $F0DE ; CPU:$EF08 PRG:2F08 20 DE F0 + jsr $F172 ; CPU:$EF0B PRG:2F0B 20 72 F1 + jsr $F0B4 ; CPU:$EF0E PRG:2F0E 20 B4 F0 + jsr $F0DE ; CPU:$EF11 PRG:2F11 20 DE F0 + jsr $F172 ; CPU:$EF14 PRG:2F14 20 72 F1 + jsr $F0B4 ; CPU:$EF17 PRG:2F17 20 B4 F0 CheckObjectInteractions_Block_14: - lda #$01 ; CPU:$EF18 PRG:2F18 A9 01 - sta $4B ; CPU:$EF1A PRG:2F1A 85 4B + lda #$01 ; CPU:$EF1A PRG:2F1A A9 01 + sta $4B ; CPU:$EF1C PRG:2F1C 85 4B CheckObjectInteractions_Block_15: - jsr ResolveObjectCollisionPair ; CPU:$EF1C PRG:2F1C 20 37 EF - jsr $F0B4 ; CPU:$EF1F PRG:2F1F 20 B4 F0 - jsr ResolveObjectCollisionPair ; CPU:$EF22 PRG:2F22 20 37 EF - jsr $F0B4 ; CPU:$EF25 PRG:2F25 20 B4 F0 + jsr ResolveObjectCollisionPair ; CPU:$EF1E PRG:2F1E 20 37 EF + jsr $F0B4 ; CPU:$EF21 PRG:2F21 20 B4 F0 + jsr ResolveObjectCollisionPair ; CPU:$EF24 PRG:2F24 20 37 EF + jsr $F0B4 ; CPU:$EF27 PRG:2F27 20 B4 F0 CheckObjectInteractions_Decrement: - dey ; CPU:$EF28 PRG:2F28 88 - bmi CheckObjectInteractions_Block_16 ; CPU:$EF29 PRG:2F29 30 03 - jmp CheckObjectInteractions_Load ; CPU:$EF2B PRG:2F2B 4C 31 EE + dey ; CPU:$EF2A PRG:2F2A 88 + bmi CheckObjectInteractions_Block_16 ; CPU:$EF2B PRG:2F2B 30 03 + jmp CheckObjectInteractions_Load ; CPU:$EF2D PRG:2F2D 4C 31 EE CheckObjectInteractions_Block_16: - dex ; CPU:$EF2E PRG:2F2E CA - bmi CheckObjectInteractions_Block_17 ; CPU:$EF2F PRG:2F2F 30 03 - jmp CheckObjectInteractions_Block ; CPU:$EF31 PRG:2F31 4C 27 EE + dex ; CPU:$EF30 PRG:2F30 CA + bmi CheckObjectInteractions_Block_17 ; CPU:$EF31 PRG:2F31 30 03 + jmp CheckObjectInteractions_Block ; CPU:$EF33 PRG:2F33 4C 27 EE CheckObjectInteractions_Block_17: - rts ; CPU:$EF34 PRG:2F34 60 + rts ; CPU:$EF36 PRG:2F36 60 ; ResolveObjectCollisionPair ; Purpose: resolve one overlapping pair and apply state, score, sound, and knockback effects. ; Inputs: X/Y = object pair. ; Returns: both object records and global event flags may change. ResolveObjectCollisionPair: - cpx #$02 ; CPU:$EF35 PRG:2F35 E0 02 - bcc ResolveObjectCollisionPair_Block ; CPU:$EF37 PRG:2F37 90 07 - cpy #$02 ; CPU:$EF39 PRG:2F39 C0 02 - bcc ResolveObjectCollisionPair_Block ; CPU:$EF3B PRG:2F3B 90 03 - jmp ResolveObjectCollisionPair_Load ; CPU:$EF3D PRG:2F3D 4C 43 F0 + cpx #$02 ; CPU:$EF37 PRG:2F37 E0 02 + bcc ResolveObjectCollisionPair_Block ; CPU:$EF39 PRG:2F39 90 07 + cpy #$02 ; CPU:$EF3B PRG:2F3B C0 02 + bcc ResolveObjectCollisionPair_Block ; CPU:$EF3D PRG:2F3D 90 03 + jmp ResolveObjectCollisionPair_Load ; CPU:$EF3F PRG:2F3F 4C 43 F0 ResolveObjectCollisionPair_Block: - lda #$00 ; CPU:$EF40 PRG:2F40 A9 00 - sta $0487 ; CPU:$EF42 PRG:2F42 8D 87 04 - lda $0475,x ; CPU:$EF45 PRG:2F45 BD 75 04 - beq ResolveObjectCollisionPair_Block_1 ; CPU:$EF48 PRG:2F48 F0 03 - jmp ResolveObjectCollisionPair_Load ; CPU:$EF4A PRG:2F4A 4C 43 F0 + lda #$00 ; CPU:$EF42 PRG:2F42 A9 00 + sta $0487 ; CPU:$EF44 PRG:2F44 8D 87 04 + lda $0475,x ; CPU:$EF47 PRG:2F47 BD 75 04 + beq ResolveObjectCollisionPair_Block_1 ; CPU:$EF4A PRG:2F4A F0 03 + jmp ResolveObjectCollisionPair_Load ; CPU:$EF4C PRG:2F4C 4C 43 F0 ResolveObjectCollisionPair_Block_1: - lda $4B ; CPU:$EF4D PRG:2F4D A5 4B - bne ResolveObjectCollisionPair_Block_2 ; CPU:$EF4F PRG:2F4F D0 03 - jmp ResolveObjectCollisionPair_Load ; CPU:$EF51 PRG:2F51 4C 43 F0 + lda $4B ; CPU:$EF4F PRG:2F4F A5 4B + bne ResolveObjectCollisionPair_Block_2 ; CPU:$EF51 PRG:2F51 D0 03 + jmp ResolveObjectCollisionPair_Load ; CPU:$EF53 PRG:2F53 4C 43 F0 ResolveObjectCollisionPair_Block_2: - cpx #$02 ; CPU:$EF54 PRG:2F54 E0 02 - bcs ResolveObjectCollisionPair_Block_3 ; CPU:$EF56 PRG:2F56 B0 07 - lda PlayerCollisionDisable,x ; CPU:$EF58 PRG:2F58 B5 BD - beq ResolveObjectCollisionPair_Block_4 ; CPU:$EF5A PRG:2F5A F0 14 - jmp ResolveObjectCollisionPair_Load ; CPU:$EF5C PRG:2F5C 4C 43 F0 + cpx #$02 ; CPU:$EF56 PRG:2F56 E0 02 + bcs ResolveObjectCollisionPair_Block_3 ; CPU:$EF58 PRG:2F58 B0 07 + lda PlayerCollisionDisable,x ; CPU:$EF5A PRG:2F5A B5 BD + beq ResolveObjectCollisionPair_Block_4 ; CPU:$EF5C PRG:2F5C F0 14 + jmp ResolveObjectCollisionPair_Load ; CPU:$EF5E PRG:2F5E 4C 43 F0 ResolveObjectCollisionPair_Block_3: - lda PlayerSlotState,x ; CPU:$EF5F PRG:2F5F B5 88 - cmp #$01 ; CPU:$EF61 PRG:2F61 C9 01 - bne ResolveObjectCollisionPair_Block_4 ; CPU:$EF63 PRG:2F63 D0 0B - lda PlayerLifecycleState,x ; CPU:$EF65 PRG:2F65 B5 7F - cmp #$02 ; CPU:$EF67 PRG:2F67 C9 02 - bcs ResolveObjectCollisionPair_Block_5 ; CPU:$EF69 PRG:2F69 B0 12 - lda #$01 ; CPU:$EF6B PRG:2F6B A9 01 - sta $0487 ; CPU:$EF6D PRG:2F6D 8D 87 04 + lda PlayerSlotState,x ; CPU:$EF61 PRG:2F61 B5 88 + cmp #$01 ; CPU:$EF63 PRG:2F63 C9 01 + bne ResolveObjectCollisionPair_Block_4 ; CPU:$EF65 PRG:2F65 D0 0B + lda PlayerLifecycleState,x ; CPU:$EF67 PRG:2F67 B5 7F + cmp #$02 ; CPU:$EF69 PRG:2F69 C9 02 + bcs ResolveObjectCollisionPair_Block_5 ; CPU:$EF6B PRG:2F6B B0 12 + lda #$01 ; CPU:$EF6D PRG:2F6D A9 01 + sta $0487 ; CPU:$EF6F PRG:2F6F 8D 87 04 ResolveObjectCollisionPair_Block_4: - lda a:PlayerPosY,y ; CPU:$EF70 PRG:2F70 B9 9A 00 - clc ; CPU:$EF73 PRG:2F73 18 - adc #$04 ; CPU:$EF74 PRG:2F74 69 04 - cmp PlayerPosY,x ; CPU:$EF76 PRG:2F76 D5 9A - bcc ResolveObjectCollisionPair_Block_5 ; CPU:$EF78 PRG:2F78 90 03 - jmp ResolveObjectCollisionPair_Load ; CPU:$EF7A PRG:2F7A 4C 43 F0 + lda a:PlayerPosY,y ; CPU:$EF72 PRG:2F72 B9 9A 00 + clc ; CPU:$EF75 PRG:2F75 18 + adc #$04 ; CPU:$EF76 PRG:2F76 69 04 + cmp PlayerPosY,x ; CPU:$EF78 PRG:2F78 D5 9A + bcc ResolveObjectCollisionPair_Block_5 ; CPU:$EF7A PRG:2F7A 90 03 + jmp ResolveObjectCollisionPair_Load ; CPU:$EF7C PRG:2F7C 4C 43 F0 ResolveObjectCollisionPair_Block_5: - lda #$14 ; CPU:$EF7D PRG:2F7D A9 14 - sta $0475,x ; CPU:$EF7F PRG:2F7F 9D 75 04 - lda #$00 ; CPU:$EF82 PRG:2F82 A9 00 - sta $0436,x ; CPU:$EF84 PRG:2F84 9D 36 04 - cpy #$02 ; CPU:$EF87 PRG:2F87 C0 02 - bcc ResolveObjectCollisionPair_Block_6 ; CPU:$EF89 PRG:2F89 90 0A - lda a:PlayerSlotState,y ; CPU:$EF8B PRG:2F8B B9 88 00 - cmp #$02 ; CPU:$EF8E PRG:2F8E C9 02 - beq ResolveObjectCollisionPair_Block_6 ; CPU:$EF90 PRG:2F90 F0 03 - jmp ResolveObjectCollisionPair_Load ; CPU:$EF92 PRG:2F92 4C 43 F0 + lda #$14 ; CPU:$EF7F PRG:2F7F A9 14 + sta $0475,x ; CPU:$EF81 PRG:2F81 9D 75 04 + lda #$00 ; CPU:$EF84 PRG:2F84 A9 00 + sta $0436,x ; CPU:$EF86 PRG:2F86 9D 36 04 + cpy #$02 ; CPU:$EF89 PRG:2F89 C0 02 + bcc ResolveObjectCollisionPair_Block_6 ; CPU:$EF8B PRG:2F8B 90 0A + lda a:PlayerSlotState,y ; CPU:$EF8D PRG:2F8D B9 88 00 + cmp #$02 ; CPU:$EF90 PRG:2F90 C9 02 + beq ResolveObjectCollisionPair_Block_6 ; CPU:$EF92 PRG:2F92 F0 03 + jmp ResolveObjectCollisionPair_Load ; CPU:$EF94 PRG:2F94 4C 43 F0 ResolveObjectCollisionPair_Block_6: - lda SoundRequestFlags0 ; CPU:$EF95 PRG:2F95 A5 F0 - ora #$02 ; CPU:$EF97 PRG:2F97 09 02 - sta SoundRequestFlags0 ; CPU:$EF99 PRG:2F99 85 F0 - lda PlayerSlotState,x ; CPU:$EF9B PRG:2F9B B5 88 - cmp #$02 ; CPU:$EF9D PRG:2F9D C9 02 - bne ResolveObjectCollisionPair_Block_8 ; CPU:$EF9F PRG:2F9F D0 1D - cpx #$02 ; CPU:$EFA1 PRG:2FA1 E0 02 - bcs ResolveObjectCollisionPair_Block_8 ; CPU:$EFA3 PRG:2FA3 B0 19 - sty Temp12 ; CPU:$EFA5 PRG:2FA5 84 12 - ldy PlayerLifecycleState,x ; CPU:$EFA7 PRG:2FA7 B4 7F - lda CollisionResultStateTable,y ; CPU:$EFA9 PRG:2FA9 B9 53 F0 - ldy Temp12 ; CPU:$EFAC PRG:2FAC A4 12 - pha ; CPU:$EFAE PRG:2FAE 48 - pla ; CPU:$EFAF PRG:2FAF 68 - bne ResolveObjectCollisionPair_Block_7 ; CPU:$EFB0 PRG:2FB0 D0 03 - jmp ResolveObjectCollisionPair_Load ; CPU:$EFB2 PRG:2FB2 4C 43 F0 + lda SoundRequestFlags0 ; CPU:$EF97 PRG:2F97 A5 F0 + ora #$02 ; CPU:$EF99 PRG:2F99 09 02 + sta SoundRequestFlags0 ; CPU:$EF9B PRG:2F9B 85 F0 + lda PlayerSlotState,x ; CPU:$EF9D PRG:2F9D B5 88 + cmp #$02 ; CPU:$EF9F PRG:2F9F C9 02 + bne ResolveObjectCollisionPair_Block_8 ; CPU:$EFA1 PRG:2FA1 D0 1D + cpx #$02 ; CPU:$EFA3 PRG:2FA3 E0 02 + bcs ResolveObjectCollisionPair_Block_8 ; CPU:$EFA5 PRG:2FA5 B0 19 + sty Temp12 ; CPU:$EFA7 PRG:2FA7 84 12 + ldy PlayerLifecycleState,x ; CPU:$EFA9 PRG:2FA9 B4 7F + lda CollisionResultStateTable,y; CPU:$EFAB PRG:2FAB B9 53 F0 + ldy Temp12 ; CPU:$EFAE PRG:2FAE A4 12 + pha ; CPU:$EFB0 PRG:2FB0 48 + pla ; CPU:$EFB1 PRG:2FB1 68 + bne ResolveObjectCollisionPair_Block_7 ; CPU:$EFB2 PRG:2FB2 D0 03 + jmp ResolveObjectCollisionPair_Load ; CPU:$EFB4 PRG:2FB4 4C 43 F0 ResolveObjectCollisionPair_Block_7: - sta PlayerLifecycleState,x ; CPU:$EFB5 PRG:2FB5 95 7F - lda #$00 ; CPU:$EFB7 PRG:2FB7 A9 00 - sta $0436,x ; CPU:$EFB9 PRG:2FB9 9D 36 04 - beq ResolveObjectCollisionPair_Block_12 ; CPU:$EFBC PRG:2FBC F0 2A + sta PlayerLifecycleState,x ; CPU:$EFB7 PRG:2FB7 95 7F + lda #$00 ; CPU:$EFB9 PRG:2FB9 A9 00 + sta $0436,x ; CPU:$EFBB PRG:2FBB 9D 36 04 + beq ResolveObjectCollisionPair_Block_12 ; CPU:$EFBE PRG:2FBE F0 2A ResolveObjectCollisionPair_Block_8: - dec PlayerSlotState,x ; CPU:$EFBE PRG:2FBE D6 88 - bne ResolveObjectCollisionPair_Block_9 ; CPU:$EFC0 PRG:2FC0 D0 0A - lda #$FF ; CPU:$EFC2 PRG:2FC2 A9 FF - sta PlayerHorizontalImpulse,x ; CPU:$EFC4 PRG:2FC4 9D 1B 04 - lda #$00 ; CPU:$EFC7 PRG:2FC7 A9 00 - sta $0412,x ; CPU:$EFC9 PRG:2FC9 9D 12 04 + dec PlayerSlotState,x ; CPU:$EFC0 PRG:2FC0 D6 88 + bne ResolveObjectCollisionPair_Block_9 ; CPU:$EFC2 PRG:2FC2 D0 0A + lda #$FF ; CPU:$EFC4 PRG:2FC4 A9 FF + sta PlayerHorizontalImpulse,x ; CPU:$EFC6 PRG:2FC6 9D 1B 04 + lda #$00 ; CPU:$EFC9 PRG:2FC9 A9 00 + sta $0412,x ; CPU:$EFCB PRG:2FCB 9D 12 04 ResolveObjectCollisionPair_Block_9: - lda #$00 ; CPU:$EFCC PRG:2FCC A9 00 - sta PlayerLifecycleState,x ; CPU:$EFCE PRG:2FCE 95 7F - sta $0424,x ; CPU:$EFD0 PRG:2FD0 9D 24 04 - sta PlayerVerticalImpulse,x ; CPU:$EFD3 PRG:2FD3 9D 2D 04 - lda PlayerPosX,x ; CPU:$EFD6 PRG:2FD6 B5 91 - bmi ResolveObjectCollisionPair_Block_10 ; CPU:$EFD8 PRG:2FD8 30 04 - lda #$FF ; CPU:$EFDA PRG:2FDA A9 FF - bne ResolveObjectCollisionPair_Block_11 ; CPU:$EFDC PRG:2FDC D0 02 + lda #$00 ; CPU:$EFCE PRG:2FCE A9 00 + sta PlayerLifecycleState,x ; CPU:$EFD0 PRG:2FD0 95 7F + sta $0424,x ; CPU:$EFD2 PRG:2FD2 9D 24 04 + sta PlayerVerticalImpulse,x ; CPU:$EFD5 PRG:2FD5 9D 2D 04 + lda PlayerPosX,x ; CPU:$EFD8 PRG:2FD8 B5 91 + bmi ResolveObjectCollisionPair_Block_10 ; CPU:$EFDA PRG:2FDA 30 04 + lda #$FF ; CPU:$EFDC PRG:2FDC A9 FF + bne ResolveObjectCollisionPair_Block_11 ; CPU:$EFDE PRG:2FDE D0 02 ResolveObjectCollisionPair_Block_10: - lda #$00 ; CPU:$EFDE PRG:2FDE A9 00 + lda #$00 ; CPU:$EFE0 PRG:2FE0 A9 00 ResolveObjectCollisionPair_Block_11: - sta $046C,x ; CPU:$EFE0 PRG:2FE0 9D 6C 04 - lda #$80 ; CPU:$EFE3 PRG:2FE3 A9 80 - sta $0463,x ; CPU:$EFE5 PRG:2FE5 9D 63 04 + sta $046C,x ; CPU:$EFE2 PRG:2FE2 9D 6C 04 + lda #$80 ; CPU:$EFE5 PRG:2FE5 A9 80 + sta $0463,x ; CPU:$EFE7 PRG:2FE7 9D 63 04 ResolveObjectCollisionPair_Block_12: - sty Temp12 ; CPU:$EFE8 PRG:2FE8 84 12 - ldy PlayerAnimationState,x ; CPU:$EFEA PRG:2FEA BC 51 04 - lda ObjectStateTransitionTable,y ; CPU:$EFED PRG:2FED B9 5E F0 - sta PlayerAnimationState,x ; CPU:$EFF0 PRG:2FF0 9D 51 04 - lda #$01 ; CPU:$EFF3 PRG:2FF3 A9 01 - sta $047E,x ; CPU:$EFF5 PRG:2FF5 9D 7E 04 - ldy Temp12 ; CPU:$EFF8 PRG:2FF8 A4 12 - cpy #$02 ; CPU:$EFFA PRG:2FFA C0 02 - bcs ResolveObjectCollisionPair_Load ; CPU:$EFFC PRG:2FFC B0 43 - lda PlayerAnimationState,x ; CPU:$EFFE PRG:2FFE BD 51 04 - cmp #$07 ; CPU:$F001 PRG:3001 C9 07 - beq ResolveObjectCollisionPair_Block_13 ; CPU:$F003 PRG:3003 F0 0A - cmp #$08 ; CPU:$F005 PRG:3005 C9 08 - bcc ResolveObjectCollisionPair_Block_13 ; CPU:$F007 PRG:3007 90 06 - lda SoundRequestFlags1 ; CPU:$F009 PRG:3009 A5 F1 - ora #$80 ; CPU:$F00B PRG:300B 09 80 - sta SoundRequestFlags1 ; CPU:$F00D PRG:300D 85 F1 + sty Temp12 ; CPU:$EFEA PRG:2FEA 84 12 + ldy PlayerAnimationState,x ; CPU:$EFEC PRG:2FEC BC 51 04 + lda ObjectStateTransitionTable,y ; CPU:$EFEF PRG:2FEF B9 5E F0 + sta PlayerAnimationState,x ; CPU:$EFF2 PRG:2FF2 9D 51 04 + lda #$01 ; CPU:$EFF5 PRG:2FF5 A9 01 + sta $047E,x ; CPU:$EFF7 PRG:2FF7 9D 7E 04 + ldy Temp12 ; CPU:$EFFA PRG:2FFA A4 12 + cpy #$02 ; CPU:$EFFC PRG:2FFC C0 02 + bcs ResolveObjectCollisionPair_Load ; CPU:$EFFE PRG:2FFE B0 43 + lda PlayerAnimationState,x ; CPU:$F000 PRG:3000 BD 51 04 + cmp #$07 ; CPU:$F003 PRG:3003 C9 07 + beq ResolveObjectCollisionPair_Block_13 ; CPU:$F005 PRG:3005 F0 0A + cmp #$08 ; CPU:$F007 PRG:3007 C9 08 + bcc ResolveObjectCollisionPair_Block_13 ; CPU:$F009 PRG:3009 90 06 + lda SoundRequestFlags1 ; CPU:$F00B PRG:300B A5 F1 + ora #$80 ; CPU:$F00D PRG:300D 09 80 + sta SoundRequestFlags1 ; CPU:$F00F PRG:300F 85 F1 ResolveObjectCollisionPair_Block_13: - ldy PlayerAnimationState,x ; CPU:$F00F PRG:300F BC 51 04 - lda CollisionSoundTable,y ; CPU:$F012 PRG:3012 B9 6A F0 - sta $13 ; CPU:$F015 PRG:3015 85 13 - lda $0487 ; CPU:$F017 PRG:3017 AD 87 04 - beq ResolveObjectCollisionPair_Block_14 ; CPU:$F01A PRG:301A F0 05 - lda CollisionScoreTable,y ; CPU:$F01C PRG:301C B9 76 F0 - sta $13 ; CPU:$F01F PRG:301F 85 13 + ldy PlayerAnimationState,x ; CPU:$F011 PRG:3011 BC 51 04 + lda CollisionSoundTable,y ; CPU:$F014 PRG:3014 B9 6A F0 + sta $13 ; CPU:$F017 PRG:3017 85 13 + lda $0487 ; CPU:$F019 PRG:3019 AD 87 04 + beq ResolveObjectCollisionPair_Block_14 ; CPU:$F01C PRG:301C F0 05 + lda CollisionScoreTable,y ; CPU:$F01E PRG:301E B9 76 F0 + sta $13 ; CPU:$F021 PRG:3021 85 13 ResolveObjectCollisionPair_Block_14: - lda CollisionEventTable,y ; CPU:$F021 PRG:3021 B9 82 F0 - clc ; CPU:$F024 PRG:3024 18 - adc $0487 ; CPU:$F025 PRG:3025 6D 87 04 - sta SpawnParameter ; CPU:$F028 PRG:3028 85 14 - lda Temp12 ; CPU:$F02A PRG:302A A5 12 - sta CurrentObjectIndex ; CPU:$F02C PRG:302C 85 3E - pha ; CPU:$F02E PRG:302E 48 - txa ; CPU:$F02F PRG:302F 8A - pha ; CPU:$F030 PRG:3030 48 - lda $13 ; CPU:$F031 PRG:3031 A5 13 - pha ; CPU:$F033 PRG:3033 48 - lda SpawnParameter ; CPU:$F034 PRG:3034 A5 14 - jsr $D871 ; CPU:$F036 PRG:3036 20 71 D8 - pla ; CPU:$F039 PRG:3039 68 - jsr InitializeOrQueueObject ; CPU:$F03A PRG:303A 20 DE D6 - pla ; CPU:$F03D PRG:303D 68 - tax ; CPU:$F03E PRG:303E AA - pla ; CPU:$F03F PRG:303F 68 - tay ; CPU:$F040 PRG:3040 A8 + lda CollisionEventTable,y ; CPU:$F023 PRG:3023 B9 82 F0 + clc ; CPU:$F026 PRG:3026 18 + adc $0487 ; CPU:$F027 PRG:3027 6D 87 04 + sta SpawnParameter ; CPU:$F02A PRG:302A 85 14 + lda Temp12 ; CPU:$F02C PRG:302C A5 12 + sta CurrentObjectIndex ; CPU:$F02E PRG:302E 85 3E + pha ; CPU:$F030 PRG:3030 48 + txa ; CPU:$F031 PRG:3031 8A + pha ; CPU:$F032 PRG:3032 48 + lda $13 ; CPU:$F033 PRG:3033 A5 13 + pha ; CPU:$F035 PRG:3035 48 + lda SpawnParameter ; CPU:$F036 PRG:3036 A5 14 + jsr $D871 ; CPU:$F038 PRG:3038 20 71 D8 + pla ; CPU:$F03B PRG:303B 68 + jsr InitializeOrQueueObject ; CPU:$F03C PRG:303C 20 DE D6 + pla ; CPU:$F03F PRG:303F 68 + tax ; CPU:$F040 PRG:3040 AA + pla ; CPU:$F041 PRG:3041 68 + tay ; CPU:$F042 PRG:3042 A8 ResolveObjectCollisionPair_Load: - lda PlayerAnimationState,x ; CPU:$F041 PRG:3041 BD 51 04 - cmp #$0B ; CPU:$F044 PRG:3044 C9 0B - bne ResolveObjectCollisionPair_Block_15 ; CPU:$F046 PRG:3046 D0 08 - lda $C8 ; CPU:$F048 PRG:3048 A5 C8 - bne ResolveObjectCollisionPair_Block_15 ; CPU:$F04A PRG:304A D0 04 - lda #$20 ; CPU:$F04C PRG:304C A9 20 - sta SoundRequestFlags0 ; CPU:$F04E PRG:304E 85 F0 + lda PlayerAnimationState,x ; CPU:$F043 PRG:3043 BD 51 04 + cmp #$0B ; CPU:$F046 PRG:3046 C9 0B + bne ResolveObjectCollisionPair_Block_15 ; CPU:$F048 PRG:3048 D0 08 + lda $C8 ; CPU:$F04A PRG:304A A5 C8 + bne ResolveObjectCollisionPair_Block_15 ; CPU:$F04C PRG:304C D0 04 + lda #$20 ; CPU:$F04E PRG:304E A9 20 + sta SoundRequestFlags0 ; CPU:$F050 PRG:3050 85 F0 ResolveObjectCollisionPair_Block_15: - rts ; CPU:$F050 PRG:3050 60 + rts ; CPU:$F052 PRG:3052 60 ; Collision outcome state values indexed by collision class. CollisionResultStateTable: - .byte $06, $06, $07, $08, $09, $0A, $00, $00, $00, $00, $00 ; CPU:$F051 PRG:3051 06 06 07 08 09 0A 00 00 00 00 00 + .byte $06, $06, $07, $08, $09, $0A, $00, $00, $00, $00, $00 ; CPU:$F053 PRG:3053 06 06 07 08 09 0A 00 00 00 00 00 ; Post-collision object-state transitions. ObjectStateTransitionTable: - .byte $04, $05, $06, $07, $08, $09, $0A, $0B, $08, $09, $0A, $0B ; CPU:$F05C PRG:305C 04 05 06 07 08 09 0A 0B 08 09 0A 0B + .byte $04, $05, $06, $07, $08, $09, $0A, $0B, $08, $09, $0A, $0B ; CPU:$F05E PRG:305E 04 05 06 07 08 09 0A 0B 08 09 0A 0B ; Collision sound/event magnitude values. CollisionSoundTable: - .byte $00, $00, $00, $00, $32, $4B, $64, $64, $4B, $64, $96, $64 ; CPU:$F068 PRG:3068 00 00 00 00 32 4B 64 64 4B 64 96 64 + .byte $00, $00, $00, $00, $32, $4B, $64, $64, $4B, $64, $96, $64 ; CPU:$F06A PRG:306A 00 00 00 00 32 4B 64 64 4B 64 96 64 ; Collision score/reward values. CollisionScoreTable: - .byte $00, $00, $00, $00, $32, $4B, $64, $64, $64, $96, $C8, $64 ; CPU:$F074 PRG:3074 00 00 00 00 32 4B 64 64 64 96 C8 64 + .byte $00, $00, $00, $00, $32, $4B, $64, $64, $64, $96, $C8, $64 ; CPU:$F076 PRG:3076 00 00 00 00 32 4B 64 64 64 96 C8 64 ; Collision event identifiers. CollisionEventTable: - .byte $00, $00, $00, $00, $01, $02, $03, $03, $02, $03, $04, $03 ; CPU:$F080 PRG:3080 00 00 00 00 01 02 03 03 02 03 04 03 + .byte $00, $00, $00, $00, $01, $02, $03, $03, $02, $03, $04, $03 ; CPU:$F082 PRG:3082 00 00 00 00 01 02 03 03 02 03 04 03 ; AbsoluteDifferenceA ; Purpose: return the absolute value of signed accumulator A. ; Inputs: A = signed delta. ; Returns: A = absolute magnitude. AbsoluteDifferenceA: - pha ; CPU:$F08C PRG:308C 48 - pla ; CPU:$F08D PRG:308D 68 - bpl AbsoluteDifferenceA_Block ; CPU:$F08E PRG:308E 10 05 - eor #$FF ; CPU:$F090 PRG:3090 49 FF - clc ; CPU:$F092 PRG:3092 18 - adc #$01 ; CPU:$F093 PRG:3093 69 01 + pha ; CPU:$F08E PRG:308E 48 + pla ; CPU:$F08F PRG:308F 68 + bpl AbsoluteDifferenceA_Block ; CPU:$F090 PRG:3090 10 05 + eor #$FF ; CPU:$F092 PRG:3092 49 FF + clc ; CPU:$F094 PRG:3094 18 + adc #$01 ; CPU:$F095 PRG:3095 69 01 AbsoluteDifferenceA_Block: - rts ; CPU:$F095 PRG:3095 60 + rts ; CPU:$F097 PRG:3097 60 ; SubtractHorizontalVelocityPair ; Purpose: calculate Y-object minus X-object horizontal velocity. ; Inputs: X/Y = object indexes. ; Returns: A/high arithmetic state from $0424/$042D difference. SubtractHorizontalVelocityPair: - lda $0424,y ; CPU:$F096 PRG:3096 B9 24 04 - sec ; CPU:$F099 PRG:3099 38 - sbc $0424,x ; CPU:$F09A PRG:309A FD 24 04 - lda PlayerVerticalImpulse,y ; CPU:$F09D PRG:309D B9 2D 04 - sbc PlayerVerticalImpulse,x ; CPU:$F0A0 PRG:30A0 FD 2D 04 - rts ; CPU:$F0A3 PRG:30A3 60 + lda $0424,y ; CPU:$F098 PRG:3098 B9 24 04 + sec ; CPU:$F09B PRG:309B 38 + sbc $0424,x ; CPU:$F09C PRG:309C FD 24 04 + lda PlayerVerticalImpulse,y ; CPU:$F09F PRG:309F B9 2D 04 + sbc PlayerVerticalImpulse,x ; CPU:$F0A2 PRG:30A2 FD 2D 04 + rts ; CPU:$F0A5 PRG:30A5 60 ; SubtractVerticalVelocityPair ; Purpose: calculate Y-object minus X-object vertical velocity. ; Inputs: X/Y = object indexes. ; Returns: A/high arithmetic state from $0412/$041B difference. SubtractVerticalVelocityPair: - lda $0412,y ; CPU:$F0A4 PRG:30A4 B9 12 04 - sec ; CPU:$F0A7 PRG:30A7 38 - sbc $0412,x ; CPU:$F0A8 PRG:30A8 FD 12 04 - lda PlayerHorizontalImpulse,y ; CPU:$F0AB PRG:30AB B9 1B 04 - sbc PlayerHorizontalImpulse,x ; CPU:$F0AE PRG:30AE FD 1B 04 - rts ; CPU:$F0B1 PRG:30B1 60 + lda $0412,y ; CPU:$F0A6 PRG:30A6 B9 12 04 + sec ; CPU:$F0A9 PRG:30A9 38 + sbc $0412,x ; CPU:$F0AA PRG:30AA FD 12 04 + lda PlayerHorizontalImpulse,y ; CPU:$F0AD PRG:30AD B9 1B 04 + sbc PlayerHorizontalImpulse,x ; CPU:$F0B0 PRG:30B0 FD 1B 04 + rts ; CPU:$F0B3 PRG:30B3 60 ; SwapObjectIndexes ; Purpose: exchange X and Y through scratch bytes. ; Inputs: X/Y = object indexes. ; Returns: X/Y swapped. SwapObjectIndexes: - stx Temp12 ; CPU:$F0B2 PRG:30B2 86 12 - sty $13 ; CPU:$F0B4 PRG:30B4 84 13 - ldx $13 ; CPU:$F0B6 PRG:30B6 A6 13 - ldy Temp12 ; CPU:$F0B8 PRG:30B8 A4 12 - rts ; CPU:$F0BA PRG:30BA 60 + stx Temp12 ; CPU:$F0B4 PRG:30B4 86 12 + sty $13 ; CPU:$F0B6 PRG:30B6 84 13 + ldx $13 ; CPU:$F0B8 PRG:30B8 A6 13 + ldy Temp12 ; CPU:$F0BA PRG:30BA A4 12 + rts ; CPU:$F0BC PRG:30BC 60 ; TestPairCollisionEligibility ; Purpose: test whether an object pair can participate in collision response. ; Inputs: X/Y = object indexes. ; Returns: A = zero if rejected, nonzero if eligible. TestPairCollisionEligibility: - cpx #$02 ; CPU:$F0BB PRG:30BB E0 02 - bcc TestPairCollisionEligibility_Block ; CPU:$F0BD PRG:30BD 90 1C - lda PlayerLifecycleState,x ; CPU:$F0BF PRG:30BF B5 7F - cmp #$02 ; CPU:$F0C1 PRG:30C1 C9 02 - bcc TestPairCollisionEligibility_Block ; CPU:$F0C3 PRG:30C3 90 16 - lda #$01 ; CPU:$F0C5 PRG:30C5 A9 01 - cmp PlayerSlotState,x ; CPU:$F0C7 PRG:30C7 D5 88 - bcs TestPairCollisionEligibility_Block ; CPU:$F0C9 PRG:30C9 B0 10 - cpy #$02 ; CPU:$F0CB PRG:30CB C0 02 - bcc TestPairCollisionEligibility_Block ; CPU:$F0CD PRG:30CD 90 0C - lda a:PlayerLifecycleState,y ; CPU:$F0CF PRG:30CF B9 7F 00 - cmp #$02 ; CPU:$F0D2 PRG:30D2 C9 02 - bcc TestPairCollisionEligibility_Block ; CPU:$F0D4 PRG:30D4 90 05 - lda #$01 ; CPU:$F0D6 PRG:30D6 A9 01 - cmp a:PlayerSlotState,y ; CPU:$F0D8 PRG:30D8 D9 88 00 + cpx #$02 ; CPU:$F0BD PRG:30BD E0 02 + bcc TestPairCollisionEligibility_Block ; CPU:$F0BF PRG:30BF 90 1C + lda PlayerLifecycleState,x ; CPU:$F0C1 PRG:30C1 B5 7F + cmp #$02 ; CPU:$F0C3 PRG:30C3 C9 02 + bcc TestPairCollisionEligibility_Block ; CPU:$F0C5 PRG:30C5 90 16 + lda #$01 ; CPU:$F0C7 PRG:30C7 A9 01 + cmp PlayerSlotState,x ; CPU:$F0C9 PRG:30C9 D5 88 + bcs TestPairCollisionEligibility_Block ; CPU:$F0CB PRG:30CB B0 10 + cpy #$02 ; CPU:$F0CD PRG:30CD C0 02 + bcc TestPairCollisionEligibility_Block ; CPU:$F0CF PRG:30CF 90 0C + lda a:PlayerLifecycleState,y ; CPU:$F0D1 PRG:30D1 B9 7F 00 + cmp #$02 ; CPU:$F0D4 PRG:30D4 C9 02 + bcc TestPairCollisionEligibility_Block ; CPU:$F0D6 PRG:30D6 90 05 + lda #$01 ; CPU:$F0D8 PRG:30D8 A9 01 + cmp a:PlayerSlotState,y ; CPU:$F0DA PRG:30DA D9 88 00 TestPairCollisionEligibility_Block: - rts ; CPU:$F0DB PRG:30DB 60 + rts ; CPU:$F0DD PRG:30DD 60 ; NegateHorizontalMotion ; Purpose: negate an object horizontal velocity and acceleration pair. ; Inputs: X = object slot. ; Returns: horizontal motion fields negated; direction flag normalized. NegateHorizontalMotion: - lda #$00 ; CPU:$F0DC PRG:30DC A9 00 - sec ; CPU:$F0DE PRG:30DE 38 - sbc $0424,x ; CPU:$F0DF PRG:30DF FD 24 04 - sta $0424,x ; CPU:$F0E2 PRG:30E2 9D 24 04 - lda #$00 ; CPU:$F0E5 PRG:30E5 A9 00 - sbc PlayerVerticalImpulse,x ; CPU:$F0E7 PRG:30E7 FD 2D 04 - sta PlayerVerticalImpulse,x ; CPU:$F0EA PRG:30EA 9D 2D 04 - lda #$00 ; CPU:$F0ED PRG:30ED A9 00 - sec ; CPU:$F0EF PRG:30EF 38 - sbc $0463,x ; CPU:$F0F0 PRG:30F0 FD 63 04 - sta $0463,x ; CPU:$F0F3 PRG:30F3 9D 63 04 - lda #$00 ; CPU:$F0F6 PRG:30F6 A9 00 - sbc $046C,x ; CPU:$F0F8 PRG:30F8 FD 6C 04 - sta $046C,x ; CPU:$F0FB PRG:30FB 9D 6C 04 - lda $31,x ; CPU:$F0FE PRG:30FE B5 31 - and #$40 ; CPU:$F100 PRG:3100 29 40 - sta $31,x ; CPU:$F102 PRG:3102 95 31 - rts ; CPU:$F104 PRG:3104 60 + lda #$00 ; CPU:$F0DE PRG:30DE A9 00 + sec ; CPU:$F0E0 PRG:30E0 38 + sbc $0424,x ; CPU:$F0E1 PRG:30E1 FD 24 04 + sta $0424,x ; CPU:$F0E4 PRG:30E4 9D 24 04 + lda #$00 ; CPU:$F0E7 PRG:30E7 A9 00 + sbc PlayerVerticalImpulse,x ; CPU:$F0E9 PRG:30E9 FD 2D 04 + sta PlayerVerticalImpulse,x ; CPU:$F0EC PRG:30EC 9D 2D 04 + lda #$00 ; CPU:$F0EF PRG:30EF A9 00 + sec ; CPU:$F0F1 PRG:30F1 38 + sbc $0463,x ; CPU:$F0F2 PRG:30F2 FD 63 04 + sta $0463,x ; CPU:$F0F5 PRG:30F5 9D 63 04 + lda #$00 ; CPU:$F0F8 PRG:30F8 A9 00 + sbc $046C,x ; CPU:$F0FA PRG:30FA FD 6C 04 + sta $046C,x ; CPU:$F0FD PRG:30FD 9D 6C 04 + lda $31,x ; CPU:$F100 PRG:3100 B5 31 + and #$40 ; CPU:$F102 PRG:3102 29 40 + sta $31,x ; CPU:$F104 PRG:3104 95 31 + rts ; CPU:$F106 PRG:3106 60 ; NegateVerticalMotion ; Purpose: negate an object vertical velocity pair. ; Inputs: X = object slot. ; Returns: vertical motion fields negated. NegateVerticalMotion: - lda #$00 ; CPU:$F105 PRG:3105 A9 00 - sec ; CPU:$F107 PRG:3107 38 - sbc $0412,x ; CPU:$F108 PRG:3108 FD 12 04 - sta $0412,x ; CPU:$F10B PRG:310B 9D 12 04 - lda #$00 ; CPU:$F10E PRG:310E A9 00 - sbc PlayerHorizontalImpulse,x ; CPU:$F110 PRG:3110 FD 1B 04 - sta PlayerHorizontalImpulse,x ; CPU:$F113 PRG:3113 9D 1B 04 - rts ; CPU:$F116 PRG:3116 60 + lda #$00 ; CPU:$F107 PRG:3107 A9 00 + sec ; CPU:$F109 PRG:3109 38 + sbc $0412,x ; CPU:$F10A PRG:310A FD 12 04 + sta $0412,x ; CPU:$F10D PRG:310D 9D 12 04 + lda #$00 ; CPU:$F110 PRG:3110 A9 00 + sbc PlayerHorizontalImpulse,x ; CPU:$F112 PRG:3112 FD 1B 04 + sta PlayerHorizontalImpulse,x ; CPU:$F115 PRG:3115 9D 1B 04 + rts ; CPU:$F118 PRG:3118 60 ; MultiplySignedValue ; Purpose: multiply a signed 16-bit value by an 8-bit factor. ; Inputs: signed value in $2B/$2C, multiplier in A. ; Returns: signed product in $2E-$30. MultiplySignedValue: - sta $2D ; CPU:$F117 PRG:3117 85 2D - lda $2C ; CPU:$F119 PRG:3119 A5 2C - bpl MultiplyUnsigned16By8 ; CPU:$F11B PRG:311B 10 24 - lda #$00 ; CPU:$F11D PRG:311D A9 00 - sec ; CPU:$F11F PRG:311F 38 - sbc $2B ; CPU:$F120 PRG:3120 E5 2B - sta $2B ; CPU:$F122 PRG:3122 85 2B - lda #$00 ; CPU:$F124 PRG:3124 A9 00 - sbc $2C ; CPU:$F126 PRG:3126 E5 2C - sta $2C ; CPU:$F128 PRG:3128 85 2C - jsr MultiplyUnsigned16By8 ; CPU:$F12A PRG:312A 20 43 F1 - lda #$00 ; CPU:$F12D PRG:312D A9 00 - sec ; CPU:$F12F PRG:312F 38 - sbc $2E ; CPU:$F130 PRG:3130 E5 2E - sta $2E ; CPU:$F132 PRG:3132 85 2E - lda #$00 ; CPU:$F134 PRG:3134 A9 00 - sbc $2F ; CPU:$F136 PRG:3136 E5 2F - sta $2F ; CPU:$F138 PRG:3138 85 2F - lda #$00 ; CPU:$F13A PRG:313A A9 00 - sbc $30 ; CPU:$F13C PRG:313C E5 30 - sta $30 ; CPU:$F13E PRG:313E 85 30 - rts ; CPU:$F140 PRG:3140 60 + sta $2D ; CPU:$F119 PRG:3119 85 2D + lda $2C ; CPU:$F11B PRG:311B A5 2C + bpl MultiplyUnsigned16By8 ; CPU:$F11D PRG:311D 10 24 + lda #$00 ; CPU:$F11F PRG:311F A9 00 + sec ; CPU:$F121 PRG:3121 38 + sbc $2B ; CPU:$F122 PRG:3122 E5 2B + sta $2B ; CPU:$F124 PRG:3124 85 2B + lda #$00 ; CPU:$F126 PRG:3126 A9 00 + sbc $2C ; CPU:$F128 PRG:3128 E5 2C + sta $2C ; CPU:$F12A PRG:312A 85 2C + jsr MultiplyUnsigned16By8 ; CPU:$F12C PRG:312C 20 43 F1 + lda #$00 ; CPU:$F12F PRG:312F A9 00 + sec ; CPU:$F131 PRG:3131 38 + sbc $2E ; CPU:$F132 PRG:3132 E5 2E + sta $2E ; CPU:$F134 PRG:3134 85 2E + lda #$00 ; CPU:$F136 PRG:3136 A9 00 + sbc $2F ; CPU:$F138 PRG:3138 E5 2F + sta $2F ; CPU:$F13A PRG:313A 85 2F + lda #$00 ; CPU:$F13C PRG:313C A9 00 + sbc $30 ; CPU:$F13E PRG:313E E5 30 + sta $30 ; CPU:$F140 PRG:3140 85 30 + rts ; CPU:$F142 PRG:3142 60 ; MultiplyUnsigned16By8 ; Purpose: perform the unsigned shift-add multiply core. ; Inputs: $2B/$2C multiplicand, $2D multiplier. ; Returns: 24-bit product in $2E-$30. MultiplyUnsigned16By8: - txa ; CPU:$F141 PRG:3141 8A - pha ; CPU:$F142 PRG:3142 48 - lda #$00 ; CPU:$F143 PRG:3143 A9 00 - sta $2E ; CPU:$F145 PRG:3145 85 2E - sta $2F ; CPU:$F147 PRG:3147 85 2F - sta $30 ; CPU:$F149 PRG:3149 85 30 - ldx #$08 ; CPU:$F14B PRG:314B A2 08 + txa ; CPU:$F143 PRG:3143 8A + pha ; CPU:$F144 PRG:3144 48 + lda #$00 ; CPU:$F145 PRG:3145 A9 00 + sta $2E ; CPU:$F147 PRG:3147 85 2E + sta $2F ; CPU:$F149 PRG:3149 85 2F + sta $30 ; CPU:$F14B PRG:314B 85 30 + ldx #$08 ; CPU:$F14D PRG:314D A2 08 MultiplyUnsigned16By8_Block: - asl $2E ; CPU:$F14D PRG:314D 06 2E - rol $2F ; CPU:$F14F PRG:314F 26 2F - rol $30 ; CPU:$F151 PRG:3151 26 30 - asl $2D ; CPU:$F153 PRG:3153 06 2D - bcc MultiplyUnsigned16By8_Block_1 ; CPU:$F155 PRG:3155 90 13 - clc ; CPU:$F157 PRG:3157 18 - lda $2B ; CPU:$F158 PRG:3158 A5 2B - adc $2E ; CPU:$F15A PRG:315A 65 2E - sta $2E ; CPU:$F15C PRG:315C 85 2E - lda $2C ; CPU:$F15E PRG:315E A5 2C - adc $2F ; CPU:$F160 PRG:3160 65 2F - sta $2F ; CPU:$F162 PRG:3162 85 2F - lda #$00 ; CPU:$F164 PRG:3164 A9 00 - adc $30 ; CPU:$F166 PRG:3166 65 30 - sta $30 ; CPU:$F168 PRG:3168 85 30 + asl $2E ; CPU:$F14F PRG:314F 06 2E + rol $2F ; CPU:$F151 PRG:3151 26 2F + rol $30 ; CPU:$F153 PRG:3153 26 30 + asl $2D ; CPU:$F155 PRG:3155 06 2D + bcc MultiplyUnsigned16By8_Block_1 ; CPU:$F157 PRG:3157 90 13 + clc ; CPU:$F159 PRG:3159 18 + lda $2B ; CPU:$F15A PRG:315A A5 2B + adc $2E ; CPU:$F15C PRG:315C 65 2E + sta $2E ; CPU:$F15E PRG:315E 85 2E + lda $2C ; CPU:$F160 PRG:3160 A5 2C + adc $2F ; CPU:$F162 PRG:3162 65 2F + sta $2F ; CPU:$F164 PRG:3164 85 2F + lda #$00 ; CPU:$F166 PRG:3166 A9 00 + adc $30 ; CPU:$F168 PRG:3168 65 30 + sta $30 ; CPU:$F16A PRG:316A 85 30 MultiplyUnsigned16By8_Block_1: - dex ; CPU:$F16A PRG:316A CA - bne MultiplyUnsigned16By8_Block ; CPU:$F16B PRG:316B D0 E0 - pla ; CPU:$F16D PRG:316D 68 - tax ; CPU:$F16E PRG:316E AA - rts ; CPU:$F16F PRG:316F 60 + dex ; CPU:$F16C PRG:316C CA + bne MultiplyUnsigned16By8_Block; CPU:$F16D PRG:316D D0 E0 + pla ; CPU:$F16F PRG:316F 68 + tax ; CPU:$F170 PRG:3170 AA + rts ; CPU:$F171 PRG:3171 60 ; ScaleHorizontalVelocity ; Purpose: scale horizontal velocity by the fixed collision factor. ; Inputs: X = object slot. ; Returns: $0424/$042D scaled. ScaleHorizontalVelocity: - lda $0424,x ; CPU:$F170 PRG:3170 BD 24 04 - sta $2B ; CPU:$F173 PRG:3173 85 2B - lda PlayerVerticalImpulse,x ; CPU:$F175 PRG:3175 BD 2D 04 - sta $2C ; CPU:$F178 PRG:3178 85 2C - lda #$CD ; CPU:$F17A PRG:317A A9 CD - jsr MultiplySignedValue ; CPU:$F17C PRG:317C 20 19 F1 - lda $2F ; CPU:$F17F PRG:317F A5 2F - sta $0424,x ; CPU:$F181 PRG:3181 9D 24 04 - lda $30 ; CPU:$F184 PRG:3184 A5 30 - sta PlayerVerticalImpulse,x ; CPU:$F186 PRG:3186 9D 2D 04 - rts ; CPU:$F189 PRG:3189 60 + lda $0424,x ; CPU:$F172 PRG:3172 BD 24 04 + sta $2B ; CPU:$F175 PRG:3175 85 2B + lda PlayerVerticalImpulse,x ; CPU:$F177 PRG:3177 BD 2D 04 + sta $2C ; CPU:$F17A PRG:317A 85 2C + lda #$CD ; CPU:$F17C PRG:317C A9 CD + jsr MultiplySignedValue ; CPU:$F17E PRG:317E 20 19 F1 + lda $2F ; CPU:$F181 PRG:3181 A5 2F + sta $0424,x ; CPU:$F183 PRG:3183 9D 24 04 + lda $30 ; CPU:$F186 PRG:3186 A5 30 + sta PlayerVerticalImpulse,x ; CPU:$F188 PRG:3188 9D 2D 04 + rts ; CPU:$F18B PRG:318B 60 ; ScaleVerticalVelocity ; Purpose: scale vertical velocity by the fixed collision factor. ; Inputs: X = object slot. ; Returns: $0412/$041B scaled. ScaleVerticalVelocity: - lda $0412,x ; CPU:$F18A PRG:318A BD 12 04 - sta $2B ; CPU:$F18D PRG:318D 85 2B - lda PlayerHorizontalImpulse,x ; CPU:$F18F PRG:318F BD 1B 04 - sta $2C ; CPU:$F192 PRG:3192 85 2C - lda #$CD ; CPU:$F194 PRG:3194 A9 CD - jsr MultiplySignedValue ; CPU:$F196 PRG:3196 20 19 F1 - lda $2F ; CPU:$F199 PRG:3199 A5 2F - sta $0412,x ; CPU:$F19B PRG:319B 9D 12 04 - lda $30 ; CPU:$F19E PRG:319E A5 30 - sta PlayerHorizontalImpulse,x ; CPU:$F1A0 PRG:31A0 9D 1B 04 - rts ; CPU:$F1A3 PRG:31A3 60 + lda $0412,x ; CPU:$F18C PRG:318C BD 12 04 + sta $2B ; CPU:$F18F PRG:318F 85 2B + lda PlayerHorizontalImpulse,x ; CPU:$F191 PRG:3191 BD 1B 04 + sta $2C ; CPU:$F194 PRG:3194 85 2C + lda #$CD ; CPU:$F196 PRG:3196 A9 CD + jsr MultiplySignedValue ; CPU:$F198 PRG:3198 20 19 F1 + lda $2F ; CPU:$F19B PRG:319B A5 2F + sta $0412,x ; CPU:$F19D PRG:319D 9D 12 04 + lda $30 ; CPU:$F1A0 PRG:31A0 A5 30 + sta PlayerHorizontalImpulse,x ; CPU:$F1A2 PRG:31A2 9D 1B 04 + rts ; CPU:$F1A5 PRG:31A5 60 ; ShiftInputVectorRight4 ; Purpose: arithmetic-shift the two-byte input vector right four places. ; Inputs: vector in $12/$13. ; Returns: scaled vector in $12/$13. ShiftInputVectorRight4: - ldy #$04 ; CPU:$F1A4 PRG:31A4 A0 04 + ldy #$04 ; CPU:$F1A6 PRG:31A6 A0 04 ShiftInputVectorRight4_Block: - lda MotionDeltaHi ; CPU:$F1A6 PRG:31A6 A5 13 - asl a ; CPU:$F1A8 PRG:31A8 0A - ror MotionDeltaHi ; CPU:$F1A9 PRG:31A9 66 13 - ror MotionDeltaLo ; CPU:$F1AB PRG:31AB 66 12 - dey ; CPU:$F1AD PRG:31AD 88 - bne ShiftInputVectorRight4_Block ; CPU:$F1AE PRG:31AE D0 F6 - rts ; CPU:$F1B0 PRG:31B0 60 + lda MotionDeltaHi ; CPU:$F1A8 PRG:31A8 A5 13 + asl a ; CPU:$F1AA PRG:31AA 0A + ror MotionDeltaHi ; CPU:$F1AB PRG:31AB 66 13 + ror MotionDeltaLo ; CPU:$F1AD PRG:31AD 66 12 + dey ; CPU:$F1AF PRG:31AF 88 + bne ShiftInputVectorRight4_Block ; CPU:$F1B0 PRG:31B0 D0 F6 + rts ; CPU:$F1B2 PRG:31B2 60 ; NextRandomByte ; Purpose: advance the game pseudo-random shift register. ; Inputs: random state in $1B/$1C. ; Returns: A and $1B contain the next random byte. NextRandomByte: - txa ; CPU:$F1B1 PRG:31B1 8A - pha ; CPU:$F1B2 PRG:31B2 48 - ldx #$0B ; CPU:$F1B3 PRG:31B3 A2 0B + txa ; CPU:$F1B3 PRG:31B3 8A + pha ; CPU:$F1B4 PRG:31B4 48 + ldx #$0B ; CPU:$F1B5 PRG:31B5 A2 0B NextRandomByte_Block: - asl RandomState ; CPU:$F1B5 PRG:31B5 06 1B - rol $1C ; CPU:$F1B7 PRG:31B7 26 1C - rol a ; CPU:$F1B9 PRG:31B9 2A - rol a ; CPU:$F1BA PRG:31BA 2A - eor RandomState ; CPU:$F1BB PRG:31BB 45 1B - rol a ; CPU:$F1BD PRG:31BD 2A - eor RandomState ; CPU:$F1BE PRG:31BE 45 1B - lsr a ; CPU:$F1C0 PRG:31C0 4A - lsr a ; CPU:$F1C1 PRG:31C1 4A - eor #$FF ; CPU:$F1C2 PRG:31C2 49 FF - and #$01 ; CPU:$F1C4 PRG:31C4 29 01 - ora RandomState ; CPU:$F1C6 PRG:31C6 05 1B - sta RandomState ; CPU:$F1C8 PRG:31C8 85 1B - dex ; CPU:$F1CA PRG:31CA CA - bne NextRandomByte_Block ; CPU:$F1CB PRG:31CB D0 E8 - pla ; CPU:$F1CD PRG:31CD 68 - tax ; CPU:$F1CE PRG:31CE AA - lda RandomState ; CPU:$F1CF PRG:31CF A5 1B - rts ; CPU:$F1D1 PRG:31D1 60 + asl RandomState ; CPU:$F1B7 PRG:31B7 06 1B + rol $1C ; CPU:$F1B9 PRG:31B9 26 1C + rol a ; CPU:$F1BB PRG:31BB 2A + rol a ; CPU:$F1BC PRG:31BC 2A + eor RandomState ; CPU:$F1BD PRG:31BD 45 1B + rol a ; CPU:$F1BF PRG:31BF 2A + eor RandomState ; CPU:$F1C0 PRG:31C0 45 1B + lsr a ; CPU:$F1C2 PRG:31C2 4A + lsr a ; CPU:$F1C3 PRG:31C3 4A + eor #$FF ; CPU:$F1C4 PRG:31C4 49 FF + and #$01 ; CPU:$F1C6 PRG:31C6 29 01 + ora RandomState ; CPU:$F1C8 PRG:31C8 05 1B + sta RandomState ; CPU:$F1CA PRG:31CA 85 1B + dex ; CPU:$F1CC PRG:31CC CA + bne NextRandomByte_Block ; CPU:$F1CD PRG:31CD D0 E8 + pla ; CPU:$F1CF PRG:31CF 68 + tax ; CPU:$F1D0 PRG:31D0 AA + lda RandomState ; CPU:$F1D1 PRG:31D1 A5 1B + rts ; CPU:$F1D3 PRG:31D3 60 NextRandomByte_Block_1: - jsr $DAC1 ; CPU:$F1D2 PRG:31D2 20 C1 DA - ldx #$09 ; CPU:$F1D5 PRG:31D5 A2 09 + jsr $DAC1 ; CPU:$F1D4 PRG:31D4 20 C1 DA + ldx #$09 ; CPU:$F1D7 PRG:31D7 A2 09 NextRandomByte_Block_2: - lda #$00 ; CPU:$F1D7 PRG:31D7 A9 00 - sta CurrentRecord,x ; CPU:$F1D9 PRG:31D9 95 03 - dex ; CPU:$F1DB PRG:31DB CA - bpl NextRandomByte_Block_2 ; CPU:$F1DC PRG:31DC 10 F9 - sta CurrentObjectIndex ; CPU:$F1DE PRG:31DE 85 3E - inc PlayerActiveFlags ; CPU:$F1E0 PRG:31E0 E6 41 - jsr InitializeOrQueueObject ; CPU:$F1E2 PRG:31E2 20 DE D6 - lda #$0F ; CPU:$F1E5 PRG:31E5 A9 0F - sta APUCTRL ; CPU:$F1E7 PRG:31E7 8D 15 40 - lda #$01 ; CPU:$F1EA PRG:31EA A9 01 - sta SoundRequestFlags0 ; CPU:$F1EC PRG:31EC 85 F0 - lda #$02 ; CPU:$F1EE PRG:31EE A9 02 + lda #$00 ; CPU:$F1D9 PRG:31D9 A9 00 + sta CurrentRecord,x ; CPU:$F1DB PRG:31DB 95 03 + dex ; CPU:$F1DD PRG:31DD CA + bpl NextRandomByte_Block_2 ; CPU:$F1DE PRG:31DE 10 F9 + sta CurrentObjectIndex ; CPU:$F1E0 PRG:31E0 85 3E + inc PlayerActiveFlags ; CPU:$F1E2 PRG:31E2 E6 41 + jsr InitializeOrQueueObject ; CPU:$F1E4 PRG:31E4 20 DE D6 + lda #$0F ; CPU:$F1E7 PRG:31E7 A9 0F + sta APUCTRL ; CPU:$F1E9 PRG:31E9 8D 15 40 + lda #$01 ; CPU:$F1EC PRG:31EC A9 01 + sta SoundRequestFlags0 ; CPU:$F1EE PRG:31EE 85 F0 + lda #$02 ; CPU:$F1F0 PRG:31F0 A9 02 ; InitializeRoundObjects ; Purpose: initialize object slots and round-specific gameplay state. ; Inputs: round/stage globals. ; Returns: object arrays, sound state, and counters initialized. InitializeRoundObjects: - sta PlayerActiveFlags ; CPU:$F1F0 PRG:31F0 85 41 - ldy PlayerCountMinusOne ; CPU:$F1F2 PRG:31F2 A4 40 - bne InitializeRoundObjects_Block ; CPU:$F1F4 PRG:31F4 D0 02 - lda #$FF ; CPU:$F1F6 PRG:31F6 A9 FF + sta PlayerActiveFlags ; CPU:$F1F2 PRG:31F2 85 41 + ldy PlayerCountMinusOne ; CPU:$F1F4 PRG:31F4 A4 40 + bne InitializeRoundObjects_Block ; CPU:$F1F6 PRG:31F6 D0 02 + lda #$FF ; CPU:$F1F8 PRG:31F8 A9 FF InitializeRoundObjects_Block: - sta $42 ; CPU:$F1F8 PRG:31F8 85 42 - ldx #$00 ; CPU:$F1FA PRG:31FA A2 00 - stx $0488 ; CPU:$F1FC PRG:31FC 8E 88 04 - stx $3B ; CPU:$F1FF PRG:31FF 86 3B - stx RoundIndex ; CPU:$F201 PRG:3201 86 3C - stx ParticleSequenceIndex ; CPU:$F203 PRG:3203 8E 58 05 - dex ; CPU:$F206 PRG:3206 CA - stx CarrierPhase ; CPU:$F207 PRG:3207 86 89 - ldx PlayerCountMinusOne ; CPU:$F209 PRG:3209 A6 40 + sta $42 ; CPU:$F1FA PRG:31FA 85 42 + ldx #$00 ; CPU:$F1FC PRG:31FC A2 00 + stx $0488 ; CPU:$F1FE PRG:31FE 8E 88 04 + stx $3B ; CPU:$F201 PRG:3201 86 3B + stx RoundIndex ; CPU:$F203 PRG:3203 86 3C + stx ParticleSequenceIndex ; CPU:$F205 PRG:3205 8E 58 05 + dex ; CPU:$F208 PRG:3208 CA + stx CarrierPhase ; CPU:$F209 PRG:3209 86 89 + ldx PlayerCountMinusOne ; CPU:$F20B PRG:320B A6 40 InitializeRoundObjects_Block_1: - jsr $F3B0 ; CPU:$F20B PRG:320B 20 B0 F3 - dex ; CPU:$F20E PRG:320E CA - bpl InitializeRoundObjects_Block_1 ; CPU:$F20F PRG:320F 10 FA + jsr $F3B0 ; CPU:$F20D PRG:320D 20 B0 F3 + dex ; CPU:$F210 PRG:3210 CA + bpl InitializeRoundObjects_Block_1 ; CPU:$F211 PRG:3211 10 FA InitializeRoundObjects_Load: - lda #$00 ; CPU:$F211 PRG:3211 A9 00 - sta $C8 ; CPU:$F213 PRG:3213 85 C8 - lda RoundIndex ; CPU:$F215 PRG:3215 A5 3C - lsr a ; CPU:$F217 PRG:3217 4A - lsr a ; CPU:$F218 PRG:3218 4A - cmp #$08 ; CPU:$F219 PRG:3219 C9 08 - bcc InitializeRoundObjects_Block_2 ; CPU:$F21B PRG:321B 90 02 - lda #$08 ; CPU:$F21D PRG:321D A9 08 + lda #$00 ; CPU:$F213 PRG:3213 A9 00 + sta $C8 ; CPU:$F215 PRG:3215 85 C8 + lda RoundIndex ; CPU:$F217 PRG:3217 A5 3C + lsr a ; CPU:$F219 PRG:3219 4A + lsr a ; CPU:$F21A PRG:321A 4A + cmp #$08 ; CPU:$F21B PRG:321B C9 08 + bcc InitializeRoundObjects_Block_2 ; CPU:$F21D PRG:321D 90 02 + lda #$08 ; CPU:$F21F PRG:321F A9 08 InitializeRoundObjects_Block_2: - tax ; CPU:$F21F PRG:321F AA - lda RoundObjectTypeTable,x ; CPU:$F220 PRG:3220 BD BA F3 - sta $C6 ; CPU:$F223 PRG:3223 85 C6 - lda RoundObjectPositionTable,x ; CPU:$F225 PRG:3225 BD C3 F3 - sta $C7 ; CPU:$F228 PRG:3228 85 C7 - lda RoundIndex ; CPU:$F22A PRG:322A A5 3C - cmp #$02 ; CPU:$F22C PRG:322C C9 02 - bcs InitializeRoundObjects_Block_3 ; CPU:$F22E PRG:322E B0 06 - lda #$03 ; CPU:$F230 PRG:3230 A9 03 - sta $C6 ; CPU:$F232 PRG:3232 85 C6 - sta $C7 ; CPU:$F234 PRG:3234 85 C7 + tax ; CPU:$F221 PRG:3221 AA + lda RoundObjectTypeTable,x ; CPU:$F222 PRG:3222 BD BA F3 + sta $C6 ; CPU:$F225 PRG:3225 85 C6 + lda RoundObjectPositionTable,x ; CPU:$F227 PRG:3227 BD C3 F3 + sta $C7 ; CPU:$F22A PRG:322A 85 C7 + lda RoundIndex ; CPU:$F22C PRG:322C A5 3C + cmp #$02 ; CPU:$F22E PRG:322E C9 02 + bcs InitializeRoundObjects_Block_3 ; CPU:$F230 PRG:3230 B0 06 + lda #$03 ; CPU:$F232 PRG:3232 A9 03 + sta $C6 ; CPU:$F234 PRG:3234 85 C6 + sta $C7 ; CPU:$F236 PRG:3236 85 C7 InitializeRoundObjects_Block_3: - ldx #$07 ; CPU:$F236 PRG:3236 A2 07 + ldx #$07 ; CPU:$F238 PRG:3238 A2 07 InitializeRoundObjects_Block_4: - lda #$00 ; CPU:$F238 PRG:3238 A9 00 - sta PlayerVariantTable,x ; CPU:$F23A PRG:323A 9D 48 04 - sta $0475,x ; CPU:$F23D PRG:323D 9D 75 04 - sta $047E,x ; CPU:$F240 PRG:3240 9D 7E 04 - sta $0424,x ; CPU:$F243 PRG:3243 9D 24 04 - sta PlayerVerticalImpulse,x ; CPU:$F246 PRG:3246 9D 2D 04 - sta $0412,x ; CPU:$F249 PRG:3249 9D 12 04 - sta PlayerHorizontalImpulse,x ; CPU:$F24C PRG:324C 9D 1B 04 - sta $0463,x ; CPU:$F24F PRG:324F 9D 63 04 - sta $046C,x ; CPU:$F252 PRG:3252 9D 6C 04 - sta $0400,x ; CPU:$F255 PRG:3255 9D 00 04 - sta $0409,x ; CPU:$F258 PRG:3258 9D 09 04 - lda #$01 ; CPU:$F25B PRG:325B A9 01 - sta $043F,x ; CPU:$F25D PRG:325D 9D 3F 04 - sta PlayerStateTimer,x ; CPU:$F260 PRG:3260 9D 5A 04 - lda #$03 ; CPU:$F263 PRG:3263 A9 03 - sta $0436,x ; CPU:$F265 PRG:3265 9D 36 04 - dex ; CPU:$F268 PRG:3268 CA - bpl InitializeRoundObjects_Block_4 ; CPU:$F269 PRG:3269 10 CD - ldx #$05 ; CPU:$F26B PRG:326B A2 05 + lda #$00 ; CPU:$F23A PRG:323A A9 00 + sta PlayerVariantTable,x ; CPU:$F23C PRG:323C 9D 48 04 + sta $0475,x ; CPU:$F23F PRG:323F 9D 75 04 + sta $047E,x ; CPU:$F242 PRG:3242 9D 7E 04 + sta $0424,x ; CPU:$F245 PRG:3245 9D 24 04 + sta PlayerVerticalImpulse,x ; CPU:$F248 PRG:3248 9D 2D 04 + sta $0412,x ; CPU:$F24B PRG:324B 9D 12 04 + sta PlayerHorizontalImpulse,x ; CPU:$F24E PRG:324E 9D 1B 04 + sta $0463,x ; CPU:$F251 PRG:3251 9D 63 04 + sta $046C,x ; CPU:$F254 PRG:3254 9D 6C 04 + sta $0400,x ; CPU:$F257 PRG:3257 9D 00 04 + sta $0409,x ; CPU:$F25A PRG:325A 9D 09 04 + lda #$01 ; CPU:$F25D PRG:325D A9 01 + sta $043F,x ; CPU:$F25F PRG:325F 9D 3F 04 + sta PlayerStateTimer,x ; CPU:$F262 PRG:3262 9D 5A 04 + lda #$03 ; CPU:$F265 PRG:3265 A9 03 + sta $0436,x ; CPU:$F267 PRG:3267 9D 36 04 + dex ; CPU:$F26A PRG:326A CA + bpl InitializeRoundObjects_Block_4 ; CPU:$F26B PRG:326B 10 CD + ldx #$05 ; CPU:$F26D PRG:326D A2 05 InitializeRoundObjects_Block_5: - lda #$FF ; CPU:$F26D PRG:326D A9 FF - sta $8A,x ; CPU:$F26F PRG:326F 95 8A - dex ; CPU:$F271 PRG:3271 CA - bpl InitializeRoundObjects_Block_5 ; CPU:$F272 PRG:3272 10 F9 - ldx PlayerCountMinusOne ; CPU:$F274 PRG:3274 A6 40 + lda #$FF ; CPU:$F26F PRG:326F A9 FF + sta $8A,x ; CPU:$F271 PRG:3271 95 8A + dex ; CPU:$F273 PRG:3273 CA + bpl InitializeRoundObjects_Block_5 ; CPU:$F274 PRG:3274 10 F9 + ldx PlayerCountMinusOne ; CPU:$F276 PRG:3276 A6 40 InitializeRoundObjects_Block_6: - jsr ResetObjectMotion ; CPU:$F276 PRG:3276 20 86 F3 - dex ; CPU:$F279 PRG:3279 CA - bpl InitializeRoundObjects_Block_6 ; CPU:$F27A PRG:327A 10 FA - jsr $D246 ; CPU:$F27C PRG:327C 20 46 D2 - jsr $D293 ; CPU:$F27F PRG:327F 20 93 D2 - lda $C6 ; CPU:$F282 PRG:3282 A5 C6 - cmp #$10 ; CPU:$F284 PRG:3284 C9 10 - bcs InitializeRoundObjects_Block_7 ; CPU:$F286 PRG:3286 B0 04 - lda #$58 ; CPU:$F288 PRG:3288 A9 58 - sta $C6 ; CPU:$F28A PRG:328A 85 C6 + jsr ResetObjectMotion ; CPU:$F278 PRG:3278 20 86 F3 + dex ; CPU:$F27B PRG:327B CA + bpl InitializeRoundObjects_Block_6 ; CPU:$F27C PRG:327C 10 FA + jsr $D246 ; CPU:$F27E PRG:327E 20 46 D2 + jsr $D293 ; CPU:$F281 PRG:3281 20 93 D2 + lda $C6 ; CPU:$F284 PRG:3284 A5 C6 + cmp #$10 ; CPU:$F286 PRG:3286 C9 10 + bcs InitializeRoundObjects_Block_7 ; CPU:$F288 PRG:3288 B0 04 + lda #$58 ; CPU:$F28A PRG:328A A9 58 + sta $C6 ; CPU:$F28C PRG:328C 85 C6 InitializeRoundObjects_Block_7: - jsr InitializeAudio ; CPU:$F28C PRG:328C 20 A5 F4 - jsr $D8FF ; CPU:$F28F PRG:328F 20 FF D8 - lda RenderingDisabledFlag ; CPU:$F292 PRG:3292 A5 16 - beq InitializeRoundObjects_Block_8 ; CPU:$F294 PRG:3294 F0 03 - jmp $C1C5 ; CPU:$F296 PRG:3296 4C C5 C1 + jsr InitializeAudio ; CPU:$F28E PRG:328E 20 A5 F4 + jsr $D8FF ; CPU:$F291 PRG:3291 20 FF D8 + lda RenderingDisabledFlag ; CPU:$F294 PRG:3294 A5 16 + beq InitializeRoundObjects_Block_8 ; CPU:$F296 PRG:3296 F0 03 + jmp $C1C5 ; CPU:$F298 PRG:3298 4C C5 C1 InitializeRoundObjects_Block_8: - lda $C8 ; CPU:$F299 PRG:3299 A5 C8 - beq InitializeRoundObjects_Block_9 ; CPU:$F29B PRG:329B F0 03 - jmp $CF13 ; CPU:$F29D PRG:329D 4C 13 CF + lda $C8 ; CPU:$F29B PRG:329B A5 C8 + beq InitializeRoundObjects_Block_9 ; CPU:$F29D PRG:329D F0 03 + jmp $CF13 ; CPU:$F29F PRG:329F 4C 13 CF InitializeRoundObjects_Block_9: - jsr $C716 ; CPU:$F2A0 PRG:32A0 20 16 C7 - lda $3B ; CPU:$F2A3 PRG:32A3 A5 3B - and #$03 ; CPU:$F2A5 PRG:32A5 29 03 - bne InitializeRoundObjects_Block_10 ; CPU:$F2A7 PRG:32A7 D0 08 - lda #$08 ; CPU:$F2A9 PRG:32A9 A9 08 - sta SoundRequestFlags2 ; CPU:$F2AB PRG:32AB 85 F2 - ldx $3A ; CPU:$F2AD PRG:32AD A6 3A - bne InitializeRoundObjects_Block_11 ; CPU:$F2AF PRG:32AF D0 06 + jsr $C716 ; CPU:$F2A2 PRG:32A2 20 16 C7 + lda $3B ; CPU:$F2A5 PRG:32A5 A5 3B + and #$03 ; CPU:$F2A7 PRG:32A7 29 03 + bne InitializeRoundObjects_Block_10 ; CPU:$F2A9 PRG:32A9 D0 08 + lda #$08 ; CPU:$F2AB PRG:32AB A9 08 + sta SoundRequestFlags2 ; CPU:$F2AD PRG:32AD 85 F2 + ldx $3A ; CPU:$F2AF PRG:32AF A6 3A + bne InitializeRoundObjects_Block_11 ; CPU:$F2B1 PRG:32B1 D0 06 InitializeRoundObjects_Block_10: - lda #$FF ; CPU:$F2B1 PRG:32B1 A9 FF - sta $3D ; CPU:$F2B3 PRG:32B3 85 3D - inc RoundIndex ; CPU:$F2B5 PRG:32B5 E6 3C + lda #$FF ; CPU:$F2B3 PRG:32B3 A9 FF + sta $3D ; CPU:$F2B5 PRG:32B5 85 3D + inc RoundIndex ; CPU:$F2B7 PRG:32B7 E6 3C InitializeRoundObjects_Block_11: - jsr $F470 ; CPU:$F2B7 PRG:32B7 20 70 F4 - lda $3D ; CPU:$F2BA PRG:32BA A5 3D - beq InitializeRoundObjects_Block_12 ; CPU:$F2BC PRG:32BC F0 05 - dec $3D ; CPU:$F2BE PRG:32BE C6 3D - jsr $F3CC ; CPU:$F2C0 PRG:32C0 20 CC F3 + jsr $F470 ; CPU:$F2B9 PRG:32B9 20 70 F4 + lda $3D ; CPU:$F2BC PRG:32BC A5 3D + beq InitializeRoundObjects_Block_12 ; CPU:$F2BE PRG:32BE F0 05 + dec $3D ; CPU:$F2C0 PRG:32C0 C6 3D + jsr $F3CC ; CPU:$F2C2 PRG:32C2 20 CC F3 InitializeRoundObjects_Block_12: - jsr NextRandomByte ; CPU:$F2C3 PRG:32C3 20 B3 F1 - jsr UpdateGameplayObjects ; CPU:$F2C6 PRG:32C6 20 91 E6 - jsr UpdateSpecialObjectSystem ; CPU:$F2C9 PRG:32C9 20 F9 C6 - jsr $C790 ; CPU:$F2CC PRG:32CC 20 90 C7 - jsr $C831 ; CPU:$F2CF PRG:32CF 20 31 C8 - jsr $C8B7 ; CPU:$F2D2 PRG:32D2 20 B7 C8 - jsr $D8DD ; CPU:$F2D5 PRG:32D5 20 DD D8 - jsr $E587 ; CPU:$F2D8 PRG:32D8 20 87 E5 - jsr $CB74 ; CPU:$F2DB PRG:32DB 20 74 CB - inc $4C ; CPU:$F2DE PRG:32DE E6 4C - ldx PlayerCountMinusOne ; CPU:$F2E0 PRG:32E0 A6 40 + jsr NextRandomByte ; CPU:$F2C5 PRG:32C5 20 B3 F1 + jsr UpdateGameplayObjects ; CPU:$F2C8 PRG:32C8 20 91 E6 + jsr UpdateSpecialObjectSystem ; CPU:$F2CB PRG:32CB 20 F9 C6 + jsr $C790 ; CPU:$F2CE PRG:32CE 20 90 C7 + jsr $C831 ; CPU:$F2D1 PRG:32D1 20 31 C8 + jsr $C8B7 ; CPU:$F2D4 PRG:32D4 20 B7 C8 + jsr $D8DD ; CPU:$F2D7 PRG:32D7 20 DD D8 + jsr $E587 ; CPU:$F2DA PRG:32DA 20 87 E5 + jsr $CB74 ; CPU:$F2DD PRG:32DD 20 74 CB + inc $4C ; CPU:$F2E0 PRG:32E0 E6 4C + ldx PlayerCountMinusOne ; CPU:$F2E2 PRG:32E2 A6 40 InitializeRoundObjects_Block_13: - lda PlayerSlotState,x ; CPU:$F2E2 PRG:32E2 B5 88 - bpl InitializeRoundObjects_Block_14 ; CPU:$F2E4 PRG:32E4 10 25 - lda $3A ; CPU:$F2E6 PRG:32E6 A5 3A - bne InitializeRoundObjects_Block_16 ; CPU:$F2E8 PRG:32E8 D0 3A - lda PlayerActiveFlags,x ; CPU:$F2EA PRG:32EA B5 41 - bmi InitializeRoundObjects_Block_14 ; CPU:$F2EC PRG:32EC 30 1D - dec $C3,x ; CPU:$F2EE PRG:32EE D6 C3 - bne InitializeRoundObjects_Block_17 ; CPU:$F2F0 PRG:32F0 D0 33 - txa ; CPU:$F2F2 PRG:32F2 8A - pha ; CPU:$F2F3 PRG:32F3 48 - jsr $C726 ; CPU:$F2F4 PRG:32F4 20 26 C7 - pla ; CPU:$F2F7 PRG:32F7 68 - tax ; CPU:$F2F8 PRG:32F8 AA - ldy #$02 ; CPU:$F2F9 PRG:32F9 A0 02 - dec PlayerActiveFlags,x ; CPU:$F2FB PRG:32FB D6 41 - sty SequenceStep ; CPU:$F2FD PRG:32FD 84 46 - bmi InitializeRoundObjects_Block_14 ; CPU:$F2FF PRG:32FF 30 0A - jsr ResetObjectMotion ; CPU:$F301 PRG:3301 20 86 F3 - jsr $F3B0 ; CPU:$F304 PRG:3304 20 B0 F3 - lda #$80 ; CPU:$F307 PRG:3307 A9 80 - sta SoundRequestFlags2 ; CPU:$F309 PRG:3309 85 F2 + lda PlayerSlotState,x ; CPU:$F2E4 PRG:32E4 B5 88 + bpl InitializeRoundObjects_Block_14 ; CPU:$F2E6 PRG:32E6 10 25 + lda $3A ; CPU:$F2E8 PRG:32E8 A5 3A + bne InitializeRoundObjects_Block_16 ; CPU:$F2EA PRG:32EA D0 3A + lda PlayerActiveFlags,x ; CPU:$F2EC PRG:32EC B5 41 + bmi InitializeRoundObjects_Block_14 ; CPU:$F2EE PRG:32EE 30 1D + dec $C3,x ; CPU:$F2F0 PRG:32F0 D6 C3 + bne InitializeRoundObjects_Block_17 ; CPU:$F2F2 PRG:32F2 D0 33 + txa ; CPU:$F2F4 PRG:32F4 8A + pha ; CPU:$F2F5 PRG:32F5 48 + jsr $C726 ; CPU:$F2F6 PRG:32F6 20 26 C7 + pla ; CPU:$F2F9 PRG:32F9 68 + tax ; CPU:$F2FA PRG:32FA AA + ldy #$02 ; CPU:$F2FB PRG:32FB A0 02 + dec PlayerActiveFlags,x ; CPU:$F2FD PRG:32FD D6 41 + sty SequenceStep ; CPU:$F2FF PRG:32FF 84 46 + bmi InitializeRoundObjects_Block_14 ; CPU:$F301 PRG:3301 30 0A + jsr ResetObjectMotion ; CPU:$F303 PRG:3303 20 86 F3 + jsr $F3B0 ; CPU:$F306 PRG:3306 20 B0 F3 + lda #$80 ; CPU:$F309 PRG:3309 A9 80 + sta SoundRequestFlags2 ; CPU:$F30B PRG:330B 85 F2 InitializeRoundObjects_Block_14: - dex ; CPU:$F30B PRG:330B CA - bpl InitializeRoundObjects_Block_13 ; CPU:$F30C PRG:330C 10 D4 - lda PlayerActiveFlags ; CPU:$F30E PRG:330E A5 41 - bpl InitializeRoundObjects_Block_15 ; CPU:$F310 PRG:3310 10 04 - lda $42 ; CPU:$F312 PRG:3312 A5 42 - bmi InitializeRoundObjects_Block_23 ; CPU:$F314 PRG:3314 30 4E + dex ; CPU:$F30D PRG:330D CA + bpl InitializeRoundObjects_Block_13 ; CPU:$F30E PRG:330E 10 D4 + lda PlayerActiveFlags ; CPU:$F310 PRG:3310 A5 41 + bpl InitializeRoundObjects_Block_15 ; CPU:$F312 PRG:3312 10 04 + lda $42 ; CPU:$F314 PRG:3314 A5 42 + bmi InitializeRoundObjects_Block_23 ; CPU:$F316 PRG:3316 30 4E InitializeRoundObjects_Block_15: - lda $3A ; CPU:$F316 PRG:3316 A5 3A - beq InitializeRoundObjects_Block_17 ; CPU:$F318 PRG:3318 F0 0B - jsr $E768 ; CPU:$F31A PRG:331A 20 68 E7 - lda $061C ; CPU:$F31D PRG:331D AD 1C 06 - and #$30 ; CPU:$F320 PRG:3320 29 30 - beq InitializeRoundObjects_Block_11 ; CPU:$F322 PRG:3322 F0 93 + lda $3A ; CPU:$F318 PRG:3318 A5 3A + beq InitializeRoundObjects_Block_17 ; CPU:$F31A PRG:331A F0 0B + jsr $E768 ; CPU:$F31C PRG:331C 20 68 E7 + lda $061C ; CPU:$F31F PRG:331F AD 1C 06 + and #$30 ; CPU:$F322 PRG:3322 29 30 + beq InitializeRoundObjects_Block_11 ; CPU:$F324 PRG:3324 F0 93 InitializeRoundObjects_Block_16: - rts ; CPU:$F324 PRG:3324 60 + rts ; CPU:$F326 PRG:3326 60 InitializeRoundObjects_Block_17: - ldx #$05 ; CPU:$F325 PRG:3325 A2 05 + ldx #$05 ; CPU:$F327 PRG:3327 A2 05 InitializeRoundObjects_Block_18: - lda $8A,x ; CPU:$F327 PRG:3327 B5 8A - beq InitializeRoundObjects_Block_19 ; CPU:$F329 PRG:3329 F0 02 - bpl InitializeRoundObjects_Block_11 ; CPU:$F32B PRG:332B 10 8A + lda $8A,x ; CPU:$F329 PRG:3329 B5 8A + beq InitializeRoundObjects_Block_19 ; CPU:$F32B PRG:332B F0 02 + bpl InitializeRoundObjects_Block_11 ; CPU:$F32D PRG:332D 10 8A InitializeRoundObjects_Block_19: - dex ; CPU:$F32D PRG:332D CA - bpl InitializeRoundObjects_Block_18 ; CPU:$F32E PRG:332E 10 F7 - lda $BB ; CPU:$F330 PRG:3330 A5 BB - bpl InitializeRoundObjects_Block_11 ; CPU:$F332 PRG:3332 10 83 - ldx PlayerCountMinusOne ; CPU:$F334 PRG:3334 A6 40 + dex ; CPU:$F32F PRG:332F CA + bpl InitializeRoundObjects_Block_18 ; CPU:$F330 PRG:3330 10 F7 + lda $BB ; CPU:$F332 PRG:3332 A5 BB + bpl InitializeRoundObjects_Block_11 ; CPU:$F334 PRG:3334 10 83 + ldx PlayerCountMinusOne ; CPU:$F336 PRG:3336 A6 40 InitializeRoundObjects_Block_20: - ldy PlayerSlotState,x ; CPU:$F336 PRG:3336 B4 88 - dey ; CPU:$F338 PRG:3338 88 - bpl InitializeRoundObjects_Block_21 ; CPU:$F339 PRG:3339 10 0F - lda PlayerActiveFlags,x ; CPU:$F33B PRG:333B B5 41 - bmi InitializeRoundObjects_Block_21 ; CPU:$F33D PRG:333D 30 0B - lda #$FF ; CPU:$F33F PRG:333F A9 FF - sta PlayerSlotState,x ; CPU:$F341 PRG:3341 95 88 - lda #$01 ; CPU:$F343 PRG:3343 A9 01 - sta $C3,x ; CPU:$F345 PRG:3345 95 C3 - jmp InitializeRoundObjects_Block_11 ; CPU:$F347 PRG:3347 4C B9 F2 + ldy PlayerSlotState,x ; CPU:$F338 PRG:3338 B4 88 + dey ; CPU:$F33A PRG:333A 88 + bpl InitializeRoundObjects_Block_21 ; CPU:$F33B PRG:333B 10 0F + lda PlayerActiveFlags,x ; CPU:$F33D PRG:333D B5 41 + bmi InitializeRoundObjects_Block_21 ; CPU:$F33F PRG:333F 30 0B + lda #$FF ; CPU:$F341 PRG:3341 A9 FF + sta PlayerSlotState,x ; CPU:$F343 PRG:3343 95 88 + lda #$01 ; CPU:$F345 PRG:3345 A9 01 + sta $C3,x ; CPU:$F347 PRG:3347 95 C3 + jmp InitializeRoundObjects_Block_11 ; CPU:$F349 PRG:3349 4C B9 F2 InitializeRoundObjects_Block_21: - dex ; CPU:$F34A PRG:334A CA - bpl InitializeRoundObjects_Block_20 ; CPU:$F34B PRG:334B 10 E9 - lda #$02 ; CPU:$F34D PRG:334D A9 02 - sta SoundRequestFlags2 ; CPU:$F34F PRG:334F 85 F2 - ldx #$96 ; CPU:$F351 PRG:3351 A2 96 - jsr $F45E ; CPU:$F353 PRG:3353 20 5E F4 - ldx $3B ; CPU:$F356 PRG:3356 A6 3B - inx ; CPU:$F358 PRG:3358 E8 - cpx #$10 ; CPU:$F359 PRG:3359 E0 10 - bne InitializeRoundObjects_Block_22 ; CPU:$F35B PRG:335B D0 02 - ldx #$04 ; CPU:$F35D PRG:335D A2 04 + dex ; CPU:$F34C PRG:334C CA + bpl InitializeRoundObjects_Block_20 ; CPU:$F34D PRG:334D 10 E9 + lda #$02 ; CPU:$F34F PRG:334F A9 02 + sta SoundRequestFlags2 ; CPU:$F351 PRG:3351 85 F2 + ldx #$96 ; CPU:$F353 PRG:3353 A2 96 + jsr $F45E ; CPU:$F355 PRG:3355 20 5E F4 + ldx $3B ; CPU:$F358 PRG:3358 A6 3B + inx ; CPU:$F35A PRG:335A E8 + cpx #$10 ; CPU:$F35B PRG:335B E0 10 + bne InitializeRoundObjects_Block_22 ; CPU:$F35D PRG:335D D0 02 + ldx #$04 ; CPU:$F35F PRG:335F A2 04 InitializeRoundObjects_Block_22: - stx $3B ; CPU:$F35F PRG:335F 86 3B - jmp InitializeRoundObjects_Load ; CPU:$F361 PRG:3361 4C 13 F2 + stx $3B ; CPU:$F361 PRG:3361 86 3B + jmp InitializeRoundObjects_Load; CPU:$F363 PRG:3363 4C 13 F2 InitializeRoundObjects_Block_23: - lda #$01 ; CPU:$F364 PRG:3364 A9 01 - sta SoundRequestFlags2 ; CPU:$F366 PRG:3366 85 F2 - lda #$00 ; CPU:$F368 PRG:3368 A9 00 - sta PpuScrollX ; CPU:$F36A PRG:336A 85 17 - sta PpuControlBase ; CPU:$F36C PRG:336C 85 18 - sta SpawnPixelPosition ; CPU:$F36E PRG:336E 85 15 - jsr $F40B ; CPU:$F370 PRG:3370 20 0B F4 + lda #$01 ; CPU:$F366 PRG:3366 A9 01 + sta SoundRequestFlags2 ; CPU:$F368 PRG:3368 85 F2 + lda #$00 ; CPU:$F36A PRG:336A A9 00 + sta PpuScrollX ; CPU:$F36C PRG:336C 85 17 + sta PpuControlBase ; CPU:$F36E PRG:336E 85 18 + sta SpawnPixelPosition ; CPU:$F370 PRG:3370 85 15 + jsr $F40B ; CPU:$F372 PRG:3372 20 0B F4 InitializeRoundObjects_Block_24: - jsr WaitForFrame ; CPU:$F373 PRG:3373 20 65 F4 - jsr $E768 ; CPU:$F376 PRG:3376 20 68 E7 - and #$30 ; CPU:$F379 PRG:3379 29 30 - bne InitializeRoundObjects_Block_25 ; CPU:$F37B PRG:337B D0 04 - dec SpawnPixelPosition ; CPU:$F37D PRG:337D C6 15 - bne InitializeRoundObjects_Block_24 ; CPU:$F37F PRG:337F D0 F2 + jsr WaitForFrame ; CPU:$F375 PRG:3375 20 65 F4 + jsr $E768 ; CPU:$F378 PRG:3378 20 68 E7 + and #$30 ; CPU:$F37B PRG:337B 29 30 + bne InitializeRoundObjects_Block_25 ; CPU:$F37D PRG:337D D0 04 + dec SpawnPixelPosition ; CPU:$F37F PRG:337F C6 15 + bne InitializeRoundObjects_Block_24 ; CPU:$F381 PRG:3381 D0 F2 InitializeRoundObjects_Block_25: - jmp NextRandomByte_Block_1 ; CPU:$F381 PRG:3381 4C D4 F1 + jmp NextRandomByte_Block_1 ; CPU:$F383 PRG:3383 4C D4 F1 ; ResetObjectMotion ; Purpose: clear an object motion/state record. ; Inputs: X = object slot. ; Returns: motion fields cleared and default state restored. ResetObjectMotion: - lda PlayerActiveFlags,x ; CPU:$F384 PRG:3384 B5 41 - bmi ResetObjectMotion_Block_1 ; CPU:$F386 PRG:3386 30 23 - lda ObjectSpawnStateTable,x ; CPU:$F388 PRG:3388 BD AE F3 - sta PlayerPosX,x ; CPU:$F38B PRG:338B 95 91 - lda #$B8 ; CPU:$F38D PRG:338D A9 B8 - sta PlayerPosY,x ; CPU:$F38F PRG:338F 95 9A - sta PlayerCollisionDisable,x ; CPU:$F391 PRG:3391 95 BD - lda #$C8 ; CPU:$F393 PRG:3393 A9 C8 - sta $BF,x ; CPU:$F395 PRG:3395 95 BF - lda #$5A ; CPU:$F397 PRG:3397 A9 5A - ldy PlayerActiveFlags,x ; CPU:$F399 PRG:3399 B4 41 - bpl ResetObjectMotion_Block ; CPU:$F39B PRG:339B 10 02 - lda #$01 ; CPU:$F39D PRG:339D A9 01 + lda PlayerActiveFlags,x ; CPU:$F386 PRG:3386 B5 41 + bmi ResetObjectMotion_Block_1 ; CPU:$F388 PRG:3388 30 23 + lda ObjectSpawnStateTable,x ; CPU:$F38A PRG:338A BD AE F3 + sta PlayerPosX,x ; CPU:$F38D PRG:338D 95 91 + lda #$B8 ; CPU:$F38F PRG:338F A9 B8 + sta PlayerPosY,x ; CPU:$F391 PRG:3391 95 9A + sta PlayerCollisionDisable,x ; CPU:$F393 PRG:3393 95 BD + lda #$C8 ; CPU:$F395 PRG:3395 A9 C8 + sta $BF,x ; CPU:$F397 PRG:3397 95 BF + lda #$5A ; CPU:$F399 PRG:3399 A9 5A + ldy PlayerActiveFlags,x ; CPU:$F39B PRG:339B B4 41 + bpl ResetObjectMotion_Block ; CPU:$F39D PRG:339D 10 02 + lda #$01 ; CPU:$F39F PRG:339F A9 01 ResetObjectMotion_Block: - sta $C3,x ; CPU:$F39F PRG:339F 95 C3 - lda #$00 ; CPU:$F3A1 PRG:33A1 A9 00 - sta $C1,x ; CPU:$F3A3 PRG:33A3 95 C1 - sta PlayerVerticalImpulse,x ; CPU:$F3A5 PRG:33A5 9D 2D 04 - sta $0424,x ; CPU:$F3A8 PRG:33A8 9D 24 04 + sta $C3,x ; CPU:$F3A1 PRG:33A1 95 C3 + lda #$00 ; CPU:$F3A3 PRG:33A3 A9 00 + sta $C1,x ; CPU:$F3A5 PRG:33A5 95 C1 + sta PlayerVerticalImpulse,x ; CPU:$F3A7 PRG:33A7 9D 2D 04 + sta $0424,x ; CPU:$F3AA PRG:33AA 9D 24 04 ResetObjectMotion_Block_1: - rts ; CPU:$F3AB PRG:33AB 60 + rts ; CPU:$F3AD PRG:33AD 60 ObjectSpawnStateTable: - .byte $20, $D0 ; CPU:$F3AC PRG:33AC 20 D0 + .byte $20, $D0 ; CPU:$F3AE PRG:33AE 20 D0 ; ActivateSpawnedObject ; Purpose: finalize a newly spawned object record. ; Inputs: X = object slot. ; Returns: object type/state initialized and slot activated. ActivateSpawnedObject: - lda #$03 ; CPU:$F3AE PRG:33AE A9 03 - sta PlayerAnimationState,x ; CPU:$F3B0 PRG:33B0 9D 51 04 - lda #$02 ; CPU:$F3B3 PRG:33B3 A9 02 - sta PlayerSlotState,x ; CPU:$F3B5 PRG:33B5 95 88 - rts ; CPU:$F3B7 PRG:33B7 60 + lda #$03 ; CPU:$F3B0 PRG:33B0 A9 03 + sta PlayerAnimationState,x ; CPU:$F3B2 PRG:33B2 9D 51 04 + lda #$02 ; CPU:$F3B5 PRG:33B5 A9 02 + sta PlayerSlotState,x ; CPU:$F3B7 PRG:33B7 95 88 + rts ; CPU:$F3B9 PRG:33B9 60 RoundObjectTypeTable: - .byte $58, $50, $58, $50, $50, $40, $38, $30 ; CPU:$F3B8 PRG:33B8 58 50 58 50 50 40 38 30 - .byte $28 ; CPU:$F3C0 PRG:33C0 28 + .byte $58, $50, $58, $50, $50, $40, $38, $30 ; CPU:$F3BA PRG:33BA 58 50 58 50 50 40 38 30 + .byte $28 ; CPU:$F3C2 PRG:33C2 28 RoundObjectPositionTable: - .byte $04, $04, $03, $03, $02, $02, $02, $02 ; CPU:$F3C1 PRG:33C1 04 04 03 03 02 02 02 02 - .byte $02 ; CPU:$F3C9 PRG:33C9 02 + .byte $04, $04, $03, $03, $02, $02, $02, $02 ; CPU:$F3C3 PRG:33C3 04 04 03 03 02 02 02 02 + .byte $02 ; CPU:$F3CB PRG:33CB 02 ; LoadRoundScreenData ; Purpose: select and queue round-specific screen/status data. ; Inputs: round and mode globals. ; Returns: display data pointers and buffers initialized. LoadRoundScreenData: - lda $3D ; CPU:$F3CA PRG:33CA A5 3D - and #$20 ; CPU:$F3CC PRG:33CC 29 20 - beq LoadRoundScreenData_Block_1 ; CPU:$F3CE PRG:33CE F0 1C - ldx #$0A ; CPU:$F3D0 PRG:33D0 A2 0A + lda $3D ; CPU:$F3CC PRG:33CC A5 3D + and #$20 ; CPU:$F3CE PRG:33CE 29 20 + beq LoadRoundScreenData_Block_1; CPU:$F3D0 PRG:33D0 F0 1C + ldx #$0A ; CPU:$F3D2 PRG:33D2 A2 0A LoadRoundScreenData_Block: - lda $F3F5,x ; CPU:$F3D2 PRG:33D2 BD F5 F3 - sta PpuCommandData0,x ; CPU:$F3D5 PRG:33D5 95 57 - dex ; CPU:$F3D7 PRG:33D7 CA - bpl LoadRoundScreenData_Block ; CPU:$F3D8 PRG:33D8 10 F8 - ldy #$0A ; CPU:$F3DA PRG:33DA A0 0A - lda RoundIndex ; CPU:$F3DC PRG:33DC A5 3C - sta SelectedRecordIndex ; CPU:$F3DE PRG:33DE 85 43 - jsr DivideOrScaleRecordValue ; CPU:$F3E0 PRG:33E0 20 7C D7 - sta $60 ; CPU:$F3E3 PRG:33E3 85 60 - lda SelectedRecordIndex ; CPU:$F3E5 PRG:33E5 A5 43 - sta $61 ; CPU:$F3E7 PRG:33E7 85 61 - jmp $C12D ; CPU:$F3E9 PRG:33E9 4C 2D C1 + lda $F3F5,x ; CPU:$F3D4 PRG:33D4 BD F5 F3 + sta PpuCommandData0,x ; CPU:$F3D7 PRG:33D7 95 57 + dex ; CPU:$F3D9 PRG:33D9 CA + bpl LoadRoundScreenData_Block ; CPU:$F3DA PRG:33DA 10 F8 + ldy #$0A ; CPU:$F3DC PRG:33DC A0 0A + lda RoundIndex ; CPU:$F3DE PRG:33DE A5 3C + sta SelectedRecordIndex ; CPU:$F3E0 PRG:33E0 85 43 + jsr DivideOrScaleRecordValue ; CPU:$F3E2 PRG:33E2 20 7C D7 + sta $60 ; CPU:$F3E5 PRG:33E5 85 60 + lda SelectedRecordIndex ; CPU:$F3E7 PRG:33E7 A5 43 + sta $61 ; CPU:$F3E9 PRG:33E9 85 61 + jmp $C12D ; CPU:$F3EB PRG:33EB 4C 2D C1 LoadRoundScreenData_Block_1: - lda #$00 ; CPU:$F3EC PRG:33EC A9 00 - ldy #$F4 ; CPU:$F3EE PRG:33EE A0 F4 - jmp $C131 ; CPU:$F3F0 PRG:33F0 4C 31 C1 + lda #$00 ; CPU:$F3EE PRG:33EE A9 00 + ldy #$F4 ; CPU:$F3F0 PRG:33F0 A0 F4 + jmp $C131 ; CPU:$F3F2 PRG:33F2 4C 31 C1 RoundInitAttributeTable: - .byte $20, $6C, $08, $19, $11, $0A, $1C, $0E ; CPU:$F3F3 PRG:33F3 20 6C 08 19 11 0A 1C 0E - .byte $25, $00, $00, $20, $6C, $08, $24, $24 ; CPU:$F3FB PRG:33FB 25 00 00 20 6C 08 24 24 - .byte $24, $24, $24, $24, $24, $24 ; CPU:$F403 PRG:3403 24 24 24 24 24 24 + .byte $20, $6C, $08, $19, $11, $0A, $1C, $0E ; CPU:$F3F5 PRG:33F5 20 6C 08 19 11 0A 1C 0E + .byte $25, $00, $00, $20, $6C, $08, $24, $24 ; CPU:$F3FD PRG:33FD 25 00 00 20 6C 08 24 24 + .byte $24, $24, $24, $24, $24, $24 ; CPU:$F405 PRG:3405 24 24 24 24 24 24 ; DrawRoundStatusPanel ; Purpose: write fixed round-status tile rows and numeric fields. ; Inputs: round status globals. ; Returns: status-panel buffer populated. DrawRoundStatusPanel: - jsr WaitOneFrame ; CPU:$F409 PRG:3409 20 65 F4 - ldx #$01 ; CPU:$F40C PRG:340C A2 01 + jsr WaitOneFrame ; CPU:$F40B PRG:340B 20 65 F4 + ldx #$01 ; CPU:$F40E PRG:340E A2 01 DrawRoundStatusPanel_Block: - lda $F43B,x ; CPU:$F40E PRG:340E BD 3B F4 - ldy $F43D,x ; CPU:$F411 PRG:3411 BC 3D F4 - jsr $C131 ; CPU:$F414 PRG:3414 20 31 C1 - dex ; CPU:$F417 PRG:3417 CA - bpl DrawRoundStatusPanel_Block ; CPU:$F418 PRG:3418 10 F4 - ldx #$0F ; CPU:$F41A PRG:341A A2 0F + lda $F43B,x ; CPU:$F410 PRG:3410 BD 3B F4 + ldy $F43D,x ; CPU:$F413 PRG:3413 BC 3D F4 + jsr $C131 ; CPU:$F416 PRG:3416 20 31 C1 + dex ; CPU:$F419 PRG:3419 CA + bpl DrawRoundStatusPanel_Block ; CPU:$F41A PRG:341A 10 F4 + ldx #$0F ; CPU:$F41C PRG:341C A2 0F DrawRoundStatusPanel_Block_1: - lda #$24 ; CPU:$F41C PRG:341C A9 24 - sta RoundHudTile,x ; CPU:$F41E PRG:341E 95 5A - dex ; CPU:$F420 PRG:3420 CA - bpl DrawRoundStatusPanel_Block_1 ; CPU:$F421 PRG:3421 10 F9 - lda #$10 ; CPU:$F423 PRG:3423 A9 10 - sta RoundHudCommandLength ; CPU:$F425 PRG:3425 85 59 - lda #$21 ; CPU:$F427 PRG:3427 A9 21 - sta RoundHudCommandAddressHi ; CPU:$F429 PRG:3429 85 57 - ldx #$02 ; CPU:$F42B PRG:342B A2 02 + lda #$24 ; CPU:$F41E PRG:341E A9 24 + sta RoundHudTile,x ; CPU:$F420 PRG:3420 95 5A + dex ; CPU:$F422 PRG:3422 CA + bpl DrawRoundStatusPanel_Block_1 ; CPU:$F423 PRG:3423 10 F9 + lda #$10 ; CPU:$F425 PRG:3425 A9 10 + sta RoundHudCommandLength ; CPU:$F427 PRG:3427 85 59 + lda #$21 ; CPU:$F429 PRG:3429 A9 21 + sta RoundHudCommandAddressHi ; CPU:$F42B PRG:342B 85 57 + ldx #$02 ; CPU:$F42D PRG:342D A2 02 DrawRoundStatusPanel_Block_2: - lda $F43F,x ; CPU:$F42D PRG:342D BD 3F F4 - sta RoundHudCommandAddressLo ; CPU:$F430 PRG:3430 85 58 - jsr $C12D ; CPU:$F432 PRG:3432 20 2D C1 - dex ; CPU:$F435 PRG:3435 CA - bpl DrawRoundStatusPanel_Block_2 ; CPU:$F436 PRG:3436 10 F5 - rts ; CPU:$F438 PRG:3438 60 + lda $F43F,x ; CPU:$F42F PRG:342F BD 3F F4 + sta RoundHudCommandAddressLo ; CPU:$F432 PRG:3432 85 58 + jsr $C12D ; CPU:$F434 PRG:3434 20 2D C1 + dex ; CPU:$F437 PRG:3437 CA + bpl DrawRoundStatusPanel_Block_2 ; CPU:$F438 PRG:3438 10 F5 + rts ; CPU:$F43A PRG:343A 60 StatusPanelAddressLoTable: - .byte $42, $55 ; CPU:$F439 PRG:3439 42 55 + .byte $42, $55 ; CPU:$F43B PRG:343B 42 55 StatusPanelAddressHiTable: - .byte $F4, $F4 ; CPU:$F43B PRG:343B F4 F4 + .byte $F4, $F4 ; CPU:$F43D PRG:343D F4 F4 StatusPanelTileData: - .byte $88, $A8, $E8, $21, $C8, $10, $24, $24 ; CPU:$F43D PRG:343D 88 A8 E8 21 C8 10 24 24 - .byte $24, $10, $0A, $16, $0E, $24, $24, $18 ; CPU:$F445 PRG:3445 24 10 0A 16 0E 24 24 18 - .byte $1F, $0E, $1B, $24, $24, $24, $23, $DA ; CPU:$F44D PRG:344D 1F 0E 1B 24 24 24 23 DA - .byte $04, $AA, $AA, $AA, $AA ; CPU:$F455 PRG:3455 04 AA AA AA AA + .byte $88, $A8, $E8, $21, $C8, $10, $24, $24 ; CPU:$F43F PRG:343F 88 A8 E8 21 C8 10 24 24 + .byte $24, $10, $0A, $16, $0E, $24, $24, $18 ; CPU:$F447 PRG:3447 24 10 0A 16 0E 24 24 18 + .byte $1F, $0E, $1B, $24, $24, $24, $23, $DA ; CPU:$F44F PRG:344F 1F 0E 1B 24 24 24 23 DA + .byte $04, $AA, $AA, $AA, $AA ; CPU:$F457 PRG:3457 04 AA AA AA AA ; DelayFrames ; Purpose: wait for a fixed number of frame ticks. ; Inputs: A = frame count. ; Returns: after A frame-counter transitions. DelayFrames: - ldx #$14 ; CPU:$F45A PRG:345A A2 14 + ldx #$14 ; CPU:$F45C PRG:345C A2 14 DelayFramesLoop: - jsr WaitOneFrame ; CPU:$F45C PRG:345C 20 65 F4 - dex ; CPU:$F45F PRG:345F CA - bne DelayFramesLoop ; CPU:$F460 PRG:3460 D0 FA - rts ; CPU:$F462 PRG:3462 60 + jsr WaitOneFrame ; CPU:$F45E PRG:345E 20 65 F4 + dex ; CPU:$F461 PRG:3461 CA + bne DelayFramesLoop ; CPU:$F462 PRG:3462 D0 FA + rts ; CPU:$F464 PRG:3464 60 ; WaitOneFrame ; Purpose: block until the NMI/frame counter changes. ; Inputs: none. ; Returns: one frame elapsed. WaitOneFrame: - lda #$00 ; CPU:$F463 PRG:3463 A9 00 - sta NmiCompletedFlag ; CPU:$F465 PRG:3465 85 02 + lda #$00 ; CPU:$F465 PRG:3465 A9 00 + sta NmiCompletedFlag ; CPU:$F467 PRG:3467 85 02 WaitForFrameCounter: - lda NmiCompletedFlag ; CPU:$F467 PRG:3467 A5 02 - beq WaitForFrameCounter ; CPU:$F469 PRG:3469 F0 FC - dec NmiCompletedFlag ; CPU:$F46B PRG:346B C6 02 + lda NmiCompletedFlag ; CPU:$F469 PRG:3469 A5 02 + beq WaitForFrameCounter ; CPU:$F46B PRG:346B F0 FC + dec NmiCompletedFlag ; CPU:$F46D PRG:346D C6 02 WaitForFrameCounter_Block: - rts ; CPU:$F46D PRG:346D 60 + rts ; CPU:$F46F PRG:346F 60 ; WaitForStartPress ; Purpose: wait for Start while maintaining frame and PPU state. ; Inputs: global controller/game state. ; Returns: Start detected; transition-delay fields updated. WaitForStartPress: - jsr WaitForFrameCounter ; CPU:$F46E PRG:346E 20 69 F4 - lda $3A ; CPU:$F471 PRG:3471 A5 3A - bne WaitForFrameCounter_Block ; CPU:$F473 PRG:3473 D0 F8 - jsr $E768 ; CPU:$F475 PRG:3475 20 68 E7 - and #$10 ; CPU:$F478 PRG:3478 29 10 - beq WaitForFrameCounter_Block ; CPU:$F47A PRG:347A F0 F1 - lda #$04 ; CPU:$F47C PRG:347C A9 04 - sta SoundRequestFlags2 ; CPU:$F47E PRG:347E 85 F2 - lda PpuMaskShadow ; CPU:$F480 PRG:3480 A5 01 - and #$EF ; CPU:$F482 PRG:3482 29 EF - sta PPUMASK ; CPU:$F484 PRG:3484 8D 01 20 + jsr WaitForFrameCounter ; CPU:$F470 PRG:3470 20 69 F4 + lda $3A ; CPU:$F473 PRG:3473 A5 3A + bne WaitForFrameCounter_Block ; CPU:$F475 PRG:3475 D0 F8 + jsr $E768 ; CPU:$F477 PRG:3477 20 68 E7 + and #$10 ; CPU:$F47A PRG:347A 29 10 + beq WaitForFrameCounter_Block ; CPU:$F47C PRG:347C F0 F1 + lda #$04 ; CPU:$F47E PRG:347E A9 04 + sta SoundRequestFlags2 ; CPU:$F480 PRG:3480 85 F2 + lda PpuMaskShadow ; CPU:$F482 PRG:3482 A5 01 + and #$EF ; CPU:$F484 PRG:3484 29 EF + sta PPUMASK ; CPU:$F486 PRG:3486 8D 01 20 WaitForStartPress_Block: - jsr WaitOneFrame ; CPU:$F487 PRG:3487 20 65 F4 - jsr $E768 ; CPU:$F48A PRG:348A 20 68 E7 - and #$10 ; CPU:$F48D PRG:348D 29 10 - beq WaitForStartPress_Block ; CPU:$F48F PRG:348F F0 F6 - lda PpuMaskShadow ; CPU:$F491 PRG:3491 A5 01 - sta PPUMASK ; CPU:$F493 PRG:3493 8D 01 20 - ldy #$04 ; CPU:$F496 PRG:3496 A0 04 - lda $C8 ; CPU:$F498 PRG:3498 A5 C8 - ora RenderingDisabledFlag ; CPU:$F49A PRG:349A 05 16 - beq WaitForStartPress_Block_1 ; CPU:$F49C PRG:349C F0 02 - ldy #$20 ; CPU:$F49E PRG:349E A0 20 + jsr WaitOneFrame ; CPU:$F489 PRG:3489 20 65 F4 + jsr $E768 ; CPU:$F48C PRG:348C 20 68 E7 + and #$10 ; CPU:$F48F PRG:348F 29 10 + beq WaitForStartPress_Block ; CPU:$F491 PRG:3491 F0 F6 + lda PpuMaskShadow ; CPU:$F493 PRG:3493 A5 01 + sta PPUMASK ; CPU:$F495 PRG:3495 8D 01 20 + ldy #$04 ; CPU:$F498 PRG:3498 A0 04 + lda $C8 ; CPU:$F49A PRG:349A A5 C8 + ora RenderingDisabledFlag ; CPU:$F49C PRG:349C 05 16 + beq WaitForStartPress_Block_1 ; CPU:$F49E PRG:349E F0 02 + ldy #$20 ; CPU:$F4A0 PRG:34A0 A0 20 WaitForStartPress_Block_1: - sty SoundRequestFlags2 ; CPU:$F4A0 PRG:34A0 84 F2 - rts ; CPU:$F4A2 PRG:34A2 60 + sty SoundRequestFlags2 ; CPU:$F4A2 PRG:34A2 84 F2 + rts ; CPU:$F4A4 PRG:34A4 60 ; InitializeGameplayGlobals ; Purpose: initialize common gameplay flags, counters, and player defaults. ; Inputs: none. ; Returns: core gameplay globals reset. InitializeGameplayGlobals: - lda #$01 ; CPU:$F4A3 PRG:34A3 A9 01 - sta $048E ; CPU:$F4A5 PRG:34A5 8D 8E 04 - sta $048F ; CPU:$F4A8 PRG:34A8 8D 8F 04 - lda #$FF ; CPU:$F4AB PRG:34AB A9 FF - sta $BB ; CPU:$F4AD PRG:34AD 85 BB - sta CarrierDisplayMode ; CPU:$F4AF PRG:34AF 85 87 - sta CarrierDropPending ; CPU:$F4B1 PRG:34B1 8D 8C 04 - ldx #$01 ; CPU:$F4B4 PRG:34B4 A2 01 - stx $0459 ; CPU:$F4B6 PRG:34B6 8E 59 04 - stx $90 ; CPU:$F4B9 PRG:34B9 86 90 - inx ; CPU:$F4BB PRG:34BB E8 - stx SequenceStep ; CPU:$F4BC PRG:34BC 86 46 - lda #$40 ; CPU:$F4BE PRG:34BE A9 40 - sta CarrierTargetX ; CPU:$F4C0 PRG:34C0 85 99 - rts ; CPU:$F4C2 PRG:34C2 60 + lda #$01 ; CPU:$F4A5 PRG:34A5 A9 01 + sta $048E ; CPU:$F4A7 PRG:34A7 8D 8E 04 + sta $048F ; CPU:$F4AA PRG:34AA 8D 8F 04 + lda #$FF ; CPU:$F4AD PRG:34AD A9 FF + sta $BB ; CPU:$F4AF PRG:34AF 85 BB + sta CarrierDisplayMode ; CPU:$F4B1 PRG:34B1 85 87 + sta CarrierDropPending ; CPU:$F4B3 PRG:34B3 8D 8C 04 + ldx #$01 ; CPU:$F4B6 PRG:34B6 A2 01 + stx $0459 ; CPU:$F4B8 PRG:34B8 8E 59 04 + stx $90 ; CPU:$F4BB PRG:34BB 86 90 + inx ; CPU:$F4BD PRG:34BD E8 + stx SequenceStep ; CPU:$F4BE PRG:34BE 86 46 + lda #$40 ; CPU:$F4C0 PRG:34C0 A9 40 + sta CarrierTargetX ; CPU:$F4C2 PRG:34C2 85 99 + rts ; CPU:$F4C4 PRG:34C4 60 ; $F4C5-$F4FF - trailing $FF padding after the sound-init routine's RTS at $F4C4. ; Pass 1: emitted as explicit classified bytes so no ROM byte stays hidden in an ; .incbin. Unreached padding, never executed. TrailingFillBeforeApuTables: - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4C3 PRG:34C3 FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4CB PRG:34CB FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4D3 PRG:34D3 FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4DB PRG:34DB FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4E3 PRG:34E3 FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4EB PRG:34EB FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4F3 PRG:34F3 FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF ; CPU:$F4FB PRG:34FB FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4C5 PRG:34C5 FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4CD PRG:34CD FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4D5 PRG:34D5 FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4DD PRG:34DD FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4E5 PRG:34E5 FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4ED PRG:34ED FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4F5 PRG:34F5 FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF ; CPU:$F4FD PRG:34FD FF FF FF ; UpdateSoundEngine ; Purpose: invoke the sound-effect/music sequencer for the current frame. ; Inputs: sound state and stream pointers in zero page. ; Returns: APU registers and per-channel sequencer state updated. UpdateSoundEngine: - jsr $F78F ; CPU:$F4FE PRG:34FE 20 8F F7 + jsr $F78F ; CPU:$F500 PRG:3500 20 8F F7 UpdateSoundEngine_Block: - rts ; CPU:$F501 PRG:3501 60 + rts ; CPU:$F503 PRG:3503 60 ; ProcessSoundChannels ; Purpose: interpret active sound streams for pulse, triangle, and noise channels. ; Inputs: sound pointers, timers, envelopes, and channel flags in $D0-$FF. ; Returns: APU channel registers and stream cursors updated. ProcessSoundChannels: - lda #$00 ; CPU:$F502 PRG:3502 A9 00 - tax ; CPU:$F504 PRG:3504 AA - sta $FD ; CPU:$F505 PRG:3505 85 FD - beq ProcessSoundChannels_Block_1 ; CPU:$F507 PRG:3507 F0 10 + lda #$00 ; CPU:$F504 PRG:3504 A9 00 + tax ; CPU:$F506 PRG:3506 AA + sta $FD ; CPU:$F507 PRG:3507 85 FD + beq ProcessSoundChannels_Block_1 ; CPU:$F509 PRG:3509 F0 10 ProcessSoundChannels_Block: - txa ; CPU:$F509 PRG:3509 8A - lsr a ; CPU:$F50A PRG:350A 4A - tax ; CPU:$F50B PRG:350B AA + txa ; CPU:$F50B PRG:350B 8A + lsr a ; CPU:$F50C PRG:350C 4A + tax ; CPU:$F50D PRG:350D AA ProcessSoundChannels_Increment: - inx ; CPU:$F50C PRG:350C E8 - txa ; CPU:$F50D PRG:350D 8A - cmp #$04 ; CPU:$F50E PRG:350E C9 04 - beq UpdateSoundEngine_Block ; CPU:$F510 PRG:3510 F0 EF - lda $FD ; CPU:$F512 PRG:3512 A5 FD - clc ; CPU:$F514 PRG:3514 18 - adc #$04 ; CPU:$F515 PRG:3515 69 04 - sta $FD ; CPU:$F517 PRG:3517 85 FD + inx ; CPU:$F50E PRG:350E E8 + txa ; CPU:$F50F PRG:350F 8A + cmp #$04 ; CPU:$F510 PRG:3510 C9 04 + beq UpdateSoundEngine_Block ; CPU:$F512 PRG:3512 F0 EF + lda $FD ; CPU:$F514 PRG:3514 A5 FD + clc ; CPU:$F516 PRG:3516 18 + adc #$04 ; CPU:$F517 PRG:3517 69 04 + sta $FD ; CPU:$F519 PRG:3519 85 FD ProcessSoundChannels_Block_1: - txa ; CPU:$F519 PRG:3519 8A - asl a ; CPU:$F51A PRG:351A 0A - tax ; CPU:$F51B PRG:351B AA - lda $E0,x ; CPU:$F51C PRG:351C B5 E0 - sta $FE ; CPU:$F51E PRG:351E 85 FE - lda $E1,x ; CPU:$F520 PRG:3520 B5 E1 - sta $FF ; CPU:$F522 PRG:3522 85 FF - lda $E1,x ; CPU:$F524 PRG:3524 B5 E1 - beq ProcessSoundChannels_Block ; CPU:$F526 PRG:3526 F0 E1 - txa ; CPU:$F528 PRG:3528 8A - lsr a ; CPU:$F529 PRG:3529 4A - tax ; CPU:$F52A PRG:352A AA - dec $D0,x ; CPU:$F52B PRG:352B D6 D0 - bne ProcessSoundChannels_Increment ; CPU:$F52D PRG:352D D0 DD + txa ; CPU:$F51B PRG:351B 8A + asl a ; CPU:$F51C PRG:351C 0A + tax ; CPU:$F51D PRG:351D AA + lda $E0,x ; CPU:$F51E PRG:351E B5 E0 + sta $FE ; CPU:$F520 PRG:3520 85 FE + lda $E1,x ; CPU:$F522 PRG:3522 B5 E1 + sta $FF ; CPU:$F524 PRG:3524 85 FF + lda $E1,x ; CPU:$F526 PRG:3526 B5 E1 + beq ProcessSoundChannels_Block ; CPU:$F528 PRG:3528 F0 E1 + txa ; CPU:$F52A PRG:352A 8A + lsr a ; CPU:$F52B PRG:352B 4A + tax ; CPU:$F52C PRG:352C AA + dec $D0,x ; CPU:$F52D PRG:352D D6 D0 + bne ProcessSoundChannels_Increment ; CPU:$F52F PRG:352F D0 DD ProcessSoundChannels_Block_2: - ldy $E8,x ; CPU:$F52F PRG:352F B4 E8 - inc $E8,x ; CPU:$F531 PRG:3531 F6 E8 - lda ($FE),y ; CPU:$F533 PRG:3533 B1 FE - beq UpdateSoundEngine ; CPU:$F535 PRG:3535 F0 C7 - tay ; CPU:$F537 PRG:3537 A8 - cmp #$FF ; CPU:$F538 PRG:3538 C9 FF - beq ProcessSoundChannels_Block_3 ; CPU:$F53A PRG:353A F0 09 - and #$C0 ; CPU:$F53C PRG:353C 29 C0 - cmp #$C0 ; CPU:$F53E PRG:353E C9 C0 - beq ProcessSoundChannels_Block_4 ; CPU:$F540 PRG:3540 F0 0F - jmp ProcessSoundChannels_Block_6 ; CPU:$F542 PRG:3542 4C 61 F5 + ldy $E8,x ; CPU:$F531 PRG:3531 B4 E8 + inc $E8,x ; CPU:$F533 PRG:3533 F6 E8 + lda ($FE),y ; CPU:$F535 PRG:3535 B1 FE + beq UpdateSoundEngine ; CPU:$F537 PRG:3537 F0 C7 + tay ; CPU:$F539 PRG:3539 A8 + cmp #$FF ; CPU:$F53A PRG:353A C9 FF + beq ProcessSoundChannels_Block_3 ; CPU:$F53C PRG:353C F0 09 + and #$C0 ; CPU:$F53E PRG:353E 29 C0 + cmp #$C0 ; CPU:$F540 PRG:3540 C9 C0 + beq ProcessSoundChannels_Block_4 ; CPU:$F542 PRG:3542 F0 0F + jmp ProcessSoundChannels_Block_6 ; CPU:$F544 PRG:3544 4C 61 F5 ProcessSoundChannels_Block_3: - lda $D8,x ; CPU:$F545 PRG:3545 B5 D8 - beq ProcessSoundChannels_Block_5 ; CPU:$F547 PRG:3547 F0 13 - dec $D8,x ; CPU:$F549 PRG:3549 D6 D8 - lda $EC,x ; CPU:$F54B PRG:354B B5 EC - sta $E8,x ; CPU:$F54D PRG:354D 95 E8 - bne ProcessSoundChannels_Block_5 ; CPU:$F54F PRG:354F D0 0B + lda $D8,x ; CPU:$F547 PRG:3547 B5 D8 + beq ProcessSoundChannels_Block_5 ; CPU:$F549 PRG:3549 F0 13 + dec $D8,x ; CPU:$F54B PRG:354B D6 D8 + lda $EC,x ; CPU:$F54D PRG:354D B5 EC + sta $E8,x ; CPU:$F54F PRG:354F 95 E8 + bne ProcessSoundChannels_Block_5 ; CPU:$F551 PRG:3551 D0 0B ProcessSoundChannels_Block_4: - tya ; CPU:$F551 PRG:3551 98 - and #$3F ; CPU:$F552 PRG:3552 29 3F - sta $D8,x ; CPU:$F554 PRG:3554 95 D8 - dec $D8,x ; CPU:$F556 PRG:3556 D6 D8 - lda $E8,x ; CPU:$F558 PRG:3558 B5 E8 - sta $EC,x ; CPU:$F55A PRG:355A 95 EC + tya ; CPU:$F553 PRG:3553 98 + and #$3F ; CPU:$F554 PRG:3554 29 3F + sta $D8,x ; CPU:$F556 PRG:3556 95 D8 + dec $D8,x ; CPU:$F558 PRG:3558 D6 D8 + lda $E8,x ; CPU:$F55A PRG:355A B5 E8 + sta $EC,x ; CPU:$F55C PRG:355C 95 EC ProcessSoundChannels_Block_5: - jmp ProcessSoundChannels_Block_2 ; CPU:$F55C PRG:355C 4C 31 F5 + jmp ProcessSoundChannels_Block_2 ; CPU:$F55E PRG:355E 4C 31 F5 ProcessSoundChannels_Block_6: - tya ; CPU:$F55F PRG:355F 98 - bpl ProcessSoundChannels_Block_8 ; CPU:$F560 PRG:3560 10 17 - and #$0F ; CPU:$F562 PRG:3562 29 0F - clc ; CPU:$F564 PRG:3564 18 - adc $DF ; CPU:$F565 PRG:3565 65 DF - tay ; CPU:$F567 PRG:3567 A8 - lda SoundCommandMaskTable,y ; CPU:$F568 PRG:3568 B9 60 F6 - sta $D4,x ; CPU:$F56B PRG:356B 95 D4 - tay ; CPU:$F56D PRG:356D A8 - txa ; CPU:$F56E PRG:356E 8A - cmp #$02 ; CPU:$F56F PRG:356F C9 02 - beq ProcessSoundChannels_Block_14 ; CPU:$F571 PRG:3571 F0 4F + tya ; CPU:$F561 PRG:3561 98 + bpl ProcessSoundChannels_Block_8 ; CPU:$F562 PRG:3562 10 17 + and #$0F ; CPU:$F564 PRG:3564 29 0F + clc ; CPU:$F566 PRG:3566 18 + adc $DF ; CPU:$F567 PRG:3567 65 DF + tay ; CPU:$F569 PRG:3569 A8 + lda SoundCommandMaskTable,y ; CPU:$F56A PRG:356A B9 60 F6 + sta $D4,x ; CPU:$F56D PRG:356D 95 D4 + tay ; CPU:$F56F PRG:356F A8 + txa ; CPU:$F570 PRG:3570 8A + cmp #$02 ; CPU:$F571 PRG:3571 C9 02 + beq ProcessSoundChannels_Block_14 ; CPU:$F573 PRG:3573 F0 4F ProcessSoundChannels_Block_7: - ldy $E8,x ; CPU:$F573 PRG:3573 B4 E8 - inc $E8,x ; CPU:$F575 PRG:3575 F6 E8 - lda ($FE),y ; CPU:$F577 PRG:3577 B1 FE + ldy $E8,x ; CPU:$F575 PRG:3575 B4 E8 + inc $E8,x ; CPU:$F577 PRG:3577 F6 E8 + lda ($FE),y ; CPU:$F579 PRG:3579 B1 FE ProcessSoundChannels_Block_8: - tay ; CPU:$F579 PRG:3579 A8 - txa ; CPU:$F57A PRG:357A 8A - cmp #$03 ; CPU:$F57B PRG:357B C9 03 - beq ProcessSoundChannels_Block_17 ; CPU:$F57D PRG:357D F0 60 - pha ; CPU:$F57F PRG:357F 48 - tax ; CPU:$F580 PRG:3580 AA - cmp #$01 ; CPU:$F581 PRG:3581 C9 01 - beq ProcessSoundChannels_Block_13 ; CPU:$F583 PRG:3583 F0 32 + tay ; CPU:$F57B PRG:357B A8 + txa ; CPU:$F57C PRG:357C 8A + cmp #$03 ; CPU:$F57D PRG:357D C9 03 + beq ProcessSoundChannels_Block_17 ; CPU:$F57F PRG:357F F0 60 + pha ; CPU:$F581 PRG:3581 48 + tax ; CPU:$F582 PRG:3582 AA + cmp #$01 ; CPU:$F583 PRG:3583 C9 01 + beq ProcessSoundChannels_Block_13 ; CPU:$F585 PRG:3585 F0 32 ProcessSoundChannels_Block_9: - ldx $FD ; CPU:$F585 PRG:3585 A6 FD - lda ApuPeriodLowTable,y ; CPU:$F587 PRG:3587 B9 01 F6 - beq ProcessSoundChannels_Block_10 ; CPU:$F58A PRG:358A F0 0B - sta APUPC1TLOW,x ; CPU:$F58C PRG:358C 9D 02 40 - lda ApuPeriodHighTable,y ; CPU:$F58F PRG:358F B9 00 F6 - ora #$08 ; CPU:$F592 PRG:3592 09 08 - sta APUPC1THIGH,x ; CPU:$F594 PRG:3594 9D 03 40 + ldx $FD ; CPU:$F587 PRG:3587 A6 FD + lda ApuPeriodLowTable,y ; CPU:$F589 PRG:3589 B9 01 F6 + beq ProcessSoundChannels_Block_10 ; CPU:$F58C PRG:358C F0 0B + sta APUPC1TLOW,x ; CPU:$F58E PRG:358E 9D 02 40 + lda ApuPeriodHighTable,y ; CPU:$F591 PRG:3591 B9 00 F6 + ora #$08 ; CPU:$F594 PRG:3594 09 08 + sta APUPC1THIGH,x ; CPU:$F596 PRG:3596 9D 03 40 ProcessSoundChannels_Block_10: - tay ; CPU:$F597 PRG:3597 A8 - pla ; CPU:$F598 PRG:3598 68 - tax ; CPU:$F599 PRG:3599 AA - tya ; CPU:$F59A PRG:359A 98 - bne ProcessSoundChannels_Block_11 ; CPU:$F59B PRG:359B D0 0B - ldy #$00 ; CPU:$F59D PRG:359D A0 00 - txa ; CPU:$F59F PRG:359F 8A - cmp #$02 ; CPU:$F5A0 PRG:35A0 C9 02 - beq ProcessSoundChannels_Block_12 ; CPU:$F5A2 PRG:35A2 F0 06 - ldy #$10 ; CPU:$F5A4 PRG:35A4 A0 10 - bne ProcessSoundChannels_Block_12 ; CPU:$F5A6 PRG:35A6 D0 02 + tay ; CPU:$F599 PRG:3599 A8 + pla ; CPU:$F59A PRG:359A 68 + tax ; CPU:$F59B PRG:359B AA + tya ; CPU:$F59C PRG:359C 98 + bne ProcessSoundChannels_Block_11 ; CPU:$F59D PRG:359D D0 0B + ldy #$00 ; CPU:$F59F PRG:359F A0 00 + txa ; CPU:$F5A1 PRG:35A1 8A + cmp #$02 ; CPU:$F5A2 PRG:35A2 C9 02 + beq ProcessSoundChannels_Block_12 ; CPU:$F5A4 PRG:35A4 F0 06 + ldy #$10 ; CPU:$F5A6 PRG:35A6 A0 10 + bne ProcessSoundChannels_Block_12 ; CPU:$F5A8 PRG:35A8 D0 02 ProcessSoundChannels_Block_11: - ldy $DC,x ; CPU:$F5A8 PRG:35A8 B4 DC + ldy $DC,x ; CPU:$F5AA PRG:35AA B4 DC ProcessSoundChannels_Block_12: - tya ; CPU:$F5AA PRG:35AA 98 - ldy $FD ; CPU:$F5AB PRG:35AB A4 FD - sta APUPC1BASE,y ; CPU:$F5AD PRG:35AD 99 00 40 + tya ; CPU:$F5AC PRG:35AC 98 + ldy $FD ; CPU:$F5AD PRG:35AD A4 FD + sta APUPC1BASE,y ; CPU:$F5AF PRG:35AF 99 00 40 ProcessSoundChannels_Load: - lda $D4,x ; CPU:$F5B0 PRG:35B0 B5 D4 - sta $D0,x ; CPU:$F5B2 PRG:35B2 95 D0 - jmp ProcessSoundChannels_Increment ; CPU:$F5B4 PRG:35B4 4C 0E F5 + lda $D4,x ; CPU:$F5B2 PRG:35B2 B5 D4 + sta $D0,x ; CPU:$F5B4 PRG:35B4 95 D0 + jmp ProcessSoundChannels_Increment ; CPU:$F5B6 PRG:35B6 4C 0E F5 ProcessSoundChannels_Block_13: - lda $F5 ; CPU:$F5B7 PRG:35B7 A5 F5 - and #$02 ; CPU:$F5B9 PRG:35B9 29 02 - beq ProcessSoundChannels_Block_9 ; CPU:$F5BB PRG:35BB F0 C8 - pla ; CPU:$F5BD PRG:35BD 68 - tax ; CPU:$F5BE PRG:35BE AA - jmp ProcessSoundChannels_Load ; CPU:$F5BF PRG:35BF 4C B2 F5 + lda $F5 ; CPU:$F5B9 PRG:35B9 A5 F5 + and #$02 ; CPU:$F5BB PRG:35BB 29 02 + beq ProcessSoundChannels_Block_9 ; CPU:$F5BD PRG:35BD F0 C8 + pla ; CPU:$F5BF PRG:35BF 68 + tax ; CPU:$F5C0 PRG:35C0 AA + jmp ProcessSoundChannels_Load ; CPU:$F5C1 PRG:35C1 4C B2 F5 ProcessSoundChannels_Block_14: - tya ; CPU:$F5C2 PRG:35C2 98 - ldy $07F0 ; CPU:$F5C3 PRG:35C3 AC F0 07 - beq ProcessSoundChannels_Block_15 ; CPU:$F5C6 PRG:35C6 F0 04 - lda #$FF ; CPU:$F5C8 PRG:35C8 A9 FF - bne ProcessSoundChannels_Block_16 ; CPU:$F5CA PRG:35CA D0 0B + tya ; CPU:$F5C4 PRG:35C4 98 + ldy $07F0 ; CPU:$F5C5 PRG:35C5 AC F0 07 + beq ProcessSoundChannels_Block_15 ; CPU:$F5C8 PRG:35C8 F0 04 + lda #$FF ; CPU:$F5CA PRG:35CA A9 FF + bne ProcessSoundChannels_Block_16 ; CPU:$F5CC PRG:35CC D0 0B ProcessSoundChannels_Block_15: - clc ; CPU:$F5CC PRG:35CC 18 - adc #$FE ; CPU:$F5CD PRG:35CD 69 FE - asl a ; CPU:$F5CF PRG:35CF 0A - asl a ; CPU:$F5D0 PRG:35D0 0A - cmp #$3C ; CPU:$F5D1 PRG:35D1 C9 3C - bcc ProcessSoundChannels_Block_16 ; CPU:$F5D3 PRG:35D3 90 02 - lda #$3C ; CPU:$F5D5 PRG:35D5 A9 3C + clc ; CPU:$F5CE PRG:35CE 18 + adc #$FE ; CPU:$F5CF PRG:35CF 69 FE + asl a ; CPU:$F5D1 PRG:35D1 0A + asl a ; CPU:$F5D2 PRG:35D2 0A + cmp #$3C ; CPU:$F5D3 PRG:35D3 C9 3C + bcc ProcessSoundChannels_Block_16 ; CPU:$F5D5 PRG:35D5 90 02 + lda #$3C ; CPU:$F5D7 PRG:35D7 A9 3C ProcessSoundChannels_Block_16: - sta APUTRIBASE ; CPU:$F5D7 PRG:35D7 8D 08 40 - sta $DE ; CPU:$F5DA PRG:35DA 85 DE - jmp ProcessSoundChannels_Block_7 ; CPU:$F5DC PRG:35DC 4C 75 F5 + sta APUTRIBASE ; CPU:$F5D9 PRG:35D9 8D 08 40 + sta $DE ; CPU:$F5DC PRG:35DC 85 DE + jmp ProcessSoundChannels_Block_7 ; CPU:$F5DE PRG:35DE 4C 75 F5 ProcessSoundChannels_Block_17: - lda $F4 ; CPU:$F5DF PRG:35DF A5 F4 - cmp #$02 ; CPU:$F5E1 PRG:35E1 C9 02 - beq ProcessSoundChannels_Block_18 ; CPU:$F5E3 PRG:35E3 F0 12 - lda $F700,y ; CPU:$F5E5 PRG:35E5 B9 00 F7 - sta APUNOISEBASE ; CPU:$F5E8 PRG:35E8 8D 0C 40 - lda $F701,y ; CPU:$F5EB PRG:35EB B9 01 F7 - sta APUNOISELOOP ; CPU:$F5EE PRG:35EE 8D 0E 40 - lda $F702,y ; CPU:$F5F1 PRG:35F1 B9 02 F7 - sta APUNOISELENGTH ; CPU:$F5F4 PRG:35F4 8D 0F 40 + lda $F4 ; CPU:$F5E1 PRG:35E1 A5 F4 + cmp #$02 ; CPU:$F5E3 PRG:35E3 C9 02 + beq ProcessSoundChannels_Block_18 ; CPU:$F5E5 PRG:35E5 F0 12 + lda $F700,y ; CPU:$F5E7 PRG:35E7 B9 00 F7 + sta APUNOISEBASE ; CPU:$F5EA PRG:35EA 8D 0C 40 + lda $F701,y ; CPU:$F5ED PRG:35ED B9 01 F7 + sta APUNOISELOOP ; CPU:$F5F0 PRG:35F0 8D 0E 40 + lda $F702,y ; CPU:$F5F3 PRG:35F3 B9 02 F7 + sta APUNOISELENGTH ; CPU:$F5F6 PRG:35F6 8D 0F 40 ProcessSoundChannels_Block_18: - jmp ProcessSoundChannels_Load ; CPU:$F5F7 PRG:35F7 4C B2 F5 + jmp ProcessSoundChannels_Load ; CPU:$F5F9 PRG:35F9 4C B2 F5 ; $F5FC-$F5FF - four unreached bytes between the sound engine's final JMP ; ($F5F9) and ApuPeriodTable ($F600). Left as data: the preceding instruction ; is an unconditional JMP so control never falls through here, and the bytes do ; not form a coherent instruction sequence. SoundEngineTailBytes: - .byte $16, $FF, $10, $C5 ; CPU:$F5FA PRG:35FA 16 FF 10 C5 + .byte $16, $FF, $10, $C5 ; CPU:$F5FC PRG:35FC 16 FF 10 C5 ; Interleaved APU timer high/low bytes; aliases below preserve the original odd/even indexed accesses. ApuPeriodTable: - .byte $07, $F0, $00, $00, $00, $D4, $00, $C8 ; CPU:$F5FE PRG:35FE 07 F0 00 00 00 D4 00 C8 - .byte $00, $BD, $00, $B2, $00, $A8, $00, $9F ; CPU:$F606 PRG:3606 00 BD 00 B2 00 A8 00 9F - .byte $00, $96, $00, $8D, $00, $85, $00, $7E ; CPU:$F60E PRG:360E 00 96 00 8D 00 85 00 7E - .byte $00, $76, $00, $70, $01, $AB, $01, $93 ; CPU:$F616 PRG:3616 00 76 00 70 01 AB 01 93 - .byte $01, $7C, $01, $67, $01, $52, $01, $3F ; CPU:$F61E PRG:361E 01 7C 01 67 01 52 01 3F - .byte $01, $2D, $01, $1C, $01, $0C, $00, $FD ; CPU:$F626 PRG:3626 01 2D 01 1C 01 0C 00 FD - .byte $00, $EE, $00, $E1, $03, $57, $03, $27 ; CPU:$F62E PRG:362E 00 EE 00 E1 03 57 03 27 - .byte $02, $F9, $02, $CF, $02, $A6, $02, $80 ; CPU:$F636 PRG:3636 02 F9 02 CF 02 A6 02 80 - .byte $02, $5C, $02, $3A, $02, $1A, $01, $FC ; CPU:$F63E PRG:363E 02 5C 02 3A 02 1A 01 FC - .byte $01, $DF, $01, $C4, $03, $F8, $00, $69 ; CPU:$F646 PRG:3646 01 DF 01 C4 03 F8 00 69 - .byte $00, $63, $00, $5E, $00, $58, $00, $53 ; CPU:$F64E PRG:364E 00 63 00 5E 00 58 00 53 - .byte $00, $4F, $00, $4A, $00, $46, $00, $42 ; CPU:$F656 PRG:3656 00 4F 00 4A 00 46 00 42 + .byte $07, $F0, $00, $00, $00, $D4, $00, $C8 ; CPU:$F600 PRG:3600 07 F0 00 00 00 D4 00 C8 + .byte $00, $BD, $00, $B2, $00, $A8, $00, $9F ; CPU:$F608 PRG:3608 00 BD 00 B2 00 A8 00 9F + .byte $00, $96, $00, $8D, $00, $85, $00, $7E ; CPU:$F610 PRG:3610 00 96 00 8D 00 85 00 7E + .byte $00, $76, $00, $70, $01, $AB, $01, $93 ; CPU:$F618 PRG:3618 00 76 00 70 01 AB 01 93 + .byte $01, $7C, $01, $67, $01, $52, $01, $3F ; CPU:$F620 PRG:3620 01 7C 01 67 01 52 01 3F + .byte $01, $2D, $01, $1C, $01, $0C, $00, $FD ; CPU:$F628 PRG:3628 01 2D 01 1C 01 0C 00 FD + .byte $00, $EE, $00, $E1, $03, $57, $03, $27 ; CPU:$F630 PRG:3630 00 EE 00 E1 03 57 03 27 + .byte $02, $F9, $02, $CF, $02, $A6, $02, $80 ; CPU:$F638 PRG:3638 02 F9 02 CF 02 A6 02 80 + .byte $02, $5C, $02, $3A, $02, $1A, $01, $FC ; CPU:$F640 PRG:3640 02 5C 02 3A 02 1A 01 FC + .byte $01, $DF, $01, $C4, $03, $F8, $00, $69 ; CPU:$F648 PRG:3648 01 DF 01 C4 03 F8 00 69 + .byte $00, $63, $00, $5E, $00, $58, $00, $53 ; CPU:$F650 PRG:3650 00 63 00 5E 00 58 00 53 + .byte $00, $4F, $00, $4A, $00, $46, $00, $42 ; CPU:$F658 PRG:3658 00 4F 00 4A 00 46 00 42 ApuPeriodHighTable = ApuPeriodTable ApuPeriodLowTable = ApuPeriodTable + 1 ; Sound command masks, duration patterns, and channel-selection values. SoundCommandMaskTable: - .byte $03, $06, $0C, $18, $30, $12, $24, $09 ; CPU:$F65E PRG:365E 03 06 0C 18 30 12 24 09 - .byte $08, $04, $07, $01, $04, $08, $10, $20 ; CPU:$F666 PRG:3666 08 04 07 01 04 08 10 20 - .byte $40, $18, $30, $0C, $01, $06, $0C, $18 ; CPU:$F66E PRG:366E 40 18 30 0C 01 06 0C 18 - .byte $30, $60, $24, $48, $12, $10, $08, $0E ; CPU:$F676 PRG:3676 30 60 24 48 12 10 08 0E - .byte $02, $03, $04 ; CPU:$F67E PRG:367E 02 03 04 + .byte $03, $06, $0C, $18, $30, $12, $24, $09 ; CPU:$F660 PRG:3660 03 06 0C 18 30 12 24 09 + .byte $08, $04, $07, $01, $04, $08, $10, $20 ; CPU:$F668 PRG:3668 08 04 07 01 04 08 10 20 + .byte $40, $18, $30, $0C, $01, $06, $0C, $18 ; CPU:$F670 PRG:3670 40 18 30 0C 01 06 0C 18 + .byte $30, $60, $24, $48, $12, $10, $08, $0E ; CPU:$F678 PRG:3678 30 60 24 48 12 10 08 0E + .byte $02, $03, $04 ; CPU:$F680 PRG:3680 02 03 04 ; SelectSoundChannelOffset ; Purpose: select the pulse 1 APU register shadow offset. ; Inputs: none. ; Returns: A = $00 and control flows into the common selector. SelectSoundChannelOffset: - lda #$00 ; CPU:$F681 PRG:3681 A9 00 - beq CopyFourBytesToApuShadow_Block ; CPU:$F683 PRG:3683 F0 0A + lda #$00 ; CPU:$F683 PRG:3683 A9 00 + beq CopyFourBytesToApuShadow_Block ; CPU:$F685 PRG:3685 F0 0A ; SelectPulse2Offset ; Purpose: select the pulse 2 APU register shadow offset. ; Inputs: none. ; Returns: A = $08 and control flows into the common selector. SelectPulse2Offset: - lda #$08 ; CPU:$F685 PRG:3685 A9 08 - bne CopyFourBytesToApuShadow_Block ; CPU:$F687 PRG:3687 D0 06 + lda #$08 ; CPU:$F687 PRG:3687 A9 08 + bne CopyFourBytesToApuShadow_Block ; CPU:$F689 PRG:3689 D0 06 ; SelectTriangleOffset ; Purpose: select the triangle/noise APU shadow offset. ; Inputs: none. ; Returns: A = $0C or $04 through the common selector. SelectTriangleOffset: - lda #$0C ; CPU:$F689 PRG:3689 A9 0C - bne CopyFourBytesToApuShadow_Block ; CPU:$F68B PRG:368B D0 02 + lda #$0C ; CPU:$F68B PRG:368B A9 0C + bne CopyFourBytesToApuShadow_Block ; CPU:$F68D PRG:368D D0 02 ; CopyFourBytesToApuShadow ; Purpose: copy four bytes from a source pointer to the selected APU shadow/register block. ; Inputs: X/Y form source pointer; selector entry determines destination offset. ; Returns: four bytes copied; source pointer retained in $FB/$FC. CopyFourBytesToApuShadow: - lda #$04 ; CPU:$F68D PRG:368D A9 04 + lda #$04 ; CPU:$F68F PRG:368F A9 04 CopyFourBytesToApuShadow_Block: - sta $F9 ; CPU:$F68F PRG:368F 85 F9 - lda #$40 ; CPU:$F691 PRG:3691 A9 40 - sta $FA ; CPU:$F693 PRG:3693 85 FA - stx $FB ; CPU:$F695 PRG:3695 86 FB - sty $FC ; CPU:$F697 PRG:3697 84 FC - ldy #$00 ; CPU:$F699 PRG:3699 A0 00 + sta $F9 ; CPU:$F691 PRG:3691 85 F9 + lda #$40 ; CPU:$F693 PRG:3693 A9 40 + sta $FA ; CPU:$F695 PRG:3695 85 FA + stx $FB ; CPU:$F697 PRG:3697 86 FB + sty $FC ; CPU:$F699 PRG:3699 84 FC + ldy #$00 ; CPU:$F69B PRG:369B A0 00 CopyFourBytesToApuShadow_Block_1: - lda ($FB),y ; CPU:$F69B PRG:369B B1 FB - sta ($F9),y ; CPU:$F69D PRG:369D 91 F9 - iny ; CPU:$F69F PRG:369F C8 - tya ; CPU:$F6A0 PRG:36A0 98 - cmp #$04 ; CPU:$F6A1 PRG:36A1 C9 04 - bne CopyFourBytesToApuShadow_Block_1 ; CPU:$F6A3 PRG:36A3 D0 F6 - rts ; CPU:$F6A5 PRG:36A5 60 + lda ($FB),y ; CPU:$F69D PRG:369D B1 FB + sta ($F9),y ; CPU:$F69F PRG:369F 91 F9 + iny ; CPU:$F6A1 PRG:36A1 C8 + tya ; CPU:$F6A2 PRG:36A2 98 + cmp #$04 ; CPU:$F6A3 PRG:36A3 C9 04 + bne CopyFourBytesToApuShadow_Block_1 ; CPU:$F6A5 PRG:36A5 D0 F6 + rts ; CPU:$F6A7 PRG:36A7 60 ; InitializeSoundSequence ; Purpose: resolve a sound sequence, load its initial state, and reset channel cursors. ; Inputs: A = sound request/sequence selector. ; Returns: stream state $DF-$EB and sound flags initialized. InitializeSoundSequence: - tax ; CPU:$F6A6 PRG:36A6 AA - jsr $F798 ; CPU:$F6A7 PRG:36A7 20 98 F7 - stx $F6 ; CPU:$F6AA PRG:36AA 86 F6 - lda $07F5 ; CPU:$F6AC PRG:36AC AD F5 07 - beq InitializeSoundSequence_Block ; CPU:$F6AF PRG:36AF F0 0B - cmp #$02 ; CPU:$F6B1 PRG:36B1 C9 02 - bne InitializeSoundSequence_Block ; CPU:$F6B3 PRG:36B3 D0 07 - sta SoundRequestFlags0 ; CPU:$F6B5 PRG:36B5 85 F0 - lda #$00 ; CPU:$F6B7 PRG:36B7 A9 00 - sta $07F5 ; CPU:$F6B9 PRG:36B9 8D F5 07 + tax ; CPU:$F6A8 PRG:36A8 AA + jsr $F798 ; CPU:$F6A9 PRG:36A9 20 98 F7 + stx $F6 ; CPU:$F6AC PRG:36AC 86 F6 + lda $07F5 ; CPU:$F6AE PRG:36AE AD F5 07 + beq InitializeSoundSequence_Block ; CPU:$F6B1 PRG:36B1 F0 0B + cmp #$02 ; CPU:$F6B3 PRG:36B3 C9 02 + bne InitializeSoundSequence_Block ; CPU:$F6B5 PRG:36B5 D0 07 + sta SoundRequestFlags0 ; CPU:$F6B7 PRG:36B7 85 F0 + lda #$00 ; CPU:$F6B9 PRG:36B9 A9 00 + sta $07F5 ; CPU:$F6BB PRG:36BB 8D F5 07 InitializeSoundSequence_Block: - lda SoundSequencePointerTable,y ; CPU:$F6BC PRG:36BC B9 CA FB - tay ; CPU:$F6BF PRG:36BF A8 - ldx #$00 ; CPU:$F6C0 PRG:36C0 A2 00 + lda SoundSequencePointerTable,y; CPU:$F6BE PRG:36BE B9 CA FB + tay ; CPU:$F6C1 PRG:36C1 A8 + ldx #$00 ; CPU:$F6C2 PRG:36C2 A2 00 InitializeSoundSequence_Block_1: - lda SoundSequencePointerTable,y ; CPU:$F6C2 PRG:36C2 B9 CA FB - sta $DF,x ; CPU:$F6C5 PRG:36C5 95 DF - iny ; CPU:$F6C7 PRG:36C7 C8 - inx ; CPU:$F6C8 PRG:36C8 E8 - txa ; CPU:$F6C9 PRG:36C9 8A - cmp #$09 ; CPU:$F6CA PRG:36CA C9 09 - bne InitializeSoundSequence_Block_1 ; CPU:$F6CC PRG:36CC D0 F4 - lda #$01 ; CPU:$F6CE PRG:36CE A9 01 - sta $D0 ; CPU:$F6D0 PRG:36D0 85 D0 - sta $D1 ; CPU:$F6D2 PRG:36D2 85 D1 - sta $D2 ; CPU:$F6D4 PRG:36D4 85 D2 - sta $D3 ; CPU:$F6D6 PRG:36D6 85 D3 - lda #$00 ; CPU:$F6D8 PRG:36D8 A9 00 - sta $E8 ; CPU:$F6DA PRG:36DA 85 E8 - sta $E9 ; CPU:$F6DC PRG:36DC 85 E9 - sta $EA ; CPU:$F6DE PRG:36DE 85 EA - sta $EB ; CPU:$F6E0 PRG:36E0 85 EB - rts ; CPU:$F6E2 PRG:36E2 60 + lda SoundSequencePointerTable,y; CPU:$F6C4 PRG:36C4 B9 CA FB + sta $DF,x ; CPU:$F6C7 PRG:36C7 95 DF + iny ; CPU:$F6C9 PRG:36C9 C8 + inx ; CPU:$F6CA PRG:36CA E8 + txa ; CPU:$F6CB PRG:36CB 8A + cmp #$09 ; CPU:$F6CC PRG:36CC C9 09 + bne InitializeSoundSequence_Block_1 ; CPU:$F6CE PRG:36CE D0 F4 + lda #$01 ; CPU:$F6D0 PRG:36D0 A9 01 + sta $D0 ; CPU:$F6D2 PRG:36D2 85 D0 + sta $D1 ; CPU:$F6D4 PRG:36D4 85 D1 + sta $D2 ; CPU:$F6D6 PRG:36D6 85 D2 + sta $D3 ; CPU:$F6D8 PRG:36D8 85 D3 + lda #$00 ; CPU:$F6DA PRG:36DA A9 00 + sta $E8 ; CPU:$F6DC PRG:36DC 85 E8 + sta $E9 ; CPU:$F6DE PRG:36DE 85 E9 + sta $EA ; CPU:$F6E0 PRG:36E0 85 EA + sta $EB ; CPU:$F6E2 PRG:36E2 85 EB + rts ; CPU:$F6E4 PRG:36E4 60 ; Preserved sound data / unused bytes Data_F6E5: - .byte $94, $AB, $FD, $58, $00, $7F, $04, $18 ; CPU:$F6E3 PRG:36E3 94 AB FD 58 00 7F 04 18 - .byte $3F, $7F, $00, $00, $06, $7F, $0A, $C0 ; CPU:$F6EB PRG:36EB 3F 7F 00 00 06 7F 0A C0 - .byte $08, $7F, $05, $C0, $C1, $89, $02, $0F ; CPU:$F6F3 PRG:36F3 08 7F 05 C0 C1 89 02 0F - .byte $FF, $FF, $FF, $10, $00, $18, $10, $01 ; CPU:$F6FB PRG:36FB FF FF FF 10 00 18 10 01 - .byte $18, $00, $01, $88, $02, $02, $40, $03 ; CPU:$F703 PRG:3703 18 00 01 88 02 02 40 03 - .byte $05, $40, $04, $07, $40 ; CPU:$F70B PRG:370B 05 40 04 07 40 + .byte $94, $AB, $FD, $58, $00, $7F, $04, $18 ; CPU:$F6E5 PRG:36E5 94 AB FD 58 00 7F 04 18 + .byte $3F, $7F, $00, $00, $06, $7F, $0A, $C0 ; CPU:$F6ED PRG:36ED 3F 7F 00 00 06 7F 0A C0 + .byte $08, $7F, $05, $C0, $C1, $89, $02, $0F ; CPU:$F6F5 PRG:36F5 08 7F 05 C0 C1 89 02 0F + .byte $FF, $FF, $FF, $10, $00, $18, $10, $01 ; CPU:$F6FD PRG:36FD FF FF FF 10 00 18 10 01 + .byte $18, $00, $01, $88, $02, $02, $40, $03 ; CPU:$F705 PRG:3705 18 00 01 88 02 02 40 03 + .byte $05, $40, $04, $07, $40 ; CPU:$F70D PRG:370D 05 40 04 07 40 ; SilencePulseChannels ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. SilencePulseChannels: - lda #$7F ; CPU:$F710 PRG:3710 A9 7F - sta APUPC1SWEEP ; CPU:$F712 PRG:3712 8D 01 40 - sta APUPC2SWEEP ; CPU:$F715 PRG:3715 8D 05 40 + lda #$7F ; CPU:$F712 PRG:3712 A9 7F + sta APUPC1SWEEP ; CPU:$F714 PRG:3714 8D 01 40 + sta APUPC2SWEEP ; CPU:$F717 PRG:3717 8D 05 40 ; InitializeApuChannelState ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. InitializeApuChannelState: - stx $DC ; CPU:$F718 PRG:3718 86 DC - sty $DD ; CPU:$F71A PRG:371A 84 DD - rts ; CPU:$F71C PRG:371C 60 + stx $DC ; CPU:$F71A PRG:371A 86 DC + sty $DD ; CPU:$F71C PRG:371C 84 DD + rts ; CPU:$F71E PRG:371E 60 Sound_F71F: - ldx #$E5 ; CPU:$F71D PRG:371D A2 E5 - ldy #$F6 ; CPU:$F71F PRG:371F A0 F6 - bne Sound_F745 ; CPU:$F721 PRG:3721 D0 20 + ldx #$E5 ; CPU:$F71F PRG:371F A2 E5 + ldy #$F6 ; CPU:$F721 PRG:3721 A0 F6 + bne Sound_F745 ; CPU:$F723 PRG:3723 D0 20 ; UpdateMusicTempo ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. UpdateMusicTempo: - lda SoundRequestFlags3 ; CPU:$F723 PRG:3723 A5 F3 - lsr a ; CPU:$F725 PRG:3725 4A - bcs Sound_F736 ; CPU:$F726 PRG:3726 B0 0C - lda $F7 ; CPU:$F728 PRG:3728 A5 F7 - lsr a ; CPU:$F72A PRG:372A 4A - bcs Sound_F749 ; CPU:$F72B PRG:372B B0 1A - lda SoundRequestFlags0 ; CPU:$F72D PRG:372D A5 F0 - and #$10 ; CPU:$F72F PRG:372F 29 10 - bne Sound_F71F ; CPU:$F731 PRG:3731 D0 EA - rts ; CPU:$F733 PRG:3733 60 + lda SoundRequestFlags3 ; CPU:$F725 PRG:3725 A5 F3 + lsr a ; CPU:$F727 PRG:3727 4A + bcs Sound_F736 ; CPU:$F728 PRG:3728 B0 0C + lda $F7 ; CPU:$F72A PRG:372A A5 F7 + lsr a ; CPU:$F72C PRG:372C 4A + bcs Sound_F749 ; CPU:$F72D PRG:372D B0 1A + lda SoundRequestFlags0 ; CPU:$F72F PRG:372F A5 F0 + and #$10 ; CPU:$F731 PRG:3731 29 10 + bne Sound_F71F ; CPU:$F733 PRG:3733 D0 EA + rts ; CPU:$F735 PRG:3735 60 Sound_F736: - lda $F7 ; CPU:$F734 PRG:3734 A5 F7 - ora #$01 ; CPU:$F736 PRG:3736 09 01 - sta $F7 ; CPU:$F738 PRG:3738 85 F7 - lda #$00 ; CPU:$F73A PRG:373A A9 00 - sta $07E4 ; CPU:$F73C PRG:373C 8D E4 07 - ldx #$FC ; CPU:$F73F PRG:373F A2 FC - ldy #$F5 ; CPU:$F741 PRG:3741 A0 F5 + lda $F7 ; CPU:$F736 PRG:3736 A5 F7 + ora #$01 ; CPU:$F738 PRG:3738 09 01 + sta $F7 ; CPU:$F73A PRG:373A 85 F7 + lda #$00 ; CPU:$F73C PRG:373C A9 00 + sta $07E4 ; CPU:$F73E PRG:373E 8D E4 07 + ldx #$FC ; CPU:$F741 PRG:3741 A2 FC + ldy #$F5 ; CPU:$F743 PRG:3743 A0 F5 Sound_F745: - jsr $F683 ; CPU:$F743 PRG:3743 20 83 F6 - rts ; CPU:$F746 PRG:3746 60 + jsr $F683 ; CPU:$F745 PRG:3745 20 83 F6 + rts ; CPU:$F748 PRG:3748 60 Sound_F749: - inc $07E4 ; CPU:$F747 PRG:3747 EE E4 07 - lda $07E4 ; CPU:$F74A PRG:374A AD E4 07 - cmp #$58 ; CPU:$F74D PRG:374D C9 58 - bne Sound_F77B ; CPU:$F74F PRG:374F D0 28 - lda #$00 ; CPU:$F751 PRG:3751 A9 00 - sta $F7 ; CPU:$F753 PRG:3753 85 F7 - rts ; CPU:$F755 PRG:3755 60 + inc $07E4 ; CPU:$F749 PRG:3749 EE E4 07 + lda $07E4 ; CPU:$F74C PRG:374C AD E4 07 + cmp #$58 ; CPU:$F74F PRG:374F C9 58 + bne Sound_F77B ; CPU:$F751 PRG:3751 D0 28 + lda #$00 ; CPU:$F753 PRG:3753 A9 00 + sta $F7 ; CPU:$F755 PRG:3755 85 F7 + rts ; CPU:$F757 PRG:3757 60 Sound_F758: - lda #$C0 ; CPU:$F756 PRG:3756 A9 C0 - sta JOY2 ; CPU:$F758 PRG:3758 8D 17 40 - jsr UpdateSoundPriority ; CPU:$F75B PRG:375B 20 25 FB - jsr ProcessMusicRequest ; CPU:$F75E PRG:375E 20 0A F9 - jsr UpdatePulseEffects ; CPU:$F761 PRG:3761 20 38 FA - jsr UpdateNoiseEffects ; CPU:$F764 PRG:3764 20 AC FA - jsr ProcessSoundEffectRequests ; CPU:$F767 PRG:3767 20 24 F8 - lda SoundRequestFlags1 ; CPU:$F76A PRG:376A A5 F1 - sta $07E9 ; CPU:$F76C PRG:376C 8D E9 07 - lda #$00 ; CPU:$F76F PRG:376F A9 00 - sta SoundRequestFlags0 ; CPU:$F771 PRG:3771 85 F0 - sta SoundRequestFlags1 ; CPU:$F773 PRG:3773 85 F1 - sta SoundRequestFlags2 ; CPU:$F775 PRG:3775 85 F2 - sta SoundRequestFlags3 ; CPU:$F777 PRG:3777 85 F3 + lda #$C0 ; CPU:$F758 PRG:3758 A9 C0 + sta JOY2 ; CPU:$F75A PRG:375A 8D 17 40 + jsr UpdateSoundPriority ; CPU:$F75D PRG:375D 20 25 FB + jsr ProcessMusicRequest ; CPU:$F760 PRG:3760 20 0A F9 + jsr UpdatePulseEffects ; CPU:$F763 PRG:3763 20 38 FA + jsr UpdateNoiseEffects ; CPU:$F766 PRG:3766 20 AC FA + jsr ProcessSoundEffectRequests ; CPU:$F769 PRG:3769 20 24 F8 + lda SoundRequestFlags1 ; CPU:$F76C PRG:376C A5 F1 + sta $07E9 ; CPU:$F76E PRG:376E 8D E9 07 + lda #$00 ; CPU:$F771 PRG:3771 A9 00 + sta SoundRequestFlags0 ; CPU:$F773 PRG:3773 85 F0 + sta SoundRequestFlags1 ; CPU:$F775 PRG:3775 85 F1 + sta SoundRequestFlags2 ; CPU:$F777 PRG:3777 85 F2 + sta SoundRequestFlags3 ; CPU:$F779 PRG:3779 85 F3 Sound_F77B: - rts ; CPU:$F779 PRG:3779 60 + rts ; CPU:$F77B PRG:377B 60 Sound_F77C: - lda $F4 ; CPU:$F77A PRG:377A A5 F4 - and #$06 ; CPU:$F77C PRG:377C 29 06 - bne Sound_F77B ; CPU:$F77E PRG:377E D0 F9 - lda $F4 ; CPU:$F780 PRG:3780 A5 F4 - and #$F0 ; CPU:$F782 PRG:3782 29 F0 - sta $F4 ; CPU:$F784 PRG:3784 85 F4 - ldx #$E9 ; CPU:$F786 PRG:3786 A2 E9 - ldy #$F6 ; CPU:$F788 PRG:3788 A0 F6 - jmp Sound_F879 ; CPU:$F78A PRG:378A 4C 79 F8 + lda $F4 ; CPU:$F77C PRG:377C A5 F4 + and #$06 ; CPU:$F77E PRG:377E 29 06 + bne Sound_F77B ; CPU:$F780 PRG:3780 D0 F9 + lda $F4 ; CPU:$F782 PRG:3782 A5 F4 + and #$F0 ; CPU:$F784 PRG:3784 29 F0 + sta $F4 ; CPU:$F786 PRG:3786 85 F4 + ldx #$E9 ; CPU:$F788 PRG:3788 A2 E9 + ldy #$F6 ; CPU:$F78A PRG:378A A0 F6 + jmp Sound_F879 ; CPU:$F78C PRG:378C 4C 79 F8 ; UpdateSoundRequests ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. UpdateSoundRequests: - lda $F6 ; CPU:$F78D PRG:378D A5 F6 - cmp #$20 ; CPU:$F78F PRG:378F C9 20 - bne Sound_F79F ; CPU:$F791 PRG:3791 D0 0A - inc $07E8 ; CPU:$F793 PRG:3793 EE E8 07 + lda $F6 ; CPU:$F78F PRG:378F A5 F6 + cmp #$20 ; CPU:$F791 PRG:3791 C9 20 + bne Sound_F79F ; CPU:$F793 PRG:3793 D0 0A + inc $07E8 ; CPU:$F795 PRG:3795 EE E8 07 ; InitializeSoundDataPointers ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. InitializeSoundDataPointers: - and #$0F ; CPU:$F796 PRG:3796 29 0F - cmp #$0F ; CPU:$F798 PRG:3798 C9 0F - bne ResetAllSoundState ; CPU:$F79A PRG:379A D0 07 - txa ; CPU:$F79C PRG:379C 8A + and #$0F ; CPU:$F798 PRG:3798 29 0F + cmp #$0F ; CPU:$F79A PRG:379A C9 0F + bne ResetAllSoundState ; CPU:$F79C PRG:379C D0 07 + txa ; CPU:$F79E PRG:379E 8A Sound_F79F: - lda $F4 ; CPU:$F79D PRG:379D A5 F4 - and #$20 ; CPU:$F79F PRG:379F 29 20 - bne Sound_F7C7 ; CPU:$F7A1 PRG:37A1 D0 22 + lda $F4 ; CPU:$F79F PRG:379F A5 F4 + and #$20 ; CPU:$F7A1 PRG:37A1 29 20 + bne Sound_F7C7 ; CPU:$F7A3 PRG:37A3 D0 22 ; ResetAllSoundState ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. ResetAllSoundState: - lda #$10 ; CPU:$F7A3 PRG:37A3 A9 10 - sta APUNOISEBASE ; CPU:$F7A5 PRG:37A5 8D 0C 40 - sta APUPC1BASE ; CPU:$F7A8 PRG:37A8 8D 00 40 - sta APUPC2BASE ; CPU:$F7AB PRG:37AB 8D 04 40 - lda #$00 ; CPU:$F7AE PRG:37AE A9 00 - sta $F4 ; CPU:$F7B0 PRG:37B0 85 F4 + lda #$10 ; CPU:$F7A5 PRG:37A5 A9 10 + sta APUNOISEBASE ; CPU:$F7A7 PRG:37A7 8D 0C 40 + sta APUPC1BASE ; CPU:$F7AA PRG:37AA 8D 00 40 + sta APUPC2BASE ; CPU:$F7AD PRG:37AD 8D 04 40 + lda #$00 ; CPU:$F7B0 PRG:37B0 A9 00 + sta $F4 ; CPU:$F7B2 PRG:37B2 85 F4 Sound_F7B4: - sta $F5 ; CPU:$F7B2 PRG:37B2 85 F5 - sta $F6 ; CPU:$F7B4 PRG:37B4 85 F6 - sta $07FA ; CPU:$F7B6 PRG:37B6 8D FA 07 - sta $F7 ; CPU:$F7B9 PRG:37B9 85 F7 - sta APUTRIBASE ; CPU:$F7BB PRG:37BB 8D 08 40 - sta APUDMALOAD ; CPU:$F7BE PRG:37BE 8D 11 40 - sta $07F0 ; CPU:$F7C1 PRG:37C1 8D F0 07 - rts ; CPU:$F7C4 PRG:37C4 60 + sta $F5 ; CPU:$F7B4 PRG:37B4 85 F5 + sta $F6 ; CPU:$F7B6 PRG:37B6 85 F6 + sta $07FA ; CPU:$F7B8 PRG:37B8 8D FA 07 + sta $F7 ; CPU:$F7BB PRG:37BB 85 F7 + sta APUTRIBASE ; CPU:$F7BD PRG:37BD 8D 08 40 + sta APUDMALOAD ; CPU:$F7C0 PRG:37C0 8D 11 40 + sta $07F0 ; CPU:$F7C3 PRG:37C3 8D F0 07 + rts ; CPU:$F7C6 PRG:37C6 60 Sound_F7C7: - lda #$10 ; CPU:$F7C5 PRG:37C5 A9 10 - sta APUPC2BASE ; CPU:$F7C7 PRG:37C7 8D 04 40 - sta APUNOISEBASE ; CPU:$F7CA PRG:37CA 8D 0C 40 - lda #$00 ; CPU:$F7CD PRG:37CD A9 00 - beq Sound_F7B4 ; CPU:$F7CF PRG:37CF F0 E1 + lda #$10 ; CPU:$F7C7 PRG:37C7 A9 10 + sta APUPC2BASE ; CPU:$F7C9 PRG:37C9 8D 04 40 + sta APUNOISEBASE ; CPU:$F7CC PRG:37CC 8D 0C 40 + lda #$00 ; CPU:$F7CF PRG:37CF A9 00 + beq Sound_F7B4 ; CPU:$F7D1 PRG:37D1 F0 E1 Sound_F7D3: - lda #$00 ; CPU:$F7D1 PRG:37D1 A9 00 - sta $07FA ; CPU:$F7D3 PRG:37D3 8D FA 07 - rts ; CPU:$F7D6 PRG:37D6 60 + lda #$00 ; CPU:$F7D3 PRG:37D3 A9 00 + sta $07FA ; CPU:$F7D5 PRG:37D5 8D FA 07 + rts ; CPU:$F7D8 PRG:37D8 60 Sound_F7D9: - ldx #$F5 ; CPU:$F7D7 PRG:37D7 A2 F5 - ldy #$F6 ; CPU:$F7D9 PRG:37D9 A0 F6 - jmp Sound_F879 ; CPU:$F7DB PRG:37DB 4C 79 F8 + ldx #$F5 ; CPU:$F7D9 PRG:37D9 A2 F5 + ldy #$F6 ; CPU:$F7DB PRG:37DB A0 F6 + jmp Sound_F879 ; CPU:$F7DD PRG:37DD 4C 79 F8 Sound_F7E0: - inc $07FB ; CPU:$F7DE PRG:37DE EE FB 07 - lda $07FB ; CPU:$F7E1 PRG:37E1 AD FB 07 - cmp #$10 ; CPU:$F7E4 PRG:37E4 C9 10 - beq Sound_F7D9 ; CPU:$F7E6 PRG:37E6 F0 EF - cmp #$20 ; CPU:$F7E8 PRG:37E8 C9 20 - beq Sound_F7D3 ; CPU:$F7EA PRG:37EA F0 E5 - rts ; CPU:$F7EC PRG:37EC 60 + inc $07FB ; CPU:$F7E0 PRG:37E0 EE FB 07 + lda $07FB ; CPU:$F7E3 PRG:37E3 AD FB 07 + cmp #$10 ; CPU:$F7E6 PRG:37E6 C9 10 + beq Sound_F7D9 ; CPU:$F7E8 PRG:37E8 F0 EF + cmp #$20 ; CPU:$F7EA PRG:37EA C9 20 + beq Sound_F7D3 ; CPU:$F7EC PRG:37EC F0 E5 + rts ; CPU:$F7EE PRG:37EE 60 Sound_F7EF: - lda #$00 ; CPU:$F7ED PRG:37ED A9 00 - sta $07FB ; CPU:$F7EF PRG:37EF 8D FB 07 - lda #$F0 ; CPU:$F7F2 PRG:37F2 A9 F0 - sta $07FA ; CPU:$F7F4 PRG:37F4 8D FA 07 - ldx #$F1 ; CPU:$F7F7 PRG:37F7 A2 F1 - ldy #$F6 ; CPU:$F7F9 PRG:37F9 A0 F6 - jmp Sound_F879 ; CPU:$F7FB PRG:37FB 4C 79 F8 + lda #$00 ; CPU:$F7EF PRG:37EF A9 00 + sta $07FB ; CPU:$F7F1 PRG:37F1 8D FB 07 + lda #$F0 ; CPU:$F7F4 PRG:37F4 A9 F0 + sta $07FA ; CPU:$F7F6 PRG:37F6 8D FA 07 + ldx #$F1 ; CPU:$F7F9 PRG:37F9 A2 F1 + ldy #$F6 ; CPU:$F7FB PRG:37FB A0 F6 + jmp Sound_F879 ; CPU:$F7FD PRG:37FD 4C 79 F8 Sound_F800: - lda $F4 ; CPU:$F7FE PRG:37FE A5 F4 - and #$F0 ; CPU:$F800 PRG:3800 29 F0 - ora #$02 ; CPU:$F802 PRG:3802 09 02 - sta $F4 ; CPU:$F804 PRG:3804 85 F4 - lda #$00 ; CPU:$F806 PRG:3806 A9 00 - sta $07F7 ; CPU:$F808 PRG:3808 8D F7 07 - ldx #$F1 ; CPU:$F80B PRG:380B A2 F1 - ldy #$F6 ; CPU:$F80D PRG:380D A0 F6 - jmp Sound_F879 ; CPU:$F80F PRG:380F 4C 79 F8 + lda $F4 ; CPU:$F800 PRG:3800 A5 F4 + and #$F0 ; CPU:$F802 PRG:3802 29 F0 + ora #$02 ; CPU:$F804 PRG:3804 09 02 + sta $F4 ; CPU:$F806 PRG:3806 85 F4 + lda #$00 ; CPU:$F808 PRG:3808 A9 00 + sta $07F7 ; CPU:$F80A PRG:380A 8D F7 07 + ldx #$F1 ; CPU:$F80D PRG:380D A2 F1 + ldy #$F6 ; CPU:$F80F PRG:380F A0 F6 + jmp Sound_F879 ; CPU:$F811 PRG:3811 4C 79 F8 Sound_F814: - inc $07F7 ; CPU:$F812 PRG:3812 EE F7 07 - lda $07F7 ; CPU:$F815 PRG:3815 AD F7 07 - cmp #$10 ; CPU:$F818 PRG:3818 C9 10 - bne Sound_F85B ; CPU:$F81A PRG:381A D0 3D - jmp Sound_F89B ; CPU:$F81C PRG:381C 4C 9B F8 + inc $07F7 ; CPU:$F814 PRG:3814 EE F7 07 + lda $07F7 ; CPU:$F817 PRG:3817 AD F7 07 + cmp #$10 ; CPU:$F81A PRG:381A C9 10 + bne Sound_F85B ; CPU:$F81C PRG:381C D0 3D + jmp Sound_F89B ; CPU:$F81E PRG:381E 4C 9B F8 Sound_F821: - jmp ResetAllSoundState ; CPU:$F81F PRG:381F 4C A5 F7 + jmp ResetAllSoundState ; CPU:$F821 PRG:3821 4C A5 F7 ; ProcessSoundEffectRequests ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. ProcessSoundEffectRequests: - lda SoundRequestFlags0 ; CPU:$F822 PRG:3822 A5 F0 - lsr a ; CPU:$F824 PRG:3824 4A - bcs Sound_F821 ; CPU:$F825 PRG:3825 B0 F8 - lda $F6 ; CPU:$F827 PRG:3827 A5 F6 - cmp #$DF ; CPU:$F829 PRG:3829 C9 DF - beq Sound_F83B ; CPU:$F82B PRG:382B F0 0C - cmp #$7F ; CPU:$F82D PRG:382D C9 7F - beq Sound_F83B ; CPU:$F82F PRG:382F F0 08 - cmp #$20 ; CPU:$F831 PRG:3831 C9 20 - beq Sound_F83B ; CPU:$F833 PRG:3833 F0 04 - lda $F6 ; CPU:$F835 PRG:3835 A5 F6 - bne Sound_F85B ; CPU:$F837 PRG:3837 D0 20 + lda SoundRequestFlags0 ; CPU:$F824 PRG:3824 A5 F0 + lsr a ; CPU:$F826 PRG:3826 4A + bcs Sound_F821 ; CPU:$F827 PRG:3827 B0 F8 + lda $F6 ; CPU:$F829 PRG:3829 A5 F6 + cmp #$DF ; CPU:$F82B PRG:382B C9 DF + beq Sound_F83B ; CPU:$F82D PRG:382D F0 0C + cmp #$7F ; CPU:$F82F PRG:382F C9 7F + beq Sound_F83B ; CPU:$F831 PRG:3831 F0 08 + cmp #$20 ; CPU:$F833 PRG:3833 C9 20 + beq Sound_F83B ; CPU:$F835 PRG:3835 F0 04 + lda $F6 ; CPU:$F837 PRG:3837 A5 F6 + bne Sound_F85B ; CPU:$F839 PRG:3839 D0 20 Sound_F83B: - lda $07FA ; CPU:$F839 PRG:3839 AD FA 07 - cmp #$0F ; CPU:$F83C PRG:383C C9 0F - beq Sound_F7EF ; CPU:$F83E PRG:383E F0 AD - cmp #$F0 ; CPU:$F840 PRG:3840 C9 F0 - beq Sound_F7E0 ; CPU:$F842 PRG:3842 F0 9A - lda SoundRequestFlags0 ; CPU:$F844 PRG:3844 A5 F0 - lsr a ; CPU:$F846 PRG:3846 4A - lsr a ; CPU:$F847 PRG:3847 4A - bcs Sound_F800 ; CPU:$F848 PRG:3848 B0 B4 - lsr a ; CPU:$F84A PRG:384A 4A - bcs Sound_F85F ; CPU:$F84B PRG:384B B0 10 - lsr a ; CPU:$F84D PRG:384D 4A - bcs Sound_F85C ; CPU:$F84E PRG:384E B0 0A - lda $F4 ; CPU:$F850 PRG:3850 A5 F4 - lsr a ; CPU:$F852 PRG:3852 4A - lsr a ; CPU:$F853 PRG:3853 4A - bcs Sound_F814 ; CPU:$F854 PRG:3854 B0 BC - lsr a ; CPU:$F856 PRG:3856 4A - bcs Sound_F87D ; CPU:$F857 PRG:3857 B0 22 + lda $07FA ; CPU:$F83B PRG:383B AD FA 07 + cmp #$0F ; CPU:$F83E PRG:383E C9 0F + beq Sound_F7EF ; CPU:$F840 PRG:3840 F0 AD + cmp #$F0 ; CPU:$F842 PRG:3842 C9 F0 + beq Sound_F7E0 ; CPU:$F844 PRG:3844 F0 9A + lda SoundRequestFlags0 ; CPU:$F846 PRG:3846 A5 F0 + lsr a ; CPU:$F848 PRG:3848 4A + lsr a ; CPU:$F849 PRG:3849 4A + bcs Sound_F800 ; CPU:$F84A PRG:384A B0 B4 + lsr a ; CPU:$F84C PRG:384C 4A + bcs Sound_F85F ; CPU:$F84D PRG:384D B0 10 + lsr a ; CPU:$F84F PRG:384F 4A + bcs Sound_F85C ; CPU:$F850 PRG:3850 B0 0A + lda $F4 ; CPU:$F852 PRG:3852 A5 F4 + lsr a ; CPU:$F854 PRG:3854 4A + lsr a ; CPU:$F855 PRG:3855 4A + bcs Sound_F814 ; CPU:$F856 PRG:3856 B0 BC + lsr a ; CPU:$F858 PRG:3858 4A + bcs Sound_F87D ; CPU:$F859 PRG:3859 B0 22 Sound_F85B: - rts ; CPU:$F859 PRG:3859 60 + rts ; CPU:$F85B PRG:385B 60 Sound_F85C: - jmp Sound_F77C ; CPU:$F85A PRG:385A 4C 7C F7 + jmp Sound_F77C ; CPU:$F85C PRG:385C 4C 7C F7 Sound_F85F: - lda $F4 ; CPU:$F85D PRG:385D A5 F4 - and #$80 ; CPU:$F85F PRG:385F 29 80 - bne Sound_F85B ; CPU:$F861 PRG:3861 D0 F6 - lda $F4 ; CPU:$F863 PRG:3863 A5 F4 - and #$F0 ; CPU:$F865 PRG:3865 29 F0 - ora #$04 ; CPU:$F867 PRG:3867 09 04 - sta $F4 ; CPU:$F869 PRG:3869 85 F4 - lda #$00 ; CPU:$F86B PRG:386B A9 00 - sta $07F3 ; CPU:$F86D PRG:386D 8D F3 07 - sta $07F1 ; CPU:$F870 PRG:3870 8D F1 07 - ldx #$ED ; CPU:$F873 PRG:3873 A2 ED - ldy #$F6 ; CPU:$F875 PRG:3875 A0 F6 + lda $F4 ; CPU:$F85F PRG:385F A5 F4 + and #$80 ; CPU:$F861 PRG:3861 29 80 + bne Sound_F85B ; CPU:$F863 PRG:3863 D0 F6 + lda $F4 ; CPU:$F865 PRG:3865 A5 F4 + and #$F0 ; CPU:$F867 PRG:3867 29 F0 + ora #$04 ; CPU:$F869 PRG:3869 09 04 + sta $F4 ; CPU:$F86B PRG:386B 85 F4 + lda #$00 ; CPU:$F86D PRG:386D A9 00 + sta $07F3 ; CPU:$F86F PRG:386F 8D F3 07 + sta $07F1 ; CPU:$F872 PRG:3872 8D F1 07 + ldx #$ED ; CPU:$F875 PRG:3875 A2 ED + ldy #$F6 ; CPU:$F877 PRG:3877 A0 F6 Sound_F879: - jsr $F68B ; CPU:$F877 PRG:3877 20 8B F6 - rts ; CPU:$F87A PRG:387A 60 + jsr $F68B ; CPU:$F879 PRG:3879 20 8B F6 + rts ; CPU:$F87C PRG:387C 60 Sound_F87D: - inc $07F3 ; CPU:$F87B PRG:387B EE F3 07 - lda $07F3 ; CPU:$F87E PRG:387E AD F3 07 - cmp #$03 ; CPU:$F881 PRG:3881 C9 03 - bne Sound_F8A1 ; CPU:$F883 PRG:3883 D0 1A - lda #$00 ; CPU:$F885 PRG:3885 A9 00 - sta $07F3 ; CPU:$F887 PRG:3887 8D F3 07 - inc $07F1 ; CPU:$F88A PRG:388A EE F1 07 - lda $07F1 ; CPU:$F88D PRG:388D AD F1 07 - cmp #$10 ; CPU:$F890 PRG:3890 C9 10 - bne Sound_F8A2 ; CPU:$F892 PRG:3892 D0 0C - lda #$10 ; CPU:$F894 PRG:3894 A9 10 - sta APUNOISEBASE ; CPU:$F896 PRG:3896 8D 0C 40 + inc $07F3 ; CPU:$F87D PRG:387D EE F3 07 + lda $07F3 ; CPU:$F880 PRG:3880 AD F3 07 + cmp #$03 ; CPU:$F883 PRG:3883 C9 03 + bne Sound_F8A1 ; CPU:$F885 PRG:3885 D0 1A + lda #$00 ; CPU:$F887 PRG:3887 A9 00 + sta $07F3 ; CPU:$F889 PRG:3889 8D F3 07 + inc $07F1 ; CPU:$F88C PRG:388C EE F1 07 + lda $07F1 ; CPU:$F88F PRG:388F AD F1 07 + cmp #$10 ; CPU:$F892 PRG:3892 C9 10 + bne Sound_F8A2 ; CPU:$F894 PRG:3894 D0 0C + lda #$10 ; CPU:$F896 PRG:3896 A9 10 + sta APUNOISEBASE ; CPU:$F898 PRG:3898 8D 0C 40 Sound_F89B: - lda $F4 ; CPU:$F899 PRG:3899 A5 F4 - and #$F0 ; CPU:$F89B PRG:389B 29 F0 - sta $F4 ; CPU:$F89D PRG:389D 85 F4 + lda $F4 ; CPU:$F89B PRG:389B A5 F4 + and #$F0 ; CPU:$F89D PRG:389D 29 F0 + sta $F4 ; CPU:$F89F PRG:389F 85 F4 Sound_F8A1: - rts ; CPU:$F89F PRG:389F 60 + rts ; CPU:$F8A1 PRG:38A1 60 Sound_F8A2: - sta APUNOISELOOP ; CPU:$F8A0 PRG:38A0 8D 0E 40 - rts ; CPU:$F8A3 PRG:38A3 60 + sta APUNOISELOOP ; CPU:$F8A2 PRG:38A2 8D 0E 40 + rts ; CPU:$F8A5 PRG:38A5 60 Sound_F8A6: - lda #$00 ; CPU:$F8A4 PRG:38A4 A9 00 - sta $07E0 ; CPU:$F8A6 PRG:38A6 8D E0 07 - clc ; CPU:$F8A9 PRG:38A9 18 - lda RandomState ; CPU:$F8AA PRG:38AA A5 1B - and #$07 ; CPU:$F8AC PRG:38AC 29 07 - adc #$02 ; CPU:$F8AE PRG:38AE 69 02 - sta $07E1 ; CPU:$F8B0 PRG:38B0 8D E1 07 - lda $F7 ; CPU:$F8B3 PRG:38B3 A5 F7 - and #$00 ; CPU:$F8B5 PRG:38B5 29 00 - ora #$80 ; CPU:$F8B7 PRG:38B7 09 80 - sta $F7 ; CPU:$F8B9 PRG:38B9 85 F7 - bne Sound_F8E8 ; CPU:$F8BB PRG:38BB D0 29 + lda #$00 ; CPU:$F8A6 PRG:38A6 A9 00 + sta $07E0 ; CPU:$F8A8 PRG:38A8 8D E0 07 + clc ; CPU:$F8AB PRG:38AB 18 + lda RandomState ; CPU:$F8AC PRG:38AC A5 1B + and #$07 ; CPU:$F8AE PRG:38AE 29 07 + adc #$02 ; CPU:$F8B0 PRG:38B0 69 02 + sta $07E1 ; CPU:$F8B2 PRG:38B2 8D E1 07 + lda $F7 ; CPU:$F8B5 PRG:38B5 A5 F7 + and #$00 ; CPU:$F8B7 PRG:38B7 29 00 + ora #$80 ; CPU:$F8B9 PRG:38B9 09 80 + sta $F7 ; CPU:$F8BB PRG:38BB 85 F7 + bne Sound_F8E8 ; CPU:$F8BD PRG:38BD D0 29 Sound_F8BF: - inc $07E0 ; CPU:$F8BD PRG:38BD EE E0 07 - lda $07E0 ; CPU:$F8C0 PRG:38C0 AD E0 07 - cmp $07E1 ; CPU:$F8C3 PRG:38C3 CD E1 07 - bne Sound_F8E8 ; CPU:$F8C6 PRG:38C6 D0 1E + inc $07E0 ; CPU:$F8BF PRG:38BF EE E0 07 + lda $07E0 ; CPU:$F8C2 PRG:38C2 AD E0 07 + cmp $07E1 ; CPU:$F8C5 PRG:38C5 CD E1 07 + bne Sound_F8E8 ; CPU:$F8C8 PRG:38C8 D0 1E Sound_F8CA: - lda #$10 ; CPU:$F8C8 PRG:38C8 A9 10 - sta APUPC1BASE ; CPU:$F8CA PRG:38CA 8D 00 40 - sta APUPC2BASE ; CPU:$F8CD PRG:38CD 8D 04 40 - lda #$00 ; CPU:$F8D0 PRG:38D0 A9 00 - sta $F7 ; CPU:$F8D2 PRG:38D2 85 F7 - lda $F4 ; CPU:$F8D4 PRG:38D4 A5 F4 - and #$0F ; CPU:$F8D6 PRG:38D6 29 0F - sta $F4 ; CPU:$F8D8 PRG:38D8 85 F4 - rts ; CPU:$F8DA PRG:38DA 60 + lda #$10 ; CPU:$F8CA PRG:38CA A9 10 + sta APUPC1BASE ; CPU:$F8CC PRG:38CC 8D 00 40 + sta APUPC2BASE ; CPU:$F8CF PRG:38CF 8D 04 40 + lda #$00 ; CPU:$F8D2 PRG:38D2 A9 00 + sta $F7 ; CPU:$F8D4 PRG:38D4 85 F7 + lda $F4 ; CPU:$F8D6 PRG:38D6 A5 F4 + and #$0F ; CPU:$F8D8 PRG:38D8 29 0F + sta $F4 ; CPU:$F8DA PRG:38DA 85 F4 + rts ; CPU:$F8DC PRG:38DC 60 Sound_F8DD: - jsr ResetAllSoundState ; CPU:$F8DB PRG:38DB 20 A5 F7 - lda #$80 ; CPU:$F8DE PRG:38DE A9 80 - sta $F4 ; CPU:$F8E0 PRG:38E0 85 F4 - lda #$02 ; CPU:$F8E2 PRG:38E2 A9 02 - sta SoundRequestFlags0 ; CPU:$F8E4 PRG:38E4 85 F0 + jsr ResetAllSoundState ; CPU:$F8DD PRG:38DD 20 A5 F7 + lda #$80 ; CPU:$F8E0 PRG:38E0 A9 80 + sta $F4 ; CPU:$F8E2 PRG:38E2 85 F4 + lda #$02 ; CPU:$F8E4 PRG:38E4 A9 02 + sta SoundRequestFlags0 ; CPU:$F8E6 PRG:38E6 85 F0 Sound_F8E8: - ldx #$F9 ; CPU:$F8E6 PRG:38E6 A2 F9 - ldy #$F6 ; CPU:$F8E8 PRG:38E8 A0 F6 - jsr $F683 ; CPU:$F8EA PRG:38EA 20 83 F6 - lda RandomState ; CPU:$F8ED PRG:38ED A5 1B - and #$0F ; CPU:$F8EF PRG:38EF 29 0F - sta APUPC1TLOW ; CPU:$F8F1 PRG:38F1 8D 02 40 - ldx #$F9 ; CPU:$F8F4 PRG:38F4 A2 F9 - ldy #$F6 ; CPU:$F8F6 PRG:38F6 A0 F6 - jsr $F68F ; CPU:$F8F8 PRG:38F8 20 8F F6 - lda RandomState ; CPU:$F8FB PRG:38FB A5 1B - lsr a ; CPU:$F8FD PRG:38FD 4A - lsr a ; CPU:$F8FE PRG:38FE 4A - and #$0F ; CPU:$F8FF PRG:38FF 29 0F - sta APUPC2LOW ; CPU:$F901 PRG:3901 8D 06 40 - rts ; CPU:$F904 PRG:3904 60 + ldx #$F9 ; CPU:$F8E8 PRG:38E8 A2 F9 + ldy #$F6 ; CPU:$F8EA PRG:38EA A0 F6 + jsr $F683 ; CPU:$F8EC PRG:38EC 20 83 F6 + lda RandomState ; CPU:$F8EF PRG:38EF A5 1B + and #$0F ; CPU:$F8F1 PRG:38F1 29 0F + sta APUPC1TLOW ; CPU:$F8F3 PRG:38F3 8D 02 40 + ldx #$F9 ; CPU:$F8F6 PRG:38F6 A2 F9 + ldy #$F6 ; CPU:$F8F8 PRG:38F8 A0 F6 + jsr $F68F ; CPU:$F8FA PRG:38FA 20 8F F6 + lda RandomState ; CPU:$F8FD PRG:38FD A5 1B + lsr a ; CPU:$F8FF PRG:38FF 4A + lsr a ; CPU:$F900 PRG:3900 4A + and #$0F ; CPU:$F901 PRG:3901 29 0F + sta APUPC2LOW ; CPU:$F903 PRG:3903 8D 06 40 + rts ; CPU:$F906 PRG:3906 60 Sound_F907: - jmp Sound_F8A6 ; CPU:$F905 PRG:3905 4C A6 F8 + jmp Sound_F8A6 ; CPU:$F907 PRG:3907 4C A6 F8 ; ProcessMusicRequest ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. ProcessMusicRequest: - lda $F6 ; CPU:$F908 PRG:3908 A5 F6 - beq Sound_F91B ; CPU:$F90A PRG:390A F0 0D - cmp #$DF ; CPU:$F90C PRG:390C C9 DF - beq Sound_F91B ; CPU:$F90E PRG:390E F0 09 - lda SoundRequestFlags0 ; CPU:$F910 PRG:3910 A5 F0 - and #$E0 ; CPU:$F912 PRG:3912 29 E0 - beq Sound_F94E ; CPU:$F914 PRG:3914 F0 36 - jsr ResetAllSoundState ; CPU:$F916 PRG:3916 20 A5 F7 + lda $F6 ; CPU:$F90A PRG:390A A5 F6 + beq Sound_F91B ; CPU:$F90C PRG:390C F0 0D + cmp #$DF ; CPU:$F90E PRG:390E C9 DF + beq Sound_F91B ; CPU:$F910 PRG:3910 F0 09 + lda SoundRequestFlags0 ; CPU:$F912 PRG:3912 A5 F0 + and #$E0 ; CPU:$F914 PRG:3914 29 E0 + beq Sound_F94E ; CPU:$F916 PRG:3916 F0 36 + jsr ResetAllSoundState ; CPU:$F918 PRG:3918 20 A5 F7 Sound_F91B: - lda SoundRequestFlags0 ; CPU:$F919 PRG:3919 A5 F0 - asl a ; CPU:$F91B PRG:391B 0A - bcs Sound_F8DD ; CPU:$F91C PRG:391C B0 BD - asl a ; CPU:$F91E PRG:391E 0A - bcs Sound_F952 ; CPU:$F91F PRG:391F B0 2F - asl a ; CPU:$F921 PRG:3921 0A - bcs Sound_F965 ; CPU:$F922 PRG:3922 B0 3F - lda $F4 ; CPU:$F924 PRG:3924 A5 F4 - asl a ; CPU:$F926 PRG:3926 0A - bcs Sound_F8E8 ; CPU:$F927 PRG:3927 B0 BD - lda $F4 ; CPU:$F929 PRG:3929 A5 F4 - and #$E0 ; CPU:$F92B PRG:392B 29 E0 - bne Sound_F94E ; CPU:$F92D PRG:392D D0 1D - lda $F6 ; CPU:$F92F PRG:392F A5 F6 - cmp #$DF ; CPU:$F931 PRG:3931 C9 DF - beq Sound_F94B ; CPU:$F933 PRG:3933 F0 14 - lda $F6 ; CPU:$F935 PRG:3935 A5 F6 - bne Sound_F94E ; CPU:$F937 PRG:3937 D0 13 - lda SoundRequestFlags3 ; CPU:$F939 PRG:3939 A5 F3 - asl a ; CPU:$F93B PRG:393B 0A - bcs Sound_F907 ; CPU:$F93C PRG:393C B0 C7 - asl a ; CPU:$F93E PRG:393E 0A - bcs Sound_F977 ; CPU:$F93F PRG:393F B0 34 - lda $F7 ; CPU:$F941 PRG:3941 A5 F7 - asl a ; CPU:$F943 PRG:3943 0A - bcs Sound_F94F ; CPU:$F944 PRG:3944 B0 07 - asl a ; CPU:$F946 PRG:3946 0A - bcs Sound_F993 ; CPU:$F947 PRG:3947 B0 48 + lda SoundRequestFlags0 ; CPU:$F91B PRG:391B A5 F0 + asl a ; CPU:$F91D PRG:391D 0A + bcs Sound_F8DD ; CPU:$F91E PRG:391E B0 BD + asl a ; CPU:$F920 PRG:3920 0A + bcs Sound_F952 ; CPU:$F921 PRG:3921 B0 2F + asl a ; CPU:$F923 PRG:3923 0A + bcs Sound_F965 ; CPU:$F924 PRG:3924 B0 3F + lda $F4 ; CPU:$F926 PRG:3926 A5 F4 + asl a ; CPU:$F928 PRG:3928 0A + bcs Sound_F8E8 ; CPU:$F929 PRG:3929 B0 BD + lda $F4 ; CPU:$F92B PRG:392B A5 F4 + and #$E0 ; CPU:$F92D PRG:392D 29 E0 + bne Sound_F94E ; CPU:$F92F PRG:392F D0 1D + lda $F6 ; CPU:$F931 PRG:3931 A5 F6 + cmp #$DF ; CPU:$F933 PRG:3933 C9 DF + beq Sound_F94B ; CPU:$F935 PRG:3935 F0 14 + lda $F6 ; CPU:$F937 PRG:3937 A5 F6 + bne Sound_F94E ; CPU:$F939 PRG:3939 D0 13 + lda SoundRequestFlags3 ; CPU:$F93B PRG:393B A5 F3 + asl a ; CPU:$F93D PRG:393D 0A + bcs Sound_F907 ; CPU:$F93E PRG:393E B0 C7 + asl a ; CPU:$F940 PRG:3940 0A + bcs Sound_F977 ; CPU:$F941 PRG:3941 B0 34 + lda $F7 ; CPU:$F943 PRG:3943 A5 F7 + asl a ; CPU:$F945 PRG:3945 0A + bcs Sound_F94F ; CPU:$F946 PRG:3946 B0 07 + asl a ; CPU:$F948 PRG:3948 0A + bcs Sound_F993 ; CPU:$F949 PRG:3949 B0 48 Sound_F94B: - jsr UpdateMusicTempo ; CPU:$F949 PRG:3949 20 25 F7 + jsr UpdateMusicTempo ; CPU:$F94B PRG:394B 20 25 F7 Sound_F94E: - rts ; CPU:$F94C PRG:394C 60 + rts ; CPU:$F94E PRG:394E 60 Sound_F94F: - jmp Sound_F8BF ; CPU:$F94D PRG:394D 4C BF F8 + jmp Sound_F8BF ; CPU:$F94F PRG:394F 4C BF F8 Sound_F952: - lda #$0F ; CPU:$F950 PRG:3950 A9 0F - sta $07FA ; CPU:$F952 PRG:3952 8D FA 07 - lda $F4 ; CPU:$F955 PRG:3955 A5 F4 - and #$0F ; CPU:$F957 PRG:3957 29 0F - ora #$40 ; CPU:$F959 PRG:3959 09 40 - sta $F4 ; CPU:$F95B PRG:395B 85 F4 - ldx #$D1 ; CPU:$F95D PRG:395D A2 D1 - ldy #$F9 ; CPU:$F95F PRG:395F A0 F9 - bne Sound_F98F ; CPU:$F961 PRG:3961 D0 2A + lda #$0F ; CPU:$F952 PRG:3952 A9 0F + sta $07FA ; CPU:$F954 PRG:3954 8D FA 07 + lda $F4 ; CPU:$F957 PRG:3957 A5 F4 + and #$0F ; CPU:$F959 PRG:3959 29 0F + ora #$40 ; CPU:$F95B PRG:395B 09 40 + sta $F4 ; CPU:$F95D PRG:395D 85 F4 + ldx #$D1 ; CPU:$F95F PRG:395F A2 D1 + ldy #$F9 ; CPU:$F961 PRG:3961 A0 F9 + bne Sound_F98F ; CPU:$F963 PRG:3963 D0 2A Sound_F965: - lda #$02 ; CPU:$F963 PRG:3963 A9 02 - sta SoundRequestFlags0 ; CPU:$F965 PRG:3965 85 F0 - lda $F4 ; CPU:$F967 PRG:3967 A5 F4 - and #$0F ; CPU:$F969 PRG:3969 29 0F - ora #$20 ; CPU:$F96B PRG:396B 09 20 - sta $F4 ; CPU:$F96D PRG:396D 85 F4 - ldx #$CD ; CPU:$F96F PRG:396F A2 CD - ldy #$F9 ; CPU:$F971 PRG:3971 A0 F9 - bne Sound_F98F ; CPU:$F973 PRG:3973 D0 18 + lda #$02 ; CPU:$F965 PRG:3965 A9 02 + sta SoundRequestFlags0 ; CPU:$F967 PRG:3967 85 F0 + lda $F4 ; CPU:$F969 PRG:3969 A5 F4 + and #$0F ; CPU:$F96B PRG:396B 29 0F + ora #$20 ; CPU:$F96D PRG:396D 09 20 + sta $F4 ; CPU:$F96F PRG:396F 85 F4 + ldx #$CD ; CPU:$F971 PRG:3971 A2 CD + ldy #$F9 ; CPU:$F973 PRG:3973 A0 F9 + bne Sound_F98F ; CPU:$F975 PRG:3975 D0 18 Sound_F977: - lda #$00 ; CPU:$F975 PRG:3975 A9 00 - sta $07FC ; CPU:$F977 PRG:3977 8D FC 07 - lda $F7 ; CPU:$F97A PRG:397A A5 F7 - and #$00 ; CPU:$F97C PRG:397C 29 00 - ora #$40 ; CPU:$F97E PRG:397E 09 40 - sta $F7 ; CPU:$F980 PRG:3980 85 F7 - ldx #$D5 ; CPU:$F982 PRG:3982 A2 D5 - ldy #$F9 ; CPU:$F984 PRG:3984 A0 F9 - jsr $F68F ; CPU:$F986 PRG:3986 20 8F F6 - ldx #$D9 ; CPU:$F989 PRG:3989 A2 D9 - ldy #$F9 ; CPU:$F98B PRG:398B A0 F9 + lda #$00 ; CPU:$F977 PRG:3977 A9 00 + sta $07FC ; CPU:$F979 PRG:3979 8D FC 07 + lda $F7 ; CPU:$F97C PRG:397C A5 F7 + and #$00 ; CPU:$F97E PRG:397E 29 00 + ora #$40 ; CPU:$F980 PRG:3980 09 40 + sta $F7 ; CPU:$F982 PRG:3982 85 F7 + ldx #$D5 ; CPU:$F984 PRG:3984 A2 D5 + ldy #$F9 ; CPU:$F986 PRG:3986 A0 F9 + jsr $F68F ; CPU:$F988 PRG:3988 20 8F F6 + ldx #$D9 ; CPU:$F98B PRG:398B A2 D9 + ldy #$F9 ; CPU:$F98D PRG:398D A0 F9 Sound_F98F: - jsr $F683 ; CPU:$F98D PRG:398D 20 83 F6 - rts ; CPU:$F990 PRG:3990 60 + jsr $F683 ; CPU:$F98F PRG:398F 20 83 F6 + rts ; CPU:$F992 PRG:3992 60 Sound_F993: - inc $07FC ; CPU:$F991 PRG:3991 EE FC 07 - lda $07FC ; CPU:$F994 PRG:3994 AD FC 07 - cmp #$12 ; CPU:$F997 PRG:3997 C9 12 - beq Sound_F9CA ; CPU:$F999 PRG:3999 F0 2D - cmp #$06 ; CPU:$F99B PRG:399B C9 06 - bcc Sound_F9B1 ; CPU:$F99D PRG:399D 90 10 - lda RandomState ; CPU:$F99F PRG:399F A5 1B - ora #$10 ; CPU:$F9A1 PRG:39A1 09 10 - and #$7F ; CPU:$F9A3 PRG:39A3 29 7F - sta $07FE ; CPU:$F9A5 PRG:39A5 8D FE 07 - rol a ; CPU:$F9A8 PRG:39A8 2A - sta $07FD ; CPU:$F9A9 PRG:39A9 8D FD 07 - jmp Sound_F9BD ; CPU:$F9AC PRG:39AC 4C BD F9 + inc $07FC ; CPU:$F993 PRG:3993 EE FC 07 + lda $07FC ; CPU:$F996 PRG:3996 AD FC 07 + cmp #$12 ; CPU:$F999 PRG:3999 C9 12 + beq Sound_F9CA ; CPU:$F99B PRG:399B F0 2D + cmp #$06 ; CPU:$F99D PRG:399D C9 06 + bcc Sound_F9B1 ; CPU:$F99F PRG:399F 90 10 + lda RandomState ; CPU:$F9A1 PRG:39A1 A5 1B + ora #$10 ; CPU:$F9A3 PRG:39A3 09 10 + and #$7F ; CPU:$F9A5 PRG:39A5 29 7F + sta $07FE ; CPU:$F9A7 PRG:39A7 8D FE 07 + rol a ; CPU:$F9AA PRG:39AA 2A + sta $07FD ; CPU:$F9AB PRG:39AB 8D FD 07 + jmp Sound_F9BD ; CPU:$F9AE PRG:39AE 4C BD F9 Sound_F9B1: - inc $07FD ; CPU:$F9AF PRG:39AF EE FD 07 - inc $07FD ; CPU:$F9B2 PRG:39B2 EE FD 07 - inc $07FE ; CPU:$F9B5 PRG:39B5 EE FE 07 - inc $07FE ; CPU:$F9B8 PRG:39B8 EE FE 07 + inc $07FD ; CPU:$F9B1 PRG:39B1 EE FD 07 + inc $07FD ; CPU:$F9B4 PRG:39B4 EE FD 07 + inc $07FE ; CPU:$F9B7 PRG:39B7 EE FE 07 + inc $07FE ; CPU:$F9BA PRG:39BA EE FE 07 Sound_F9BD: - lda $07FD ; CPU:$F9BB PRG:39BB AD FD 07 - sta APUPC2LOW ; CPU:$F9BE PRG:39BE 8D 06 40 - lda $07FE ; CPU:$F9C1 PRG:39C1 AD FE 07 - sta APUPC1TLOW ; CPU:$F9C4 PRG:39C4 8D 02 40 - rts ; CPU:$F9C7 PRG:39C7 60 + lda $07FD ; CPU:$F9BD PRG:39BD AD FD 07 + sta APUPC2LOW ; CPU:$F9C0 PRG:39C0 8D 06 40 + lda $07FE ; CPU:$F9C3 PRG:39C3 AD FE 07 + sta APUPC1TLOW ; CPU:$F9C6 PRG:39C6 8D 02 40 + rts ; CPU:$F9C9 PRG:39C9 60 Sound_F9CA: - jmp Sound_F8CA ; CPU:$F9C8 PRG:39C8 4C CA F8 + jmp Sound_F8CA ; CPU:$F9CA PRG:39CA 4C CA F8 ; Preserved sound data / unused bytes Data_F9CD: - .byte $B8, $D5, $20, $00, $9F, $93, $80, $22 ; CPU:$F9CB PRG:39CB B8 D5 20 00 9F 93 80 22 - .byte $3F, $BA, $E0, $06, $3F, $BB, $CE, $06 ; CPU:$F9D3 PRG:39D3 3F BA E0 06 3F BB CE 06 - .byte $B8, $93, $50, $02, $80, $7F, $60, $68 ; CPU:$F9DB PRG:39DB B8 93 50 02 80 7F 60 68 - .byte $80, $7F, $62, $68 ; CPU:$F9E3 PRG:39E3 80 7F 62 68 + .byte $B8, $D5, $20, $00, $9F, $93, $80, $22 ; CPU:$F9CD PRG:39CD B8 D5 20 00 9F 93 80 22 + .byte $3F, $BA, $E0, $06, $3F, $BB, $CE, $06 ; CPU:$F9D5 PRG:39D5 3F BA E0 06 3F BB CE 06 + .byte $B8, $93, $50, $02, $80, $7F, $60, $68 ; CPU:$F9DD PRG:39DD B8 93 50 02 80 7F 60 68 + .byte $80, $7F, $62, $68 ; CPU:$F9E5 PRG:39E5 80 7F 62 68 ; UpdateSoundEnvelopes ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. UpdateSoundEnvelopes: - lda $F5 ; CPU:$F9E7 PRG:39E7 A5 F5 - and #$02 ; CPU:$F9E9 PRG:39E9 29 02 - bne Sound_FA26 ; CPU:$F9EB PRG:39EB D0 37 - lda $F6 ; CPU:$F9ED PRG:39ED A5 F6 - cmp #$DF ; CPU:$F9EF PRG:39EF C9 DF - beq Sound_F9F9 ; CPU:$F9F1 PRG:39F1 F0 04 - lda $F6 ; CPU:$F9F3 PRG:39F3 A5 F6 - bne Sound_FA26 ; CPU:$F9F5 PRG:39F5 D0 2D + lda $F5 ; CPU:$F9E9 PRG:39E9 A5 F5 + and #$02 ; CPU:$F9EB PRG:39EB 29 02 + bne Sound_FA26 ; CPU:$F9ED PRG:39ED D0 37 + lda $F6 ; CPU:$F9EF PRG:39EF A5 F6 + cmp #$DF ; CPU:$F9F1 PRG:39F1 C9 DF + beq Sound_F9F9 ; CPU:$F9F3 PRG:39F3 F0 04 + lda $F6 ; CPU:$F9F5 PRG:39F5 A5 F6 + bne Sound_FA26 ; CPU:$F9F7 PRG:39F7 D0 2D Sound_F9F9: - lda #$00 ; CPU:$F9F7 PRG:39F7 A9 00 - sta $07F9 ; CPU:$F9F9 PRG:39F9 8D F9 07 - lda $F5 ; CPU:$F9FC PRG:39FC A5 F5 - and #$E0 ; CPU:$F9FE PRG:39FE 29 E0 - ora #$02 ; CPU:$FA00 PRG:3A00 09 02 - sta $F5 ; CPU:$FA02 PRG:3A02 85 F5 - ldx #$DD ; CPU:$FA04 PRG:3A04 A2 DD - ldy #$F9 ; CPU:$FA06 PRG:3A06 A0 F9 - bne Sound_FA7F ; CPU:$FA08 PRG:3A08 D0 73 + lda #$00 ; CPU:$F9F9 PRG:39F9 A9 00 + sta $07F9 ; CPU:$F9FB PRG:39FB 8D F9 07 + lda $F5 ; CPU:$F9FE PRG:39FE A5 F5 + and #$E0 ; CPU:$FA00 PRG:3A00 29 E0 + ora #$02 ; CPU:$FA02 PRG:3A02 09 02 + sta $F5 ; CPU:$FA04 PRG:3A04 85 F5 + ldx #$DD ; CPU:$FA06 PRG:3A06 A2 DD + ldy #$F9 ; CPU:$FA08 PRG:3A08 A0 F9 + bne Sound_FA7F ; CPU:$FA0A PRG:3A0A D0 73 Sound_FA0C: - inc $07F9 ; CPU:$FA0A PRG:3A0A EE F9 07 - lda $07F9 ; CPU:$FA0D PRG:3A0D AD F9 07 - cmp #$07 ; CPU:$FA10 PRG:3A10 C9 07 - bne Sound_FA26 ; CPU:$FA12 PRG:3A12 D0 10 - lda #$7F ; CPU:$FA14 PRG:3A14 A9 7F - sta APUPC2SWEEP ; CPU:$FA16 PRG:3A16 8D 05 40 - lda #$10 ; CPU:$FA19 PRG:3A19 A9 10 - sta APUPC2BASE ; CPU:$FA1B PRG:3A1B 8D 04 40 - lda $F5 ; CPU:$FA1E PRG:3A1E A5 F5 - and #$E0 ; CPU:$FA20 PRG:3A20 29 E0 - sta $F5 ; CPU:$FA22 PRG:3A22 85 F5 + inc $07F9 ; CPU:$FA0C PRG:3A0C EE F9 07 + lda $07F9 ; CPU:$FA0F PRG:3A0F AD F9 07 + cmp #$07 ; CPU:$FA12 PRG:3A12 C9 07 + bne Sound_FA26 ; CPU:$FA14 PRG:3A14 D0 10 + lda #$7F ; CPU:$FA16 PRG:3A16 A9 7F + sta APUPC2SWEEP ; CPU:$FA18 PRG:3A18 8D 05 40 + lda #$10 ; CPU:$FA1B PRG:3A1B A9 10 + sta APUPC2BASE ; CPU:$FA1D PRG:3A1D 8D 04 40 + lda $F5 ; CPU:$FA20 PRG:3A20 A5 F5 + and #$E0 ; CPU:$FA22 PRG:3A22 29 E0 + sta $F5 ; CPU:$FA24 PRG:3A24 85 F5 Sound_FA26: - rts ; CPU:$FA24 PRG:3A24 60 + rts ; CPU:$FA26 PRG:3A26 60 Sound_FA27: - jsr ResetAllSoundState ; CPU:$FA25 PRG:3A25 20 A5 F7 - ldx #$E1 ; CPU:$FA28 PRG:3A28 A2 E1 - ldy #$F9 ; CPU:$FA2A PRG:3A2A A0 F9 - jsr $F683 ; CPU:$FA2C PRG:3A2C 20 83 F6 - ldx #$E5 ; CPU:$FA2F PRG:3A2F A2 E5 - ldy #$F9 ; CPU:$FA31 PRG:3A31 A0 F9 - jmp Sound_FA7F ; CPU:$FA33 PRG:3A33 4C 7F FA + jsr ResetAllSoundState ; CPU:$FA27 PRG:3A27 20 A5 F7 + ldx #$E1 ; CPU:$FA2A PRG:3A2A A2 E1 + ldy #$F9 ; CPU:$FA2C PRG:3A2C A0 F9 + jsr $F683 ; CPU:$FA2E PRG:3A2E 20 83 F6 + ldx #$E5 ; CPU:$FA31 PRG:3A31 A2 E5 + ldy #$F9 ; CPU:$FA33 PRG:3A33 A0 F9 + jmp Sound_FA7F ; CPU:$FA35 PRG:3A35 4C 7F FA ; UpdatePulseEffects ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. UpdatePulseEffects: - lda $F6 ; CPU:$FA36 PRG:3A36 A5 F6 - beq Sound_FA42 ; CPU:$FA38 PRG:3A38 F0 06 - and #$0F ; CPU:$FA3A PRG:3A3A 29 0F - cmp #$0F ; CPU:$FA3C PRG:3A3C C9 0F - bne Sound_FA63 ; CPU:$FA3E PRG:3A3E D0 21 + lda $F6 ; CPU:$FA38 PRG:3A38 A5 F6 + beq Sound_FA42 ; CPU:$FA3A PRG:3A3A F0 06 + and #$0F ; CPU:$FA3C PRG:3A3C 29 0F + cmp #$0F ; CPU:$FA3E PRG:3A3E C9 0F + bne Sound_FA63 ; CPU:$FA40 PRG:3A40 D0 21 Sound_FA42: - lda $F4 ; CPU:$FA40 PRG:3A40 A5 F4 - and #$80 ; CPU:$FA42 PRG:3A42 29 80 - bne Sound_FA63 ; CPU:$FA44 PRG:3A44 D0 1B - lda $F7 ; CPU:$FA46 PRG:3A46 A5 F7 - and #$C0 ; CPU:$FA48 PRG:3A48 29 C0 - bne Sound_FA63 ; CPU:$FA4A PRG:3A4A D0 15 - lda SoundRequestFlags1 ; CPU:$FA4C PRG:3A4C A5 F1 - lsr a ; CPU:$FA4E PRG:3A4E 4A - bcs Sound_FA27 ; CPU:$FA4F PRG:3A4F B0 D4 - lsr a ; CPU:$FA51 PRG:3A51 4A - bcs UpdateSoundEnvelopes ; CPU:$FA52 PRG:3A52 B0 93 - lsr a ; CPU:$FA54 PRG:3A54 4A - bcs Sound_FA83 ; CPU:$FA55 PRG:3A55 B0 2A - lsr a ; CPU:$FA57 PRG:3A57 4A - lsr a ; CPU:$FA58 PRG:3A58 4A - bcs Sound_FA64 ; CPU:$FA59 PRG:3A59 B0 07 - lda $F5 ; CPU:$FA5B PRG:3A5B A5 F5 - lsr a ; CPU:$FA5D PRG:3A5D 4A - lsr a ; CPU:$FA5E PRG:3A5E 4A - bcs Sound_FA0C ; CPU:$FA5F PRG:3A5F B0 A9 + lda $F4 ; CPU:$FA42 PRG:3A42 A5 F4 + and #$80 ; CPU:$FA44 PRG:3A44 29 80 + bne Sound_FA63 ; CPU:$FA46 PRG:3A46 D0 1B + lda $F7 ; CPU:$FA48 PRG:3A48 A5 F7 + and #$C0 ; CPU:$FA4A PRG:3A4A 29 C0 + bne Sound_FA63 ; CPU:$FA4C PRG:3A4C D0 15 + lda SoundRequestFlags1 ; CPU:$FA4E PRG:3A4E A5 F1 + lsr a ; CPU:$FA50 PRG:3A50 4A + bcs Sound_FA27 ; CPU:$FA51 PRG:3A51 B0 D4 + lsr a ; CPU:$FA53 PRG:3A53 4A + bcs UpdateSoundEnvelopes ; CPU:$FA54 PRG:3A54 B0 93 + lsr a ; CPU:$FA56 PRG:3A56 4A + bcs Sound_FA83 ; CPU:$FA57 PRG:3A57 B0 2A + lsr a ; CPU:$FA59 PRG:3A59 4A + lsr a ; CPU:$FA5A PRG:3A5A 4A + bcs Sound_FA64 ; CPU:$FA5B PRG:3A5B B0 07 + lda $F5 ; CPU:$FA5D PRG:3A5D A5 F5 + lsr a ; CPU:$FA5F PRG:3A5F 4A + lsr a ; CPU:$FA60 PRG:3A60 4A + bcs Sound_FA0C ; CPU:$FA61 PRG:3A61 B0 A9 Sound_FA63: - rts ; CPU:$FA61 PRG:3A61 60 + rts ; CPU:$FA63 PRG:3A63 60 Sound_FA64: - lda $F6 ; CPU:$FA62 PRG:3A62 A5 F6 - bne Sound_FA63 ; CPU:$FA64 PRG:3A64 D0 FB - lda $F5 ; CPU:$FA66 PRG:3A66 A5 F5 - and #$02 ; CPU:$FA68 PRG:3A68 29 02 - bne Sound_FA63 ; CPU:$FA6A PRG:3A6A D0 F5 - ldx #$8A ; CPU:$FA6C PRG:3A6C A2 8A - ldy #$FA ; CPU:$FA6E PRG:3A6E A0 FA - jsr $F68F ; CPU:$FA70 PRG:3A70 20 8F F6 - lda RandomState ; CPU:$FA73 PRG:3A73 A5 1B - and #$3F ; CPU:$FA75 PRG:3A75 29 3F - ora #$10 ; CPU:$FA77 PRG:3A77 09 10 - sta APUPC2LOW ; CPU:$FA79 PRG:3A79 8D 06 40 - rts ; CPU:$FA7C PRG:3A7C 60 + lda $F6 ; CPU:$FA64 PRG:3A64 A5 F6 + bne Sound_FA63 ; CPU:$FA66 PRG:3A66 D0 FB + lda $F5 ; CPU:$FA68 PRG:3A68 A5 F5 + and #$02 ; CPU:$FA6A PRG:3A6A 29 02 + bne Sound_FA63 ; CPU:$FA6C PRG:3A6C D0 F5 + ldx #$8A ; CPU:$FA6E PRG:3A6E A2 8A + ldy #$FA ; CPU:$FA70 PRG:3A70 A0 FA + jsr $F68F ; CPU:$FA72 PRG:3A72 20 8F F6 + lda RandomState ; CPU:$FA75 PRG:3A75 A5 1B + and #$3F ; CPU:$FA77 PRG:3A77 29 3F + ora #$10 ; CPU:$FA79 PRG:3A79 09 10 + sta APUPC2LOW ; CPU:$FA7B PRG:3A7B 8D 06 40 + rts ; CPU:$FA7E PRG:3A7E 60 Sound_FA7F: - jsr $F68F ; CPU:$FA7D PRG:3A7D 20 8F F6 - rts ; CPU:$FA80 PRG:3A80 60 + jsr $F68F ; CPU:$FA7F PRG:3A7F 20 8F F6 + rts ; CPU:$FA82 PRG:3A82 60 Sound_FA83: - ldy #$0A ; CPU:$FA81 PRG:3A81 A0 0A - lda #$EF ; CPU:$FA83 PRG:3A83 A9 EF - jmp Sound_FBA5 ; CPU:$FA85 PRG:3A85 4C A5 FB + ldy #$0A ; CPU:$FA83 PRG:3A83 A0 0A + lda #$EF ; CPU:$FA85 PRG:3A85 A9 EF + jmp Sound_FBA5 ; CPU:$FA87 PRG:3A87 4C A5 FB ; Preserved sound data / unused bytes Data_FA8A: - .byte $D9, $86, $A8, $48, $08, $7F, $40, $28 ; CPU:$FA88 PRG:3A88 D9 86 A8 48 08 7F 40 28 - .byte $08, $7F, $45, $28 ; CPU:$FA90 PRG:3A90 08 7F 45 28 + .byte $D9, $86, $A8, $48, $08, $7F, $40, $28 ; CPU:$FA8A PRG:3A8A D9 86 A8 48 08 7F 40 28 + .byte $08, $7F, $45, $28 ; CPU:$FA92 PRG:3A92 08 7F 45 28 ; UpdateTriangleEffects ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. UpdateTriangleEffects: - inc $07F6 ; CPU:$FA94 PRG:3A94 EE F6 07 - lda $07F6 ; CPU:$FA97 PRG:3A97 AD F6 07 - cmp #$04 ; CPU:$FA9A PRG:3A9A C9 04 - bne Sound_FAD8 ; CPU:$FA9C PRG:3A9C D0 38 - lda $F5 ; CPU:$FA9E PRG:3A9E A5 F5 - and #$1F ; CPU:$FAA0 PRG:3AA0 29 1F - sta $F5 ; CPU:$FAA2 PRG:3AA2 85 F5 - ldx #$92 ; CPU:$FAA4 PRG:3AA4 A2 92 - ldy #$FA ; CPU:$FAA6 PRG:3AA6 A0 FA - bne Sound_FB00 ; CPU:$FAA8 PRG:3AA8 D0 54 + inc $07F6 ; CPU:$FA96 PRG:3A96 EE F6 07 + lda $07F6 ; CPU:$FA99 PRG:3A99 AD F6 07 + cmp #$04 ; CPU:$FA9C PRG:3A9C C9 04 + bne Sound_FAD8 ; CPU:$FA9E PRG:3A9E D0 38 + lda $F5 ; CPU:$FAA0 PRG:3AA0 A5 F5 + and #$1F ; CPU:$FAA2 PRG:3AA2 29 1F + sta $F5 ; CPU:$FAA4 PRG:3AA4 85 F5 + ldx #$92 ; CPU:$FAA6 PRG:3AA6 A2 92 + ldy #$FA ; CPU:$FAA8 PRG:3AA8 A0 FA + bne Sound_FB00 ; CPU:$FAAA PRG:3AAA D0 54 ; UpdateNoiseEffects ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. UpdateNoiseEffects: - lda $F6 ; CPU:$FAAA PRG:3AAA A5 F6 - beq Sound_FABA ; CPU:$FAAC PRG:3AAC F0 0A - cmp #$08 ; CPU:$FAAE PRG:3AAE C9 08 - beq Sound_FABA ; CPU:$FAB0 PRG:3AB0 F0 06 - and #$0F ; CPU:$FAB2 PRG:3AB2 29 0F - cmp #$0F ; CPU:$FAB4 PRG:3AB4 C9 0F - bne Sound_FAD8 ; CPU:$FAB6 PRG:3AB6 D0 1E + lda $F6 ; CPU:$FAAC PRG:3AAC A5 F6 + beq Sound_FABA ; CPU:$FAAE PRG:3AAE F0 0A + cmp #$08 ; CPU:$FAB0 PRG:3AB0 C9 08 + beq Sound_FABA ; CPU:$FAB2 PRG:3AB2 F0 06 + and #$0F ; CPU:$FAB4 PRG:3AB4 29 0F + cmp #$0F ; CPU:$FAB6 PRG:3AB6 C9 0F + bne Sound_FAD8 ; CPU:$FAB8 PRG:3AB8 D0 1E Sound_FABA: - lda $F4 ; CPU:$FAB8 PRG:3AB8 A5 F4 - and #$80 ; CPU:$FABA PRG:3ABA 29 80 - bne Sound_FAD8 ; CPU:$FABC PRG:3ABC D0 18 - lda SoundRequestFlags1 ; CPU:$FABE PRG:3ABE A5 F1 - asl a ; CPU:$FAC0 PRG:3AC0 0A - bcs Sound_FB17 ; CPU:$FAC1 PRG:3AC1 B0 52 - asl a ; CPU:$FAC3 PRG:3AC3 0A - bcs Sound_FAE2 ; CPU:$FAC4 PRG:3AC4 B0 1A - lda $F5 ; CPU:$FAC6 PRG:3AC6 A5 F5 - asl a ; CPU:$FAC8 PRG:3AC8 0A - asl a ; CPU:$FAC9 PRG:3AC9 0A - bcs UpdateTriangleEffects ; CPU:$FACA PRG:3ACA B0 C8 - lda SoundRequestFlags1 ; CPU:$FACC PRG:3ACC A5 F1 - and #$20 ; CPU:$FACE PRG:3ACE 29 20 - beq Sound_FAD9 ; CPU:$FAD0 PRG:3AD0 F0 05 - lda $F6 ; CPU:$FAD2 PRG:3AD2 A5 F6 - beq Sound_FB04 ; CPU:$FAD4 PRG:3AD4 F0 2C + lda $F4 ; CPU:$FABA PRG:3ABA A5 F4 + and #$80 ; CPU:$FABC PRG:3ABC 29 80 + bne Sound_FAD8 ; CPU:$FABE PRG:3ABE D0 18 + lda SoundRequestFlags1 ; CPU:$FAC0 PRG:3AC0 A5 F1 + asl a ; CPU:$FAC2 PRG:3AC2 0A + bcs Sound_FB17 ; CPU:$FAC3 PRG:3AC3 B0 52 + asl a ; CPU:$FAC5 PRG:3AC5 0A + bcs Sound_FAE2 ; CPU:$FAC6 PRG:3AC6 B0 1A + lda $F5 ; CPU:$FAC8 PRG:3AC8 A5 F5 + asl a ; CPU:$FACA PRG:3ACA 0A + asl a ; CPU:$FACB PRG:3ACB 0A + bcs UpdateTriangleEffects ; CPU:$FACC PRG:3ACC B0 C8 + lda SoundRequestFlags1 ; CPU:$FACE PRG:3ACE A5 F1 + and #$20 ; CPU:$FAD0 PRG:3AD0 29 20 + beq Sound_FAD9 ; CPU:$FAD2 PRG:3AD2 F0 05 + lda $F6 ; CPU:$FAD4 PRG:3AD4 A5 F6 + beq Sound_FB04 ; CPU:$FAD6 PRG:3AD6 F0 2C Sound_FAD8: - rts ; CPU:$FAD6 PRG:3AD6 60 + rts ; CPU:$FAD8 PRG:3AD8 60 Sound_FAD9: - lda $F6 ; CPU:$FAD7 PRG:3AD7 A5 F6 - cmp #$DF ; CPU:$FAD9 PRG:3AD9 C9 DF - bne Sound_FAD8 ; CPU:$FADB PRG:3ADB D0 F9 - jmp Sound_F79F ; CPU:$FADD PRG:3ADD 4C 9F F7 + lda $F6 ; CPU:$FAD9 PRG:3AD9 A5 F6 + cmp #$DF ; CPU:$FADB PRG:3ADB C9 DF + bne Sound_FAD8 ; CPU:$FADD PRG:3ADD D0 F9 + jmp Sound_F79F ; CPU:$FADF PRG:3ADF 4C 9F F7 Sound_FAE2: - lda $F5 ; CPU:$FAE0 PRG:3AE0 A5 F5 - and #$1F ; CPU:$FAE2 PRG:3AE2 29 1F - ora #$40 ; CPU:$FAE4 PRG:3AE4 09 40 - sta $F5 ; CPU:$FAE6 PRG:3AE6 85 F5 - lda #$00 ; CPU:$FAE8 PRG:3AE8 A9 00 - sta APUTRIBASE ; CPU:$FAEA PRG:3AEA 8D 08 40 - sta $F6 ; CPU:$FAED PRG:3AED 85 F6 - sta $07F6 ; CPU:$FAEF PRG:3AEF 8D F6 07 - lda #$10 ; CPU:$FAF2 PRG:3AF2 A9 10 - sta APUPC2BASE ; CPU:$FAF4 PRG:3AF4 8D 04 40 - sta APUNOISEBASE ; CPU:$FAF7 PRG:3AF7 8D 0C 40 - ldx #$8E ; CPU:$FAFA PRG:3AFA A2 8E - ldy #$FA ; CPU:$FAFC PRG:3AFC A0 FA + lda $F5 ; CPU:$FAE2 PRG:3AE2 A5 F5 + and #$1F ; CPU:$FAE4 PRG:3AE4 29 1F + ora #$40 ; CPU:$FAE6 PRG:3AE6 09 40 + sta $F5 ; CPU:$FAE8 PRG:3AE8 85 F5 + lda #$00 ; CPU:$FAEA PRG:3AEA A9 00 + sta APUTRIBASE ; CPU:$FAEC PRG:3AEC 8D 08 40 + sta $F6 ; CPU:$FAEF PRG:3AEF 85 F6 + sta $07F6 ; CPU:$FAF1 PRG:3AF1 8D F6 07 + lda #$10 ; CPU:$FAF4 PRG:3AF4 A9 10 + sta APUPC2BASE ; CPU:$FAF6 PRG:3AF6 8D 04 40 + sta APUNOISEBASE ; CPU:$FAF9 PRG:3AF9 8D 0C 40 + ldx #$8E ; CPU:$FAFC PRG:3AFC A2 8E + ldy #$FA ; CPU:$FAFE PRG:3AFE A0 FA Sound_FB00: - jsr $F687 ; CPU:$FAFE PRG:3AFE 20 87 F6 - rts ; CPU:$FB01 PRG:3B01 60 + jsr $F687 ; CPU:$FB00 PRG:3B00 20 87 F6 + rts ; CPU:$FB03 PRG:3B03 60 Sound_FB04: - lda $07E9 ; CPU:$FB02 PRG:3B02 AD E9 07 - and #$20 ; CPU:$FB05 PRG:3B05 29 20 - bne Sound_FB10 ; CPU:$FB07 PRG:3B07 D0 05 - lda #$02 ; CPU:$FB09 PRG:3B09 A9 02 - sta $07F5 ; CPU:$FB0B PRG:3B0B 8D F5 07 + lda $07E9 ; CPU:$FB04 PRG:3B04 AD E9 07 + and #$20 ; CPU:$FB07 PRG:3B07 29 20 + bne Sound_FB10 ; CPU:$FB09 PRG:3B09 D0 05 + lda #$02 ; CPU:$FB0B PRG:3B0B A9 02 + sta $07F5 ; CPU:$FB0D PRG:3B0D 8D F5 07 Sound_FB10: - ldy #$08 ; CPU:$FB0E PRG:3B0E A0 08 - lda #$DF ; CPU:$FB10 PRG:3B10 A9 DF - jmp Sound_FBA5 ; CPU:$FB12 PRG:3B12 4C A5 FB + ldy #$08 ; CPU:$FB10 PRG:3B10 A0 08 + lda #$DF ; CPU:$FB12 PRG:3B12 A9 DF + jmp Sound_FBA5 ; CPU:$FB14 PRG:3B14 4C A5 FB Sound_FB17: - ldy #$04 ; CPU:$FB15 PRG:3B15 A0 04 - lda #$7F ; CPU:$FB17 PRG:3B17 A9 7F - jmp Sound_FBA5 ; CPU:$FB19 PRG:3B19 4C A5 FB + ldy #$04 ; CPU:$FB17 PRG:3B17 A0 04 + lda #$7F ; CPU:$FB19 PRG:3B19 A9 7F + jmp Sound_FBA5 ; CPU:$FB1B PRG:3B1B 4C A5 FB Sound_FB1E: - ldy #$00 ; CPU:$FB1C PRG:3B1C A0 00 - lda #$02 ; CPU:$FB1E PRG:3B1E A9 02 - jmp Sound_FBC1 ; CPU:$FB20 PRG:3B20 4C C1 FB + ldy #$00 ; CPU:$FB1E PRG:3B1E A0 00 + lda #$02 ; CPU:$FB20 PRG:3B20 A9 02 + jmp Sound_FBC1 ; CPU:$FB22 PRG:3B22 4C C1 FB ; UpdateSoundPriority ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. UpdateSoundPriority: - lda $07E8 ; CPU:$FB23 PRG:3B23 AD E8 07 - bne Sound_FB5E ; CPU:$FB26 PRG:3B26 D0 34 - lda SoundRequestFlags2 ; CPU:$FB28 PRG:3B28 A5 F2 - lsr a ; CPU:$FB2A PRG:3B2A 4A - bcs Sound_FB82 ; CPU:$FB2B PRG:3B2B B0 53 - lsr a ; CPU:$FB2D PRG:3B2D 4A - bcs Sound_FB1E ; CPU:$FB2E PRG:3B2E B0 EC - lsr a ; CPU:$FB30 PRG:3B30 4A - bcs Sound_FB4C ; CPU:$FB31 PRG:3B31 B0 17 - lsr a ; CPU:$FB33 PRG:3B33 4A - bcs Sound_FB7C ; CPU:$FB34 PRG:3B34 B0 44 - lsr a ; CPU:$FB36 PRG:3B36 4A - bcs Sound_FB69 ; CPU:$FB37 PRG:3B37 B0 2E - lsr a ; CPU:$FB39 PRG:3B39 4A - bcs Sound_FB5E ; CPU:$FB3A PRG:3B3A B0 20 - lsr a ; CPU:$FB3C PRG:3B3C 4A - bcs Sound_FB58 ; CPU:$FB3D PRG:3B3D B0 17 - lsr a ; CPU:$FB3F PRG:3B3F 4A - bcs Sound_FB52 ; CPU:$FB40 PRG:3B40 B0 0E - lda $F6 ; CPU:$FB42 PRG:3B42 A5 F6 - bne Sound_FB49 ; CPU:$FB44 PRG:3B44 D0 01 - rts ; CPU:$FB46 PRG:3B46 60 + lda $07E8 ; CPU:$FB25 PRG:3B25 AD E8 07 + bne Sound_FB5E ; CPU:$FB28 PRG:3B28 D0 34 + lda SoundRequestFlags2 ; CPU:$FB2A PRG:3B2A A5 F2 + lsr a ; CPU:$FB2C PRG:3B2C 4A + bcs Sound_FB82 ; CPU:$FB2D PRG:3B2D B0 53 + lsr a ; CPU:$FB2F PRG:3B2F 4A + bcs Sound_FB1E ; CPU:$FB30 PRG:3B30 B0 EC + lsr a ; CPU:$FB32 PRG:3B32 4A + bcs Sound_FB4C ; CPU:$FB33 PRG:3B33 B0 17 + lsr a ; CPU:$FB35 PRG:3B35 4A + bcs Sound_FB7C ; CPU:$FB36 PRG:3B36 B0 44 + lsr a ; CPU:$FB38 PRG:3B38 4A + bcs Sound_FB69 ; CPU:$FB39 PRG:3B39 B0 2E + lsr a ; CPU:$FB3B PRG:3B3B 4A + bcs Sound_FB5E ; CPU:$FB3C PRG:3B3C B0 20 + lsr a ; CPU:$FB3E PRG:3B3E 4A + bcs Sound_FB58 ; CPU:$FB3F PRG:3B3F B0 17 + lsr a ; CPU:$FB41 PRG:3B41 4A + bcs Sound_FB52 ; CPU:$FB42 PRG:3B42 B0 0E + lda $F6 ; CPU:$FB44 PRG:3B44 A5 F6 + bne Sound_FB49 ; CPU:$FB46 PRG:3B46 D0 01 + rts ; CPU:$FB48 PRG:3B48 60 Sound_FB49: - jmp $F504 ; CPU:$FB47 PRG:3B47 4C 04 F5 + jmp $F504 ; CPU:$FB49 PRG:3B49 4C 04 F5 Sound_FB4C: - ldy #$02 ; CPU:$FB4A PRG:3B4A A0 02 - lda #$04 ; CPU:$FB4C PRG:3B4C A9 04 - bne Sound_FBA5 ; CPU:$FB4E PRG:3B4E D0 53 + ldy #$02 ; CPU:$FB4C PRG:3B4C A0 02 + lda #$04 ; CPU:$FB4E PRG:3B4E A9 04 + bne Sound_FBA5 ; CPU:$FB50 PRG:3B50 D0 53 Sound_FB52: - ldy #$09 ; CPU:$FB50 PRG:3B50 A0 09 - lda #$80 ; CPU:$FB52 PRG:3B52 A9 80 - bne Sound_FB6D ; CPU:$FB54 PRG:3B54 D0 15 + ldy #$09 ; CPU:$FB52 PRG:3B52 A0 09 + lda #$80 ; CPU:$FB54 PRG:3B54 A9 80 + bne Sound_FB6D ; CPU:$FB56 PRG:3B56 D0 15 Sound_FB58: - ldy #$07 ; CPU:$FB56 PRG:3B56 A0 07 - lda #$40 ; CPU:$FB58 PRG:3B58 A9 40 - bne Sound_FB6D ; CPU:$FB5A PRG:3B5A D0 0F + ldy #$07 ; CPU:$FB58 PRG:3B58 A0 07 + lda #$40 ; CPU:$FB5A PRG:3B5A A9 40 + bne Sound_FB6D ; CPU:$FB5C PRG:3B5C D0 0F Sound_FB5E: - lda #$00 ; CPU:$FB5C PRG:3B5C A9 00 - sta $07E8 ; CPU:$FB5E PRG:3B5E 8D E8 07 - ldy #$06 ; CPU:$FB61 PRG:3B61 A0 06 - lda #$20 ; CPU:$FB63 PRG:3B63 A9 20 - bne Sound_FBC1 ; CPU:$FB65 PRG:3B65 D0 58 + lda #$00 ; CPU:$FB5E PRG:3B5E A9 00 + sta $07E8 ; CPU:$FB60 PRG:3B60 8D E8 07 + ldy #$06 ; CPU:$FB63 PRG:3B63 A0 06 + lda #$20 ; CPU:$FB65 PRG:3B65 A9 20 + bne Sound_FBC1 ; CPU:$FB67 PRG:3B67 D0 58 Sound_FB69: - ldy #$05 ; CPU:$FB67 PRG:3B67 A0 05 - lda #$10 ; CPU:$FB69 PRG:3B69 A9 10 + ldy #$05 ; CPU:$FB69 PRG:3B69 A0 05 + lda #$10 ; CPU:$FB6B PRG:3B6B A9 10 Sound_FB6D: - jsr $F6A8 ; CPU:$FB6B PRG:3B6B 20 A8 F6 - ldx #$FC ; CPU:$FB6E PRG:3B6E A2 FC - ldy #$FC ; CPU:$FB70 PRG:3B70 A0 FC - jsr SilencePulseChannels ; CPU:$FB72 PRG:3B72 20 12 F7 - inc $07F0 ; CPU:$FB75 PRG:3B75 EE F0 07 - bne Sound_FB49 ; CPU:$FB78 PRG:3B78 D0 CD + jsr $F6A8 ; CPU:$FB6D PRG:3B6D 20 A8 F6 + ldx #$FC ; CPU:$FB70 PRG:3B70 A2 FC + ldy #$FC ; CPU:$FB72 PRG:3B72 A0 FC + jsr SilencePulseChannels ; CPU:$FB74 PRG:3B74 20 12 F7 + inc $07F0 ; CPU:$FB77 PRG:3B77 EE F0 07 + bne Sound_FB49 ; CPU:$FB7A PRG:3B7A D0 CD Sound_FB7C: - ldy #$03 ; CPU:$FB7A PRG:3B7A A0 03 - lda #$08 ; CPU:$FB7C PRG:3B7C A9 08 - bne Sound_FB86 ; CPU:$FB7E PRG:3B7E D0 04 + ldy #$03 ; CPU:$FB7C PRG:3B7C A0 03 + lda #$08 ; CPU:$FB7E PRG:3B7E A9 08 + bne Sound_FB86 ; CPU:$FB80 PRG:3B80 D0 04 Sound_FB82: - ldy #$01 ; CPU:$FB80 PRG:3B80 A0 01 - lda #$01 ; CPU:$FB82 PRG:3B82 A9 01 + ldy #$01 ; CPU:$FB82 PRG:3B82 A0 01 + lda #$01 ; CPU:$FB84 PRG:3B84 A9 01 Sound_FB86: - jsr $F6A8 ; CPU:$FB84 PRG:3B84 20 A8 F6 - ldx #$80 ; CPU:$FB87 PRG:3B87 A2 80 - ldy #$80 ; CPU:$FB89 PRG:3B89 A0 80 + jsr $F6A8 ; CPU:$FB86 PRG:3B86 20 A8 F6 + ldx #$80 ; CPU:$FB89 PRG:3B89 A2 80 + ldy #$80 ; CPU:$FB8B PRG:3B8B A0 80 Sound_FB8D: - jsr InitializeApuChannelState ; CPU:$FB8B PRG:3B8B 20 1A F7 - lda #$83 ; CPU:$FB8E PRG:3B8E A9 83 - sta APUPC1SWEEP ; CPU:$FB90 PRG:3B90 8D 01 40 - lda #$7F ; CPU:$FB93 PRG:3B93 A9 7F - sta APUPC2SWEEP ; CPU:$FB95 PRG:3B95 8D 05 40 - bne Sound_FBAF ; CPU:$FB98 PRG:3B98 D0 13 - jsr $F6A8 ; CPU:$FB9A PRG:3B9A 20 A8 F6 - ldx #$04 ; CPU:$FB9D PRG:3B9D A2 04 - ldy #$04 ; CPU:$FB9F PRG:3B9F A0 04 - bne Sound_FBAC ; CPU:$FBA1 PRG:3BA1 D0 07 + jsr InitializeApuChannelState ; CPU:$FB8D PRG:3B8D 20 1A F7 + lda #$83 ; CPU:$FB90 PRG:3B90 A9 83 + sta APUPC1SWEEP ; CPU:$FB92 PRG:3B92 8D 01 40 + lda #$7F ; CPU:$FB95 PRG:3B95 A9 7F + sta APUPC2SWEEP ; CPU:$FB97 PRG:3B97 8D 05 40 + bne Sound_FBAF ; CPU:$FB9A PRG:3B9A D0 13 + jsr $F6A8 ; CPU:$FB9C PRG:3B9C 20 A8 F6 + ldx #$04 ; CPU:$FB9F PRG:3B9F A2 04 + ldy #$04 ; CPU:$FBA1 PRG:3BA1 A0 04 + bne Sound_FBAC ; CPU:$FBA3 PRG:3BA3 D0 07 Sound_FBA5: - jsr $F6A8 ; CPU:$FBA3 PRG:3BA3 20 A8 F6 - ldx #$80 ; CPU:$FBA6 PRG:3BA6 A2 80 - ldy #$80 ; CPU:$FBA8 PRG:3BA8 A0 80 + jsr $F6A8 ; CPU:$FBA5 PRG:3BA5 20 A8 F6 + ldx #$80 ; CPU:$FBA8 PRG:3BA8 A2 80 + ldy #$80 ; CPU:$FBAA PRG:3BAA A0 80 Sound_FBAC: - jsr SilencePulseChannels ; CPU:$FBAA PRG:3BAA 20 12 F7 + jsr SilencePulseChannels ; CPU:$FBAC PRG:3BAC 20 12 F7 Sound_FBAF: - lda #$00 ; CPU:$FBAD PRG:3BAD A9 00 - sta $07F0 ; CPU:$FBAF PRG:3BAF 8D F0 07 - lda $F4 ; CPU:$FBB2 PRG:3BB2 A5 F4 - and #$20 ; CPU:$FBB4 PRG:3BB4 29 20 - beq Sound_FB49 ; CPU:$FBB6 PRG:3BB6 F0 8F - lda #$D5 ; CPU:$FBB8 PRG:3BB8 A9 D5 - sta APUPC1SWEEP ; CPU:$FBBA PRG:3BBA 8D 01 40 - bne Sound_FB49 ; CPU:$FBBD PRG:3BBD D0 88 + lda #$00 ; CPU:$FBAF PRG:3BAF A9 00 + sta $07F0 ; CPU:$FBB1 PRG:3BB1 8D F0 07 + lda $F4 ; CPU:$FBB4 PRG:3BB4 A5 F4 + and #$20 ; CPU:$FBB6 PRG:3BB6 29 20 + beq Sound_FB49 ; CPU:$FBB8 PRG:3BB8 F0 8F + lda #$D5 ; CPU:$FBBA PRG:3BBA A9 D5 + sta APUPC1SWEEP ; CPU:$FBBC PRG:3BBC 8D 01 40 + bne Sound_FB49 ; CPU:$FBBF PRG:3BBF D0 88 Sound_FBC1: - jsr $F6A8 ; CPU:$FBBF PRG:3BBF 20 A8 F6 - ldx #$80 ; CPU:$FBC2 PRG:3BC2 A2 80 - ldy #$BA ; CPU:$FBC4 PRG:3BC4 A0 BA - bne Sound_FB8D ; CPU:$FBC6 PRG:3BC6 D0 C3 + jsr $F6A8 ; CPU:$FBC1 PRG:3BC1 20 A8 F6 + ldx #$80 ; CPU:$FBC4 PRG:3BC4 A2 80 + ldy #$BA ; CPU:$FBC6 PRG:3BC6 A0 BA + bne Sound_FB8D ; CPU:$FBC8 PRG:3BC8 D0 C3 ; Sound sequence pointer/index table and encoded sequence data. SoundSequencePointerTable: - .byte $0B, $14, $1D, $26, $2F, $38, $41, $4A ; CPU:$FBC8 PRG:3BC8 0B 14 1D 26 2F 38 41 4A - .byte $53, $5C, $65, $0C, $02, $FF, $0B, $FF ; CPU:$FBD0 PRG:3BD0 53 5C 65 0C 02 FF 0B FF - .byte $1E, $FF, $31, $FF, $15, $18, $FE, $2A ; CPU:$FBD8 PRG:3BD8 1E FF 31 FF 15 18 FE 2A - .byte $FE, $65, $FE, $86, $FE, $0C, $0D, $FE ; CPU:$FBE0 PRG:3BE0 FE 65 FE 86 FE 0C 0D FE - .byte $00, $00, $13, $FE, $00, $00, $15, $38 ; CPU:$FBE8 PRG:3BE8 00 00 13 FE 00 00 15 38 - .byte $FF, $5A, $FF, $79, $FF, $94, $FF, $00 ; CPU:$FBF0 PRG:3BF0 FF 5A FF 79 FF 94 FF 00 - .byte $00, $00, $D7, $FE, $ED, $FE, $00, $00 ; CPU:$FBF8 PRG:3BF8 00 00 D7 FE ED FE 00 00 - .byte $00, $B3, $FF, $C9, $FF, $DA, $FF, $EF ; CPU:$FC00 PRG:3C00 00 B3 FF C9 FF DA FF EF - .byte $FF, $15, $A5, $FC, $0A, $FD, $98, $FD ; CPU:$FC08 PRG:3C08 FF 15 A5 FC 0A FD 98 FD - .byte $E0, $FD, $15, $B2, $FE, $00, $00, $C5 ; CPU:$FC10 PRG:3C10 E0 FD 15 B2 FE 00 00 C5 - .byte $FE, $00, $00, $15, $00, $00, $92, $FE ; CPU:$FC18 PRG:3C18 FE 00 00 15 00 00 92 FE - .byte $A1, $FE, $00, $00, $0C, $59, $FC, $72 ; CPU:$FC20 PRG:3C20 A1 FE 00 00 0C 59 FC 72 - .byte $FC, $8C, $FC, $00, $00, $00, $00, $00 ; CPU:$FC28 PRG:3C28 FC 8C FC 00 00 00 00 00 - .byte $38, $FC, $49, $FC, $00, $00, $82, $02 ; CPU:$FC30 PRG:3C30 38 FC 49 FC 00 00 82 02 - .byte $8B, $02, $80, $08, $02, $10, $02, $16 ; CPU:$FC38 PRG:3C38 8B 02 80 08 02 10 02 16 - .byte $02, $52, $02, $02, $02, $1A, $00, $82 ; CPU:$FC40 PRG:3C40 02 52 02 02 02 1A 00 82 - .byte $02, $80, $10, $02, $16, $02, $52, $02 ; CPU:$FC48 PRG:3C48 02 80 10 02 16 02 52 02 - .byte $5A, $02, $02, $02, $56, $81, $02, $80 ; CPU:$FC50 PRG:3C50 5A 02 02 02 56 81 02 80 - .byte $12, $02, $0C, $02, $04, $02, $0C, $02 ; CPU:$FC58 PRG:3C58 12 02 0C 02 04 02 0C 02 - .byte $04, $02, $2A, $02, $81, $04, $02, $80 ; CPU:$FC60 PRG:3C60 04 02 2A 02 81 04 02 80 - .byte $04, $02, $81, $04, $88, $02, $02, $00 ; CPU:$FC68 PRG:3C68 04 02 81 04 88 02 02 00 - .byte $88, $02, $02, $80, $04, $02, $2A, $02 ; CPU:$FC70 PRG:3C70 88 02 02 80 04 02 2A 02 - .byte $24, $02, $2A, $02, $24, $02, $1C, $02 ; CPU:$FC78 PRG:3C78 24 02 2A 02 24 02 1C 02 - .byte $81, $22, $02, $80, $22, $02, $81, $24 ; CPU:$FC80 PRG:3C80 81 22 02 80 22 02 81 24 - .byte $88, $02, $88, $02, $80, $56, $02, $4E ; CPU:$FC88 PRG:3C88 88 02 88 02 80 56 02 4E - .byte $02, $12, $02, $4E, $02, $12, $02, $0C ; CPU:$FC90 PRG:3C90 02 12 02 4E 02 12 02 0C - .byte $02, $81, $10, $02, $80, $10, $02, $81 ; CPU:$FC98 PRG:3C98 02 81 10 02 80 10 02 81 - .byte $12, $88, $02, $C3, $81, $02, $02, $1C ; CPU:$FCA0 PRG:3CA0 12 88 02 C3 81 02 02 1C - .byte $02, $02, $02, $1C, $1C, $FF, $C6, $88 ; CPU:$FCA8 PRG:3CA8 02 02 02 1C 1C FF C6 88 - .byte $1C, $FF, $C7, $82, $4C, $4C, $2A, $4C ; CPU:$FCB0 PRG:3CB0 1C FF C7 82 4C 4C 2A 4C - .byte $FF, $C6, $88, $1C, $FF, $C4, $81, $46 ; CPU:$FCB8 PRG:3CB8 FF C6 88 1C FF C4 81 46 - .byte $02, $46, $02, $32, $02, $46, $80, $2E ; CPU:$FCC0 PRG:3CC0 02 46 02 32 02 46 80 2E - .byte $2E, $FF, $C3, $82, $46, $46, $81, $32 ; CPU:$FCC8 PRG:3CC8 2E FF C3 82 46 46 81 32 - .byte $32, $46, $2E, $FF, $80, $0C, $0C, $81 ; CPU:$FCD0 PRG:3CD0 32 46 2E FF 80 0C 0C 81 - .byte $46, $46, $46, $80, $04, $04, $81, $46 ; CPU:$FCD8 PRG:3CD8 46 46 46 80 04 04 81 46 - .byte $46, $02, $C8, $82, $4C, $4C, $2A, $4C ; CPU:$FCE0 PRG:3CE0 46 02 C8 82 4C 4C 2A 4C - .byte $FF, $C2, $81, $46, $80, $32, $32, $82 ; CPU:$FCE8 PRG:3CE8 FF C2 81 46 80 32 32 82 - .byte $46, $04, $81, $46, $2A, $FF, $C2, $81 ; CPU:$FCF0 PRG:3CF0 46 04 81 46 2A FF C2 81 - .byte $0C, $0C, $80, $04, $04, $81, $04, $80 ; CPU:$FCF8 PRG:3CF8 0C 0C 80 04 04 81 04 80 - .byte $2E, $2E, $81, $2E, $82, $24, $FF, $00 ; CPU:$FD00 PRG:3D00 2E 2E 81 2E 82 24 FF 00 - .byte $81, $32, $02, $02, $06, $0C, $32, $02 ; CPU:$FD08 PRG:3D08 81 32 02 02 06 0C 32 02 - .byte $02, $8A, $2E, $8B, $02, $8A, $2E, $8B ; CPU:$FD10 PRG:3D10 02 8A 2E 8B 02 8A 2E 8B - .byte $02, $8A, $2E, $8B, $02, $88, $2E, $32 ; CPU:$FD18 PRG:3D18 02 8A 2E 8B 02 88 2E 32 - .byte $2E, $D0, $8C, $2C, $24, $FF, $D0, $2E ; CPU:$FD20 PRG:3D20 2E D0 8C 2C 24 FF D0 2E - .byte $20, $FF, $C3, $80, $28, $02, $82, $02 ; CPU:$FD28 PRG:3D28 20 FF C3 80 28 02 82 02 - .byte $80, $2C, $02, $32, $02, $24, $02, $82 ; CPU:$FD30 PRG:3D30 80 2C 02 32 02 24 02 82 - .byte $02, $81, $02, $80, $28, $02, $06, $02 ; CPU:$FD38 PRG:3D38 02 81 02 80 28 02 06 02 - .byte $28, $02, $81, $02, $80, $24, $02, $32 ; CPU:$FD40 PRG:3D40 28 02 81 02 80 24 02 32 - .byte $02, $24, $02, $FF, $80, $28, $02, $82 ; CPU:$FD48 PRG:3D48 02 24 02 FF 80 28 02 82 - .byte $02, $80, $2C, $02, $32, $02, $24, $02 ; CPU:$FD50 PRG:3D50 02 80 2C 02 32 02 24 02 - .byte $82, $02, $89, $0C, $0A, $08, $06, $32 ; CPU:$FD58 PRG:3D58 82 02 89 0C 0A 08 06 32 - .byte $30, $2E, $2C, $2A, $28, $26, $24, $02 ; CPU:$FD60 PRG:3D60 30 2E 2C 2A 28 26 24 02 - .byte $02, $02, $86, $02, $C7, $84, $02, $FF ; CPU:$FD68 PRG:3D68 02 02 86 02 C7 84 02 FF - .byte $C4, $80, $28, $02, $82, $02, $80, $2C ; CPU:$FD70 PRG:3D70 C4 80 28 02 82 02 80 2C - .byte $02, $32, $02, $24, $02, $82, $02, $81 ; CPU:$FD78 PRG:3D78 02 32 02 24 02 82 02 81 - .byte $02, $80, $28, $02, $06, $02, $28, $02 ; CPU:$FD80 PRG:3D80 02 80 28 02 06 02 28 02 - .byte $81, $02, $80, $24, $02, $32, $02, $24 ; CPU:$FD88 PRG:3D88 81 02 80 24 02 32 02 24 - .byte $02, $FF, $C8, $84, $02, $FF, $81, $14 ; CPU:$FD90 PRG:3D90 02 FF C8 84 02 FF 81 14 - .byte $02, $02, $14, $1A, $14, $02, $02, $88 ; CPU:$FD98 PRG:3D98 02 02 14 1A 14 02 02 88 - .byte $10, $10, $10, $10, $14, $10, $85, $3C ; CPU:$FDA0 PRG:3DA0 10 10 10 10 14 10 85 3C - .byte $81, $44, $85, $4A, $81, $44, $88, $28 ; CPU:$FDA8 PRG:3DA8 81 44 85 4A 81 44 88 28 - .byte $24, $20, $46, $42, $40, $C6, $81, $3C ; CPU:$FDB0 PRG:3DB0 24 20 46 42 40 C6 81 3C - .byte $02, $02, $44, $02, $02, $02, $4A, $02 ; CPU:$FDB8 PRG:3DB8 02 02 44 02 02 02 4A 02 - .byte $46, $36, $36, $38, $38, $02, $3A, $02 ; CPU:$FDC0 PRG:3DC0 46 36 36 38 38 02 3A 02 - .byte $80, $3C, $3C, $81, $02, $24, $02, $02 ; CPU:$FDC8 PRG:3DC8 80 3C 3C 81 02 24 02 02 - .byte $2C, $24, $88, $24, $1E, $46, $36, $38 ; CPU:$FDD0 PRG:3DD0 2C 24 88 24 1E 46 36 38 - .byte $3A, $FF, $C4, $84, $02, $FF, $D8, $81 ; CPU:$FDD8 PRG:3DD8 3A FF C4 84 02 FF D8 81 - .byte $06, $FF, $C6, $88, $06, $FF, $C7, $81 ; CPU:$FDE0 PRG:3DE0 06 FF C6 88 06 FF C7 81 - .byte $06, $06, $80, $06, $06, $81, $06, $06 ; CPU:$FDE8 PRG:3DE8 06 06 80 06 06 81 06 06 - .byte $80, $06, $06, $81, $06, $06, $FF, $C6 ; CPU:$FDF0 PRG:3DF0 80 06 06 81 06 06 FF C6 - .byte $88, $06, $FF, $E0, $81, $06, $06, $FF ; CPU:$FDF8 PRG:3DF8 88 06 FF E0 81 06 06 FF - .byte $82, $0F, $81, $06, $06, $EA, $06, $06 ; CPU:$FE00 PRG:3E00 82 0F 81 06 06 EA 06 06 - .byte $06, $06, $FF, $C5, $80, $0E, $58, $FF ; CPU:$FE08 PRG:3E08 06 06 FF C5 80 0E 58 FF - .byte $00, $C5, $80, $0E, $58, $FF, $82, $1C ; CPU:$FE10 PRG:3E10 00 C5 80 0E 58 FF 82 1C - .byte $1C, $C3, $82, $1C, $1C, $81, $1C, $1C ; CPU:$FE18 PRG:3E18 1C C3 82 1C 1C 81 1C 1C - .byte $1C, $02, $FF, $C7, $88, $1C, $FF, $00 ; CPU:$FE20 PRG:3E20 1C 02 FF C7 88 1C FF 00 - .byte $83, $02, $80, $0E, $02, $0E, $02, $0C ; CPU:$FE28 PRG:3E28 83 02 80 0E 02 0E 02 0C - .byte $02, $0E, $02, $4E, $02, $02, $02, $0E ; CPU:$FE30 PRG:3E30 02 0E 02 4E 02 02 02 0E - .byte $02, $0C, $02, $02, $02, $0E, $02, $0C ; CPU:$FE38 PRG:3E38 02 0C 02 02 02 0E 02 0C - .byte $02, $0E, $02, $4E, $02, $02, $02, $0E ; CPU:$FE40 PRG:3E40 02 0E 02 4E 02 02 02 0E - .byte $02, $0C, $02, $0E, $02, $0E, $02, $0C ; CPU:$FE48 PRG:3E48 02 0C 02 0E 02 0E 02 0C - .byte $02, $0E, $02, $4E, $02, $02, $02, $0E ; CPU:$FE50 PRG:3E50 02 0E 02 4E 02 02 02 0E - .byte $02, $0C, $02, $88, $4E, $18, $16, $12 ; CPU:$FE58 PRG:3E58 02 0C 02 88 4E 18 16 12 - .byte $0E, $0C, $0E, $83, $02, $81, $3E, $3E ; CPU:$FE60 PRG:3E60 0E 0C 0E 83 02 81 3E 3E - .byte $82, $46, $1C, $46, $81, $02, $38, $3E ; CPU:$FE68 PRG:3E68 82 46 1C 46 81 02 38 3E - .byte $02, $82, $46, $1C, $82, $48, $48, $81 ; CPU:$FE70 PRG:3E70 02 82 46 1C 82 48 48 81 - .byte $3E, $3E, $82, $38, $88, $24, $20, $1C ; CPU:$FE78 PRG:3E78 3E 3E 82 38 88 24 20 1C - .byte $48, $46, $42, $3E, $82, $09, $09, $C6 ; CPU:$FE80 PRG:3E80 48 46 42 3E 82 09 09 C6 - .byte $82, $03, $0C, $FF, $C6, $88, $06, $FF ; CPU:$FE88 PRG:3E88 82 03 0C FF C6 88 06 FF - .byte $ED, $89, $2A, $02, $04, $0C, $02, $04 ; CPU:$FE90 PRG:3E90 ED 89 2A 02 04 0C 02 04 - .byte $08, $02, $30, $26, $02, $30, $FF, $80 ; CPU:$FE98 PRG:3E98 08 02 30 26 02 30 FF 80 - .byte $02, $ED, $89, $0C, $02, $12, $4E, $02 ; CPU:$FEA0 PRG:3EA0 02 ED 89 0C 02 12 4E 02 - .byte $12, $18, $02, $0E, $08, $02, $0E, $FF ; CPU:$FEA8 PRG:3EA8 12 18 02 0E 08 02 0E FF - .byte $80, $42, $02, $48, $02, $1E, $02, $24 ; CPU:$FEB0 PRG:3EB0 80 42 02 48 02 1E 02 24 - .byte $02, $02, $02, $2A, $02, $C6, $8C, $30 ; CPU:$FEB8 PRG:3EB8 02 02 02 2A 02 C6 8C 30 - .byte $2A, $FF, $00, $80, $24, $02, $2A, $02 ; CPU:$FEC0 PRG:3EC0 2A FF 00 80 24 02 2A 02 - .byte $30, $02, $06, $02, $02, $02, $0C, $02 ; CPU:$FEC8 PRG:3EC8 30 02 06 02 02 02 0C 02 - .byte $C6, $8C, $12, $18, $FF, $80, $56, $54 ; CPU:$FED0 PRG:3ED0 C6 8C 12 18 FF 80 56 54 - .byte $52, $50, $81, $02, $80, $5E, $5A, $54 ; CPU:$FED8 PRG:3ED8 52 50 81 02 80 5E 5A 54 - .byte $50, $18, $14, $10, $0A, $06, $30, $2C ; CPU:$FEE0 PRG:3EE0 50 18 14 10 0A 06 30 2C - .byte $28, $02, $00, $80, $1A, $18, $16, $14 ; CPU:$FEE8 PRG:3EE8 28 02 00 80 1A 18 16 14 - .byte $81, $02, $80, $02, $5E, $5A, $54, $50 ; CPU:$FEF0 PRG:3EF0 81 02 80 02 5E 5A 54 50 - .byte $18, $14, $10, $0A, $06, $30, $2C, $28 ; CPU:$FEF8 PRG:3EF8 18 14 10 0A 06 30 2C 28 - .byte $82, $1C, $02, $1C, $02, $02, $1C, $1C ; CPU:$FF00 PRG:3F00 82 1C 02 1C 02 02 1C 1C - .byte $00, $81, $10, $0A, $32, $28, $80, $32 ; CPU:$FF08 PRG:3F08 00 81 10 0A 32 28 80 32 - .byte $02, $32, $02, $82, $32, $81, $06, $02 ; CPU:$FF10 PRG:3F10 02 32 02 82 32 81 06 02 - .byte $06, $02, $82, $32, $81, $54, $1A, $10 ; CPU:$FF18 PRG:3F18 06 02 82 32 81 54 1A 10 - .byte $0A, $80, $10, $02, $10, $02, $82, $10 ; CPU:$FF20 PRG:3F20 0A 80 10 02 10 02 82 10 - .byte $81, $16, $02, $16, $02, $82, $0A, $83 ; CPU:$FF28 PRG:3F28 81 16 02 16 02 82 0A 83 - .byte $03, $0C, $82, $03, $0C, $0C, $C2, $88 ; CPU:$FF30 PRG:3F30 03 0C 82 03 0C 0C C2 88 - .byte $1C, $1C, $1C, $1C, $1C, $1C, $83, $1C ; CPU:$FF38 PRG:3F38 1C 1C 1C 1C 1C 1C 83 1C - .byte $80, $04, $04, $2A, $02, $82, $1C, $FF ; CPU:$FF40 PRG:3F40 80 04 04 2A 02 82 1C FF - .byte $81, $4C, $02, $4C, $02, $2A, $02, $4C ; CPU:$FF48 PRG:3F48 81 4C 02 4C 02 2A 02 4C - .byte $1C, $81, $4C, $02, $4C, $02, $4C, $00 ; CPU:$FF50 PRG:3F50 1C 81 4C 02 4C 02 4C 00 - .byte $88, $2E, $2E, $2E, $30, $04, $30, $C4 ; CPU:$FF58 PRG:3F58 88 2E 2E 2E 30 04 30 C4 - .byte $80, $2E, $04, $FF, $83, $02, $88, $2E ; CPU:$FF60 PRG:3F60 80 2E 04 FF 83 02 88 2E - .byte $2E, $2E, $30, $04, $30, $C4, $80, $2E ; CPU:$FF68 PRG:3F68 2E 2E 30 04 30 C4 80 2E - .byte $04, $FF, $83, $02, $84, $02, $02, $C2 ; CPU:$FF70 PRG:3F70 04 FF 83 02 84 02 02 C2 - .byte $88, $3E, $3E, $3E, $42, $46, $42, $84 ; CPU:$FF78 PRG:3F78 88 3E 3E 3E 42 46 42 84 - .byte $3E, $FF, $85, $3E, $81, $3E, $88, $1C ; CPU:$FF80 PRG:3F80 3E FF 85 3E 81 3E 88 1C - .byte $46, $1C, $81, $02, $3E, $3E, $3E, $82 ; CPU:$FF88 PRG:3F88 46 1C 81 02 3E 3E 3E 82 - .byte $34, $02, $C2, $88, $06, $06, $06, $06 ; CPU:$FF90 PRG:3F90 34 02 C2 88 06 06 06 06 - .byte $06, $06, $82, $06, $06, $06, $06, $FF ; CPU:$FF98 PRG:3F98 06 06 82 06 06 06 06 FF - .byte $C2, $81, $06, $06, $80, $06, $06, $81 ; CPU:$FFA0 PRG:3FA0 C2 81 06 06 80 06 06 81 - .byte $06, $06, $06, $06, $80, $06, $06, $FF ; CPU:$FFA8 PRG:3FA8 06 06 06 06 80 06 06 FF - .byte $09, $80, $10, $02, $10, $02, $10, $02 ; CPU:$FFB0 PRG:3FB0 09 80 10 02 10 02 10 02 - .byte $0C, $0C, $0C, $02, $0C, $02, $14, $14 ; CPU:$FFB8 PRG:3FB8 0C 0C 0C 02 0C 02 14 14 - .byte $14, $02, $14, $02, $85, $10, $00, $80 ; CPU:$FFC0 PRG:3FC0 14 02 14 02 85 10 00 80 - .byte $32, $02, $32, $02, $32, $02, $C2, $32 ; CPU:$FFC8 PRG:3FC8 32 02 32 02 32 02 C2 32 - .byte $32, $32, $02, $32, $02, $FF, $85, $32 ; CPU:$FFD0 PRG:3FD0 32 32 02 32 02 FF 85 32 - .byte $80, $54, $02, $54, $02, $54, $02, $50 ; CPU:$FFD8 PRG:3FD8 80 54 02 54 02 54 02 50 - .byte $50, $50, $02, $50, $02, $56, $56, $56 ; CPU:$FFE0 PRG:3FE0 50 50 02 50 02 56 56 56 - .byte $02, $56, $02, $85, $54, $C4, $85, $0C ; CPU:$FFE8 PRG:3FE8 02 56 02 85 54 C4 85 0C - .byte $FF, $FF, $FF, $FF, $FF ; CPU:$FFF0 PRG:3FF0 FF FF FF FF FF + .byte $0B, $14, $1D, $26, $2F, $38, $41, $4A ; CPU:$FBCA PRG:3BCA 0B 14 1D 26 2F 38 41 4A + .byte $53, $5C, $65, $0C, $02, $FF, $0B, $FF ; CPU:$FBD2 PRG:3BD2 53 5C 65 0C 02 FF 0B FF + .byte $1E, $FF, $31, $FF, $15, $18, $FE, $2A ; CPU:$FBDA PRG:3BDA 1E FF 31 FF 15 18 FE 2A + .byte $FE, $65, $FE, $86, $FE, $0C, $0D, $FE ; CPU:$FBE2 PRG:3BE2 FE 65 FE 86 FE 0C 0D FE + .byte $00, $00, $13, $FE, $00, $00, $15, $38 ; CPU:$FBEA PRG:3BEA 00 00 13 FE 00 00 15 38 + .byte $FF, $5A, $FF, $79, $FF, $94, $FF, $00 ; CPU:$FBF2 PRG:3BF2 FF 5A FF 79 FF 94 FF 00 + .byte $00, $00, $D7, $FE, $ED, $FE, $00, $00 ; CPU:$FBFA PRG:3BFA 00 00 D7 FE ED FE 00 00 + .byte $00, $B3, $FF, $C9, $FF, $DA, $FF, $EF ; CPU:$FC02 PRG:3C02 00 B3 FF C9 FF DA FF EF + .byte $FF, $15, $A5, $FC, $0A, $FD, $98, $FD ; CPU:$FC0A PRG:3C0A FF 15 A5 FC 0A FD 98 FD + .byte $E0, $FD, $15, $B2, $FE, $00, $00, $C5 ; CPU:$FC12 PRG:3C12 E0 FD 15 B2 FE 00 00 C5 + .byte $FE, $00, $00, $15, $00, $00, $92, $FE ; CPU:$FC1A PRG:3C1A FE 00 00 15 00 00 92 FE + .byte $A1, $FE, $00, $00, $0C, $59, $FC, $72 ; CPU:$FC22 PRG:3C22 A1 FE 00 00 0C 59 FC 72 + .byte $FC, $8C, $FC, $00, $00, $00, $00, $00 ; CPU:$FC2A PRG:3C2A FC 8C FC 00 00 00 00 00 + .byte $38, $FC, $49, $FC, $00, $00, $82, $02 ; CPU:$FC32 PRG:3C32 38 FC 49 FC 00 00 82 02 + .byte $8B, $02, $80, $08, $02, $10, $02, $16 ; CPU:$FC3A PRG:3C3A 8B 02 80 08 02 10 02 16 + .byte $02, $52, $02, $02, $02, $1A, $00, $82 ; CPU:$FC42 PRG:3C42 02 52 02 02 02 1A 00 82 + .byte $02, $80, $10, $02, $16, $02, $52, $02 ; CPU:$FC4A PRG:3C4A 02 80 10 02 16 02 52 02 + .byte $5A, $02, $02, $02, $56, $81, $02, $80 ; CPU:$FC52 PRG:3C52 5A 02 02 02 56 81 02 80 + .byte $12, $02, $0C, $02, $04, $02, $0C, $02 ; CPU:$FC5A PRG:3C5A 12 02 0C 02 04 02 0C 02 + .byte $04, $02, $2A, $02, $81, $04, $02, $80 ; CPU:$FC62 PRG:3C62 04 02 2A 02 81 04 02 80 + .byte $04, $02, $81, $04, $88, $02, $02, $00 ; CPU:$FC6A PRG:3C6A 04 02 81 04 88 02 02 00 + .byte $88, $02, $02, $80, $04, $02, $2A, $02 ; CPU:$FC72 PRG:3C72 88 02 02 80 04 02 2A 02 + .byte $24, $02, $2A, $02, $24, $02, $1C, $02 ; CPU:$FC7A PRG:3C7A 24 02 2A 02 24 02 1C 02 + .byte $81, $22, $02, $80, $22, $02, $81, $24 ; CPU:$FC82 PRG:3C82 81 22 02 80 22 02 81 24 + .byte $88, $02, $88, $02, $80, $56, $02, $4E ; CPU:$FC8A PRG:3C8A 88 02 88 02 80 56 02 4E + .byte $02, $12, $02, $4E, $02, $12, $02, $0C ; CPU:$FC92 PRG:3C92 02 12 02 4E 02 12 02 0C + .byte $02, $81, $10, $02, $80, $10, $02, $81 ; CPU:$FC9A PRG:3C9A 02 81 10 02 80 10 02 81 + .byte $12, $88, $02, $C3, $81, $02, $02, $1C ; CPU:$FCA2 PRG:3CA2 12 88 02 C3 81 02 02 1C + .byte $02, $02, $02, $1C, $1C, $FF, $C6, $88 ; CPU:$FCAA PRG:3CAA 02 02 02 1C 1C FF C6 88 + .byte $1C, $FF, $C7, $82, $4C, $4C, $2A, $4C ; CPU:$FCB2 PRG:3CB2 1C FF C7 82 4C 4C 2A 4C + .byte $FF, $C6, $88, $1C, $FF, $C4, $81, $46 ; CPU:$FCBA PRG:3CBA FF C6 88 1C FF C4 81 46 + .byte $02, $46, $02, $32, $02, $46, $80, $2E ; CPU:$FCC2 PRG:3CC2 02 46 02 32 02 46 80 2E + .byte $2E, $FF, $C3, $82, $46, $46, $81, $32 ; CPU:$FCCA PRG:3CCA 2E FF C3 82 46 46 81 32 + .byte $32, $46, $2E, $FF, $80, $0C, $0C, $81 ; CPU:$FCD2 PRG:3CD2 32 46 2E FF 80 0C 0C 81 + .byte $46, $46, $46, $80, $04, $04, $81, $46 ; CPU:$FCDA PRG:3CDA 46 46 46 80 04 04 81 46 + .byte $46, $02, $C8, $82, $4C, $4C, $2A, $4C ; CPU:$FCE2 PRG:3CE2 46 02 C8 82 4C 4C 2A 4C + .byte $FF, $C2, $81, $46, $80, $32, $32, $82 ; CPU:$FCEA PRG:3CEA FF C2 81 46 80 32 32 82 + .byte $46, $04, $81, $46, $2A, $FF, $C2, $81 ; CPU:$FCF2 PRG:3CF2 46 04 81 46 2A FF C2 81 + .byte $0C, $0C, $80, $04, $04, $81, $04, $80 ; CPU:$FCFA PRG:3CFA 0C 0C 80 04 04 81 04 80 + .byte $2E, $2E, $81, $2E, $82, $24, $FF, $00 ; CPU:$FD02 PRG:3D02 2E 2E 81 2E 82 24 FF 00 + .byte $81, $32, $02, $02, $06, $0C, $32, $02 ; CPU:$FD0A PRG:3D0A 81 32 02 02 06 0C 32 02 + .byte $02, $8A, $2E, $8B, $02, $8A, $2E, $8B ; CPU:$FD12 PRG:3D12 02 8A 2E 8B 02 8A 2E 8B + .byte $02, $8A, $2E, $8B, $02, $88, $2E, $32 ; CPU:$FD1A PRG:3D1A 02 8A 2E 8B 02 88 2E 32 + .byte $2E, $D0, $8C, $2C, $24, $FF, $D0, $2E ; CPU:$FD22 PRG:3D22 2E D0 8C 2C 24 FF D0 2E + .byte $20, $FF, $C3, $80, $28, $02, $82, $02 ; CPU:$FD2A PRG:3D2A 20 FF C3 80 28 02 82 02 + .byte $80, $2C, $02, $32, $02, $24, $02, $82 ; CPU:$FD32 PRG:3D32 80 2C 02 32 02 24 02 82 + .byte $02, $81, $02, $80, $28, $02, $06, $02 ; CPU:$FD3A PRG:3D3A 02 81 02 80 28 02 06 02 + .byte $28, $02, $81, $02, $80, $24, $02, $32 ; CPU:$FD42 PRG:3D42 28 02 81 02 80 24 02 32 + .byte $02, $24, $02, $FF, $80, $28, $02, $82 ; CPU:$FD4A PRG:3D4A 02 24 02 FF 80 28 02 82 + .byte $02, $80, $2C, $02, $32, $02, $24, $02 ; CPU:$FD52 PRG:3D52 02 80 2C 02 32 02 24 02 + .byte $82, $02, $89, $0C, $0A, $08, $06, $32 ; CPU:$FD5A PRG:3D5A 82 02 89 0C 0A 08 06 32 + .byte $30, $2E, $2C, $2A, $28, $26, $24, $02 ; CPU:$FD62 PRG:3D62 30 2E 2C 2A 28 26 24 02 + .byte $02, $02, $86, $02, $C7, $84, $02, $FF ; CPU:$FD6A PRG:3D6A 02 02 86 02 C7 84 02 FF + .byte $C4, $80, $28, $02, $82, $02, $80, $2C ; CPU:$FD72 PRG:3D72 C4 80 28 02 82 02 80 2C + .byte $02, $32, $02, $24, $02, $82, $02, $81 ; CPU:$FD7A PRG:3D7A 02 32 02 24 02 82 02 81 + .byte $02, $80, $28, $02, $06, $02, $28, $02 ; CPU:$FD82 PRG:3D82 02 80 28 02 06 02 28 02 + .byte $81, $02, $80, $24, $02, $32, $02, $24 ; CPU:$FD8A PRG:3D8A 81 02 80 24 02 32 02 24 + .byte $02, $FF, $C8, $84, $02, $FF, $81, $14 ; CPU:$FD92 PRG:3D92 02 FF C8 84 02 FF 81 14 + .byte $02, $02, $14, $1A, $14, $02, $02, $88 ; CPU:$FD9A PRG:3D9A 02 02 14 1A 14 02 02 88 + .byte $10, $10, $10, $10, $14, $10, $85, $3C ; CPU:$FDA2 PRG:3DA2 10 10 10 10 14 10 85 3C + .byte $81, $44, $85, $4A, $81, $44, $88, $28 ; CPU:$FDAA PRG:3DAA 81 44 85 4A 81 44 88 28 + .byte $24, $20, $46, $42, $40, $C6, $81, $3C ; CPU:$FDB2 PRG:3DB2 24 20 46 42 40 C6 81 3C + .byte $02, $02, $44, $02, $02, $02, $4A, $02 ; CPU:$FDBA PRG:3DBA 02 02 44 02 02 02 4A 02 + .byte $46, $36, $36, $38, $38, $02, $3A, $02 ; CPU:$FDC2 PRG:3DC2 46 36 36 38 38 02 3A 02 + .byte $80, $3C, $3C, $81, $02, $24, $02, $02 ; CPU:$FDCA PRG:3DCA 80 3C 3C 81 02 24 02 02 + .byte $2C, $24, $88, $24, $1E, $46, $36, $38 ; CPU:$FDD2 PRG:3DD2 2C 24 88 24 1E 46 36 38 + .byte $3A, $FF, $C4, $84, $02, $FF, $D8, $81 ; CPU:$FDDA PRG:3DDA 3A FF C4 84 02 FF D8 81 + .byte $06, $FF, $C6, $88, $06, $FF, $C7, $81 ; CPU:$FDE2 PRG:3DE2 06 FF C6 88 06 FF C7 81 + .byte $06, $06, $80, $06, $06, $81, $06, $06 ; CPU:$FDEA PRG:3DEA 06 06 80 06 06 81 06 06 + .byte $80, $06, $06, $81, $06, $06, $FF, $C6 ; CPU:$FDF2 PRG:3DF2 80 06 06 81 06 06 FF C6 + .byte $88, $06, $FF, $E0, $81, $06, $06, $FF ; CPU:$FDFA PRG:3DFA 88 06 FF E0 81 06 06 FF + .byte $82, $0F, $81, $06, $06, $EA, $06, $06 ; CPU:$FE02 PRG:3E02 82 0F 81 06 06 EA 06 06 + .byte $06, $06, $FF, $C5, $80, $0E, $58, $FF ; CPU:$FE0A PRG:3E0A 06 06 FF C5 80 0E 58 FF + .byte $00, $C5, $80, $0E, $58, $FF, $82, $1C ; CPU:$FE12 PRG:3E12 00 C5 80 0E 58 FF 82 1C + .byte $1C, $C3, $82, $1C, $1C, $81, $1C, $1C ; CPU:$FE1A PRG:3E1A 1C C3 82 1C 1C 81 1C 1C + .byte $1C, $02, $FF, $C7, $88, $1C, $FF, $00 ; CPU:$FE22 PRG:3E22 1C 02 FF C7 88 1C FF 00 + .byte $83, $02, $80, $0E, $02, $0E, $02, $0C ; CPU:$FE2A PRG:3E2A 83 02 80 0E 02 0E 02 0C + .byte $02, $0E, $02, $4E, $02, $02, $02, $0E ; CPU:$FE32 PRG:3E32 02 0E 02 4E 02 02 02 0E + .byte $02, $0C, $02, $02, $02, $0E, $02, $0C ; CPU:$FE3A PRG:3E3A 02 0C 02 02 02 0E 02 0C + .byte $02, $0E, $02, $4E, $02, $02, $02, $0E ; CPU:$FE42 PRG:3E42 02 0E 02 4E 02 02 02 0E + .byte $02, $0C, $02, $0E, $02, $0E, $02, $0C ; CPU:$FE4A PRG:3E4A 02 0C 02 0E 02 0E 02 0C + .byte $02, $0E, $02, $4E, $02, $02, $02, $0E ; CPU:$FE52 PRG:3E52 02 0E 02 4E 02 02 02 0E + .byte $02, $0C, $02, $88, $4E, $18, $16, $12 ; CPU:$FE5A PRG:3E5A 02 0C 02 88 4E 18 16 12 + .byte $0E, $0C, $0E, $83, $02, $81, $3E, $3E ; CPU:$FE62 PRG:3E62 0E 0C 0E 83 02 81 3E 3E + .byte $82, $46, $1C, $46, $81, $02, $38, $3E ; CPU:$FE6A PRG:3E6A 82 46 1C 46 81 02 38 3E + .byte $02, $82, $46, $1C, $82, $48, $48, $81 ; CPU:$FE72 PRG:3E72 02 82 46 1C 82 48 48 81 + .byte $3E, $3E, $82, $38, $88, $24, $20, $1C ; CPU:$FE7A PRG:3E7A 3E 3E 82 38 88 24 20 1C + .byte $48, $46, $42, $3E, $82, $09, $09, $C6 ; CPU:$FE82 PRG:3E82 48 46 42 3E 82 09 09 C6 + .byte $82, $03, $0C, $FF, $C6, $88, $06, $FF ; CPU:$FE8A PRG:3E8A 82 03 0C FF C6 88 06 FF + .byte $ED, $89, $2A, $02, $04, $0C, $02, $04 ; CPU:$FE92 PRG:3E92 ED 89 2A 02 04 0C 02 04 + .byte $08, $02, $30, $26, $02, $30, $FF, $80 ; CPU:$FE9A PRG:3E9A 08 02 30 26 02 30 FF 80 + .byte $02, $ED, $89, $0C, $02, $12, $4E, $02 ; CPU:$FEA2 PRG:3EA2 02 ED 89 0C 02 12 4E 02 + .byte $12, $18, $02, $0E, $08, $02, $0E, $FF ; CPU:$FEAA PRG:3EAA 12 18 02 0E 08 02 0E FF + .byte $80, $42, $02, $48, $02, $1E, $02, $24 ; CPU:$FEB2 PRG:3EB2 80 42 02 48 02 1E 02 24 + .byte $02, $02, $02, $2A, $02, $C6, $8C, $30 ; CPU:$FEBA PRG:3EBA 02 02 02 2A 02 C6 8C 30 + .byte $2A, $FF, $00, $80, $24, $02, $2A, $02 ; CPU:$FEC2 PRG:3EC2 2A FF 00 80 24 02 2A 02 + .byte $30, $02, $06, $02, $02, $02, $0C, $02 ; CPU:$FECA PRG:3ECA 30 02 06 02 02 02 0C 02 + .byte $C6, $8C, $12, $18, $FF, $80, $56, $54 ; CPU:$FED2 PRG:3ED2 C6 8C 12 18 FF 80 56 54 + .byte $52, $50, $81, $02, $80, $5E, $5A, $54 ; CPU:$FEDA PRG:3EDA 52 50 81 02 80 5E 5A 54 + .byte $50, $18, $14, $10, $0A, $06, $30, $2C ; CPU:$FEE2 PRG:3EE2 50 18 14 10 0A 06 30 2C + .byte $28, $02, $00, $80, $1A, $18, $16, $14 ; CPU:$FEEA PRG:3EEA 28 02 00 80 1A 18 16 14 + .byte $81, $02, $80, $02, $5E, $5A, $54, $50 ; CPU:$FEF2 PRG:3EF2 81 02 80 02 5E 5A 54 50 + .byte $18, $14, $10, $0A, $06, $30, $2C, $28 ; CPU:$FEFA PRG:3EFA 18 14 10 0A 06 30 2C 28 + .byte $82, $1C, $02, $1C, $02, $02, $1C, $1C ; CPU:$FF02 PRG:3F02 82 1C 02 1C 02 02 1C 1C + .byte $00, $81, $10, $0A, $32, $28, $80, $32 ; CPU:$FF0A PRG:3F0A 00 81 10 0A 32 28 80 32 + .byte $02, $32, $02, $82, $32, $81, $06, $02 ; CPU:$FF12 PRG:3F12 02 32 02 82 32 81 06 02 + .byte $06, $02, $82, $32, $81, $54, $1A, $10 ; CPU:$FF1A PRG:3F1A 06 02 82 32 81 54 1A 10 + .byte $0A, $80, $10, $02, $10, $02, $82, $10 ; CPU:$FF22 PRG:3F22 0A 80 10 02 10 02 82 10 + .byte $81, $16, $02, $16, $02, $82, $0A, $83 ; CPU:$FF2A PRG:3F2A 81 16 02 16 02 82 0A 83 + .byte $03, $0C, $82, $03, $0C, $0C, $C2, $88 ; CPU:$FF32 PRG:3F32 03 0C 82 03 0C 0C C2 88 + .byte $1C, $1C, $1C, $1C, $1C, $1C, $83, $1C ; CPU:$FF3A PRG:3F3A 1C 1C 1C 1C 1C 1C 83 1C + .byte $80, $04, $04, $2A, $02, $82, $1C, $FF ; CPU:$FF42 PRG:3F42 80 04 04 2A 02 82 1C FF + .byte $81, $4C, $02, $4C, $02, $2A, $02, $4C ; CPU:$FF4A PRG:3F4A 81 4C 02 4C 02 2A 02 4C + .byte $1C, $81, $4C, $02, $4C, $02, $4C, $00 ; CPU:$FF52 PRG:3F52 1C 81 4C 02 4C 02 4C 00 + .byte $88, $2E, $2E, $2E, $30, $04, $30, $C4 ; CPU:$FF5A PRG:3F5A 88 2E 2E 2E 30 04 30 C4 + .byte $80, $2E, $04, $FF, $83, $02, $88, $2E ; CPU:$FF62 PRG:3F62 80 2E 04 FF 83 02 88 2E + .byte $2E, $2E, $30, $04, $30, $C4, $80, $2E ; CPU:$FF6A PRG:3F6A 2E 2E 30 04 30 C4 80 2E + .byte $04, $FF, $83, $02, $84, $02, $02, $C2 ; CPU:$FF72 PRG:3F72 04 FF 83 02 84 02 02 C2 + .byte $88, $3E, $3E, $3E, $42, $46, $42, $84 ; CPU:$FF7A PRG:3F7A 88 3E 3E 3E 42 46 42 84 + .byte $3E, $FF, $85, $3E, $81, $3E, $88, $1C ; CPU:$FF82 PRG:3F82 3E FF 85 3E 81 3E 88 1C + .byte $46, $1C, $81, $02, $3E, $3E, $3E, $82 ; CPU:$FF8A PRG:3F8A 46 1C 81 02 3E 3E 3E 82 + .byte $34, $02, $C2, $88, $06, $06, $06, $06 ; CPU:$FF92 PRG:3F92 34 02 C2 88 06 06 06 06 + .byte $06, $06, $82, $06, $06, $06, $06, $FF ; CPU:$FF9A PRG:3F9A 06 06 82 06 06 06 06 FF + .byte $C2, $81, $06, $06, $80, $06, $06, $81 ; CPU:$FFA2 PRG:3FA2 C2 81 06 06 80 06 06 81 + .byte $06, $06, $06, $06, $80, $06, $06, $FF ; CPU:$FFAA PRG:3FAA 06 06 06 06 80 06 06 FF + .byte $09, $80, $10, $02, $10, $02, $10, $02 ; CPU:$FFB2 PRG:3FB2 09 80 10 02 10 02 10 02 + .byte $0C, $0C, $0C, $02, $0C, $02, $14, $14 ; CPU:$FFBA PRG:3FBA 0C 0C 0C 02 0C 02 14 14 + .byte $14, $02, $14, $02, $85, $10, $00, $80 ; CPU:$FFC2 PRG:3FC2 14 02 14 02 85 10 00 80 + .byte $32, $02, $32, $02, $32, $02, $C2, $32 ; CPU:$FFCA PRG:3FCA 32 02 32 02 32 02 C2 32 + .byte $32, $32, $02, $32, $02, $FF, $85, $32 ; CPU:$FFD2 PRG:3FD2 32 32 02 32 02 FF 85 32 + .byte $80, $54, $02, $54, $02, $54, $02, $50 ; CPU:$FFDA PRG:3FDA 80 54 02 54 02 54 02 50 + .byte $50, $50, $02, $50, $02, $56, $56, $56 ; CPU:$FFE2 PRG:3FE2 50 50 02 50 02 56 56 56 + .byte $02, $56, $02, $85, $54, $C4, $85, $0C ; CPU:$FFEA PRG:3FEA 02 56 02 85 54 C4 85 0C + .byte $FF, $FF, $FF, $FF, $FF ; CPU:$FFF2 PRG:3FF2 FF FF FF FF FF ; UpdateAudioFrame ; Purpose: sound-driver routine identified from call flow and register/state access. ; Inputs: sound request, channel, and stream state in zero page/global RAM as used locally. ; Returns: corresponding APU or sequencer state updated. UpdateAudioFrame: - jmp Sound_F758 ; CPU:$FFF5 PRG:3FF5 4C 58 F7 + jmp Sound_F758 ; CPU:$FFF7 PRG:3FF7 4C 58 F7 ; NES interrupt vectors InterruptVectors: - .word $C094, $C000, $C0F7 ; CPU:$FFF8 PRG:3FF8 94 C0 00 C0 F7 C0 + .word $C094, $C000, $C0F7 ; CPU:$FFFA PRG:3FFA 94 C0 00 C0 F7 C0 diff --git a/_wip/NROM/Golf (JU)/COMPRESSED_PARSER_AUDIT.md b/NROM/Golf (JU)/COMPRESSED_PARSER_AUDIT.md similarity index 100% rename from _wip/NROM/Golf (JU)/COMPRESSED_PARSER_AUDIT.md rename to NROM/Golf (JU)/COMPRESSED_PARSER_AUDIT.md diff --git a/_wip/NROM/Golf (JU)/Golf (JU).nes b/NROM/Golf (JU)/Golf (JU).nes similarity index 100% rename from _wip/NROM/Golf (JU)/Golf (JU).nes rename to NROM/Golf (JU)/Golf (JU).nes diff --git a/_wip/NROM/Golf (JU)/Makefile b/NROM/Golf (JU)/Makefile similarity index 100% rename from _wip/NROM/Golf (JU)/Makefile rename to NROM/Golf (JU)/Makefile diff --git a/_wip/NROM/Golf (JU)/Makefile.pass0 b/NROM/Golf (JU)/Makefile.pass0 similarity index 100% rename from _wip/NROM/Golf (JU)/Makefile.pass0 rename to NROM/Golf (JU)/Makefile.pass0 diff --git a/_wip/NROM/Golf (JU)/NMI_CALLBACK_AUDIT.md b/NROM/Golf (JU)/NMI_CALLBACK_AUDIT.md similarity index 100% rename from _wip/NROM/Golf (JU)/NMI_CALLBACK_AUDIT.md rename to NROM/Golf (JU)/NMI_CALLBACK_AUDIT.md diff --git a/_wip/NROM/Golf (JU)/OVERLAP_AUDIT.md b/NROM/Golf (JU)/OVERLAP_AUDIT.md similarity index 100% rename from _wip/NROM/Golf (JU)/OVERLAP_AUDIT.md rename to NROM/Golf (JU)/OVERLAP_AUDIT.md diff --git a/_wip/NROM/Golf (JU)/PASS1_STATUS.md b/NROM/Golf (JU)/PASS1_STATUS.md similarity index 100% rename from _wip/NROM/Golf (JU)/PASS1_STATUS.md rename to NROM/Golf (JU)/PASS1_STATUS.md diff --git a/_wip/NROM/Golf (JU)/PASS2_PLAN.md b/NROM/Golf (JU)/PASS2_PLAN.md similarity index 100% rename from _wip/NROM/Golf (JU)/PASS2_PLAN.md rename to NROM/Golf (JU)/PASS2_PLAN.md diff --git a/NROM/Golf (JU)/README.md b/NROM/Golf (JU)/README.md new file mode 100644 index 0000000..df62cf7 --- /dev/null +++ b/NROM/Golf (JU)/README.md @@ -0,0 +1,167 @@ +# Golf (JU) — Pass 1 complete, Pass 2 complete, Pass 3 complete + +ROM: `_wip/NROM/Golf (JU)/Golf (JU).nes` (24,592 bytes, iNES). Status: **Pass 1 +complete, Pass 2 complete, Pass 3 complete — ready for promotion.** The +**whole-ROM** build is **byte-identical** (header + PRG + CHR, `cmp +reconstructed.nes rom.nes`). + +**Pass 1 (code/data split) — complete.** Reachable code traced from RESET +($C000) and NMI ($C0A6); all 4,217 reachable instructions are explicit source +in `prg.s` (13,541 lines). NMI callbacks ($C5A0=`GameplayInputNmiCallback`, +$C6C8, $CFAA, $DAA2; continuations $CFC3/$D03E/$D08A) and controller/attract +paths ($DAA2, $C0C7=`InitializeRuntimeState`) are in source. All remaining +`.incbin` spans have zero code entry points and are confirmed data. + +**Pass 2 (label naming) — complete.** Startup/NMI/PPU/controller/course-decode +routines named (batches 1–3 per `PASS2_PLAN.md`). All 112 subroutine-entry +`Label_` labels renamed: 4 semantic (`WaitForFramePreservingY`, +`SpriteOffsetForController`, `SetPpuScrollAndMask`, `MultiplyABy32`) and 108 +address-derived `SubC` where behaviour is not yet established. All +jsr/jmp call sites carry symbolic names — 0 raw `$XXXX` call operands. + +The remaining 349 internal branch-target `Label_` labels are resolved: 339 +given role-based names (`_Loop`, `_OnZero`, +`_OnNonzero`, `_OnCarryClear`, `_OnCarrySet`, +`_OnNonnegative`) derived with `_tools/derive_branch_names.py` from +`routinemap.tsv` and applied with `_tools/apply_pass2_map.py`; the other 10 +(`Label_C198`, `Label_D424`, `Label_D9D8`, `Label_D9F9`, `Label_DF3A`, +`Label_FA78`, `Label_FB24`, `Label_FB83`, `Label_FC6B`, `Label_FF00`) are +fall-through-only labels that no branch or jump targets, so they intentionally +keep their `Label_` definitions. + +**Pass 3 (semantic naming) — complete.** Conversions completed: +- Interrupt vectors at $FFFA–$FFFF → `.word NmiHandler`/`Reset`/`IrqLoop` +- Course-stream split pointer table at $E6C3/$E6D5 (18 entries) → `CourseLayoutPointerLo`/`CourseLayoutPointerHi` +- Bit-mask table $D6F4–$D6FB → `BitMaskTable` ($80 40 20 10 08 04 02 01) +- PPU write table $FD0A–$FD11 → `PpuTableFd0a` +- Score adjust table $D988–$D9B0 → `D988ScoreAdjustTable` +- PPU value table $FF85–$FF9F → `FF85PpuValueTable` +- Sprite/object tables (`sprite_object_tables.inc`) and gameplay PPU palette ($E1B8–$E1D7) already emitted as structured source. +- Audit comments converted from the pre-canonical spelling (`; C000: A9 00`) + to the canonical `; CPU:$C000 PRG:0000 A9 00` form at column 35 via + `_tools/repair_audit_comments.py` (ground truth: ca65 listing vs `prg.bin`) + then `_tools/align_audit_comments.py` — 4,156 comments re-aligned; comment + and whitespace only, no byte change. +- All NES hardware-register operands (`$2000`–`$4017`) use `symbols.inc` + names (already done in Pass 2). +- 275 zero-page operands substituted with `locals.inc` aliases via + `_tools/apply_symbols.py`; 0 multi-alias residue, no unexplained numeric + operands remain. +- Every branch and jump target is a symbolic label; 0 raw `$XXXX` operands + remain in code. + +Remaining `.incbin` spans are largely Iwata's compressed level data +($E6E7–$F905, ~4.6 KB) and opaque lookup tables ($C786–$C84C, $CD85–$CE63, +$D304–$D3B6, $D563–$D659, $D823–$D8EC, $DC59–$DD77, $E1D8–$E281, $E3DE–$E3FB, +$E588–$E6AF, $FBBF–$FC23). Without runtime tracing / a code/data log to confirm +consumers and structure, converting these risks guessy rewrites. Per repo +convention, they remain as `.incbin` with address comments. + +Remaining `.incbin` spans ($C71E–$C720, $C786–$C84C, $CD85–$CE63, +$D304–$D3B6, $D563–$D659, $D823–$D8EC, $DC59–$DD77, $E1D8–$E281, $E3DE–$E3FB, +$E588–$E6AF, $E6E7–$F905, $FBBF–$FC23) remain as data per the no-guessy-rewrites +convention; convert only when a consumer is identified. + +## ROM Facts + +| Property | Value | +|----------|-------| +| Format | iNES | +| Mapper | 0 — NROM-128 | +| Board | NROM | +| PRG | 16 KB (1 x 16 KB), mapped at CPU $C000-$FFFF | +| CHR | 8 KB (1 x 8 KB) | +| Mirroring | Vertical (header byte 6 bit 0 = 1) | +| Four-screen VRAM | no | +| Battery | no | +| Trainer | none | +| Footer | none | +| NMI vector | `$C0A6` | +| RESET vector | `$C000` | +| IRQ vector | `$C0C4` | +| ROM SHA-256 | `70986ed4fb441199a9ff50c7b5c6388d9f7a17c29990d1b5f7214572ae0a4bc6` | +| PRG SHA-256 | `9f729074cd7c74340f325460173519427b1180f5101f8dc37da7b1c2b9b604d5` | + +### Header notes + +- The header's mapper bits and size fields are read as-is; nothing is unusual + about them. + +## Interrupt Vectors (taken from PRG $3FFA–$3FFF) + +| Vector | Target | Note | +|--------|--------|------| +| NMI | `$C0A6` | per-frame heartbeat | +| RESET | `$C000` | cold start at $C000 — the usual pattern in this repo | +| IRQ | `$C0C4` | IRQ handler | + +## Build + +This project keeps the **CPU-address linker layout** (one of the 38 `_wip/` +projects that do): the PRG really is one contiguous window at `$C000-$FFFF`, +so the memory area sits at that CPU address rather than at a `.nes` file +offset. + +``` +$ cd "_wip/NROM/Golf (JU)" && make +ca65 -g -o header.o header.s +ca65 -g -o prg.o prg.s +ca65 -g -o chr.o chr.s +ld65 -C linker.cfg -m reconstructed.map -Ln reconstructed.lbl -o reconstructed.nes header.o prg.o chr.o +cmp reconstructed.nes rom.nes +Byte-identical ROM verified. +``` + +The header and the CHR **are** linked and proven — the whole ROM is compared +byte for byte, exactly as in the promoted tier. (This project predates the +tier's move off the old PRG-only compare, so the older `Makefile.pass0`, +`prg.s.pass0` and `prg_pass1.s` artifacts are still in the folder as history; +the live build is `prg.s` + `linker.cfg` + `Makefile`.) + +## Audit comments — canonical, column 35 + +Every instruction carries a canonical audit comment at column 35: + +``` + LDA #$00 ; CPU:$C000 PRG:0000 A9 00 + STA PPUCTRL ; CPU:$C002 PRG:0002 8D 00 20 +``` + +Converted from the pre-canonical spelling (`; C000: A9 00`) with +`_tools/repair_audit_comments.py` (ca65 listing vs `prg.bin` ground truth) +then `_tools/align_audit_comments.py` — 4,156 comments re-aligned; comment +and whitespace only, no byte change. `make` stays byte-identical throughout. + +## Files + +| File | Purpose | +|------|---------| +| `Golf (JU).nes` | original ROM image (reference) | +| `rom.nes` | space-free copy of the original ROM, the byte-identity target | +| `prg.bin` / `header.bin` / `chr.bin` | split image, produced by `_tools/splitnes.py` | +| `prg.s` | Pass-1 disassembly: classified code/data split with canonical audit comments (column 35); Pass 2 and Pass 3 complete — all routine entries and branch targets named, all zero-page and hardware operands symbolic. Data split into `course_streams.inc` and `sprite_object_tables.inc` | +| `header.s` / `chr.s` | the header and CHR segments as ca65 includes | +| `symbols.inc` | shared NES hardware constants (PPU/APU/controller) | +| `locals.inc` | project-local zero-page aliases (32 semantic names; all 275 zero-page operands substituted, 0 multi-alias residue) | +| `course_streams.inc` | Pass-1 compressed primary course-stream bounds | +| `sprite_object_tables.inc` | Pass-3 sprite/object table structures | +| `linker.cfg` | HEADER / PRG / CHR memory areas (PRG at $C000, 16 KB) | +| `Makefile` | links `reconstructed.nes` and `cmp`s it against `rom.nes` | +| `PASS1_STATUS.md`, `PASS2_PLAN.md`, `NMI_CALLBACK_AUDIT.md`, `OVERLAP_AUDIT.md`, `SPRITE_OBJECT_TABLE_AUDIT.md`, `COMPRESSED_PARSER_AUDIT.md` | working notes kept alongside the source | + +## Next Steps + +1. **Pass 1** — done (byte-identical whole-ROM build, 4,217 instructions). +2. **Pass 2** — done: all 112 subroutine entries named (4 semantic + 108 + `SubC`); all jsr/jmp call sites symbolic (0 raw `$XXXX` call + operands); 339 of 349 internal branch targets given role-based names + (`_Loop`, `_OnZero`, …); 10 fall-through-only labels + keep their `Label_` definitions. +3. **Pass 3** — done: audit comments canonical at column 35 (4,156 re-aligned); + all hardware-register operands use `symbols.inc` names; 275 zero-page + operands substituted with `locals.inc` aliases (0 residue); every branch + and jump target is symbolic. +4. **Promotion** — `git mv "_wip/NROM/Golf (JU)" "NROM/Golf (JU)"` once the + controlling agent approves, then add the row to the root `README.md` + inventory and remove this entry here. The whole-ROM build is already in + place, so promotion needs no build surgery. diff --git a/_wip/NROM/Golf (JU)/SPRITE_OBJECT_TABLE_AUDIT.md b/NROM/Golf (JU)/SPRITE_OBJECT_TABLE_AUDIT.md similarity index 100% rename from _wip/NROM/Golf (JU)/SPRITE_OBJECT_TABLE_AUDIT.md rename to NROM/Golf (JU)/SPRITE_OBJECT_TABLE_AUDIT.md diff --git a/_wip/NROM/Golf (JU)/chr.bin b/NROM/Golf (JU)/chr.bin similarity index 100% rename from _wip/NROM/Golf (JU)/chr.bin rename to NROM/Golf (JU)/chr.bin diff --git a/_wip/CNROM/World Class Track Meet (U)/chr.s b/NROM/Golf (JU)/chr.s similarity index 100% rename from _wip/CNROM/World Class Track Meet (U)/chr.s rename to NROM/Golf (JU)/chr.s diff --git a/_wip/NROM/Golf (JU)/course_streams.inc b/NROM/Golf (JU)/course_streams.inc similarity index 100% rename from _wip/NROM/Golf (JU)/course_streams.inc rename to NROM/Golf (JU)/course_streams.inc diff --git a/NROM/Pyramid (U)/header.bin b/NROM/Golf (JU)/header.bin similarity index 100% rename from NROM/Pyramid (U)/header.bin rename to NROM/Golf (JU)/header.bin diff --git a/_wip/CNROM/World Class Track Meet (U)/header.s b/NROM/Golf (JU)/header.s similarity index 100% rename from _wip/CNROM/World Class Track Meet (U)/header.s rename to NROM/Golf (JU)/header.s diff --git a/_wip/NROM/Golf (JU)/linker.cfg b/NROM/Golf (JU)/linker.cfg similarity index 100% rename from _wip/NROM/Golf (JU)/linker.cfg rename to NROM/Golf (JU)/linker.cfg diff --git a/_wip/NROM/Golf (JU)/locals.inc b/NROM/Golf (JU)/locals.inc similarity index 100% rename from _wip/NROM/Golf (JU)/locals.inc rename to NROM/Golf (JU)/locals.inc diff --git a/_wip/NROM/Golf (JU)/locals.inc.bak b/NROM/Golf (JU)/locals.inc.bak similarity index 100% rename from _wip/NROM/Golf (JU)/locals.inc.bak rename to NROM/Golf (JU)/locals.inc.bak diff --git a/_wip/NROM/Golf (JU)/locals.inc.pass2-batch1 b/NROM/Golf (JU)/locals.inc.pass2-batch1 similarity index 100% rename from _wip/NROM/Golf (JU)/locals.inc.pass2-batch1 rename to NROM/Golf (JU)/locals.inc.pass2-batch1 diff --git a/_wip/NROM/Golf (JU)/locals.inc.pass2-batch2 b/NROM/Golf (JU)/locals.inc.pass2-batch2 similarity index 100% rename from _wip/NROM/Golf (JU)/locals.inc.pass2-batch2 rename to NROM/Golf (JU)/locals.inc.pass2-batch2 diff --git a/_wip/NROM/Golf (JU)/locals.inc.pass2-batch2-verified b/NROM/Golf (JU)/locals.inc.pass2-batch2-verified similarity index 100% rename from _wip/NROM/Golf (JU)/locals.inc.pass2-batch2-verified rename to NROM/Golf (JU)/locals.inc.pass2-batch2-verified diff --git a/_wip/NROM/Golf (JU)/prg.bin b/NROM/Golf (JU)/prg.bin similarity index 100% rename from _wip/NROM/Golf (JU)/prg.bin rename to NROM/Golf (JU)/prg.bin diff --git a/_wip/NROM/Golf (JU)/prg.s b/NROM/Golf (JU)/prg.s similarity index 55% rename from _wip/NROM/Golf (JU)/prg.s rename to NROM/Golf (JU)/prg.s index 228bcf1..ab0df05 100644 --- a/_wip/NROM/Golf (JU)/prg.s +++ b/NROM/Golf (JU)/prg.s @@ -26,10 +26,10 @@ ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- Reset: - LDA #$00 ; C000: A9 00 - STA PPUCTRL ; C002: 8D 00 20 - CLD ; C005: D8 - SEI ; C006: 78 + LDA #$00 ; CPU:$C000 PRG:0000 A9 00 + STA PPUCTRL ; CPU:$C002 PRG:0002 8D 00 20 + CLD ; CPU:$C005 PRG:0005 D8 + SEI ; CPU:$C006 PRG:0006 78 ; --------------------------------------------------------------------------- ; WaitForFirstVblank @@ -47,34 +47,34 @@ Reset: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- WaitForFirstVblank: - LDA PPUSTATUS ; C007: AD 02 20 - BPL WaitForFirstVblank ; C00A: 10 FB - LDX #$FF ; C00C: A2 FF - TXS ; C00E: 9A - INX ; C00F: E8 - STX PPUMASK ; C010: 8E 01 20 - STX APUSTATUS ; C013: 8E 15 40 - LDA #$90 ; C016: A9 90 - STA ppu_ctrl_shadow ; C018: 85 00 - AND #$7F ; C01A: 29 7F - STA PPUCTRL ; C01C: 8D 00 20 - LDA #$1A ; C01F: A9 1A - STA ppu_mask_shadow ; C021: 85 01 - LDA #$64 ; C023: A9 64 - STA $0E ; C025: 85 0E - STA $82 ; C027: 85 82 - LDA #$00 ; C029: A9 00 - STA PPUMASK ; C02B: 8D 01 20 - STA $0D ; C02E: 85 0D - STA $0143 ; C030: 8D 43 01 - STA $0F ; C033: 85 0F - STA $10 ; C035: 85 10 - STA $2B ; C037: 85 2B - STA $2C ; C039: 85 2C - STA $14 ; C03B: 85 14 - TAY ; C03D: A8 - TAX ; C03E: AA - LDA #$FF ; C03F: A9 FF + LDA PPUSTATUS ; CPU:$C007 PRG:0007 AD 02 20 + BPL WaitForFirstVblank ; CPU:$C00A PRG:000A 10 FB + LDX #$FF ; CPU:$C00C PRG:000C A2 FF + TXS ; CPU:$C00E PRG:000E 9A + INX ; CPU:$C00F PRG:000F E8 + STX PPUMASK ; CPU:$C010 PRG:0010 8E 01 20 + STX APUSTATUS ; CPU:$C013 PRG:0013 8E 15 40 + LDA #$90 ; CPU:$C016 PRG:0016 A9 90 + STA ppu_ctrl_shadow ; CPU:$C018 PRG:0018 85 00 + AND #$7F ; CPU:$C01A PRG:001A 29 7F + STA PPUCTRL ; CPU:$C01C PRG:001C 8D 00 20 + LDA #$1A ; CPU:$C01F PRG:001F A9 1A + STA ppu_mask_shadow ; CPU:$C021 PRG:0021 85 01 + LDA #$64 ; CPU:$C023 PRG:0023 A9 64 + STA $0E ; CPU:$C025 PRG:0025 85 0E + STA $82 ; CPU:$C027 PRG:0027 85 82 + LDA #$00 ; CPU:$C029 PRG:0029 A9 00 + STA PPUMASK ; CPU:$C02B PRG:002B 8D 01 20 + STA menu_selection ; CPU:$C02E PRG:002E 85 0D + STA $0143 ; CPU:$C030 PRG:0030 8D 43 01 + STA $0F ; CPU:$C033 PRG:0033 85 0F + STA $10 ; CPU:$C035 PRG:0035 85 10 + STA current_hole_index ; CPU:$C037 PRG:0037 85 2B + STA $2C ; CPU:$C039 PRG:0039 85 2C + STA $14 ; CPU:$C03B PRG:003B 85 14 + TAY ; CPU:$C03D PRG:003D A8 + TAX ; CPU:$C03E PRG:003E AA + LDA #$FF ; CPU:$C03F PRG:003F A9 FF ; --------------------------------------------------------------------------- ; ClearStartupRamLoop @@ -92,13 +92,13 @@ WaitForFirstVblank: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ClearStartupRamLoop: - STA $0700,Y ; C041: 99 00 07 - STA $0700,X ; C044: 9D 00 07 - DEX ; C047: CA - INY ; C048: C8 - CPY #$40 ; C049: C0 40 - BNE Label_C04F ; C04B: D0 02 - LDA #$00 ; C04D: A9 00 + STA $0700,Y ; CPU:$C041 PRG:0041 99 00 07 + STA $0700,X ; CPU:$C044 PRG:0044 9D 00 07 + DEX ; CPU:$C047 PRG:0047 CA + INY ; CPU:$C048 PRG:0048 C8 + CPY #$40 ; CPU:$C049 PRG:0049 C0 40 + BNE ClearStartupRamLoop_Loop ; CPU:$C04B PRG:004B D0 02 + LDA #$00 ; CPU:$C04D PRG:004D A9 00 ; --------------------------------------------------------------------------- ; Label_C04F @@ -115,10 +115,10 @@ ClearStartupRamLoop: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C04F: - CPY #$7E ; C04F: C0 7E - BNE Label_C055 ; C051: D0 02 - LDA #$01 ; C053: A9 01 +ClearStartupRamLoop_Loop: + CPY #$7E ; CPU:$C04F PRG:004F C0 7E + BNE ClearStartupRamLoop_Loop2 ; CPU:$C051 PRG:0051 D0 02 + LDA #$01 ; CPU:$C053 PRG:0053 A9 01 ; --------------------------------------------------------------------------- ; Label_C055 @@ -135,11 +135,11 @@ Label_C04F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C055: - CPY #$81 ; C055: C0 81 - BNE ClearStartupRamLoop ; C057: D0 E8 - LDX #$00 ; C059: A2 00 - LDY #$00 ; C05B: A0 00 +ClearStartupRamLoop_Loop2: + CPY #$81 ; CPU:$C055 PRG:0055 C0 81 + BNE ClearStartupRamLoop ; CPU:$C057 PRG:0057 D0 E8 + LDX #$00 ; CPU:$C059 PRG:0059 A2 00 + LDY #$00 ; CPU:$C05B PRG:005B A0 00 ; --------------------------------------------------------------------------- ; CopyStartupTableLoop @@ -157,25 +157,25 @@ Label_C055: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- CopyStartupTableLoop: - LDA $D563,Y ; C05D: B9 63 D5 - STA $0600,Y ; C060: 99 00 06 - STA $0600,X ; C063: 9D 00 06 - DEX ; C066: CA - INY ; C067: C8 - CPY #$81 ; C068: C0 81 - BCC CopyStartupTableLoop ; C06A: 90 F1 - LDA #$12 ; C06C: A9 12 - STA $19 ; C06E: 85 19 - LDX #$0E ; C070: A2 0E - LDA #$08 ; C072: A9 08 - LDY #$00 ; C074: A0 00 - JSR ReadPpuBlocks ; C076: 20 87 C0 - LDA #$07 ; C079: A9 07 - STA $19 ; C07B: 85 19 - LDX #$0F ; C07D: A2 0F - LDA #$50 ; C07F: A9 50 - JSR ReadPpuBlocks ; C081: 20 87 C0 - JMP InitializeTitleAndGame ; C084: 4C 23 DA + LDA $D563,Y ; CPU:$C05D PRG:005D B9 63 D5 + STA $0600,Y ; CPU:$C060 PRG:0060 99 00 06 + STA $0600,X ; CPU:$C063 PRG:0063 9D 00 06 + DEX ; CPU:$C066 PRG:0066 CA + INY ; CPU:$C067 PRG:0067 C8 + CPY #$81 ; CPU:$C068 PRG:0068 C0 81 + BCC CopyStartupTableLoop ; CPU:$C06A PRG:006A 90 F1 + LDA #$12 ; CPU:$C06C PRG:006C A9 12 + STA $19 ; CPU:$C06E PRG:006E 85 19 + LDX #$0E ; CPU:$C070 PRG:0070 A2 0E + LDA #$08 ; CPU:$C072 PRG:0072 A9 08 + LDY #$00 ; CPU:$C074 PRG:0074 A0 00 + JSR ReadPpuBlocks ; CPU:$C076 PRG:0076 20 87 C0 + LDA #$07 ; CPU:$C079 PRG:0079 A9 07 + STA $19 ; CPU:$C07B PRG:007B 85 19 + LDX #$0F ; CPU:$C07D PRG:007D A2 0F + LDA #$50 ; CPU:$C07F PRG:007F A9 50 + JSR ReadPpuBlocks ; CPU:$C081 PRG:0081 20 87 C0 + JMP InitializeTitleAndGame ; CPU:$C084 PRG:0084 4C 23 DA ; --------------------------------------------------------------------------- ; ReadPpuBlocks @@ -193,8 +193,8 @@ CopyStartupTableLoop: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ReadPpuBlocks: - JSR SetPpuAddress ; C087: 20 C1 C8 - LDA PPUDATA ; C08A: AD 07 20 + JSR SetPpuAddress ; CPU:$C087 PRG:0087 20 C1 C8 + LDA PPUDATA ; CPU:$C08A PRG:008A AD 07 20 ; --------------------------------------------------------------------------- ; ReadPpuBlockBytes @@ -212,7 +212,7 @@ ReadPpuBlocks: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ReadPpuBlockBytes: - LDX #$08 ; C08D: A2 08 + LDX #$08 ; CPU:$C08D PRG:008D A2 08 ; --------------------------------------------------------------------------- ; ReadPpuBlockByteLoop @@ -230,12 +230,12 @@ ReadPpuBlockBytes: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ReadPpuBlockByteLoop: - LDA PPUDATA ; C08F: AD 07 20 - STA $0500,Y ; C092: 99 00 05 - INY ; C095: C8 - DEX ; C096: CA - BNE ReadPpuBlockByteLoop ; C097: D0 F6 - LDX #$08 ; C099: A2 08 + LDA PPUDATA ; CPU:$C08F PRG:008F AD 07 20 + STA $0500,Y ; CPU:$C092 PRG:0092 99 00 05 + INY ; CPU:$C095 PRG:0095 C8 + DEX ; CPU:$C096 PRG:0096 CA + BNE ReadPpuBlockByteLoop ; CPU:$C097 PRG:0097 D0 F6 + LDX #$08 ; CPU:$C099 PRG:0099 A2 08 ; --------------------------------------------------------------------------- ; DiscardPpuBlockByteLoop @@ -253,12 +253,12 @@ ReadPpuBlockByteLoop: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- DiscardPpuBlockByteLoop: - LDA PPUDATA ; C09B: AD 07 20 - DEX ; C09E: CA - BNE DiscardPpuBlockByteLoop ; C09F: D0 FA - DEC $19 ; C0A1: C6 19 - BPL ReadPpuBlockBytes ; C0A3: 10 E8 - RTS ; C0A5: 60 + LDA PPUDATA ; CPU:$C09B PRG:009B AD 07 20 + DEX ; CPU:$C09E PRG:009E CA + BNE DiscardPpuBlockByteLoop ; CPU:$C09F PRG:009F D0 FA + DEC $19 ; CPU:$C0A1 PRG:00A1 C6 19 + BPL ReadPpuBlockBytes ; CPU:$C0A3 PRG:00A3 10 E8 + RTS ; CPU:$C0A5 PRG:00A5 60 ; --------------------------------------------------------------------------- ; NmiHandler @@ -276,16 +276,16 @@ DiscardPpuBlockByteLoop: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- NmiHandler: - PHA ; C0A6: 48 - TXA ; C0A7: 8A - PHA ; C0A8: 48 - TYA ; C0A9: 98 - PHA ; C0AA: 48 - LDA #$00 ; C0AB: A9 00 - STA OAMADDR ; C0AD: 8D 03 20 - LDA #$02 ; C0B0: A9 02 - STA OAMDMA ; C0B2: 8D 14 40 - JMP (nmi_vector_lo) ; C0B5: 6C 02 00 + PHA ; CPU:$C0A6 PRG:00A6 48 + TXA ; CPU:$C0A7 PRG:00A7 8A + PHA ; CPU:$C0A8 PRG:00A8 48 + TYA ; CPU:$C0A9 PRG:00A9 98 + PHA ; CPU:$C0AA PRG:00AA 48 + LDA #$00 ; CPU:$C0AB PRG:00AB A9 00 + STA OAMADDR ; CPU:$C0AD PRG:00AD 8D 03 20 + LDA #$02 ; CPU:$C0B0 PRG:00B0 A9 02 + STA OAMDMA ; CPU:$C0B2 PRG:00B2 8D 14 40 + JMP (nmi_vector_lo) ; CPU:$C0B5 PRG:00B5 6C 02 00 ; --------------------------------------------------------------------------- ; NmiEpilogue @@ -303,15 +303,15 @@ NmiHandler: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- NmiEpilogue: - INC $8B ; C0B8: E6 8B - LDA #$01 ; C0BA: A9 01 - STA $08 ; C0BC: 85 08 - PLA ; C0BE: 68 - TAY ; C0BF: A8 - PLA ; C0C0: 68 - TAX ; C0C1: AA - PLA ; C0C2: 68 - RTI ; C0C3: 40 + INC $8B ; CPU:$C0B8 PRG:00B8 E6 8B + LDA #$01 ; CPU:$C0BA PRG:00BA A9 01 + STA nmi_complete_flag ; CPU:$C0BC PRG:00BC 85 08 + PLA ; CPU:$C0BE PRG:00BE 68 + TAY ; CPU:$C0BF PRG:00BF A8 + PLA ; CPU:$C0C0 PRG:00C0 68 + TAX ; CPU:$C0C1 PRG:00C1 AA + PLA ; CPU:$C0C2 PRG:00C2 68 + RTI ; CPU:$C0C3 PRG:00C3 40 ; --------------------------------------------------------------------------- ; IrqLoop @@ -329,7 +329,7 @@ NmiEpilogue: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- IrqLoop: - JMP IrqLoop ; C0C4: 4C C4 C0 + JMP IrqLoop ; CPU:$C0C4 PRG:00C4 4C C4 C0 ; --------------------------------------------------------------------------- ; InitializeRuntimeState @@ -347,22 +347,22 @@ IrqLoop: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- InitializeRuntimeState: - LDA #$00 ; C0C7: A9 00 - STA $82 ; C0C9: 85 82 - STA $2B ; C0CB: 85 2B - STA $0F ; C0CD: 85 0F - STA $10 ; C0CF: 85 10 - STA $11 ; C0D1: 85 11 - STA $12 ; C0D3: 85 12 - STA $7A ; C0D5: 85 7A - STA $84 ; C0D7: 85 84 - STA $14 ; C0D9: 85 14 - LDA #$18 ; C0DB: A9 18 - STA animation_frame_index ; C0DD: 85 8F - LDA #$12 ; C0DF: A9 12 - STA $88 ; C0E1: 85 88 - LDA $0D ; C0E3: A5 0D - STA $0143 ; C0E5: 8D 43 01 + LDA #$00 ; CPU:$C0C7 PRG:00C7 A9 00 + STA $82 ; CPU:$C0C9 PRG:00C9 85 82 + STA current_hole_index ; CPU:$C0CB PRG:00CB 85 2B + STA $0F ; CPU:$C0CD PRG:00CD 85 0F + STA $10 ; CPU:$C0CF PRG:00CF 85 10 + STA $11 ; CPU:$C0D1 PRG:00D1 85 11 + STA $12 ; CPU:$C0D3 PRG:00D3 85 12 + STA active_controller_index ; CPU:$C0D5 PRG:00D5 85 7A + STA $84 ; CPU:$C0D7 PRG:00D7 85 84 + STA $14 ; CPU:$C0D9 PRG:00D9 85 14 + LDA #$18 ; CPU:$C0DB PRG:00DB A9 18 + STA animation_frame_index ; CPU:$C0DD PRG:00DD 85 8F + LDA #$12 ; CPU:$C0DF PRG:00DF A9 12 + STA $88 ; CPU:$C0E1 PRG:00E1 85 88 + LDA menu_selection ; CPU:$C0E3 PRG:00E3 A5 0D + STA $0143 ; CPU:$C0E5 PRG:00E5 8D 43 01 ; --------------------------------------------------------------------------- ; SubCC0E8 @@ -380,40 +380,40 @@ InitializeRuntimeState: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC0E8: - LDY #$C8 ; C0E8: A0 C8 - LDX #$C6 ; C0EA: A2 C6 - JSR InstallNmiCallback ; C0EC: 20 88 C8 - LDY #$00 ; C0EF: A0 00 - STY $0141 ; C0F1: 8C 41 01 - STY $0142 ; C0F4: 8C 42 01 - STY $17 ; C0F7: 84 17 - STY $15 ; C0F9: 84 15 - STY $44 ; C0FB: 84 44 - STY $45 ; C0FD: 84 45 - STY $2C ; C0FF: 84 2C - STY $2D ; C101: 84 2D - STY $49 ; C103: 84 49 - STY $7B ; C105: 84 7B - STY $7C ; C107: 84 7C - STY $7F ; C109: 84 7F - STY $80 ; C10B: 84 80 - STY $53 ; C10D: 84 53 - STY APUPULSE1CTRL ; C10F: 8C 00 40 - STY APUPULSE2CTRL ; C112: 8C 04 40 - STY APUTRIANGLECTRL ; C115: 8C 08 40 - STY APUNOISECTRL ; C118: 8C 0C 40 - INY ; C11B: C8 - STY $4A ; C11C: 84 4A - LDA #$0F ; C11E: A9 0F - STA APUSTATUS ; C120: 8D 15 40 - LDA $8B ; C123: A5 8B - STA $8C ; C125: 85 8C - JSR ClearNametableAndOam ; C127: 20 C8 C8 - JSR SubCE6B0 ; C12A: 20 B0 E6 - LDA ppu_ctrl_shadow ; C12D: A5 00 - ORA #$80 ; C12F: 09 80 - STA ppu_ctrl_shadow ; C131: 85 00 - STA PPUCTRL ; C133: 8D 00 20 + LDY #$C8 ; CPU:$C0E8 PRG:00E8 A0 C8 + LDX #$C6 ; CPU:$C0EA PRG:00EA A2 C6 + JSR InstallNmiCallback ; CPU:$C0EC PRG:00EC 20 88 C8 + LDY #$00 ; CPU:$C0EF PRG:00EF A0 00 + STY $0141 ; CPU:$C0F1 PRG:00F1 8C 41 01 + STY $0142 ; CPU:$C0F4 PRG:00F4 8C 42 01 + STY club_selection_index ; CPU:$C0F7 PRG:00F7 84 17 + STY sequence_frame_index ; CPU:$C0F9 PRG:00F9 84 15 + STY aim_angle_index ; CPU:$C0FB PRG:00FB 84 44 + STY aim_adjust_direction ; CPU:$C0FD PRG:00FD 84 45 + STY $2C ; CPU:$C0FF PRG:00FF 84 2C + STY $2D ; CPU:$C101 PRG:0101 84 2D + STY $49 ; CPU:$C103 PRG:0103 84 49 + STY $7B ; CPU:$C105 PRG:0105 84 7B + STY $7C ; CPU:$C107 PRG:0107 84 7C + STY $7F ; CPU:$C109 PRG:0109 84 7F + STY $80 ; CPU:$C10B PRG:010B 84 80 + STY $53 ; CPU:$C10D PRG:010D 84 53 + STY APUPULSE1CTRL ; CPU:$C10F PRG:010F 8C 00 40 + STY APUPULSE2CTRL ; CPU:$C112 PRG:0112 8C 04 40 + STY APUTRIANGLECTRL ; CPU:$C115 PRG:0115 8C 08 40 + STY APUNOISECTRL ; CPU:$C118 PRG:0118 8C 0C 40 + INY ; CPU:$C11B PRG:011B C8 + STY $4A ; CPU:$C11C PRG:011C 84 4A + LDA #$0F ; CPU:$C11E PRG:011E A9 0F + STA APUSTATUS ; CPU:$C120 PRG:0120 8D 15 40 + LDA $8B ; CPU:$C123 PRG:0123 A5 8B + STA $8C ; CPU:$C125 PRG:0125 85 8C + JSR ClearNametableAndOam ; CPU:$C127 PRG:0127 20 C8 C8 + JSR SubCE6B0 ; CPU:$C12A PRG:012A 20 B0 E6 + LDA ppu_ctrl_shadow ; CPU:$C12D PRG:012D A5 00 + ORA #$80 ; CPU:$C12F PRG:012F 09 80 + STA ppu_ctrl_shadow ; CPU:$C131 PRG:0131 85 00 + STA PPUCTRL ; CPU:$C133 PRG:0133 8D 00 20 ; --------------------------------------------------------------------------- ; SubCC136 @@ -431,15 +431,15 @@ SubCC0E8: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC136: - LDY #$FF ; C136: A0 FF - STY $0278 ; C138: 8C 78 02 - STY $027C ; C13B: 8C 7C 02 - LDA $0D ; C13E: A5 0D - BEQ Label_C17E ; C140: F0 3C - LDA $84 ; C142: A5 84 - BNE Label_C14A ; C144: D0 04 - LDA $7B ; C146: A5 7B - BEQ Label_C17E ; C148: F0 34 + LDY #$FF ; CPU:$C136 PRG:0136 A0 FF + STY $0278 ; CPU:$C138 PRG:0138 8C 78 02 + STY $027C ; CPU:$C13B PRG:013B 8C 7C 02 + LDA menu_selection ; CPU:$C13E PRG:013E A5 0D + BEQ SubCC136_Loop4 ; CPU:$C140 PRG:0140 F0 3C + LDA $84 ; CPU:$C142 PRG:0142 A5 84 + BNE SubCC136_Loop ; CPU:$C144 PRG:0144 D0 04 + LDA $7B ; CPU:$C146 PRG:0146 A5 7B + BEQ SubCC136_Loop4 ; CPU:$C148 PRG:0148 F0 34 ; --------------------------------------------------------------------------- ; Label_C14A @@ -456,18 +456,18 @@ SubCC136: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C14A: - LDA $7C ; C14A: A5 7C - BEQ Label_C182 ; C14C: F0 34 - LDA $7B ; C14E: A5 7B - BEQ Label_C17E ; C150: F0 2C - LDA $7C ; C152: A5 7C - CMP $7B ; C154: C5 7B - BNE Label_C17C ; C156: D0 24 - CMP #$02 ; C158: C9 02 - BCC Label_C160 ; C15A: 90 04 - LDA #$01 ; C15C: A9 01 - STA $49 ; C15E: 85 49 +SubCC136_Loop: + LDA $7C ; CPU:$C14A PRG:014A A5 7C + BEQ SubCC136_Loop5 ; CPU:$C14C PRG:014C F0 34 + LDA $7B ; CPU:$C14E PRG:014E A5 7B + BEQ SubCC136_Loop4 ; CPU:$C150 PRG:0150 F0 2C + LDA $7C ; CPU:$C152 PRG:0152 A5 7C + CMP $7B ; CPU:$C154 PRG:0154 C5 7B + BNE SubCC136_Loop3 ; CPU:$C156 PRG:0156 D0 24 + CMP #$02 ; CPU:$C158 PRG:0158 C9 02 + BCC SubCC136_Loop2 ; CPU:$C15A PRG:015A 90 04 + LDA #$01 ; CPU:$C15C PRG:015C A9 01 + STA $49 ; CPU:$C15E PRG:015E 85 49 ; --------------------------------------------------------------------------- ; Label_C160 @@ -484,21 +484,21 @@ Label_C14A: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C160: - LDA $40 ; C160: A5 40 - STA $3B ; C162: 85 3B - LDA $3E ; C164: A5 3E - STA $38 ; C166: 85 38 - JSR SubCF931 ; C168: 20 31 F9 - LDA $5E ; C16B: A5 5E - PHA ; C16D: 48 - LDA $41 ; C16E: A5 41 - STA $3B ; C170: 85 3B - LDA $3F ; C172: A5 3F - STA $38 ; C174: 85 38 - JSR SubCF931 ; C176: 20 31 F9 - PLA ; C179: 68 - CMP $5E ; C17A: C5 5E +SubCC136_Loop2: + LDA $40 ; CPU:$C160 PRG:0160 A5 40 + STA $3B ; CPU:$C162 PRG:0162 85 3B + LDA $3E ; CPU:$C164 PRG:0164 A5 3E + STA $38 ; CPU:$C166 PRG:0166 85 38 + JSR SubCF931 ; CPU:$C168 PRG:0168 20 31 F9 + LDA $5E ; CPU:$C16B PRG:016B A5 5E + PHA ; CPU:$C16D PRG:016D 48 + LDA $41 ; CPU:$C16E PRG:016E A5 41 + STA $3B ; CPU:$C170 PRG:0170 85 3B + LDA $3F ; CPU:$C172 PRG:0172 A5 3F + STA $38 ; CPU:$C174 PRG:0174 85 38 + JSR SubCF931 ; CPU:$C176 PRG:0176 20 31 F9 + PLA ; CPU:$C179 PRG:0179 68 + CMP $5E ; CPU:$C17A PRG:017A C5 5E ; --------------------------------------------------------------------------- ; Label_C17C @@ -515,8 +515,8 @@ Label_C160: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C17C: - BCC Label_C182 ; C17C: 90 04 +SubCC136_Loop3: + BCC SubCC136_Loop5 ; CPU:$C17C PRG:017C 90 04 ; --------------------------------------------------------------------------- ; Label_C17E @@ -533,9 +533,9 @@ Label_C17C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C17E: - LDA #$00 ; C17E: A9 00 - BEQ Label_C184 ; C180: F0 02 +SubCC136_Loop4: + LDA #$00 ; CPU:$C17E PRG:017E A9 00 + BEQ SubCC136_Loop6 ; CPU:$C180 PRG:0180 F0 02 ; --------------------------------------------------------------------------- ; Label_C182 @@ -552,8 +552,8 @@ Label_C17E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C182: - LDA #$01 ; C182: A9 01 +SubCC136_Loop5: + LDA #$01 ; CPU:$C182 PRG:0182 A9 01 ; --------------------------------------------------------------------------- ; Label_C184 @@ -570,14 +570,14 @@ Label_C182: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C184: - STA $7A ; C184: 85 7A - TAX ; C186: AA - LDA $7B,X ; C187: B5 7B - STA $87 ; C189: 85 87 - CMP #$03 ; C18B: C9 03 - BNE Label_C192 ; C18D: D0 03 - JMP SubCC484 ; C18F: 4C 84 C4 +SubCC136_Loop6: + STA active_controller_index ; CPU:$C184 PRG:0184 85 7A + TAX ; CPU:$C186 PRG:0186 AA + LDA $7B,X ; CPU:$C187 PRG:0187 B5 7B + STA $87 ; CPU:$C189 PRG:0189 85 87 + CMP #$03 ; CPU:$C18B PRG:018B C9 03 + BNE SubCC136_Loop7 ; CPU:$C18D PRG:018D D0 03 + JMP SubCC484 ; CPU:$C18F PRG:018F 4C 84 C4 ; --------------------------------------------------------------------------- ; Label_C192 @@ -594,32 +594,32 @@ Label_C184: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C192: - CMP #$02 ; C192: C9 02 - BNE Label_C199 ; C194: D0 03 - LDA #$01 ; C196: A9 01 +SubCC136_Loop7: + CMP #$02 ; CPU:$C192 PRG:0192 C9 02 + BNE SubCC136_Loop8 ; CPU:$C194 PRG:0194 D0 03 + LDA #$01 ; CPU:$C196 PRG:0196 A9 01 ; Overlapping instruction idiom: ; C198: BIT $00A9 (2C A9 00) ; C199: LDA #$00 (A9 00) Label_C198: - .byte $2C ; C198: 2C BIT absolute opcode -Label_C199: - .byte $A9,$00 ; C199-C19A: A9 00 LDA #$00 - STA $49 ; C19B: 85 49 - JSR WaitForFrame ; C19D: 20 F3 C8 - JSR SubCC84D ; C1A0: 20 4D C8 - JSR DecodeCoursePackage ; C1A3: 20 78 DD - LDX $7A ; C1A6: A6 7A - LDA $40,X ; C1A8: B5 40 - STA $3B ; C1AA: 85 3B - LDA $3E,X ; C1AC: B5 3E - STA $38 ; C1AE: 85 38 - LDA $7B,X ; C1B0: B5 7B - BNE Label_C1BC ; C1B2: D0 08 - LDA $7E ; C1B4: A5 7E - STA $3B ; C1B6: 85 3B - LDA $7D ; C1B8: A5 7D - STA $38 ; C1BA: 85 38 + .byte $2C ; C198: 2C BIT absolute opcode ; CPU:$C198 PRG:0198 2C +SubCC136_Loop8: + .byte $A9,$00 ; C199-C19A: A9 00 LDA #$00 ; CPU:$C199 PRG:0199 A9 00 + STA $49 ; CPU:$C19B PRG:019B 85 49 + JSR WaitForFrame ; CPU:$C19D PRG:019D 20 F3 C8 + JSR SubCC84D ; CPU:$C1A0 PRG:01A0 20 4D C8 + JSR DecodeCoursePackage ; CPU:$C1A3 PRG:01A3 20 78 DD + LDX active_controller_index ; CPU:$C1A6 PRG:01A6 A6 7A + LDA $40,X ; CPU:$C1A8 PRG:01A8 B5 40 + STA $3B ; CPU:$C1AA PRG:01AA 85 3B + LDA $3E,X ; CPU:$C1AC PRG:01AC B5 3E + STA $38 ; CPU:$C1AE PRG:01AE 85 38 + LDA $7B,X ; CPU:$C1B0 PRG:01B0 B5 7B + BNE SubCC136_Loop9 ; CPU:$C1B2 PRG:01B2 D0 08 + LDA $7E ; CPU:$C1B4 PRG:01B4 A5 7E + STA $3B ; CPU:$C1B6 PRG:01B6 85 3B + LDA $7D ; CPU:$C1B8 PRG:01B8 A5 7D + STA $38 ; CPU:$C1BA PRG:01BA 85 38 ; --------------------------------------------------------------------------- ; Label_C1BC @@ -636,14 +636,14 @@ Label_C199: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C1BC: - LDA $87 ; C1BC: A5 87 - BEQ Label_C1CA ; C1BE: F0 0A - LDA $49 ; C1C0: A5 49 - CMP $4A ; C1C2: C5 4A - BEQ Label_C1D1 ; C1C4: F0 0B - LDA $4A ; C1C6: A5 4A - BNE Label_C1CD ; C1C8: D0 03 +SubCC136_Loop9: + LDA $87 ; CPU:$C1BC PRG:01BC A5 87 + BEQ SubCC136_Loop10 ; CPU:$C1BE PRG:01BE F0 0A + LDA $49 ; CPU:$C1C0 PRG:01C0 A5 49 + CMP $4A ; CPU:$C1C2 PRG:01C2 C5 4A + BEQ SubCC136_Loop12 ; CPU:$C1C4 PRG:01C4 F0 0B + LDA $4A ; CPU:$C1C6 PRG:01C6 A5 4A + BNE SubCC136_Loop11 ; CPU:$C1C8 PRG:01C8 D0 03 ; --------------------------------------------------------------------------- ; Label_C1CA @@ -660,8 +660,8 @@ Label_C1BC: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C1CA: - JSR UploadGeneratedCourseGrid ; C1CA: 20 98 FC +SubCC136_Loop10: + JSR UploadGeneratedCourseGrid ; CPU:$C1CA PRG:01CA 20 98 FC ; --------------------------------------------------------------------------- ; Label_C1CD @@ -678,9 +678,9 @@ Label_C1CA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C1CD: - LDA $49 ; C1CD: A5 49 - STA $4A ; C1CF: 85 4A +SubCC136_Loop11: + LDA $49 ; CPU:$C1CD PRG:01CD A5 49 + STA $4A ; CPU:$C1CF PRG:01CF 85 4A ; --------------------------------------------------------------------------- ; Label_C1D1 @@ -697,20 +697,20 @@ Label_C1CD: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C1D1: - LDA #$00 ; C1D1: A9 00 - STA $1A ; C1D3: 85 1A - JSR SubCFE72 ; C1D5: 20 72 FE - JSR SubCC916 ; C1D8: 20 16 C9 - JSR SubCFCE6 ; C1DB: 20 E6 FC - JSR SpriteOffsetForController ; C1DE: 20 94 C8 - LDA $3B ; C1E1: A5 3B - STA $0200,X ; C1E3: 9D 00 02 - LDA #$DD ; C1E6: A9 DD - CPX #$00 ; C1E8: E0 00 - BEQ Label_C1EF ; C1EA: F0 03 - CLC ; C1EC: 18 - ADC #$16 ; C1ED: 69 16 +SubCC136_Loop12: + LDA #$00 ; CPU:$C1D1 PRG:01D1 A9 00 + STA $1A ; CPU:$C1D3 PRG:01D3 85 1A + JSR SubCFE72 ; CPU:$C1D5 PRG:01D5 20 72 FE + JSR SubCC916 ; CPU:$C1D8 PRG:01D8 20 16 C9 + JSR SubCFCE6 ; CPU:$C1DB PRG:01DB 20 E6 FC + JSR SpriteOffsetForController ; CPU:$C1DE PRG:01DE 20 94 C8 + LDA $3B ; CPU:$C1E1 PRG:01E1 A5 3B + STA $0200,X ; CPU:$C1E3 PRG:01E3 9D 00 02 + LDA #$DD ; CPU:$C1E6 PRG:01E6 A9 DD + CPX #$00 ; CPU:$C1E8 PRG:01E8 E0 00 + BEQ SubCC136_Loop13 ; CPU:$C1EA PRG:01EA F0 03 + CLC ; CPU:$C1EC PRG:01EC 18 + ADC #$16 ; CPU:$C1ED PRG:01ED 69 16 ; --------------------------------------------------------------------------- ; Label_C1EF @@ -727,38 +727,38 @@ Label_C1D1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C1EF: - STA $0201,X ; C1EF: 9D 01 02 - LDA #$01 ; C1F2: A9 01 - STA $0202,X ; C1F4: 9D 02 02 - LDA $38 ; C1F7: A5 38 - STA $0203,X ; C1F9: 9D 03 02 - LDA $3B ; C1FC: A5 3B - STA $78 ; C1FE: 85 78 - LDA $38 ; C200: A5 38 - STA $79 ; C202: 85 79 - JSR SubCD65D ; C204: 20 5D D6 - JSR SubCD9FF ; C207: 20 FF D9 - LDX active_controller_index ; C20A: A6 7A - LDA $0141,X ; C20C: BD 41 01 - STA club_selection_index ; C20F: 85 17 - JSR SubCCE64 ; C211: 20 64 CE - LDX active_controller_index ; C214: A6 7A - LDA club_selection_index ; C216: A5 17 - STA $0141,X ; C218: 9D 41 01 - LDA $34 ; C21B: A5 34 - CMP #$02 ; C21D: C9 02 - BEQ Label_C240 ; C21F: F0 1F - LDA #$02 ; C221: A9 02 - STA APUNOISECTRL ; C223: 8D 0C 40 - LDA #$09 ; C226: A9 09 - STA APUNOISEPERIOD ; C228: 8D 0E 40 - LDA #$10 ; C22B: A9 10 - STA APUNOISELENGTH ; C22D: 8D 0F 40 - LDX active_controller_index ; C230: A6 7A - LDA $7B,X ; C232: B5 7B - BNE Label_C238 ; C234: D0 02 - INC $7B,X ; C236: F6 7B +SubCC136_Loop13: + STA $0201,X ; CPU:$C1EF PRG:01EF 9D 01 02 + LDA #$01 ; CPU:$C1F2 PRG:01F2 A9 01 + STA $0202,X ; CPU:$C1F4 PRG:01F4 9D 02 02 + LDA $38 ; CPU:$C1F7 PRG:01F7 A5 38 + STA $0203,X ; CPU:$C1F9 PRG:01F9 9D 03 02 + LDA $3B ; CPU:$C1FC PRG:01FC A5 3B + STA $78 ; CPU:$C1FE PRG:01FE 85 78 + LDA $38 ; CPU:$C200 PRG:0200 A5 38 + STA $79 ; CPU:$C202 PRG:0202 85 79 + JSR SubCD65D ; CPU:$C204 PRG:0204 20 5D D6 + JSR SubCD9FF ; CPU:$C207 PRG:0207 20 FF D9 + LDX active_controller_index ; CPU:$C20A PRG:020A A6 7A + LDA $0141,X ; CPU:$C20C PRG:020C BD 41 01 + STA club_selection_index ; CPU:$C20F PRG:020F 85 17 + JSR SubCCE64 ; CPU:$C211 PRG:0211 20 64 CE + LDX active_controller_index ; CPU:$C214 PRG:0214 A6 7A + LDA club_selection_index ; CPU:$C216 PRG:0216 A5 17 + STA $0141,X ; CPU:$C218 PRG:0218 9D 41 01 + LDA sequence_phase ; CPU:$C21B PRG:021B A5 34 + CMP #$02 ; CPU:$C21D PRG:021D C9 02 + BEQ SubCC136_Loop15 ; CPU:$C21F PRG:021F F0 1F + LDA #$02 ; CPU:$C221 PRG:0221 A9 02 + STA APUNOISECTRL ; CPU:$C223 PRG:0223 8D 0C 40 + LDA #$09 ; CPU:$C226 PRG:0226 A9 09 + STA APUNOISEPERIOD ; CPU:$C228 PRG:0228 8D 0E 40 + LDA #$10 ; CPU:$C22B PRG:022B A9 10 + STA APUNOISELENGTH ; CPU:$C22D PRG:022D 8D 0F 40 + LDX active_controller_index ; CPU:$C230 PRG:0230 A6 7A + LDA $7B,X ; CPU:$C232 PRG:0232 B5 7B + BNE SubCC136_Loop14 ; CPU:$C234 PRG:0234 D0 02 + INC $7B,X ; CPU:$C236 PRG:0236 F6 7B ; --------------------------------------------------------------------------- ; Label_C238 @@ -775,10 +775,10 @@ Label_C1EF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C238: - JSR SubCD13E ; C238: 20 3E D1 - LDA #$00 ; C23B: A9 00 - STA APUTRIANGLECTRL ; C23D: 8D 08 40 +SubCC136_Loop14: + JSR SubCD13E ; CPU:$C238 PRG:0238 20 3E D1 + LDA #$00 ; CPU:$C23B PRG:023B A9 00 + STA APUTRIANGLECTRL ; CPU:$C23D PRG:023D 8D 08 40 ; --------------------------------------------------------------------------- ; Label_C240 @@ -795,26 +795,26 @@ Label_C238: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C240: - LDY #$C8 ; C240: A0 C8 - LDX #$C6 ; C242: A2 C6 - JSR WaitForFramePreservingY ; C244: 20 81 C8 - JSR RestorePpuCtrlShadow ; C247: 20 B5 C8 - LDA #$00 ; C24A: A9 00 - STA APUPULSE1CTRL ; C24C: 8D 00 40 - JSR SubCCA8E ; C24F: 20 8E CA - JSR SubCC916 ; C252: 20 16 C9 - LDX $7A ; C255: A6 7A - LDA $3B ; C257: A5 3B - STA $40,X ; C259: 95 40 - LDA $38 ; C25B: A5 38 - STA $3E,X ; C25D: 95 3E - LDA $34 ; C25F: A5 34 - CMP #$02 ; C261: C9 02 - BEQ Label_C2BA ; C263: F0 55 - LDA $49 ; C265: A5 49 - BEQ Label_C26C ; C267: F0 03 - JMP SubCC3B1 ; C269: 4C B1 C3 +SubCC136_Loop15: + LDY #$C8 ; CPU:$C240 PRG:0240 A0 C8 + LDX #$C6 ; CPU:$C242 PRG:0242 A2 C6 + JSR WaitForFramePreservingY ; CPU:$C244 PRG:0244 20 81 C8 + JSR RestorePpuCtrlShadow ; CPU:$C247 PRG:0247 20 B5 C8 + LDA #$00 ; CPU:$C24A PRG:024A A9 00 + STA APUPULSE1CTRL ; CPU:$C24C PRG:024C 8D 00 40 + JSR SubCCA8E ; CPU:$C24F PRG:024F 20 8E CA + JSR SubCC916 ; CPU:$C252 PRG:0252 20 16 C9 + LDX active_controller_index ; CPU:$C255 PRG:0255 A6 7A + LDA $3B ; CPU:$C257 PRG:0257 A5 3B + STA $40,X ; CPU:$C259 PRG:0259 95 40 + LDA $38 ; CPU:$C25B PRG:025B A5 38 + STA $3E,X ; CPU:$C25D PRG:025D 95 3E + LDA sequence_phase ; CPU:$C25F PRG:025F A5 34 + CMP #$02 ; CPU:$C261 PRG:0261 C9 02 + BEQ SubCC136_Loop19 ; CPU:$C263 PRG:0263 F0 55 + LDA $49 ; CPU:$C265 PRG:0265 A5 49 + BEQ SubCC136_Loop16 ; CPU:$C267 PRG:0267 F0 03 + JMP SubCC3B1 ; CPU:$C269 PRG:0269 4C B1 C3 ; --------------------------------------------------------------------------- ; Label_C26C @@ -831,13 +831,13 @@ Label_C240: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C26C: - JSR SubCD65A ; C26C: 20 5A D6 - LDA $53 ; C26F: A5 53 - BNE Label_C2C2 ; C271: D0 4F - LDA $52 ; C273: A5 52 - BEQ Label_C27A ; C275: F0 03 - JMP SubCC305 ; C277: 4C 05 C3 +SubCC136_Loop16: + JSR SubCD65A ; CPU:$C26C PRG:026C 20 5A D6 + LDA $53 ; CPU:$C26F PRG:026F A5 53 + BNE SubCC136_Loop21 ; CPU:$C271 PRG:0271 D0 4F + LDA $52 ; CPU:$C273 PRG:0273 A5 52 + BEQ SubCC136_Loop17 ; CPU:$C275 PRG:0275 F0 03 + JMP SubCC305 ; CPU:$C277 PRG:0277 4C 05 C3 ; --------------------------------------------------------------------------- ; Label_C27A @@ -854,13 +854,13 @@ Label_C26C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C27A: - LDA $4F ; C27A: A5 4F - ORA $56 ; C27C: 05 56 - BNE Label_C2D9 ; C27E: D0 59 - LDA $55 ; C280: A5 55 - BNE Label_C286 ; C282: D0 02 - BEQ Label_C2BF ; C284: F0 39 +SubCC136_Loop17: + LDA $4F ; CPU:$C27A PRG:027A A5 4F + ORA $56 ; CPU:$C27C PRG:027C 05 56 + BNE SubCC136_Loop22 ; CPU:$C27E PRG:027E D0 59 + LDA $55 ; CPU:$C280 PRG:0280 A5 55 + BNE SubCC136_Loop18 ; CPU:$C282 PRG:0282 D0 02 + BEQ SubCC136_Loop20 ; CPU:$C284 PRG:0284 F0 39 ; --------------------------------------------------------------------------- ; Label_C286 @@ -877,28 +877,28 @@ Label_C27A: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C286: - LDA #$06 ; C286: A9 06 - STA APUNOISECTRL ; C288: 8D 0C 40 - LDA #$02 ; C28B: A9 02 - STA APUNOISEPERIOD ; C28D: 8D 0E 40 - LDA #$30 ; C290: A9 30 - STA APUNOISELENGTH ; C292: 8D 0F 40 - JSR SubCFD12 ; C295: 20 12 FD - LDX $7A ; C298: A6 7A - LDA $3B ; C29A: A5 3B - STA $40,X ; C29C: 95 40 - LDA $38 ; C29E: A5 38 - STA $3E,X ; C2A0: 95 3E - JSR SubCCA8E ; C2A2: 20 8E CA - LDA #$09 ; C2A5: A9 09 - JSR SubCFEBF ; C2A7: 20 BF FE - JSR SpriteOffsetForController ; C2AA: 20 94 C8 - LDA $3B ; C2AD: A5 3B - STA $0200,X ; C2AF: 9D 00 02 - LDA $38 ; C2B2: A5 38 - STA $0203,X ; C2B4: 9D 03 02 - JMP SubCC383 ; C2B7: 4C 83 C3 +SubCC136_Loop18: + LDA #$06 ; CPU:$C286 PRG:0286 A9 06 + STA APUNOISECTRL ; CPU:$C288 PRG:0288 8D 0C 40 + LDA #$02 ; CPU:$C28B PRG:028B A9 02 + STA APUNOISEPERIOD ; CPU:$C28D PRG:028D 8D 0E 40 + LDA #$30 ; CPU:$C290 PRG:0290 A9 30 + STA APUNOISELENGTH ; CPU:$C292 PRG:0292 8D 0F 40 + JSR SubCFD12 ; CPU:$C295 PRG:0295 20 12 FD + LDX active_controller_index ; CPU:$C298 PRG:0298 A6 7A + LDA $3B ; CPU:$C29A PRG:029A A5 3B + STA $40,X ; CPU:$C29C PRG:029C 95 40 + LDA $38 ; CPU:$C29E PRG:029E A5 38 + STA $3E,X ; CPU:$C2A0 PRG:02A0 95 3E + JSR SubCCA8E ; CPU:$C2A2 PRG:02A2 20 8E CA + LDA #$09 ; CPU:$C2A5 PRG:02A5 A9 09 + JSR SubCFEBF ; CPU:$C2A7 PRG:02A7 20 BF FE + JSR SpriteOffsetForController ; CPU:$C2AA PRG:02AA 20 94 C8 + LDA $3B ; CPU:$C2AD PRG:02AD A5 3B + STA $0200,X ; CPU:$C2AF PRG:02AF 9D 00 02 + LDA $38 ; CPU:$C2B2 PRG:02B2 A5 38 + STA $0203,X ; CPU:$C2B4 PRG:02B4 9D 03 02 + JMP SubCC383 ; CPU:$C2B7 PRG:02B7 4C 83 C3 ; --------------------------------------------------------------------------- ; Label_C2BA @@ -915,9 +915,9 @@ Label_C286: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C2BA: - LDA #$8B ; C2BA: A9 8B - STA $027D ; C2BC: 8D 7D 02 +SubCC136_Loop19: + LDA #$8B ; CPU:$C2BA PRG:02BA A9 8B + STA $027D ; CPU:$C2BC PRG:02BC 8D 7D 02 ; --------------------------------------------------------------------------- ; Label_C2BF @@ -934,8 +934,8 @@ Label_C2BA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C2BF: - JMP SubCC380 ; C2BF: 4C 80 C3 +SubCC136_Loop20: + JMP SubCC380 ; CPU:$C2BF PRG:02BF 4C 80 C3 ; --------------------------------------------------------------------------- ; Label_C2C2 @@ -952,16 +952,16 @@ Label_C2BF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C2C2: - LDA #$04 ; C2C2: A9 04 - STA APUNOISECTRL ; C2C4: 8D 0C 40 - LDA #$0E ; C2C7: A9 0E - STA APUNOISEPERIOD ; C2C9: 8D 0E 40 - LDA #$20 ; C2CC: A9 20 - STA APUNOISELENGTH ; C2CE: 8D 0F 40 - LDA #$0A ; C2D1: A9 0A - JSR SubCFEBF ; C2D3: 20 BF FE - JMP SubCC380 ; C2D6: 4C 80 C3 +SubCC136_Loop21: + LDA #$04 ; CPU:$C2C2 PRG:02C2 A9 04 + STA APUNOISECTRL ; CPU:$C2C4 PRG:02C4 8D 0C 40 + LDA #$0E ; CPU:$C2C7 PRG:02C7 A9 0E + STA APUNOISEPERIOD ; CPU:$C2C9 PRG:02C9 8D 0E 40 + LDA #$20 ; CPU:$C2CC PRG:02CC A9 20 + STA APUNOISELENGTH ; CPU:$C2CE PRG:02CE 8D 0F 40 + LDA #$0A ; CPU:$C2D1 PRG:02D1 A9 0A + JSR SubCFEBF ; CPU:$C2D3 PRG:02D3 20 BF FE + JMP SubCC380 ; CPU:$C2D6 PRG:02D6 4C 80 C3 ; --------------------------------------------------------------------------- ; Label_C2D9 @@ -978,25 +978,25 @@ Label_C2C2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C2D9: - LDA #$FF ; C2D9: A9 FF - STA $0280 ; C2DB: 8D 80 02 - STA $0208 ; C2DE: 8D 08 02 - LDA #$08 ; C2E1: A9 08 - JSR SubCFEBF ; C2E3: 20 BF FE - JSR SubCC907 ; C2E6: 20 07 C9 - LDX $7A ; C2E9: A6 7A - LDA $78 ; C2EB: A5 78 - STA $40,X ; C2ED: 95 40 - STA $3B ; C2EF: 85 3B - LDA $79 ; C2F1: A5 79 - STA $3E,X ; C2F3: 95 3E - STA $38 ; C2F5: 85 38 - JSR SpriteOffsetForController ; C2F7: 20 94 C8 - LDA #$FF ; C2FA: A9 FF - STA $0200,X ; C2FC: 9D 00 02 - JSR SubCCA8E ; C2FF: 20 8E CA - JMP SubCC383 ; C302: 4C 83 C3 +SubCC136_Loop22: + LDA #$FF ; CPU:$C2D9 PRG:02D9 A9 FF + STA $0280 ; CPU:$C2DB PRG:02DB 8D 80 02 + STA $0208 ; CPU:$C2DE PRG:02DE 8D 08 02 + LDA #$08 ; CPU:$C2E1 PRG:02E1 A9 08 + JSR SubCFEBF ; CPU:$C2E3 PRG:02E3 20 BF FE + JSR SubCC907 ; CPU:$C2E6 PRG:02E6 20 07 C9 + LDX active_controller_index ; CPU:$C2E9 PRG:02E9 A6 7A + LDA $78 ; CPU:$C2EB PRG:02EB A5 78 + STA $40,X ; CPU:$C2ED PRG:02ED 95 40 + STA $3B ; CPU:$C2EF PRG:02EF 85 3B + LDA $79 ; CPU:$C2F1 PRG:02F1 A5 79 + STA $3E,X ; CPU:$C2F3 PRG:02F3 95 3E + STA $38 ; CPU:$C2F5 PRG:02F5 85 38 + JSR SpriteOffsetForController ; CPU:$C2F7 PRG:02F7 20 94 C8 + LDA #$FF ; CPU:$C2FA PRG:02FA A9 FF + STA $0200,X ; CPU:$C2FC PRG:02FC 9D 00 02 + JSR SubCCA8E ; CPU:$C2FF PRG:02FF 20 8E CA + JMP SubCC383 ; CPU:$C302 PRG:0302 4C 83 C3 ; --------------------------------------------------------------------------- ; SubCC305 @@ -1014,29 +1014,29 @@ Label_C2D9: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC305: - LDX $7A ; C305: A6 7A - LDA $40,X ; C307: B5 40 - CMP $65 ; C309: C5 65 - BNE Label_C33E ; C30B: D0 31 - LDA $3E,X ; C30D: B5 3E - CMP $66 ; C30F: C5 66 - BNE Label_C33E ; C311: D0 2B - JSR SubCC593 ; C313: 20 93 C5 - LDA $7B,X ; C316: B5 7B - CMP #$02 ; C318: C9 02 - BNE Label_C336 ; C31A: D0 1A - LDA $7F,X ; C31C: B5 7F - BNE Label_C336 ; C31E: D0 16 - LDA $40,X ; C320: B5 40 - STA $3B ; C322: 85 3B - LDA $3E,X ; C324: B5 3E - STA $38 ; C326: 85 38 - JSR SubCE52F ; C328: 20 2F E5 - JSR SubCC593 ; C32B: 20 93 C5 - LDA $3B ; C32E: A5 3B - STA $40,X ; C330: 95 40 - LDA $38 ; C332: A5 38 - STA $3E,X ; C334: 95 3E + LDX active_controller_index ; CPU:$C305 PRG:0305 A6 7A + LDA $40,X ; CPU:$C307 PRG:0307 B5 40 + CMP $65 ; CPU:$C309 PRG:0309 C5 65 + BNE SubCC305_Loop2 ; CPU:$C30B PRG:030B D0 31 + LDA $3E,X ; CPU:$C30D PRG:030D B5 3E + CMP $66 ; CPU:$C30F PRG:030F C5 66 + BNE SubCC305_Loop2 ; CPU:$C311 PRG:0311 D0 2B + JSR SubCC593 ; CPU:$C313 PRG:0313 20 93 C5 + LDA $7B,X ; CPU:$C316 PRG:0316 B5 7B + CMP #$02 ; CPU:$C318 PRG:0318 C9 02 + BNE SubCC305_Loop ; CPU:$C31A PRG:031A D0 1A + LDA $7F,X ; CPU:$C31C PRG:031C B5 7F + BNE SubCC305_Loop ; CPU:$C31E PRG:031E D0 16 + LDA $40,X ; CPU:$C320 PRG:0320 B5 40 + STA $3B ; CPU:$C322 PRG:0322 85 3B + LDA $3E,X ; CPU:$C324 PRG:0324 B5 3E + STA $38 ; CPU:$C326 PRG:0326 85 38 + JSR SubCE52F ; CPU:$C328 PRG:0328 20 2F E5 + JSR SubCC593 ; CPU:$C32B PRG:032B 20 93 C5 + LDA $3B ; CPU:$C32E PRG:032E A5 3B + STA $40,X ; CPU:$C330 PRG:0330 95 40 + LDA $38 ; CPU:$C332 PRG:0332 A5 38 + STA $3E,X ; CPU:$C334 PRG:0334 95 3E ; --------------------------------------------------------------------------- ; Label_C336 @@ -1053,10 +1053,10 @@ SubCC305: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C336: - LDA #$FF ; C336: A9 FF - STA $0280 ; C338: 8D 80 02 - JMP SubCC41B ; C33B: 4C 1B C4 +SubCC305_Loop: + LDA #$FF ; CPU:$C336 PRG:0336 A9 FF + STA $0280 ; CPU:$C338 PRG:0338 8D 80 02 + JMP SubCC41B ; CPU:$C33B PRG:033B 4C 1B C4 ; --------------------------------------------------------------------------- ; Label_C33E @@ -1073,27 +1073,27 @@ Label_C336: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C33E: - LDA #$02 ; C33E: A9 02 - STA $7B,X ; C340: 95 7B - LDA $0D ; C342: A5 0D - BEQ Label_C369 ; C344: F0 23 - JSR SubCC593 ; C346: 20 93 C5 - LDA $7B,X ; C349: B5 7B - CMP #$02 ; C34B: C9 02 - BCC SubCC380 ; C34D: 90 31 - LDA $7F,X ; C34F: B5 7F - BNE Label_C369 ; C351: D0 16 - LDA $40,X ; C353: B5 40 - STA $3B ; C355: 85 3B - LDA $3E,X ; C357: B5 3E - STA $38 ; C359: 85 38 - JSR SubCE52F ; C35B: 20 2F E5 - JSR SubCC593 ; C35E: 20 93 C5 - LDA $3B ; C361: A5 3B - STA $40,X ; C363: 95 40 - LDA $38 ; C365: A5 38 - STA $3E,X ; C367: 95 3E +SubCC305_Loop2: + LDA #$02 ; CPU:$C33E PRG:033E A9 02 + STA $7B,X ; CPU:$C340 PRG:0340 95 7B + LDA menu_selection ; CPU:$C342 PRG:0342 A5 0D + BEQ SubCC305_Loop3 ; CPU:$C344 PRG:0344 F0 23 + JSR SubCC593 ; CPU:$C346 PRG:0346 20 93 C5 + LDA $7B,X ; CPU:$C349 PRG:0349 B5 7B + CMP #$02 ; CPU:$C34B PRG:034B C9 02 + BCC SubCC380 ; CPU:$C34D PRG:034D 90 31 + LDA $7F,X ; CPU:$C34F PRG:034F B5 7F + BNE SubCC305_Loop3 ; CPU:$C351 PRG:0351 D0 16 + LDA $40,X ; CPU:$C353 PRG:0353 B5 40 + STA $3B ; CPU:$C355 PRG:0355 85 3B + LDA $3E,X ; CPU:$C357 PRG:0357 B5 3E + STA $38 ; CPU:$C359 PRG:0359 85 38 + JSR SubCE52F ; CPU:$C35B PRG:035B 20 2F E5 + JSR SubCC593 ; CPU:$C35E PRG:035E 20 93 C5 + LDA $3B ; CPU:$C361 PRG:0361 A5 3B + STA $40,X ; CPU:$C363 PRG:0363 95 40 + LDA $38 ; CPU:$C365 PRG:0365 A5 38 + STA $3E,X ; CPU:$C367 PRG:0367 95 3E ; --------------------------------------------------------------------------- ; Label_C369 @@ -1110,18 +1110,18 @@ Label_C33E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C369: - LDX $7A ; C369: A6 7A - LDA $40,X ; C36B: B5 40 - STA $3B ; C36D: 85 3B - LDA $3E,X ; C36F: B5 3E - STA $38 ; C371: 85 38 - JSR SubCE52F ; C373: 20 2F E5 - LDX $7A ; C376: A6 7A - LDA $3B ; C378: A5 3B - STA $40,X ; C37A: 95 40 - LDA $38 ; C37C: A5 38 - STA $3E,X ; C37E: 95 3E +SubCC305_Loop3: + LDX active_controller_index ; CPU:$C369 PRG:0369 A6 7A + LDA $40,X ; CPU:$C36B PRG:036B B5 40 + STA $3B ; CPU:$C36D PRG:036D 85 3B + LDA $3E,X ; CPU:$C36F PRG:036F B5 3E + STA $38 ; CPU:$C371 PRG:0371 85 38 + JSR SubCE52F ; CPU:$C373 PRG:0373 20 2F E5 + LDX active_controller_index ; CPU:$C376 PRG:0376 A6 7A + LDA $3B ; CPU:$C378 PRG:0378 A5 3B + STA $40,X ; CPU:$C37A PRG:037A 95 40 + LDA $38 ; CPU:$C37C PRG:037C A5 38 + STA $3E,X ; CPU:$C37E PRG:037E 95 3E ; --------------------------------------------------------------------------- ; SubCC380 @@ -1139,7 +1139,7 @@ Label_C369: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC380: - JSR SubCC907 ; C380: 20 07 C9 + JSR SubCC907 ; CPU:$C380 PRG:0380 20 07 C9 ; --------------------------------------------------------------------------- ; SubCC383 @@ -1157,20 +1157,20 @@ SubCC380: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC383: - LDA $0D ; C383: A5 0D - CMP #$02 ; C385: C9 02 - BNE Label_C3AE ; C387: D0 25 - LDX $7A ; C389: A6 7A - TXA ; C38B: 8A - EOR #$01 ; C38C: 49 01 - TAY ; C38E: A8 - LDA a:$007B,Y ; C38F: B9 7B 00 - CMP #$03 ; C392: C9 03 - BNE Label_C3AE ; C394: D0 18 - LDA a:$002C,Y ; C396: B9 2C 00 - CMP $2C,X ; C399: D5 2C - BEQ Label_C39F ; C39B: F0 02 - BCS Label_C3AE ; C39D: B0 0F + LDA menu_selection ; CPU:$C383 PRG:0383 A5 0D + CMP #$02 ; CPU:$C385 PRG:0385 C9 02 + BNE SubCC383_Loop2 ; CPU:$C387 PRG:0387 D0 25 + LDX active_controller_index ; CPU:$C389 PRG:0389 A6 7A + TXA ; CPU:$C38B PRG:038B 8A + EOR #$01 ; CPU:$C38C PRG:038C 49 01 + TAY ; CPU:$C38E PRG:038E A8 + LDA a:$007B,Y ; CPU:$C38F PRG:038F B9 7B 00 + CMP #$03 ; CPU:$C392 PRG:0392 C9 03 + BNE SubCC383_Loop2 ; CPU:$C394 PRG:0394 D0 18 + LDA a:$002C,Y ; CPU:$C396 PRG:0396 B9 2C 00 + CMP $2C,X ; CPU:$C399 PRG:0399 D5 2C + BEQ SubCC383_Loop ; CPU:$C39B PRG:039B F0 02 + BCS SubCC383_Loop2 ; CPU:$C39D PRG:039D B0 0F ; --------------------------------------------------------------------------- ; Label_C39F @@ -1187,16 +1187,16 @@ SubCC383: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C39F: - TYA ; C39F: 98 - STA $84 ; C3A0: 85 84 - ASL A ; C3A2: 0A - SEC ; C3A3: 38 - SBC #$01 ; C3A4: E9 01 - CLC ; C3A6: 18 - ADC $14 ; C3A7: 65 14 - STA $14 ; C3A9: 85 14 - JMP SubCC4CB ; C3AB: 4C CB C4 +SubCC383_Loop: + TYA ; CPU:$C39F PRG:039F 98 + STA $84 ; CPU:$C3A0 PRG:03A0 85 84 + ASL A ; CPU:$C3A2 PRG:03A2 0A + SEC ; CPU:$C3A3 PRG:03A3 38 + SBC #$01 ; CPU:$C3A4 PRG:03A4 E9 01 + CLC ; CPU:$C3A6 PRG:03A6 18 + ADC $14 ; CPU:$C3A7 PRG:03A7 65 14 + STA $14 ; CPU:$C3A9 PRG:03A9 85 14 + JMP SubCC4CB ; CPU:$C3AB PRG:03AB 4C CB C4 ; --------------------------------------------------------------------------- ; Label_C3AE @@ -1213,8 +1213,8 @@ Label_C39F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C3AE: - JMP SubCC136 ; C3AE: 4C 36 C1 +SubCC383_Loop2: + JMP SubCC136 ; CPU:$C3AE PRG:03AE 4C 36 C1 ; --------------------------------------------------------------------------- ; SubCC3B1 @@ -1232,12 +1232,12 @@ Label_C3AE: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC3B1: - LDA $76 ; C3B1: A5 76 - BNE SubCC41B ; C3B3: D0 66 - LDA $4F ; C3B5: A5 4F - BNE Label_C3BF ; C3B7: D0 06 - JSR SubCC907 ; C3B9: 20 07 C9 - JMP SubCC383 ; C3BC: 4C 83 C3 + LDA $76 ; CPU:$C3B1 PRG:03B1 A5 76 + BNE SubCC41B ; CPU:$C3B3 PRG:03B3 D0 66 + LDA $4F ; CPU:$C3B5 PRG:03B5 A5 4F + BNE SubCC3B1_Loop ; CPU:$C3B7 PRG:03B7 D0 06 + JSR SubCC907 ; CPU:$C3B9 PRG:03B9 20 07 C9 + JMP SubCC383 ; CPU:$C3BC PRG:03BC 4C 83 C3 ; --------------------------------------------------------------------------- ; Label_C3BF @@ -1254,38 +1254,38 @@ SubCC3B1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C3BF: - LDX $7A ; C3BF: A6 7A - LDY #$01 ; C3C1: A0 01 - STY $7B,X ; C3C3: 94 7B - DEY ; C3C5: 88 - STY $7F,X ; C3C6: 94 7F - STY PPUMASK ; C3C8: 8C 01 20 - STY $49 ; C3CB: 84 49 - DEY ; C3CD: 88 - STY $0288 ; C3CE: 8C 88 02 - STY $028C ; C3D1: 8C 8C 02 - STY $0290 ; C3D4: 8C 90 02 - JSR DecodeCoursePackage ; C3D7: 20 78 DD - LDA $49 ; C3DA: A5 49 - STA $4A ; C3DC: 85 4A - LDA $3B ; C3DE: A5 3B - SEC ; C3E0: 38 - SBC $67 ; C3E1: E5 67 - STA $6C ; C3E3: 85 6C - LDA $38 ; C3E5: A5 38 - SEC ; C3E7: 38 - SBC $68 ; C3E8: E5 68 - STA $6B ; C3EA: 85 6B - JSR SubCD906 ; C3EC: 20 06 D9 - STA $45 ; C3EF: 85 45 - LDA $65 ; C3F1: A5 65 - STA $3B ; C3F3: 85 3B - LDA $66 ; C3F5: A5 66 - STA $38 ; C3F7: 85 38 - LDA #$80 ; C3F9: A9 80 - STA $3C ; C3FB: 85 3C - STA $39 ; C3FD: 85 39 +SubCC3B1_Loop: + LDX active_controller_index ; CPU:$C3BF PRG:03BF A6 7A + LDY #$01 ; CPU:$C3C1 PRG:03C1 A0 01 + STY $7B,X ; CPU:$C3C3 PRG:03C3 94 7B + DEY ; CPU:$C3C5 PRG:03C5 88 + STY $7F,X ; CPU:$C3C6 PRG:03C6 94 7F + STY PPUMASK ; CPU:$C3C8 PRG:03C8 8C 01 20 + STY $49 ; CPU:$C3CB PRG:03CB 84 49 + DEY ; CPU:$C3CD PRG:03CD 88 + STY $0288 ; CPU:$C3CE PRG:03CE 8C 88 02 + STY $028C ; CPU:$C3D1 PRG:03D1 8C 8C 02 + STY $0290 ; CPU:$C3D4 PRG:03D4 8C 90 02 + JSR DecodeCoursePackage ; CPU:$C3D7 PRG:03D7 20 78 DD + LDA $49 ; CPU:$C3DA PRG:03DA A5 49 + STA $4A ; CPU:$C3DC PRG:03DC 85 4A + LDA $3B ; CPU:$C3DE PRG:03DE A5 3B + SEC ; CPU:$C3E0 PRG:03E0 38 + SBC $67 ; CPU:$C3E1 PRG:03E1 E5 67 + STA $6C ; CPU:$C3E3 PRG:03E3 85 6C + LDA $38 ; CPU:$C3E5 PRG:03E5 A5 38 + SEC ; CPU:$C3E7 PRG:03E7 38 + SBC $68 ; CPU:$C3E8 PRG:03E8 E5 68 + STA $6B ; CPU:$C3EA PRG:03EA 85 6B + JSR SubCD906 ; CPU:$C3EC PRG:03EC 20 06 D9 + STA aim_adjust_direction ; CPU:$C3EF PRG:03EF 85 45 + LDA $65 ; CPU:$C3F1 PRG:03F1 A5 65 + STA $3B ; CPU:$C3F3 PRG:03F3 85 3B + LDA $66 ; CPU:$C3F5 PRG:03F5 A5 66 + STA $38 ; CPU:$C3F7 PRG:03F7 85 38 + LDA #$80 ; CPU:$C3F9 PRG:03F9 A9 80 + STA $3C ; CPU:$C3FB PRG:03FB 85 3C + STA $39 ; CPU:$C3FD PRG:03FD 85 39 ; --------------------------------------------------------------------------- ; Label_C3FF @@ -1302,19 +1302,19 @@ Label_C3BF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C3FF: - JSR SubCD48B ; C3FF: 20 8B D4 - JSR SubCD65D ; C402: 20 5D D6 - LDA $52 ; C405: A5 52 - BNE Label_C3FF ; C407: D0 F6 - LDX $7A ; C409: A6 7A - LDA $3B ; C40B: A5 3B - STA $40,X ; C40D: 95 40 - LDA $38 ; C40F: A5 38 - STA $3E,X ; C411: 95 3E - LDA #$0D ; C413: A9 0D - STA $0141,X ; C415: 9D 41 01 - JMP SubCC380 ; C418: 4C 80 C3 +SubCC3B1_OnNonzero: + JSR SubCD48B ; CPU:$C3FF PRG:03FF 20 8B D4 + JSR SubCD65D ; CPU:$C402 PRG:0402 20 5D D6 + LDA $52 ; CPU:$C405 PRG:0405 A5 52 + BNE SubCC3B1_OnNonzero ; CPU:$C407 PRG:0407 D0 F6 + LDX active_controller_index ; CPU:$C409 PRG:0409 A6 7A + LDA $3B ; CPU:$C40B PRG:040B A5 3B + STA $40,X ; CPU:$C40D PRG:040D 95 40 + LDA $38 ; CPU:$C40F PRG:040F A5 38 + STA $3E,X ; CPU:$C411 PRG:0411 95 3E + LDA #$0D ; CPU:$C413 PRG:0413 A9 0D + STA $0141,X ; CPU:$C415 PRG:0415 9D 41 01 + JMP SubCC380 ; CPU:$C418 PRG:0418 4C 80 C3 ; --------------------------------------------------------------------------- ; SubCC41B @@ -1332,29 +1332,29 @@ Label_C3FF: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC41B: - LDA #$3F ; C41B: A9 3F - STA APUPULSE1CTRL ; C41D: 8D 00 40 - LDA #$B9 ; C420: A9 B9 - STA APUPULSE1SWEEP ; C422: 8D 01 40 - LDY #$00 ; C425: A0 00 - STY APUPULSE1TIMERLO ; C427: 8C 02 40 - INY ; C42A: C8 - STY APUPULSE1TIMERHI ; C42B: 8C 03 40 - LDY $7A ; C42E: A4 7A - LDA #$03 ; C430: A9 03 - STA a:$007B,Y ; C432: 99 7B 00 - JSR SpriteOffsetForController ; C435: 20 94 C8 - LDA #$FF ; C438: A9 FF - STA $0200,X ; C43A: 9D 00 02 - LDX $7A ; C43D: A6 7A - LDA $83 ; C43F: A5 83 - SEC ; C441: 38 - SBC $2C,X ; C442: F5 2C - CLC ; C444: 18 - ADC #$02 ; C445: 69 02 - CMP #$06 ; C447: C9 06 - BCS Label_C44E ; C449: B0 03 - JSR SubCFEBF ; C44B: 20 BF FE + LDA #$3F ; CPU:$C41B PRG:041B A9 3F + STA APUPULSE1CTRL ; CPU:$C41D PRG:041D 8D 00 40 + LDA #$B9 ; CPU:$C420 PRG:0420 A9 B9 + STA APUPULSE1SWEEP ; CPU:$C422 PRG:0422 8D 01 40 + LDY #$00 ; CPU:$C425 PRG:0425 A0 00 + STY APUPULSE1TIMERLO ; CPU:$C427 PRG:0427 8C 02 40 + INY ; CPU:$C42A PRG:042A C8 + STY APUPULSE1TIMERHI ; CPU:$C42B PRG:042B 8C 03 40 + LDY active_controller_index ; CPU:$C42E PRG:042E A4 7A + LDA #$03 ; CPU:$C430 PRG:0430 A9 03 + STA a:$007B,Y ; CPU:$C432 PRG:0432 99 7B 00 + JSR SpriteOffsetForController ; CPU:$C435 PRG:0435 20 94 C8 + LDA #$FF ; CPU:$C438 PRG:0438 A9 FF + STA $0200,X ; CPU:$C43A PRG:043A 9D 00 02 + LDX active_controller_index ; CPU:$C43D PRG:043D A6 7A + LDA $83 ; CPU:$C43F PRG:043F A5 83 + SEC ; CPU:$C441 PRG:0441 38 + SBC $2C,X ; CPU:$C442 PRG:0442 F5 2C + CLC ; CPU:$C444 PRG:0444 18 + ADC #$02 ; CPU:$C445 PRG:0445 69 02 + CMP #$06 ; CPU:$C447 PRG:0447 C9 06 + BCS SubCC41B_Loop ; CPU:$C449 PRG:0449 B0 03 + JSR SubCFEBF ; CPU:$C44B PRG:044B 20 BF FE ; --------------------------------------------------------------------------- ; Label_C44E @@ -1371,34 +1371,34 @@ SubCC41B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C44E: - LDA $0D ; C44E: A5 0D - BEQ SubCC484 ; C450: F0 32 - LDX $7A ; C452: A6 7A - TXA ; C454: 8A - EOR #$01 ; C455: 49 01 - TAY ; C457: A8 - LDA a:$007B,Y ; C458: B9 7B 00 - CMP #$03 ; C45B: C9 03 - BEQ SubCC484 ; C45D: F0 25 - LDA $0D ; C45F: A5 0D - CMP #$02 ; C461: C9 02 - BNE Label_C481 ; C463: D0 1C - LDA a:$002C,Y ; C465: B9 2C 00 - CMP $2C,X ; C468: D5 2C - BCC Label_C481 ; C46A: 90 15 - TXA ; C46C: 8A - ASL A ; C46D: 0A - SEC ; C46E: 38 - SBC #$01 ; C46F: E9 01 - CLC ; C471: 18 - ADC $14 ; C472: 65 14 - STA $14 ; C474: 85 14 - TXA ; C476: 8A - STA $84 ; C477: 85 84 - LDY #$02 ; C479: A0 02 - JSR WaitFrameGroups ; C47B: 20 09 C9 - JMP SubCC4CB ; C47E: 4C CB C4 +SubCC41B_Loop: + LDA menu_selection ; CPU:$C44E PRG:044E A5 0D + BEQ SubCC484 ; CPU:$C450 PRG:0450 F0 32 + LDX active_controller_index ; CPU:$C452 PRG:0452 A6 7A + TXA ; CPU:$C454 PRG:0454 8A + EOR #$01 ; CPU:$C455 PRG:0455 49 01 + TAY ; CPU:$C457 PRG:0457 A8 + LDA a:$007B,Y ; CPU:$C458 PRG:0458 B9 7B 00 + CMP #$03 ; CPU:$C45B PRG:045B C9 03 + BEQ SubCC484 ; CPU:$C45D PRG:045D F0 25 + LDA menu_selection ; CPU:$C45F PRG:045F A5 0D + CMP #$02 ; CPU:$C461 PRG:0461 C9 02 + BNE SubCC41B_Loop2 ; CPU:$C463 PRG:0463 D0 1C + LDA a:$002C,Y ; CPU:$C465 PRG:0465 B9 2C 00 + CMP $2C,X ; CPU:$C468 PRG:0468 D5 2C + BCC SubCC41B_Loop2 ; CPU:$C46A PRG:046A 90 15 + TXA ; CPU:$C46C PRG:046C 8A + ASL A ; CPU:$C46D PRG:046D 0A + SEC ; CPU:$C46E PRG:046E 38 + SBC #$01 ; CPU:$C46F PRG:046F E9 01 + CLC ; CPU:$C471 PRG:0471 18 + ADC $14 ; CPU:$C472 PRG:0472 65 14 + STA $14 ; CPU:$C474 PRG:0474 85 14 + TXA ; CPU:$C476 PRG:0476 8A + STA $84 ; CPU:$C477 PRG:0477 85 84 + LDY #$02 ; CPU:$C479 PRG:0479 A0 02 + JSR WaitFrameGroups ; CPU:$C47B PRG:047B 20 09 C9 + JMP SubCC4CB ; CPU:$C47E PRG:047E 4C CB C4 ; --------------------------------------------------------------------------- ; Label_C481 @@ -1415,8 +1415,8 @@ Label_C44E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C481: - JMP SubCC380 ; C481: 4C 80 C3 +SubCC41B_Loop2: + JMP SubCC380 ; CPU:$C481 PRG:0481 4C 80 C3 ; --------------------------------------------------------------------------- ; SubCC484 @@ -1434,19 +1434,19 @@ Label_C481: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC484: - LDA $0D ; C484: A5 0D - CMP #$02 ; C486: C9 02 - BEQ Label_C4A7 ; C488: F0 1D - LDA $14 ; C48A: A5 14 - CLC ; C48C: 18 - ADC $83 ; C48D: 65 83 - STA $14 ; C48F: 85 14 - LDA $0F ; C491: A5 0F - CLC ; C493: 18 - ADC $2C ; C494: 65 2C - STA $0F ; C496: 85 0F - BCC Label_C49C ; C498: 90 02 - INC $10 ; C49A: E6 10 + LDA menu_selection ; CPU:$C484 PRG:0484 A5 0D + CMP #$02 ; CPU:$C486 PRG:0486 C9 02 + BEQ SubCC484_Loop2 ; CPU:$C488 PRG:0488 F0 1D + LDA $14 ; CPU:$C48A PRG:048A A5 14 + CLC ; CPU:$C48C PRG:048C 18 + ADC $83 ; CPU:$C48D PRG:048D 65 83 + STA $14 ; CPU:$C48F PRG:048F 85 14 + LDA $0F ; CPU:$C491 PRG:0491 A5 0F + CLC ; CPU:$C493 PRG:0493 18 + ADC $2C ; CPU:$C494 PRG:0494 65 2C + STA $0F ; CPU:$C496 PRG:0496 85 0F + BCC SubCC484_Loop ; CPU:$C498 PRG:0498 90 02 + INC $10 ; CPU:$C49A PRG:049A E6 10 ; --------------------------------------------------------------------------- ; Label_C49C @@ -1463,13 +1463,13 @@ SubCC484: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C49C: - LDA $11 ; C49C: A5 11 - CLC ; C49E: 18 - ADC $2D ; C49F: 65 2D - STA $11 ; C4A1: 85 11 - BCC Label_C4A7 ; C4A3: 90 02 - INC $12 ; C4A5: E6 12 +SubCC484_Loop: + LDA $11 ; CPU:$C49C PRG:049C A5 11 + CLC ; CPU:$C49E PRG:049E 18 + ADC $2D ; CPU:$C49F PRG:049F 65 2D + STA $11 ; CPU:$C4A1 PRG:04A1 85 11 + BCC SubCC484_Loop2 ; CPU:$C4A3 PRG:04A3 90 02 + INC $12 ; CPU:$C4A5 PRG:04A5 E6 12 ; --------------------------------------------------------------------------- ; Label_C4A7 @@ -1486,15 +1486,15 @@ Label_C49C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C4A7: - LDY #$02 ; C4A7: A0 02 - JSR WaitFrameGroups ; C4A9: 20 09 C9 - LDA $2C ; C4AC: A5 2C - CMP $2D ; C4AE: C5 2D - BEQ SubCC4CB ; C4B0: F0 19 - BCS Label_C4B8 ; C4B2: B0 04 - LDA #$00 ; C4B4: A9 00 - BEQ Label_C4BA ; C4B6: F0 02 +SubCC484_Loop2: + LDY #$02 ; CPU:$C4A7 PRG:04A7 A0 02 + JSR WaitFrameGroups ; CPU:$C4A9 PRG:04A9 20 09 C9 + LDA $2C ; CPU:$C4AC PRG:04AC A5 2C + CMP $2D ; CPU:$C4AE PRG:04AE C5 2D + BEQ SubCC4CB ; CPU:$C4B0 PRG:04B0 F0 19 + BCS SubCC484_Loop3 ; CPU:$C4B2 PRG:04B2 B0 04 + LDA #$00 ; CPU:$C4B4 PRG:04B4 A9 00 + BEQ SubCC484_Loop4 ; CPU:$C4B6 PRG:04B6 F0 02 ; --------------------------------------------------------------------------- ; Label_C4B8 @@ -1511,8 +1511,8 @@ Label_C4A7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C4B8: - LDA #$01 ; C4B8: A9 01 +SubCC484_Loop3: + LDA #$01 ; CPU:$C4B8 PRG:04B8 A9 01 ; --------------------------------------------------------------------------- ; Label_C4BA @@ -1529,17 +1529,17 @@ Label_C4B8: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C4BA: - STA $84 ; C4BA: 85 84 - LDY $0D ; C4BC: A4 0D - CPY #$02 ; C4BE: C0 02 - BNE SubCC4CB ; C4C0: D0 09 - ASL A ; C4C2: 0A - SEC ; C4C3: 38 - SBC #$01 ; C4C4: E9 01 - CLC ; C4C6: 18 - ADC $14 ; C4C7: 65 14 - STA $14 ; C4C9: 85 14 +SubCC484_Loop4: + STA $84 ; CPU:$C4BA PRG:04BA 85 84 + LDY menu_selection ; CPU:$C4BC PRG:04BC A4 0D + CPY #$02 ; CPU:$C4BE PRG:04BE C0 02 + BNE SubCC4CB ; CPU:$C4C0 PRG:04C0 D0 09 + ASL A ; CPU:$C4C2 PRG:04C2 0A + SEC ; CPU:$C4C3 PRG:04C3 38 + SBC #$01 ; CPU:$C4C4 PRG:04C4 E9 01 + CLC ; CPU:$C4C6 PRG:04C6 18 + ADC $14 ; CPU:$C4C7 PRG:04C7 65 14 + STA $14 ; CPU:$C4C9 PRG:04C9 85 14 ; --------------------------------------------------------------------------- ; SubCC4CB @@ -1557,14 +1557,14 @@ Label_C4BA: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC4CB: - JSR SubCC916 ; C4CB: 20 16 C9 - LDA $0D ; C4CE: A5 0D - CMP #$02 ; C4D0: C9 02 - BNE Label_C4EB ; C4D2: D0 17 - DEC $88 ; C4D4: C6 88 - BPL Label_C4DC ; C4D6: 10 04 - LDA #$00 ; C4D8: A9 00 - STA $88 ; C4DA: 85 88 + JSR SubCC916 ; CPU:$C4CB PRG:04CB 20 16 C9 + LDA menu_selection ; CPU:$C4CE PRG:04CE A5 0D + CMP #$02 ; CPU:$C4D0 PRG:04D0 C9 02 + BNE SubCC4CB_Loop2 ; CPU:$C4D2 PRG:04D2 D0 17 + DEC $88 ; CPU:$C4D4 PRG:04D4 C6 88 + BPL SubCC4CB_Loop ; CPU:$C4D6 PRG:04D6 10 04 + LDA #$00 ; CPU:$C4D8 PRG:04D8 A9 00 + STA $88 ; CPU:$C4DA PRG:04DA 85 88 ; --------------------------------------------------------------------------- ; Label_C4DC @@ -1581,14 +1581,14 @@ SubCC4CB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C4DC: - LDA $14 ; C4DC: A5 14 - JSR SubCD9B1 ; C4DE: 20 B1 D9 - STA $19 ; C4E1: 85 19 - LDA $88 ; C4E3: A5 88 - CMP $19 ; C4E5: C5 19 - BPL Label_C4EB ; C4E7: 10 02 - BMI Label_C504 ; C4E9: 30 19 +SubCC4CB_Loop: + LDA $14 ; CPU:$C4DC PRG:04DC A5 14 + JSR SubCD9B1 ; CPU:$C4DE PRG:04DE 20 B1 D9 + STA $19 ; CPU:$C4E1 PRG:04E1 85 19 + LDA $88 ; CPU:$C4E3 PRG:04E3 A5 88 + CMP $19 ; CPU:$C4E5 PRG:04E5 C5 19 + BPL SubCC4CB_Loop2 ; CPU:$C4E7 PRG:04E7 10 02 + BMI SubCC4CB_Loop5 ; CPU:$C4E9 PRG:04E9 30 19 ; --------------------------------------------------------------------------- ; Label_C4EB @@ -1605,13 +1605,13 @@ Label_C4DC: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C4EB: - INC $2B ; C4EB: E6 2B - LDA $2B ; C4ED: A5 2B - CMP #$12 ; C4EF: C9 12 - BCC Label_C4F7 ; C4F1: 90 04 - LDA #$00 ; C4F3: A9 00 - STA $2B ; C4F5: 85 2B +SubCC4CB_Loop2: + INC current_hole_index ; CPU:$C4EB PRG:04EB E6 2B + LDA current_hole_index ; CPU:$C4ED PRG:04ED A5 2B + CMP #$12 ; CPU:$C4EF PRG:04EF C9 12 + BCC SubCC4CB_Loop3 ; CPU:$C4F1 PRG:04F1 90 04 + LDA #$00 ; CPU:$C4F3 PRG:04F3 A9 00 + STA current_hole_index ; CPU:$C4F5 PRG:04F5 85 2B ; --------------------------------------------------------------------------- ; Label_C4F7 @@ -1628,12 +1628,12 @@ Label_C4EB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C4F7: - LDY $0D ; C4F7: A4 0D - CPY #$02 ; C4F9: C0 02 - BEQ Label_C501 ; C4FB: F0 04 - CMP #$00 ; C4FD: C9 00 - BEQ Label_C504 ; C4FF: F0 03 +SubCC4CB_Loop3: + LDY menu_selection ; CPU:$C4F7 PRG:04F7 A4 0D + CPY #$02 ; CPU:$C4F9 PRG:04F9 C0 02 + BEQ SubCC4CB_Loop4 ; CPU:$C4FB PRG:04FB F0 04 + CMP #$00 ; CPU:$C4FD PRG:04FD C9 00 + BEQ SubCC4CB_Loop5 ; CPU:$C4FF PRG:04FF F0 03 ; --------------------------------------------------------------------------- ; Label_C501 @@ -1650,8 +1650,8 @@ Label_C4F7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C501: - JMP SubCC0E8 ; C501: 4C E8 C0 +SubCC4CB_Loop4: + JMP SubCC0E8 ; CPU:$C501 PRG:0501 4C E8 C0 ; --------------------------------------------------------------------------- ; Label_C504 @@ -1668,16 +1668,16 @@ Label_C501: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C504: - LDY #$02 ; C504: A0 02 - JSR WaitFrameGroups ; C506: 20 09 C9 - LDA $0D ; C509: A5 0D - CMP #$02 ; C50B: C9 02 - BNE Label_C51F ; C50D: D0 10 - LDA $14 ; C50F: A5 14 - BMI Label_C517 ; C511: 30 04 - LDA #$0E ; C513: A9 0E - BNE Label_C519 ; C515: D0 02 +SubCC4CB_Loop5: + LDY #$02 ; CPU:$C504 PRG:0504 A0 02 + JSR WaitFrameGroups ; CPU:$C506 PRG:0506 20 09 C9 + LDA menu_selection ; CPU:$C509 PRG:0509 A5 0D + CMP #$02 ; CPU:$C50B PRG:050B C9 02 + BNE SubCC4CB_Loop8 ; CPU:$C50D PRG:050D D0 10 + LDA $14 ; CPU:$C50F PRG:050F A5 14 + BMI SubCC4CB_Loop6 ; CPU:$C511 PRG:0511 30 04 + LDA #$0E ; CPU:$C513 PRG:0513 A9 0E + BNE SubCC4CB_Loop7 ; CPU:$C515 PRG:0515 D0 02 ; --------------------------------------------------------------------------- ; Label_C517 @@ -1694,8 +1694,8 @@ Label_C504: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C517: - LDA #$0D ; C517: A9 0D +SubCC4CB_Loop6: + LDA #$0D ; CPU:$C517 PRG:0517 A9 0D ; --------------------------------------------------------------------------- ; Label_C519 @@ -1712,9 +1712,9 @@ Label_C517: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C519: - JSR SubCFEBF ; C519: 20 BF FE - JSR SubCFF2B ; C51C: 20 2B FF +SubCC4CB_Loop7: + JSR SubCFEBF ; CPU:$C519 PRG:0519 20 BF FE + JSR SubCFF2B ; CPU:$C51C PRG:051C 20 2B FF ; --------------------------------------------------------------------------- ; Label_C51F @@ -1731,11 +1731,11 @@ Label_C519: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C51F: - LDA $0D ; C51F: A5 0D - CMP #$02 ; C521: C9 02 - BEQ Label_C542 ; C523: F0 1D - LDX #$02 ; C525: A2 02 +SubCC4CB_Loop8: + LDA menu_selection ; CPU:$C51F PRG:051F A5 0D + CMP #$02 ; CPU:$C521 PRG:0521 C9 02 + BEQ SubCC4CB_Loop9 ; CPU:$C523 PRG:0523 F0 1D + LDX #$02 ; CPU:$C525 PRG:0525 A2 02 ; --------------------------------------------------------------------------- ; Label_C527 @@ -1752,19 +1752,19 @@ Label_C51F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C527: - STX $1F ; C527: 86 1F - LDY #$12 ; C529: A0 12 - JSR SubCC8F5 ; C52B: 20 F5 C8 - LDA #$16 ; C52E: A9 16 - STA $1A ; C530: 85 1A - JSR SubCFE72 ; C532: 20 72 FE - LDY #$0F ; C535: A0 0F - JSR SubCC8F5 ; C537: 20 F5 C8 - JSR SubCC916 ; C53A: 20 16 C9 - LDX $1F ; C53D: A6 1F - DEX ; C53F: CA - BPL Label_C527 ; C540: 10 E5 +SubCC4CB_OnNonnegative: + STX sequence_return_bound ; CPU:$C527 PRG:0527 86 1F + LDY #$12 ; CPU:$C529 PRG:0529 A0 12 + JSR SubCC8F5 ; CPU:$C52B PRG:052B 20 F5 C8 + LDA #$16 ; CPU:$C52E PRG:052E A9 16 + STA $1A ; CPU:$C530 PRG:0530 85 1A + JSR SubCFE72 ; CPU:$C532 PRG:0532 20 72 FE + LDY #$0F ; CPU:$C535 PRG:0535 A0 0F + JSR SubCC8F5 ; CPU:$C537 PRG:0537 20 F5 C8 + JSR SubCC916 ; CPU:$C53A PRG:053A 20 16 C9 + LDX sequence_return_bound ; CPU:$C53D PRG:053D A6 1F + DEX ; CPU:$C53F PRG:053F CA + BPL SubCC4CB_OnNonnegative ; CPU:$C540 PRG:0540 10 E5 ; --------------------------------------------------------------------------- ; Label_C542 @@ -1781,22 +1781,22 @@ Label_C527: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C542: - LDA #$0C ; C542: A9 0C - JSR SubCFEBF ; C544: 20 BF FE - JSR SubCFF2B ; C547: 20 2B FF - LDY #$05 ; C54A: A0 05 - JSR WaitFrameGroups ; C54C: 20 09 C9 - LDA $0D ; C54F: A5 0D - CMP #$02 ; C551: C9 02 - BEQ Label_C575 ; C553: F0 20 - LDA $10 ; C555: A5 10 - BNE Label_C563 ; C557: D0 0A - LDA $0F ; C559: A5 0F - CMP $0E ; C55B: C5 0E - BCS Label_C563 ; C55D: B0 04 - LDA $0F ; C55F: A5 0F - STA $0E ; C561: 85 0E +SubCC4CB_Loop9: + LDA #$0C ; CPU:$C542 PRG:0542 A9 0C + JSR SubCFEBF ; CPU:$C544 PRG:0544 20 BF FE + JSR SubCFF2B ; CPU:$C547 PRG:0547 20 2B FF + LDY #$05 ; CPU:$C54A PRG:054A A0 05 + JSR WaitFrameGroups ; CPU:$C54C PRG:054C 20 09 C9 + LDA menu_selection ; CPU:$C54F PRG:054F A5 0D + CMP #$02 ; CPU:$C551 PRG:0551 C9 02 + BEQ SubCC4CB_Loop11 ; CPU:$C553 PRG:0553 F0 20 + LDA $10 ; CPU:$C555 PRG:0555 A5 10 + BNE SubCC4CB_Loop10 ; CPU:$C557 PRG:0557 D0 0A + LDA $0F ; CPU:$C559 PRG:0559 A5 0F + CMP $0E ; CPU:$C55B PRG:055B C5 0E + BCS SubCC4CB_Loop10 ; CPU:$C55D PRG:055D B0 04 + LDA $0F ; CPU:$C55F PRG:055F A5 0F + STA $0E ; CPU:$C561 PRG:0561 85 0E ; --------------------------------------------------------------------------- ; Label_C563 @@ -1813,16 +1813,16 @@ Label_C542: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C563: - LDA $0D ; C563: A5 0D - BEQ Label_C575 ; C565: F0 0E - LDA $12 ; C567: A5 12 - BCS Label_C575 ; C569: B0 0A - LDA $11 ; C56B: A5 11 - CMP $0E ; C56D: C5 0E - BCS Label_C575 ; C56F: B0 04 - LDA $11 ; C571: A5 11 - STA $0E ; C573: 85 0E +SubCC4CB_Loop10: + LDA menu_selection ; CPU:$C563 PRG:0563 A5 0D + BEQ SubCC4CB_Loop11 ; CPU:$C565 PRG:0565 F0 0E + LDA $12 ; CPU:$C567 PRG:0567 A5 12 + BCS SubCC4CB_Loop11 ; CPU:$C569 PRG:0569 B0 0A + LDA $11 ; CPU:$C56B PRG:056B A5 11 + CMP $0E ; CPU:$C56D PRG:056D C5 0E + BCS SubCC4CB_Loop11 ; CPU:$C56F PRG:056F B0 04 + LDA $11 ; CPU:$C571 PRG:0571 A5 11 + STA $0E ; CPU:$C573 PRG:0573 85 0E ; --------------------------------------------------------------------------- ; Label_C575 @@ -1839,9 +1839,9 @@ Label_C563: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C575: - JSR WaitForFrame ; C575: 20 F3 C8 - JMP InitializeTitleAndGame ; C578: 4C 23 DA +SubCC4CB_Loop11: + JSR WaitForFrame ; CPU:$C575 PRG:0575 20 F3 C8 + JMP InitializeTitleAndGame ; CPU:$C578 PRG:0578 4C 23 DA ; --------------------------------------------------------------------------- ; StrobeAndReadController @@ -1859,11 +1859,11 @@ Label_C575: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- StrobeAndReadController: - LDA #$01 ; C57B: A9 01 - STA JOY1 ; C57D: 8D 16 40 - LDA #$00 ; C580: A9 00 - STA JOY1 ; C582: 8D 16 40 - RTS ; C585: 60 + LDA #$01 ; CPU:$C57B PRG:057B A9 01 + STA JOY1 ; CPU:$C57D PRG:057D 8D 16 40 + LDA #$00 ; CPU:$C580 PRG:0580 A9 00 + STA JOY1 ; CPU:$C582 PRG:0582 8D 16 40 + RTS ; CPU:$C585 PRG:0585 60 ; --------------------------------------------------------------------------- ; SubCC586 @@ -1881,7 +1881,7 @@ StrobeAndReadController: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC586: - JSR SetPpuAddress ; C586: 20 C1 C8 + JSR SetPpuAddress ; CPU:$C586 PRG:0586 20 C1 C8 ; --------------------------------------------------------------------------- ; SubCC589 @@ -1899,13 +1899,13 @@ SubCC586: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC589: - TYA ; C589: 98 - PHA ; C58A: 48 - LDY #$07 ; C58B: A0 07 - JSR SubCC599 ; C58D: 20 99 C5 - PLA ; C590: 68 - TAY ; C591: A8 - RTS ; C592: 60 + TYA ; CPU:$C589 PRG:0589 98 + PHA ; CPU:$C58A PRG:058A 48 + LDY #$07 ; CPU:$C58B PRG:058B A0 07 + JSR SubCC599 ; CPU:$C58D PRG:058D 20 99 C5 + PLA ; CPU:$C590 PRG:0590 68 + TAY ; CPU:$C591 PRG:0591 A8 + RTS ; CPU:$C592 PRG:0592 60 ; --------------------------------------------------------------------------- ; SubCC593 @@ -1923,10 +1923,10 @@ SubCC589: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC593: - LDA $7A ; C593: A5 7A - EOR #$01 ; C595: 49 01 - TAX ; C597: AA - RTS ; C598: 60 + LDA active_controller_index ; CPU:$C593 PRG:0593 A5 7A + EOR #$01 ; CPU:$C595 PRG:0595 49 01 + TAX ; CPU:$C597 PRG:0597 AA + RTS ; CPU:$C598 PRG:0598 60 ; --------------------------------------------------------------------------- ; SubCC599 @@ -1944,10 +1944,10 @@ SubCC593: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC599: - STA PPUDATA ; C599: 8D 07 20 - DEY ; C59C: 88 - BPL SubCC599 ; C59D: 10 FA - RTS ; C59F: 60 + STA PPUDATA ; CPU:$C599 PRG:0599 8D 07 20 + DEY ; CPU:$C59C PRG:059C 88 + BPL SubCC599 ; CPU:$C59D PRG:059D 10 FA + RTS ; CPU:$C59F PRG:059F 60 ; --------------------------------------------------------------------------- ; GameplayInputNmiCallback @@ -1968,16 +1968,16 @@ SubCC599: ; A, X, Y, processor flags, controller temporaries, selection fields, and OAM. ; --------------------------------------------------------------------------- GameplayInputNmiCallback: - JSR StrobeAndReadController ; C5A0: 20 7B C5 - STA $77 ; C5A3: 85 77 - LDX active_controller_index ; C5A5: A6 7A - LDA JOY1,X ; C5A7: BD 16 40 - AND #$01 ; C5AA: 29 01 - STA primary_action_pressed ; C5AC: 85 2E - LDA JOY1,X ; C5AE: BD 16 40 - LDA JOY1,X ; C5B1: BD 16 40 - LDA JOY1,X ; C5B4: BD 16 40 - LDY #$03 ; C5B7: A0 03 + JSR StrobeAndReadController ; CPU:$C5A0 PRG:05A0 20 7B C5 + STA $77 ; CPU:$C5A3 PRG:05A3 85 77 + LDX active_controller_index ; CPU:$C5A5 PRG:05A5 A6 7A + LDA JOY1,X ; CPU:$C5A7 PRG:05A7 BD 16 40 + AND #$01 ; CPU:$C5AA PRG:05AA 29 01 + STA primary_action_pressed ; CPU:$C5AC PRG:05AC 85 2E + LDA JOY1,X ; CPU:$C5AE PRG:05AE BD 16 40 + LDA JOY1,X ; CPU:$C5B1 PRG:05B1 BD 16 40 + LDA JOY1,X ; CPU:$C5B4 PRG:05B4 BD 16 40 + LDY #$03 ; CPU:$C5B7 PRG:05B7 A0 03 ; --------------------------------------------------------------------------- ; ScanDirectionalSerialBits @@ -1995,11 +1995,11 @@ GameplayInputNmiCallback: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ScanDirectionalSerialBits: - LDA JOY1,X ; C5B9: BD 16 40 - AND #$01 ; C5BC: 29 01 - BNE StoreDirectionalInputIndex ; C5BE: D0 03 - DEY ; C5C0: 88 - BPL ScanDirectionalSerialBits ; C5C1: 10 F6 + LDA JOY1,X ; CPU:$C5B9 PRG:05B9 BD 16 40 + AND #$01 ; CPU:$C5BC PRG:05BC 29 01 + BNE StoreDirectionalInputIndex ; CPU:$C5BE PRG:05BE D0 03 + DEY ; CPU:$C5C0 PRG:05C0 88 + BPL ScanDirectionalSerialBits ; CPU:$C5C1 PRG:05C1 10 F6 ; --------------------------------------------------------------------------- ; StoreDirectionalInputIndex @@ -2017,11 +2017,11 @@ ScanDirectionalSerialBits: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- StoreDirectionalInputIndex: - STY directional_input_index ; C5C3: 84 30 - LDA $49 ; C5C5: A5 49 - BEQ HandleClubSelectionInput ; C5C7: F0 04 - LDA #$0E ; C5C9: A9 0E - BNE RefreshClubSelectionDisplay ; C5CB: D0 28 + STY directional_input_index ; CPU:$C5C3 PRG:05C3 84 30 + LDA $49 ; CPU:$C5C5 PRG:05C5 A5 49 + BEQ HandleClubSelectionInput ; CPU:$C5C7 PRG:05C7 F0 04 + LDA #$0E ; CPU:$C5C9 PRG:05C9 A9 0E + BNE RefreshClubSelectionDisplay; CPU:$C5CB PRG:05CB D0 28 ; --------------------------------------------------------------------------- ; HandleClubSelectionInput @@ -2039,22 +2039,22 @@ StoreDirectionalInputIndex: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- HandleClubSelectionInput: - LDA directional_input_index ; C5CD: A5 30 - BMI ResetDirectionalRepeatLatch ; C5CF: 30 2F - CMP #$02 ; C5D1: C9 02 - BCC ResetDirectionalRepeatLatch ; C5D3: 90 2B - LDA directional_repeat_latch ; C5D5: A5 18 - BNE BuildGameplayOam ; C5D7: D0 2B - INC directional_repeat_latch ; C5D9: E6 18 - LDA directional_input_index ; C5DB: A5 30 - CMP #$02 ; C5DD: C9 02 - BNE WrapClubSelectionIndex ; C5DF: D0 0C - INC club_selection_index ; C5E1: E6 17 - LDA club_selection_index ; C5E3: A5 17 - CMP #$0E ; C5E5: C9 0E - BCC RefreshClubSelectionDisplay ; C5E7: 90 0C - LDA #$00 ; C5E9: A9 00 - BEQ RefreshClubSelectionDisplay ; C5EB: F0 08 + LDA directional_input_index ; CPU:$C5CD PRG:05CD A5 30 + BMI ResetDirectionalRepeatLatch; CPU:$C5CF PRG:05CF 30 2F + CMP #$02 ; CPU:$C5D1 PRG:05D1 C9 02 + BCC ResetDirectionalRepeatLatch; CPU:$C5D3 PRG:05D3 90 2B + LDA directional_repeat_latch ; CPU:$C5D5 PRG:05D5 A5 18 + BNE BuildGameplayOam ; CPU:$C5D7 PRG:05D7 D0 2B + INC directional_repeat_latch ; CPU:$C5D9 PRG:05D9 E6 18 + LDA directional_input_index ; CPU:$C5DB PRG:05DB A5 30 + CMP #$02 ; CPU:$C5DD PRG:05DD C9 02 + BNE WrapClubSelectionIndex ; CPU:$C5DF PRG:05DF D0 0C + INC club_selection_index ; CPU:$C5E1 PRG:05E1 E6 17 + LDA club_selection_index ; CPU:$C5E3 PRG:05E3 A5 17 + CMP #$0E ; CPU:$C5E5 PRG:05E5 C9 0E + BCC RefreshClubSelectionDisplay; CPU:$C5E7 PRG:05E7 90 0C + LDA #$00 ; CPU:$C5E9 PRG:05E9 A9 00 + BEQ RefreshClubSelectionDisplay; CPU:$C5EB PRG:05EB F0 08 ; --------------------------------------------------------------------------- ; WrapClubSelectionIndex @@ -2072,10 +2072,10 @@ HandleClubSelectionInput: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- WrapClubSelectionIndex: - DEC club_selection_index ; C5ED: C6 17 - LDA club_selection_index ; C5EF: A5 17 - BPL RefreshClubSelectionDisplay ; C5F1: 10 02 - LDA #$0D ; C5F3: A9 0D + DEC club_selection_index ; CPU:$C5ED PRG:05ED C6 17 + LDA club_selection_index ; CPU:$C5EF PRG:05EF A5 17 + BPL RefreshClubSelectionDisplay; CPU:$C5F1 PRG:05F1 10 02 + LDA #$0D ; CPU:$C5F3 PRG:05F3 A9 0D ; --------------------------------------------------------------------------- ; RefreshClubSelectionDisplay @@ -2093,10 +2093,10 @@ WrapClubSelectionIndex: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- RefreshClubSelectionDisplay: - STA club_selection_index ; C5F5: 85 17 - JSR SubCC84D ; C5F7: 20 4D C8 - JSR RefreshSequenceSpriteLayout ; C5FA: 20 A8 CA - JMP BuildGameplayOam ; C5FD: 4C 04 C6 + STA club_selection_index ; CPU:$C5F5 PRG:05F5 85 17 + JSR SubCC84D ; CPU:$C5F7 PRG:05F7 20 4D C8 + JSR RefreshSequenceSpriteLayout; CPU:$C5FA PRG:05FA 20 A8 CA + JMP BuildGameplayOam ; CPU:$C5FD PRG:05FD 4C 04 C6 ; --------------------------------------------------------------------------- ; ResetDirectionalRepeatLatch @@ -2114,8 +2114,8 @@ RefreshClubSelectionDisplay: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ResetDirectionalRepeatLatch: - LDA #$00 ; C600: A9 00 - STA directional_repeat_latch ; C602: 85 18 + LDA #$00 ; CPU:$C600 PRG:0600 A9 00 + STA directional_repeat_latch ; CPU:$C602 PRG:0602 85 18 ; --------------------------------------------------------------------------- ; BuildGameplayOam @@ -2133,22 +2133,22 @@ ResetDirectionalRepeatLatch: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- BuildGameplayOam: - LDA #$C8 ; C604: A9 C8 - STA $0278 ; C606: 8D 78 02 - STA $027C ; C609: 8D 7C 02 - LDA #$8B ; C60C: A9 8B - STA $0279 ; C60E: 8D 79 02 - STA $027D ; C611: 8D 7D 02 - LDA #$03 ; C614: A9 03 - STA $027A ; C616: 8D 7A 02 - STA $027E ; C619: 8D 7E 02 - LDA #$4C ; C61C: A9 4C - STA $027B ; C61E: 8D 7B 02 - STA $027F ; C621: 8D 7F 02 - STA $32 ; C624: 85 32 - LDA $49 ; C626: A5 49 - BNE HandleAimAdjustmentInput ; C628: D0 03 - JMP HandleAimDirectionChange ; C62A: 4C 7E C6 + LDA #$C8 ; CPU:$C604 PRG:0604 A9 C8 + STA $0278 ; CPU:$C606 PRG:0606 8D 78 02 + STA $027C ; CPU:$C609 PRG:0609 8D 7C 02 + LDA #$8B ; CPU:$C60C PRG:060C A9 8B + STA $0279 ; CPU:$C60E PRG:060E 8D 79 02 + STA $027D ; CPU:$C611 PRG:0611 8D 7D 02 + LDA #$03 ; CPU:$C614 PRG:0614 A9 03 + STA $027A ; CPU:$C616 PRG:0616 8D 7A 02 + STA $027E ; CPU:$C619 PRG:0619 8D 7E 02 + LDA #$4C ; CPU:$C61C PRG:061C A9 4C + STA $027B ; CPU:$C61E PRG:061E 8D 7B 02 + STA $027F ; CPU:$C621 PRG:0621 8D 7F 02 + STA sequence_position ; CPU:$C624 PRG:0624 85 32 + LDA $49 ; CPU:$C626 PRG:0626 A5 49 + BNE HandleAimAdjustmentInput ; CPU:$C628 PRG:0628 D0 03 + JMP HandleAimDirectionChange ; CPU:$C62A PRG:062A 4C 7E C6 ; --------------------------------------------------------------------------- ; HandleAimAdjustmentInput @@ -2166,15 +2166,15 @@ BuildGameplayOam: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- HandleAimAdjustmentInput: - LDA directional_input_index ; C62D: A5 30 - BMI UpdateAimOamEntryLoop ; C62F: 30 11 - LDA directional_input_index ; C631: A5 30 - AND #$02 ; C633: 29 02 - BNE UpdateAimOamEntryLoop ; C635: D0 0B - LDA directional_input_index ; C637: A5 30 - BNE InitializeAimOamLoop ; C639: D0 05 - INC aim_adjust_direction ; C63B: E6 45 - JMP UpdateAimOamEntryLoop ; C63D: 4C 42 C6 + LDA directional_input_index ; CPU:$C62D PRG:062D A5 30 + BMI UpdateAimOamEntryLoop ; CPU:$C62F PRG:062F 30 11 + LDA directional_input_index ; CPU:$C631 PRG:0631 A5 30 + AND #$02 ; CPU:$C633 PRG:0633 29 02 + BNE UpdateAimOamEntryLoop ; CPU:$C635 PRG:0635 D0 0B + LDA directional_input_index ; CPU:$C637 PRG:0637 A5 30 + BNE InitializeAimOamLoop ; CPU:$C639 PRG:0639 D0 05 + INC aim_adjust_direction ; CPU:$C63B PRG:063B E6 45 + JMP UpdateAimOamEntryLoop ; CPU:$C63D PRG:063D 4C 42 C6 ; --------------------------------------------------------------------------- ; InitializeAimOamLoop @@ -2192,7 +2192,7 @@ HandleAimAdjustmentInput: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- InitializeAimOamLoop: - DEC aim_adjust_direction ; C640: C6 45 + DEC aim_adjust_direction ; CPU:$C640 PRG:0640 C6 45 ; --------------------------------------------------------------------------- ; UpdateAimOamEntryLoop @@ -2210,13 +2210,13 @@ InitializeAimOamLoop: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- UpdateAimOamEntryLoop: - LDX #$00 ; C642: A2 00 - STX $39 ; C644: 86 39 - STX $3C ; C646: 86 3C - LDA $78 ; C648: A5 78 - STA $3B ; C64A: 85 3B - LDA $79 ; C64C: A5 79 - STA $38 ; C64E: 85 38 + LDX #$00 ; CPU:$C642 PRG:0642 A2 00 + STX $39 ; CPU:$C644 PRG:0644 86 39 + STX $3C ; CPU:$C646 PRG:0646 86 3C + LDA $78 ; CPU:$C648 PRG:0648 A5 78 + STA $3B ; CPU:$C64A PRG:064A 85 3B + LDA $79 ; CPU:$C64C PRG:064C A5 79 + STA $38 ; CPU:$C64E PRG:064E 85 38 ; --------------------------------------------------------------------------- ; PositionAimOamEntries @@ -2234,28 +2234,28 @@ UpdateAimOamEntryLoop: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- PositionAimOamEntries: - JSR SubCD48B ; C650: 20 8B D4 - INX ; C653: E8 - CPX #$10 ; C654: E0 10 - BCC PositionAimOamEntries ; C656: 90 F8 - LDY $3B ; C658: A4 3B - DEY ; C65A: 88 - DEY ; C65B: 88 - STY $020C ; C65C: 8C 0C 02 - LDY $38 ; C65F: A4 38 - DEY ; C661: 88 - DEY ; C662: 88 - STY $020F ; C663: 8C 0F 02 - LDA #$DC ; C666: A9 DC - STA $020D ; C668: 8D 0D 02 - LDA #$03 ; C66B: A9 03 - STA $020E ; C66D: 8D 0E 02 - LDA $78 ; C670: A5 78 - STA $3B ; C672: 85 3B - LDA $79 ; C674: A5 79 - STA $38 ; C676: 85 38 - JSR SubCC721 ; C678: 20 21 C7 - JMP GameplayDisplayNmiCallback ; C67B: 4C C8 C6 + JSR SubCD48B ; CPU:$C650 PRG:0650 20 8B D4 + INX ; CPU:$C653 PRG:0653 E8 + CPX #$10 ; CPU:$C654 PRG:0654 E0 10 + BCC PositionAimOamEntries ; CPU:$C656 PRG:0656 90 F8 + LDY $3B ; CPU:$C658 PRG:0658 A4 3B + DEY ; CPU:$C65A PRG:065A 88 + DEY ; CPU:$C65B PRG:065B 88 + STY $020C ; CPU:$C65C PRG:065C 8C 0C 02 + LDY $38 ; CPU:$C65F PRG:065F A4 38 + DEY ; CPU:$C661 PRG:0661 88 + DEY ; CPU:$C662 PRG:0662 88 + STY $020F ; CPU:$C663 PRG:0663 8C 0F 02 + LDA #$DC ; CPU:$C666 PRG:0666 A9 DC + STA $020D ; CPU:$C668 PRG:0668 8D 0D 02 + LDA #$03 ; CPU:$C66B PRG:066B A9 03 + STA $020E ; CPU:$C66D PRG:066D 8D 0E 02 + LDA $78 ; CPU:$C670 PRG:0670 A5 78 + STA $3B ; CPU:$C672 PRG:0672 85 3B + LDA $79 ; CPU:$C674 PRG:0674 A5 79 + STA $38 ; CPU:$C676 PRG:0676 85 38 + JSR SubCC721 ; CPU:$C678 PRG:0678 20 21 C7 + JMP GameplayDisplayNmiCallback ; CPU:$C67B PRG:067B 4C C8 C6 ; --------------------------------------------------------------------------- ; HandleAimDirectionChange @@ -2273,10 +2273,10 @@ PositionAimOamEntries: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- HandleAimDirectionChange: - LDA directional_input_index ; C67E: A5 30 - BPL InitializeAimDirection ; C680: 10 04 - LDA #$00 ; C682: A9 00 - STA aim_adjust_direction ; C684: 85 45 + LDA directional_input_index ; CPU:$C67E PRG:067E A5 30 + BPL InitializeAimDirection ; CPU:$C680 PRG:0680 10 04 + LDA #$00 ; CPU:$C682 PRG:0682 A9 00 + STA aim_adjust_direction ; CPU:$C684 PRG:0684 85 45 ; --------------------------------------------------------------------------- ; InitializeAimDirection @@ -2294,18 +2294,18 @@ HandleAimDirectionChange: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- InitializeAimDirection: - LDA aim_adjust_direction ; C686: A5 45 - BNE StoreWrappedAimAngle ; C688: D0 19 - LDA directional_input_index ; C68A: A5 30 - AND #$02 ; C68C: 29 02 - BNE StoreWrappedAimAngle ; C68E: D0 13 - LDA #$01 ; C690: A9 01 - STA aim_adjust_direction ; C692: 85 45 - LDA directional_input_index ; C694: A5 30 - BNE DecrementAimAngle ; C696: D0 07 - INC aim_angle_index ; C698: E6 44 - INC $77 ; C69A: E6 77 - JMP StoreWrappedAimAngle ; C69C: 4C A3 C6 + LDA aim_adjust_direction ; CPU:$C686 PRG:0686 A5 45 + BNE StoreWrappedAimAngle ; CPU:$C688 PRG:0688 D0 19 + LDA directional_input_index ; CPU:$C68A PRG:068A A5 30 + AND #$02 ; CPU:$C68C PRG:068C 29 02 + BNE StoreWrappedAimAngle ; CPU:$C68E PRG:068E D0 13 + LDA #$01 ; CPU:$C690 PRG:0690 A9 01 + STA aim_adjust_direction ; CPU:$C692 PRG:0692 85 45 + LDA directional_input_index ; CPU:$C694 PRG:0694 A5 30 + BNE DecrementAimAngle ; CPU:$C696 PRG:0696 D0 07 + INC aim_angle_index ; CPU:$C698 PRG:0698 E6 44 + INC $77 ; CPU:$C69A PRG:069A E6 77 + JMP StoreWrappedAimAngle ; CPU:$C69C PRG:069C 4C A3 C6 ; --------------------------------------------------------------------------- ; DecrementAimAngle @@ -2323,8 +2323,8 @@ InitializeAimDirection: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- DecrementAimAngle: - DEC aim_angle_index ; C69F: C6 44 - INC $77 ; C6A1: E6 77 + DEC aim_angle_index ; CPU:$C69F PRG:069F C6 44 + INC $77 ; CPU:$C6A1 PRG:06A1 E6 77 ; --------------------------------------------------------------------------- ; StoreWrappedAimAngle @@ -2342,22 +2342,22 @@ DecrementAimAngle: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- StoreWrappedAimAngle: - LDA aim_angle_index ; C6A3: A5 44 - AND #$0F ; C6A5: 29 0F - STA aim_angle_index ; C6A7: 85 44 - TAY ; C6A9: A8 - LDA $C80D,Y ; C6AA: B9 0D C8 - CLC ; C6AD: 18 - ADC $3B ; C6AE: 65 3B - STA $020C ; C6B0: 8D 0C 02 - LDA $C81D,Y ; C6B3: B9 1D C8 - STA $020D ; C6B6: 8D 0D 02 - LDA $C82D,Y ; C6B9: B9 2D C8 - STA $020E ; C6BC: 8D 0E 02 - LDA $C83D,Y ; C6BF: B9 3D C8 - CLC ; C6C2: 18 - ADC $38 ; C6C3: 65 38 - STA $020F ; C6C5: 8D 0F 02 + LDA aim_angle_index ; CPU:$C6A3 PRG:06A3 A5 44 + AND #$0F ; CPU:$C6A5 PRG:06A5 29 0F + STA aim_angle_index ; CPU:$C6A7 PRG:06A7 85 44 + TAY ; CPU:$C6A9 PRG:06A9 A8 + LDA $C80D,Y ; CPU:$C6AA PRG:06AA B9 0D C8 + CLC ; CPU:$C6AD PRG:06AD 18 + ADC $3B ; CPU:$C6AE PRG:06AE 65 3B + STA $020C ; CPU:$C6B0 PRG:06B0 8D 0C 02 + LDA $C81D,Y ; CPU:$C6B3 PRG:06B3 B9 1D C8 + STA $020D ; CPU:$C6B6 PRG:06B6 8D 0D 02 + LDA $C82D,Y ; CPU:$C6B9 PRG:06B9 B9 2D C8 + STA $020E ; CPU:$C6BC PRG:06BC 8D 0E 02 + LDA $C83D,Y ; CPU:$C6BF PRG:06BF B9 3D C8 + CLC ; CPU:$C6C2 PRG:06C2 18 + ADC $38 ; CPU:$C6C3 PRG:06C3 65 38 + STA $020F ; CPU:$C6C5 PRG:06C5 8D 0F 02 ; --------------------------------------------------------------------------- ; GameplayDisplayNmiCallback @@ -2375,12 +2375,12 @@ StoreWrappedAimAngle: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- GameplayDisplayNmiCallback: - LDA club_selection_index ; C6C8: A5 17 - BNE ShowAnimationMarker ; C6CA: D0 08 - INC animation_tick_counter ; C6CC: E6 8E - LDA animation_tick_counter ; C6CE: A5 8E - AND #$08 ; C6D0: 29 08 - BNE SelectAnimationMarkerTile ; C6D2: D0 04 + LDA club_selection_index ; CPU:$C6C8 PRG:06C8 A5 17 + BNE ShowAnimationMarker ; CPU:$C6CA PRG:06CA D0 08 + INC animation_tick_counter ; CPU:$C6CC PRG:06CC E6 8E + LDA animation_tick_counter ; CPU:$C6CE PRG:06CE A5 8E + AND #$08 ; CPU:$C6D0 PRG:06D0 29 08 + BNE SelectAnimationMarkerTile ; CPU:$C6D2 PRG:06D2 D0 04 ; --------------------------------------------------------------------------- ; ShowAnimationMarker @@ -2398,8 +2398,8 @@ GameplayDisplayNmiCallback: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ShowAnimationMarker: - LDA #$FF ; C6D4: A9 FF - BNE WriteAnimationMarkerOam ; C6D6: D0 02 + LDA #$FF ; CPU:$C6D4 PRG:06D4 A9 FF + BNE WriteAnimationMarkerOam ; CPU:$C6D6 PRG:06D6 D0 02 ; --------------------------------------------------------------------------- ; SelectAnimationMarkerTile @@ -2417,7 +2417,7 @@ ShowAnimationMarker: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SelectAnimationMarkerTile: - LDA #$C0 ; C6D8: A9 C0 + LDA #$C0 ; CPU:$C6D8 PRG:06D8 A9 C0 ; --------------------------------------------------------------------------- ; WriteAnimationMarkerOam @@ -2435,30 +2435,30 @@ SelectAnimationMarkerTile: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- WriteAnimationMarkerOam: - STA $0284 ; C6DA: 8D 84 02 - LDA #animation_frame_index ; C6DD: A9 8F - STA $0285 ; C6DF: 8D 85 02 - LDA #$03 ; C6E2: A9 03 - STA $0286 ; C6E4: 8D 86 02 - LDA #$4B ; C6E7: A9 4B - STA $0287 ; C6E9: 8D 87 02 - LDA animation_frame_index ; C6EC: A5 8F - CMP #$19 ; C6EE: C9 19 - BCS FinishGameplayNmi ; C6F0: B0 29 - INC animation_frame_index ; C6F2: E6 8F - LDA animation_frame_index ; C6F4: A5 8F - AND #directional_repeat_latch ; C6F6: 29 18 - LSR A ; C6F8: 4A - LSR A ; C6F9: 4A - LSR A ; C6FA: 4A - TAY ; C6FB: A8 - LDA $C71E,Y ; C6FC: B9 1E C7 - STA $0215 ; C6FF: 8D 15 02 - LDA animation_frame_index ; C702: A5 8F - CMP #directional_repeat_latch ; C704: C9 18 - BCC SelectSecondaryMarkerTile ; C706: 90 04 - LDA #$FF ; C708: A9 FF - BNE WriteSecondaryMarkerOam ; C70A: D0 02 + STA $0284 ; CPU:$C6DA PRG:06DA 8D 84 02 + LDA #animation_frame_index ; CPU:$C6DD PRG:06DD A9 8F + STA $0285 ; CPU:$C6DF PRG:06DF 8D 85 02 + LDA #$03 ; CPU:$C6E2 PRG:06E2 A9 03 + STA $0286 ; CPU:$C6E4 PRG:06E4 8D 86 02 + LDA #$4B ; CPU:$C6E7 PRG:06E7 A9 4B + STA $0287 ; CPU:$C6E9 PRG:06E9 8D 87 02 + LDA animation_frame_index ; CPU:$C6EC PRG:06EC A5 8F + CMP #$19 ; CPU:$C6EE PRG:06EE C9 19 + BCS FinishGameplayNmi ; CPU:$C6F0 PRG:06F0 B0 29 + INC animation_frame_index ; CPU:$C6F2 PRG:06F2 E6 8F + LDA animation_frame_index ; CPU:$C6F4 PRG:06F4 A5 8F + AND #directional_repeat_latch ; CPU:$C6F6 PRG:06F6 29 18 + LSR A ; CPU:$C6F8 PRG:06F8 4A + LSR A ; CPU:$C6F9 PRG:06F9 4A + LSR A ; CPU:$C6FA PRG:06FA 4A + TAY ; CPU:$C6FB PRG:06FB A8 + LDA $C71E,Y ; CPU:$C6FC PRG:06FC B9 1E C7 + STA $0215 ; CPU:$C6FF PRG:06FF 8D 15 02 + LDA animation_frame_index ; CPU:$C702 PRG:0702 A5 8F + CMP #directional_repeat_latch ; CPU:$C704 PRG:0704 C9 18 + BCC SelectSecondaryMarkerTile ; CPU:$C706 PRG:0706 90 04 + LDA #$FF ; CPU:$C708 PRG:0708 A9 FF + BNE WriteSecondaryMarkerOam ; CPU:$C70A PRG:070A D0 02 ; --------------------------------------------------------------------------- ; SelectSecondaryMarkerTile @@ -2476,7 +2476,7 @@ WriteAnimationMarkerOam: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SelectSecondaryMarkerTile: - LDA #$B8 ; C70C: A9 B8 + LDA #$B8 ; CPU:$C70C PRG:070C A9 B8 ; --------------------------------------------------------------------------- ; WriteSecondaryMarkerOam @@ -2494,11 +2494,11 @@ SelectSecondaryMarkerTile: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- WriteSecondaryMarkerOam: - STA $0214 ; C70E: 8D 14 02 - LDA #$03 ; C711: A9 03 - STA $0216 ; C713: 8D 16 02 - LDA #$4B ; C716: A9 4B - STA $0217 ; C718: 8D 17 02 + STA $0214 ; CPU:$C70E PRG:070E 8D 14 02 + LDA #$03 ; CPU:$C711 PRG:0711 A9 03 + STA $0216 ; CPU:$C713 PRG:0713 8D 16 02 + LDA #$4B ; CPU:$C716 PRG:0716 A9 4B + STA $0217 ; CPU:$C718 PRG:0718 8D 17 02 ; --------------------------------------------------------------------------- ; FinishGameplayNmi @@ -2516,7 +2516,7 @@ WriteSecondaryMarkerOam: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- FinishGameplayNmi: - JMP NmiEpilogue ; C71B: 4C B8 C0 + JMP NmiEpilogue ; CPU:$C71B PRG:071B 4C B8 C0 .incbin "prg.bin", $071E, $0003 ; C71E-C720: unclassified/data ; --------------------------------------------------------------------------- @@ -2535,12 +2535,12 @@ FinishGameplayNmi: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC721: - JSR SubCD9C7 ; C721: 20 C7 D9 - JSR SubCF931 ; C724: 20 31 F9 - LDA $5E ; C727: A5 5E - CMP #$18 ; C729: C9 18 - BCC Label_C72F ; C72B: 90 02 - LDA #$18 ; C72D: A9 18 + JSR SubCD9C7 ; CPU:$C721 PRG:0721 20 C7 D9 + JSR SubCF931 ; CPU:$C724 PRG:0724 20 31 F9 + LDA $5E ; CPU:$C727 PRG:0727 A5 5E + CMP #$18 ; CPU:$C729 PRG:0729 C9 18 + BCC SubCC721_Loop ; CPU:$C72B PRG:072B 90 02 + LDA #$18 ; CPU:$C72D PRG:072D A9 18 ; --------------------------------------------------------------------------- ; Label_C72F @@ -2557,15 +2557,15 @@ SubCC721: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C72F: - STA $75 ; C72F: 85 75 - LDY #$D7 ; C731: A0 D7 - CMP #$14 ; C733: C9 14 - BCS Label_C73F ; C735: B0 08 - LDY #$D4 ; C737: A0 D4 - CMP #$0A ; C739: C9 0A - BCS Label_C73F ; C73B: B0 02 - LDY #$8C ; C73D: A0 8C +SubCC721_Loop: + STA $75 ; CPU:$C72F PRG:072F 85 75 + LDY #$D7 ; CPU:$C731 PRG:0731 A0 D7 + CMP #$14 ; CPU:$C733 PRG:0733 C9 14 + BCS SubCC721_Loop2 ; CPU:$C735 PRG:0735 B0 08 + LDY #$D4 ; CPU:$C737 PRG:0737 A0 D4 + CMP #$0A ; CPU:$C739 PRG:0739 C9 0A + BCS SubCC721_Loop2 ; CPU:$C73B PRG:073B B0 02 + LDY #$8C ; CPU:$C73D PRG:073D A0 8C ; --------------------------------------------------------------------------- ; Label_C73F @@ -2582,14 +2582,14 @@ Label_C72F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C73F: - JSR SubCC752 ; C73F: 20 52 C7 - LDA $0289 ; C742: AD 89 02 - CMP #$8C ; C745: C9 8C - BNE Label_C751 ; C747: D0 08 - LDA #$FF ; C749: A9 FF - STA $0288 ; C74B: 8D 88 02 - STA $028C ; C74E: 8D 8C 02 +SubCC721_Loop2: + JSR SubCC752 ; CPU:$C73F PRG:073F 20 52 C7 + LDA $0289 ; CPU:$C742 PRG:0742 AD 89 02 + CMP #$8C ; CPU:$C745 PRG:0745 C9 8C + BNE SubCC721_Loop3 ; CPU:$C747 PRG:0747 D0 08 + LDA #$FF ; CPU:$C749 PRG:0749 A9 FF + STA $0288 ; CPU:$C74B PRG:074B 8D 88 02 + STA $028C ; CPU:$C74E PRG:074E 8D 8C 02 ; --------------------------------------------------------------------------- ; Label_C751 @@ -2606,8 +2606,8 @@ Label_C73F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C751: - RTS ; C751: 60 +SubCC721_Loop3: + RTS ; CPU:$C751 PRG:0751 60 ; --------------------------------------------------------------------------- ; SubCC752 @@ -2625,28 +2625,28 @@ Label_C751: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC752: - SEC ; C752: 38 - SBC #$A5 ; C753: E9 A5 - EOR #$FF ; C755: 49 FF - STA $0288 ; C757: 8D 88 02 - ADC #$07 ; C75A: 69 07 - STA $028C ; C75C: 8D 8C 02 - ADC #$08 ; C75F: 69 08 - STA $0290 ; C761: 8D 90 02 - STY $0289 ; C764: 8C 89 02 - INY ; C767: C8 - STY $028D ; C768: 8C 8D 02 - INY ; C76B: C8 - STY $0291 ; C76C: 8C 91 02 - LDA #$01 ; C76F: A9 01 - STA $028A ; C771: 8D 8A 02 - STA $028E ; C774: 8D 8E 02 - STA $0292 ; C777: 8D 92 02 - LDA $74 ; C77A: A5 74 - STA $028B ; C77C: 8D 8B 02 - STA $028F ; C77F: 8D 8F 02 - STA $0293 ; C782: 8D 93 02 - RTS ; C785: 60 + SEC ; CPU:$C752 PRG:0752 38 + SBC #$A5 ; CPU:$C753 PRG:0753 E9 A5 + EOR #$FF ; CPU:$C755 PRG:0755 49 FF + STA $0288 ; CPU:$C757 PRG:0757 8D 88 02 + ADC #$07 ; CPU:$C75A PRG:075A 69 07 + STA $028C ; CPU:$C75C PRG:075C 8D 8C 02 + ADC #$08 ; CPU:$C75F PRG:075F 69 08 + STA $0290 ; CPU:$C761 PRG:0761 8D 90 02 + STY $0289 ; CPU:$C764 PRG:0764 8C 89 02 + INY ; CPU:$C767 PRG:0767 C8 + STY $028D ; CPU:$C768 PRG:0768 8C 8D 02 + INY ; CPU:$C76B PRG:076B C8 + STY $0291 ; CPU:$C76C PRG:076C 8C 91 02 + LDA #$01 ; CPU:$C76F PRG:076F A9 01 + STA $028A ; CPU:$C771 PRG:0771 8D 8A 02 + STA $028E ; CPU:$C774 PRG:0774 8D 8E 02 + STA $0292 ; CPU:$C777 PRG:0777 8D 92 02 + LDA $74 ; CPU:$C77A PRG:077A A5 74 + STA $028B ; CPU:$C77C PRG:077C 8D 8B 02 + STA $028F ; CPU:$C77F PRG:077F 8D 8F 02 + STA $0293 ; CPU:$C782 PRG:0782 8D 93 02 + RTS ; CPU:$C785 PRG:0785 60 .incbin "prg.bin", $0786, $00C7 ; C786-C84C: unclassified/data ; --------------------------------------------------------------------------- @@ -2665,22 +2665,22 @@ SubCC752: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC84D: - LDX #$23 ; C84D: A2 23 - LDA #$4A ; C84F: A9 4A - JSR SetPpuAddress ; C851: 20 C1 C8 - LDA $17 ; C854: A5 17 - ASL A ; C856: 0A - TAY ; C857: A8 - LDA $C78B,Y ; C858: B9 8B C7 - STA PPUDATA ; C85B: 8D 07 20 - LDA $C78C,Y ; C85E: B9 8C C7 - STA PPUDATA ; C861: 8D 07 20 - LDX #$23 ; C864: A2 23 - LDA #$04 ; C866: A9 04 - JSR SetPpuAddress ; C868: 20 C1 C8 - LDX $17 ; C86B: A6 17 - LDY $C7A9,X ; C86D: BC A9 C7 - LDX #$00 ; C870: A2 00 + LDX #$23 ; CPU:$C84D PRG:084D A2 23 + LDA #$4A ; CPU:$C84F PRG:084F A9 4A + JSR SetPpuAddress ; CPU:$C851 PRG:0851 20 C1 C8 + LDA club_selection_index ; CPU:$C854 PRG:0854 A5 17 + ASL A ; CPU:$C856 PRG:0856 0A + TAY ; CPU:$C857 PRG:0857 A8 + LDA $C78B,Y ; CPU:$C858 PRG:0858 B9 8B C7 + STA PPUDATA ; CPU:$C85B PRG:085B 8D 07 20 + LDA $C78C,Y ; CPU:$C85E PRG:085E B9 8C C7 + STA PPUDATA ; CPU:$C861 PRG:0861 8D 07 20 + LDX #$23 ; CPU:$C864 PRG:0864 A2 23 + LDA #$04 ; CPU:$C866 PRG:0866 A9 04 + JSR SetPpuAddress ; CPU:$C868 PRG:0868 20 C1 C8 + LDX club_selection_index ; CPU:$C86B PRG:086B A6 17 + LDY $C7A9,X ; CPU:$C86D PRG:086D BC A9 C7 + LDX #$00 ; CPU:$C870 PRG:0870 A2 00 ; --------------------------------------------------------------------------- ; Label_C872 @@ -2697,14 +2697,14 @@ SubCC84D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C872: - LDA $C7B8,Y ; C872: B9 B8 C7 - STA PPUDATA ; C875: 8D 07 20 - INY ; C878: C8 - INX ; C879: E8 - CPX #$0A ; C87A: E0 0A - BCC Label_C872 ; C87C: 90 F4 - JMP SetPpuScrollAndMask ; C87E: 4C 9D C8 +SubCC84D_OnCarryClear: + LDA $C7B8,Y ; CPU:$C872 PRG:0872 B9 B8 C7 + STA PPUDATA ; CPU:$C875 PRG:0875 8D 07 20 + INY ; CPU:$C878 PRG:0878 C8 + INX ; CPU:$C879 PRG:0879 E8 + CPX #$0A ; CPU:$C87A PRG:087A E0 0A + BCC SubCC84D_OnCarryClear ; CPU:$C87C PRG:087C 90 F4 + JMP SetPpuScrollAndMask ; CPU:$C87E PRG:087E 4C 9D C8 ; --------------------------------------------------------------------------- ; WaitForFramePreservingY @@ -2722,11 +2722,11 @@ Label_C872: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- WaitForFramePreservingY: - TYA ; C881: 98 - PHA ; C882: 48 - JSR WaitForFrame ; C883: 20 F3 C8 - PLA ; C886: 68 - TAY ; C887: A8 + TYA ; CPU:$C881 PRG:0881 98 + PHA ; CPU:$C882 PRG:0882 48 + JSR WaitForFrame ; CPU:$C883 PRG:0883 20 F3 C8 + PLA ; CPU:$C886 PRG:0886 68 + TAY ; CPU:$C887 PRG:0887 A8 ; --------------------------------------------------------------------------- ; InstallNmiCallback @@ -2744,12 +2744,12 @@ WaitForFramePreservingY: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- InstallNmiCallback: - LDA ppu_ctrl_shadow ; C888: A5 00 - AND #$7F ; C88A: 29 7F - STA PPUCTRL ; C88C: 8D 00 20 - STY nmi_vector_lo ; C88F: 84 02 - STX nmi_vector_hi ; C891: 86 03 - RTS ; C893: 60 + LDA ppu_ctrl_shadow ; CPU:$C888 PRG:0888 A5 00 + AND #$7F ; CPU:$C88A PRG:088A 29 7F + STA PPUCTRL ; CPU:$C88C PRG:088C 8D 00 20 + STY nmi_vector_lo ; CPU:$C88F PRG:088F 84 02 + STX nmi_vector_hi ; CPU:$C891 PRG:0891 86 03 + RTS ; CPU:$C893 PRG:0893 60 ; --------------------------------------------------------------------------- ; SpriteOffsetForController @@ -2767,11 +2767,11 @@ InstallNmiCallback: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SpriteOffsetForController: - LDA $7A ; C894: A5 7A - ASL A ; C896: 0A - ASL A ; C897: 0A - TAX ; C898: AA - RTS ; C899: 60 + LDA active_controller_index ; CPU:$C894 PRG:0894 A5 7A + ASL A ; CPU:$C896 PRG:0896 0A + ASL A ; CPU:$C897 PRG:0897 0A + TAX ; CPU:$C898 PRG:0898 AA + RTS ; CPU:$C899 PRG:0899 60 ; --------------------------------------------------------------------------- ; SubCC89A @@ -2789,7 +2789,7 @@ SpriteOffsetForController: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC89A: - JSR WaitForFrame ; C89A: 20 F3 C8 + JSR WaitForFrame ; CPU:$C89A PRG:089A 20 F3 C8 ; --------------------------------------------------------------------------- ; SetPpuScrollAndMask @@ -2807,16 +2807,16 @@ SubCC89A: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SetPpuScrollAndMask: - LDA #$20 ; C89D: A9 20 - STA PPUADDR ; C89F: 8D 06 20 - LDA #$00 ; C8A2: A9 00 - STA PPUADDR ; C8A4: 8D 06 20 - STA PPUSCROLL ; C8A7: 8D 05 20 - LDA #$FF ; C8AA: A9 FF - STA PPUSCROLL ; C8AC: 8D 05 20 - LDA $01 ; C8AF: A5 01 - STA PPUMASK ; C8B1: 8D 01 20 - RTS ; C8B4: 60 + LDA #$20 ; CPU:$C89D PRG:089D A9 20 + STA PPUADDR ; CPU:$C89F PRG:089F 8D 06 20 + LDA #$00 ; CPU:$C8A2 PRG:08A2 A9 00 + STA PPUADDR ; CPU:$C8A4 PRG:08A4 8D 06 20 + STA PPUSCROLL ; CPU:$C8A7 PRG:08A7 8D 05 20 + LDA #$FF ; CPU:$C8AA PRG:08AA A9 FF + STA PPUSCROLL ; CPU:$C8AC PRG:08AC 8D 05 20 + LDA ppu_mask_shadow ; CPU:$C8AF PRG:08AF A5 01 + STA PPUMASK ; CPU:$C8B1 PRG:08B1 8D 01 20 + RTS ; CPU:$C8B4 PRG:08B4 60 ; --------------------------------------------------------------------------- ; RestorePpuCtrlShadow @@ -2834,9 +2834,9 @@ SetPpuScrollAndMask: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- RestorePpuCtrlShadow: - LDA ppu_ctrl_shadow ; C8B5: A5 00 - STA PPUCTRL ; C8B7: 8D 00 20 - RTS ; C8BA: 60 + LDA ppu_ctrl_shadow ; CPU:$C8B5 PRG:08B5 A5 00 + STA PPUCTRL ; CPU:$C8B7 PRG:08B7 8D 00 20 + RTS ; CPU:$C8BA PRG:08BA 60 ; --------------------------------------------------------------------------- ; MultiplyABy32 @@ -2854,7 +2854,7 @@ RestorePpuCtrlShadow: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- MultiplyABy32: - ASL A ; C8BB: 0A + ASL A ; CPU:$C8BB PRG:08BB 0A ; --------------------------------------------------------------------------- ; MultiplyBy32 @@ -2872,11 +2872,11 @@ MultiplyABy32: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- MultiplyBy32: - ASL A ; C8BC: 0A - ASL A ; C8BD: 0A - ASL A ; C8BE: 0A - ASL A ; C8BF: 0A - RTS ; C8C0: 60 + ASL A ; CPU:$C8BC PRG:08BC 0A + ASL A ; CPU:$C8BD PRG:08BD 0A + ASL A ; CPU:$C8BE PRG:08BE 0A + ASL A ; CPU:$C8BF PRG:08BF 0A + RTS ; CPU:$C8C0 PRG:08C0 60 ; --------------------------------------------------------------------------- ; SetPpuAddress @@ -2894,9 +2894,9 @@ MultiplyBy32: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SetPpuAddress: - STX PPUADDR ; C8C1: 8E 06 20 - STA PPUADDR ; C8C4: 8D 06 20 - RTS ; C8C7: 60 + STX PPUADDR ; CPU:$C8C1 PRG:08C1 8E 06 20 + STA PPUADDR ; CPU:$C8C4 PRG:08C4 8D 06 20 + RTS ; CPU:$C8C7 PRG:08C7 60 ; --------------------------------------------------------------------------- ; ClearNametableAndOam @@ -2914,14 +2914,14 @@ SetPpuAddress: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ClearNametableAndOam: - LDA ppu_mask_shadow ; C8C8: A5 01 - AND #$E7 ; C8CA: 29 E7 - STA PPUMASK ; C8CC: 8D 01 20 - LDX #$20 ; C8CF: A2 20 - LDA #$00 ; C8D1: A9 00 - JSR SetPpuAddress ; C8D3: 20 C1 C8 - TAX ; C8D6: AA - LDA #$9D ; C8D7: A9 9D + LDA ppu_mask_shadow ; CPU:$C8C8 PRG:08C8 A5 01 + AND #$E7 ; CPU:$C8CA PRG:08CA 29 E7 + STA PPUMASK ; CPU:$C8CC PRG:08CC 8D 01 20 + LDX #$20 ; CPU:$C8CF PRG:08CF A2 20 + LDA #$00 ; CPU:$C8D1 PRG:08D1 A9 00 + JSR SetPpuAddress ; CPU:$C8D3 PRG:08D3 20 C1 C8 + TAX ; CPU:$C8D6 PRG:08D6 AA + LDA #$9D ; CPU:$C8D7 PRG:08D7 A9 9D ; --------------------------------------------------------------------------- ; Label_C8D9 @@ -2938,13 +2938,13 @@ ClearNametableAndOam: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C8D9: - STA PPUDATA ; C8D9: 8D 07 20 - STA PPUDATA ; C8DC: 8D 07 20 - STA PPUDATA ; C8DF: 8D 07 20 - STA PPUDATA ; C8E2: 8D 07 20 - INX ; C8E5: E8 - BNE Label_C8D9 ; C8E6: D0 F1 +ClearNametableAndOam_OnNonzero: + STA PPUDATA ; CPU:$C8D9 PRG:08D9 8D 07 20 + STA PPUDATA ; CPU:$C8DC PRG:08DC 8D 07 20 + STA PPUDATA ; CPU:$C8DF PRG:08DF 8D 07 20 + STA PPUDATA ; CPU:$C8E2 PRG:08E2 8D 07 20 + INX ; CPU:$C8E5 PRG:08E5 E8 + BNE ClearNametableAndOam_OnNonzero ; CPU:$C8E6 PRG:08E6 D0 F1 ; --------------------------------------------------------------------------- ; ClearOamShadowLoop @@ -2962,8 +2962,8 @@ Label_C8D9: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ClearOamShadowLoop: - LDX #$00 ; C8E8: A2 00 - LDA #$FF ; C8EA: A9 FF + LDX #$00 ; CPU:$C8E8 PRG:08E8 A2 00 + LDA #$FF ; CPU:$C8EA PRG:08EA A9 FF ; --------------------------------------------------------------------------- ; Label_C8EC @@ -2980,11 +2980,11 @@ ClearOamShadowLoop: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C8EC: - STA $0200,X ; C8EC: 9D 00 02 - INX ; C8EF: E8 - BNE Label_C8EC ; C8F0: D0 FA - RTS ; C8F2: 60 +ClearOamShadowLoop_OnNonzero: + STA $0200,X ; CPU:$C8EC PRG:08EC 9D 00 02 + INX ; CPU:$C8EF PRG:08EF E8 + BNE ClearOamShadowLoop_OnNonzero ; CPU:$C8F0 PRG:08F0 D0 FA + RTS ; CPU:$C8F2 PRG:08F2 60 ; --------------------------------------------------------------------------- ; WaitForFrame @@ -3002,7 +3002,7 @@ Label_C8EC: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- WaitForFrame: - LDY #$01 ; C8F3: A0 01 + LDY #$01 ; CPU:$C8F3 PRG:08F3 A0 01 ; --------------------------------------------------------------------------- ; SubCC8F5 @@ -3020,9 +3020,9 @@ WaitForFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC8F5: - LDA #$00 ; C8F5: A9 00 - STA $0C ; C8F7: 85 0C - STA $08 ; C8F9: 85 08 + LDA #$00 ; CPU:$C8F5 PRG:08F5 A9 00 + STA $0C ; CPU:$C8F7 PRG:08F7 85 0C + STA nmi_complete_flag ; CPU:$C8F9 PRG:08F9 85 08 ; --------------------------------------------------------------------------- ; Label_C8FB @@ -3039,13 +3039,13 @@ SubCC8F5: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C8FB: - LDA $0C ; C8FB: A5 0C - BNE Label_C906 ; C8FD: D0 07 - LDA $08 ; C8FF: A5 08 - BEQ Label_C8FB ; C901: F0 F8 - DEY ; C903: 88 - BNE SubCC8F5 ; C904: D0 EF +SubCC8F5_OnZero: + LDA $0C ; CPU:$C8FB PRG:08FB A5 0C + BNE SubCC8F5_Loop ; CPU:$C8FD PRG:08FD D0 07 + LDA nmi_complete_flag ; CPU:$C8FF PRG:08FF A5 08 + BEQ SubCC8F5_OnZero ; CPU:$C901 PRG:0901 F0 F8 + DEY ; CPU:$C903 PRG:0903 88 + BNE SubCC8F5 ; CPU:$C904 PRG:0904 D0 EF ; --------------------------------------------------------------------------- ; Label_C906 @@ -3062,8 +3062,8 @@ Label_C8FB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C906: - RTS ; C906: 60 +SubCC8F5_Loop: + RTS ; CPU:$C906 PRG:0906 60 ; --------------------------------------------------------------------------- ; SubCC907 @@ -3081,7 +3081,7 @@ Label_C906: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC907: - LDY #$01 ; C907: A0 01 + LDY #$01 ; CPU:$C907 PRG:0907 A0 01 ; --------------------------------------------------------------------------- ; WaitFrameGroups @@ -3099,13 +3099,13 @@ SubCC907: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- WaitFrameGroups: - STY $0B ; C909: 84 0B - LDY #$3C ; C90B: A0 3C - JSR SubCC8F5 ; C90D: 20 F5 C8 - LDY $0B ; C910: A4 0B - DEY ; C912: 88 - BNE WaitFrameGroups ; C913: D0 F4 - RTS ; C915: 60 + STY $0B ; CPU:$C909 PRG:0909 84 0B + LDY #$3C ; CPU:$C90B PRG:090B A0 3C + JSR SubCC8F5 ; CPU:$C90D PRG:090D 20 F5 C8 + LDY $0B ; CPU:$C910 PRG:0910 A4 0B + DEY ; CPU:$C912 PRG:0912 88 + BNE WaitFrameGroups ; CPU:$C913 PRG:0913 D0 F4 + RTS ; CPU:$C915 PRG:0915 60 ; --------------------------------------------------------------------------- ; SubCC916 @@ -3123,18 +3123,18 @@ WaitFrameGroups: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC916: - JSR WaitForFrame ; C916: 20 F3 C8 - LDA #$21 ; C919: A9 21 - STA $04 ; C91B: 85 04 - LDA #$24 ; C91D: A9 24 - STA $05 ; C91F: 85 05 - LDX #$00 ; C921: A2 00 - JSR SubCC946 ; C923: 20 46 C9 - LDA $82 ; C926: A5 82 - BEQ Label_C931 ; C928: F0 07 - LDA $0143 ; C92A: AD 43 01 - BEQ Label_C945 ; C92D: F0 16 - BNE Label_C935 ; C92F: D0 04 + JSR WaitForFrame ; CPU:$C916 PRG:0916 20 F3 C8 + LDA #$21 ; CPU:$C919 PRG:0919 A9 21 + STA source_pointer_lo ; CPU:$C91B PRG:091B 85 04 + LDA #$24 ; CPU:$C91D PRG:091D A9 24 + STA source_pointer_hi ; CPU:$C91F PRG:091F 85 05 + LDX #$00 ; CPU:$C921 PRG:0921 A2 00 + JSR SubCC946 ; CPU:$C923 PRG:0923 20 46 C9 + LDA $82 ; CPU:$C926 PRG:0926 A5 82 + BEQ SubCC916_Loop ; CPU:$C928 PRG:0928 F0 07 + LDA $0143 ; CPU:$C92A PRG:092A AD 43 01 + BEQ SubCC916_Loop3 ; CPU:$C92D PRG:092D F0 16 + BNE SubCC916_Loop2 ; CPU:$C92F PRG:092F D0 04 ; --------------------------------------------------------------------------- ; Label_C931 @@ -3151,9 +3151,9 @@ SubCC916: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C931: - LDA $0D ; C931: A5 0D - BEQ Label_C945 ; C933: F0 10 +SubCC916_Loop: + LDA menu_selection ; CPU:$C931 PRG:0931 A5 0D + BEQ SubCC916_Loop3 ; CPU:$C933 PRG:0933 F0 10 ; --------------------------------------------------------------------------- ; Label_C935 @@ -3170,14 +3170,14 @@ Label_C931: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C935: - JSR WaitForFrame ; C935: 20 F3 C8 - LDA #$21 ; C938: A9 21 - STA $04 ; C93A: 85 04 - LDA #$64 ; C93C: A9 64 - STA $05 ; C93E: 85 05 - LDX #$01 ; C940: A2 01 - JSR SubCC946 ; C942: 20 46 C9 +SubCC916_Loop2: + JSR WaitForFrame ; CPU:$C935 PRG:0935 20 F3 C8 + LDA #$21 ; CPU:$C938 PRG:0938 A9 21 + STA source_pointer_lo ; CPU:$C93A PRG:093A 85 04 + LDA #$64 ; CPU:$C93C PRG:093C A9 64 + STA source_pointer_hi ; CPU:$C93E PRG:093E 85 05 + LDX #$01 ; CPU:$C940 PRG:0940 A2 01 + JSR SubCC946 ; CPU:$C942 PRG:0942 20 46 C9 ; --------------------------------------------------------------------------- ; Label_C945 @@ -3194,8 +3194,8 @@ Label_C935: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C945: - RTS ; C945: 60 +SubCC916_Loop3: + RTS ; CPU:$C945 PRG:0945 60 ; --------------------------------------------------------------------------- ; SubCC946 @@ -3213,22 +3213,22 @@ Label_C945: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCC946: - LDA $04 ; C946: A5 04 - STA PPUADDR ; C948: 8D 06 20 - LDA $05 ; C94B: A5 05 - STA PPUADDR ; C94D: 8D 06 20 - LDA $2C,X ; C950: B5 2C - STA $19 ; C952: 85 19 - LDA #$00 ; C954: A9 00 - STA $1A ; C956: 85 1A - JSR SubCCA30 ; C958: 20 30 CA - JSR SetPpuScrollAndMask ; C95B: 20 9D C8 - LDA $82 ; C95E: A5 82 - BEQ Label_C96B ; C960: F0 09 - LDA $0143 ; C962: AD 43 01 - CMP #$02 ; C965: C9 02 - BEQ Label_C9E6 ; C967: F0 7D - BNE Label_C971 ; C969: D0 06 + LDA source_pointer_lo ; CPU:$C946 PRG:0946 A5 04 + STA PPUADDR ; CPU:$C948 PRG:0948 8D 06 20 + LDA source_pointer_hi ; CPU:$C94B PRG:094B A5 05 + STA PPUADDR ; CPU:$C94D PRG:094D 8D 06 20 + LDA $2C,X ; CPU:$C950 PRG:0950 B5 2C + STA $19 ; CPU:$C952 PRG:0952 85 19 + LDA #$00 ; CPU:$C954 PRG:0954 A9 00 + STA $1A ; CPU:$C956 PRG:0956 85 1A + JSR SubCCA30 ; CPU:$C958 PRG:0958 20 30 CA + JSR SetPpuScrollAndMask ; CPU:$C95B PRG:095B 20 9D C8 + LDA $82 ; CPU:$C95E PRG:095E A5 82 + BEQ SubCC946_Loop ; CPU:$C960 PRG:0960 F0 09 + LDA $0143 ; CPU:$C962 PRG:0962 AD 43 01 + CMP #$02 ; CPU:$C965 PRG:0965 C9 02 + BEQ SubCC946_Loop6 ; CPU:$C967 PRG:0967 F0 7D + BNE SubCC946_Loop2 ; CPU:$C969 PRG:0969 D0 06 ; --------------------------------------------------------------------------- ; Label_C96B @@ -3245,10 +3245,10 @@ SubCC946: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C96B: - LDA $0D ; C96B: A5 0D - CMP #$02 ; C96D: C9 02 - BEQ Label_C9E6 ; C96F: F0 75 +SubCC946_Loop: + LDA menu_selection ; CPU:$C96B PRG:096B A5 0D + CMP #$02 ; CPU:$C96D PRG:096D C9 02 + BEQ SubCC946_Loop6 ; CPU:$C96F PRG:096F F0 75 ; --------------------------------------------------------------------------- ; Label_C971 @@ -3265,27 +3265,27 @@ Label_C96B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C971: - JSR WaitForFrame ; C971: 20 F3 C8 - LDA $04 ; C974: A5 04 - STA PPUADDR ; C976: 8D 06 20 - LDA $05 ; C979: A5 05 - CLC ; C97B: 18 - ADC #$03 ; C97C: 69 03 - STA PPUADDR ; C97E: 8D 06 20 - TXA ; C981: 8A - ASL A ; C982: 0A - TAX ; C983: AA - LDA $10,X ; C984: B5 10 - BNE Label_C998 ; C986: D0 10 - LDA $0F,X ; C988: B5 0F - CMP $14 ; C98A: C5 14 - BNE Label_C998 ; C98C: D0 0A - LDA #$00 ; C98E: A9 00 - STA $19 ; C990: 85 19 - STA $1A ; C992: 85 1A - LDA #$A8 ; C994: A9 A8 - BNE Label_C9BA ; C996: D0 22 +SubCC946_Loop2: + JSR WaitForFrame ; CPU:$C971 PRG:0971 20 F3 C8 + LDA source_pointer_lo ; CPU:$C974 PRG:0974 A5 04 + STA PPUADDR ; CPU:$C976 PRG:0976 8D 06 20 + LDA source_pointer_hi ; CPU:$C979 PRG:0979 A5 05 + CLC ; CPU:$C97B PRG:097B 18 + ADC #$03 ; CPU:$C97C PRG:097C 69 03 + STA PPUADDR ; CPU:$C97E PRG:097E 8D 06 20 + TXA ; CPU:$C981 PRG:0981 8A + ASL A ; CPU:$C982 PRG:0982 0A + TAX ; CPU:$C983 PRG:0983 AA + LDA $10,X ; CPU:$C984 PRG:0984 B5 10 + BNE SubCC946_Loop3 ; CPU:$C986 PRG:0986 D0 10 + LDA $0F,X ; CPU:$C988 PRG:0988 B5 0F + CMP $14 ; CPU:$C98A PRG:098A C5 14 + BNE SubCC946_Loop3 ; CPU:$C98C PRG:098C D0 0A + LDA #$00 ; CPU:$C98E PRG:098E A9 00 + STA $19 ; CPU:$C990 PRG:0990 85 19 + STA $1A ; CPU:$C992 PRG:0992 85 1A + LDA #$A8 ; CPU:$C994 PRG:0994 A9 A8 + BNE SubCC946_Loop5 ; CPU:$C996 PRG:0996 D0 22 ; --------------------------------------------------------------------------- ; Label_C998 @@ -3302,17 +3302,17 @@ Label_C971: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C998: - LDA $0F,X ; C998: B5 0F - SEC ; C99A: 38 - SBC $14 ; C99B: E5 14 - STA $19 ; C99D: 85 19 - LDA $10,X ; C99F: B5 10 - SBC #$00 ; C9A1: E9 00 - STA $1A ; C9A3: 85 1A - BCC Label_C9AB ; C9A5: 90 04 - LDA #$A1 ; C9A7: A9 A1 - BNE Label_C9BA ; C9A9: D0 0F +SubCC946_Loop3: + LDA $0F,X ; CPU:$C998 PRG:0998 B5 0F + SEC ; CPU:$C99A PRG:099A 38 + SBC $14 ; CPU:$C99B PRG:099B E5 14 + STA $19 ; CPU:$C99D PRG:099D 85 19 + LDA $10,X ; CPU:$C99F PRG:099F B5 10 + SBC #$00 ; CPU:$C9A1 PRG:09A1 E9 00 + STA $1A ; CPU:$C9A3 PRG:09A3 85 1A + BCC SubCC946_Loop4 ; CPU:$C9A5 PRG:09A5 90 04 + LDA #$A1 ; CPU:$C9A7 PRG:09A7 A9 A1 + BNE SubCC946_Loop5 ; CPU:$C9A9 PRG:09A9 D0 0F ; --------------------------------------------------------------------------- ; Label_C9AB @@ -3329,15 +3329,15 @@ Label_C998: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C9AB: - LDA $14 ; C9AB: A5 14 - SEC ; C9AD: 38 - SBC $0F,X ; C9AE: F5 0F - STA $19 ; C9B0: 85 19 - LDA #$00 ; C9B2: A9 00 - SBC $10,X ; C9B4: F5 10 - STA $1A ; C9B6: 85 1A - LDA #$A2 ; C9B8: A9 A2 +SubCC946_Loop4: + LDA $14 ; CPU:$C9AB PRG:09AB A5 14 + SEC ; CPU:$C9AD PRG:09AD 38 + SBC $0F,X ; CPU:$C9AE PRG:09AE F5 0F + STA $19 ; CPU:$C9B0 PRG:09B0 85 19 + LDA #$00 ; CPU:$C9B2 PRG:09B2 A9 00 + SBC $10,X ; CPU:$C9B4 PRG:09B4 F5 10 + STA $1A ; CPU:$C9B6 PRG:09B6 85 1A + LDA #$A2 ; CPU:$C9B8 PRG:09B8 A9 A2 ; --------------------------------------------------------------------------- ; Label_C9BA @@ -3354,25 +3354,25 @@ Label_C9AB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C9BA: - STA PPUDATA ; C9BA: 8D 07 20 - JSR SubCCA30 ; C9BD: 20 30 CA - LDA #$9D ; C9C0: A9 9D - STA PPUDATA ; C9C2: 8D 07 20 - JSR SetPpuScrollAndMask ; C9C5: 20 9D C8 - JSR WaitForFrame ; C9C8: 20 F3 C8 - LDA $04 ; C9CB: A5 04 - STA PPUADDR ; C9CD: 8D 06 20 - LDA $05 ; C9D0: A5 05 - CLC ; C9D2: 18 - ADC #$08 ; C9D3: 69 08 - STA PPUADDR ; C9D5: 8D 06 20 - LDA $0F,X ; C9D8: B5 0F - STA $19 ; C9DA: 85 19 - LDA $10,X ; C9DC: B5 10 - STA $1A ; C9DE: 85 1A - JSR SubCCA30 ; C9E0: 20 30 CA - JMP SetPpuScrollAndMask ; C9E3: 4C 9D C8 +SubCC946_Loop5: + STA PPUDATA ; CPU:$C9BA PRG:09BA 8D 07 20 + JSR SubCCA30 ; CPU:$C9BD PRG:09BD 20 30 CA + LDA #$9D ; CPU:$C9C0 PRG:09C0 A9 9D + STA PPUDATA ; CPU:$C9C2 PRG:09C2 8D 07 20 + JSR SetPpuScrollAndMask ; CPU:$C9C5 PRG:09C5 20 9D C8 + JSR WaitForFrame ; CPU:$C9C8 PRG:09C8 20 F3 C8 + LDA source_pointer_lo ; CPU:$C9CB PRG:09CB A5 04 + STA PPUADDR ; CPU:$C9CD PRG:09CD 8D 06 20 + LDA source_pointer_hi ; CPU:$C9D0 PRG:09D0 A5 05 + CLC ; CPU:$C9D2 PRG:09D2 18 + ADC #$08 ; CPU:$C9D3 PRG:09D3 69 08 + STA PPUADDR ; CPU:$C9D5 PRG:09D5 8D 06 20 + LDA $0F,X ; CPU:$C9D8 PRG:09D8 B5 0F + STA $19 ; CPU:$C9DA PRG:09DA 85 19 + LDA $10,X ; CPU:$C9DC PRG:09DC B5 10 + STA $1A ; CPU:$C9DE PRG:09DE 85 1A + JSR SubCCA30 ; CPU:$C9E0 PRG:09E0 20 30 CA + JMP SetPpuScrollAndMask ; CPU:$C9E3 PRG:09E3 4C 9D C8 ; --------------------------------------------------------------------------- ; Label_C9E6 @@ -3389,22 +3389,22 @@ Label_C9BA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_C9E6: - JSR WaitForFrame ; C9E6: 20 F3 C8 - LDA $04 ; C9E9: A5 04 - STA PPUADDR ; C9EB: 8D 06 20 - LDA $05 ; C9EE: A5 05 - CLC ; C9F0: 18 - ADC #$05 ; C9F1: 69 05 - STA PPUADDR ; C9F3: 8D 06 20 - LDA #$00 ; C9F6: A9 00 - STA $1A ; C9F8: 85 1A - CPX #$00 ; C9FA: E0 00 - BEQ Label_CA06 ; C9FC: F0 08 - LDA $14 ; C9FE: A5 14 - BEQ Label_CA26 ; CA00: F0 24 - BMI Label_CA26 ; CA02: 30 22 - BPL Label_CA0F ; CA04: 10 09 +SubCC946_Loop6: + JSR WaitForFrame ; CPU:$C9E6 PRG:09E6 20 F3 C8 + LDA source_pointer_lo ; CPU:$C9E9 PRG:09E9 A5 04 + STA PPUADDR ; CPU:$C9EB PRG:09EB 8D 06 20 + LDA source_pointer_hi ; CPU:$C9EE PRG:09EE A5 05 + CLC ; CPU:$C9F0 PRG:09F0 18 + ADC #$05 ; CPU:$C9F1 PRG:09F1 69 05 + STA PPUADDR ; CPU:$C9F3 PRG:09F3 8D 06 20 + LDA #$00 ; CPU:$C9F6 PRG:09F6 A9 00 + STA $1A ; CPU:$C9F8 PRG:09F8 85 1A + CPX #$00 ; CPU:$C9FA PRG:09FA E0 00 + BEQ SubCC946_Loop7 ; CPU:$C9FC PRG:09FC F0 08 + LDA $14 ; CPU:$C9FE PRG:09FE A5 14 + BEQ SubCC946_Loop9 ; CPU:$CA00 PRG:0A00 F0 24 + BMI SubCC946_Loop9 ; CPU:$CA02 PRG:0A02 30 22 + BPL SubCC946_Loop8 ; CPU:$CA04 PRG:0A04 10 09 ; --------------------------------------------------------------------------- ; Label_CA06 @@ -3421,11 +3421,11 @@ Label_C9E6: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CA06: - LDA $14 ; CA06: A5 14 - BEQ Label_CA26 ; CA08: F0 1C - BPL Label_CA26 ; CA0A: 10 1A - JSR SubCD9B1 ; CA0C: 20 B1 D9 +SubCC946_Loop7: + LDA $14 ; CPU:$CA06 PRG:0A06 A5 14 + BEQ SubCC946_Loop9 ; CPU:$CA08 PRG:0A08 F0 1C + BPL SubCC946_Loop9 ; CPU:$CA0A PRG:0A0A 10 1A + JSR SubCD9B1 ; CPU:$CA0C PRG:0A0C 20 B1 D9 ; --------------------------------------------------------------------------- ; Label_CA0F @@ -3442,16 +3442,16 @@ Label_CA06: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CA0F: - STA $19 ; CA0F: 85 19 - JSR SubCCA30 ; CA11: 20 30 CA - LDA #$9D ; CA14: A9 9D - STA PPUDATA ; CA16: 8D 07 20 - LDA #$1E ; CA19: A9 1E - STA PPUDATA ; CA1B: 8D 07 20 - LDA #$19 ; CA1E: A9 19 - STA PPUDATA ; CA20: 8D 07 20 - JMP SetPpuScrollAndMask ; CA23: 4C 9D C8 +SubCC946_Loop8: + STA $19 ; CPU:$CA0F PRG:0A0F 85 19 + JSR SubCCA30 ; CPU:$CA11 PRG:0A11 20 30 CA + LDA #$9D ; CPU:$CA14 PRG:0A14 A9 9D + STA PPUDATA ; CPU:$CA16 PRG:0A16 8D 07 20 + LDA #$1E ; CPU:$CA19 PRG:0A19 A9 1E + STA PPUDATA ; CPU:$CA1B PRG:0A1B 8D 07 20 + LDA #$19 ; CPU:$CA1E PRG:0A1E A9 19 + STA PPUDATA ; CPU:$CA20 PRG:0A20 8D 07 20 + JMP SetPpuScrollAndMask ; CPU:$CA23 PRG:0A23 4C 9D C8 ; --------------------------------------------------------------------------- ; Label_CA26 @@ -3468,11 +3468,11 @@ Label_CA0F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CA26: - LDA #$00 ; CA26: A9 00 - STA $19 ; CA28: 85 19 - JSR SubCCA30 ; CA2A: 20 30 CA - JMP SetPpuScrollAndMask ; CA2D: 4C 9D C8 +SubCC946_Loop9: + LDA #$00 ; CPU:$CA26 PRG:0A26 A9 00 + STA $19 ; CPU:$CA28 PRG:0A28 85 19 + JSR SubCCA30 ; CPU:$CA2A PRG:0A2A 20 30 CA + JMP SetPpuScrollAndMask ; CPU:$CA2D PRG:0A2D 4C 9D C8 ; --------------------------------------------------------------------------- ; SubCCA30 @@ -3490,25 +3490,25 @@ Label_CA26: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCA30: - TXA ; CA30: 8A - PHA ; CA31: 48 - LDA #$00 ; CA32: A9 00 - STA $1B ; CA34: 85 1B - STA $1C ; CA36: 85 1C - STA $1D ; CA38: 85 1D - LDX #$02 ; CA3A: A2 02 - LDA #$64 ; CA3C: A9 64 - JSR SubCCA53 ; CA3E: 20 53 CA - DEX ; CA41: CA - LDA #$0A ; CA42: A9 0A - JSR SubCCA53 ; CA44: 20 53 CA - DEX ; CA47: CA - LDA #$01 ; CA48: A9 01 - JSR SubCCA53 ; CA4A: 20 53 CA - JSR SubCCA70 ; CA4D: 20 70 CA - PLA ; CA50: 68 - TAX ; CA51: AA - RTS ; CA52: 60 + TXA ; CPU:$CA30 PRG:0A30 8A + PHA ; CPU:$CA31 PRG:0A31 48 + LDA #$00 ; CPU:$CA32 PRG:0A32 A9 00 + STA $1B ; CPU:$CA34 PRG:0A34 85 1B + STA $1C ; CPU:$CA36 PRG:0A36 85 1C + STA sequence_upper_bound ; CPU:$CA38 PRG:0A38 85 1D + LDX #$02 ; CPU:$CA3A PRG:0A3A A2 02 + LDA #$64 ; CPU:$CA3C PRG:0A3C A9 64 + JSR SubCCA53 ; CPU:$CA3E PRG:0A3E 20 53 CA + DEX ; CPU:$CA41 PRG:0A41 CA + LDA #$0A ; CPU:$CA42 PRG:0A42 A9 0A + JSR SubCCA53 ; CPU:$CA44 PRG:0A44 20 53 CA + DEX ; CPU:$CA47 PRG:0A47 CA + LDA #$01 ; CPU:$CA48 PRG:0A48 A9 01 + JSR SubCCA53 ; CPU:$CA4A PRG:0A4A 20 53 CA + JSR SubCCA70 ; CPU:$CA4D PRG:0A4D 20 70 CA + PLA ; CPU:$CA50 PRG:0A50 68 + TAX ; CPU:$CA51 PRG:0A51 AA + RTS ; CPU:$CA52 PRG:0A52 60 ; --------------------------------------------------------------------------- ; SubCCA53 @@ -3526,7 +3526,7 @@ SubCCA30: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCA53: - STA $1E ; CA53: 85 1E + STA sequence_lower_bound ; CPU:$CA53 PRG:0A53 85 1E ; --------------------------------------------------------------------------- ; SubCCA55 @@ -3544,12 +3544,12 @@ SubCCA53: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCA55: - LDA $1A ; CA55: A5 1A - BNE Label_CA60 ; CA57: D0 07 - LDA $19 ; CA59: A5 19 - CMP $1E ; CA5B: C5 1E - BCS Label_CA60 ; CA5D: B0 01 - RTS ; CA5F: 60 + LDA $1A ; CPU:$CA55 PRG:0A55 A5 1A + BNE SubCCA55_Loop ; CPU:$CA57 PRG:0A57 D0 07 + LDA $19 ; CPU:$CA59 PRG:0A59 A5 19 + CMP sequence_lower_bound ; CPU:$CA5B PRG:0A5B C5 1E + BCS SubCCA55_Loop ; CPU:$CA5D PRG:0A5D B0 01 + RTS ; CPU:$CA5F PRG:0A5F 60 ; --------------------------------------------------------------------------- ; Label_CA60 @@ -3566,15 +3566,15 @@ SubCCA55: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CA60: - INC $1B,X ; CA60: F6 1B - LDA $19 ; CA62: A5 19 - SEC ; CA64: 38 - SBC $1E ; CA65: E5 1E - STA $19 ; CA67: 85 19 - BCS SubCCA55 ; CA69: B0 EA - DEC $1A ; CA6B: C6 1A - JMP SubCCA55 ; CA6D: 4C 55 CA +SubCCA55_Loop: + INC $1B,X ; CPU:$CA60 PRG:0A60 F6 1B + LDA $19 ; CPU:$CA62 PRG:0A62 A5 19 + SEC ; CPU:$CA64 PRG:0A64 38 + SBC sequence_lower_bound ; CPU:$CA65 PRG:0A65 E5 1E + STA $19 ; CPU:$CA67 PRG:0A67 85 19 + BCS SubCCA55 ; CPU:$CA69 PRG:0A69 B0 EA + DEC $1A ; CPU:$CA6B PRG:0A6B C6 1A + JMP SubCCA55 ; CPU:$CA6D PRG:0A6D 4C 55 CA ; --------------------------------------------------------------------------- ; SubCCA70 @@ -3592,10 +3592,10 @@ Label_CA60: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCA70: - LDA $1D ; CA70: A5 1D - STA $13 ; CA72: 85 13 - BNE Label_CA78 ; CA74: D0 02 - BEQ Label_CA7B ; CA76: F0 03 + LDA sequence_upper_bound ; CPU:$CA70 PRG:0A70 A5 1D + STA $13 ; CPU:$CA72 PRG:0A72 85 13 + BNE SubCCA70_Loop ; CPU:$CA74 PRG:0A74 D0 02 + BEQ SubCCA70_Loop2 ; CPU:$CA76 PRG:0A76 F0 03 ; --------------------------------------------------------------------------- ; Label_CA78 @@ -3612,8 +3612,8 @@ SubCCA70: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CA78: - STA PPUDATA ; CA78: 8D 07 20 +SubCCA70_Loop: + STA PPUDATA ; CPU:$CA78 PRG:0A78 8D 07 20 ; --------------------------------------------------------------------------- ; Label_CA7B @@ -3630,12 +3630,12 @@ Label_CA78: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CA7B: - LDA $1C ; CA7B: A5 1C - BNE Label_CA85 ; CA7D: D0 06 - LDY $13 ; CA7F: A4 13 - BNE Label_CA85 ; CA81: D0 02 - BEQ Label_CA88 ; CA83: F0 03 +SubCCA70_Loop2: + LDA $1C ; CPU:$CA7B PRG:0A7B A5 1C + BNE SubCCA70_Loop3 ; CPU:$CA7D PRG:0A7D D0 06 + LDY $13 ; CPU:$CA7F PRG:0A7F A4 13 + BNE SubCCA70_Loop3 ; CPU:$CA81 PRG:0A81 D0 02 + BEQ SubCCA70_Loop4 ; CPU:$CA83 PRG:0A83 F0 03 ; --------------------------------------------------------------------------- ; Label_CA85 @@ -3652,8 +3652,8 @@ Label_CA7B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CA85: - STA PPUDATA ; CA85: 8D 07 20 +SubCCA70_Loop3: + STA PPUDATA ; CPU:$CA85 PRG:0A85 8D 07 20 ; --------------------------------------------------------------------------- ; Label_CA88 @@ -3670,10 +3670,10 @@ Label_CA85: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CA88: - LDA $1B ; CA88: A5 1B - STA PPUDATA ; CA8A: 8D 07 20 - RTS ; CA8D: 60 +SubCCA70_Loop4: + LDA $1B ; CPU:$CA88 PRG:0A88 A5 1B + STA PPUDATA ; CPU:$CA8A PRG:0A8A 8D 07 20 + RTS ; CPU:$CA8D PRG:0A8D 60 ; --------------------------------------------------------------------------- ; SubCCA8E @@ -3691,13 +3691,13 @@ Label_CA88: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCA8E: - LDX $7A ; CA8E: A6 7A - INC $2C,X ; CA90: F6 2C - LDA $2C,X ; CA92: B5 2C - CMP #$63 ; CA94: C9 63 - BCC Label_CA9C ; CA96: 90 04 - LDA #$63 ; CA98: A9 63 - STA $2C,X ; CA9A: 95 2C + LDX active_controller_index ; CPU:$CA8E PRG:0A8E A6 7A + INC $2C,X ; CPU:$CA90 PRG:0A90 F6 2C + LDA $2C,X ; CPU:$CA92 PRG:0A92 B5 2C + CMP #$63 ; CPU:$CA94 PRG:0A94 C9 63 + BCC SubCCA8E_Loop ; CPU:$CA96 PRG:0A96 90 04 + LDA #$63 ; CPU:$CA98 PRG:0A98 A9 63 + STA $2C,X ; CPU:$CA9A PRG:0A9A 95 2C ; --------------------------------------------------------------------------- ; Label_CA9C @@ -3714,8 +3714,8 @@ SubCCA8E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CA9C: - RTS ; CA9C: 60 +SubCCA8E_Loop: + RTS ; CPU:$CA9C PRG:0A9C 60 ; --------------------------------------------------------------------------- ; SubCCA9D @@ -3733,8 +3733,8 @@ Label_CA9C: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCA9D: - LDY #$5B ; CA9D: A0 5B - LDA #$FF ; CA9F: A9 FF + LDY #$5B ; CPU:$CA9D PRG:0A9D A0 5B + LDA #$FF ; CPU:$CA9F PRG:0A9F A9 FF ; --------------------------------------------------------------------------- ; Label_CAA1 @@ -3751,11 +3751,11 @@ SubCCA9D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CAA1: - STA $0218,Y ; CAA1: 99 18 02 - DEY ; CAA4: 88 - BPL Label_CAA1 ; CAA5: 10 FA - RTS ; CAA7: 60 +SubCCA9D_OnNonnegative: + STA $0218,Y ; CPU:$CAA1 PRG:0AA1 99 18 02 + DEY ; CPU:$CAA4 PRG:0AA4 88 + BPL SubCCA9D_OnNonnegative ; CPU:$CAA5 PRG:0AA5 10 FA + RTS ; CPU:$CAA7 PRG:0AA7 60 ; --------------------------------------------------------------------------- ; RefreshSequenceSpriteLayout @@ -3773,34 +3773,34 @@ Label_CAA1: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- RefreshSequenceSpriteLayout: - JSR SubCCA9D ; CAA8: 20 9D CA - LDY $17 ; CAAB: A4 17 - LDA $C7FE,Y ; CAAD: B9 FE C7 - STA $33 ; CAB0: 85 33 - CLC ; CAB2: 18 - ADC #$10 ; CAB3: 69 10 - STA $0273 ; CAB5: 8D 73 02 - LDA #$90 ; CAB8: A9 90 - STA $0270 ; CABA: 8D 70 02 - LDA #$0F ; CABD: A9 0F - STA $0271 ; CABF: 8D 71 02 - LDA #$01 ; CAC2: A9 01 - STA $0272 ; CAC4: 8D 72 02 - LDA $CC15,Y ; CAC7: B9 15 CC - STA $16 ; CACA: 85 16 - LDY $15 ; CACC: A4 15 - LDA $16 ; CACE: A5 16 - CMP #$04 ; CAD0: C9 04 - BEQ Label_CB2C ; CAD2: F0 58 - CMP #$02 ; CAD4: C9 02 - BCC Label_CAEB ; CAD6: 90 13 - LDX $CD85,Y ; CAD8: BE 85 CD - CPX #$02 ; CADB: E0 02 - BCS Label_CAEB ; CADD: B0 0C - LDA $16 ; CADF: A5 16 - CMP #$02 ; CAE1: C9 02 - BNE Label_CAE8 ; CAE3: D0 03 - JMP SubCCB63 ; CAE5: 4C 63 CB + JSR SubCCA9D ; CPU:$CAA8 PRG:0AA8 20 9D CA + LDY club_selection_index ; CPU:$CAAB PRG:0AAB A4 17 + LDA $C7FE,Y ; CPU:$CAAD PRG:0AAD B9 FE C7 + STA $33 ; CPU:$CAB0 PRG:0AB0 85 33 + CLC ; CPU:$CAB2 PRG:0AB2 18 + ADC #$10 ; CPU:$CAB3 PRG:0AB3 69 10 + STA $0273 ; CPU:$CAB5 PRG:0AB5 8D 73 02 + LDA #$90 ; CPU:$CAB8 PRG:0AB8 A9 90 + STA $0270 ; CPU:$CABA PRG:0ABA 8D 70 02 + LDA #$0F ; CPU:$CABD PRG:0ABD A9 0F + STA $0271 ; CPU:$CABF PRG:0ABF 8D 71 02 + LDA #$01 ; CPU:$CAC2 PRG:0AC2 A9 01 + STA $0272 ; CPU:$CAC4 PRG:0AC4 8D 72 02 + LDA $CC15,Y ; CPU:$CAC7 PRG:0AC7 B9 15 CC + STA $16 ; CPU:$CACA PRG:0ACA 85 16 + LDY sequence_frame_index ; CPU:$CACC PRG:0ACC A4 15 + LDA $16 ; CPU:$CACE PRG:0ACE A5 16 + CMP #$04 ; CPU:$CAD0 PRG:0AD0 C9 04 + BEQ SubCCB0F_Loop ; CPU:$CAD2 PRG:0AD2 F0 58 + CMP #$02 ; CPU:$CAD4 PRG:0AD4 C9 02 + BCC RefreshSequenceSpriteLayout_Loop2 ; CPU:$CAD6 PRG:0AD6 90 13 + LDX $CD85,Y ; CPU:$CAD8 PRG:0AD8 BE 85 CD + CPX #$02 ; CPU:$CADB PRG:0ADB E0 02 + BCS RefreshSequenceSpriteLayout_Loop2 ; CPU:$CADD PRG:0ADD B0 0C + LDA $16 ; CPU:$CADF PRG:0ADF A5 16 + CMP #$02 ; CPU:$CAE1 PRG:0AE1 C9 02 + BNE RefreshSequenceSpriteLayout_Loop ; CPU:$CAE3 PRG:0AE3 D0 03 + JMP SubCCB63 ; CPU:$CAE5 PRG:0AE5 4C 63 CB ; --------------------------------------------------------------------------- ; Label_CAE8 @@ -3817,8 +3817,8 @@ RefreshSequenceSpriteLayout: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CAE8: - JMP SubCCB97 ; CAE8: 4C 97 CB +RefreshSequenceSpriteLayout_Loop: + JMP SubCCB97 ; CPU:$CAE8 PRG:0AE8 4C 97 CB ; --------------------------------------------------------------------------- ; Label_CAEB @@ -3835,13 +3835,13 @@ Label_CAE8: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CAEB: - LDX $CD85,Y ; CAEB: BE 85 CD - LDY $CD93,X ; CAEE: BC 93 CD - INX ; CAF1: E8 - LDA $CD93,X ; CAF2: BD 93 CD - STA $21 ; CAF5: 85 21 - LDX #$18 ; CAF7: A2 18 +RefreshSequenceSpriteLayout_Loop2: + LDX $CD85,Y ; CPU:$CAEB PRG:0AEB BE 85 CD + LDY $CD93,X ; CPU:$CAEE PRG:0AEE BC 93 CD + INX ; CPU:$CAF1 PRG:0AF1 E8 + LDA $CD93,X ; CPU:$CAF2 PRG:0AF2 BD 93 CD + STA $21 ; CPU:$CAF5 PRG:0AF5 85 21 + LDX #$18 ; CPU:$CAF7 PRG:0AF7 A2 18 ; --------------------------------------------------------------------------- ; Label_CAF9 @@ -3858,15 +3858,15 @@ Label_CAEB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CAF9: - LDA #$78 ; CAF9: A9 78 - CLC ; CAFB: 18 - ADC $CDBA,Y ; CAFC: 79 BA CD - STA $0200,X ; CAFF: 9D 00 02 - LDA $16 ; CB02: A5 16 - BNE Label_CB0C ; CB04: D0 06 - LDA $CDD6,Y ; CB06: B9 D6 CD - JMP SubCCB0F ; CB09: 4C 0F CB +RefreshSequenceSpriteLayout_OnCarryClear: + LDA #$78 ; CPU:$CAF9 PRG:0AF9 A9 78 + CLC ; CPU:$CAFB PRG:0AFB 18 + ADC $CDBA,Y ; CPU:$CAFC PRG:0AFC 79 BA CD + STA $0200,X ; CPU:$CAFF PRG:0AFF 9D 00 02 + LDA $16 ; CPU:$CB02 PRG:0B02 A5 16 + BNE RefreshSequenceSpriteLayout_Loop3 ; CPU:$CB04 PRG:0B04 D0 06 + LDA $CDD6,Y ; CPU:$CB06 PRG:0B06 B9 D6 CD + JMP SubCCB0F ; CPU:$CB09 PRG:0B09 4C 0F CB ; --------------------------------------------------------------------------- ; Label_CB0C @@ -3883,8 +3883,8 @@ Label_CAF9: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CB0C: - LDA $CDF2,Y ; CB0C: B9 F2 CD +RefreshSequenceSpriteLayout_Loop3: + LDA $CDF2,Y ; CPU:$CB0C PRG:0B0C B9 F2 CD ; --------------------------------------------------------------------------- ; SubCCB0F @@ -3902,19 +3902,19 @@ Label_CB0C: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCB0F: - STA $0201,X ; CB0F: 9D 01 02 - LDA #$03 ; CB12: A9 03 - STA $0202,X ; CB14: 9D 02 02 - LDA $33 ; CB17: A5 33 - SEC ; CB19: 38 - SBC #$0C ; CB1A: E9 0C - CLC ; CB1C: 18 - ADC $CD9E,Y ; CB1D: 79 9E CD - STA $0203,X ; CB20: 9D 03 02 - JSR SubCD4F1 ; CB23: 20 F1 D4 - CPY $21 ; CB26: C4 21 - BCC Label_CAF9 ; CB28: 90 CF - BCS SubCCB60 ; CB2A: B0 34 + STA $0201,X ; CPU:$CB0F PRG:0B0F 9D 01 02 + LDA #$03 ; CPU:$CB12 PRG:0B12 A9 03 + STA $0202,X ; CPU:$CB14 PRG:0B14 9D 02 02 + LDA $33 ; CPU:$CB17 PRG:0B17 A5 33 + SEC ; CPU:$CB19 PRG:0B19 38 + SBC #$0C ; CPU:$CB1A PRG:0B1A E9 0C + CLC ; CPU:$CB1C PRG:0B1C 18 + ADC $CD9E,Y ; CPU:$CB1D PRG:0B1D 79 9E CD + STA $0203,X ; CPU:$CB20 PRG:0B20 9D 03 02 + JSR SubCD4F1 ; CPU:$CB23 PRG:0B23 20 F1 D4 + CPY $21 ; CPU:$CB26 PRG:0B26 C4 21 + BCC RefreshSequenceSpriteLayout_OnCarryClear ; CPU:$CB28 PRG:0B28 90 CF + BCS SubCCB60 ; CPU:$CB2A PRG:0B2A B0 34 ; --------------------------------------------------------------------------- ; Label_CB2C @@ -3931,13 +3931,13 @@ SubCCB0F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CB2C: - LDX $CE3B,Y ; CB2C: BE 3B CE - LDY $CE41,X ; CB2F: BC 41 CE - INX ; CB32: E8 - LDA $CE41,X ; CB33: BD 41 CE - STA $21 ; CB36: 85 21 - LDX #$18 ; CB38: A2 18 +SubCCB0F_Loop: + LDX $CE3B,Y ; CPU:$CB2C PRG:0B2C BE 3B CE + LDY $CE41,X ; CPU:$CB2F PRG:0B2F BC 41 CE + INX ; CPU:$CB32 PRG:0B32 E8 + LDA $CE41,X ; CPU:$CB33 PRG:0B33 BD 41 CE + STA $21 ; CPU:$CB36 PRG:0B36 85 21 + LDX #$18 ; CPU:$CB38 PRG:0B38 A2 18 ; --------------------------------------------------------------------------- ; Label_CB3A @@ -3954,23 +3954,23 @@ Label_CB2C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CB3A: - LDA #$A7 ; CB3A: A9 A7 - CLC ; CB3C: 18 - ADC $CE50,Y ; CB3D: 79 50 CE - STA $0200,X ; CB40: 9D 00 02 - LDA $CE5A,Y ; CB43: B9 5A CE - STA $0201,X ; CB46: 9D 01 02 - LDA #$03 ; CB49: A9 03 - STA $0202,X ; CB4B: 9D 02 02 - LDA $33 ; CB4E: A5 33 - CLC ; CB50: 18 - ADC #$03 ; CB51: 69 03 - ADC $CE46,Y ; CB53: 79 46 CE - STA $0203,X ; CB56: 9D 03 02 - JSR SubCD4F1 ; CB59: 20 F1 D4 - CPY $21 ; CB5C: C4 21 - BCC Label_CB3A ; CB5E: 90 DA +SubCCB0F_OnCarryClear: + LDA #$A7 ; CPU:$CB3A PRG:0B3A A9 A7 + CLC ; CPU:$CB3C PRG:0B3C 18 + ADC $CE50,Y ; CPU:$CB3D PRG:0B3D 79 50 CE + STA $0200,X ; CPU:$CB40 PRG:0B40 9D 00 02 + LDA $CE5A,Y ; CPU:$CB43 PRG:0B43 B9 5A CE + STA $0201,X ; CPU:$CB46 PRG:0B46 9D 01 02 + LDA #$03 ; CPU:$CB49 PRG:0B49 A9 03 + STA $0202,X ; CPU:$CB4B PRG:0B4B 9D 02 02 + LDA $33 ; CPU:$CB4E PRG:0B4E A5 33 + CLC ; CPU:$CB50 PRG:0B50 18 + ADC #$03 ; CPU:$CB51 PRG:0B51 69 03 + ADC $CE46,Y ; CPU:$CB53 PRG:0B53 79 46 CE + STA $0203,X ; CPU:$CB56 PRG:0B56 9D 03 02 + JSR SubCD4F1 ; CPU:$CB59 PRG:0B59 20 F1 D4 + CPY $21 ; CPU:$CB5C PRG:0B5C C4 21 + BCC SubCCB0F_OnCarryClear ; CPU:$CB5E PRG:0B5E 90 DA ; --------------------------------------------------------------------------- ; SubCCB60 @@ -3988,7 +3988,7 @@ Label_CB3A: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCB60: - JMP SubCCBCB ; CB60: 4C CB CB + JMP SubCCBCB ; CPU:$CB60 PRG:0B60 4C CB CB ; --------------------------------------------------------------------------- ; SubCCB63 @@ -4006,11 +4006,11 @@ SubCCB60: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCB63: - LDY $CE0E,X ; CB63: BC 0E CE - INX ; CB66: E8 - LDA $CE0E,X ; CB67: BD 0E CE - STA $21 ; CB6A: 85 21 - LDX #$18 ; CB6C: A2 18 + LDY $CE0E,X ; CPU:$CB63 PRG:0B63 BC 0E CE + INX ; CPU:$CB66 PRG:0B66 E8 + LDA $CE0E,X ; CPU:$CB67 PRG:0B67 BD 0E CE + STA $21 ; CPU:$CB6A PRG:0B6A 85 21 + LDX #$18 ; CPU:$CB6C PRG:0B6C A2 18 ; --------------------------------------------------------------------------- ; Label_CB6E @@ -4027,24 +4027,24 @@ SubCCB63: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CB6E: - LDA #$A6 ; CB6E: A9 A6 - CLC ; CB70: 18 - ADC $CE18,Y ; CB71: 79 18 CE - STA $0200,X ; CB74: 9D 00 02 - LDA $CE1F,Y ; CB77: B9 1F CE - STA $0201,X ; CB7A: 9D 01 02 - LDA #$03 ; CB7D: A9 03 - STA $0202,X ; CB7F: 9D 02 02 - LDA $33 ; CB82: A5 33 - CLC ; CB84: 18 - ADC #$13 ; CB85: 69 13 - ADC $CE11,Y ; CB87: 79 11 CE - STA $0203,X ; CB8A: 9D 03 02 - JSR SubCD4F1 ; CB8D: 20 F1 D4 - CPY $21 ; CB90: C4 21 - BCC Label_CB6E ; CB92: 90 DA - JMP SubCCB60 ; CB94: 4C 60 CB +SubCCB63_OnCarryClear: + LDA #$A6 ; CPU:$CB6E PRG:0B6E A9 A6 + CLC ; CPU:$CB70 PRG:0B70 18 + ADC $CE18,Y ; CPU:$CB71 PRG:0B71 79 18 CE + STA $0200,X ; CPU:$CB74 PRG:0B74 9D 00 02 + LDA $CE1F,Y ; CPU:$CB77 PRG:0B77 B9 1F CE + STA $0201,X ; CPU:$CB7A PRG:0B7A 9D 01 02 + LDA #$03 ; CPU:$CB7D PRG:0B7D A9 03 + STA $0202,X ; CPU:$CB7F PRG:0B7F 9D 02 02 + LDA $33 ; CPU:$CB82 PRG:0B82 A5 33 + CLC ; CPU:$CB84 PRG:0B84 18 + ADC #$13 ; CPU:$CB85 PRG:0B85 69 13 + ADC $CE11,Y ; CPU:$CB87 PRG:0B87 79 11 CE + STA $0203,X ; CPU:$CB8A PRG:0B8A 9D 03 02 + JSR SubCD4F1 ; CPU:$CB8D PRG:0B8D 20 F1 D4 + CPY $21 ; CPU:$CB90 PRG:0B90 C4 21 + BCC SubCCB63_OnCarryClear ; CPU:$CB92 PRG:0B92 90 DA + JMP SubCCB60 ; CPU:$CB94 PRG:0B94 4C 60 CB ; --------------------------------------------------------------------------- ; SubCCB97 @@ -4062,11 +4062,11 @@ Label_CB6E: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCB97: - LDY $CE0E,X ; CB97: BC 0E CE - INX ; CB9A: E8 - LDA $CE0E,X ; CB9B: BD 0E CE - STA $21 ; CB9E: 85 21 - LDX #$18 ; CBA0: A2 18 + LDY $CE0E,X ; CPU:$CB97 PRG:0B97 BC 0E CE + INX ; CPU:$CB9A PRG:0B9A E8 + LDA $CE0E,X ; CPU:$CB9B PRG:0B9B BD 0E CE + STA $21 ; CPU:$CB9E PRG:0B9E 85 21 + LDX #$18 ; CPU:$CBA0 PRG:0BA0 A2 18 ; --------------------------------------------------------------------------- ; Label_CBA2 @@ -4083,24 +4083,24 @@ SubCCB97: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CBA2: - LDA #$A7 ; CBA2: A9 A7 - CLC ; CBA4: 18 - ADC $CE2D,Y ; CBA5: 79 2D CE - STA $0200,X ; CBA8: 9D 00 02 - LDA $CE34,Y ; CBAB: B9 34 CE - STA $0201,X ; CBAE: 9D 01 02 - LDA #$03 ; CBB1: A9 03 - STA $0202,X ; CBB3: 9D 02 02 - LDA $33 ; CBB6: A5 33 - CLC ; CBB8: 18 - ADC #$0D ; CBB9: 69 0D - ADC $CE26,Y ; CBBB: 79 26 CE - STA $0203,X ; CBBE: 9D 03 02 - JSR SubCD4F1 ; CBC1: 20 F1 D4 - CPY $21 ; CBC4: C4 21 - BCC Label_CBA2 ; CBC6: 90 DA - JMP SubCCB60 ; CBC8: 4C 60 CB +SubCCB97_OnCarryClear: + LDA #$A7 ; CPU:$CBA2 PRG:0BA2 A9 A7 + CLC ; CPU:$CBA4 PRG:0BA4 18 + ADC $CE2D,Y ; CPU:$CBA5 PRG:0BA5 79 2D CE + STA $0200,X ; CPU:$CBA8 PRG:0BA8 9D 00 02 + LDA $CE34,Y ; CPU:$CBAB PRG:0BAB B9 34 CE + STA $0201,X ; CPU:$CBAE PRG:0BAE 9D 01 02 + LDA #$03 ; CPU:$CBB1 PRG:0BB1 A9 03 + STA $0202,X ; CPU:$CBB3 PRG:0BB3 9D 02 02 + LDA $33 ; CPU:$CBB6 PRG:0BB6 A5 33 + CLC ; CPU:$CBB8 PRG:0BB8 18 + ADC #$0D ; CPU:$CBB9 PRG:0BB9 69 0D + ADC $CE26,Y ; CPU:$CBBB PRG:0BBB 79 26 CE + STA $0203,X ; CPU:$CBBE PRG:0BBE 9D 03 02 + JSR SubCD4F1 ; CPU:$CBC1 PRG:0BC1 20 F1 D4 + CPY $21 ; CPU:$CBC4 PRG:0BC4 C4 21 + BCC SubCCB97_OnCarryClear ; CPU:$CBC6 PRG:0BC6 90 DA + JMP SubCCB60 ; CPU:$CBC8 PRG:0BC8 4C 60 CB ; --------------------------------------------------------------------------- ; SubCCBCB @@ -4118,14 +4118,14 @@ Label_CBA2: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCBCB: - LDY $15 ; CBCB: A4 15 - LDA $16 ; CBCD: A5 16 - CMP #$04 ; CBCF: C9 04 - BEQ Label_CBDE ; CBD1: F0 0B - LDA $CC24,Y ; CBD3: B9 24 CC - STA $04 ; CBD6: 85 04 - LDA $CC31,Y ; CBD8: B9 31 CC - JMP SubCCBE6 ; CBDB: 4C E6 CB + LDY sequence_frame_index ; CPU:$CBCB PRG:0BCB A4 15 + LDA $16 ; CPU:$CBCD PRG:0BCD A5 16 + CMP #$04 ; CPU:$CBCF PRG:0BCF C9 04 + BEQ SubCCBCB_Loop ; CPU:$CBD1 PRG:0BD1 F0 0B + LDA $CC24,Y ; CPU:$CBD3 PRG:0BD3 B9 24 CC + STA source_pointer_lo ; CPU:$CBD6 PRG:0BD6 85 04 + LDA $CC31,Y ; CPU:$CBD8 PRG:0BD8 B9 31 CC + JMP SubCCBE6 ; CPU:$CBDB PRG:0BDB 4C E6 CB ; --------------------------------------------------------------------------- ; Label_CBDE @@ -4142,10 +4142,10 @@ SubCCBCB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CBDE: - LDA $CC3E,Y ; CBDE: B9 3E CC - STA $04 ; CBE1: 85 04 - LDA $CC44,Y ; CBE3: B9 44 CC +SubCCBCB_Loop: + LDA $CC3E,Y ; CPU:$CBDE PRG:0BDE B9 3E CC + STA source_pointer_lo ; CPU:$CBE1 PRG:0BE1 85 04 + LDA $CC44,Y ; CPU:$CBE3 PRG:0BE3 B9 44 CC ; --------------------------------------------------------------------------- ; SubCCBE6 @@ -4163,8 +4163,8 @@ Label_CBDE: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCBE6: - STA $05 ; CBE6: 85 05 - LDY #$00 ; CBE8: A0 00 + STA source_pointer_hi ; CPU:$CBE6 PRG:0BE6 85 05 + LDY #$00 ; CPU:$CBE8 PRG:0BE8 A0 00 ; --------------------------------------------------------------------------- ; ParseSpriteLayout @@ -4182,22 +4182,22 @@ SubCCBE6: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ParseSpriteLayout: - LDA ($04),Y ; CBEA: B1 04 - CMP #$FF ; CBEC: C9 FF - BEQ Label_CC0F ; CBEE: F0 1F - LDA #$88 ; CBF0: A9 88 - CLC ; CBF2: 18 - ADC $CC5F,Y ; CBF3: 79 5F CC - STA $0200,X ; CBF6: 9D 00 02 - LDA ($04),Y ; CBF9: B1 04 - STA $0201,X ; CBFB: 9D 01 02 - LDA #$00 ; CBFE: A9 00 - STA $0202,X ; CC00: 9D 02 02 - LDA $33 ; CC03: A5 33 - CLC ; CC05: 18 - ADC $CC4A,Y ; CC06: 79 4A CC - STA $0203,X ; CC09: 9D 03 02 - JSR SubCD4F2 ; CC0C: 20 F2 D4 + LDA (source_pointer_lo),Y ; CPU:$CBEA PRG:0BEA B1 04 + CMP #$FF ; CPU:$CBEC PRG:0BEC C9 FF + BEQ ParseSpriteLayout_Loop ; CPU:$CBEE PRG:0BEE F0 1F + LDA #$88 ; CPU:$CBF0 PRG:0BF0 A9 88 + CLC ; CPU:$CBF2 PRG:0BF2 18 + ADC $CC5F,Y ; CPU:$CBF3 PRG:0BF3 79 5F CC + STA $0200,X ; CPU:$CBF6 PRG:0BF6 9D 00 02 + LDA (source_pointer_lo),Y ; CPU:$CBF9 PRG:0BF9 B1 04 + STA $0201,X ; CPU:$CBFB PRG:0BFB 9D 01 02 + LDA #$00 ; CPU:$CBFE PRG:0BFE A9 00 + STA $0202,X ; CPU:$CC00 PRG:0C00 9D 02 02 + LDA $33 ; CPU:$CC03 PRG:0C03 A5 33 + CLC ; CPU:$CC05 PRG:0C05 18 + ADC $CC4A,Y ; CPU:$CC06 PRG:0C06 79 4A CC + STA $0203,X ; CPU:$CC09 PRG:0C09 9D 03 02 + JSR SubCD4F2 ; CPU:$CC0C PRG:0C0C 20 F2 D4 ; --------------------------------------------------------------------------- ; Label_CC0F @@ -4214,11 +4214,11 @@ ParseSpriteLayout: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CC0F: - INY ; CC0F: C8 - CPY #$15 ; CC10: C0 15 - BCC ParseSpriteLayout ; CC12: 90 D6 - RTS ; CC14: 60 +ParseSpriteLayout_Loop: + INY ; CPU:$CC0F PRG:0C0F C8 + CPY #$15 ; CPU:$CC10 PRG:0C10 C0 15 + BCC ParseSpriteLayout ; CPU:$CC12 PRG:0C12 90 D6 + RTS ; CPU:$CC14 PRG:0C14 60 ; --------------------------------------------------------------------------- ; SpriteLayoutGroupMap @@ -4227,7 +4227,7 @@ Label_CC0F: ; Range: $CC15-$CC23 (15 bytes) ; --------------------------------------------------------------------------- SpriteLayoutGroupMap: - .byte $00,$00,$00,$01,$01,$02,$02,$02,$03,$03,$03,$03,$03,$04,$04 ; CC15-CC23: 00 00 00 01 01 02 02 02 03 03 03 03 03 04 04 + .byte $00,$00,$00,$01,$01,$02,$02,$02,$03,$03,$03,$03,$03,$04,$04 ; CC15-CC23: 00 00 00 01 01 02 02 02 03 03 03 03 03 04 04 ; CPU:$CC15 PRG:0C15 00 00 00 01 01 02 02 02 03 03 03 03 ; --------------------------------------------------------------------------- ; SpriteLayoutPointerLo @@ -4236,7 +4236,7 @@ SpriteLayoutGroupMap: ; Range: $CC24-$CC30 (13 bytes) ; --------------------------------------------------------------------------- SpriteLayoutPointerLo: - .byte $74,$89,$9E,$B3,$C8,$DD,$C8,$B3,$F2,$07,$1C,$31,$46 ; CC24-CC30: 74 89 9E B3 C8 DD C8 B3 F2 07 1C 31 46 + .byte $74,$89,$9E,$B3,$C8,$DD,$C8,$B3,$F2,$07,$1C,$31,$46 ; CC24-CC30: 74 89 9E B3 C8 DD C8 B3 F2 07 1C 31 46 ; CPU:$CC24 PRG:0C24 74 89 9E B3 C8 DD C8 B3 F2 07 1C 31 ; --------------------------------------------------------------------------- ; SpriteLayoutPointerHi @@ -4245,7 +4245,7 @@ SpriteLayoutPointerLo: ; Range: $CC31-$CC3D (13 bytes) ; --------------------------------------------------------------------------- SpriteLayoutPointerHi: - .byte $CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CD,$CD,$CD,$CD ; CC31-CC3D: CC CC CC CC CC CC CC CC CC CD CD CD CD + .byte $CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CD,$CD,$CD,$CD ; CC31-CC3D: CC CC CC CC CC CC CC CC CC CD CD CD CD ; CPU:$CC31 PRG:0C31 CC CC CC CC CC CC CC CC CC CD CD CD ; --------------------------------------------------------------------------- ; AltSpriteLayoutPointerLo @@ -4254,7 +4254,7 @@ SpriteLayoutPointerHi: ; Range: $CC3E-$CC43 (6 bytes) ; --------------------------------------------------------------------------- AltSpriteLayoutPointerLo: - .byte $5B,$70,$9E,$70,$5B,$74 ; CC3E-CC43: 5B 70 9E 70 5B 74 + .byte $5B,$70,$9E,$70,$5B,$74 ; CC3E-CC43: 5B 70 9E 70 5B 74 ; CPU:$CC3E PRG:0C3E 5B 70 9E 70 5B 74 ; --------------------------------------------------------------------------- ; AltSpriteLayoutPointerHi @@ -4263,7 +4263,7 @@ AltSpriteLayoutPointerLo: ; Range: $CC44-$CC49 (6 bytes) ; --------------------------------------------------------------------------- AltSpriteLayoutPointerHi: - .byte $CD,$CD,$CC,$CD,$CD,$CC ; CC44-CC49: CD CD CC CD CD CC + .byte $CD,$CD,$CC,$CD,$CD,$CC ; CC44-CC49: CD CD CC CD CD CC ; CPU:$CC44 PRG:0C44 CD CD CC CD CD CC ; --------------------------------------------------------------------------- ; SpriteLayoutXOffsets @@ -4272,8 +4272,8 @@ AltSpriteLayoutPointerHi: ; Range: $CC4A-$CC5E (21 bytes) ; --------------------------------------------------------------------------- SpriteLayoutXOffsets: - .byte $00,$08,$10,$00,$08,$10,$00,$08,$10,$00,$08,$10,$00,$08,$10,$04 ; CC4A-CC59: 00 08 10 00 08 10 00 08 10 00 08 10 00 08 10 04 - .byte $0C,$00,$00,$08,$10 ; CC5A-CC5E: 0C 00 00 08 10 + .byte $00,$08,$10,$00,$08,$10,$00,$08,$10,$00,$08,$10,$00,$08,$10,$04 ; CC4A-CC59: 00 08 10 00 08 10 00 08 10 00 08 10 00 08 10 04 ; CPU:$CC4A PRG:0C4A 00 08 10 00 08 10 00 08 10 00 08 10 + .byte $0C,$00,$00,$08,$10 ; CC5A-CC5E: 0C 00 00 08 10 ; CPU:$CC5A PRG:0C5A 0C 00 00 08 10 ; --------------------------------------------------------------------------- ; SpriteLayoutYOffsets @@ -4282,8 +4282,8 @@ SpriteLayoutXOffsets: ; Range: $CC5F-$CC73 (21 bytes) ; --------------------------------------------------------------------------- SpriteLayoutYOffsets: - .byte $00,$00,$00,$08,$08,$08,$10,$10,$10,$18,$18,$18,$20,$20,$20,$28 ; CC5F-CC6E: 00 00 00 08 08 08 10 10 10 18 18 18 20 20 20 28 - .byte $28,$28,$30,$30,$30 ; CC6F-CC73: 28 28 30 30 30 + .byte $00,$00,$00,$08,$08,$08,$10,$10,$10,$18,$18,$18,$20,$20,$20,$28 ; CC5F-CC6E: 00 00 00 08 08 08 10 10 10 18 18 18 20 20 20 28 ; CPU:$CC5F PRG:0C5F 00 00 00 08 08 08 10 10 10 18 18 18 + .byte $28,$28,$30,$30,$30 ; CC6F-CC73: 28 28 30 30 30 ; CPU:$CC6F PRG:0C6F 28 28 30 30 30 ; --------------------------------------------------------------------------- ; SpriteLayoutLists @@ -4292,24 +4292,24 @@ SpriteLayoutYOffsets: ; Range: $CC74-$CD84 (273 bytes) ; --------------------------------------------------------------------------- SpriteLayoutLists: - .byte $FF,$00,$01,$FF,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D ; CC74-CC83: FF 00 01 FF 02 03 04 05 06 07 08 09 0A 0B 0C 0D - .byte $0E,$FF,$10,$11,$12,$FF,$00,$01,$FF,$13,$14,$04,$15,$16,$07,$17 ; CC84-CC93: 0E FF 10 11 12 FF 00 01 FF 13 14 04 15 16 07 17 - .byte $18,$0A,$0B,$19,$0D,$0E,$FF,$10,$11,$12,$FF,$00,$01,$1A,$1B,$14 ; CC94-CCA3: 18 0A 0B 19 0D 0E FF 10 11 12 FF 00 01 1A 1B 14 - .byte $1C,$1D,$1E,$1F,$20,$21,$0A,$22,$FF,$0D,$0E,$FF,$10,$11,$12,$FF ; CCA4-CCB3: 1C 1D 1E 1F 20 21 0A 22 FF 0D 0E FF 10 11 12 FF - .byte $00,$01,$23,$24,$14,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F ; CCB4-CCC3: 00 01 23 24 14 25 26 27 28 29 2A 2B 2C 2D 2E 2F - .byte $FF,$10,$30,$31,$FF,$00,$01,$32,$33,$14,$34,$35,$36,$37,$38,$39 ; CCC4-CCD3: FF 10 30 31 FF 00 01 32 33 14 34 35 36 37 38 39 - .byte $2B,$3A,$2D,$2E,$2F,$FF,$10,$3C,$3D,$3E,$3F,$01,$40,$41,$14,$42 ; CCD4-CCE3: 2B 3A 2D 2E 2F FF 10 3C 3D 3E 3F 01 40 41 14 42 - .byte $43,$44,$37,$45,$39,$2B,$3A,$2D,$2E,$2F,$FF,$10,$3C,$3D,$FF,$00 ; CCE4-CCF3: 43 44 37 45 39 2B 3A 2D 2E 2F FF 10 3C 3D FF 00 - .byte $01,$FF,$13,$14,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F,$50,$FF ; CCF4-CD03: 01 FF 13 14 46 47 48 49 4A 4B 4C 4D 4E 4F 50 FF - .byte $52,$53,$12,$FF,$00,$01,$FF,$13,$14,$46,$54,$55,$49,$56,$57,$4C ; CD04-CD13: 52 53 12 FF 00 01 FF 13 14 46 54 55 49 56 57 4C - .byte $58,$59,$5A,$5B,$FF,$5D,$5E,$12,$FF,$00,$01,$5F,$60,$61,$62,$63 ; CD14-CD23: 58 59 5A 5B FF 5D 5E 12 FF 00 01 5F 60 61 62 63 - .byte $64,$49,$65,$66,$4C,$58,$67,$5A,$5B,$FF,$5D,$5E,$12,$FF,$FF,$68 ; CD24-CD33: 64 49 65 66 4C 58 67 5A 5B FF 5D 5E 12 FF FF 68 - .byte $69,$6A,$6B,$62,$63,$6C,$49,$6D,$6E,$4C,$58,$67,$5A,$5B,$FF,$5D ; CD34-CD43: 69 6A 6B 62 63 6C 49 6D 6E 4C 58 67 5A 5B FF 5D - .byte $5E,$12,$6F,$70,$68,$71,$72,$6B,$73,$74,$6C,$75,$6D,$76,$77,$78 ; CD44-CD53: 5E 12 6F 70 68 71 72 6B 73 74 6C 75 6D 76 77 78 - .byte $79,$7A,$7B,$FF,$FF,$7D,$12,$FF,$00,$01,$FF,$13,$14,$04,$7E,$84 ; CD54-CD63: 79 7A 7B FF FF 7D 12 FF 00 01 FF 13 14 04 7E 84 - .byte $07,$7F,$80,$0A,$81,$82,$0D,$0E,$FF,$10,$11,$12,$FF,$00,$01,$FF ; CD64-CD73: 07 7F 80 0A 81 82 0D 0E FF 10 11 12 FF 00 01 FF - .byte $13,$14,$04,$83,$84,$07,$85,$86,$0A,$87,$FF,$0D,$0E,$FF,$10,$11 ; CD74-CD83: 13 14 04 83 84 07 85 86 0A 87 FF 0D 0E FF 10 11 - .byte $12 ; CD84-CD84: 12 + .byte $FF,$00,$01,$FF,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D ; CC74-CC83: FF 00 01 FF 02 03 04 05 06 07 08 09 0A 0B 0C 0D ; CPU:$CC74 PRG:0C74 FF 00 01 FF 02 03 04 05 06 07 08 09 + .byte $0E,$FF,$10,$11,$12,$FF,$00,$01,$FF,$13,$14,$04,$15,$16,$07,$17 ; CC84-CC93: 0E FF 10 11 12 FF 00 01 FF 13 14 04 15 16 07 17 ; CPU:$CC84 PRG:0C84 0E FF 10 11 12 FF 00 01 FF 13 14 04 + .byte $18,$0A,$0B,$19,$0D,$0E,$FF,$10,$11,$12,$FF,$00,$01,$1A,$1B,$14 ; CC94-CCA3: 18 0A 0B 19 0D 0E FF 10 11 12 FF 00 01 1A 1B 14 ; CPU:$CC94 PRG:0C94 18 0A 0B 19 0D 0E FF 10 11 12 FF 00 + .byte $1C,$1D,$1E,$1F,$20,$21,$0A,$22,$FF,$0D,$0E,$FF,$10,$11,$12,$FF ; CCA4-CCB3: 1C 1D 1E 1F 20 21 0A 22 FF 0D 0E FF 10 11 12 FF ; CPU:$CCA4 PRG:0CA4 1C 1D 1E 1F 20 21 0A 22 FF 0D 0E FF + .byte $00,$01,$23,$24,$14,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F ; CCB4-CCC3: 00 01 23 24 14 25 26 27 28 29 2A 2B 2C 2D 2E 2F ; CPU:$CCB4 PRG:0CB4 00 01 23 24 14 25 26 27 28 29 2A 2B + .byte $FF,$10,$30,$31,$FF,$00,$01,$32,$33,$14,$34,$35,$36,$37,$38,$39 ; CCC4-CCD3: FF 10 30 31 FF 00 01 32 33 14 34 35 36 37 38 39 ; CPU:$CCC4 PRG:0CC4 FF 10 30 31 FF 00 01 32 33 14 34 35 + .byte $2B,$3A,$2D,$2E,$2F,$FF,$10,$3C,$3D,$3E,$3F,$01,$40,$41,$14,$42 ; CCD4-CCE3: 2B 3A 2D 2E 2F FF 10 3C 3D 3E 3F 01 40 41 14 42 ; CPU:$CCD4 PRG:0CD4 2B 3A 2D 2E 2F FF 10 3C 3D 3E 3F 01 + .byte $43,$44,$37,$45,$39,$2B,$3A,$2D,$2E,$2F,$FF,$10,$3C,$3D,$FF,$00 ; CCE4-CCF3: 43 44 37 45 39 2B 3A 2D 2E 2F FF 10 3C 3D FF 00 ; CPU:$CCE4 PRG:0CE4 43 44 37 45 39 2B 3A 2D 2E 2F FF 10 + .byte $01,$FF,$13,$14,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F,$50,$FF ; CCF4-CD03: 01 FF 13 14 46 47 48 49 4A 4B 4C 4D 4E 4F 50 FF ; CPU:$CCF4 PRG:0CF4 01 FF 13 14 46 47 48 49 4A 4B 4C 4D + .byte $52,$53,$12,$FF,$00,$01,$FF,$13,$14,$46,$54,$55,$49,$56,$57,$4C ; CD04-CD13: 52 53 12 FF 00 01 FF 13 14 46 54 55 49 56 57 4C ; CPU:$CD04 PRG:0D04 52 53 12 FF 00 01 FF 13 14 46 54 55 + .byte $58,$59,$5A,$5B,$FF,$5D,$5E,$12,$FF,$00,$01,$5F,$60,$61,$62,$63 ; CD14-CD23: 58 59 5A 5B FF 5D 5E 12 FF 00 01 5F 60 61 62 63 ; CPU:$CD14 PRG:0D14 58 59 5A 5B FF 5D 5E 12 FF 00 01 5F + .byte $64,$49,$65,$66,$4C,$58,$67,$5A,$5B,$FF,$5D,$5E,$12,$FF,$FF,$68 ; CD24-CD33: 64 49 65 66 4C 58 67 5A 5B FF 5D 5E 12 FF FF 68 ; CPU:$CD24 PRG:0D24 64 49 65 66 4C 58 67 5A 5B FF 5D 5E + .byte $69,$6A,$6B,$62,$63,$6C,$49,$6D,$6E,$4C,$58,$67,$5A,$5B,$FF,$5D ; CD34-CD43: 69 6A 6B 62 63 6C 49 6D 6E 4C 58 67 5A 5B FF 5D ; CPU:$CD34 PRG:0D34 69 6A 6B 62 63 6C 49 6D 6E 4C 58 67 + .byte $5E,$12,$6F,$70,$68,$71,$72,$6B,$73,$74,$6C,$75,$6D,$76,$77,$78 ; CD44-CD53: 5E 12 6F 70 68 71 72 6B 73 74 6C 75 6D 76 77 78 ; CPU:$CD44 PRG:0D44 5E 12 6F 70 68 71 72 6B 73 74 6C 75 + .byte $79,$7A,$7B,$FF,$FF,$7D,$12,$FF,$00,$01,$FF,$13,$14,$04,$7E,$84 ; CD54-CD63: 79 7A 7B FF FF 7D 12 FF 00 01 FF 13 14 04 7E 84 ; CPU:$CD54 PRG:0D54 79 7A 7B FF FF 7D 12 FF 00 01 FF 13 + .byte $07,$7F,$80,$0A,$81,$82,$0D,$0E,$FF,$10,$11,$12,$FF,$00,$01,$FF ; CD64-CD73: 07 7F 80 0A 81 82 0D 0E FF 10 11 12 FF 00 01 FF ; CPU:$CD64 PRG:0D64 07 7F 80 0A 81 82 0D 0E FF 10 11 12 + .byte $13,$14,$04,$83,$84,$07,$85,$86,$0A,$87,$FF,$0D,$0E,$FF,$10,$11 ; CD74-CD83: 13 14 04 83 84 07 85 86 0A 87 FF 0D 0E FF 10 11 ; CPU:$CD74 PRG:0D74 13 14 04 83 84 07 85 86 0A 87 FF 0D + .byte $12 ; CD84-CD84: 12 ; CPU:$CD84 PRG:0D84 12 .incbin "prg.bin", $0D85, $00DF ; CD85-CE63: remaining unaudited data ; --------------------------------------------------------------------------- ; SubCCE64 @@ -4327,46 +4327,46 @@ SpriteLayoutLists: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCCE64: - JSR UploadGeneratedCourseGrid ; CE64: 20 98 FC - LDA #$18 ; CE67: A9 18 - STA animation_frame_index ; CE69: 85 8F - LDA #$0F ; CE6B: A9 0F - STA $1A ; CE6D: 85 1A - JSR SubCFE72 ; CE6F: 20 72 FE - LDA $49 ; CE72: A5 49 - BNE Label_CEBB ; CE74: D0 45 - JSR SubCFF2B ; CE76: 20 2B FF - JSR WaitForFrame ; CE79: 20 F3 C8 - LDX #$20 ; CE7C: A2 20 - LDA #$AB ; CE7E: A9 AB - JSR SetPpuAddress ; CE80: 20 C1 C8 - LDA $8C ; CE83: A5 8C - AND #$7F ; CE85: 29 7F - LSR A ; CE87: 4A - LSR A ; CE88: 4A - LSR A ; CE89: 4A - PHA ; CE8A: 48 - STA $19 ; CE8B: 85 19 - LDA #$00 ; CE8D: A9 00 - STA $1A ; CE8F: 85 1A - JSR SubCCA30 ; CE91: 20 30 CA - LDA #$A4 ; CE94: A9 A4 - STA PPUDATA ; CE96: 8D 07 20 - JSR SetPpuScrollAndMask ; CE99: 20 9D C8 - PLA ; CE9C: 68 - BEQ Label_CEBB ; CE9D: F0 1C - LDA $8C ; CE9F: A5 8C - AND #$07 ; CEA1: 29 07 - ASL A ; CEA3: 0A - TAY ; CEA4: A8 - LDA $C82D,Y ; CEA5: B9 2D C8 - STA $0212 ; CEA8: 8D 12 02 - LDA $C81D,Y ; CEAB: B9 1D C8 - STA $0211 ; CEAE: 8D 11 02 - LDA #$28 ; CEB1: A9 28 - STA $0210 ; CEB3: 8D 10 02 - LDA #$48 ; CEB6: A9 48 - STA $0213 ; CEB8: 8D 13 02 + JSR UploadGeneratedCourseGrid ; CPU:$CE64 PRG:0E64 20 98 FC + LDA #$18 ; CPU:$CE67 PRG:0E67 A9 18 + STA animation_frame_index ; CPU:$CE69 PRG:0E69 85 8F + LDA #$0F ; CPU:$CE6B PRG:0E6B A9 0F + STA $1A ; CPU:$CE6D PRG:0E6D 85 1A + JSR SubCFE72 ; CPU:$CE6F PRG:0E6F 20 72 FE + LDA $49 ; CPU:$CE72 PRG:0E72 A5 49 + BNE SubCCE64_Loop ; CPU:$CE74 PRG:0E74 D0 45 + JSR SubCFF2B ; CPU:$CE76 PRG:0E76 20 2B FF + JSR WaitForFrame ; CPU:$CE79 PRG:0E79 20 F3 C8 + LDX #$20 ; CPU:$CE7C PRG:0E7C A2 20 + LDA #$AB ; CPU:$CE7E PRG:0E7E A9 AB + JSR SetPpuAddress ; CPU:$CE80 PRG:0E80 20 C1 C8 + LDA $8C ; CPU:$CE83 PRG:0E83 A5 8C + AND #$7F ; CPU:$CE85 PRG:0E85 29 7F + LSR A ; CPU:$CE87 PRG:0E87 4A + LSR A ; CPU:$CE88 PRG:0E88 4A + LSR A ; CPU:$CE89 PRG:0E89 4A + PHA ; CPU:$CE8A PRG:0E8A 48 + STA $19 ; CPU:$CE8B PRG:0E8B 85 19 + LDA #$00 ; CPU:$CE8D PRG:0E8D A9 00 + STA $1A ; CPU:$CE8F PRG:0E8F 85 1A + JSR SubCCA30 ; CPU:$CE91 PRG:0E91 20 30 CA + LDA #$A4 ; CPU:$CE94 PRG:0E94 A9 A4 + STA PPUDATA ; CPU:$CE96 PRG:0E96 8D 07 20 + JSR SetPpuScrollAndMask ; CPU:$CE99 PRG:0E99 20 9D C8 + PLA ; CPU:$CE9C PRG:0E9C 68 + BEQ SubCCE64_Loop ; CPU:$CE9D PRG:0E9D F0 1C + LDA $8C ; CPU:$CE9F PRG:0E9F A5 8C + AND #$07 ; CPU:$CEA1 PRG:0EA1 29 07 + ASL A ; CPU:$CEA3 PRG:0EA3 0A + TAY ; CPU:$CEA4 PRG:0EA4 A8 + LDA $C82D,Y ; CPU:$CEA5 PRG:0EA5 B9 2D C8 + STA $0212 ; CPU:$CEA8 PRG:0EA8 8D 12 02 + LDA $C81D,Y ; CPU:$CEAB PRG:0EAB B9 1D C8 + STA $0211 ; CPU:$CEAE PRG:0EAE 8D 11 02 + LDA #$28 ; CPU:$CEB1 PRG:0EB1 A9 28 + STA $0210 ; CPU:$CEB3 PRG:0EB3 8D 10 02 + LDA #$48 ; CPU:$CEB6 PRG:0EB6 A9 48 + STA $0213 ; CPU:$CEB8 PRG:0EB8 8D 13 02 ; --------------------------------------------------------------------------- ; Label_CEBB @@ -4383,31 +4383,31 @@ SubCCE64: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CEBB: - LDA #$02 ; CEBB: A9 02 - STA $4D ; CEBD: 85 4D - LDA #$20 ; CEBF: A9 20 - STA $4E ; CEC1: 85 4E - LDY #$FF ; CEC3: A0 FF - STY $0274 ; CEC5: 8C 74 02 - INY ; CEC8: C8 - STY $0282 ; CEC9: 8C 82 02 - LDA #$BA ; CECC: A9 BA - STA $0280 ; CECE: 8D 80 02 - LDA #$88 ; CED1: A9 88 - STA $0281 ; CED3: 8D 81 02 - LDA #$4C ; CED6: A9 4C - STA $0283 ; CED8: 8D 83 02 - LDA $87 ; CEDB: A5 87 - BNE Label_CEF3 ; CEDD: D0 14 - LDA #$B8 ; CEDF: A9 B8 - STA $0274 ; CEE1: 8D 74 02 - LDA #$8D ; CEE4: A9 8D - STA $0275 ; CEE6: 8D 75 02 - LDA #$00 ; CEE9: A9 00 - STA $0276 ; CEEB: 8D 76 02 - LDA #$4C ; CEEE: A9 4C - STA $0277 ; CEF0: 8D 77 02 +SubCCE64_Loop: + LDA #$02 ; CPU:$CEBB PRG:0EBB A9 02 + STA $4D ; CPU:$CEBD PRG:0EBD 85 4D + LDA #$20 ; CPU:$CEBF PRG:0EBF A9 20 + STA $4E ; CPU:$CEC1 PRG:0EC1 85 4E + LDY #$FF ; CPU:$CEC3 PRG:0EC3 A0 FF + STY $0274 ; CPU:$CEC5 PRG:0EC5 8C 74 02 + INY ; CPU:$CEC8 PRG:0EC8 C8 + STY $0282 ; CPU:$CEC9 PRG:0EC9 8C 82 02 + LDA #$BA ; CPU:$CECC PRG:0ECC A9 BA + STA $0280 ; CPU:$CECE PRG:0ECE 8D 80 02 + LDA #$88 ; CPU:$CED1 PRG:0ED1 A9 88 + STA $0281 ; CPU:$CED3 PRG:0ED3 8D 81 02 + LDA #$4C ; CPU:$CED6 PRG:0ED6 A9 4C + STA $0283 ; CPU:$CED8 PRG:0ED8 8D 83 02 + LDA $87 ; CPU:$CEDB PRG:0EDB A5 87 + BNE SubCCE64_Loop2 ; CPU:$CEDD PRG:0EDD D0 14 + LDA #$B8 ; CPU:$CEDF PRG:0EDF A9 B8 + STA $0274 ; CPU:$CEE1 PRG:0EE1 8D 74 02 + LDA #$8D ; CPU:$CEE4 PRG:0EE4 A9 8D + STA $0275 ; CPU:$CEE6 PRG:0EE6 8D 75 02 + LDA #$00 ; CPU:$CEE9 PRG:0EE9 A9 00 + STA $0276 ; CPU:$CEEB PRG:0EEB 8D 76 02 + LDA #$4C ; CPU:$CEEE PRG:0EEE A9 4C + STA $0277 ; CPU:$CEF0 PRG:0EF0 8D 77 02 ; --------------------------------------------------------------------------- ; Label_CEF3 @@ -4424,14 +4424,14 @@ Label_CEBB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CEF3: - LDA #$FF ; CEF3: A9 FF - STA $0284 ; CEF5: 8D 84 02 - LDA $49 ; CEF8: A5 49 - BEQ Label_CF03 ; CEFA: F0 07 - JSR SubCC721 ; CEFC: 20 21 C7 - LDA #$0E ; CEFF: A9 0E - STA $17 ; CF01: 85 17 +SubCCE64_Loop2: + LDA #$FF ; CPU:$CEF3 PRG:0EF3 A9 FF + STA $0284 ; CPU:$CEF5 PRG:0EF5 8D 84 02 + LDA $49 ; CPU:$CEF8 PRG:0EF8 A5 49 + BEQ SubCCE64_Loop3 ; CPU:$CEFA PRG:0EFA F0 07 + JSR SubCC721 ; CPU:$CEFC PRG:0EFC 20 21 C7 + LDA #$0E ; CPU:$CEFF PRG:0EFF A9 0E + STA club_selection_index ; CPU:$CF01 PRG:0F01 85 17 ; --------------------------------------------------------------------------- ; Label_CF03 @@ -4448,28 +4448,28 @@ Label_CEF3: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CF03: - LDA $53 ; CF03: A5 53 - STA $54 ; CF05: 85 54 - LDA #$00 ; CF07: A9 00 - STA $15 ; CF09: 85 15 - JSR WaitForFrame ; CF0B: 20 F3 C8 - JSR SubCC84D ; CF0E: 20 4D C8 - JSR SetPpuScrollAndMask ; CF11: 20 9D C8 - LDA $49 ; CF14: A5 49 - BEQ Label_CF2F ; CF16: F0 17 - LDX $7A ; CF18: A6 7A - LDA $2C,X ; CF1A: B5 2C - CMP #$05 ; CF1C: C9 05 - BCS Label_CF2F ; CF1E: B0 0F - LDA $83 ; CF20: A5 83 - CLC ; CF22: 18 - SBC $2C,X ; CF23: F5 2C - BEQ Label_CF2F ; CF25: F0 08 - BCC Label_CF2F ; CF27: 90 06 - CLC ; CF29: 18 - ADC #$05 ; CF2A: 69 05 - JSR SubCFEBF ; CF2C: 20 BF FE +SubCCE64_Loop3: + LDA $53 ; CPU:$CF03 PRG:0F03 A5 53 + STA $54 ; CPU:$CF05 PRG:0F05 85 54 + LDA #$00 ; CPU:$CF07 PRG:0F07 A9 00 + STA sequence_frame_index ; CPU:$CF09 PRG:0F09 85 15 + JSR WaitForFrame ; CPU:$CF0B PRG:0F0B 20 F3 C8 + JSR SubCC84D ; CPU:$CF0E PRG:0F0E 20 4D C8 + JSR SetPpuScrollAndMask ; CPU:$CF11 PRG:0F11 20 9D C8 + LDA $49 ; CPU:$CF14 PRG:0F14 A5 49 + BEQ SubCCE64_Loop4 ; CPU:$CF16 PRG:0F16 F0 17 + LDX active_controller_index ; CPU:$CF18 PRG:0F18 A6 7A + LDA $2C,X ; CPU:$CF1A PRG:0F1A B5 2C + CMP #$05 ; CPU:$CF1C PRG:0F1C C9 05 + BCS SubCCE64_Loop4 ; CPU:$CF1E PRG:0F1E B0 0F + LDA $83 ; CPU:$CF20 PRG:0F20 A5 83 + CLC ; CPU:$CF22 PRG:0F22 18 + SBC $2C,X ; CPU:$CF23 PRG:0F23 F5 2C + BEQ SubCCE64_Loop4 ; CPU:$CF25 PRG:0F25 F0 08 + BCC SubCCE64_Loop4 ; CPU:$CF27 PRG:0F27 90 06 + CLC ; CPU:$CF29 PRG:0F29 18 + ADC #$05 ; CPU:$CF2A PRG:0F2A 69 05 + JSR SubCFEBF ; CPU:$CF2C PRG:0F2C 20 BF FE ; --------------------------------------------------------------------------- ; Label_CF2F @@ -4486,18 +4486,18 @@ Label_CF03: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CF2F: - JSR SubCC907 ; CF2F: 20 07 C9 - JSR RefreshSequenceSpriteLayout ; CF32: 20 A8 CA - LDY #$A0 ; CF35: A0 A0 - LDX #$C5 ; CF37: A2 C5 - JSR WaitForFramePreservingY ; CF39: 20 81 C8 - LDA $49 ; CF3C: A5 49 - BEQ Label_CF48 ; CF3E: F0 08 - LDA #$02 ; CF40: A9 02 - STA $4D ; CF42: 85 4D - LDA #$00 ; CF44: A9 00 - STA $4E ; CF46: 85 4E +SubCCE64_Loop4: + JSR SubCC907 ; CPU:$CF2F PRG:0F2F 20 07 C9 + JSR RefreshSequenceSpriteLayout; CPU:$CF32 PRG:0F32 20 A8 CA + LDY #$A0 ; CPU:$CF35 PRG:0F35 A0 A0 + LDX #$C5 ; CPU:$CF37 PRG:0F37 A2 C5 + JSR WaitForFramePreservingY ; CPU:$CF39 PRG:0F39 20 81 C8 + LDA $49 ; CPU:$CF3C PRG:0F3C A5 49 + BEQ SubCCE64_Loop5 ; CPU:$CF3E PRG:0F3E F0 08 + LDA #$02 ; CPU:$CF40 PRG:0F40 A9 02 + STA $4D ; CPU:$CF42 PRG:0F42 85 4D + LDA #$00 ; CPU:$CF44 PRG:0F44 A9 00 + STA $4E ; CPU:$CF46 PRG:0F46 85 4E ; --------------------------------------------------------------------------- ; Label_CF48 @@ -4514,11 +4514,11 @@ Label_CF2F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CF48: - STA $2E ; CF48: 85 2E - STA $34 ; CF4A: 85 34 - STA $35 ; CF4C: 85 35 - JSR RestorePpuCtrlShadow ; CF4E: 20 B5 C8 +SubCCE64_Loop5: + STA primary_action_pressed ; CPU:$CF48 PRG:0F48 85 2E + STA sequence_phase ; CPU:$CF4A PRG:0F4A 85 34 + STA sequence_return_complete ; CPU:$CF4C PRG:0F4C 85 35 + JSR RestorePpuCtrlShadow ; CPU:$CF4E PRG:0F4E 20 B5 C8 ; --------------------------------------------------------------------------- ; Label_CF51 @@ -4535,31 +4535,31 @@ Label_CF48: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_CF51: - JSR SubCFC78 ; CF51: 20 78 FC - LDA $2E ; CF54: A5 2E - BEQ Label_CF51 ; CF56: F0 F9 - LDY #$AA ; CF58: A0 AA - LDX #$CF ; CF5A: A2 CF - JSR InstallNmiCallback ; CF5C: 20 88 C8 - LDA #$FF ; CF5F: A9 FF - STA $020C ; CF61: 8D 0C 02 - LDA #$01 ; CF64: A9 01 - STA $2E ; CF66: 85 2E - LDA $17 ; CF68: A5 17 - CMP #$0E ; CF6A: C9 0E - BEQ DeriveAimAngleNibble ; CF6C: F0 19 - CMP #$0D ; CF6E: C9 0D - BEQ InitializeSequenceBounds ; CF70: F0 1C - LDA #$1E ; CF72: A9 1E - STA $1E ; CF74: 85 1E - LDY $17 ; CF76: A4 17 - LDA $D63C,Y ; CF78: B9 3C D6 - STA $1D ; CF7B: 85 1D - LDA #$6C ; CF7D: A9 6C - STA $1F ; CF7F: 85 1F - JSR RestorePpuCtrlShadow ; CF81: 20 B5 C8 - JMP WaitForSequenceStart ; CF84: 4C 9D CF +SubCCE64_OnZero: + JSR SubCFC78 ; CPU:$CF51 PRG:0F51 20 78 FC + LDA primary_action_pressed ; CPU:$CF54 PRG:0F54 A5 2E + BEQ SubCCE64_OnZero ; CPU:$CF56 PRG:0F56 F0 F9 + LDY #$AA ; CPU:$CF58 PRG:0F58 A0 AA + LDX #$CF ; CPU:$CF5A PRG:0F5A A2 CF + JSR InstallNmiCallback ; CPU:$CF5C PRG:0F5C 20 88 C8 + LDA #$FF ; CPU:$CF5F PRG:0F5F A9 FF + STA $020C ; CPU:$CF61 PRG:0F61 8D 0C 02 + LDA #$01 ; CPU:$CF64 PRG:0F64 A9 01 + STA primary_action_pressed ; CPU:$CF66 PRG:0F66 85 2E + LDA club_selection_index ; CPU:$CF68 PRG:0F68 A5 17 + CMP #$0E ; CPU:$CF6A PRG:0F6A C9 0E + BEQ DeriveAimAngleNibble ; CPU:$CF6C PRG:0F6C F0 19 + CMP #$0D ; CPU:$CF6E PRG:0F6E C9 0D + BEQ InitializeSequenceBounds ; CPU:$CF70 PRG:0F70 F0 1C + LDA #$1E ; CPU:$CF72 PRG:0F72 A9 1E + STA sequence_lower_bound ; CPU:$CF74 PRG:0F74 85 1E + LDY club_selection_index ; CPU:$CF76 PRG:0F76 A4 17 + LDA $D63C,Y ; CPU:$CF78 PRG:0F78 B9 3C D6 + STA sequence_upper_bound ; CPU:$CF7B PRG:0F7B 85 1D + LDA #$6C ; CPU:$CF7D PRG:0F7D A9 6C + STA sequence_return_bound ; CPU:$CF7F PRG:0F7F 85 1F + JSR RestorePpuCtrlShadow ; CPU:$CF81 PRG:0F81 20 B5 C8 + JMP WaitForSequenceStart ; CPU:$CF84 PRG:0F84 4C 9D CF ; --------------------------------------------------------------------------- ; DeriveAimAngleNibble @@ -4577,9 +4577,9 @@ Label_CF51: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- DeriveAimAngleNibble: - LDA $45 ; CF87: A5 45 - JSR SubCDA1E ; CF89: 20 1E DA - STA $44 ; CF8C: 85 44 + LDA aim_adjust_direction ; CPU:$CF87 PRG:0F87 A5 45 + JSR SubCDA1E ; CPU:$CF89 PRG:0F89 20 1E DA + STA aim_angle_index ; CPU:$CF8C PRG:0F8C 85 44 ; --------------------------------------------------------------------------- ; InitializeSequenceBounds @@ -4597,13 +4597,13 @@ DeriveAimAngleNibble: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- InitializeSequenceBounds: - LDA #$2E ; CF8E: A9 2E - STA sequence_lower_bound ; CF90: 85 1E - LDA #$4C ; CF92: A9 4C - STA sequence_upper_bound ; CF94: 85 1D - LDA #$5C ; CF96: A9 5C - STA sequence_return_bound ; CF98: 85 1F - JSR RestorePpuCtrlShadow ; CF9A: 20 B5 C8 + LDA #$2E ; CPU:$CF8E PRG:0F8E A9 2E + STA sequence_lower_bound ; CPU:$CF90 PRG:0F90 85 1E + LDA #$4C ; CPU:$CF92 PRG:0F92 A9 4C + STA sequence_upper_bound ; CPU:$CF94 PRG:0F94 85 1D + LDA #$5C ; CPU:$CF96 PRG:0F96 A9 5C + STA sequence_return_bound ; CPU:$CF98 PRG:0F98 85 1F + JSR RestorePpuCtrlShadow ; CPU:$CF9A PRG:0F9A 20 B5 C8 ; --------------------------------------------------------------------------- ; WaitForSequenceStart @@ -4621,13 +4621,13 @@ InitializeSequenceBounds: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- WaitForSequenceStart: - LDA sequence_phase ; CF9D: A5 34 - CMP #nmi_vector_lo ; CF9F: C9 02 - BCC WaitForSequenceStart ; CFA1: 90 FA - LDA sequence_position ; CFA3: A5 32 - CMP #$4C ; CFA5: C9 4C - BCC WaitForSequenceStart ; CFA7: 90 F4 - RTS ; CFA9: 60 + LDA sequence_phase ; CPU:$CF9D PRG:0F9D A5 34 + CMP #nmi_vector_lo ; CPU:$CF9F PRG:0F9F C9 02 + BCC WaitForSequenceStart ; CPU:$CFA1 PRG:0FA1 90 FA + LDA sequence_position ; CPU:$CFA3 PRG:0FA3 A5 32 + CMP #$4C ; CPU:$CFA5 PRG:0FA5 C9 4C + BCC WaitForSequenceStart ; CPU:$CFA7 PRG:0FA7 90 F4 + RTS ; CPU:$CFA9 PRG:0FA9 60 ; --------------------------------------------------------------------------- ; GameplaySequenceNmiCallback @@ -4647,16 +4647,16 @@ WaitForSequenceStart: ; A, X, Y, processor flags, sequence fields, NMI vector, and related OAM. ; --------------------------------------------------------------------------- GameplaySequenceNmiCallback: - DEC sequence_position ; CFAA: C6 32 - LDA sequence_position ; CFAC: A5 32 - STA $027B ; CFAE: 8D 7B 02 - STA $027F ; CFB1: 8D 7F 02 - CMP sequence_lower_bound ; CFB4: C5 1E - BCS UpdateSequenceInput ; CFB6: B0 08 - LDA #$C3 ; CFB8: A9 C3 - STA nmi_vector_lo ; CFBA: 85 02 - LDA #$CF ; CFBC: A9 CF - STA nmi_vector_hi ; CFBE: 85 03 + DEC sequence_position ; CPU:$CFAA PRG:0FAA C6 32 + LDA sequence_position ; CPU:$CFAC PRG:0FAC A5 32 + STA $027B ; CPU:$CFAE PRG:0FAE 8D 7B 02 + STA $027F ; CPU:$CFB1 PRG:0FB1 8D 7F 02 + CMP sequence_lower_bound ; CPU:$CFB4 PRG:0FB4 C5 1E + BCS UpdateSequenceInput ; CPU:$CFB6 PRG:0FB6 B0 08 + LDA #$C3 ; CPU:$CFB8 PRG:0FB8 A9 C3 + STA nmi_vector_lo ; CPU:$CFBA PRG:0FBA 85 02 + LDA #$CF ; CPU:$CFBC PRG:0FBC A9 CF + STA nmi_vector_hi ; CPU:$CFBE PRG:0FBE 85 03 ; --------------------------------------------------------------------------- ; UpdateSequenceInput @@ -4674,7 +4674,7 @@ GameplaySequenceNmiCallback: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- UpdateSequenceInput: - JMP PollSequenceActionButton ; CFC0: 4C EA CF + JMP PollSequenceActionButton ; CPU:$CFC0 PRG:0FC0 4C EA CF ; --------------------------------------------------------------------------- ; GameplaySequenceNmiContinue1 @@ -4692,24 +4692,24 @@ UpdateSequenceInput: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- GameplaySequenceNmiContinue1: - INC sequence_position ; CFC3: E6 32 - LDA sequence_position ; CFC5: A5 32 - STA $027B ; CFC7: 8D 7B 02 - STA $027F ; CFCA: 8D 7F 02 - CMP sequence_upper_bound ; CFCD: C5 1D - BCC PollSequenceActionButton ; CFCF: 90 19 - LDA $17 ; CFD1: A5 17 - CMP #$0D ; CFD3: C9 0D - BCS InitializeSequenceReturnPhase ; CFD5: B0 4E - LDA #$01 ; CFD7: A9 01 - STA sequence_phase ; CFD9: 85 34 - LDA #$3E ; CFDB: A9 3E - STA nmi_vector_lo ; CFDD: 85 02 - LDA #$D0 ; CFDF: A9 D0 - STA nmi_vector_hi ; CFE1: 85 03 - LDA #$8A ; CFE3: A9 8A - STA $0279 ; CFE5: 8D 79 02 - BNE AdvanceSequencePosition ; CFE8: D0 4F + INC sequence_position ; CPU:$CFC3 PRG:0FC3 E6 32 + LDA sequence_position ; CPU:$CFC5 PRG:0FC5 A5 32 + STA $027B ; CPU:$CFC7 PRG:0FC7 8D 7B 02 + STA $027F ; CPU:$CFCA PRG:0FCA 8D 7F 02 + CMP sequence_upper_bound ; CPU:$CFCD PRG:0FCD C5 1D + BCC PollSequenceActionButton ; CPU:$CFCF PRG:0FCF 90 19 + LDA club_selection_index ; CPU:$CFD1 PRG:0FD1 A5 17 + CMP #$0D ; CPU:$CFD3 PRG:0FD3 C9 0D + BCS InitializeSequenceReturnPhase ; CPU:$CFD5 PRG:0FD5 B0 4E + LDA #$01 ; CPU:$CFD7 PRG:0FD7 A9 01 + STA sequence_phase ; CPU:$CFD9 PRG:0FD9 85 34 + LDA #$3E ; CPU:$CFDB PRG:0FDB A9 3E + STA nmi_vector_lo ; CPU:$CFDD PRG:0FDD 85 02 + LDA #$D0 ; CPU:$CFDF PRG:0FDF A9 D0 + STA nmi_vector_hi ; CPU:$CFE1 PRG:0FE1 85 03 + LDA #$8A ; CPU:$CFE3 PRG:0FE3 A9 8A + STA $0279 ; CPU:$CFE5 PRG:0FE5 8D 79 02 + BNE AdvanceSequencePosition ; CPU:$CFE8 PRG:0FE8 D0 4F ; --------------------------------------------------------------------------- ; PollSequenceActionButton @@ -4727,32 +4727,32 @@ GameplaySequenceNmiContinue1: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- PollSequenceActionButton: - JSR StrobeAndReadController ; CFEA: 20 7B C5 - LDX $7A ; CFED: A6 7A - LDA JOY1,X ; CFEF: BD 16 40 - AND #$01 ; CFF2: 29 01 - BEQ AdvanceSequencePosition ; CFF4: F0 43 - LDA $2E ; CFF6: A5 2E - BNE AdvanceSequencePosition ; CFF8: D0 3F - LDA $17 ; CFFA: A5 17 - CMP #$0D ; CFFC: C9 0D - BCS InitializeSequenceReturnPhase ; CFFE: B0 25 - LDA #$01 ; D000: A9 01 - STA sequence_phase ; D002: 85 34 - LDA #$3E ; D004: A9 3E - STA nmi_vector_lo ; D006: 85 02 - LDA #$D0 ; D008: A9 D0 - STA nmi_vector_hi ; D00A: 85 03 - LDA #$8A ; D00C: A9 8A - STA $0279 ; D00E: 8D 79 02 - LDA sequence_position ; D011: A5 32 - AND #$01 ; D013: 29 01 - BEQ AdvanceSequenceToNextParity ; D015: F0 0A - LDA sequence_position ; D017: A5 32 - CLC ; D019: 18 - ADC #$01 ; D01A: 69 01 - STA sequence_position ; D01C: 85 32 - STA $027F ; D01E: 8D 7F 02 + JSR StrobeAndReadController ; CPU:$CFEA PRG:0FEA 20 7B C5 + LDX active_controller_index ; CPU:$CFED PRG:0FED A6 7A + LDA JOY1,X ; CPU:$CFEF PRG:0FEF BD 16 40 + AND #$01 ; CPU:$CFF2 PRG:0FF2 29 01 + BEQ AdvanceSequencePosition ; CPU:$CFF4 PRG:0FF4 F0 43 + LDA primary_action_pressed ; CPU:$CFF6 PRG:0FF6 A5 2E + BNE AdvanceSequencePosition ; CPU:$CFF8 PRG:0FF8 D0 3F + LDA club_selection_index ; CPU:$CFFA PRG:0FFA A5 17 + CMP #$0D ; CPU:$CFFC PRG:0FFC C9 0D + BCS InitializeSequenceReturnPhase ; CPU:$CFFE PRG:0FFE B0 25 + LDA #$01 ; CPU:$D000 PRG:1000 A9 01 + STA sequence_phase ; CPU:$D002 PRG:1002 85 34 + LDA #$3E ; CPU:$D004 PRG:1004 A9 3E + STA nmi_vector_lo ; CPU:$D006 PRG:1006 85 02 + LDA #$D0 ; CPU:$D008 PRG:1008 A9 D0 + STA nmi_vector_hi ; CPU:$D00A PRG:100A 85 03 + LDA #$8A ; CPU:$D00C PRG:100C A9 8A + STA $0279 ; CPU:$D00E PRG:100E 8D 79 02 + LDA sequence_position ; CPU:$D011 PRG:1011 A5 32 + AND #$01 ; CPU:$D013 PRG:1013 29 01 + BEQ AdvanceSequenceToNextParity; CPU:$D015 PRG:1015 F0 0A + LDA sequence_position ; CPU:$D017 PRG:1017 A5 32 + CLC ; CPU:$D019 PRG:1019 18 + ADC #$01 ; CPU:$D01A PRG:101A 69 01 + STA sequence_position ; CPU:$D01C PRG:101C 85 32 + STA $027F ; CPU:$D01E PRG:101E 8D 7F 02 ; --------------------------------------------------------------------------- ; AdvanceSequenceToNextParity @@ -4770,8 +4770,8 @@ PollSequenceActionButton: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- AdvanceSequenceToNextParity: - LDA #$01 ; D021: A9 01 - BNE AdvanceSequencePosition ; D023: D0 14 + LDA #$01 ; CPU:$D021 PRG:1021 A9 01 + BNE AdvanceSequencePosition ; CPU:$D023 PRG:1023 D0 14 ; --------------------------------------------------------------------------- ; InitializeSequenceReturnPhase @@ -4789,15 +4789,15 @@ AdvanceSequenceToNextParity: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- InitializeSequenceReturnPhase: - LDA #nmi_vector_hi ; D025: A9 03 - STA sequence_phase ; D027: 85 34 - LDA #$8A ; D029: A9 8A - STA nmi_vector_lo ; D02B: 85 02 - LDA #$D0 ; D02D: A9 D0 - STA nmi_vector_hi ; D02F: 85 03 - LDA #$8A ; D031: A9 8A - STA $0279 ; D033: 8D 79 02 - STA $027D ; D036: 8D 7D 02 + LDA #nmi_vector_hi ; CPU:$D025 PRG:1025 A9 03 + STA sequence_phase ; CPU:$D027 PRG:1027 85 34 + LDA #$8A ; CPU:$D029 PRG:1029 A9 8A + STA nmi_vector_lo ; CPU:$D02B PRG:102B 85 02 + LDA #$D0 ; CPU:$D02D PRG:102D A9 D0 + STA nmi_vector_hi ; CPU:$D02F PRG:102F 85 03 + LDA #$8A ; CPU:$D031 PRG:1031 A9 8A + STA $0279 ; CPU:$D033 PRG:1033 8D 79 02 + STA $027D ; CPU:$D036 PRG:1036 8D 7D 02 ; --------------------------------------------------------------------------- ; AdvanceSequencePosition @@ -4815,8 +4815,8 @@ InitializeSequenceReturnPhase: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- AdvanceSequencePosition: - STA $2E ; D039: 85 2E - JMP SelectSequenceFrame ; D03B: 4C A9 D0 + STA primary_action_pressed ; CPU:$D039 PRG:1039 85 2E + JMP SelectSequenceFrame ; CPU:$D03B PRG:103B 4C A9 D0 ; --------------------------------------------------------------------------- ; GameplaySequenceNmiContinue2 @@ -4834,11 +4834,11 @@ AdvanceSequencePosition: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- GameplaySequenceNmiContinue2: - INC sequence_position ; D03E: E6 32 - LDA $17 ; D040: A5 17 - CMP #$0D ; D042: C9 0D - BCS Label_D048 ; D044: B0 02 - INC sequence_position ; D046: E6 32 + INC sequence_position ; CPU:$D03E PRG:103E E6 32 + LDA club_selection_index ; CPU:$D040 PRG:1040 A5 17 + CMP #$0D ; CPU:$D042 PRG:1042 C9 0D + BCS GameplaySequenceNmiContinue2_Loop ; CPU:$D044 PRG:1044 B0 02 + INC sequence_position ; CPU:$D046 PRG:1046 E6 32 ; --------------------------------------------------------------------------- ; Label_D048 @@ -4855,20 +4855,20 @@ GameplaySequenceNmiContinue2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D048: - LDA sequence_position ; D048: A5 32 - STA $027F ; D04A: 8D 7F 02 - CMP sequence_return_bound ; D04D: C5 1F - BCC Label_D064 ; D04F: 90 13 - LDA sequence_return_bound ; D051: A5 1F - STA $027F ; D053: 8D 7F 02 - LDA #nmi_vector_lo ; D056: A9 02 - STA sequence_phase ; D058: 85 34 - STA sequence_return_complete ; D05A: 85 35 - LDA #$8A ; D05C: A9 8A - STA nmi_vector_lo ; D05E: 85 02 - LDA #$D0 ; D060: A9 D0 - STA nmi_vector_hi ; D062: 85 03 +GameplaySequenceNmiContinue2_Loop: + LDA sequence_position ; CPU:$D048 PRG:1048 A5 32 + STA $027F ; CPU:$D04A PRG:104A 8D 7F 02 + CMP sequence_return_bound ; CPU:$D04D PRG:104D C5 1F + BCC GameplaySequenceNmiContinue2_Loop2 ; CPU:$D04F PRG:104F 90 13 + LDA sequence_return_bound ; CPU:$D051 PRG:1051 A5 1F + STA $027F ; CPU:$D053 PRG:1053 8D 7F 02 + LDA #nmi_vector_lo ; CPU:$D056 PRG:1056 A9 02 + STA sequence_phase ; CPU:$D058 PRG:1058 85 34 + STA sequence_return_complete ; CPU:$D05A PRG:105A 85 35 + LDA #$8A ; CPU:$D05C PRG:105C A9 8A + STA nmi_vector_lo ; CPU:$D05E PRG:105E 85 02 + LDA #$D0 ; CPU:$D060 PRG:1060 A9 D0 + STA nmi_vector_hi ; CPU:$D062 PRG:1062 85 03 ; --------------------------------------------------------------------------- ; Label_D064 @@ -4885,22 +4885,22 @@ Label_D048: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D064: - JSR StrobeAndReadController ; D064: 20 7B C5 - LDX $7A ; D067: A6 7A - LDA JOY1,X ; D069: BD 16 40 - AND #$01 ; D06C: 29 01 - BEQ Label_D085 ; D06E: F0 15 - LDA $2E ; D070: A5 2E - BNE Label_D085 ; D072: D0 11 - LDA #nmi_vector_hi ; D074: A9 03 - STA sequence_phase ; D076: 85 34 - LDA #$8A ; D078: A9 8A - STA nmi_vector_lo ; D07A: 85 02 - LDA #$D0 ; D07C: A9 D0 - STA nmi_vector_hi ; D07E: 85 03 - LDA #$8A ; D080: A9 8A - STA $027D ; D082: 8D 7D 02 +GameplaySequenceNmiContinue2_Loop2: + JSR StrobeAndReadController ; CPU:$D064 PRG:1064 20 7B C5 + LDX active_controller_index ; CPU:$D067 PRG:1067 A6 7A + LDA JOY1,X ; CPU:$D069 PRG:1069 BD 16 40 + AND #$01 ; CPU:$D06C PRG:106C 29 01 + BEQ GameplaySequenceNmiContinue2_Loop3 ; CPU:$D06E PRG:106E F0 15 + LDA primary_action_pressed ; CPU:$D070 PRG:1070 A5 2E + BNE GameplaySequenceNmiContinue2_Loop3 ; CPU:$D072 PRG:1072 D0 11 + LDA #nmi_vector_hi ; CPU:$D074 PRG:1074 A9 03 + STA sequence_phase ; CPU:$D076 PRG:1076 85 34 + LDA #$8A ; CPU:$D078 PRG:1078 A9 8A + STA nmi_vector_lo ; CPU:$D07A PRG:107A 85 02 + LDA #$D0 ; CPU:$D07C PRG:107C A9 D0 + STA nmi_vector_hi ; CPU:$D07E PRG:107E 85 03 + LDA #$8A ; CPU:$D080 PRG:1080 A9 8A + STA $027D ; CPU:$D082 PRG:1082 8D 7D 02 ; --------------------------------------------------------------------------- ; Label_D085 @@ -4917,9 +4917,9 @@ Label_D064: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D085: - STA $2E ; D085: 85 2E - JMP SelectSequenceFrame ; D087: 4C A9 D0 +GameplaySequenceNmiContinue2_Loop3: + STA primary_action_pressed ; CPU:$D085 PRG:1085 85 2E + JMP SelectSequenceFrame ; CPU:$D087 PRG:1087 4C A9 D0 ; --------------------------------------------------------------------------- ; GameplaySequenceNmiContinue3 @@ -4937,13 +4937,13 @@ Label_D085: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- GameplaySequenceNmiContinue3: - LDA sequence_return_complete ; D08A: A5 35 - BNE SelectSequenceFrame ; D08C: D0 1B - INC sequence_position ; D08E: E6 32 - LDA $17 ; D090: A5 17 - CMP #$0D ; D092: C9 0D - BCS Label_D098 ; D094: B0 02 - INC sequence_position ; D096: E6 32 + LDA sequence_return_complete ; CPU:$D08A PRG:108A A5 35 + BNE SelectSequenceFrame ; CPU:$D08C PRG:108C D0 1B + INC sequence_position ; CPU:$D08E PRG:108E E6 32 + LDA club_selection_index ; CPU:$D090 PRG:1090 A5 17 + CMP #$0D ; CPU:$D092 PRG:1092 C9 0D + BCS GameplaySequenceNmiContinue3_Loop ; CPU:$D094 PRG:1094 B0 02 + INC sequence_position ; CPU:$D096 PRG:1096 E6 32 ; --------------------------------------------------------------------------- ; Label_D098 @@ -4960,14 +4960,14 @@ GameplaySequenceNmiContinue3: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D098: - LDA sequence_position ; D098: A5 32 - CMP sequence_return_bound ; D09A: C5 1F - BCC JumpToSelectSequenceFrame ; D09C: 90 08 - LDA sequence_return_bound ; D09E: A5 1F - STA sequence_position ; D0A0: 85 32 - LDA #$01 ; D0A2: A9 01 - STA sequence_return_complete ; D0A4: 85 35 +GameplaySequenceNmiContinue3_Loop: + LDA sequence_position ; CPU:$D098 PRG:1098 A5 32 + CMP sequence_return_bound ; CPU:$D09A PRG:109A C5 1F + BCC JumpToSelectSequenceFrame ; CPU:$D09C PRG:109C 90 08 + LDA sequence_return_bound ; CPU:$D09E PRG:109E A5 1F + STA sequence_position ; CPU:$D0A0 PRG:10A0 85 32 + LDA #$01 ; CPU:$D0A2 PRG:10A2 A9 01 + STA sequence_return_complete ; CPU:$D0A4 PRG:10A4 85 35 ; --------------------------------------------------------------------------- ; SelectSequenceFrame @@ -4985,7 +4985,7 @@ Label_D098: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- JumpToSelectSequenceFrame: - JMP SelectSequenceFrame ; D0A6: 4C A9 D0 + JMP SelectSequenceFrame ; CPU:$D0A6 PRG:10A6 4C A9 D0 ; --------------------------------------------------------------------------- ; SelectSequenceFrame @@ -5003,12 +5003,12 @@ JumpToSelectSequenceFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SelectSequenceFrame: - LDA sequence_phase ; D0A9: A5 34 - BNE SelectReturnSequenceFrame ; D0AB: D0 33 - LDA $17 ; D0AD: A5 17 - CMP #$0D ; D0AF: C9 0D - BCS SelectTerminalSequenceFrame ; D0B1: B0 19 - LDY #$05 ; D0B3: A0 05 + LDA sequence_phase ; CPU:$D0A9 PRG:10A9 A5 34 + BNE SelectReturnSequenceFrame ; CPU:$D0AB PRG:10AB D0 33 + LDA club_selection_index ; CPU:$D0AD PRG:10AD A5 17 + CMP #$0D ; CPU:$D0AF PRG:10AF C9 0D + BCS SelectTerminalSequenceFrame; CPU:$D0B1 PRG:10B1 B0 19 + LDY #$05 ; CPU:$D0B3 PRG:10B3 A0 05 ; --------------------------------------------------------------------------- ; FindForwardSequenceFrame @@ -5026,11 +5026,11 @@ SelectSequenceFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- FindForwardSequenceFrame: - LDA sequence_position ; D0B5: A5 32 - CMP ForwardSequenceThresholds,Y ; D0B7: D9 24 D1 - BCC ApplyForwardSequenceFrame ; D0BA: 90 03 - DEY ; D0BC: 88 - BNE FindForwardSequenceFrame ; D0BD: D0 F6 + LDA sequence_position ; CPU:$D0B5 PRG:10B5 A5 32 + CMP ForwardSequenceThresholds,Y; CPU:$D0B7 PRG:10B7 D9 24 D1 + BCC ApplyForwardSequenceFrame ; CPU:$D0BA PRG:10BA 90 03 + DEY ; CPU:$D0BC PRG:10BC 88 + BNE FindForwardSequenceFrame ; CPU:$D0BD PRG:10BD D0 F6 ; --------------------------------------------------------------------------- ; ApplyForwardSequenceFrame @@ -5048,11 +5048,11 @@ FindForwardSequenceFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ApplyForwardSequenceFrame: - STY sequence_frame_index ; D0BF: 84 15 - LDA ForwardSequenceFrameLimits,Y ; D0C1: B9 38 D1 - STA sequence_frame_limit ; D0C4: 85 20 - JSR RefreshSequenceSpriteLayout ; D0C6: 20 A8 CA - JMP GameplayDisplayNmiCallback ; D0C9: 4C C8 C6 + STY sequence_frame_index ; CPU:$D0BF PRG:10BF 84 15 + LDA ForwardSequenceFrameLimits,Y ; CPU:$D0C1 PRG:10C1 B9 38 D1 + STA sequence_frame_limit ; CPU:$D0C4 PRG:10C4 85 20 + JSR RefreshSequenceSpriteLayout; CPU:$D0C6 PRG:10C6 20 A8 CA + JMP GameplayDisplayNmiCallback ; CPU:$D0C9 PRG:10C9 4C C8 C6 ; --------------------------------------------------------------------------- ; SelectTerminalSequenceFrame @@ -5070,7 +5070,7 @@ ApplyForwardSequenceFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SelectTerminalSequenceFrame: - LDY #nmi_vector_lo ; D0CC: A0 02 + LDY #nmi_vector_lo ; CPU:$D0CC PRG:10CC A0 02 ; --------------------------------------------------------------------------- ; FindTerminalSequenceFrame @@ -5088,11 +5088,11 @@ SelectTerminalSequenceFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- FindTerminalSequenceFrame: - LDA sequence_position ; D0CE: A5 32 - CMP TerminalSequenceThresholds,Y ; D0D0: D9 2A D1 - BCC ApplyTerminalSequenceFrame ; D0D3: 90 03 - DEY ; D0D5: 88 - BNE FindTerminalSequenceFrame ; D0D6: D0 F6 + LDA sequence_position ; CPU:$D0CE PRG:10CE A5 32 + CMP TerminalSequenceThresholds,Y ; CPU:$D0D0 PRG:10D0 D9 2A D1 + BCC ApplyTerminalSequenceFrame ; CPU:$D0D3 PRG:10D3 90 03 + DEY ; CPU:$D0D5 PRG:10D5 88 + BNE FindTerminalSequenceFrame ; CPU:$D0D6 PRG:10D6 D0 F6 ; --------------------------------------------------------------------------- ; ApplyTerminalSequenceFrame @@ -5110,9 +5110,9 @@ FindTerminalSequenceFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ApplyTerminalSequenceFrame: - STY sequence_frame_index ; D0D8: 84 15 - JSR RefreshSequenceSpriteLayout ; D0DA: 20 A8 CA - JMP GameplayDisplayNmiCallback ; D0DD: 4C C8 C6 + STY sequence_frame_index ; CPU:$D0D8 PRG:10D8 84 15 + JSR RefreshSequenceSpriteLayout; CPU:$D0DA PRG:10DA 20 A8 CA + JMP GameplayDisplayNmiCallback ; CPU:$D0DD PRG:10DD 4C C8 C6 ; --------------------------------------------------------------------------- ; SelectReturnSequenceFrame @@ -5130,12 +5130,12 @@ ApplyTerminalSequenceFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SelectReturnSequenceFrame: - LDA sequence_return_complete ; D0E0: A5 35 - BNE FinishSequenceNmi ; D0E2: D0 3D - LDA $17 ; D0E4: A5 17 - CMP #$0D ; D0E6: C9 0D - BCS FindFinalSequenceFrame ; D0E8: B0 20 - LDY #$00 ; D0EA: A0 00 + LDA sequence_return_complete ; CPU:$D0E0 PRG:10E0 A5 35 + BNE FinishSequenceNmi ; CPU:$D0E2 PRG:10E2 D0 3D + LDA club_selection_index ; CPU:$D0E4 PRG:10E4 A5 17 + CMP #$0D ; CPU:$D0E6 PRG:10E6 C9 0D + BCS FindFinalSequenceFrame ; CPU:$D0E8 PRG:10E8 B0 20 + LDY #$00 ; CPU:$D0EA PRG:10EA A0 00 ; --------------------------------------------------------------------------- ; FindReturnSequenceFrame @@ -5153,12 +5153,12 @@ SelectReturnSequenceFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- FindReturnSequenceFrame: - LDA sequence_position ; D0EC: A5 32 - CMP ReturnSequenceThresholds,Y ; D0EE: D9 2D D1 - BCC ClampReturnSequenceFrame ; D0F1: 90 05 - INY ; D0F3: C8 - CPY #$07 ; D0F4: C0 07 - BCC FindReturnSequenceFrame ; D0F6: 90 F4 + LDA sequence_position ; CPU:$D0EC PRG:10EC A5 32 + CMP ReturnSequenceThresholds,Y ; CPU:$D0EE PRG:10EE D9 2D D1 + BCC ClampReturnSequenceFrame ; CPU:$D0F1 PRG:10F1 90 05 + INY ; CPU:$D0F3 PRG:10F3 C8 + CPY #$07 ; CPU:$D0F4 PRG:10F4 C0 07 + BCC FindReturnSequenceFrame ; CPU:$D0F6 PRG:10F6 90 F4 ; --------------------------------------------------------------------------- ; ClampReturnSequenceFrame @@ -5176,12 +5176,12 @@ FindReturnSequenceFrame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ClampReturnSequenceFrame: - TYA ; D0F8: 98 - CLC ; D0F9: 18 - ADC #$05 ; D0FA: 69 05 - CMP sequence_frame_limit ; D0FC: C5 20 - BCC Label_D102 ; D0FE: 90 02 - LDA sequence_frame_limit ; D100: A5 20 + TYA ; CPU:$D0F8 PRG:10F8 98 + CLC ; CPU:$D0F9 PRG:10F9 18 + ADC #$05 ; CPU:$D0FA PRG:10FA 69 05 + CMP sequence_frame_limit ; CPU:$D0FC PRG:10FC C5 20 + BCC ClampReturnSequenceFrame_Loop ; CPU:$D0FE PRG:10FE 90 02 + LDA sequence_frame_limit ; CPU:$D100 PRG:1100 A5 20 ; --------------------------------------------------------------------------- ; Label_D102 @@ -5198,10 +5198,10 @@ ClampReturnSequenceFrame: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D102: - STA sequence_frame_index ; D102: 85 15 - JSR RefreshSequenceSpriteLayout ; D104: 20 A8 CA - JMP GameplayDisplayNmiCallback ; D107: 4C C8 C6 +ClampReturnSequenceFrame_Loop: + STA sequence_frame_index ; CPU:$D102 PRG:1102 85 15 + JSR RefreshSequenceSpriteLayout; CPU:$D104 PRG:1104 20 A8 CA + JMP GameplayDisplayNmiCallback ; CPU:$D107 PRG:1107 4C C8 C6 ; --------------------------------------------------------------------------- ; FindFinalSequenceFrame @@ -5219,7 +5219,7 @@ Label_D102: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- FindFinalSequenceFrame: - LDY #$00 ; D10A: A0 00 + LDY #$00 ; CPU:$D10A PRG:110A A0 00 ; --------------------------------------------------------------------------- ; Label_D10C @@ -5236,13 +5236,13 @@ FindFinalSequenceFrame: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D10C: - LDA sequence_position ; D10C: A5 32 - CMP FinalSequenceThresholds,Y ; D10E: D9 35 D1 - BCC Label_D118 ; D111: 90 05 - INY ; D113: C8 - CPY #nmi_vector_lo ; D114: C0 02 - BCC Label_D10C ; D116: 90 F4 +FindFinalSequenceFrame_OnCarryClear: + LDA sequence_position ; CPU:$D10C PRG:110C A5 32 + CMP FinalSequenceThresholds,Y ; CPU:$D10E PRG:110E D9 35 D1 + BCC FindFinalSequenceFrame_Loop; CPU:$D111 PRG:1111 90 05 + INY ; CPU:$D113 PRG:1113 C8 + CPY #nmi_vector_lo ; CPU:$D114 PRG:1114 C0 02 + BCC FindFinalSequenceFrame_OnCarryClear ; CPU:$D116 PRG:1116 90 F4 ; --------------------------------------------------------------------------- ; Label_D118 @@ -5259,12 +5259,12 @@ Label_D10C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D118: - TYA ; D118: 98 - CLC ; D119: 18 - ADC #nmi_vector_hi ; D11A: 69 03 - STA sequence_frame_index ; D11C: 85 15 - JSR RefreshSequenceSpriteLayout ; D11E: 20 A8 CA +FindFinalSequenceFrame_Loop: + TYA ; CPU:$D118 PRG:1118 98 + CLC ; CPU:$D119 PRG:1119 18 + ADC #nmi_vector_hi ; CPU:$D11A PRG:111A 69 03 + STA sequence_frame_index ; CPU:$D11C PRG:111C 85 15 + JSR RefreshSequenceSpriteLayout; CPU:$D11E PRG:111E 20 A8 CA ; --------------------------------------------------------------------------- ; FinishSequenceNmi @@ -5282,18 +5282,18 @@ Label_D118: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- FinishSequenceNmi: - JMP GameplayDisplayNmiCallback ; D121: 4C C8 C6 + JMP GameplayDisplayNmiCallback ; CPU:$D121 PRG:1121 4C C8 C6 ; Position thresholds used to select the visible sequence frame. ForwardSequenceThresholds: - .byte $4E,$46,$3E,$36,$2E,$26 ; D124-D129: 4E 46 3E 36 2E 26 + .byte $4E,$46,$3E,$36,$2E,$26 ; D124-D129: 4E 46 3E 36 2E 26 ; CPU:$D124 PRG:1124 4E 46 3E 36 2E 26 TerminalSequenceThresholds: - .byte $4E,$46,$36 ; D12A-D12C: 4E 46 36 + .byte $4E,$46,$36 ; D12A-D12C: 4E 46 36 ; CPU:$D12A PRG:112A 4E 46 36 ReturnSequenceThresholds: - .byte $26,$2E,$36,$3E,$4D,$54,$5E,$70 ; D12D-D134: 26 2E 36 3E 4D 54 5E 70 + .byte $26,$2E,$36,$3E,$4D,$54,$5E,$70 ; D12D-D134: 26 2E 36 3E 4D 54 5E 70 ; CPU:$D12D PRG:112D 26 2E 36 3E 4D 54 5E 70 FinalSequenceThresholds: - .byte $36,$4D,$50 ; D135-D137: 36 4D 50 + .byte $36,$4D,$50 ; D135-D137: 36 4D 50 ; CPU:$D135 PRG:1135 36 4D 50 ForwardSequenceFrameLimits: - .byte $0A,$0A,$0A,$0B,$0B,$0C ; D138-D13D: 0A 0A 0A 0B 0B 0C + .byte $0A,$0A,$0A,$0B,$0B,$0C ; D138-D13D: 0A 0A 0A 0B 0B 0C ; CPU:$D138 PRG:1138 0A 0A 0A 0B 0B 0C ; --------------------------------------------------------------------------- ; SubCD13E @@ -5311,13 +5311,13 @@ ForwardSequenceFrameLimits: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD13E: - LDY #$04 ; D13E: A0 04 - LDX #$D3 ; D140: A2 D3 - JSR WaitForFramePreservingY ; D142: 20 81 C8 - LDA $54 ; D145: A5 54 - BEQ Label_D14D ; D147: F0 04 - LDA #$00 ; D149: A9 00 - STA animation_frame_index ; D14B: 85 8F + LDY #$04 ; CPU:$D13E PRG:113E A0 04 + LDX #$D3 ; CPU:$D140 PRG:1140 A2 D3 + JSR WaitForFramePreservingY ; CPU:$D142 PRG:1142 20 81 C8 + LDA $54 ; CPU:$D145 PRG:1145 A5 54 + BEQ SubCD13E_Loop ; CPU:$D147 PRG:1147 F0 04 + LDA #$00 ; CPU:$D149 PRG:1149 A9 00 + STA animation_frame_index ; CPU:$D14B PRG:114B 85 8F ; --------------------------------------------------------------------------- ; Label_D14D @@ -5334,29 +5334,29 @@ SubCD13E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D14D: - STA $89 ; D14D: 85 89 - STA $39 ; D14F: 85 39 - STA $3C ; D151: 85 3C - STA $42 ; D153: 85 42 - STA $43 ; D155: 85 43 - STA $4F ; D157: 85 4F - STA $76 ; D159: 85 76 - STA $2A ; D15B: 85 2A - STA $81 ; D15D: 85 81 - STA $0100 ; D15F: 8D 00 01 - LDA $17 ; D162: A5 17 - BNE Label_D17C ; D164: D0 16 - LDA $027B ; D166: AD 7B 02 - CMP #$1D ; D169: C9 1D - BNE Label_D17C ; D16B: D0 0F - LDA $027F ; D16D: AD 7F 02 - CMP #$4C ; D170: C9 4C - BNE Label_D17C ; D172: D0 08 - LDA #$01 ; D174: A9 01 - STA $4D ; D176: 85 4D - LDA #$D2 ; D178: A9 D2 - STA $4E ; D17A: 85 4E +SubCD13E_Loop: + STA $89 ; CPU:$D14D PRG:114D 85 89 + STA $39 ; CPU:$D14F PRG:114F 85 39 + STA $3C ; CPU:$D151 PRG:1151 85 3C + STA $42 ; CPU:$D153 PRG:1153 85 42 + STA $43 ; CPU:$D155 PRG:1155 85 43 + STA $4F ; CPU:$D157 PRG:1157 85 4F + STA $76 ; CPU:$D159 PRG:1159 85 76 + STA $2A ; CPU:$D15B PRG:115B 85 2A + STA $81 ; CPU:$D15D PRG:115D 85 81 + STA $0100 ; CPU:$D15F PRG:115F 8D 00 01 + LDA club_selection_index ; CPU:$D162 PRG:1162 A5 17 + BNE SubCD13E_Loop2 ; CPU:$D164 PRG:1164 D0 16 + LDA $027B ; CPU:$D166 PRG:1166 AD 7B 02 + CMP #$1D ; CPU:$D169 PRG:1169 C9 1D + BNE SubCD13E_Loop2 ; CPU:$D16B PRG:116B D0 0F + LDA $027F ; CPU:$D16D PRG:116D AD 7F 02 + CMP #$4C ; CPU:$D170 PRG:1170 C9 4C + BNE SubCD13E_Loop2 ; CPU:$D172 PRG:1172 D0 08 + LDA #$01 ; CPU:$D174 PRG:1174 A9 01 + STA $4D ; CPU:$D176 PRG:1176 85 4D + LDA #$D2 ; CPU:$D178 PRG:1178 A9 D2 + STA $4E ; CPU:$D17A PRG:117A 85 4E ; --------------------------------------------------------------------------- ; Label_D17C @@ -5373,16 +5373,16 @@ Label_D14D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D17C: - JSR RestorePpuCtrlShadow ; D17C: 20 B5 C8 - LDY $17 ; D17F: A4 17 - LDA $D63C,Y ; D181: B9 3C D6 - SEC ; D184: 38 - SBC $027F ; D185: ED 7F 02 - BMI Label_D190 ; D188: 30 06 - CMP #$08 ; D18A: C9 08 - BCC Label_D190 ; D18C: 90 02 - LDA #$08 ; D18E: A9 08 +SubCD13E_Loop2: + JSR RestorePpuCtrlShadow ; CPU:$D17C PRG:117C 20 B5 C8 + LDY club_selection_index ; CPU:$D17F PRG:117F A4 17 + LDA $D63C,Y ; CPU:$D181 PRG:1181 B9 3C D6 + SEC ; CPU:$D184 PRG:1184 38 + SBC $027F ; CPU:$D185 PRG:1185 ED 7F 02 + BMI SubCD13E_Loop3 ; CPU:$D188 PRG:1188 30 06 + CMP #$08 ; CPU:$D18A PRG:118A C9 08 + BCC SubCD13E_Loop3 ; CPU:$D18C PRG:118C 90 02 + LDA #$08 ; CPU:$D18E PRG:118E A9 08 ; --------------------------------------------------------------------------- ; Label_D190 @@ -5399,15 +5399,15 @@ Label_D17C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D190: - STA $48 ; D190: 85 48 - LDA $027F ; D192: AD 7F 02 - SEC ; D195: 38 - SBC $D64B,Y ; D196: F9 4B D6 - BMI Label_D1A1 ; D199: 30 06 - CMP #$08 ; D19B: C9 08 - BCC Label_D1A1 ; D19D: 90 02 - LDA #$08 ; D19F: A9 08 +SubCD13E_Loop3: + STA $48 ; CPU:$D190 PRG:1190 85 48 + LDA $027F ; CPU:$D192 PRG:1192 AD 7F 02 + SEC ; CPU:$D195 PRG:1195 38 + SBC $D64B,Y ; CPU:$D196 PRG:1196 F9 4B D6 + BMI SubCD13E_Loop4 ; CPU:$D199 PRG:1199 30 06 + CMP #$08 ; CPU:$D19B PRG:119B C9 08 + BCC SubCD13E_Loop4 ; CPU:$D19D PRG:119D 90 02 + LDA #$08 ; CPU:$D19F PRG:119F A9 08 ; --------------------------------------------------------------------------- ; Label_D1A1 @@ -5424,9 +5424,9 @@ Label_D190: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D1A1: - STA $47 ; D1A1: 85 47 - LDX #$00 ; D1A3: A2 00 +SubCD13E_Loop4: + STA $47 ; CPU:$D1A1 PRG:11A1 85 47 + LDX #$00 ; CPU:$D1A3 PRG:11A3 A2 00 ; --------------------------------------------------------------------------- ; Label_D1A5 @@ -5443,12 +5443,12 @@ Label_D1A1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D1A5: - LDA $17 ; D1A5: A5 17 - CMP #$0D ; D1A7: C9 0D - BCS Label_D1B0 ; D1A9: B0 05 - LDA $D61A,X ; D1AB: BD 1A D6 - BNE Label_D1B3 ; D1AE: D0 03 +SubCD13E_OnCarryClear: + LDA club_selection_index ; CPU:$D1A5 PRG:11A5 A5 17 + CMP #$0D ; CPU:$D1A7 PRG:11A7 C9 0D + BCS SubCD13E_Loop5 ; CPU:$D1A9 PRG:11A9 B0 05 + LDA $D61A,X ; CPU:$D1AB PRG:11AB BD 1A D6 + BNE SubCD13E_Loop6 ; CPU:$D1AE PRG:11AE D0 03 ; --------------------------------------------------------------------------- ; Label_D1B0 @@ -5465,8 +5465,8 @@ Label_D1A5: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D1B0: - LDA $D622,X ; D1B0: BD 22 D6 +SubCD13E_Loop5: + LDA $D622,X ; CPU:$D1B0 PRG:11B0 BD 22 D6 ; --------------------------------------------------------------------------- ; Label_D1B3 @@ -5483,10 +5483,10 @@ Label_D1B0: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D1B3: - CMP $027B ; D1B3: CD 7B 02 - BEQ Label_D1BA ; D1B6: F0 02 - BCS Label_D1BF ; D1B8: B0 05 +SubCD13E_Loop6: + CMP $027B ; CPU:$D1B3 PRG:11B3 CD 7B 02 + BEQ SubCD13E_Loop7 ; CPU:$D1B6 PRG:11B6 F0 02 + BCS SubCD13E_Loop8 ; CPU:$D1B8 PRG:11B8 B0 05 ; --------------------------------------------------------------------------- ; Label_D1BA @@ -5503,10 +5503,10 @@ Label_D1B3: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D1BA: - INX ; D1BA: E8 - CPX #$08 ; D1BB: E0 08 - BCC Label_D1A5 ; D1BD: 90 E6 +SubCD13E_Loop7: + INX ; CPU:$D1BA PRG:11BA E8 + CPX #$08 ; CPU:$D1BB PRG:11BB E0 08 + BCC SubCD13E_OnCarryClear ; CPU:$D1BD PRG:11BD 90 E6 ; --------------------------------------------------------------------------- ; Label_D1BF @@ -5523,12 +5523,12 @@ Label_D1BA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D1BF: - LDA $49 ; D1BF: A5 49 - BNE Label_D1CA ; D1C1: D0 07 - LDA $44 ; D1C3: A5 44 - JSR MultiplyBy32 ; D1C5: 20 BC C8 - STA $45 ; D1C8: 85 45 +SubCD13E_Loop8: + LDA $49 ; CPU:$D1BF PRG:11BF A5 49 + BNE SubCD13E_Loop9 ; CPU:$D1C1 PRG:11C1 D0 07 + LDA aim_angle_index ; CPU:$D1C3 PRG:11C3 A5 44 + JSR MultiplyBy32 ; CPU:$D1C5 PRG:11C5 20 BC C8 + STA aim_adjust_direction ; CPU:$D1C8 PRG:11C8 85 45 ; --------------------------------------------------------------------------- ; Label_D1CA @@ -5545,23 +5545,23 @@ Label_D1BF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D1CA: - LDA #$00 ; D1CA: A9 00 - STA $1C ; D1CC: 85 1C - LDA $D62A,X ; D1CE: BD 2A D6 - STA $5F ; D1D1: 85 5F - LDY $17 ; D1D3: A4 17 - LDA $D5E4,Y ; D1D5: B9 E4 D5 - STA $1A ; D1D8: 85 1A - LDA $D5FE,Y ; D1DA: B9 FE D5 - JSR SubCD505 ; D1DD: 20 05 D5 - STA $19 ; D1E0: 85 19 - LDA $D60B,Y ; D1E2: B9 0B D6 - JSR SubCD505 ; D1E5: 20 05 D5 - STA $09 ; D1E8: 85 09 - LDA $49 ; D1EA: A5 49 - BEQ Label_D1F1 ; D1EC: F0 03 - JMP SubCD515 ; D1EE: 4C 15 D5 +SubCD13E_Loop9: + LDA #$00 ; CPU:$D1CA PRG:11CA A9 00 + STA $1C ; CPU:$D1CC PRG:11CC 85 1C + LDA $D62A,X ; CPU:$D1CE PRG:11CE BD 2A D6 + STA $5F ; CPU:$D1D1 PRG:11D1 85 5F + LDY club_selection_index ; CPU:$D1D3 PRG:11D3 A4 17 + LDA $D5E4,Y ; CPU:$D1D5 PRG:11D5 B9 E4 D5 + STA $1A ; CPU:$D1D8 PRG:11D8 85 1A + LDA $D5FE,Y ; CPU:$D1DA PRG:11DA B9 FE D5 + JSR SubCD505 ; CPU:$D1DD PRG:11DD 20 05 D5 + STA $19 ; CPU:$D1E0 PRG:11E0 85 19 + LDA $D60B,Y ; CPU:$D1E2 PRG:11E2 B9 0B D6 + JSR SubCD505 ; CPU:$D1E5 PRG:11E5 20 05 D5 + STA title_input_mode ; CPU:$D1E8 PRG:11E8 85 09 + LDA $49 ; CPU:$D1EA PRG:11EA A5 49 + BEQ SubCD13E_Loop10 ; CPU:$D1EC PRG:11EC F0 03 + JMP SubCD515 ; CPU:$D1EE PRG:11EE 4C 15 D5 ; --------------------------------------------------------------------------- ; Label_D1F1 @@ -5578,11 +5578,11 @@ Label_D1CA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D1F1: - LDA $17 ; D1F1: A5 17 - CMP #$0D ; D1F3: C9 0D - BCC Label_D1FA ; D1F5: 90 03 - JMP SubCD2C2 ; D1F7: 4C C2 D2 +SubCD13E_Loop10: + LDA club_selection_index ; CPU:$D1F1 PRG:11F1 A5 17 + CMP #$0D ; CPU:$D1F3 PRG:11F3 C9 0D + BCC SubCD13E_Loop11 ; CPU:$D1F5 PRG:11F5 90 03 + JMP SubCD2C2 ; CPU:$D1F7 PRG:11F7 4C C2 D2 ; --------------------------------------------------------------------------- ; Label_D1FA @@ -5599,10 +5599,10 @@ Label_D1F1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D1FA: - LDA $D5F1,Y ; D1FA: B9 F1 D5 - JSR SubCD505 ; D1FD: 20 05 D5 - TAX ; D200: AA +SubCD13E_Loop11: + LDA $D5F1,Y ; CPU:$D1FA PRG:11FA B9 F1 D5 + JSR SubCD505 ; CPU:$D1FD PRG:11FD 20 05 D5 + TAX ; CPU:$D200 PRG:1200 AA ; --------------------------------------------------------------------------- ; Label_D201 @@ -5619,15 +5619,15 @@ Label_D1FA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D201: - JSR SubCD48B ; D201: 20 8B D4 - JSR SubCD4F7 ; D204: 20 F7 D4 - LDA $4F ; D207: A5 4F - ORA $76 ; D209: 05 76 - BNE Label_D214 ; D20B: D0 07 - JSR SubCD3B7 ; D20D: 20 B7 D3 - LDA $81 ; D210: A5 81 - BEQ Label_D217 ; D212: F0 03 +SubCD13E_OnNonzero: + JSR SubCD48B ; CPU:$D201 PRG:1201 20 8B D4 + JSR SubCD4F7 ; CPU:$D204 PRG:1204 20 F7 D4 + LDA $4F ; CPU:$D207 PRG:1207 A5 4F + ORA $76 ; CPU:$D209 PRG:1209 05 76 + BNE SubCD13E_Loop12 ; CPU:$D20B PRG:120B D0 07 + JSR SubCD3B7 ; CPU:$D20D PRG:120D 20 B7 D3 + LDA $81 ; CPU:$D210 PRG:1210 A5 81 + BEQ SubCD13E_Loop13 ; CPU:$D212 PRG:1212 F0 03 ; --------------------------------------------------------------------------- ; Label_D214 @@ -5644,8 +5644,8 @@ Label_D201: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D214: - JMP SubCD2EE ; D214: 4C EE D2 +SubCD13E_Loop12: + JMP SubCD2EE ; CPU:$D214 PRG:1214 4C EE D2 ; --------------------------------------------------------------------------- ; Label_D217 @@ -5662,10 +5662,10 @@ Label_D214: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D217: - JSR WaitForFrame ; D217: 20 F3 C8 - DEX ; D21A: CA - BNE Label_D201 ; D21B: D0 E4 +SubCD13E_Loop13: + JSR WaitForFrame ; CPU:$D217 PRG:1217 20 F3 C8 + DEX ; CPU:$D21A PRG:121A CA + BNE SubCD13E_OnNonzero ; CPU:$D21B PRG:121B D0 E4 ; --------------------------------------------------------------------------- ; SubCD21D @@ -5683,19 +5683,19 @@ Label_D217: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD21D: - JSR SubCD48B ; D21D: 20 8B D4 - JSR SubCD4F7 ; D220: 20 F7 D4 - LDA $19 ; D223: A5 19 - SEC ; D225: 38 - SBC $1A ; D226: E5 1A - STA $19 ; D228: 85 19 - LDA $1C ; D22A: A5 1C - SBC #$00 ; D22C: E9 00 - STA $1C ; D22E: 85 1C - LDA $42 ; D230: A5 42 - CMP #$F0 ; D232: C9 F0 - BCC Label_D239 ; D234: 90 03 - JMP SubCD2C2 ; D236: 4C C2 D2 + JSR SubCD48B ; CPU:$D21D PRG:121D 20 8B D4 + JSR SubCD4F7 ; CPU:$D220 PRG:1220 20 F7 D4 + LDA $19 ; CPU:$D223 PRG:1223 A5 19 + SEC ; CPU:$D225 PRG:1225 38 + SBC $1A ; CPU:$D226 PRG:1226 E5 1A + STA $19 ; CPU:$D228 PRG:1228 85 19 + LDA $1C ; CPU:$D22A PRG:122A A5 1C + SBC #$00 ; CPU:$D22C PRG:122C E9 00 + STA $1C ; CPU:$D22E PRG:122E 85 1C + LDA $42 ; CPU:$D230 PRG:1230 A5 42 + CMP #$F0 ; CPU:$D232 PRG:1232 C9 F0 + BCC SubCD21D_Loop ; CPU:$D234 PRG:1234 90 03 + JMP SubCD2C2 ; CPU:$D236 PRG:1236 4C C2 D2 ; --------------------------------------------------------------------------- ; Label_D239 @@ -5712,16 +5712,16 @@ SubCD21D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D239: - LDY $47 ; D239: A4 47 - BMI Label_D24C ; D23B: 30 0F - INC $4B ; D23D: E6 4B - LDA $4B ; D23F: A5 4B - CMP $D633,Y ; D241: D9 33 D6 - BCC Label_D24C ; D244: 90 06 - DEC $45 ; D246: C6 45 - LDA #$00 ; D248: A9 00 - STA $4B ; D24A: 85 4B +SubCD21D_Loop: + LDY $47 ; CPU:$D239 PRG:1239 A4 47 + BMI SubCD21D_Loop2 ; CPU:$D23B PRG:123B 30 0F + INC $4B ; CPU:$D23D PRG:123D E6 4B + LDA $4B ; CPU:$D23F PRG:123F A5 4B + CMP $D633,Y ; CPU:$D241 PRG:1241 D9 33 D6 + BCC SubCD21D_Loop2 ; CPU:$D244 PRG:1244 90 06 + DEC aim_adjust_direction ; CPU:$D246 PRG:1246 C6 45 + LDA #$00 ; CPU:$D248 PRG:1248 A9 00 + STA $4B ; CPU:$D24A PRG:124A 85 4B ; --------------------------------------------------------------------------- ; Label_D24C @@ -5738,16 +5738,16 @@ Label_D239: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D24C: - LDY $48 ; D24C: A4 48 - BMI Label_D25F ; D24E: 30 0F - INC $4C ; D250: E6 4C - LDA $4C ; D252: A5 4C - CMP $D633,Y ; D254: D9 33 D6 - BCC Label_D25F ; D257: 90 06 - INC $45 ; D259: E6 45 - LDA #$00 ; D25B: A9 00 - STA $4C ; D25D: 85 4C +SubCD21D_Loop2: + LDY $48 ; CPU:$D24C PRG:124C A4 48 + BMI SubCD21D_Loop3 ; CPU:$D24E PRG:124E 30 0F + INC $4C ; CPU:$D250 PRG:1250 E6 4C + LDA $4C ; CPU:$D252 PRG:1252 A5 4C + CMP $D633,Y ; CPU:$D254 PRG:1254 D9 33 D6 + BCC SubCD21D_Loop3 ; CPU:$D257 PRG:1257 90 06 + INC aim_adjust_direction ; CPU:$D259 PRG:1259 E6 45 + LDA #$00 ; CPU:$D25B PRG:125B A9 00 + STA $4C ; CPU:$D25D PRG:125D 85 4C ; --------------------------------------------------------------------------- ; Label_D25F @@ -5764,19 +5764,19 @@ Label_D24C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D25F: - LDA $8C ; D25F: A5 8C - AND #$78 ; D261: 29 78 - BEQ Label_D2AF ; D263: F0 4A - LSR A ; D265: 4A - LSR A ; D266: 4A - TAX ; D267: AA - LDA #$80 ; D268: A9 80 - STA $3D ; D26A: 85 3D - STA $3A ; D26C: 85 3A - LDA $8C ; D26E: A5 8C - JSR MultiplyABy32 ; D270: 20 BB C8 - STA $25 ; D273: 85 25 +SubCD21D_Loop3: + LDA $8C ; CPU:$D25F PRG:125F A5 8C + AND #$78 ; CPU:$D261 PRG:1261 29 78 + BEQ SubCD21D_Loop4 ; CPU:$D263 PRG:1263 F0 4A + LSR A ; CPU:$D265 PRG:1265 4A + LSR A ; CPU:$D266 PRG:1266 4A + TAX ; CPU:$D267 PRG:1267 AA + LDA #$80 ; CPU:$D268 PRG:1268 A9 80 + STA $3D ; CPU:$D26A PRG:126A 85 3D + STA $3A ; CPU:$D26C PRG:126C 85 3A + LDA $8C ; CPU:$D26E PRG:126E A5 8C + JSR MultiplyABy32 ; CPU:$D270 PRG:1270 20 BB C8 + STA $25 ; CPU:$D273 PRG:1273 85 25 ; --------------------------------------------------------------------------- ; Label_D275 @@ -5793,36 +5793,36 @@ Label_D25F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D275: - LDY $25 ; D275: A4 25 - JSR SubCD2F8 ; D277: 20 F8 D2 - LDA $3D ; D27A: A5 3D - CLC ; D27C: 18 - ADC $0600,Y ; D27D: 79 00 06 - STA $3D ; D280: 85 3D - LDA $3C ; D282: A5 3C - ADC $0700,Y ; D284: 79 00 07 - STA $3C ; D287: 85 3C - LDA $3B ; D289: A5 3B - ADC $26 ; D28B: 65 26 - STA $3B ; D28D: 85 3B - TYA ; D28F: 98 - CLC ; D290: 18 - ADC #$40 ; D291: 69 40 - TAY ; D293: A8 - JSR SubCD2F8 ; D294: 20 F8 D2 - LDA $3A ; D297: A5 3A - CLC ; D299: 18 - ADC $0600,Y ; D29A: 79 00 06 - STA $3A ; D29D: 85 3A - LDA $39 ; D29F: A5 39 - ADC $0700,Y ; D2A1: 79 00 07 - STA $39 ; D2A4: 85 39 - LDA $38 ; D2A6: A5 38 - ADC $26 ; D2A8: 65 26 - STA $38 ; D2AA: 85 38 - DEX ; D2AC: CA - BNE Label_D275 ; D2AD: D0 C6 +SubCD21D_OnNonzero: + LDY $25 ; CPU:$D275 PRG:1275 A4 25 + JSR SubCD2F8 ; CPU:$D277 PRG:1277 20 F8 D2 + LDA $3D ; CPU:$D27A PRG:127A A5 3D + CLC ; CPU:$D27C PRG:127C 18 + ADC $0600,Y ; CPU:$D27D PRG:127D 79 00 06 + STA $3D ; CPU:$D280 PRG:1280 85 3D + LDA $3C ; CPU:$D282 PRG:1282 A5 3C + ADC $0700,Y ; CPU:$D284 PRG:1284 79 00 07 + STA $3C ; CPU:$D287 PRG:1287 85 3C + LDA $3B ; CPU:$D289 PRG:1289 A5 3B + ADC $26 ; CPU:$D28B PRG:128B 65 26 + STA $3B ; CPU:$D28D PRG:128D 85 3B + TYA ; CPU:$D28F PRG:128F 98 + CLC ; CPU:$D290 PRG:1290 18 + ADC #$40 ; CPU:$D291 PRG:1291 69 40 + TAY ; CPU:$D293 PRG:1293 A8 + JSR SubCD2F8 ; CPU:$D294 PRG:1294 20 F8 D2 + LDA $3A ; CPU:$D297 PRG:1297 A5 3A + CLC ; CPU:$D299 PRG:1299 18 + ADC $0600,Y ; CPU:$D29A PRG:129A 79 00 06 + STA $3A ; CPU:$D29D PRG:129D 85 3A + LDA $39 ; CPU:$D29F PRG:129F A5 39 + ADC $0700,Y ; CPU:$D2A1 PRG:12A1 79 00 07 + STA $39 ; CPU:$D2A4 PRG:12A4 85 39 + LDA $38 ; CPU:$D2A6 PRG:12A6 A5 38 + ADC $26 ; CPU:$D2A8 PRG:12A8 65 26 + STA $38 ; CPU:$D2AA PRG:12AA 85 38 + DEX ; CPU:$D2AC PRG:12AC CA + BNE SubCD21D_OnNonzero ; CPU:$D2AD PRG:12AD D0 C6 ; --------------------------------------------------------------------------- ; Label_D2AF @@ -5839,15 +5839,15 @@ Label_D275: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D2AF: - LDA $4F ; D2AF: A5 4F - ORA $76 ; D2B1: 05 76 - BNE SubCD2EE ; D2B3: D0 39 - JSR SubCD3B7 ; D2B5: 20 B7 D3 - LDA $81 ; D2B8: A5 81 - BNE SubCD2EE ; D2BA: D0 32 - JSR WaitForFrame ; D2BC: 20 F3 C8 - JMP SubCD21D ; D2BF: 4C 1D D2 +SubCD21D_Loop4: + LDA $4F ; CPU:$D2AF PRG:12AF A5 4F + ORA $76 ; CPU:$D2B1 PRG:12B1 05 76 + BNE SubCD2EE ; CPU:$D2B3 PRG:12B3 D0 39 + JSR SubCD3B7 ; CPU:$D2B5 PRG:12B5 20 B7 D3 + LDA $81 ; CPU:$D2B8 PRG:12B8 A5 81 + BNE SubCD2EE ; CPU:$D2BA PRG:12BA D0 32 + JSR WaitForFrame ; CPU:$D2BC PRG:12BC 20 F3 C8 + JMP SubCD21D ; CPU:$D2BF PRG:12BF 4C 1D D2 ; --------------------------------------------------------------------------- ; SubCD2C2 @@ -5865,9 +5865,9 @@ Label_D2AF: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD2C2: - LDA #$00 ; D2C2: A9 00 - STA $42 ; D2C4: 85 42 - STA $43 ; D2C6: 85 43 + LDA #$00 ; CPU:$D2C2 PRG:12C2 A9 00 + STA $42 ; CPU:$D2C4 PRG:12C4 85 42 + STA $43 ; CPU:$D2C6 PRG:12C6 85 43 ; --------------------------------------------------------------------------- ; Label_D2C8 @@ -5884,18 +5884,18 @@ SubCD2C2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D2C8: - LDX $09 ; D2C8: A6 09 - BEQ SubCD2EE ; D2CA: F0 22 - JSR SubCD48B ; D2CC: 20 8B D4 - LDA $4F ; D2CF: A5 4F - ORA $76 ; D2D1: 05 76 - BNE SubCD2EE ; D2D3: D0 19 - LDA $49 ; D2D5: A5 49 - BNE Label_D2E0 ; D2D7: D0 07 - JSR SubCD3B7 ; D2D9: 20 B7 D3 - LDA $81 ; D2DC: A5 81 - BNE SubCD2EE ; D2DE: D0 0E +SubCD2C2_OnNonzero: + LDX title_input_mode ; CPU:$D2C8 PRG:12C8 A6 09 + BEQ SubCD2EE ; CPU:$D2CA PRG:12CA F0 22 + JSR SubCD48B ; CPU:$D2CC PRG:12CC 20 8B D4 + LDA $4F ; CPU:$D2CF PRG:12CF A5 4F + ORA $76 ; CPU:$D2D1 PRG:12D1 05 76 + BNE SubCD2EE ; CPU:$D2D3 PRG:12D3 D0 19 + LDA $49 ; CPU:$D2D5 PRG:12D5 A5 49 + BNE SubCD2C2_Loop ; CPU:$D2D7 PRG:12D7 D0 07 + JSR SubCD3B7 ; CPU:$D2D9 PRG:12D9 20 B7 D3 + LDA $81 ; CPU:$D2DC PRG:12DC A5 81 + BNE SubCD2EE ; CPU:$D2DE PRG:12DE D0 0E ; --------------------------------------------------------------------------- ; Label_D2E0 @@ -5912,13 +5912,13 @@ Label_D2C8: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D2E0: - JSR WaitForFrame ; D2E0: 20 F3 C8 - JSR SubCD65A ; D2E3: 20 5A D6 - LDA $55 ; D2E6: A5 55 - BNE SubCD2EE ; D2E8: D0 04 - DEC $09 ; D2EA: C6 09 - BNE Label_D2C8 ; D2EC: D0 DA +SubCD2C2_Loop: + JSR WaitForFrame ; CPU:$D2E0 PRG:12E0 20 F3 C8 + JSR SubCD65A ; CPU:$D2E3 PRG:12E3 20 5A D6 + LDA $55 ; CPU:$D2E6 PRG:12E6 A5 55 + BNE SubCD2EE ; CPU:$D2E8 PRG:12E8 D0 04 + DEC title_input_mode ; CPU:$D2EA PRG:12EA C6 09 + BNE SubCD2C2_OnNonzero ; CPU:$D2EC PRG:12EC D0 DA ; --------------------------------------------------------------------------- ; SubCD2EE @@ -5936,10 +5936,10 @@ Label_D2E0: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD2EE: - LDY #$8A ; D2EE: A0 8A - LDX #$D0 ; D2F0: A2 D0 - JSR WaitForFramePreservingY ; D2F2: 20 81 C8 - JMP RestorePpuCtrlShadow ; D2F5: 4C B5 C8 + LDY #$8A ; CPU:$D2EE PRG:12EE A0 8A + LDX #$D0 ; CPU:$D2F0 PRG:12F0 A2 D0 + JSR WaitForFramePreservingY ; CPU:$D2F2 PRG:12F2 20 81 C8 + JMP RestorePpuCtrlShadow ; CPU:$D2F5 PRG:12F5 4C B5 C8 ; --------------------------------------------------------------------------- ; SubCD2F8 @@ -5957,10 +5957,10 @@ SubCD2EE: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD2F8: - LDA $0700,Y ; D2F8: B9 00 07 - CMP #$01 ; D2FB: C9 01 - BNE Label_D301 ; D2FD: D0 02 - LDA #$00 ; D2FF: A9 00 + LDA $0700,Y ; CPU:$D2F8 PRG:12F8 B9 00 07 + CMP #$01 ; CPU:$D2FB PRG:12FB C9 01 + BNE SubCD2F8_Loop ; CPU:$D2FD PRG:12FD D0 02 + LDA #$00 ; CPU:$D2FF PRG:12FF A9 00 ; --------------------------------------------------------------------------- ; Label_D301 @@ -5977,9 +5977,9 @@ SubCD2F8: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D301: - STA $26 ; D301: 85 26 - RTS ; D303: 60 +SubCD2F8_Loop: + STA $26 ; CPU:$D301 PRG:1301 85 26 + RTS ; CPU:$D303 PRG:1303 60 .incbin "prg.bin", $1304, $00B3 ; D304-D3B6: unclassified/data ; --------------------------------------------------------------------------- @@ -5998,15 +5998,15 @@ Label_D301: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD3B7: - TXA ; D3B7: 8A - PHA ; D3B8: 48 - LDA #$00 ; D3B9: A9 00 - STA $0100 ; D3BB: 8D 00 01 - JSR SubCD65D ; D3BE: 20 5D D6 - LDA $53 ; D3C1: A5 53 - BEQ Label_D3C9 ; D3C3: F0 04 - STA $2A ; D3C5: 85 2A - BNE Label_D419 ; D3C7: D0 50 + TXA ; CPU:$D3B7 PRG:13B7 8A + PHA ; CPU:$D3B8 PRG:13B8 48 + LDA #$00 ; CPU:$D3B9 PRG:13B9 A9 00 + STA $0100 ; CPU:$D3BB PRG:13BB 8D 00 01 + JSR SubCD65D ; CPU:$D3BE PRG:13BE 20 5D D6 + LDA $53 ; CPU:$D3C1 PRG:13C1 A5 53 + BEQ SubCD3B7_Loop ; CPU:$D3C3 PRG:13C3 F0 04 + STA $2A ; CPU:$D3C5 PRG:13C5 85 2A + BNE SubCD3B7_Loop2 ; CPU:$D3C7 PRG:13C7 D0 50 ; --------------------------------------------------------------------------- ; Label_D3C9 @@ -6023,44 +6023,44 @@ SubCD3B7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D3C9: - LDA $2A ; D3C9: A5 2A - BEQ Label_D419 ; D3CB: F0 4C - LDX $7A ; D3CD: A6 7A - LDA $42,X ; D3CF: B5 42 - CMP #$03 ; D3D1: C9 03 - BCS Label_D41C ; D3D3: B0 47 - LDY #$8A ; D3D5: A0 8A - LDX #$D0 ; D3D7: A2 D0 - JSR WaitForFramePreservingY ; D3D9: 20 81 C8 - JSR RestorePpuCtrlShadow ; D3DC: 20 B5 C8 - LDA $45 ; D3DF: A5 45 - PHA ; D3E1: 48 - CLC ; D3E2: 18 - ADC #$80 ; D3E3: 69 80 - STA $45 ; D3E5: 85 45 - LDA #$01 ; D3E7: A9 01 - STA $4D ; D3E9: 85 4D - STA $0100 ; D3EB: 8D 00 01 - LDA #$00 ; D3EE: A9 00 - STA $4E ; D3F0: 85 4E - STA $3C ; D3F2: 85 3C - STA $39 ; D3F4: 85 39 - STA $42 ; D3F6: 85 42 - STA $43 ; D3F8: 85 43 - JSR SubCD48B ; D3FA: 20 8B D4 - JSR SubCD48B ; D3FD: 20 8B D4 - JSR SpriteOffsetForController ; D400: 20 94 C8 - LDA $3B ; D403: A5 3B - STA $0200,X ; D405: 9D 00 02 - LDA $38 ; D408: A5 38 - STA $0203,X ; D40A: 9D 03 02 - LDA #$FF ; D40D: A9 FF - STA $0208 ; D40F: 8D 08 02 - PLA ; D412: 68 - STA $45 ; D413: 85 45 - LDA #$01 ; D415: A9 01 - STA $81 ; D417: 85 81 +SubCD3B7_Loop: + LDA $2A ; CPU:$D3C9 PRG:13C9 A5 2A + BEQ SubCD3B7_Loop2 ; CPU:$D3CB PRG:13CB F0 4C + LDX active_controller_index ; CPU:$D3CD PRG:13CD A6 7A + LDA $42,X ; CPU:$D3CF PRG:13CF B5 42 + CMP #$03 ; CPU:$D3D1 PRG:13D1 C9 03 + BCS SubCD3B7_Loop3 ; CPU:$D3D3 PRG:13D3 B0 47 + LDY #$8A ; CPU:$D3D5 PRG:13D5 A0 8A + LDX #$D0 ; CPU:$D3D7 PRG:13D7 A2 D0 + JSR WaitForFramePreservingY ; CPU:$D3D9 PRG:13D9 20 81 C8 + JSR RestorePpuCtrlShadow ; CPU:$D3DC PRG:13DC 20 B5 C8 + LDA aim_adjust_direction ; CPU:$D3DF PRG:13DF A5 45 + PHA ; CPU:$D3E1 PRG:13E1 48 + CLC ; CPU:$D3E2 PRG:13E2 18 + ADC #$80 ; CPU:$D3E3 PRG:13E3 69 80 + STA aim_adjust_direction ; CPU:$D3E5 PRG:13E5 85 45 + LDA #$01 ; CPU:$D3E7 PRG:13E7 A9 01 + STA $4D ; CPU:$D3E9 PRG:13E9 85 4D + STA $0100 ; CPU:$D3EB PRG:13EB 8D 00 01 + LDA #$00 ; CPU:$D3EE PRG:13EE A9 00 + STA $4E ; CPU:$D3F0 PRG:13F0 85 4E + STA $3C ; CPU:$D3F2 PRG:13F2 85 3C + STA $39 ; CPU:$D3F4 PRG:13F4 85 39 + STA $42 ; CPU:$D3F6 PRG:13F6 85 42 + STA $43 ; CPU:$D3F8 PRG:13F8 85 43 + JSR SubCD48B ; CPU:$D3FA PRG:13FA 20 8B D4 + JSR SubCD48B ; CPU:$D3FD PRG:13FD 20 8B D4 + JSR SpriteOffsetForController ; CPU:$D400 PRG:1400 20 94 C8 + LDA $3B ; CPU:$D403 PRG:1403 A5 3B + STA $0200,X ; CPU:$D405 PRG:1405 9D 00 02 + LDA $38 ; CPU:$D408 PRG:1408 A5 38 + STA $0203,X ; CPU:$D40A PRG:140A 9D 03 02 + LDA #$FF ; CPU:$D40D PRG:140D A9 FF + STA $0208 ; CPU:$D40F PRG:140F 8D 08 02 + PLA ; CPU:$D412 PRG:1412 68 + STA aim_adjust_direction ; CPU:$D413 PRG:1413 85 45 + LDA #$01 ; CPU:$D415 PRG:1415 A9 01 + STA $81 ; CPU:$D417 PRG:1417 85 81 ; --------------------------------------------------------------------------- ; Label_D419 @@ -6077,10 +6077,10 @@ Label_D3C9: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D419: - PLA ; D419: 68 - TAX ; D41A: AA - RTS ; D41B: 60 +SubCD3B7_Loop2: + PLA ; CPU:$D419 PRG:1419 68 + TAX ; CPU:$D41A PRG:141A AA + RTS ; CPU:$D41B PRG:141B 60 ; --------------------------------------------------------------------------- ; Label_D41C @@ -6097,10 +6097,10 @@ Label_D419: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D41C: - LDA #$00 ; D41C: A9 00 - STA $2A ; D41E: 85 2A - BEQ Label_D419 ; D420: F0 F7 +SubCD3B7_Loop3: + LDA #$00 ; CPU:$D41C PRG:141C A9 00 + STA $2A ; CPU:$D41E PRG:141E 85 2A + BEQ SubCD3B7_Loop2 ; CPU:$D420 PRG:1420 F0 F7 ; --------------------------------------------------------------------------- ; SubCD422 @@ -6118,37 +6118,37 @@ Label_D41C: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD422: - LDA #$00 ; D422: A9 00 + LDA #$00 ; CPU:$D422 PRG:1422 A9 00 ; Overlapping instruction idiom: ; D424: BIT $40A9 (2C A9 40) ; D425: LDA #$40 (A9 40) Label_D424: - .byte $2C ; D424: 2C BIT absolute opcode + .byte $2C ; D424: 2C BIT absolute opcode ; CPU:$D424 PRG:1424 2C SubCD425: - .byte $A9,$40 ; D425-D426: A9 40 LDA #$40 - CLC ; D427: 18 - ADC $45 ; D428: 65 45 - TAY ; D42A: A8 - LDA #$00 ; D42B: A9 00 - STA $25 ; D42D: 85 25 - STA $26 ; D42F: 85 26 - STA $27 ; D431: 85 27 - LDA $0600,Y ; D433: B9 00 06 - STA $28 ; D436: 85 28 - LDA $0700,Y ; D438: B9 00 07 - STA $29 ; D43B: 85 29 - LDA $49 ; D43D: A5 49 - BNE Label_D482 ; D43F: D0 41 - LDA $29 ; D441: A5 29 - PHA ; D443: 48 - BPL SubCD453 ; D444: 10 0D - LDA #$00 ; D446: A9 00 - SEC ; D448: 38 - SBC $28 ; D449: E5 28 - STA $28 ; D44B: 85 28 - LDA #$00 ; D44D: A9 00 - SBC $29 ; D44F: E5 29 - STA $29 ; D451: 85 29 + .byte $A9,$40 ; D425-D426: A9 40 LDA #$40 ; CPU:$D425 PRG:1425 A9 40 + CLC ; CPU:$D427 PRG:1427 18 + ADC aim_adjust_direction ; CPU:$D428 PRG:1428 65 45 + TAY ; CPU:$D42A PRG:142A A8 + LDA #$00 ; CPU:$D42B PRG:142B A9 00 + STA $25 ; CPU:$D42D PRG:142D 85 25 + STA $26 ; CPU:$D42F PRG:142F 85 26 + STA $27 ; CPU:$D431 PRG:1431 85 27 + LDA $0600,Y ; CPU:$D433 PRG:1433 B9 00 06 + STA $28 ; CPU:$D436 PRG:1436 85 28 + LDA $0700,Y ; CPU:$D438 PRG:1438 B9 00 07 + STA $29 ; CPU:$D43B PRG:143B 85 29 + LDA $49 ; CPU:$D43D PRG:143D A5 49 + BNE SubCD453_Loop4 ; CPU:$D43F PRG:143F D0 41 + LDA $29 ; CPU:$D441 PRG:1441 A5 29 + PHA ; CPU:$D443 PRG:1443 48 + BPL SubCD453 ; CPU:$D444 PRG:1444 10 0D + LDA #$00 ; CPU:$D446 PRG:1446 A9 00 + SEC ; CPU:$D448 PRG:1448 38 + SBC $28 ; CPU:$D449 PRG:1449 E5 28 + STA $28 ; CPU:$D44B PRG:144B 85 28 + LDA #$00 ; CPU:$D44D PRG:144D A9 00 + SBC $29 ; CPU:$D44F PRG:144F E5 29 + STA $29 ; CPU:$D451 PRG:1451 85 29 ; --------------------------------------------------------------------------- ; SubCD453 @@ -6166,19 +6166,19 @@ SubCD425: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD453: - LDA $27 ; D453: A5 27 - SEC ; D455: 38 - SBC $4E ; D456: E5 4E - STA $27 ; D458: 85 27 - LDA $28 ; D45A: A5 28 - SBC $4D ; D45C: E5 4D - STA $28 ; D45E: 85 28 - LDA $29 ; D460: A5 29 - SBC #$00 ; D462: E9 00 - STA $29 ; D464: 85 29 - BMI Label_D46D ; D466: 30 05 - INC $25 ; D468: E6 25 - JMP SubCD453 ; D46A: 4C 53 D4 + LDA $27 ; CPU:$D453 PRG:1453 A5 27 + SEC ; CPU:$D455 PRG:1455 38 + SBC $4E ; CPU:$D456 PRG:1456 E5 4E + STA $27 ; CPU:$D458 PRG:1458 85 27 + LDA $28 ; CPU:$D45A PRG:145A A5 28 + SBC $4D ; CPU:$D45C PRG:145C E5 4D + STA $28 ; CPU:$D45E PRG:145E 85 28 + LDA $29 ; CPU:$D460 PRG:1460 A5 29 + SBC #$00 ; CPU:$D462 PRG:1462 E9 00 + STA $29 ; CPU:$D464 PRG:1464 85 29 + BMI SubCD453_Loop ; CPU:$D466 PRG:1466 30 05 + INC $25 ; CPU:$D468 PRG:1468 E6 25 + JMP SubCD453 ; CPU:$D46A PRG:146A 4C 53 D4 ; --------------------------------------------------------------------------- ; Label_D46D @@ -6195,10 +6195,10 @@ SubCD453: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D46D: - LDA $54 ; D46D: A5 54 - BEQ Label_D473 ; D46F: F0 02 - LSR $25 ; D471: 46 25 +SubCD453_Loop: + LDA $54 ; CPU:$D46D PRG:146D A5 54 + BEQ SubCD453_Loop2 ; CPU:$D46F PRG:146F F0 02 + LSR $25 ; CPU:$D471 PRG:1471 46 25 ; --------------------------------------------------------------------------- ; Label_D473 @@ -6215,15 +6215,15 @@ Label_D46D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D473: - PLA ; D473: 68 - BPL Label_D481 ; D474: 10 0B - LDA #$00 ; D476: A9 00 - SEC ; D478: 38 - SBC $25 ; D479: E5 25 - STA $25 ; D47B: 85 25 - LDA #$FF ; D47D: A9 FF - STA $26 ; D47F: 85 26 +SubCD453_Loop2: + PLA ; CPU:$D473 PRG:1473 68 + BPL SubCD453_Loop3 ; CPU:$D474 PRG:1474 10 0B + LDA #$00 ; CPU:$D476 PRG:1476 A9 00 + SEC ; CPU:$D478 PRG:1478 38 + SBC $25 ; CPU:$D479 PRG:1479 E5 25 + STA $25 ; CPU:$D47B PRG:147B 85 25 + LDA #$FF ; CPU:$D47D PRG:147D A9 FF + STA $26 ; CPU:$D47F PRG:147F 85 26 ; --------------------------------------------------------------------------- ; Label_D481 @@ -6240,8 +6240,8 @@ Label_D473: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D481: - RTS ; D481: 60 +SubCD453_Loop3: + RTS ; CPU:$D481 PRG:1481 60 ; --------------------------------------------------------------------------- ; Label_D482 @@ -6258,12 +6258,12 @@ Label_D481: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D482: - LDA $28 ; D482: A5 28 - STA $25 ; D484: 85 25 - LDA $29 ; D486: A5 29 - STA $26 ; D488: 85 26 - RTS ; D48A: 60 +SubCD453_Loop4: + LDA $28 ; CPU:$D482 PRG:1482 A5 28 + STA $25 ; CPU:$D484 PRG:1484 85 25 + LDA $29 ; CPU:$D486 PRG:1486 A5 29 + STA $26 ; CPU:$D488 PRG:1488 85 26 + RTS ; CPU:$D48A PRG:148A 60 ; --------------------------------------------------------------------------- ; SubCD48B @@ -6281,28 +6281,28 @@ Label_D482: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD48B: - JSR SubCD422 ; D48B: 20 22 D4 - LDA $3C ; D48E: A5 3C - CLC ; D490: 18 - ADC $25 ; D491: 65 25 - STA $3C ; D493: 85 3C - LDA $3B ; D495: A5 3B - ADC $26 ; D497: 65 26 - STA $3B ; D499: 85 3B - JSR SubCD425 ; D49B: 20 25 D4 - LDA $39 ; D49E: A5 39 - CLC ; D4A0: 18 - ADC $25 ; D4A1: 65 25 - STA $39 ; D4A3: 85 39 - LDA $38 ; D4A5: A5 38 - ADC $26 ; D4A7: 65 26 - STA $38 ; D4A9: 85 38 - LDA $49 ; D4AB: A5 49 - BNE Label_D4F0 ; D4AD: D0 41 - LDA $0100 ; D4AF: AD 00 01 - BNE Label_D4B9 ; D4B2: D0 05 - INC $89 ; D4B4: E6 89 - JMP SubCD4BB ; D4B6: 4C BB D4 + JSR SubCD422 ; CPU:$D48B PRG:148B 20 22 D4 + LDA $3C ; CPU:$D48E PRG:148E A5 3C + CLC ; CPU:$D490 PRG:1490 18 + ADC $25 ; CPU:$D491 PRG:1491 65 25 + STA $3C ; CPU:$D493 PRG:1493 85 3C + LDA $3B ; CPU:$D495 PRG:1495 A5 3B + ADC $26 ; CPU:$D497 PRG:1497 65 26 + STA $3B ; CPU:$D499 PRG:1499 85 3B + JSR SubCD425 ; CPU:$D49B PRG:149B 20 25 D4 + LDA $39 ; CPU:$D49E PRG:149E A5 39 + CLC ; CPU:$D4A0 PRG:14A0 18 + ADC $25 ; CPU:$D4A1 PRG:14A1 65 25 + STA $39 ; CPU:$D4A3 PRG:14A3 85 39 + LDA $38 ; CPU:$D4A5 PRG:14A5 A5 38 + ADC $26 ; CPU:$D4A7 PRG:14A7 65 26 + STA $38 ; CPU:$D4A9 PRG:14A9 85 38 + LDA $49 ; CPU:$D4AB PRG:14AB A5 49 + BNE SubCD4BB_Loop7 ; CPU:$D4AD PRG:14AD D0 41 + LDA $0100 ; CPU:$D4AF PRG:14AF AD 00 01 + BNE SubCD48B_Loop ; CPU:$D4B2 PRG:14B2 D0 05 + INC $89 ; CPU:$D4B4 PRG:14B4 E6 89 + JMP SubCD4BB ; CPU:$D4B6 PRG:14B6 4C BB D4 ; --------------------------------------------------------------------------- ; Label_D4B9 @@ -6319,8 +6319,8 @@ SubCD48B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D4B9: - DEC $89 ; D4B9: C6 89 +SubCD48B_Loop: + DEC $89 ; CPU:$D4B9 PRG:14B9 C6 89 ; --------------------------------------------------------------------------- ; SubCD4BB @@ -6338,10 +6338,10 @@ Label_D4B9: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD4BB: - LDA $89 ; D4BB: A5 89 - LDY $54 ; D4BD: A4 54 - BEQ Label_D4C2 ; D4BF: F0 01 - LSR A ; D4C1: 4A + LDA $89 ; CPU:$D4BB PRG:14BB A5 89 + LDY $54 ; CPU:$D4BD PRG:14BD A4 54 + BEQ SubCD4BB_Loop ; CPU:$D4BF PRG:14BF F0 01 + LSR A ; CPU:$D4C1 PRG:14C1 4A ; --------------------------------------------------------------------------- ; Label_D4C2 @@ -6358,15 +6358,15 @@ SubCD4BB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D4C2: - STA $8A ; D4C2: 85 8A - TAY ; D4C4: A8 - CMP #$64 ; D4C5: C9 64 - BCS Label_D4DF ; D4C7: B0 16 - CMP #$1D ; D4C9: C9 1D - BCC Label_D4D1 ; D4CB: 90 04 - LDA #$9D ; D4CD: A9 9D - BNE Label_D4D6 ; D4CF: D0 05 +SubCD4BB_Loop: + STA $8A ; CPU:$D4C2 PRG:14C2 85 8A + TAY ; CPU:$D4C4 PRG:14C4 A8 + CMP #$64 ; CPU:$D4C5 PRG:14C5 C9 64 + BCS SubCD4BB_Loop4 ; CPU:$D4C7 PRG:14C7 B0 16 + CMP #$1D ; CPU:$D4C9 PRG:14C9 C9 1D + BCC SubCD4BB_Loop2 ; CPU:$D4CB PRG:14CB 90 04 + LDA #$9D ; CPU:$D4CD PRG:14CD A9 9D + BNE SubCD4BB_Loop3 ; CPU:$D4CF PRG:14CF D0 05 ; --------------------------------------------------------------------------- ; Label_D4D1 @@ -6383,10 +6383,10 @@ Label_D4C2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D4D1: - LDA #$BA ; D4D1: A9 BA - SEC ; D4D3: 38 - SBC $8A ; D4D4: E5 8A +SubCD4BB_Loop2: + LDA #$BA ; CPU:$D4D1 PRG:14D1 A9 BA + SEC ; CPU:$D4D3 PRG:14D3 38 + SBC $8A ; CPU:$D4D4 PRG:14D4 E5 8A ; --------------------------------------------------------------------------- ; Label_D4D6 @@ -6403,12 +6403,12 @@ Label_D4D1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D4D6: - SEC ; D4D6: 38 - SBC $42 ; D4D7: E5 42 - SBC $42 ; D4D9: E5 42 - CMP #$60 ; D4DB: C9 60 - BCS Label_D4E1 ; D4DD: B0 02 +SubCD4BB_Loop3: + SEC ; CPU:$D4D6 PRG:14D6 38 + SBC $42 ; CPU:$D4D7 PRG:14D7 E5 42 + SBC $42 ; CPU:$D4D9 PRG:14D9 E5 42 + CMP #$60 ; CPU:$D4DB PRG:14DB C9 60 + BCS SubCD4BB_Loop5 ; CPU:$D4DD PRG:14DD B0 02 ; --------------------------------------------------------------------------- ; Label_D4DF @@ -6425,8 +6425,8 @@ Label_D4D6: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D4DF: - LDA #$FF ; D4DF: A9 FF +SubCD4BB_Loop4: + LDA #$FF ; CPU:$D4DF PRG:14DF A9 FF ; --------------------------------------------------------------------------- ; Label_D4E1 @@ -6443,13 +6443,13 @@ Label_D4DF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D4E1: - STA $0280 ; D4E1: 8D 80 02 - LDY #$88 ; D4E4: A0 88 - LDA $8A ; D4E6: A5 8A - CMP #$0E ; D4E8: C9 0E - BCC Label_D4ED ; D4EA: 90 01 - INY ; D4EC: C8 +SubCD4BB_Loop5: + STA $0280 ; CPU:$D4E1 PRG:14E1 8D 80 02 + LDY #$88 ; CPU:$D4E4 PRG:14E4 A0 88 + LDA $8A ; CPU:$D4E6 PRG:14E6 A5 8A + CMP #$0E ; CPU:$D4E8 PRG:14E8 C9 0E + BCC SubCD4BB_Loop6 ; CPU:$D4EA PRG:14EA 90 01 + INY ; CPU:$D4EC PRG:14EC C8 ; --------------------------------------------------------------------------- ; Label_D4ED @@ -6466,8 +6466,8 @@ Label_D4E1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D4ED: - STY $0281 ; D4ED: 8C 81 02 +SubCD4BB_Loop6: + STY $0281 ; CPU:$D4ED PRG:14ED 8C 81 02 ; --------------------------------------------------------------------------- ; Label_D4F0 @@ -6484,8 +6484,8 @@ Label_D4ED: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D4F0: - RTS ; D4F0: 60 +SubCD4BB_Loop7: + RTS ; CPU:$D4F0 PRG:14F0 60 ; --------------------------------------------------------------------------- ; SubCD4F1 @@ -6503,7 +6503,7 @@ Label_D4F0: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD4F1: - INY ; D4F1: C8 + INY ; CPU:$D4F1 PRG:14F1 C8 ; --------------------------------------------------------------------------- ; SubCD4F2 @@ -6521,11 +6521,11 @@ SubCD4F1: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD4F2: - INX ; D4F2: E8 - INX ; D4F3: E8 - INX ; D4F4: E8 - INX ; D4F5: E8 - RTS ; D4F6: 60 + INX ; CPU:$D4F2 PRG:14F2 E8 + INX ; CPU:$D4F3 PRG:14F3 E8 + INX ; CPU:$D4F4 PRG:14F4 E8 + INX ; CPU:$D4F5 PRG:14F5 E8 + RTS ; CPU:$D4F6 PRG:14F6 60 ; --------------------------------------------------------------------------- ; SubCD4F7 @@ -6543,14 +6543,14 @@ SubCD4F2: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD4F7: - LDA $43 ; D4F7: A5 43 - CLC ; D4F9: 18 - ADC $19 ; D4FA: 65 19 - STA $43 ; D4FC: 85 43 - LDA $42 ; D4FE: A5 42 - ADC $1C ; D500: 65 1C - STA $42 ; D502: 85 42 - RTS ; D504: 60 + LDA $43 ; CPU:$D4F7 PRG:14F7 A5 43 + CLC ; CPU:$D4F9 PRG:14F9 18 + ADC $19 ; CPU:$D4FA PRG:14FA 65 19 + STA $43 ; CPU:$D4FC PRG:14FC 85 43 + LDA $42 ; CPU:$D4FE PRG:14FE A5 42 + ADC $1C ; CPU:$D500 PRG:1500 65 1C + STA $42 ; CPU:$D502 PRG:1502 85 42 + RTS ; CPU:$D504 PRG:1504 60 ; --------------------------------------------------------------------------- ; SubCD505 @@ -6568,13 +6568,13 @@ SubCD4F7: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD505: - LDX $5F ; D505: A6 5F - BEQ Label_D514 ; D507: F0 0B - STA $5E ; D509: 85 5E - JSR SubCF906 ; D50B: 20 06 F9 - LDA $61 ; D50E: A5 61 - BNE Label_D514 ; D510: D0 02 - LDA #$01 ; D512: A9 01 + LDX $5F ; CPU:$D505 PRG:1505 A6 5F + BEQ SubCD505_Loop ; CPU:$D507 PRG:1507 F0 0B + STA $5E ; CPU:$D509 PRG:1509 85 5E + JSR SubCF906 ; CPU:$D50B PRG:150B 20 06 F9 + LDA $61 ; CPU:$D50E PRG:150E A5 61 + BNE SubCD505_Loop ; CPU:$D510 PRG:1510 D0 02 + LDA #$01 ; CPU:$D512 PRG:1512 A9 01 ; --------------------------------------------------------------------------- ; Label_D514 @@ -6591,8 +6591,8 @@ SubCD505: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D514: - RTS ; D514: 60 +SubCD505_Loop: + RTS ; CPU:$D514 PRG:1514 60 ; --------------------------------------------------------------------------- ; SubCD515 @@ -6610,23 +6610,23 @@ Label_D514: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD515: - LDA $09 ; D515: A5 09 - STA $95 ; D517: 85 95 - LDA $45 ; D519: A5 45 - STA $94 ; D51B: 85 94 - LDA $95 ; D51D: A5 95 - STA $5E ; D51F: 85 5E - LDA $94 ; D521: A5 94 - JSR SubCFC24 ; D523: 20 24 FC - STA $90 ; D526: 85 90 - LDA $94 ; D528: A5 94 - JSR SubCFC27 ; D52A: 20 27 FC - STA $91 ; D52D: 85 91 - LDA #$80 ; D52F: A9 80 - STA $92 ; D531: 85 92 - STA $93 ; D533: 85 93 - STA $39 ; D535: 85 39 - STA $3C ; D537: 85 3C + LDA title_input_mode ; CPU:$D515 PRG:1515 A5 09 + STA $95 ; CPU:$D517 PRG:1517 85 95 + LDA aim_adjust_direction ; CPU:$D519 PRG:1519 A5 45 + STA $94 ; CPU:$D51B PRG:151B 85 94 + LDA $95 ; CPU:$D51D PRG:151D A5 95 + STA $5E ; CPU:$D51F PRG:151F 85 5E + LDA $94 ; CPU:$D521 PRG:1521 A5 94 + JSR SubCFC24 ; CPU:$D523 PRG:1523 20 24 FC + STA $90 ; CPU:$D526 PRG:1526 85 90 + LDA $94 ; CPU:$D528 PRG:1528 A5 94 + JSR SubCFC27 ; CPU:$D52A PRG:152A 20 27 FC + STA $91 ; CPU:$D52D PRG:152D 85 91 + LDA #$80 ; CPU:$D52F PRG:152F A9 80 + STA $92 ; CPU:$D531 PRG:1531 85 92 + STA $93 ; CPU:$D533 PRG:1533 85 93 + STA $39 ; CPU:$D535 PRG:1535 85 39 + STA $3C ; CPU:$D537 PRG:1537 85 3C ; --------------------------------------------------------------------------- ; Label_D539 @@ -6643,18 +6643,18 @@ SubCD515: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D539: - JSR SubCFD67 ; D539: 20 67 FD - LDA $76 ; D53C: A5 76 - BEQ Label_D551 ; D53E: F0 11 - LDA #$FF ; D540: A9 FF - STA $0280 ; D542: 8D 80 02 - LDA $95 ; D545: A5 95 - CMP #$3C ; D547: C9 3C - BCC Label_D562 ; D549: 90 17 - LDA #$00 ; D54B: A9 00 - STA $76 ; D54D: 85 76 - BEQ Label_D539 ; D54F: F0 E8 +SubCD515_OnZero: + JSR SubCFD67 ; CPU:$D539 PRG:1539 20 67 FD + LDA $76 ; CPU:$D53C PRG:153C A5 76 + BEQ SubCD515_Loop ; CPU:$D53E PRG:153E F0 11 + LDA #$FF ; CPU:$D540 PRG:1540 A9 FF + STA $0280 ; CPU:$D542 PRG:1542 8D 80 02 + LDA $95 ; CPU:$D545 PRG:1545 A5 95 + CMP #$3C ; CPU:$D547 PRG:1547 C9 3C + BCC SubCD515_Loop2 ; CPU:$D549 PRG:1549 90 17 + LDA #$00 ; CPU:$D54B PRG:154B A9 00 + STA $76 ; CPU:$D54D PRG:154D 85 76 + BEQ SubCD515_OnZero ; CPU:$D54F PRG:154F F0 E8 ; --------------------------------------------------------------------------- ; Label_D551 @@ -6671,15 +6671,15 @@ Label_D539: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D551: - LDA $4F ; D551: A5 4F - ORA $81 ; D553: 05 81 - BNE Label_D562 ; D555: D0 0B - LDY #$02 ; D557: A0 02 - JSR SubCC8F5 ; D559: 20 F5 C8 - LDA $95 ; D55C: A5 95 - CMP #$05 ; D55E: C9 05 - BCS Label_D539 ; D560: B0 D7 +SubCD515_Loop: + LDA $4F ; CPU:$D551 PRG:1551 A5 4F + ORA $81 ; CPU:$D553 PRG:1553 05 81 + BNE SubCD515_Loop2 ; CPU:$D555 PRG:1555 D0 0B + LDY #$02 ; CPU:$D557 PRG:1557 A0 02 + JSR SubCC8F5 ; CPU:$D559 PRG:1559 20 F5 C8 + LDA $95 ; CPU:$D55C PRG:155C A5 95 + CMP #$05 ; CPU:$D55E PRG:155E C9 05 + BCS SubCD515_OnZero ; CPU:$D560 PRG:1560 B0 D7 ; --------------------------------------------------------------------------- ; Label_D562 @@ -6696,8 +6696,8 @@ Label_D551: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D562: - RTS ; D562: 60 +SubCD515_Loop2: + RTS ; CPU:$D562 PRG:1562 60 .incbin "prg.bin", $1563, $00F7 ; D563-D659: unclassified/data ; --------------------------------------------------------------------------- @@ -6716,7 +6716,7 @@ Label_D562: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD65A: - JSR SubCD6FC ; D65A: 20 FC D6 + JSR SubCD6FC ; CPU:$D65A PRG:165A 20 FC D6 ; --------------------------------------------------------------------------- ; SubCD65D @@ -6734,9 +6734,9 @@ SubCD65A: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD65D: - LDY #$00 ; D65D: A0 00 - STY $52 ; D65F: 84 52 - STY $53 ; D661: 84 53 + LDY #$00 ; CPU:$D65D PRG:165D A0 00 + STY $52 ; CPU:$D65F PRG:165F 84 52 + STY $53 ; CPU:$D661 PRG:1661 84 53 ; --------------------------------------------------------------------------- ; SubCD663 @@ -6754,36 +6754,36 @@ SubCD65D: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD663: - LDA $029D,Y ; D663: B9 9D 02 - CMP #$8F ; D666: C9 8F - BEQ Label_D6E3 ; D668: F0 79 - CMP #$E0 ; D66A: C9 E0 - BCC Label_D6E9 ; D66C: 90 7B - LDA $38 ; D66E: A5 38 - SEC ; D670: 38 - SBC $029F,Y ; D671: F9 9F 02 - CMP #$08 ; D674: C9 08 - BCS Label_D6E9 ; D676: B0 71 - STA $50 ; D678: 85 50 - LDA $3B ; D67A: A5 3B - SEC ; D67C: 38 - SBC $029C,Y ; D67D: F9 9C 02 - CMP #$08 ; D680: C9 08 - BCS Label_D6E9 ; D682: B0 65 - STA $51 ; D684: 85 51 - LDA $029D,Y ; D686: B9 9D 02 - SEC ; D689: 38 - SBC #$E0 ; D68A: E9 E0 - CMP #$15 ; D68C: C9 15 - BCS Label_D6A0 ; D68E: B0 10 - ASL A ; D690: 0A - ASL A ; D691: 0A - ASL A ; D692: 0A - ADC #$00 ; D693: 69 00 - STA $23 ; D695: 85 23 - LDX #$05 ; D697: A2 05 - BCC Label_D69C ; D699: 90 01 - INX ; D69B: E8 + LDA $029D,Y ; CPU:$D663 PRG:1663 B9 9D 02 + CMP #$8F ; CPU:$D666 PRG:1666 C9 8F + BEQ SubCD663_OnZero ; CPU:$D668 PRG:1668 F0 79 + CMP #$E0 ; CPU:$D66A PRG:166A C9 E0 + BCC SubCD663_Loop9 ; CPU:$D66C PRG:166C 90 7B + LDA $38 ; CPU:$D66E PRG:166E A5 38 + SEC ; CPU:$D670 PRG:1670 38 + SBC $029F,Y ; CPU:$D671 PRG:1671 F9 9F 02 + CMP #$08 ; CPU:$D674 PRG:1674 C9 08 + BCS SubCD663_Loop9 ; CPU:$D676 PRG:1676 B0 71 + STA $50 ; CPU:$D678 PRG:1678 85 50 + LDA $3B ; CPU:$D67A PRG:167A A5 3B + SEC ; CPU:$D67C PRG:167C 38 + SBC $029C,Y ; CPU:$D67D PRG:167D F9 9C 02 + CMP #$08 ; CPU:$D680 PRG:1680 C9 08 + BCS SubCD663_Loop9 ; CPU:$D682 PRG:1682 B0 65 + STA $51 ; CPU:$D684 PRG:1684 85 51 + LDA $029D,Y ; CPU:$D686 PRG:1686 B9 9D 02 + SEC ; CPU:$D689 PRG:1689 38 + SBC #$E0 ; CPU:$D68A PRG:168A E9 E0 + CMP #$15 ; CPU:$D68C PRG:168C C9 15 + BCS SubCD663_Loop2 ; CPU:$D68E PRG:168E B0 10 + ASL A ; CPU:$D690 PRG:1690 0A + ASL A ; CPU:$D691 PRG:1691 0A + ASL A ; CPU:$D692 PRG:1692 0A + ADC #$00 ; CPU:$D693 PRG:1693 69 00 + STA $23 ; CPU:$D695 PRG:1695 85 23 + LDX #$05 ; CPU:$D697 PRG:1697 A2 05 + BCC SubCD663_Loop ; CPU:$D699 PRG:1699 90 01 + INX ; CPU:$D69B PRG:169B E8 ; --------------------------------------------------------------------------- ; Label_D69C @@ -6800,9 +6800,9 @@ SubCD663: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D69C: - STX $24 ; D69C: 86 24 - BNE Label_D6B0 ; D69E: D0 10 +SubCD663_Loop: + STX $24 ; CPU:$D69C PRG:169C 86 24 + BNE SubCD663_Loop4 ; CPU:$D69E PRG:169E D0 10 ; --------------------------------------------------------------------------- ; Label_D6A0 @@ -6819,16 +6819,16 @@ Label_D69C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D6A0: - SBC #$15 ; D6A0: E9 15 - ASL A ; D6A2: 0A - ASL A ; D6A3: 0A - ASL A ; D6A4: 0A - ADC #$98 ; D6A5: 69 98 - STA $23 ; D6A7: 85 23 - LDX #$05 ; D6A9: A2 05 - BCC Label_D6AE ; D6AB: 90 01 - INX ; D6AD: E8 +SubCD663_Loop2: + SBC #$15 ; CPU:$D6A0 PRG:16A0 E9 15 + ASL A ; CPU:$D6A2 PRG:16A2 0A + ASL A ; CPU:$D6A3 PRG:16A3 0A + ASL A ; CPU:$D6A4 PRG:16A4 0A + ADC #$98 ; CPU:$D6A5 PRG:16A5 69 98 + STA $23 ; CPU:$D6A7 PRG:16A7 85 23 + LDX #$05 ; CPU:$D6A9 PRG:16A9 A2 05 + BCC SubCD663_Loop3 ; CPU:$D6AB PRG:16AB 90 01 + INX ; CPU:$D6AD PRG:16AD E8 ; --------------------------------------------------------------------------- ; Label_D6AE @@ -6845,8 +6845,8 @@ Label_D6A0: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D6AE: - STX $24 ; D6AE: 86 24 +SubCD663_Loop3: + STX $24 ; CPU:$D6AE PRG:16AE 86 24 ; --------------------------------------------------------------------------- ; Label_D6B0 @@ -6863,15 +6863,15 @@ Label_D6AE: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D6B0: - LDA $029E,Y ; D6B0: B9 9E 02 - PHA ; D6B3: 48 - AND #$80 ; D6B4: 29 80 - BEQ Label_D6BF ; D6B6: F0 07 - LDA #$07 ; D6B8: A9 07 - SEC ; D6BA: 38 - SBC $51 ; D6BB: E5 51 - STA $51 ; D6BD: 85 51 +SubCD663_Loop4: + LDA $029E,Y ; CPU:$D6B0 PRG:16B0 B9 9E 02 + PHA ; CPU:$D6B3 PRG:16B3 48 + AND #$80 ; CPU:$D6B4 PRG:16B4 29 80 + BEQ SubCD663_Loop5 ; CPU:$D6B6 PRG:16B6 F0 07 + LDA #$07 ; CPU:$D6B8 PRG:16B8 A9 07 + SEC ; CPU:$D6BA PRG:16BA 38 + SBC $51 ; CPU:$D6BB PRG:16BB E5 51 + STA $51 ; CPU:$D6BD PRG:16BD 85 51 ; --------------------------------------------------------------------------- ; Label_D6BF @@ -6888,14 +6888,14 @@ Label_D6B0: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D6BF: - PLA ; D6BF: 68 - AND #$40 ; D6C0: 29 40 - BEQ Label_D6CB ; D6C2: F0 07 - LDA #$07 ; D6C4: A9 07 - SEC ; D6C6: 38 - SBC $50 ; D6C7: E5 50 - STA $50 ; D6C9: 85 50 +SubCD663_Loop5: + PLA ; CPU:$D6BF PRG:16BF 68 + AND #$40 ; CPU:$D6C0 PRG:16C0 29 40 + BEQ SubCD663_Loop6 ; CPU:$D6C2 PRG:16C2 F0 07 + LDA #$07 ; CPU:$D6C4 PRG:16C4 A9 07 + SEC ; CPU:$D6C6 PRG:16C6 38 + SBC $50 ; CPU:$D6C7 PRG:16C7 E5 50 + STA $50 ; CPU:$D6C9 PRG:16C9 85 50 ; --------------------------------------------------------------------------- ; Label_D6CB @@ -6912,20 +6912,20 @@ Label_D6BF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D6CB: - TYA ; D6CB: 98 - PHA ; D6CC: 48 - LDX $50 ; D6CD: A6 50 - LDY $51 ; D6CF: A4 51 - LDA ($23),Y ; D6D1: B1 23 - AND $D6F4,X ; D6D3: 3D F4 D6 - BEQ Label_D6E7 ; D6D6: F0 0F - PLA ; D6D8: 68 - TAY ; D6D9: A8 - LDA $029D,Y ; D6DA: B9 9D 02 - CMP #$F5 ; D6DD: C9 F5 - BCS Label_D6E4 ; D6DF: B0 03 - INC $53 ; D6E1: E6 53 +SubCD663_Loop6: + TYA ; CPU:$D6CB PRG:16CB 98 + PHA ; CPU:$D6CC PRG:16CC 48 + LDX $50 ; CPU:$D6CD PRG:16CD A6 50 + LDY $51 ; CPU:$D6CF PRG:16CF A4 51 + LDA ($23),Y ; CPU:$D6D1 PRG:16D1 B1 23 + AND $D6F4,X ; CPU:$D6D3 PRG:16D3 3D F4 D6 + BEQ SubCD663_Loop8 ; CPU:$D6D6 PRG:16D6 F0 0F + PLA ; CPU:$D6D8 PRG:16D8 68 + TAY ; CPU:$D6D9 PRG:16D9 A8 + LDA $029D,Y ; CPU:$D6DA PRG:16DA B9 9D 02 + CMP #$F5 ; CPU:$D6DD PRG:16DD C9 F5 + BCS SubCD663_Loop7 ; CPU:$D6DF PRG:16DF B0 03 + INC $53 ; CPU:$D6E1 PRG:16E1 E6 53 ; --------------------------------------------------------------------------- ; Label_D6E3 @@ -6942,8 +6942,8 @@ Label_D6CB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D6E3: - RTS ; D6E3: 60 +SubCD663_OnZero: + RTS ; CPU:$D6E3 PRG:16E3 60 ; --------------------------------------------------------------------------- ; Label_D6E4 @@ -6960,9 +6960,9 @@ Label_D6E3: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D6E4: - INC $52 ; D6E4: E6 52 - RTS ; D6E6: 60 +SubCD663_Loop7: + INC $52 ; CPU:$D6E4 PRG:16E4 E6 52 + RTS ; CPU:$D6E6 PRG:16E6 60 ; --------------------------------------------------------------------------- ; Label_D6E7 @@ -6979,9 +6979,9 @@ Label_D6E4: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D6E7: - PLA ; D6E7: 68 - TAY ; D6E8: A8 +SubCD663_Loop8: + PLA ; CPU:$D6E7 PRG:16E7 68 + TAY ; CPU:$D6E8 PRG:16E8 A8 ; --------------------------------------------------------------------------- ; Label_D6E9 @@ -6998,19 +6998,19 @@ Label_D6E7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D6E9: - INY ; D6E9: C8 - INY ; D6EA: C8 - INY ; D6EB: C8 - INY ; D6EC: C8 - CPY #$5C ; D6ED: C0 5C - BEQ Label_D6E3 ; D6EF: F0 F2 - JMP SubCD663 ; D6F1: 4C 63 D6 +SubCD663_Loop9: + INY ; CPU:$D6E9 PRG:16E9 C8 + INY ; CPU:$D6EA PRG:16EA C8 + INY ; CPU:$D6EB PRG:16EB C8 + INY ; CPU:$D6EC PRG:16EC C8 + CPY #$5C ; CPU:$D6ED PRG:16ED C0 5C + BEQ SubCD663_OnZero ; CPU:$D6EF PRG:16EF F0 F2 + JMP SubCD663 ; CPU:$D6F1 PRG:16F1 4C 63 D6 ; BitMaskTable: 8 descending bit masks ($80,$40,$20,$10,$08,$04,$02,$01), ; indexed by ($3B AND #$07) in SubCD6FC ($D6FC) and consumed via ; AND $D6F4,X at $D6D3/$D7EF. BitMaskTable: - .byte $80,$40,$20,$10,$08,$04,$02,$01 ; D6F4-D6FB: 80 40 20 10 08 04 02 01 + .byte $80,$40,$20,$10,$08,$04,$02,$01 ; D6F4-D6FB: 80 40 20 10 08 04 02 01 ; CPU:$D6F4 PRG:16F4 80 40 20 10 08 04 02 01 ; --------------------------------------------------------------------------- ; SubCD6FC @@ -7028,19 +7028,19 @@ BitMaskTable: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD6FC: - LDY #$00 ; D6FC: A0 00 - STY $56 ; D6FE: 84 56 - STY $55 ; D700: 84 55 - LDA $3B ; D702: A5 3B - AND #$07 ; D704: 29 07 - STA $51 ; D706: 85 51 - LDX #$00 ; D708: A2 00 - LDA $3B ; D70A: A5 3B - AND #$F8 ; D70C: 29 F8 - ASL A ; D70E: 0A - STA $19 ; D70F: 85 19 - BCC Label_D714 ; D711: 90 01 - INX ; D713: E8 + LDY #$00 ; CPU:$D6FC PRG:16FC A0 00 + STY $56 ; CPU:$D6FE PRG:16FE 84 56 + STY $55 ; CPU:$D700 PRG:1700 84 55 + LDA $3B ; CPU:$D702 PRG:1702 A5 3B + AND #$07 ; CPU:$D704 PRG:1704 29 07 + STA $51 ; CPU:$D706 PRG:1706 85 51 + LDX #$00 ; CPU:$D708 PRG:1708 A2 00 + LDA $3B ; CPU:$D70A PRG:170A A5 3B + AND #$F8 ; CPU:$D70C PRG:170C 29 F8 + ASL A ; CPU:$D70E PRG:170E 0A + STA $19 ; CPU:$D70F PRG:170F 85 19 + BCC SubCD6FC_Loop ; CPU:$D711 PRG:1711 90 01 + INX ; CPU:$D713 PRG:1713 E8 ; --------------------------------------------------------------------------- ; Label_D714 @@ -7057,46 +7057,46 @@ SubCD6FC: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D714: - STX $1A ; D714: 86 1A - LDA $38 ; D716: A5 38 - AND #$07 ; D718: 29 07 - STA $50 ; D71A: 85 50 - LDA $38 ; D71C: A5 38 - SEC ; D71E: 38 - SBC #$80 ; D71F: E9 80 - LSR A ; D721: 4A - LSR A ; D722: 4A - LSR A ; D723: 4A - CLC ; D724: 18 - ADC $19 ; D725: 65 19 - STA $19 ; D727: 85 19 - LDA $1A ; D729: A5 1A - ADC #$03 ; D72B: 69 03 - STA $1A ; D72D: 85 1A - LDA ($19),Y ; D72F: B1 19 - STA $1B ; D731: 85 1B - CMP #$EF ; D733: C9 EF - BEQ Label_D774 ; D735: F0 3D - CMP #$FD ; D737: C9 FD - BEQ Label_D774 ; D739: F0 39 - TAX ; D73B: AA - LDA $D80D,X ; D73C: BD 0D D8 - BEQ Label_D773 ; D73F: F0 32 - CMP #$10 ; D741: C9 10 - BEQ Label_D771 ; D743: F0 2C - CMP #$20 ; D745: C9 20 - BEQ Label_D774 ; D747: F0 2B - CMP #$40 ; D749: C9 40 - BEQ Label_D79E ; D74B: F0 51 - CMP #$FF ; D74D: C9 FF - BEQ Label_D7A8 ; D74F: F0 57 - LDA #$01 ; D751: A9 01 - STA $1B ; D753: 85 1B - LDA $50 ; D755: A5 50 - AND #$04 ; D757: 29 04 - BEQ Label_D75D ; D759: F0 02 - ASL $1B ; D75B: 06 1B +SubCD6FC_Loop: + STX $1A ; CPU:$D714 PRG:1714 86 1A + LDA $38 ; CPU:$D716 PRG:1716 A5 38 + AND #$07 ; CPU:$D718 PRG:1718 29 07 + STA $50 ; CPU:$D71A PRG:171A 85 50 + LDA $38 ; CPU:$D71C PRG:171C A5 38 + SEC ; CPU:$D71E PRG:171E 38 + SBC #$80 ; CPU:$D71F PRG:171F E9 80 + LSR A ; CPU:$D721 PRG:1721 4A + LSR A ; CPU:$D722 PRG:1722 4A + LSR A ; CPU:$D723 PRG:1723 4A + CLC ; CPU:$D724 PRG:1724 18 + ADC $19 ; CPU:$D725 PRG:1725 65 19 + STA $19 ; CPU:$D727 PRG:1727 85 19 + LDA $1A ; CPU:$D729 PRG:1729 A5 1A + ADC #$03 ; CPU:$D72B PRG:172B 69 03 + STA $1A ; CPU:$D72D PRG:172D 85 1A + LDA ($19),Y ; CPU:$D72F PRG:172F B1 19 + STA $1B ; CPU:$D731 PRG:1731 85 1B + CMP #$EF ; CPU:$D733 PRG:1733 C9 EF + BEQ SubCD6FC_Loop6 ; CPU:$D735 PRG:1735 F0 3D + CMP #$FD ; CPU:$D737 PRG:1737 C9 FD + BEQ SubCD6FC_Loop6 ; CPU:$D739 PRG:1739 F0 39 + TAX ; CPU:$D73B PRG:173B AA + LDA $D80D,X ; CPU:$D73C PRG:173C BD 0D D8 + BEQ SubCD6FC_Loop5 ; CPU:$D73F PRG:173F F0 32 + CMP #$10 ; CPU:$D741 PRG:1741 C9 10 + BEQ SubCD6FC_Loop4 ; CPU:$D743 PRG:1743 F0 2C + CMP #$20 ; CPU:$D745 PRG:1745 C9 20 + BEQ SubCD6FC_Loop6 ; CPU:$D747 PRG:1747 F0 2B + CMP #$40 ; CPU:$D749 PRG:1749 C9 40 + BEQ SubCD6FC_Loop9 ; CPU:$D74B PRG:174B F0 51 + CMP #$FF ; CPU:$D74D PRG:174D C9 FF + BEQ SubCD6FC_Loop10 ; CPU:$D74F PRG:174F F0 57 + LDA #$01 ; CPU:$D751 PRG:1751 A9 01 + STA $1B ; CPU:$D753 PRG:1753 85 1B + LDA $50 ; CPU:$D755 PRG:1755 A5 50 + AND #$04 ; CPU:$D757 PRG:1757 29 04 + BEQ SubCD6FC_Loop2 ; CPU:$D759 PRG:1759 F0 02 + ASL $1B ; CPU:$D75B PRG:175B 06 1B ; --------------------------------------------------------------------------- ; Label_D75D @@ -7113,12 +7113,12 @@ Label_D714: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D75D: - LDA $51 ; D75D: A5 51 - AND #$04 ; D75F: 29 04 - BEQ Label_D767 ; D761: F0 04 - ASL $1B ; D763: 06 1B - ASL $1B ; D765: 06 1B +SubCD6FC_Loop2: + LDA $51 ; CPU:$D75D PRG:175D A5 51 + AND #$04 ; CPU:$D75F PRG:175F 29 04 + BEQ SubCD6FC_Loop3 ; CPU:$D761 PRG:1761 F0 04 + ASL $1B ; CPU:$D763 PRG:1763 06 1B + ASL $1B ; CPU:$D765 PRG:1765 06 1B ; --------------------------------------------------------------------------- ; Label_D767 @@ -7135,11 +7135,11 @@ Label_D75D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D767: - LDA $1B ; D767: A5 1B - AND $D80D,X ; D769: 3D 0D D8 - BNE Label_D771 ; D76C: D0 03 - JMP SubCD7F5 ; D76E: 4C F5 D7 +SubCD6FC_Loop3: + LDA $1B ; CPU:$D767 PRG:1767 A5 1B + AND $D80D,X ; CPU:$D769 PRG:1769 3D 0D D8 + BNE SubCD6FC_Loop4 ; CPU:$D76C PRG:176C D0 03 + JMP SubCD7F5 ; CPU:$D76E PRG:176E 4C F5 D7 ; --------------------------------------------------------------------------- ; Label_D771 @@ -7156,8 +7156,8 @@ Label_D767: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D771: - INC $56 ; D771: E6 56 +SubCD6FC_Loop4: + INC $56 ; CPU:$D771 PRG:1771 E6 56 ; --------------------------------------------------------------------------- ; Label_D773 @@ -7174,8 +7174,8 @@ Label_D771: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D773: - RTS ; D773: 60 +SubCD6FC_Loop5: + RTS ; CPU:$D773 PRG:1773 60 ; --------------------------------------------------------------------------- ; Label_D774 @@ -7192,23 +7192,23 @@ Label_D773: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D774: - LDA $3B ; D774: A5 3B - AND #$E0 ; D776: 29 E0 - LSR A ; D778: 4A - LSR A ; D779: 4A - STA $1B ; D77A: 85 1B - LDA $38 ; D77C: A5 38 - JSR SubCDA1D ; D77E: 20 1D DA - CLC ; D781: 18 - ADC $1B ; D782: 65 1B - TAY ; D784: A8 - LDX #$00 ; D785: A2 00 - LDA $3B ; D787: A5 3B - AND #$10 ; D789: 29 10 - BEQ Label_D78F ; D78B: F0 02 - INX ; D78D: E8 - INX ; D78E: E8 +SubCD6FC_Loop6: + LDA $3B ; CPU:$D774 PRG:1774 A5 3B + AND #$E0 ; CPU:$D776 PRG:1776 29 E0 + LSR A ; CPU:$D778 PRG:1778 4A + LSR A ; CPU:$D779 PRG:1779 4A + STA $1B ; CPU:$D77A PRG:177A 85 1B + LDA $38 ; CPU:$D77C PRG:177C A5 38 + JSR SubCDA1D ; CPU:$D77E PRG:177E 20 1D DA + CLC ; CPU:$D781 PRG:1781 18 + ADC $1B ; CPU:$D782 PRG:1782 65 1B + TAY ; CPU:$D784 PRG:1784 A8 + LDX #$00 ; CPU:$D785 PRG:1785 A2 00 + LDA $3B ; CPU:$D787 PRG:1787 A5 3B + AND #$10 ; CPU:$D789 PRG:1789 29 10 + BEQ SubCD6FC_Loop7 ; CPU:$D78B PRG:178B F0 02 + INX ; CPU:$D78D PRG:178D E8 + INX ; CPU:$D78E PRG:178E E8 ; --------------------------------------------------------------------------- ; Label_D78F @@ -7225,11 +7225,11 @@ Label_D774: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D78F: - LDA $38 ; D78F: A5 38 - AND #$10 ; D791: 29 10 - BEQ Label_D796 ; D793: F0 01 - INX ; D795: E8 +SubCD6FC_Loop7: + LDA $38 ; CPU:$D78F PRG:178F A5 38 + AND #$10 ; CPU:$D791 PRG:1791 29 10 + BEQ SubCD6FC_Loop8 ; CPU:$D793 PRG:1793 F0 01 + INX ; CPU:$D795 PRG:1795 E8 ; --------------------------------------------------------------------------- ; Label_D796 @@ -7246,10 +7246,10 @@ Label_D78F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D796: - LDA $0100,Y ; D796: B9 00 01 - AND $D823,X ; D799: 3D 23 D8 - BEQ Label_D771 ; D79C: F0 D3 +SubCD6FC_Loop8: + LDA $0100,Y ; CPU:$D796 PRG:1796 B9 00 01 + AND $D823,X ; CPU:$D799 PRG:1799 3D 23 D8 + BEQ SubCD6FC_Loop4 ; CPU:$D79C PRG:179C F0 D3 ; --------------------------------------------------------------------------- ; Label_D79E @@ -7266,12 +7266,12 @@ Label_D796: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D79E: - LDX $2B ; D79E: A6 2B - LDA $E20D,X ; D7A0: BD 0D E2 - BMI Label_D771 ; D7A3: 30 CC - INC $55 ; D7A5: E6 55 - RTS ; D7A7: 60 +SubCD6FC_Loop9: + LDX current_hole_index ; CPU:$D79E PRG:179E A6 2B + LDA $E20D,X ; CPU:$D7A0 PRG:17A0 BD 0D E2 + BMI SubCD6FC_Loop4 ; CPU:$D7A3 PRG:17A3 30 CC + INC $55 ; CPU:$D7A5 PRG:17A5 E6 55 + RTS ; CPU:$D7A7 PRG:17A7 60 ; --------------------------------------------------------------------------- ; Label_D7A8 @@ -7288,25 +7288,25 @@ Label_D79E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D7A8: - STX $19 ; D7A8: 86 19 - LDA #$00 ; D7AA: A9 00 - ASL $19 ; D7AC: 06 19 - ROL A ; D7AE: 2A - ASL $19 ; D7AF: 06 19 - ROL A ; D7B1: 2A - ASL $19 ; D7B2: 06 19 - ROL A ; D7B4: 2A - ASL $19 ; D7B5: 06 19 - ROL A ; D7B7: 2A - ORA #$10 ; D7B8: 09 10 - TAX ; D7BA: AA - LDA $19 ; D7BB: A5 19 - ADC $51 ; D7BD: 65 51 - PHA ; D7BF: 48 - LDA ppu_ctrl_shadow ; D7C0: A5 00 - AND #$7F ; D7C2: 29 7F - STA PPUCTRL ; D7C4: 8D 00 20 +SubCD6FC_Loop10: + STX $19 ; CPU:$D7A8 PRG:17A8 86 19 + LDA #$00 ; CPU:$D7AA PRG:17AA A9 00 + ASL $19 ; CPU:$D7AC PRG:17AC 06 19 + ROL A ; CPU:$D7AE PRG:17AE 2A + ASL $19 ; CPU:$D7AF PRG:17AF 06 19 + ROL A ; CPU:$D7B1 PRG:17B1 2A + ASL $19 ; CPU:$D7B2 PRG:17B2 06 19 + ROL A ; CPU:$D7B4 PRG:17B4 2A + ASL $19 ; CPU:$D7B5 PRG:17B5 06 19 + ROL A ; CPU:$D7B7 PRG:17B7 2A + ORA #$10 ; CPU:$D7B8 PRG:17B8 09 10 + TAX ; CPU:$D7BA PRG:17BA AA + LDA $19 ; CPU:$D7BB PRG:17BB A5 19 + ADC $51 ; CPU:$D7BD PRG:17BD 65 51 + PHA ; CPU:$D7BF PRG:17BF 48 + LDA ppu_ctrl_shadow ; CPU:$D7C0 PRG:17C0 A5 00 + AND #$7F ; CPU:$D7C2 PRG:17C2 29 7F + STA PPUCTRL ; CPU:$D7C4 PRG:17C4 8D 00 20 ; --------------------------------------------------------------------------- ; Label_D7C7 @@ -7323,27 +7323,27 @@ Label_D7A8: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D7C7: - LDA PPUSTATUS ; D7C7: AD 02 20 - BPL Label_D7C7 ; D7CA: 10 FB - PLA ; D7CC: 68 - JSR SetPpuAddress ; D7CD: 20 C1 C8 - LDY PPUDATA ; D7D0: AC 07 20 - LDY PPUDATA ; D7D3: AC 07 20 - STY $69 ; D7D6: 84 69 - ADC #$08 ; D7D8: 69 08 - JSR SetPpuAddress ; D7DA: 20 C1 C8 - LDY PPUDATA ; D7DD: AC 07 20 - LDA PPUDATA ; D7E0: AD 07 20 - PHA ; D7E3: 48 - JSR SetPpuScrollAndMask ; D7E4: 20 9D C8 - JSR RestorePpuCtrlShadow ; D7E7: 20 B5 C8 - PLA ; D7EA: 68 - ORA $69 ; D7EB: 05 69 - LDX $50 ; D7ED: A6 50 - AND $D6F4,X ; D7EF: 3D F4 D6 - BNE Label_D774 ; D7F2: D0 80 - RTS ; D7F4: 60 +SubCD6FC_OnNonnegative: + LDA PPUSTATUS ; CPU:$D7C7 PRG:17C7 AD 02 20 + BPL SubCD6FC_OnNonnegative ; CPU:$D7CA PRG:17CA 10 FB + PLA ; CPU:$D7CC PRG:17CC 68 + JSR SetPpuAddress ; CPU:$D7CD PRG:17CD 20 C1 C8 + LDY PPUDATA ; CPU:$D7D0 PRG:17D0 AC 07 20 + LDY PPUDATA ; CPU:$D7D3 PRG:17D3 AC 07 20 + STY $69 ; CPU:$D7D6 PRG:17D6 84 69 + ADC #$08 ; CPU:$D7D8 PRG:17D8 69 08 + JSR SetPpuAddress ; CPU:$D7DA PRG:17DA 20 C1 C8 + LDY PPUDATA ; CPU:$D7DD PRG:17DD AC 07 20 + LDA PPUDATA ; CPU:$D7E0 PRG:17E0 AD 07 20 + PHA ; CPU:$D7E3 PRG:17E3 48 + JSR SetPpuScrollAndMask ; CPU:$D7E4 PRG:17E4 20 9D C8 + JSR RestorePpuCtrlShadow ; CPU:$D7E7 PRG:17E7 20 B5 C8 + PLA ; CPU:$D7EA PRG:17EA 68 + ORA $69 ; CPU:$D7EB PRG:17EB 05 69 + LDX $50 ; CPU:$D7ED PRG:17ED A6 50 + AND $D6F4,X ; CPU:$D7EF PRG:17EF 3D F4 D6 + BNE SubCD6FC_Loop6 ; CPU:$D7F2 PRG:17F2 D0 80 + RTS ; CPU:$D7F4 PRG:17F4 60 ; --------------------------------------------------------------------------- ; SubCD7F5 @@ -7361,10 +7361,10 @@ Label_D7C7: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD7F5: - LDY $D80D,X ; D7F5: BC 0D D8 - LDA $D82E,Y ; D7F8: B9 2E D8 - STA $1C ; D7FB: 85 1C - LDX #$03 ; D7FD: A2 03 + LDY $D80D,X ; CPU:$D7F5 PRG:17F5 BC 0D D8 + LDA $D82E,Y ; CPU:$D7F8 PRG:17F8 B9 2E D8 + STA $1C ; CPU:$D7FB PRG:17FB 85 1C + LDX #$03 ; CPU:$D7FD PRG:17FD A2 03 ; --------------------------------------------------------------------------- ; Label_D7FF @@ -7381,21 +7381,21 @@ SubCD7F5: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D7FF: - LSR $1C ; D7FF: 46 1C - BCC Label_D81D ; D801: 90 1A - LDA $19 ; D803: A5 19 - ADC $D827,X ; D805: 7D 27 D8 - STA $1D ; D808: 85 1D - LDA $1A ; D80A: A5 1A - ADC $D82B,X ; D80C: 7D 2B D8 - STA $1E ; D80F: 85 1E - LDY #$00 ; D811: A0 00 - LDA ($1D),Y ; D813: B1 1D - TAY ; D815: A8 - LDA $D80D,Y ; D816: B9 0D D8 - CMP #$10 ; D819: C9 10 - BCC Label_D822 ; D81B: 90 05 +SubCD7F5_OnNonnegative: + LSR $1C ; CPU:$D7FF PRG:17FF 46 1C + BCC SubCD7F5_Loop ; CPU:$D801 PRG:1801 90 1A + LDA $19 ; CPU:$D803 PRG:1803 A5 19 + ADC $D827,X ; CPU:$D805 PRG:1805 7D 27 D8 + STA sequence_upper_bound ; CPU:$D808 PRG:1808 85 1D + LDA $1A ; CPU:$D80A PRG:180A A5 1A + ADC $D82B,X ; CPU:$D80C PRG:180C 7D 2B D8 + STA sequence_lower_bound ; CPU:$D80F PRG:180F 85 1E + LDY #$00 ; CPU:$D811 PRG:1811 A0 00 + LDA (sequence_upper_bound),Y ; CPU:$D813 PRG:1813 B1 1D + TAY ; CPU:$D815 PRG:1815 A8 + LDA $D80D,Y ; CPU:$D816 PRG:1816 B9 0D D8 + CMP #$10 ; CPU:$D819 PRG:1819 C9 10 + BCC SubCD7F5_Loop2 ; CPU:$D81B PRG:181B 90 05 ; --------------------------------------------------------------------------- ; Label_D81D @@ -7412,10 +7412,10 @@ Label_D7FF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D81D: - DEX ; D81D: CA - BPL Label_D7FF ; D81E: 10 DF - INC $56 ; D820: E6 56 +SubCD7F5_Loop: + DEX ; CPU:$D81D PRG:181D CA + BPL SubCD7F5_OnNonnegative ; CPU:$D81E PRG:181E 10 DF + INC $56 ; CPU:$D820 PRG:1820 E6 56 ; --------------------------------------------------------------------------- ; Label_D822 @@ -7432,8 +7432,8 @@ Label_D81D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D822: - RTS ; D822: 60 +SubCD7F5_Loop2: + RTS ; CPU:$D822 PRG:1822 60 .incbin "prg.bin", $1823, $00CA ; D823-D8EC: unclassified/data ; --------------------------------------------------------------------------- @@ -7452,23 +7452,23 @@ Label_D822: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD8ED: - PHA ; D8ED: 48 - LDA $78 ; D8EE: A5 78 - LSR A ; D8F0: 4A - STA $6C ; D8F1: 85 6C - PLA ; D8F3: 68 - LSR A ; D8F4: 4A - SEC ; D8F5: 38 - SBC $6C ; D8F6: E5 6C - STA $6C ; D8F8: 85 6C - LDA $79 ; D8FA: A5 79 - LSR A ; D8FC: 4A - STA $6B ; D8FD: 85 6B - TXA ; D8FF: 8A - LSR A ; D900: 4A - SEC ; D901: 38 - SBC $6B ; D902: E5 6B - STA $6B ; D904: 85 6B + PHA ; CPU:$D8ED PRG:18ED 48 + LDA $78 ; CPU:$D8EE PRG:18EE A5 78 + LSR A ; CPU:$D8F0 PRG:18F0 4A + STA $6C ; CPU:$D8F1 PRG:18F1 85 6C + PLA ; CPU:$D8F3 PRG:18F3 68 + LSR A ; CPU:$D8F4 PRG:18F4 4A + SEC ; CPU:$D8F5 PRG:18F5 38 + SBC $6C ; CPU:$D8F6 PRG:18F6 E5 6C + STA $6C ; CPU:$D8F8 PRG:18F8 85 6C + LDA $79 ; CPU:$D8FA PRG:18FA A5 79 + LSR A ; CPU:$D8FC PRG:18FC 4A + STA $6B ; CPU:$D8FD PRG:18FD 85 6B + TXA ; CPU:$D8FF PRG:18FF 8A + LSR A ; CPU:$D900 PRG:1900 4A + SEC ; CPU:$D901 PRG:1901 38 + SBC $6B ; CPU:$D902 PRG:1902 E5 6B + STA $6B ; CPU:$D904 PRG:1904 85 6B ; --------------------------------------------------------------------------- ; SubCD906 @@ -7486,27 +7486,27 @@ SubCD8ED: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD906: - LDA $6C ; D906: A5 6C - ASL A ; D908: 0A - LDA $6B ; D909: A5 6B - ROL A ; D90B: 2A - ROL A ; D90C: 2A - AND #$03 ; D90D: 29 03 - PHA ; D90F: 48 - LDA $6C ; D910: A5 6C - JSR SubCD9B1 ; D912: 20 B1 D9 - STA $6C ; D915: 85 6C - LDA $6B ; D917: A5 6B - JSR SubCD9B1 ; D919: 20 B1 D9 - STA $6B ; D91C: 85 6B - LDY #$00 ; D91E: A0 00 - LDA $6C ; D920: A5 6C - CMP $6B ; D922: C5 6B - BCC Label_D92D ; D924: 90 07 - LDX $6B ; D926: A6 6B - STA $6B ; D928: 85 6B - STX $6C ; D92A: 86 6C - DEY ; D92C: 88 + LDA $6C ; CPU:$D906 PRG:1906 A5 6C + ASL A ; CPU:$D908 PRG:1908 0A + LDA $6B ; CPU:$D909 PRG:1909 A5 6B + ROL A ; CPU:$D90B PRG:190B 2A + ROL A ; CPU:$D90C PRG:190C 2A + AND #$03 ; CPU:$D90D PRG:190D 29 03 + PHA ; CPU:$D90F PRG:190F 48 + LDA $6C ; CPU:$D910 PRG:1910 A5 6C + JSR SubCD9B1 ; CPU:$D912 PRG:1912 20 B1 D9 + STA $6C ; CPU:$D915 PRG:1915 85 6C + LDA $6B ; CPU:$D917 PRG:1917 A5 6B + JSR SubCD9B1 ; CPU:$D919 PRG:1919 20 B1 D9 + STA $6B ; CPU:$D91C PRG:191C 85 6B + LDY #$00 ; CPU:$D91E PRG:191E A0 00 + LDA $6C ; CPU:$D920 PRG:1920 A5 6C + CMP $6B ; CPU:$D922 PRG:1922 C5 6B + BCC SubCD906_Loop ; CPU:$D924 PRG:1924 90 07 + LDX $6B ; CPU:$D926 PRG:1926 A6 6B + STA $6B ; CPU:$D928 PRG:1928 85 6B + STX $6C ; CPU:$D92A PRG:192A 86 6C + DEY ; CPU:$D92C PRG:192C 88 ; --------------------------------------------------------------------------- ; Label_D92D @@ -7523,13 +7523,13 @@ SubCD906: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D92D: - STY $1A ; D92D: 84 1A - LDA $6B ; D92F: A5 6B - BNE Label_D937 ; D931: D0 04 - PLA ; D933: 68 - LDA #$40 ; D934: A9 40 - RTS ; D936: 60 +SubCD906_Loop: + STY $1A ; CPU:$D92D PRG:192D 84 1A + LDA $6B ; CPU:$D92F PRG:192F A5 6B + BNE SubCD906_Loop2 ; CPU:$D931 PRG:1931 D0 04 + PLA ; CPU:$D933 PRG:1933 68 + LDA #$40 ; CPU:$D934 PRG:1934 A9 40 + RTS ; CPU:$D936 PRG:1936 60 ; --------------------------------------------------------------------------- ; Label_D937 @@ -7546,11 +7546,11 @@ Label_D92D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D937: - CMP $6C ; D937: C5 6C - BNE Label_D93F ; D939: D0 04 - LDA #$20 ; D93B: A9 20 - BNE Label_D974 ; D93D: D0 35 +SubCD906_Loop2: + CMP $6C ; CPU:$D937 PRG:1937 C5 6C + BNE SubCD906_Loop3 ; CPU:$D939 PRG:1939 D0 04 + LDA #$20 ; CPU:$D93B PRG:193B A9 20 + BNE SubCD906_Loop7 ; CPU:$D93D PRG:193D D0 35 ; --------------------------------------------------------------------------- ; Label_D93F @@ -7567,11 +7567,11 @@ Label_D937: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D93F: - LDA $6C ; D93F: A5 6C - LDX #$00 ; D941: A2 00 - STX $6C ; D943: 86 6C - LDX #$08 ; D945: A2 08 +SubCD906_Loop3: + LDA $6C ; CPU:$D93F PRG:193F A5 6C + LDX #$00 ; CPU:$D941 PRG:1941 A2 00 + STX $6C ; CPU:$D943 PRG:1943 86 6C + LDX #$08 ; CPU:$D945 PRG:1945 A2 08 ; --------------------------------------------------------------------------- ; Label_D947 @@ -7588,11 +7588,11 @@ Label_D93F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D947: - ASL A ; D947: 0A - BCS Label_D94E ; D948: B0 04 - CMP $6B ; D94A: C5 6B - BCC Label_D951 ; D94C: 90 03 +SubCD906_OnNonzero: + ASL A ; CPU:$D947 PRG:1947 0A + BCS SubCD906_Loop4 ; CPU:$D948 PRG:1948 B0 04 + CMP $6B ; CPU:$D94A PRG:194A C5 6B + BCC SubCD906_Loop5 ; CPU:$D94C PRG:194C 90 03 ; --------------------------------------------------------------------------- ; Label_D94E @@ -7609,9 +7609,9 @@ Label_D947: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D94E: - SBC $6B ; D94E: E5 6B - SEC ; D950: 38 +SubCD906_Loop4: + SBC $6B ; CPU:$D94E PRG:194E E5 6B + SEC ; CPU:$D950 PRG:1950 38 ; --------------------------------------------------------------------------- ; Label_D951 @@ -7628,15 +7628,15 @@ Label_D94E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D951: - ROL $6C ; D951: 26 6C - DEX ; D953: CA - BNE Label_D947 ; D954: D0 F1 - LDA $6C ; D956: A5 6C - AND #$C0 ; D958: 29 C0 - JSR SubCDA1E ; D95A: 20 1E DA - TAX ; D95D: AA - LDA $6C ; D95E: A5 6C +SubCD906_Loop5: + ROL $6C ; CPU:$D951 PRG:1951 26 6C + DEX ; CPU:$D953 PRG:1953 CA + BNE SubCD906_OnNonzero ; CPU:$D954 PRG:1954 D0 F1 + LDA $6C ; CPU:$D956 PRG:1956 A5 6C + AND #$C0 ; CPU:$D958 PRG:1958 29 C0 + JSR SubCDA1E ; CPU:$D95A PRG:195A 20 1E DA + TAX ; CPU:$D95D PRG:195D AA + LDA $6C ; CPU:$D95E PRG:195E A5 6C ; --------------------------------------------------------------------------- ; Label_D960 @@ -7653,11 +7653,11 @@ Label_D951: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D960: - CMP $D990,X ; D960: DD 90 D9 - BCC Label_D968 ; D963: 90 03 - INX ; D965: E8 - BNE Label_D960 ; D966: D0 F8 +SubCD906_OnNonzero2: + CMP $D990,X ; CPU:$D960 PRG:1960 DD 90 D9 + BCC SubCD906_Loop6 ; CPU:$D963 PRG:1963 90 03 + INX ; CPU:$D965 PRG:1965 E8 + BNE SubCD906_OnNonzero2 ; CPU:$D966 PRG:1966 D0 F8 ; --------------------------------------------------------------------------- ; Label_D968 @@ -7674,14 +7674,14 @@ Label_D960: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D968: - TXA ; D968: 8A - LDX $1A ; D969: A6 1A - BNE Label_D974 ; D96B: D0 07 - STA $19 ; D96D: 85 19 - LDA #$40 ; D96F: A9 40 - SEC ; D971: 38 - SBC $19 ; D972: E5 19 +SubCD906_Loop6: + TXA ; CPU:$D968 PRG:1968 8A + LDX $1A ; CPU:$D969 PRG:1969 A6 1A + BNE SubCD906_Loop7 ; CPU:$D96B PRG:196B D0 07 + STA $19 ; CPU:$D96D PRG:196D 85 19 + LDA #$40 ; CPU:$D96F PRG:196F A9 40 + SEC ; CPU:$D971 PRG:1971 38 + SBC $19 ; CPU:$D972 PRG:1972 E5 19 ; --------------------------------------------------------------------------- ; Label_D974 @@ -7698,16 +7698,16 @@ Label_D968: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D974: - STA $19 ; D974: 85 19 - PLA ; D976: 68 - TAX ; D977: AA - LDA $D988,X ; D978: BD 88 D9 - LDY $D98C,X ; D97B: BC 8C D9 - BNE Label_D984 ; D97E: D0 04 - CLC ; D980: 18 - ADC $19 ; D981: 65 19 - RTS ; D983: 60 +SubCD906_Loop7: + STA $19 ; CPU:$D974 PRG:1974 85 19 + PLA ; CPU:$D976 PRG:1976 68 + TAX ; CPU:$D977 PRG:1977 AA + LDA $D988,X ; CPU:$D978 PRG:1978 BD 88 D9 + LDY $D98C,X ; CPU:$D97B PRG:197B BC 8C D9 + BNE SubCD906_Loop8 ; CPU:$D97E PRG:197E D0 04 + CLC ; CPU:$D980 PRG:1980 18 + ADC $19 ; CPU:$D981 PRG:1981 65 19 + RTS ; CPU:$D983 PRG:1983 60 ; --------------------------------------------------------------------------- ; Label_D984 @@ -7724,18 +7724,18 @@ Label_D974: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D984: - SEC ; D984: 38 - SBC $19 ; D985: E5 19 - RTS ; D987: 60 +SubCD906_Loop8: + SEC ; CPU:$D984 PRG:1984 38 + SBC $19 ; CPU:$D985 PRG:1985 E5 19 + RTS ; CPU:$D987 PRG:1987 60 ; D988ScoreAdjustTable: 41-byte table accessed two ways from Label_D974: ; LDA $D988,X -> entry at offset X ; LDY $D98C,X -> entry at offset X+4 (overlaps the same byte region) ; X is loaded from the stack (PLA; TAX) at $D976-$D977. D988ScoreAdjustTable: - .byte $80,$80,$00,$00,$ff,$00,$00,$ff,$04,$0a,$10,$17,$1d,$23,$2a,$30 ; D988-D997 - .byte $37,$3d,$44,$4b,$52,$59,$60,$67,$6e,$76,$7d,$85,$8d,$96,$9e,$a7 ; D998-D9A7 - .byte $b0,$ba,$c3,$cd,$d8,$e3,$ee,$fa,$ff ; D9A8-D9B0 + .byte $80,$80,$00,$00,$ff,$00,$00,$ff,$04,$0a,$10,$17,$1d,$23,$2a,$30 ; D988-D997 ; CPU:$D988 PRG:1988 80 80 00 00 FF 00 00 FF 04 0A 10 17 + .byte $37,$3d,$44,$4b,$52,$59,$60,$67,$6e,$76,$7d,$85,$8d,$96,$9e,$a7 ; D998-D9A7 ; CPU:$D998 PRG:1998 37 3D 44 4B 52 59 60 67 6E 76 7D 85 + .byte $b0,$ba,$c3,$cd,$d8,$e3,$ee,$fa,$ff ; D9A8-D9B0 ; CPU:$D9A8 PRG:19A8 B0 BA C3 CD D8 E3 EE FA FF ; --------------------------------------------------------------------------- ; SubCD9B1 @@ -7753,10 +7753,10 @@ D988ScoreAdjustTable: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD9B1: - BPL Label_D9B8 ; D9B1: 10 05 - EOR #$FF ; D9B3: 49 FF - CLC ; D9B5: 18 - ADC #$01 ; D9B6: 69 01 + BPL SubCD9B1_Loop ; CPU:$D9B1 PRG:19B1 10 05 + EOR #$FF ; CPU:$D9B3 PRG:19B3 49 FF + CLC ; CPU:$D9B5 PRG:19B5 18 + ADC #$01 ; CPU:$D9B6 PRG:19B6 69 01 ; --------------------------------------------------------------------------- ; Label_D9B8 @@ -7773,8 +7773,8 @@ SubCD9B1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D9B8: - RTS ; D9B8: 60 +SubCD9B1_Loop: + RTS ; CPU:$D9B8 PRG:19B8 60 ; --------------------------------------------------------------------------- ; SubCD9B9 @@ -7792,13 +7792,13 @@ Label_D9B8: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD9B9: - LDA $44 ; D9B9: A5 44 - JSR MultiplyBy32 ; D9BB: 20 BC C8 - STA $45 ; D9BE: 85 45 - LDA $65 ; D9C0: A5 65 - LDX $66 ; D9C2: A6 66 - CLC ; D9C4: 18 - BCC Label_D9CC ; D9C5: 90 05 + LDA aim_angle_index ; CPU:$D9B9 PRG:19B9 A5 44 + JSR MultiplyBy32 ; CPU:$D9BB PRG:19BB 20 BC C8 + STA aim_adjust_direction ; CPU:$D9BE PRG:19BE 85 45 + LDA $65 ; CPU:$D9C0 PRG:19C0 A5 65 + LDX $66 ; CPU:$D9C2 PRG:19C2 A6 66 + CLC ; CPU:$D9C4 PRG:19C4 18 + BCC SubCD9C7_Loop ; CPU:$D9C5 PRG:19C5 90 05 ; --------------------------------------------------------------------------- ; SubCD9C7 @@ -7816,9 +7816,9 @@ SubCD9B9: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD9C7: - LDA $67 ; D9C7: A5 67 - LDX $68 ; D9C9: A6 68 - SEC ; D9CB: 38 + LDA $67 ; CPU:$D9C7 PRG:19C7 A5 67 + LDX $68 ; CPU:$D9C9 PRG:19C9 A6 68 + SEC ; CPU:$D9CB PRG:19CB 38 ; --------------------------------------------------------------------------- ; Label_D9CC @@ -7835,33 +7835,33 @@ SubCD9C7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D9CC: - PHP ; D9CC: 08 - SEC ; D9CD: 38 - SBC $78 ; D9CE: E5 78 - STA $6C ; D9D0: 85 6C - TXA ; D9D2: 8A - SEC ; D9D3: 38 - SBC $79 ; D9D4: E5 79 - STA $6B ; D9D6: 85 6B +SubCD9C7_Loop: + PHP ; CPU:$D9CC PRG:19CC 08 + SEC ; CPU:$D9CD PRG:19CD 38 + SBC $78 ; CPU:$D9CE PRG:19CE E5 78 + STA $6C ; CPU:$D9D0 PRG:19D0 85 6C + TXA ; CPU:$D9D2 PRG:19D2 8A + SEC ; CPU:$D9D3 PRG:19D3 38 + SBC $79 ; CPU:$D9D4 PRG:19D4 E5 79 + STA $6B ; CPU:$D9D6 PRG:19D6 85 6B ; Overlapping instruction idiom: ; D9D8: BIT $0838 (2C 38 08) ; D9D9: SEC (38) ; $D9DA is only the high operand byte, not an independent PHP entry. Label_D9D8: - .byte $2C ; D9D8: 2C BIT absolute opcode + .byte $2C ; D9D8: 2C BIT absolute opcode ; CPU:$D9D8 PRG:19D8 2C SubCD9D9: - .byte $38,$08 ; D9D9-D9DA: 38 08 SEC / BIT operand - JSR SubCD906 ; D9DB: 20 06 D9 - STA $71 ; D9DE: 85 71 - SEC ; D9E0: 38 - SBC $45 ; D9E1: E5 45 - PLP ; D9E3: 28 - BCC Label_D9EA ; D9E4: 90 04 - TAY ; D9E6: A8 - ASL A ; D9E7: 0A - TYA ; D9E8: 98 - ROR A ; D9E9: 6A + .byte $38,$08 ; D9D9-D9DA: 38 08 SEC / BIT operand ; CPU:$D9D9 PRG:19D9 38 08 + JSR SubCD906 ; CPU:$D9DB PRG:19DB 20 06 D9 + STA $71 ; CPU:$D9DE PRG:19DE 85 71 + SEC ; CPU:$D9E0 PRG:19E0 38 + SBC aim_adjust_direction ; CPU:$D9E1 PRG:19E1 E5 45 + PLP ; CPU:$D9E3 PRG:19E3 28 + BCC SubCD9D9_Loop ; CPU:$D9E4 PRG:19E4 90 04 + TAY ; CPU:$D9E6 PRG:19E6 A8 + ASL A ; CPU:$D9E7 PRG:19E7 0A + TYA ; CPU:$D9E8 PRG:19E8 98 + ROR A ; CPU:$D9E9 PRG:19E9 6A ; --------------------------------------------------------------------------- ; Label_D9EA @@ -7878,11 +7878,11 @@ SubCD9D9: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D9EA: - STA $72 ; D9EA: 85 72 - BPL Label_D9F2 ; D9EC: 10 04 - CMP #$C0 ; D9EE: C9 C0 - BCS Label_D9F6 ; D9F0: B0 04 +SubCD9D9_Loop: + STA $72 ; CPU:$D9EA PRG:19EA 85 72 + BPL SubCD9D9_Loop2 ; CPU:$D9EC PRG:19EC 10 04 + CMP #$C0 ; CPU:$D9EE PRG:19EE C9 C0 + BCS SubCD9D9_Loop3 ; CPU:$D9F0 PRG:19F0 B0 04 ; --------------------------------------------------------------------------- ; Label_D9F2 @@ -7899,9 +7899,9 @@ Label_D9EA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D9F2: - CMP #$1A ; D9F2: C9 1A - BCS Label_D9FA ; D9F4: B0 04 +SubCD9D9_Loop2: + CMP #$1A ; CPU:$D9F2 PRG:19F2 C9 1A + BCS SubCD9D9_Loop4 ; CPU:$D9F4 PRG:19F4 B0 04 ; --------------------------------------------------------------------------- ; Label_D9F6 @@ -7918,18 +7918,18 @@ Label_D9F2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_D9F6: - CLC ; D9F6: 18 - ADC #$50 ; D9F7: 69 50 +SubCD9D9_Loop3: + CLC ; CPU:$D9F6 PRG:19F6 18 + ADC #$50 ; CPU:$D9F7 PRG:19F7 69 50 ; Overlapping instruction idiom: ; D9F9: BIT $FFA9 (2C A9 FF) ; D9FA: LDA #$FF (A9 FF) Label_D9F9: - .byte $2C ; D9F9: 2C BIT absolute opcode -Label_D9FA: - .byte $A9,$FF ; D9FA-D9FB: A9 FF LDA #$FF - STA $74 ; D9FC: 85 74 - RTS ; D9FE: 60 + .byte $2C ; D9F9: 2C BIT absolute opcode ; CPU:$D9F9 PRG:19F9 2C +SubCD9D9_Loop4: + .byte $A9,$FF ; D9FA-D9FB: A9 FF LDA #$FF ; CPU:$D9FA PRG:19FA A9 FF + STA $74 ; CPU:$D9FC PRG:19FC 85 74 + RTS ; CPU:$D9FE PRG:19FE 60 ; --------------------------------------------------------------------------- ; SubCD9FF @@ -7947,16 +7947,16 @@ Label_D9FA: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCD9FF: - LDA $49 ; D9FF: A5 49 - BNE Label_DA15 ; DA01: D0 12 - LDX $66 ; DA03: A6 66 - LDA $65 ; DA05: A5 65 - JSR SubCD8ED ; DA07: 20 ED D8 - CLC ; DA0A: 18 - ADC #$07 ; DA0B: 69 07 - JSR SubCDA1E ; DA0D: 20 1E DA - STA $44 ; DA10: 85 44 - JMP SubCDA1C ; DA12: 4C 1C DA + LDA $49 ; CPU:$D9FF PRG:19FF A5 49 + BNE SubCD9FF_Loop ; CPU:$DA01 PRG:1A01 D0 12 + LDX $66 ; CPU:$DA03 PRG:1A03 A6 66 + LDA $65 ; CPU:$DA05 PRG:1A05 A5 65 + JSR SubCD8ED ; CPU:$DA07 PRG:1A07 20 ED D8 + CLC ; CPU:$DA0A PRG:1A0A 18 + ADC #$07 ; CPU:$DA0B PRG:1A0B 69 07 + JSR SubCDA1E ; CPU:$DA0D PRG:1A0D 20 1E DA + STA aim_angle_index ; CPU:$DA10 PRG:1A10 85 44 + JMP SubCDA1C ; CPU:$DA12 PRG:1A12 4C 1C DA ; --------------------------------------------------------------------------- ; Label_DA15 @@ -7973,10 +7973,10 @@ SubCD9FF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DA15: - JSR SubCD9C7 ; DA15: 20 C7 D9 - LDA $71 ; DA18: A5 71 - STA $45 ; DA1A: 85 45 +SubCD9FF_Loop: + JSR SubCD9C7 ; CPU:$DA15 PRG:1A15 20 C7 D9 + LDA $71 ; CPU:$DA18 PRG:1A18 A5 71 + STA aim_adjust_direction ; CPU:$DA1A PRG:1A1A 85 45 ; --------------------------------------------------------------------------- ; SubCDA1C @@ -7994,7 +7994,7 @@ Label_DA15: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDA1C: - RTS ; DA1C: 60 + RTS ; CPU:$DA1C PRG:1A1C 60 ; --------------------------------------------------------------------------- ; SubCDA1D @@ -8012,7 +8012,7 @@ SubCDA1C: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDA1D: - LSR A ; DA1D: 4A + LSR A ; CPU:$DA1D PRG:1A1D 4A ; --------------------------------------------------------------------------- ; SubCDA1E @@ -8030,11 +8030,11 @@ SubCDA1D: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDA1E: - LSR A ; DA1E: 4A - LSR A ; DA1F: 4A - LSR A ; DA20: 4A - LSR A ; DA21: 4A - RTS ; DA22: 60 + LSR A ; CPU:$DA1E PRG:1A1E 4A + LSR A ; CPU:$DA1F PRG:1A1F 4A + LSR A ; CPU:$DA20 PRG:1A20 4A + LSR A ; CPU:$DA21 PRG:1A21 4A + RTS ; CPU:$DA22 PRG:1A22 60 ; --------------------------------------------------------------------------- ; InitializeTitleAndGame @@ -8052,11 +8052,11 @@ SubCDA1E: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- InitializeTitleAndGame: - LDY #$A2 ; DA23: A0 A2 - LDX #$DA ; DA25: A2 DA - JSR InstallNmiCallback ; DA27: 20 88 C8 - LDA #$00 ; DA2A: A9 00 - STA $0140 ; DA2C: 8D 40 01 + LDY #$A2 ; CPU:$DA23 PRG:1A23 A0 A2 + LDX #$DA ; CPU:$DA25 PRG:1A25 A2 DA + JSR InstallNmiCallback ; CPU:$DA27 PRG:1A27 20 88 C8 + LDA #$00 ; CPU:$DA2A PRG:1A2A A9 00 + STA $0140 ; CPU:$DA2C PRG:1A2C 8D 40 01 ; --------------------------------------------------------------------------- ; SubCDA2F @@ -8074,19 +8074,19 @@ InitializeTitleAndGame: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDA2F: - LDY #$02 ; DA2F: A0 02 - STY $09 ; DA31: 84 09 - DEY ; DA33: 88 - STY menu_input_latch ; DA34: 84 0A - STY $82 ; DA36: 84 82 - DEY ; DA38: 88 - STY PPUMASK ; DA39: 8C 01 20 - STY APUSTATUS ; DA3C: 8C 15 40 - JSR RestorePpuCtrlShadow ; DA3F: 20 B5 C8 - JSR SubCDB10 ; DA42: 20 10 DB - JSR SubCC89A ; DA45: 20 9A C8 - LDA #$00 ; DA48: A9 00 - STA $09 ; DA4A: 85 09 + LDY #$02 ; CPU:$DA2F PRG:1A2F A0 02 + STY title_input_mode ; CPU:$DA31 PRG:1A31 84 09 + DEY ; CPU:$DA33 PRG:1A33 88 + STY menu_input_latch ; CPU:$DA34 PRG:1A34 84 0A + STY $82 ; CPU:$DA36 PRG:1A36 84 82 + DEY ; CPU:$DA38 PRG:1A38 88 + STY PPUMASK ; CPU:$DA39 PRG:1A39 8C 01 20 + STY APUSTATUS ; CPU:$DA3C PRG:1A3C 8C 15 40 + JSR RestorePpuCtrlShadow ; CPU:$DA3F PRG:1A3F 20 B5 C8 + JSR SubCDB10 ; CPU:$DA42 PRG:1A42 20 10 DB + JSR SubCC89A ; CPU:$DA45 PRG:1A45 20 9A C8 + LDA #$00 ; CPU:$DA48 PRG:1A48 A9 00 + STA title_input_mode ; CPU:$DA4A PRG:1A4A 85 09 ; --------------------------------------------------------------------------- ; SubCDA4C @@ -8104,16 +8104,16 @@ SubCDA2F: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDA4C: - LDY #$05 ; DA4C: A0 05 - JSR WaitFrameGroups ; DA4E: 20 09 C9 - LDA #$01 ; DA51: A9 01 - STA $09 ; DA53: 85 09 - LDY $0140 ; DA55: AC 40 01 - STY $2B ; DA58: 84 2B - INY ; DA5A: C8 - CPY #$12 ; DA5B: C0 12 - BCC Label_DA61 ; DA5D: 90 02 - LDY #$00 ; DA5F: A0 00 + LDY #$05 ; CPU:$DA4C PRG:1A4C A0 05 + JSR WaitFrameGroups ; CPU:$DA4E PRG:1A4E 20 09 C9 + LDA #$01 ; CPU:$DA51 PRG:1A51 A9 01 + STA title_input_mode ; CPU:$DA53 PRG:1A53 85 09 + LDY $0140 ; CPU:$DA55 PRG:1A55 AC 40 01 + STY current_hole_index ; CPU:$DA58 PRG:1A58 84 2B + INY ; CPU:$DA5A PRG:1A5A C8 + CPY #$12 ; CPU:$DA5B PRG:1A5B C0 12 + BCC SubCDA4C_Loop ; CPU:$DA5D PRG:1A5D 90 02 + LDY #$00 ; CPU:$DA5F PRG:1A5F A0 00 ; --------------------------------------------------------------------------- ; Label_DA61 @@ -8130,34 +8130,34 @@ SubCDA4C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DA61: - STY $0140 ; DA61: 8C 40 01 - LDY #$00 ; DA64: A0 00 - STY $49 ; DA66: 84 49 - STY $15 ; DA68: 84 15 - STY $17 ; DA6A: 84 17 - STY $7A ; DA6C: 84 7A - STY $87 ; DA6E: 84 87 - STY $44 ; DA70: 84 44 - STY $45 ; DA72: 84 45 - INY ; DA74: C8 - STY $4A ; DA75: 84 4A - JSR ClearNametableAndOam ; DA77: 20 C8 C8 - JSR DecodeCoursePackage ; DA7A: 20 78 DD - JSR WaitForFrame ; DA7D: 20 F3 C8 - JSR SubCFCF1 ; DA80: 20 F1 FC - JSR WaitForFrame ; DA83: 20 F3 C8 - JSR SubCC84D ; DA86: 20 4D C8 - JSR RefreshSequenceSpriteLayout ; DA89: 20 A8 CA - JSR SubCC916 ; DA8C: 20 16 C9 - LDA $7E ; DA8F: A5 7E - STA $3B ; DA91: 85 3B - LDA $7D ; DA93: A5 7D - STA $38 ; DA95: 85 38 - JSR UploadGeneratedCourseGrid ; DA97: 20 98 FC - LDY #$05 ; DA9A: A0 05 - JSR WaitFrameGroups ; DA9C: 20 09 C9 - JMP SubCDA2F ; DA9F: 4C 2F DA +SubCDA4C_Loop: + STY $0140 ; CPU:$DA61 PRG:1A61 8C 40 01 + LDY #$00 ; CPU:$DA64 PRG:1A64 A0 00 + STY $49 ; CPU:$DA66 PRG:1A66 84 49 + STY sequence_frame_index ; CPU:$DA68 PRG:1A68 84 15 + STY club_selection_index ; CPU:$DA6A PRG:1A6A 84 17 + STY active_controller_index ; CPU:$DA6C PRG:1A6C 84 7A + STY $87 ; CPU:$DA6E PRG:1A6E 84 87 + STY aim_angle_index ; CPU:$DA70 PRG:1A70 84 44 + STY aim_adjust_direction ; CPU:$DA72 PRG:1A72 84 45 + INY ; CPU:$DA74 PRG:1A74 C8 + STY $4A ; CPU:$DA75 PRG:1A75 84 4A + JSR ClearNametableAndOam ; CPU:$DA77 PRG:1A77 20 C8 C8 + JSR DecodeCoursePackage ; CPU:$DA7A PRG:1A7A 20 78 DD + JSR WaitForFrame ; CPU:$DA7D PRG:1A7D 20 F3 C8 + JSR SubCFCF1 ; CPU:$DA80 PRG:1A80 20 F1 FC + JSR WaitForFrame ; CPU:$DA83 PRG:1A83 20 F3 C8 + JSR SubCC84D ; CPU:$DA86 PRG:1A86 20 4D C8 + JSR RefreshSequenceSpriteLayout; CPU:$DA89 PRG:1A89 20 A8 CA + JSR SubCC916 ; CPU:$DA8C PRG:1A8C 20 16 C9 + LDA $7E ; CPU:$DA8F PRG:1A8F A5 7E + STA $3B ; CPU:$DA91 PRG:1A91 85 3B + LDA $7D ; CPU:$DA93 PRG:1A93 A5 7D + STA $38 ; CPU:$DA95 PRG:1A95 85 38 + JSR UploadGeneratedCourseGrid ; CPU:$DA97 PRG:1A97 20 98 FC + LDY #$05 ; CPU:$DA9A PRG:1A9A A0 05 + JSR WaitFrameGroups ; CPU:$DA9C PRG:1A9C 20 09 C9 + JMP SubCDA2F ; CPU:$DA9F PRG:1A9F 4C 2F DA ; --------------------------------------------------------------------------- ; TitleAndAttractNmi @@ -8175,30 +8175,30 @@ Label_DA61: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- TitleAndAttractNmi: - JSR StrobeAndReadController ; DAA2: 20 7B C5 - LDA JOY1 ; DAA5: AD 16 40 - LDA JOY1 ; DAA8: AD 16 40 - LDA title_input_mode ; DAAB: A5 09 - BNE Label_DAEC ; DAAD: D0 3D - LDY menu_selection ; DAAF: A4 0D - LDA MenuCursorYPositions,Y ; DAB1: B9 0D DB - STA $0200 ; DAB4: 8D 00 02 - LDA #$BA ; DAB7: A9 BA - STA $0201 ; DAB9: 8D 01 02 - LDA #$00 ; DABC: A9 00 - STA $0202 ; DABE: 8D 02 02 - LDA #$28 ; DAC1: A9 28 - STA $0203 ; DAC3: 8D 03 02 - LDA JOY1 ; DAC6: AD 16 40 - AND #$01 ; DAC9: 29 01 - BEQ ReleaseMenuInputLatch ; DACB: F0 19 - LDA menu_input_latch ; DACD: A5 0A - BNE LatchMenuInput ; DACF: D0 0B - LDY menu_selection ; DAD1: A4 0D - INY ; DAD3: C8 - CPY #$03 ; DAD4: C0 03 - BCC StoreMenuSelection ; DAD6: 90 02 - LDY #$00 ; DAD8: A0 00 + JSR StrobeAndReadController ; CPU:$DAA2 PRG:1AA2 20 7B C5 + LDA JOY1 ; CPU:$DAA5 PRG:1AA5 AD 16 40 + LDA JOY1 ; CPU:$DAA8 PRG:1AA8 AD 16 40 + LDA title_input_mode ; CPU:$DAAB PRG:1AAB A5 09 + BNE ReleaseMenuInputLatch_Loop ; CPU:$DAAD PRG:1AAD D0 3D + LDY menu_selection ; CPU:$DAAF PRG:1AAF A4 0D + LDA MenuCursorYPositions,Y ; CPU:$DAB1 PRG:1AB1 B9 0D DB + STA $0200 ; CPU:$DAB4 PRG:1AB4 8D 00 02 + LDA #$BA ; CPU:$DAB7 PRG:1AB7 A9 BA + STA $0201 ; CPU:$DAB9 PRG:1AB9 8D 01 02 + LDA #$00 ; CPU:$DABC PRG:1ABC A9 00 + STA $0202 ; CPU:$DABE PRG:1ABE 8D 02 02 + LDA #$28 ; CPU:$DAC1 PRG:1AC1 A9 28 + STA $0203 ; CPU:$DAC3 PRG:1AC3 8D 03 02 + LDA JOY1 ; CPU:$DAC6 PRG:1AC6 AD 16 40 + AND #$01 ; CPU:$DAC9 PRG:1AC9 29 01 + BEQ ReleaseMenuInputLatch ; CPU:$DACB PRG:1ACB F0 19 + LDA menu_input_latch ; CPU:$DACD PRG:1ACD A5 0A + BNE LatchMenuInput ; CPU:$DACF PRG:1ACF D0 0B + LDY menu_selection ; CPU:$DAD1 PRG:1AD1 A4 0D + INY ; CPU:$DAD3 PRG:1AD3 C8 + CPY #$03 ; CPU:$DAD4 PRG:1AD4 C0 03 + BCC StoreMenuSelection ; CPU:$DAD6 PRG:1AD6 90 02 + LDY #$00 ; CPU:$DAD8 PRG:1AD8 A0 00 ; --------------------------------------------------------------------------- ; StoreMenuSelection @@ -8216,7 +8216,7 @@ TitleAndAttractNmi: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- StoreMenuSelection: - STY menu_selection ; DADA: 84 0D + STY menu_selection ; CPU:$DADA PRG:1ADA 84 0D ; --------------------------------------------------------------------------- ; LatchMenuInput @@ -8234,11 +8234,11 @@ StoreMenuSelection: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- LatchMenuInput: - LDA #$01 ; DADC: A9 01 - STA menu_input_latch ; DADE: 85 0A - LDX #$FF ; DAE0: A2 FF - TXS ; DAE2: 9A - JMP SubCDA4C ; DAE3: 4C 4C DA + LDA #$01 ; CPU:$DADC PRG:1ADC A9 01 + STA menu_input_latch ; CPU:$DADE PRG:1ADE 85 0A + LDX #$FF ; CPU:$DAE0 PRG:1AE0 A2 FF + TXS ; CPU:$DAE2 PRG:1AE2 9A + JMP SubCDA4C ; CPU:$DAE3 PRG:1AE3 4C 4C DA ; --------------------------------------------------------------------------- ; ReleaseMenuInputLatch @@ -8256,9 +8256,9 @@ LatchMenuInput: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ReleaseMenuInputLatch: - LDA #$00 ; DAE6: A9 00 - STA menu_input_latch ; DAE8: 85 0A - BEQ Label_DAFD ; DAEA: F0 11 + LDA #$00 ; CPU:$DAE6 PRG:1AE6 A9 00 + STA menu_input_latch ; CPU:$DAE8 PRG:1AE8 85 0A + BEQ ReleaseMenuInputLatch_Loop2; CPU:$DAEA PRG:1AEA F0 11 ; --------------------------------------------------------------------------- ; Label_DAEC @@ -8275,15 +8275,15 @@ ReleaseMenuInputLatch: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DAEC: - CMP #$02 ; DAEC: C9 02 - BEQ Label_DB0A ; DAEE: F0 1A - LDA JOY1 ; DAF0: AD 16 40 - AND #$01 ; DAF3: 29 01 - BEQ Label_DAFD ; DAF5: F0 06 - LDX #$FF ; DAF7: A2 FF - TXS ; DAF9: 9A - JMP SubCDA2F ; DAFA: 4C 2F DA +ReleaseMenuInputLatch_Loop: + CMP #$02 ; CPU:$DAEC PRG:1AEC C9 02 + BEQ ReleaseMenuInputLatch_Loop3; CPU:$DAEE PRG:1AEE F0 1A + LDA JOY1 ; CPU:$DAF0 PRG:1AF0 AD 16 40 + AND #$01 ; CPU:$DAF3 PRG:1AF3 29 01 + BEQ ReleaseMenuInputLatch_Loop2; CPU:$DAF5 PRG:1AF5 F0 06 + LDX #$FF ; CPU:$DAF7 PRG:1AF7 A2 FF + TXS ; CPU:$DAF9 PRG:1AF9 9A + JMP SubCDA2F ; CPU:$DAFA PRG:1AFA 4C 2F DA ; --------------------------------------------------------------------------- ; Label_DAFD @@ -8300,13 +8300,13 @@ Label_DAEC: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DAFD: - LDA JOY1 ; DAFD: AD 16 40 - AND #$01 ; DB00: 29 01 - BEQ Label_DB0A ; DB02: F0 06 - LDX #$FF ; DB04: A2 FF - TXS ; DB06: 9A - JMP InitializeRuntimeState ; DB07: 4C C7 C0 +ReleaseMenuInputLatch_Loop2: + LDA JOY1 ; CPU:$DAFD PRG:1AFD AD 16 40 + AND #$01 ; CPU:$DB00 PRG:1B00 29 01 + BEQ ReleaseMenuInputLatch_Loop3; CPU:$DB02 PRG:1B02 F0 06 + LDX #$FF ; CPU:$DB04 PRG:1B04 A2 FF + TXS ; CPU:$DB06 PRG:1B06 9A + JMP InitializeRuntimeState ; CPU:$DB07 PRG:1B07 4C C7 C0 ; --------------------------------------------------------------------------- ; Label_DB0A @@ -8323,11 +8323,11 @@ Label_DAFD: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB0A: - JMP NmiEpilogue ; DB0A: 4C B8 C0 +ReleaseMenuInputLatch_Loop3: + JMP NmiEpilogue ; CPU:$DB0A PRG:1B0A 4C B8 C0 ; Menu cursor Y coordinates for the three selectable title entries. MenuCursorYPositions: - .byte $78,$88,$98 ; DB0D-DB0F: 78 88 98 + .byte $78,$88,$98 ; DB0D-DB0F: 78 88 98 ; CPU:$DB0D PRG:1B0D 78 88 98 ; --------------------------------------------------------------------------- ; SubCDB10 @@ -8345,10 +8345,10 @@ MenuCursorYPositions: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDB10: - LDX #$20 ; DB10: A2 20 - LDA #$00 ; DB12: A9 00 - JSR SetPpuAddress ; DB14: 20 C1 C8 - TAY ; DB17: A8 + LDX #$20 ; CPU:$DB10 PRG:1B10 A2 20 + LDA #$00 ; CPU:$DB12 PRG:1B12 A9 00 + JSR SetPpuAddress ; CPU:$DB14 PRG:1B14 20 C1 C8 + TAY ; CPU:$DB17 PRG:1B17 A8 ; --------------------------------------------------------------------------- ; Label_DB18 @@ -8365,21 +8365,21 @@ SubCDB10: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB18: - LDA #$B8 ; DB18: A9 B8 - STA PPUDATA ; DB1A: 8D 07 20 - STA PPUDATA ; DB1D: 8D 07 20 - STA PPUDATA ; DB20: 8D 07 20 - STA PPUDATA ; DB23: 8D 07 20 - LDA #$FF ; DB26: A9 FF - STA $0200,Y ; DB28: 99 00 02 - INY ; DB2B: C8 - BNE Label_DB18 ; DB2C: D0 EA - LDA #$20 ; DB2E: A9 20 - STA $04 ; DB30: 85 04 - LDA #$85 ; DB32: A9 85 - STA $05 ; DB34: 85 05 - LDX #$00 ; DB36: A2 00 +SubCDB10_OnNonzero: + LDA #$B8 ; CPU:$DB18 PRG:1B18 A9 B8 + STA PPUDATA ; CPU:$DB1A PRG:1B1A 8D 07 20 + STA PPUDATA ; CPU:$DB1D PRG:1B1D 8D 07 20 + STA PPUDATA ; CPU:$DB20 PRG:1B20 8D 07 20 + STA PPUDATA ; CPU:$DB23 PRG:1B23 8D 07 20 + LDA #$FF ; CPU:$DB26 PRG:1B26 A9 FF + STA $0200,Y ; CPU:$DB28 PRG:1B28 99 00 02 + INY ; CPU:$DB2B PRG:1B2B C8 + BNE SubCDB10_OnNonzero ; CPU:$DB2C PRG:1B2C D0 EA + LDA #$20 ; CPU:$DB2E PRG:1B2E A9 20 + STA source_pointer_lo ; CPU:$DB30 PRG:1B30 85 04 + LDA #$85 ; CPU:$DB32 PRG:1B32 A9 85 + STA source_pointer_hi ; CPU:$DB34 PRG:1B34 85 05 + LDX #$00 ; CPU:$DB36 PRG:1B36 A2 00 ; --------------------------------------------------------------------------- ; Label_DB38 @@ -8396,12 +8396,12 @@ Label_DB18: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB38: - LDY #$00 ; DB38: A0 00 - LDA $04 ; DB3A: A5 04 - STA PPUADDR ; DB3C: 8D 06 20 - LDA $05 ; DB3F: A5 05 - STA PPUADDR ; DB41: 8D 06 20 +SubCDB10_OnCarryClear: + LDY #$00 ; CPU:$DB38 PRG:1B38 A0 00 + LDA source_pointer_lo ; CPU:$DB3A PRG:1B3A A5 04 + STA PPUADDR ; CPU:$DB3C PRG:1B3C 8D 06 20 + LDA source_pointer_hi ; CPU:$DB3F PRG:1B3F A5 05 + STA PPUADDR ; CPU:$DB41 PRG:1B41 8D 06 20 ; --------------------------------------------------------------------------- ; Label_DB44 @@ -8418,19 +8418,19 @@ Label_DB38: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB44: - LDA $DC59,X ; DB44: BD 59 DC - STA PPUDATA ; DB47: 8D 07 20 - INX ; DB4A: E8 - INY ; DB4B: C8 - CPY #$17 ; DB4C: C0 17 - BCC Label_DB44 ; DB4E: 90 F4 - LDA $05 ; DB50: A5 05 - CLC ; DB52: 18 - ADC #$20 ; DB53: 69 20 - STA $05 ; DB55: 85 05 - BCC Label_DB5B ; DB57: 90 02 - INC $04 ; DB59: E6 04 +SubCDB10_OnCarryClear2: + LDA $DC59,X ; CPU:$DB44 PRG:1B44 BD 59 DC + STA PPUDATA ; CPU:$DB47 PRG:1B47 8D 07 20 + INX ; CPU:$DB4A PRG:1B4A E8 + INY ; CPU:$DB4B PRG:1B4B C8 + CPY #$17 ; CPU:$DB4C PRG:1B4C C0 17 + BCC SubCDB10_OnCarryClear2 ; CPU:$DB4E PRG:1B4E 90 F4 + LDA source_pointer_hi ; CPU:$DB50 PRG:1B50 A5 05 + CLC ; CPU:$DB52 PRG:1B52 18 + ADC #$20 ; CPU:$DB53 PRG:1B53 69 20 + STA source_pointer_hi ; CPU:$DB55 PRG:1B55 85 05 + BCC SubCDB10_Loop ; CPU:$DB57 PRG:1B57 90 02 + INC source_pointer_lo ; CPU:$DB59 PRG:1B59 E6 04 ; --------------------------------------------------------------------------- ; Label_DB5B @@ -8447,14 +8447,14 @@ Label_DB44: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB5B: - CPX #$CF ; DB5B: E0 CF - BCC Label_DB38 ; DB5D: 90 D9 - LDX #$23 ; DB5F: A2 23 - LDA #$C0 ; DB61: A9 C0 - JSR SetPpuAddress ; DB63: 20 C1 C8 - LDA #$00 ; DB66: A9 00 - TAX ; DB68: AA +SubCDB10_Loop: + CPX #$CF ; CPU:$DB5B PRG:1B5B E0 CF + BCC SubCDB10_OnCarryClear ; CPU:$DB5D PRG:1B5D 90 D9 + LDX #$23 ; CPU:$DB5F PRG:1B5F A2 23 + LDA #$C0 ; CPU:$DB61 PRG:1B61 A9 C0 + JSR SetPpuAddress ; CPU:$DB63 PRG:1B63 20 C1 C8 + LDA #$00 ; CPU:$DB66 PRG:1B66 A9 00 + TAX ; CPU:$DB68 PRG:1B68 AA ; --------------------------------------------------------------------------- ; Label_DB69 @@ -8471,11 +8471,11 @@ Label_DB5B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB69: - STA PPUDATA ; DB69: 8D 07 20 - CPX #$18 ; DB6C: E0 18 - BNE Label_DB72 ; DB6E: D0 02 - LDA #$50 ; DB70: A9 50 +SubCDB10_OnCarryClear3: + STA PPUDATA ; CPU:$DB69 PRG:1B69 8D 07 20 + CPX #$18 ; CPU:$DB6C PRG:1B6C E0 18 + BNE SubCDB10_Loop2 ; CPU:$DB6E PRG:1B6E D0 02 + LDA #$50 ; CPU:$DB70 PRG:1B70 A9 50 ; --------------------------------------------------------------------------- ; Label_DB72 @@ -8492,10 +8492,10 @@ Label_DB69: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB72: - CPX #$20 ; DB72: E0 20 - BNE Label_DB78 ; DB74: D0 02 - LDA #$55 ; DB76: A9 55 +SubCDB10_Loop2: + CPX #$20 ; CPU:$DB72 PRG:1B72 E0 20 + BNE SubCDB10_Loop3 ; CPU:$DB74 PRG:1B74 D0 02 + LDA #$55 ; CPU:$DB76 PRG:1B76 A9 55 ; --------------------------------------------------------------------------- ; Label_DB78 @@ -8512,10 +8512,10 @@ Label_DB72: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB78: - CPX #$28 ; DB78: E0 28 - BNE Label_DB7E ; DB7A: D0 02 - LDA #$AF ; DB7C: A9 AF +SubCDB10_Loop3: + CPX #$28 ; CPU:$DB78 PRG:1B78 E0 28 + BNE SubCDB10_Loop4 ; CPU:$DB7A PRG:1B7A D0 02 + LDA #$AF ; CPU:$DB7C PRG:1B7C A9 AF ; --------------------------------------------------------------------------- ; Label_DB7E @@ -8532,10 +8532,10 @@ Label_DB78: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB7E: - CPX #$30 ; DB7E: E0 30 - BNE Label_DB84 ; DB80: D0 02 - LDA #$FF ; DB82: A9 FF +SubCDB10_Loop4: + CPX #$30 ; CPU:$DB7E PRG:1B7E E0 30 + BNE SubCDB10_Loop5 ; CPU:$DB80 PRG:1B80 D0 02 + LDA #$FF ; CPU:$DB82 PRG:1B82 A9 FF ; --------------------------------------------------------------------------- ; Label_DB84 @@ -8552,15 +8552,15 @@ Label_DB7E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB84: - INX ; DB84: E8 - CPX #$40 ; DB85: E0 40 - BCC Label_DB69 ; DB87: 90 E0 - JSR WaitForFrame ; DB89: 20 F3 C8 - LDX #$3F ; DB8C: A2 3F - LDA #$00 ; DB8E: A9 00 - JSR SetPpuAddress ; DB90: 20 C1 C8 - TAX ; DB93: AA +SubCDB10_Loop5: + INX ; CPU:$DB84 PRG:1B84 E8 + CPX #$40 ; CPU:$DB85 PRG:1B85 E0 40 + BCC SubCDB10_OnCarryClear3 ; CPU:$DB87 PRG:1B87 90 E0 + JSR WaitForFrame ; CPU:$DB89 PRG:1B89 20 F3 C8 + LDX #$3F ; CPU:$DB8C PRG:1B8C A2 3F + LDA #$00 ; CPU:$DB8E PRG:1B8E A9 00 + JSR SetPpuAddress ; CPU:$DB90 PRG:1B90 20 C1 C8 + TAX ; CPU:$DB93 PRG:1B93 AA ; --------------------------------------------------------------------------- ; Label_DB94 @@ -8577,18 +8577,18 @@ Label_DB84: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DB94: - LDA $DD28,X ; DB94: BD 28 DD - STA PPUDATA ; DB97: 8D 07 20 - INX ; DB9A: E8 - CPX #$14 ; DB9B: E0 14 - BCC Label_DB94 ; DB9D: 90 F5 - LDX #$21 ; DB9F: A2 21 - LDA #$E7 ; DBA1: A9 E7 - JSR SetPpuAddress ; DBA3: 20 C1 C8 - LDX #$01 ; DBA6: A2 01 - STX PPUDATA ; DBA8: 8E 07 20 - DEX ; DBAB: CA +SubCDB10_OnCarryClear4: + LDA $DD28,X ; CPU:$DB94 PRG:1B94 BD 28 DD + STA PPUDATA ; CPU:$DB97 PRG:1B97 8D 07 20 + INX ; CPU:$DB9A PRG:1B9A E8 + CPX #$14 ; CPU:$DB9B PRG:1B9B E0 14 + BCC SubCDB10_OnCarryClear4 ; CPU:$DB9D PRG:1B9D 90 F5 + LDX #$21 ; CPU:$DB9F PRG:1B9F A2 21 + LDA #$E7 ; CPU:$DBA1 PRG:1BA1 A9 E7 + JSR SetPpuAddress ; CPU:$DBA3 PRG:1BA3 20 C1 C8 + LDX #$01 ; CPU:$DBA6 PRG:1BA6 A2 01 + STX PPUDATA ; CPU:$DBA8 PRG:1BA8 8E 07 20 + DEX ; CPU:$DBAB PRG:1BAB CA ; --------------------------------------------------------------------------- ; Label_DBAC @@ -8605,18 +8605,18 @@ Label_DB94: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DBAC: - LDA $DD3C,X ; DBAC: BD 3C DD - STA PPUDATA ; DBAF: 8D 07 20 - INX ; DBB2: E8 - CPX #$13 ; DBB3: E0 13 - BCC Label_DBAC ; DBB5: 90 F5 - LDX #$22 ; DBB7: A2 22 - LDA #$27 ; DBB9: A9 27 - JSR SetPpuAddress ; DBBB: 20 C1 C8 - LDA #$02 ; DBBE: A9 02 - STA PPUDATA ; DBC0: 8D 07 20 - LDX #$00 ; DBC3: A2 00 +SubCDB10_OnCarryClear5: + LDA $DD3C,X ; CPU:$DBAC PRG:1BAC BD 3C DD + STA PPUDATA ; CPU:$DBAF PRG:1BAF 8D 07 20 + INX ; CPU:$DBB2 PRG:1BB2 E8 + CPX #$13 ; CPU:$DBB3 PRG:1BB3 E0 13 + BCC SubCDB10_OnCarryClear5 ; CPU:$DBB5 PRG:1BB5 90 F5 + LDX #$22 ; CPU:$DBB7 PRG:1BB7 A2 22 + LDA #$27 ; CPU:$DBB9 PRG:1BB9 A9 27 + JSR SetPpuAddress ; CPU:$DBBB PRG:1BBB 20 C1 C8 + LDA #$02 ; CPU:$DBBE PRG:1BBE A9 02 + STA PPUDATA ; CPU:$DBC0 PRG:1BC0 8D 07 20 + LDX #$00 ; CPU:$DBC3 PRG:1BC3 A2 00 ; --------------------------------------------------------------------------- ; Label_DBC5 @@ -8633,18 +8633,18 @@ Label_DBAC: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DBC5: - LDA $DD3C,X ; DBC5: BD 3C DD - STA PPUDATA ; DBC8: 8D 07 20 - INX ; DBCB: E8 - CPX #$13 ; DBCC: E0 13 - BCC Label_DBC5 ; DBCE: 90 F5 - LDX #$22 ; DBD0: A2 22 - LDA #$67 ; DBD2: A9 67 - JSR SetPpuAddress ; DBD4: 20 C1 C8 - LDA #$02 ; DBD7: A9 02 - STA PPUDATA ; DBD9: 8D 07 20 - LDX #$00 ; DBDC: A2 00 +SubCDB10_OnCarryClear6: + LDA $DD3C,X ; CPU:$DBC5 PRG:1BC5 BD 3C DD + STA PPUDATA ; CPU:$DBC8 PRG:1BC8 8D 07 20 + INX ; CPU:$DBCB PRG:1BCB E8 + CPX #$13 ; CPU:$DBCC PRG:1BCC E0 13 + BCC SubCDB10_OnCarryClear6 ; CPU:$DBCE PRG:1BCE 90 F5 + LDX #$22 ; CPU:$DBD0 PRG:1BD0 A2 22 + LDA #$67 ; CPU:$DBD2 PRG:1BD2 A9 67 + JSR SetPpuAddress ; CPU:$DBD4 PRG:1BD4 20 C1 C8 + LDA #$02 ; CPU:$DBD7 PRG:1BD7 A9 02 + STA PPUDATA ; CPU:$DBD9 PRG:1BD9 8D 07 20 + LDX #$00 ; CPU:$DBDC PRG:1BDC A2 00 ; --------------------------------------------------------------------------- ; Label_DBDE @@ -8661,25 +8661,25 @@ Label_DBC5: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DBDE: - LDA $DD4F,X ; DBDE: BD 4F DD - STA PPUDATA ; DBE1: 8D 07 20 - INX ; DBE4: E8 - CPX #$13 ; DBE5: E0 13 - BCC Label_DBDE ; DBE7: 90 F5 - LDX #$22 ; DBE9: A2 22 - LDA #$CA ; DBEB: A9 CA - JSR SetPpuAddress ; DBED: 20 C1 C8 - LDA #$1D ; DBF0: A9 1D - STA PPUDATA ; DBF2: 8D 07 20 - LDX #$18 ; DBF5: A2 18 - STX PPUDATA ; DBF7: 8E 07 20 - INX ; DBFA: E8 - STX PPUDATA ; DBFB: 8E 07 20 - LDX #$23 ; DBFE: A2 23 - LDA #$25 ; DC00: A9 25 - JSR SetPpuAddress ; DC02: 20 C1 C8 - LDX #$00 ; DC05: A2 00 +SubCDB10_OnCarryClear7: + LDA $DD4F,X ; CPU:$DBDE PRG:1BDE BD 4F DD + STA PPUDATA ; CPU:$DBE1 PRG:1BE1 8D 07 20 + INX ; CPU:$DBE4 PRG:1BE4 E8 + CPX #$13 ; CPU:$DBE5 PRG:1BE5 E0 13 + BCC SubCDB10_OnCarryClear7 ; CPU:$DBE7 PRG:1BE7 90 F5 + LDX #$22 ; CPU:$DBE9 PRG:1BE9 A2 22 + LDA #$CA ; CPU:$DBEB PRG:1BEB A9 CA + JSR SetPpuAddress ; CPU:$DBED PRG:1BED 20 C1 C8 + LDA #$1D ; CPU:$DBF0 PRG:1BF0 A9 1D + STA PPUDATA ; CPU:$DBF2 PRG:1BF2 8D 07 20 + LDX #$18 ; CPU:$DBF5 PRG:1BF5 A2 18 + STX PPUDATA ; CPU:$DBF7 PRG:1BF7 8E 07 20 + INX ; CPU:$DBFA PRG:1BFA E8 + STX PPUDATA ; CPU:$DBFB PRG:1BFB 8E 07 20 + LDX #$23 ; CPU:$DBFE PRG:1BFE A2 23 + LDA #$25 ; CPU:$DC00 PRG:1C00 A9 25 + JSR SetPpuAddress ; CPU:$DC02 PRG:1C02 20 C1 C8 + LDX #$00 ; CPU:$DC05 PRG:1C05 A2 00 ; --------------------------------------------------------------------------- ; Label_DC07 @@ -8696,32 +8696,32 @@ Label_DBDE: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DC07: - LDA $DD62,X ; DC07: BD 62 DD - STA PPUDATA ; DC0A: 8D 07 20 - INX ; DC0D: E8 - CPX #$16 ; DC0E: E0 16 - BCC Label_DC07 ; DC10: 90 F5 - LDX #$22 ; DC12: A2 22 - LDA #$D3 ; DC14: A9 D3 - JSR SetPpuAddress ; DC16: 20 C1 C8 - LDA $0E ; DC19: A5 0E - STA $19 ; DC1B: 85 19 - LDA #$00 ; DC1D: A9 00 - STA $1A ; DC1F: 85 1A - JSR SubCCA30 ; DC21: 20 30 CA - LDX #$22 ; DC24: A2 22 - LDA #$CF ; DC26: A9 CF - JSR SetPpuAddress ; DC28: 20 C1 C8 - LDA #$00 ; DC2B: A9 00 - STA $1A ; DC2D: 85 1A - LDA $0E ; DC2F: A5 0E - CMP #$48 ; DC31: C9 48 - BNE Label_DC3D ; DC33: D0 08 - LDA #$00 ; DC35: A9 00 - STA $19 ; DC37: 85 19 - LDA #$A8 ; DC39: A9 A8 - BNE Label_DC53 ; DC3B: D0 16 +SubCDB10_OnCarryClear8: + LDA $DD62,X ; CPU:$DC07 PRG:1C07 BD 62 DD + STA PPUDATA ; CPU:$DC0A PRG:1C0A 8D 07 20 + INX ; CPU:$DC0D PRG:1C0D E8 + CPX #$16 ; CPU:$DC0E PRG:1C0E E0 16 + BCC SubCDB10_OnCarryClear8 ; CPU:$DC10 PRG:1C10 90 F5 + LDX #$22 ; CPU:$DC12 PRG:1C12 A2 22 + LDA #$D3 ; CPU:$DC14 PRG:1C14 A9 D3 + JSR SetPpuAddress ; CPU:$DC16 PRG:1C16 20 C1 C8 + LDA $0E ; CPU:$DC19 PRG:1C19 A5 0E + STA $19 ; CPU:$DC1B PRG:1C1B 85 19 + LDA #$00 ; CPU:$DC1D PRG:1C1D A9 00 + STA $1A ; CPU:$DC1F PRG:1C1F 85 1A + JSR SubCCA30 ; CPU:$DC21 PRG:1C21 20 30 CA + LDX #$22 ; CPU:$DC24 PRG:1C24 A2 22 + LDA #$CF ; CPU:$DC26 PRG:1C26 A9 CF + JSR SetPpuAddress ; CPU:$DC28 PRG:1C28 20 C1 C8 + LDA #$00 ; CPU:$DC2B PRG:1C2B A9 00 + STA $1A ; CPU:$DC2D PRG:1C2D 85 1A + LDA $0E ; CPU:$DC2F PRG:1C2F A5 0E + CMP #$48 ; CPU:$DC31 PRG:1C31 C9 48 + BNE SubCDB10_Loop6 ; CPU:$DC33 PRG:1C33 D0 08 + LDA #$00 ; CPU:$DC35 PRG:1C35 A9 00 + STA $19 ; CPU:$DC37 PRG:1C37 85 19 + LDA #$A8 ; CPU:$DC39 PRG:1C39 A9 A8 + BNE SubCDB10_Loop8 ; CPU:$DC3B PRG:1C3B D0 16 ; --------------------------------------------------------------------------- ; Label_DC3D @@ -8738,14 +8738,14 @@ Label_DC07: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DC3D: - LDA $0E ; DC3D: A5 0E - SEC ; DC3F: 38 - SBC #$48 ; DC40: E9 48 - STA $19 ; DC42: 85 19 - BCC Label_DC4A ; DC44: 90 04 - LDA #$A1 ; DC46: A9 A1 - BNE Label_DC53 ; DC48: D0 09 +SubCDB10_Loop6: + LDA $0E ; CPU:$DC3D PRG:1C3D A5 0E + SEC ; CPU:$DC3F PRG:1C3F 38 + SBC #$48 ; CPU:$DC40 PRG:1C40 E9 48 + STA $19 ; CPU:$DC42 PRG:1C42 85 19 + BCC SubCDB10_Loop7 ; CPU:$DC44 PRG:1C44 90 04 + LDA #$A1 ; CPU:$DC46 PRG:1C46 A9 A1 + BNE SubCDB10_Loop8 ; CPU:$DC48 PRG:1C48 D0 09 ; --------------------------------------------------------------------------- ; Label_DC4A @@ -8762,12 +8762,12 @@ Label_DC3D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DC4A: - LDA #$48 ; DC4A: A9 48 - SEC ; DC4C: 38 - SBC $0E ; DC4D: E5 0E - STA $19 ; DC4F: 85 19 - LDA #$A2 ; DC51: A9 A2 +SubCDB10_Loop7: + LDA #$48 ; CPU:$DC4A PRG:1C4A A9 48 + SEC ; CPU:$DC4C PRG:1C4C 38 + SBC $0E ; CPU:$DC4D PRG:1C4D E5 0E + STA $19 ; CPU:$DC4F PRG:1C4F 85 19 + LDA #$A2 ; CPU:$DC51 PRG:1C51 A9 A2 ; --------------------------------------------------------------------------- ; Label_DC53 @@ -8784,9 +8784,9 @@ Label_DC4A: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DC53: - STA PPUDATA ; DC53: 8D 07 20 - JMP SubCCA30 ; DC56: 4C 30 CA +SubCDB10_Loop8: + STA PPUDATA ; CPU:$DC53 PRG:1C53 8D 07 20 + JMP SubCCA30 ; CPU:$DC56 PRG:1C56 4C 30 CA .incbin "prg.bin", $1C59, $011F ; DC59-DD77: unclassified/data ; --------------------------------------------------------------------------- @@ -8805,10 +8805,10 @@ Label_DC53: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- DecodeCoursePackage: - LDA $49 ; DD78: A5 49 - CMP $4A ; DD7A: C5 4A - BNE Label_DD7F ; DD7C: D0 01 - RTS ; DD7E: 60 + LDA $49 ; CPU:$DD78 PRG:1D78 A5 49 + CMP $4A ; CPU:$DD7A PRG:1D7A C5 4A + BNE DecodeCoursePackage_Loop ; CPU:$DD7C PRG:1D7C D0 01 + RTS ; CPU:$DD7E PRG:1D7E 60 ; --------------------------------------------------------------------------- ; Label_DD7F @@ -8825,11 +8825,11 @@ DecodeCoursePackage: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DD7F: - JSR ClearOamShadowLoop ; DD7F: 20 E8 C8 - LDA #$9D ; DD82: A9 9D - LDY #$00 ; DD84: A0 00 - STY PPUMASK ; DD86: 8C 01 20 +DecodeCoursePackage_Loop: + JSR ClearOamShadowLoop ; CPU:$DD7F PRG:1D7F 20 E8 C8 + LDA #$9D ; CPU:$DD82 PRG:1D82 A9 9D + LDY #$00 ; CPU:$DD84 PRG:1D84 A0 00 + STY PPUMASK ; CPU:$DD86 PRG:1D86 8C 01 20 ; --------------------------------------------------------------------------- ; Label_DD89 @@ -8846,12 +8846,12 @@ Label_DD7F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DD89: - STA $0300,Y ; DD89: 99 00 03 - STA $0400,Y ; DD8C: 99 00 04 - INY ; DD8F: C8 - BNE Label_DD89 ; DD90: D0 F7 - LDY #$3F ; DD92: A0 3F +DecodeCoursePackage_OnNonzero: + STA $0300,Y ; CPU:$DD89 PRG:1D89 99 00 03 + STA $0400,Y ; CPU:$DD8C PRG:1D8C 99 00 04 + INY ; CPU:$DD8F PRG:1D8F C8 + BNE DecodeCoursePackage_OnNonzero ; CPU:$DD90 PRG:1D90 D0 F7 + LDY #$3F ; CPU:$DD92 PRG:1D92 A0 3F ; --------------------------------------------------------------------------- ; Label_DD94 @@ -8868,14 +8868,14 @@ Label_DD89: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DD94: - LDA $E243,Y ; DD94: B9 43 E2 - STA $0100,Y ; DD97: 99 00 01 - DEY ; DD9A: 88 - BPL Label_DD94 ; DD9B: 10 F7 - LDA $49 ; DD9D: A5 49 - BEQ Label_DDA4 ; DD9F: F0 03 - JMP SubCE3FC ; DDA1: 4C FC E3 +DecodeCoursePackage_OnNonnegative: + LDA $E243,Y ; CPU:$DD94 PRG:1D94 B9 43 E2 + STA $0100,Y ; CPU:$DD97 PRG:1D97 99 00 01 + DEY ; CPU:$DD9A PRG:1D9A 88 + BPL DecodeCoursePackage_OnNonnegative ; CPU:$DD9B PRG:1D9B 10 F7 + LDA $49 ; CPU:$DD9D PRG:1D9D A5 49 + BEQ DecodeCoursePackage_Loop2 ; CPU:$DD9F PRG:1D9F F0 03 + JMP SubCE3FC ; CPU:$DDA1 PRG:1DA1 4C FC E3 ; --------------------------------------------------------------------------- ; Label_DDA4 @@ -8892,18 +8892,18 @@ Label_DD94: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DDA4: - LDY $2B ; DDA4: A4 2B - LDA $E6C3,Y ; DDA6: B9 C3 E6 - STA $04 ; DDA9: 85 04 - LDA $E6D5,Y ; DDAB: B9 D5 E6 - STA $05 ; DDAE: 85 05 - LDA #$00 ; DDB0: A9 00 - STA $06 ; DDB2: 85 06 - LDA #$03 ; DDB4: A9 03 - STA $07 ; DDB6: 85 07 - JSR SubCDE35 ; DDB8: 20 35 DE - TAY ; DDBB: A8 +DecodeCoursePackage_Loop2: + LDY current_hole_index ; CPU:$DDA4 PRG:1DA4 A4 2B + LDA $E6C3,Y ; CPU:$DDA6 PRG:1DA6 B9 C3 E6 + STA source_pointer_lo ; CPU:$DDA9 PRG:1DA9 85 04 + LDA $E6D5,Y ; CPU:$DDAB PRG:1DAB B9 D5 E6 + STA source_pointer_hi ; CPU:$DDAE PRG:1DAE 85 05 + LDA #$00 ; CPU:$DDB0 PRG:1DB0 A9 00 + STA destination_pointer_lo ; CPU:$DDB2 PRG:1DB2 85 06 + LDA #$03 ; CPU:$DDB4 PRG:1DB4 A9 03 + STA destination_pointer_hi ; CPU:$DDB6 PRG:1DB6 85 07 + JSR SubCDE35 ; CPU:$DDB8 PRG:1DB8 20 35 DE + TAY ; CPU:$DDBB PRG:1DBB A8 ; --------------------------------------------------------------------------- ; Label_DDBC @@ -8920,13 +8920,13 @@ Label_DDA4: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DDBC: - LDA ($04),Y ; DDBC: B1 04 - STA a:$0019,Y ; DDBE: 99 19 00 - INY ; DDC1: C8 - CPY #$03 ; DDC2: C0 03 - BCC Label_DDBC ; DDC4: 90 F6 - JSR SubCE1AB ; DDC6: 20 AB E1 +DecodeCoursePackage_OnCarryClear: + LDA (source_pointer_lo),Y ; CPU:$DDBC PRG:1DBC B1 04 + STA a:$0019,Y ; CPU:$DDBE PRG:1DBE 99 19 00 + INY ; CPU:$DDC1 PRG:1DC1 C8 + CPY #$03 ; CPU:$DDC2 PRG:1DC2 C0 03 + BCC DecodeCoursePackage_OnCarryClear ; CPU:$DDC4 PRG:1DC4 90 F6 + JSR SubCE1AB ; CPU:$DDC6 PRG:1DC6 20 AB E1 ; --------------------------------------------------------------------------- ; Label_DDC9 @@ -8943,22 +8943,22 @@ Label_DDBC: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DDC9: - LDY $1C ; DDC9: A4 1C - INC $1C ; DDCB: E6 1C - LDA ($04),Y ; DDCD: B1 04 - CMP #$FF ; DDCF: C9 FF - BEQ Label_DE3C ; DDD1: F0 69 - CMP #$30 ; DDD3: C9 30 - BCC Label_DDE7 ; DDD5: 90 10 - AND #$F0 ; DDD7: 29 F0 - CMP #$A0 ; DDD9: C9 A0 - BEQ Label_DDE7 ; DDDB: F0 0A - LDA ($04),Y ; DDDD: B1 04 - LDY $1D ; DDDF: A4 1D - STA ($06),Y ; DDE1: 91 06 - INY ; DDE3: C8 - JMP SubCDE1A ; DDE4: 4C 1A DE +DecodeCoursePackage_OnZero: + LDY $1C ; CPU:$DDC9 PRG:1DC9 A4 1C + INC $1C ; CPU:$DDCB PRG:1DCB E6 1C + LDA (source_pointer_lo),Y ; CPU:$DDCD PRG:1DCD B1 04 + CMP #$FF ; CPU:$DDCF PRG:1DCF C9 FF + BEQ SubCDE35_Loop ; CPU:$DDD1 PRG:1DD1 F0 69 + CMP #$30 ; CPU:$DDD3 PRG:1DD3 C9 30 + BCC DecodeCoursePackage_Loop3 ; CPU:$DDD5 PRG:1DD5 90 10 + AND #$F0 ; CPU:$DDD7 PRG:1DD7 29 F0 + CMP #$A0 ; CPU:$DDD9 PRG:1DD9 C9 A0 + BEQ DecodeCoursePackage_Loop3 ; CPU:$DDDB PRG:1DDB F0 0A + LDA (source_pointer_lo),Y ; CPU:$DDDD PRG:1DDD B1 04 + LDY sequence_upper_bound ; CPU:$DDDF PRG:1DDF A4 1D + STA (destination_pointer_lo),Y ; CPU:$DDE1 PRG:1DE1 91 06 + INY ; CPU:$DDE3 PRG:1DE3 C8 + JMP SubCDE1A ; CPU:$DDE4 PRG:1DE4 4C 1A DE ; --------------------------------------------------------------------------- ; Label_DDE7 @@ -8975,15 +8975,15 @@ Label_DDC9: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DDE7: - LDA ($04),Y ; DDE7: B1 04 - AND #$0F ; DDE9: 29 0F - TAX ; DDEB: AA - LDA ($04),Y ; DDEC: B1 04 - JSR SubCDA1E ; DDEE: 20 1E DA - CMP #$0A ; DDF1: C9 0A - BNE Label_DE0E ; DDF3: D0 19 - LDY $1D ; DDF5: A4 1D +DecodeCoursePackage_Loop3: + LDA (source_pointer_lo),Y ; CPU:$DDE7 PRG:1DE7 B1 04 + AND #$0F ; CPU:$DDE9 PRG:1DE9 29 0F + TAX ; CPU:$DDEB PRG:1DEB AA + LDA (source_pointer_lo),Y ; CPU:$DDEC PRG:1DEC B1 04 + JSR SubCDA1E ; CPU:$DDEE PRG:1DEE 20 1E DA + CMP #$0A ; CPU:$DDF1 PRG:1DF1 C9 0A + BNE DecodeCoursePackage_Loop5 ; CPU:$DDF3 PRG:1DF3 D0 19 + LDY sequence_upper_bound ; CPU:$DDF5 PRG:1DF5 A4 1D ; --------------------------------------------------------------------------- ; Label_DDF7 @@ -9000,13 +9000,13 @@ Label_DDE7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DDF7: - INC $8D ; DDF7: E6 8D - LDA $8D ; DDF9: A5 8D - CMP #$03 ; DDFB: C9 03 - BCC Label_DE03 ; DDFD: 90 04 - LDA #$00 ; DDFF: A9 00 - STA $8D ; DE01: 85 8D +DecodeCoursePackage_OnNonnegative2: + INC $8D ; CPU:$DDF7 PRG:1DF7 E6 8D + LDA $8D ; CPU:$DDF9 PRG:1DF9 A5 8D + CMP #$03 ; CPU:$DDFB PRG:1DFB C9 03 + BCC DecodeCoursePackage_Loop4 ; CPU:$DDFD PRG:1DFD 90 04 + LDA #$00 ; CPU:$DDFF PRG:1DFF A9 00 + STA $8D ; CPU:$DE01 PRG:1E01 85 8D ; --------------------------------------------------------------------------- ; Label_DE03 @@ -9023,14 +9023,14 @@ Label_DDF7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DE03: - CLC ; DE03: 18 - ADC #$AB ; DE04: 69 AB - STA ($06),Y ; DE06: 91 06 - INY ; DE08: C8 - DEX ; DE09: CA - BPL Label_DDF7 ; DE0A: 10 EB - BMI SubCDE1A ; DE0C: 30 0C +DecodeCoursePackage_Loop4: + CLC ; CPU:$DE03 PRG:1E03 18 + ADC #$AB ; CPU:$DE04 PRG:1E04 69 AB + STA (destination_pointer_lo),Y ; CPU:$DE06 PRG:1E06 91 06 + INY ; CPU:$DE08 PRG:1E08 C8 + DEX ; CPU:$DE09 PRG:1E09 CA + BPL DecodeCoursePackage_OnNonnegative2 ; CPU:$DE0A PRG:1E0A 10 EB + BMI SubCDE1A ; CPU:$DE0C PRG:1E0C 30 0C ; --------------------------------------------------------------------------- ; Label_DE0E @@ -9047,10 +9047,10 @@ Label_DE03: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DE0E: - TAY ; DE0E: A8 - LDA a:$0019,Y ; DE0F: B9 19 00 - LDY $1D ; DE12: A4 1D +DecodeCoursePackage_Loop5: + TAY ; CPU:$DE0E PRG:1E0E A8 + LDA a:$0019,Y ; CPU:$DE0F PRG:1E0F B9 19 00 + LDY sequence_upper_bound ; CPU:$DE12 PRG:1E12 A4 1D ; --------------------------------------------------------------------------- ; Label_DE14 @@ -9067,11 +9067,11 @@ Label_DE0E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DE14: - STA ($06),Y ; DE14: 91 06 - INY ; DE16: C8 - DEX ; DE17: CA - BPL Label_DE14 ; DE18: 10 FA +DecodeCoursePackage_OnNonnegative3: + STA (destination_pointer_lo),Y ; CPU:$DE14 PRG:1E14 91 06 + INY ; CPU:$DE16 PRG:1E16 C8 + DEX ; CPU:$DE17 PRG:1E17 CA + BPL DecodeCoursePackage_OnNonnegative3 ; CPU:$DE18 PRG:1E18 10 FA ; --------------------------------------------------------------------------- ; SubCDE1A @@ -9089,17 +9089,17 @@ Label_DE14: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDE1A: - STY $1D ; DE1A: 84 1D - CPY #$10 ; DE1C: C0 10 - BCC Label_DDC9 ; DE1E: 90 A9 - LDY $1C ; DE20: A4 1C - JSR SubCE1AB ; DE22: 20 AB E1 - LDA $06 ; DE25: A5 06 - CLC ; DE27: 18 - ADC #$10 ; DE28: 69 10 - STA $06 ; DE2A: 85 06 - BCC Label_DE30 ; DE2C: 90 02 - INC $07 ; DE2E: E6 07 + STY sequence_upper_bound ; CPU:$DE1A PRG:1E1A 84 1D + CPY #$10 ; CPU:$DE1C PRG:1E1C C0 10 + BCC DecodeCoursePackage_OnZero ; CPU:$DE1E PRG:1E1E 90 A9 + LDY $1C ; CPU:$DE20 PRG:1E20 A4 1C + JSR SubCE1AB ; CPU:$DE22 PRG:1E22 20 AB E1 + LDA destination_pointer_lo ; CPU:$DE25 PRG:1E25 A5 06 + CLC ; CPU:$DE27 PRG:1E27 18 + ADC #$10 ; CPU:$DE28 PRG:1E28 69 10 + STA destination_pointer_lo ; CPU:$DE2A PRG:1E2A 85 06 + BCC SubCDE1A_Loop ; CPU:$DE2C PRG:1E2C 90 02 + INC destination_pointer_hi ; CPU:$DE2E PRG:1E2E E6 07 ; --------------------------------------------------------------------------- ; Label_DE30 @@ -9116,9 +9116,9 @@ SubCDE1A: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DE30: - JSR SubCDE35 ; DE30: 20 35 DE - BEQ Label_DDC9 ; DE33: F0 94 +SubCDE1A_Loop: + JSR SubCDE35 ; CPU:$DE30 PRG:1E30 20 35 DE + BEQ DecodeCoursePackage_OnZero ; CPU:$DE33 PRG:1E33 F0 94 ; --------------------------------------------------------------------------- ; SubCDE35 @@ -9136,10 +9136,10 @@ Label_DE30: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDE35: - LDA #$00 ; DE35: A9 00 - STA $1C ; DE37: 85 1C - STA $1D ; DE39: 85 1D - RTS ; DE3B: 60 + LDA #$00 ; CPU:$DE35 PRG:1E35 A9 00 + STA $1C ; CPU:$DE37 PRG:1E37 85 1C + STA sequence_upper_bound ; CPU:$DE39 PRG:1E39 85 1D + RTS ; CPU:$DE3B PRG:1E3B 60 ; --------------------------------------------------------------------------- ; Label_DE3C @@ -9156,15 +9156,15 @@ SubCDE35: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DE3C: - INY ; DE3C: C8 - JSR SubCE1AB ; DE3D: 20 AB E1 - LDA ($04),Y ; DE40: B1 04 - INY ; DE42: C8 - CMP #$55 ; DE43: C9 55 - BEQ ParseHoleObjectPackage ; DE45: F0 17 - LDY #$00 ; DE47: A0 00 - LDX #$04 ; DE49: A2 04 +SubCDE35_Loop: + INY ; CPU:$DE3C PRG:1E3C C8 + JSR SubCE1AB ; CPU:$DE3D PRG:1E3D 20 AB E1 + LDA (source_pointer_lo),Y ; CPU:$DE40 PRG:1E40 B1 04 + INY ; CPU:$DE42 PRG:1E42 C8 + CMP #$55 ; CPU:$DE43 PRG:1E43 C9 55 + BEQ ParseHoleObjectPackage ; CPU:$DE45 PRG:1E45 F0 17 + LDY #$00 ; CPU:$DE47 PRG:1E47 A0 00 + LDX #$04 ; CPU:$DE49 PRG:1E49 A2 04 ; --------------------------------------------------------------------------- ; Label_DE4B @@ -9181,17 +9181,17 @@ Label_DE3C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DE4B: - LDA ($04),Y ; DE4B: B1 04 - STA $0100,X ; DE4D: 9D 00 01 - INY ; DE50: C8 - INX ; DE51: E8 - TXA ; DE52: 8A - AND #$07 ; DE53: 29 07 - BNE Label_DE4B ; DE55: D0 F4 - JSR SubCD4F2 ; DE57: 20 F2 D4 - CPX #$44 ; DE5A: E0 44 - BCC Label_DE4B ; DE5C: 90 ED +SubCDE35_OnNonzero: + LDA (source_pointer_lo),Y ; CPU:$DE4B PRG:1E4B B1 04 + STA $0100,X ; CPU:$DE4D PRG:1E4D 9D 00 01 + INY ; CPU:$DE50 PRG:1E50 C8 + INX ; CPU:$DE51 PRG:1E51 E8 + TXA ; CPU:$DE52 PRG:1E52 8A + AND #$07 ; CPU:$DE53 PRG:1E53 29 07 + BNE SubCDE35_OnNonzero ; CPU:$DE55 PRG:1E55 D0 F4 + JSR SubCD4F2 ; CPU:$DE57 PRG:1E57 20 F2 D4 + CPX #$44 ; CPU:$DE5A PRG:1E5A E0 44 + BCC SubCDE35_OnNonzero ; CPU:$DE5C PRG:1E5C 90 ED ; --------------------------------------------------------------------------- ; ParseHoleObjectPackage @@ -9209,46 +9209,46 @@ Label_DE4B: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ParseHoleObjectPackage: - JSR SubCE1AB ; DE5E: 20 AB E1 - LDX #$98 ; DE61: A2 98 - LDA ($04),Y ; DE63: B1 04 - STA $0200,X ; DE65: 9D 00 02 - CLC ; DE68: 18 - ADC #$07 ; DE69: 69 07 - STA $65 ; DE6B: 85 65 - INY ; DE6D: C8 - INX ; DE6E: E8 - LDA #$DA ; DE6F: A9 DA - STA $0200,X ; DE71: 9D 00 02 - INX ; DE74: E8 - LDA #$01 ; DE75: A9 01 - STA $0200,X ; DE77: 9D 00 02 - INX ; DE7A: E8 - LDA ($04),Y ; DE7B: B1 04 - STA $0200,X ; DE7D: 9D 00 02 - CLC ; DE80: 18 - ADC #$02 ; DE81: 69 02 - STA $66 ; DE83: 85 66 - INY ; DE85: C8 - INX ; DE86: E8 - LDA ($04),Y ; DE87: B1 04 - PHA ; DE89: 48 - LSR A ; DE8A: 4A - STA $57 ; DE8B: 85 57 - INY ; DE8D: C8 - LDA ($04),Y ; DE8E: B1 04 - STA $1A ; DE90: 85 1A - INY ; DE92: C8 - LDA ($04),Y ; DE93: B1 04 - STA $1B ; DE95: 85 1B - INY ; DE97: C8 - STY $1C ; DE98: 84 1C - PLA ; DE9A: 68 - TAY ; DE9B: A8 - LDA $E37E,Y ; DE9C: B9 7E E3 - STA $19 ; DE9F: 85 19 - LDA $E37D,Y ; DEA1: B9 7D E3 - TAY ; DEA4: A8 + JSR SubCE1AB ; CPU:$DE5E PRG:1E5E 20 AB E1 + LDX #$98 ; CPU:$DE61 PRG:1E61 A2 98 + LDA (source_pointer_lo),Y ; CPU:$DE63 PRG:1E63 B1 04 + STA $0200,X ; CPU:$DE65 PRG:1E65 9D 00 02 + CLC ; CPU:$DE68 PRG:1E68 18 + ADC #$07 ; CPU:$DE69 PRG:1E69 69 07 + STA $65 ; CPU:$DE6B PRG:1E6B 85 65 + INY ; CPU:$DE6D PRG:1E6D C8 + INX ; CPU:$DE6E PRG:1E6E E8 + LDA #$DA ; CPU:$DE6F PRG:1E6F A9 DA + STA $0200,X ; CPU:$DE71 PRG:1E71 9D 00 02 + INX ; CPU:$DE74 PRG:1E74 E8 + LDA #$01 ; CPU:$DE75 PRG:1E75 A9 01 + STA $0200,X ; CPU:$DE77 PRG:1E77 9D 00 02 + INX ; CPU:$DE7A PRG:1E7A E8 + LDA (source_pointer_lo),Y ; CPU:$DE7B PRG:1E7B B1 04 + STA $0200,X ; CPU:$DE7D PRG:1E7D 9D 00 02 + CLC ; CPU:$DE80 PRG:1E80 18 + ADC #$02 ; CPU:$DE81 PRG:1E81 69 02 + STA $66 ; CPU:$DE83 PRG:1E83 85 66 + INY ; CPU:$DE85 PRG:1E85 C8 + INX ; CPU:$DE86 PRG:1E86 E8 + LDA (source_pointer_lo),Y ; CPU:$DE87 PRG:1E87 B1 04 + PHA ; CPU:$DE89 PRG:1E89 48 + LSR A ; CPU:$DE8A PRG:1E8A 4A + STA $57 ; CPU:$DE8B PRG:1E8B 85 57 + INY ; CPU:$DE8D PRG:1E8D C8 + LDA (source_pointer_lo),Y ; CPU:$DE8E PRG:1E8E B1 04 + STA $1A ; CPU:$DE90 PRG:1E90 85 1A + INY ; CPU:$DE92 PRG:1E92 C8 + LDA (source_pointer_lo),Y ; CPU:$DE93 PRG:1E93 B1 04 + STA $1B ; CPU:$DE95 PRG:1E95 85 1B + INY ; CPU:$DE97 PRG:1E97 C8 + STY $1C ; CPU:$DE98 PRG:1E98 84 1C + PLA ; CPU:$DE9A PRG:1E9A 68 + TAY ; CPU:$DE9B PRG:1E9B A8 + LDA $E37E,Y ; CPU:$DE9C PRG:1E9C B9 7E E3 + STA $19 ; CPU:$DE9F PRG:1E9F 85 19 + LDA $E37D,Y ; CPU:$DEA1 PRG:1EA1 B9 7D E3 + TAY ; CPU:$DEA4 PRG:1EA4 A8 ; --------------------------------------------------------------------------- ; Label_DEA5 @@ -9265,53 +9265,53 @@ ParseHoleObjectPackage: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DEA5: - LDA $E384,Y ; DEA5: B9 84 E3 - CLC ; DEA8: 18 - ADC $1A ; DEA9: 65 1A - STA $0200,X ; DEAB: 9D 00 02 - INX ; DEAE: E8 - LDA $E3A2,Y ; DEAF: B9 A2 E3 - STA $0200,X ; DEB2: 9D 00 02 - INX ; DEB5: E8 - LDA $E3C0,Y ; DEB6: B9 C0 E3 - STA $0200,X ; DEB9: 9D 00 02 - INX ; DEBC: E8 - LDA $E3DE,Y ; DEBD: B9 DE E3 - CLC ; DEC0: 18 - ADC $1B ; DEC1: 65 1B - STA $0200,X ; DEC3: 9D 00 02 - INX ; DEC6: E8 - INY ; DEC7: C8 - CPY $19 ; DEC8: C4 19 - BCC Label_DEA5 ; DECA: 90 D9 - LDY $1C ; DECC: A4 1C - LDA ($04),Y ; DECE: B1 04 - STA $0200,X ; DED0: 9D 00 02 - STA $0204,X ; DED3: 9D 04 02 - CLC ; DED6: 18 - ADC #$06 ; DED7: 69 06 - STA $7E ; DED9: 85 7E - INX ; DEDB: E8 - LDA #$8C ; DEDC: A9 8C - STA $0200,X ; DEDE: 9D 00 02 - STA $0204,X ; DEE1: 9D 04 02 - INX ; DEE4: E8 - LDA #$00 ; DEE5: A9 00 - STA $0200,X ; DEE7: 9D 00 02 - STA $0204,X ; DEEA: 9D 04 02 - INY ; DEED: C8 - INX ; DEEE: E8 - LDA ($04),Y ; DEEF: B1 04 - STA $0200,X ; DEF1: 9D 00 02 - CLC ; DEF4: 18 - ADC #$0B ; DEF5: 69 0B - STA $7D ; DEF7: 85 7D - CLC ; DEF9: 18 - ADC #$05 ; DEFA: 69 05 - STA $0204,X ; DEFC: 9D 04 02 - JSR SubCD4F1 ; DEFF: 20 F1 D4 - INX ; DF02: E8 +ParseHoleObjectPackage_OnCarryClear: + LDA $E384,Y ; CPU:$DEA5 PRG:1EA5 B9 84 E3 + CLC ; CPU:$DEA8 PRG:1EA8 18 + ADC $1A ; CPU:$DEA9 PRG:1EA9 65 1A + STA $0200,X ; CPU:$DEAB PRG:1EAB 9D 00 02 + INX ; CPU:$DEAE PRG:1EAE E8 + LDA $E3A2,Y ; CPU:$DEAF PRG:1EAF B9 A2 E3 + STA $0200,X ; CPU:$DEB2 PRG:1EB2 9D 00 02 + INX ; CPU:$DEB5 PRG:1EB5 E8 + LDA $E3C0,Y ; CPU:$DEB6 PRG:1EB6 B9 C0 E3 + STA $0200,X ; CPU:$DEB9 PRG:1EB9 9D 00 02 + INX ; CPU:$DEBC PRG:1EBC E8 + LDA $E3DE,Y ; CPU:$DEBD PRG:1EBD B9 DE E3 + CLC ; CPU:$DEC0 PRG:1EC0 18 + ADC $1B ; CPU:$DEC1 PRG:1EC1 65 1B + STA $0200,X ; CPU:$DEC3 PRG:1EC3 9D 00 02 + INX ; CPU:$DEC6 PRG:1EC6 E8 + INY ; CPU:$DEC7 PRG:1EC7 C8 + CPY $19 ; CPU:$DEC8 PRG:1EC8 C4 19 + BCC ParseHoleObjectPackage_OnCarryClear ; CPU:$DECA PRG:1ECA 90 D9 + LDY $1C ; CPU:$DECC PRG:1ECC A4 1C + LDA (source_pointer_lo),Y ; CPU:$DECE PRG:1ECE B1 04 + STA $0200,X ; CPU:$DED0 PRG:1ED0 9D 00 02 + STA $0204,X ; CPU:$DED3 PRG:1ED3 9D 04 02 + CLC ; CPU:$DED6 PRG:1ED6 18 + ADC #$06 ; CPU:$DED7 PRG:1ED7 69 06 + STA $7E ; CPU:$DED9 PRG:1ED9 85 7E + INX ; CPU:$DEDB PRG:1EDB E8 + LDA #$8C ; CPU:$DEDC PRG:1EDC A9 8C + STA $0200,X ; CPU:$DEDE PRG:1EDE 9D 00 02 + STA $0204,X ; CPU:$DEE1 PRG:1EE1 9D 04 02 + INX ; CPU:$DEE4 PRG:1EE4 E8 + LDA #$00 ; CPU:$DEE5 PRG:1EE5 A9 00 + STA $0200,X ; CPU:$DEE7 PRG:1EE7 9D 00 02 + STA $0204,X ; CPU:$DEEA PRG:1EEA 9D 04 02 + INY ; CPU:$DEED PRG:1EED C8 + INX ; CPU:$DEEE PRG:1EEE E8 + LDA (source_pointer_lo),Y ; CPU:$DEEF PRG:1EEF B1 04 + STA $0200,X ; CPU:$DEF1 PRG:1EF1 9D 00 02 + CLC ; CPU:$DEF4 PRG:1EF4 18 + ADC #$0B ; CPU:$DEF5 PRG:1EF5 69 0B + STA $7D ; CPU:$DEF7 PRG:1EF7 85 7D + CLC ; CPU:$DEF9 PRG:1EF9 18 + ADC #$05 ; CPU:$DEFA PRG:1EFA 69 05 + STA $0204,X ; CPU:$DEFC PRG:1EFC 9D 04 02 + JSR SubCD4F1 ; CPU:$DEFF PRG:1EFF 20 F1 D4 + INX ; CPU:$DF02 PRG:1F02 E8 ; --------------------------------------------------------------------------- ; ParseHoleObjectList @@ -9329,23 +9329,23 @@ Label_DEA5: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- ParseHoleObjectList: - LDA ($04),Y ; DF03: B1 04 - CMP #$FF ; DF05: C9 FF - BEQ Label_DF54 ; DF07: F0 4B - STA $19 ; DF09: 85 19 - INY ; DF0B: C8 - LDA ($04),Y ; DF0C: B1 04 - STA $1A ; DF0E: 85 1A - INY ; DF10: C8 - LDA ($04),Y ; DF11: B1 04 - STA $1B ; DF13: 85 1B - INY ; DF15: C8 - STY $1C ; DF16: 84 1C - LDY $19 ; DF18: A4 19 - LDA $E284,Y ; DF1A: B9 84 E2 - STA $1D ; DF1D: 85 1D - LDA $E283,Y ; DF1F: B9 83 E2 - TAY ; DF22: A8 + LDA (source_pointer_lo),Y ; CPU:$DF03 PRG:1F03 B1 04 + CMP #$FF ; CPU:$DF05 PRG:1F05 C9 FF + BEQ ParseHoleObjectList_Loop2 ; CPU:$DF07 PRG:1F07 F0 4B + STA $19 ; CPU:$DF09 PRG:1F09 85 19 + INY ; CPU:$DF0B PRG:1F0B C8 + LDA (source_pointer_lo),Y ; CPU:$DF0C PRG:1F0C B1 04 + STA $1A ; CPU:$DF0E PRG:1F0E 85 1A + INY ; CPU:$DF10 PRG:1F10 C8 + LDA (source_pointer_lo),Y ; CPU:$DF11 PRG:1F11 B1 04 + STA $1B ; CPU:$DF13 PRG:1F13 85 1B + INY ; CPU:$DF15 PRG:1F15 C8 + STY $1C ; CPU:$DF16 PRG:1F16 84 1C + LDY $19 ; CPU:$DF18 PRG:1F18 A4 19 + LDA $E284,Y ; CPU:$DF1A PRG:1F1A B9 84 E2 + STA sequence_upper_bound ; CPU:$DF1D PRG:1F1D 85 1D + LDA $E283,Y ; CPU:$DF1F PRG:1F1F B9 83 E2 + TAY ; CPU:$DF22 PRG:1F22 A8 ; --------------------------------------------------------------------------- ; Label_DF23 @@ -9362,37 +9362,37 @@ ParseHoleObjectList: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DF23: - LDA $E2EB,Y ; DF23: B9 EB E2 - CLC ; DF26: 18 - ADC $1A ; DF27: 65 1A - STA $0200,X ; DF29: 9D 00 02 - INX ; DF2C: E8 - LDA $E2A2,Y ; DF2D: B9 A2 E2 - STA $0200,X ; DF30: 9D 00 02 - INX ; DF33: E8 - CPY #$2B ; DF34: C0 2B - BCC Label_DF3B ; DF36: 90 03 - LDA #$42 ; DF38: A9 42 +ParseHoleObjectList_OnCarryClear: + LDA $E2EB,Y ; CPU:$DF23 PRG:1F23 B9 EB E2 + CLC ; CPU:$DF26 PRG:1F26 18 + ADC $1A ; CPU:$DF27 PRG:1F27 65 1A + STA $0200,X ; CPU:$DF29 PRG:1F29 9D 00 02 + INX ; CPU:$DF2C PRG:1F2C E8 + LDA $E2A2,Y ; CPU:$DF2D PRG:1F2D B9 A2 E2 + STA $0200,X ; CPU:$DF30 PRG:1F30 9D 00 02 + INX ; CPU:$DF33 PRG:1F33 E8 + CPY #$2B ; CPU:$DF34 PRG:1F34 C0 2B + BCC ParseHoleObjectList_Loop ; CPU:$DF36 PRG:1F36 90 03 + LDA #$42 ; CPU:$DF38 PRG:1F38 A9 42 ; Overlapping instruction idiom: ; DF3A: BIT $02A9 (2C A9 02) ; DF3B: LDA #$02 (A9 02) Label_DF3A: - .byte $2C ; DF3A: 2C BIT absolute opcode -Label_DF3B: - .byte $A9,$02 ; DF3B-DF3C: A9 02 LDA #$02 - STA $0200,X ; DF3D: 9D 00 02 - INX ; DF40: E8 - LDA $E334,Y ; DF41: B9 34 E3 - CLC ; DF44: 18 - ADC $1B ; DF45: 65 1B - STA $0200,X ; DF47: 9D 00 02 - INX ; DF4A: E8 - INY ; DF4B: C8 - CPY $1D ; DF4C: C4 1D - BCC Label_DF23 ; DF4E: 90 D3 - LDY $1C ; DF50: A4 1C - BNE ParseHoleObjectList ; DF52: D0 AF + .byte $2C ; DF3A: 2C BIT absolute opcode ; CPU:$DF3A PRG:1F3A 2C +ParseHoleObjectList_Loop: + .byte $A9,$02 ; DF3B-DF3C: A9 02 LDA #$02 ; CPU:$DF3B PRG:1F3B A9 02 + STA $0200,X ; CPU:$DF3D PRG:1F3D 9D 00 02 + INX ; CPU:$DF40 PRG:1F40 E8 + LDA $E334,Y ; CPU:$DF41 PRG:1F41 B9 34 E3 + CLC ; CPU:$DF44 PRG:1F44 18 + ADC $1B ; CPU:$DF45 PRG:1F45 65 1B + STA $0200,X ; CPU:$DF47 PRG:1F47 9D 00 02 + INX ; CPU:$DF4A PRG:1F4A E8 + INY ; CPU:$DF4B PRG:1F4B C8 + CPY sequence_upper_bound ; CPU:$DF4C PRG:1F4C C4 1D + BCC ParseHoleObjectList_OnCarryClear ; CPU:$DF4E PRG:1F4E 90 D3 + LDY $1C ; CPU:$DF50 PRG:1F50 A4 1C + BNE ParseHoleObjectList ; CPU:$DF52 PRG:1F52 D0 AF ; --------------------------------------------------------------------------- ; Label_DF54 @@ -9409,19 +9409,19 @@ Label_DF3B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DF54: - LDA $0D ; DF54: A5 0D - BEQ SubCDFB8 ; DF56: F0 60 - LDA $7B ; DF58: A5 7B - CMP #$03 ; DF5A: C9 03 - BEQ SubCDFB8 ; DF5C: F0 5A - LDA $7C ; DF5E: A5 7C - CMP #$03 ; DF60: C9 03 - BEQ SubCDFB8 ; DF62: F0 54 - LDA $7F ; DF64: A5 7F - BNE Label_DF6C ; DF66: D0 04 - LDA $80 ; DF68: A5 80 - BEQ SubCDFB8 ; DF6A: F0 4C +ParseHoleObjectList_Loop2: + LDA menu_selection ; CPU:$DF54 PRG:1F54 A5 0D + BEQ SubCDFB8 ; CPU:$DF56 PRG:1F56 F0 60 + LDA $7B ; CPU:$DF58 PRG:1F58 A5 7B + CMP #$03 ; CPU:$DF5A PRG:1F5A C9 03 + BEQ SubCDFB8 ; CPU:$DF5C PRG:1F5C F0 5A + LDA $7C ; CPU:$DF5E PRG:1F5E A5 7C + CMP #$03 ; CPU:$DF60 PRG:1F60 C9 03 + BEQ SubCDFB8 ; CPU:$DF62 PRG:1F62 F0 54 + LDA $7F ; CPU:$DF64 PRG:1F64 A5 7F + BNE ParseHoleObjectList_Loop3 ; CPU:$DF66 PRG:1F66 D0 04 + LDA $80 ; CPU:$DF68 PRG:1F68 A5 80 + BEQ SubCDFB8 ; CPU:$DF6A PRG:1F6A F0 4C ; --------------------------------------------------------------------------- ; Label_DF6C @@ -9438,23 +9438,23 @@ Label_DF54: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DF6C: - LDA #$DD ; DF6C: A9 DD - STA $0201 ; DF6E: 8D 01 02 - LDA #$F3 ; DF71: A9 F3 - STA $0205 ; DF73: 8D 05 02 - LDA #$01 ; DF76: A9 01 - STA $0202 ; DF78: 8D 02 02 - STA $0206 ; DF7B: 8D 06 02 - LDA $7F ; DF7E: A5 7F - BEQ Label_DF91 ; DF80: F0 0F - LDA $65 ; DF82: A5 65 - STA $0200 ; DF84: 8D 00 02 - LDY $66 ; DF87: A4 66 - DEY ; DF89: 88 - DEY ; DF8A: 88 - STY $0203 ; DF8B: 8C 03 02 - JMP SubCDF9B ; DF8E: 4C 9B DF +ParseHoleObjectList_Loop3: + LDA #$DD ; CPU:$DF6C PRG:1F6C A9 DD + STA $0201 ; CPU:$DF6E PRG:1F6E 8D 01 02 + LDA #$F3 ; CPU:$DF71 PRG:1F71 A9 F3 + STA $0205 ; CPU:$DF73 PRG:1F73 8D 05 02 + LDA #$01 ; CPU:$DF76 PRG:1F76 A9 01 + STA $0202 ; CPU:$DF78 PRG:1F78 8D 02 02 + STA $0206 ; CPU:$DF7B PRG:1F7B 8D 06 02 + LDA $7F ; CPU:$DF7E PRG:1F7E A5 7F + BEQ ParseHoleObjectList_Loop4 ; CPU:$DF80 PRG:1F80 F0 0F + LDA $65 ; CPU:$DF82 PRG:1F82 A5 65 + STA $0200 ; CPU:$DF84 PRG:1F84 8D 00 02 + LDY $66 ; CPU:$DF87 PRG:1F87 A4 66 + DEY ; CPU:$DF89 PRG:1F89 88 + DEY ; CPU:$DF8A PRG:1F8A 88 + STY $0203 ; CPU:$DF8B PRG:1F8B 8C 03 02 + JMP SubCDF9B ; CPU:$DF8E PRG:1F8E 4C 9B DF ; --------------------------------------------------------------------------- ; Label_DF91 @@ -9471,11 +9471,11 @@ Label_DF6C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DF91: - LDA $40 ; DF91: A5 40 - STA $0200 ; DF93: 8D 00 02 - LDA $3E ; DF96: A5 3E - STA $0203 ; DF98: 8D 03 02 +ParseHoleObjectList_Loop4: + LDA $40 ; CPU:$DF91 PRG:1F91 A5 40 + STA $0200 ; CPU:$DF93 PRG:1F93 8D 00 02 + LDA $3E ; CPU:$DF96 PRG:1F96 A5 3E + STA $0203 ; CPU:$DF98 PRG:1F98 8D 03 02 ; --------------------------------------------------------------------------- ; SubCDF9B @@ -9493,15 +9493,15 @@ Label_DF91: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDF9B: - LDA $80 ; DF9B: A5 80 - BEQ Label_DFAE ; DF9D: F0 0F - LDA $65 ; DF9F: A5 65 - STA $0204 ; DFA1: 8D 04 02 - LDY $66 ; DFA4: A4 66 - DEY ; DFA6: 88 - DEY ; DFA7: 88 - STY $0207 ; DFA8: 8C 07 02 - JMP SubCDFB8 ; DFAB: 4C B8 DF + LDA $80 ; CPU:$DF9B PRG:1F9B A5 80 + BEQ SubCDF9B_Loop ; CPU:$DF9D PRG:1F9D F0 0F + LDA $65 ; CPU:$DF9F PRG:1F9F A5 65 + STA $0204 ; CPU:$DFA1 PRG:1FA1 8D 04 02 + LDY $66 ; CPU:$DFA4 PRG:1FA4 A4 66 + DEY ; CPU:$DFA6 PRG:1FA6 88 + DEY ; CPU:$DFA7 PRG:1FA7 88 + STY $0207 ; CPU:$DFA8 PRG:1FA8 8C 07 02 + JMP SubCDFB8 ; CPU:$DFAB PRG:1FAB 4C B8 DF ; --------------------------------------------------------------------------- ; Label_DFAE @@ -9518,11 +9518,11 @@ SubCDF9B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DFAE: - LDA $41 ; DFAE: A5 41 - STA $0204 ; DFB0: 8D 04 02 - LDA $3F ; DFB3: A5 3F - STA $0207 ; DFB5: 8D 07 02 +SubCDF9B_Loop: + LDA $41 ; CPU:$DFAE PRG:1FAE A5 41 + STA $0204 ; CPU:$DFB0 PRG:1FB0 8D 04 02 + LDA $3F ; CPU:$DFB3 PRG:1FB3 A5 3F + STA $0207 ; CPU:$DFB5 PRG:1FB5 8D 07 02 ; --------------------------------------------------------------------------- ; SubCDFB8 @@ -9540,16 +9540,16 @@ Label_DFAE: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCDFB8: - JSR WaitForFrame ; DFB8: 20 F3 C8 - LDA #$20 ; DFBB: A9 20 - STA $06 ; DFBD: 85 06 - LDA #$10 ; DFBF: A9 10 - STA $07 ; DFC1: 85 07 - LDA #$00 ; DFC3: A9 00 - STA $04 ; DFC5: 85 04 - LDA #$03 ; DFC7: A9 03 - STA $05 ; DFC9: 85 05 - LDX #$1D ; DFCB: A2 1D + JSR WaitForFrame ; CPU:$DFB8 PRG:1FB8 20 F3 C8 + LDA #$20 ; CPU:$DFBB PRG:1FBB A9 20 + STA destination_pointer_lo ; CPU:$DFBD PRG:1FBD 85 06 + LDA #$10 ; CPU:$DFBF PRG:1FBF A9 10 + STA destination_pointer_hi ; CPU:$DFC1 PRG:1FC1 85 07 + LDA #$00 ; CPU:$DFC3 PRG:1FC3 A9 00 + STA source_pointer_lo ; CPU:$DFC5 PRG:1FC5 85 04 + LDA #$03 ; CPU:$DFC7 PRG:1FC7 A9 03 + STA source_pointer_hi ; CPU:$DFC9 PRG:1FC9 85 05 + LDX #$1D ; CPU:$DFCB PRG:1FCB A2 1D ; --------------------------------------------------------------------------- ; Label_DFCD @@ -9566,12 +9566,12 @@ SubCDFB8: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DFCD: - LDY #$00 ; DFCD: A0 00 - LDA $06 ; DFCF: A5 06 - STA PPUADDR ; DFD1: 8D 06 20 - LDA $07 ; DFD4: A5 07 - STA PPUADDR ; DFD6: 8D 06 20 +SubCDFB8_OnNonnegative: + LDY #$00 ; CPU:$DFCD PRG:1FCD A0 00 + LDA destination_pointer_lo ; CPU:$DFCF PRG:1FCF A5 06 + STA PPUADDR ; CPU:$DFD1 PRG:1FD1 8D 06 20 + LDA destination_pointer_hi ; CPU:$DFD4 PRG:1FD4 A5 07 + STA PPUADDR ; CPU:$DFD6 PRG:1FD6 8D 06 20 ; --------------------------------------------------------------------------- ; Label_DFD9 @@ -9588,19 +9588,19 @@ Label_DFCD: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DFD9: - LDA ($04),Y ; DFD9: B1 04 - STA PPUDATA ; DFDB: 8D 07 20 - INY ; DFDE: C8 - CPY #$10 ; DFDF: C0 10 - BCC Label_DFD9 ; DFE1: 90 F6 - JSR SubCE1AB ; DFE3: 20 AB E1 - LDA $07 ; DFE6: A5 07 - CLC ; DFE8: 18 - ADC #$20 ; DFE9: 69 20 - STA $07 ; DFEB: 85 07 - BCC Label_DFF1 ; DFED: 90 02 - INC $06 ; DFEF: E6 06 +SubCDFB8_OnCarryClear: + LDA (source_pointer_lo),Y ; CPU:$DFD9 PRG:1FD9 B1 04 + STA PPUDATA ; CPU:$DFDB PRG:1FDB 8D 07 20 + INY ; CPU:$DFDE PRG:1FDE C8 + CPY #$10 ; CPU:$DFDF PRG:1FDF C0 10 + BCC SubCDFB8_OnCarryClear ; CPU:$DFE1 PRG:1FE1 90 F6 + JSR SubCE1AB ; CPU:$DFE3 PRG:1FE3 20 AB E1 + LDA destination_pointer_hi ; CPU:$DFE6 PRG:1FE6 A5 07 + CLC ; CPU:$DFE8 PRG:1FE8 18 + ADC #$20 ; CPU:$DFE9 PRG:1FE9 69 20 + STA destination_pointer_hi ; CPU:$DFEB PRG:1FEB 85 07 + BCC SubCDFB8_Loop ; CPU:$DFED PRG:1FED 90 02 + INC destination_pointer_lo ; CPU:$DFEF PRG:1FEF E6 06 ; --------------------------------------------------------------------------- ; Label_DFF1 @@ -9617,10 +9617,10 @@ Label_DFD9: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DFF1: - DEX ; DFF1: CA - BPL Label_DFCD ; DFF2: 10 D9 - INX ; DFF4: E8 +SubCDFB8_Loop: + DEX ; CPU:$DFF1 PRG:1FF1 CA + BPL SubCDFB8_OnNonnegative ; CPU:$DFF2 PRG:1FF2 10 D9 + INX ; CPU:$DFF4 PRG:1FF4 E8 ; --------------------------------------------------------------------------- ; Label_DFF5 @@ -9637,41 +9637,41 @@ Label_DFF1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_DFF5: - LDA $0100,X ; DFF5: BD 00 01 - STA PPUDATA ; DFF8: 8D 07 20 - INX ; DFFB: E8 - CPX #$40 ; DFFC: E0 40 - BCC Label_DFF5 ; DFFE: 90 F5 - JSR WaitForFrame ; E000: 20 F3 C8 - LDX #$20 ; E003: A2 20 - LDA #$61 ; E005: A9 61 - JSR SetPpuAddress ; E007: 20 C1 C8 - LDA ppu_ctrl_shadow ; E00A: A5 00 - ORA #$04 ; E00C: 09 04 - STA PPUCTRL ; E00E: 8D 00 20 - LDY #$D1 ; E011: A0 D1 - JSR SubCC589 ; E013: 20 89 C5 - LDX #$20 ; E016: A2 20 - LDA #$6F ; E018: A9 6F - JSR SubCC586 ; E01A: 20 86 C5 - JSR RestorePpuCtrlShadow ; E01D: 20 B5 C8 - LDX #$20 ; E020: A2 20 - LDA #$C2 ; E022: A9 C2 - JSR SubCE1A1 ; E024: 20 A1 E1 - LDX #$21 ; E027: A2 21 - LDA #$02 ; E029: A9 02 - JSR SubCE1A1 ; E02B: 20 A1 E1 - LDX #$20 ; E02E: A2 20 - LDA #$E2 ; E030: A9 E2 - JSR SetPpuAddress ; E032: 20 C1 C8 - LDA #$0C ; E035: A9 0C - STA $19 ; E037: 85 19 - LDA $0D ; E039: A5 0D - CMP #$02 ; E03B: C9 02 - BNE Label_E043 ; E03D: D0 04 - LDA #$04 ; E03F: A9 04 - STA $19 ; E041: 85 19 +SubCDFB8_OnCarryClear2: + LDA $0100,X ; CPU:$DFF5 PRG:1FF5 BD 00 01 + STA PPUDATA ; CPU:$DFF8 PRG:1FF8 8D 07 20 + INX ; CPU:$DFFB PRG:1FFB E8 + CPX #$40 ; CPU:$DFFC PRG:1FFC E0 40 + BCC SubCDFB8_OnCarryClear2 ; CPU:$DFFE PRG:1FFE 90 F5 + JSR WaitForFrame ; CPU:$E000 PRG:2000 20 F3 C8 + LDX #$20 ; CPU:$E003 PRG:2003 A2 20 + LDA #$61 ; CPU:$E005 PRG:2005 A9 61 + JSR SetPpuAddress ; CPU:$E007 PRG:2007 20 C1 C8 + LDA ppu_ctrl_shadow ; CPU:$E00A PRG:200A A5 00 + ORA #$04 ; CPU:$E00C PRG:200C 09 04 + STA PPUCTRL ; CPU:$E00E PRG:200E 8D 00 20 + LDY #$D1 ; CPU:$E011 PRG:2011 A0 D1 + JSR SubCC589 ; CPU:$E013 PRG:2013 20 89 C5 + LDX #$20 ; CPU:$E016 PRG:2016 A2 20 + LDA #$6F ; CPU:$E018 PRG:2018 A9 6F + JSR SubCC586 ; CPU:$E01A PRG:201A 20 86 C5 + JSR RestorePpuCtrlShadow ; CPU:$E01D PRG:201D 20 B5 C8 + LDX #$20 ; CPU:$E020 PRG:2020 A2 20 + LDA #$C2 ; CPU:$E022 PRG:2022 A9 C2 + JSR SubCE1A1 ; CPU:$E024 PRG:2024 20 A1 E1 + LDX #$21 ; CPU:$E027 PRG:2027 A2 21 + LDA #$02 ; CPU:$E029 PRG:2029 A9 02 + JSR SubCE1A1 ; CPU:$E02B PRG:202B 20 A1 E1 + LDX #$20 ; CPU:$E02E PRG:202E A2 20 + LDA #$E2 ; CPU:$E030 PRG:2030 A9 E2 + JSR SetPpuAddress ; CPU:$E032 PRG:2032 20 C1 C8 + LDA #$0C ; CPU:$E035 PRG:2035 A9 0C + STA $19 ; CPU:$E037 PRG:2037 85 19 + LDA menu_selection ; CPU:$E039 PRG:2039 A5 0D + CMP #$02 ; CPU:$E03B PRG:203B C9 02 + BNE SubCDFB8_Loop2 ; CPU:$E03D PRG:203D D0 04 + LDA #$04 ; CPU:$E03F PRG:203F A9 04 + STA $19 ; CPU:$E041 PRG:2041 85 19 ; --------------------------------------------------------------------------- ; Label_E043 @@ -9688,8 +9688,8 @@ Label_DFF5: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E043: - LDY #$00 ; E043: A0 00 +SubCDFB8_Loop2: + LDY #$00 ; CPU:$E043 PRG:2043 A0 00 ; --------------------------------------------------------------------------- ; Label_E045 @@ -9706,13 +9706,13 @@ Label_E043: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E045: - LDA $E1F9,Y ; E045: B9 F9 E1 - STA PPUDATA ; E048: 8D 07 20 - INY ; E04B: C8 - CPY $19 ; E04C: C4 19 - BCC Label_E045 ; E04E: 90 F5 - LDY #$03 ; E050: A0 03 +SubCDFB8_OnCarryClear3: + LDA $E1F9,Y ; CPU:$E045 PRG:2045 B9 F9 E1 + STA PPUDATA ; CPU:$E048 PRG:2048 8D 07 20 + INY ; CPU:$E04B PRG:204B C8 + CPY $19 ; CPU:$E04C PRG:204C C4 19 + BCC SubCDFB8_OnCarryClear3 ; CPU:$E04E PRG:204E 90 F5 + LDY #$03 ; CPU:$E050 PRG:2050 A0 03 ; --------------------------------------------------------------------------- ; Label_E052 @@ -9729,18 +9729,18 @@ Label_E045: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E052: - LDX $E1D8,Y ; E052: BE D8 E1 - LDA $E1DC,Y ; E055: B9 DC E1 - JSR SetPpuAddress ; E058: 20 C1 C8 - LDA $E1E0,Y ; E05B: B9 E0 E1 - STA PPUDATA ; E05E: 8D 07 20 - DEY ; E061: 88 - BPL Label_E052 ; E062: 10 EE - LDX #$20 ; E064: A2 20 - LDA #$43 ; E066: A9 43 - JSR SetPpuAddress ; E068: 20 C1 C8 - LDY #$00 ; E06B: A0 00 +SubCDFB8_OnNonnegative2: + LDX $E1D8,Y ; CPU:$E052 PRG:2052 BE D8 E1 + LDA $E1DC,Y ; CPU:$E055 PRG:2055 B9 DC E1 + JSR SetPpuAddress ; CPU:$E058 PRG:2058 20 C1 C8 + LDA $E1E0,Y ; CPU:$E05B PRG:205B B9 E0 E1 + STA PPUDATA ; CPU:$E05E PRG:205E 8D 07 20 + DEY ; CPU:$E061 PRG:2061 88 + BPL SubCDFB8_OnNonnegative2 ; CPU:$E062 PRG:2062 10 EE + LDX #$20 ; CPU:$E064 PRG:2064 A2 20 + LDA #$43 ; CPU:$E066 PRG:2066 A9 43 + JSR SetPpuAddress ; CPU:$E068 PRG:2068 20 C1 C8 + LDY #$00 ; CPU:$E06B PRG:206B A0 00 ; --------------------------------------------------------------------------- ; Label_E06D @@ -9757,12 +9757,12 @@ Label_E052: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E06D: - LDA $0D ; E06D: A5 0D - CMP #$02 ; E06F: C9 02 - BEQ Label_E079 ; E071: F0 06 - LDA $DD44,Y ; E073: B9 44 DD - JMP SubCE07C ; E076: 4C 7C E0 +SubCDFB8_OnCarryClear4: + LDA menu_selection ; CPU:$E06D PRG:206D A5 0D + CMP #$02 ; CPU:$E06F PRG:206F C9 02 + BEQ SubCDFB8_Loop3 ; CPU:$E071 PRG:2071 F0 06 + LDA $DD44,Y ; CPU:$E073 PRG:2073 B9 44 DD + JMP SubCE07C ; CPU:$E076 PRG:2076 4C 7C E0 ; --------------------------------------------------------------------------- ; Label_E079 @@ -9779,8 +9779,8 @@ Label_E06D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E079: - LDA $DD57,Y ; E079: B9 57 DD +SubCDFB8_Loop3: + LDA $DD57,Y ; CPU:$E079 PRG:2079 B9 57 DD ; --------------------------------------------------------------------------- ; SubCE07C @@ -9798,22 +9798,22 @@ Label_E079: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE07C: - STA PPUDATA ; E07C: 8D 07 20 - INY ; E07F: C8 - CPY #$0B ; E080: C0 0B - BCC Label_E06D ; E082: 90 E9 - LDX #$21 ; E084: A2 21 - LDA #$22 ; E086: A9 22 - JSR SetPpuAddress ; E088: 20 C1 C8 - LDA #$A9 ; E08B: A9 A9 - STA PPUDATA ; E08D: 8D 07 20 - LDA #$2D ; E090: A9 2D - STA PPUDATA ; E092: 8D 07 20 - LDA $82 ; E095: A5 82 - BEQ Label_E0A0 ; E097: F0 07 - LDA $0143 ; E099: AD 43 01 - BEQ Label_E0B5 ; E09C: F0 17 - BNE Label_E0A4 ; E09E: D0 04 + STA PPUDATA ; CPU:$E07C PRG:207C 8D 07 20 + INY ; CPU:$E07F PRG:207F C8 + CPY #$0B ; CPU:$E080 PRG:2080 C0 0B + BCC SubCDFB8_OnCarryClear4 ; CPU:$E082 PRG:2082 90 E9 + LDX #$21 ; CPU:$E084 PRG:2084 A2 21 + LDA #$22 ; CPU:$E086 PRG:2086 A9 22 + JSR SetPpuAddress ; CPU:$E088 PRG:2088 20 C1 C8 + LDA #$A9 ; CPU:$E08B PRG:208B A9 A9 + STA PPUDATA ; CPU:$E08D PRG:208D 8D 07 20 + LDA #$2D ; CPU:$E090 PRG:2090 A9 2D + STA PPUDATA ; CPU:$E092 PRG:2092 8D 07 20 + LDA $82 ; CPU:$E095 PRG:2095 A5 82 + BEQ SubCE07C_Loop ; CPU:$E097 PRG:2097 F0 07 + LDA $0143 ; CPU:$E099 PRG:2099 AD 43 01 + BEQ SubCE07C_Loop3 ; CPU:$E09C PRG:209C F0 17 + BNE SubCE07C_Loop2 ; CPU:$E09E PRG:209E D0 04 ; --------------------------------------------------------------------------- ; Label_E0A0 @@ -9830,9 +9830,9 @@ SubCE07C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E0A0: - LDA $0D ; E0A0: A5 0D - BEQ Label_E0B5 ; E0A2: F0 11 +SubCE07C_Loop: + LDA menu_selection ; CPU:$E0A0 PRG:20A0 A5 0D + BEQ SubCE07C_Loop3 ; CPU:$E0A2 PRG:20A2 F0 11 ; --------------------------------------------------------------------------- ; Label_E0A4 @@ -9849,14 +9849,14 @@ Label_E0A0: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E0A4: - LDX #$21 ; E0A4: A2 21 - LDA #$62 ; E0A6: A9 62 - JSR SetPpuAddress ; E0A8: 20 C1 C8 - LDA #$AA ; E0AB: A9 AA - STA PPUDATA ; E0AD: 8D 07 20 - LDA #$2D ; E0B0: A9 2D - STA PPUDATA ; E0B2: 8D 07 20 +SubCE07C_Loop2: + LDX #$21 ; CPU:$E0A4 PRG:20A4 A2 21 + LDA #$62 ; CPU:$E0A6 PRG:20A6 A9 62 + JSR SetPpuAddress ; CPU:$E0A8 PRG:20A8 20 C1 C8 + LDA #$AA ; CPU:$E0AB PRG:20AB A9 AA + STA PPUDATA ; CPU:$E0AD PRG:20AD 8D 07 20 + LDA #$2D ; CPU:$E0B0 PRG:20B0 A9 2D + STA PPUDATA ; CPU:$E0B2 PRG:20B2 8D 07 20 ; --------------------------------------------------------------------------- ; Label_E0B5 @@ -9873,11 +9873,11 @@ Label_E0A4: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E0B5: - LDX #$20 ; E0B5: A2 20 - LDA #$62 ; E0B7: A9 62 - JSR SetPpuAddress ; E0B9: 20 C1 C8 - LDY #$00 ; E0BC: A0 00 +SubCE07C_Loop3: + LDX #$20 ; CPU:$E0B5 PRG:20B5 A2 20 + LDA #$62 ; CPU:$E0B7 PRG:20B7 A9 62 + JSR SetPpuAddress ; CPU:$E0B9 PRG:20B9 20 C1 C8 + LDY #$00 ; CPU:$E0BC PRG:20BC A0 00 ; --------------------------------------------------------------------------- ; SubCE0BE @@ -9895,11 +9895,11 @@ Label_E0B5: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE0BE: - LDA $2B ; E0BE: A5 2B - CMP #$09 ; E0C0: C9 09 - BCS Label_E0CA ; E0C2: B0 06 - LDA $E1EC,Y ; E0C4: B9 EC E1 - JMP SubCE0CD ; E0C7: 4C CD E0 + LDA current_hole_index ; CPU:$E0BE PRG:20BE A5 2B + CMP #$09 ; CPU:$E0C0 PRG:20C0 C9 09 + BCS SubCE0BE_Loop ; CPU:$E0C2 PRG:20C2 B0 06 + LDA $E1EC,Y ; CPU:$E0C4 PRG:20C4 B9 EC E1 + JMP SubCE0CD ; CPU:$E0C7 PRG:20C7 4C CD E0 ; --------------------------------------------------------------------------- ; Label_E0CA @@ -9916,8 +9916,8 @@ SubCE0BE: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E0CA: - LDA $E1F0,Y ; E0CA: B9 F0 E1 +SubCE0BE_Loop: + LDA $E1F0,Y ; CPU:$E0CA PRG:20CA B9 F0 E1 ; --------------------------------------------------------------------------- ; SubCE0CD @@ -9935,11 +9935,11 @@ Label_E0CA: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE0CD: - CMP #$FF ; E0CD: C9 FF - BEQ Label_E0D8 ; E0CF: F0 07 - STA PPUDATA ; E0D1: 8D 07 20 - INY ; E0D4: C8 - JMP SubCE0BE ; E0D5: 4C BE E0 + CMP #$FF ; CPU:$E0CD PRG:20CD C9 FF + BEQ SubCE0CD_Loop ; CPU:$E0CF PRG:20CF F0 07 + STA PPUDATA ; CPU:$E0D1 PRG:20D1 8D 07 20 + INY ; CPU:$E0D4 PRG:20D4 C8 + JMP SubCE0BE ; CPU:$E0D5 PRG:20D5 4C BE E0 ; --------------------------------------------------------------------------- ; Label_E0D8 @@ -9956,17 +9956,17 @@ SubCE0CD: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E0D8: - LDA #$9D ; E0D8: A9 9D - STA PPUDATA ; E0DA: 8D 07 20 - LDA $2B ; E0DD: A5 2B - CMP #$09 ; E0DF: C9 09 - BCC Label_E0ED ; E0E1: 90 0A - LDA #$01 ; E0E3: A9 01 - STA PPUDATA ; E0E5: 8D 07 20 - LDA $2B ; E0E8: A5 2B - SEC ; E0EA: 38 - SBC #$0A ; E0EB: E9 0A +SubCE0CD_Loop: + LDA #$9D ; CPU:$E0D8 PRG:20D8 A9 9D + STA PPUDATA ; CPU:$E0DA PRG:20DA 8D 07 20 + LDA current_hole_index ; CPU:$E0DD PRG:20DD A5 2B + CMP #$09 ; CPU:$E0DF PRG:20DF C9 09 + BCC SubCE0CD_Loop2 ; CPU:$E0E1 PRG:20E1 90 0A + LDA #$01 ; CPU:$E0E3 PRG:20E3 A9 01 + STA PPUDATA ; CPU:$E0E5 PRG:20E5 8D 07 20 + LDA current_hole_index ; CPU:$E0E8 PRG:20E8 A5 2B + SEC ; CPU:$E0EA PRG:20EA 38 + SBC #$0A ; CPU:$E0EB PRG:20EB E9 0A ; --------------------------------------------------------------------------- ; Label_E0ED @@ -9983,28 +9983,28 @@ Label_E0D8: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E0ED: - CLC ; E0ED: 18 - ADC #$01 ; E0EE: 69 01 - STA PPUDATA ; E0F0: 8D 07 20 - LDX #$20 ; E0F3: A2 20 - LDA #$82 ; E0F5: A9 82 - JSR SetPpuAddress ; E0F7: 20 C1 C8 - LDX $2B ; E0FA: A6 2B - LDA $E21F,X ; E0FC: BD 1F E2 - STA PPUDATA ; E0FF: 8D 07 20 - LDA $E231,X ; E102: BD 31 E2 - JSR SubCDA1E ; E105: 20 1E DA - STA PPUDATA ; E108: 8D 07 20 - LDA $E231,X ; E10B: BD 31 E2 - AND #$0F ; E10E: 29 0F - STA PPUDATA ; E110: 8D 07 20 - LDA #$A4 ; E113: A9 A4 - STA PPUDATA ; E115: 8D 07 20 - LDX #$20 ; E118: A2 20 - LDA #$A2 ; E11A: A9 A2 - JSR SetPpuAddress ; E11C: 20 C1 C8 - LDY #$00 ; E11F: A0 00 +SubCE0CD_Loop2: + CLC ; CPU:$E0ED PRG:20ED 18 + ADC #$01 ; CPU:$E0EE PRG:20EE 69 01 + STA PPUDATA ; CPU:$E0F0 PRG:20F0 8D 07 20 + LDX #$20 ; CPU:$E0F3 PRG:20F3 A2 20 + LDA #$82 ; CPU:$E0F5 PRG:20F5 A9 82 + JSR SetPpuAddress ; CPU:$E0F7 PRG:20F7 20 C1 C8 + LDX current_hole_index ; CPU:$E0FA PRG:20FA A6 2B + LDA $E21F,X ; CPU:$E0FC PRG:20FC BD 1F E2 + STA PPUDATA ; CPU:$E0FF PRG:20FF 8D 07 20 + LDA $E231,X ; CPU:$E102 PRG:2102 BD 31 E2 + JSR SubCDA1E ; CPU:$E105 PRG:2105 20 1E DA + STA PPUDATA ; CPU:$E108 PRG:2108 8D 07 20 + LDA $E231,X ; CPU:$E10B PRG:210B BD 31 E2 + AND #$0F ; CPU:$E10E PRG:210E 29 0F + STA PPUDATA ; CPU:$E110 PRG:2110 8D 07 20 + LDA #$A4 ; CPU:$E113 PRG:2113 A9 A4 + STA PPUDATA ; CPU:$E115 PRG:2115 8D 07 20 + LDX #$20 ; CPU:$E118 PRG:2118 A2 20 + LDA #$A2 ; CPU:$E11A PRG:211A A9 A2 + JSR SetPpuAddress ; CPU:$E11C PRG:211C 20 C1 C8 + LDY #$00 ; CPU:$E11F PRG:211F A0 00 ; --------------------------------------------------------------------------- ; Label_E121 @@ -10021,21 +10021,21 @@ Label_E0ED: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E121: - LDA $E1E8,Y ; E121: B9 E8 E1 - STA PPUDATA ; E124: 8D 07 20 - INY ; E127: C8 - CPY #$04 ; E128: C0 04 - BCC Label_E121 ; E12A: 90 F5 - LDX $2B ; E12C: A6 2B - LDA $E20D,X ; E12E: BD 0D E2 - AND #$0F ; E131: 29 0F - STA PPUDATA ; E133: 8D 07 20 - STA $83 ; E136: 85 83 - LDX #$23 ; E138: A2 23 - LDA #$45 ; E13A: A9 45 - JSR SetPpuAddress ; E13C: 20 C1 C8 - LDY #$00 ; E13F: A0 00 +SubCE0CD_OnCarryClear: + LDA $E1E8,Y ; CPU:$E121 PRG:2121 B9 E8 E1 + STA PPUDATA ; CPU:$E124 PRG:2124 8D 07 20 + INY ; CPU:$E127 PRG:2127 C8 + CPY #$04 ; CPU:$E128 PRG:2128 C0 04 + BCC SubCE0CD_OnCarryClear ; CPU:$E12A PRG:212A 90 F5 + LDX current_hole_index ; CPU:$E12C PRG:212C A6 2B + LDA $E20D,X ; CPU:$E12E PRG:212E BD 0D E2 + AND #$0F ; CPU:$E131 PRG:2131 29 0F + STA PPUDATA ; CPU:$E133 PRG:2133 8D 07 20 + STA $83 ; CPU:$E136 PRG:2136 85 83 + LDX #$23 ; CPU:$E138 PRG:2138 A2 23 + LDA #$45 ; CPU:$E13A PRG:213A A9 45 + JSR SetPpuAddress ; CPU:$E13C PRG:213C 20 C1 C8 + LDY #$00 ; CPU:$E13F PRG:213F A0 00 ; --------------------------------------------------------------------------- ; Label_E141 @@ -10052,17 +10052,17 @@ Label_E121: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E141: - LDA $E1E4,Y ; E141: B9 E4 E1 - STA PPUDATA ; E144: 8D 07 20 - INY ; E147: C8 - CPY #$04 ; E148: C0 04 - BCC Label_E141 ; E14A: 90 F5 - LDA #$21 ; E14C: A9 21 - STA $04 ; E14E: 85 04 - LDA #$82 ; E150: A9 82 - STA $05 ; E152: 85 05 - LDX #$0B ; E154: A2 0B +SubCE0CD_OnCarryClear2: + LDA $E1E4,Y ; CPU:$E141 PRG:2141 B9 E4 E1 + STA PPUDATA ; CPU:$E144 PRG:2144 8D 07 20 + INY ; CPU:$E147 PRG:2147 C8 + CPY #$04 ; CPU:$E148 PRG:2148 C0 04 + BCC SubCE0CD_OnCarryClear2 ; CPU:$E14A PRG:214A 90 F5 + LDA #$21 ; CPU:$E14C PRG:214C A9 21 + STA source_pointer_lo ; CPU:$E14E PRG:214E 85 04 + LDA #$82 ; CPU:$E150 PRG:2150 A9 82 + STA source_pointer_hi ; CPU:$E152 PRG:2152 85 05 + LDX #$0B ; CPU:$E154 PRG:2154 A2 0B ; --------------------------------------------------------------------------- ; Label_E156 @@ -10079,16 +10079,16 @@ Label_E141: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E156: - LDY #$0B ; E156: A0 0B - LDA $04 ; E158: A5 04 - STA PPUADDR ; E15A: 8D 06 20 - LDA $05 ; E15D: A5 05 - STA PPUADDR ; E15F: 8D 06 20 - CPX #$04 ; E162: E0 04 - BCC Label_E16A ; E164: 90 04 - LDA #$9D ; E166: A9 9D - BNE Label_E16C ; E168: D0 02 +SubCE0CD_OnNonnegative: + LDY #$0B ; CPU:$E156 PRG:2156 A0 0B + LDA source_pointer_lo ; CPU:$E158 PRG:2158 A5 04 + STA PPUADDR ; CPU:$E15A PRG:215A 8D 06 20 + LDA source_pointer_hi ; CPU:$E15D PRG:215D A5 05 + STA PPUADDR ; CPU:$E15F PRG:215F 8D 06 20 + CPX #$04 ; CPU:$E162 PRG:2162 E0 04 + BCC SubCE0CD_Loop3 ; CPU:$E164 PRG:2164 90 04 + LDA #$9D ; CPU:$E166 PRG:2166 A9 9D + BNE SubCE0CD_OnNonnegative2 ; CPU:$E168 PRG:2168 D0 02 ; --------------------------------------------------------------------------- ; Label_E16A @@ -10105,8 +10105,8 @@ Label_E156: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E16A: - LDA #$B8 ; E16A: A9 B8 +SubCE0CD_Loop3: + LDA #$B8 ; CPU:$E16A PRG:216A A9 B8 ; --------------------------------------------------------------------------- ; Label_E16C @@ -10123,23 +10123,23 @@ Label_E16A: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E16C: - STA PPUDATA ; E16C: 8D 07 20 - DEY ; E16F: 88 - BPL Label_E16C ; E170: 10 FA - LDA $05 ; E172: A5 05 - CLC ; E174: 18 - ADC #$20 ; E175: 69 20 - STA $05 ; E177: 85 05 - LDA $04 ; E179: A5 04 - ADC #$00 ; E17B: 69 00 - STA $04 ; E17D: 85 04 - DEX ; E17F: CA - BPL Label_E156 ; E180: 10 D4 - LDX #$3F ; E182: A2 3F - LDA #$00 ; E184: A9 00 - JSR SetPpuAddress ; E186: 20 C1 C8 - LDY #$00 ; E189: A0 00 +SubCE0CD_OnNonnegative2: + STA PPUDATA ; CPU:$E16C PRG:216C 8D 07 20 + DEY ; CPU:$E16F PRG:216F 88 + BPL SubCE0CD_OnNonnegative2 ; CPU:$E170 PRG:2170 10 FA + LDA source_pointer_hi ; CPU:$E172 PRG:2172 A5 05 + CLC ; CPU:$E174 PRG:2174 18 + ADC #$20 ; CPU:$E175 PRG:2175 69 20 + STA source_pointer_hi ; CPU:$E177 PRG:2177 85 05 + LDA source_pointer_lo ; CPU:$E179 PRG:2179 A5 04 + ADC #$00 ; CPU:$E17B PRG:217B 69 00 + STA source_pointer_lo ; CPU:$E17D PRG:217D 85 04 + DEX ; CPU:$E17F PRG:217F CA + BPL SubCE0CD_OnNonnegative ; CPU:$E180 PRG:2180 10 D4 + LDX #$3F ; CPU:$E182 PRG:2182 A2 3F + LDA #$00 ; CPU:$E184 PRG:2184 A9 00 + JSR SetPpuAddress ; CPU:$E186 PRG:2186 20 C1 C8 + LDY #$00 ; CPU:$E189 PRG:2189 A0 00 ; --------------------------------------------------------------------------- ; Label_E18B @@ -10156,16 +10156,16 @@ Label_E16C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E18B: - LDA $E1B8,Y ; E18B: B9 B8 E1 - STA PPUDATA ; E18E: 8D 07 20 - INY ; E191: C8 - CPY #$20 ; E192: C0 20 - BCC Label_E18B ; E194: 90 F5 - JSR SpriteOffsetForController ; E196: 20 94 C8 - LDA #$FF ; E199: A9 FF - STA $0200,X ; E19B: 9D 00 02 - JMP SubCC89A ; E19E: 4C 9A C8 +SubCE0CD_OnCarryClear3: + LDA $E1B8,Y ; CPU:$E18B PRG:218B B9 B8 E1 + STA PPUDATA ; CPU:$E18E PRG:218E 8D 07 20 + INY ; CPU:$E191 PRG:2191 C8 + CPY #$20 ; CPU:$E192 PRG:2192 C0 20 + BCC SubCE0CD_OnCarryClear3 ; CPU:$E194 PRG:2194 90 F5 + JSR SpriteOffsetForController ; CPU:$E196 PRG:2196 20 94 C8 + LDA #$FF ; CPU:$E199 PRG:2199 A9 FF + STA $0200,X ; CPU:$E19B PRG:219B 9D 00 02 + JMP SubCC89A ; CPU:$E19E PRG:219E 4C 9A C8 ; --------------------------------------------------------------------------- ; SubCE1A1 @@ -10183,10 +10183,10 @@ Label_E18B: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE1A1: - JSR SetPpuAddress ; E1A1: 20 C1 C8 - LDA #$A0 ; E1A4: A9 A0 - LDY #$0C ; E1A6: A0 0C - JMP SubCC599 ; E1A8: 4C 99 C5 + JSR SetPpuAddress ; CPU:$E1A1 PRG:21A1 20 C1 C8 + LDA #$A0 ; CPU:$E1A4 PRG:21A4 A9 A0 + LDY #$0C ; CPU:$E1A6 PRG:21A6 A0 0C + JMP SubCC599 ; CPU:$E1A8 PRG:21A8 4C 99 C5 ; --------------------------------------------------------------------------- ; SubCE1AB @@ -10204,12 +10204,12 @@ SubCE1A1: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE1AB: - TYA ; E1AB: 98 - CLC ; E1AC: 18 - ADC $04 ; E1AD: 65 04 - STA $04 ; E1AF: 85 04 - BCC Label_E1B5 ; E1B1: 90 02 - INC $05 ; E1B3: E6 05 + TYA ; CPU:$E1AB PRG:21AB 98 + CLC ; CPU:$E1AC PRG:21AC 18 + ADC source_pointer_lo ; CPU:$E1AD PRG:21AD 65 04 + STA source_pointer_lo ; CPU:$E1AF PRG:21AF 85 04 + BCC SubCE1AB_Loop ; CPU:$E1B1 PRG:21B1 90 02 + INC source_pointer_hi ; CPU:$E1B3 PRG:21B3 E6 05 ; --------------------------------------------------------------------------- ; Label_E1B5 @@ -10226,9 +10226,9 @@ SubCE1AB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E1B5: - LDY #$00 ; E1B5: A0 00 - RTS ; E1B7: 60 +SubCE1AB_Loop: + LDY #$00 ; CPU:$E1B5 PRG:21B5 A0 00 + RTS ; CPU:$E1B7 PRG:21B7 60 ; --------------------------------------------------------------------------- ; GameplayPpuPalette @@ -10237,8 +10237,8 @@ Label_E1B5: ; Range: $E1B8-$E1D7 (32 bytes) ; --------------------------------------------------------------------------- GameplayPpuPalette: - .byte $29,$19,$07,$0F,$29,$19,$36,$0F,$29,$21,$30,$0F,$29,$19,$07,$21 ; E1B8-E1C7: 29 19 07 0F 29 19 36 0F 29 21 30 0F 29 19 07 21 - .byte $29,$01,$30,$27,$29,$25,$30,$0F,$29,$1A,$36,$0F,$29,$10,$30,$07 ; E1C8-E1D7: 29 01 30 27 29 25 30 0F 29 1A 36 0F 29 10 30 07 + .byte $29,$19,$07,$0F,$29,$19,$36,$0F,$29,$21,$30,$0F,$29,$19,$07,$21 ; E1B8-E1C7: 29 19 07 0F 29 19 36 0F 29 21 30 0F 29 19 07 21 ; CPU:$E1B8 PRG:21B8 29 19 07 0F 29 19 36 0F 29 21 30 0F + .byte $29,$01,$30,$27,$29,$25,$30,$0F,$29,$1A,$36,$0F,$29,$10,$30,$07 ; E1C8-E1D7: 29 01 30 27 29 25 30 0F 29 1A 36 0F 29 10 30 07 ; CPU:$E1C8 PRG:21C8 29 01 30 27 29 25 30 0F 29 1A 36 0F .incbin "prg.bin", $21D8, $00AA ; E1D8-E281: audited separately / remaining data ; --------------------------------------------------------------------------- @@ -10248,7 +10248,7 @@ GameplayPpuPalette: ; Range: $E282-$E282 (1 bytes) ; --------------------------------------------------------------------------- ObjectSpanStartZero: - .byte $00 ; E282-E282: 00 + .byte $00 ; E282-E282: 00 ; CPU:$E282 PRG:2282 00 ; --------------------------------------------------------------------------- ; ObjectSpanEnds @@ -10257,8 +10257,8 @@ ObjectSpanStartZero: ; Range: $E283-$E2A1 (31 bytes) ; --------------------------------------------------------------------------- ObjectSpanEnds: - .byte $00,$03,$07,$09,$0B,$0E,$10,$12,$14,$16,$19,$1B,$1E,$20,$23,$25 ; E283-E292: 00 03 07 09 0B 0E 10 12 14 16 19 1B 1E 20 23 25 - .byte $27,$29,$2B,$2E,$31,$34,$38,$3A,$3C,$3E,$40,$43,$45,$47,$49 ; E293-E2A1: 27 29 2B 2E 31 34 38 3A 3C 3E 40 43 45 47 49 + .byte $00,$03,$07,$09,$0B,$0E,$10,$12,$14,$16,$19,$1B,$1E,$20,$23,$25 ; E283-E292: 00 03 07 09 0B 0E 10 12 14 16 19 1B 1E 20 23 25 ; CPU:$E283 PRG:2283 00 03 07 09 0B 0E 10 12 14 16 19 1B + .byte $27,$29,$2B,$2E,$31,$34,$38,$3A,$3C,$3E,$40,$43,$45,$47,$49 ; E293-E2A1: 27 29 2B 2E 31 34 38 3A 3C 3E 40 43 45 47 49 ; CPU:$E293 PRG:2293 27 29 2B 2E 31 34 38 3A 3C 3E 40 43 ; --------------------------------------------------------------------------- ; ObjectTileTable @@ -10267,11 +10267,11 @@ ObjectSpanEnds: ; Range: $E2A2-$E2EA (73 bytes) ; --------------------------------------------------------------------------- ObjectTileTable: - .byte $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7,$E8,$E9,$EA,$E5,$EB,$EC,$ED,$EE ; E2A2-E2B1: E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA E5 EB EC ED EE - .byte $F2,$E8,$EF,$F0,$F1,$EE,$E0,$E1,$E2,$E7,$E8,$E7,$E1,$E2,$E7,$E8 ; E2B2-E2C1: F2 E8 EF F0 F1 EE E0 E1 E2 E7 E8 E7 E1 E2 E7 E8 - .byte $E5,$EB,$EC,$E9,$EA,$F1,$EE,$ED,$EE,$EF,$F0,$E0,$E1,$E2,$E0,$E1 ; E2C2-E2D1: E5 EB EC E9 EA F1 EE ED EE EF F0 E0 E1 E2 E0 E1 - .byte $E2,$E0,$E1,$E2,$E4,$E3,$E6,$E5,$E7,$E8,$EA,$E9,$F0,$EF,$EE,$ED ; E2D2-E2E1: E2 E0 E1 E2 E4 E3 E6 E5 E7 E8 EA E9 F0 EF EE ED - .byte $E0,$E1,$E2,$E7,$E8,$EE,$F1,$F2,$E8 ; E2E2-E2EA: E0 E1 E2 E7 E8 EE F1 F2 E8 + .byte $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7,$E8,$E9,$EA,$E5,$EB,$EC,$ED,$EE ; E2A2-E2B1: E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA E5 EB EC ED EE ; CPU:$E2A2 PRG:22A2 E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA E5 + .byte $F2,$E8,$EF,$F0,$F1,$EE,$E0,$E1,$E2,$E7,$E8,$E7,$E1,$E2,$E7,$E8 ; E2B2-E2C1: F2 E8 EF F0 F1 EE E0 E1 E2 E7 E8 E7 E1 E2 E7 E8 ; CPU:$E2B2 PRG:22B2 F2 E8 EF F0 F1 EE E0 E1 E2 E7 E8 E7 + .byte $E5,$EB,$EC,$E9,$EA,$F1,$EE,$ED,$EE,$EF,$F0,$E0,$E1,$E2,$E0,$E1 ; E2C2-E2D1: E5 EB EC E9 EA F1 EE ED EE EF F0 E0 E1 E2 E0 E1 ; CPU:$E2C2 PRG:22C2 E5 EB EC E9 EA F1 EE ED EE EF F0 E0 + .byte $E2,$E0,$E1,$E2,$E4,$E3,$E6,$E5,$E7,$E8,$EA,$E9,$F0,$EF,$EE,$ED ; E2D2-E2E1: E2 E0 E1 E2 E4 E3 E6 E5 E7 E8 EA E9 F0 EF EE ED ; CPU:$E2D2 PRG:22D2 E2 E0 E1 E2 E4 E3 E6 E5 E7 E8 EA E9 + .byte $E0,$E1,$E2,$E7,$E8,$EE,$F1,$F2,$E8 ; E2E2-E2EA: E0 E1 E2 E7 E8 EE F1 F2 E8 ; CPU:$E2E2 PRG:22E2 E0 E1 E2 E7 E8 EE F1 F2 E8 ; --------------------------------------------------------------------------- ; ObjectXOffsetTable @@ -10280,11 +10280,11 @@ ObjectTileTable: ; Range: $E2EB-$E333 (73 bytes) ; --------------------------------------------------------------------------- ObjectXOffsetTable: - .byte $00,$08,$10,$00,$00,$08,$08,$00,$08,$03,$00,$00,$01,$00,$00,$00 ; E2EB-E2FA: 00 08 10 00 00 08 08 00 08 03 00 00 01 00 00 00 - .byte $00,$08,$00,$00,$00,$00,$00,$08,$10,$00,$08,$00,$08,$10,$00,$08 ; E2FB-E30A: 00 08 00 00 00 00 00 08 10 00 08 00 08 10 00 08 - .byte $00,$01,$01,$01,$00,$00,$01,$00,$01,$00,$01,$00,$08,$10,$00,$08 ; E30B-E31A: 00 01 01 01 00 00 01 00 01 00 01 00 08 10 00 08 - .byte $10,$00,$08,$10,$00,$00,$08,$08,$00,$08,$00,$03,$00,$00,$00,$00 ; E31B-E32A: 10 00 08 10 00 00 08 08 00 08 00 03 00 00 00 00 - .byte $00,$08,$10,$00,$08,$00,$00,$00,$08 ; E32B-E333: 00 08 10 00 08 00 00 00 08 + .byte $00,$08,$10,$00,$00,$08,$08,$00,$08,$03,$00,$00,$01,$00,$00,$00 ; E2EB-E2FA: 00 08 10 00 00 08 08 00 08 03 00 00 01 00 00 00 ; CPU:$E2EB PRG:22EB 00 08 10 00 00 08 08 00 08 03 00 00 + .byte $00,$08,$00,$00,$00,$00,$00,$08,$10,$00,$08,$00,$08,$10,$00,$08 ; E2FB-E30A: 00 08 00 00 00 00 00 08 10 00 08 00 08 10 00 08 ; CPU:$E2FB PRG:22FB 00 08 00 00 00 00 00 08 10 00 08 00 + .byte $00,$01,$01,$01,$00,$00,$01,$00,$01,$00,$01,$00,$08,$10,$00,$08 ; E30B-E31A: 00 01 01 01 00 00 01 00 01 00 01 00 08 10 00 08 ; CPU:$E30B PRG:230B 00 01 01 01 00 00 01 00 01 00 01 00 + .byte $10,$00,$08,$10,$00,$00,$08,$08,$00,$08,$00,$03,$00,$00,$00,$00 ; E31B-E32A: 10 00 08 10 00 00 08 08 00 08 00 03 00 00 00 00 ; CPU:$E31B PRG:231B 10 00 08 10 00 00 08 08 00 08 00 03 + .byte $00,$08,$10,$00,$08,$00,$00,$00,$08 ; E32B-E333: 00 08 10 00 08 00 00 00 08 ; CPU:$E32B PRG:232B 00 08 10 00 08 00 00 00 08 ; --------------------------------------------------------------------------- ; ObjectYOffsetTable @@ -10293,11 +10293,11 @@ ObjectXOffsetTable: ; Range: $E334-$E37C (73 bytes) ; --------------------------------------------------------------------------- ObjectYOffsetTable: - .byte $03,$01,$00,$08,$10,$00,$08,$00,$00,$00,$08,$00,$08,$10,$00,$08 ; E334-E343: 03 01 00 08 10 00 08 00 00 00 08 00 08 10 00 08 - .byte $00,$00,$00,$08,$00,$08,$01,$00,$00,$02,$00,$03,$01,$00,$01,$00 ; E344-E353: 00 00 00 08 00 08 01 00 00 02 00 03 01 00 01 00 - .byte $00,$08,$10,$00,$08,$00,$08,$00,$08,$00,$08,$00,$02,$04,$00,$01 ; E354-E363: 00 08 10 00 08 00 08 00 08 00 08 00 02 04 00 01 - .byte $02,$00,$01,$01,$00,$08,$08,$10,$00,$02,$00,$08,$00,$08,$00,$08 ; E364-E373: 02 00 01 01 00 08 08 10 00 02 00 08 00 08 00 08 - .byte $00,$02,$03,$00,$00,$00,$08,$00,$00 ; E374-E37C: 00 02 03 00 00 00 08 00 00 + .byte $03,$01,$00,$08,$10,$00,$08,$00,$00,$00,$08,$00,$08,$10,$00,$08 ; E334-E343: 03 01 00 08 10 00 08 00 00 00 08 00 08 10 00 08 ; CPU:$E334 PRG:2334 03 01 00 08 10 00 08 00 00 00 08 00 + .byte $00,$00,$00,$08,$00,$08,$01,$00,$00,$02,$00,$03,$01,$00,$01,$00 ; E344-E353: 00 00 00 08 00 08 01 00 00 02 00 03 01 00 01 00 ; CPU:$E344 PRG:2344 00 00 00 08 00 08 01 00 00 02 00 03 + .byte $00,$08,$10,$00,$08,$00,$08,$00,$08,$00,$08,$00,$02,$04,$00,$01 ; E354-E363: 00 08 10 00 08 00 08 00 08 00 08 00 02 04 00 01 ; CPU:$E354 PRG:2354 00 08 10 00 08 00 08 00 08 00 08 00 + .byte $02,$00,$01,$01,$00,$08,$08,$10,$00,$02,$00,$08,$00,$08,$00,$08 ; E364-E373: 02 00 01 01 00 08 08 10 00 02 00 08 00 08 00 08 ; CPU:$E364 PRG:2364 02 00 01 01 00 08 08 10 00 02 00 08 + .byte $00,$02,$03,$00,$00,$00,$08,$00,$00 ; E374-E37C: 00 02 03 00 00 00 08 00 00 ; CPU:$E374 PRG:2374 00 02 03 00 00 00 08 00 00 ; --------------------------------------------------------------------------- ; FixedObjectSpanBounds @@ -10306,7 +10306,7 @@ ObjectYOffsetTable: ; Range: $E37D-$E383 (7 bytes) ; --------------------------------------------------------------------------- FixedObjectSpanBounds: - .byte $00,$03,$06,$0B,$10,$17,$1E ; E37D-E383: 00 03 06 0B 10 17 1E + .byte $00,$03,$06,$0B,$10,$17,$1E ; E37D-E383: 00 03 06 0B 10 17 1E ; CPU:$E37D PRG:237D 00 03 06 0B 10 17 1E ; --------------------------------------------------------------------------- ; FixedObjectXOffsets @@ -10315,8 +10315,8 @@ FixedObjectSpanBounds: ; Range: $E384-$E3A1 (30 bytes) ; --------------------------------------------------------------------------- FixedObjectXOffsets: - .byte $00,$08,$04,$00,$08,$04,$00,$00,$08,$08,$04,$00,$00,$08,$08,$04 ; E384-E393: 00 08 04 00 08 04 00 00 08 08 04 00 00 08 08 04 - .byte $00,$00,$00,$08,$08,$08,$04,$00,$00,$00,$08,$08,$08,$04 ; E394-E3A1: 00 00 00 08 08 08 04 00 00 00 08 08 08 04 + .byte $00,$08,$04,$00,$08,$04,$00,$00,$08,$08,$04,$00,$00,$08,$08,$04 ; E384-E393: 00 08 04 00 08 04 00 00 08 08 04 00 00 08 08 04 ; CPU:$E384 PRG:2384 00 08 04 00 08 04 00 00 08 08 04 00 + .byte $00,$00,$00,$08,$08,$08,$04,$00,$00,$00,$08,$08,$08,$04 ; E394-E3A1: 00 00 00 08 08 08 04 00 00 00 08 08 08 04 ; CPU:$E394 PRG:2394 00 00 00 08 08 08 04 00 00 00 08 08 ; --------------------------------------------------------------------------- ; FixedObjectTileTable @@ -10325,8 +10325,8 @@ FixedObjectXOffsets: ; Range: $E3A2-$E3BF (30 bytes) ; --------------------------------------------------------------------------- FixedObjectTileTable: - .byte $FA,$F5,$F7,$FA,$F5,$F7,$F8,$F9,$FB,$FC,$F7,$F9,$F8,$FC,$FB,$F7 ; E3A2-E3B1: FA F5 F7 FA F5 F7 F8 F9 FB FC F7 F9 F8 FC FB F7 - .byte $F8,$F6,$F9,$FB,$F6,$FC,$F7,$F9,$F6,$F8,$FC,$F6,$FB,$F7 ; E3B2-E3BF: F8 F6 F9 FB F6 FC F7 F9 F6 F8 FC F6 FB F7 + .byte $FA,$F5,$F7,$FA,$F5,$F7,$F8,$F9,$FB,$FC,$F7,$F9,$F8,$FC,$FB,$F7 ; E3A2-E3B1: FA F5 F7 FA F5 F7 F8 F9 FB FC F7 F9 F8 FC FB F7 ; CPU:$E3A2 PRG:23A2 FA F5 F7 FA F5 F7 F8 F9 FB FC F7 F9 + .byte $F8,$F6,$F9,$FB,$F6,$FC,$F7,$F9,$F6,$F8,$FC,$F6,$FB,$F7 ; E3B2-E3BF: F8 F6 F9 FB F6 FC F7 F9 F6 F8 FC F6 FB F7 ; CPU:$E3B2 PRG:23B2 F8 F6 F9 FB F6 FC F7 F9 F6 F8 FC F6 ; --------------------------------------------------------------------------- ; FixedObjectAttributeTable @@ -10335,8 +10335,8 @@ FixedObjectTileTable: ; Range: $E3C0-$E3DD (30 bytes) ; --------------------------------------------------------------------------- FixedObjectAttributeTable: - .byte $02,$02,$02,$42,$42,$42,$02,$02,$02,$02,$02,$42,$42,$42,$42,$42 ; E3C0-E3CF: 02 02 02 42 42 42 02 02 02 02 02 42 42 42 42 42 - .byte $02,$02,$02,$02,$82,$02,$02,$42,$42,$42,$42,$C2,$42,$42 ; E3D0-E3DD: 02 02 02 02 82 02 02 42 42 42 42 C2 42 42 + .byte $02,$02,$02,$42,$42,$42,$02,$02,$02,$02,$02,$42,$42,$42,$42,$42 ; E3C0-E3CF: 02 02 02 42 42 42 02 02 02 02 02 42 42 42 42 42 ; CPU:$E3C0 PRG:23C0 02 02 02 42 42 42 02 02 02 02 02 42 + .byte $02,$02,$02,$02,$82,$02,$02,$42,$42,$42,$42,$C2,$42,$42 ; E3D0-E3DD: 02 02 02 02 82 02 02 42 42 42 42 C2 42 42 ; CPU:$E3D0 PRG:23D0 02 02 02 02 82 02 02 42 42 42 42 C2 .incbin "prg.bin", $23DE, $001E ; E3DE-E3FB: following unaudited table ; --------------------------------------------------------------------------- ; SubCE3FC @@ -10354,35 +10354,35 @@ FixedObjectAttributeTable: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE3FC: - LDA #$01 ; E3FC: A9 01 - STA $7F ; E3FE: 85 7F - STA $80 ; E400: 85 80 - LDA #$B1 ; E402: A9 B1 - STA $04 ; E404: 85 04 - LDA #$03 ; E406: A9 03 - STA $05 ; E408: 85 05 - LDX $2B ; E40A: A6 2B - LDA $E58B,X ; E40C: BD 8B E5 - JSR SubCDA1E ; E40F: 20 1E DA - STA $19 ; E412: 85 19 - LDA #$0E ; E414: A9 0E - SEC ; E416: 38 - SBC $19 ; E417: E5 19 - STA $86 ; E419: 85 86 - LDA $E58B,X ; E41B: BD 8B E5 - AND #$0F ; E41E: 29 0F - PHA ; E420: 48 - CLC ; E421: 18 - ADC #$D5 ; E422: 69 D5 - STA $1A ; E424: 85 1A - PLA ; E426: 68 - JSR MultiplyABy32 ; E427: 20 BB C8 - STA $85 ; E42A: 85 85 - LDA $E59D,X ; E42C: BD 9D E5 - AND #$0F ; E42F: 29 0F - STA $1B ; E431: 85 1B - LDX #$00 ; E433: A2 00 - STX $1C ; E435: 86 1C + LDA #$01 ; CPU:$E3FC PRG:23FC A9 01 + STA $7F ; CPU:$E3FE PRG:23FE 85 7F + STA $80 ; CPU:$E400 PRG:2400 85 80 + LDA #$B1 ; CPU:$E402 PRG:2402 A9 B1 + STA source_pointer_lo ; CPU:$E404 PRG:2404 85 04 + LDA #$03 ; CPU:$E406 PRG:2406 A9 03 + STA source_pointer_hi ; CPU:$E408 PRG:2408 85 05 + LDX current_hole_index ; CPU:$E40A PRG:240A A6 2B + LDA $E58B,X ; CPU:$E40C PRG:240C BD 8B E5 + JSR SubCDA1E ; CPU:$E40F PRG:240F 20 1E DA + STA $19 ; CPU:$E412 PRG:2412 85 19 + LDA #$0E ; CPU:$E414 PRG:2414 A9 0E + SEC ; CPU:$E416 PRG:2416 38 + SBC $19 ; CPU:$E417 PRG:2417 E5 19 + STA $86 ; CPU:$E419 PRG:2419 85 86 + LDA $E58B,X ; CPU:$E41B PRG:241B BD 8B E5 + AND #$0F ; CPU:$E41E PRG:241E 29 0F + PHA ; CPU:$E420 PRG:2420 48 + CLC ; CPU:$E421 PRG:2421 18 + ADC #$D5 ; CPU:$E422 PRG:2422 69 D5 + STA $1A ; CPU:$E424 PRG:2424 85 1A + PLA ; CPU:$E426 PRG:2426 68 + JSR MultiplyABy32 ; CPU:$E427 PRG:2427 20 BB C8 + STA $85 ; CPU:$E42A PRG:242A 85 85 + LDA $E59D,X ; CPU:$E42C PRG:242C BD 9D E5 + AND #$0F ; CPU:$E42F PRG:242F 29 0F + STA $1B ; CPU:$E431 PRG:2431 85 1B + LDX #$00 ; CPU:$E433 PRG:2433 A2 00 + STX $1C ; CPU:$E435 PRG:2435 86 1C ; --------------------------------------------------------------------------- ; Label_E437 @@ -10399,15 +10399,15 @@ SubCE3FC: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E437: - LDY #$00 ; E437: A0 00 - LDA $19 ; E439: A5 19 - CMP #$05 ; E43B: C9 05 - BCS Label_E447 ; E43D: B0 08 - INC $1C ; E43F: E6 1C - CMP #$04 ; E441: C9 04 - BCC Label_E447 ; E443: 90 02 - INC $1C ; E445: E6 1C +SubCE3FC_OnCarryClear: + LDY #$00 ; CPU:$E437 PRG:2437 A0 00 + LDA $19 ; CPU:$E439 PRG:2439 A5 19 + CMP #$05 ; CPU:$E43B PRG:243B C9 05 + BCS SubCE3FC_Loop ; CPU:$E43D PRG:243D B0 08 + INC $1C ; CPU:$E43F PRG:243F E6 1C + CMP #$04 ; CPU:$E441 PRG:2441 C9 04 + BCC SubCE3FC_Loop ; CPU:$E443 PRG:2443 90 02 + INC $1C ; CPU:$E445 PRG:2445 E6 1C ; --------------------------------------------------------------------------- ; Label_E447 @@ -10424,16 +10424,16 @@ Label_E437: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E447: - LDA $1C ; E447: A5 1C - CMP $19 ; E449: C5 19 - BCC Label_E458 ; E44B: 90 0B - LDA $1C ; E44D: A5 1C - SEC ; E44F: 38 - SBC $19 ; E450: E5 19 - STA $1C ; E452: 85 1C - LDA $1A ; E454: A5 1A - BNE Label_E45A ; E456: D0 02 +SubCE3FC_Loop: + LDA $1C ; CPU:$E447 PRG:2447 A5 1C + CMP $19 ; CPU:$E449 PRG:2449 C5 19 + BCC SubCE3FC_Loop2 ; CPU:$E44B PRG:244B 90 0B + LDA $1C ; CPU:$E44D PRG:244D A5 1C + SEC ; CPU:$E44F PRG:244F 38 + SBC $19 ; CPU:$E450 PRG:2450 E5 19 + STA $1C ; CPU:$E452 PRG:2452 85 1C + LDA $1A ; CPU:$E454 PRG:2454 A5 1A + BNE SubCE3FC_Loop3 ; CPU:$E456 PRG:2456 D0 02 ; --------------------------------------------------------------------------- ; Label_E458 @@ -10450,8 +10450,8 @@ Label_E447: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E458: - LDA #$84 ; E458: A9 84 +SubCE3FC_Loop2: + LDA #$84 ; CPU:$E458 PRG:2458 A9 84 ; --------------------------------------------------------------------------- ; Label_E45A @@ -10468,18 +10468,18 @@ Label_E458: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E45A: - STA ($04),Y ; E45A: 91 04 - INC $1C ; E45C: E6 1C - INY ; E45E: C8 - CPY #$0C ; E45F: C0 0C - BCC Label_E447 ; E461: 90 E4 - LDA $04 ; E463: A5 04 - CLC ; E465: 18 - ADC #$10 ; E466: 69 10 - STA $04 ; E468: 85 04 - BCC Label_E46E ; E46A: 90 02 - INC $05 ; E46C: E6 05 +SubCE3FC_Loop3: + STA (source_pointer_lo),Y ; CPU:$E45A PRG:245A 91 04 + INC $1C ; CPU:$E45C PRG:245C E6 1C + INY ; CPU:$E45E PRG:245E C8 + CPY #$0C ; CPU:$E45F PRG:245F C0 0C + BCC SubCE3FC_Loop ; CPU:$E461 PRG:2461 90 E4 + LDA source_pointer_lo ; CPU:$E463 PRG:2463 A5 04 + CLC ; CPU:$E465 PRG:2465 18 + ADC #$10 ; CPU:$E466 PRG:2466 69 10 + STA source_pointer_lo ; CPU:$E468 PRG:2468 85 04 + BCC SubCE3FC_Loop4 ; CPU:$E46A PRG:246A 90 02 + INC source_pointer_hi ; CPU:$E46C PRG:246C E6 05 ; --------------------------------------------------------------------------- ; Label_E46E @@ -10496,21 +10496,21 @@ Label_E45A: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E46E: - INX ; E46E: E8 - CPX #$0A ; E46F: E0 0A - BCC Label_E437 ; E471: 90 C4 - LDA #$80 ; E473: A9 80 - STA $04 ; E475: 85 04 - LDA #$03 ; E477: A9 03 - STA $05 ; E479: 85 05 - LDY $1B ; E47B: A4 1B - LDA $E5AF,Y ; E47D: B9 AF E5 - STA $06 ; E480: 85 06 - LDA $E5B2,Y ; E482: B9 B2 E5 - STA $07 ; E485: 85 07 - LDA #$00 ; E487: A9 00 - STA $1A ; E489: 85 1A +SubCE3FC_Loop4: + INX ; CPU:$E46E PRG:246E E8 + CPX #$0A ; CPU:$E46F PRG:246F E0 0A + BCC SubCE3FC_OnCarryClear ; CPU:$E471 PRG:2471 90 C4 + LDA #$80 ; CPU:$E473 PRG:2473 A9 80 + STA source_pointer_lo ; CPU:$E475 PRG:2475 85 04 + LDA #$03 ; CPU:$E477 PRG:2477 A9 03 + STA source_pointer_hi ; CPU:$E479 PRG:2479 85 05 + LDY $1B ; CPU:$E47B PRG:247B A4 1B + LDA $E5AF,Y ; CPU:$E47D PRG:247D B9 AF E5 + STA destination_pointer_lo ; CPU:$E480 PRG:2480 85 06 + LDA $E5B2,Y ; CPU:$E482 PRG:2482 B9 B2 E5 + STA destination_pointer_hi ; CPU:$E485 PRG:2485 85 07 + LDA #$00 ; CPU:$E487 PRG:2487 A9 00 + STA $1A ; CPU:$E489 PRG:2489 85 1A ; --------------------------------------------------------------------------- ; SubCE48B @@ -10528,7 +10528,7 @@ Label_E46E: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE48B: - LDY #$00 ; E48B: A0 00 + LDY #$00 ; CPU:$E48B PRG:248B A0 00 ; --------------------------------------------------------------------------- ; SubCE48D @@ -10546,16 +10546,16 @@ SubCE48B: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE48D: - STY $19 ; E48D: 84 19 - CPY #$10 ; E48F: C0 10 - BCC Label_E4A1 ; E491: 90 0E - LDA $04 ; E493: A5 04 - CLC ; E495: 18 - ADC #$10 ; E496: 69 10 - STA $04 ; E498: 85 04 - BCC SubCE48B ; E49A: 90 EF - INC $05 ; E49C: E6 05 - JMP SubCE48B ; E49E: 4C 8B E4 + STY $19 ; CPU:$E48D PRG:248D 84 19 + CPY #$10 ; CPU:$E48F PRG:248F C0 10 + BCC SubCE48D_Loop ; CPU:$E491 PRG:2491 90 0E + LDA source_pointer_lo ; CPU:$E493 PRG:2493 A5 04 + CLC ; CPU:$E495 PRG:2495 18 + ADC #$10 ; CPU:$E496 PRG:2496 69 10 + STA source_pointer_lo ; CPU:$E498 PRG:2498 85 04 + BCC SubCE48B ; CPU:$E49A PRG:249A 90 EF + INC source_pointer_hi ; CPU:$E49C PRG:249C E6 05 + JMP SubCE48B ; CPU:$E49E PRG:249E 4C 8B E4 ; --------------------------------------------------------------------------- ; Label_E4A1 @@ -10572,17 +10572,17 @@ SubCE48D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E4A1: - LDY $1A ; E4A1: A4 1A - INC $1A ; E4A3: E6 1A - LDA ($06),Y ; E4A5: B1 06 - CMP #$40 ; E4A7: C9 40 - BEQ Label_E4DF ; E4A9: F0 34 - BCC Label_E4B5 ; E4AB: 90 08 - LDY $19 ; E4AD: A4 19 - STA ($04),Y ; E4AF: 91 04 - INY ; E4B1: C8 - JMP SubCE48D ; E4B2: 4C 8D E4 +SubCE48D_Loop: + LDY $1A ; CPU:$E4A1 PRG:24A1 A4 1A + INC $1A ; CPU:$E4A3 PRG:24A3 E6 1A + LDA (destination_pointer_lo),Y ; CPU:$E4A5 PRG:24A5 B1 06 + CMP #$40 ; CPU:$E4A7 PRG:24A7 C9 40 + BEQ SubCE48D_Loop4 ; CPU:$E4A9 PRG:24A9 F0 34 + BCC SubCE48D_Loop2 ; CPU:$E4AB PRG:24AB 90 08 + LDY $19 ; CPU:$E4AD PRG:24AD A4 19 + STA (source_pointer_lo),Y ; CPU:$E4AF PRG:24AF 91 04 + INY ; CPU:$E4B1 PRG:24B1 C8 + JMP SubCE48D ; CPU:$E4B2 PRG:24B2 4C 8D E4 ; --------------------------------------------------------------------------- ; Label_E4B5 @@ -10599,18 +10599,18 @@ Label_E4A1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E4B5: - JSR SubCDA1E ; E4B5: 20 1E DA - CMP #$03 ; E4B8: C9 03 - BEQ Label_E4D4 ; E4BA: F0 18 - TAX ; E4BC: AA - LDA $E588,X ; E4BD: BD 88 E5 - STA $1B ; E4C0: 85 1B - LDA ($06),Y ; E4C2: B1 06 - AND #$0F ; E4C4: 29 0F - TAX ; E4C6: AA - LDY $19 ; E4C7: A4 19 - LDA $1B ; E4C9: A5 1B +SubCE48D_Loop2: + JSR SubCDA1E ; CPU:$E4B5 PRG:24B5 20 1E DA + CMP #$03 ; CPU:$E4B8 PRG:24B8 C9 03 + BEQ SubCE48D_Loop3 ; CPU:$E4BA PRG:24BA F0 18 + TAX ; CPU:$E4BC PRG:24BC AA + LDA $E588,X ; CPU:$E4BD PRG:24BD BD 88 E5 + STA $1B ; CPU:$E4C0 PRG:24C0 85 1B + LDA (destination_pointer_lo),Y ; CPU:$E4C2 PRG:24C2 B1 06 + AND #$0F ; CPU:$E4C4 PRG:24C4 29 0F + TAX ; CPU:$E4C6 PRG:24C6 AA + LDY $19 ; CPU:$E4C7 PRG:24C7 A4 19 + LDA $1B ; CPU:$E4C9 PRG:24C9 A5 1B ; --------------------------------------------------------------------------- ; Label_E4CB @@ -10627,12 +10627,12 @@ Label_E4B5: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E4CB: - STA ($04),Y ; E4CB: 91 04 - INY ; E4CD: C8 - DEX ; E4CE: CA - BPL Label_E4CB ; E4CF: 10 FA - JMP SubCE48D ; E4D1: 4C 8D E4 +SubCE48D_OnNonnegative: + STA (source_pointer_lo),Y ; CPU:$E4CB PRG:24CB 91 04 + INY ; CPU:$E4CD PRG:24CD C8 + DEX ; CPU:$E4CE PRG:24CE CA + BPL SubCE48D_OnNonnegative ; CPU:$E4CF PRG:24CF 10 FA + JMP SubCE48D ; CPU:$E4D1 PRG:24D1 4C 8D E4 ; --------------------------------------------------------------------------- ; Label_E4D4 @@ -10649,13 +10649,13 @@ Label_E4CB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E4D4: - LDA ($06),Y ; E4D4: B1 06 - AND #$0F ; E4D6: 29 0F - SEC ; E4D8: 38 - ADC $19 ; E4D9: 65 19 - TAY ; E4DB: A8 - JMP SubCE48D ; E4DC: 4C 8D E4 +SubCE48D_Loop3: + LDA (destination_pointer_lo),Y ; CPU:$E4D4 PRG:24D4 B1 06 + AND #$0F ; CPU:$E4D6 PRG:24D6 29 0F + SEC ; CPU:$E4D8 PRG:24D8 38 + ADC $19 ; CPU:$E4D9 PRG:24D9 65 19 + TAY ; CPU:$E4DB PRG:24DB A8 + JMP SubCE48D ; CPU:$E4DC PRG:24DC 4C 8D E4 ; --------------------------------------------------------------------------- ; Label_E4DF @@ -10672,41 +10672,41 @@ Label_E4D4: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E4DF: - LDY $67 ; E4DF: A4 67 - DEY ; E4E1: 88 - STY $0298 ; E4E2: 8C 98 02 - LDA #$FF ; E4E5: A9 FF - STA $0299 ; E4E7: 8D 99 02 - LDA #$01 ; E4EA: A9 01 - STA $029A ; E4EC: 8D 9A 02 - LDX $68 ; E4EF: A6 68 - DEX ; E4F1: CA - DEX ; E4F2: CA - STX $029B ; E4F3: 8E 9B 02 - LDA $0D ; E4F6: A5 0D - BEQ Label_E52C ; E4F8: F0 32 - LDA $7B ; E4FA: A5 7B - CMP #$03 ; E4FC: C9 03 - BEQ Label_E52C ; E4FE: F0 2C - LDA $7C ; E500: A5 7C - CMP #$03 ; E502: C9 03 - BEQ Label_E52C ; E504: F0 26 - LDA $40 ; E506: A5 40 - STA $0200 ; E508: 8D 00 02 - LDA $3E ; E50B: A5 3E - STA $0203 ; E50D: 8D 03 02 - LDA $41 ; E510: A5 41 - STA $0204 ; E512: 8D 04 02 - LDA $3F ; E515: A5 3F - STA $0207 ; E517: 8D 07 02 - LDA #$DD ; E51A: A9 DD - STA $0201 ; E51C: 8D 01 02 - LDA #$F3 ; E51F: A9 F3 - STA $0205 ; E521: 8D 05 02 - LDA #$01 ; E524: A9 01 - STA $0202 ; E526: 8D 02 02 - STA $0206 ; E529: 8D 06 02 +SubCE48D_Loop4: + LDY $67 ; CPU:$E4DF PRG:24DF A4 67 + DEY ; CPU:$E4E1 PRG:24E1 88 + STY $0298 ; CPU:$E4E2 PRG:24E2 8C 98 02 + LDA #$FF ; CPU:$E4E5 PRG:24E5 A9 FF + STA $0299 ; CPU:$E4E7 PRG:24E7 8D 99 02 + LDA #$01 ; CPU:$E4EA PRG:24EA A9 01 + STA $029A ; CPU:$E4EC PRG:24EC 8D 9A 02 + LDX $68 ; CPU:$E4EF PRG:24EF A6 68 + DEX ; CPU:$E4F1 PRG:24F1 CA + DEX ; CPU:$E4F2 PRG:24F2 CA + STX $029B ; CPU:$E4F3 PRG:24F3 8E 9B 02 + LDA menu_selection ; CPU:$E4F6 PRG:24F6 A5 0D + BEQ SubCE48D_Loop5 ; CPU:$E4F8 PRG:24F8 F0 32 + LDA $7B ; CPU:$E4FA PRG:24FA A5 7B + CMP #$03 ; CPU:$E4FC PRG:24FC C9 03 + BEQ SubCE48D_Loop5 ; CPU:$E4FE PRG:24FE F0 2C + LDA $7C ; CPU:$E500 PRG:2500 A5 7C + CMP #$03 ; CPU:$E502 PRG:2502 C9 03 + BEQ SubCE48D_Loop5 ; CPU:$E504 PRG:2504 F0 26 + LDA $40 ; CPU:$E506 PRG:2506 A5 40 + STA $0200 ; CPU:$E508 PRG:2508 8D 00 02 + LDA $3E ; CPU:$E50B PRG:250B A5 3E + STA $0203 ; CPU:$E50D PRG:250D 8D 03 02 + LDA $41 ; CPU:$E510 PRG:2510 A5 41 + STA $0204 ; CPU:$E512 PRG:2512 8D 04 02 + LDA $3F ; CPU:$E515 PRG:2515 A5 3F + STA $0207 ; CPU:$E517 PRG:2517 8D 07 02 + LDA #$DD ; CPU:$E51A PRG:251A A9 DD + STA $0201 ; CPU:$E51C PRG:251C 8D 01 02 + LDA #$F3 ; CPU:$E51F PRG:251F A9 F3 + STA $0205 ; CPU:$E521 PRG:2521 8D 05 02 + LDA #$01 ; CPU:$E524 PRG:2524 A9 01 + STA $0202 ; CPU:$E526 PRG:2526 8D 02 02 + STA $0206 ; CPU:$E529 PRG:2529 8D 06 02 ; --------------------------------------------------------------------------- ; Label_E52C @@ -10723,8 +10723,8 @@ Label_E4DF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E52C: - JMP SubCDFB8 ; E52C: 4C B8 DF +SubCE48D_Loop5: + JMP SubCDFB8 ; CPU:$E52C PRG:252C 4C B8 DF ; --------------------------------------------------------------------------- ; SubCE52F @@ -10742,19 +10742,19 @@ Label_E52C: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE52F: - LDY $57 ; E52F: A4 57 - LDA $E6AA,Y ; E531: B9 AA E6 - STA $5F ; E534: 85 5F - LDA $65 ; E536: A5 65 - SEC ; E538: 38 - SBC $3B ; E539: E5 3B - BMI Label_E54A ; E53B: 30 0D - STA $5E ; E53D: 85 5E - JSR SubCF906 ; E53F: 20 06 F9 - LDA $67 ; E542: A5 67 - SEC ; E544: 38 - SBC $60 ; E545: E5 60 - JMP SubCE559 ; E547: 4C 59 E5 + LDY $57 ; CPU:$E52F PRG:252F A4 57 + LDA $E6AA,Y ; CPU:$E531 PRG:2531 B9 AA E6 + STA $5F ; CPU:$E534 PRG:2534 85 5F + LDA $65 ; CPU:$E536 PRG:2536 A5 65 + SEC ; CPU:$E538 PRG:2538 38 + SBC $3B ; CPU:$E539 PRG:2539 E5 3B + BMI SubCE52F_Loop ; CPU:$E53B PRG:253B 30 0D + STA $5E ; CPU:$E53D PRG:253D 85 5E + JSR SubCF906 ; CPU:$E53F PRG:253F 20 06 F9 + LDA $67 ; CPU:$E542 PRG:2542 A5 67 + SEC ; CPU:$E544 PRG:2544 38 + SBC $60 ; CPU:$E545 PRG:2545 E5 60 + JMP SubCE559 ; CPU:$E547 PRG:2547 4C 59 E5 ; --------------------------------------------------------------------------- ; Label_E54A @@ -10771,15 +10771,15 @@ SubCE52F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E54A: - LDA $3B ; E54A: A5 3B - SEC ; E54C: 38 - SBC $65 ; E54D: E5 65 - STA $5E ; E54F: 85 5E - JSR SubCF906 ; E551: 20 06 F9 - LDA $67 ; E554: A5 67 - CLC ; E556: 18 - ADC $60 ; E557: 65 60 +SubCE52F_Loop: + LDA $3B ; CPU:$E54A PRG:254A A5 3B + SEC ; CPU:$E54C PRG:254C 38 + SBC $65 ; CPU:$E54D PRG:254D E5 65 + STA $5E ; CPU:$E54F PRG:254F 85 5E + JSR SubCF906 ; CPU:$E551 PRG:2551 20 06 F9 + LDA $67 ; CPU:$E554 PRG:2554 A5 67 + CLC ; CPU:$E556 PRG:2556 18 + ADC $60 ; CPU:$E557 PRG:2557 65 60 ; --------------------------------------------------------------------------- ; SubCE559 @@ -10797,20 +10797,20 @@ Label_E54A: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE559: - STA $3B ; E559: 85 3B - LDY $57 ; E55B: A4 57 - LDA $E6AD,Y ; E55D: B9 AD E6 - STA $5F ; E560: 85 5F - LDA $66 ; E562: A5 66 - SEC ; E564: 38 - SBC $38 ; E565: E5 38 - BMI Label_E576 ; E567: 30 0D - STA $5E ; E569: 85 5E - JSR SubCF906 ; E56B: 20 06 F9 - LDA $68 ; E56E: A5 68 - SEC ; E570: 38 - SBC $60 ; E571: E5 60 - JMP SubCE585 ; E573: 4C 85 E5 + STA $3B ; CPU:$E559 PRG:2559 85 3B + LDY $57 ; CPU:$E55B PRG:255B A4 57 + LDA $E6AD,Y ; CPU:$E55D PRG:255D B9 AD E6 + STA $5F ; CPU:$E560 PRG:2560 85 5F + LDA $66 ; CPU:$E562 PRG:2562 A5 66 + SEC ; CPU:$E564 PRG:2564 38 + SBC $38 ; CPU:$E565 PRG:2565 E5 38 + BMI SubCE559_Loop ; CPU:$E567 PRG:2567 30 0D + STA $5E ; CPU:$E569 PRG:2569 85 5E + JSR SubCF906 ; CPU:$E56B PRG:256B 20 06 F9 + LDA $68 ; CPU:$E56E PRG:256E A5 68 + SEC ; CPU:$E570 PRG:2570 38 + SBC $60 ; CPU:$E571 PRG:2571 E5 60 + JMP SubCE585 ; CPU:$E573 PRG:2573 4C 85 E5 ; --------------------------------------------------------------------------- ; Label_E576 @@ -10827,15 +10827,15 @@ SubCE559: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_E576: - LDA $38 ; E576: A5 38 - SEC ; E578: 38 - SBC $66 ; E579: E5 66 - STA $5E ; E57B: 85 5E - JSR SubCF906 ; E57D: 20 06 F9 - LDA $68 ; E580: A5 68 - CLC ; E582: 18 - ADC $60 ; E583: 65 60 +SubCE559_Loop: + LDA $38 ; CPU:$E576 PRG:2576 A5 38 + SEC ; CPU:$E578 PRG:2578 38 + SBC $66 ; CPU:$E579 PRG:2579 E5 66 + STA $5E ; CPU:$E57B PRG:257B 85 5E + JSR SubCF906 ; CPU:$E57D PRG:257D 20 06 F9 + LDA $68 ; CPU:$E580 PRG:2580 A5 68 + CLC ; CPU:$E582 PRG:2582 18 + ADC $60 ; CPU:$E583 PRG:2583 65 60 ; --------------------------------------------------------------------------- ; SubCE585 @@ -10853,8 +10853,8 @@ Label_E576: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE585: - STA $38 ; E585: 85 38 - RTS ; E587: 60 + STA $38 ; CPU:$E585 PRG:2585 85 38 + RTS ; CPU:$E587 PRG:2587 60 .incbin "prg.bin", $2588, $0128 ; E588-E6AF: unclassified/data ; --------------------------------------------------------------------------- @@ -10873,15 +10873,15 @@ SubCE585: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCE6B0: - LDY $2B ; E6B0: A4 2B - LDA $E59D,Y ; E6B2: B9 9D E5 - JSR SubCDA1E ; E6B5: 20 1E DA - TAY ; E6B8: A8 - LDA #$81 ; E6B9: A9 81 - STA $67 ; E6BB: 85 67 - LDA $E6A7,Y ; E6BD: B9 A7 E6 - STA $68 ; E6C0: 85 68 - RTS ; E6C2: 60 + LDY current_hole_index ; CPU:$E6B0 PRG:26B0 A4 2B + LDA $E59D,Y ; CPU:$E6B2 PRG:26B2 B9 9D E5 + JSR SubCDA1E ; CPU:$E6B5 PRG:26B5 20 1E DA + TAY ; CPU:$E6B8 PRG:26B8 A8 + LDA #$81 ; CPU:$E6B9 PRG:26B9 A9 81 + STA $67 ; CPU:$E6BB PRG:26BB 85 67 + LDA $E6A7,Y ; CPU:$E6BD PRG:26BD B9 A7 E6 + STA $68 ; CPU:$E6C0 PRG:26C0 85 68 + RTS ; CPU:$E6C2 PRG:26C2 60 ; Primary course-stream pointer table (split lo/hi), 18 entries. ; Entry i = (CourseLayoutPointerHi[i] << 8) | CourseLayoutPointerLo[i], @@ -10892,9 +10892,9 @@ SubCE6B0: ; 12 $E7BA Stream13 13 $E8CF Stream14 14 $F3D3 Stream15 15 $EBAC Stream16 ; 16 $F5C7 Stream17 17 $F1EA Stream18 CourseLayoutPointerLo: - .byte $E7,$AF,$E8,$BC,$91,$F3,$C5,$BC,$BA,$E3,$EC,$09,$BA,$CF,$D3,$AC,$C7,$EA ; E6C3-E6D4 + .byte $E7,$AF,$E8,$BC,$91,$F3,$C5,$BC,$BA,$E3,$EC,$09,$BA,$CF,$D3,$AC,$C7,$EA ; E6C3-E6D4 ; CPU:$E6C3 PRG:26C3 E7 AF E8 BC 91 F3 C5 BC BA E3 EC 09 CourseLayoutPointerHi: - .byte $E6,$EA,$F2,$F4,$E9,$EE,$F0,$F7,$F6,$EF,$ED,$ED,$E7,$E8,$F3,$EB,$F5,$F1 ; E6D5-E6E6 + .byte $E6,$EA,$F2,$F4,$E9,$EE,$F0,$F7,$F6,$EF,$ED,$ED,$E7,$E8,$F3,$EB,$F5,$F1 ; E6D5-E6E6 ; CPU:$E6D5 PRG:26D5 E6 EA F2 F4 E9 EE F0 F7 F6 EF ED ED .incbin "prg.bin", $26E7, $121F ; E6E7-F905: remaining course/stream data ; --------------------------------------------------------------------------- @@ -10913,15 +10913,15 @@ CourseLayoutPointerHi: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCF906: - LDA #$00 ; F906: A9 00 - STA $60 ; F908: 85 60 - STA $61 ; F90A: 85 61 - STA $63 ; F90C: 85 63 - LDA $5E ; F90E: A5 5E - STA $62 ; F910: 85 62 - LDA $5F ; F912: A5 5F - STA $64 ; F914: 85 64 - LDX #$08 ; F916: A2 08 + LDA #$00 ; CPU:$F906 PRG:3906 A9 00 + STA $60 ; CPU:$F908 PRG:3908 85 60 + STA $61 ; CPU:$F90A PRG:390A 85 61 + STA $63 ; CPU:$F90C PRG:390C 85 63 + LDA $5E ; CPU:$F90E PRG:390E A5 5E + STA $62 ; CPU:$F910 PRG:3910 85 62 + LDA $5F ; CPU:$F912 PRG:3912 A5 5F + STA $64 ; CPU:$F914 PRG:3914 85 64 + LDX #$08 ; CPU:$F916 PRG:3916 A2 08 ; --------------------------------------------------------------------------- ; Label_F918 @@ -10938,16 +10938,16 @@ SubCF906: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F918: - LSR $64 ; F918: 46 64 - BCC Label_F929 ; F91A: 90 0D - LDA $60 ; F91C: A5 60 - CLC ; F91E: 18 - ADC $62 ; F91F: 65 62 - STA $60 ; F921: 85 60 - LDA $61 ; F923: A5 61 - ADC $63 ; F925: 65 63 - STA $61 ; F927: 85 61 +SubCF906_OnNonzero: + LSR $64 ; CPU:$F918 PRG:3918 46 64 + BCC SubCF906_Loop ; CPU:$F91A PRG:391A 90 0D + LDA $60 ; CPU:$F91C PRG:391C A5 60 + CLC ; CPU:$F91E PRG:391E 18 + ADC $62 ; CPU:$F91F PRG:391F 65 62 + STA $60 ; CPU:$F921 PRG:3921 85 60 + LDA $61 ; CPU:$F923 PRG:3923 A5 61 + ADC $63 ; CPU:$F925 PRG:3925 65 63 + STA $61 ; CPU:$F927 PRG:3927 85 61 ; --------------------------------------------------------------------------- ; Label_F929 @@ -10964,12 +10964,12 @@ Label_F918: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F929: - ASL $62 ; F929: 06 62 - ROL $63 ; F92B: 26 63 - DEX ; F92D: CA - BNE Label_F918 ; F92E: D0 E8 - RTS ; F930: 60 +SubCF906_Loop: + ASL $62 ; CPU:$F929 PRG:3929 06 62 + ROL $63 ; CPU:$F92B PRG:392B 26 63 + DEX ; CPU:$F92D PRG:392D CA + BNE SubCF906_OnNonzero ; CPU:$F92E PRG:392E D0 E8 + RTS ; CPU:$F930 PRG:3930 60 ; --------------------------------------------------------------------------- ; SubCF931 @@ -10987,11 +10987,11 @@ Label_F929: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCF931: - LDA $49 ; F931: A5 49 - BNE Label_F93B ; F933: D0 06 - LDA $65 ; F935: A5 65 - LDX $66 ; F937: A6 66 - BNE Label_F93F ; F939: D0 04 + LDA $49 ; CPU:$F931 PRG:3931 A5 49 + BNE SubCF931_Loop ; CPU:$F933 PRG:3933 D0 06 + LDA $65 ; CPU:$F935 PRG:3935 A5 65 + LDX $66 ; CPU:$F937 PRG:3937 A6 66 + BNE SubCF931_Loop2 ; CPU:$F939 PRG:3939 D0 04 ; --------------------------------------------------------------------------- ; Label_F93B @@ -11008,9 +11008,9 @@ SubCF931: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F93B: - LDA $67 ; F93B: A5 67 - LDX $68 ; F93D: A6 68 +SubCF931_Loop: + LDA $67 ; CPU:$F93B PRG:393B A5 67 + LDX $68 ; CPU:$F93D PRG:393D A6 68 ; --------------------------------------------------------------------------- ; Label_F93F @@ -11027,14 +11027,14 @@ Label_F93B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F93F: - STA $58 ; F93F: 85 58 - SEC ; F941: 38 - SBC $3B ; F942: E5 3B - BCS Label_F94B ; F944: B0 05 - LDA $3B ; F946: A5 3B - SEC ; F948: 38 - SBC $58 ; F949: E5 58 +SubCF931_Loop2: + STA $58 ; CPU:$F93F PRG:393F 85 58 + SEC ; CPU:$F941 PRG:3941 38 + SBC $3B ; CPU:$F942 PRG:3942 E5 3B + BCS SubCF931_Loop3 ; CPU:$F944 PRG:3944 B0 05 + LDA $3B ; CPU:$F946 PRG:3946 A5 3B + SEC ; CPU:$F948 PRG:3948 38 + SBC $58 ; CPU:$F949 PRG:3949 E5 58 ; --------------------------------------------------------------------------- ; Label_F94B @@ -11051,12 +11051,12 @@ Label_F93F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F94B: - TAY ; F94B: A8 - TXA ; F94C: 8A - SEC ; F94D: 38 - SBC $38 ; F94E: E5 38 - JSR SubCD9B1 ; F950: 20 B1 D9 +SubCF931_Loop3: + TAY ; CPU:$F94B PRG:394B A8 + TXA ; CPU:$F94C PRG:394C 8A + SEC ; CPU:$F94D PRG:394D 38 + SBC $38 ; CPU:$F94E PRG:394E E5 38 + JSR SubCD9B1 ; CPU:$F950 PRG:3950 20 B1 D9 ; --------------------------------------------------------------------------- ; SubCF953 @@ -11074,29 +11074,29 @@ Label_F94B: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCF953: - STA $5F ; F953: 85 5F - STA $5E ; F955: 85 5E - STA $5A ; F957: 85 5A - JSR SubCF906 ; F959: 20 06 F9 - LDA $60 ; F95C: A5 60 - STA $58 ; F95E: 85 58 - LDA $61 ; F960: A5 61 - STA $59 ; F962: 85 59 - STY $5F ; F964: 84 5F - STY $5E ; F966: 84 5E - STY $5B ; F968: 84 5B - JSR SubCF906 ; F96A: 20 06 F9 - LDA $60 ; F96D: A5 60 - CLC ; F96F: 18 - ADC $58 ; F970: 65 58 - STA $58 ; F972: 85 58 - LDA $61 ; F974: A5 61 - ADC $59 ; F976: 65 59 - STA $59 ; F978: 85 59 - LDA $5A ; F97A: A5 5A - CMP $5B ; F97C: C5 5B - BCS Label_F982 ; F97E: B0 02 - LDA $5B ; F980: A5 5B + STA $5F ; CPU:$F953 PRG:3953 85 5F + STA $5E ; CPU:$F955 PRG:3955 85 5E + STA $5A ; CPU:$F957 PRG:3957 85 5A + JSR SubCF906 ; CPU:$F959 PRG:3959 20 06 F9 + LDA $60 ; CPU:$F95C PRG:395C A5 60 + STA $58 ; CPU:$F95E PRG:395E 85 58 + LDA $61 ; CPU:$F960 PRG:3960 A5 61 + STA $59 ; CPU:$F962 PRG:3962 85 59 + STY $5F ; CPU:$F964 PRG:3964 84 5F + STY $5E ; CPU:$F966 PRG:3966 84 5E + STY $5B ; CPU:$F968 PRG:3968 84 5B + JSR SubCF906 ; CPU:$F96A PRG:396A 20 06 F9 + LDA $60 ; CPU:$F96D PRG:396D A5 60 + CLC ; CPU:$F96F PRG:396F 18 + ADC $58 ; CPU:$F970 PRG:3970 65 58 + STA $58 ; CPU:$F972 PRG:3972 85 58 + LDA $61 ; CPU:$F974 PRG:3974 A5 61 + ADC $59 ; CPU:$F976 PRG:3976 65 59 + STA $59 ; CPU:$F978 PRG:3978 85 59 + LDA $5A ; CPU:$F97A PRG:397A A5 5A + CMP $5B ; CPU:$F97C PRG:397C C5 5B + BCS SubCF953_Loop ; CPU:$F97E PRG:397E B0 02 + LDA $5B ; CPU:$F980 PRG:3980 A5 5B ; --------------------------------------------------------------------------- ; Label_F982 @@ -11113,8 +11113,8 @@ SubCF953: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F982: - TAY ; F982: A8 +SubCF953_Loop: + TAY ; CPU:$F982 PRG:3982 A8 ; --------------------------------------------------------------------------- ; SubCF983 @@ -11132,18 +11132,18 @@ Label_F982: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCF983: - STY $5E ; F983: 84 5E - STY $5F ; F985: 84 5F - JSR SubCF906 ; F987: 20 06 F9 - LDA $58 ; F98A: A5 58 - SEC ; F98C: 38 - SBC $60 ; F98D: E5 60 - LDA $59 ; F98F: A5 59 - SBC $61 ; F991: E5 61 - BCC Label_F99B ; F993: 90 06 - LDY $5E ; F995: A4 5E - INY ; F997: C8 - JMP SubCF983 ; F998: 4C 83 F9 + STY $5E ; CPU:$F983 PRG:3983 84 5E + STY $5F ; CPU:$F985 PRG:3985 84 5F + JSR SubCF906 ; CPU:$F987 PRG:3987 20 06 F9 + LDA $58 ; CPU:$F98A PRG:398A A5 58 + SEC ; CPU:$F98C PRG:398C 38 + SBC $60 ; CPU:$F98D PRG:398D E5 60 + LDA $59 ; CPU:$F98F PRG:398F A5 59 + SBC $61 ; CPU:$F991 PRG:3991 E5 61 + BCC SubCF983_Loop ; CPU:$F993 PRG:3993 90 06 + LDY $5E ; CPU:$F995 PRG:3995 A4 5E + INY ; CPU:$F997 PRG:3997 C8 + JMP SubCF983 ; CPU:$F998 PRG:3998 4C 83 F9 ; --------------------------------------------------------------------------- ; Label_F99B @@ -11160,8 +11160,8 @@ SubCF983: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F99B: - DEC $5E ; F99B: C6 5E +SubCF983_Loop: + DEC $5E ; CPU:$F99B PRG:399B C6 5E ; --------------------------------------------------------------------------- ; Label_F99D @@ -11178,8 +11178,8 @@ Label_F99B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F99D: - RTS ; F99D: 60 +SubCF983_OnNonzero: + RTS ; CPU:$F99D PRG:399D 60 ; --------------------------------------------------------------------------- ; SubCF99E @@ -11197,8 +11197,8 @@ Label_F99D: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCF99E: - LDX #$03 ; F99E: A2 03 - LDA #$55 ; F9A0: A9 55 + LDX #$03 ; CPU:$F99E PRG:399E A2 03 + LDA #$55 ; CPU:$F9A0 PRG:39A0 A9 55 ; --------------------------------------------------------------------------- ; Label_F9A2 @@ -11215,12 +11215,12 @@ SubCF99E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F9A2: - STA $FC,X ; F9A2: 95 FC - DEX ; F9A4: CA - BPL Label_F9A2 ; F9A5: 10 FB - LDX #$0B ; F9A7: A2 0B - LDA #$FF ; F9A9: A9 FF +SubCF99E_OnNonnegative: + STA $FC,X ; CPU:$F9A2 PRG:39A2 95 FC + DEX ; CPU:$F9A4 PRG:39A4 CA + BPL SubCF99E_OnNonnegative ; CPU:$F9A5 PRG:39A5 10 FB + LDX #$0B ; CPU:$F9A7 PRG:39A7 A2 0B + LDA #$FF ; CPU:$F9A9 PRG:39A9 A9 FF ; --------------------------------------------------------------------------- ; Label_F9AB @@ -11237,11 +11237,11 @@ Label_F9A2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F9AB: - STA $F0,X ; F9AB: 95 F0 - DEX ; F9AD: CA - BPL Label_F9AB ; F9AE: 10 FB - LDX #$2F ; F9B0: A2 2F +SubCF99E_OnNonnegative2: + STA $F0,X ; CPU:$F9AB PRG:39AB 95 F0 + DEX ; CPU:$F9AD PRG:39AD CA + BPL SubCF99E_OnNonnegative2 ; CPU:$F9AE PRG:39AE 10 FB + LDX #$2F ; CPU:$F9B0 PRG:39B0 A2 2F ; --------------------------------------------------------------------------- ; Label_F9B2 @@ -11258,24 +11258,24 @@ Label_F9AB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F9B2: - LDA #$9D ; F9B2: A9 9D - STA $90,X ; F9B4: 95 90 - LDA #$84 ; F9B6: A9 84 - STA $C0,X ; F9B8: 95 C0 - DEX ; F9BA: CA - BPL Label_F9B2 ; F9BB: 10 F5 - LDA $49 ; F9BD: A5 49 - BNE Label_F99D ; F9BF: D0 DC - LDA $38 ; F9C1: A5 38 - STA $6D ; F9C3: 85 6D - LDA $3B ; F9C5: A5 3B - STA $6E ; F9C7: 85 6E - LDA $44 ; F9C9: A5 44 - JSR MultiplyBy32 ; F9CB: 20 BC C8 - STA $71 ; F9CE: 85 71 - LDA #$03 ; F9D0: A9 03 - STA $70 ; F9D2: 85 70 +SubCF99E_OnNonnegative3: + LDA #$9D ; CPU:$F9B2 PRG:39B2 A9 9D + STA $90,X ; CPU:$F9B4 PRG:39B4 95 90 + LDA #$84 ; CPU:$F9B6 PRG:39B6 A9 84 + STA $C0,X ; CPU:$F9B8 PRG:39B8 95 C0 + DEX ; CPU:$F9BA PRG:39BA CA + BPL SubCF99E_OnNonnegative3 ; CPU:$F9BB PRG:39BB 10 F5 + LDA $49 ; CPU:$F9BD PRG:39BD A5 49 + BNE SubCF983_OnNonzero ; CPU:$F9BF PRG:39BF D0 DC + LDA $38 ; CPU:$F9C1 PRG:39C1 A5 38 + STA $6D ; CPU:$F9C3 PRG:39C3 85 6D + LDA $3B ; CPU:$F9C5 PRG:39C5 A5 3B + STA $6E ; CPU:$F9C7 PRG:39C7 85 6E + LDA aim_angle_index ; CPU:$F9C9 PRG:39C9 A5 44 + JSR MultiplyBy32 ; CPU:$F9CB PRG:39CB 20 BC C8 + STA $71 ; CPU:$F9CE PRG:39CE 85 71 + LDA #$03 ; CPU:$F9D0 PRG:39D0 A9 03 + STA grid_group_index ; CPU:$F9D2 PRG:39D2 85 70 ; --------------------------------------------------------------------------- ; Label_F9D4 @@ -11292,12 +11292,12 @@ Label_F9B2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F9D4: - LDA #$0B ; F9D4: A9 0B - STA $6F ; F9D6: 85 6F - LDY $70 ; F9D8: A4 70 - LDA $FBCB,Y ; F9DA: B9 CB FB - STA $5E ; F9DD: 85 5E +SubCF99E_OnNonnegative4: + LDA #$0B ; CPU:$F9D4 PRG:39D4 A9 0B + STA grid_inner_index ; CPU:$F9D6 PRG:39D6 85 6F + LDY grid_group_index ; CPU:$F9D8 PRG:39D8 A4 70 + LDA $FBCB,Y ; CPU:$F9DA PRG:39DA B9 CB FB + STA $5E ; CPU:$F9DD PRG:39DD 85 5E ; --------------------------------------------------------------------------- ; Label_F9DF @@ -11314,27 +11314,27 @@ Label_F9D4: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_F9DF: - LDX $6F ; F9DF: A6 6F - LDA $FBBF,X ; F9E1: BD BF FB - CLC ; F9E4: 18 - ADC $71 ; F9E5: 65 71 - PHA ; F9E7: 48 - JSR SubCFC24 ; F9E8: 20 24 FC - ADC $6D ; F9EB: 65 6D - STA $38 ; F9ED: 85 38 - PLA ; F9EF: 68 - JSR SubCFC27 ; F9F0: 20 27 FC - ADC $6E ; F9F3: 65 6E - STA $3B ; F9F5: 85 3B - LDA $38 ; F9F7: A5 38 - CMP #$80 ; F9F9: C9 80 - BCC Label_FA18 ; F9FB: 90 1B - JSR SubCD65A ; F9FD: 20 5A D6 - LDY #$00 ; FA00: A0 00 - LDA $52 ; FA02: A5 52 - BEQ Label_FA08 ; FA04: F0 02 - LDY #$01 ; FA06: A0 01 +SubCF99E_OnNonnegative5: + LDX grid_inner_index ; CPU:$F9DF PRG:39DF A6 6F + LDA $FBBF,X ; CPU:$F9E1 PRG:39E1 BD BF FB + CLC ; CPU:$F9E4 PRG:39E4 18 + ADC $71 ; CPU:$F9E5 PRG:39E5 65 71 + PHA ; CPU:$F9E7 PRG:39E7 48 + JSR SubCFC24 ; CPU:$F9E8 PRG:39E8 20 24 FC + ADC $6D ; CPU:$F9EB PRG:39EB 65 6D + STA $38 ; CPU:$F9ED PRG:39ED 85 38 + PLA ; CPU:$F9EF PRG:39EF 68 + JSR SubCFC27 ; CPU:$F9F0 PRG:39F0 20 27 FC + ADC $6E ; CPU:$F9F3 PRG:39F3 65 6E + STA $3B ; CPU:$F9F5 PRG:39F5 85 3B + LDA $38 ; CPU:$F9F7 PRG:39F7 A5 38 + CMP #$80 ; CPU:$F9F9 PRG:39F9 C9 80 + BCC SubCF99E_Loop4 ; CPU:$F9FB PRG:39FB 90 1B + JSR SubCD65A ; CPU:$F9FD PRG:39FD 20 5A D6 + LDY #$00 ; CPU:$FA00 PRG:3A00 A0 00 + LDA $52 ; CPU:$FA02 PRG:3A02 A5 52 + BEQ SubCF99E_Loop ; CPU:$FA04 PRG:3A04 F0 02 + LDY #$01 ; CPU:$FA06 PRG:3A06 A0 01 ; --------------------------------------------------------------------------- ; Label_FA08 @@ -11351,10 +11351,10 @@ Label_F9DF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FA08: - LDA $53 ; FA08: A5 53 - BEQ Label_FA0E ; FA0A: F0 02 - LDY #$02 ; FA0C: A0 02 +SubCF99E_Loop: + LDA $53 ; CPU:$FA08 PRG:3A08 A5 53 + BEQ SubCF99E_Loop2 ; CPU:$FA0A PRG:3A0A F0 02 + LDY #$02 ; CPU:$FA0C PRG:3A0C A0 02 ; --------------------------------------------------------------------------- ; Label_FA0E @@ -11371,10 +11371,10 @@ Label_FA08: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FA0E: - LDA $55 ; FA0E: A5 55 - BEQ Label_FA14 ; FA10: F0 02 - LDY #$03 ; FA12: A0 03 +SubCF99E_Loop2: + LDA $55 ; CPU:$FA0E PRG:3A0E A5 55 + BEQ SubCF99E_Loop3 ; CPU:$FA10 PRG:3A10 F0 02 + LDY #$03 ; CPU:$FA12 PRG:3A12 A0 03 ; --------------------------------------------------------------------------- ; Label_FA14 @@ -11391,9 +11391,9 @@ Label_FA0E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FA14: - LDA $56 ; FA14: A5 56 - BEQ Label_FA1A ; FA16: F0 02 +SubCF99E_Loop3: + LDA $56 ; CPU:$FA14 PRG:3A14 A5 56 + BEQ SubCF99E_Loop5 ; CPU:$FA16 PRG:3A16 F0 02 ; --------------------------------------------------------------------------- ; Label_FA18 @@ -11410,8 +11410,8 @@ Label_FA14: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FA18: - LDY #$04 ; FA18: A0 04 +SubCF99E_Loop4: + LDY #$04 ; CPU:$FA18 PRG:3A18 A0 04 ; --------------------------------------------------------------------------- ; Label_FA1A @@ -11428,19 +11428,19 @@ Label_FA18: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FA1A: - JSR GetGridObjectIndex ; FA1A: 20 6E FC - STY $90,X ; FA1D: 94 90 - DEC $6F ; FA1F: C6 6F - BPL Label_F9DF ; FA21: 10 BC - DEC $70 ; FA23: C6 70 - BPL Label_F9D4 ; FA25: 10 AD - LDA $6D ; FA27: A5 6D - STA $38 ; FA29: 85 38 - LDA $6E ; FA2B: A5 6E - STA $3B ; FA2D: 85 3B - JSR SubCD65D ; FA2F: 20 5D D6 - JSR SubCD65A ; FA32: 20 5A D6 +SubCF99E_Loop5: + JSR GetGridObjectIndex ; CPU:$FA1A PRG:3A1A 20 6E FC + STY $90,X ; CPU:$FA1D PRG:3A1D 94 90 + DEC grid_inner_index ; CPU:$FA1F PRG:3A1F C6 6F + BPL SubCF99E_OnNonnegative5 ; CPU:$FA21 PRG:3A21 10 BC + DEC grid_group_index ; CPU:$FA23 PRG:3A23 C6 70 + BPL SubCF99E_OnNonnegative4 ; CPU:$FA25 PRG:3A25 10 AD + LDA $6D ; CPU:$FA27 PRG:3A27 A5 6D + STA $38 ; CPU:$FA29 PRG:3A29 85 38 + LDA $6E ; CPU:$FA2B PRG:3A2B A5 6E + STA $3B ; CPU:$FA2D PRG:3A2D 85 3B + JSR SubCD65D ; CPU:$FA2F PRG:3A2F 20 5D D6 + JSR SubCD65A ; CPU:$FA32 PRG:3A32 20 5A D6 ; --------------------------------------------------------------------------- ; NormalizeCourseGrid @@ -11458,8 +11458,8 @@ Label_FA1A: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- NormalizeCourseGrid: - LDA #$02 ; FA35: A9 02 - STA $70 ; FA37: 85 70 + LDA #$02 ; CPU:$FA35 PRG:3A35 A9 02 + STA grid_group_index ; CPU:$FA37 PRG:3A37 85 70 ; --------------------------------------------------------------------------- ; Label_FA39 @@ -11476,9 +11476,9 @@ NormalizeCourseGrid: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FA39: - LDA #$0B ; FA39: A9 0B - STA $6F ; FA3B: 85 6F +NormalizeCourseGrid_OnNonnegative: + LDA #$0B ; CPU:$FA39 PRG:3A39 A9 0B + STA grid_inner_index ; CPU:$FA3B PRG:3A3B 85 6F ; --------------------------------------------------------------------------- ; Label_FA3D @@ -11495,36 +11495,36 @@ Label_FA39: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FA3D: - JSR GetGridObjectIndex ; FA3D: 20 6E FC - LDA $90,X ; FA40: B5 90 - CMP #$03 ; FA42: C9 03 - BNE Label_FA80 ; FA44: D0 3A - LDA $6F ; FA46: A5 6F - AND #$FE ; FA48: 29 FE - STA $19 ; FA4A: 85 19 - LDA $70 ; FA4C: A5 70 - LSR A ; FA4E: 4A - ORA $19 ; FA4F: 05 19 - TAX ; FA51: AA - LDY $FC03,X ; FA52: BC 03 FC - CLC ; FA55: 18 - ADC #$02 ; FA56: 69 02 - AND #$03 ; FA58: 29 03 - TAX ; FA5A: AA - LDA a:$00FC,Y ; FA5B: B9 FC 00 - AND $FC0F,X ; FA5E: 3D 0F FC - ORA $FC13,X ; FA61: 1D 13 FC - STA a:$00FC,Y ; FA64: 99 FC 00 - LDA $70 ; FA67: A5 70 - AND #$FE ; FA69: 29 FE - TAY ; FA6B: A8 - LDA $6F ; FA6C: A5 6F - AND #$FE ; FA6E: 29 FE - CLC ; FA70: 18 - ADC $FBCF,Y ; FA71: 79 CF FB - TAX ; FA74: AA - JSR NormalizeStatePair ; FA75: 20 AE FB +NormalizeCourseGrid_OnNonnegative2: + JSR GetGridObjectIndex ; CPU:$FA3D PRG:3A3D 20 6E FC + LDA $90,X ; CPU:$FA40 PRG:3A40 B5 90 + CMP #$03 ; CPU:$FA42 PRG:3A42 C9 03 + BNE NormalizeCourseGrid_Loop ; CPU:$FA44 PRG:3A44 D0 3A + LDA grid_inner_index ; CPU:$FA46 PRG:3A46 A5 6F + AND #$FE ; CPU:$FA48 PRG:3A48 29 FE + STA $19 ; CPU:$FA4A PRG:3A4A 85 19 + LDA grid_group_index ; CPU:$FA4C PRG:3A4C A5 70 + LSR A ; CPU:$FA4E PRG:3A4E 4A + ORA $19 ; CPU:$FA4F PRG:3A4F 05 19 + TAX ; CPU:$FA51 PRG:3A51 AA + LDY $FC03,X ; CPU:$FA52 PRG:3A52 BC 03 FC + CLC ; CPU:$FA55 PRG:3A55 18 + ADC #$02 ; CPU:$FA56 PRG:3A56 69 02 + AND #$03 ; CPU:$FA58 PRG:3A58 29 03 + TAX ; CPU:$FA5A PRG:3A5A AA + LDA a:$00FC,Y ; CPU:$FA5B PRG:3A5B B9 FC 00 + AND $FC0F,X ; CPU:$FA5E PRG:3A5E 3D 0F FC + ORA $FC13,X ; CPU:$FA61 PRG:3A61 1D 13 FC + STA a:$00FC,Y ; CPU:$FA64 PRG:3A64 99 FC 00 + LDA grid_group_index ; CPU:$FA67 PRG:3A67 A5 70 + AND #$FE ; CPU:$FA69 PRG:3A69 29 FE + TAY ; CPU:$FA6B PRG:3A6B A8 + LDA grid_inner_index ; CPU:$FA6C PRG:3A6C A5 6F + AND #$FE ; CPU:$FA6E PRG:3A6E 29 FE + CLC ; CPU:$FA70 PRG:3A70 18 + ADC $FBCF,Y ; CPU:$FA71 PRG:3A71 79 CF FB + TAX ; CPU:$FA74 PRG:3A74 AA + JSR NormalizeStatePair ; CPU:$FA75 PRG:3A75 20 AE FB ; --------------------------------------------------------------------------- ; Label_FA78 @@ -11542,11 +11542,11 @@ Label_FA3D: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- Label_FA78: - TXA ; FA78: 8A - CLC ; FA79: 18 - ADC #$0B ; FA7A: 69 0B - TAX ; FA7C: AA - JSR NormalizeStatePair ; FA7D: 20 AE FB + TXA ; CPU:$FA78 PRG:3A78 8A + CLC ; CPU:$FA79 PRG:3A79 18 + ADC #$0B ; CPU:$FA7A PRG:3A7A 69 0B + TAX ; CPU:$FA7C PRG:3A7C AA + JSR NormalizeStatePair ; CPU:$FA7D PRG:3A7D 20 AE FB ; --------------------------------------------------------------------------- ; Label_FA80 @@ -11563,11 +11563,11 @@ Label_FA78: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FA80: - DEC $6F ; FA80: C6 6F - BPL Label_FA3D ; FA82: 10 B9 - DEC $70 ; FA84: C6 70 - BPL Label_FA39 ; FA86: 10 B1 +NormalizeCourseGrid_Loop: + DEC grid_inner_index ; CPU:$FA80 PRG:3A80 C6 6F + BPL NormalizeCourseGrid_OnNonnegative2 ; CPU:$FA82 PRG:3A82 10 B9 + DEC grid_group_index ; CPU:$FA84 PRG:3A84 C6 70 + BPL NormalizeCourseGrid_OnNonnegative ; CPU:$FA86 PRG:3A86 10 B1 ; --------------------------------------------------------------------------- ; Label_FA88 @@ -11584,9 +11584,9 @@ Label_FA80: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FA88: - LDA #$00 ; FA88: A9 00 - STA $70 ; FA8A: 85 70 +NormalizeCourseGrid_OnZero: + LDA #$00 ; CPU:$FA88 PRG:3A88 A9 00 + STA grid_group_index ; CPU:$FA8A PRG:3A8A 85 70 ; --------------------------------------------------------------------------- ; SubCFA8C @@ -11604,8 +11604,8 @@ Label_FA88: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFA8C: - LDA #$0B ; FA8C: A9 0B - STA $6F ; FA8E: 85 6F + LDA #$0B ; CPU:$FA8C PRG:3A8C A9 0B + STA grid_inner_index ; CPU:$FA8E PRG:3A8E 85 6F ; --------------------------------------------------------------------------- ; SubCFA90 @@ -11623,14 +11623,14 @@ SubCFA8C: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFA90: - LDA #$00 ; FA90: A9 00 - STA $19 ; FA92: 85 19 - JSR GetGridObjectIndex ; FA94: 20 6E FC - LDA $70 ; FA97: A5 70 - SEC ; FA99: 38 - BEQ Label_FAA1 ; FA9A: F0 05 - LDA $84,X ; FA9C: B5 84 - JSR CompareObjectState ; FA9E: 20 66 FC + LDA #$00 ; CPU:$FA90 PRG:3A90 A9 00 + STA $19 ; CPU:$FA92 PRG:3A92 85 19 + JSR GetGridObjectIndex ; CPU:$FA94 PRG:3A94 20 6E FC + LDA grid_group_index ; CPU:$FA97 PRG:3A97 A5 70 + SEC ; CPU:$FA99 PRG:3A99 38 + BEQ SubCFA90_Loop ; CPU:$FA9A PRG:3A9A F0 05 + LDA $84,X ; CPU:$FA9C PRG:3A9C B5 84 + JSR CompareObjectState ; CPU:$FA9E PRG:3A9E 20 66 FC ; --------------------------------------------------------------------------- ; Label_FAA1 @@ -11647,14 +11647,14 @@ SubCFA90: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FAA1: - ROL $19 ; FAA1: 26 19 - LDA $70 ; FAA3: A5 70 - CMP #$03 ; FAA5: C9 03 - CLC ; FAA7: 18 - BEQ Label_FAAF ; FAA8: F0 05 - LDA $9C,X ; FAAA: B5 9C - JSR CompareObjectState ; FAAC: 20 66 FC +SubCFA90_Loop: + ROL $19 ; CPU:$FAA1 PRG:3AA1 26 19 + LDA grid_group_index ; CPU:$FAA3 PRG:3AA3 A5 70 + CMP #$03 ; CPU:$FAA5 PRG:3AA5 C9 03 + CLC ; CPU:$FAA7 PRG:3AA7 18 + BEQ SubCFA90_Loop2 ; CPU:$FAA8 PRG:3AA8 F0 05 + LDA $9C,X ; CPU:$FAAA PRG:3AAA B5 9C + JSR CompareObjectState ; CPU:$FAAC PRG:3AAC 20 66 FC ; --------------------------------------------------------------------------- ; Label_FAAF @@ -11671,13 +11671,13 @@ Label_FAA1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FAAF: - ROL $19 ; FAAF: 26 19 - LDA $6F ; FAB1: A5 6F - CLC ; FAB3: 18 - BEQ Label_FABB ; FAB4: F0 05 - LDA animation_frame_index,X ; FAB6: B5 8F - JSR CompareObjectState ; FAB8: 20 66 FC +SubCFA90_Loop2: + ROL $19 ; CPU:$FAAF PRG:3AAF 26 19 + LDA grid_inner_index ; CPU:$FAB1 PRG:3AB1 A5 6F + CLC ; CPU:$FAB3 PRG:3AB3 18 + BEQ SubCFA90_Loop3 ; CPU:$FAB4 PRG:3AB4 F0 05 + LDA animation_frame_index,X ; CPU:$FAB6 PRG:3AB6 B5 8F + JSR CompareObjectState ; CPU:$FAB8 PRG:3AB8 20 66 FC ; --------------------------------------------------------------------------- ; Label_FABB @@ -11694,15 +11694,15 @@ Label_FAAF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FABB: - ROL $19 ; FABB: 26 19 - LDA $6F ; FABD: A5 6F - CMP #$0B ; FABF: C9 0B - CLC ; FAC1: 18 - BEQ Label_FACA ; FAC2: F0 06 - LDA $91,X ; FAC4: B5 91 - TAY ; FAC6: A8 - JSR CompareObjectState ; FAC7: 20 66 FC +SubCFA90_Loop3: + ROL $19 ; CPU:$FABB PRG:3ABB 26 19 + LDA grid_inner_index ; CPU:$FABD PRG:3ABD A5 6F + CMP #$0B ; CPU:$FABF PRG:3ABF C9 0B + CLC ; CPU:$FAC1 PRG:3AC1 18 + BEQ SubCFA90_Loop4 ; CPU:$FAC2 PRG:3AC2 F0 06 + LDA $91,X ; CPU:$FAC4 PRG:3AC4 B5 91 + TAY ; CPU:$FAC6 PRG:3AC6 A8 + JSR CompareObjectState ; CPU:$FAC7 PRG:3AC7 20 66 FC ; --------------------------------------------------------------------------- ; Label_FACA @@ -11719,19 +11719,19 @@ Label_FABB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FACA: - ROL $19 ; FACA: 26 19 - LDA $19 ; FACC: A5 19 - AND #$03 ; FACE: 29 03 - CMP #$03 ; FAD0: C9 03 - BNE Label_FAE2 ; FAD2: D0 0E - LDA $90,X ; FAD4: B5 90 - BEQ Label_FAE2 ; FAD6: F0 0A - TYA ; FAD8: 98 - CMP animation_frame_index,X ; FAD9: D5 8F - BNE Label_FAE2 ; FADB: D0 05 - STA $90,X ; FADD: 95 90 - JMP NormalizeCourseGrid ; FADF: 4C 35 FA +SubCFA90_Loop4: + ROL $19 ; CPU:$FACA PRG:3ACA 26 19 + LDA $19 ; CPU:$FACC PRG:3ACC A5 19 + AND #$03 ; CPU:$FACE PRG:3ACE 29 03 + CMP #$03 ; CPU:$FAD0 PRG:3AD0 C9 03 + BNE SubCFA90_Loop5 ; CPU:$FAD2 PRG:3AD2 D0 0E + LDA $90,X ; CPU:$FAD4 PRG:3AD4 B5 90 + BEQ SubCFA90_Loop5 ; CPU:$FAD6 PRG:3AD6 F0 0A + TYA ; CPU:$FAD8 PRG:3AD8 98 + CMP animation_frame_index,X ; CPU:$FAD9 PRG:3AD9 D5 8F + BNE SubCFA90_Loop5 ; CPU:$FADB PRG:3ADB D0 05 + STA $90,X ; CPU:$FADD PRG:3ADD 95 90 + JMP NormalizeCourseGrid ; CPU:$FADF PRG:3ADF 4C 35 FA ; --------------------------------------------------------------------------- ; Label_FAE2 @@ -11748,12 +11748,12 @@ Label_FACA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FAE2: - LDA $90,X ; FAE2: B5 90 - BEQ SubCFB25 ; FAE4: F0 3F - CMP #$04 ; FAE6: C9 04 - BNE Label_FAED ; FAE8: D0 03 - JMP StoreSpecialGridCoordinate ; FAEA: 4C A4 FB +SubCFA90_Loop5: + LDA $90,X ; CPU:$FAE2 PRG:3AE2 B5 90 + BEQ SubCFB25 ; CPU:$FAE4 PRG:3AE4 F0 3F + CMP #$04 ; CPU:$FAE6 PRG:3AE6 C9 04 + BNE SubCFA90_Loop6 ; CPU:$FAE8 PRG:3AE8 D0 03 + JMP StoreSpecialGridCoordinate ; CPU:$FAEA PRG:3AEA 4C A4 FB ; --------------------------------------------------------------------------- ; Label_FAED @@ -11770,14 +11770,14 @@ Label_FAE2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FAED: - LDA $19 ; FAED: A5 19 - AND #$06 ; FAEF: 29 06 - CMP #$06 ; FAF1: C9 06 - BNE Label_FAFF ; FAF3: D0 0A - LDA $90,X ; FAF5: B5 90 - CMP $9B,X ; FAF7: D5 9B - BNE Label_FAFF ; FAF9: D0 04 +SubCFA90_Loop6: + LDA $19 ; CPU:$FAED PRG:3AED A5 19 + AND #$06 ; CPU:$FAEF PRG:3AEF 29 06 + CMP #$06 ; CPU:$FAF1 PRG:3AF1 C9 06 + BNE SubCFA90_Loop7 ; CPU:$FAF3 PRG:3AF3 D0 0A + LDA $90,X ; CPU:$FAF5 PRG:3AF5 B5 90 + CMP $9B,X ; CPU:$FAF7 PRG:3AF7 D5 9B + BNE SubCFA90_Loop7 ; CPU:$FAF9 PRG:3AF9 D0 04 ; --------------------------------------------------------------------------- ; Label_FAFB @@ -11794,9 +11794,9 @@ Label_FAED: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FAFB: - STA $9C,X ; FAFB: 95 9C - BEQ Label_FA88 ; FAFD: F0 89 +SubCFA90_OnZero: + STA $9C,X ; CPU:$FAFB PRG:3AFB 95 9C + BEQ NormalizeCourseGrid_OnZero ; CPU:$FAFD PRG:3AFD F0 89 ; --------------------------------------------------------------------------- ; Label_FAFF @@ -11813,14 +11813,14 @@ Label_FAFB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FAFF: - LDA $19 ; FAFF: A5 19 - AND #$05 ; FB01: 29 05 - CMP #$05 ; FB03: C9 05 - BNE Label_FB0D ; FB05: D0 06 - LDA $90,X ; FB07: B5 90 - CMP $9D,X ; FB09: D5 9D - BEQ Label_FAFB ; FB0B: F0 EE +SubCFA90_Loop7: + LDA $19 ; CPU:$FAFF PRG:3AFF A5 19 + AND #$05 ; CPU:$FB01 PRG:3B01 29 05 + CMP #$05 ; CPU:$FB03 PRG:3B03 C9 05 + BNE SubCFA90_Loop8 ; CPU:$FB05 PRG:3B05 D0 06 + LDA $90,X ; CPU:$FB07 PRG:3B07 B5 90 + CMP $9D,X ; CPU:$FB09 PRG:3B09 D5 9D + BEQ SubCFA90_OnZero ; CPU:$FB0B PRG:3B0B F0 EE ; --------------------------------------------------------------------------- ; Label_FB0D @@ -11837,26 +11837,26 @@ Label_FAFF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FB0D: - LDY $90,X ; FB0D: B4 90 - DEY ; FB0F: 88 - TYA ; FB10: 98 - JSR MultiplyBy32 ; FB11: 20 BC C8 - ADC $19 ; FB14: 65 19 - TAY ; FB16: A8 - LDA $FBD3,Y ; FB17: B9 D3 FB - CMP #$AE ; FB1A: C9 AE - BNE Label_FB27 ; FB1C: D0 09 - LDY $70 ; FB1E: A4 70 - BEQ Label_FB27 ; FB20: F0 05 - LDA #$82 ; FB22: A9 82 +SubCFA90_Loop8: + LDY $90,X ; CPU:$FB0D PRG:3B0D B4 90 + DEY ; CPU:$FB0F PRG:3B0F 88 + TYA ; CPU:$FB10 PRG:3B10 98 + JSR MultiplyBy32 ; CPU:$FB11 PRG:3B11 20 BC C8 + ADC $19 ; CPU:$FB14 PRG:3B14 65 19 + TAY ; CPU:$FB16 PRG:3B16 A8 + LDA $FBD3,Y ; CPU:$FB17 PRG:3B17 B9 D3 FB + CMP #$AE ; CPU:$FB1A PRG:3B1A C9 AE + BNE SubCFB25_Loop ; CPU:$FB1C PRG:3B1C D0 09 + LDY grid_group_index ; CPU:$FB1E PRG:3B1E A4 70 + BEQ SubCFB25_Loop ; CPU:$FB20 PRG:3B20 F0 05 + LDA #$82 ; CPU:$FB22 PRG:3B22 A9 82 ; Overlapping instruction idiom: ; FB24: BIT $B8A9 (2C A9 B8) ; FB25: LDA #$B8 (A9 B8) Label_FB24: - .byte $2C ; FB24: 2C BIT absolute opcode + .byte $2C ; FB24: 2C BIT absolute opcode ; CPU:$FB24 PRG:3B24 2C SubCFB25: - .byte $A9,$B8 ; FB25-FB26: A9 B8 LDA #$B8 + .byte $A9,$B8 ; FB25-FB26: A9 B8 LDA #$B8 ; CPU:$FB25 PRG:3B25 A9 B8 ; --------------------------------------------------------------------------- ; Label_FB27 @@ -11873,11 +11873,11 @@ SubCFB25: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FB27: - STA $C0,X ; FB27: 95 C0 - DEC $6F ; FB29: C6 6F - BMI Label_FB30 ; FB2B: 30 03 - JMP SubCFA90 ; FB2D: 4C 90 FA +SubCFB25_Loop: + STA $C0,X ; CPU:$FB27 PRG:3B27 95 C0 + DEC grid_inner_index ; CPU:$FB29 PRG:3B29 C6 6F + BMI SubCFB25_Loop2 ; CPU:$FB2B PRG:3B2B 30 03 + JMP SubCFA90 ; CPU:$FB2D PRG:3B2D 4C 90 FA ; --------------------------------------------------------------------------- ; Label_FB30 @@ -11894,12 +11894,12 @@ Label_FB27: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FB30: - INC $70 ; FB30: E6 70 - LDA $70 ; FB32: A5 70 - CMP #$04 ; FB34: C9 04 - BCS Label_FB3B ; FB36: B0 03 - JMP SubCFA8C ; FB38: 4C 8C FA +SubCFB25_Loop2: + INC grid_group_index ; CPU:$FB30 PRG:3B30 E6 70 + LDA grid_group_index ; CPU:$FB32 PRG:3B32 A5 70 + CMP #$04 ; CPU:$FB34 PRG:3B34 C9 04 + BCS SubCFB25_Loop3 ; CPU:$FB36 PRG:3B36 B0 03 + JMP SubCFA8C ; CPU:$FB38 PRG:3B38 4C 8C FA ; --------------------------------------------------------------------------- ; Label_FB3B @@ -11916,8 +11916,8 @@ Label_FB30: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FB3B: - LDX #$0B ; FB3B: A2 0B +SubCFB25_Loop3: + LDX #$0B ; CPU:$FB3B PRG:3B3B A2 0B ; --------------------------------------------------------------------------- ; Label_FB3D @@ -11934,13 +11934,13 @@ Label_FB3B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FB3D: - LDY $F0,X ; FB3D: B4 F0 - INY ; FB3F: C8 - LDA $90,X ; FB40: B5 90 - CMP #$03 ; FB42: C9 03 - BNE Label_FB48 ; FB44: D0 02 - LDY #$00 ; FB46: A0 00 +SubCFB25_OnNonnegative: + LDY $F0,X ; CPU:$FB3D PRG:3B3D B4 F0 + INY ; CPU:$FB3F PRG:3B3F C8 + LDA $90,X ; CPU:$FB40 PRG:3B40 B5 90 + CMP #$03 ; CPU:$FB42 PRG:3B42 C9 03 + BNE SubCFB25_Loop4 ; CPU:$FB44 PRG:3B44 D0 02 + LDY #$00 ; CPU:$FB46 PRG:3B46 A0 00 ; --------------------------------------------------------------------------- ; Label_FB48 @@ -11957,19 +11957,19 @@ Label_FB3D: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FB48: - LDA $FC17,Y ; FB48: B9 17 FC - STA $9C,X ; FB4B: 95 9C - LDA $FC1B,Y ; FB4D: B9 1B FC - STA $A8,X ; FB50: 95 A8 - LDA $FC1F,Y ; FB52: B9 1F FC - STA $B4,X ; FB55: 95 B4 - DEX ; FB57: CA - BPL Label_FB3D ; FB58: 10 E3 - LDA $87 ; FB5A: A5 87 - BNE Label_FB84 ; FB5C: D0 26 - LDA #$84 ; FB5E: A9 84 - LDX #$0B ; FB60: A2 0B +SubCFB25_Loop4: + LDA $FC17,Y ; CPU:$FB48 PRG:3B48 B9 17 FC + STA $9C,X ; CPU:$FB4B PRG:3B4B 95 9C + LDA $FC1B,Y ; CPU:$FB4D PRG:3B4D B9 1B FC + STA $A8,X ; CPU:$FB50 PRG:3B50 95 A8 + LDA $FC1F,Y ; CPU:$FB52 PRG:3B52 B9 1F FC + STA $B4,X ; CPU:$FB55 PRG:3B55 95 B4 + DEX ; CPU:$FB57 PRG:3B57 CA + BPL SubCFB25_OnNonnegative ; CPU:$FB58 PRG:3B58 10 E3 + LDA $87 ; CPU:$FB5A PRG:3B5A A5 87 + BNE SubCFB25_Loop5 ; CPU:$FB5C PRG:3B5C D0 26 + LDA #$84 ; CPU:$FB5E PRG:3B5E A9 84 + LDX #$0B ; CPU:$FB60 PRG:3B60 A2 0B ; --------------------------------------------------------------------------- ; Label_FB62 @@ -11986,41 +11986,41 @@ Label_FB48: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FB62: - STA $E4,X ; FB62: 95 E4 - DEX ; FB64: CA - BPL Label_FB62 ; FB65: 10 FB - LDA #$DF ; FB67: A9 DF - STA $0289 ; FB69: 8D 89 02 - STA $028D ; FB6C: 8D 8D 02 - LDA #$00 ; FB6F: A9 00 - STA $028A ; FB71: 8D 8A 02 - STA $028E ; FB74: 8D 8E 02 - LDA #$18 ; FB77: A9 18 - STA $028B ; FB79: 8D 8B 02 - LDA #$60 ; FB7C: A9 60 - STA $028F ; FB7E: 8D 8F 02 - LDA #$B5 ; FB81: A9 B5 +SubCFB25_OnNonnegative2: + STA $E4,X ; CPU:$FB62 PRG:3B62 95 E4 + DEX ; CPU:$FB64 PRG:3B64 CA + BPL SubCFB25_OnNonnegative2 ; CPU:$FB65 PRG:3B65 10 FB + LDA #$DF ; CPU:$FB67 PRG:3B67 A9 DF + STA $0289 ; CPU:$FB69 PRG:3B69 8D 89 02 + STA $028D ; CPU:$FB6C PRG:3B6C 8D 8D 02 + LDA #$00 ; CPU:$FB6F PRG:3B6F A9 00 + STA $028A ; CPU:$FB71 PRG:3B71 8D 8A 02 + STA $028E ; CPU:$FB74 PRG:3B74 8D 8E 02 + LDA #$18 ; CPU:$FB77 PRG:3B77 A9 18 + STA $028B ; CPU:$FB79 PRG:3B79 8D 8B 02 + LDA #$60 ; CPU:$FB7C PRG:3B7C A9 60 + STA $028F ; CPU:$FB7E PRG:3B7E 8D 8F 02 + LDA #$B5 ; CPU:$FB81 PRG:3B81 A9 B5 ; Overlapping instruction idiom: ; FB83: BIT $FFA9 (2C A9 FF) ; FB84: LDA #$FF (A9 FF) Label_FB83: - .byte $2C ; FB83: 2C BIT absolute opcode -Label_FB84: - .byte $A9,$FF ; FB84-FB85: A9 FF LDA #$FF - STA $0288 ; FB86: 8D 88 02 - STA $028C ; FB89: 8D 8C 02 - STA $0290 ; FB8C: 8D 90 02 - JSR SubCF931 ; FB8F: 20 31 F9 - LDA $5E ; FB92: A5 5E - CMP #$0C ; FB94: C9 0C - BCS Label_FBA3 ; FB96: B0 0B - ASL A ; FB98: 0A - PHA ; FB99: 48 - JSR SubCD9B9 ; FB9A: 20 B9 D9 - PLA ; FB9D: 68 - LDY #$D7 ; FB9E: A0 D7 - JSR SubCC752 ; FBA0: 20 52 C7 + .byte $2C ; FB83: 2C BIT absolute opcode ; CPU:$FB83 PRG:3B83 2C +SubCFB25_Loop5: + .byte $A9,$FF ; FB84-FB85: A9 FF LDA #$FF ; CPU:$FB84 PRG:3B84 A9 FF + STA $0288 ; CPU:$FB86 PRG:3B86 8D 88 02 + STA $028C ; CPU:$FB89 PRG:3B89 8D 8C 02 + STA $0290 ; CPU:$FB8C PRG:3B8C 8D 90 02 + JSR SubCF931 ; CPU:$FB8F PRG:3B8F 20 31 F9 + LDA $5E ; CPU:$FB92 PRG:3B92 A5 5E + CMP #$0C ; CPU:$FB94 PRG:3B94 C9 0C + BCS SubCFB25_Loop6 ; CPU:$FB96 PRG:3B96 B0 0B + ASL A ; CPU:$FB98 PRG:3B98 0A + PHA ; CPU:$FB99 PRG:3B99 48 + JSR SubCD9B9 ; CPU:$FB9A PRG:3B9A 20 B9 D9 + PLA ; CPU:$FB9D PRG:3B9D 68 + LDY #$D7 ; CPU:$FB9E PRG:3B9E A0 D7 + JSR SubCC752 ; CPU:$FBA0 PRG:3BA0 20 52 C7 ; --------------------------------------------------------------------------- ; Label_FBA3 @@ -12037,8 +12037,8 @@ Label_FB84: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FBA3: - RTS ; FBA3: 60 +SubCFB25_Loop6: + RTS ; CPU:$FBA3 PRG:3BA3 60 ; --------------------------------------------------------------------------- ; StoreSpecialGridCoordinate @@ -12056,10 +12056,10 @@ Label_FBA3: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- StoreSpecialGridCoordinate: - LDY $6F ; FBA4: A4 6F - LDA $70 ; FBA6: A5 70 - STA a:$00F0,Y ; FBA8: 99 F0 00 - JMP SubCFB25 ; FBAB: 4C 25 FB + LDY grid_inner_index ; CPU:$FBA4 PRG:3BA4 A4 6F + LDA grid_group_index ; CPU:$FBA6 PRG:3BA6 A5 70 + STA a:$00F0,Y ; CPU:$FBA8 PRG:3BA8 99 F0 00 + JMP SubCFB25 ; CPU:$FBAB PRG:3BAB 4C 25 FB ; --------------------------------------------------------------------------- ; NormalizeStatePair @@ -12077,8 +12077,8 @@ StoreSpecialGridCoordinate: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- NormalizeStatePair: - JSR NormalizeStateEntry ; FBAE: 20 B2 FB - INX ; FBB1: E8 + JSR NormalizeStateEntry ; CPU:$FBAE PRG:3BAE 20 B2 FB + INX ; CPU:$FBB1 PRG:3BB1 E8 ; --------------------------------------------------------------------------- ; NormalizeStateEntry @@ -12096,12 +12096,12 @@ NormalizeStatePair: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- NormalizeStateEntry: - LDA $90,X ; FBB2: B5 90 - BEQ Label_FBBE ; FBB4: F0 08 - CMP #$03 ; FBB6: C9 03 - BEQ Label_FBBE ; FBB8: F0 04 - LDA #$00 ; FBBA: A9 00 - STA $90,X ; FBBC: 95 90 + LDA $90,X ; CPU:$FBB2 PRG:3BB2 B5 90 + BEQ NormalizeStateEntry_Loop ; CPU:$FBB4 PRG:3BB4 F0 08 + CMP #$03 ; CPU:$FBB6 PRG:3BB6 C9 03 + BEQ NormalizeStateEntry_Loop ; CPU:$FBB8 PRG:3BB8 F0 04 + LDA #$00 ; CPU:$FBBA PRG:3BBA A9 00 + STA $90,X ; CPU:$FBBC PRG:3BBC 95 90 ; --------------------------------------------------------------------------- ; Label_FBBE @@ -12118,8 +12118,8 @@ NormalizeStateEntry: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FBBE: - RTS ; FBBE: 60 +NormalizeStateEntry_Loop: + RTS ; CPU:$FBBE PRG:3BBE 60 .incbin "prg.bin", $3BBF, $0065 ; FBBF-FC23: unclassified/data ; --------------------------------------------------------------------------- @@ -12138,8 +12138,8 @@ Label_FBBE: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFC24: - CLC ; FC24: 18 - ADC #$40 ; FC25: 69 40 + CLC ; CPU:$FC24 PRG:3C24 18 + ADC #$40 ; CPU:$FC25 PRG:3C25 69 40 ; --------------------------------------------------------------------------- ; SubCFC27 @@ -12157,18 +12157,18 @@ SubCFC24: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFC27: - TAX ; FC27: AA - LDA $0600,X ; FC28: BD 00 06 - STA $5F ; FC2B: 85 5F - LDA $0700,X ; FC2D: BD 00 07 - STA $73 ; FC30: 85 73 - BEQ Label_FC43 ; FC32: F0 0F - BPL Label_FC3F ; FC34: 10 09 - LDA #$FF ; FC36: A9 FF - SEC ; FC38: 38 - SBC $5F ; FC39: E5 5F - STA $5F ; FC3B: 85 5F - BCS Label_FC43 ; FC3D: B0 04 + TAX ; CPU:$FC27 PRG:3C27 AA + LDA $0600,X ; CPU:$FC28 PRG:3C28 BD 00 06 + STA $5F ; CPU:$FC2B PRG:3C2B 85 5F + LDA $0700,X ; CPU:$FC2D PRG:3C2D BD 00 07 + STA $73 ; CPU:$FC30 PRG:3C30 85 73 + BEQ SubCFC27_Loop2 ; CPU:$FC32 PRG:3C32 F0 0F + BPL SubCFC27_Loop ; CPU:$FC34 PRG:3C34 10 09 + LDA #$FF ; CPU:$FC36 PRG:3C36 A9 FF + SEC ; CPU:$FC38 PRG:3C38 38 + SBC $5F ; CPU:$FC39 PRG:3C39 E5 5F + STA $5F ; CPU:$FC3B PRG:3C3B 85 5F + BCS SubCFC27_Loop2 ; CPU:$FC3D PRG:3C3D B0 04 ; --------------------------------------------------------------------------- ; Label_FC3F @@ -12185,9 +12185,9 @@ SubCFC27: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FC3F: - DEC $73 ; FC3F: C6 73 - DEC $5F ; FC41: C6 5F +SubCFC27_Loop: + DEC $73 ; CPU:$FC3F PRG:3C3F C6 73 + DEC $5F ; CPU:$FC41 PRG:3C41 C6 5F ; --------------------------------------------------------------------------- ; Label_FC43 @@ -12204,18 +12204,18 @@ Label_FC3F: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FC43: - LDA $5E ; FC43: A5 5E - EOR $73 ; FC45: 45 73 - STA $73 ; FC47: 85 73 - LDA $5E ; FC49: A5 5E - JSR SubCD9B1 ; FC4B: 20 B1 D9 - STA $5E ; FC4E: 85 5E - JSR SubCF906 ; FC50: 20 06 F9 - LDX $61 ; FC53: A6 61 - LDA $60 ; FC55: A5 60 - BPL Label_FC5A ; FC57: 10 01 - INX ; FC59: E8 +SubCFC27_Loop2: + LDA $5E ; CPU:$FC43 PRG:3C43 A5 5E + EOR $73 ; CPU:$FC45 PRG:3C45 45 73 + STA $73 ; CPU:$FC47 PRG:3C47 85 73 + LDA $5E ; CPU:$FC49 PRG:3C49 A5 5E + JSR SubCD9B1 ; CPU:$FC4B PRG:3C4B 20 B1 D9 + STA $5E ; CPU:$FC4E PRG:3C4E 85 5E + JSR SubCF906 ; CPU:$FC50 PRG:3C50 20 06 F9 + LDX $61 ; CPU:$FC53 PRG:3C53 A6 61 + LDA $60 ; CPU:$FC55 PRG:3C55 A5 60 + BPL SubCFC27_Loop3 ; CPU:$FC57 PRG:3C57 10 01 + INX ; CPU:$FC59 PRG:3C59 E8 ; --------------------------------------------------------------------------- ; Label_FC5A @@ -12232,13 +12232,13 @@ Label_FC43: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FC5A: - TXA ; FC5A: 8A - LDX $73 ; FC5B: A6 73 - BPL Label_FC64 ; FC5D: 10 05 - LDA #$00 ; FC5F: A9 00 - SEC ; FC61: 38 - SBC $61 ; FC62: E5 61 +SubCFC27_Loop3: + TXA ; CPU:$FC5A PRG:3C5A 8A + LDX $73 ; CPU:$FC5B PRG:3C5B A6 73 + BPL SubCFC27_Loop4 ; CPU:$FC5D PRG:3C5D 10 05 + LDA #$00 ; CPU:$FC5F PRG:3C5F A9 00 + SEC ; CPU:$FC61 PRG:3C61 38 + SBC $61 ; CPU:$FC62 PRG:3C62 E5 61 ; --------------------------------------------------------------------------- ; Label_FC64 @@ -12255,9 +12255,9 @@ Label_FC5A: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FC64: - CLC ; FC64: 18 - RTS ; FC65: 60 +SubCFC27_Loop4: + CLC ; CPU:$FC64 PRG:3C64 18 + RTS ; CPU:$FC65 PRG:3C65 60 ; --------------------------------------------------------------------------- ; CompareObjectState @@ -12275,17 +12275,17 @@ Label_FC64: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- CompareObjectState: - CMP $90,X ; FC66: D5 90 - BEQ Label_FC6C ; FC68: F0 02 - SEC ; FC6A: 38 + CMP $90,X ; CPU:$FC66 PRG:3C66 D5 90 + BEQ CompareObjectState_Loop ; CPU:$FC68 PRG:3C68 F0 02 + SEC ; CPU:$FC6A PRG:3C6A 38 ; Overlapping instruction idiom: ; FC6B: BIT $18 (24 18), retaining carry set ; FC6C: CLC (18), alternate equality entry Label_FC6B: - .byte $24 ; FC6B: 24 BIT zero-page opcode -Label_FC6C: - .byte $18 ; FC6C: 18 CLC / BIT operand - RTS ; FC6D: 60 + .byte $24 ; FC6B: 24 BIT zero-page opcode ; CPU:$FC6B PRG:3C6B 24 +CompareObjectState_Loop: + .byte $18 ; FC6C: 18 CLC / BIT operand ; CPU:$FC6C PRG:3C6C 18 + RTS ; CPU:$FC6D PRG:3C6D 60 ; --------------------------------------------------------------------------- ; GetGridObjectIndex @@ -12303,12 +12303,12 @@ Label_FC6C: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- GetGridObjectIndex: - LDX $70 ; FC6E: A6 70 - LDA $FBCF,X ; FC70: BD CF FB - CLC ; FC73: 18 - ADC $6F ; FC74: 65 6F - TAX ; FC76: AA - RTS ; FC77: 60 + LDX grid_group_index ; CPU:$FC6E PRG:3C6E A6 70 + LDA $FBCF,X ; CPU:$FC70 PRG:3C70 BD CF FB + CLC ; CPU:$FC73 PRG:3C73 18 + ADC grid_inner_index ; CPU:$FC74 PRG:3C74 65 6F + TAX ; CPU:$FC76 PRG:3C76 AA + RTS ; CPU:$FC77 PRG:3C77 60 ; --------------------------------------------------------------------------- ; SubCFC78 @@ -12326,9 +12326,9 @@ GetGridObjectIndex: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFC78: - LDA $77 ; FC78: A5 77 - BNE Label_FC7D ; FC7A: D0 01 - RTS ; FC7C: 60 + LDA $77 ; CPU:$FC78 PRG:3C78 A5 77 + BNE SubCFC78_Loop ; CPU:$FC7A PRG:3C7A D0 01 + RTS ; CPU:$FC7C PRG:3C7C 60 ; --------------------------------------------------------------------------- ; Label_FC7D @@ -12345,18 +12345,18 @@ SubCFC78: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FC7D: - LDY #$B8 ; FC7D: A0 B8 - LDX #$C0 ; FC7F: A2 C0 - JSR WaitForFramePreservingY ; FC81: 20 81 C8 - JSR RestorePpuCtrlShadow ; FC84: 20 B5 C8 - JSR UploadGeneratedCourseGrid ; FC87: 20 98 FC - LDY #$A0 ; FC8A: A0 A0 - LDX #$C5 ; FC8C: A2 C5 - JSR InstallNmiCallback ; FC8E: 20 88 C8 - LDA #$00 ; FC91: A9 00 - STA $2E ; FC93: 85 2E - JMP RestorePpuCtrlShadow ; FC95: 4C B5 C8 +SubCFC78_Loop: + LDY #$B8 ; CPU:$FC7D PRG:3C7D A0 B8 + LDX #$C0 ; CPU:$FC7F PRG:3C7F A2 C0 + JSR WaitForFramePreservingY ; CPU:$FC81 PRG:3C81 20 81 C8 + JSR RestorePpuCtrlShadow ; CPU:$FC84 PRG:3C84 20 B5 C8 + JSR UploadGeneratedCourseGrid ; CPU:$FC87 PRG:3C87 20 98 FC + LDY #$A0 ; CPU:$FC8A PRG:3C8A A0 A0 + LDX #$C5 ; CPU:$FC8C PRG:3C8C A2 C5 + JSR InstallNmiCallback ; CPU:$FC8E PRG:3C8E 20 88 C8 + LDA #$00 ; CPU:$FC91 PRG:3C91 A9 00 + STA primary_action_pressed ; CPU:$FC93 PRG:3C93 85 2E + JMP RestorePpuCtrlShadow ; CPU:$FC95 PRG:3C95 4C B5 C8 ; --------------------------------------------------------------------------- ; UploadGeneratedCourseGrid @@ -12374,13 +12374,13 @@ Label_FC7D: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- UploadGeneratedCourseGrid: - JSR SubCF99E ; FC98: 20 9E F9 - JSR WaitForFrame ; FC9B: 20 F3 C8 - LDA #$22 ; FC9E: A9 22 - STA $04 ; FCA0: 85 04 - LDA #$22 ; FCA2: A9 22 - STA $05 ; FCA4: 85 05 - LDX #$00 ; FCA6: A2 00 + JSR SubCF99E ; CPU:$FC98 PRG:3C98 20 9E F9 + JSR WaitForFrame ; CPU:$FC9B PRG:3C9B 20 F3 C8 + LDA #$22 ; CPU:$FC9E PRG:3C9E A9 22 + STA source_pointer_lo ; CPU:$FCA0 PRG:3CA0 85 04 + LDA #$22 ; CPU:$FCA2 PRG:3CA2 A9 22 + STA source_pointer_hi ; CPU:$FCA4 PRG:3CA4 85 05 + LDX #$00 ; CPU:$FCA6 PRG:3CA6 A2 00 ; --------------------------------------------------------------------------- ; Label_FCA8 @@ -12397,13 +12397,13 @@ UploadGeneratedCourseGrid: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FCA8: - JSR WaitForFrame ; FCA8: 20 F3 C8 - LDA $04 ; FCAB: A5 04 - STA PPUADDR ; FCAD: 8D 06 20 - LDA $05 ; FCB0: A5 05 - STA PPUADDR ; FCB2: 8D 06 20 - LDY #$0B ; FCB5: A0 0B +UploadGeneratedCourseGrid_OnCarryClear: + JSR WaitForFrame ; CPU:$FCA8 PRG:3CA8 20 F3 C8 + LDA source_pointer_lo ; CPU:$FCAB PRG:3CAB A5 04 + STA PPUADDR ; CPU:$FCAD PRG:3CAD 8D 06 20 + LDA source_pointer_hi ; CPU:$FCB0 PRG:3CB0 A5 05 + STA PPUADDR ; CPU:$FCB2 PRG:3CB2 8D 06 20 + LDY #$0B ; CPU:$FCB5 PRG:3CB5 A0 0B ; --------------------------------------------------------------------------- ; Label_FCB7 @@ -12420,19 +12420,19 @@ Label_FCA8: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FCB7: - LDA $9C,X ; FCB7: B5 9C - STA PPUDATA ; FCB9: 8D 07 20 - INX ; FCBC: E8 - DEY ; FCBD: 88 - BPL Label_FCB7 ; FCBE: 10 F7 - JSR SetPpuScrollAndMask ; FCC0: 20 9D C8 - LDA $05 ; FCC3: A5 05 - CLC ; FCC5: 18 - ADC #$20 ; FCC6: 69 20 - STA $05 ; FCC8: 85 05 - BCC Label_FCCE ; FCCA: 90 02 - INC $04 ; FCCC: E6 04 +UploadGeneratedCourseGrid_OnNonnegative: + LDA $9C,X ; CPU:$FCB7 PRG:3CB7 B5 9C + STA PPUDATA ; CPU:$FCB9 PRG:3CB9 8D 07 20 + INX ; CPU:$FCBC PRG:3CBC E8 + DEY ; CPU:$FCBD PRG:3CBD 88 + BPL UploadGeneratedCourseGrid_OnNonnegative ; CPU:$FCBE PRG:3CBE 10 F7 + JSR SetPpuScrollAndMask ; CPU:$FCC0 PRG:3CC0 20 9D C8 + LDA source_pointer_hi ; CPU:$FCC3 PRG:3CC3 A5 05 + CLC ; CPU:$FCC5 PRG:3CC5 18 + ADC #$20 ; CPU:$FCC6 PRG:3CC6 69 20 + STA source_pointer_hi ; CPU:$FCC8 PRG:3CC8 85 05 + BCC UploadGeneratedCourseGrid_Loop ; CPU:$FCCA PRG:3CCA 90 02 + INC source_pointer_lo ; CPU:$FCCC PRG:3CCC E6 04 ; --------------------------------------------------------------------------- ; Label_FCCE @@ -12449,13 +12449,13 @@ Label_FCB7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FCCE: - CPX #$54 ; FCCE: E0 54 - BCC Label_FCA8 ; FCD0: 90 D6 - LDX #$23 ; FCD2: A2 23 - LDA #$E8 ; FCD4: A9 E8 - JSR SetPpuAddress ; FCD6: 20 C1 C8 - LDX #$03 ; FCD9: A2 03 +UploadGeneratedCourseGrid_Loop: + CPX #$54 ; CPU:$FCCE PRG:3CCE E0 54 + BCC UploadGeneratedCourseGrid_OnCarryClear ; CPU:$FCD0 PRG:3CD0 90 D6 + LDX #$23 ; CPU:$FCD2 PRG:3CD2 A2 23 + LDA #$E8 ; CPU:$FCD4 PRG:3CD4 A9 E8 + JSR SetPpuAddress ; CPU:$FCD6 PRG:3CD6 20 C1 C8 + LDX #$03 ; CPU:$FCD9 PRG:3CD9 A2 03 ; --------------------------------------------------------------------------- ; Label_FCDB @@ -12472,12 +12472,12 @@ Label_FCCE: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FCDB: - LDA $FC,X ; FCDB: B5 FC - STA PPUDATA ; FCDD: 8D 07 20 - DEX ; FCE0: CA - BPL Label_FCDB ; FCE1: 10 F8 - JMP SetPpuScrollAndMask ; FCE3: 4C 9D C8 +UploadGeneratedCourseGrid_OnNonnegative2: + LDA $FC,X ; CPU:$FCDB PRG:3CDB B5 FC + STA PPUDATA ; CPU:$FCDD PRG:3CDD 8D 07 20 + DEX ; CPU:$FCE0 PRG:3CE0 CA + BPL UploadGeneratedCourseGrid_OnNonnegative2 ; CPU:$FCE1 PRG:3CE1 10 F8 + JMP SetPpuScrollAndMask ; CPU:$FCE3 PRG:3CE3 4C 9D C8 ; --------------------------------------------------------------------------- ; SubCFCE6 @@ -12495,10 +12495,10 @@ Label_FCDB: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFCE6: - JSR SubCCA9D ; FCE6: 20 9D CA - LDA #$FF ; FCE9: A9 FF - STA $0280 ; FCEB: 8D 80 02 - JSR SubCC907 ; FCEE: 20 07 C9 + JSR SubCCA9D ; CPU:$FCE6 PRG:3CE6 20 9D CA + LDA #$FF ; CPU:$FCE9 PRG:3CE9 A9 FF + STA $0280 ; CPU:$FCEB PRG:3CEB 8D 80 02 + JSR SubCC907 ; CPU:$FCEE PRG:3CEE 20 07 C9 ; --------------------------------------------------------------------------- ; SubCFCF1 @@ -12516,11 +12516,11 @@ SubCFCE6: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFCF1: - LDX #$3F ; FCF1: A2 3F - LDA #$10 ; FCF3: A9 10 - JSR SetPpuAddress ; FCF5: 20 C1 C8 - JSR SpriteOffsetForController ; FCF8: 20 94 C8 - LDY #$03 ; FCFB: A0 03 + LDX #$3F ; CPU:$FCF1 PRG:3CF1 A2 3F + LDA #$10 ; CPU:$FCF3 PRG:3CF3 A9 10 + JSR SetPpuAddress ; CPU:$FCF5 PRG:3CF5 20 C1 C8 + JSR SpriteOffsetForController ; CPU:$FCF8 PRG:3CF8 20 94 C8 + LDY #$03 ; CPU:$FCFB PRG:3CFB A0 03 ; --------------------------------------------------------------------------- ; Label_FCFD @@ -12537,17 +12537,17 @@ SubCFCF1: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FCFD: - LDA $FD0A,X ; FCFD: BD 0A FD - STA PPUDATA ; FD00: 8D 07 20 - INX ; FD03: E8 - DEY ; FD04: 88 - BPL Label_FCFD ; FD05: 10 F6 - JMP SetPpuScrollAndMask ; FD07: 4C 9D C8 +SubCFCF1_OnNonnegative: + LDA $FD0A,X ; CPU:$FCFD PRG:3CFD BD 0A FD + STA PPUDATA ; CPU:$FD00 PRG:3D00 8D 07 20 + INX ; CPU:$FD03 PRG:3D03 E8 + DEY ; CPU:$FD04 PRG:3D04 88 + BPL SubCFCF1_OnNonnegative ; CPU:$FD05 PRG:3D05 10 F6 + JMP SetPpuScrollAndMask ; CPU:$FD07 PRG:3D07 4C 9D C8 ; PpuTableFd0a: bytes written to PPUDATA via indexed load ; (LDA $FD0A,X / STA PPUDATA at $FCFD; consumer reads 4 bytes). PpuTableFd0a: - .byte $29,$01,$30,$27,$29,$0f,$16,$27 ; FD0A-FD11: 29 01 30 27 29 0f 16 27 + .byte $29,$01,$30,$27,$29,$0f,$16,$27 ; FD0A-FD11: 29 01 30 27 29 0f 16 27 ; CPU:$FD0A PRG:3D0A 29 01 30 27 29 0F 16 27 ; --------------------------------------------------------------------------- ; SubCFD12 @@ -12565,15 +12565,15 @@ PpuTableFd0a: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFD12: - LDX $38 ; FD12: A6 38 - LDA $3B ; FD14: A5 3B - JSR SubCD8ED ; FD16: 20 ED D8 - CLC ; FD19: 18 - ADC #$80 ; FD1A: 69 80 - STA $71 ; FD1C: 85 71 - LDA #$80 ; FD1E: A9 80 - STA $6B ; FD20: 85 6B - STA $6C ; FD22: 85 6C + LDX $38 ; CPU:$FD12 PRG:3D12 A6 38 + LDA $3B ; CPU:$FD14 PRG:3D14 A5 3B + JSR SubCD8ED ; CPU:$FD16 PRG:3D16 20 ED D8 + CLC ; CPU:$FD19 PRG:3D19 18 + ADC #$80 ; CPU:$FD1A PRG:3D1A 69 80 + STA $71 ; CPU:$FD1C PRG:3D1C 85 71 + LDA #$80 ; CPU:$FD1E PRG:3D1E A9 80 + STA $6B ; CPU:$FD20 PRG:3D20 85 6B + STA $6C ; CPU:$FD22 PRG:3D22 85 6C ; --------------------------------------------------------------------------- ; Label_FD24 @@ -12590,36 +12590,36 @@ SubCFD12: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FD24: - LDA $71 ; FD24: A5 71 - CLC ; FD26: 18 - ADC #$40 ; FD27: 69 40 - TAX ; FD29: AA - LDA $0600,X ; FD2A: BD 00 06 - CLC ; FD2D: 18 - ADC $6B ; FD2E: 65 6B - STA $6B ; FD30: 85 6B - LDA $0700,X ; FD32: BD 00 07 - ADC $38 ; FD35: 65 38 - STA $38 ; FD37: 85 38 - LDX $71 ; FD39: A6 71 - LDA $0600,X ; FD3B: BD 00 06 - CLC ; FD3E: 18 - ADC $6C ; FD3F: 65 6C - STA $6C ; FD41: 85 6C - LDA $0700,X ; FD43: BD 00 07 - ADC $3B ; FD46: 65 3B - STA $3B ; FD48: 85 3B - LDA $38 ; FD4A: A5 38 - BPL Label_FD5E ; FD4C: 10 10 - LDA $3B ; FD4E: A5 3B - CMP #$F0 ; FD50: C9 F0 - BCS Label_FD5E ; FD52: B0 0A - JSR SubCD65A ; FD54: 20 5A D6 - LDA $55 ; FD57: A5 55 - ORA $56 ; FD59: 05 56 - BNE Label_FD24 ; FD5B: D0 C7 - RTS ; FD5D: 60 +SubCFD12_OnNonzero: + LDA $71 ; CPU:$FD24 PRG:3D24 A5 71 + CLC ; CPU:$FD26 PRG:3D26 18 + ADC #$40 ; CPU:$FD27 PRG:3D27 69 40 + TAX ; CPU:$FD29 PRG:3D29 AA + LDA $0600,X ; CPU:$FD2A PRG:3D2A BD 00 06 + CLC ; CPU:$FD2D PRG:3D2D 18 + ADC $6B ; CPU:$FD2E PRG:3D2E 65 6B + STA $6B ; CPU:$FD30 PRG:3D30 85 6B + LDA $0700,X ; CPU:$FD32 PRG:3D32 BD 00 07 + ADC $38 ; CPU:$FD35 PRG:3D35 65 38 + STA $38 ; CPU:$FD37 PRG:3D37 85 38 + LDX $71 ; CPU:$FD39 PRG:3D39 A6 71 + LDA $0600,X ; CPU:$FD3B PRG:3D3B BD 00 06 + CLC ; CPU:$FD3E PRG:3D3E 18 + ADC $6C ; CPU:$FD3F PRG:3D3F 65 6C + STA $6C ; CPU:$FD41 PRG:3D41 85 6C + LDA $0700,X ; CPU:$FD43 PRG:3D43 BD 00 07 + ADC $3B ; CPU:$FD46 PRG:3D46 65 3B + STA $3B ; CPU:$FD48 PRG:3D48 85 3B + LDA $38 ; CPU:$FD4A PRG:3D4A A5 38 + BPL SubCFD12_Loop ; CPU:$FD4C PRG:3D4C 10 10 + LDA $3B ; CPU:$FD4E PRG:3D4E A5 3B + CMP #$F0 ; CPU:$FD50 PRG:3D50 C9 F0 + BCS SubCFD12_Loop ; CPU:$FD52 PRG:3D52 B0 0A + JSR SubCD65A ; CPU:$FD54 PRG:3D54 20 5A D6 + LDA $55 ; CPU:$FD57 PRG:3D57 A5 55 + ORA $56 ; CPU:$FD59 PRG:3D59 05 56 + BNE SubCFD12_OnNonzero ; CPU:$FD5B PRG:3D5B D0 C7 + RTS ; CPU:$FD5D PRG:3D5D 60 ; --------------------------------------------------------------------------- ; Label_FD5E @@ -12636,12 +12636,12 @@ Label_FD24: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FD5E: - LDA $79 ; FD5E: A5 79 - STA $38 ; FD60: 85 38 - LDA $78 ; FD62: A5 78 - STA $3B ; FD64: 85 3B - RTS ; FD66: 60 +SubCFD12_Loop: + LDA $79 ; CPU:$FD5E PRG:3D5E A5 79 + STA $38 ; CPU:$FD60 PRG:3D60 85 38 + LDA $78 ; CPU:$FD62 PRG:3D62 A5 78 + STA $3B ; CPU:$FD64 PRG:3D64 85 3B + RTS ; CPU:$FD66 PRG:3D66 60 ; --------------------------------------------------------------------------- ; SubCFD67 @@ -12659,7 +12659,7 @@ Label_FD5E: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFD67: - LDY #$02 ; FD67: A0 02 + LDY #$02 ; CPU:$FD67 PRG:3D67 A0 02 ; --------------------------------------------------------------------------- ; Label_FD69 @@ -12676,11 +12676,11 @@ SubCFD67: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FD69: - LDX #$00 ; FD69: A2 00 - LDA $90 ; FD6B: A5 90 - BPL Label_FD70 ; FD6D: 10 01 - DEX ; FD6F: CA +SubCFD67_OnNonnegative: + LDX #$00 ; CPU:$FD69 PRG:3D69 A2 00 + LDA $90 ; CPU:$FD6B PRG:3D6B A5 90 + BPL SubCFD67_Loop ; CPU:$FD6D PRG:3D6D 10 01 + DEX ; CPU:$FD6F PRG:3D6F CA ; --------------------------------------------------------------------------- ; Label_FD70 @@ -12697,17 +12697,17 @@ Label_FD69: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FD70: - CLC ; FD70: 18 - ADC $39 ; FD71: 65 39 - STA $39 ; FD73: 85 39 - TXA ; FD75: 8A - ADC $38 ; FD76: 65 38 - STA $38 ; FD78: 85 38 - LDX #$00 ; FD7A: A2 00 - LDA $91 ; FD7C: A5 91 - BPL Label_FD81 ; FD7E: 10 01 - DEX ; FD80: CA +SubCFD67_Loop: + CLC ; CPU:$FD70 PRG:3D70 18 + ADC $39 ; CPU:$FD71 PRG:3D71 65 39 + STA $39 ; CPU:$FD73 PRG:3D73 85 39 + TXA ; CPU:$FD75 PRG:3D75 8A + ADC $38 ; CPU:$FD76 PRG:3D76 65 38 + STA $38 ; CPU:$FD78 PRG:3D78 85 38 + LDX #$00 ; CPU:$FD7A PRG:3D7A A2 00 + LDA $91 ; CPU:$FD7C PRG:3D7C A5 91 + BPL SubCFD67_Loop2 ; CPU:$FD7E PRG:3D7E 10 01 + DEX ; CPU:$FD80 PRG:3D80 CA ; --------------------------------------------------------------------------- ; Label_FD81 @@ -12724,58 +12724,58 @@ Label_FD70: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FD81: - CLC ; FD81: 18 - ADC $3C ; FD82: 65 3C - STA $3C ; FD84: 85 3C - TXA ; FD86: 8A - ADC $3B ; FD87: 65 3B - STA $3B ; FD89: 85 3B - DEY ; FD8B: 88 - BPL Label_FD69 ; FD8C: 10 DB - LDA #$12 ; FD8E: A9 12 - STA $5E ; FD90: 85 5E - LDA $94 ; FD92: A5 94 - CLC ; FD94: 18 - ADC #$80 ; FD95: 69 80 - PHA ; FD97: 48 - JSR SubCFE50 ; FD98: 20 50 FE - PLA ; FD9B: 68 - JSR SubCFE61 ; FD9C: 20 61 FE - LDA $86 ; FD9F: A5 86 - STA $5E ; FDA1: 85 5E - LDA $85 ; FDA3: A5 85 - JSR SubCFE50 ; FDA5: 20 50 FE - LDA $85 ; FDA8: A5 85 - JSR SubCFE61 ; FDAA: 20 61 FE - LDA $90 ; FDAD: A5 90 - STA $6B ; FDAF: 85 6B - JSR SubCD9B1 ; FDB1: 20 B1 D9 - TAY ; FDB4: A8 - LDA $91 ; FDB5: A5 91 - STA $6C ; FDB7: 85 6C - JSR SubCD9B1 ; FDB9: 20 B1 D9 - JSR SubCF953 ; FDBC: 20 53 F9 - LDA $5E ; FDBF: A5 5E - STA $95 ; FDC1: 85 95 - JSR SubCD906 ; FDC3: 20 06 D9 - STA $94 ; FDC6: 85 94 - LDA $38 ; FDC8: A5 38 - SEC ; FDCA: 38 - SBC $79 ; FDCB: E5 79 - JSR SubCD9B1 ; FDCD: 20 B1 D9 - TAY ; FDD0: A8 - LDA $3B ; FDD1: A5 3B - SEC ; FDD3: 38 - SBC $78 ; FDD4: E5 78 - JSR SubCD9B1 ; FDD6: 20 B1 D9 - JSR SubCF953 ; FDD9: 20 53 F9 - LDA #$B6 ; FDDC: A9 B6 - SEC ; FDDE: 38 - SBC $5E ; FDDF: E5 5E - CMP #$98 ; FDE1: C9 98 - BCS Label_FDE7 ; FDE3: B0 02 - LDA #$FF ; FDE5: A9 FF +SubCFD67_Loop2: + CLC ; CPU:$FD81 PRG:3D81 18 + ADC $3C ; CPU:$FD82 PRG:3D82 65 3C + STA $3C ; CPU:$FD84 PRG:3D84 85 3C + TXA ; CPU:$FD86 PRG:3D86 8A + ADC $3B ; CPU:$FD87 PRG:3D87 65 3B + STA $3B ; CPU:$FD89 PRG:3D89 85 3B + DEY ; CPU:$FD8B PRG:3D8B 88 + BPL SubCFD67_OnNonnegative ; CPU:$FD8C PRG:3D8C 10 DB + LDA #$12 ; CPU:$FD8E PRG:3D8E A9 12 + STA $5E ; CPU:$FD90 PRG:3D90 85 5E + LDA $94 ; CPU:$FD92 PRG:3D92 A5 94 + CLC ; CPU:$FD94 PRG:3D94 18 + ADC #$80 ; CPU:$FD95 PRG:3D95 69 80 + PHA ; CPU:$FD97 PRG:3D97 48 + JSR SubCFE50 ; CPU:$FD98 PRG:3D98 20 50 FE + PLA ; CPU:$FD9B PRG:3D9B 68 + JSR SubCFE61 ; CPU:$FD9C PRG:3D9C 20 61 FE + LDA $86 ; CPU:$FD9F PRG:3D9F A5 86 + STA $5E ; CPU:$FDA1 PRG:3DA1 85 5E + LDA $85 ; CPU:$FDA3 PRG:3DA3 A5 85 + JSR SubCFE50 ; CPU:$FDA5 PRG:3DA5 20 50 FE + LDA $85 ; CPU:$FDA8 PRG:3DA8 A5 85 + JSR SubCFE61 ; CPU:$FDAA PRG:3DAA 20 61 FE + LDA $90 ; CPU:$FDAD PRG:3DAD A5 90 + STA $6B ; CPU:$FDAF PRG:3DAF 85 6B + JSR SubCD9B1 ; CPU:$FDB1 PRG:3DB1 20 B1 D9 + TAY ; CPU:$FDB4 PRG:3DB4 A8 + LDA $91 ; CPU:$FDB5 PRG:3DB5 A5 91 + STA $6C ; CPU:$FDB7 PRG:3DB7 85 6C + JSR SubCD9B1 ; CPU:$FDB9 PRG:3DB9 20 B1 D9 + JSR SubCF953 ; CPU:$FDBC PRG:3DBC 20 53 F9 + LDA $5E ; CPU:$FDBF PRG:3DBF A5 5E + STA $95 ; CPU:$FDC1 PRG:3DC1 85 95 + JSR SubCD906 ; CPU:$FDC3 PRG:3DC3 20 06 D9 + STA $94 ; CPU:$FDC6 PRG:3DC6 85 94 + LDA $38 ; CPU:$FDC8 PRG:3DC8 A5 38 + SEC ; CPU:$FDCA PRG:3DCA 38 + SBC $79 ; CPU:$FDCB PRG:3DCB E5 79 + JSR SubCD9B1 ; CPU:$FDCD PRG:3DCD 20 B1 D9 + TAY ; CPU:$FDD0 PRG:3DD0 A8 + LDA $3B ; CPU:$FDD1 PRG:3DD1 A5 3B + SEC ; CPU:$FDD3 PRG:3DD3 38 + SBC $78 ; CPU:$FDD4 PRG:3DD4 E5 78 + JSR SubCD9B1 ; CPU:$FDD6 PRG:3DD6 20 B1 D9 + JSR SubCF953 ; CPU:$FDD9 PRG:3DD9 20 53 F9 + LDA #$B6 ; CPU:$FDDC PRG:3DDC A9 B6 + SEC ; CPU:$FDDE PRG:3DDE 38 + SBC $5E ; CPU:$FDDF PRG:3DDF E5 5E + CMP #$98 ; CPU:$FDE1 PRG:3DE1 C9 98 + BCS SubCFD67_Loop3 ; CPU:$FDE3 PRG:3DE3 B0 02 + LDA #$FF ; CPU:$FDE5 PRG:3DE5 A9 FF ; --------------------------------------------------------------------------- ; Label_FDE7 @@ -12792,10 +12792,10 @@ Label_FD81: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FDE7: - CMP #$9C ; FDE7: C9 9C - BCS Label_FDED ; FDE9: B0 02 - LDA #$9C ; FDEB: A9 9C +SubCFD67_Loop3: + CMP #$9C ; CPU:$FDE7 PRG:3DE7 C9 9C + BCS SubCFD67_Loop4 ; CPU:$FDE9 PRG:3DE9 B0 02 + LDA #$9C ; CPU:$FDEB PRG:3DEB A9 9C ; --------------------------------------------------------------------------- ; Label_FDED @@ -12812,12 +12812,12 @@ Label_FDE7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FDED: - STA $0280 ; FDED: 8D 80 02 - LDX #$88 ; FDF0: A2 88 - CMP #$AC ; FDF2: C9 AC - BCS Label_FDF7 ; FDF4: B0 01 - INX ; FDF6: E8 +SubCFD67_Loop4: + STA $0280 ; CPU:$FDED PRG:3DED 8D 80 02 + LDX #$88 ; CPU:$FDF0 PRG:3DF0 A2 88 + CMP #$AC ; CPU:$FDF2 PRG:3DF2 C9 AC + BCS SubCFD67_Loop5 ; CPU:$FDF4 PRG:3DF4 B0 01 + INX ; CPU:$FDF6 PRG:3DF6 E8 ; --------------------------------------------------------------------------- ; Label_FDF7 @@ -12834,39 +12834,39 @@ Label_FDED: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FDF7: - STX $0281 ; FDF7: 8E 81 02 - LDA #$4C ; FDFA: A9 4C - LDX $5E ; FDFC: A6 5E - CPX #$03 ; FDFE: E0 03 - BCC Label_FE35 ; FE00: 90 33 - LDA $39 ; FE02: A5 39 - STA $19 ; FE04: 85 19 - LDA $38 ; FE06: A5 38 - SEC ; FE08: 38 - SBC $79 ; FE09: E5 79 - STA $6B ; FE0B: 85 6B - ASL $19 ; FE0D: 06 19 - ROL $6B ; FE0F: 26 6B - ASL $19 ; FE11: 06 19 - ROL $6B ; FE13: 26 6B - LDA $3C ; FE15: A5 3C - STA $19 ; FE17: 85 19 - LDA $3B ; FE19: A5 3B - SEC ; FE1B: 38 - SBC $78 ; FE1C: E5 78 - STA $6C ; FE1E: 85 6C - ASL $19 ; FE20: 06 19 - ROL $6C ; FE22: 26 6C - ASL $19 ; FE24: 06 19 - ROL $6C ; FE26: 26 6C - JSR SubCD9D9 ; FE28: 20 D9 D9 - LDA $74 ; FE2B: A5 74 - SEC ; FE2D: 38 - SBC #$02 ; FE2E: E9 02 - CLC ; FE30: 18 - ADC $0283 ; FE31: 6D 83 02 - LSR A ; FE34: 4A +SubCFD67_Loop5: + STX $0281 ; CPU:$FDF7 PRG:3DF7 8E 81 02 + LDA #$4C ; CPU:$FDFA PRG:3DFA A9 4C + LDX $5E ; CPU:$FDFC PRG:3DFC A6 5E + CPX #$03 ; CPU:$FDFE PRG:3DFE E0 03 + BCC SubCFD67_Loop6 ; CPU:$FE00 PRG:3E00 90 33 + LDA $39 ; CPU:$FE02 PRG:3E02 A5 39 + STA $19 ; CPU:$FE04 PRG:3E04 85 19 + LDA $38 ; CPU:$FE06 PRG:3E06 A5 38 + SEC ; CPU:$FE08 PRG:3E08 38 + SBC $79 ; CPU:$FE09 PRG:3E09 E5 79 + STA $6B ; CPU:$FE0B PRG:3E0B 85 6B + ASL $19 ; CPU:$FE0D PRG:3E0D 06 19 + ROL $6B ; CPU:$FE0F PRG:3E0F 26 6B + ASL $19 ; CPU:$FE11 PRG:3E11 06 19 + ROL $6B ; CPU:$FE13 PRG:3E13 26 6B + LDA $3C ; CPU:$FE15 PRG:3E15 A5 3C + STA $19 ; CPU:$FE17 PRG:3E17 85 19 + LDA $3B ; CPU:$FE19 PRG:3E19 A5 3B + SEC ; CPU:$FE1B PRG:3E1B 38 + SBC $78 ; CPU:$FE1C PRG:3E1C E5 78 + STA $6C ; CPU:$FE1E PRG:3E1E 85 6C + ASL $19 ; CPU:$FE20 PRG:3E20 06 19 + ROL $6C ; CPU:$FE22 PRG:3E22 26 6C + ASL $19 ; CPU:$FE24 PRG:3E24 06 19 + ROL $6C ; CPU:$FE26 PRG:3E26 26 6C + JSR SubCD9D9 ; CPU:$FE28 PRG:3E28 20 D9 D9 + LDA $74 ; CPU:$FE2B PRG:3E2B A5 74 + SEC ; CPU:$FE2D PRG:3E2D 38 + SBC #$02 ; CPU:$FE2E PRG:3E2E E9 02 + CLC ; CPU:$FE30 PRG:3E30 18 + ADC $0283 ; CPU:$FE31 PRG:3E31 6D 83 02 + LSR A ; CPU:$FE34 PRG:3E34 4A ; --------------------------------------------------------------------------- ; Label_FE35 @@ -12883,11 +12883,11 @@ Label_FDF7: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FE35: - STA $0283 ; FE35: 8D 83 02 - LDA #$00 ; FE38: A9 00 - STA $0282 ; FE3A: 8D 82 02 - RTS ; FE3D: 60 +SubCFD67_Loop6: + STA $0283 ; CPU:$FE35 PRG:3E35 8D 83 02 + LDA #$00 ; CPU:$FE38 PRG:3E38 A9 00 + STA $0282 ; CPU:$FE3A PRG:3E3A 8D 82 02 + RTS ; CPU:$FE3D PRG:3E3D 60 ; --------------------------------------------------------------------------- ; SubCFE3E @@ -12905,10 +12905,10 @@ Label_FE35: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFE3E: - LDX #$00 ; FE3E: A2 00 - TAY ; FE40: A8 - BPL Label_FE44 ; FE41: 10 01 - DEX ; FE43: CA + LDX #$00 ; CPU:$FE3E PRG:3E3E A2 00 + TAY ; CPU:$FE40 PRG:3E40 A8 + BPL SubCFE3E_Loop ; CPU:$FE41 PRG:3E41 10 01 + DEX ; CPU:$FE43 PRG:3E43 CA ; --------------------------------------------------------------------------- ; Label_FE44 @@ -12925,9 +12925,9 @@ SubCFE3E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FE44: - STX $1A ; FE44: 86 1A - LDX #$04 ; FE46: A2 04 +SubCFE3E_Loop: + STX $1A ; CPU:$FE44 PRG:3E44 86 1A + LDX #$04 ; CPU:$FE46 PRG:3E46 A2 04 ; --------------------------------------------------------------------------- ; Label_FE48 @@ -12944,13 +12944,13 @@ Label_FE44: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FE48: - ASL A ; FE48: 0A - ROL $1A ; FE49: 26 1A - DEX ; FE4B: CA - BNE Label_FE48 ; FE4C: D0 FA - CLC ; FE4E: 18 - RTS ; FE4F: 60 +SubCFE3E_OnNonzero: + ASL A ; CPU:$FE48 PRG:3E48 0A + ROL $1A ; CPU:$FE49 PRG:3E49 26 1A + DEX ; CPU:$FE4B PRG:3E4B CA + BNE SubCFE3E_OnNonzero ; CPU:$FE4C PRG:3E4C D0 FA + CLC ; CPU:$FE4E PRG:3E4E 18 + RTS ; CPU:$FE4F PRG:3E4F 60 ; --------------------------------------------------------------------------- ; SubCFE50 @@ -12968,14 +12968,14 @@ Label_FE48: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFE50: - JSR SubCFC24 ; FE50: 20 24 FC - JSR SubCFE3E ; FE53: 20 3E FE - ADC $92 ; FE56: 65 92 - STA $92 ; FE58: 85 92 - LDA $1A ; FE5A: A5 1A - ADC $90 ; FE5C: 65 90 - STA $90 ; FE5E: 85 90 - RTS ; FE60: 60 + JSR SubCFC24 ; CPU:$FE50 PRG:3E50 20 24 FC + JSR SubCFE3E ; CPU:$FE53 PRG:3E53 20 3E FE + ADC $92 ; CPU:$FE56 PRG:3E56 65 92 + STA $92 ; CPU:$FE58 PRG:3E58 85 92 + LDA $1A ; CPU:$FE5A PRG:3E5A A5 1A + ADC $90 ; CPU:$FE5C PRG:3E5C 65 90 + STA $90 ; CPU:$FE5E PRG:3E5E 85 90 + RTS ; CPU:$FE60 PRG:3E60 60 ; --------------------------------------------------------------------------- ; SubCFE61 @@ -12993,14 +12993,14 @@ SubCFE50: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFE61: - JSR SubCFC27 ; FE61: 20 27 FC - JSR SubCFE3E ; FE64: 20 3E FE - ADC $93 ; FE67: 65 93 - STA $93 ; FE69: 85 93 - LDA $1A ; FE6B: A5 1A - ADC $91 ; FE6D: 65 91 - STA $91 ; FE6F: 85 91 - RTS ; FE71: 60 + JSR SubCFC27 ; CPU:$FE61 PRG:3E61 20 27 FC + JSR SubCFE3E ; CPU:$FE64 PRG:3E64 20 3E FE + ADC $93 ; CPU:$FE67 PRG:3E67 65 93 + STA $93 ; CPU:$FE69 PRG:3E69 85 93 + LDA $1A ; CPU:$FE6B PRG:3E6B A5 1A + ADC $91 ; CPU:$FE6D PRG:3E6D 65 91 + STA $91 ; CPU:$FE6F PRG:3E6F 85 91 + RTS ; CPU:$FE71 PRG:3E71 60 ; --------------------------------------------------------------------------- ; SubCFE72 @@ -13018,18 +13018,18 @@ SubCFE61: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFE72: - LDA #$FF ; FE72: A9 FF - STA $0210 ; FE74: 8D 10 02 - JSR WaitForFrame ; FE77: 20 F3 C8 - LDA $1A ; FE7A: A5 1A - CMP #$0F ; FE7C: C9 0F - BEQ Label_FE8E ; FE7E: F0 0E - CMP #$0D ; FE80: C9 0D - BCC Label_FE8E ; FE82: 90 0A - LDX #$21 ; FE84: A2 21 - LDA #$24 ; FE86: A9 24 - JSR SubCFEB5 ; FE88: 20 B5 FE - JMP SubCFE97 ; FE8B: 4C 97 FE + LDA #$FF ; CPU:$FE72 PRG:3E72 A9 FF + STA $0210 ; CPU:$FE74 PRG:3E74 8D 10 02 + JSR WaitForFrame ; CPU:$FE77 PRG:3E77 20 F3 C8 + LDA $1A ; CPU:$FE7A PRG:3E7A A5 1A + CMP #$0F ; CPU:$FE7C PRG:3E7C C9 0F + BEQ SubCFE72_Loop ; CPU:$FE7E PRG:3E7E F0 0E + CMP #$0D ; CPU:$FE80 PRG:3E80 C9 0D + BCC SubCFE72_Loop ; CPU:$FE82 PRG:3E82 90 0A + LDX #$21 ; CPU:$FE84 PRG:3E84 A2 21 + LDA #$24 ; CPU:$FE86 PRG:3E86 A9 24 + JSR SubCFEB5 ; CPU:$FE88 PRG:3E88 20 B5 FE + JMP SubCFE97 ; CPU:$FE8B PRG:3E8B 4C 97 FE ; --------------------------------------------------------------------------- ; Label_FE8E @@ -13046,11 +13046,11 @@ SubCFE72: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FE8E: - LDX #$20 ; FE8E: A2 20 - LDA #$87 ; FE90: A9 87 - LDY #$9D ; FE92: A0 9D - JSR SubCC586 ; FE94: 20 86 C5 +SubCFE72_Loop: + LDX #$20 ; CPU:$FE8E PRG:3E8E A2 20 + LDA #$87 ; CPU:$FE90 PRG:3E90 A9 87 + LDY #$9D ; CPU:$FE92 PRG:3E92 A0 9D + JSR SubCC586 ; CPU:$FE94 PRG:3E94 20 86 C5 ; --------------------------------------------------------------------------- ; SubCFE97 @@ -13068,15 +13068,15 @@ Label_FE8E: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFE97: - LDA $1A ; FE97: A5 1A - CMP #$0F ; FE99: C9 0F - BEQ Label_FEAB ; FE9B: F0 0E - CMP #$0D ; FE9D: C9 0D - BCC Label_FEAB ; FE9F: 90 0A - LDX #$21 ; FEA1: A2 21 - LDA #$64 ; FEA3: A9 64 - JSR SubCFEB5 ; FEA5: 20 B5 FE - JMP SubCFEB2 ; FEA8: 4C B2 FE + LDA $1A ; CPU:$FE97 PRG:3E97 A5 1A + CMP #$0F ; CPU:$FE99 PRG:3E99 C9 0F + BEQ SubCFE97_Loop ; CPU:$FE9B PRG:3E9B F0 0E + CMP #$0D ; CPU:$FE9D PRG:3E9D C9 0D + BCC SubCFE97_Loop ; CPU:$FE9F PRG:3E9F 90 0A + LDX #$21 ; CPU:$FEA1 PRG:3EA1 A2 21 + LDA #$64 ; CPU:$FEA3 PRG:3EA3 A9 64 + JSR SubCFEB5 ; CPU:$FEA5 PRG:3EA5 20 B5 FE + JMP SubCFEB2 ; CPU:$FEA8 PRG:3EA8 4C B2 FE ; --------------------------------------------------------------------------- ; Label_FEAB @@ -13093,10 +13093,10 @@ SubCFE97: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FEAB: - LDX #$20 ; FEAB: A2 20 - LDA #$A7 ; FEAD: A9 A7 - JSR SubCC586 ; FEAF: 20 86 C5 +SubCFE97_Loop: + LDX #$20 ; CPU:$FEAB PRG:3EAB A2 20 + LDA #$A7 ; CPU:$FEAD PRG:3EAD A9 A7 + JSR SubCC586 ; CPU:$FEAF PRG:3EAF 20 86 C5 ; --------------------------------------------------------------------------- ; SubCFEB2 @@ -13114,7 +13114,7 @@ Label_FEAB: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFEB2: - JMP SetPpuScrollAndMask ; FEB2: 4C 9D C8 + JMP SetPpuScrollAndMask ; CPU:$FEB2 PRG:3EB2 4C 9D C8 ; --------------------------------------------------------------------------- ; SubCFEB5 @@ -13132,10 +13132,10 @@ SubCFEB2: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFEB5: - JSR SetPpuAddress ; FEB5: 20 C1 C8 - LDA #$9D ; FEB8: A9 9D - LDY #$0A ; FEBA: A0 0A - JMP SubCC599 ; FEBC: 4C 99 C5 + JSR SetPpuAddress ; CPU:$FEB5 PRG:3EB5 20 C1 C8 + LDA #$9D ; CPU:$FEB8 PRG:3EB8 A9 9D + LDY #$0A ; CPU:$FEBA PRG:3EBA A0 0A + JMP SubCC599 ; CPU:$FEBC PRG:3EBC 4C 99 C5 ; --------------------------------------------------------------------------- ; SubCFEBF @@ -13153,11 +13153,11 @@ SubCFEB5: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFEBF: - STA $1A ; FEBF: 85 1A - LDY #$14 ; FEC1: A0 14 - JSR SubCC8F5 ; FEC3: 20 F5 C8 - JSR SubCFE72 ; FEC6: 20 72 FE - LDX #$02 ; FEC9: A2 02 + STA $1A ; CPU:$FEBF PRG:3EBF 85 1A + LDY #$14 ; CPU:$FEC1 PRG:3EC1 A0 14 + JSR SubCC8F5 ; CPU:$FEC3 PRG:3EC3 20 F5 C8 + JSR SubCFE72 ; CPU:$FEC6 PRG:3EC6 20 72 FE + LDX #$02 ; CPU:$FEC9 PRG:3EC9 A2 02 ; --------------------------------------------------------------------------- ; Label_FECB @@ -13174,14 +13174,14 @@ SubCFEBF: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FECB: - STX $19 ; FECB: 86 19 - JSR SubCFF2B ; FECD: 20 2B FF - LDA $1A ; FED0: A5 1A - CMP #$02 ; FED2: C9 02 - BCS Label_FEDA ; FED4: B0 04 - LDA #$F0 ; FED6: A9 F0 - BNE Label_FF03 ; FED8: D0 29 +SubCFEBF_OnNonnegative: + STX $19 ; CPU:$FECB PRG:3ECB 86 19 + JSR SubCFF2B ; CPU:$FECD PRG:3ECD 20 2B FF + LDA $1A ; CPU:$FED0 PRG:3ED0 A5 1A + CMP #$02 ; CPU:$FED2 PRG:3ED2 C9 02 + BCS SubCFEBF_Loop ; CPU:$FED4 PRG:3ED4 B0 04 + LDA #$F0 ; CPU:$FED6 PRG:3ED6 A9 F0 + BNE SubCFEBF_Loop7 ; CPU:$FED8 PRG:3ED8 D0 29 ; --------------------------------------------------------------------------- ; Label_FEDA @@ -13198,11 +13198,11 @@ Label_FECB: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FEDA: - CMP #$06 ; FEDA: C9 06 - BCS Label_FEE2 ; FEDC: B0 04 - LDA #$20 ; FEDE: A9 20 - BNE Label_FF03 ; FEE0: D0 21 +SubCFEBF_Loop: + CMP #$06 ; CPU:$FEDA PRG:3EDA C9 06 + BCS SubCFEBF_Loop2 ; CPU:$FEDC PRG:3EDC B0 04 + LDA #$20 ; CPU:$FEDE PRG:3EDE A9 20 + BNE SubCFEBF_Loop7 ; CPU:$FEE0 PRG:3EE0 D0 21 ; --------------------------------------------------------------------------- ; Label_FEE2 @@ -13219,11 +13219,11 @@ Label_FEDA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FEE2: - CMP #$08 ; FEE2: C9 08 - BCS Label_FEEA ; FEE4: B0 04 - LDA #$38 ; FEE6: A9 38 - BNE Label_FF03 ; FEE8: D0 19 +SubCFEBF_Loop2: + CMP #$08 ; CPU:$FEE2 PRG:3EE2 C9 08 + BCS SubCFEBF_Loop3 ; CPU:$FEE4 PRG:3EE4 B0 04 + LDA #$38 ; CPU:$FEE6 PRG:3EE6 A9 38 + BNE SubCFEBF_Loop7 ; CPU:$FEE8 PRG:3EE8 D0 19 ; --------------------------------------------------------------------------- ; Label_FEEA @@ -13240,11 +13240,11 @@ Label_FEE2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FEEA: - CMP #$0B ; FEEA: C9 0B - BCS Label_FEF2 ; FEEC: B0 04 - LDA #$D0 ; FEEE: A9 D0 - BNE Label_FF03 ; FEF0: D0 11 +SubCFEBF_Loop3: + CMP #$0B ; CPU:$FEEA PRG:3EEA C9 0B + BCS SubCFEBF_Loop4 ; CPU:$FEEC PRG:3EEC B0 04 + LDA #$D0 ; CPU:$FEEE PRG:3EEE A9 D0 + BNE SubCFEBF_Loop7 ; CPU:$FEF0 PRG:3EF0 D0 11 ; --------------------------------------------------------------------------- ; Label_FEF2 @@ -13261,11 +13261,11 @@ Label_FEEA: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FEF2: - CMP #$0B ; FEF2: C9 0B - BNE Label_FEFA ; FEF4: D0 04 - LDA #$A0 ; FEF6: A9 A0 - BNE Label_FF03 ; FEF8: D0 09 +SubCFEBF_Loop4: + CMP #$0B ; CPU:$FEF2 PRG:3EF2 C9 0B + BNE SubCFEBF_Loop5 ; CPU:$FEF4 PRG:3EF4 D0 04 + LDA #$A0 ; CPU:$FEF6 PRG:3EF6 A9 A0 + BNE SubCFEBF_Loop7 ; CPU:$FEF8 PRG:3EF8 D0 09 ; --------------------------------------------------------------------------- ; Label_FEFA @@ -13282,17 +13282,17 @@ Label_FEF2: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FEFA: - CMP #$0C ; FEFA: C9 0C - BEQ Label_FF01 ; FEFC: F0 03 - LDA #$50 ; FEFE: A9 50 +SubCFEBF_Loop5: + CMP #$0C ; CPU:$FEFA PRG:3EFA C9 0C + BEQ SubCFEBF_Loop6 ; CPU:$FEFC PRG:3EFC F0 03 + LDA #$50 ; CPU:$FEFE PRG:3EFE A9 50 ; Overlapping instruction idiom: ; FF00: BIT $00A9 (2C A9 00) ; FF01: LDA #$00 (A9 00) Label_FF00: - .byte $2C ; FF00: 2C BIT absolute opcode -Label_FF01: - .byte $A9,$00 ; FF01-FF02: A9 00 LDA #$00 + .byte $2C ; FF00: 2C BIT absolute opcode ; CPU:$FF00 PRG:3F00 2C +SubCFEBF_Loop6: + .byte $A9,$00 ; FF01-FF02: A9 00 LDA #$00 ; CPU:$FF01 PRG:3F01 A9 00 ; --------------------------------------------------------------------------- ; Label_FF03 @@ -13309,25 +13309,25 @@ Label_FF01: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FF03: - ASL A ; FF03: 0A - STA APUTRIANGLETIMERLO ; FF04: 8D 0A 40 - LDA #$FF ; FF07: A9 FF - STA APUTRIANGLECTRL ; FF09: 8D 08 40 - LDA #$00 ; FF0C: A9 00 - ADC #$00 ; FF0E: 69 00 - STA APUTRIANGLETIMERHI ; FF10: 8D 0B 40 - LDY #$16 ; FF13: A0 16 - JSR SubCC8F5 ; FF15: 20 F5 C8 - JSR SubCFE72 ; FF18: 20 72 FE - LDA #$00 ; FF1B: A9 00 - STA APUTRIANGLECTRL ; FF1D: 8D 08 40 - LDY #$0F ; FF20: A0 0F - JSR SubCC8F5 ; FF22: 20 F5 C8 - LDX $19 ; FF25: A6 19 - DEX ; FF27: CA - BPL Label_FECB ; FF28: 10 A1 - RTS ; FF2A: 60 +SubCFEBF_Loop7: + ASL A ; CPU:$FF03 PRG:3F03 0A + STA APUTRIANGLETIMERLO ; CPU:$FF04 PRG:3F04 8D 0A 40 + LDA #$FF ; CPU:$FF07 PRG:3F07 A9 FF + STA APUTRIANGLECTRL ; CPU:$FF09 PRG:3F09 8D 08 40 + LDA #$00 ; CPU:$FF0C PRG:3F0C A9 00 + ADC #$00 ; CPU:$FF0E PRG:3F0E 69 00 + STA APUTRIANGLETIMERHI ; CPU:$FF10 PRG:3F10 8D 0B 40 + LDY #$16 ; CPU:$FF13 PRG:3F13 A0 16 + JSR SubCC8F5 ; CPU:$FF15 PRG:3F15 20 F5 C8 + JSR SubCFE72 ; CPU:$FF18 PRG:3F18 20 72 FE + LDA #$00 ; CPU:$FF1B PRG:3F1B A9 00 + STA APUTRIANGLECTRL ; CPU:$FF1D PRG:3F1D 8D 08 40 + LDY #$0F ; CPU:$FF20 PRG:3F20 A0 0F + JSR SubCC8F5 ; CPU:$FF22 PRG:3F22 20 F5 C8 + LDX $19 ; CPU:$FF25 PRG:3F25 A6 19 + DEX ; CPU:$FF27 PRG:3F27 CA + BPL SubCFEBF_OnNonnegative ; CPU:$FF28 PRG:3F28 10 A1 + RTS ; CPU:$FF2A PRG:3F2A 60 ; --------------------------------------------------------------------------- ; SubCFF2B @@ -13345,15 +13345,15 @@ Label_FF03: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- SubCFF2B: - JSR WaitForFrame ; FF2B: 20 F3 C8 - LDA $1A ; FF2E: A5 1A - CMP #$0F ; FF30: C9 0F - BEQ Label_FF3E ; FF32: F0 0A - CMP #$0D ; FF34: C9 0D - BCC Label_FF3E ; FF36: 90 06 - LDX #$21 ; FF38: A2 21 - LDA #$26 ; FF3A: A9 26 - BNE Label_FF42 ; FF3C: D0 04 + JSR WaitForFrame ; CPU:$FF2B PRG:3F2B 20 F3 C8 + LDA $1A ; CPU:$FF2E PRG:3F2E A5 1A + CMP #$0F ; CPU:$FF30 PRG:3F30 C9 0F + BEQ SubCFF2B_Loop ; CPU:$FF32 PRG:3F32 F0 0A + CMP #$0D ; CPU:$FF34 PRG:3F34 C9 0D + BCC SubCFF2B_Loop ; CPU:$FF36 PRG:3F36 90 06 + LDX #$21 ; CPU:$FF38 PRG:3F38 A2 21 + LDA #$26 ; CPU:$FF3A PRG:3F3A A9 26 + BNE SubCFF2B_Loop2 ; CPU:$FF3C PRG:3F3C D0 04 ; --------------------------------------------------------------------------- ; Label_FF3E @@ -13370,9 +13370,9 @@ SubCFF2B: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FF3E: - LDX #$20 ; FF3E: A2 20 - LDA #$88 ; FF40: A9 88 +SubCFF2B_Loop: + LDX #$20 ; CPU:$FF3E PRG:3F3E A2 20 + LDA #$88 ; CPU:$FF40 PRG:3F40 A9 88 ; --------------------------------------------------------------------------- ; Label_FF42 @@ -13389,11 +13389,11 @@ Label_FF3E: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FF42: - JSR SetPpuAddress ; FF42: 20 C1 C8 - LDX $1A ; FF45: A6 1A - LDY $FF85,X ; FF47: BC 85 FF - LDX #$05 ; FF4A: A2 05 +SubCFF2B_Loop2: + JSR SetPpuAddress ; CPU:$FF42 PRG:3F42 20 C1 C8 + LDX $1A ; CPU:$FF45 PRG:3F45 A6 1A + LDY $FF85,X ; CPU:$FF47 PRG:3F47 BC 85 FF + LDX #$05 ; CPU:$FF4A PRG:3F4A A2 05 ; --------------------------------------------------------------------------- ; Label_FF4C @@ -13410,13 +13410,13 @@ Label_FF42: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FF4C: - LDA $FFA5,Y ; FF4C: B9 A5 FF - BEQ Label_FF58 ; FF4F: F0 07 - STA PPUDATA ; FF51: 8D 07 20 - INY ; FF54: C8 - DEX ; FF55: CA - BPL Label_FF4C ; FF56: 10 F4 +SubCFF2B_OnNonnegative: + LDA $FFA5,Y ; CPU:$FF4C PRG:3F4C B9 A5 FF + BEQ SubCFF2B_Loop3 ; CPU:$FF4F PRG:3F4F F0 07 + STA PPUDATA ; CPU:$FF51 PRG:3F51 8D 07 20 + INY ; CPU:$FF54 PRG:3F54 C8 + DEX ; CPU:$FF55 PRG:3F55 CA + BPL SubCFF2B_OnNonnegative ; CPU:$FF56 PRG:3F56 10 F4 ; --------------------------------------------------------------------------- ; Label_FF58 @@ -13433,15 +13433,15 @@ Label_FF4C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FF58: - LDA $1A ; FF58: A5 1A - CMP #$0F ; FF5A: C9 0F - BEQ Label_FF68 ; FF5C: F0 0A - CMP #$0D ; FF5E: C9 0D - BCC Label_FF68 ; FF60: 90 06 - LDX #$21 ; FF62: A2 21 - LDA #$66 ; FF64: A9 66 - BNE Label_FF6C ; FF66: D0 04 +SubCFF2B_Loop3: + LDA $1A ; CPU:$FF58 PRG:3F58 A5 1A + CMP #$0F ; CPU:$FF5A PRG:3F5A C9 0F + BEQ SubCFF2B_Loop4 ; CPU:$FF5C PRG:3F5C F0 0A + CMP #$0D ; CPU:$FF5E PRG:3F5E C9 0D + BCC SubCFF2B_Loop4 ; CPU:$FF60 PRG:3F60 90 06 + LDX #$21 ; CPU:$FF62 PRG:3F62 A2 21 + LDA #$66 ; CPU:$FF64 PRG:3F64 A9 66 + BNE SubCFF2B_Loop5 ; CPU:$FF66 PRG:3F66 D0 04 ; --------------------------------------------------------------------------- ; Label_FF68 @@ -13458,9 +13458,9 @@ Label_FF58: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FF68: - LDX #$20 ; FF68: A2 20 - LDA #$A8 ; FF6A: A9 A8 +SubCFF2B_Loop4: + LDX #$20 ; CPU:$FF68 PRG:3F68 A2 20 + LDA #$A8 ; CPU:$FF6A PRG:3F6A A9 A8 ; --------------------------------------------------------------------------- ; Label_FF6C @@ -13477,11 +13477,11 @@ Label_FF68: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FF6C: - JSR SetPpuAddress ; FF6C: 20 C1 C8 - LDX $1A ; FF6F: A6 1A - LDY $FF95,X ; FF71: BC 95 FF - LDX #$05 ; FF74: A2 05 +SubCFF2B_Loop5: + JSR SetPpuAddress ; CPU:$FF6C PRG:3F6C 20 C1 C8 + LDX $1A ; CPU:$FF6F PRG:3F6F A6 1A + LDY $FF95,X ; CPU:$FF71 PRG:3F71 BC 95 FF + LDX #$05 ; CPU:$FF74 PRG:3F74 A2 05 ; --------------------------------------------------------------------------- ; Label_FF76 @@ -13498,13 +13498,13 @@ Label_FF6C: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FF76: - LDA $FFA5,Y ; FF76: B9 A5 FF - BEQ Label_FF82 ; FF79: F0 07 - STA PPUDATA ; FF7B: 8D 07 20 - INY ; FF7E: C8 - DEX ; FF7F: CA - BPL Label_FF76 ; FF80: 10 F4 +SubCFF2B_OnNonnegative2: + LDA $FFA5,Y ; CPU:$FF76 PRG:3F76 B9 A5 FF + BEQ SubCFF2B_Loop6 ; CPU:$FF79 PRG:3F79 F0 07 + STA PPUDATA ; CPU:$FF7B PRG:3F7B 8D 07 20 + INY ; CPU:$FF7E PRG:3F7E C8 + DEX ; CPU:$FF7F PRG:3F7F CA + BPL SubCFF2B_OnNonnegative2 ; CPU:$FF80 PRG:3F80 10 F4 ; --------------------------------------------------------------------------- ; Label_FF82 @@ -13521,21 +13521,21 @@ Label_FF76: ; Clobbers: ; A, X, Y, and processor flags as used by the instructions below. ; --------------------------------------------------------------------------- -Label_FF82: - JMP SetPpuScrollAndMask ; FF82: 4C 9D C8 +SubCFF2B_Loop6: + JMP SetPpuScrollAndMask ; CPU:$FF82 PRG:3F82 4C 9D C8 ; FF85PpuValueTable: 117-byte table accessed two ways: ; LDY $FF85,X -> entry at offset X (used at $FF47) ; LDY $FF95,X -> entry at offset X+16 (used at $FF71, overlaps the same region) ; Index comes from $1A. Both routines set PPU address then write 6 bytes. FF85PpuValueTable: - .byte $00,$06,$0c,$12,$18,$00,$12,$18,$1e,$24,$30,$46,$36,$47,$46,$4d ; FF85-FF94 - .byte $06,$46,$46,$46,$46,$18,$42,$42,$46,$2a,$46,$46,$3c,$46,$47,$46 ; FF95-FFA4 - .byte $0d,$18,$1e,$0b,$15,$0e,$0b,$18,$10,$0e,$22,$9d,$9d,$19,$0a,$1b ; FFA5-FFB4 - .byte $9d,$9d,$0b,$12,$1b,$0d,$12,$0e,$0e,$0a,$10,$15,$0e,$9d,$9d,$9d ; FFB5-FFC4 - .byte $18,$0b,$9d,$9d,$20,$0a,$1d,$0e,$1b,$9d,$11,$0a,$23,$0a,$1b,$0d ; FFC5-FFD4 - .byte $0b,$1e,$17,$14,$0e,$1b,$9d,$11,$18,$15,$0e,$9d,$9d,$18,$1e,$1d ; FFD5-FFE4 - .byte $9d,$9d,$9d,$1d,$1b,$22,$00,$20,$12,$17,$17,$0e,$1b,$9d,$20,$12 ; FFE5-FFF4 - .byte $17,$0d,$9d,$ff,$ff ; FFF5-FFF9 - .word NmiHandler ; FFFA-FFFB: A6 C0 NMI vector -> $C0A6 - .word Reset ; FFFC-FFFD: 00 C0 RESET vector -> $C000 - .word IrqLoop ; FFFE-FFFF: C4 C0 IRQ vector -> $C0C4 + .byte $00,$06,$0c,$12,$18,$00,$12,$18,$1e,$24,$30,$46,$36,$47,$46,$4d ; FF85-FF94 ; CPU:$FF85 PRG:3F85 00 06 0C 12 18 00 12 18 1E 24 30 46 + .byte $06,$46,$46,$46,$46,$18,$42,$42,$46,$2a,$46,$46,$3c,$46,$47,$46 ; FF95-FFA4 ; CPU:$FF95 PRG:3F95 06 46 46 46 46 18 42 42 46 2A 46 46 + .byte $0d,$18,$1e,$0b,$15,$0e,$0b,$18,$10,$0e,$22,$9d,$9d,$19,$0a,$1b ; FFA5-FFB4 ; CPU:$FFA5 PRG:3FA5 0D 18 1E 0B 15 0E 0B 18 10 0E 22 9D + .byte $9d,$9d,$0b,$12,$1b,$0d,$12,$0e,$0e,$0a,$10,$15,$0e,$9d,$9d,$9d ; FFB5-FFC4 ; CPU:$FFB5 PRG:3FB5 9D 9D 0B 12 1B 0D 12 0E 0E 0A 10 15 + .byte $18,$0b,$9d,$9d,$20,$0a,$1d,$0e,$1b,$9d,$11,$0a,$23,$0a,$1b,$0d ; FFC5-FFD4 ; CPU:$FFC5 PRG:3FC5 18 0B 9D 9D 20 0A 1D 0E 1B 9D 11 0A + .byte $0b,$1e,$17,$14,$0e,$1b,$9d,$11,$18,$15,$0e,$9d,$9d,$18,$1e,$1d ; FFD5-FFE4 ; CPU:$FFD5 PRG:3FD5 0B 1E 17 14 0E 1B 9D 11 18 15 0E 9D + .byte $9d,$9d,$9d,$1d,$1b,$22,$00,$20,$12,$17,$17,$0e,$1b,$9d,$20,$12 ; FFE5-FFF4 ; CPU:$FFE5 PRG:3FE5 9D 9D 9D 1D 1B 22 00 20 12 17 17 0E + .byte $17,$0d,$9d,$ff,$ff ; FFF5-FFF9 ; CPU:$FFF5 PRG:3FF5 17 0D 9D FF FF + .word NmiHandler ; FFFA-FFFB: A6 C0 NMI vector -> $C0A6 ; CPU:$FFFA PRG:3FFA A6 C0 + .word Reset ; FFFC-FFFD: 00 C0 RESET vector -> $C000 ; CPU:$FFFC PRG:3FFC 00 C0 + .word IrqLoop ; FFFE-FFFF: C4 C0 IRQ vector -> $C0C4 ; CPU:$FFFE PRG:3FFE C4 C0 diff --git a/_wip/NROM/Golf (JU)/prg.s.pass0 b/NROM/Golf (JU)/prg.s.pass0 similarity index 100% rename from _wip/NROM/Golf (JU)/prg.s.pass0 rename to NROM/Golf (JU)/prg.s.pass0 diff --git a/_wip/NROM/Golf (JU)/prg.s.pass1-complete b/NROM/Golf (JU)/prg.s.pass1-complete similarity index 100% rename from _wip/NROM/Golf (JU)/prg.s.pass1-complete rename to NROM/Golf (JU)/prg.s.pass1-complete diff --git a/_wip/NROM/Golf (JU)/prg.s.pass2-batch1 b/NROM/Golf (JU)/prg.s.pass2-batch1 similarity index 100% rename from _wip/NROM/Golf (JU)/prg.s.pass2-batch1 rename to NROM/Golf (JU)/prg.s.pass2-batch1 diff --git a/_wip/NROM/Golf (JU)/prg.s.pass2-batch2 b/NROM/Golf (JU)/prg.s.pass2-batch2 similarity index 100% rename from _wip/NROM/Golf (JU)/prg.s.pass2-batch2 rename to NROM/Golf (JU)/prg.s.pass2-batch2 diff --git a/_wip/NROM/Golf (JU)/prg.s.pass2-batch2-verified b/NROM/Golf (JU)/prg.s.pass2-batch2-verified similarity index 100% rename from _wip/NROM/Golf (JU)/prg.s.pass2-batch2-verified rename to NROM/Golf (JU)/prg.s.pass2-batch2-verified diff --git a/_wip/NROM/Golf (JU)/prg_pass1.s b/NROM/Golf (JU)/prg_pass1.s similarity index 100% rename from _wip/NROM/Golf (JU)/prg_pass1.s rename to NROM/Golf (JU)/prg_pass1.s diff --git a/_wip/NROM/Golf (JU)/prg_pass1.s.pass1-complete b/NROM/Golf (JU)/prg_pass1.s.pass1-complete similarity index 100% rename from _wip/NROM/Golf (JU)/prg_pass1.s.pass1-complete rename to NROM/Golf (JU)/prg_pass1.s.pass1-complete diff --git a/_wip/NROM/Golf (JU)/rom.nes b/NROM/Golf (JU)/rom.nes similarity index 100% rename from _wip/NROM/Golf (JU)/rom.nes rename to NROM/Golf (JU)/rom.nes diff --git a/NROM/Golf (JU)/routinemap.tsv b/NROM/Golf (JU)/routinemap.tsv new file mode 100644 index 0000000..7f69258 --- /dev/null +++ b/NROM/Golf (JU)/routinemap.tsv @@ -0,0 +1,1022 @@ +C000 Reset +C007 WaitForFirstVblank +C041 ClearStartupRamLoop +C05D CopyStartupTableLoop +C087 ReadPpuBlocks +C08D ReadPpuBlockBytes +C08F ReadPpuBlockByteLoop +C09B DiscardPpuBlockByteLoop +C0A6 NmiHandler +C0B8 NmiEpilogue +C0C4 IrqLoop +C0C7 InitializeRuntimeState +C0E8 SubCC0E8 +C136 SubCC136 +C305 SubCC305 +C380 SubCC380 +C383 SubCC383 +C3B1 SubCC3B1 +C41B SubCC41B +C484 SubCC484 +C4CB SubCC4CB +C57B StrobeAndReadController +C586 SubCC586 +C589 SubCC589 +C593 SubCC593 +C599 SubCC599 +C5A0 GameplayInputNmiCallback +C5B9 ScanDirectionalSerialBits +C5C3 StoreDirectionalInputIndex +C5CD HandleClubSelectionInput +C5ED WrapClubSelectionIndex +C5F5 RefreshClubSelectionDisplay +C600 ResetDirectionalRepeatLatch +C604 BuildGameplayOam +C62D HandleAimAdjustmentInput +C640 InitializeAimOamLoop +C642 UpdateAimOamEntryLoop +C650 PositionAimOamEntries +C67E HandleAimDirectionChange +C686 InitializeAimDirection +C69F DecrementAimAngle +C6A3 StoreWrappedAimAngle +C6C8 GameplayDisplayNmiCallback +C6D4 ShowAnimationMarker +C6D8 SelectAnimationMarkerTile +C6DA WriteAnimationMarkerOam +C70C SelectSecondaryMarkerTile +C70E WriteSecondaryMarkerOam +C71B FinishGameplayNmi +C721 SubCC721 +C752 SubCC752 +C84D SubCC84D +C881 WaitForFramePreservingY +C888 InstallNmiCallback +C894 SpriteOffsetForController +C89A SubCC89A +C89D SetPpuScrollAndMask +C8B5 RestorePpuCtrlShadow +C8BB MultiplyABy32 +C8BC MultiplyBy32 +C8C1 SetPpuAddress +C8C8 ClearNametableAndOam +C8E8 ClearOamShadowLoop +C8F3 WaitForFrame +C8F5 SubCC8F5 +C907 SubCC907 +C909 WaitFrameGroups +C916 SubCC916 +C946 SubCC946 +CA30 SubCCA30 +CA53 SubCCA53 +CA55 SubCCA55 +CA70 SubCCA70 +CA8E SubCCA8E +CA9D SubCCA9D +CAA8 RefreshSequenceSpriteLayout +CB0F SubCCB0F +CB60 SubCCB60 +CB63 SubCCB63 +CB97 SubCCB97 +CBCB SubCCBCB +CBE6 SubCCBE6 +CBEA ParseSpriteLayout +CC15 SpriteLayoutGroupMap +CC24 SpriteLayoutPointerLo +CC31 SpriteLayoutPointerHi +CC3E AltSpriteLayoutPointerLo +CC44 AltSpriteLayoutPointerHi +CC4A SpriteLayoutXOffsets +CC5F SpriteLayoutYOffsets +CC74 SpriteLayoutLists +CE64 SubCCE64 +CF87 DeriveAimAngleNibble +CF8E InitializeSequenceBounds +CF9D WaitForSequenceStart +CFAA GameplaySequenceNmiCallback +CFC0 UpdateSequenceInput +CFC3 GameplaySequenceNmiContinue1 +CFEA PollSequenceActionButton +D021 AdvanceSequenceToNextParity +D025 InitializeSequenceReturnPhase +D039 AdvanceSequencePosition +D03E GameplaySequenceNmiContinue2 +D08A GameplaySequenceNmiContinue3 +D0A6 JumpToSelectSequenceFrame +D0A9 SelectSequenceFrame +D0B5 FindForwardSequenceFrame +D0BF ApplyForwardSequenceFrame +D0CC SelectTerminalSequenceFrame +D0CE FindTerminalSequenceFrame +D0D8 ApplyTerminalSequenceFrame +D0E0 SelectReturnSequenceFrame +D0EC FindReturnSequenceFrame +D0F8 ClampReturnSequenceFrame +D10A FindFinalSequenceFrame +D121 FinishSequenceNmi +D124 ForwardSequenceThresholds +D12A TerminalSequenceThresholds +D12D ReturnSequenceThresholds +D135 FinalSequenceThresholds +D138 ForwardSequenceFrameLimits +D13E SubCD13E +D21D SubCD21D +D2C2 SubCD2C2 +D2EE SubCD2EE +D2F8 SubCD2F8 +D3B7 SubCD3B7 +D422 SubCD422 +D425 SubCD425 +D453 SubCD453 +D48B SubCD48B +D4BB SubCD4BB +D4F1 SubCD4F1 +D4F2 SubCD4F2 +D4F7 SubCD4F7 +D505 SubCD505 +D515 SubCD515 +D65A SubCD65A +D65D SubCD65D +D663 SubCD663 +D6F4 BitMaskTable +D6FC SubCD6FC +D7F5 SubCD7F5 +D8ED SubCD8ED +D906 SubCD906 +D988 D988ScoreAdjustTable +D9B1 SubCD9B1 +D9B9 SubCD9B9 +D9C7 SubCD9C7 +D9D9 SubCD9D9 +D9FF SubCD9FF +DA1C SubCDA1C +DA1D SubCDA1D +DA1E SubCDA1E +DA23 InitializeTitleAndGame +DA2F SubCDA2F +DA4C SubCDA4C +DAA2 TitleAndAttractNmi +DADA StoreMenuSelection +DADC LatchMenuInput +DAE6 ReleaseMenuInputLatch +DB0D MenuCursorYPositions +DB10 SubCDB10 +DD78 DecodeCoursePackage +DE1A SubCDE1A +DE35 SubCDE35 +DE5E ParseHoleObjectPackage +DF03 ParseHoleObjectList +DF9B SubCDF9B +DFB8 SubCDFB8 +E07C SubCE07C +E0BE SubCE0BE +E0CD SubCE0CD +E1A1 SubCE1A1 +E1AB SubCE1AB +E1B8 GameplayPpuPalette +E282 ObjectSpanStartZero +E283 ObjectSpanEnds +E2A2 ObjectTileTable +E2EB ObjectXOffsetTable +E334 ObjectYOffsetTable +E37D FixedObjectSpanBounds +E384 FixedObjectXOffsets +E3A2 FixedObjectTileTable +E3C0 FixedObjectAttributeTable +E3FC SubCE3FC +E48B SubCE48B +E48D SubCE48D +E52F SubCE52F +E559 SubCE559 +E585 SubCE585 +E6B0 SubCE6B0 +E6C3 CourseLayoutPointerLo +E6D5 CourseLayoutPointerHi +F906 SubCF906 +F931 SubCF931 +F953 SubCF953 +F983 SubCF983 +F99E SubCF99E +FA35 NormalizeCourseGrid +FA8C SubCFA8C +FA90 SubCFA90 +FB25 SubCFB25 +FBA4 StoreSpecialGridCoordinate +FBAE NormalizeStatePair +FBB2 NormalizeStateEntry +FC24 SubCFC24 +FC27 SubCFC27 +FC66 CompareObjectState +FC6E GetGridObjectIndex +FC78 SubCFC78 +FC98 UploadGeneratedCourseGrid +FCE6 SubCFCE6 +FCF1 SubCFCF1 +FD0A PpuTableFd0a +FD12 SubCFD12 +FD67 SubCFD67 +FE3E SubCFE3E +FE50 SubCFE50 +FE61 SubCFE61 +FE72 SubCFE72 +FE97 SubCFE97 +FEB2 SubCFEB2 +FEB5 SubCFEB5 +FEBF SubCFEBF +FF2B SubCFF2B +FF85 FF85PpuValueTable +C000 Reset +C007 WaitForFirstVblank +C041 ClearStartupRamLoop +C05D CopyStartupTableLoop +C087 ReadPpuBlocks +C08D ReadPpuBlockBytes +C08F ReadPpuBlockByteLoop +C09B DiscardPpuBlockByteLoop +C0A6 NmiHandler +C0B8 NmiEpilogue +C0C4 IrqLoop +C0C7 InitializeRuntimeState +C0E8 SubCC0E8 +C136 SubCC136 +C305 SubCC305 +C380 SubCC380 +C383 SubCC383 +C3B1 SubCC3B1 +C41B SubCC41B +C484 SubCC484 +C4CB SubCC4CB +C57B StrobeAndReadController +C586 SubCC586 +C589 SubCC589 +C593 SubCC593 +C599 SubCC599 +C5A0 GameplayInputNmiCallback +C5B9 ScanDirectionalSerialBits +C5C3 StoreDirectionalInputIndex +C5CD HandleClubSelectionInput +C5ED WrapClubSelectionIndex +C5F5 RefreshClubSelectionDisplay +C600 ResetDirectionalRepeatLatch +C604 BuildGameplayOam +C62D HandleAimAdjustmentInput +C640 InitializeAimOamLoop +C642 UpdateAimOamEntryLoop +C650 PositionAimOamEntries +C67E HandleAimDirectionChange +C686 InitializeAimDirection +C69F DecrementAimAngle +C6A3 StoreWrappedAimAngle +C6C8 GameplayDisplayNmiCallback +C6D4 ShowAnimationMarker +C6D8 SelectAnimationMarkerTile +C6DA WriteAnimationMarkerOam +C70C SelectSecondaryMarkerTile +C70E WriteSecondaryMarkerOam +C71B FinishGameplayNmi +C721 SubCC721 +C752 SubCC752 +C84D SubCC84D +C881 WaitForFramePreservingY +C888 InstallNmiCallback +C894 SpriteOffsetForController +C89A SubCC89A +C89D SetPpuScrollAndMask +C8B5 RestorePpuCtrlShadow +C8BB MultiplyABy32 +C8BC MultiplyBy32 +C8C1 SetPpuAddress +C8C8 ClearNametableAndOam +C8E8 ClearOamShadowLoop +C8F3 WaitForFrame +C8F5 SubCC8F5 +C907 SubCC907 +C909 WaitFrameGroups +C916 SubCC916 +C946 SubCC946 +CA30 SubCCA30 +CA53 SubCCA53 +CA55 SubCCA55 +CA70 SubCCA70 +CA8E SubCCA8E +CA9D SubCCA9D +CAA8 RefreshSequenceSpriteLayout +CB0F SubCCB0F +CB60 SubCCB60 +CB63 SubCCB63 +CB97 SubCCB97 +CBCB SubCCBCB +CBE6 SubCCBE6 +CBEA ParseSpriteLayout +CC15 SpriteLayoutGroupMap +CC24 SpriteLayoutPointerLo +CC31 SpriteLayoutPointerHi +CC3E AltSpriteLayoutPointerLo +CC44 AltSpriteLayoutPointerHi +CC4A SpriteLayoutXOffsets +CC5F SpriteLayoutYOffsets +CC74 SpriteLayoutLists +CE64 SubCCE64 +CF87 DeriveAimAngleNibble +CF8E InitializeSequenceBounds +CF9D WaitForSequenceStart +CFAA GameplaySequenceNmiCallback +CFC0 UpdateSequenceInput +CFC3 GameplaySequenceNmiContinue1 +CFEA PollSequenceActionButton +D021 AdvanceSequenceToNextParity +D025 InitializeSequenceReturnPhase +D039 AdvanceSequencePosition +D03E GameplaySequenceNmiContinue2 +D08A GameplaySequenceNmiContinue3 +D0A6 JumpToSelectSequenceFrame +D0A9 SelectSequenceFrame +D0B5 FindForwardSequenceFrame +D0BF ApplyForwardSequenceFrame +D0CC SelectTerminalSequenceFrame +D0CE FindTerminalSequenceFrame +D0D8 ApplyTerminalSequenceFrame +D0E0 SelectReturnSequenceFrame +D0EC FindReturnSequenceFrame +D0F8 ClampReturnSequenceFrame +D10A FindFinalSequenceFrame +D121 FinishSequenceNmi +D124 ForwardSequenceThresholds +D12A TerminalSequenceThresholds +D12D ReturnSequenceThresholds +D135 FinalSequenceThresholds +D138 ForwardSequenceFrameLimits +D13E SubCD13E +D21D SubCD21D +D2C2 SubCD2C2 +D2EE SubCD2EE +D2F8 SubCD2F8 +D3B7 SubCD3B7 +D422 SubCD422 +D425 SubCD425 +D453 SubCD453 +D48B SubCD48B +D4BB SubCD4BB +D4F1 SubCD4F1 +D4F2 SubCD4F2 +D4F7 SubCD4F7 +D505 SubCD505 +D515 SubCD515 +D65A SubCD65A +D65D SubCD65D +D663 SubCD663 +D6F4 BitMaskTable +D6FC SubCD6FC +D7F5 SubCD7F5 +D8ED SubCD8ED +D906 SubCD906 +D988 D988ScoreAdjustTable +D9B1 SubCD9B1 +D9B9 SubCD9B9 +D9C7 SubCD9C7 +D9D9 SubCD9D9 +D9FF SubCD9FF +DA1C SubCDA1C +DA1D SubCDA1D +DA1E SubCDA1E +DA23 InitializeTitleAndGame +DA2F SubCDA2F +DA4C SubCDA4C +DAA2 TitleAndAttractNmi +DADA StoreMenuSelection +DADC LatchMenuInput +DAE6 ReleaseMenuInputLatch +DB0D MenuCursorYPositions +DB10 SubCDB10 +DD78 DecodeCoursePackage +DE1A SubCDE1A +DE35 SubCDE35 +DE5E ParseHoleObjectPackage +DF03 ParseHoleObjectList +DF9B SubCDF9B +DFB8 SubCDFB8 +E07C SubCE07C +E0BE SubCE0BE +E0CD SubCE0CD +E1A1 SubCE1A1 +E1AB SubCE1AB +E1B8 GameplayPpuPalette +E282 ObjectSpanStartZero +E283 ObjectSpanEnds +E2A2 ObjectTileTable +E2EB ObjectXOffsetTable +E334 ObjectYOffsetTable +E37D FixedObjectSpanBounds +E384 FixedObjectXOffsets +E3A2 FixedObjectTileTable +E3C0 FixedObjectAttributeTable +E3FC SubCE3FC +E48B SubCE48B +E48D SubCE48D +E52F SubCE52F +E559 SubCE559 +E585 SubCE585 +E6B0 SubCE6B0 +E6C3 CourseLayoutPointerLo +E6D5 CourseLayoutPointerHi +F906 SubCF906 +F931 SubCF931 +F953 SubCF953 +F983 SubCF983 +F99E SubCF99E +FA35 NormalizeCourseGrid +FA8C SubCFA8C +FA90 SubCFA90 +FB25 SubCFB25 +FBA4 StoreSpecialGridCoordinate +FBAE NormalizeStatePair +FBB2 NormalizeStateEntry +FC24 SubCFC24 +FC27 SubCFC27 +FC66 CompareObjectState +FC6E GetGridObjectIndex +FC78 SubCFC78 +FC98 UploadGeneratedCourseGrid +FCE6 SubCFCE6 +FCF1 SubCFCF1 +FD0A PpuTableFd0a +FD12 SubCFD12 +FD67 SubCFD67 +FE3E SubCFE3E +FE50 SubCFE50 +FE61 SubCFE61 +FE72 SubCFE72 +FE97 SubCFE97 +FEB2 SubCFEB2 +FEB5 SubCFEB5 +FEBF SubCFEBF +FF2B SubCFF2B +FF85 FF85PpuValueTable + +# ---- derived internal branch-target names ---- +C000 Reset +C007 WaitForFirstVblank +C041 ClearStartupRamLoop +C04F ClearStartupRamLoop_Loop +C055 ClearStartupRamLoop_Loop2 +C05D CopyStartupTableLoop +C087 ReadPpuBlocks +C08D ReadPpuBlockBytes +C08F ReadPpuBlockByteLoop +C09B DiscardPpuBlockByteLoop +C0A6 NmiHandler +C0B8 NmiEpilogue +C0C4 IrqLoop +C0C7 InitializeRuntimeState +C0E8 SubCC0E8 +C136 SubCC136 +C14A SubCC136_Loop +C160 SubCC136_Loop2 +C17C SubCC136_Loop3 +C17E SubCC136_Loop4 +C182 SubCC136_Loop5 +C184 SubCC136_Loop6 +C192 SubCC136_Loop7 +C199 SubCC136_Loop8 +C1BC SubCC136_Loop9 +C1CA SubCC136_Loop10 +C1CD SubCC136_Loop11 +C1D1 SubCC136_Loop12 +C1EF SubCC136_Loop13 +C238 SubCC136_Loop14 +C240 SubCC136_Loop15 +C26C SubCC136_Loop16 +C27A SubCC136_Loop17 +C286 SubCC136_Loop18 +C2BA SubCC136_Loop19 +C2BF SubCC136_Loop20 +C2C2 SubCC136_Loop21 +C2D9 SubCC136_Loop22 +C305 SubCC305 +C336 SubCC305_Loop +C33E SubCC305_Loop2 +C369 SubCC305_Loop3 +C380 SubCC380 +C383 SubCC383 +C39F SubCC383_Loop +C3AE SubCC383_Loop2 +C3B1 SubCC3B1 +C3BF SubCC3B1_Loop +C3FF SubCC3B1_OnNonzero +C41B SubCC41B +C44E SubCC41B_Loop +C481 SubCC41B_Loop2 +C484 SubCC484 +C49C SubCC484_Loop +C4A7 SubCC484_Loop2 +C4B8 SubCC484_Loop3 +C4BA SubCC484_Loop4 +C4CB SubCC4CB +C4DC SubCC4CB_Loop +C4EB SubCC4CB_Loop2 +C4F7 SubCC4CB_Loop3 +C501 SubCC4CB_Loop4 +C504 SubCC4CB_Loop5 +C517 SubCC4CB_Loop6 +C519 SubCC4CB_Loop7 +C51F SubCC4CB_Loop8 +C527 SubCC4CB_OnNonnegative +C542 SubCC4CB_Loop9 +C563 SubCC4CB_Loop10 +C575 SubCC4CB_Loop11 +C57B StrobeAndReadController +C586 SubCC586 +C589 SubCC589 +C593 SubCC593 +C599 SubCC599 +C5A0 GameplayInputNmiCallback +C5B9 ScanDirectionalSerialBits +C5C3 StoreDirectionalInputIndex +C5CD HandleClubSelectionInput +C5ED WrapClubSelectionIndex +C5F5 RefreshClubSelectionDisplay +C600 ResetDirectionalRepeatLatch +C604 BuildGameplayOam +C62D HandleAimAdjustmentInput +C640 InitializeAimOamLoop +C642 UpdateAimOamEntryLoop +C650 PositionAimOamEntries +C67E HandleAimDirectionChange +C686 InitializeAimDirection +C69F DecrementAimAngle +C6A3 StoreWrappedAimAngle +C6C8 GameplayDisplayNmiCallback +C6D4 ShowAnimationMarker +C6D8 SelectAnimationMarkerTile +C6DA WriteAnimationMarkerOam +C70C SelectSecondaryMarkerTile +C70E WriteSecondaryMarkerOam +C71B FinishGameplayNmi +C721 SubCC721 +C72F SubCC721_Loop +C73F SubCC721_Loop2 +C751 SubCC721_Loop3 +C752 SubCC752 +C84D SubCC84D +C872 SubCC84D_OnCarryClear +C881 WaitForFramePreservingY +C888 InstallNmiCallback +C894 SpriteOffsetForController +C89A SubCC89A +C89D SetPpuScrollAndMask +C8B5 RestorePpuCtrlShadow +C8BB MultiplyABy32 +C8BC MultiplyBy32 +C8C1 SetPpuAddress +C8C8 ClearNametableAndOam +C8D9 ClearNametableAndOam_OnNonzero +C8E8 ClearOamShadowLoop +C8EC ClearOamShadowLoop_OnNonzero +C8F3 WaitForFrame +C8F5 SubCC8F5 +C8FB SubCC8F5_OnZero +C906 SubCC8F5_Loop +C907 SubCC907 +C909 WaitFrameGroups +C916 SubCC916 +C931 SubCC916_Loop +C935 SubCC916_Loop2 +C945 SubCC916_Loop3 +C946 SubCC946 +C96B SubCC946_Loop +C971 SubCC946_Loop2 +C998 SubCC946_Loop3 +C9AB SubCC946_Loop4 +C9BA SubCC946_Loop5 +C9E6 SubCC946_Loop6 +CA06 SubCC946_Loop7 +CA0F SubCC946_Loop8 +CA26 SubCC946_Loop9 +CA30 SubCCA30 +CA53 SubCCA53 +CA55 SubCCA55 +CA60 SubCCA55_Loop +CA70 SubCCA70 +CA78 SubCCA70_Loop +CA7B SubCCA70_Loop2 +CA85 SubCCA70_Loop3 +CA88 SubCCA70_Loop4 +CA8E SubCCA8E +CA9C SubCCA8E_Loop +CA9D SubCCA9D +CAA1 SubCCA9D_OnNonnegative +CAA8 RefreshSequenceSpriteLayout +CAE8 RefreshSequenceSpriteLayout_Loop +CAEB RefreshSequenceSpriteLayout_Loop2 +CAF9 RefreshSequenceSpriteLayout_OnCarryClear +CB0C RefreshSequenceSpriteLayout_Loop3 +CB0F SubCCB0F +CB2C SubCCB0F_Loop +CB3A SubCCB0F_OnCarryClear +CB60 SubCCB60 +CB63 SubCCB63 +CB6E SubCCB63_OnCarryClear +CB97 SubCCB97 +CBA2 SubCCB97_OnCarryClear +CBCB SubCCBCB +CBDE SubCCBCB_Loop +CBE6 SubCCBE6 +CBEA ParseSpriteLayout +CC0F ParseSpriteLayout_Loop +CC15 SpriteLayoutGroupMap +CC24 SpriteLayoutPointerLo +CC31 SpriteLayoutPointerHi +CC3E AltSpriteLayoutPointerLo +CC44 AltSpriteLayoutPointerHi +CC4A SpriteLayoutXOffsets +CC5F SpriteLayoutYOffsets +CC74 SpriteLayoutLists +CE64 SubCCE64 +CEBB SubCCE64_Loop +CEF3 SubCCE64_Loop2 +CF03 SubCCE64_Loop3 +CF2F SubCCE64_Loop4 +CF48 SubCCE64_Loop5 +CF51 SubCCE64_OnZero +CF87 DeriveAimAngleNibble +CF8E InitializeSequenceBounds +CF9D WaitForSequenceStart +CFAA GameplaySequenceNmiCallback +CFC0 UpdateSequenceInput +CFC3 GameplaySequenceNmiContinue1 +CFEA PollSequenceActionButton +D021 AdvanceSequenceToNextParity +D025 InitializeSequenceReturnPhase +D039 AdvanceSequencePosition +D03E GameplaySequenceNmiContinue2 +D048 GameplaySequenceNmiContinue2_Loop +D064 GameplaySequenceNmiContinue2_Loop2 +D085 GameplaySequenceNmiContinue2_Loop3 +D08A GameplaySequenceNmiContinue3 +D098 GameplaySequenceNmiContinue3_Loop +D0A6 JumpToSelectSequenceFrame +D0A9 SelectSequenceFrame +D0B5 FindForwardSequenceFrame +D0BF ApplyForwardSequenceFrame +D0CC SelectTerminalSequenceFrame +D0CE FindTerminalSequenceFrame +D0D8 ApplyTerminalSequenceFrame +D0E0 SelectReturnSequenceFrame +D0EC FindReturnSequenceFrame +D0F8 ClampReturnSequenceFrame +D102 ClampReturnSequenceFrame_Loop +D10A FindFinalSequenceFrame +D10C FindFinalSequenceFrame_OnCarryClear +D118 FindFinalSequenceFrame_Loop +D121 FinishSequenceNmi +D124 ForwardSequenceThresholds +D12A TerminalSequenceThresholds +D12D ReturnSequenceThresholds +D135 FinalSequenceThresholds +D138 ForwardSequenceFrameLimits +D13E SubCD13E +D14D SubCD13E_Loop +D17C SubCD13E_Loop2 +D190 SubCD13E_Loop3 +D1A1 SubCD13E_Loop4 +D1A5 SubCD13E_OnCarryClear +D1B0 SubCD13E_Loop5 +D1B3 SubCD13E_Loop6 +D1BA SubCD13E_Loop7 +D1BF SubCD13E_Loop8 +D1CA SubCD13E_Loop9 +D1F1 SubCD13E_Loop10 +D1FA SubCD13E_Loop11 +D201 SubCD13E_OnNonzero +D214 SubCD13E_Loop12 +D217 SubCD13E_Loop13 +D21D SubCD21D +D239 SubCD21D_Loop +D24C SubCD21D_Loop2 +D25F SubCD21D_Loop3 +D275 SubCD21D_OnNonzero +D2AF SubCD21D_Loop4 +D2C2 SubCD2C2 +D2C8 SubCD2C2_OnNonzero +D2E0 SubCD2C2_Loop +D2EE SubCD2EE +D2F8 SubCD2F8 +D301 SubCD2F8_Loop +D3B7 SubCD3B7 +D3C9 SubCD3B7_Loop +D419 SubCD3B7_Loop2 +D41C SubCD3B7_Loop3 +D422 SubCD422 +D425 SubCD425 +D453 SubCD453 +D46D SubCD453_Loop +D473 SubCD453_Loop2 +D481 SubCD453_Loop3 +D482 SubCD453_Loop4 +D48B SubCD48B +D4B9 SubCD48B_Loop +D4BB SubCD4BB +D4C2 SubCD4BB_Loop +D4D1 SubCD4BB_Loop2 +D4D6 SubCD4BB_Loop3 +D4DF SubCD4BB_Loop4 +D4E1 SubCD4BB_Loop5 +D4ED SubCD4BB_Loop6 +D4F0 SubCD4BB_Loop7 +D4F1 SubCD4F1 +D4F2 SubCD4F2 +D4F7 SubCD4F7 +D505 SubCD505 +D514 SubCD505_Loop +D515 SubCD515 +D539 SubCD515_OnZero +D551 SubCD515_Loop +D562 SubCD515_Loop2 +D65A SubCD65A +D65D SubCD65D +D663 SubCD663 +D69C SubCD663_Loop +D6A0 SubCD663_Loop2 +D6AE SubCD663_Loop3 +D6B0 SubCD663_Loop4 +D6BF SubCD663_Loop5 +D6CB SubCD663_Loop6 +D6E3 SubCD663_OnZero +D6E4 SubCD663_Loop7 +D6E7 SubCD663_Loop8 +D6E9 SubCD663_Loop9 +D6F4 BitMaskTable +D6FC SubCD6FC +D714 SubCD6FC_Loop +D75D SubCD6FC_Loop2 +D767 SubCD6FC_Loop3 +D771 SubCD6FC_Loop4 +D773 SubCD6FC_Loop5 +D774 SubCD6FC_Loop6 +D78F SubCD6FC_Loop7 +D796 SubCD6FC_Loop8 +D79E SubCD6FC_Loop9 +D7A8 SubCD6FC_Loop10 +D7C7 SubCD6FC_OnNonnegative +D7F5 SubCD7F5 +D7FF SubCD7F5_OnNonnegative +D81D SubCD7F5_Loop +D822 SubCD7F5_Loop2 +D8ED SubCD8ED +D906 SubCD906 +D92D SubCD906_Loop +D937 SubCD906_Loop2 +D93F SubCD906_Loop3 +D947 SubCD906_OnNonzero +D94E SubCD906_Loop4 +D951 SubCD906_Loop5 +D960 SubCD906_OnNonzero2 +D968 SubCD906_Loop6 +D974 SubCD906_Loop7 +D984 SubCD906_Loop8 +D988 D988ScoreAdjustTable +D9B1 SubCD9B1 +D9B8 SubCD9B1_Loop +D9B9 SubCD9B9 +D9C7 SubCD9C7 +D9CC SubCD9C7_Loop +D9D9 SubCD9D9 +D9EA SubCD9D9_Loop +D9F2 SubCD9D9_Loop2 +D9F6 SubCD9D9_Loop3 +D9FA SubCD9D9_Loop4 +D9FF SubCD9FF +DA15 SubCD9FF_Loop +DA1C SubCDA1C +DA1D SubCDA1D +DA1E SubCDA1E +DA23 InitializeTitleAndGame +DA2F SubCDA2F +DA4C SubCDA4C +DA61 SubCDA4C_Loop +DAA2 TitleAndAttractNmi +DADA StoreMenuSelection +DADC LatchMenuInput +DAE6 ReleaseMenuInputLatch +DAEC ReleaseMenuInputLatch_Loop +DAFD ReleaseMenuInputLatch_Loop2 +DB0A ReleaseMenuInputLatch_Loop3 +DB0D MenuCursorYPositions +DB10 SubCDB10 +DB18 SubCDB10_OnNonzero +DB38 SubCDB10_OnCarryClear +DB44 SubCDB10_OnCarryClear2 +DB5B SubCDB10_Loop +DB69 SubCDB10_OnCarryClear3 +DB72 SubCDB10_Loop2 +DB78 SubCDB10_Loop3 +DB7E SubCDB10_Loop4 +DB84 SubCDB10_Loop5 +DB94 SubCDB10_OnCarryClear4 +DBAC SubCDB10_OnCarryClear5 +DBC5 SubCDB10_OnCarryClear6 +DBDE SubCDB10_OnCarryClear7 +DC07 SubCDB10_OnCarryClear8 +DC3D SubCDB10_Loop6 +DC4A SubCDB10_Loop7 +DC53 SubCDB10_Loop8 +DD78 DecodeCoursePackage +DD7F DecodeCoursePackage_Loop +DD89 DecodeCoursePackage_OnNonzero +DD94 DecodeCoursePackage_OnNonnegative +DDA4 DecodeCoursePackage_Loop2 +DDBC DecodeCoursePackage_OnCarryClear +DDC9 DecodeCoursePackage_OnZero +DDE7 DecodeCoursePackage_Loop3 +DDF7 DecodeCoursePackage_OnNonnegative2 +DE03 DecodeCoursePackage_Loop4 +DE0E DecodeCoursePackage_Loop5 +DE14 DecodeCoursePackage_OnNonnegative3 +DE1A SubCDE1A +DE30 SubCDE1A_Loop +DE35 SubCDE35 +DE3C SubCDE35_Loop +DE4B SubCDE35_OnNonzero +DE5E ParseHoleObjectPackage +DEA5 ParseHoleObjectPackage_OnCarryClear +DF03 ParseHoleObjectList +DF23 ParseHoleObjectList_OnCarryClear +DF3B ParseHoleObjectList_Loop +DF54 ParseHoleObjectList_Loop2 +DF6C ParseHoleObjectList_Loop3 +DF91 ParseHoleObjectList_Loop4 +DF9B SubCDF9B +DFAE SubCDF9B_Loop +DFB8 SubCDFB8 +DFCD SubCDFB8_OnNonnegative +DFD9 SubCDFB8_OnCarryClear +DFF1 SubCDFB8_Loop +DFF5 SubCDFB8_OnCarryClear2 +E043 SubCDFB8_Loop2 +E045 SubCDFB8_OnCarryClear3 +E052 SubCDFB8_OnNonnegative2 +E06D SubCDFB8_OnCarryClear4 +E079 SubCDFB8_Loop3 +E07C SubCE07C +E0A0 SubCE07C_Loop +E0A4 SubCE07C_Loop2 +E0B5 SubCE07C_Loop3 +E0BE SubCE0BE +E0CA SubCE0BE_Loop +E0CD SubCE0CD +E0D8 SubCE0CD_Loop +E0ED SubCE0CD_Loop2 +E121 SubCE0CD_OnCarryClear +E141 SubCE0CD_OnCarryClear2 +E156 SubCE0CD_OnNonnegative +E16A SubCE0CD_Loop3 +E16C SubCE0CD_OnNonnegative2 +E18B SubCE0CD_OnCarryClear3 +E1A1 SubCE1A1 +E1AB SubCE1AB +E1B5 SubCE1AB_Loop +E1B8 GameplayPpuPalette +E282 ObjectSpanStartZero +E283 ObjectSpanEnds +E2A2 ObjectTileTable +E2EB ObjectXOffsetTable +E334 ObjectYOffsetTable +E37D FixedObjectSpanBounds +E384 FixedObjectXOffsets +E3A2 FixedObjectTileTable +E3C0 FixedObjectAttributeTable +E3FC SubCE3FC +E437 SubCE3FC_OnCarryClear +E447 SubCE3FC_Loop +E458 SubCE3FC_Loop2 +E45A SubCE3FC_Loop3 +E46E SubCE3FC_Loop4 +E48B SubCE48B +E48D SubCE48D +E4A1 SubCE48D_Loop +E4B5 SubCE48D_Loop2 +E4CB SubCE48D_OnNonnegative +E4D4 SubCE48D_Loop3 +E4DF SubCE48D_Loop4 +E52C SubCE48D_Loop5 +E52F SubCE52F +E54A SubCE52F_Loop +E559 SubCE559 +E576 SubCE559_Loop +E585 SubCE585 +E6B0 SubCE6B0 +E6C3 CourseLayoutPointerLo +E6D5 CourseLayoutPointerHi +F906 SubCF906 +F918 SubCF906_OnNonzero +F929 SubCF906_Loop +F931 SubCF931 +F93B SubCF931_Loop +F93F SubCF931_Loop2 +F94B SubCF931_Loop3 +F953 SubCF953 +F982 SubCF953_Loop +F983 SubCF983 +F99B SubCF983_Loop +F99D SubCF983_OnNonzero +F99E SubCF99E +F9A2 SubCF99E_OnNonnegative +F9AB SubCF99E_OnNonnegative2 +F9B2 SubCF99E_OnNonnegative3 +F9D4 SubCF99E_OnNonnegative4 +F9DF SubCF99E_OnNonnegative5 +FA08 SubCF99E_Loop +FA0E SubCF99E_Loop2 +FA14 SubCF99E_Loop3 +FA18 SubCF99E_Loop4 +FA1A SubCF99E_Loop5 +FA35 NormalizeCourseGrid +FA39 NormalizeCourseGrid_OnNonnegative +FA3D NormalizeCourseGrid_OnNonnegative2 +FA80 NormalizeCourseGrid_Loop +FA88 NormalizeCourseGrid_OnZero +FA8C SubCFA8C +FA90 SubCFA90 +FAA1 SubCFA90_Loop +FAAF SubCFA90_Loop2 +FABB SubCFA90_Loop3 +FACA SubCFA90_Loop4 +FAE2 SubCFA90_Loop5 +FAED SubCFA90_Loop6 +FAFB SubCFA90_OnZero +FAFF SubCFA90_Loop7 +FB0D SubCFA90_Loop8 +FB25 SubCFB25 +FB27 SubCFB25_Loop +FB30 SubCFB25_Loop2 +FB3B SubCFB25_Loop3 +FB3D SubCFB25_OnNonnegative +FB48 SubCFB25_Loop4 +FB62 SubCFB25_OnNonnegative2 +FB84 SubCFB25_Loop5 +FBA3 SubCFB25_Loop6 +FBA4 StoreSpecialGridCoordinate +FBAE NormalizeStatePair +FBB2 NormalizeStateEntry +FBBE NormalizeStateEntry_Loop +FC24 SubCFC24 +FC27 SubCFC27 +FC3F SubCFC27_Loop +FC43 SubCFC27_Loop2 +FC5A SubCFC27_Loop3 +FC64 SubCFC27_Loop4 +FC66 CompareObjectState +FC6C CompareObjectState_Loop +FC6E GetGridObjectIndex +FC78 SubCFC78 +FC7D SubCFC78_Loop +FC98 UploadGeneratedCourseGrid +FCA8 UploadGeneratedCourseGrid_OnCarryClear +FCB7 UploadGeneratedCourseGrid_OnNonnegative +FCCE UploadGeneratedCourseGrid_Loop +FCDB UploadGeneratedCourseGrid_OnNonnegative2 +FCE6 SubCFCE6 +FCF1 SubCFCF1 +FCFD SubCFCF1_OnNonnegative +FD0A PpuTableFd0a +FD12 SubCFD12 +FD24 SubCFD12_OnNonzero +FD5E SubCFD12_Loop +FD67 SubCFD67 +FD69 SubCFD67_OnNonnegative +FD70 SubCFD67_Loop +FD81 SubCFD67_Loop2 +FDE7 SubCFD67_Loop3 +FDED SubCFD67_Loop4 +FDF7 SubCFD67_Loop5 +FE35 SubCFD67_Loop6 +FE3E SubCFE3E +FE44 SubCFE3E_Loop +FE48 SubCFE3E_OnNonzero +FE50 SubCFE50 +FE61 SubCFE61 +FE72 SubCFE72 +FE8E SubCFE72_Loop +FE97 SubCFE97 +FEAB SubCFE97_Loop +FEB2 SubCFEB2 +FEB5 SubCFEB5 +FEBF SubCFEBF +FECB SubCFEBF_OnNonnegative +FEDA SubCFEBF_Loop +FEE2 SubCFEBF_Loop2 +FEEA SubCFEBF_Loop3 +FEF2 SubCFEBF_Loop4 +FEFA SubCFEBF_Loop5 +FF01 SubCFEBF_Loop6 +FF03 SubCFEBF_Loop7 +FF2B SubCFF2B +FF3E SubCFF2B_Loop +FF42 SubCFF2B_Loop2 +FF4C SubCFF2B_OnNonnegative +FF58 SubCFF2B_Loop3 +FF68 SubCFF2B_Loop4 +FF6C SubCFF2B_Loop5 +FF76 SubCFF2B_OnNonnegative2 +FF82 SubCFF2B_Loop6 +FF85 FF85PpuValueTable diff --git a/_wip/NROM/Golf (JU)/sprite_object_tables.inc b/NROM/Golf (JU)/sprite_object_tables.inc similarity index 100% rename from _wip/NROM/Golf (JU)/sprite_object_tables.inc rename to NROM/Golf (JU)/sprite_object_tables.inc diff --git a/_wip/CNROM/World Class Track Meet (U)/symbols.inc b/NROM/Golf (JU)/symbols.inc similarity index 100% rename from _wip/CNROM/World Class Track Meet (U)/symbols.inc rename to NROM/Golf (JU)/symbols.inc diff --git a/NROM/Pyramid (U)/Makefile b/NROM/Pyramid (U) (Sachen)/Makefile similarity index 99% rename from NROM/Pyramid (U)/Makefile rename to NROM/Pyramid (U) (Sachen)/Makefile index 4ae875d..0daeef9 100644 --- a/NROM/Pyramid (U)/Makefile +++ b/NROM/Pyramid (U) (Sachen)/Makefile @@ -36,7 +36,7 @@ verify: reconstructed.nes rom.nes regen: pass1 pass2 pass3 pass1: - $(PYTHON) $(TOOLS)/nesdis.py --prg prg.bin --base 0xC000 --project "Pyramid (U)" \ + $(PYTHON) $(TOOLS)/nesdis.py --prg prg.bin --base 0xC000 --project "Pyramid (U) (Sachen)" \ --out prg.s --locals locals.inc --auto-seed \ --table "0xC3A6:9,0xCCD5:8" \ --extra-seed "0xC800,0xC1C9,0xC1D0,0xC1D7,0xC1EF,0xC205,0xC201,0xC225,0xC23A,0xC294,0xC34A,0xC43E,0xC585,0xC5AB,0xC614,0xC662,0xC6A3,0xD79D,0xD7D7,0xD7EB,0xDF89,0xF942,0xFF74" diff --git a/NROM/Pyramid (U)/Pyramid (U) (Sachen).nes b/NROM/Pyramid (U) (Sachen)/Pyramid (U) (Sachen).nes similarity index 100% rename from NROM/Pyramid (U)/Pyramid (U) (Sachen).nes rename to NROM/Pyramid (U) (Sachen)/Pyramid (U) (Sachen).nes diff --git a/NROM/Pyramid (U)/README.md b/NROM/Pyramid (U) (Sachen)/README.md similarity index 98% rename from NROM/Pyramid (U)/README.md rename to NROM/Pyramid (U) (Sachen)/README.md index 8ec02ab..31b38cb 100644 --- a/NROM/Pyramid (U)/README.md +++ b/NROM/Pyramid (U) (Sachen)/README.md @@ -203,4 +203,4 @@ Moved out of `_wip/NROM/` with `git mv`; the build now compares the **whole ROM* `reconstructed.nes` is 24,592 bytes, MD5 `aa285ff1…6c59e2` — equal to the original ROM. The `header.bin` / `prg.bin` / `chr.bin` splits were checked against the original before promotion: they are the ROM's first 16 bytes, its next 16,384 bytes and its last 8,192 bytes, exactly. -Build verification: `make` in `NROM/Pyramid (U)/` produces `reconstructed.nes`, compared against `rom.nes` (**whole-ROM byte-identical**). +Build verification: `make` in `NROM/Pyramid (U) (Sachen)/` produces `reconstructed.nes`, compared against `rom.nes` (**whole-ROM byte-identical**). diff --git a/NROM/Pyramid (U)/chr.bin b/NROM/Pyramid (U) (Sachen)/chr.bin similarity index 100% rename from NROM/Pyramid (U)/chr.bin rename to NROM/Pyramid (U) (Sachen)/chr.bin diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/chr.s b/NROM/Pyramid (U) (Sachen)/chr.s similarity index 100% rename from _wip/MAPPER8/Mermaids of Atlantis (U)/chr.s rename to NROM/Pyramid (U) (Sachen)/chr.s diff --git a/NROM/Pyramid (U)/data_region_names.tsv b/NROM/Pyramid (U) (Sachen)/data_region_names.tsv similarity index 100% rename from NROM/Pyramid (U)/data_region_names.tsv rename to NROM/Pyramid (U) (Sachen)/data_region_names.tsv diff --git a/_wip/NROM/Golf (JU)/header.bin b/NROM/Pyramid (U) (Sachen)/header.bin similarity index 100% rename from _wip/NROM/Golf (JU)/header.bin rename to NROM/Pyramid (U) (Sachen)/header.bin diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/header.s b/NROM/Pyramid (U) (Sachen)/header.s similarity index 100% rename from _wip/MAPPER8/Mermaids of Atlantis (U)/header.s rename to NROM/Pyramid (U) (Sachen)/header.s diff --git a/NROM/Pyramid (U)/linker.cfg b/NROM/Pyramid (U) (Sachen)/linker.cfg similarity index 100% rename from NROM/Pyramid (U)/linker.cfg rename to NROM/Pyramid (U) (Sachen)/linker.cfg diff --git a/NROM/Pyramid (U)/locals.inc b/NROM/Pyramid (U) (Sachen)/locals.inc similarity index 99% rename from NROM/Pyramid (U)/locals.inc rename to NROM/Pyramid (U) (Sachen)/locals.inc index 1f454ba..f24dd58 100644 --- a/NROM/Pyramid (U)/locals.inc +++ b/NROM/Pyramid (U) (Sachen)/locals.inc @@ -1,4 +1,4 @@ -; Pyramid (U) application-specific RAM aliases - Pass 1 +; Pyramid (U) (Sachen) application-specific RAM aliases - Pass 1 ; Generated from every direct zero-page operand in reachable code: ; ref counts are reads/writes, `where` lists the referencing addresses. ; ZpXX names indicate storage with a role not yet unique enough for a behavioral name; diff --git a/NROM/Pyramid (U)/prg.bin b/NROM/Pyramid (U) (Sachen)/prg.bin similarity index 100% rename from NROM/Pyramid (U)/prg.bin rename to NROM/Pyramid (U) (Sachen)/prg.bin diff --git a/NROM/Pyramid (U)/prg.s b/NROM/Pyramid (U) (Sachen)/prg.s similarity index 99% rename from NROM/Pyramid (U)/prg.s rename to NROM/Pyramid (U) (Sachen)/prg.s index 2941bb3..51ab37c 100644 --- a/NROM/Pyramid (U)/prg.s +++ b/NROM/Pyramid (U) (Sachen)/prg.s @@ -1,4 +1,4 @@ -; Pyramid (U) NES disassembly - Pass 1 +; Pyramid (U) (Sachen) 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. diff --git a/NROM/Pyramid (U)/rom.nes b/NROM/Pyramid (U) (Sachen)/rom.nes similarity index 100% rename from NROM/Pyramid (U)/rom.nes rename to NROM/Pyramid (U) (Sachen)/rom.nes diff --git a/NROM/Pyramid (U)/routinemap.tsv b/NROM/Pyramid (U) (Sachen)/routinemap.tsv similarity index 100% rename from NROM/Pyramid (U)/routinemap.tsv rename to NROM/Pyramid (U) (Sachen)/routinemap.tsv diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/symbols.inc b/NROM/Pyramid (U) (Sachen)/symbols.inc similarity index 100% rename from _wip/MAPPER8/Mermaids of Atlantis (U)/symbols.inc rename to NROM/Pyramid (U) (Sachen)/symbols.inc diff --git a/NROM/Pyramid (U)/zp_aliases.inc b/NROM/Pyramid (U) (Sachen)/zp_aliases.inc similarity index 100% rename from NROM/Pyramid (U)/zp_aliases.inc rename to NROM/Pyramid (U) (Sachen)/zp_aliases.inc diff --git a/_wip/CNROM/World Class Track Meet (U)/Makefile b/NROM/Volleyball (U)/Makefile similarity index 100% rename from _wip/CNROM/World Class Track Meet (U)/Makefile rename to NROM/Volleyball (U)/Makefile diff --git a/NROM/Volleyball (U)/README.md b/NROM/Volleyball (U)/README.md new file mode 100644 index 0000000..5dda499 --- /dev/null +++ b/NROM/Volleyball (U)/README.md @@ -0,0 +1,286 @@ +# Volleyball (U) + +## Status + +**Pass 3 complete.** The project builds byte-identical to the original ROM +and `prg.s` carries a full disassembly: every byte of the 32 KB PRG image is +accounted for as either an instruction or an explicit `.byte` block, with the +canonical audit comment on every line. + +``` +Byte-identical ROM verified. +``` + +| | | +|---|---| +| Source | `prg.s` (31,567 lines) | +| Instructions | 11,395 (23,926 code bytes, 73.0 % of the PRG image) | +| Data blocks | 37 (8,842 bytes) | +| Labels | 1,989, all semantic (no `Label_XXXX` left) | +| Raw `$XXXX` call/branch operands | 0 | +| Raw `$2000-$4017` hardware literals | 0 | +| Multi-alias residue (`apply_symbols.py --report`) | 0 | +| Neutral `ZpXX` zero-page references | 135, over 29 bytes, each with a recorded reason in `locals.inc` | + +## ROM + +| Property | Value | +|----------|-------| +| Format | iNES | +| Mapper | 0 | +| Board | NROM-256 | +| Mirroring | Vertical | +| Four-screen VRAM | no | +| Battery | no | +| PRG | 32 KB (2 x 16 KB), mapped at CPU $8000-$FFFF | +| CHR | 8 KB (1 x 8 KB) | +| Trainer | none | +| Footer | none | +| NMI vector | $8053 | +| RESET vector | $8000 | +| IRQ vector | $FFFF | +| ROM file | `Volleyball (U).nes` | +| SHA-256 | `5c3baa82f28963fc258c238c82b628dedafdc1342d201721ced196437c983c4d` | + +### Header notes + +- Byte 6 is `$01`: mapper bits 0-3 are in the *upper* nybble, so the mapper is + 0 and bit 0 selects vertical mirroring. +- The IRQ vector is `$FFFF`, which is the last byte of the PRG image and + therefore not a handler at all; the APU frame counter is never IRQ-enabled. + +## Power-on flow + +### RESET ($8000) + +``` +$8000 Reset + A = $FF, $DF (NmiInProgress) = $FF, X = $FF, TXS (stack at $01FF) + PPUMASK = $00 ; rendering off +$800B WaitForVblankStart LDA PPUSTATUS / BPL *-4 ; wait for bit 7 to set +$8010 WaitForVblankEnd LDA PPUSTATUS / BPL *-4 ; wait for bit 7 to clear +$8015 JMP InitGameAndEnterMainLoop ($803E) +``` + +`$8018-$803D` is an **unreachable** block: it reads the PPU palette at `$0178`, +compares it with `$1B` and spins forever if it matches - a TV-standard probe +that no branch in the ROM ever reaches. The only instruction boundary inside +it is `$801A`; `$8018-$8019` (`$3C $80`) does not decode as an instruction. +It is kept as `.byte` data with the note in the source. + +### Init ($803E) + +``` +$803E InitGameAndEnterMainLoop + JSR ClearGameRam ($845D) ; wipe $0001-$00FF and $0300-$04FF + JSR InitPpuForPowerOn ($8335) ; APU/DMC off, PPUCTRL = $10 + $EB = $01, $DE = $00, $DF = $00 + JMP MainIdleLoop ($81B5) +``` + +### Main loop ($81B5) + +The main loop does almost nothing: + +``` +$81B5 MainIdleLoop + $DF = 0 ; re-arm the NMI handler + LDA $00 .. LDA $07 ; refresh eight zero-page bytes + JMP $81B5 +``` + +**All of the game runs from the NMI handler.** The loop only exists to give +the CPU something to do between frames and to re-arm `$DF`. + +### NMI ($8053) + +``` +$8053 NmiHandler + PHA + LDA $DF ; set while an NMI is being serviced + BNE $81CC ; a nested NMI is dropped: PLA / RTI + INC $DF + LDA $40 ; a VRAM update is pending? + BNE $81FF ; -> FlushVramUpdateScript, which ends in DEC $DF / PLA / RTI +``` + +The frame itself: + +1. `INC $2D` - the frame counter every other routine reads. +2. Rendering is turned off (`$19` loses bit 7, `PPUMASK = $00`). +3. `$84DF` uploads the OAM shadow at `$03FF`, `$8424` writes the queued + attribute bytes. +4. State-specific work: the state machine is dispatched further down, but + `$807A-$8115` runs the per-state extras first (the `LDA $2B / CMP #$01..$08` + chain, the whistle, the audience animation). +5. `$811E` animates the crowd, `$8132` updates the indicator board. +6. `$8315` writes the scroll and the nametable bits, `LDA PPUSTATUS` resets + the PPU latch and `EOR #$80` on the PPUCTRL shadow re-enables the NMI for + the next frame; `PPUMASK` is written again to turn rendering on. +7. `$82F5` copies the freshly built OAM buffer to the PPU with `OAMDMA`, + `$82AC` reads the controller of the player whose turn it is. +8. The four-byte command block at `$05C0-$05C3` is filled in. +9. `$85B1` **DispatchGameState** runs the active state. +10. `$C5EF` draws the crowd, the sprite buffers at `$0200`/`$0300` are + cleared, `PLA / RTI`. + +### The state machine + +The game state lives in `$2B` and the sub-state in `$2C`. + +``` +$85B1 DispatchGameState + $25/$26 = $85E1 ; the dispatch table + $28/$29 = $2B * 2 ; the index + LDA ($25),Y / STA $04 ; the 16-bit entry + LDA ($25),Y / STA $05 + LDX $2C ; the sub-state travels in X + JMP ($0004) ; and off it goes +``` + +`GameStateDispatchTable` at `$85E1` holds the eleven state handlers: + +| State | Handler | What it does | +|-------|---------|--------------| +| `$00` | `StateTitleScreenInit` | clears the state, queues the intro VRAM script, loads the sprite tables, starts the match structures | +| `$01` | `StateTitleScreen` | the "Volleys Ball" title screen; waits for START | +| `$02` | `StateModeSelect` | the PLAY / SELECT screen: 1PLAYER/2PLAYER, WOMEN/MEN, and the ten nations | +| `$03` | `StateModeSelectToMatch` | the fade to black between the menus and the court | +| `$04` | `StateCourtSetup` | the teams walk on to the court | +| `$05` | `StateRally` | the rally: the players move, the ball is simulated, points are scored | +| `$06` | `StateNewPoint` | the break between two points | +| `$07` | `StateTeamSelection` | picking the nations | +| `$08` | `StateServeSetup` | placing the ball and starting the serve | +| `$09` | `StateAttractDemo` | the attract demo, where the computer plays a whole match | +| `$0A` | `StateMatchResults` | the result of the match | + +Every handler is a `switch` on the sub-state in X, written as a chain of +`DEX / BEQ` (or `INX / DEX / BEQ`, which is the same test). A case ends in +one of: + +| Routine | Effect | +|---------|--------| +| `AdvanceSubState` (`$8600`) | `INC $2C` - the next phase of the same state | +| `AdvanceGameState` (`$8603`) | `$2C = 0`, `INC $2B` - the next state | +| `SetGameState` (`$860A`) | `STA $2B`, `$2C = 0` - a state chosen by the code | +| `DecrementStateTimer` (`$85F7`) | counts the 16-bit timer in `$02/$03` down and advances the sub-state when it expires | + +The state flow was confirmed against the running ROM with a Mesen CE +debugger: reading `$2B`/`$2C` every 50 ms while the attract demo plays gives +`$00/$06 -> $01/$01 -> $02/$00 -> $03/$01 -> $04/$01 -> $05/...`, with `$05` +(the rally) and `$08` (the serve) alternating. + +## Subsystems + +| Area | Where | What it does | +|------|-------|--------------| +| VRAM updates | `$81FF`, `$8210`, `$8245` | a byte-code interpreter that walks a script at `($41),Y`; `$AD` means "copy N bytes", `$AE` means "the script is done" | +| Attribute writes | `$8424`, `$8440` | the same idea for the attribute table, with the script in `$0180` | +| Controllers | `$82AC`, `$82C2` | strobes `$4016`, shifts eight bits per player, and derives the newly-pressed mask | +| OAM | `$83D8`, `$82F5`, `$84DF` | the sprite list is built in `$0200`/`$0300` and copied with `OAMDMA` | +| Drawing | `$C2A6`..`$CFAB` | the court, the players, the flags and the score board | +| The ball | `$9EB0`..`$C1E6` | the sub-pixel position, the velocity, the spin and the bounce | +| The players | `$97F9`..`$B96E` | ten near-identical copies of the same movement routine, one per nation, indexed by `$5C`/`$5D` | +| Sound | `$F800`..`$FC7E` | the APU driver, the effect dispatcher and the music byte-code player; the note tables and programs are in `$DC54`..`$FFF6` | + +## Pass 3 data-table inventory + +| Label | Address | Size | Contents | +|-------|---------|------|----------| +| `UnreachedCode_8018` | `$8018` | 38 | the unreachable TV-standard probe | +| `UnreachedCode_8118` | `$8118` | 6 | two unreachable `JMP $811E` tails | +| `UnreachedCode_81CE` | `$81CE` | 49 | an unreachable copy of the VRAM flush routine | +| `UnreachedCode_8253` | `$8253` | 22 | an unreachable earlier controller read | +| `UnreachedCode_8409` | `$8409` | 27 | two unreachable VRAM helpers | +| `PlayerSpriteTables` | `$8511` | 160 | five 32-byte sprite tables, one per player slot | +| `GameStateDispatchTable` | `$85E1` | 22 | eleven 16-bit state handler addresses | +| `UnreachedCode_8D52` | `$8D52` | 3 | an unreachable `JMP $8600` tail | +| `UnreachedCode_8DFD` | `$8DFD` | 12 | four unreachable shared jump tails | +| `UnreachedCode_8FFE` | `$8FFE` | 3 | the unreachable tail of the command stream decoder | +| `ScoreDigitAddressTable` | `$9252` | 16 | eight 16-bit PPU addresses of the score digits | +| `TeamNumberDelayTable` | `$941A` | 12 | twelve per-team delay values | +| `BallHitTypeTable` | `$C10F` | 6 | hit-type data for the ball code | +| `UnreachedCode_B5A0` | `$B5A0` | 7 | an unreachable earlier copy of the ball-reset code | +| `BallHitOffsetTable` | `$B6B6` | 14 | the ball rebound offsets | +| `UnreachedCode_BFF7` | `$BFF7` | 7 | an unreachable earlier copy of the ball-reset code | +| `PlayerSpeedTable` | `$CAD5` | 12 | six 16-bit player movement speeds | +| `PlayerSpeedTableCopy` | `$CB4F` | 12 | the same table for the other side of the court | +| `NationCodeTable` | `$CD78` | 64 | the sprite code of each of the ten nations | +| `DigitGlyphTable` | `$D57B` | 80 | the ten digit glyphs, 0..9 | +| `CrowdTileTable` | `$D642` | 64 | 32 (tile, attribute) pairs for the spectators | +| `SpriteTileTable` | `$DAD9` | 96 | 48 four-byte OAM entries for the players, the ball and the umpire | +| `BackgroundTilemapData` | `$DB7E` | 36 | nametable data for the court | +| `NationNameTable` | `$DC26` | 40 | USA, URS, CHN, CUB, JPN, BRA, KOR, TUN, YOU, COM | +| `MusicAndSoundData` | `$DC54` | 6,778 | the note tables, the tone tables and the music byte-code streams | +| `MusicPulseTableStart` | `$F6CE` | 9 | the first pulse-channel note entries | +| `MusicPulseTableEnd` | `$F759` | 7 | the last pulse-channel note entries | +| `MusicPulseTable` | `$F6D7` | 130 | the pulse-channel note data | +| `MusicPulseTableB` | `$F760` | 160 | the second half of the pulse-channel note data | +| `NoisePeriodTable` | `$F87F` | 32 | the noise-channel period values | +| `UnreachedCode_F84D` | `$F84D` | 3 | an unreachable `JMP $F83F` tail | +| `UnreachedCode_F864` | `$F864` | 3 | an unreachable `JMP $F846` tail | +| `CrowdNoisePatternTable` | `$FAAC` | 24 | the crowd-noise pattern | +| `SoundEngineData` | `$FC7F` | 461 | the music player's note tables and byte-code program | +| `SoundEngineDataC` | `$FE4C` | 7 | constants used by the music player | +| `SoundEngineDataB` | `$FE59` | 414 | the second part of the music byte-code program | +| `CpuVectors` | `$FFFA` | 6 | NMI $8053, RESET $8000, IRQ $FFFF | + +## How the split was established + +The static tracer finds 73 % of the PRG image on its own, but it cannot see +code that is reached only through computed dispatch and it cannot tell inline +data from an instruction that happens to decode from the same bytes. The +Mesen Code Data Logger is the oracle for both. + +1. **Pass 1** - `_tools/nesdis.py --undocumented --auto-seed --table 85E1:11`. + The dispatch table has to be declared: the tracer cannot infer that + `$85E1` is a table of eleven entry points, and without it only 66 % of the + image is traced. +2. **Reclassification** - `_tools/cdl_reclass.py` rewrote the split to match + a Code Data Logger capture taken while a random-input bot played the game + for about twelve minutes (Mesen CE 2.2.1, the ROM at `$8000-$FFFF`). + The capture saw 17,105 code bytes, 5,876 data bytes and left 9,787 bytes + unobserved; the 9,787 are the unexecuted paths and the graphics, music and + table data. +3. **Verification** - `_tools/cdl_check.py` (added for this project) compares + the finished `prg.s` against the CDL: every byte the CPU fetched as an + opcode has to be covered by an instruction, and every byte the CPU read as + data must not start one. Both counts are zero. + +``` +$ python3 _tools/cdl_check.py "_wip/NROM/Volleyball (U)/prg.s" vb.cdl 0x8000 +CDL: code=17105 data=5876 unknown=9787 +prg.s: 11395 instruction starts, 32768 bytes covered +CDL-Code bytes not covered by prg.s: 0 +CDL-Data bytes that start an instruction in prg.s: 0 +``` + +## Open work + +- The ten copies of the per-nation player movement routine (`$958C`..`$B96E`) + and the per-nation ball code (`$97F9`..`$A8F2`) are named after their + position in the ROM (`TeamPlayerMove0`..`TeamPlayerMove5`, + `BallUpdateTeamA`..`BallUpdateTeamN`). Which nation each copy belongs to + has **not** been pinned down; the copies differ only in a few constants, so + the mapping would need a per-copy behavioural trace. +- `BallHitOffsetTable` and the speed tables hold values whose exact meaning + is still inferred from the code around them. +- The state names come from the screens the states draw; the naming of the + sub-states inside each handler is the mechanically derived + `_OnZero` / `_Loop` form. + +## Files + +| File | Purpose | +|------|---------| +| `prg.s` | the disassembly | +| `routinemap_hand.tsv` | the hand-written Pass 2 routine names (731 of them) | +| `routinemap.tsv` | the same map after `derive_branch_names.py` added the 1,221 derived branch names | +| `volleyball_mesen.cdl` | the Mesen Code Data Logger capture the split was checked against | +| `locals.inc` | the semantic zero-page and RAM aliases | +| `symbols.inc` | NES hardware register names | +| `header.s` / `chr.s` | the other ROM segments, as ca65 includes | +| `prg.bin` / `header.bin` / `chr.bin` | the binary splits | +| `rom.nes` | a space-free copy of the original ROM, for `cmp` | +| `linker.cfg` | the HEADER / PRG / CHR memory areas | +| `Makefile` | build and byte-identity check | diff --git a/_wip/NROM/Volleyball (U)/Volleyball (U).nes b/NROM/Volleyball (U)/Volleyball (U).nes similarity index 100% rename from _wip/NROM/Volleyball (U)/Volleyball (U).nes rename to NROM/Volleyball (U)/Volleyball (U).nes diff --git a/_wip/NROM/Volleyball (U)/chr.bin b/NROM/Volleyball (U)/chr.bin similarity index 100% rename from _wip/NROM/Volleyball (U)/chr.bin rename to NROM/Volleyball (U)/chr.bin diff --git a/_wip/NROM/Golf (JU)/chr.s b/NROM/Volleyball (U)/chr.s similarity index 100% rename from _wip/NROM/Golf (JU)/chr.s rename to NROM/Volleyball (U)/chr.s diff --git a/_wip/NROM/Volleyball (U)/header.bin b/NROM/Volleyball (U)/header.bin similarity index 100% rename from _wip/NROM/Volleyball (U)/header.bin rename to NROM/Volleyball (U)/header.bin diff --git a/_wip/NROM/Golf (JU)/header.s b/NROM/Volleyball (U)/header.s similarity index 100% rename from _wip/NROM/Golf (JU)/header.s rename to NROM/Volleyball (U)/header.s diff --git a/_wip/NROM/Volleyball (U)/linker.cfg b/NROM/Volleyball (U)/linker.cfg similarity index 100% rename from _wip/NROM/Volleyball (U)/linker.cfg rename to NROM/Volleyball (U)/linker.cfg diff --git a/NROM/Volleyball (U)/locals.inc b/NROM/Volleyball (U)/locals.inc new file mode 100644 index 0000000..6b5f3b8 --- /dev/null +++ b/NROM/Volleyball (U)/locals.inc @@ -0,0 +1,224 @@ +; ============================================================================= +; Volleyball (U) - application-specific RAM aliases (Pass 3) +; ============================================================================= +; +; Every name below is taken from observed ROM behaviour: the game state +; machine, the VRAM update-script interpreter, the controller reader, the +; drawing engine and the sound engine are all visible in the code, and each +; name is anchored to one of them. +; +; A number of zero-page slots keep their neutral `ZpXX` name. Those are the +; ones where two unrelated subsystems share the byte, or where the role +; changes with the active game state; the reason is recorded next to each of +; them, as the promotion rules require. +; +; ----------------------------------------------------------------------------- + +; ---- the game state machine ------------------------------------------------ +GameState = $2B ; 11 game states; indexes GameStateDispatchTable +GameSubState = $2C ; sub-state; the handler receives it in X +FrameCounter = $2D ; incremented once per NMI +StateTimerLo = $02 ; 16-bit delay timer, low byte +StateTimerHi = $03 ; 16-bit delay timer, high byte +StateTablePtrLo = $25 ; pointer into GameStateDispatchTable, low +StateTablePtrHi = $26 ; pointer into GameStateDispatchTable, high +StateTableIndexLo = $28 ; GameState * 2, low +StateTableIndexHi = $29 ; GameState * 2, high + +; ---- the indirect jump used by the state dispatcher ------------------------ +JumpTargetLo = $04 ; low byte of the `JMP ($0004)` target +JumpTargetHi = $05 ; high byte of the `JMP ($0004)` target + +; ---- the VRAM update-script interpreter ----------------------------------- +VramUpdatePending = $40 ; set while a script still has bytes to write +VramScriptPtrLo = $41 ; script pointer, low +VramScriptPtrHi = $42 ; script pointer, high +VramScriptByteCount = $43 ; bytes left in the current run +OamDirty = $44 ; the OAM shadow at $03FF needs uploading + +; ---- PPU state ------------------------------------------------------------- +ScrollX = $06 ; written to PPUSCROLL +ScrollXNametable = $07 ; nametable bit for the X scroll +ScrollY = $08 ; written to PPUSCROLL +ScrollYNametable = $09 ; nametable bit for the Y scroll +PpuCtrlShadow = $19 ; shadow of PPUCTRL +PpuMaskShadow = $1A ; shadow of PPUMASK +AttributeScriptLength = $14 ; bytes queued in the $0180 attribute script +PpuAddrLo = $7C ; high byte of a PPU address built at runtime +PpuAddrHi = $7D ; low byte of a PPU address built at runtime + +; ---- the per-frame command stream ----------------------------------------- +CmdStreamPtrLo = $0E ; pointer into the $05C0 command block +CmdStreamPtrHi = $0F ; pointer into the $05C0 command block +CmdStreamOpcode = $0D ; the command byte just fetched +CmdStreamValue = $0C ; first argument of the current command +CmdStreamValue2 = $10 ; second argument of the current command +CmdStreamValue3 = $11 ; third argument of the current command + +; ---- the controllers ------------------------------------------------------- +ButtonsPlayer1 = $1B ; current button byte, player 1 +ButtonsPlayer1Prev = $1C ; previous button byte, player 1 +ButtonsPlayer1Pressed = $1D ; buttons newly pressed, player 1 +ButtonsPlayer2Pressed = $1E ; buttons newly pressed, player 2 +ControllerShiftReg = $1F ; the shift register the bits are read from +ButtonsPlayer2 = $20 ; current button byte, player 2 +PlayerLeftIndex = $73 ; which controller drives the left team +PlayerRightIndex = $74 ; which controller drives the right team +PlayerLeftInput = $75 ; live input of the left team +PlayerRightInput = $76 ; live input of the right team +PlayerLeftPressed = $77 ; newly pressed buttons, left team +PlayerRightPressed = $78 ; newly pressed buttons, right team + +; ---- scores, teams and nations -------------------------------------------- +ScoreTeam1 = $79 ; left team's score +ScoreTeam2 = $7A ; right team's score +TeamId = $70 ; which nation each side plays +TeamColorA = $58 ; palette entry for the left team +TeamColorB = $59 ; palette entry for the right team +TeamNumber = $66 ; the team whose players are being moved +TeamFlags = $67 ; per-team animation flags +PlayerCount = $2E ; how many players take part +TeamScore1Lo = $54 ; left team's 16-bit score, low +TeamScore1Hi = $55 ; left team's 16-bit score, high + +; ---- the drawing engine ---------------------------------------------------- +TileListPtrLo = $4A ; pointer into the tilemap byte lists, low +TileListPtrHi = $4B ; pointer into the tilemap byte lists, high +TileIndex = $4C ; the tile currently being written +TileAttribute = $4D ; the attribute currently being written +TableIndex = $4E ; index into an 8-byte-per-entry table +DrawPointerLo = $48 ; the write cursor in the nametable, low +DrawPointerHi = $49 ; the write cursor in the nametable, high +ScrollTargetX = $4F ; the scroll position the court is drawn at +CrowdOffsetA = $85 ; base X of the spectators +CrowdOffsetB = $87 ; selects the left or the right stand +CrowdFlagsA = $50 ; per-stand spectator animation flags +CrowdFlagsB = $51 ; per-stand spectator animation flags +NumberTileColumn = $15 ; tile column of the number being drawn +NumberTileRow = $18 ; tile row of the number being drawn + +; ---- sprite slots ---------------------------------------------------------- +PlayerSlotIndex = $8B ; the player slot being updated +PlayerSlotIndex2 = $8C ; the player slot being updated, other side + +; ---- flags ----------------------------------------------------------------- +PointFlag = $6F ; set while a point is being scored +BallFlags = $6E ; ball direction and spin flags +ServeFlag = $72 ; a serve is pending +IndicatorEnable = $7B ; the indicator board is being updated +IndicatorIndex = $64 ; which indicator cell is being drawn +IndicatorValue = $68 ; the value shown in the indicator +ServeReady = $7E ; the server may play the ball +DemoModeFlag = $81 ; the attract demo is running +DemoCounterA = $82 ; demo countdown, high +DemoCounterB = $83 ; demo countdown, low +NumberParity = $84 ; which of the two number slots is live +TitleFlag = $8D ; the title screen is on +BallInPlayFlag = $8E ; the ball is live +GameInitializedFlag = $DE ; set to $55 once the RAM has been cleared +NmiInProgress = $DF ; the NMI handler sets it while it works + +; ---- the sound engine ------------------------------------------------------ +SfxCommand = $EF ; bit mask of the sound effects to play +SoundPlayingFlags = $E0 ; which channels are currently sounding +SoundEffectTimer1 = $E1 ; countdown for the first effect +SoundEffectTimer2 = $E2 ; countdown for the second effect +CrowdNoiseStep = $E3 ; which step of the crowd noise pattern +SoundSequenceFlags = $E4 ; the state of the music byte-code player +SoundNoteIndex = $E5 ; the note currently played +SoundNoteIndex2 = $E6 ; the note currently played, second voice +MusicCommand = $EB ; the music sequence to play +CrowdSoundCommand = $EC ; the crowd sound to play +ApplauseCommand = $ED ; the applause effect to play +MusicPlayingFlag = $EE ; the music player is busy + +; ---- zero-page bytes whose role is not unique ---------------------------- +; +; $00 is the general scratch byte: BuildPlayerSpriteEntries uses it as the +; sprite-slot counter and ClearGameRam uses it as the low byte of the RAM +; clear pointer. Both uses are proven but they are unrelated, so the slot +; keeps a neutral name. +; $01 is the high byte of that same RAM-clear pointer. +; $16/$17 are the low/high bytes of a 16-bit pointer into the per-team +; data; LoadTeamSpriteOffsets and ReadTeamSpriteData fill them in. +; $3F is never referenced by a direct zero-page operand. +; $45/$46 carry the number and the sub-phase that the ball and the score code +; work on; the meaning changes with the active game state. +; $50/$51 hold per-stand spectator flags in the crowd code and a plain +; clear-to-zero value in the state handlers. +; $53 is a short delay counter. +; $56/$57 select which of the duplicated per-player routines runs. +; $5C/$5D index the per-nation tables; $5E/$5F hold the matching state bytes. +; $60/$61 and $62/$63 are 16-bit scratch values used by the drawing code. +; $65, $69-$6D and $71 are single-use scratch bytes. +; $77/$78 are the newly-pressed button bytes of the two teams. +; $7F/$80, $86 and $88-$93 are single-use scratch bytes. +; $E7-$EA are scratch bytes inside the sound engine. +; +OamBufferSelect = $2F ; which OAM buffer ($0200 or $0300) is shown +Zp00 = $00 ; sprite-slot counter / RAM-clear pointer low +Zp01 = $01 ; RAM-clear pointer high +TeamSpritePtrLo = $16 ; pointer into the per-team data, low +TeamSpritePtrHi = $17 ; pointer into the per-team data, high +Zp3E = $3E ; sound effect index (reused by the ball code) +Zp3F = $3F ; never referenced directly +NumberToDisplay = $45 ; the two-digit number to draw on the court +SpriteOffsetIndex = $46 ; index into the table of team sprite offsets +PlayerSpriteId = $56 ; selects one of the duplicated player routines +PlayerSpriteIdB = $57 ; selects one of the duplicated player routines +NationSlotA = $5C ; index into the per-nation tables +NationSlotB = $5D ; index into the per-nation tables +NationStateA = $5E ; state byte matching NationSlotA +NationStateB = $5F ; state byte matching NationSlotB +Zp60 = $60 ; 16-bit scratch in the drawing code +Zp61 = $61 ; 16-bit scratch in the drawing code +Zp62 = $62 ; 16-bit scratch in the drawing code +Zp63 = $63 ; 16-bit scratch in the drawing code +Zp65 = $65 ; single-use scratch byte +Zp69 = $69 ; single-use scratch byte +Zp6A = $6A ; single-use scratch byte +Zp6B = $6B ; single-use scratch byte +Zp6C = $6C ; single-use scratch byte +Zp6D = $6D ; single-use scratch byte +Zp71 = $71 ; single-use scratch byte +Zp7F = $7F ; single-use scratch byte +Zp80 = $80 ; single-use scratch byte +Zp86 = $86 ; single-use scratch byte +Zp88 = $88 ; single-use scratch byte +Zp89 = $89 ; single-use scratch byte +Zp8A = $8A ; single-use scratch byte +Zp90 = $90 ; single-use scratch byte +Zp91 = $91 ; single-use scratch byte +Zp92 = $92 ; single-use scratch byte +Zp93 = $93 ; single-use scratch byte +ZpE7 = $E7 ; scratch byte in the sound engine +ZpE8 = $E8 ; scratch byte in the sound engine +ZpE9 = $E9 ; scratch byte in the sound engine +ZpEA = $EA ; scratch byte in the sound engine +ColorIndex = $47 ; the palette entry the players are drawn with +Zp53 = $53 ; short delay counter + +; ---- the ball and the match structures at $0500 -------------------------- +BallX = $0500 ; the ball's position on the court +BallY = $0501 ; the ball's position on the court +BallFrameCounter = $0502 ; how long the ball has been in flight +BallVelocityX = $0503 ; the ball's horizontal step +BallVelocityY = $0504 ; the ball's vertical step +BallSpeed = $0505 ; the ball's speed +BallCountdown = $0506 ; the ball's animation countdown +BallPreviousY = $0507 ; the ball's position on the previous frame +BallPreviousX = $0508 ; the ball's position on the previous frame +BallFractionX = $0509 ; the ball's sub-pixel horizontal position +BallFractionY = $050A ; the ball's sub-pixel vertical position +BallTargetX = $050B ; where the ball is heading +BallTargetY = $050C ; where the ball is heading +BallPositionX = $050F ; the ball's 16-bit horizontal position +BallPositionY = $0510 ; the ball's 16-bit vertical position +BallTargetPositionX = $0511 ; the ball's 16-bit target +BallTargetPositionY = $0512 ; the ball's 16-bit target +ScoreRecord = $0513 ; array of six eight-byte score records +CameraTargetX = $053F ; where the court is scrolled to +CameraTargetY = $0540 ; where the court is scrolled to +IndicatorStep = $0587 ; which step of the indicator board is live +CrowdAnimationCounter = $0588 ; counts the crowd animation steps + diff --git a/_wip/NROM/Volleyball (U)/prg.bin b/NROM/Volleyball (U)/prg.bin similarity index 100% rename from _wip/NROM/Volleyball (U)/prg.bin rename to NROM/Volleyball (U)/prg.bin diff --git a/NROM/Volleyball (U)/prg.s b/NROM/Volleyball (U)/prg.s new file mode 100644 index 0000000..bf59ee6 --- /dev/null +++ b/NROM/Volleyball (U)/prg.s @@ -0,0 +1,31616 @@ +; Volleyball (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=$8053 RESET=$8000 IRQ=$FFFF +; PRG mapped at $8000-$FFFF (NROM, mirrored to the upper half) +; +; Pass 1 trace provenance (the audit trail behind every classification below): +; dispatch table $85E1, 11 x 16-bit entries, seeded as routine entries +; 4 further routine entries recovered from table references elsewhere in the image: +; $8269, $F6CE, $F759, $FE4C +; indirect dispatch through zero page (not followed statically): +; jmp ($0004) at $85DE +; +.setcpu "6502" + +.include "symbols.inc" +.include "locals.inc" + +.segment "PRG" + +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: Reset +; Global: Power-on entry. Sets the NMI-in-progress flag, clears the stack, +; turns rendering off and waits for the first vertical blank. +; Local: Continues into InitGameAndEnterMainLoop; never returns. +; Parameters: none +; Returns: nothing (the CPU jumps straight into the init code) +; Clobbers: A, X, Y; the stack pointer is set to $FF. +; ----------------------------------------------------------------------------- +Reset: + lda #$FF ; CPU:$8000 PRG:0000 A9 FF + sta NmiInProgress ; CPU:$8002 PRG:0002 85 DF + tax ; CPU:$8004 PRG:0004 AA + txs ; CPU:$8005 PRG:0005 9A + lda #$00 ; CPU:$8006 PRG:0006 A9 00 + sta PPUMASK ; CPU:$8008 PRG:0008 8D 01 20 +; ----------------------------------------------------------------------------- +; Routine: WaitForVblankStart +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WaitForVblankStart: + lda PPUSTATUS ; CPU:$800B PRG:000B AD 02 20 + bpl WaitForVblankStart ; CPU:$800E PRG:000E 10 FB +; ----------------------------------------------------------------------------- +; Routine: WaitForVblankEnd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WaitForVblankEnd: + lda PPUSTATUS ; CPU:$8010 PRG:0010 AD 02 20 + bpl WaitForVblankEnd ; CPU:$8013 PRG:0013 10 FB + jmp InitGameAndEnterMainLoop ; CPU:$8015 PRG:0015 4C 3E 80 +; ---- data $8018-$803D (38 bytes) ---- +; Unreached block: reads the PPU palette at $0178 and compares it with $1B +; (a TV-standard probe). Nothing in the ROM references it; the only +; instruction boundary inside the block is $801A, and $8018-$8019 does +; not decode as an instruction. +UnreachedCode_8018: + .byte $3C, $80, $AD, $02, $20, $A9, $01, $8D, $06, $20, $A9, $78, $8D, $06, $20, $AD ; CPU:$8018 PRG:0018 3C 80 AD 02 20 A9 01 8D 06 20 A9 78 8D 06 20 AD + .byte $07, $20, $AD, $07, $20, $C9, $1B, $D0, $03, $4C, $31, $80, $A9, $20, $8D, $3D ; CPU:$8028 PRG:0028 07 20 AD 07 20 C9 1B D0 03 4C 31 80 A9 20 8D 3D + .byte $80, $4C, $3E, $80, $21, $20 ; CPU:$8038 PRG:0038 80 4C 3E 80 21 20 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: InitGameAndEnterMainLoop +; Global: Clears the game RAM, brings the PPU and the APU up, and hands +; control to the idle loop that the NMI handler interrupts. +; Local: Entered once from Reset; never returns. +; Parameters: none +; Returns: nothing (it jumps to MainIdleLoop) +; Clobbers: A, X, Y. +; ----------------------------------------------------------------------------- +InitGameAndEnterMainLoop: + jsr ClearGameRam ; CPU:$803E PRG:003E 20 5D 84 + jsr InitPpuForPowerOn ; CPU:$8041 PRG:0041 20 35 83 + lda #$01 ; CPU:$8044 PRG:0044 A9 01 + sta MusicCommand ; CPU:$8046 PRG:0046 85 EB + lda #$00 ; CPU:$8048 PRG:0048 A9 00 + sta GameInitializedFlag ; CPU:$804A PRG:004A 85 DE + lda #$00 ; CPU:$804C PRG:004C A9 00 + sta NmiInProgress ; CPU:$804E PRG:004E 85 DF + jmp MainIdleLoop ; CPU:$8050 PRG:0050 4C B5 81 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: NmiHandler +; Global: The whole game loop lives here. Every frame it runs the active game +; state, redraws the sprites and the crowd, reads the controllers and +; starts the next frame's sound. +; Local: Runs once per vertical blank; the state machine decides what happens. +; Parameters: none +; Returns: nothing; the frame is drawn in place +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +NmiHandler: + pha ; CPU:$8053 PRG:0053 48 + lda NmiInProgress ; CPU:$8054 PRG:0054 A5 DF + beq NmiStartFrameWork ; CPU:$8056 PRG:0056 F0 03 + jmp NmiIgnoreAndReturn ; CPU:$8058 PRG:0058 4C CC 81 +; ----------------------------------------------------------------------------- +; Routine: NmiStartFrameWork +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiStartFrameWork: + inc NmiInProgress ; CPU:$805B PRG:005B E6 DF + lda VramUpdatePending ; CPU:$805D PRG:005D A5 40 + beq NmiUpdateGame ; CPU:$805F PRG:005F F0 03 + jmp FlushVramUpdateScript ; CPU:$8061 PRG:0061 4C FF 81 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame: + inc FrameCounter ; CPU:$8064 PRG:0064 E6 2D + lda PpuCtrlShadow ; CPU:$8066 PRG:0066 A5 19 + and #$7F ; CPU:$8068 PRG:0068 29 7F + sta PpuCtrlShadow ; CPU:$806A PRG:006A 85 19 + sta PPUCTRL ; CPU:$806C PRG:006C 8D 00 20 + lda #$00 ; CPU:$806F PRG:006F A9 00 + sta PPUMASK ; CPU:$8071 PRG:0071 8D 01 20 + jsr UploadOamShadowToPpu ; CPU:$8074 PRG:0074 20 DF 84 + jsr WriteAttributeUpdateScript ; CPU:$8077 PRG:0077 20 24 84 + lda GameState ; CPU:$807A PRG:007A A5 2B + cmp #$01 ; CPU:$807C PRG:007C C9 01 + bne NmiUpdateGame_Loop ; CPU:$807E PRG:007E D0 03 + jsr DrawScoreDigits ; CPU:$8080 PRG:0080 20 C5 91 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop: + lda GameState ; CPU:$8083 PRG:0083 A5 2B + cmp #$03 ; CPU:$8085 PRG:0085 C9 03 + bne NmiUpdateGame_Loop2 ; CPU:$8087 PRG:0087 D0 07 + lda #$28 ; CPU:$8089 PRG:0089 A9 28 + sta NumberToDisplay ; CPU:$808B PRG:008B 85 45 + jsr DrawScoreDigitsAt ; CPU:$808D PRG:008D 20 13 D5 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop2: + lda GameState ; CPU:$8090 PRG:0090 A5 2B + cmp #$08 ; CPU:$8092 PRG:0092 C9 08 + bne NmiUpdateGame_Loop3 ; CPU:$8094 PRG:0094 D0 0E + lda GameSubState ; CPU:$8096 PRG:0096 A5 2C + bne NmiUpdateGame_Loop3 ; CPU:$8098 PRG:0098 D0 0A + lda #$00 ; CPU:$809A PRG:009A A9 00 + sta NumberToDisplay ; CPU:$809C PRG:009C 85 45 + jsr DrawScoreDigitsAt ; CPU:$809E PRG:009E 20 13 D5 + jmp NmiAnimateCrowd ; CPU:$80A1 PRG:00A1 4C 1E 81 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop3: + lda GameState ; CPU:$80A4 PRG:00A4 A5 2B + cmp #$05 ; CPU:$80A6 PRG:00A6 C9 05 + bcc NmiAnimateCrowd ; CPU:$80A8 PRG:00A8 90 74 + cmp #$08 ; CPU:$80AA PRG:00AA C9 08 + beq NmiAnimateCrowd ; CPU:$80AC PRG:00AC F0 70 + lda FrameCounter ; CPU:$80AE PRG:00AE A5 2D + and #$1F ; CPU:$80B0 PRG:00B0 29 1F + cmp #$01 ; CPU:$80B2 PRG:00B2 C9 01 + beq NmiUpdateGame_Loop4 ; CPU:$80B4 PRG:00B4 F0 1C + cmp #$04 ; CPU:$80B6 PRG:00B6 C9 04 + beq NmiUpdateGame_Loop5 ; CPU:$80B8 PRG:00B8 F0 1E + cmp #$07 ; CPU:$80BA PRG:00BA C9 07 + beq NmiUpdateGame_Loop6 ; CPU:$80BC PRG:00BC F0 20 + cmp #$0C ; CPU:$80BE PRG:00BE C9 0C + beq NmiUpdateGame_Loop8 ; CPU:$80C0 PRG:00C0 F0 29 + cmp #$11 ; CPU:$80C2 PRG:00C2 C9 11 + beq NmiUpdateGame_Loop4 ; CPU:$80C4 PRG:00C4 F0 0C + cmp #$14 ; CPU:$80C6 PRG:00C6 C9 14 + beq NmiUpdateGame_Loop5 ; CPU:$80C8 PRG:00C8 F0 0E + cmp #$17 ; CPU:$80CA PRG:00CA C9 17 + beq NmiUpdateGame_Loop10 ; CPU:$80CC PRG:00CC F0 2A + cmp #$1C ; CPU:$80CE PRG:00CE C9 1C + beq NmiUpdateGame_Loop11 ; CPU:$80D0 PRG:00D0 F0 36 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop4: + jsr AnimateAudience ; CPU:$80D2 PRG:00D2 20 FB D0 + jmp NmiAnimateCrowd ; CPU:$80D5 PRG:00D5 4C 1E 81 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop5: + jsr AnimateAudienceB ; CPU:$80D8 PRG:00D8 20 B4 D1 + jmp NmiAnimateCrowd ; CPU:$80DB PRG:00DB 4C 1E 81 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop6: + lda BallInPlayFlag ; CPU:$80DE PRG:00DE A5 8E + bne NmiUpdateGame_Loop7 ; CPU:$80E0 PRG:00E0 D0 03 + jmp NmiAnimateCrowd ; CPU:$80E2 PRG:00E2 4C 1E 81 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop7: + jsr AnimateAudienceC ; CPU:$80E5 PRG:00E5 20 5F D2 + jmp NmiAnimateCrowd ; CPU:$80E8 PRG:00E8 4C 1E 81 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop8: + lda BallInPlayFlag ; CPU:$80EB PRG:00EB A5 8E + bne NmiUpdateGame_Loop9 ; CPU:$80ED PRG:00ED D0 03 + jmp NmiAnimateCrowd ; CPU:$80EF PRG:00EF 4C 1E 81 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop9: + jsr AnimateAudienceD ; CPU:$80F2 PRG:00F2 20 03 D3 + jmp NmiAnimateCrowd ; CPU:$80F5 PRG:00F5 4C 1E 81 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop10: + lda TeamFlags ; CPU:$80F8 PRG:00F8 A5 67 + pha ; CPU:$80FA PRG:00FA 48 + lda #$0F ; CPU:$80FB PRG:00FB A9 0F + sta TeamFlags ; CPU:$80FD PRG:00FD 85 67 + jsr AnimateAudienceC ; CPU:$80FF PRG:00FF 20 5F D2 + pla ; CPU:$8102 PRG:0102 68 + sta TeamFlags ; CPU:$8103 PRG:0103 85 67 + jmp NmiAnimateCrowd ; CPU:$8105 PRG:0105 4C 1E 81 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateGame_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateGame_Loop11: + lda TeamFlags ; CPU:$8108 PRG:0108 A5 67 + pha ; CPU:$810A PRG:010A 48 + lda #$0F ; CPU:$810B PRG:010B A9 0F + sta TeamFlags ; CPU:$810D PRG:010D 85 67 + jsr AnimateAudienceD ; CPU:$810F PRG:010F 20 03 D3 + pla ; CPU:$8112 PRG:0112 68 + sta TeamFlags ; CPU:$8113 PRG:0113 85 67 + jmp NmiAnimateCrowd ; CPU:$8115 PRG:0115 4C 1E 81 +; ---- data $8118-$811D (6 bytes) ---- +; Unreached block: two `JMP $811E` tails of the NMI handler's switch that no +; branch reaches. +UnreachedCode_8118: + .byte $4C, $1E, $81, $4C, $1E, $81 ; CPU:$8118 PRG:0118 4C 1E 81 4C 1E 81 +; ----------------------------------------------------------------------------- +; Routine: NmiAnimateCrowd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiAnimateCrowd: + lda CrowdAnimationCounter ; CPU:$811E PRG:011E AD 88 05 + beq NmiUpdateIndicatorBoard ; CPU:$8121 PRG:0121 F0 0F + lda FrameCounter ; CPU:$8123 PRG:0123 A5 2D + and #$01 ; CPU:$8125 PRG:0125 29 01 + bne NmiAnimateCrowd_Loop ; CPU:$8127 PRG:0127 D0 06 + jsr AnimateAudienceE ; CPU:$8129 PRG:0129 20 AB D3 + jmp NmiUpdateIndicatorBoard ; CPU:$812C PRG:012C 4C 32 81 +; ----------------------------------------------------------------------------- +; Routine: NmiAnimateCrowd_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiAnimateCrowd_Loop: + jsr AnimateAudienceF ; CPU:$812F PRG:012F 20 57 D4 +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateIndicatorBoard +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateIndicatorBoard: + lda IndicatorEnable ; CPU:$8132 PRG:0132 A5 7B + beq NmiStartRendering ; CPU:$8134 PRG:0134 F0 03 + jsr UpdateIndicatorBoardBits ; CPU:$8136 PRG:0136 20 CB D5 +; ----------------------------------------------------------------------------- +; Routine: NmiStartRendering +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiStartRendering: + jsr UpdateScrollAndNametable ; CPU:$8139 PRG:0139 20 15 83 + lda PPUSTATUS ; CPU:$813C PRG:013C AD 02 20 + lda PpuCtrlShadow ; CPU:$813F PRG:013F A5 19 + eor #$80 ; CPU:$8141 PRG:0141 49 80 + sta PpuCtrlShadow ; CPU:$8143 PRG:0143 85 19 + sta PPUCTRL ; CPU:$8145 PRG:0145 8D 00 20 + lda PpuMaskShadow ; CPU:$8148 PRG:0148 A5 1A + sta PPUMASK ; CPU:$814A PRG:014A 8D 01 20 + jsr CopyOamBufferToPpu ; CPU:$814D PRG:014D 20 F5 82 + jsr ReadPlayerController ; CPU:$8150 PRG:0150 20 AC 82 + lda #$10 ; CPU:$8153 PRG:0153 A9 10 + sta $05C0 ; CPU:$8155 PRG:0155 8D C0 05 + lda #$03 ; CPU:$8158 PRG:0158 A9 03 + sta $05C1 ; CPU:$815A PRG:015A 8D C1 05 + lda CrowdOffsetB ; CPU:$815D PRG:015D A5 87 + and #$01 ; CPU:$815F PRG:015F 29 01 + clc ; CPU:$8161 PRG:0161 18 + adc CrowdOffsetA ; CPU:$8162 PRG:0162 65 85 + clc ; CPU:$8164 PRG:0164 18 + adc #$32 ; CPU:$8165 PRG:0165 69 32 + sta $05C2 ; CPU:$8167 PRG:0167 8D C2 05 + lda #$FF ; CPU:$816A PRG:016A A9 FF + sta $05C3 ; CPU:$816C PRG:016C 8D C3 05 + lda #$C0 ; CPU:$816F PRG:016F A9 C0 + sta CmdStreamPtrLo ; CPU:$8171 PRG:0171 85 0E + lda #$05 ; CPU:$8173 PRG:0173 A9 05 + sta CmdStreamPtrHi ; CPU:$8175 PRG:0175 85 0F + jsr DispatchGameState ; CPU:$8177 PRG:0177 20 B1 85 +NmiSetOverlayFlags: + lda ServeReady ; CPU:$817A PRG:017A A5 7E + beq NmiSetOverlayFlags_Loop ; CPU:$817C PRG:017C F0 07 + lda #$01 ; CPU:$817E PRG:017E A9 01 + sta CrowdSoundCommand ; CPU:$8180 PRG:0180 85 EC + jmp NmiRunSoundAndOverlay ; CPU:$8182 PRG:0182 4C 89 81 +; ----------------------------------------------------------------------------- +; Routine: NmiSetOverlayFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiSetOverlayFlags_Loop: + lda #$00 ; CPU:$8185 PRG:0185 A9 00 + sta CrowdSoundCommand ; CPU:$8187 PRG:0187 85 EC +; ----------------------------------------------------------------------------- +; Routine: NmiRunSoundAndOverlay +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiRunSoundAndOverlay: + lda DemoModeFlag ; CPU:$8189 PRG:0189 A5 81 + bne NmiUpdateCrowdSprites ; CPU:$818B PRG:018B D0 03 + jsr JumpToInitSoundEngine ; CPU:$818D PRG:018D 20 F7 FF +; ----------------------------------------------------------------------------- +; Routine: NmiUpdateCrowdSprites +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiUpdateCrowdSprites: + jsr AnimateCrowd ; CPU:$8190 PRG:0190 20 EF C5 + lda OamBufferSelect ; CPU:$8193 PRG:0193 A5 2F + bne NmiBuildOamBuffer_Loop3 ; CPU:$8195 PRG:0195 D0 1C + ldx #$00 ; CPU:$8197 PRG:0197 A2 00 + ldy #$F0 ; CPU:$8199 PRG:0199 A0 F0 + lda FrameCounter ; CPU:$819B PRG:019B A5 2D + lsr a ; CPU:$819D PRG:019D 4A +; ----------------------------------------------------------------------------- +; Routine: NmiBuildOamBuffer +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiBuildOamBuffer: + tya ; CPU:$819E PRG:019E 98 + bcs NmiBuildOamBuffer_Loop ; CPU:$819F PRG:019F B0 05 + sta $0200,x ; CPU:$81A1 PRG:01A1 9D 00 02 + bcc NmiBuildOamBuffer_Loop2 ; CPU:$81A4 PRG:01A4 90 03 +; ----------------------------------------------------------------------------- +; Routine: NmiBuildOamBuffer_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiBuildOamBuffer_Loop: + sta $0300,x ; CPU:$81A6 PRG:01A6 9D 00 03 +; ----------------------------------------------------------------------------- +; Routine: NmiBuildOamBuffer_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiBuildOamBuffer_Loop2: + inx ; CPU:$81A9 PRG:01A9 E8 + inx ; CPU:$81AA PRG:01AA E8 + inx ; CPU:$81AB PRG:01AB E8 + inx ; CPU:$81AC PRG:01AC E8 + bne NmiBuildOamBuffer ; CPU:$81AD PRG:01AD D0 EF + lda #$3E ; CPU:$81AF PRG:01AF A9 3E + sta Zp00 ; CPU:$81B1 PRG:01B1 85 00 +; ----------------------------------------------------------------------------- +; Routine: NmiBuildOamBuffer_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiBuildOamBuffer_Loop3: + pla ; CPU:$81B3 PRG:01B3 68 + rti ; CPU:$81B4 PRG:01B4 40 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: MainIdleLoop +; Global: The main loop of the game. It does nothing but re-arm the +; NMI-in-progress flag and refresh eight zero-page bytes; all the work +; happens in the NMI handler. +; Local: Runs until the next NMI interrupts it. +; Parameters: none +; Returns: nothing +; Clobbers: A and the status flags. +; ----------------------------------------------------------------------------- +MainIdleLoop: + lda #$00 ; CPU:$81B5 PRG:01B5 A9 00 + sta NmiInProgress ; CPU:$81B7 PRG:01B7 85 DF + lda Zp00 ; CPU:$81B9 PRG:01B9 A5 00 + lda Zp01 ; CPU:$81BB PRG:01BB A5 01 + lda StateTimerLo ; CPU:$81BD PRG:01BD A5 02 + lda StateTimerHi ; CPU:$81BF PRG:01BF A5 03 + lda JumpTargetLo ; CPU:$81C1 PRG:01C1 A5 04 + lda JumpTargetHi ; CPU:$81C3 PRG:01C3 A5 05 + lda ScrollX ; CPU:$81C5 PRG:01C5 A5 06 + lda ScrollXNametable ; CPU:$81C7 PRG:01C7 A5 07 + jmp MainIdleLoop ; CPU:$81C9 PRG:01C9 4C B5 81 +; ----------------------------------------------------------------------------- +; Routine: NmiIgnoreAndReturn +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NmiIgnoreAndReturn: + pla ; CPU:$81CC PRG:01CC 68 + rti ; CPU:$81CD PRG:01CD 40 +; ---- data $81CE-$81FE (49 bytes) ---- +; Unreached block: a byte-for-byte copy of the VRAM flush routine at $81FF, +; shifted down one byte. Nothing jumps to it. +UnreachedCode_81CE: + .byte $8D, $01, $20, $A9, $20, $8D, $06, $20, $A9, $00, $8D, $06, $20, $A0, $00, $A9 ; CPU:$81CE PRG:01CE 8D 01 20 A9 20 8D 06 20 A9 00 8D 06 20 A0 00 A9 + .byte $08, $85, $43, $B1, $41, $8D, $07, $20, $C8, $D0, $F8, $E6, $42, $C6, $43, $D0 ; CPU:$81DE PRG:01DE 08 85 43 B1 41 8D 07 20 C8 D0 F8 E6 42 C6 43 D0 + .byte $F2, $A9, $00, $85, $40, $20, $15, $83, $A9, $1A, $8D, $01, $20, $C6, $DF, $68 ; CPU:$81EE PRG:01EE F2 A9 00 85 40 20 15 83 A9 1A 8D 01 20 C6 DF 68 + .byte $40 ; CPU:$81FE PRG:01FE 40 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: FlushVramUpdateScript +; Global: Writes the pending VRAM update to the PPU, one run of bytes at a +; time, until the script says it is done. +; Local: Called from the NMI handler when a VRAM update is pending. +; Parameters: none +; Returns: nothing +; Clobbers: A, X, Y, the PPU registers and the script pointer. +; ----------------------------------------------------------------------------- +FlushVramUpdateScript: + lda #$00 ; CPU:$81FF PRG:01FF A9 00 + sta PPUMASK ; CPU:$8201 PRG:0201 8D 01 20 + lda #$20 ; CPU:$8204 PRG:0204 A9 20 + sta PPUADDR ; CPU:$8206 PRG:0206 8D 06 20 + lda #$00 ; CPU:$8209 PRG:0209 A9 00 + sta PPUADDR ; CPU:$820B PRG:020B 8D 06 20 + ldy #$00 ; CPU:$820E PRG:020E A0 00 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: RunVramUpdateScript +; Global: The VRAM update-script interpreter. It walks the byte stream at +; ($41),Y; $AD means "copy N bytes", $AE means "the script is +; finished". +; Local: Called from the NMI handler when a VRAM update is pending. +; Parameters: the script pointer in $41/$42 +; Returns: nothing +; Clobbers: A, X, Y and the script pointer. +; ----------------------------------------------------------------------------- +RunVramUpdateScript: + lda (VramScriptPtrLo),y ; CPU:$8210 PRG:0210 B1 41 + cmp #$AE ; CPU:$8212 PRG:0212 C9 AE + beq VramUpdateScriptComplete ; CPU:$8214 PRG:0214 F0 24 + cmp #$AD ; CPU:$8216 PRG:0216 C9 AD + beq RunVramUpdateRun ; CPU:$8218 PRG:0218 F0 09 + sta PPUDATA ; CPU:$821A PRG:021A 8D 07 20 + jsr AdvanceVramScriptPointer ; CPU:$821D PRG:021D 20 45 82 + jmp RunVramUpdateScript ; CPU:$8220 PRG:0220 4C 10 82 +; ----------------------------------------------------------------------------- +; Routine: RunVramUpdateRun +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +RunVramUpdateRun: + jsr AdvanceVramScriptPointer ; CPU:$8223 PRG:0223 20 45 82 + lda (VramScriptPtrLo),y ; CPU:$8226 PRG:0226 B1 41 + tax ; CPU:$8228 PRG:0228 AA + jsr AdvanceVramScriptPointer ; CPU:$8229 PRG:0229 20 45 82 + lda (VramScriptPtrLo),y ; CPU:$822C PRG:022C B1 41 +; ----------------------------------------------------------------------------- +; Routine: WriteVramRunByte +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteVramRunByte: + sta PPUDATA ; CPU:$822E PRG:022E 8D 07 20 + dex ; CPU:$8231 PRG:0231 CA + bne WriteVramRunByte ; CPU:$8232 PRG:0232 D0 FA + jsr AdvanceVramScriptPointer ; CPU:$8234 PRG:0234 20 45 82 + jmp RunVramUpdateScript ; CPU:$8237 PRG:0237 4C 10 82 +; ----------------------------------------------------------------------------- +; Routine: VramUpdateScriptComplete +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +VramUpdateScriptComplete: + lda #$00 ; CPU:$823A PRG:023A A9 00 + sta VramUpdatePending ; CPU:$823C PRG:023C 85 40 + jsr UpdateScrollAndNametable ; CPU:$823E PRG:023E 20 15 83 + dec NmiInProgress ; CPU:$8241 PRG:0241 C6 DF + pla ; CPU:$8243 PRG:0243 68 + rti ; CPU:$8244 PRG:0244 40 +; ----------------------------------------------------------------------------- +; Routine: AdvanceVramScriptPointer +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AdvanceVramScriptPointer: + lda VramScriptPtrLo ; CPU:$8245 PRG:0245 A5 41 + clc ; CPU:$8247 PRG:0247 18 + adc #$01 ; CPU:$8248 PRG:0248 69 01 + sta VramScriptPtrLo ; CPU:$824A PRG:024A 85 41 + lda VramScriptPtrHi ; CPU:$824C PRG:024C A5 42 + adc #$00 ; CPU:$824E PRG:024E 69 00 + sta VramScriptPtrHi ; CPU:$8250 PRG:0250 85 42 + rts ; CPU:$8252 PRG:0252 60 +; ---- data $8253-$8268 (22 bytes) ---- +; Unreached block: an earlier version of the controller read routine (the +; live one is ReadPlayerController at $82AC). +UnreachedCode_8253: + .byte $A5, $2E, $4A, $A9, $00, $69, $00, $AA, $A5, $1B, $85, $1C, $A9, $01, $8D, $16 ; CPU:$8253 PRG:0253 A5 2E 4A A9 00 69 00 AA A5 1B 85 1C A9 01 8D 16 + .byte $40, $A9, $00, $8D, $16, $40 ; CPU:$8263 PRG:0263 40 A9 00 8D 16 40 +; ----------------------------------------------------------------------------- +; Routine: ReadBothControllersOld +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadBothControllersOld: + jsr ReadBothControllersLegacy ; CPU:$8269 PRG:0269 20 77 82 + lda ButtonsPlayer1 ; CPU:$826C PRG:026C A5 1B + eor ButtonsPlayer1Prev ; CPU:$826E PRG:026E 45 1C + sta ButtonsPlayer2Pressed ; CPU:$8270 PRG:0270 85 1E + and ButtonsPlayer1 ; CPU:$8272 PRG:0272 25 1B + sta ButtonsPlayer1Pressed ; CPU:$8274 PRG:0274 85 1D + rts ; CPU:$8276 PRG:0276 60 +; ----------------------------------------------------------------------------- +; Routine: ReadBothControllersLegacy +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadBothControllersLegacy: + cpx #$00 ; CPU:$8277 PRG:0277 E0 00 + bne ReadBothControllersLegacy_Loop ; CPU:$8279 PRG:0279 D0 04 + ldy #$08 ; CPU:$827B PRG:027B A0 08 + bne ShiftControllerBits ; CPU:$827D PRG:027D D0 1E +; ----------------------------------------------------------------------------- +; Routine: ReadBothControllersLegacy_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadBothControllersLegacy_Loop: + ldy #$02 ; CPU:$827F PRG:027F A0 02 + jsr ShiftControllerBits ; CPU:$8281 PRG:0281 20 9D 82 + lda JOY1 ; CPU:$8284 PRG:0284 AD 16 40 + lda JOY1 ; CPU:$8287 PRG:0287 AD 16 40 + txa ; CPU:$828A PRG:028A 8A + pha ; CPU:$828B PRG:028B 48 + ldx #$00 ; CPU:$828C PRG:028C A2 00 + ldy #$02 ; CPU:$828E PRG:028E A0 02 + jsr ShiftControllerBits ; CPU:$8290 PRG:0290 20 9D 82 + lda JOY2 ; CPU:$8293 PRG:0293 AD 17 40 + lda JOY2 ; CPU:$8296 PRG:0296 AD 17 40 + pla ; CPU:$8299 PRG:0299 68 + tax ; CPU:$829A PRG:029A AA + ldy #$04 ; CPU:$829B PRG:029B A0 04 +; ----------------------------------------------------------------------------- +; Routine: ShiftControllerBits +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftControllerBits: + lda JOY1,x ; CPU:$829D PRG:029D BD 16 40 + sta ControllerShiftReg ; CPU:$82A0 PRG:02A0 85 1F + lsr a ; CPU:$82A2 PRG:02A2 4A + ora ControllerShiftReg ; CPU:$82A3 PRG:02A3 05 1F + lsr a ; CPU:$82A5 PRG:02A5 4A + rol ButtonsPlayer1 ; CPU:$82A6 PRG:02A6 26 1B + dey ; CPU:$82A8 PRG:02A8 88 + bne ShiftControllerBits ; CPU:$82A9 PRG:02A9 D0 F2 + rts ; CPU:$82AB PRG:02AB 60 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: ReadPlayerController +; Global: Reads the controller of the player whose turn it is and works out +; which buttons are new. +; Local: Called once per frame from the NMI handler. +; Parameters: none +; Returns: the button state in $1B/$1D/$1F and $20/$1E +; Clobbers: A, X, Y and the controller shadow bytes. +; ----------------------------------------------------------------------------- +ReadPlayerController: + lda #$01 ; CPU:$82AC PRG:02AC A9 01 + sta JOY1 ; CPU:$82AE PRG:02AE 8D 16 40 + lda #$00 ; CPU:$82B1 PRG:02B1 A9 00 + sta JOY1 ; CPU:$82B3 PRG:02B3 8D 16 40 + lda FrameCounter ; CPU:$82B6 PRG:02B6 A5 2D + lsr a ; CPU:$82B8 PRG:02B8 4A + lda #$00 ; CPU:$82B9 PRG:02B9 A9 00 + adc #$00 ; CPU:$82BB PRG:02BB 69 00 + tax ; CPU:$82BD PRG:02BD AA + jsr ShiftPlayerControllerBits ; CPU:$82BE PRG:02BE 20 C2 82 + rts ; CPU:$82C1 PRG:02C1 60 +; ----------------------------------------------------------------------------- +; Routine: ShiftPlayerControllerBits +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftPlayerControllerBits: + ldy #$08 ; CPU:$82C2 PRG:02C2 A0 08 +; ----------------------------------------------------------------------------- +; Routine: ShiftPlayerControllerBits_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftPlayerControllerBits_OnNonzero: + lda JOY1,x ; CPU:$82C4 PRG:02C4 BD 16 40 + sta ControllerShiftReg ; CPU:$82C7 PRG:02C7 85 1F + lsr a ; CPU:$82C9 PRG:02C9 4A + ora ControllerShiftReg ; CPU:$82CA PRG:02CA 05 1F + lsr a ; CPU:$82CC PRG:02CC 4A + rol ButtonsPlayer1,x ; CPU:$82CD PRG:02CD 36 1B + dey ; CPU:$82CF PRG:02CF 88 + bne ShiftPlayerControllerBits_OnNonzero ; CPU:$82D0 PRG:02D0 D0 F2 + lda ButtonsPlayer1,x ; CPU:$82D2 PRG:02D2 B5 1B + eor ButtonsPlayer2,x ; CPU:$82D4 PRG:02D4 55 20 + and ButtonsPlayer1,x ; CPU:$82D6 PRG:02D6 35 1B + sta ButtonsPlayer1Pressed,x ; CPU:$82D8 PRG:02D8 95 1D + lda ButtonsPlayer1,x ; CPU:$82DA PRG:02DA B5 1B + sta ButtonsPlayer2,x ; CPU:$82DC PRG:02DC 95 20 + ldx PlayerLeftIndex ; CPU:$82DE PRG:02DE A6 73 + lda ButtonsPlayer1,x ; CPU:$82E0 PRG:02E0 B5 1B + sta PlayerLeftInput ; CPU:$82E2 PRG:02E2 85 75 + lda ButtonsPlayer1Pressed,x ; CPU:$82E4 PRG:02E4 B5 1D + sta PlayerLeftPressed ; CPU:$82E6 PRG:02E6 85 77 + ldx PlayerRightIndex ; CPU:$82E8 PRG:02E8 A6 74 + lda ButtonsPlayer1,x ; CPU:$82EA PRG:02EA B5 1B + sta PlayerRightInput ; CPU:$82EC PRG:02EC 85 76 + ldx PlayerRightIndex ; CPU:$82EE PRG:02EE A6 74 + lda ButtonsPlayer1Pressed,x ; CPU:$82F0 PRG:02F0 B5 1D + sta PlayerRightPressed ; CPU:$82F2 PRG:02F2 85 78 + rts ; CPU:$82F4 PRG:02F4 60 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: CopyOamBufferToPpu +; Global: Copies the OAM buffer the game has just built to the PPU's sprite +; memory with OAMDMA. +; Local: Called once per frame from the NMI handler. +; Parameters: none +; Returns: nothing +; Clobbers: A. +; ----------------------------------------------------------------------------- +CopyOamBufferToPpu: + lda OamBufferSelect ; CPU:$82F5 PRG:02F5 A5 2F + beq CopyOamBufferToPpu_Loop ; CPU:$82F7 PRG:02F7 F0 01 + rts ; CPU:$82F9 PRG:02F9 60 +; ----------------------------------------------------------------------------- +; Routine: CopyOamBufferToPpu_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CopyOamBufferToPpu_Loop: + lda FrameCounter ; CPU:$82FA PRG:02FA A5 2D + lsr a ; CPU:$82FC PRG:02FC 4A + bcs CopyOamBufferToPpu_Loop2 ; CPU:$82FD PRG:02FD B0 0B + lda #$02 ; CPU:$82FF PRG:02FF A9 02 + sta OAMDMA ; CPU:$8301 PRG:0301 8D 14 40 + lda #$00 ; CPU:$8304 PRG:0304 A9 00 + sta OAMADDR ; CPU:$8306 PRG:0306 8D 03 20 + rts ; CPU:$8309 PRG:0309 60 +; ----------------------------------------------------------------------------- +; Routine: CopyOamBufferToPpu_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CopyOamBufferToPpu_Loop2: + lda #$03 ; CPU:$830A PRG:030A A9 03 + sta OAMDMA ; CPU:$830C PRG:030C 8D 14 40 + lda #$00 ; CPU:$830F PRG:030F A9 00 + sta OAMADDR ; CPU:$8311 PRG:0311 8D 03 20 + rts ; CPU:$8314 PRG:0314 60 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: UpdateScrollAndNametable +; Global: Writes the scroll position and the nametable bits to the PPU. +; Local: Called once per frame from the NMI handler. +; Parameters: none +; Returns: nothing +; Clobbers: A and the PPU registers. +; ----------------------------------------------------------------------------- +UpdateScrollAndNametable: + lda PPUSTATUS ; CPU:$8315 PRG:0315 AD 02 20 + lda ScrollX ; CPU:$8318 PRG:0318 A5 06 + sta PPUSCROLL ; CPU:$831A PRG:031A 8D 05 20 + lda ScrollY ; CPU:$831D PRG:031D A5 08 + sta PPUSCROLL ; CPU:$831F PRG:031F 8D 05 20 + lda PpuCtrlShadow ; CPU:$8322 PRG:0322 A5 19 + and #$FC ; CPU:$8324 PRG:0324 29 FC + ora ScrollXNametable ; CPU:$8326 PRG:0326 05 07 + sta PpuCtrlShadow ; CPU:$8328 PRG:0328 85 19 + lda ScrollYNametable ; CPU:$832A PRG:032A A5 09 + asl a ; CPU:$832C PRG:032C 0A + ora PpuCtrlShadow ; CPU:$832D PRG:032D 05 19 + sta PpuCtrlShadow ; CPU:$832F PRG:032F 85 19 + sta PPUCTRL ; CPU:$8331 PRG:0331 8D 00 20 + rts ; CPU:$8334 PRG:0334 60 +; ----------------------------------------------------------------------------- +; Routine: InitPpuForPowerOn +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitPpuForPowerOn: + lda #$10 ; CPU:$8335 PRG:0335 A9 10 + sta PPUCTRL ; CPU:$8337 PRG:0337 8D 00 20 +; ----------------------------------------------------------------------------- +; Routine: InitPpuForPowerOn_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitPpuForPowerOn_OnZero: + lda PPUSTATUS ; CPU:$833A PRG:033A AD 02 20 + and #$80 ; CPU:$833D PRG:033D 29 80 + beq InitPpuForPowerOn_OnZero ; CPU:$833F PRG:033F F0 F9 + sta APUDMCDIRECT ; CPU:$8341 PRG:0341 8D 11 40 + lda #$00 ; CPU:$8344 PRG:0344 A9 00 + sta PPUMASK ; CPU:$8346 PRG:0346 8D 01 20 + lda #$10 ; CPU:$8349 PRG:0349 A9 10 + sta PPUCTRL ; CPU:$834B PRG:034B 8D 00 20 + sta PpuCtrlShadow ; CPU:$834E PRG:034E 85 19 + lda #$00 ; CPU:$8350 PRG:0350 A9 00 + sta PPUSCROLL ; CPU:$8352 PRG:0352 8D 05 20 + sta ScrollX ; CPU:$8355 PRG:0355 85 06 + sta PPUSCROLL ; CPU:$8357 PRG:0357 8D 05 20 + sta ScrollY ; CPU:$835A PRG:035A 85 08 + lda #$00 ; CPU:$835C PRG:035C A9 00 + sta PPUMASK ; CPU:$835E PRG:035E 8D 01 20 + sta PpuMaskShadow ; CPU:$8361 PRG:0361 85 1A + jsr ClearNametableAndOamFlag ; CPU:$8363 PRG:0363 20 97 83 + jsr LoadSpriteTableTeamE ; CPU:$8366 PRG:0366 20 CF 84 + lda PpuCtrlShadow ; CPU:$8369 PRG:0369 A5 19 + eor #$80 ; CPU:$836B PRG:036B 49 80 + sta PPUCTRL ; CPU:$836D PRG:036D 8D 00 20 + sta PpuCtrlShadow ; CPU:$8370 PRG:0370 85 19 + lda #$00 ; CPU:$8372 PRG:0372 A9 00 + sta PPUMASK ; CPU:$8374 PRG:0374 8D 01 20 + rts ; CPU:$8377 PRG:0377 60 +; ----------------------------------------------------------------------------- +; Routine: ClearScreensForNewGame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearScreensForNewGame: + lda #$00 ; CPU:$8378 PRG:0378 A9 00 + sta PPUMASK ; CPU:$837A PRG:037A 8D 01 20 + sta PpuMaskShadow ; CPU:$837D PRG:037D 85 1A + lda #$10 ; CPU:$837F PRG:037F A9 10 + sta PPUCTRL ; CPU:$8381 PRG:0381 8D 00 20 +; ----------------------------------------------------------------------------- +; Routine: ClearScreensForNewGame_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearScreensForNewGame_OnNonnegative: + lda PPUSTATUS ; CPU:$8384 PRG:0384 AD 02 20 + bpl ClearScreensForNewGame_OnNonnegative ; CPU:$8387 PRG:0387 10 FB + jsr ClearNametableAndOamFlag ; CPU:$8389 PRG:0389 20 97 83 + lda #$00 ; CPU:$838C PRG:038C A9 00 + sta ScrollX ; CPU:$838E PRG:038E 85 06 + sta ScrollXNametable ; CPU:$8390 PRG:0390 85 07 + sta ScrollY ; CPU:$8392 PRG:0392 85 08 + sta ScrollYNametable ; CPU:$8394 PRG:0394 85 09 + rts ; CPU:$8396 PRG:0396 60 +; ----------------------------------------------------------------------------- +; Routine: ClearNametableAndOamFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNametableAndOamFlag: + jsr ClearNametable0 ; CPU:$8397 PRG:0397 20 9E 83 + jsr ClearOamPendingFlag ; CPU:$839A PRG:039A 20 D3 83 + rts ; CPU:$839D PRG:039D 60 +; ----------------------------------------------------------------------------- +; Routine: ClearNametable0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNametable0: + lda PpuCtrlShadow ; CPU:$839E PRG:039E A5 19 + and #$FB ; CPU:$83A0 PRG:03A0 29 FB + sta PPUCTRL ; CPU:$83A2 PRG:03A2 8D 00 20 + lda #$20 ; CPU:$83A5 PRG:03A5 A9 20 + sta PPUADDR ; CPU:$83A7 PRG:03A7 8D 06 20 + lda #$00 ; CPU:$83AA PRG:03AA A9 00 + sta PPUADDR ; CPU:$83AC PRG:03AC 8D 06 20 + ldx #$0C ; CPU:$83AF PRG:03AF A2 0C + ldy #$00 ; CPU:$83B1 PRG:03B1 A0 00 + lda #$00 ; CPU:$83B3 PRG:03B3 A9 00 +; ----------------------------------------------------------------------------- +; Routine: ClearNametable0_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNametable0_OnNonzero: + sta PPUDATA ; CPU:$83B5 PRG:03B5 8D 07 20 + dey ; CPU:$83B8 PRG:03B8 88 + bne ClearNametable0_OnNonzero ; CPU:$83B9 PRG:03B9 D0 FA + dex ; CPU:$83BB PRG:03BB CA + bne ClearNametable0_OnNonzero ; CPU:$83BC PRG:03BC D0 F7 + lda #$23 ; CPU:$83BE PRG:03BE A9 23 + sta PPUADDR ; CPU:$83C0 PRG:03C0 8D 06 20 + lda #$C0 ; CPU:$83C3 PRG:03C3 A9 C0 + sta PPUADDR ; CPU:$83C5 PRG:03C5 8D 06 20 + ldy #$40 ; CPU:$83C8 PRG:03C8 A0 40 + lda #$FF ; CPU:$83CA PRG:03CA A9 FF +; ----------------------------------------------------------------------------- +; Routine: ClearNametable0_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNametable0_OnNonzero2: + sta PPUDATA ; CPU:$83CC PRG:03CC 8D 07 20 + dey ; CPU:$83CF PRG:03CF 88 + bne ClearNametable0_OnNonzero2 ; CPU:$83D0 PRG:03D0 D0 FA + rts ; CPU:$83D2 PRG:03D2 60 +; ----------------------------------------------------------------------------- +; Routine: ClearOamPendingFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearOamPendingFlag: + lda #$00 ; CPU:$83D3 PRG:03D3 A9 00 + sta OamBufferSelect ; CPU:$83D5 PRG:03D5 85 2F + rts ; CPU:$83D7 PRG:03D7 60 +; ----------------------------------------------------------------------------- +; Routine: BuildPlayerSpriteEntries +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BuildPlayerSpriteEntries: + txa ; CPU:$83D8 PRG:03D8 8A + pha ; CPU:$83D9 PRG:03D9 48 + tya ; CPU:$83DA PRG:03DA 98 + pha ; CPU:$83DB PRG:03DB 48 + lda Zp00 ; CPU:$83DC PRG:03DC A5 00 + asl a ; CPU:$83DE PRG:03DE 0A + asl a ; CPU:$83DF PRG:03DF 0A + tay ; CPU:$83E0 PRG:03E0 A8 + ldx #$00 ; CPU:$83E1 PRG:03E1 A2 00 +; ----------------------------------------------------------------------------- +; Routine: BuildPlayerSpriteEntries_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BuildPlayerSpriteEntries_OnNonzero: + lda FrameCounter ; CPU:$83E3 PRG:03E3 A5 2D + lsr a ; CPU:$83E5 PRG:03E5 4A + lda NumberTileColumn,x ; CPU:$83E6 PRG:03E6 B5 15 + bcc BuildPlayerSpriteEntries_Loop ; CPU:$83E8 PRG:03E8 90 05 + sta $0200,y ; CPU:$83EA PRG:03EA 99 00 02 + bcs BuildPlayerSpriteEntries_Loop2 ; CPU:$83ED PRG:03ED B0 03 +; ----------------------------------------------------------------------------- +; Routine: BuildPlayerSpriteEntries_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BuildPlayerSpriteEntries_Loop: + sta $0300,y ; CPU:$83EF PRG:03EF 99 00 03 +; ----------------------------------------------------------------------------- +; Routine: BuildPlayerSpriteEntries_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BuildPlayerSpriteEntries_Loop2: + iny ; CPU:$83F2 PRG:03F2 C8 + inx ; CPU:$83F3 PRG:03F3 E8 + cpx #$04 ; CPU:$83F4 PRG:03F4 E0 04 + bne BuildPlayerSpriteEntries_OnNonzero ; CPU:$83F6 PRG:03F6 D0 EB + inc Zp00 ; CPU:$83F8 PRG:03F8 E6 00 + lda Zp00 ; CPU:$83FA PRG:03FA A5 00 + cmp #$08 ; CPU:$83FC PRG:03FC C9 08 + bne BuildPlayerSpriteEntries_Loop3 ; CPU:$83FE PRG:03FE D0 04 + inc Zp00 ; CPU:$8400 PRG:0400 E6 00 + inc Zp00 ; CPU:$8402 PRG:0402 E6 00 +; ----------------------------------------------------------------------------- +; Routine: BuildPlayerSpriteEntries_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BuildPlayerSpriteEntries_Loop3: + pla ; CPU:$8404 PRG:0404 68 + tay ; CPU:$8405 PRG:0405 A8 + pla ; CPU:$8406 PRG:0406 68 + tax ; CPU:$8407 PRG:0407 AA + rts ; CPU:$8408 PRG:0408 60 +; ---- data $8409-$8423 (27 bytes) ---- +; Unreached block: two tiny VRAM helpers (set the PPU address from $10/$11, +; and write one byte to PPUDATA). The compiler inlined them everywhere, +; so the originals were left with no caller. +UnreachedCode_8409: + .byte $A5, $11, $8D, $06, $20, $A5, $10, $8D, $06, $20, $60, $48, $A5, $11, $8D, $06 ; CPU:$8409 PRG:0409 A5 11 8D 06 20 A5 10 8D 06 20 60 48 A5 11 8D 06 + .byte $20, $A5, $10, $8D, $06, $20, $68, $8D, $07, $20, $60 ; CPU:$8419 PRG:0419 20 A5 10 8D 06 20 68 8D 07 20 60 +; ----------------------------------------------------------------------------- +; Routine: WriteAttributeUpdateScript +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteAttributeUpdateScript: + lda AttributeScriptLength ; CPU:$8424 PRG:0424 A5 14 + bne WriteAttributeUpdateScript_Loop ; CPU:$8426 PRG:0426 D0 01 + rts ; CPU:$8428 PRG:0428 60 +; ----------------------------------------------------------------------------- +; Routine: WriteAttributeUpdateScript_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteAttributeUpdateScript_Loop: + lda PpuCtrlShadow ; CPU:$8429 PRG:0429 A5 19 + ora #$04 ; CPU:$842B PRG:042B 09 04 + sta PPUCTRL ; CPU:$842D PRG:042D 8D 00 20 + ldx #$00 ; CPU:$8430 PRG:0430 A2 00 +; ----------------------------------------------------------------------------- +; Routine: WriteAttributeUpdateScript_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteAttributeUpdateScript_OnNonzero: + lda $0180,x ; CPU:$8432 PRG:0432 BD 80 01 + sta PPUADDR ; CPU:$8435 PRG:0435 8D 06 20 + inx ; CPU:$8438 PRG:0438 E8 + lda $0180,x ; CPU:$8439 PRG:0439 BD 80 01 + sta PPUADDR ; CPU:$843C PRG:043C 8D 06 20 + inx ; CPU:$843F PRG:043F E8 +; ----------------------------------------------------------------------------- +; Routine: WriteAttributeScriptBytes +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteAttributeScriptBytes: + lda $0180,x ; CPU:$8440 PRG:0440 BD 80 01 + cmp #$FF ; CPU:$8443 PRG:0443 C9 FF + beq WriteAttributeScriptBytes_Loop ; CPU:$8445 PRG:0445 F0 07 + sta PPUDATA ; CPU:$8447 PRG:0447 8D 07 20 + inx ; CPU:$844A PRG:044A E8 + jmp WriteAttributeScriptBytes ; CPU:$844B PRG:044B 4C 40 84 +; ----------------------------------------------------------------------------- +; Routine: WriteAttributeScriptBytes_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteAttributeScriptBytes_Loop: + inx ; CPU:$844E PRG:044E E8 + cpx AttributeScriptLength ; CPU:$844F PRG:044F E4 14 + bne WriteAttributeUpdateScript_OnNonzero ; CPU:$8451 PRG:0451 D0 DF + lda #$00 ; CPU:$8453 PRG:0453 A9 00 + sta AttributeScriptLength ; CPU:$8455 PRG:0455 85 14 + lda PpuCtrlShadow ; CPU:$8457 PRG:0457 A5 19 + sta PPUCTRL ; CPU:$8459 PRG:0459 8D 00 20 + rts ; CPU:$845C PRG:045C 60 +; ----------------------------------------------------------------------------- +; Routine: ClearGameRam +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearGameRam: + lda #$00 ; CPU:$845D PRG:045D A9 00 + sta Zp00 ; CPU:$845F PRG:045F 85 00 + sta Zp01 ; CPU:$8461 PRG:0461 85 01 + ldy #$DE ; CPU:$8463 PRG:0463 A0 DE +; ----------------------------------------------------------------------------- +; Routine: ClearGameRam_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearGameRam_OnNonzero: + sta (Zp00),y ; CPU:$8465 PRG:0465 91 00 + dey ; CPU:$8467 PRG:0467 88 + bne ClearGameRam_OnNonzero ; CPU:$8468 PRG:0468 D0 FB + lda #$00 ; CPU:$846A PRG:046A A9 00 + ldy #$00 ; CPU:$846C PRG:046C A0 00 +; ----------------------------------------------------------------------------- +; Routine: ClearGameRam_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearGameRam_OnNonzero2: + sta a:SoundPlayingFlags,y ; CPU:$846E PRG:046E 99 E0 00 + iny ; CPU:$8471 PRG:0471 C8 + cpy #$20 ; CPU:$8472 PRG:0472 C0 20 + bne ClearGameRam_OnNonzero2 ; CPU:$8474 PRG:0474 D0 F8 + lda #$03 ; CPU:$8476 PRG:0476 A9 03 + sta Zp01 ; CPU:$8478 PRG:0478 85 01 + lda #$00 ; CPU:$847A PRG:047A A9 00 + ldx #$05 ; CPU:$847C PRG:047C A2 05 + ldy #$00 ; CPU:$847E PRG:047E A0 00 +; ----------------------------------------------------------------------------- +; Routine: ClearGameRam_OnNonzero3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearGameRam_OnNonzero3: + sta (Zp00),y ; CPU:$8480 PRG:0480 91 00 + dey ; CPU:$8482 PRG:0482 88 + bne ClearGameRam_OnNonzero3 ; CPU:$8483 PRG:0483 D0 FB + inc Zp01 ; CPU:$8485 PRG:0485 E6 01 + dex ; CPU:$8487 PRG:0487 CA + bne ClearGameRam_OnNonzero3 ; CPU:$8488 PRG:0488 D0 F6 + lda #$55 ; CPU:$848A PRG:048A A9 55 + sta GameInitializedFlag ; CPU:$848C PRG:048C 85 DE + rts ; CPU:$848E PRG:048E 60 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamA: + lda #$FF ; CPU:$848F PRG:048F A9 FF + sta OamDirty ; CPU:$8491 PRG:0491 85 44 + ldx #$20 ; CPU:$8493 PRG:0493 A2 20 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamA_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamA_OnNonzero: + lda $8510,x ; CPU:$8495 PRG:0495 BD 10 85 + sta $03FF,x ; CPU:$8498 PRG:0498 9D FF 03 + dex ; CPU:$849B PRG:049B CA + bne LoadSpriteTableTeamA_OnNonzero ; CPU:$849C PRG:049C D0 F7 + rts ; CPU:$849E PRG:049E 60 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamB: + lda #$FF ; CPU:$849F PRG:049F A9 FF + sta OamDirty ; CPU:$84A1 PRG:04A1 85 44 + ldx #$20 ; CPU:$84A3 PRG:04A3 A2 20 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamB_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamB_OnNonzero: + lda $8530,x ; CPU:$84A5 PRG:04A5 BD 30 85 + sta $03FF,x ; CPU:$84A8 PRG:04A8 9D FF 03 + dex ; CPU:$84AB PRG:04AB CA + bne LoadSpriteTableTeamB_OnNonzero ; CPU:$84AC PRG:04AC D0 F7 + rts ; CPU:$84AE PRG:04AE 60 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamC: + lda #$FF ; CPU:$84AF PRG:04AF A9 FF + sta OamDirty ; CPU:$84B1 PRG:04B1 85 44 + ldx #$20 ; CPU:$84B3 PRG:04B3 A2 20 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamC_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamC_OnNonzero: + lda $8550,x ; CPU:$84B5 PRG:04B5 BD 50 85 + sta $03FF,x ; CPU:$84B8 PRG:04B8 9D FF 03 + dex ; CPU:$84BB PRG:04BB CA + bne LoadSpriteTableTeamC_OnNonzero ; CPU:$84BC PRG:04BC D0 F7 + rts ; CPU:$84BE PRG:04BE 60 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamD: + lda #$FF ; CPU:$84BF PRG:04BF A9 FF + sta OamDirty ; CPU:$84C1 PRG:04C1 85 44 + ldx #$20 ; CPU:$84C3 PRG:04C3 A2 20 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamD_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamD_OnNonzero: + lda $8570,x ; CPU:$84C5 PRG:04C5 BD 70 85 + sta $03FF,x ; CPU:$84C8 PRG:04C8 9D FF 03 + dex ; CPU:$84CB PRG:04CB CA + bne LoadSpriteTableTeamD_OnNonzero ; CPU:$84CC PRG:04CC D0 F7 + rts ; CPU:$84CE PRG:04CE 60 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamE: + lda #$FF ; CPU:$84CF PRG:04CF A9 FF + sta OamDirty ; CPU:$84D1 PRG:04D1 85 44 + ldx #$20 ; CPU:$84D3 PRG:04D3 A2 20 +; ----------------------------------------------------------------------------- +; Routine: LoadSpriteTableTeamE_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSpriteTableTeamE_OnNonzero: + lda $8590,x ; CPU:$84D5 PRG:04D5 BD 90 85 + sta $03FF,x ; CPU:$84D8 PRG:04D8 9D FF 03 + dex ; CPU:$84DB PRG:04DB CA + bne LoadSpriteTableTeamE_OnNonzero ; CPU:$84DC PRG:04DC D0 F7 + rts ; CPU:$84DE PRG:04DE 60 +; ----------------------------------------------------------------------------- +; Routine: UploadOamShadowToPpu +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UploadOamShadowToPpu: + lda OamDirty ; CPU:$84DF PRG:04DF A5 44 + bne UploadOamShadowToPpu_Loop ; CPU:$84E1 PRG:04E1 D0 01 + rts ; CPU:$84E3 PRG:04E3 60 +; ----------------------------------------------------------------------------- +; Routine: UploadOamShadowToPpu_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UploadOamShadowToPpu_Loop: + lda PPUSTATUS ; CPU:$84E4 PRG:04E4 AD 02 20 + lda #$3F ; CPU:$84E7 PRG:04E7 A9 3F + sta PPUADDR ; CPU:$84E9 PRG:04E9 8D 06 20 + lda #$00 ; CPU:$84EC PRG:04EC A9 00 + sta PPUADDR ; CPU:$84EE PRG:04EE 8D 06 20 + ldx #$20 ; CPU:$84F1 PRG:04F1 A2 20 +; ----------------------------------------------------------------------------- +; Routine: UploadOamShadowToPpu_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UploadOamShadowToPpu_OnNonzero: + lda $03FF,x ; CPU:$84F3 PRG:04F3 BD FF 03 + sta PPUDATA ; CPU:$84F6 PRG:04F6 8D 07 20 + dex ; CPU:$84F9 PRG:04F9 CA + bne UploadOamShadowToPpu_OnNonzero ; CPU:$84FA PRG:04FA D0 F7 + lda #$3F ; CPU:$84FC PRG:04FC A9 3F + sta PPUADDR ; CPU:$84FE PRG:04FE 8D 06 20 + lda #$00 ; CPU:$8501 PRG:0501 A9 00 + sta PPUADDR ; CPU:$8503 PRG:0503 8D 06 20 + sta PPUADDR ; CPU:$8506 PRG:0506 8D 06 20 + sta PPUADDR ; CPU:$8509 PRG:0509 8D 06 20 + lda #$00 ; CPU:$850C PRG:050C A9 00 + sta OamDirty ; CPU:$850E PRG:050E 85 44 + rts ; CPU:$8510 PRG:0510 60 +; ---- data $8511-$85B0 (160 bytes) ---- +; Five 32-byte sprite tables, one per player slot, copied into the OAM +; shadow at $03FF by LoadSpriteTableTeamA..LoadSpriteTableTeamE. +PlayerSpriteTables: +; referenced by `lda $8530,x` at $84A5 (operand $8530 falls inside this region) +; referenced by `lda $8550,x` at $84B5 (operand $8550 falls inside this region) +; referenced by `lda $8570,x` at $84C5 (operand $8570 falls inside this region) +; referenced by `lda $8590,x` at $84D5 (operand $8590 falls inside this region) + .byte $19, $15, $11, $0F, $20, $10, $00, $0F, $27, $21, $0F, $0F, $30, $0F, $27, $0F ; CPU:$8511 PRG:0511 19 15 11 0F 20 10 00 0F 27 21 0F 0F 30 0F 27 0F + .byte $1C, $1C, $30, $0F, $1C, $36, $30, $0F, $08, $18, $18, $0F, $1C, $3A, $30, $0F ; CPU:$8521 PRG:0521 1C 1C 30 0F 1C 36 30 0F 08 18 18 0F 1C 3A 30 0F + .byte $19, $15, $11, $0F, $20, $10, $00, $0F, $27, $21, $0F, $0F, $30, $0F, $27, $0F ; CPU:$8531 PRG:0531 19 15 11 0F 20 10 00 0F 27 21 0F 0F 30 0F 27 0F + .byte $1C, $1C, $30, $0F, $1C, $36, $30, $0F, $08, $36, $18, $0F, $1C, $3A, $30, $0F ; CPU:$8541 PRG:0541 1C 1C 30 0F 1C 36 30 0F 08 36 18 0F 1C 3A 30 0F + .byte $19, $15, $11, $0F, $20, $10, $00, $0F, $27, $21, $0F, $0F, $30, $0F, $27, $0F ; CPU:$8551 PRG:0551 19 15 11 0F 20 10 00 0F 27 21 0F 0F 30 0F 27 0F + .byte $1C, $1C, $30, $0F, $1C, $36, $30, $0F, $08, $26, $18, $0F, $1C, $3A, $30, $0F ; CPU:$8561 PRG:0561 1C 1C 30 0F 1C 36 30 0F 08 26 18 0F 1C 3A 30 0F + .byte $19, $15, $11, $0F, $20, $10, $00, $0F, $27, $21, $0F, $0F, $30, $0F, $27, $0F ; CPU:$8571 PRG:0571 19 15 11 0F 20 10 00 0F 27 21 0F 0F 30 0F 27 0F + .byte $1C, $1C, $30, $0F, $1C, $36, $30, $0F, $08, $36, $18, $0F, $1C, $3A, $30, $0F ; CPU:$8581 PRG:0581 1C 1C 30 0F 1C 36 30 0F 08 36 18 0F 1C 3A 30 0F + .byte $34, $16, $0F, $0F, $20, $10, $00, $0F, $27, $21, $0F, $0F, $30, $0F, $27, $0F ; CPU:$8591 PRG:0591 34 16 0F 0F 20 10 00 0F 27 21 0F 0F 30 0F 27 0F + .byte $26, $30, $11, $0F, $30, $27, $0B, $0F, $08, $28, $18, $0F, $30, $27, $1C, $0F ; CPU:$85A1 PRG:05A1 26 30 11 0F 30 27 0B 0F 08 28 18 0F 30 27 1C 0F +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: DispatchGameState +; Global: The state dispatcher. It looks the game state up in +; GameStateDispatchTable, loads the 16-bit entry into $04/$05 and jumps +; to it, handing the sub-state over in X. +; Local: Called once per frame from the NMI handler. +; Parameters: the game state in $2B and the sub-state in $2C +; Returns: nothing; it never returns to its caller +; Clobbers: A, X, Y, $04, $05, $25, $26, $28, $29. +; ----------------------------------------------------------------------------- +DispatchGameState: + lda #$E1 ; CPU:$85B1 PRG:05B1 A9 E1 + sta StateTablePtrLo ; CPU:$85B3 PRG:05B3 85 25 + lda #$85 ; CPU:$85B5 PRG:05B5 A9 85 + sta StateTablePtrHi ; CPU:$85B7 PRG:05B7 85 26 + lda GameState ; CPU:$85B9 PRG:05B9 A5 2B + clc ; CPU:$85BB PRG:05BB 18 + rol a ; CPU:$85BC PRG:05BC 2A + sta StateTableIndexLo ; CPU:$85BD PRG:05BD 85 28 + lda #$00 ; CPU:$85BF PRG:05BF A9 00 + sta StateTableIndexHi ; CPU:$85C1 PRG:05C1 85 29 + clc ; CPU:$85C3 PRG:05C3 18 + cld ; CPU:$85C4 PRG:05C4 D8 + lda StateTablePtrLo ; CPU:$85C5 PRG:05C5 A5 25 + adc StateTableIndexLo ; CPU:$85C7 PRG:05C7 65 28 + sta StateTablePtrLo ; CPU:$85C9 PRG:05C9 85 25 + lda StateTablePtrHi ; CPU:$85CB PRG:05CB A5 26 + adc StateTableIndexHi ; CPU:$85CD PRG:05CD 65 29 + sta StateTablePtrHi ; CPU:$85CF PRG:05CF 85 26 + ldy #$00 ; CPU:$85D1 PRG:05D1 A0 00 + lda (StateTablePtrLo),y ; CPU:$85D3 PRG:05D3 B1 25 + sta JumpTargetLo ; CPU:$85D5 PRG:05D5 85 04 + iny ; CPU:$85D7 PRG:05D7 C8 + lda (StateTablePtrLo),y ; CPU:$85D8 PRG:05D8 B1 25 + sta JumpTargetHi ; CPU:$85DA PRG:05DA 85 05 + ldx GameSubState ; CPU:$85DC PRG:05DC A6 2C + jmp (JumpTargetLo) ; CPU:$85DE PRG:05DE 6C 04 00 +; ---- data $85E1-$85F6 (22 bytes) ---- +; Eleven 16-bit entry points indexed by the game state in $2B. +; DispatchGameState loads the entry into $04/$05 and jumps through it +; with `JMP ($0004)`, passing the sub-state in X. +GameStateDispatchTable: + .byte $11, $86, $43, $87, $21, $88, $43, $88, $7D, $88, $51, $89, $47, $8B, $8A, $8C ; CPU:$85E1 PRG:05E1 11 86 43 87 21 88 43 88 7D 88 51 89 47 8B 8A 8C + .byte $65, $8D, $09, $8E, $4D, $8E ; CPU:$85F1 PRG:05F1 65 8D 09 8E 4D 8E +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: DecrementStateTimer +; Global: Counts the 16-bit state timer down; when it reaches zero the +; sub-state is advanced. +; Local: Called by the state handlers that wait for a while. +; Parameters: none +; Returns: nothing +; Clobbers: the state timer in $02/$03 and the sub-state in $2C. +; ----------------------------------------------------------------------------- +DecrementStateTimer: + dec StateTimerLo ; CPU:$85F7 PRG:05F7 C6 02 + bne DecrementStateTimer_Loop ; CPU:$85F9 PRG:05F9 D0 04 + dec StateTimerHi ; CPU:$85FB PRG:05FB C6 03 + beq AdvanceSubState ; CPU:$85FD PRG:05FD F0 01 +; ----------------------------------------------------------------------------- +; Routine: DecrementStateTimer_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DecrementStateTimer_Loop: + rts ; CPU:$85FF PRG:05FF 60 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: AdvanceSubState +; Global: Moves the state machine on to the next sub-state of the current +; state. +; Local: Called by the state handlers at the end of their work. +; Parameters: none +; Returns: nothing +; Clobbers: the game sub-state in $2C. +; ----------------------------------------------------------------------------- +AdvanceSubState: + inc GameSubState ; CPU:$8600 PRG:0600 E6 2C + rts ; CPU:$8602 PRG:0602 60 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: AdvanceGameState +; Global: Moves the state machine on to the next game state and clears the +; sub-state. +; Local: Called by the state handlers at the end of their work. +; Parameters: none +; Returns: nothing +; Clobbers: the game state in $2B and the sub-state in $2C. +; ----------------------------------------------------------------------------- +AdvanceGameState: + lda #$00 ; CPU:$8603 PRG:0603 A9 00 + sta GameSubState ; CPU:$8605 PRG:0605 85 2C + inc GameState ; CPU:$8607 PRG:0607 E6 2B + rts ; CPU:$8609 PRG:0609 60 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: SetGameState +; Global: Selects a new game state; A holds the new state number. +; Local: Called by the state handlers. +; Parameters: the new state in A +; Returns: nothing +; Clobbers: the game state in $2B and the sub-state in $2C. +; ----------------------------------------------------------------------------- +SetGameState: + sta GameState ; CPU:$860A PRG:060A 85 2B + lda #$00 ; CPU:$860C PRG:060C A9 00 + sta GameSubState ; CPU:$860E PRG:060E 85 2C + rts ; CPU:$8610 PRG:0610 60 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateTitleScreenInit +; Global: First phase of the title screen: clears the game state, queues the +; intro VRAM script, loads the sprite tables and starts the match +; structures. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateTitleScreenInit: + inx ; CPU:$8611 PRG:0611 E8 + dex ; CPU:$8612 PRG:0612 CA + beq TitleInit_ClearGameState ; CPU:$8613 PRG:0613 F0 1B + dex ; CPU:$8615 PRG:0615 CA + beq TitleInit_QueueIntroScript ; CPU:$8616 PRG:0616 F0 4E + dex ; CPU:$8618 PRG:0618 CA + beq TitleInit_LoadSprites ; CPU:$8619 PRG:0619 F0 5A + dex ; CPU:$861B PRG:061B CA + beq TitleInit_SetWaitTimer ; CPU:$861C PRG:061C F0 5D + dex ; CPU:$861E PRG:061E CA + beq TitleInit_WaitTimer ; CPU:$861F PRG:061F F0 65 + dex ; CPU:$8621 PRG:0621 CA + beq TitleInit_StartMatchSetup ; CPU:$8622 PRG:0622 F0 65 + dex ; CPU:$8624 PRG:0624 CA + bne StateTitleScreenInit_Loop ; CPU:$8625 PRG:0625 D0 03 + jmp TitleInit_AttractLoop ; CPU:$8627 PRG:0627 4C 9B 86 +; ----------------------------------------------------------------------------- +; Routine: StateTitleScreenInit_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateTitleScreenInit_Loop: + dex ; CPU:$862A PRG:062A CA + bne TitleInit_ClearGameState ; CPU:$862B PRG:062B D0 03 + jmp TitleInit_SwitchToDemoState ; CPU:$862D PRG:062D 4C 3E 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_ClearGameState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_ClearGameState: + lda #$00 ; CPU:$8630 PRG:0630 A9 00 + sta DemoModeFlag ; CPU:$8632 PRG:0632 85 81 + sta CrowdOffsetA ; CPU:$8634 PRG:0634 85 85 + sta Zp86 ; CPU:$8636 PRG:0636 85 86 + sta TitleFlag ; CPU:$8638 PRG:0638 85 8D + sta Zp88 ; CPU:$863A PRG:063A 85 88 + sta CrowdAnimationCounter ; CPU:$863C PRG:063C 8D 88 05 + sta ServeReady ; CPU:$863F PRG:063F 85 7E + sta IndicatorEnable ; CPU:$8641 PRG:0641 85 7B + sta CrowdFlagsA ; CPU:$8643 PRG:0643 85 50 + sta CrowdFlagsB ; CPU:$8645 PRG:0645 85 51 + sta BallInPlayFlag ; CPU:$8647 PRG:0647 85 8E + lda GameInitializedFlag ; CPU:$8649 PRG:0649 A5 DE + beq TitleInit_ClearGameState_Loop ; CPU:$864B PRG:064B F0 10 + lda #$00 ; CPU:$864D PRG:064D A9 00 + sta APUSTATUS ; CPU:$864F PRG:064F 8D 15 40 + lda #$08 ; CPU:$8652 PRG:0652 A9 08 + sta MusicCommand ; CPU:$8654 PRG:0654 85 EB + lda #$07 ; CPU:$8656 PRG:0656 A9 07 + sta Zp3E ; CPU:$8658 PRG:0658 85 3E + jsr StopAllSounds ; CPU:$865A PRG:065A 20 4E DC +; ----------------------------------------------------------------------------- +; Routine: TitleInit_ClearGameState_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_ClearGameState_Loop: + jsr ClearScreensForNewGame ; CPU:$865D PRG:065D 20 78 83 + jsr InitPlayerStructs ; CPU:$8660 PRG:0660 20 1E 93 + jmp AdvanceSubState ; CPU:$8663 PRG:0663 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_QueueIntroScript +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_QueueIntroScript: + lda #$C0 ; CPU:$8666 PRG:0666 A9 C0 + sta VramScriptPtrLo ; CPU:$8668 PRG:0668 85 41 + lda #$DC ; CPU:$866A PRG:066A A9 DC + sta VramScriptPtrHi ; CPU:$866C PRG:066C 85 42 + lda #$FF ; CPU:$866E PRG:066E A9 FF + sta VramUpdatePending ; CPU:$8670 PRG:0670 85 40 + jmp AdvanceSubState ; CPU:$8672 PRG:0672 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_LoadSprites +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_LoadSprites: + jsr LoadSpriteTableTeamA ; CPU:$8675 PRG:0675 20 8F 84 + jmp AdvanceSubState ; CPU:$8678 PRG:0678 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_SetWaitTimer +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_SetWaitTimer: + lda #$08 ; CPU:$867B PRG:067B A9 08 + sta StateTimerLo ; CPU:$867D PRG:067D 85 02 + lda #$01 ; CPU:$867F PRG:067F A9 01 + sta StateTimerHi ; CPU:$8681 PRG:0681 85 03 + jmp AdvanceSubState ; CPU:$8683 PRG:0683 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_WaitTimer +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_WaitTimer: + jmp DecrementStateTimer ; CPU:$8686 PRG:0686 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_StartMatchSetup +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_StartMatchSetup: + lda #$20 ; CPU:$8689 PRG:0689 A9 20 + sta StateTimerLo ; CPU:$868B PRG:068B 85 02 + lda #$03 ; CPU:$868D PRG:068D A9 03 + sta StateTimerHi ; CPU:$868F PRG:068F 85 03 + lda #$1A ; CPU:$8691 PRG:0691 A9 1A + sta PpuMaskShadow ; CPU:$8693 PRG:0693 85 1A + jsr InitMatchStructs ; CPU:$8695 PRG:0695 20 01 90 + jmp AdvanceSubState ; CPU:$8698 PRG:0698 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_AttractLoop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_AttractLoop: + lda FrameCounter ; CPU:$869B PRG:069B A5 2D + and #$01 ; CPU:$869D PRG:069D 29 01 + beq TitleInit_AttractLoop_Loop4 ; CPU:$869F PRG:069F F0 26 + lda FrameCounter ; CPU:$86A1 PRG:06A1 A5 2D + and #$18 ; CPU:$86A3 PRG:06A3 29 18 + beq TitleInit_AttractLoop_Loop ; CPU:$86A5 PRG:06A5 F0 0E + cmp #$08 ; CPU:$86A7 PRG:06A7 C9 08 + beq TitleInit_AttractLoop_Loop2 ; CPU:$86A9 PRG:06A9 F0 10 + cmp #$10 ; CPU:$86AB PRG:06AB C9 10 + beq TitleInit_AttractLoop_Loop3 ; CPU:$86AD PRG:06AD F0 12 + jsr LoadSpriteTableTeamD ; CPU:$86AF PRG:06AF 20 BF 84 + jmp TitleInit_SelectSlotTwo ; CPU:$86B2 PRG:06B2 4C 1A 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_AttractLoop_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_AttractLoop_Loop: + jsr LoadSpriteTableTeamA ; CPU:$86B5 PRG:06B5 20 8F 84 + jmp TitleInit_SelectSlotTwo ; CPU:$86B8 PRG:06B8 4C 1A 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_AttractLoop_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_AttractLoop_Loop2: + jsr LoadSpriteTableTeamB ; CPU:$86BB PRG:06BB 20 9F 84 + jmp TitleInit_SelectSlotTwo ; CPU:$86BE PRG:06BE 4C 1A 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_AttractLoop_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_AttractLoop_Loop3: + jsr LoadSpriteTableTeamC ; CPU:$86C1 PRG:06C1 20 AF 84 + jmp TitleInit_SelectSlotTwo ; CPU:$86C4 PRG:06C4 4C 1A 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_AttractLoop_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_AttractLoop_Loop4: + lda ButtonsPlayer1Pressed ; CPU:$86C7 PRG:06C7 A5 1D + and #$20 ; CPU:$86C9 PRG:06C9 29 20 + beq TitleInit_AttractLoop_Loop5 ; CPU:$86CB PRG:06CB F0 15 + lda #$20 ; CPU:$86CD PRG:06CD A9 20 + sta StateTimerLo ; CPU:$86CF PRG:06CF 85 02 + lda #$03 ; CPU:$86D1 PRG:06D1 A9 03 + sta StateTimerHi ; CPU:$86D3 PRG:06D3 85 03 + lda #$01 ; CPU:$86D5 PRG:06D5 A9 01 + sta ApplauseCommand ; CPU:$86D7 PRG:06D7 85 ED + lda TitleFlag ; CPU:$86D9 PRG:06D9 A5 8D + eor #$FF ; CPU:$86DB PRG:06DB 49 FF + sta TitleFlag ; CPU:$86DD PRG:06DD 85 8D + jmp TitleInit_SelectSlotTwo ; CPU:$86DF PRG:06DF 4C 1A 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_AttractLoop_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_AttractLoop_Loop5: + lda ButtonsPlayer1Pressed ; CPU:$86E2 PRG:06E2 A5 1D + and #$10 ; CPU:$86E4 PRG:06E4 29 10 + bne TitleInit_AttractLoop_Loop6 ; CPU:$86E6 PRG:06E6 D0 03 + jmp TitleInit_SelectSlotTwo ; CPU:$86E8 PRG:06E8 4C 1A 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_AttractLoop_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_AttractLoop_Loop6: + lda TitleFlag ; CPU:$86EB PRG:06EB A5 8D + bne TitleInit_AttractLoop_Loop7 ; CPU:$86ED PRG:06ED D0 0D + lda #$00 ; CPU:$86EF PRG:06EF A9 00 + sta DemoModeFlag ; CPU:$86F1 PRG:06F1 85 81 + sta DemoCounterA ; CPU:$86F3 PRG:06F3 85 82 + sta DemoCounterB ; CPU:$86F5 PRG:06F5 85 83 + lda #$01 ; CPU:$86F7 PRG:06F7 A9 01 + jmp SetGameState ; CPU:$86F9 PRG:06F9 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_AttractLoop_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_AttractLoop_Loop7: + lda #$00 ; CPU:$86FC PRG:06FC A9 00 + sta CrowdOffsetB ; CPU:$86FE PRG:06FE 85 87 + lda #$0F ; CPU:$8700 PRG:0700 A9 0F + sta PlayerCount ; CPU:$8702 PRG:0702 85 2E + lda #$07 ; CPU:$8704 PRG:0704 A9 07 + sta Zp6D ; CPU:$8706 PRG:0706 85 6D + sta TeamNumber ; CPU:$8708 PRG:0708 85 66 + jsr LoadBackgroundTilemap ; CPU:$870A PRG:070A 20 39 DB + lda #$00 ; CPU:$870D PRG:070D A9 00 + sta DemoModeFlag ; CPU:$870F PRG:070F 85 81 + sta DemoCounterA ; CPU:$8711 PRG:0711 85 82 + sta DemoCounterB ; CPU:$8713 PRG:0713 85 83 + lda #$02 ; CPU:$8715 PRG:0715 A9 02 + jmp SetGameState ; CPU:$8717 PRG:0717 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_SelectSlotTwo +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_SelectSlotTwo: + lda #$02 ; CPU:$871A PRG:071A A9 02 + sta Zp00 ; CPU:$871C PRG:071C 85 00 + lda TitleFlag ; CPU:$871E PRG:071E A5 8D + bne TitleInit_SelectSlotTwo_Loop ; CPU:$8720 PRG:0720 D0 05 + lda #$30 ; CPU:$8722 PRG:0722 A9 30 + jmp TitleInit_SetNumberTile ; CPU:$8724 PRG:0724 4C 29 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_SelectSlotTwo_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_SelectSlotTwo_Loop: + lda #$80 ; CPU:$8727 PRG:0727 A9 80 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_SetNumberTile +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_SetNumberTile: + sta NumberTileRow ; CPU:$8729 PRG:0729 85 18 + lda #$B4 ; CPU:$872B PRG:072B A9 B4 + sta NumberTileColumn ; CPU:$872D PRG:072D 85 15 + lda FrameCounter ; CPU:$872F PRG:072F A5 2D + and #$18 ; CPU:$8731 PRG:0731 29 18 + sta SpriteOffsetIndex ; CPU:$8733 PRG:0733 85 46 + jsr LoadTeamSpriteOffsets ; CPU:$8735 PRG:0735 20 F8 C2 + jsr UpdateMatchStructs ; CPU:$8738 PRG:0738 20 3E 90 + jmp DecrementStateTimer ; CPU:$873B PRG:073B 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_SwitchToDemoState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_SwitchToDemoState: + lda #$09 ; CPU:$873E PRG:073E A9 09 + jmp SetGameState ; CPU:$8740 PRG:0740 4C 0A 86 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateTitleScreen +; Global: The title screen itself: it waits for START, then hands over to the +; attract demo. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateTitleScreen: + inx ; CPU:$8743 PRG:0743 E8 + dex ; CPU:$8744 PRG:0744 CA + beq Title_WaitForStartPress ; CPU:$8745 PRG:0745 F0 0C + dex ; CPU:$8747 PRG:0747 CA + beq Title_StartDemoCountdown ; CPU:$8748 PRG:0748 F0 0F + dex ; CPU:$874A PRG:074A CA + beq Title_StartDemoCountdown_Loop ; CPU:$874B PRG:074B F0 1F + dex ; CPU:$874D PRG:074D CA + beq Title_StartDemoCountdown_Loop2 ; CPU:$874E PRG:074E F0 25 + dex ; CPU:$8750 PRG:0750 CA + beq Title_StartDemoCountdown_Loop4 ; CPU:$8751 PRG:0751 F0 2F +; ----------------------------------------------------------------------------- +; Routine: Title_WaitForStartPress +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_WaitForStartPress: + jsr InitMatchPlayers ; CPU:$8753 PRG:0753 20 C0 90 + jmp AdvanceSubState ; CPU:$8756 PRG:0756 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown: + lda #$08 ; CPU:$8759 PRG:0759 A9 08 + sta MusicCommand ; CPU:$875B PRG:075B 85 EB + lda #$80 ; CPU:$875D PRG:075D A9 80 + sta StateTimerLo ; CPU:$875F PRG:075F 85 02 + lda #$01 ; CPU:$8761 PRG:0761 A9 01 + sta StateTimerHi ; CPU:$8763 PRG:0763 85 03 + lda #$FE ; CPU:$8765 PRG:0765 A9 FE + sta ScrollTargetX ; CPU:$8767 PRG:0767 85 4F + jmp AdvanceSubState ; CPU:$8769 PRG:0769 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown_Loop: + jsr BallAnimationCheckScroll ; CPU:$876C PRG:076C 20 92 C2 + jsr LoadTeamSprites ; CPU:$876F PRG:076F 20 62 92 + jmp DecrementStateTimer ; CPU:$8772 PRG:0772 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown_Loop2: + jsr LoadTeamSprites ; CPU:$8775 PRG:0775 20 62 92 + lda GameInitializedFlag ; CPU:$8778 PRG:0778 A5 DE + beq Title_StartDemoCountdown_Loop3 ; CPU:$877A PRG:077A F0 03 + jmp AdvanceSubState ; CPU:$877C PRG:077C 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown_Loop3: + jmp AdvanceSubState ; CPU:$877F PRG:077F 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown_Loop4: + lda FrameCounter ; CPU:$8782 PRG:0782 A5 2D + and #$01 ; CPU:$8784 PRG:0784 29 01 + bne Title_StartDemoCountdown_Loop5 ; CPU:$8786 PRG:0786 D0 0C + jsr UpdatePlayerInput ; CPU:$8788 PRG:0788 20 D9 90 + lda ButtonsPlayer1Pressed ; CPU:$878B PRG:078B A5 1D + and #$10 ; CPU:$878D PRG:078D 29 10 + beq Title_StartDemoCountdown_Loop5 ; CPU:$878F PRG:078F F0 03 + jmp TitleInit_GoToModeSelect ; CPU:$8791 PRG:0791 4C 19 88 +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown_Loop5: + jsr LoadTeamSprites ; CPU:$8794 PRG:0794 20 62 92 + jsr LoadBackgroundTilemap ; CPU:$8797 PRG:0797 20 39 DB + ldx CrowdOffsetB ; CPU:$879A PRG:079A A6 87 + beq Title_StartDemoCountdown_Loop6 ; CPU:$879C PRG:079C F0 09 + dex ; CPU:$879E PRG:079E CA + beq Title_StartDemoCountdown_Loop7 ; CPU:$879F PRG:079F F0 0F + dex ; CPU:$87A1 PRG:07A1 CA + beq Title_StartDemoCountdown_Loop8 ; CPU:$87A2 PRG:07A2 F0 15 + dex ; CPU:$87A4 PRG:07A4 CA + beq Title_StartDemoCountdown_Loop9 ; CPU:$87A5 PRG:07A5 F0 1B +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown_Loop6: + lda #$00 ; CPU:$87A7 PRG:07A7 A9 00 + sta CrowdOffsetA ; CPU:$87A9 PRG:07A9 85 85 + lda #$24 ; CPU:$87AB PRG:07AB A9 24 + jmp TitleInit_SetNumberTileB ; CPU:$87AD PRG:07AD 4C CB 87 +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown_Loop7: + lda #$01 ; CPU:$87B0 PRG:07B0 A9 01 + sta CrowdOffsetA ; CPU:$87B2 PRG:07B2 85 85 + lda #$34 ; CPU:$87B4 PRG:07B4 A9 34 + jmp TitleInit_SetNumberTileB ; CPU:$87B6 PRG:07B6 4C CB 87 +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown_Loop8: + lda #$00 ; CPU:$87B9 PRG:07B9 A9 00 + sta CrowdOffsetA ; CPU:$87BB PRG:07BB 85 85 + lda #$44 ; CPU:$87BD PRG:07BD A9 44 + jmp TitleInit_SetNumberTileB ; CPU:$87BF PRG:07BF 4C CB 87 +; ----------------------------------------------------------------------------- +; Routine: Title_StartDemoCountdown_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Title_StartDemoCountdown_Loop9: + lda #$01 ; CPU:$87C2 PRG:07C2 A9 01 + sta CrowdOffsetA ; CPU:$87C4 PRG:07C4 85 85 + lda #$54 ; CPU:$87C6 PRG:07C6 A9 54 + jmp TitleInit_SetNumberTileB ; CPU:$87C8 PRG:07C8 4C CB 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_SetNumberTileB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_SetNumberTileB: + sta NumberTileColumn ; CPU:$87CB PRG:07CB 85 15 + lda #$38 ; CPU:$87CD PRG:07CD A9 38 + sta NumberTileRow ; CPU:$87CF PRG:07CF 85 18 + lda FrameCounter ; CPU:$87D1 PRG:07D1 A5 2D + and #$18 ; CPU:$87D3 PRG:07D3 29 18 + sta SpriteOffsetIndex ; CPU:$87D5 PRG:07D5 85 46 + jsr LoadTeamSpriteOffsets ; CPU:$87D7 PRG:07D7 20 F8 C2 + lda #$20 ; CPU:$87DA PRG:07DA A9 20 + sta NumberTileRow ; CPU:$87DC PRG:07DC 85 18 + lda #$48 ; CPU:$87DE PRG:07DE A9 48 + sta NumberTileColumn ; CPU:$87E0 PRG:07E0 85 15 + lda FrameCounter ; CPU:$87E2 PRG:07E2 A5 2D + and #$08 ; CPU:$87E4 PRG:07E4 29 08 + bne TitleInit_SetNumberTileB_Loop ; CPU:$87E6 PRG:07E6 D0 05 + lda #$00 ; CPU:$87E8 PRG:07E8 A9 00 + jmp TitleInit_DrawNumberEven ; CPU:$87EA PRG:07EA 4C EF 87 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_SetNumberTileB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_SetNumberTileB_Loop: + lda #$52 ; CPU:$87ED PRG:07ED A9 52 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_DrawNumberEven +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_DrawNumberEven: + sta SpriteOffsetIndex ; CPU:$87EF PRG:07EF 85 46 + lda #$00 ; CPU:$87F1 PRG:07F1 A9 00 + sta NumberParity ; CPU:$87F3 PRG:07F3 85 84 + jsr DrawNumberSprite ; CPU:$87F5 PRG:07F5 20 56 C5 + lda #$D0 ; CPU:$87F8 PRG:07F8 A9 D0 + sta NumberTileRow ; CPU:$87FA PRG:07FA 85 18 + lda #$48 ; CPU:$87FC PRG:07FC A9 48 + sta NumberTileColumn ; CPU:$87FE PRG:07FE 85 15 + lda FrameCounter ; CPU:$8800 PRG:0800 A5 2D + and #$08 ; CPU:$8802 PRG:0802 29 08 + bne TitleInit_DrawNumberEven_Loop ; CPU:$8804 PRG:0804 D0 05 + lda #$01 ; CPU:$8806 PRG:0806 A9 01 + jmp TitleInit_DrawNumberOdd ; CPU:$8808 PRG:0808 4C 0D 88 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_DrawNumberEven_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_DrawNumberEven_Loop: + lda #$53 ; CPU:$880B PRG:080B A9 53 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_DrawNumberOdd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_DrawNumberOdd: + sta SpriteOffsetIndex ; CPU:$880D PRG:080D 85 46 + lda #$01 ; CPU:$880F PRG:080F A9 01 + sta NumberParity ; CPU:$8811 PRG:0811 85 84 + jsr DrawNumberSprite ; CPU:$8813 PRG:0813 20 56 C5 + jmp DecrementStateTimer_Loop ; CPU:$8816 PRG:0816 4C FF 85 +; ----------------------------------------------------------------------------- +; Routine: TitleInit_GoToModeSelect +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TitleInit_GoToModeSelect: + jsr LoadBackgroundTilemap ; CPU:$8819 PRG:0819 20 39 DB + lda #$02 ; CPU:$881C PRG:081C A9 02 + jmp SetGameState ; CPU:$881E PRG:081E 4C 0A 86 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateModeSelect +; Global: The PLAY / SELECT screen with the four game modes and the ten +; nations; the player picks a mode and a country here. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateModeSelect: + inx ; CPU:$8821 PRG:0821 E8 + dex ; CPU:$8822 PRG:0822 CA + beq StateModeSelect_Loop ; CPU:$8823 PRG:0823 F0 09 + dex ; CPU:$8825 PRG:0825 CA + beq StateModeSelect_Loop2 ; CPU:$8826 PRG:0826 F0 12 + dex ; CPU:$8828 PRG:0828 CA + beq StateModeSelect_Loop3 ; CPU:$8829 PRG:0829 F0 12 + dex ; CPU:$882B PRG:082B CA + beq StateModeSelect_Loop4 ; CPU:$882C PRG:082C F0 12 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelect_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelect_Loop: + jsr ClearScreensForNewGame ; CPU:$882E PRG:082E 20 78 83 + lda #$78 ; CPU:$8831 PRG:0831 A9 78 + sta ScrollTargetX ; CPU:$8833 PRG:0833 85 4F + sta ScrollX ; CPU:$8835 PRG:0835 85 06 + jmp AdvanceSubState ; CPU:$8837 PRG:0837 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelect_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelect_Loop2: + jmp AdvanceSubState ; CPU:$883A PRG:083A 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelect_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelect_Loop3: + jmp AdvanceSubState ; CPU:$883D PRG:083D 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelect_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelect_Loop4: + jmp AdvanceGameState ; CPU:$8840 PRG:0840 4C 03 86 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelectToMatch +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelectToMatch: + inx ; CPU:$8843 PRG:0843 E8 + dex ; CPU:$8844 PRG:0844 CA + beq StateModeSelectToMatch_Loop ; CPU:$8845 PRG:0845 F0 0F + dex ; CPU:$8847 PRG:0847 CA + beq StateModeSelectToMatch_Loop2 ; CPU:$8848 PRG:0848 F0 0F + dex ; CPU:$884A PRG:084A CA + beq StateModeSelectToMatch_Loop3 ; CPU:$884B PRG:084B F0 12 + dex ; CPU:$884D PRG:084D CA + beq StateModeSelectToMatch_Loop4 ; CPU:$884E PRG:084E F0 15 + dex ; CPU:$8850 PRG:0850 CA + beq StateModeSelectToMatch_Loop5 ; CPU:$8851 PRG:0851 F0 1D + dex ; CPU:$8853 PRG:0853 CA + beq StateModeSelectToMatch_Loop6 ; CPU:$8854 PRG:0854 F0 1D +; ----------------------------------------------------------------------------- +; Routine: StateModeSelectToMatch_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelectToMatch_Loop: + jmp AdvanceSubState ; CPU:$8856 PRG:0856 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelectToMatch_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelectToMatch_Loop2: + jsr LoadSpriteTableTeamE ; CPU:$8859 PRG:0859 20 CF 84 + jmp AdvanceSubState ; CPU:$885C PRG:085C 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelectToMatch_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelectToMatch_Loop3: + jsr QueueTitleScript ; CPU:$885F PRG:085F 20 D0 92 + jmp AdvanceSubState ; CPU:$8862 PRG:0862 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelectToMatch_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelectToMatch_Loop4: + lda #$08 ; CPU:$8865 PRG:0865 A9 08 + sta StateTimerLo ; CPU:$8867 PRG:0867 85 02 + lda #$01 ; CPU:$8869 PRG:0869 A9 01 + sta StateTimerHi ; CPU:$886B PRG:086B 85 03 + jmp AdvanceSubState ; CPU:$886D PRG:086D 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelectToMatch_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelectToMatch_Loop5: + jmp DecrementStateTimer ; CPU:$8870 PRG:0870 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: StateModeSelectToMatch_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateModeSelectToMatch_Loop6: + lda #$1A ; CPU:$8873 PRG:0873 A9 1A + sta PpuMaskShadow ; CPU:$8875 PRG:0875 85 1A + jsr DrawPlayersAndCrowd ; CPU:$8877 PRG:0877 20 56 D8 + jmp AdvanceGameState ; CPU:$887A PRG:087A 4C 03 86 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateCourtSetup +; Global: Brings the teams on to the court before the first serve. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateCourtSetup: + inx ; CPU:$887D PRG:087D E8 + dex ; CPU:$887E PRG:087E CA + beq StateCourtSetup_Loop3 ; CPU:$887F PRG:087F F0 1B + dex ; CPU:$8881 PRG:0881 CA + beq StateCourtSetup_Loop4 ; CPU:$8882 PRG:0882 F0 3B + dex ; CPU:$8884 PRG:0884 CA + beq StateCourtSetup_Loop6 ; CPU:$8885 PRG:0885 F0 59 + dex ; CPU:$8887 PRG:0887 CA + beq StateCourtSetup_Loop7 ; CPU:$8888 PRG:0888 F0 68 + dex ; CPU:$888A PRG:088A CA + bne StateCourtSetup_Loop ; CPU:$888B PRG:088B D0 03 + jmp CourtSetup_StartWhistle ; CPU:$888D PRG:088D 4C 13 89 +; ----------------------------------------------------------------------------- +; Routine: StateCourtSetup_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateCourtSetup_Loop: + dex ; CPU:$8890 PRG:0890 CA + bne StateCourtSetup_Loop2 ; CPU:$8891 PRG:0891 D0 03 + jmp CourtSetup_UpdateFrame ; CPU:$8893 PRG:0893 4C 33 89 +; ----------------------------------------------------------------------------- +; Routine: StateCourtSetup_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateCourtSetup_Loop2: + dex ; CPU:$8896 PRG:0896 CA + bne StateCourtSetup_Loop3 ; CPU:$8897 PRG:0897 D0 03 + jmp CourtSetup_GoToNextState ; CPU:$8899 PRG:0899 4C 4E 89 +; ----------------------------------------------------------------------------- +; Routine: StateCourtSetup_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateCourtSetup_Loop3: + lda #$02 ; CPU:$889C PRG:089C A9 02 + sta MusicCommand ; CPU:$889E PRG:089E 85 EB + jsr DrawPlayersAndCrowd ; CPU:$88A0 PRG:08A0 20 56 D8 + lda #$00 ; CPU:$88A3 PRG:08A3 A9 00 + sta NumberToDisplay ; CPU:$88A5 PRG:08A5 85 45 + jsr SetTeamScores ; CPU:$88A7 PRG:08A7 20 2F D9 + lda #$20 ; CPU:$88AA PRG:08AA A9 20 + sta NumberToDisplay ; CPU:$88AC PRG:08AC 85 45 + jsr SetTeamScoresB ; CPU:$88AE PRG:08AE 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$88B1 PRG:08B1 20 56 D8 + lda #$40 ; CPU:$88B4 PRG:08B4 A9 40 + sta StateTimerLo ; CPU:$88B6 PRG:08B6 85 02 + lda #$01 ; CPU:$88B8 PRG:08B8 A9 01 + sta StateTimerHi ; CPU:$88BA PRG:08BA 85 03 + jmp AdvanceSubState ; CPU:$88BC PRG:08BC 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateCourtSetup_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateCourtSetup_Loop4: + jsr InitPlayerPositionLoopC ; CPU:$88BF PRG:08BF 20 71 DA + jsr InitPlayerPositionLoopD ; CPU:$88C2 PRG:08C2 20 A3 DA + jsr DrawPlayersAndCrowd ; CPU:$88C5 PRG:08C5 20 56 D8 + lda DemoModeFlag ; CPU:$88C8 PRG:08C8 A5 81 + beq StateCourtSetup_Loop5 ; CPU:$88CA PRG:08CA F0 11 + lda FrameCounter ; CPU:$88CC PRG:08CC A5 2D + and #$01 ; CPU:$88CE PRG:08CE 29 01 + bne StateCourtSetup_Loop5 ; CPU:$88D0 PRG:08D0 D0 0B + lda ButtonsPlayer1Pressed ; CPU:$88D2 PRG:08D2 A5 1D + and #$30 ; CPU:$88D4 PRG:08D4 29 30 + beq StateCourtSetup_Loop5 ; CPU:$88D6 PRG:08D6 F0 05 + lda #$00 ; CPU:$88D8 PRG:08D8 A9 00 + jmp SetGameState ; CPU:$88DA PRG:08DA 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: StateCourtSetup_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateCourtSetup_Loop5: + jmp DecrementStateTimer ; CPU:$88DD PRG:08DD 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: StateCourtSetup_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateCourtSetup_Loop6: + jsr DrawPlayersAndCrowd ; CPU:$88E0 PRG:08E0 20 56 D8 + lda #$10 ; CPU:$88E3 PRG:08E3 A9 10 + sta ScrollTargetX ; CPU:$88E5 PRG:08E5 85 4F + lda #$80 ; CPU:$88E7 PRG:08E7 A9 80 + sta StateTimerLo ; CPU:$88E9 PRG:08E9 85 02 + lda #$01 ; CPU:$88EB PRG:08EB A9 01 + sta StateTimerHi ; CPU:$88ED PRG:08ED 85 03 + jmp AdvanceSubState ; CPU:$88EF PRG:08EF 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateCourtSetup_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateCourtSetup_Loop7: + jsr InitPlayerPositionLoopC ; CPU:$88F2 PRG:08F2 20 71 DA + jsr InitPlayerPositionLoopD ; CPU:$88F5 PRG:08F5 20 A3 DA + jsr DrawPlayersAndCrowd ; CPU:$88F8 PRG:08F8 20 56 D8 + lda DemoModeFlag ; CPU:$88FB PRG:08FB A5 81 + beq StateCourtSetup_Loop8 ; CPU:$88FD PRG:08FD F0 11 + lda FrameCounter ; CPU:$88FF PRG:08FF A5 2D + and #$01 ; CPU:$8901 PRG:0901 29 01 + bne StateCourtSetup_Loop8 ; CPU:$8903 PRG:0903 D0 0B + lda ButtonsPlayer1Pressed ; CPU:$8905 PRG:0905 A5 1D + and #$30 ; CPU:$8907 PRG:0907 29 30 + beq StateCourtSetup_Loop8 ; CPU:$8909 PRG:0909 F0 05 + lda #$00 ; CPU:$890B PRG:090B A9 00 + jmp SetGameState ; CPU:$890D PRG:090D 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: StateCourtSetup_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateCourtSetup_Loop8: + jmp DecrementStateTimer ; CPU:$8910 PRG:0910 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: CourtSetup_StartWhistle +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CourtSetup_StartWhistle: + lda #$02 ; CPU:$8913 PRG:0913 A9 02 + sta ApplauseCommand ; CPU:$8915 PRG:0915 85 ED + lda #$18 ; CPU:$8917 PRG:0917 A9 18 + sta NumberToDisplay ; CPU:$8919 PRG:0919 85 45 + jsr SetTeamScores ; CPU:$891B PRG:091B 20 2F D9 + lda #$38 ; CPU:$891E PRG:091E A9 38 + sta NumberToDisplay ; CPU:$8920 PRG:0920 85 45 + jsr SetTeamScoresB ; CPU:$8922 PRG:0922 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8925 PRG:0925 20 56 D8 + lda #$48 ; CPU:$8928 PRG:0928 A9 48 + sta StateTimerLo ; CPU:$892A PRG:092A 85 02 + lda #$01 ; CPU:$892C PRG:092C A9 01 + sta StateTimerHi ; CPU:$892E PRG:092E 85 03 + jmp AdvanceSubState ; CPU:$8930 PRG:0930 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: CourtSetup_UpdateFrame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CourtSetup_UpdateFrame: + jsr DrawPlayersAndCrowd ; CPU:$8933 PRG:0933 20 56 D8 + lda DemoModeFlag ; CPU:$8936 PRG:0936 A5 81 + beq CourtSetup_UpdateFrame_Loop ; CPU:$8938 PRG:0938 F0 11 + lda FrameCounter ; CPU:$893A PRG:093A A5 2D + and #$01 ; CPU:$893C PRG:093C 29 01 + bne CourtSetup_UpdateFrame_Loop ; CPU:$893E PRG:093E D0 0B + lda ButtonsPlayer1Pressed ; CPU:$8940 PRG:0940 A5 1D + and #$30 ; CPU:$8942 PRG:0942 29 30 + beq CourtSetup_UpdateFrame_Loop ; CPU:$8944 PRG:0944 F0 05 + lda #$00 ; CPU:$8946 PRG:0946 A9 00 + jmp SetGameState ; CPU:$8948 PRG:0948 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: CourtSetup_UpdateFrame_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CourtSetup_UpdateFrame_Loop: + jmp DecrementStateTimer ; CPU:$894B PRG:094B 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: CourtSetup_GoToNextState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CourtSetup_GoToNextState: + jmp AdvanceGameState ; CPU:$894E PRG:094E 4C 03 86 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateRally +; Global: The rally itself: the players are moved, the ball is simulated and a +; point is scored when one side lets it drop. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateRally: + inx ; CPU:$8951 PRG:0951 E8 + dex ; CPU:$8952 PRG:0952 CA + bne StateRally_Loop ; CPU:$8953 PRG:0953 D0 03 + jmp Rally_ResetForPoint ; CPU:$8955 PRG:0955 4C B2 89 +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop: + dex ; CPU:$8958 PRG:0958 CA + bne StateRally_Loop2 ; CPU:$8959 PRG:0959 D0 03 + jmp Rally_SkipFrame ; CPU:$895B PRG:095B 4C C3 89 +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop2: + dex ; CPU:$895E PRG:095E CA + bne StateRally_Loop3 ; CPU:$895F PRG:095F D0 03 + jmp Rally_SetServeFlag ; CPU:$8961 PRG:0961 4C C9 89 +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop3: + dex ; CPU:$8964 PRG:0964 CA + bne StateRally_Loop4 ; CPU:$8965 PRG:0965 D0 03 + jmp Rally_CountdownToServe ; CPU:$8967 PRG:0967 4C D3 89 +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop4: + dex ; CPU:$896A PRG:096A CA + bne StateRally_Loop5 ; CPU:$896B PRG:096B D0 03 + jmp Rally_UpdatePlayers ; CPU:$896D PRG:096D 4C E6 89 +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop5: + dex ; CPU:$8970 PRG:0970 CA + bne StateRally_Loop6 ; CPU:$8971 PRG:0971 D0 03 + jmp Rally_ClearServeFlags ; CPU:$8973 PRG:0973 4C 1A 8A +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop6: + dex ; CPU:$8976 PRG:0976 CA + bne StateRally_Loop7 ; CPU:$8977 PRG:0977 D0 03 + jmp Rally_DrawAndWait ; CPU:$8979 PRG:0979 4C 34 8A +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop7: + dex ; CPU:$897C PRG:097C CA + bne StateRally_Loop8 ; CPU:$897D PRG:097D D0 03 + jmp Rally_ResumeAfterWhistle ; CPU:$897F PRG:097F 4C 3A 8A +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop8: + dex ; CPU:$8982 PRG:0982 CA + bne StateRally_Loop9 ; CPU:$8983 PRG:0983 D0 03 + jmp Rally_CheckPointEnd ; CPU:$8985 PRG:0985 4C 44 8A +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop9: + dex ; CPU:$8988 PRG:0988 CA + bne StateRally_Loop10 ; CPU:$8989 PRG:0989 D0 03 + jmp Rally_FrameDone ; CPU:$898B PRG:098B 4C 6C 8A +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop10: + dex ; CPU:$898E PRG:098E CA + bne StateRally_Loop11 ; CPU:$898F PRG:098F D0 03 + jmp Rally_ClearServeFlag2 ; CPU:$8991 PRG:0991 4C 72 8A +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop11: + dex ; CPU:$8994 PRG:0994 CA + bne StateRally_Loop12 ; CPU:$8995 PRG:0995 D0 03 + jmp Rally_ClearOverFlag ; CPU:$8997 PRG:0997 4C 78 8A +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop12: + dex ; CPU:$899A PRG:099A CA + bne StateRally_Loop13 ; CPU:$899B PRG:099B D0 03 + jmp Rally_ClearTeamScores ; CPU:$899D PRG:099D 4C 82 8A +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop13: + dex ; CPU:$89A0 PRG:09A0 CA + bne StateRally_Loop14 ; CPU:$89A1 PRG:09A1 D0 03 + jmp Rally_UpdateTeamFlags ; CPU:$89A3 PRG:09A3 4C D2 8A +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop14: + dex ; CPU:$89A6 PRG:09A6 CA + bne StateRally_Loop15 ; CPU:$89A7 PRG:09A7 D0 03 + jmp Rally_SetWhistleFlag ; CPU:$89A9 PRG:09A9 4C 0A 8B +; ----------------------------------------------------------------------------- +; Routine: StateRally_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateRally_Loop15: + dex ; CPU:$89AC PRG:09AC CA + bne Rally_ResetForPoint ; CPU:$89AD PRG:09AD D0 03 + jmp Rally_GoToNextState ; CPU:$89AF PRG:09AF 4C 1F 8B +; ----------------------------------------------------------------------------- +; Routine: Rally_ResetForPoint +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_ResetForPoint: + jsr InitScoreStructs ; CPU:$89B2 PRG:09B2 20 4E 93 + jsr DrawPlayersAndCrowd ; CPU:$89B5 PRG:09B5 20 56 D8 + lda #$80 ; CPU:$89B8 PRG:09B8 A9 80 + sta StateTimerLo ; CPU:$89BA PRG:09BA 85 02 + lda #$01 ; CPU:$89BC PRG:09BC A9 01 + sta StateTimerHi ; CPU:$89BE PRG:09BE 85 03 + jmp AdvanceSubState ; CPU:$89C0 PRG:09C0 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_SkipFrame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_SkipFrame: + jsr DrawPlayersAndCrowd ; CPU:$89C3 PRG:09C3 20 56 D8 + jmp AdvanceSubState ; CPU:$89C6 PRG:09C6 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_SetServeFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_SetServeFlag: + lda #$FF ; CPU:$89C9 PRG:09C9 A9 FF + sta BallInPlayFlag ; CPU:$89CB PRG:09CB 85 8E + jsr DrawPlayersAndCrowd ; CPU:$89CD PRG:09CD 20 56 D8 + jmp AdvanceSubState ; CPU:$89D0 PRG:09D0 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_CountdownToServe +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_CountdownToServe: + jsr DrawPlayersAndCrowd ; CPU:$89D3 PRG:09D3 20 56 D8 + dec DemoCounterA ; CPU:$89D6 PRG:09D6 C6 82 + bne Rally_CountdownToServe_Loop ; CPU:$89D8 PRG:09D8 D0 09 + dec DemoCounterB ; CPU:$89DA PRG:09DA C6 83 + bne Rally_CountdownToServe_Loop ; CPU:$89DC PRG:09DC D0 05 + lda #$00 ; CPU:$89DE PRG:09DE A9 00 + jmp SetGameState ; CPU:$89E0 PRG:09E0 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_CountdownToServe_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_CountdownToServe_Loop: + jmp AdvanceSubState ; CPU:$89E3 PRG:09E3 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_UpdatePlayers +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_UpdatePlayers: + lda DemoModeFlag ; CPU:$89E6 PRG:09E6 A5 81 + bne Rally_UpdatePlayers_Loop3 ; CPU:$89E8 PRG:09E8 D0 19 + lda ServeFlag ; CPU:$89EA PRG:09EA A5 72 + bne Rally_EndPoint ; CPU:$89EC PRG:09EC D0 26 + lda PlayerLeftPressed ; CPU:$89EE PRG:09EE A5 77 + and #$10 ; CPU:$89F0 PRG:09F0 29 10 + beq Rally_UpdatePlayers_Loop ; CPU:$89F2 PRG:09F2 F0 03 + jmp Rally_RestartDemo ; CPU:$89F4 PRG:09F4 4C 22 8B +; ----------------------------------------------------------------------------- +; Routine: Rally_UpdatePlayers_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_UpdatePlayers_Loop: + lda PlayerRightPressed ; CPU:$89F7 PRG:09F7 A5 78 + and #$10 ; CPU:$89F9 PRG:09F9 29 10 + beq Rally_UpdatePlayers_Loop2 ; CPU:$89FB PRG:09FB F0 03 + jmp Rally_RestartDemo ; CPU:$89FD PRG:09FD 4C 22 8B +; ----------------------------------------------------------------------------- +; Routine: Rally_UpdatePlayers_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_UpdatePlayers_Loop2: + jmp Rally_EndPoint ; CPU:$8A00 PRG:0A00 4C 14 8A +; ----------------------------------------------------------------------------- +; Routine: Rally_UpdatePlayers_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_UpdatePlayers_Loop3: + lda FrameCounter ; CPU:$8A03 PRG:0A03 A5 2D + and #$01 ; CPU:$8A05 PRG:0A05 29 01 + bne Rally_EndPoint ; CPU:$8A07 PRG:0A07 D0 0B + lda ButtonsPlayer1Pressed ; CPU:$8A09 PRG:0A09 A5 1D + and #$30 ; CPU:$8A0B PRG:0A0B 29 30 + beq Rally_EndPoint ; CPU:$8A0D PRG:0A0D F0 05 + lda #$00 ; CPU:$8A0F PRG:0A0F A9 00 + jmp SetGameState ; CPU:$8A11 PRG:0A11 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_EndPoint +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_EndPoint: + jsr DrawPlayersAndCrowd ; CPU:$8A14 PRG:0A14 20 56 D8 + jmp DecrementStateTimer ; CPU:$8A17 PRG:0A17 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: Rally_ClearServeFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_ClearServeFlags: + lda #$00 ; CPU:$8A1A PRG:0A1A A9 00 + sta ServeFlag ; CPU:$8A1C PRG:0A1C 85 72 + lda #$00 ; CPU:$8A1E PRG:0A1E A9 00 + sta ServeReady ; CPU:$8A20 PRG:0A20 85 7E + jsr DrawPlayersAndCrowd ; CPU:$8A22 PRG:0A22 20 56 D8 + lda #$40 ; CPU:$8A25 PRG:0A25 A9 40 + sta StateTimerLo ; CPU:$8A27 PRG:0A27 85 02 + lda #$01 ; CPU:$8A29 PRG:0A29 A9 01 + sta StateTimerHi ; CPU:$8A2B PRG:0A2B 85 03 + lda #$02 ; CPU:$8A2D PRG:0A2D A9 02 + sta ApplauseCommand ; CPU:$8A2F PRG:0A2F 85 ED + jmp AdvanceSubState ; CPU:$8A31 PRG:0A31 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_DrawAndWait +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_DrawAndWait: + jsr DrawPlayersAndCrowd ; CPU:$8A34 PRG:0A34 20 56 D8 + jmp DecrementStateTimer ; CPU:$8A37 PRG:0A37 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: Rally_ResumeAfterWhistle +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_ResumeAfterWhistle: + lda #$00 ; CPU:$8A3A PRG:0A3A A9 00 + sta IndicatorEnable ; CPU:$8A3C PRG:0A3C 85 7B + jsr DrawPlayersAndCrowd ; CPU:$8A3E PRG:0A3E 20 56 D8 + jmp AdvanceSubState ; CPU:$8A41 PRG:0A41 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_CheckPointEnd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_CheckPointEnd: + jsr InitRallyStructs ; CPU:$8A44 PRG:0A44 20 26 94 + lda BallFlags ; CPU:$8A47 PRG:0A47 A5 6E + cmp #$03 ; CPU:$8A49 PRG:0A49 C9 03 + beq Rally_CheckPointEnd_Loop ; CPU:$8A4B PRG:0A4B F0 07 + and #$F3 ; CPU:$8A4D PRG:0A4D 29 F3 + beq Rally_CheckPointEnd_Loop ; CPU:$8A4F PRG:0A4F F0 03 + jmp AdvanceSubState ; CPU:$8A51 PRG:0A51 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_CheckPointEnd_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_CheckPointEnd_Loop: + lda DemoModeFlag ; CPU:$8A54 PRG:0A54 A5 81 + beq Rally_CheckPointEnd_Loop2 ; CPU:$8A56 PRG:0A56 F0 11 + lda FrameCounter ; CPU:$8A58 PRG:0A58 A5 2D + and #$01 ; CPU:$8A5A PRG:0A5A 29 01 + bne Rally_CheckPointEnd_Loop2 ; CPU:$8A5C PRG:0A5C D0 0B + lda ButtonsPlayer1Pressed ; CPU:$8A5E PRG:0A5E A5 1D + and #$30 ; CPU:$8A60 PRG:0A60 29 30 + beq Rally_CheckPointEnd_Loop2 ; CPU:$8A62 PRG:0A62 F0 05 + lda #$00 ; CPU:$8A64 PRG:0A64 A9 00 + jmp SetGameState ; CPU:$8A66 PRG:0A66 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_CheckPointEnd_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_CheckPointEnd_Loop2: + jmp DecrementStateTimer_Loop ; CPU:$8A69 PRG:0A69 4C FF 85 +; ----------------------------------------------------------------------------- +; Routine: Rally_FrameDone +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_FrameDone: + jsr DrawPlayersAndCrowd ; CPU:$8A6C PRG:0A6C 20 56 D8 + jmp AdvanceSubState ; CPU:$8A6F PRG:0A6F 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_ClearServeFlag2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_ClearServeFlag2: + jsr DrawPlayersAndCrowd ; CPU:$8A72 PRG:0A72 20 56 D8 + jmp AdvanceSubState ; CPU:$8A75 PRG:0A75 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_ClearOverFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_ClearOverFlag: + lda #$00 ; CPU:$8A78 PRG:0A78 A9 00 + sta BallInPlayFlag ; CPU:$8A7A PRG:0A7A 85 8E + jsr DrawPlayersAndCrowd ; CPU:$8A7C PRG:0A7C 20 56 D8 + jmp AdvanceSubState ; CPU:$8A7F PRG:0A7F 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_ClearTeamScores +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_ClearTeamScores: + lda #$00 ; CPU:$8A82 PRG:0A82 A9 00 + sta CrowdFlagsA ; CPU:$8A84 PRG:0A84 85 50 + sta CrowdFlagsB ; CPU:$8A86 PRG:0A86 85 51 + lda #$FF ; CPU:$8A88 PRG:0A88 A9 FF + sta IndicatorEnable ; CPU:$8A8A PRG:0A8A 85 7B + jsr CheckIndicatorFlag ; CPU:$8A8C PRG:0A8C 20 82 D6 + jsr DrawPlayersAndCrowd ; CPU:$8A8F PRG:0A8F 20 56 D8 + lda #$80 ; CPU:$8A92 PRG:0A92 A9 80 + sta CrowdAnimationCounter ; CPU:$8A94 PRG:0A94 8D 88 05 + lda #$40 ; CPU:$8A97 PRG:0A97 A9 40 + sta StateTimerLo ; CPU:$8A99 PRG:0A99 85 02 + lda #$01 ; CPU:$8A9B PRG:0A9B A9 01 + sta StateTimerHi ; CPU:$8A9D PRG:0A9D 85 03 + lda #$04 ; CPU:$8A9F PRG:0A9F A9 04 + sta ApplauseCommand ; CPU:$8AA1 PRG:0AA1 85 ED + lda TeamFlags ; CPU:$8AA3 PRG:0AA3 A5 67 + cmp #$04 ; CPU:$8AA5 PRG:0AA5 C9 04 + bne Rally_ClearTeamScores_OnCarrySet ; CPU:$8AA7 PRG:0AA7 D0 10 + lda Zp88 ; CPU:$8AA9 PRG:0AA9 A5 88 + bne Rally_ClearTeamScores_OnCarrySet ; CPU:$8AAB PRG:0AAB D0 0C + lda Zp62 ; CPU:$8AAD PRG:0AAD A5 62 + cmp #$08 ; CPU:$8AAF PRG:0AAF C9 08 + beq Rally_ClearTeamScores_Loop ; CPU:$8AB1 PRG:0AB1 F0 09 + lda Zp63 ; CPU:$8AB3 PRG:0AB3 A5 63 + cmp #$08 ; CPU:$8AB5 PRG:0AB5 C9 08 + beq Rally_ClearTeamScores_Loop2 ; CPU:$8AB7 PRG:0AB7 F0 0E +; ----------------------------------------------------------------------------- +; Routine: Rally_ClearTeamScores_OnCarrySet +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_ClearTeamScores_OnCarrySet: + jmp AdvanceSubState ; CPU:$8AB9 PRG:0AB9 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_ClearTeamScores_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_ClearTeamScores_Loop: + lda Zp63 ; CPU:$8ABC PRG:0ABC A5 63 + cmp #$08 ; CPU:$8ABE PRG:0ABE C9 08 + bcs Rally_ClearTeamScores_OnCarrySet ; CPU:$8AC0 PRG:0AC0 B0 F7 + lda #$0A ; CPU:$8AC2 PRG:0AC2 A9 0A + jmp SetGameState ; CPU:$8AC4 PRG:0AC4 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_ClearTeamScores_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_ClearTeamScores_Loop2: + lda Zp62 ; CPU:$8AC7 PRG:0AC7 A5 62 + cmp #$08 ; CPU:$8AC9 PRG:0AC9 C9 08 + bcs Rally_ClearTeamScores_OnCarrySet ; CPU:$8ACB PRG:0ACB B0 EC + lda #$0A ; CPU:$8ACD PRG:0ACD A9 0A + jmp SetGameState ; CPU:$8ACF PRG:0ACF 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_UpdateTeamFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_UpdateTeamFlags: + lda PointFlag ; CPU:$8AD2 PRG:0AD2 A5 6F + bne Rally_FrameDone2 ; CPU:$8AD4 PRG:0AD4 D0 2E + lda DemoModeFlag ; CPU:$8AD6 PRG:0AD6 A5 81 + bne Rally_UpdateTeamFlags_Loop3 ; CPU:$8AD8 PRG:0AD8 D0 19 + lda ServeFlag ; CPU:$8ADA PRG:0ADA A5 72 + bne Rally_FrameDone2 ; CPU:$8ADC PRG:0ADC D0 26 + lda PlayerLeftPressed ; CPU:$8ADE PRG:0ADE A5 77 + and #$10 ; CPU:$8AE0 PRG:0AE0 29 10 + beq Rally_UpdateTeamFlags_Loop ; CPU:$8AE2 PRG:0AE2 F0 03 + jmp Rally_RestartDemo ; CPU:$8AE4 PRG:0AE4 4C 22 8B +; ----------------------------------------------------------------------------- +; Routine: Rally_UpdateTeamFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_UpdateTeamFlags_Loop: + lda PlayerRightPressed ; CPU:$8AE7 PRG:0AE7 A5 78 + and #$10 ; CPU:$8AE9 PRG:0AE9 29 10 + beq Rally_UpdateTeamFlags_Loop2 ; CPU:$8AEB PRG:0AEB F0 03 + jmp Rally_RestartDemo ; CPU:$8AED PRG:0AED 4C 22 8B +; ----------------------------------------------------------------------------- +; Routine: Rally_UpdateTeamFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_UpdateTeamFlags_Loop2: + jmp Rally_FrameDone2 ; CPU:$8AF0 PRG:0AF0 4C 04 8B +; ----------------------------------------------------------------------------- +; Routine: Rally_UpdateTeamFlags_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_UpdateTeamFlags_Loop3: + lda FrameCounter ; CPU:$8AF3 PRG:0AF3 A5 2D + and #$01 ; CPU:$8AF5 PRG:0AF5 29 01 + bne Rally_FrameDone2 ; CPU:$8AF7 PRG:0AF7 D0 0B + lda ButtonsPlayer1Pressed ; CPU:$8AF9 PRG:0AF9 A5 1D + and #$30 ; CPU:$8AFB PRG:0AFB 29 30 + beq Rally_FrameDone2 ; CPU:$8AFD PRG:0AFD F0 05 + lda #$00 ; CPU:$8AFF PRG:0AFF A9 00 + jmp SetGameState ; CPU:$8B01 PRG:0B01 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_FrameDone2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_FrameDone2: + jsr DrawPlayersAndCrowd ; CPU:$8B04 PRG:0B04 20 56 D8 + jmp DecrementStateTimer ; CPU:$8B07 PRG:0B07 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: Rally_SetWhistleFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_SetWhistleFlag: + lda #$FF ; CPU:$8B0A PRG:0B0A A9 FF + sta ServeReady ; CPU:$8B0C PRG:0B0C 85 7E + jsr DrawPlayersAndCrowd ; CPU:$8B0E PRG:0B0E 20 56 D8 + lda PointFlag ; CPU:$8B11 PRG:0B11 A5 6F + bne Rally_SetWhistleFlag_Loop ; CPU:$8B13 PRG:0B13 D0 05 + lda #$05 ; CPU:$8B15 PRG:0B15 A9 05 + jmp SetGameState ; CPU:$8B17 PRG:0B17 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_SetWhistleFlag_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_SetWhistleFlag_Loop: + lda #$06 ; CPU:$8B1A PRG:0B1A A9 06 + jmp SetGameState ; CPU:$8B1C PRG:0B1C 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_GoToNextState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_GoToNextState: + jmp AdvanceGameState ; CPU:$8B1F PRG:0B1F 4C 03 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_RestartDemo +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_RestartDemo: + lda #$FF ; CPU:$8B22 PRG:0B22 A9 FF + sta ServeFlag ; CPU:$8B24 PRG:0B24 85 72 + jsr InitPlayerStructs ; CPU:$8B26 PRG:0B26 20 1E 93 + jsr DrawPlayersAndCrowd ; CPU:$8B29 PRG:0B29 20 56 D8 + lda #$00 ; CPU:$8B2C PRG:0B2C A9 00 + sta PlayerLeftPressed ; CPU:$8B2E PRG:0B2E 85 77 + sta PlayerRightPressed ; CPU:$8B30 PRG:0B30 85 78 + sta CrowdFlagsA ; CPU:$8B32 PRG:0B32 85 50 + sta CrowdFlagsB ; CPU:$8B34 PRG:0B34 85 51 + lda #$FF ; CPU:$8B36 PRG:0B36 A9 FF + sta Zp71 ; CPU:$8B38 PRG:0B38 85 71 + lda #$00 ; CPU:$8B3A PRG:0B3A A9 00 + sta ServeReady ; CPU:$8B3C PRG:0B3C 85 7E + lda #$40 ; CPU:$8B3E PRG:0B3E A9 40 + sta MusicCommand ; CPU:$8B40 PRG:0B40 85 EB + lda #$08 ; CPU:$8B42 PRG:0B42 A9 08 + jmp SetGameState ; CPU:$8B44 PRG:0B44 4C 0A 86 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateNewPoint +; Global: The break between two points: the ball is put back in play and the +; score is shown. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateNewPoint: + inx ; CPU:$8B47 PRG:0B47 E8 + dex ; CPU:$8B48 PRG:0B48 CA + beq NewPoint_ResetStructs ; CPU:$8B49 PRG:0B49 F0 36 + dex ; CPU:$8B4B PRG:0B4B CA + beq NewPoint_FrameDone ; CPU:$8B4C PRG:0B4C F0 44 + dex ; CPU:$8B4E PRG:0B4E CA + beq NewPoint_ResetScore ; CPU:$8B4F PRG:0B4F F0 47 + dex ; CPU:$8B51 PRG:0B51 CA + beq NewPoint_ClearBall ; CPU:$8B52 PRG:0B52 F0 5B + dex ; CPU:$8B54 PRG:0B54 CA + beq NewPoint_FrameDone2 ; CPU:$8B55 PRG:0B55 F0 70 + dex ; CPU:$8B57 PRG:0B57 CA + beq NewPoint_ShowScore ; CPU:$8B58 PRG:0B58 F0 73 + dex ; CPU:$8B5A PRG:0B5A CA + bne StateNewPoint_Loop ; CPU:$8B5B PRG:0B5B D0 03 + jmp NewPoint_FrameDone3 ; CPU:$8B5D PRG:0B5D 4C E9 8B +; ----------------------------------------------------------------------------- +; Routine: StateNewPoint_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateNewPoint_Loop: + dex ; CPU:$8B60 PRG:0B60 CA + bne StateNewPoint_Loop2 ; CPU:$8B61 PRG:0B61 D0 03 + jmp NewPoint_MoveBall ; CPU:$8B63 PRG:0B63 4C EF 8B +; ----------------------------------------------------------------------------- +; Routine: StateNewPoint_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateNewPoint_Loop2: + dex ; CPU:$8B66 PRG:0B66 CA + bne StateNewPoint_Loop3 ; CPU:$8B67 PRG:0B67 D0 03 + jmp Rally_UpdateTeamsAndDraw ; CPU:$8B69 PRG:0B69 4C 0B 8C +; ----------------------------------------------------------------------------- +; Routine: StateNewPoint_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateNewPoint_Loop3: + dex ; CPU:$8B6C PRG:0B6C CA + bne StateNewPoint_Loop4 ; CPU:$8B6D PRG:0B6D D0 03 + jmp GetTeamPlayerOffset ; CPU:$8B6F PRG:0B6F 4C 17 8C +; ----------------------------------------------------------------------------- +; Routine: StateNewPoint_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateNewPoint_Loop4: + dex ; CPU:$8B72 PRG:0B72 CA + bne StateNewPoint_Loop5 ; CPU:$8B73 PRG:0B73 D0 03 + jmp SetNumberAndDraw ; CPU:$8B75 PRG:0B75 4C 63 8C +; ----------------------------------------------------------------------------- +; Routine: StateNewPoint_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateNewPoint_Loop5: + dex ; CPU:$8B78 PRG:0B78 CA + bne StateNewPoint_Loop6 ; CPU:$8B79 PRG:0B79 D0 03 + jmp SetStateAndAdvance ; CPU:$8B7B PRG:0B7B 4C 7F 8C +; ----------------------------------------------------------------------------- +; Routine: StateNewPoint_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateNewPoint_Loop6: + jmp SetStateFive ; CPU:$8B7E PRG:0B7E 4C 85 8C +; ----------------------------------------------------------------------------- +; Routine: NewPoint_ResetStructs +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NewPoint_ResetStructs: + jsr InitPlayerStructs ; CPU:$8B81 PRG:0B81 20 1E 93 + jsr DrawPlayersAndCrowd ; CPU:$8B84 PRG:0B84 20 56 D8 + lda #$00 ; CPU:$8B87 PRG:0B87 A9 00 + sta StateTimerLo ; CPU:$8B89 PRG:0B89 85 02 + lda #$01 ; CPU:$8B8B PRG:0B8B A9 01 + sta StateTimerHi ; CPU:$8B8D PRG:0B8D 85 03 + jmp AdvanceSubState ; CPU:$8B8F PRG:0B8F 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: NewPoint_FrameDone +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NewPoint_FrameDone: + jsr DrawPlayersAndCrowd ; CPU:$8B92 PRG:0B92 20 56 D8 + jmp DecrementStateTimer ; CPU:$8B95 PRG:0B95 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: NewPoint_ResetScore +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NewPoint_ResetScore: + jsr DrawPlayersAndCrowd ; CPU:$8B98 PRG:0B98 20 56 D8 + lda PointFlag ; CPU:$8B9B PRG:0B9B A5 6F + cmp #$01 ; CPU:$8B9D PRG:0B9D C9 01 + bne NewPoint_ResetScore_Loop ; CPU:$8B9F PRG:0B9F D0 09 + lda #$00 ; CPU:$8BA1 PRG:0BA1 A9 00 + sta Zp62 ; CPU:$8BA3 PRG:0BA3 85 62 + sta Zp63 ; CPU:$8BA5 PRG:0BA5 85 63 + jmp AdvanceSubState ; CPU:$8BA7 PRG:0BA7 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: NewPoint_ResetScore_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NewPoint_ResetScore_Loop: + lda #$07 ; CPU:$8BAA PRG:0BAA A9 07 + jmp SetGameState ; CPU:$8BAC PRG:0BAC 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: NewPoint_ClearBall +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NewPoint_ClearBall: + lda #$00 ; CPU:$8BAF PRG:0BAF A9 00 + sta NumberToDisplay ; CPU:$8BB1 PRG:0BB1 85 45 + jsr ResetTeamPositions ; CPU:$8BB3 PRG:0BB3 20 DF D8 + jsr SetTeamPositionsB ; CPU:$8BB6 PRG:0BB6 20 05 D9 + jsr DrawPlayersAndCrowd ; CPU:$8BB9 PRG:0BB9 20 56 D8 + lda #$40 ; CPU:$8BBC PRG:0BBC A9 40 + sta StateTimerLo ; CPU:$8BBE PRG:0BBE 85 02 + lda #$01 ; CPU:$8BC0 PRG:0BC0 A9 01 + sta StateTimerHi ; CPU:$8BC2 PRG:0BC2 85 03 + jmp AdvanceSubState ; CPU:$8BC4 PRG:0BC4 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: NewPoint_FrameDone2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NewPoint_FrameDone2: + jsr DrawPlayersAndCrowd ; CPU:$8BC7 PRG:0BC7 20 56 D8 + jmp DecrementStateTimer ; CPU:$8BCA PRG:0BCA 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: NewPoint_ShowScore +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NewPoint_ShowScore: + lda #$18 ; CPU:$8BCD PRG:0BCD A9 18 + sta NumberToDisplay ; CPU:$8BCF PRG:0BCF 85 45 + jsr SetTeamScores ; CPU:$8BD1 PRG:0BD1 20 2F D9 + lda #$38 ; CPU:$8BD4 PRG:0BD4 A9 38 + sta NumberToDisplay ; CPU:$8BD6 PRG:0BD6 85 45 + jsr SetTeamScoresB ; CPU:$8BD8 PRG:0BD8 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8BDB PRG:0BDB 20 56 D8 + lda #$48 ; CPU:$8BDE PRG:0BDE A9 48 + sta StateTimerLo ; CPU:$8BE0 PRG:0BE0 85 02 + lda #$01 ; CPU:$8BE2 PRG:0BE2 A9 01 + sta StateTimerHi ; CPU:$8BE4 PRG:0BE4 85 03 + jmp AdvanceSubState ; CPU:$8BE6 PRG:0BE6 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: NewPoint_FrameDone3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NewPoint_FrameDone3: + jsr DrawPlayersAndCrowd ; CPU:$8BE9 PRG:0BE9 20 56 D8 + jmp DecrementStateTimer ; CPU:$8BEC PRG:0BEC 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: NewPoint_MoveBall +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NewPoint_MoveBall: + lda #$00 ; CPU:$8BEF PRG:0BEF A9 00 + sta NumberToDisplay ; CPU:$8BF1 PRG:0BF1 85 45 + jsr SetTeamScores ; CPU:$8BF3 PRG:0BF3 20 2F D9 + lda #$20 ; CPU:$8BF6 PRG:0BF6 A9 20 + sta NumberToDisplay ; CPU:$8BF8 PRG:0BF8 85 45 + jsr SetTeamScoresB ; CPU:$8BFA PRG:0BFA 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8BFD PRG:0BFD 20 56 D8 + lda #$E0 ; CPU:$8C00 PRG:0C00 A9 E0 + sta StateTimerLo ; CPU:$8C02 PRG:0C02 85 02 + lda #$01 ; CPU:$8C04 PRG:0C04 A9 01 + sta StateTimerHi ; CPU:$8C06 PRG:0C06 85 03 + jmp AdvanceSubState ; CPU:$8C08 PRG:0C08 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Rally_UpdateTeamsAndDraw +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Rally_UpdateTeamsAndDraw: + jsr UpdateTeamPlayerPositions ; CPU:$8C0B PRG:0C0B 20 65 D9 + jsr UpdateTeamPlayerPositionsB ; CPU:$8C0E PRG:0C0E 20 BB D9 + jsr DrawPlayersAndCrowd ; CPU:$8C11 PRG:0C11 20 56 D8 + jmp DecrementStateTimer ; CPU:$8C14 PRG:0C14 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: GetTeamPlayerOffset +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTeamPlayerOffset: + lda TeamNumber ; CPU:$8C17 PRG:0C17 A5 66 + asl a ; CPU:$8C19 PRG:0C19 0A + asl a ; CPU:$8C1A PRG:0C1A 0A + asl a ; CPU:$8C1B PRG:0C1B 0A + asl a ; CPU:$8C1C PRG:0C1C 0A + pha ; CPU:$8C1D PRG:0C1D 48 + lda TeamNumber ; CPU:$8C1E PRG:0C1E A5 66 + lsr a ; CPU:$8C20 PRG:0C20 4A + lsr a ; CPU:$8C21 PRG:0C21 4A + lsr a ; CPU:$8C22 PRG:0C22 4A + lsr a ; CPU:$8C23 PRG:0C23 4A + sta TeamNumber ; CPU:$8C24 PRG:0C24 85 66 + pla ; CPU:$8C26 PRG:0C26 68 + ora TeamNumber ; CPU:$8C27 PRG:0C27 05 66 + sta TeamNumber ; CPU:$8C29 PRG:0C29 85 66 + lda PlayerCount ; CPU:$8C2B PRG:0C2B A5 2E + asl a ; CPU:$8C2D PRG:0C2D 0A + asl a ; CPU:$8C2E PRG:0C2E 0A + asl a ; CPU:$8C2F PRG:0C2F 0A + asl a ; CPU:$8C30 PRG:0C30 0A + pha ; CPU:$8C31 PRG:0C31 48 + lda PlayerCount ; CPU:$8C32 PRG:0C32 A5 2E + lsr a ; CPU:$8C34 PRG:0C34 4A + lsr a ; CPU:$8C35 PRG:0C35 4A + lsr a ; CPU:$8C36 PRG:0C36 4A + lsr a ; CPU:$8C37 PRG:0C37 4A + sta PlayerCount ; CPU:$8C38 PRG:0C38 85 2E + pla ; CPU:$8C3A PRG:0C3A 68 + ora PlayerCount ; CPU:$8C3B PRG:0C3B 05 2E + sta PlayerCount ; CPU:$8C3D PRG:0C3D 85 2E + lda PlayerLeftIndex ; CPU:$8C3F PRG:0C3F A5 73 + pha ; CPU:$8C41 PRG:0C41 48 + lda PlayerRightIndex ; CPU:$8C42 PRG:0C42 A5 74 + sta PlayerLeftIndex ; CPU:$8C44 PRG:0C44 85 73 + pla ; CPU:$8C46 PRG:0C46 68 + sta PlayerRightIndex ; CPU:$8C47 PRG:0C47 85 74 + jsr LoadBackgroundTilemap ; CPU:$8C49 PRG:0C49 20 39 DB + jsr QueueScreenUpdate ; CPU:$8C4C PRG:0C4C 20 A2 DB + lda #$00 ; CPU:$8C4F PRG:0C4F A9 00 + sta NumberToDisplay ; CPU:$8C51 PRG:0C51 85 45 + jsr InitPlayerPositionLoop ; CPU:$8C53 PRG:0C53 20 15 DA + jsr InitPlayerPositionLoopB ; CPU:$8C56 PRG:0C56 20 41 DA + lda Zp65 ; CPU:$8C59 PRG:0C59 A5 65 + sta IndicatorIndex ; CPU:$8C5B PRG:0C5B 85 64 + jsr DrawPlayersAndCrowd ; CPU:$8C5D PRG:0C5D 20 56 D8 + jmp AdvanceSubState ; CPU:$8C60 PRG:0C60 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: SetNumberAndDraw +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetNumberAndDraw: + lda #$18 ; CPU:$8C63 PRG:0C63 A9 18 + sta NumberToDisplay ; CPU:$8C65 PRG:0C65 85 45 + jsr SetTeamScores ; CPU:$8C67 PRG:0C67 20 2F D9 + lda #$38 ; CPU:$8C6A PRG:0C6A A9 38 + sta NumberToDisplay ; CPU:$8C6C PRG:0C6C 85 45 + jsr SetTeamScoresB ; CPU:$8C6E PRG:0C6E 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8C71 PRG:0C71 20 56 D8 + lda #$48 ; CPU:$8C74 PRG:0C74 A9 48 + sta StateTimerLo ; CPU:$8C76 PRG:0C76 85 02 + lda #$01 ; CPU:$8C78 PRG:0C78 A9 01 + sta StateTimerHi ; CPU:$8C7A PRG:0C7A 85 03 + jmp AdvanceSubState ; CPU:$8C7C PRG:0C7C 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: SetStateAndAdvance +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetStateAndAdvance: + jsr DrawPlayersAndCrowd ; CPU:$8C7F PRG:0C7F 20 56 D8 + jmp DecrementStateTimer ; CPU:$8C82 PRG:0C82 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: SetStateFive +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetStateFive: + lda #$05 ; CPU:$8C85 PRG:0C85 A9 05 + jmp SetGameState ; CPU:$8C87 PRG:0C87 4C 0A 86 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateTeamSelection +; Global: Lets the player pick which nations the two teams play for. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateTeamSelection: + inx ; CPU:$8C8A PRG:0C8A E8 + dex ; CPU:$8C8B PRG:0C8B CA + beq TeamSelect_Start ; CPU:$8C8C PRG:0C8C F0 21 + dex ; CPU:$8C8E PRG:0C8E CA + beq TeamSelect_CountTeams ; CPU:$8C8F PRG:0C8F F0 2C + dex ; CPU:$8C91 PRG:0C91 CA + bne StateTeamSelection_Loop ; CPU:$8C92 PRG:0C92 D0 03 + jmp ServeSet_CheckDmc ; CPU:$8C94 PRG:0C94 4C 1F 8D +; ----------------------------------------------------------------------------- +; Routine: StateTeamSelection_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateTeamSelection_Loop: + dex ; CPU:$8C97 PRG:0C97 CA + bne StateTeamSelection_Loop2 ; CPU:$8C98 PRG:0C98 D0 03 + jmp ServeSet_SetTimer ; CPU:$8C9A PRG:0C9A 4C 38 8D +; ----------------------------------------------------------------------------- +; Routine: StateTeamSelection_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateTeamSelection_Loop2: + dex ; CPU:$8C9D PRG:0C9D CA + bne StateTeamSelection_Loop3 ; CPU:$8C9E PRG:0C9E D0 03 + jmp ServeSet_WaitForServe ; CPU:$8CA0 PRG:0CA0 4C 46 8D +; ----------------------------------------------------------------------------- +; Routine: StateTeamSelection_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateTeamSelection_Loop3: + dex ; CPU:$8CA3 PRG:0CA3 CA + bne StateTeamSelection_Loop4 ; CPU:$8CA4 PRG:0CA4 D0 03 + jmp ServeSet_StopSounds ; CPU:$8CA6 PRG:0CA6 4C 55 8D +; ----------------------------------------------------------------------------- +; Routine: StateTeamSelection_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateTeamSelection_Loop4: + dex ; CPU:$8CA9 PRG:0CA9 CA + bne TeamSelect_Start ; CPU:$8CAA PRG:0CAA D0 03 + jmp ServeSet_GoToNextState ; CPU:$8CAC PRG:0CAC 4C 62 8D +; ----------------------------------------------------------------------------- +; Routine: TeamSelect_Start +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSelect_Start: + lda #$00 ; CPU:$8CAF PRG:0CAF A9 00 + sta ServeReady ; CPU:$8CB1 PRG:0CB1 85 7E + lda #$04 ; CPU:$8CB3 PRG:0CB3 A9 04 + sta MusicCommand ; CPU:$8CB5 PRG:0CB5 85 EB + jsr DrawPlayersAndCrowd ; CPU:$8CB7 PRG:0CB7 20 56 D8 + jmp AdvanceSubState ; CPU:$8CBA PRG:0CBA 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: TeamSelect_CountTeams +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSelect_CountTeams: + lda #$00 ; CPU:$8CBD PRG:0CBD A9 00 + sta SpriteOffsetIndex ; CPU:$8CBF PRG:0CBF 85 46 + sta ColorIndex ; CPU:$8CC1 PRG:0CC1 85 47 + ldx #$05 ; CPU:$8CC3 PRG:0CC3 A2 05 +; ----------------------------------------------------------------------------- +; Routine: TeamSelect_CountTeams_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSelect_CountTeams_OnNonzero: + lda TeamFlags,x ; CPU:$8CC5 PRG:0CC5 B5 67 + beq TeamSelect_NextTeam ; CPU:$8CC7 PRG:0CC7 F0 0B + cmp #$01 ; CPU:$8CC9 PRG:0CC9 C9 01 + beq TeamSelect_CountTeams_Loop ; CPU:$8CCB PRG:0CCB F0 05 + inc ColorIndex ; CPU:$8CCD PRG:0CCD E6 47 + jmp TeamSelect_NextTeam ; CPU:$8CCF PRG:0CCF 4C D4 8C +; ----------------------------------------------------------------------------- +; Routine: TeamSelect_CountTeams_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSelect_CountTeams_Loop: + inc SpriteOffsetIndex ; CPU:$8CD2 PRG:0CD2 E6 46 +; ----------------------------------------------------------------------------- +; Routine: TeamSelect_NextTeam +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSelect_NextTeam: + dex ; CPU:$8CD4 PRG:0CD4 CA + bne TeamSelect_CountTeams_OnNonzero ; CPU:$8CD5 PRG:0CD5 D0 EE + lda SpriteOffsetIndex ; CPU:$8CD7 PRG:0CD7 A5 46 + cmp #$03 ; CPU:$8CD9 PRG:0CD9 C9 03 + beq TeamSelect_CheckTeam_Loop ; CPU:$8CDB PRG:0CDB F0 09 +TeamSelect_CheckTeam: + lda TeamNumber ; CPU:$8CDD PRG:0CDD A5 66 + cmp Zp6D ; CPU:$8CDF PRG:0CDF C5 6D + bne TeamSelect_ConfirmTeam_Loop ; CPU:$8CE1 PRG:0CE1 D0 0C + jmp ServeSet_BallPosition ; CPU:$8CE3 PRG:0CE3 4C 07 8D +; ----------------------------------------------------------------------------- +; Routine: TeamSelect_CheckTeam_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSelect_CheckTeam_Loop: + lda TeamNumber ; CPU:$8CE6 PRG:0CE6 A5 66 + cmp Zp6D ; CPU:$8CE8 PRG:0CE8 C5 6D + beq TeamSelect_ConfirmTeam_Loop ; CPU:$8CEA PRG:0CEA F0 03 +TeamSelect_ConfirmTeam: + jmp ServeSet_BallPosition ; CPU:$8CEC PRG:0CEC 4C 07 8D +; ----------------------------------------------------------------------------- +; Routine: TeamSelect_ConfirmTeam_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSelect_ConfirmTeam_Loop: + lda #$68 ; CPU:$8CEF PRG:0CEF A9 68 + sta ScrollTargetX ; CPU:$8CF1 PRG:0CF1 85 4F + lda #$1A ; CPU:$8CF3 PRG:0CF3 A9 1A + sta NumberToDisplay ; CPU:$8CF5 PRG:0CF5 85 45 + jsr SetTeamScores ; CPU:$8CF7 PRG:0CF7 20 2F D9 + lda #$3B ; CPU:$8CFA PRG:0CFA A9 3B + sta NumberToDisplay ; CPU:$8CFC PRG:0CFC 85 45 + jsr SetTeamScoresB ; CPU:$8CFE PRG:0CFE 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8D01 PRG:0D01 20 56 D8 + jmp AdvanceSubState ; CPU:$8D04 PRG:0D04 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: ServeSet_BallPosition +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ServeSet_BallPosition: + lda #$18 ; CPU:$8D07 PRG:0D07 A9 18 + sta ScrollTargetX ; CPU:$8D09 PRG:0D09 85 4F + lda #$1B ; CPU:$8D0B PRG:0D0B A9 1B + sta NumberToDisplay ; CPU:$8D0D PRG:0D0D 85 45 + jsr SetTeamScores ; CPU:$8D0F PRG:0D0F 20 2F D9 + lda #$3A ; CPU:$8D12 PRG:0D12 A9 3A + sta NumberToDisplay ; CPU:$8D14 PRG:0D14 85 45 + jsr SetTeamScoresB ; CPU:$8D16 PRG:0D16 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8D19 PRG:0D19 20 56 D8 + jmp AdvanceSubState ; CPU:$8D1C PRG:0D1C 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: ServeSet_CheckDmc +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ServeSet_CheckDmc: + lda APUSTATUS ; CPU:$8D1F PRG:0D1F AD 15 40 + and #$1F ; CPU:$8D22 PRG:0D22 29 1F + beq ServeSet_CheckDmc_Loop ; CPU:$8D24 PRG:0D24 F0 0C + jsr DrawPlayersAndCrowd ; CPU:$8D26 PRG:0D26 20 56 D8 + lda ButtonsPlayer1Pressed ; CPU:$8D29 PRG:0D29 A5 1D + and #$20 ; CPU:$8D2B PRG:0D2B 29 20 + bne ServeSet_StopSounds ; CPU:$8D2D PRG:0D2D D0 26 + jmp DecrementStateTimer_Loop ; CPU:$8D2F PRG:0D2F 4C FF 85 +; ----------------------------------------------------------------------------- +; Routine: ServeSet_CheckDmc_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ServeSet_CheckDmc_Loop: + jsr DrawPlayersAndCrowd ; CPU:$8D32 PRG:0D32 20 56 D8 + jmp AdvanceSubState ; CPU:$8D35 PRG:0D35 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: ServeSet_SetTimer +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ServeSet_SetTimer: + lda #$C0 ; CPU:$8D38 PRG:0D38 A9 C0 + sta StateTimerLo ; CPU:$8D3A PRG:0D3A 85 02 + lda #$01 ; CPU:$8D3C PRG:0D3C A9 01 + sta StateTimerHi ; CPU:$8D3E PRG:0D3E 85 03 + jsr DrawPlayersAndCrowd ; CPU:$8D40 PRG:0D40 20 56 D8 + jmp AdvanceSubState ; CPU:$8D43 PRG:0D43 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: ServeSet_WaitForServe +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ServeSet_WaitForServe: + jsr DrawPlayersAndCrowd ; CPU:$8D46 PRG:0D46 20 56 D8 + lda ButtonsPlayer1Pressed ; CPU:$8D49 PRG:0D49 A5 1D + and #$20 ; CPU:$8D4B PRG:0D4B 29 20 + bne ServeSet_StopSounds ; CPU:$8D4D PRG:0D4D D0 06 + jmp DecrementStateTimer ; CPU:$8D4F PRG:0D4F 4C F7 85 +; ---- data $8D52-$8D54 (3 bytes) ---- +; Unreached block: a `JMP $8600` tail of a state handler that this session +; never entered. +UnreachedCode_8D52: + .byte $4C, $00, $86 ; CPU:$8D52 PRG:0D52 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: ServeSet_StopSounds +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ServeSet_StopSounds: + lda #$08 ; CPU:$8D55 PRG:0D55 A9 08 + sta MusicCommand ; CPU:$8D57 PRG:0D57 85 EB + lda #$FF ; CPU:$8D59 PRG:0D59 A9 FF + sta GameInitializedFlag ; CPU:$8D5B PRG:0D5B 85 DE + lda #$00 ; CPU:$8D5D PRG:0D5D A9 00 + jmp SetGameState ; CPU:$8D5F PRG:0D5F 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: ServeSet_GoToNextState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ServeSet_GoToNextState: + jmp AdvanceGameState ; CPU:$8D62 PRG:0D62 4C 03 86 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateServeSetup +; Global: Prepares the serve: the ball is placed, the players walk to their +; positions and the whistle goes. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateServeSetup: + inx ; CPU:$8D65 PRG:0D65 E8 + dex ; CPU:$8D66 PRG:0D66 CA + beq StateServeSetup_Loop2 ; CPU:$8D67 PRG:0D67 F0 18 + dex ; CPU:$8D69 PRG:0D69 CA + beq StateServeSetup_Loop3 ; CPU:$8D6A PRG:0D6A F0 31 + dex ; CPU:$8D6C PRG:0D6C CA + beq StateServeSetup_Loop4 ; CPU:$8D6D PRG:0D6D F0 34 + dex ; CPU:$8D6F PRG:0D6F CA + beq StateServeSetup_Loop5 ; CPU:$8D70 PRG:0D70 F0 4D + dex ; CPU:$8D72 PRG:0D72 CA + beq StateServeSetup_Loop6 ; CPU:$8D73 PRG:0D73 F0 50 + dex ; CPU:$8D75 PRG:0D75 CA + bne StateServeSetup_Loop ; CPU:$8D76 PRG:0D76 D0 03 + jmp ServeSet_FrameDone ; CPU:$8D78 PRG:0D78 4C EA 8D +; ----------------------------------------------------------------------------- +; Routine: StateServeSetup_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateServeSetup_Loop: + dex ; CPU:$8D7B PRG:0D7B CA + bne StateServeSetup_Loop2 ; CPU:$8D7C PRG:0D7C D0 03 + jmp AdvanceSubStateShared ; CPU:$8D7E PRG:0D7E 4C FA 8D +; ----------------------------------------------------------------------------- +; Routine: StateServeSetup_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateServeSetup_Loop2: + lda #$00 ; CPU:$8D81 PRG:0D81 A9 00 + sta IndicatorEnable ; CPU:$8D83 PRG:0D83 85 7B + lda #$0C ; CPU:$8D85 PRG:0D85 A9 0C + sta NumberToDisplay ; CPU:$8D87 PRG:0D87 85 45 + jsr ResetTeamPositions ; CPU:$8D89 PRG:0D89 20 DF D8 + jsr SetTeamPositionsB ; CPU:$8D8C PRG:0D8C 20 05 D9 + jsr DrawPlayersAndCrowd ; CPU:$8D8F PRG:0D8F 20 56 D8 + lda #$20 ; CPU:$8D92 PRG:0D92 A9 20 + sta StateTimerLo ; CPU:$8D94 PRG:0D94 85 02 + lda #$01 ; CPU:$8D96 PRG:0D96 A9 01 + sta StateTimerHi ; CPU:$8D98 PRG:0D98 85 03 + jmp AdvanceSubState ; CPU:$8D9A PRG:0D9A 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateServeSetup_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateServeSetup_Loop3: + jsr DrawPlayersAndCrowd ; CPU:$8D9D PRG:0D9D 20 56 D8 + jmp DecrementStateTimer ; CPU:$8DA0 PRG:0DA0 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: StateServeSetup_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateServeSetup_Loop4: + lda #$19 ; CPU:$8DA3 PRG:0DA3 A9 19 + sta NumberToDisplay ; CPU:$8DA5 PRG:0DA5 85 45 + jsr SetTeamScores ; CPU:$8DA7 PRG:0DA7 20 2F D9 + lda #$39 ; CPU:$8DAA PRG:0DAA A9 39 + sta NumberToDisplay ; CPU:$8DAC PRG:0DAC 85 45 + jsr SetTeamScoresB ; CPU:$8DAE PRG:0DAE 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8DB1 PRG:0DB1 20 56 D8 + lda #$20 ; CPU:$8DB4 PRG:0DB4 A9 20 + sta StateTimerLo ; CPU:$8DB6 PRG:0DB6 85 02 + lda #$01 ; CPU:$8DB8 PRG:0DB8 A9 01 + sta StateTimerHi ; CPU:$8DBA PRG:0DBA 85 03 + jmp AdvanceSubState ; CPU:$8DBC PRG:0DBC 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateServeSetup_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateServeSetup_Loop5: + jsr DrawPlayersAndCrowd ; CPU:$8DBF PRG:0DBF 20 56 D8 + jmp DecrementStateTimer ; CPU:$8DC2 PRG:0DC2 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: StateServeSetup_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateServeSetup_Loop6: + jsr DrawPlayersAndCrowd ; CPU:$8DC5 PRG:0DC5 20 56 D8 + lda PlayerLeftPressed ; CPU:$8DC8 PRG:0DC8 A5 77 + and #$10 ; CPU:$8DCA PRG:0DCA 29 10 + beq StateServeSetup_Loop7 ; CPU:$8DCC PRG:0DCC F0 03 + jmp ServeSet_ClearPlayerInput ; CPU:$8DCE PRG:0DCE 4C DD 8D +; ----------------------------------------------------------------------------- +; Routine: StateServeSetup_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateServeSetup_Loop7: + lda PlayerRightPressed ; CPU:$8DD1 PRG:0DD1 A5 78 + and #$10 ; CPU:$8DD3 PRG:0DD3 29 10 + beq StateServeSetup_Loop8 ; CPU:$8DD5 PRG:0DD5 F0 03 + jmp ServeSet_ClearPlayerInput ; CPU:$8DD7 PRG:0DD7 4C DD 8D +; ----------------------------------------------------------------------------- +; Routine: StateServeSetup_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateServeSetup_Loop8: + jmp DecrementStateTimer_Loop ; CPU:$8DDA PRG:0DDA 4C FF 85 +; ----------------------------------------------------------------------------- +; Routine: ServeSet_ClearPlayerInput +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ServeSet_ClearPlayerInput: + lda #$00 ; CPU:$8DDD PRG:0DDD A9 00 + sta PlayerLeftPressed ; CPU:$8DDF PRG:0DDF 85 77 + sta PlayerRightPressed ; CPU:$8DE1 PRG:0DE1 85 78 + lda #$00 ; CPU:$8DE3 PRG:0DE3 A9 00 + sta Zp71 ; CPU:$8DE5 PRG:0DE5 85 71 + jmp AdvanceSubState ; CPU:$8DE7 PRG:0DE7 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: ServeSet_FrameDone +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ServeSet_FrameDone: + jsr DrawPlayersAndCrowd ; CPU:$8DEA PRG:0DEA 20 56 D8 + lda #$00 ; CPU:$8DED PRG:0DED A9 00 + sta ServeReady ; CPU:$8DEF PRG:0DEF 85 7E + lda #$80 ; CPU:$8DF1 PRG:0DF1 A9 80 + sta MusicCommand ; CPU:$8DF3 PRG:0DF3 85 EB + lda #$05 ; CPU:$8DF5 PRG:0DF5 A9 05 + jmp SetGameState ; CPU:$8DF7 PRG:0DF7 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: AdvanceSubStateShared +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AdvanceSubStateShared: + jmp AdvanceSubState ; CPU:$8DFA PRG:0DFA 4C 00 86 +; ---- data $8DFD-$8E08 (12 bytes) ---- +; Unreached block: four shared `JMP $8600` / `JMP $8603` tails used by the +; state handlers that this session never entered. +UnreachedCode_8DFD: + .byte $4C, $00, $86, $4C, $00, $86, $4C, $00, $86, $4C, $03, $86 ; CPU:$8DFD PRG:0DFD 4C 00 86 4C 00 86 4C 00 86 4C 03 86 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateAttractDemo +; Global: The attract demo: the computer plays a whole match by itself. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateAttractDemo: + inx ; CPU:$8E09 PRG:0E09 E8 + dex ; CPU:$8E0A PRG:0E0A CA + beq StateAttractDemo_Loop ; CPU:$8E0B PRG:0E0B F0 09 + dex ; CPU:$8E0D PRG:0E0D CA + beq StateAttractDemo_Loop2 ; CPU:$8E0E PRG:0E0E F0 14 + dex ; CPU:$8E10 PRG:0E10 CA + beq StateAttractDemo_Loop3 ; CPU:$8E11 PRG:0E11 F0 22 + dex ; CPU:$8E13 PRG:0E13 CA + beq StateAttractDemo_Loop4 ; CPU:$8E14 PRG:0E14 F0 32 +; ----------------------------------------------------------------------------- +; Routine: StateAttractDemo_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateAttractDemo_Loop: + lda #$00 ; CPU:$8E16 PRG:0E16 A9 00 + sta TitleFlag ; CPU:$8E18 PRG:0E18 85 8D + sta CrowdFlagsA ; CPU:$8E1A PRG:0E1A 85 50 + sta CrowdFlagsB ; CPU:$8E1C PRG:0E1C 85 51 + jsr ClearScreensForNewGame ; CPU:$8E1E PRG:0E1E 20 78 83 + jmp AdvanceSubState ; CPU:$8E21 PRG:0E21 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateAttractDemo_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateAttractDemo_Loop2: + lda #$FF ; CPU:$8E24 PRG:0E24 A9 FF + sta DemoModeFlag ; CPU:$8E26 PRG:0E26 85 81 + sta GameInitializedFlag ; CPU:$8E28 PRG:0E28 85 DE + lda #$04 ; CPU:$8E2A PRG:0E2A A9 04 + sta DemoCounterA ; CPU:$8E2C PRG:0E2C 85 82 + lda #$01 ; CPU:$8E2E PRG:0E2E A9 01 + sta DemoCounterB ; CPU:$8E30 PRG:0E30 85 83 + jmp AdvanceSubState ; CPU:$8E32 PRG:0E32 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateAttractDemo_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateAttractDemo_Loop3: + lda #$FF ; CPU:$8E35 PRG:0E35 A9 FF + sta PlayerCount ; CPU:$8E37 PRG:0E37 85 2E + lda #$34 ; CPU:$8E39 PRG:0E39 A9 34 + sta Zp6D ; CPU:$8E3B PRG:0E3B 85 6D + lda #$34 ; CPU:$8E3D PRG:0E3D A9 34 + sta TeamNumber ; CPU:$8E3F PRG:0E3F 85 66 + lda #$01 ; CPU:$8E41 PRG:0E41 A9 01 + sta CrowdOffsetB ; CPU:$8E43 PRG:0E43 85 87 + jmp AdvanceSubState ; CPU:$8E45 PRG:0E45 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: StateAttractDemo_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateAttractDemo_Loop4: + lda #$02 ; CPU:$8E48 PRG:0E48 A9 02 + jmp SetGameState ; CPU:$8E4A PRG:0E4A 4C 0A 86 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: StateMatchResults +; Global: Shows the result of the match and returns to the title screen. +; Local: Runs once per frame while the state is active. +; Parameters: the sub-state in X +; Returns: nothing +; Clobbers: A, X, Y and most of the zero page. +; ----------------------------------------------------------------------------- +StateMatchResults: + inx ; CPU:$8E4D PRG:0E4D E8 + dex ; CPU:$8E4E PRG:0E4E CA + beq Results_Start ; CPU:$8E4F PRG:0E4F F0 36 + dex ; CPU:$8E51 PRG:0E51 CA + beq Results_FrameDone ; CPU:$8E52 PRG:0E52 F0 45 + dex ; CPU:$8E54 PRG:0E54 CA + beq Results_ResetStructs ; CPU:$8E55 PRG:0E55 F0 48 + dex ; CPU:$8E57 PRG:0E57 CA + beq Results_ResetStructs_Loop ; CPU:$8E58 PRG:0E58 F0 60 + dex ; CPU:$8E5A PRG:0E5A CA + beq Results_ResetStructs_Loop2 ; CPU:$8E5B PRG:0E5B F0 63 + dex ; CPU:$8E5D PRG:0E5D CA + bne StateMatchResults_Loop ; CPU:$8E5E PRG:0E5E D0 03 + jmp Results_FrameDone2 ; CPU:$8E60 PRG:0E60 4C DC 8E +; ----------------------------------------------------------------------------- +; Routine: StateMatchResults_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateMatchResults_Loop: + dex ; CPU:$8E63 PRG:0E63 CA + bne StateMatchResults_Loop2 ; CPU:$8E64 PRG:0E64 D0 03 + jmp Results_MoveBall ; CPU:$8E66 PRG:0E66 4C E2 8E +; ----------------------------------------------------------------------------- +; Routine: StateMatchResults_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateMatchResults_Loop2: + dex ; CPU:$8E69 PRG:0E69 CA + bne StateMatchResults_Loop3 ; CPU:$8E6A PRG:0E6A D0 03 + jmp Results_UpdateTeams ; CPU:$8E6C PRG:0E6C 4C FE 8E +; ----------------------------------------------------------------------------- +; Routine: StateMatchResults_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateMatchResults_Loop3: + dex ; CPU:$8E6F PRG:0E6F CA + bne StateMatchResults_Loop4 ; CPU:$8E70 PRG:0E70 D0 03 + jmp GetTeamPlayerOffsetB ; CPU:$8E72 PRG:0E72 4C 0A 8F +; ----------------------------------------------------------------------------- +; Routine: StateMatchResults_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateMatchResults_Loop4: + dex ; CPU:$8E75 PRG:0E75 CA + bne StateMatchResults_Loop5 ; CPU:$8E76 PRG:0E76 D0 03 + jmp SetNumberAndDrawB ; CPU:$8E78 PRG:0E78 4C 69 8F +; ----------------------------------------------------------------------------- +; Routine: StateMatchResults_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateMatchResults_Loop5: + dex ; CPU:$8E7B PRG:0E7B CA + bne StateMatchResults_Loop6 ; CPU:$8E7C PRG:0E7C D0 03 + jmp SetStateAndAdvanceB ; CPU:$8E7E PRG:0E7E 4C 85 8F +; ----------------------------------------------------------------------------- +; Routine: StateMatchResults_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StateMatchResults_Loop6: + dex ; CPU:$8E81 PRG:0E81 CA + bne Results_Start ; CPU:$8E82 PRG:0E82 D0 03 + jmp SetStateFiveB ; CPU:$8E84 PRG:0E84 4C 8B 8F +; ----------------------------------------------------------------------------- +; Routine: Results_Start +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Results_Start: + lda #$FF ; CPU:$8E87 PRG:0E87 A9 FF + sta Zp88 ; CPU:$8E89 PRG:0E89 85 88 + jsr DrawPlayersAndCrowd ; CPU:$8E8B PRG:0E8B 20 56 D8 + lda #$A0 ; CPU:$8E8E PRG:0E8E A9 A0 + sta StateTimerLo ; CPU:$8E90 PRG:0E90 85 02 + lda #$01 ; CPU:$8E92 PRG:0E92 A9 01 + sta StateTimerHi ; CPU:$8E94 PRG:0E94 85 03 + jmp AdvanceSubState ; CPU:$8E96 PRG:0E96 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Results_FrameDone +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Results_FrameDone: + jsr DrawPlayersAndCrowd ; CPU:$8E99 PRG:0E99 20 56 D8 + jmp DecrementStateTimer ; CPU:$8E9C PRG:0E9C 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: Results_ResetStructs +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Results_ResetStructs: + jsr InitPlayerStructs ; CPU:$8E9F PRG:0E9F 20 1E 93 + lda #$00 ; CPU:$8EA2 PRG:0EA2 A9 00 + sta NumberToDisplay ; CPU:$8EA4 PRG:0EA4 85 45 + jsr ResetTeamPositions ; CPU:$8EA6 PRG:0EA6 20 DF D8 + jsr SetTeamPositionsB ; CPU:$8EA9 PRG:0EA9 20 05 D9 + jsr DrawPlayersAndCrowd ; CPU:$8EAC PRG:0EAC 20 56 D8 + lda #$40 ; CPU:$8EAF PRG:0EAF A9 40 + sta StateTimerLo ; CPU:$8EB1 PRG:0EB1 85 02 + lda #$01 ; CPU:$8EB3 PRG:0EB3 A9 01 + sta StateTimerHi ; CPU:$8EB5 PRG:0EB5 85 03 + jmp AdvanceSubState ; CPU:$8EB7 PRG:0EB7 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Results_ResetStructs_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Results_ResetStructs_Loop: + jsr DrawPlayersAndCrowd ; CPU:$8EBA PRG:0EBA 20 56 D8 + jmp DecrementStateTimer ; CPU:$8EBD PRG:0EBD 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: Results_ResetStructs_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Results_ResetStructs_Loop2: + lda #$18 ; CPU:$8EC0 PRG:0EC0 A9 18 + sta NumberToDisplay ; CPU:$8EC2 PRG:0EC2 85 45 + jsr SetTeamScores ; CPU:$8EC4 PRG:0EC4 20 2F D9 + lda #$38 ; CPU:$8EC7 PRG:0EC7 A9 38 + sta NumberToDisplay ; CPU:$8EC9 PRG:0EC9 85 45 + jsr SetTeamScoresB ; CPU:$8ECB PRG:0ECB 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8ECE PRG:0ECE 20 56 D8 + lda #$48 ; CPU:$8ED1 PRG:0ED1 A9 48 + sta StateTimerLo ; CPU:$8ED3 PRG:0ED3 85 02 + lda #$01 ; CPU:$8ED5 PRG:0ED5 A9 01 + sta StateTimerHi ; CPU:$8ED7 PRG:0ED7 85 03 + jmp AdvanceSubState ; CPU:$8ED9 PRG:0ED9 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Results_FrameDone2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Results_FrameDone2: + jsr DrawPlayersAndCrowd ; CPU:$8EDC PRG:0EDC 20 56 D8 + jmp DecrementStateTimer ; CPU:$8EDF PRG:0EDF 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: Results_MoveBall +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Results_MoveBall: + lda #$00 ; CPU:$8EE2 PRG:0EE2 A9 00 + sta NumberToDisplay ; CPU:$8EE4 PRG:0EE4 85 45 + jsr SetTeamScores ; CPU:$8EE6 PRG:0EE6 20 2F D9 + lda #$20 ; CPU:$8EE9 PRG:0EE9 A9 20 + sta NumberToDisplay ; CPU:$8EEB PRG:0EEB 85 45 + jsr SetTeamScoresB ; CPU:$8EED PRG:0EED 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8EF0 PRG:0EF0 20 56 D8 + lda #$E0 ; CPU:$8EF3 PRG:0EF3 A9 E0 + sta StateTimerLo ; CPU:$8EF5 PRG:0EF5 85 02 + lda #$01 ; CPU:$8EF7 PRG:0EF7 A9 01 + sta StateTimerHi ; CPU:$8EF9 PRG:0EF9 85 03 + jmp AdvanceSubState ; CPU:$8EFB PRG:0EFB 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: Results_UpdateTeams +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Results_UpdateTeams: + jsr UpdateTeamPlayerPositions ; CPU:$8EFE PRG:0EFE 20 65 D9 + jsr UpdateTeamPlayerPositionsB ; CPU:$8F01 PRG:0F01 20 BB D9 + jsr DrawPlayersAndCrowd ; CPU:$8F04 PRG:0F04 20 56 D8 + jmp DecrementStateTimer ; CPU:$8F07 PRG:0F07 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: GetTeamPlayerOffsetB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTeamPlayerOffsetB: + lda TeamNumber ; CPU:$8F0A PRG:0F0A A5 66 + asl a ; CPU:$8F0C PRG:0F0C 0A + asl a ; CPU:$8F0D PRG:0F0D 0A + asl a ; CPU:$8F0E PRG:0F0E 0A + asl a ; CPU:$8F0F PRG:0F0F 0A + pha ; CPU:$8F10 PRG:0F10 48 + lda TeamNumber ; CPU:$8F11 PRG:0F11 A5 66 + lsr a ; CPU:$8F13 PRG:0F13 4A + lsr a ; CPU:$8F14 PRG:0F14 4A + lsr a ; CPU:$8F15 PRG:0F15 4A + lsr a ; CPU:$8F16 PRG:0F16 4A + sta TeamNumber ; CPU:$8F17 PRG:0F17 85 66 + pla ; CPU:$8F19 PRG:0F19 68 + ora TeamNumber ; CPU:$8F1A PRG:0F1A 05 66 + sta TeamNumber ; CPU:$8F1C PRG:0F1C 85 66 + lda PlayerCount ; CPU:$8F1E PRG:0F1E A5 2E + asl a ; CPU:$8F20 PRG:0F20 0A + asl a ; CPU:$8F21 PRG:0F21 0A + asl a ; CPU:$8F22 PRG:0F22 0A + asl a ; CPU:$8F23 PRG:0F23 0A + pha ; CPU:$8F24 PRG:0F24 48 + lda PlayerCount ; CPU:$8F25 PRG:0F25 A5 2E + lsr a ; CPU:$8F27 PRG:0F27 4A + lsr a ; CPU:$8F28 PRG:0F28 4A + lsr a ; CPU:$8F29 PRG:0F29 4A + lsr a ; CPU:$8F2A PRG:0F2A 4A + sta PlayerCount ; CPU:$8F2B PRG:0F2B 85 2E + pla ; CPU:$8F2D PRG:0F2D 68 + ora PlayerCount ; CPU:$8F2E PRG:0F2E 05 2E + sta PlayerCount ; CPU:$8F30 PRG:0F30 85 2E + lda PlayerLeftIndex ; CPU:$8F32 PRG:0F32 A5 73 + pha ; CPU:$8F34 PRG:0F34 48 + lda PlayerRightIndex ; CPU:$8F35 PRG:0F35 A5 74 + sta PlayerLeftIndex ; CPU:$8F37 PRG:0F37 85 73 + pla ; CPU:$8F39 PRG:0F39 68 + sta PlayerRightIndex ; CPU:$8F3A PRG:0F3A 85 74 + jsr LoadBackgroundTilemap ; CPU:$8F3C PRG:0F3C 20 39 DB + jsr QueueScreenUpdate ; CPU:$8F3F PRG:0F3F 20 A2 DB + lda #$00 ; CPU:$8F42 PRG:0F42 A9 00 + sta NumberToDisplay ; CPU:$8F44 PRG:0F44 85 45 + jsr InitPlayerPositionLoop ; CPU:$8F46 PRG:0F46 20 15 DA + jsr InitPlayerPositionLoopB ; CPU:$8F49 PRG:0F49 20 41 DA + lda IndicatorIndex ; CPU:$8F4C PRG:0F4C A5 64 + cmp #$0F ; CPU:$8F4E PRG:0F4E C9 0F + bne GetTeamPlayerOffsetB_Loop ; CPU:$8F50 PRG:0F50 D0 05 + lda #$F0 ; CPU:$8F52 PRG:0F52 A9 F0 + jmp ShiftTeamOffset ; CPU:$8F54 PRG:0F54 4C 59 8F +; ----------------------------------------------------------------------------- +; Routine: GetTeamPlayerOffsetB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTeamPlayerOffsetB_Loop: + lda #$0F ; CPU:$8F57 PRG:0F57 A9 0F +; ----------------------------------------------------------------------------- +; Routine: ShiftTeamOffset +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftTeamOffset: + sta IndicatorIndex ; CPU:$8F59 PRG:0F59 85 64 + ldx Zp62 ; CPU:$8F5B PRG:0F5B A6 62 + lda Zp63 ; CPU:$8F5D PRG:0F5D A5 63 + sta Zp62 ; CPU:$8F5F PRG:0F5F 85 62 + stx Zp63 ; CPU:$8F61 PRG:0F61 86 63 + jsr DrawPlayersAndCrowd ; CPU:$8F63 PRG:0F63 20 56 D8 + jmp AdvanceSubState ; CPU:$8F66 PRG:0F66 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: SetNumberAndDrawB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetNumberAndDrawB: + lda #$18 ; CPU:$8F69 PRG:0F69 A9 18 + sta NumberToDisplay ; CPU:$8F6B PRG:0F6B 85 45 + jsr SetTeamScores ; CPU:$8F6D PRG:0F6D 20 2F D9 + lda #$38 ; CPU:$8F70 PRG:0F70 A9 38 + sta NumberToDisplay ; CPU:$8F72 PRG:0F72 85 45 + jsr SetTeamScoresB ; CPU:$8F74 PRG:0F74 20 48 D9 + jsr DrawPlayersAndCrowd ; CPU:$8F77 PRG:0F77 20 56 D8 + lda #$48 ; CPU:$8F7A PRG:0F7A A9 48 + sta StateTimerLo ; CPU:$8F7C PRG:0F7C 85 02 + lda #$01 ; CPU:$8F7E PRG:0F7E A9 01 + sta StateTimerHi ; CPU:$8F80 PRG:0F80 85 03 + jmp AdvanceSubState ; CPU:$8F82 PRG:0F82 4C 00 86 +; ----------------------------------------------------------------------------- +; Routine: SetStateAndAdvanceB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetStateAndAdvanceB: + jsr DrawPlayersAndCrowd ; CPU:$8F85 PRG:0F85 20 56 D8 + jmp DecrementStateTimer ; CPU:$8F88 PRG:0F88 4C F7 85 +; ----------------------------------------------------------------------------- +; Routine: SetStateFiveB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetStateFiveB: + lda #$05 ; CPU:$8F8B PRG:0F8B A9 05 + jmp SetGameState ; CPU:$8F8D PRG:0F8D 4C 0A 86 +; ----------------------------------------------------------------------------- +; Routine: ReadCommandStreamByte +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadCommandStreamByte: + lda CmdStreamOpcode ; CPU:$8F90 PRG:0F90 A5 0D + and #$3F ; CPU:$8F92 PRG:0F92 29 3F + sta CmdStreamOpcode ; CPU:$8F94 PRG:0F94 85 0D + cmp #$20 ; CPU:$8F96 PRG:0F96 C9 20 + bcc ReadCommandStreamByte_Loop ; CPU:$8F98 PRG:0F98 90 0B + and #$1F ; CPU:$8F9A PRG:0F9A 29 1F + sta CmdStreamOpcode ; CPU:$8F9C PRG:0F9C 85 0D + lda CmdStreamValue ; CPU:$8F9E PRG:0F9E A5 0C + clc ; CPU:$8FA0 PRG:0FA0 18 + adc #$20 ; CPU:$8FA1 PRG:0FA1 69 20 + sta CmdStreamValue ; CPU:$8FA3 PRG:0FA3 85 0C +; ----------------------------------------------------------------------------- +; Routine: ReadCommandStreamByte_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadCommandStreamByte_Loop: + lda #$04 ; CPU:$8FA5 PRG:0FA5 A9 04 + sta CmdStreamValue3 ; CPU:$8FA7 PRG:0FA7 85 11 + lda CmdStreamValue ; CPU:$8FA9 PRG:0FA9 A5 0C + and #$3F ; CPU:$8FAB PRG:0FAB 29 3F + clc ; CPU:$8FAD PRG:0FAD 18 + rol a ; CPU:$8FAE PRG:0FAE 2A + rol a ; CPU:$8FAF PRG:0FAF 2A + rol a ; CPU:$8FB0 PRG:0FB0 2A + rol CmdStreamValue3 ; CPU:$8FB1 PRG:0FB1 26 11 + rol a ; CPU:$8FB3 PRG:0FB3 2A + rol CmdStreamValue3 ; CPU:$8FB4 PRG:0FB4 26 11 + rol a ; CPU:$8FB6 PRG:0FB6 2A + rol CmdStreamValue3 ; CPU:$8FB7 PRG:0FB7 26 11 + ora CmdStreamOpcode ; CPU:$8FB9 PRG:0FB9 05 0D + sta CmdStreamValue2 ; CPU:$8FBB PRG:0FBB 85 10 + rts ; CPU:$8FBD PRG:0FBD 60 +; ----------------------------------------------------------------------------- +; Routine: DecodeCommandStream +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DecodeCommandStream: + ldy #$00 ; CPU:$8FBE PRG:0FBE A0 00 +; ----------------------------------------------------------------------------- +; Routine: DecodeCommandStream_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DecodeCommandStream_OnNonzero: + lda (CmdStreamPtrLo),y ; CPU:$8FC0 PRG:0FC0 B1 0E + sta CmdStreamOpcode ; CPU:$8FC2 PRG:0FC2 85 0D + iny ; CPU:$8FC4 PRG:0FC4 C8 + lda (CmdStreamPtrLo),y ; CPU:$8FC5 PRG:0FC5 B1 0E + sta CmdStreamValue ; CPU:$8FC7 PRG:0FC7 85 0C + iny ; CPU:$8FC9 PRG:0FC9 C8 + jsr ReadCommandStreamByte ; CPU:$8FCA PRG:0FCA 20 90 8F + ldx AttributeScriptLength ; CPU:$8FCD PRG:0FCD A6 14 + lda CmdStreamValue3 ; CPU:$8FCF PRG:0FCF A5 11 + sta $0180,x ; CPU:$8FD1 PRG:0FD1 9D 80 01 + inx ; CPU:$8FD4 PRG:0FD4 E8 + inc AttributeScriptLength ; CPU:$8FD5 PRG:0FD5 E6 14 + lda CmdStreamValue2 ; CPU:$8FD7 PRG:0FD7 A5 10 + sta $0180,x ; CPU:$8FD9 PRG:0FD9 9D 80 01 + inx ; CPU:$8FDC PRG:0FDC E8 + inc AttributeScriptLength ; CPU:$8FDD PRG:0FDD E6 14 +; ----------------------------------------------------------------------------- +; Routine: RunCommandStream +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +RunCommandStream: + lda (CmdStreamPtrLo),y ; CPU:$8FDF PRG:0FDF B1 0E + iny ; CPU:$8FE1 PRG:0FE1 C8 + cmp #$FE ; CPU:$8FE2 PRG:0FE2 C9 FE + bcs RunCommandStream_Loop ; CPU:$8FE4 PRG:0FE4 B0 09 + sta $0180,x ; CPU:$8FE6 PRG:0FE6 9D 80 01 + inx ; CPU:$8FE9 PRG:0FE9 E8 + inc AttributeScriptLength ; CPU:$8FEA PRG:0FEA E6 14 + jmp RunCommandStream ; CPU:$8FEC PRG:0FEC 4C DF 8F +; ----------------------------------------------------------------------------- +; Routine: RunCommandStream_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +RunCommandStream_Loop: + pha ; CPU:$8FEF PRG:0FEF 48 + lda #$FF ; CPU:$8FF0 PRG:0FF0 A9 FF + sta $0180,x ; CPU:$8FF2 PRG:0FF2 9D 80 01 + inx ; CPU:$8FF5 PRG:0FF5 E8 + inc AttributeScriptLength ; CPU:$8FF6 PRG:0FF6 E6 14 + pla ; CPU:$8FF8 PRG:0FF8 68 + cmp #$FF ; CPU:$8FF9 PRG:0FF9 C9 FF + bne DecodeCommandStream_OnNonzero ; CPU:$8FFB PRG:0FFB D0 C3 + rts ; CPU:$8FFD PRG:0FFD 60 +; ---- data $8FFE-$9000 (3 bytes) ---- +; Unreached block: the tail of the per-frame command stream decoder. +UnreachedCode_8FFE: + .byte $4C, $CA, $8F ; CPU:$8FFE PRG:0FFE 4C CA 8F +; ----------------------------------------------------------------------------- +; Routine: InitMatchStructs +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitMatchStructs: + lda #$A8 ; CPU:$9001 PRG:1001 A9 A8 + sta BallX ; CPU:$9003 PRG:1003 8D 00 05 + lda #$60 ; CPU:$9006 PRG:1006 A9 60 + sta BallY ; CPU:$9008 PRG:1008 8D 01 05 + lda #$08 ; CPU:$900B PRG:100B A9 08 + sta BallFrameCounter ; CPU:$900D PRG:100D 8D 02 05 + lda #$04 ; CPU:$9010 PRG:1010 A9 04 + sta BallPositionX ; CPU:$9012 PRG:1012 8D 0F 05 + lda #$60 ; CPU:$9015 PRG:1015 A9 60 + sta BallPositionY ; CPU:$9017 PRG:1017 8D 10 05 + lda #$00 ; CPU:$901A PRG:101A A9 00 + sta ScoreRecord ; CPU:$901C PRG:101C 8D 13 05 + sta $0514 ; CPU:$901F PRG:101F 8D 14 05 + lda #$A4 ; CPU:$9022 PRG:1022 A9 A4 + sta CameraTargetX ; CPU:$9024 PRG:1024 8D 3F 05 + lda #$60 ; CPU:$9027 PRG:1027 A9 60 + sta CameraTargetY ; CPU:$9029 PRG:1029 8D 40 05 + lda #$20 ; CPU:$902C PRG:102C A9 20 + sta $0543 ; CPU:$902E PRG:102E 8D 43 05 + lda #$00 ; CPU:$9031 PRG:1031 A9 00 + sta $0544 ; CPU:$9033 PRG:1033 8D 44 05 + lda #$07 ; CPU:$9036 PRG:1036 A9 07 + sta TeamNumber ; CPU:$9038 PRG:1038 85 66 + jsr LoadBackgroundTilemap ; CPU:$903A PRG:103A 20 39 DB + rts ; CPU:$903D PRG:103D 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateMatchStructs +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateMatchStructs: + lda BallFrameCounter ; CPU:$903E PRG:103E AD 02 05 + cmp #$10 ; CPU:$9041 PRG:1041 C9 10 + bcs DrawMatchFrame ; CPU:$9043 PRG:1043 B0 49 + lda BallX ; CPU:$9045 PRG:1045 AD 00 05 + cmp #$80 ; CPU:$9048 PRG:1048 C9 80 + bcc UpdateMatchStructs_Loop ; CPU:$904A PRG:104A 90 21 + lda #$01 ; CPU:$904C PRG:104C A9 01 + sta BallVelocityX ; CPU:$904E PRG:104E 8D 03 05 + lda #$40 ; CPU:$9051 PRG:1051 A9 40 + sta BallTargetX ; CPU:$9053 PRG:1053 8D 0B 05 + lda #$04 ; CPU:$9056 PRG:1056 A9 04 + sta BallSpeed ; CPU:$9058 PRG:1058 8D 05 05 + lda #$07 ; CPU:$905B PRG:105B A9 07 + sta BallCountdown ; CPU:$905D PRG:105D 8D 06 05 + lda #$31 ; CPU:$9060 PRG:1060 A9 31 + sta $0543 ; CPU:$9062 PRG:1062 8D 43 05 + lda #$00 ; CPU:$9065 PRG:1065 A9 00 + sta $0544 ; CPU:$9067 PRG:1067 8D 44 05 + jmp DrawMatchFrame ; CPU:$906A PRG:106A 4C 8E 90 +; ----------------------------------------------------------------------------- +; Routine: UpdateMatchStructs_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateMatchStructs_Loop: + lda #$FF ; CPU:$906D PRG:106D A9 FF + sta BallVelocityX ; CPU:$906F PRG:106F 8D 03 05 + lda #$40 ; CPU:$9072 PRG:1072 A9 40 + sta BallTargetX ; CPU:$9074 PRG:1074 8D 0B 05 + lda #$04 ; CPU:$9077 PRG:1077 A9 04 + sta BallSpeed ; CPU:$9079 PRG:1079 8D 05 05 + lda #$07 ; CPU:$907C PRG:107C A9 07 + sta BallCountdown ; CPU:$907E PRG:107E 8D 06 05 + lda #$11 ; CPU:$9081 PRG:1081 A9 11 + sta ScoreRecord ; CPU:$9083 PRG:1083 8D 13 05 + lda #$00 ; CPU:$9086 PRG:1086 A9 00 + sta $0514 ; CPU:$9088 PRG:1088 8D 14 05 + jmp DrawMatchFrame ; CPU:$908B PRG:108B 4C 8E 90 +; ----------------------------------------------------------------------------- +; Routine: DrawMatchFrame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawMatchFrame: + jsr UpdateBallX ; CPU:$908E PRG:108E 20 15 C1 + jsr DrawPlayers ; CPU:$9091 PRG:1091 20 A6 C2 + jsr DrawScoreBoard ; CPU:$9094 PRG:1094 20 58 C7 + jsr DrawNumberSpriteAD ; CPU:$9097 PRG:1097 20 6A D0 + lda #$01 ; CPU:$909A PRG:109A A9 01 + sta CrowdOffsetA ; CPU:$909C PRG:109C 85 85 + lda #$00 ; CPU:$909E PRG:109E A9 00 + sta TableIndex ; CPU:$90A0 PRG:10A0 85 4E + jsr GetTileIndex ; CPU:$90A2 PRG:10A2 20 86 C3 + jsr DrawTeamFlags ; CPU:$90A5 PRG:10A5 20 EF C3 + jsr GetDrawX ; CPU:$90A8 PRG:10A8 20 FD C4 + lda #$00 ; CPU:$90AB PRG:10AB A9 00 + sta CrowdOffsetA ; CPU:$90AD PRG:10AD 85 85 + lda #$06 ; CPU:$90AF PRG:10AF A9 06 + sta TableIndex ; CPU:$90B1 PRG:10B1 85 4E + jsr GetTileIndex ; CPU:$90B3 PRG:10B3 20 86 C3 + jsr DrawTeamFlags ; CPU:$90B6 PRG:10B6 20 EF C3 + jsr GetDrawX ; CPU:$90B9 PRG:10B9 20 FD C4 + jsr DrawNumberSpriteZ ; CPU:$90BC PRG:10BC 20 B7 CC + rts ; CPU:$90BF PRG:10BF 60 +; ----------------------------------------------------------------------------- +; Routine: InitMatchPlayers +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitMatchPlayers: + lda #$00 ; CPU:$90C0 PRG:10C0 A9 00 + sta CrowdOffsetB ; CPU:$90C2 PRG:10C2 85 87 + lda #$0F ; CPU:$90C4 PRG:10C4 A9 0F + sta PlayerCount ; CPU:$90C6 PRG:10C6 85 2E + lda #$07 ; CPU:$90C8 PRG:10C8 A9 07 + sta Zp6D ; CPU:$90CA PRG:10CA 85 6D + lda #$07 ; CPU:$90CC PRG:10CC A9 07 + sta TeamNumber ; CPU:$90CE PRG:10CE 85 66 + lda #$07 ; CPU:$90D0 PRG:10D0 A9 07 + sta ScoreTeam1 ; CPU:$90D2 PRG:10D2 85 79 + lda #$00 ; CPU:$90D4 PRG:10D4 A9 00 + sta ScoreTeam2 ; CPU:$90D6 PRG:10D6 85 7A + rts ; CPU:$90D8 PRG:10D8 60 +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerInput +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdatePlayerInput: + lda ButtonsPlayer1Pressed ; CPU:$90D9 PRG:10D9 A5 1D + and #$20 ; CPU:$90DB PRG:10DB 29 20 + beq UpdatePlayerControl ; CPU:$90DD PRG:10DD F0 33 + lda #$01 ; CPU:$90DF PRG:10DF A9 01 + sta ApplauseCommand ; CPU:$90E1 PRG:10E1 85 ED + inc CrowdOffsetB ; CPU:$90E3 PRG:10E3 E6 87 + ldx CrowdOffsetB ; CPU:$90E5 PRG:10E5 A6 87 + dex ; CPU:$90E7 PRG:10E7 CA + beq SetPlayerCount ; CPU:$90E8 PRG:10E8 F0 1C + dex ; CPU:$90EA PRG:10EA CA + beq UpdatePlayerInput_Loop ; CPU:$90EB PRG:10EB F0 0A + dex ; CPU:$90ED PRG:10ED CA + beq UpdatePlayerInput_Loop ; CPU:$90EE PRG:10EE F0 07 + lda #$00 ; CPU:$90F0 PRG:10F0 A9 00 + sta CrowdOffsetB ; CPU:$90F2 PRG:10F2 85 87 + jmp SetPlayerCount ; CPU:$90F4 PRG:10F4 4C 06 91 +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerInput_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdatePlayerInput_Loop: + lda #$00 ; CPU:$90F7 PRG:10F7 A9 00 + sta PlayerCount ; CPU:$90F9 PRG:10F9 85 2E + lda #$00 ; CPU:$90FB PRG:10FB A9 00 + sta ScoreTeam1 ; CPU:$90FD PRG:10FD 85 79 + lda #$07 ; CPU:$90FF PRG:10FF A9 07 + sta ScoreTeam2 ; CPU:$9101 PRG:1101 85 7A + jmp UpdatePlayerControl ; CPU:$9103 PRG:1103 4C 12 91 +; ----------------------------------------------------------------------------- +; Routine: SetPlayerCount +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetPlayerCount: + lda #$0F ; CPU:$9106 PRG:1106 A9 0F + sta PlayerCount ; CPU:$9108 PRG:1108 85 2E + lda #$07 ; CPU:$910A PRG:110A A9 07 + sta ScoreTeam1 ; CPU:$910C PRG:110C 85 79 + lda #$00 ; CPU:$910E PRG:110E A9 00 + sta ScoreTeam2 ; CPU:$9110 PRG:1110 85 7A +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerControl +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdatePlayerControl: + lda ButtonsPlayer1Pressed ; CPU:$9112 PRG:1112 A5 1D + and #$04 ; CPU:$9114 PRG:1114 29 04 + beq CompareScores_Loop ; CPU:$9116 PRG:1116 F0 1C +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerControl_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdatePlayerControl_OnZero: + lda #$01 ; CPU:$9118 PRG:1118 A9 01 + sta ApplauseCommand ; CPU:$911A PRG:111A 85 ED + lda ScoreTeam1 ; CPU:$911C PRG:111C A5 79 + cmp #$07 ; CPU:$911E PRG:111E C9 07 + beq UpdatePlayerControl_Loop ; CPU:$9120 PRG:1120 F0 05 + inc ScoreTeam1 ; CPU:$9122 PRG:1122 E6 79 + jmp CompareScores ; CPU:$9124 PRG:1124 4C 2B 91 +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerControl_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdatePlayerControl_Loop: + lda #$00 ; CPU:$9127 PRG:1127 A9 00 + sta ScoreTeam1 ; CPU:$9129 PRG:1129 85 79 +; ----------------------------------------------------------------------------- +; Routine: CompareScores +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScores: + lda ScoreTeam1 ; CPU:$912B PRG:112B A5 79 + cmp ScoreTeam2 ; CPU:$912D PRG:112D C5 7A + beq UpdatePlayerControl_OnZero ; CPU:$912F PRG:112F F0 E7 + jmp UpdatePlayerAction ; CPU:$9131 PRG:1131 4C 53 91 +; ----------------------------------------------------------------------------- +; Routine: CompareScores_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScores_Loop: + lda ButtonsPlayer1Pressed ; CPU:$9134 PRG:1134 A5 1D + and #$08 ; CPU:$9136 PRG:1136 29 08 + beq UpdatePlayerAction ; CPU:$9138 PRG:1138 F0 19 +; ----------------------------------------------------------------------------- +; Routine: CompareScores_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScores_OnZero: + lda #$01 ; CPU:$913A PRG:113A A9 01 + sta ApplauseCommand ; CPU:$913C PRG:113C 85 ED + lda ScoreTeam1 ; CPU:$913E PRG:113E A5 79 + cmp #$00 ; CPU:$9140 PRG:1140 C9 00 + beq CompareScores_Loop2 ; CPU:$9142 PRG:1142 F0 05 + dec ScoreTeam1 ; CPU:$9144 PRG:1144 C6 79 + jmp CompareScoresB ; CPU:$9146 PRG:1146 4C 4D 91 +; ----------------------------------------------------------------------------- +; Routine: CompareScores_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScores_Loop2: + lda #$07 ; CPU:$9149 PRG:1149 A9 07 + sta ScoreTeam1 ; CPU:$914B PRG:114B 85 79 +; ----------------------------------------------------------------------------- +; Routine: CompareScoresB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScoresB: + lda ScoreTeam1 ; CPU:$914D PRG:114D A5 79 + cmp ScoreTeam2 ; CPU:$914F PRG:114F C5 7A + beq CompareScores_OnZero ; CPU:$9151 PRG:1151 F0 E7 +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerAction +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdatePlayerAction: + lda PlayerCount ; CPU:$9153 PRG:1153 A5 2E + beq UpdatePlayerAction_Loop ; CPU:$9155 PRG:1155 F0 03 + jmp ClearPlayerAction ; CPU:$9157 PRG:1157 4C 9B 91 +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerAction_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdatePlayerAction_Loop: + lda ButtonsPlayer2Pressed ; CPU:$915A PRG:115A A5 1E + and #$04 ; CPU:$915C PRG:115C 29 04 + beq CompareScoresC_Loop ; CPU:$915E PRG:115E F0 1C +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerAction_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdatePlayerAction_OnZero: + lda #$01 ; CPU:$9160 PRG:1160 A9 01 + sta ApplauseCommand ; CPU:$9162 PRG:1162 85 ED + lda ScoreTeam2 ; CPU:$9164 PRG:1164 A5 7A + cmp #$07 ; CPU:$9166 PRG:1166 C9 07 + beq UpdatePlayerAction_Loop2 ; CPU:$9168 PRG:1168 F0 05 + inc ScoreTeam2 ; CPU:$916A PRG:116A E6 7A + jmp CompareScoresC ; CPU:$916C PRG:116C 4C 73 91 +; ----------------------------------------------------------------------------- +; Routine: UpdatePlayerAction_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdatePlayerAction_Loop2: + lda #$00 ; CPU:$916F PRG:116F A9 00 + sta ScoreTeam2 ; CPU:$9171 PRG:1171 85 7A +; ----------------------------------------------------------------------------- +; Routine: CompareScoresC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScoresC: + lda ScoreTeam2 ; CPU:$9173 PRG:1173 A5 7A + cmp ScoreTeam1 ; CPU:$9175 PRG:1175 C5 79 + beq UpdatePlayerAction_OnZero ; CPU:$9177 PRG:1177 F0 E7 + jmp ClearPlayerAction ; CPU:$9179 PRG:1179 4C 9B 91 +; ----------------------------------------------------------------------------- +; Routine: CompareScoresC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScoresC_Loop: + lda ButtonsPlayer2Pressed ; CPU:$917C PRG:117C A5 1E + and #$08 ; CPU:$917E PRG:117E 29 08 + beq ClearPlayerAction ; CPU:$9180 PRG:1180 F0 19 +; ----------------------------------------------------------------------------- +; Routine: CompareScoresC_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScoresC_OnZero: + lda #$01 ; CPU:$9182 PRG:1182 A9 01 + sta ApplauseCommand ; CPU:$9184 PRG:1184 85 ED + lda ScoreTeam2 ; CPU:$9186 PRG:1186 A5 7A + cmp #$00 ; CPU:$9188 PRG:1188 C9 00 + beq CompareScoresC_Loop2 ; CPU:$918A PRG:118A F0 05 + dec ScoreTeam2 ; CPU:$918C PRG:118C C6 7A + jmp CompareScoresD ; CPU:$918E PRG:118E 4C 95 91 +; ----------------------------------------------------------------------------- +; Routine: CompareScoresC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScoresC_Loop2: + lda #$07 ; CPU:$9191 PRG:1191 A9 07 + sta ScoreTeam2 ; CPU:$9193 PRG:1193 85 7A +; ----------------------------------------------------------------------------- +; Routine: CompareScoresD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CompareScoresD: + lda ScoreTeam2 ; CPU:$9195 PRG:1195 A5 7A + cmp ScoreTeam1 ; CPU:$9197 PRG:1197 C5 79 + beq CompareScoresC_OnZero ; CPU:$9199 PRG:1199 F0 E7 +; ----------------------------------------------------------------------------- +; Routine: ClearPlayerAction +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearPlayerAction: + lda #$00 ; CPU:$919B PRG:119B A9 00 + sta Zp6D ; CPU:$919D PRG:119D 85 6D + lda PlayerCount ; CPU:$919F PRG:119F A5 2E + bne ClearPlayerAction_Loop ; CPU:$91A1 PRG:11A1 D0 0B + lda ScoreTeam1 ; CPU:$91A3 PRG:11A3 A5 79 + sta NumberToDisplay ; CPU:$91A5 PRG:11A5 85 45 + lda ScoreTeam2 ; CPU:$91A7 PRG:11A7 A5 7A + sta SpriteOffsetIndex ; CPU:$91A9 PRG:11A9 85 46 + jmp GetNumberOffset ; CPU:$91AB PRG:11AB 4C B6 91 +; ----------------------------------------------------------------------------- +; Routine: ClearPlayerAction_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearPlayerAction_Loop: + lda ScoreTeam1 ; CPU:$91AE PRG:11AE A5 79 + sta SpriteOffsetIndex ; CPU:$91B0 PRG:11B0 85 46 + lda ScoreTeam2 ; CPU:$91B2 PRG:11B2 A5 7A + sta NumberToDisplay ; CPU:$91B4 PRG:11B4 85 45 +; ----------------------------------------------------------------------------- +; Routine: GetNumberOffset +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetNumberOffset: + lda NumberToDisplay ; CPU:$91B6 PRG:11B6 A5 45 + asl a ; CPU:$91B8 PRG:11B8 0A + asl a ; CPU:$91B9 PRG:11B9 0A + asl a ; CPU:$91BA PRG:11BA 0A + asl a ; CPU:$91BB PRG:11BB 0A + ora Zp6D ; CPU:$91BC PRG:11BC 05 6D + ora SpriteOffsetIndex ; CPU:$91BE PRG:11BE 05 46 + sta Zp6D ; CPU:$91C0 PRG:11C0 85 6D + sta TeamNumber ; CPU:$91C2 PRG:11C2 85 66 + rts ; CPU:$91C4 PRG:11C4 60 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreDigits +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreDigits: + ldy #$07 ; CPU:$91C5 PRG:11C5 A0 07 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreDigits_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreDigits_OnNonnegative: + tya ; CPU:$91C7 PRG:11C7 98 + asl a ; CPU:$91C8 PRG:11C8 0A + tax ; CPU:$91C9 PRG:11C9 AA + lda $9253,x ; CPU:$91CA PRG:11CA BD 53 92 + sta PPUADDR ; CPU:$91CD PRG:11CD 8D 06 20 + lda ScoreDigitAddressTable,x ; CPU:$91D0 PRG:11D0 BD 52 92 + sta PPUADDR ; CPU:$91D3 PRG:11D3 8D 06 20 + lda #$FF ; CPU:$91D6 PRG:11D6 A9 FF + sta PPUDATA ; CPU:$91D8 PRG:11D8 8D 07 20 + sta PPUDATA ; CPU:$91DB PRG:11DB 8D 07 20 + dey ; CPU:$91DE PRG:11DE 88 + bpl DrawScoreDigits_OnNonnegative ; CPU:$91DF PRG:11DF 10 E6 + lda ScoreTeam1 ; CPU:$91E1 PRG:11E1 A5 79 + cmp #$04 ; CPU:$91E3 PRG:11E3 C9 04 + bcs DrawScoreDigits_Loop ; CPU:$91E5 PRG:11E5 B0 1B + asl a ; CPU:$91E7 PRG:11E7 0A + tax ; CPU:$91E8 PRG:11E8 AA + lda $9253,x ; CPU:$91E9 PRG:11E9 BD 53 92 + sta PPUADDR ; CPU:$91EC PRG:11EC 8D 06 20 + lda ScoreDigitAddressTable,x ; CPU:$91EF PRG:11EF BD 52 92 + sta PPUADDR ; CPU:$91F2 PRG:11F2 8D 06 20 + lda #$AA ; CPU:$91F5 PRG:11F5 A9 AA + sta PPUDATA ; CPU:$91F7 PRG:11F7 8D 07 20 + lda #$EE ; CPU:$91FA PRG:11FA A9 EE + sta PPUDATA ; CPU:$91FC PRG:11FC 8D 07 20 + jmp DrawScoreNumber ; CPU:$91FF PRG:11FF 4C 1A 92 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreDigits_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreDigits_Loop: + asl a ; CPU:$9202 PRG:1202 0A + tax ; CPU:$9203 PRG:1203 AA + lda $9253,x ; CPU:$9204 PRG:1204 BD 53 92 + sta PPUADDR ; CPU:$9207 PRG:1207 8D 06 20 + lda ScoreDigitAddressTable,x ; CPU:$920A PRG:120A BD 52 92 + sta PPUADDR ; CPU:$920D PRG:120D 8D 06 20 + lda #$BB ; CPU:$9210 PRG:1210 A9 BB + sta PPUDATA ; CPU:$9212 PRG:1212 8D 07 20 + lda #$AA ; CPU:$9215 PRG:1215 A9 AA + sta PPUDATA ; CPU:$9217 PRG:1217 8D 07 20 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreNumber +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreNumber: + lda ScoreTeam2 ; CPU:$921A PRG:121A A5 7A + cmp #$04 ; CPU:$921C PRG:121C C9 04 + bcs DrawScoreNumber_Loop ; CPU:$921E PRG:121E B0 19 + asl a ; CPU:$9220 PRG:1220 0A + tax ; CPU:$9221 PRG:1221 AA + lda $9253,x ; CPU:$9222 PRG:1222 BD 53 92 + sta PPUADDR ; CPU:$9225 PRG:1225 8D 06 20 + lda ScoreDigitAddressTable,x ; CPU:$9228 PRG:1228 BD 52 92 + sta PPUADDR ; CPU:$922B PRG:122B 8D 06 20 + lda #$00 ; CPU:$922E PRG:122E A9 00 + sta PPUDATA ; CPU:$9230 PRG:1230 8D 07 20 + lda #$CC ; CPU:$9233 PRG:1233 A9 CC + sta PPUDATA ; CPU:$9235 PRG:1235 8D 07 20 + rts ; CPU:$9238 PRG:1238 60 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreNumber_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreNumber_Loop: + asl a ; CPU:$9239 PRG:1239 0A + tax ; CPU:$923A PRG:123A AA + lda $9253,x ; CPU:$923B PRG:123B BD 53 92 + sta PPUADDR ; CPU:$923E PRG:123E 8D 06 20 + lda ScoreDigitAddressTable,x ; CPU:$9241 PRG:1241 BD 52 92 + sta PPUADDR ; CPU:$9244 PRG:1244 8D 06 20 + lda #$33 ; CPU:$9247 PRG:1247 A9 33 + sta PPUDATA ; CPU:$9249 PRG:1249 8D 07 20 + lda #$00 ; CPU:$924C PRG:124C A9 00 + sta PPUDATA ; CPU:$924E PRG:124E 8D 07 20 + rts ; CPU:$9251 PRG:1251 60 +; ---- data $9252-$9261 (16 bytes) ---- +; Eight 16-bit PPU addresses: where the two teams' score digits live on the +; nametable ($27DA..$27F4). +ScoreDigitAddressTable: +; referenced by `lda $9253,x` at $91CA (operand $9253 falls inside this region) +; referenced by `lda $9252,x` at $91D0 (operand $9252 falls inside this region) +; referenced by `lda $9253,x` at $91E9 (operand $9253 falls inside this region) +; referenced by `lda $9252,x` at $91EF (operand $9252 falls inside this region) +; referenced by `lda $9253,x` at $9204 (operand $9253 falls inside this region) +; referenced by `lda $9252,x` at $920A (operand $9252 falls inside this region) +; ... and 4 further references from decoded code + .byte $DA, $27, $E2, $27, $EA, $27, $F2, $27, $DC, $27, $E4, $27, $EC, $27, $F4, $27 ; CPU:$9252 PRG:1252 DA 27 E2 27 EA 27 F2 27 DC 27 E4 27 EC 27 F4 27 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamSprites +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamSprites: + lda #$02 ; CPU:$9262 PRG:1262 A9 02 + sta Zp00 ; CPU:$9264 PRG:1264 85 00 + ldx #$00 ; CPU:$9266 PRG:1266 A2 00 + ldy #$08 ; CPU:$9268 PRG:1268 A0 08 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamSprites_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamSprites_OnNonzero: + lda ScrollX ; CPU:$926A PRG:126A A5 06 + eor #$FF ; CPU:$926C PRG:126C 49 FF + clc ; CPU:$926E PRG:126E 18 + adc #$01 ; CPU:$926F PRG:126F 69 01 + sta NumberToDisplay ; CPU:$9271 PRG:1271 85 45 + clc ; CPU:$9273 PRG:1273 18 + adc #$18 ; CPU:$9274 PRG:1274 69 18 + bcs LoadTeamSprites_Loop ; CPU:$9276 PRG:1276 B0 0E + lda $DF8C,x ; CPU:$9278 PRG:1278 BD 8C DF + clc ; CPU:$927B PRG:127B 18 + adc NumberToDisplay ; CPU:$927C PRG:127C 65 45 + sta NumberTileRow ; CPU:$927E PRG:127E 85 18 + bcs LoadTeamSprites_Loop ; CPU:$9280 PRG:1280 B0 04 + adc #$18 ; CPU:$9282 PRG:1282 69 18 + bcc LoadTeamSprites_Loop2 ; CPU:$9284 PRG:1284 90 08 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamSprites_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamSprites_Loop: + txa ; CPU:$9286 PRG:1286 8A + clc ; CPU:$9287 PRG:1287 18 + adc #$0E ; CPU:$9288 PRG:1288 69 0E + tax ; CPU:$928A PRG:128A AA + jmp ReadTeamSpriteData ; CPU:$928B PRG:128B 4C B5 92 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamSprites_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamSprites_Loop2: + lda $DF8D,x ; CPU:$928E PRG:128E BD 8D DF + sta NumberTileColumn ; CPU:$9291 PRG:1291 85 15 + inx ; CPU:$9293 PRG:1293 E8 + inx ; CPU:$9294 PRG:1294 E8 + jsr LoadTeamSpritePair ; CPU:$9295 PRG:1295 20 B9 92 + jsr LoadTeamSpritePair ; CPU:$9298 PRG:1298 20 B9 92 + jsr LoadTeamSpritePair ; CPU:$929B PRG:129B 20 B9 92 + lda NumberTileRow ; CPU:$929E PRG:129E A5 18 + sec ; CPU:$92A0 PRG:12A0 38 + sbc #$18 ; CPU:$92A1 PRG:12A1 E9 18 + sta NumberTileRow ; CPU:$92A3 PRG:12A3 85 18 + lda NumberTileColumn ; CPU:$92A5 PRG:12A5 A5 15 + clc ; CPU:$92A7 PRG:12A7 18 + adc #$08 ; CPU:$92A8 PRG:12A8 69 08 + sta NumberTileColumn ; CPU:$92AA PRG:12AA 85 15 + jsr LoadTeamSpritePair ; CPU:$92AC PRG:12AC 20 B9 92 + jsr LoadTeamSpritePair ; CPU:$92AF PRG:12AF 20 B9 92 + jsr LoadTeamSpritePair ; CPU:$92B2 PRG:12B2 20 B9 92 +; ----------------------------------------------------------------------------- +; Routine: ReadTeamSpriteData +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadTeamSpriteData: + dey ; CPU:$92B5 PRG:12B5 88 + bne LoadTeamSprites_OnNonzero ; CPU:$92B6 PRG:12B6 D0 B2 + rts ; CPU:$92B8 PRG:12B8 60 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamSpritePair +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamSpritePair: + lda $DF8C,x ; CPU:$92B9 PRG:12B9 BD 8C DF + sta TeamSpritePtrHi ; CPU:$92BC PRG:12BC 85 17 + lda $DF8D,x ; CPU:$92BE PRG:12BE BD 8D DF + sta TeamSpritePtrLo ; CPU:$92C1 PRG:12C1 85 16 + jsr BuildPlayerSpriteEntries ; CPU:$92C3 PRG:12C3 20 D8 83 + inx ; CPU:$92C6 PRG:12C6 E8 + inx ; CPU:$92C7 PRG:12C7 E8 + lda NumberTileRow ; CPU:$92C8 PRG:12C8 A5 18 + clc ; CPU:$92CA PRG:12CA 18 + adc #$08 ; CPU:$92CB PRG:12CB 69 08 + sta NumberTileRow ; CPU:$92CD PRG:12CD 85 18 + rts ; CPU:$92CF PRG:12CF 60 +; ----------------------------------------------------------------------------- +; Routine: QueueTitleScript +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +QueueTitleScript: + lda #$50 ; CPU:$92D0 PRG:12D0 A9 50 + sta VramScriptPtrLo ; CPU:$92D2 PRG:12D2 85 41 + lda #$E1 ; CPU:$92D4 PRG:12D4 A9 E1 + sta VramScriptPtrHi ; CPU:$92D6 PRG:12D6 85 42 + lda #$FF ; CPU:$92D8 PRG:12D8 A9 FF + sta VramUpdatePending ; CPU:$92DA PRG:12DA 85 40 + lda #$00 ; CPU:$92DC PRG:12DC A9 00 + sta Zp71 ; CPU:$92DE PRG:12DE 85 71 + jsr LoadBackgroundTilemap ; CPU:$92E0 PRG:12E0 20 39 DB + jsr QueueScreenUpdate ; CPU:$92E3 PRG:12E3 20 A2 DB + lda #$F0 ; CPU:$92E6 PRG:12E6 A9 F0 + sta Zp65 ; CPU:$92E8 PRG:12E8 85 65 + lda Zp65 ; CPU:$92EA PRG:12EA A5 65 + sta IndicatorIndex ; CPU:$92EC PRG:12EC 85 64 + lda #$01 ; CPU:$92EE PRG:12EE A9 01 + sta PlayerLeftIndex ; CPU:$92F0 PRG:12F0 85 73 + lda #$00 ; CPU:$92F2 PRG:12F2 A9 00 + sta PlayerRightIndex ; CPU:$92F4 PRG:12F4 85 74 + lda #$00 ; CPU:$92F6 PRG:12F6 A9 00 + sta TeamScore1Lo ; CPU:$92F8 PRG:12F8 85 54 + lda #$04 ; CPU:$92FA PRG:12FA A9 04 + sta TeamScore1Hi ; CPU:$92FC PRG:12FC 85 55 + lda #$78 ; CPU:$92FE PRG:12FE A9 78 + sta ScrollTargetX ; CPU:$9300 PRG:1300 85 4F + lda #$18 ; CPU:$9302 PRG:1302 A9 18 + sta NumberToDisplay ; CPU:$9304 PRG:1304 85 45 + jsr InitPlayerPositionLoop ; CPU:$9306 PRG:1306 20 15 DA + jsr InitPlayerPositionLoopB ; CPU:$9309 PRG:1309 20 41 DA + lda #$00 ; CPU:$930C PRG:130C A9 00 + sta Zp62 ; CPU:$930E PRG:130E 85 62 + sta Zp63 ; CPU:$9310 PRG:1310 85 63 + sta TeamFlags ; CPU:$9312 PRG:1312 85 67 + sta IndicatorValue ; CPU:$9314 PRG:1314 85 68 + sta Zp69 ; CPU:$9316 PRG:1316 85 69 + sta Zp6A ; CPU:$9318 PRG:1318 85 6A + sta Zp6B ; CPU:$931A PRG:131A 85 6B + sta Zp6C ; CPU:$931C PRG:131C 85 6C +; ----------------------------------------------------------------------------- +; Routine: InitPlayerStructs +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitPlayerStructs: + lda #$00 ; CPU:$931E PRG:131E A9 00 + sta BallX ; CPU:$9320 PRG:1320 8D 00 05 + lda #$BA ; CPU:$9323 PRG:1323 A9 BA + sta BallY ; CPU:$9325 PRG:1325 8D 01 05 + lda #$00 ; CPU:$9328 PRG:1328 A9 00 + sta BallFrameCounter ; CPU:$932A PRG:132A 8D 02 05 + sta BallVelocityX ; CPU:$932D PRG:132D 8D 03 05 + sta BallVelocityY ; CPU:$9330 PRG:1330 8D 04 05 + sta BallSpeed ; CPU:$9333 PRG:1333 8D 05 05 + sta BallPreviousY ; CPU:$9336 PRG:1336 8D 07 05 + sta BallPreviousX ; CPU:$9339 PRG:1339 8D 08 05 + sta BallFractionX ; CPU:$933C PRG:133C 8D 09 05 + sta BallFractionY ; CPU:$933F PRG:133F 8D 0A 05 + sta BallTargetX ; CPU:$9342 PRG:1342 8D 0B 05 + sta BallTargetY ; CPU:$9345 PRG:1345 8D 0C 05 + lda #$08 ; CPU:$9348 PRG:1348 A9 08 + sta BallCountdown ; CPU:$934A PRG:134A 8D 06 05 + rts ; CPU:$934D PRG:134D 60 +; ----------------------------------------------------------------------------- +; Routine: InitScoreStructs +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitScoreStructs: + lda #$00 ; CPU:$934E PRG:134E A9 00 + sta BallFlags ; CPU:$9350 PRG:1350 85 6E + sta TeamId ; CPU:$9352 PRG:1352 85 70 + sta CrowdFlagsA ; CPU:$9354 PRG:1354 85 50 + sta CrowdFlagsB ; CPU:$9356 PRG:1356 85 51 + sta TeamColorA ; CPU:$9358 PRG:1358 85 58 + sta TeamColorB ; CPU:$935A PRG:135A 85 59 + sta PlayerSlotIndex ; CPU:$935C PRG:135C 85 8B + sta PlayerSlotIndex2 ; CPU:$935E PRG:135E 85 8C + nop ; CPU:$9360 PRG:1360 EA + nop ; CPU:$9361 PRG:1361 EA + nop ; CPU:$9362 PRG:1362 EA + nop ; CPU:$9363 PRG:1363 EA + sta Zp91 ; CPU:$9364 PRG:1364 85 91 + sta Zp92 ; CPU:$9366 PRG:1366 85 92 + lda #$18 ; CPU:$9368 PRG:1368 A9 18 + sta BallFrameCounter ; CPU:$936A PRG:136A 8D 02 05 + lda #$00 ; CPU:$936D PRG:136D A9 00 + sta BallVelocityX ; CPU:$936F PRG:136F 8D 03 05 + sta BallVelocityY ; CPU:$9372 PRG:1372 8D 04 05 + sta BallSpeed ; CPU:$9375 PRG:1375 8D 05 05 + sta BallFractionX ; CPU:$9378 PRG:1378 8D 09 05 + sta BallFractionY ; CPU:$937B PRG:137B 8D 0A 05 + sta BallTargetX ; CPU:$937E PRG:137E 8D 0B 05 + sta BallTargetY ; CPU:$9381 PRG:1381 8D 0C 05 + lda #$08 ; CPU:$9384 PRG:1384 A9 08 + sta BallCountdown ; CPU:$9386 PRG:1386 8D 06 05 + lda #$24 ; CPU:$9389 PRG:1389 A9 24 + sta NumberToDisplay ; CPU:$938B PRG:138B 85 45 + jsr ResetTeamPositions ; CPU:$938D PRG:138D 20 DF D8 + jsr SetTeamPositionsB ; CPU:$9390 PRG:1390 20 05 D9 + ldx #$00 ; CPU:$9393 PRG:1393 A2 00 + ldy #$00 ; CPU:$9395 PRG:1395 A0 00 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamNumberTable +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamNumberTable: + lda TeamNumberDelayTable,x ; CPU:$9397 PRG:1397 BD 1A 94 + sta ScoreRecord,y ; CPU:$939A PRG:139A 99 13 05 + txa ; CPU:$939D PRG:139D 8A + sta $0514,y ; CPU:$939E PRG:139E 99 14 05 + inx ; CPU:$93A1 PRG:13A1 E8 + cpx #$0C ; CPU:$93A2 PRG:13A2 E0 0C + beq LoadTeamNumberTable_Loop ; CPU:$93A4 PRG:13A4 F0 08 + tya ; CPU:$93A6 PRG:13A6 98 + clc ; CPU:$93A7 PRG:13A7 18 + adc #$08 ; CPU:$93A8 PRG:13A8 69 08 + tay ; CPU:$93AA PRG:13AA A8 + jmp LoadTeamNumberTable ; CPU:$93AB PRG:13AB 4C 97 93 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamNumberTable_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamNumberTable_Loop: + lda IndicatorIndex ; CPU:$93AE PRG:13AE A5 64 + cmp #$0F ; CPU:$93B0 PRG:13B0 C9 0F + bne LoadTeamNumberTable_Loop2 ; CPU:$93B2 PRG:13B2 D0 22 + lda #$01 ; CPU:$93B4 PRG:13B4 A9 01 + sta BallPreviousY ; CPU:$93B6 PRG:13B6 8D 07 05 + lda #$50 ; CPU:$93B9 PRG:13B9 A9 50 + sta BallX ; CPU:$93BB PRG:13BB 8D 00 05 + lda #$40 ; CPU:$93BE PRG:13BE A9 40 + sta BallY ; CPU:$93C0 PRG:13C0 8D 01 05 + lda #$54 ; CPU:$93C3 PRG:13C3 A9 54 + sta $0539 ; CPU:$93C5 PRG:13C5 8D 39 05 + lda #$40 ; CPU:$93C8 PRG:13C8 A9 40 + sta $053A ; CPU:$93CA PRG:13CA 8D 3A 05 + lda #$00 ; CPU:$93CD PRG:13CD A9 00 + ldx #$04 ; CPU:$93CF PRG:13CF A2 04 + ldy #$68 ; CPU:$93D1 PRG:13D1 A0 68 + jmp InitTeamPlayerStruct ; CPU:$93D3 PRG:13D3 4C F5 93 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamNumberTable_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamNumberTable_Loop2: + lda #$02 ; CPU:$93D6 PRG:13D6 A9 02 + sta BallPreviousY ; CPU:$93D8 PRG:13D8 8D 07 05 + lda #$B0 ; CPU:$93DB PRG:13DB A9 B0 + sta BallX ; CPU:$93DD PRG:13DD 8D 00 05 + lda #$70 ; CPU:$93E0 PRG:13E0 A9 70 + sta BallY ; CPU:$93E2 PRG:13E2 8D 01 05 + lda #$AC ; CPU:$93E5 PRG:13E5 A9 AC + sta $0549 ; CPU:$93E7 PRG:13E7 8D 49 05 + lda #$70 ; CPU:$93EA PRG:13EA A9 70 + sta $054A ; CPU:$93EC PRG:13EC 8D 4A 05 + lda #$04 ; CPU:$93EF PRG:13EF A9 04 + ldx #$00 ; CPU:$93F1 PRG:13F1 A2 00 + ldy #$10 ; CPU:$93F3 PRG:13F3 A0 10 +; ----------------------------------------------------------------------------- +; Routine: InitTeamPlayerStruct +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitTeamPlayerStruct: + sta TeamScore1Hi ; CPU:$93F5 PRG:13F5 85 55 + stx TeamScore1Lo ; CPU:$93F7 PRG:13F7 86 54 + sty ScrollTargetX ; CPU:$93F9 PRG:13F9 84 4F + lda #$00 ; CPU:$93FB PRG:13FB A9 00 + sta BallSpeed ; CPU:$93FD PRG:13FD 8D 05 05 + sta BallPreviousX ; CPU:$9400 PRG:1400 8D 08 05 + lda #$0B ; CPU:$9403 PRG:1403 A9 0B + sta TableIndex ; CPU:$9405 PRG:1405 85 4E +; ----------------------------------------------------------------------------- +; Routine: InitTeamPlayerStruct_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitTeamPlayerStruct_OnNonnegative: + lda TableIndex ; CPU:$9407 PRG:1407 A5 4E + asl a ; CPU:$9409 PRG:1409 0A + asl a ; CPU:$940A PRG:140A 0A + asl a ; CPU:$940B PRG:140B 0A + tax ; CPU:$940C PRG:140C AA + lda $0516,x ; CPU:$940D PRG:140D BD 16 05 + and #$3E ; CPU:$9410 PRG:1410 29 3E + sta $0516,x ; CPU:$9412 PRG:1412 9D 16 05 + dec TableIndex ; CPU:$9415 PRG:1415 C6 4E + bpl InitTeamPlayerStruct_OnNonnegative ; CPU:$9417 PRG:1417 10 EE + rts ; CPU:$9419 PRG:1419 60 +; ---- data $941A-$9425 (12 bytes) ---- +; Twelve per-team delay values (0 or $20) used when the number of a team is +; written into the score area. +TeamNumberDelayTable: +; referenced by `lda $941A,x` at $9397 (operand $941A falls inside this region) + .byte $00, $00, $00, $00, $00, $00, $20, $20, $20, $20, $20, $20 ; CPU:$941A PRG:141A 00 00 00 00 00 00 20 20 20 20 20 20 +; ----------------------------------------------------------------------------- +; Routine: InitRallyStructs +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitRallyStructs: + lda #$02 ; CPU:$9426 PRG:1426 A9 02 + sta Zp00 ; CPU:$9428 PRG:1428 85 00 + lda TitleFlag ; CPU:$942A PRG:142A A5 8D + bne InitRallyStructs_Loop2 ; CPU:$942C PRG:142C D0 1A + lda CrowdOffsetB ; CPU:$942E PRG:142E A5 87 + and #$01 ; CPU:$9430 PRG:1430 29 01 + beq InitRallyStructs_Loop ; CPU:$9432 PRG:1432 F0 06 + jsr UpdateBallX ; CPU:$9434 PRG:1434 20 15 C1 + jmp DrawRallyFrame ; CPU:$9437 PRG:1437 4C 56 94 +; ----------------------------------------------------------------------------- +; Routine: InitRallyStructs_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitRallyStructs_Loop: + lda FrameCounter ; CPU:$943A PRG:143A A5 2D + and #$07 ; CPU:$943C PRG:143C 29 07 + cmp #$07 ; CPU:$943E PRG:143E C9 07 + beq DrawRallyFrame ; CPU:$9440 PRG:1440 F0 14 + jsr UpdateBallX ; CPU:$9442 PRG:1442 20 15 C1 + jmp DrawRallyFrame ; CPU:$9445 PRG:1445 4C 56 94 +; ----------------------------------------------------------------------------- +; Routine: InitRallyStructs_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitRallyStructs_Loop2: + lda FrameCounter ; CPU:$9448 PRG:1448 A5 2D + and #$03 ; CPU:$944A PRG:144A 29 03 + cmp #$03 ; CPU:$944C PRG:144C C9 03 + beq DrawRallyFrame ; CPU:$944E PRG:144E F0 06 + jsr UpdateBallX ; CPU:$9450 PRG:1450 20 15 C1 + jmp DrawRallyFrame ; CPU:$9453 PRG:1453 4C 56 94 +; ----------------------------------------------------------------------------- +; Routine: DrawRallyFrame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawRallyFrame: + jsr InitBallAnimations ; CPU:$9456 PRG:1456 20 E6 C1 + jsr DrawPlayers ; CPU:$9459 PRG:1459 20 A6 C2 + jsr DrawCourt ; CPU:$945C PRG:145C 20 6D C3 + jsr DrawScoreBoard ; CPU:$945F PRG:145F 20 58 C7 + jsr CrowdSpriteLoopStart ; CPU:$9462 PRG:1462 20 8C C7 + jsr BallAnimationCheckScroll ; CPU:$9465 PRG:1465 20 92 C2 + jsr DrawNumberSpriteZ ; CPU:$9468 PRG:1468 20 B7 CC + jsr DrawNumberSpriteAD ; CPU:$946B PRG:146B 20 6A D0 + jsr BallCheckFloorD ; CPU:$946E PRG:146E 20 53 A9 + lda FrameCounter ; CPU:$9471 PRG:1471 A5 2D + and #$01 ; CPU:$9473 PRG:1473 29 01 + bne DrawRallyFrame_Loop ; CPU:$9475 PRG:1475 D0 06 + jsr DrawNumberSpriteO ; CPU:$9477 PRG:1477 20 67 CA + jmp UpdateBallFrame ; CPU:$947A PRG:147A 4C 80 94 +; ----------------------------------------------------------------------------- +; Routine: DrawRallyFrame_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawRallyFrame_Loop: + jsr DrawNumberSpriteS ; CPU:$947D PRG:147D 20 E1 CA +; ----------------------------------------------------------------------------- +; Routine: UpdateBallFrame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallFrame: + lda FrameCounter ; CPU:$9480 PRG:1480 A5 2D + and #$01 ; CPU:$9482 PRG:1482 29 01 + bne BallFrameDone_Loop ; CPU:$9484 PRG:1484 D0 0F + lda PlayerCount ; CPU:$9486 PRG:1486 A5 2E + and #$0F ; CPU:$9488 PRG:1488 29 0F + bne UpdateBallFrame_Loop ; CPU:$948A PRG:148A D0 03 + jmp BallFrameDone ; CPU:$948C PRG:148C 4C 92 94 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallFrame_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallFrame_Loop: + jsr GetBallNumberIndex ; CPU:$948F PRG:148F 20 5C 95 +; ----------------------------------------------------------------------------- +; Routine: BallFrameDone +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFrameDone: + jmp UpdateBallMovement ; CPU:$9492 PRG:1492 4C A1 94 +; ----------------------------------------------------------------------------- +; Routine: BallFrameDone_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFrameDone_Loop: + lda PlayerCount ; CPU:$9495 PRG:1495 A5 2E + and #$F0 ; CPU:$9497 PRG:1497 29 F0 + bne BallFrameDone_Loop2 ; CPU:$9499 PRG:1499 D0 03 + jmp UpdateBallMovement ; CPU:$949B PRG:149B 4C A1 94 +; ----------------------------------------------------------------------------- +; Routine: BallFrameDone_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFrameDone_Loop2: + jsr BallGetTeamSlot ; CPU:$949E PRG:149E 20 9C 9F +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement: + lda FrameCounter ; CPU:$94A1 PRG:14A1 A5 2D + and #$01 ; CPU:$94A3 PRG:14A3 29 01 + beq UpdateBallMovement_Loop ; CPU:$94A5 PRG:14A5 F0 03 + jmp UpdateBallAnimation ; CPU:$94A7 PRG:14A7 4C FE 94 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement_Loop: + lda PlayerSpriteId ; CPU:$94AA PRG:14AA A5 56 + beq UpdateBallMovement_Loop2 ; CPU:$94AC PRG:14AC F0 0A + lda PlayerLeftInput ; CPU:$94AE PRG:14AE A5 75 + and #$C0 ; CPU:$94B0 PRG:14B0 29 C0 + bne UpdateBallAnimation ; CPU:$94B2 PRG:14B2 D0 4A + lda #$00 ; CPU:$94B4 PRG:14B4 A9 00 + sta PlayerSpriteId ; CPU:$94B6 PRG:14B6 85 56 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement_Loop2: + lda PlayerLeftInput ; CPU:$94B8 PRG:14B8 A5 75 + and #$C0 ; CPU:$94BA PRG:14BA 29 C0 + bne UpdateBallMovement_Loop4 ; CPU:$94BC PRG:14BC D0 12 + lda PlayerCount ; CPU:$94BE PRG:14BE A5 2E + and #$0F ; CPU:$94C0 PRG:14C0 29 0F + bne UpdateBallMovement_Loop3 ; CPU:$94C2 PRG:14C2 D0 03 + jsr DrawNumberSpriteAB ; CPU:$94C4 PRG:14C4 20 AE CE +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement_Loop3: + jsr ClearNumberState ; CPU:$94C7 PRG:14C7 20 B7 CB + jsr CheckAnimateFlag ; CPU:$94CA PRG:14CA 20 B8 CD + jmp UpdateBallAnimation ; CPU:$94CD PRG:14CD 4C FE 94 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement_Loop4: + ldx TeamScore1Lo ; CPU:$94D0 PRG:14D0 A6 54 + beq UpdateBallMovement_Loop5 ; CPU:$94D2 PRG:14D2 F0 0C + dex ; CPU:$94D4 PRG:14D4 CA + beq UpdateBallMovement_Loop6 ; CPU:$94D5 PRG:14D5 F0 0F + dex ; CPU:$94D7 PRG:14D7 CA + beq UpdateBallMovement_Loop7 ; CPU:$94D8 PRG:14D8 F0 12 + dex ; CPU:$94DA PRG:14DA CA + beq UpdateBallMovement_Loop8 ; CPU:$94DB PRG:14DB F0 15 + dex ; CPU:$94DD PRG:14DD CA + beq UpdateBallMovement_Loop9 ; CPU:$94DE PRG:14DE F0 18 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement_Loop5: + jsr BallSelectSlot ; CPU:$94E0 PRG:14E0 20 8B AC + jmp UpdateBallAnimation ; CPU:$94E3 PRG:14E3 4C FE 94 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement_Loop6: + jsr BallSelectSlotB ; CPU:$94E6 PRG:14E6 20 48 AF + jmp UpdateBallAnimation ; CPU:$94E9 PRG:14E9 4C FE 94 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement_Loop7: + jsr BallSelectSlotC ; CPU:$94EC PRG:14EC 20 39 B2 + jmp UpdateBallAnimation ; CPU:$94EF PRG:14EF 4C FE 94 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement_Loop8: + jsr BallCheckHitType ; CPU:$94F2 PRG:14F2 20 F5 B4 + jmp UpdateBallAnimation ; CPU:$94F5 PRG:14F5 4C FE 94 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallMovement_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallMovement_Loop9: + jsr BallHandlePlayerButton ; CPU:$94F8 PRG:14F8 20 13 AB + jmp UpdateBallAnimation ; CPU:$94FB PRG:14FB 4C FE 94 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation: + lda FrameCounter ; CPU:$94FE PRG:14FE A5 2D + and #$01 ; CPU:$9500 PRG:1500 29 01 + bne UpdateBallAnimation_Loop ; CPU:$9502 PRG:1502 D0 03 + jmp BallRoutineEnd ; CPU:$9504 PRG:1504 4C 5B 95 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation_Loop: + lda PlayerSpriteIdB ; CPU:$9507 PRG:1507 A5 57 + beq UpdateBallAnimation_Loop2 ; CPU:$9509 PRG:1509 F0 0A + lda PlayerRightInput ; CPU:$950B PRG:150B A5 76 + and #$C0 ; CPU:$950D PRG:150D 29 C0 + bne BallRoutineEnd ; CPU:$950F PRG:150F D0 4A + lda #$00 ; CPU:$9511 PRG:1511 A9 00 + sta PlayerSpriteIdB ; CPU:$9513 PRG:1513 85 57 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation_Loop2: + lda PlayerRightInput ; CPU:$9515 PRG:1515 A5 76 + and #$C0 ; CPU:$9517 PRG:1517 29 C0 + bne UpdateBallAnimation_Loop4 ; CPU:$9519 PRG:1519 D0 12 + lda PlayerCount ; CPU:$951B PRG:151B A5 2E + and #$F0 ; CPU:$951D PRG:151D 29 F0 + bne UpdateBallAnimation_Loop3 ; CPU:$951F PRG:151F D0 03 + jsr DrawNumberSpriteAC ; CPU:$9521 PRG:1521 20 8A CF +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation_Loop3: + jsr ClearNumberStateB ; CPU:$9524 PRG:1524 20 37 CC + jsr DrawNumberSpriteAA ; CPU:$9527 PRG:1527 20 32 CE + jmp BallRoutineEnd ; CPU:$952A PRG:152A 4C 5B 95 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation_Loop4: + ldx TeamScore1Hi ; CPU:$952D PRG:152D A6 55 + beq UpdateBallAnimation_Loop5 ; CPU:$952F PRG:152F F0 0C + dex ; CPU:$9531 PRG:1531 CA + beq UpdateBallAnimation_Loop6 ; CPU:$9532 PRG:1532 F0 0F + dex ; CPU:$9534 PRG:1534 CA + beq UpdateBallAnimation_Loop7 ; CPU:$9535 PRG:1535 F0 12 + dex ; CPU:$9537 PRG:1537 CA + beq UpdateBallAnimation_Loop8 ; CPU:$9538 PRG:1538 F0 15 + dex ; CPU:$953A PRG:153A CA + beq UpdateBallAnimation_Loop9 ; CPU:$953B PRG:153B F0 18 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation_Loop5: + jsr BallSelectSlotD ; CPU:$953D PRG:153D 20 C4 B6 + jmp BallRoutineEnd ; CPU:$9540 PRG:1540 4C 5B 95 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation_Loop6: + jsr BallSelectSlotE ; CPU:$9543 PRG:1543 20 88 B9 + jmp BallRoutineEnd ; CPU:$9546 PRG:1546 4C 5B 95 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation_Loop7: + jsr BallSelectSlotF ; CPU:$9549 PRG:1549 20 7E BC + jmp BallRoutineEnd ; CPU:$954C PRG:154C 4C 5B 95 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation_Loop8: + jsr BallCheckHitTypeC ; CPU:$954F PRG:154F 20 4C BF + jmp BallRoutineEnd ; CPU:$9552 PRG:1552 4C 5B 95 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimation_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimation_Loop9: + jsr BallHandlePlayerButtonB ; CPU:$9555 PRG:1555 20 CF AB + jmp BallRoutineEnd ; CPU:$9558 PRG:1558 4C 5B 95 +; ----------------------------------------------------------------------------- +; Routine: BallRoutineEnd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallRoutineEnd: + rts ; CPU:$955B PRG:155B 60 +; ----------------------------------------------------------------------------- +; Routine: GetBallNumberIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetBallNumberIndex: + lda TeamNumber ; CPU:$955C PRG:155C A5 66 + and #$0F ; CPU:$955E PRG:155E 29 0F + tax ; CPU:$9560 PRG:1560 AA + dex ; CPU:$9561 PRG:1561 CA + bne GetBallNumberIndex_Loop ; CPU:$9562 PRG:1562 D0 03 + jmp TeamPlayerMove0 ; CPU:$9564 PRG:1564 4C 8C 95 +; ----------------------------------------------------------------------------- +; Routine: GetBallNumberIndex_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetBallNumberIndex_Loop: + dex ; CPU:$9567 PRG:1567 CA + bne GetBallNumberIndex_Loop2 ; CPU:$9568 PRG:1568 D0 03 + jmp TeamPlayerMove1 ; CPU:$956A PRG:156A 4C DD 95 +; ----------------------------------------------------------------------------- +; Routine: GetBallNumberIndex_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetBallNumberIndex_Loop2: + dex ; CPU:$956D PRG:156D CA + bne GetBallNumberIndex_Loop3 ; CPU:$956E PRG:156E D0 03 + jmp TeamPlayerMove1Start ; CPU:$9570 PRG:1570 4C 24 96 +; ----------------------------------------------------------------------------- +; Routine: GetBallNumberIndex_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetBallNumberIndex_Loop3: + dex ; CPU:$9573 PRG:1573 CA + bne GetBallNumberIndex_Loop4 ; CPU:$9574 PRG:1574 D0 03 + jmp TeamPlayerMove2 ; CPU:$9576 PRG:1576 4C 75 96 +; ----------------------------------------------------------------------------- +; Routine: GetBallNumberIndex_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetBallNumberIndex_Loop4: + dex ; CPU:$9579 PRG:1579 CA + bne GetBallNumberIndex_Loop5 ; CPU:$957A PRG:157A D0 03 + jmp TeamPlayerMove3 ; CPU:$957C PRG:157C 4C C6 96 +; ----------------------------------------------------------------------------- +; Routine: GetBallNumberIndex_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetBallNumberIndex_Loop5: + dex ; CPU:$957F PRG:157F CA + bne GetBallNumberIndex_Loop6 ; CPU:$9580 PRG:1580 D0 03 + jmp TeamPlayerMove4 ; CPU:$9582 PRG:1582 4C 0D 97 +; ----------------------------------------------------------------------------- +; Routine: GetBallNumberIndex_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetBallNumberIndex_Loop6: + dex ; CPU:$9585 PRG:1585 CA + bne GetBallNumberIndex_Loop7 ; CPU:$9586 PRG:1586 D0 03 + jmp TeamPlayerMove5 ; CPU:$9588 PRG:1588 4C 54 97 +; ----------------------------------------------------------------------------- +; Routine: GetBallNumberIndex_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetBallNumberIndex_Loop7: + rts ; CPU:$958B PRG:158B 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0: + lda #$00 ; CPU:$958C PRG:158C A9 00 + sta PlayerLeftInput ; CPU:$958E PRG:158E 85 75 + lda PlayerSpriteId ; CPU:$9590 PRG:1590 A5 56 + beq TeamPlayerMove0_Loop ; CPU:$9592 PRG:1592 F0 04 + jsr BallUpdateBallSpeed ; CPU:$9594 PRG:1594 20 B0 9E + rts ; CPU:$9597 PRG:1597 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0_Loop: + ldx TeamScore1Lo ; CPU:$9598 PRG:1598 A6 54 + beq TeamPlayerMove0_Loop2 ; CPU:$959A PRG:159A F0 0C + dex ; CPU:$959C PRG:159C CA + beq TeamPlayerMove0_Loop3 ; CPU:$959D PRG:159D F0 10 + dex ; CPU:$959F PRG:159F CA + beq TeamPlayerMove0_Loop4 ; CPU:$95A0 PRG:15A0 F0 14 + dex ; CPU:$95A2 PRG:15A2 CA + beq TeamPlayerMove0End_Loop ; CPU:$95A3 PRG:15A3 F0 22 + dex ; CPU:$95A5 PRG:15A5 CA + beq TeamPlayerMove0End_Loop3 ; CPU:$95A6 PRG:15A6 F0 2E +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0_Loop2: + jsr CheckBallLanded ; CPU:$95A8 PRG:15A8 20 F9 97 + jsr BallUpdateBallSpeed ; CPU:$95AB PRG:15AB 20 B0 9E + rts ; CPU:$95AE PRG:15AE 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0_Loop3: + jsr BallUpdateTeamB ; CPU:$95AF PRG:15AF 20 88 99 + jsr BallUpdateBallSpeed ; CPU:$95B2 PRG:15B2 20 B0 9E + rts ; CPU:$95B5 PRG:15B5 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0_Loop4: + lda Zp60 ; CPU:$95B6 PRG:15B6 A5 60 + beq TeamPlayerMove0_Loop5 ; CPU:$95B8 PRG:15B8 F0 06 + jsr BallUpdateTeamD ; CPU:$95BA PRG:15BA 20 14 9B + jmp TeamPlayerMove0End ; CPU:$95BD PRG:15BD 4C C3 95 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0_Loop5: + jsr BallUpdateTeamE ; CPU:$95C0 PRG:15C0 20 BE 9B +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0End +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0End: + jsr BallUpdateBallSpeed ; CPU:$95C3 PRG:15C3 20 B0 9E + rts ; CPU:$95C6 PRG:15C6 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0End_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0End_Loop: + jsr BallUpdateAnimation ; CPU:$95C7 PRG:15C7 20 9B 9D + lda NumberToDisplay ; CPU:$95CA PRG:15CA A5 45 + beq TeamPlayerMove0End_Loop2 ; CPU:$95CC PRG:15CC F0 04 + jsr BallSubtractSpeed ; CPU:$95CE PRG:15CE 20 FA 9E + rts ; CPU:$95D1 PRG:15D1 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0End_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0End_Loop2: + jsr BallUpdateBallSpeed ; CPU:$95D2 PRG:15D2 20 B0 9E + rts ; CPU:$95D5 PRG:15D5 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove0End_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove0End_Loop3: + jsr BallResetForTeamB ; CPU:$95D6 PRG:15D6 20 46 9E + jsr BallUpdateBallSpeed ; CPU:$95D9 PRG:15D9 20 B0 9E + rts ; CPU:$95DC PRG:15DC 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1: + lda #$00 ; CPU:$95DD PRG:15DD A9 00 + sta PlayerLeftInput ; CPU:$95DF PRG:15DF 85 75 + lda PlayerSpriteId ; CPU:$95E1 PRG:15E1 A5 56 + beq TeamPlayerMove1_Loop ; CPU:$95E3 PRG:15E3 F0 04 + jsr BallUpdateBallSpeed ; CPU:$95E5 PRG:15E5 20 B0 9E + rts ; CPU:$95E8 PRG:15E8 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1_Loop: + ldx TeamScore1Lo ; CPU:$95E9 PRG:15E9 A6 54 + beq TeamPlayerMove1_Loop2 ; CPU:$95EB PRG:15EB F0 0C + dex ; CPU:$95ED PRG:15ED CA + beq TeamPlayerMove1_Loop3 ; CPU:$95EE PRG:15EE F0 10 + dex ; CPU:$95F0 PRG:15F0 CA + beq TeamPlayerMove1_Loop4 ; CPU:$95F1 PRG:15F1 F0 14 + dex ; CPU:$95F3 PRG:15F3 CA + beq TeamPlayerMove1_Loop5 ; CPU:$95F4 PRG:15F4 F0 18 + dex ; CPU:$95F6 PRG:15F6 CA + beq TeamPlayerMove1_Loop7 ; CPU:$95F7 PRG:15F7 F0 24 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1_Loop2: + jsr CheckBallLanded ; CPU:$95F9 PRG:15F9 20 F9 97 + jsr BallUpdateBallSpeed ; CPU:$95FC PRG:15FC 20 B0 9E + rts ; CPU:$95FF PRG:15FF 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1_Loop3: + jsr BallUpdateTeamA ; CPU:$9600 PRG:1600 20 C9 98 + jsr BallUpdateBallSpeed ; CPU:$9603 PRG:1603 20 B0 9E + rts ; CPU:$9606 PRG:1606 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1_Loop4: + jsr BallUpdateTeamC ; CPU:$9607 PRG:1607 20 61 9A + jsr BallUpdateBallSpeed ; CPU:$960A PRG:160A 20 B0 9E + rts ; CPU:$960D PRG:160D 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1_Loop5: + jsr BallUpdateAnimation ; CPU:$960E PRG:160E 20 9B 9D + lda NumberToDisplay ; CPU:$9611 PRG:1611 A5 45 + beq TeamPlayerMove1_Loop6 ; CPU:$9613 PRG:1613 F0 04 + jsr BallSubtractSpeed ; CPU:$9615 PRG:1615 20 FA 9E + rts ; CPU:$9618 PRG:1618 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1_Loop6: + jsr BallUpdateBallSpeed ; CPU:$9619 PRG:1619 20 B0 9E + rts ; CPU:$961C PRG:161C 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1_Loop7: + jsr BallResetForTeamB ; CPU:$961D PRG:161D 20 46 9E + jsr BallUpdateBallSpeed ; CPU:$9620 PRG:1620 20 B0 9E + rts ; CPU:$9623 PRG:1623 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1Start +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1Start: + lda #$00 ; CPU:$9624 PRG:1624 A9 00 + sta PlayerLeftInput ; CPU:$9626 PRG:1626 85 75 + lda PlayerSpriteId ; CPU:$9628 PRG:1628 A5 56 + beq TeamPlayerMove1Start_Loop ; CPU:$962A PRG:162A F0 04 + jsr BallUpdateBallSpeed ; CPU:$962C PRG:162C 20 B0 9E + rts ; CPU:$962F PRG:162F 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1Start_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1Start_Loop: + ldx TeamScore1Lo ; CPU:$9630 PRG:1630 A6 54 + beq TeamPlayerMove1Start_Loop2 ; CPU:$9632 PRG:1632 F0 0C + dex ; CPU:$9634 PRG:1634 CA + beq TeamPlayerMove1Start_Loop3 ; CPU:$9635 PRG:1635 F0 10 + dex ; CPU:$9637 PRG:1637 CA + beq TeamPlayerMove1Start_Loop4 ; CPU:$9638 PRG:1638 F0 14 + dex ; CPU:$963A PRG:163A CA + beq TeamPlayerMove1End_Loop ; CPU:$963B PRG:163B F0 22 + dex ; CPU:$963D PRG:163D CA + beq TeamPlayerMove1End_Loop3 ; CPU:$963E PRG:163E F0 2E +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1Start_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1Start_Loop2: + jsr CheckBallLanded ; CPU:$9640 PRG:1640 20 F9 97 + jsr BallUpdateBallSpeed ; CPU:$9643 PRG:1643 20 B0 9E + rts ; CPU:$9646 PRG:1646 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1Start_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1Start_Loop3: + jsr BallComputeAttrC ; CPU:$9647 PRG:1647 20 82 98 + jsr BallUpdateBallSpeed ; CPU:$964A PRG:164A 20 B0 9E + rts ; CPU:$964D PRG:164D 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1Start_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1Start_Loop4: + lda Zp60 ; CPU:$964E PRG:164E A5 60 + beq TeamPlayerMove1Start_Loop5 ; CPU:$9650 PRG:1650 F0 06 + jsr BallUpdateTeamD ; CPU:$9652 PRG:1652 20 14 9B + jmp TeamPlayerMove1End ; CPU:$9655 PRG:1655 4C 5B 96 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1Start_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1Start_Loop5: + jsr BallUpdateTeamC ; CPU:$9658 PRG:1658 20 61 9A +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1End +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1End: + jsr BallUpdateBallSpeed ; CPU:$965B PRG:165B 20 B0 9E + rts ; CPU:$965E PRG:165E 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1End_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1End_Loop: + jsr BallUpdateAnimation ; CPU:$965F PRG:165F 20 9B 9D + lda NumberToDisplay ; CPU:$9662 PRG:1662 A5 45 + beq TeamPlayerMove1End_Loop2 ; CPU:$9664 PRG:1664 F0 04 + jsr BallSubtractSpeed ; CPU:$9666 PRG:1666 20 FA 9E + rts ; CPU:$9669 PRG:1669 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1End_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1End_Loop2: + jsr BallUpdateBallSpeed ; CPU:$966A PRG:166A 20 B0 9E + rts ; CPU:$966D PRG:166D 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove1End_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove1End_Loop3: + jsr BallResetForTeam ; CPU:$966E PRG:166E 20 FC 9D + jsr BallUpdateBallSpeed ; CPU:$9671 PRG:1671 20 B0 9E + rts ; CPU:$9674 PRG:1674 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2: + lda #$00 ; CPU:$9675 PRG:1675 A9 00 + sta PlayerLeftInput ; CPU:$9677 PRG:1677 85 75 + lda PlayerSpriteId ; CPU:$9679 PRG:1679 A5 56 + beq TeamPlayerMove2_Loop ; CPU:$967B PRG:167B F0 04 + jsr BallUpdateBallSpeed ; CPU:$967D PRG:167D 20 B0 9E + rts ; CPU:$9680 PRG:1680 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2_Loop: + ldx TeamScore1Lo ; CPU:$9681 PRG:1681 A6 54 + beq TeamPlayerMove2_Loop2 ; CPU:$9683 PRG:1683 F0 0C + dex ; CPU:$9685 PRG:1685 CA + beq TeamPlayerMove2_Loop3 ; CPU:$9686 PRG:1686 F0 10 + dex ; CPU:$9688 PRG:1688 CA + beq TeamPlayerMove2_Loop4 ; CPU:$9689 PRG:1689 F0 14 + dex ; CPU:$968B PRG:168B CA + beq TeamPlayerMove2End_Loop ; CPU:$968C PRG:168C F0 22 + dex ; CPU:$968E PRG:168E CA + beq TeamPlayerMove2End_Loop3 ; CPU:$968F PRG:168F F0 2E +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2_Loop2: + jsr CheckBallLanded ; CPU:$9691 PRG:1691 20 F9 97 + jsr BallUpdateBallSpeed ; CPU:$9694 PRG:1694 20 B0 9E + rts ; CPU:$9697 PRG:1697 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2_Loop3: + jsr BallComputeAttrC ; CPU:$9698 PRG:1698 20 82 98 + jsr BallUpdateBallSpeed ; CPU:$969B PRG:169B 20 B0 9E + rts ; CPU:$969E PRG:169E 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2_Loop4: + lda Zp60 ; CPU:$969F PRG:169F A5 60 + beq TeamPlayerMove2_Loop5 ; CPU:$96A1 PRG:16A1 F0 06 + jsr BallUpdateTeamD ; CPU:$96A3 PRG:16A3 20 14 9B + jmp TeamPlayerMove2End ; CPU:$96A6 PRG:16A6 4C AC 96 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2_Loop5: + jsr BallUpdateTeamC ; CPU:$96A9 PRG:16A9 20 61 9A +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2End +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2End: + jsr BallUpdateBallSpeed ; CPU:$96AC PRG:16AC 20 B0 9E + rts ; CPU:$96AF PRG:16AF 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2End_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2End_Loop: + jsr BallUpdateAnimation ; CPU:$96B0 PRG:16B0 20 9B 9D + lda NumberToDisplay ; CPU:$96B3 PRG:16B3 A5 45 + beq TeamPlayerMove2End_Loop2 ; CPU:$96B5 PRG:16B5 F0 04 + jsr BallSubtractSpeed ; CPU:$96B7 PRG:16B7 20 FA 9E + rts ; CPU:$96BA PRG:16BA 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2End_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2End_Loop2: + jsr BallUpdateBallSpeed ; CPU:$96BB PRG:16BB 20 B0 9E + rts ; CPU:$96BE PRG:16BE 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove2End_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove2End_Loop3: + jsr BallResetForTeam ; CPU:$96BF PRG:16BF 20 FC 9D + jsr BallUpdateBallSpeed ; CPU:$96C2 PRG:16C2 20 B0 9E + rts ; CPU:$96C5 PRG:16C5 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove3: + lda #$00 ; CPU:$96C6 PRG:16C6 A9 00 + sta PlayerLeftInput ; CPU:$96C8 PRG:16C8 85 75 + lda PlayerSpriteId ; CPU:$96CA PRG:16CA A5 56 + beq TeamPlayerMove3_Loop ; CPU:$96CC PRG:16CC F0 04 + jsr BallUpdateBallSpeed ; CPU:$96CE PRG:16CE 20 B0 9E + rts ; CPU:$96D1 PRG:16D1 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove3_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove3_Loop: + ldx TeamScore1Lo ; CPU:$96D2 PRG:16D2 A6 54 + beq TeamPlayerMove3_Loop2 ; CPU:$96D4 PRG:16D4 F0 0C + dex ; CPU:$96D6 PRG:16D6 CA + beq TeamPlayerMove3_Loop3 ; CPU:$96D7 PRG:16D7 F0 10 + dex ; CPU:$96D9 PRG:16D9 CA + beq TeamPlayerMove3_Loop4 ; CPU:$96DA PRG:16DA F0 14 + dex ; CPU:$96DC PRG:16DC CA + beq TeamPlayerMove3_Loop5 ; CPU:$96DD PRG:16DD F0 18 + dex ; CPU:$96DF PRG:16DF CA + beq TeamPlayerMove3_Loop7 ; CPU:$96E0 PRG:16E0 F0 24 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove3_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove3_Loop2: + jsr CheckBallLanded ; CPU:$96E2 PRG:16E2 20 F9 97 + jsr BallUpdateBallSpeed ; CPU:$96E5 PRG:16E5 20 B0 9E + rts ; CPU:$96E8 PRG:16E8 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove3_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove3_Loop3: + jsr BallComputeAttrB ; CPU:$96E9 PRG:16E9 20 5B 98 + jsr BallUpdateBallSpeed ; CPU:$96EC PRG:16EC 20 B0 9E + rts ; CPU:$96EF PRG:16EF 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove3_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove3_Loop4: + jsr BallUpdateTeamF ; CPU:$96F0 PRG:16F0 20 B3 9C + jsr BallUpdateBallSpeed ; CPU:$96F3 PRG:16F3 20 B0 9E + rts ; CPU:$96F6 PRG:16F6 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove3_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove3_Loop5: + jsr BallUpdateAnimation ; CPU:$96F7 PRG:16F7 20 9B 9D + lda NumberToDisplay ; CPU:$96FA PRG:16FA A5 45 + beq TeamPlayerMove3_Loop6 ; CPU:$96FC PRG:16FC F0 04 + jsr BallSubtractSpeed ; CPU:$96FE PRG:16FE 20 FA 9E + rts ; CPU:$9701 PRG:1701 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove3_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove3_Loop6: + jsr BallUpdateBallSpeed ; CPU:$9702 PRG:1702 20 B0 9E + rts ; CPU:$9705 PRG:1705 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove3_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove3_Loop7: + jsr BallResetForTeam ; CPU:$9706 PRG:1706 20 FC 9D + jsr BallUpdateBallSpeed ; CPU:$9709 PRG:1709 20 B0 9E + rts ; CPU:$970C PRG:170C 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove4: + lda #$00 ; CPU:$970D PRG:170D A9 00 + sta PlayerLeftInput ; CPU:$970F PRG:170F 85 75 + lda PlayerSpriteId ; CPU:$9711 PRG:1711 A5 56 + beq TeamPlayerMove4_Loop ; CPU:$9713 PRG:1713 F0 04 + jsr BallUpdateBallSpeed ; CPU:$9715 PRG:1715 20 B0 9E + rts ; CPU:$9718 PRG:1718 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove4_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove4_Loop: + ldx TeamScore1Lo ; CPU:$9719 PRG:1719 A6 54 + beq TeamPlayerMove4_Loop2 ; CPU:$971B PRG:171B F0 0C + dex ; CPU:$971D PRG:171D CA + beq TeamPlayerMove4_Loop3 ; CPU:$971E PRG:171E F0 10 + dex ; CPU:$9720 PRG:1720 CA + beq TeamPlayerMove4_Loop4 ; CPU:$9721 PRG:1721 F0 14 + dex ; CPU:$9723 PRG:1723 CA + beq TeamPlayerMove4_Loop5 ; CPU:$9724 PRG:1724 F0 18 + dex ; CPU:$9726 PRG:1726 CA + beq TeamPlayerMove4_Loop7 ; CPU:$9727 PRG:1727 F0 24 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove4_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove4_Loop2: + jsr CheckBallLanded ; CPU:$9729 PRG:1729 20 F9 97 + jsr BallUpdateBallSpeed ; CPU:$972C PRG:172C 20 B0 9E + rts ; CPU:$972F PRG:172F 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove4_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove4_Loop3: + jsr BallComputeAttrB ; CPU:$9730 PRG:1730 20 5B 98 + jsr BallUpdateBallSpeed ; CPU:$9733 PRG:1733 20 B0 9E + rts ; CPU:$9736 PRG:1736 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove4_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove4_Loop4: + jsr BallUpdateTeamF ; CPU:$9737 PRG:1737 20 B3 9C + jsr BallUpdateBallSpeed ; CPU:$973A PRG:173A 20 B0 9E + rts ; CPU:$973D PRG:173D 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove4_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove4_Loop5: + jsr BallUpdateAnimation ; CPU:$973E PRG:173E 20 9B 9D + lda NumberToDisplay ; CPU:$9741 PRG:1741 A5 45 + beq TeamPlayerMove4_Loop6 ; CPU:$9743 PRG:1743 F0 04 + jsr BallSubtractSpeed ; CPU:$9745 PRG:1745 20 FA 9E + rts ; CPU:$9748 PRG:1748 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove4_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove4_Loop6: + jsr BallUpdateBallSpeed ; CPU:$9749 PRG:1749 20 B0 9E + rts ; CPU:$974C PRG:174C 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove4_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove4_Loop7: + jsr BallResetForTeam ; CPU:$974D PRG:174D 20 FC 9D + jsr BallUpdateBallSpeed ; CPU:$9750 PRG:1750 20 B0 9E + rts ; CPU:$9753 PRG:1753 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove5: + lda #$00 ; CPU:$9754 PRG:1754 A9 00 + sta PlayerLeftInput ; CPU:$9756 PRG:1756 85 75 + lda PlayerSpriteId ; CPU:$9758 PRG:1758 A5 56 + beq TeamPlayerMove5_Loop ; CPU:$975A PRG:175A F0 04 + jsr BallUpdateBallSpeed ; CPU:$975C PRG:175C 20 B0 9E + rts ; CPU:$975F PRG:175F 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove5_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove5_Loop: + ldx TeamScore1Lo ; CPU:$9760 PRG:1760 A6 54 + beq TeamPlayerMove5_Loop2 ; CPU:$9762 PRG:1762 F0 0C + dex ; CPU:$9764 PRG:1764 CA + beq TeamPlayerMove5_Loop3 ; CPU:$9765 PRG:1765 F0 10 + dex ; CPU:$9767 PRG:1767 CA + beq TeamPlayerMove5_Loop4 ; CPU:$9768 PRG:1768 F0 14 + dex ; CPU:$976A PRG:176A CA + beq TeamPlayerMove5_Loop5 ; CPU:$976B PRG:176B F0 18 + dex ; CPU:$976D PRG:176D CA + beq TeamPlayerMove5_Loop7 ; CPU:$976E PRG:176E F0 24 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove5_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove5_Loop2: + jsr CheckBallInPlay ; CPU:$9770 PRG:1770 20 9B 97 + jsr BallUpdateBallSpeed ; CPU:$9773 PRG:1773 20 B0 9E + rts ; CPU:$9776 PRG:1776 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove5_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove5_Loop3: + jsr BallComputeAttrB ; CPU:$9777 PRG:1777 20 5B 98 + jsr BallUpdateBallSpeed ; CPU:$977A PRG:177A 20 B0 9E + rts ; CPU:$977D PRG:177D 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove5_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove5_Loop4: + jsr BallUpdateTeamF ; CPU:$977E PRG:177E 20 B3 9C + jsr BallUpdateBallSpeed ; CPU:$9781 PRG:1781 20 B0 9E + rts ; CPU:$9784 PRG:1784 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove5_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove5_Loop5: + jsr BallUpdateAnimationB ; CPU:$9785 PRG:1785 20 D0 9D + lda NumberToDisplay ; CPU:$9788 PRG:1788 A5 45 + beq TeamPlayerMove5_Loop6 ; CPU:$978A PRG:178A F0 04 + jsr BallSubtractSpeed ; CPU:$978C PRG:178C 20 FA 9E + rts ; CPU:$978F PRG:178F 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove5_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove5_Loop6: + jsr BallUpdateBallSpeed ; CPU:$9790 PRG:1790 20 B0 9E + rts ; CPU:$9793 PRG:1793 60 +; ----------------------------------------------------------------------------- +; Routine: TeamPlayerMove5_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamPlayerMove5_Loop7: + jsr BallResetForTeam ; CPU:$9794 PRG:1794 20 FC 9D + jsr BallUpdateBallSpeed ; CPU:$9797 PRG:1797 20 B0 9E + rts ; CPU:$979A PRG:179A 60 +; ----------------------------------------------------------------------------- +; Routine: CheckBallInPlay +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallInPlay: + lda ScoreRecord ; CPU:$979B PRG:179B AD 13 05 + cmp #$14 ; CPU:$979E PRG:179E C9 14 + beq CheckBallInPlay_Loop ; CPU:$97A0 PRG:17A0 F0 11 + lda $0523 ; CPU:$97A2 PRG:17A2 AD 23 05 + cmp #$14 ; CPU:$97A5 PRG:17A5 C9 14 + beq CheckBallInPlay_Loop ; CPU:$97A7 PRG:17A7 F0 0A + lda $052B ; CPU:$97A9 PRG:17A9 AD 2B 05 + cmp #$14 ; CPU:$97AC PRG:17AC C9 14 + beq CheckBallInPlay_Loop ; CPU:$97AE PRG:17AE F0 03 + jmp BallBounceOnFloor ; CPU:$97B0 PRG:17B0 4C C5 97 +; ----------------------------------------------------------------------------- +; Routine: CheckBallInPlay_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallInPlay_Loop: + lda BallX ; CPU:$97B3 PRG:17B3 AD 00 05 + cmp #$80 ; CPU:$97B6 PRG:17B6 C9 80 + bcs CheckBallInPlay_Loop2 ; CPU:$97B8 PRG:17B8 B0 04 + cmp #$10 ; CPU:$97BA PRG:17BA C9 10 + bcs BallBounceOnFloor ; CPU:$97BC PRG:17BC B0 07 +; ----------------------------------------------------------------------------- +; Routine: CheckBallInPlay_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallInPlay_Loop2: + lda #$82 ; CPU:$97BE PRG:17BE A9 82 + sta PlayerLeftInput ; CPU:$97C0 PRG:17C0 85 75 + jmp BallFrameDone0 ; CPU:$97C2 PRG:17C2 4C F8 97 +; ----------------------------------------------------------------------------- +; Routine: BallBounceOnFloor +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallBounceOnFloor: + lda BallFrameCounter ; CPU:$97C5 PRG:17C5 AD 02 05 + cmp #$24 ; CPU:$97C8 PRG:17C8 C9 24 + bcs BallFrameDone0 ; CPU:$97CA PRG:17CA B0 2C + lda #$80 ; CPU:$97CC PRG:17CC A9 80 + sta PlayerLeftInput ; CPU:$97CE PRG:17CE 85 75 + lda Zp90 ; CPU:$97D0 PRG:17D0 A5 90 + and #$03 ; CPU:$97D2 PRG:17D2 29 03 + cmp #$03 ; CPU:$97D4 PRG:17D4 C9 03 + beq BallBounceOnFloor_Loop ; CPU:$97D6 PRG:17D6 F0 05 + lda #$00 ; CPU:$97D8 PRG:17D8 A9 00 + jmp BallSetDirection ; CPU:$97DA PRG:17DA 4C DF 97 +; ----------------------------------------------------------------------------- +; Routine: BallBounceOnFloor_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallBounceOnFloor_Loop: + lda #$FF ; CPU:$97DD PRG:17DD A9 FF +; ----------------------------------------------------------------------------- +; Routine: BallSetDirection +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetDirection: + sta Zp91 ; CPU:$97DF PRG:17DF 85 91 + lda FrameCounter ; CPU:$97E1 PRG:17E1 A5 2D + and #$06 ; CPU:$97E3 PRG:17E3 29 06 + cmp #$02 ; CPU:$97E5 PRG:17E5 C9 02 + bne BallSetDirection_Loop ; CPU:$97E7 PRG:17E7 D0 05 + lda #$08 ; CPU:$97E9 PRG:17E9 A9 08 + jmp BallStoreSpriteFlags ; CPU:$97EB PRG:17EB 4C F4 97 +; ----------------------------------------------------------------------------- +; Routine: BallSetDirection_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetDirection_Loop: + cmp #$06 ; CPU:$97EE PRG:17EE C9 06 + bne BallFrameDone0 ; CPU:$97F0 PRG:17F0 D0 06 + lda #$04 ; CPU:$97F2 PRG:17F2 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreSpriteFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreSpriteFlags: + ora PlayerLeftInput ; CPU:$97F4 PRG:17F4 05 75 + sta PlayerLeftInput ; CPU:$97F6 PRG:17F6 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallFrameDone0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFrameDone0: + rts ; CPU:$97F8 PRG:17F8 60 +; ----------------------------------------------------------------------------- +; Routine: CheckBallLanded +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallLanded: + lda ScoreRecord ; CPU:$97F9 PRG:17F9 AD 13 05 + cmp #$14 ; CPU:$97FC PRG:17FC C9 14 + beq CheckBallLanded_Loop ; CPU:$97FE PRG:17FE F0 11 + lda $0523 ; CPU:$9800 PRG:1800 AD 23 05 + cmp #$14 ; CPU:$9803 PRG:1803 C9 14 + beq CheckBallLanded_Loop ; CPU:$9805 PRG:1805 F0 0A + lda $052B ; CPU:$9807 PRG:1807 AD 2B 05 + cmp #$14 ; CPU:$980A PRG:180A C9 14 + beq CheckBallLanded_Loop ; CPU:$980C PRG:180C F0 03 + jmp BallComputeSpriteAttr ; CPU:$980E PRG:180E 4C 23 98 +; ----------------------------------------------------------------------------- +; Routine: CheckBallLanded_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallLanded_Loop: + lda BallX ; CPU:$9811 PRG:1811 AD 00 05 + cmp #$80 ; CPU:$9814 PRG:1814 C9 80 + bcs CheckBallLanded_Loop2 ; CPU:$9816 PRG:1816 B0 04 + cmp #$10 ; CPU:$9818 PRG:1818 C9 10 + bcs BallComputeSpriteAttr ; CPU:$981A PRG:181A B0 07 +; ----------------------------------------------------------------------------- +; Routine: CheckBallLanded_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallLanded_Loop2: + lda #$82 ; CPU:$981C PRG:181C A9 82 + sta PlayerLeftInput ; CPU:$981E PRG:181E 85 75 + jmp BallStoreFlagsB_Loop ; CPU:$9820 PRG:1820 4C 5A 98 +; ----------------------------------------------------------------------------- +; Routine: BallComputeSpriteAttr +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeSpriteAttr: + lda BallFrameCounter ; CPU:$9823 PRG:1823 AD 02 05 + cmp #$24 ; CPU:$9826 PRG:1826 C9 24 + bcs BallStoreFlagsB_Loop ; CPU:$9828 PRG:1828 B0 30 + lda BallFlags ; CPU:$982A PRG:182A A5 6E + and #$04 ; CPU:$982C PRG:182C 29 04 + bne BallComputeSpriteAttr_Loop ; CPU:$982E PRG:182E D0 0F + lda TeamColorA ; CPU:$9830 PRG:1830 A5 58 + cmp #$51 ; CPU:$9832 PRG:1832 C9 51 + bcs BallStoreFlagsB_Loop ; CPU:$9834 PRG:1834 B0 24 + lda TeamColorB ; CPU:$9836 PRG:1836 A5 59 + sec ; CPU:$9838 PRG:1838 38 + sbc #$2E ; CPU:$9839 PRG:1839 E9 2E + cmp #$58 ; CPU:$983B PRG:183B C9 58 + bcs BallStoreFlagsB_Loop ; CPU:$983D PRG:183D B0 1B +; ----------------------------------------------------------------------------- +; Routine: BallComputeSpriteAttr_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeSpriteAttr_Loop: + lda #$80 ; CPU:$983F PRG:183F A9 80 + sta PlayerLeftInput ; CPU:$9841 PRG:1841 85 75 + lda FrameCounter ; CPU:$9843 PRG:1843 A5 2D + and #$06 ; CPU:$9845 PRG:1845 29 06 + cmp #$02 ; CPU:$9847 PRG:1847 C9 02 + bne BallComputeSpriteAttr_Loop2 ; CPU:$9849 PRG:1849 D0 05 + lda #$08 ; CPU:$984B PRG:184B A9 08 + jmp BallStoreFlagsB ; CPU:$984D PRG:184D 4C 56 98 +; ----------------------------------------------------------------------------- +; Routine: BallComputeSpriteAttr_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeSpriteAttr_Loop2: + cmp #$06 ; CPU:$9850 PRG:1850 C9 06 + bne BallStoreFlagsB_Loop ; CPU:$9852 PRG:1852 D0 06 + lda #$04 ; CPU:$9854 PRG:1854 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsB: + ora PlayerLeftInput ; CPU:$9856 PRG:1856 05 75 + sta PlayerLeftInput ; CPU:$9858 PRG:1858 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsB_Loop: + rts ; CPU:$985A PRG:185A 60 +; ----------------------------------------------------------------------------- +; Routine: BallComputeAttrB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeAttrB: + lda #$00 ; CPU:$985B PRG:185B A9 00 + sta NationStateA ; CPU:$985D PRG:185D 85 5E + lda BallFrameCounter ; CPU:$985F PRG:185F AD 02 05 + cmp #$24 ; CPU:$9862 PRG:1862 C9 24 + bcs BallStoreFlagsC_Loop ; CPU:$9864 PRG:1864 B0 1B + lda #$80 ; CPU:$9866 PRG:1866 A9 80 + sta PlayerLeftInput ; CPU:$9868 PRG:1868 85 75 + lda FrameCounter ; CPU:$986A PRG:186A A5 2D + and #$1C ; CPU:$986C PRG:186C 29 1C + cmp #$04 ; CPU:$986E PRG:186E C9 04 + bne BallComputeAttrB_Loop ; CPU:$9870 PRG:1870 D0 05 + lda #$08 ; CPU:$9872 PRG:1872 A9 08 + jmp BallStoreFlagsC ; CPU:$9874 PRG:1874 4C 7D 98 +; ----------------------------------------------------------------------------- +; Routine: BallComputeAttrB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeAttrB_Loop: + cmp #$1C ; CPU:$9877 PRG:1877 C9 1C + bne BallStoreFlagsC_Loop ; CPU:$9879 PRG:1879 D0 06 + lda #$04 ; CPU:$987B PRG:187B A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsC: + ora PlayerLeftInput ; CPU:$987D PRG:187D 05 75 + sta PlayerLeftInput ; CPU:$987F PRG:187F 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsC_Loop: + rts ; CPU:$9881 PRG:1881 60 +; ----------------------------------------------------------------------------- +; Routine: BallComputeAttrC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeAttrC: + lda #$00 ; CPU:$9882 PRG:1882 A9 00 + sta NationStateA ; CPU:$9884 PRG:1884 85 5E + lda BallFrameCounter ; CPU:$9886 PRG:1886 AD 02 05 + cmp #$24 ; CPU:$9889 PRG:1889 C9 24 + bcs BallStoreFlagsD_Loop ; CPU:$988B PRG:188B B0 3B + lda NationSlotA ; CPU:$988D PRG:188D A5 5C + asl a ; CPU:$988F PRG:188F 0A + asl a ; CPU:$9890 PRG:1890 0A + asl a ; CPU:$9891 PRG:1891 0A + tax ; CPU:$9892 PRG:1892 AA + lda BallPositionX,x ; CPU:$9893 PRG:1893 BD 0F 05 + cmp #$18 ; CPU:$9896 PRG:1896 C9 18 + bcs BallComputeAttrC_Loop ; CPU:$9898 PRG:1898 B0 0F + lda FrameCounter ; CPU:$989A PRG:189A A5 2D + and #$10 ; CPU:$989C PRG:189C 29 10 + beq BallComputeAttrC_Loop ; CPU:$989E PRG:189E F0 09 + lda #$FF ; CPU:$98A0 PRG:18A0 A9 FF + sta Zp60 ; CPU:$98A2 PRG:18A2 85 60 + lda #$40 ; CPU:$98A4 PRG:18A4 A9 40 + jmp BallSetAnimFlags ; CPU:$98A6 PRG:18A6 4C AF 98 +; ----------------------------------------------------------------------------- +; Routine: BallComputeAttrC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeAttrC_Loop: + lda #$00 ; CPU:$98A9 PRG:18A9 A9 00 + sta Zp60 ; CPU:$98AB PRG:18AB 85 60 + lda #$80 ; CPU:$98AD PRG:18AD A9 80 +; ----------------------------------------------------------------------------- +; Routine: BallSetAnimFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetAnimFlags: + sta PlayerLeftInput ; CPU:$98AF PRG:18AF 85 75 + lda FrameCounter ; CPU:$98B1 PRG:18B1 A5 2D + and #$1C ; CPU:$98B3 PRG:18B3 29 1C + cmp #$04 ; CPU:$98B5 PRG:18B5 C9 04 + bne BallSetAnimFlags_Loop ; CPU:$98B7 PRG:18B7 D0 05 + lda #$08 ; CPU:$98B9 PRG:18B9 A9 08 + jmp BallStoreFlagsD ; CPU:$98BB PRG:18BB 4C C4 98 +; ----------------------------------------------------------------------------- +; Routine: BallSetAnimFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetAnimFlags_Loop: + cmp #$1C ; CPU:$98BE PRG:18BE C9 1C + bne BallStoreFlagsD_Loop ; CPU:$98C0 PRG:18C0 D0 06 + lda #$04 ; CPU:$98C2 PRG:18C2 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsD: + ora PlayerLeftInput ; CPU:$98C4 PRG:18C4 05 75 + sta PlayerLeftInput ; CPU:$98C6 PRG:18C6 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsD_Loop: + rts ; CPU:$98C8 PRG:18C8 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamA: + lda #$00 ; CPU:$98C9 PRG:18C9 A9 00 + sta NationStateA ; CPU:$98CB PRG:18CB 85 5E + lda NationSlotA ; CPU:$98CD PRG:18CD A5 5C + asl a ; CPU:$98CF PRG:18CF 0A + asl a ; CPU:$98D0 PRG:18D0 0A + asl a ; CPU:$98D1 PRG:18D1 0A + tax ; CPU:$98D2 PRG:18D2 AA + lda ScoreRecord,x ; CPU:$98D3 PRG:18D3 BD 13 05 + cmp #$13 ; CPU:$98D6 PRG:18D6 C9 13 + bne BallUpdateTeamA_Loop ; CPU:$98D8 PRG:18D8 D0 03 + jmp BallSetTeamAFlags ; CPU:$98DA PRG:18DA 4C 33 99 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamA_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamA_Loop: + jsr BallComputeNoteIndex ; CPU:$98DD PRG:18DD 20 11 9F + lda BallSpeed ; CPU:$98E0 PRG:18E0 AD 05 05 + cmp #$80 ; CPU:$98E3 PRG:18E3 C9 80 + bcs BallUpdateTeamA_Loop2 ; CPU:$98E5 PRG:18E5 B0 01 + rts ; CPU:$98E7 PRG:18E7 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamA_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamA_Loop2: + lda BallPositionX,x ; CPU:$98E8 PRG:18E8 BD 0F 05 + clc ; CPU:$98EB PRG:18EB 18 + adc #$08 ; CPU:$98EC PRG:18EC 69 08 + sec ; CPU:$98EE PRG:18EE 38 + sbc TeamColorA ; CPU:$98EF PRG:18EF E5 58 + bcs BallUpdateTeamA_Loop3 ; CPU:$98F1 PRG:18F1 B0 01 + rts ; CPU:$98F3 PRG:18F3 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamA_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamA_Loop3: + cmp #$10 ; CPU:$98F4 PRG:18F4 C9 10 + bcc BallUpdateTeamA_Loop4 ; CPU:$98F6 PRG:18F6 90 01 + rts ; CPU:$98F8 PRG:18F8 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamA_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamA_Loop4: + lda BallPositionY,x ; CPU:$98F9 PRG:18F9 BD 10 05 + clc ; CPU:$98FC PRG:18FC 18 + adc #$08 ; CPU:$98FD PRG:18FD 69 08 + sec ; CPU:$98FF PRG:18FF 38 + sbc TeamColorB ; CPU:$9900 PRG:1900 E5 59 + bcs BallUpdateTeamA_Loop5 ; CPU:$9902 PRG:1902 B0 01 + rts ; CPU:$9904 PRG:1904 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamA_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamA_Loop5: + cmp #$10 ; CPU:$9905 PRG:1905 C9 10 + bcc BallUpdateTeamA_Loop6 ; CPU:$9907 PRG:1907 90 01 + rts ; CPU:$9909 PRG:1909 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamA_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamA_Loop6: + lda NumberToDisplay ; CPU:$990A PRG:190A A5 45 + sec ; CPU:$990C PRG:190C 38 + sbc #$18 ; CPU:$990D PRG:190D E9 18 + sta SpriteOffsetIndex ; CPU:$990F PRG:190F 85 46 + lda BallFrameCounter ; CPU:$9911 PRG:1911 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$9914 PRG:1914 C5 46 + bcs BallUpdateTeamA_Loop7 ; CPU:$9916 PRG:1916 B0 08 + lda BallFrameCounter ; CPU:$9918 PRG:1918 AD 02 05 + cmp #$24 ; CPU:$991B PRG:191B C9 24 + bcc BallStoreTeamAFlagsB_Loop2 ; CPU:$991D PRG:191D 90 4D + rts ; CPU:$991F PRG:191F 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamA_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamA_Loop7: + lda BallFrameCounter ; CPU:$9920 PRG:1920 AD 02 05 + cmp NumberToDisplay ; CPU:$9923 PRG:1923 C5 45 + bcs BallStoreTeamAFlagsB_Loop ; CPU:$9925 PRG:1925 B0 44 + lda BallPositionX,x ; CPU:$9927 PRG:1927 BD 0F 05 + cmp #$1F ; CPU:$992A PRG:192A C9 1F + bcs BallStoreTeamAFlagsB_Loop ; CPU:$992C PRG:192C B0 3D + lda #$42 ; CPU:$992E PRG:192E A9 42 + sta PlayerLeftInput ; CPU:$9930 PRG:1930 85 75 + rts ; CPU:$9932 PRG:1932 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamAFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamAFlags: + lda #$40 ; CPU:$9933 PRG:1933 A9 40 + sta PlayerLeftInput ; CPU:$9935 PRG:1935 85 75 + lda FrameCounter ; CPU:$9937 PRG:1937 A5 2D + and #$18 ; CPU:$9939 PRG:1939 29 18 + cmp #$08 ; CPU:$993B PRG:193B C9 08 + bne BallSetTeamAFlags_Loop ; CPU:$993D PRG:193D D0 05 + lda #$08 ; CPU:$993F PRG:193F A9 08 + jmp BallStoreTeamAFlags ; CPU:$9941 PRG:1941 4C 4A 99 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamAFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamAFlags_Loop: + cmp #$18 ; CPU:$9944 PRG:1944 C9 18 + bne BallStoreTeamAFlags_Loop ; CPU:$9946 PRG:1946 D0 06 + lda #$04 ; CPU:$9948 PRG:1948 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamAFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamAFlags: + ora PlayerLeftInput ; CPU:$994A PRG:194A 05 75 + sta PlayerLeftInput ; CPU:$994C PRG:194C 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamAFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamAFlags_Loop: + lda FrameCounter ; CPU:$994E PRG:194E A5 2D + and #$22 ; CPU:$9950 PRG:1950 29 22 + cmp #$02 ; CPU:$9952 PRG:1952 C9 02 + bne BallStoreTeamAFlags_Loop2 ; CPU:$9954 PRG:1954 D0 05 + lda #$02 ; CPU:$9956 PRG:1956 A9 02 + jmp BallStoreTeamAFlagsB ; CPU:$9958 PRG:1958 4C 67 99 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamAFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamAFlags_Loop2: + cmp #$20 ; CPU:$995B PRG:195B C9 20 + bne BallStoreTeamAFlagsB_Loop ; CPU:$995D PRG:195D D0 0C + lda PlayerLeftInput ; CPU:$995F PRG:195F A5 75 + and #$0C ; CPU:$9961 PRG:1961 29 0C + bne BallStoreTeamAFlagsB_Loop ; CPU:$9963 PRG:1963 D0 06 + lda #$01 ; CPU:$9965 PRG:1965 A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamAFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamAFlagsB: + ora PlayerLeftInput ; CPU:$9967 PRG:1967 05 75 + sta PlayerLeftInput ; CPU:$9969 PRG:1969 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamAFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamAFlagsB_Loop: + rts ; CPU:$996B PRG:196B 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamAFlagsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamAFlagsB_Loop2: + lda #$80 ; CPU:$996C PRG:196C A9 80 + sta PlayerLeftInput ; CPU:$996E PRG:196E 85 75 + lda FrameCounter ; CPU:$9970 PRG:1970 A5 2D + and #$18 ; CPU:$9972 PRG:1972 29 18 + cmp #$08 ; CPU:$9974 PRG:1974 C9 08 + bne BallStoreTeamAFlagsB_Loop3 ; CPU:$9976 PRG:1976 D0 05 + lda #$08 ; CPU:$9978 PRG:1978 A9 08 + jmp BallStoreTeamAFlagsC ; CPU:$997A PRG:197A 4C 83 99 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamAFlagsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamAFlagsB_Loop3: + cmp #$18 ; CPU:$997D PRG:197D C9 18 + bne BallStoreTeamAFlagsC_Loop ; CPU:$997F PRG:197F D0 06 + lda #$04 ; CPU:$9981 PRG:1981 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamAFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamAFlagsC: + ora PlayerLeftInput ; CPU:$9983 PRG:1983 05 75 + sta PlayerLeftInput ; CPU:$9985 PRG:1985 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamAFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamAFlagsC_Loop: + rts ; CPU:$9987 PRG:1987 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamB: + lda #$00 ; CPU:$9988 PRG:1988 A9 00 + sta NationStateA ; CPU:$998A PRG:198A 85 5E + lda NationSlotA ; CPU:$998C PRG:198C A5 5C + asl a ; CPU:$998E PRG:198E 0A + asl a ; CPU:$998F PRG:198F 0A + asl a ; CPU:$9990 PRG:1990 0A + tax ; CPU:$9991 PRG:1991 AA + lda ScoreRecord,x ; CPU:$9992 PRG:1992 BD 13 05 + cmp #$13 ; CPU:$9995 PRG:1995 C9 13 + bne BallUpdateTeamB_Loop ; CPU:$9997 PRG:1997 D0 03 + jmp BallSetTeamBFlags ; CPU:$9999 PRG:1999 4C F2 99 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamB_Loop: + jsr BallComputeNoteIndex ; CPU:$999C PRG:199C 20 11 9F + lda BallSpeed ; CPU:$999F PRG:199F AD 05 05 + cmp #$80 ; CPU:$99A2 PRG:19A2 C9 80 + bcs BallUpdateTeamB_Loop2 ; CPU:$99A4 PRG:19A4 B0 01 + rts ; CPU:$99A6 PRG:19A6 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamB_Loop2: + lda BallPositionX,x ; CPU:$99A7 PRG:19A7 BD 0F 05 + clc ; CPU:$99AA PRG:19AA 18 + adc #$08 ; CPU:$99AB PRG:19AB 69 08 + sec ; CPU:$99AD PRG:19AD 38 + sbc TeamColorA ; CPU:$99AE PRG:19AE E5 58 + bcs BallUpdateTeamB_Loop3 ; CPU:$99B0 PRG:19B0 B0 01 + rts ; CPU:$99B2 PRG:19B2 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamB_Loop3: + cmp #$10 ; CPU:$99B3 PRG:19B3 C9 10 + bcc BallUpdateTeamB_Loop4 ; CPU:$99B5 PRG:19B5 90 01 + rts ; CPU:$99B7 PRG:19B7 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamB_Loop4: + lda BallPositionY,x ; CPU:$99B8 PRG:19B8 BD 10 05 + clc ; CPU:$99BB PRG:19BB 18 + adc #$08 ; CPU:$99BC PRG:19BC 69 08 + sec ; CPU:$99BE PRG:19BE 38 + sbc TeamColorB ; CPU:$99BF PRG:19BF E5 59 + bcs BallUpdateTeamB_Loop5 ; CPU:$99C1 PRG:19C1 B0 01 + rts ; CPU:$99C3 PRG:19C3 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamB_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamB_Loop5: + cmp #$10 ; CPU:$99C4 PRG:19C4 C9 10 + bcc BallUpdateTeamB_Loop6 ; CPU:$99C6 PRG:19C6 90 01 + rts ; CPU:$99C8 PRG:19C8 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamB_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamB_Loop6: + lda NumberToDisplay ; CPU:$99C9 PRG:19C9 A5 45 + sec ; CPU:$99CB PRG:19CB 38 + sbc #$18 ; CPU:$99CC PRG:19CC E9 18 + sta SpriteOffsetIndex ; CPU:$99CE PRG:19CE 85 46 + lda BallFrameCounter ; CPU:$99D0 PRG:19D0 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$99D3 PRG:19D3 C5 46 + bcs BallUpdateTeamB_Loop7 ; CPU:$99D5 PRG:19D5 B0 08 + lda BallFrameCounter ; CPU:$99D7 PRG:19D7 AD 02 05 + cmp #$24 ; CPU:$99DA PRG:19DA C9 24 + bcc BallStoreTeamBFlagsB_Loop2 ; CPU:$99DC PRG:19DC 90 4D + rts ; CPU:$99DE PRG:19DE 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamB_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamB_Loop7: + lda BallFrameCounter ; CPU:$99DF PRG:19DF AD 02 05 + cmp NumberToDisplay ; CPU:$99E2 PRG:19E2 C5 45 + bcs BallStoreTeamBFlagsB_Loop ; CPU:$99E4 PRG:19E4 B0 44 + lda BallPositionX,x ; CPU:$99E6 PRG:19E6 BD 0F 05 + cmp #$1F ; CPU:$99E9 PRG:19E9 C9 1F + bcs BallStoreTeamBFlagsB_Loop ; CPU:$99EB PRG:19EB B0 3D + lda #$42 ; CPU:$99ED PRG:19ED A9 42 + sta PlayerLeftInput ; CPU:$99EF PRG:19EF 85 75 + rts ; CPU:$99F1 PRG:19F1 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamBFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamBFlags: + lda #$40 ; CPU:$99F2 PRG:19F2 A9 40 + sta PlayerLeftInput ; CPU:$99F4 PRG:19F4 85 75 + lda FrameCounter ; CPU:$99F6 PRG:19F6 A5 2D + and #$18 ; CPU:$99F8 PRG:19F8 29 18 + cmp #$08 ; CPU:$99FA PRG:19FA C9 08 + bne BallSetTeamBFlags_Loop ; CPU:$99FC PRG:19FC D0 05 + lda #$08 ; CPU:$99FE PRG:19FE A9 08 + jmp BallStoreTeamBFlags ; CPU:$9A00 PRG:1A00 4C 09 9A +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamBFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamBFlags_Loop: + cmp #$18 ; CPU:$9A03 PRG:1A03 C9 18 + bne BallStoreTeamBFlags_Loop ; CPU:$9A05 PRG:1A05 D0 06 + lda #$04 ; CPU:$9A07 PRG:1A07 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamBFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamBFlags: + ora PlayerLeftInput ; CPU:$9A09 PRG:1A09 05 75 + sta PlayerLeftInput ; CPU:$9A0B PRG:1A0B 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamBFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamBFlags_Loop: + lda FrameCounter ; CPU:$9A0D PRG:1A0D A5 2D + and #$22 ; CPU:$9A0F PRG:1A0F 29 22 + cmp #$02 ; CPU:$9A11 PRG:1A11 C9 02 + bne BallStoreTeamBFlags_Loop2 ; CPU:$9A13 PRG:1A13 D0 05 + lda #$02 ; CPU:$9A15 PRG:1A15 A9 02 + jmp BallStoreTeamBFlagsB ; CPU:$9A17 PRG:1A17 4C 26 9A +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamBFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamBFlags_Loop2: + cmp #$20 ; CPU:$9A1A PRG:1A1A C9 20 + bne BallStoreTeamBFlagsB_Loop ; CPU:$9A1C PRG:1A1C D0 0C + lda PlayerLeftInput ; CPU:$9A1E PRG:1A1E A5 75 + and #$0C ; CPU:$9A20 PRG:1A20 29 0C + bne BallStoreTeamBFlagsB_Loop ; CPU:$9A22 PRG:1A22 D0 06 + lda #$01 ; CPU:$9A24 PRG:1A24 A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamBFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamBFlagsB: + ora PlayerLeftInput ; CPU:$9A26 PRG:1A26 05 75 + sta PlayerLeftInput ; CPU:$9A28 PRG:1A28 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamBFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamBFlagsB_Loop: + rts ; CPU:$9A2A PRG:1A2A 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamBFlagsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamBFlagsB_Loop2: + lda BallPositionX,x ; CPU:$9A2B PRG:1A2B BD 0F 05 + cmp #$18 ; CPU:$9A2E PRG:1A2E C9 18 + bcs BallStoreTeamBFlagsB_Loop3 ; CPU:$9A30 PRG:1A30 B0 0F + lda FrameCounter ; CPU:$9A32 PRG:1A32 A5 2D + and #$10 ; CPU:$9A34 PRG:1A34 29 10 + beq BallStoreTeamBFlagsB_Loop3 ; CPU:$9A36 PRG:1A36 F0 09 + lda #$FF ; CPU:$9A38 PRG:1A38 A9 FF + sta Zp60 ; CPU:$9A3A PRG:1A3A 85 60 + lda #$40 ; CPU:$9A3C PRG:1A3C A9 40 + jmp BallSetTeamBFlagsC ; CPU:$9A3E PRG:1A3E 4C 47 9A +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamBFlagsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamBFlagsB_Loop3: + lda #$00 ; CPU:$9A41 PRG:1A41 A9 00 + sta Zp60 ; CPU:$9A43 PRG:1A43 85 60 + lda #$80 ; CPU:$9A45 PRG:1A45 A9 80 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamBFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamBFlagsC: + sta PlayerLeftInput ; CPU:$9A47 PRG:1A47 85 75 + lda FrameCounter ; CPU:$9A49 PRG:1A49 A5 2D + and #$18 ; CPU:$9A4B PRG:1A4B 29 18 + cmp #$08 ; CPU:$9A4D PRG:1A4D C9 08 + bne BallSetTeamBFlagsC_Loop ; CPU:$9A4F PRG:1A4F D0 05 + lda #$08 ; CPU:$9A51 PRG:1A51 A9 08 + jmp BallStoreTeamBFlagsD ; CPU:$9A53 PRG:1A53 4C 5C 9A +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamBFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamBFlagsC_Loop: + cmp #$18 ; CPU:$9A56 PRG:1A56 C9 18 + bne BallStoreTeamBFlagsD_Loop ; CPU:$9A58 PRG:1A58 D0 06 + lda #$04 ; CPU:$9A5A PRG:1A5A A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamBFlagsD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamBFlagsD: + ora PlayerLeftInput ; CPU:$9A5C PRG:1A5C 05 75 + sta PlayerLeftInput ; CPU:$9A5E PRG:1A5E 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamBFlagsD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamBFlagsD_Loop: + rts ; CPU:$9A60 PRG:1A60 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamC: + lda #$00 ; CPU:$9A61 PRG:1A61 A9 00 + sta NationStateA ; CPU:$9A63 PRG:1A63 85 5E + lda NationSlotA ; CPU:$9A65 PRG:1A65 A5 5C + asl a ; CPU:$9A67 PRG:1A67 0A + asl a ; CPU:$9A68 PRG:1A68 0A + asl a ; CPU:$9A69 PRG:1A69 0A + tax ; CPU:$9A6A PRG:1A6A AA + lda ScoreRecord,x ; CPU:$9A6B PRG:1A6B BD 13 05 + cmp #$13 ; CPU:$9A6E PRG:1A6E C9 13 + bne BallUpdateTeamC_Loop ; CPU:$9A70 PRG:1A70 D0 03 + jmp BallSetTeamCFlags ; CPU:$9A72 PRG:1A72 4C BF 9A +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamC_Loop: + jsr BallComputeNoteIndex ; CPU:$9A75 PRG:1A75 20 11 9F + lda BallSpeed ; CPU:$9A78 PRG:1A78 AD 05 05 + cmp #$80 ; CPU:$9A7B PRG:1A7B C9 80 + bcs BallUpdateTeamC_Loop2 ; CPU:$9A7D PRG:1A7D B0 01 + rts ; CPU:$9A7F PRG:1A7F 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamC_Loop2: + lda BallPositionX,x ; CPU:$9A80 PRG:1A80 BD 0F 05 + clc ; CPU:$9A83 PRG:1A83 18 + adc #$08 ; CPU:$9A84 PRG:1A84 69 08 + sec ; CPU:$9A86 PRG:1A86 38 + sbc TeamColorA ; CPU:$9A87 PRG:1A87 E5 58 + bcs BallUpdateTeamC_Loop3 ; CPU:$9A89 PRG:1A89 B0 01 + rts ; CPU:$9A8B PRG:1A8B 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamC_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamC_Loop3: + cmp #$10 ; CPU:$9A8C PRG:1A8C C9 10 + bcc BallUpdateTeamC_Loop4 ; CPU:$9A8E PRG:1A8E 90 01 + rts ; CPU:$9A90 PRG:1A90 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamC_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamC_Loop4: + lda BallPositionY,x ; CPU:$9A91 PRG:1A91 BD 10 05 + clc ; CPU:$9A94 PRG:1A94 18 + adc #$08 ; CPU:$9A95 PRG:1A95 69 08 + sec ; CPU:$9A97 PRG:1A97 38 + sbc TeamColorB ; CPU:$9A98 PRG:1A98 E5 59 + bcs BallUpdateTeamC_Loop5 ; CPU:$9A9A PRG:1A9A B0 01 + rts ; CPU:$9A9C PRG:1A9C 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamC_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamC_Loop5: + cmp #$10 ; CPU:$9A9D PRG:1A9D C9 10 + bcc BallUpdateTeamC_Loop6 ; CPU:$9A9F PRG:1A9F 90 01 + rts ; CPU:$9AA1 PRG:1AA1 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamC_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamC_Loop6: + lda NumberToDisplay ; CPU:$9AA2 PRG:1AA2 A5 45 + sec ; CPU:$9AA4 PRG:1AA4 38 + sbc #$18 ; CPU:$9AA5 PRG:1AA5 E9 18 + sta SpriteOffsetIndex ; CPU:$9AA7 PRG:1AA7 85 46 + lda BallFrameCounter ; CPU:$9AA9 PRG:1AA9 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$9AAC PRG:1AAC C5 46 + bcs BallUpdateTeamC_Loop7 ; CPU:$9AAE PRG:1AAE B0 08 + lda BallFrameCounter ; CPU:$9AB0 PRG:1AB0 AD 02 05 + cmp #$18 ; CPU:$9AB3 PRG:1AB3 C9 18 + bcc BallStoreTeamCFlagsB_Loop2 ; CPU:$9AB5 PRG:1AB5 90 41 + rts ; CPU:$9AB7 PRG:1AB7 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamC_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamC_Loop7: + lda BallFrameCounter ; CPU:$9AB8 PRG:1AB8 AD 02 05 + cmp NumberToDisplay ; CPU:$9ABB PRG:1ABB C5 45 + bcs BallStoreTeamCFlagsB_Loop ; CPU:$9ABD PRG:1ABD B0 38 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamCFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamCFlags: + lda #$40 ; CPU:$9ABF PRG:1ABF A9 40 + sta PlayerLeftInput ; CPU:$9AC1 PRG:1AC1 85 75 + lda FrameCounter ; CPU:$9AC3 PRG:1AC3 A5 2D + and #$18 ; CPU:$9AC5 PRG:1AC5 29 18 + cmp #$08 ; CPU:$9AC7 PRG:1AC7 C9 08 + bne BallSetTeamCFlags_Loop ; CPU:$9AC9 PRG:1AC9 D0 05 + lda #$08 ; CPU:$9ACB PRG:1ACB A9 08 + jmp BallStoreTeamCFlags ; CPU:$9ACD PRG:1ACD 4C D6 9A +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamCFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamCFlags_Loop: + cmp #$18 ; CPU:$9AD0 PRG:1AD0 C9 18 + bne BallStoreTeamCFlags_Loop ; CPU:$9AD2 PRG:1AD2 D0 06 + lda #$04 ; CPU:$9AD4 PRG:1AD4 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamCFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamCFlags: + ora PlayerLeftInput ; CPU:$9AD6 PRG:1AD6 05 75 + sta PlayerLeftInput ; CPU:$9AD8 PRG:1AD8 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamCFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamCFlags_Loop: + lda FrameCounter ; CPU:$9ADA PRG:1ADA A5 2D + and #$22 ; CPU:$9ADC PRG:1ADC 29 22 + cmp #$02 ; CPU:$9ADE PRG:1ADE C9 02 + bne BallStoreTeamCFlags_Loop2 ; CPU:$9AE0 PRG:1AE0 D0 05 + lda #$02 ; CPU:$9AE2 PRG:1AE2 A9 02 + jmp BallStoreTeamCFlagsB ; CPU:$9AE4 PRG:1AE4 4C F3 9A +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamCFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamCFlags_Loop2: + cmp #$20 ; CPU:$9AE7 PRG:1AE7 C9 20 + bne BallStoreTeamCFlagsB_Loop ; CPU:$9AE9 PRG:1AE9 D0 0C + lda PlayerLeftInput ; CPU:$9AEB PRG:1AEB A5 75 + and #$0C ; CPU:$9AED PRG:1AED 29 0C + bne BallStoreTeamCFlagsB_Loop ; CPU:$9AEF PRG:1AEF D0 06 + lda #$01 ; CPU:$9AF1 PRG:1AF1 A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamCFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamCFlagsB: + ora PlayerLeftInput ; CPU:$9AF3 PRG:1AF3 05 75 + sta PlayerLeftInput ; CPU:$9AF5 PRG:1AF5 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamCFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamCFlagsB_Loop: + rts ; CPU:$9AF7 PRG:1AF7 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamCFlagsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamCFlagsB_Loop2: + lda #$80 ; CPU:$9AF8 PRG:1AF8 A9 80 + sta PlayerLeftInput ; CPU:$9AFA PRG:1AFA 85 75 + lda FrameCounter ; CPU:$9AFC PRG:1AFC A5 2D + and #$18 ; CPU:$9AFE PRG:1AFE 29 18 + cmp #$08 ; CPU:$9B00 PRG:1B00 C9 08 + bne BallStoreTeamCFlagsB_Loop3 ; CPU:$9B02 PRG:1B02 D0 05 + lda #$08 ; CPU:$9B04 PRG:1B04 A9 08 + jmp BallStoreTeamCFlagsC ; CPU:$9B06 PRG:1B06 4C 0F 9B +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamCFlagsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamCFlagsB_Loop3: + cmp #$18 ; CPU:$9B09 PRG:1B09 C9 18 + bne BallStoreTeamCFlagsC_Loop ; CPU:$9B0B PRG:1B0B D0 06 + lda #$04 ; CPU:$9B0D PRG:1B0D A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamCFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamCFlagsC: + ora PlayerLeftInput ; CPU:$9B0F PRG:1B0F 05 75 + sta PlayerLeftInput ; CPU:$9B11 PRG:1B11 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamCFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamCFlagsC_Loop: + rts ; CPU:$9B13 PRG:1B13 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamD: + lda #$00 ; CPU:$9B14 PRG:1B14 A9 00 + sta NationStateA ; CPU:$9B16 PRG:1B16 85 5E + lda NationSlotA ; CPU:$9B18 PRG:1B18 A5 5C + asl a ; CPU:$9B1A PRG:1B1A 0A + asl a ; CPU:$9B1B PRG:1B1B 0A + asl a ; CPU:$9B1C PRG:1B1C 0A + tax ; CPU:$9B1D PRG:1B1D AA + lda ScoreRecord,x ; CPU:$9B1E PRG:1B1E BD 13 05 + cmp #$13 ; CPU:$9B21 PRG:1B21 C9 13 + bne BallUpdateTeamD_Loop ; CPU:$9B23 PRG:1B23 D0 03 + jmp BallSetTeamDFlags ; CPU:$9B25 PRG:1B25 4C 6F 9B +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamD_Loop: + jsr BallComputeNoteIndex ; CPU:$9B28 PRG:1B28 20 11 9F + clc ; CPU:$9B2B PRG:1B2B 18 + adc #$06 ; CPU:$9B2C PRG:1B2C 69 06 + sta NumberToDisplay ; CPU:$9B2E PRG:1B2E 85 45 + lda BallPositionX,x ; CPU:$9B30 PRG:1B30 BD 0F 05 + clc ; CPU:$9B33 PRG:1B33 18 + adc #$08 ; CPU:$9B34 PRG:1B34 69 08 + sec ; CPU:$9B36 PRG:1B36 38 + sbc TeamColorA ; CPU:$9B37 PRG:1B37 E5 58 + bcs BallUpdateTeamD_Loop2 ; CPU:$9B39 PRG:1B39 B0 01 + rts ; CPU:$9B3B PRG:1B3B 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamD_Loop2: + cmp #$10 ; CPU:$9B3C PRG:1B3C C9 10 + bcc BallUpdateTeamD_Loop3 ; CPU:$9B3E PRG:1B3E 90 01 + rts ; CPU:$9B40 PRG:1B40 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamD_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamD_Loop3: + lda BallPositionY,x ; CPU:$9B41 PRG:1B41 BD 10 05 + clc ; CPU:$9B44 PRG:1B44 18 + adc #$08 ; CPU:$9B45 PRG:1B45 69 08 + sec ; CPU:$9B47 PRG:1B47 38 + sbc TeamColorB ; CPU:$9B48 PRG:1B48 E5 59 + bcs BallUpdateTeamD_Loop4 ; CPU:$9B4A PRG:1B4A B0 01 + rts ; CPU:$9B4C PRG:1B4C 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamD_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamD_Loop4: + cmp #$10 ; CPU:$9B4D PRG:1B4D C9 10 + bcc BallUpdateTeamD_Loop5 ; CPU:$9B4F PRG:1B4F 90 01 + rts ; CPU:$9B51 PRG:1B51 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamD_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamD_Loop5: + lda NumberToDisplay ; CPU:$9B52 PRG:1B52 A5 45 + sec ; CPU:$9B54 PRG:1B54 38 + sbc #$08 ; CPU:$9B55 PRG:1B55 E9 08 + sta SpriteOffsetIndex ; CPU:$9B57 PRG:1B57 85 46 + lda BallFrameCounter ; CPU:$9B59 PRG:1B59 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$9B5C PRG:1B5C C5 46 + bcs BallUpdateTeamD_Loop6 ; CPU:$9B5E PRG:1B5E B0 08 + lda BallFrameCounter ; CPU:$9B60 PRG:1B60 AD 02 05 + cmp #$18 ; CPU:$9B63 PRG:1B63 C9 18 + bcc BallStoreTeamDFlagsB_Loop2 ; CPU:$9B65 PRG:1B65 90 3B + rts ; CPU:$9B67 PRG:1B67 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamD_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamD_Loop6: + lda BallFrameCounter ; CPU:$9B68 PRG:1B68 AD 02 05 + cmp NumberToDisplay ; CPU:$9B6B PRG:1B6B C5 45 + bcs BallStoreTeamDFlagsB_Loop ; CPU:$9B6D PRG:1B6D B0 32 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamDFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamDFlags: + lda #$40 ; CPU:$9B6F PRG:1B6F A9 40 + sta PlayerLeftInput ; CPU:$9B71 PRG:1B71 85 75 + lda FrameCounter ; CPU:$9B73 PRG:1B73 A5 2D + and #$18 ; CPU:$9B75 PRG:1B75 29 18 + cmp #$08 ; CPU:$9B77 PRG:1B77 C9 08 + bne BallSetTeamDFlags_Loop ; CPU:$9B79 PRG:1B79 D0 05 + lda #$08 ; CPU:$9B7B PRG:1B7B A9 08 + jmp BallStoreTeamDFlags ; CPU:$9B7D PRG:1B7D 4C 86 9B +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamDFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamDFlags_Loop: + cmp #$18 ; CPU:$9B80 PRG:1B80 C9 18 + bne BallStoreTeamDFlags_Loop ; CPU:$9B82 PRG:1B82 D0 06 + lda #$04 ; CPU:$9B84 PRG:1B84 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamDFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamDFlags: + ora PlayerLeftInput ; CPU:$9B86 PRG:1B86 05 75 + sta PlayerLeftInput ; CPU:$9B88 PRG:1B88 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamDFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamDFlags_Loop: + lda FrameCounter ; CPU:$9B8A PRG:1B8A A5 2D + and #$22 ; CPU:$9B8C PRG:1B8C 29 22 + cmp #$02 ; CPU:$9B8E PRG:1B8E C9 02 + bne BallStoreTeamDFlags_Loop2 ; CPU:$9B90 PRG:1B90 D0 05 + lda #$02 ; CPU:$9B92 PRG:1B92 A9 02 + jmp BallStoreTeamDFlagsB ; CPU:$9B94 PRG:1B94 4C 9D 9B +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamDFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamDFlags_Loop2: + cmp #$20 ; CPU:$9B97 PRG:1B97 C9 20 + bne BallStoreTeamDFlagsB_Loop ; CPU:$9B99 PRG:1B99 D0 06 + lda #$02 ; CPU:$9B9B PRG:1B9B A9 02 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamDFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamDFlagsB: + ora PlayerLeftInput ; CPU:$9B9D PRG:1B9D 05 75 + sta PlayerLeftInput ; CPU:$9B9F PRG:1B9F 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamDFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamDFlagsB_Loop: + rts ; CPU:$9BA1 PRG:1BA1 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamDFlagsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamDFlagsB_Loop2: + lda #$80 ; CPU:$9BA2 PRG:1BA2 A9 80 + sta PlayerLeftInput ; CPU:$9BA4 PRG:1BA4 85 75 + lda FrameCounter ; CPU:$9BA6 PRG:1BA6 A5 2D + and #$18 ; CPU:$9BA8 PRG:1BA8 29 18 + cmp #$08 ; CPU:$9BAA PRG:1BAA C9 08 + bne BallStoreTeamDFlagsB_Loop3 ; CPU:$9BAC PRG:1BAC D0 05 + lda #$08 ; CPU:$9BAE PRG:1BAE A9 08 + jmp BallStoreTeamDFlagsC ; CPU:$9BB0 PRG:1BB0 4C B9 9B +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamDFlagsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamDFlagsB_Loop3: + cmp #$18 ; CPU:$9BB3 PRG:1BB3 C9 18 + bne BallStoreTeamDFlagsC_Loop ; CPU:$9BB5 PRG:1BB5 D0 06 + lda #$04 ; CPU:$9BB7 PRG:1BB7 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamDFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamDFlagsC: + ora PlayerLeftInput ; CPU:$9BB9 PRG:1BB9 05 75 + sta PlayerLeftInput ; CPU:$9BBB PRG:1BBB 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamDFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamDFlagsC_Loop: + rts ; CPU:$9BBD PRG:1BBD 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE: + lda #$00 ; CPU:$9BBE PRG:1BBE A9 00 + sta NationStateA ; CPU:$9BC0 PRG:1BC0 85 5E + lda NationSlotA ; CPU:$9BC2 PRG:1BC2 A5 5C + asl a ; CPU:$9BC4 PRG:1BC4 0A + asl a ; CPU:$9BC5 PRG:1BC5 0A + asl a ; CPU:$9BC6 PRG:1BC6 0A + tax ; CPU:$9BC7 PRG:1BC7 AA + lda ScoreRecord,x ; CPU:$9BC8 PRG:1BC8 BD 13 05 + cmp #$13 ; CPU:$9BCB PRG:1BCB C9 13 + bne BallUpdateTeamE_Loop ; CPU:$9BCD PRG:1BCD D0 03 + jmp BallSetTeamEFlags ; CPU:$9BCF PRG:1BCF 4C 25 9C +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE_Loop: + jsr BallComputeNoteIndex ; CPU:$9BD2 PRG:1BD2 20 11 9F + lda BallSpeed ; CPU:$9BD5 PRG:1BD5 AD 05 05 + cmp #$80 ; CPU:$9BD8 PRG:1BD8 C9 80 + bcs BallUpdateTeamE_Loop2 ; CPU:$9BDA PRG:1BDA B0 01 + rts ; CPU:$9BDC PRG:1BDC 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE_Loop2: + lda BallPositionX,x ; CPU:$9BDD PRG:1BDD BD 0F 05 + clc ; CPU:$9BE0 PRG:1BE0 18 + adc #$08 ; CPU:$9BE1 PRG:1BE1 69 08 + sec ; CPU:$9BE3 PRG:1BE3 38 + sbc TeamColorA ; CPU:$9BE4 PRG:1BE4 E5 58 + bcs BallUpdateTeamE_Loop3 ; CPU:$9BE6 PRG:1BE6 B0 01 + rts ; CPU:$9BE8 PRG:1BE8 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE_Loop3: + cmp #$10 ; CPU:$9BE9 PRG:1BE9 C9 10 + bcc BallUpdateTeamE_Loop4 ; CPU:$9BEB PRG:1BEB 90 01 + rts ; CPU:$9BED PRG:1BED 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE_Loop4: + lda BallPositionY,x ; CPU:$9BEE PRG:1BEE BD 10 05 + clc ; CPU:$9BF1 PRG:1BF1 18 + adc #$08 ; CPU:$9BF2 PRG:1BF2 69 08 + sec ; CPU:$9BF4 PRG:1BF4 38 + sbc TeamColorB ; CPU:$9BF5 PRG:1BF5 E5 59 + bcs BallUpdateTeamE_Loop5 ; CPU:$9BF7 PRG:1BF7 B0 01 + rts ; CPU:$9BF9 PRG:1BF9 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE_Loop5: + cmp #$10 ; CPU:$9BFA PRG:1BFA C9 10 + bcc BallUpdateTeamE_Loop6 ; CPU:$9BFC PRG:1BFC 90 01 + rts ; CPU:$9BFE PRG:1BFE 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE_Loop6: + lda NumberToDisplay ; CPU:$9BFF PRG:1BFF A5 45 + sec ; CPU:$9C01 PRG:1C01 38 + sbc #$18 ; CPU:$9C02 PRG:1C02 E9 18 + sta SpriteOffsetIndex ; CPU:$9C04 PRG:1C04 85 46 + lda BallFrameCounter ; CPU:$9C06 PRG:1C06 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$9C09 PRG:1C09 C5 46 + bcs BallUpdateTeamE_Loop8 ; CPU:$9C0B PRG:1C0B B0 0B + lda BallFrameCounter ; CPU:$9C0D PRG:1C0D AD 02 05 + cmp #$18 ; CPU:$9C10 PRG:1C10 C9 18 + bcs BallUpdateTeamE_Loop7 ; CPU:$9C12 PRG:1C12 B0 03 + jmp BallSetCommonFlagsB ; CPU:$9C14 PRG:1C14 4C 97 9C +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE_Loop7: + rts ; CPU:$9C17 PRG:1C17 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE_Loop8: + lda BallFrameCounter ; CPU:$9C18 PRG:1C18 AD 02 05 + cmp NumberToDisplay ; CPU:$9C1B PRG:1C1B C5 45 + bcc BallUpdateTeamE_Loop9 ; CPU:$9C1D PRG:1C1D 90 01 + rts ; CPU:$9C1F PRG:1C1F 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamE_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamE_Loop9: + lda #$40 ; CPU:$9C20 PRG:1C20 A9 40 + sta PlayerLeftInput ; CPU:$9C22 PRG:1C22 85 75 + rts ; CPU:$9C24 PRG:1C24 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamEFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamEFlags: + lda #$40 ; CPU:$9C25 PRG:1C25 A9 40 + sta PlayerLeftInput ; CPU:$9C27 PRG:1C27 85 75 + lda FrameCounter ; CPU:$9C29 PRG:1C29 A5 2D + and #$3C ; CPU:$9C2B PRG:1C2B 29 3C + sta NumberToDisplay ; CPU:$9C2D PRG:1C2D 85 45 + lda BallY ; CPU:$9C2F PRG:1C2F AD 01 05 + cmp #$49 ; CPU:$9C32 PRG:1C32 C9 49 + bcc BallSetTeamEFlags_Loop ; CPU:$9C34 PRG:1C34 90 07 + cmp #$68 ; CPU:$9C36 PRG:1C36 C9 68 + bcs BallStoreTeamEFlags_Loop ; CPU:$9C38 PRG:1C38 B0 1B + jmp BallSetTeamEFlagsC ; CPU:$9C3A PRG:1C3A 4C 6D 9C +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamEFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamEFlags_Loop: + lda NumberToDisplay ; CPU:$9C3D PRG:1C3D A5 45 + cmp #$08 ; CPU:$9C3F PRG:1C3F C9 08 + bne BallSetTeamEFlags_Loop2 ; CPU:$9C41 PRG:1C41 D0 05 + lda #$08 ; CPU:$9C43 PRG:1C43 A9 08 + jmp BallStoreTeamEFlags ; CPU:$9C45 PRG:1C45 4C 4E 9C +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamEFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamEFlags_Loop2: + cmp #$18 ; CPU:$9C48 PRG:1C48 C9 18 + beq BallSetCommonFlags ; CPU:$9C4A PRG:1C4A F0 35 + lda #$04 ; CPU:$9C4C PRG:1C4C A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamEFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamEFlags: + ora PlayerLeftInput ; CPU:$9C4E PRG:1C4E 05 75 + sta PlayerLeftInput ; CPU:$9C50 PRG:1C50 85 75 + jmp BallSetCommonFlags ; CPU:$9C52 PRG:1C52 4C 81 9C +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamEFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamEFlags_Loop: + lda NumberToDisplay ; CPU:$9C55 PRG:1C55 A5 45 + cmp #$08 ; CPU:$9C57 PRG:1C57 C9 08 + bne BallStoreTeamEFlags_Loop2 ; CPU:$9C59 PRG:1C59 D0 05 + lda #$04 ; CPU:$9C5B PRG:1C5B A9 04 + jmp BallStoreTeamEFlagsB ; CPU:$9C5D PRG:1C5D 4C 66 9C +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamEFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamEFlags_Loop2: + cmp #$18 ; CPU:$9C60 PRG:1C60 C9 18 + beq BallSetCommonFlags ; CPU:$9C62 PRG:1C62 F0 1D + lda #$08 ; CPU:$9C64 PRG:1C64 A9 08 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamEFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamEFlagsB: + ora PlayerLeftInput ; CPU:$9C66 PRG:1C66 05 75 + sta PlayerLeftInput ; CPU:$9C68 PRG:1C68 85 75 + jmp BallSetCommonFlags ; CPU:$9C6A PRG:1C6A 4C 81 9C +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamEFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamEFlagsC: + lda FrameCounter ; CPU:$9C6D PRG:1C6D A5 2D + and #$10 ; CPU:$9C6F PRG:1C6F 29 10 + beq BallSetTeamEFlagsC_Loop ; CPU:$9C71 PRG:1C71 F0 05 + lda #$08 ; CPU:$9C73 PRG:1C73 A9 08 + jmp BallStoreTeamEFlagsD ; CPU:$9C75 PRG:1C75 4C 7A 9C +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamEFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamEFlagsC_Loop: + lda #$04 ; CPU:$9C78 PRG:1C78 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamEFlagsD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamEFlagsD: + ora PlayerLeftInput ; CPU:$9C7A PRG:1C7A 05 75 + sta PlayerLeftInput ; CPU:$9C7C PRG:1C7C 85 75 + jmp BallSetCommonFlags ; CPU:$9C7E PRG:1C7E 4C 81 9C +; ----------------------------------------------------------------------------- +; Routine: BallSetCommonFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetCommonFlags: + lda FrameCounter ; CPU:$9C81 PRG:1C81 A5 2D + and #$22 ; CPU:$9C83 PRG:1C83 29 22 + beq BallStoreCommonFlags_Loop ; CPU:$9C85 PRG:1C85 F0 0F + cmp #$22 ; CPU:$9C87 PRG:1C87 C9 22 + bne BallSetCommonFlags_Loop ; CPU:$9C89 PRG:1C89 D0 05 + lda #$02 ; CPU:$9C8B PRG:1C8B A9 02 + jmp BallStoreCommonFlags ; CPU:$9C8D PRG:1C8D 4C 92 9C +; ----------------------------------------------------------------------------- +; Routine: BallSetCommonFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetCommonFlags_Loop: + lda #$02 ; CPU:$9C90 PRG:1C90 A9 02 +; ----------------------------------------------------------------------------- +; Routine: BallStoreCommonFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreCommonFlags: + ora PlayerLeftInput ; CPU:$9C92 PRG:1C92 05 75 + sta PlayerLeftInput ; CPU:$9C94 PRG:1C94 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreCommonFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreCommonFlags_Loop: + rts ; CPU:$9C96 PRG:1C96 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetCommonFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetCommonFlagsB: + lda #$80 ; CPU:$9C97 PRG:1C97 A9 80 + sta PlayerLeftInput ; CPU:$9C99 PRG:1C99 85 75 + lda FrameCounter ; CPU:$9C9B PRG:1C9B A5 2D + and #$18 ; CPU:$9C9D PRG:1C9D 29 18 + cmp #$08 ; CPU:$9C9F PRG:1C9F C9 08 + bne BallSetCommonFlagsB_Loop ; CPU:$9CA1 PRG:1CA1 D0 05 + lda #$08 ; CPU:$9CA3 PRG:1CA3 A9 08 + jmp BallStoreCommonFlagsB ; CPU:$9CA5 PRG:1CA5 4C AE 9C +; ----------------------------------------------------------------------------- +; Routine: BallSetCommonFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetCommonFlagsB_Loop: + cmp #$18 ; CPU:$9CA8 PRG:1CA8 C9 18 + bne BallStoreCommonFlagsB_Loop ; CPU:$9CAA PRG:1CAA D0 06 + lda #$04 ; CPU:$9CAC PRG:1CAC A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreCommonFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreCommonFlagsB: + ora PlayerLeftInput ; CPU:$9CAE PRG:1CAE 05 75 + sta PlayerLeftInput ; CPU:$9CB0 PRG:1CB0 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreCommonFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreCommonFlagsB_Loop: + rts ; CPU:$9CB2 PRG:1CB2 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamF: + lda #$00 ; CPU:$9CB3 PRG:1CB3 A9 00 + sta NationStateA ; CPU:$9CB5 PRG:1CB5 85 5E + lda NationSlotA ; CPU:$9CB7 PRG:1CB7 A5 5C + asl a ; CPU:$9CB9 PRG:1CB9 0A + asl a ; CPU:$9CBA PRG:1CBA 0A + asl a ; CPU:$9CBB PRG:1CBB 0A + tax ; CPU:$9CBC PRG:1CBC AA + lda ScoreRecord,x ; CPU:$9CBD PRG:1CBD BD 13 05 + cmp #$13 ; CPU:$9CC0 PRG:1CC0 C9 13 + bne BallUpdateTeamF_Loop ; CPU:$9CC2 PRG:1CC2 D0 03 + jmp BallSetFlagsE ; CPU:$9CC4 PRG:1CC4 4C 46 9D +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamF_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamF_Loop: + lda TeamNumber ; CPU:$9CC7 PRG:1CC7 A5 66 + and #$07 ; CPU:$9CC9 PRG:1CC9 29 07 + cmp #$07 ; CPU:$9CCB PRG:1CCB C9 07 + beq BallUpdateTeamF_Loop2 ; CPU:$9CCD PRG:1CCD F0 0A + cmp #$06 ; CPU:$9CCF PRG:1CCF C9 06 + beq BallUpdateTeamF_Loop3 ; CPU:$9CD1 PRG:1CD1 F0 0C + jsr BallComputeNoteIndexD ; CPU:$9CD3 PRG:1CD3 20 77 9F + jmp CheckBallAboveScreen ; CPU:$9CD6 PRG:1CD6 4C E2 9C +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamF_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamF_Loop2: + jsr BallComputeNoteIndexB ; CPU:$9CD9 PRG:1CD9 20 2D 9F + jmp CheckBallAboveScreen ; CPU:$9CDC PRG:1CDC 4C E2 9C +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamF_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamF_Loop3: + jsr BallComputeNoteIndexC ; CPU:$9CDF PRG:1CDF 20 52 9F +; ----------------------------------------------------------------------------- +; Routine: CheckBallAboveScreen +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallAboveScreen: + lda BallSpeed ; CPU:$9CE2 PRG:1CE2 AD 05 05 + cmp #$80 ; CPU:$9CE5 PRG:1CE5 C9 80 + bcs CheckBallAboveScreen_Loop ; CPU:$9CE7 PRG:1CE7 B0 01 + rts ; CPU:$9CE9 PRG:1CE9 60 +; ----------------------------------------------------------------------------- +; Routine: CheckBallAboveScreen_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallAboveScreen_Loop: + lda BallPositionX,x ; CPU:$9CEA PRG:1CEA BD 0F 05 + clc ; CPU:$9CED PRG:1CED 18 + adc #$08 ; CPU:$9CEE PRG:1CEE 69 08 + sec ; CPU:$9CF0 PRG:1CF0 38 + sbc TeamColorA ; CPU:$9CF1 PRG:1CF1 E5 58 + bcs CheckBallAboveScreen_Loop2 ; CPU:$9CF3 PRG:1CF3 B0 01 + rts ; CPU:$9CF5 PRG:1CF5 60 +; ----------------------------------------------------------------------------- +; Routine: CheckBallAboveScreen_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallAboveScreen_Loop2: + cmp #$10 ; CPU:$9CF6 PRG:1CF6 C9 10 + bcc CheckBallAboveScreen_Loop3 ; CPU:$9CF8 PRG:1CF8 90 01 + rts ; CPU:$9CFA PRG:1CFA 60 +; ----------------------------------------------------------------------------- +; Routine: CheckBallAboveScreen_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallAboveScreen_Loop3: + lda BallPositionY,x ; CPU:$9CFB PRG:1CFB BD 10 05 + clc ; CPU:$9CFE PRG:1CFE 18 + adc #$08 ; CPU:$9CFF PRG:1CFF 69 08 + sec ; CPU:$9D01 PRG:1D01 38 + sbc TeamColorB ; CPU:$9D02 PRG:1D02 E5 59 + bcs CheckBallAboveScreen_Loop4 ; CPU:$9D04 PRG:1D04 B0 01 + rts ; CPU:$9D06 PRG:1D06 60 +; ----------------------------------------------------------------------------- +; Routine: CheckBallAboveScreen_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallAboveScreen_Loop4: + cmp #$10 ; CPU:$9D07 PRG:1D07 C9 10 + bcc CheckBallAboveScreen_Loop5 ; CPU:$9D09 PRG:1D09 90 01 + rts ; CPU:$9D0B PRG:1D0B 60 +; ----------------------------------------------------------------------------- +; Routine: CheckBallAboveScreen_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallAboveScreen_Loop5: + lda TeamNumber ; CPU:$9D0C PRG:1D0C A5 66 + and #$07 ; CPU:$9D0E PRG:1D0E 29 07 + cmp #$07 ; CPU:$9D10 PRG:1D10 C9 07 + bne CheckBallAboveScreen_Loop6 ; CPU:$9D12 PRG:1D12 D0 0A + lda BallFrameCounter ; CPU:$9D14 PRG:1D14 AD 02 05 + cmp #$88 ; CPU:$9D17 PRG:1D17 C9 88 + bcc BallStoreFlagsE2_Loop2 ; CPU:$9D19 PRG:1D19 90 64 + jmp BallMoveUp ; CPU:$9D1B PRG:1D1B 4C 29 9D +; ----------------------------------------------------------------------------- +; Routine: CheckBallAboveScreen_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckBallAboveScreen_Loop6: + cmp #$06 ; CPU:$9D1E PRG:1D1E C9 06 + bne BallMoveUp ; CPU:$9D20 PRG:1D20 D0 07 + lda BallFrameCounter ; CPU:$9D22 PRG:1D22 AD 02 05 + cmp #$40 ; CPU:$9D25 PRG:1D25 C9 40 + bcc BallStoreFlagsE2_Loop2 ; CPU:$9D27 PRG:1D27 90 56 +; ----------------------------------------------------------------------------- +; Routine: BallMoveUp +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallMoveUp: + lda NumberToDisplay ; CPU:$9D29 PRG:1D29 A5 45 + sec ; CPU:$9D2B PRG:1D2B 38 + sbc #$18 ; CPU:$9D2C PRG:1D2C E9 18 + sta SpriteOffsetIndex ; CPU:$9D2E PRG:1D2E 85 46 + lda BallFrameCounter ; CPU:$9D30 PRG:1D30 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$9D33 PRG:1D33 C5 46 + bcs BallMoveUp_Loop ; CPU:$9D35 PRG:1D35 B0 08 + lda BallFrameCounter ; CPU:$9D37 PRG:1D37 AD 02 05 + cmp #$18 ; CPU:$9D3A PRG:1D3A C9 18 + bcc BallStoreFlagsE2_Loop2 ; CPU:$9D3C PRG:1D3C 90 41 + rts ; CPU:$9D3E PRG:1D3E 60 +; ----------------------------------------------------------------------------- +; Routine: BallMoveUp_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallMoveUp_Loop: + lda BallFrameCounter ; CPU:$9D3F PRG:1D3F AD 02 05 + cmp NumberToDisplay ; CPU:$9D42 PRG:1D42 C5 45 + bcs BallStoreFlagsE2_Loop ; CPU:$9D44 PRG:1D44 B0 38 +; ----------------------------------------------------------------------------- +; Routine: BallSetFlagsE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetFlagsE: + lda #$40 ; CPU:$9D46 PRG:1D46 A9 40 + sta PlayerLeftInput ; CPU:$9D48 PRG:1D48 85 75 + lda FrameCounter ; CPU:$9D4A PRG:1D4A A5 2D + and #$18 ; CPU:$9D4C PRG:1D4C 29 18 + cmp #$08 ; CPU:$9D4E PRG:1D4E C9 08 + bne BallSetFlagsE_Loop ; CPU:$9D50 PRG:1D50 D0 05 + lda #$08 ; CPU:$9D52 PRG:1D52 A9 08 + jmp BallStoreFlagsE ; CPU:$9D54 PRG:1D54 4C 5D 9D +; ----------------------------------------------------------------------------- +; Routine: BallSetFlagsE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetFlagsE_Loop: + cmp #$18 ; CPU:$9D57 PRG:1D57 C9 18 + bne BallStoreFlagsE_Loop ; CPU:$9D59 PRG:1D59 D0 06 + lda #$04 ; CPU:$9D5B PRG:1D5B A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsE: + ora PlayerLeftInput ; CPU:$9D5D PRG:1D5D 05 75 + sta PlayerLeftInput ; CPU:$9D5F PRG:1D5F 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsE_Loop: + lda FrameCounter ; CPU:$9D61 PRG:1D61 A5 2D + and #$22 ; CPU:$9D63 PRG:1D63 29 22 + cmp #$02 ; CPU:$9D65 PRG:1D65 C9 02 + bne BallStoreFlagsE_Loop2 ; CPU:$9D67 PRG:1D67 D0 05 + lda #$02 ; CPU:$9D69 PRG:1D69 A9 02 + jmp BallStoreFlagsE2 ; CPU:$9D6B PRG:1D6B 4C 7A 9D +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsE_Loop2: + cmp #$20 ; CPU:$9D6E PRG:1D6E C9 20 + bne BallStoreFlagsE2_Loop ; CPU:$9D70 PRG:1D70 D0 0C + lda PlayerLeftInput ; CPU:$9D72 PRG:1D72 A5 75 + and #$0C ; CPU:$9D74 PRG:1D74 29 0C + bne BallStoreFlagsE2_Loop ; CPU:$9D76 PRG:1D76 D0 06 + lda #$01 ; CPU:$9D78 PRG:1D78 A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsE2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsE2: + ora PlayerLeftInput ; CPU:$9D7A PRG:1D7A 05 75 + sta PlayerLeftInput ; CPU:$9D7C PRG:1D7C 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsE2_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsE2_Loop: + rts ; CPU:$9D7E PRG:1D7E 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsE2_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsE2_Loop2: + lda #$80 ; CPU:$9D7F PRG:1D7F A9 80 + sta PlayerLeftInput ; CPU:$9D81 PRG:1D81 85 75 + lda FrameCounter ; CPU:$9D83 PRG:1D83 A5 2D + and #$18 ; CPU:$9D85 PRG:1D85 29 18 + cmp #$08 ; CPU:$9D87 PRG:1D87 C9 08 + bne BallStoreFlagsE2_Loop3 ; CPU:$9D89 PRG:1D89 D0 05 + lda #$08 ; CPU:$9D8B PRG:1D8B A9 08 + jmp BallStoreFlagsE3 ; CPU:$9D8D PRG:1D8D 4C 96 9D +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsE2_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsE2_Loop3: + cmp #$18 ; CPU:$9D90 PRG:1D90 C9 18 + bne BallStoreFlagsE3_Loop ; CPU:$9D92 PRG:1D92 D0 06 + lda #$04 ; CPU:$9D94 PRG:1D94 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsE3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsE3: + ora PlayerLeftInput ; CPU:$9D96 PRG:1D96 05 75 + sta PlayerLeftInput ; CPU:$9D98 PRG:1D98 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsE3_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsE3_Loop: + rts ; CPU:$9D9A PRG:1D9A 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimation +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimation: + lda NationStateA ; CPU:$9D9B PRG:1D9B A5 5E + beq BallUpdateAnimation_Loop ; CPU:$9D9D PRG:1D9D F0 09 + cmp #$01 ; CPU:$9D9F PRG:1D9F C9 01 + beq BallUpdateAnimation_Loop2 ; CPU:$9DA1 PRG:1DA1 F0 0C + lda #$FF ; CPU:$9DA3 PRG:1DA3 A9 FF + sta NumberToDisplay ; CPU:$9DA5 PRG:1DA5 85 45 + rts ; CPU:$9DA7 PRG:1DA7 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimation_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimation_Loop: + lda #$80 ; CPU:$9DA8 PRG:1DA8 A9 80 + sta PlayerLeftInput ; CPU:$9DAA PRG:1DAA 85 75 + jmp BallClearNumber ; CPU:$9DAC PRG:1DAC 4C CB 9D +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimation_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimation_Loop2: + lda FrameCounter ; CPU:$9DAF PRG:1DAF A5 2D + and #$0C ; CPU:$9DB1 PRG:1DB1 29 0C + cmp #$04 ; CPU:$9DB3 PRG:1DB3 C9 04 + bne BallUpdateAnimation_Loop3 ; CPU:$9DB5 PRG:1DB5 D0 05 + lda #$40 ; CPU:$9DB7 PRG:1DB7 A9 40 + jmp BallStoreAnimFlags ; CPU:$9DB9 PRG:1DB9 4C C9 9D +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimation_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimation_Loop3: + cmp #$0C ; CPU:$9DBC PRG:1DBC C9 0C + bne BallUpdateAnimation_Loop4 ; CPU:$9DBE PRG:1DBE D0 07 + lda #$02 ; CPU:$9DC0 PRG:1DC0 A9 02 + sta NationStateA ; CPU:$9DC2 PRG:1DC2 85 5E + jmp BallClearNumber ; CPU:$9DC4 PRG:1DC4 4C CB 9D +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimation_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimation_Loop4: + lda #$42 ; CPU:$9DC7 PRG:1DC7 A9 42 +; ----------------------------------------------------------------------------- +; Routine: BallStoreAnimFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreAnimFlags: + sta PlayerLeftInput ; CPU:$9DC9 PRG:1DC9 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallClearNumber +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallClearNumber: + lda #$00 ; CPU:$9DCB PRG:1DCB A9 00 + sta NumberToDisplay ; CPU:$9DCD PRG:1DCD 85 45 + rts ; CPU:$9DCF PRG:1DCF 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationB: + lda NationStateA ; CPU:$9DD0 PRG:1DD0 A5 5E + beq BallUpdateAnimationB_Loop ; CPU:$9DD2 PRG:1DD2 F0 09 + cmp #$01 ; CPU:$9DD4 PRG:1DD4 C9 01 + beq BallUpdateAnimationB_Loop2 ; CPU:$9DD6 PRG:1DD6 F0 0C + lda #$FF ; CPU:$9DD8 PRG:1DD8 A9 FF + sta NumberToDisplay ; CPU:$9DDA PRG:1DDA 85 45 + rts ; CPU:$9DDC PRG:1DDC 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationB_Loop: + lda #$80 ; CPU:$9DDD PRG:1DDD A9 80 + sta PlayerLeftInput ; CPU:$9DDF PRG:1DDF 85 75 + jmp BallClearNumberB ; CPU:$9DE1 PRG:1DE1 4C F7 9D +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationB_Loop2: + lda FrameCounter ; CPU:$9DE4 PRG:1DE4 A5 2D + and #$0C ; CPU:$9DE6 PRG:1DE6 29 0C + cmp #$0C ; CPU:$9DE8 PRG:1DE8 C9 0C + beq BallUpdateAnimationB_Loop3 ; CPU:$9DEA PRG:1DEA F0 07 + lda #$02 ; CPU:$9DEC PRG:1DEC A9 02 + sta NationStateA ; CPU:$9DEE PRG:1DEE 85 5E + jmp BallClearNumberB ; CPU:$9DF0 PRG:1DF0 4C F7 9D +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationB_Loop3: + lda #$42 ; CPU:$9DF3 PRG:1DF3 A9 42 + sta PlayerLeftInput ; CPU:$9DF5 PRG:1DF5 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallClearNumberB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallClearNumberB: + lda #$00 ; CPU:$9DF7 PRG:1DF7 A9 00 + sta NumberToDisplay ; CPU:$9DF9 PRG:1DF9 85 45 + rts ; CPU:$9DFB PRG:1DFB 60 +; ----------------------------------------------------------------------------- +; Routine: BallResetForTeam +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallResetForTeam: + lda #$00 ; CPU:$9DFC PRG:1DFC A9 00 + sta NationStateA ; CPU:$9DFE PRG:1DFE 85 5E + sta NationStateB ; CPU:$9E00 PRG:1E00 85 5F + lda TeamId ; CPU:$9E02 PRG:1E02 A5 70 + beq BallResetForTeam_Loop ; CPU:$9E04 PRG:1E04 F0 03 + jmp BallCheckFloor ; CPU:$9E06 PRG:1E06 4C 18 9E +; ----------------------------------------------------------------------------- +; Routine: BallResetForTeam_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallResetForTeam_Loop: + lda #$00 ; CPU:$9E09 PRG:1E09 A9 00 + sta PlayerSpriteId ; CPU:$9E0B PRG:1E0B 85 56 + lda #$80 ; CPU:$9E0D PRG:1E0D A9 80 + sta PlayerLeftPressed ; CPU:$9E0F PRG:1E0F 85 77 + lda #$80 ; CPU:$9E11 PRG:1E11 A9 80 + sta PlayerLeftInput ; CPU:$9E13 PRG:1E13 85 75 + jmp BallFrameDone2 ; CPU:$9E15 PRG:1E15 4C 45 9E +; ----------------------------------------------------------------------------- +; Routine: BallCheckFloor +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckFloor: + lda BallFrameCounter ; CPU:$9E18 PRG:1E18 AD 02 05 + cmp #$20 ; CPU:$9E1B PRG:1E1B C9 20 + bcs BallFrameDone2 ; CPU:$9E1D PRG:1E1D B0 26 + lda BallSpeed ; CPU:$9E1F PRG:1E1F AD 05 05 + cmp #$80 ; CPU:$9E22 PRG:1E22 C9 80 + bcc BallFrameDone2 ; CPU:$9E24 PRG:1E24 90 1F + lda #$80 ; CPU:$9E26 PRG:1E26 A9 80 + sta PlayerLeftPressed ; CPU:$9E28 PRG:1E28 85 77 + lda #$80 ; CPU:$9E2A PRG:1E2A A9 80 + sta PlayerLeftInput ; CPU:$9E2C PRG:1E2C 85 75 + lda FrameCounter ; CPU:$9E2E PRG:1E2E A5 2D + and #$18 ; CPU:$9E30 PRG:1E30 29 18 + cmp #$08 ; CPU:$9E32 PRG:1E32 C9 08 + bne BallCheckFloor_Loop ; CPU:$9E34 PRG:1E34 D0 05 + lda #$08 ; CPU:$9E36 PRG:1E36 A9 08 + jmp BallStoreFlagsF ; CPU:$9E38 PRG:1E38 4C 41 9E +; ----------------------------------------------------------------------------- +; Routine: BallCheckFloor_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckFloor_Loop: + cmp #$18 ; CPU:$9E3B PRG:1E3B C9 18 + bne BallFrameDone2 ; CPU:$9E3D PRG:1E3D D0 06 + lda #$04 ; CPU:$9E3F PRG:1E3F A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsF: + ora PlayerLeftInput ; CPU:$9E41 PRG:1E41 05 75 + sta PlayerLeftInput ; CPU:$9E43 PRG:1E43 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallFrameDone2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFrameDone2: + rts ; CPU:$9E45 PRG:1E45 60 +; ----------------------------------------------------------------------------- +; Routine: BallResetForTeamB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallResetForTeamB: + lda #$00 ; CPU:$9E46 PRG:1E46 A9 00 + sta NationStateA ; CPU:$9E48 PRG:1E48 85 5E + sta NationStateB ; CPU:$9E4A PRG:1E4A 85 5F + lda TeamId ; CPU:$9E4C PRG:1E4C A5 70 + beq BallResetForTeamB_Loop ; CPU:$9E4E PRG:1E4E F0 03 + jmp BallComputeSpeed ; CPU:$9E50 PRG:1E50 4C 62 9E +; ----------------------------------------------------------------------------- +; Routine: BallResetForTeamB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallResetForTeamB_Loop: + lda #$00 ; CPU:$9E53 PRG:1E53 A9 00 + sta PlayerSpriteId ; CPU:$9E55 PRG:1E55 85 56 + lda #$80 ; CPU:$9E57 PRG:1E57 A9 80 + sta PlayerLeftPressed ; CPU:$9E59 PRG:1E59 85 77 + lda #$80 ; CPU:$9E5B PRG:1E5B A9 80 + sta PlayerLeftInput ; CPU:$9E5D PRG:1E5D 85 75 + jmp BallCheckSpin ; CPU:$9E5F PRG:1E5F 4C 98 9E +; ----------------------------------------------------------------------------- +; Routine: BallComputeSpeed +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeSpeed: + lda FrameCounter ; CPU:$9E62 PRG:1E62 A5 2D + and #$1F ; CPU:$9E64 PRG:1E64 29 1F + clc ; CPU:$9E66 PRG:1E66 18 + adc #$10 ; CPU:$9E67 PRG:1E67 69 10 + sta NumberToDisplay ; CPU:$9E69 PRG:1E69 85 45 + lda BallFrameCounter ; CPU:$9E6B PRG:1E6B AD 02 05 + cmp NumberToDisplay ; CPU:$9E6E PRG:1E6E C5 45 + bcs BallCheckSpin ; CPU:$9E70 PRG:1E70 B0 26 + lda BallSpeed ; CPU:$9E72 PRG:1E72 AD 05 05 + cmp #$80 ; CPU:$9E75 PRG:1E75 C9 80 + bcc BallCheckSpin ; CPU:$9E77 PRG:1E77 90 1F + lda #$80 ; CPU:$9E79 PRG:1E79 A9 80 + sta PlayerLeftPressed ; CPU:$9E7B PRG:1E7B 85 77 + lda #$80 ; CPU:$9E7D PRG:1E7D A9 80 + sta PlayerLeftInput ; CPU:$9E7F PRG:1E7F 85 75 + lda FrameCounter ; CPU:$9E81 PRG:1E81 A5 2D + and #$18 ; CPU:$9E83 PRG:1E83 29 18 + cmp #$08 ; CPU:$9E85 PRG:1E85 C9 08 + bne BallComputeSpeed_Loop ; CPU:$9E87 PRG:1E87 D0 05 + lda #$08 ; CPU:$9E89 PRG:1E89 A9 08 + jmp BallStoreFlagsG ; CPU:$9E8B PRG:1E8B 4C 94 9E +; ----------------------------------------------------------------------------- +; Routine: BallComputeSpeed_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeSpeed_Loop: + cmp #$18 ; CPU:$9E8E PRG:1E8E C9 18 + bne BallCheckSpin ; CPU:$9E90 PRG:1E90 D0 06 + lda #$04 ; CPU:$9E92 PRG:1E92 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsG: + ora PlayerLeftInput ; CPU:$9E94 PRG:1E94 05 75 + sta PlayerLeftInput ; CPU:$9E96 PRG:1E96 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallCheckSpin +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckSpin: + lda FrameCounter ; CPU:$9E98 PRG:1E98 A5 2D + and #$06 ; CPU:$9E9A PRG:1E9A 29 06 + cmp #$02 ; CPU:$9E9C PRG:1E9C C9 02 + bne BallCheckSpin_Loop ; CPU:$9E9E PRG:1E9E D0 05 + lda #$01 ; CPU:$9EA0 PRG:1EA0 A9 01 + jmp BallStoreFlagsH ; CPU:$9EA2 PRG:1EA2 4C AB 9E +; ----------------------------------------------------------------------------- +; Routine: BallCheckSpin_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckSpin_Loop: + cmp #$06 ; CPU:$9EA5 PRG:1EA5 C9 06 + bne BallStoreFlagsH_Loop ; CPU:$9EA7 PRG:1EA7 D0 06 + lda #$01 ; CPU:$9EA9 PRG:1EA9 A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsH: + ora PlayerLeftInput ; CPU:$9EAB PRG:1EAB 05 75 + sta PlayerLeftInput ; CPU:$9EAD PRG:1EAD 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsH_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsH_Loop: + rts ; CPU:$9EAF PRG:1EAF 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateBallSpeed +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateBallSpeed: + lda PlayerLeftInput ; CPU:$9EB0 PRG:1EB0 A5 75 + bne BallStoreBallSpeed_Loop ; CPU:$9EB2 PRG:1EB2 D0 45 + lda Zp89 ; CPU:$9EB4 PRG:1EB4 A5 89 + beq BallUpdateBallSpeed_Loop ; CPU:$9EB6 PRG:1EB6 F0 03 + dec Zp89 ; CPU:$9EB8 PRG:1EB8 C6 89 + rts ; CPU:$9EBA PRG:1EBA 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateBallSpeed_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateBallSpeed_Loop: + lda NationSlotA ; CPU:$9EBB PRG:1EBB A5 5C + asl a ; CPU:$9EBD PRG:1EBD 0A + asl a ; CPU:$9EBE PRG:1EBE 0A + asl a ; CPU:$9EBF PRG:1EBF 0A + tax ; CPU:$9EC0 PRG:1EC0 AA + lda TeamColorA ; CPU:$9EC1 PRG:1EC1 A5 58 + clc ; CPU:$9EC3 PRG:1EC3 18 + adc #$02 ; CPU:$9EC4 PRG:1EC4 69 02 + sec ; CPU:$9EC6 PRG:1EC6 38 + sbc BallPositionX,x ; CPU:$9EC7 PRG:1EC7 FD 0F 05 + bcc BallUpdateBallSpeed_Loop2 ; CPU:$9ECA PRG:1ECA 90 0B + cmp #$04 ; CPU:$9ECC PRG:1ECC C9 04 + bcc BallSetBallSpeed_Loop ; CPU:$9ECE PRG:1ECE 90 0D + lda PlayerLeftInput ; CPU:$9ED0 PRG:1ED0 A5 75 + ora #$01 ; CPU:$9ED2 PRG:1ED2 09 01 + jmp BallSetBallSpeed ; CPU:$9ED4 PRG:1ED4 4C DB 9E +; ----------------------------------------------------------------------------- +; Routine: BallUpdateBallSpeed_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateBallSpeed_Loop2: + lda PlayerLeftInput ; CPU:$9ED7 PRG:1ED7 A5 75 + ora #$02 ; CPU:$9ED9 PRG:1ED9 09 02 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallSpeed +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallSpeed: + sta PlayerLeftInput ; CPU:$9EDB PRG:1EDB 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallSpeed_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallSpeed_Loop: + lda TeamColorB ; CPU:$9EDD PRG:1EDD A5 59 + clc ; CPU:$9EDF PRG:1EDF 18 + adc #$02 ; CPU:$9EE0 PRG:1EE0 69 02 + sec ; CPU:$9EE2 PRG:1EE2 38 + sbc BallPositionY,x ; CPU:$9EE3 PRG:1EE3 FD 10 05 + bcc BallSetBallSpeed_Loop2 ; CPU:$9EE6 PRG:1EE6 90 0B + cmp #$04 ; CPU:$9EE8 PRG:1EE8 C9 04 + bcc BallStoreBallSpeed_Loop ; CPU:$9EEA PRG:1EEA 90 0D + lda PlayerLeftInput ; CPU:$9EEC PRG:1EEC A5 75 + ora #$04 ; CPU:$9EEE PRG:1EEE 09 04 + jmp BallStoreBallSpeed ; CPU:$9EF0 PRG:1EF0 4C F7 9E +; ----------------------------------------------------------------------------- +; Routine: BallSetBallSpeed_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallSpeed_Loop2: + lda PlayerLeftInput ; CPU:$9EF3 PRG:1EF3 A5 75 + ora #$08 ; CPU:$9EF5 PRG:1EF5 09 08 +; ----------------------------------------------------------------------------- +; Routine: BallStoreBallSpeed +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreBallSpeed: + sta PlayerLeftInput ; CPU:$9EF7 PRG:1EF7 85 75 +; ----------------------------------------------------------------------------- +; Routine: BallStoreBallSpeed_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreBallSpeed_Loop: + rts ; CPU:$9EF9 PRG:1EF9 60 +; ----------------------------------------------------------------------------- +; Routine: BallSubtractSpeed +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSubtractSpeed: + lda $0522 ; CPU:$9EFA PRG:1EFA AD 22 05 + sec ; CPU:$9EFD PRG:1EFD 38 + sbc TeamColorB ; CPU:$9EFE PRG:1EFE E5 59 + bcc BallSubtractSpeed_Loop2 ; CPU:$9F00 PRG:1F00 90 0A + cmp #$03 ; CPU:$9F02 PRG:1F02 C9 03 + bcs BallSubtractSpeed_Loop ; CPU:$9F04 PRG:1F04 B0 01 + rts ; CPU:$9F06 PRG:1F06 60 +; ----------------------------------------------------------------------------- +; Routine: BallSubtractSpeed_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSubtractSpeed_Loop: + lda #$08 ; CPU:$9F07 PRG:1F07 A9 08 + jmp BallStoreSpeed ; CPU:$9F09 PRG:1F09 4C 0E 9F +; ----------------------------------------------------------------------------- +; Routine: BallSubtractSpeed_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSubtractSpeed_Loop2: + lda #$04 ; CPU:$9F0C PRG:1F0C A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreSpeed +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreSpeed: + sta PlayerLeftInput ; CPU:$9F0E PRG:1F0E 85 75 + rts ; CPU:$9F10 PRG:1F10 60 +; ----------------------------------------------------------------------------- +; Routine: BallComputeNoteIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeNoteIndex: + lda $05DE ; CPU:$9F11 PRG:1F11 AD DE 05 + sec ; CPU:$9F14 PRG:1F14 38 + sbc #$05 ; CPU:$9F15 PRG:1F15 E9 05 + asl a ; CPU:$9F17 PRG:1F17 0A + asl a ; CPU:$9F18 PRG:1F18 0A + asl a ; CPU:$9F19 PRG:1F19 0A + sta NumberToDisplay ; CPU:$9F1A PRG:1F1A 85 45 + lda $05DF ; CPU:$9F1C PRG:1F1C AD DF 05 + sec ; CPU:$9F1F PRG:1F1F 38 + sbc #$01 ; CPU:$9F20 PRG:1F20 E9 01 + clc ; CPU:$9F22 PRG:1F22 18 + adc NumberToDisplay ; CPU:$9F23 PRG:1F23 65 45 + asl a ; CPU:$9F25 PRG:1F25 0A + asl a ; CPU:$9F26 PRG:1F26 0A + clc ; CPU:$9F27 PRG:1F27 18 + adc #$70 ; CPU:$9F28 PRG:1F28 69 70 + sta NumberToDisplay ; CPU:$9F2A PRG:1F2A 85 45 + rts ; CPU:$9F2C PRG:1F2C 60 +; ----------------------------------------------------------------------------- +; Routine: BallComputeNoteIndexB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeNoteIndexB: + lda $05DE ; CPU:$9F2D PRG:1F2D AD DE 05 + sec ; CPU:$9F30 PRG:1F30 38 + sbc #$05 ; CPU:$9F31 PRG:1F31 E9 05 + asl a ; CPU:$9F33 PRG:1F33 0A + asl a ; CPU:$9F34 PRG:1F34 0A + asl a ; CPU:$9F35 PRG:1F35 0A + sta NumberToDisplay ; CPU:$9F36 PRG:1F36 85 45 + lda $05DF ; CPU:$9F38 PRG:1F38 AD DF 05 + sec ; CPU:$9F3B PRG:1F3B 38 + sbc #$01 ; CPU:$9F3C PRG:1F3C E9 01 + clc ; CPU:$9F3E PRG:1F3E 18 + adc NumberToDisplay ; CPU:$9F3F PRG:1F3F 65 45 + asl a ; CPU:$9F41 PRG:1F41 0A + asl a ; CPU:$9F42 PRG:1F42 0A + clc ; CPU:$9F43 PRG:1F43 18 + adc #$50 ; CPU:$9F44 PRG:1F44 69 50 + sta NumberToDisplay ; CPU:$9F46 PRG:1F46 85 45 + lda FrameCounter ; CPU:$9F48 PRG:1F48 A5 2D + and #$3F ; CPU:$9F4A PRG:1F4A 29 3F + clc ; CPU:$9F4C PRG:1F4C 18 + adc NumberToDisplay ; CPU:$9F4D PRG:1F4D 65 45 + sta NumberToDisplay ; CPU:$9F4F PRG:1F4F 85 45 + rts ; CPU:$9F51 PRG:1F51 60 +; ----------------------------------------------------------------------------- +; Routine: BallComputeNoteIndexC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeNoteIndexC: + lda $05DE ; CPU:$9F52 PRG:1F52 AD DE 05 + sec ; CPU:$9F55 PRG:1F55 38 + sbc #$05 ; CPU:$9F56 PRG:1F56 E9 05 + asl a ; CPU:$9F58 PRG:1F58 0A + asl a ; CPU:$9F59 PRG:1F59 0A + asl a ; CPU:$9F5A PRG:1F5A 0A + sta NumberToDisplay ; CPU:$9F5B PRG:1F5B 85 45 + lda $05DF ; CPU:$9F5D PRG:1F5D AD DF 05 + sec ; CPU:$9F60 PRG:1F60 38 + sbc #$01 ; CPU:$9F61 PRG:1F61 E9 01 + clc ; CPU:$9F63 PRG:1F63 18 + adc NumberToDisplay ; CPU:$9F64 PRG:1F64 65 45 + asl a ; CPU:$9F66 PRG:1F66 0A + asl a ; CPU:$9F67 PRG:1F67 0A + clc ; CPU:$9F68 PRG:1F68 18 + adc #$50 ; CPU:$9F69 PRG:1F69 69 50 + sta NumberToDisplay ; CPU:$9F6B PRG:1F6B 85 45 + lda FrameCounter ; CPU:$9F6D PRG:1F6D A5 2D + and #$3F ; CPU:$9F6F PRG:1F6F 29 3F + clc ; CPU:$9F71 PRG:1F71 18 + adc NumberToDisplay ; CPU:$9F72 PRG:1F72 65 45 + sta NumberToDisplay ; CPU:$9F74 PRG:1F74 85 45 + rts ; CPU:$9F76 PRG:1F76 60 +; ----------------------------------------------------------------------------- +; Routine: BallComputeNoteIndexD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeNoteIndexD: + lda $05DE ; CPU:$9F77 PRG:1F77 AD DE 05 + sec ; CPU:$9F7A PRG:1F7A 38 + sbc #$05 ; CPU:$9F7B PRG:1F7B E9 05 + asl a ; CPU:$9F7D PRG:1F7D 0A + asl a ; CPU:$9F7E PRG:1F7E 0A + asl a ; CPU:$9F7F PRG:1F7F 0A + sta NumberToDisplay ; CPU:$9F80 PRG:1F80 85 45 + lda $05DF ; CPU:$9F82 PRG:1F82 AD DF 05 + sec ; CPU:$9F85 PRG:1F85 38 + sbc #$01 ; CPU:$9F86 PRG:1F86 E9 01 + clc ; CPU:$9F88 PRG:1F88 18 + adc NumberToDisplay ; CPU:$9F89 PRG:1F89 65 45 + asl a ; CPU:$9F8B PRG:1F8B 0A + asl a ; CPU:$9F8C PRG:1F8C 0A + clc ; CPU:$9F8D PRG:1F8D 18 + adc #$68 ; CPU:$9F8E PRG:1F8E 69 68 + sta NumberToDisplay ; CPU:$9F90 PRG:1F90 85 45 + lda FrameCounter ; CPU:$9F92 PRG:1F92 A5 2D + and #$0F ; CPU:$9F94 PRG:1F94 29 0F + clc ; CPU:$9F96 PRG:1F96 18 + adc NumberToDisplay ; CPU:$9F97 PRG:1F97 65 45 + sta NumberToDisplay ; CPU:$9F99 PRG:1F99 85 45 + rts ; CPU:$9F9B PRG:1F9B 60 +; ----------------------------------------------------------------------------- +; Routine: BallGetTeamSlot +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetTeamSlot: + lda TeamNumber ; CPU:$9F9C PRG:1F9C A5 66 + lsr a ; CPU:$9F9E PRG:1F9E 4A + lsr a ; CPU:$9F9F PRG:1F9F 4A + lsr a ; CPU:$9FA0 PRG:1FA0 4A + lsr a ; CPU:$9FA1 PRG:1FA1 4A + tax ; CPU:$9FA2 PRG:1FA2 AA + dex ; CPU:$9FA3 PRG:1FA3 CA + bne BallGetTeamSlot_Loop ; CPU:$9FA4 PRG:1FA4 D0 03 + jmp BallUpdateTeamG ; CPU:$9FA6 PRG:1FA6 4C CE 9F +; ----------------------------------------------------------------------------- +; Routine: BallGetTeamSlot_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetTeamSlot_Loop: + dex ; CPU:$9FA9 PRG:1FA9 CA + bne BallGetTeamSlot_Loop2 ; CPU:$9FAA PRG:1FAA D0 03 + jmp TeamSpriteUpdate0 ; CPU:$9FAC PRG:1FAC 4C 1F A0 +; ----------------------------------------------------------------------------- +; Routine: BallGetTeamSlot_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetTeamSlot_Loop2: + dex ; CPU:$9FAF PRG:1FAF CA + bne BallGetTeamSlot_Loop3 ; CPU:$9FB0 PRG:1FB0 D0 03 + jmp TeamSpriteUpdate1 ; CPU:$9FB2 PRG:1FB2 4C 66 A0 +; ----------------------------------------------------------------------------- +; Routine: BallGetTeamSlot_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetTeamSlot_Loop3: + dex ; CPU:$9FB5 PRG:1FB5 CA + bne BallGetTeamSlot_Loop4 ; CPU:$9FB6 PRG:1FB6 D0 03 + jmp TeamSpriteUpdate2 ; CPU:$9FB8 PRG:1FB8 4C B7 A0 +; ----------------------------------------------------------------------------- +; Routine: BallGetTeamSlot_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetTeamSlot_Loop4: + dex ; CPU:$9FBB PRG:1FBB CA + bne BallGetTeamSlot_Loop5 ; CPU:$9FBC PRG:1FBC D0 03 + jmp TeamSpriteUpdate3 ; CPU:$9FBE PRG:1FBE 4C 08 A1 +; ----------------------------------------------------------------------------- +; Routine: BallGetTeamSlot_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetTeamSlot_Loop5: + dex ; CPU:$9FC1 PRG:1FC1 CA + bne BallGetTeamSlot_Loop6 ; CPU:$9FC2 PRG:1FC2 D0 03 + jmp TeamSpriteUpdate4 ; CPU:$9FC4 PRG:1FC4 4C 4F A1 +; ----------------------------------------------------------------------------- +; Routine: BallGetTeamSlot_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetTeamSlot_Loop6: + dex ; CPU:$9FC7 PRG:1FC7 CA + bne BallGetTeamSlot_Loop7 ; CPU:$9FC8 PRG:1FC8 D0 03 + jmp TeamSpriteUpdate5 ; CPU:$9FCA PRG:1FCA 4C 96 A1 +; ----------------------------------------------------------------------------- +; Routine: BallGetTeamSlot_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetTeamSlot_Loop7: + rts ; CPU:$9FCD PRG:1FCD 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamG: + lda #$00 ; CPU:$9FCE PRG:1FCE A9 00 + sta PlayerRightInput ; CPU:$9FD0 PRG:1FD0 85 76 + lda PlayerSpriteIdB ; CPU:$9FD2 PRG:1FD2 A5 57 + beq BallUpdateTeamG_Loop ; CPU:$9FD4 PRG:1FD4 F0 04 + jsr BallUpdateBallSpeedB ; CPU:$9FD6 PRG:1FD6 20 F2 A8 + rts ; CPU:$9FD9 PRG:1FD9 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamG_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamG_Loop: + ldx TeamScore1Hi ; CPU:$9FDA PRG:1FDA A6 55 + beq BallUpdateTeamG_Loop2 ; CPU:$9FDC PRG:1FDC F0 0C + dex ; CPU:$9FDE PRG:1FDE CA + beq BallUpdateTeamG_Loop3 ; CPU:$9FDF PRG:1FDF F0 10 + dex ; CPU:$9FE1 PRG:1FE1 CA + beq BallUpdateTeamG_Loop4 ; CPU:$9FE2 PRG:1FE2 F0 14 + dex ; CPU:$9FE4 PRG:1FE4 CA + beq TeamSpriteUpdate0End_Loop ; CPU:$9FE5 PRG:1FE5 F0 22 + dex ; CPU:$9FE7 PRG:1FE7 CA + beq TeamSpriteUpdate0End_Loop3 ; CPU:$9FE8 PRG:1FE8 F0 2E +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamG_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamG_Loop2: + jsr TeamCheckFloorB ; CPU:$9FEA PRG:1FEA 20 39 A2 + jsr BallUpdateBallSpeedB ; CPU:$9FED PRG:1FED 20 F2 A8 + rts ; CPU:$9FF0 PRG:1FF0 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamG_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamG_Loop3: + jsr BallUpdateTeamI ; CPU:$9FF1 PRG:1FF1 20 C6 A3 + jsr BallUpdateBallSpeedB ; CPU:$9FF4 PRG:1FF4 20 F2 A8 + rts ; CPU:$9FF7 PRG:1FF7 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamG_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamG_Loop4: + lda Zp61 ; CPU:$9FF8 PRG:1FF8 A5 61 + beq BallUpdateTeamG_Loop5 ; CPU:$9FFA PRG:1FFA F0 06 + jsr BallUpdateTeamL ; CPU:$9FFC PRG:1FFC 20 52 A5 + jmp TeamSpriteUpdate0End ; CPU:$9FFF PRG:1FFF 4C 05 A0 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamG_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamG_Loop5: + jsr BallUpdateTeamM ; CPU:$A002 PRG:2002 20 FC A5 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0End +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0End: + jsr BallUpdateBallSpeedB ; CPU:$A005 PRG:2005 20 F2 A8 + rts ; CPU:$A008 PRG:2008 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0End_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0End_Loop: + jsr BallUpdateAnimationC ; CPU:$A009 PRG:2009 20 E1 A7 + lda NumberToDisplay ; CPU:$A00C PRG:200C A5 45 + beq TeamSpriteUpdate0End_Loop2 ; CPU:$A00E PRG:200E F0 04 + jsr BallSubtractSpeedB ; CPU:$A010 PRG:2010 20 3C A9 + rts ; CPU:$A013 PRG:2013 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0End_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0End_Loop2: + jsr BallUpdateBallSpeedB ; CPU:$A014 PRG:2014 20 F2 A8 + rts ; CPU:$A017 PRG:2017 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0End_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0End_Loop3: + jsr BallResetForTeamD ; CPU:$A018 PRG:2018 20 8A A8 + jsr BallUpdateBallSpeedB ; CPU:$A01B PRG:201B 20 F2 A8 + rts ; CPU:$A01E PRG:201E 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0: + lda #$00 ; CPU:$A01F PRG:201F A9 00 + sta PlayerRightInput ; CPU:$A021 PRG:2021 85 76 + lda PlayerSpriteIdB ; CPU:$A023 PRG:2023 A5 57 + beq TeamSpriteUpdate0_Loop ; CPU:$A025 PRG:2025 F0 04 + jsr BallUpdateBallSpeedB ; CPU:$A027 PRG:2027 20 F2 A8 + rts ; CPU:$A02A PRG:202A 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0_Loop: + ldx TeamScore1Hi ; CPU:$A02B PRG:202B A6 55 + beq TeamSpriteUpdate0_Loop2 ; CPU:$A02D PRG:202D F0 0C + dex ; CPU:$A02F PRG:202F CA + beq TeamSpriteUpdate0_Loop3 ; CPU:$A030 PRG:2030 F0 10 + dex ; CPU:$A032 PRG:2032 CA + beq TeamSpriteUpdate0_Loop4 ; CPU:$A033 PRG:2033 F0 14 + dex ; CPU:$A035 PRG:2035 CA + beq TeamSpriteUpdate0_Loop5 ; CPU:$A036 PRG:2036 F0 18 + dex ; CPU:$A038 PRG:2038 CA + beq TeamSpriteUpdate0_Loop7 ; CPU:$A039 PRG:2039 F0 24 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0_Loop2: + jsr TeamCheckFloorB ; CPU:$A03B PRG:203B 20 39 A2 + jsr BallUpdateBallSpeedB ; CPU:$A03E PRG:203E 20 F2 A8 + rts ; CPU:$A041 PRG:2041 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0_Loop3: + jsr BallUpdateTeamH ; CPU:$A042 PRG:2042 20 07 A3 + jsr BallUpdateBallSpeedB ; CPU:$A045 PRG:2045 20 F2 A8 + rts ; CPU:$A048 PRG:2048 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0_Loop4: + jsr BallUpdateTeamJ ; CPU:$A049 PRG:2049 20 9F A4 + jsr BallUpdateBallSpeedB ; CPU:$A04C PRG:204C 20 F2 A8 + rts ; CPU:$A04F PRG:204F 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0_Loop5: + jsr BallUpdateAnimationC ; CPU:$A050 PRG:2050 20 E1 A7 + lda NumberToDisplay ; CPU:$A053 PRG:2053 A5 45 + beq TeamSpriteUpdate0_Loop6 ; CPU:$A055 PRG:2055 F0 04 + jsr BallSubtractSpeedB ; CPU:$A057 PRG:2057 20 3C A9 + rts ; CPU:$A05A PRG:205A 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0_Loop6: + jsr BallUpdateBallSpeedB ; CPU:$A05B PRG:205B 20 F2 A8 + rts ; CPU:$A05E PRG:205E 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate0_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate0_Loop7: + jsr BallResetForTeamD ; CPU:$A05F PRG:205F 20 8A A8 + jsr BallUpdateBallSpeedB ; CPU:$A062 PRG:2062 20 F2 A8 + rts ; CPU:$A065 PRG:2065 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1: + lda #$00 ; CPU:$A066 PRG:2066 A9 00 + sta PlayerRightInput ; CPU:$A068 PRG:2068 85 76 + lda PlayerSpriteIdB ; CPU:$A06A PRG:206A A5 57 + beq TeamSpriteUpdate1_Loop ; CPU:$A06C PRG:206C F0 04 + jsr BallUpdateBallSpeedB ; CPU:$A06E PRG:206E 20 F2 A8 + rts ; CPU:$A071 PRG:2071 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1_Loop: + ldx TeamScore1Hi ; CPU:$A072 PRG:2072 A6 55 + beq TeamSpriteUpdate1_Loop2 ; CPU:$A074 PRG:2074 F0 0C + dex ; CPU:$A076 PRG:2076 CA + beq TeamSpriteUpdate1_Loop3 ; CPU:$A077 PRG:2077 F0 10 + dex ; CPU:$A079 PRG:2079 CA + beq TeamSpriteUpdate1_Loop4 ; CPU:$A07A PRG:207A F0 14 + dex ; CPU:$A07C PRG:207C CA + beq TeamSpriteUpdate1End_Loop ; CPU:$A07D PRG:207D F0 22 + dex ; CPU:$A07F PRG:207F CA + beq TeamSpriteUpdate1End_Loop3 ; CPU:$A080 PRG:2080 F0 2E +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1_Loop2: + jsr TeamCheckFloorB ; CPU:$A082 PRG:2082 20 39 A2 + jsr BallUpdateBallSpeedB ; CPU:$A085 PRG:2085 20 F2 A8 + rts ; CPU:$A088 PRG:2088 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1_Loop3: + jsr TeamResetFlagsB ; CPU:$A089 PRG:2089 20 C0 A2 + jsr BallUpdateBallSpeedB ; CPU:$A08C PRG:208C 20 F2 A8 + rts ; CPU:$A08F PRG:208F 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1_Loop4: + lda Zp61 ; CPU:$A090 PRG:2090 A5 61 + beq TeamSpriteUpdate1_Loop5 ; CPU:$A092 PRG:2092 F0 06 + jsr BallUpdateTeamL ; CPU:$A094 PRG:2094 20 52 A5 + jmp TeamSpriteUpdate1End ; CPU:$A097 PRG:2097 4C 9D A0 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1_Loop5: + jsr BallUpdateTeamJ ; CPU:$A09A PRG:209A 20 9F A4 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1End +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1End: + jsr BallUpdateBallSpeedB ; CPU:$A09D PRG:209D 20 F2 A8 + rts ; CPU:$A0A0 PRG:20A0 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1End_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1End_Loop: + jsr BallUpdateAnimationC ; CPU:$A0A1 PRG:20A1 20 E1 A7 + lda NumberToDisplay ; CPU:$A0A4 PRG:20A4 A5 45 + beq TeamSpriteUpdate1End_Loop2 ; CPU:$A0A6 PRG:20A6 F0 04 + jsr BallSubtractSpeedB ; CPU:$A0A8 PRG:20A8 20 3C A9 + rts ; CPU:$A0AB PRG:20AB 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1End_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1End_Loop2: + jsr BallUpdateBallSpeedB ; CPU:$A0AC PRG:20AC 20 F2 A8 + rts ; CPU:$A0AF PRG:20AF 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate1End_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate1End_Loop3: + jsr BallResetForTeamC ; CPU:$A0B0 PRG:20B0 20 42 A8 + jsr BallUpdateBallSpeedB ; CPU:$A0B3 PRG:20B3 20 F2 A8 + rts ; CPU:$A0B6 PRG:20B6 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2: + lda #$00 ; CPU:$A0B7 PRG:20B7 A9 00 + sta PlayerRightInput ; CPU:$A0B9 PRG:20B9 85 76 + lda PlayerSpriteIdB ; CPU:$A0BB PRG:20BB A5 57 + beq TeamSpriteUpdate2_Loop ; CPU:$A0BD PRG:20BD F0 04 + jsr BallUpdateBallSpeedB ; CPU:$A0BF PRG:20BF 20 F2 A8 + rts ; CPU:$A0C2 PRG:20C2 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2_Loop: + ldx TeamScore1Hi ; CPU:$A0C3 PRG:20C3 A6 55 + beq TeamSpriteUpdate2_Loop2 ; CPU:$A0C5 PRG:20C5 F0 0C + dex ; CPU:$A0C7 PRG:20C7 CA + beq TeamSpriteUpdate2_Loop3 ; CPU:$A0C8 PRG:20C8 F0 10 + dex ; CPU:$A0CA PRG:20CA CA + beq TeamSpriteUpdate2_Loop4 ; CPU:$A0CB PRG:20CB F0 14 + dex ; CPU:$A0CD PRG:20CD CA + beq TeamSpriteUpdate2End_Loop ; CPU:$A0CE PRG:20CE F0 22 + dex ; CPU:$A0D0 PRG:20D0 CA + beq TeamSpriteUpdate2End_Loop3 ; CPU:$A0D1 PRG:20D1 F0 2E +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2_Loop2: + jsr TeamCheckFloorB ; CPU:$A0D3 PRG:20D3 20 39 A2 + jsr BallUpdateBallSpeedB ; CPU:$A0D6 PRG:20D6 20 F2 A8 + rts ; CPU:$A0D9 PRG:20D9 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2_Loop3: + jsr TeamResetFlagsB ; CPU:$A0DA PRG:20DA 20 C0 A2 + jsr BallUpdateBallSpeedB ; CPU:$A0DD PRG:20DD 20 F2 A8 + rts ; CPU:$A0E0 PRG:20E0 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2_Loop4: + lda Zp61 ; CPU:$A0E1 PRG:20E1 A5 61 + beq TeamSpriteUpdate2_Loop5 ; CPU:$A0E3 PRG:20E3 F0 06 + jsr BallUpdateTeamL ; CPU:$A0E5 PRG:20E5 20 52 A5 + jmp TeamSpriteUpdate2End ; CPU:$A0E8 PRG:20E8 4C EE A0 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2_Loop5: + jsr BallUpdateTeamJ ; CPU:$A0EB PRG:20EB 20 9F A4 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2End +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2End: + jsr BallUpdateBallSpeedB ; CPU:$A0EE PRG:20EE 20 F2 A8 + rts ; CPU:$A0F1 PRG:20F1 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2End_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2End_Loop: + jsr BallUpdateAnimationC ; CPU:$A0F2 PRG:20F2 20 E1 A7 + lda NumberToDisplay ; CPU:$A0F5 PRG:20F5 A5 45 + beq TeamSpriteUpdate2End_Loop2 ; CPU:$A0F7 PRG:20F7 F0 04 + jsr BallSubtractSpeedB ; CPU:$A0F9 PRG:20F9 20 3C A9 + rts ; CPU:$A0FC PRG:20FC 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2End_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2End_Loop2: + jsr BallUpdateBallSpeedB ; CPU:$A0FD PRG:20FD 20 F2 A8 + rts ; CPU:$A100 PRG:2100 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate2End_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate2End_Loop3: + jsr BallResetForTeamC ; CPU:$A101 PRG:2101 20 42 A8 + jsr BallUpdateBallSpeedB ; CPU:$A104 PRG:2104 20 F2 A8 + rts ; CPU:$A107 PRG:2107 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate3: + lda #$00 ; CPU:$A108 PRG:2108 A9 00 + sta PlayerRightInput ; CPU:$A10A PRG:210A 85 76 + lda PlayerSpriteIdB ; CPU:$A10C PRG:210C A5 57 + beq TeamSpriteUpdate3_Loop ; CPU:$A10E PRG:210E F0 04 + jsr BallUpdateBallSpeedB ; CPU:$A110 PRG:2110 20 F2 A8 + rts ; CPU:$A113 PRG:2113 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate3_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate3_Loop: + ldx TeamScore1Hi ; CPU:$A114 PRG:2114 A6 55 + beq TeamSpriteUpdate3_Loop2 ; CPU:$A116 PRG:2116 F0 0C + dex ; CPU:$A118 PRG:2118 CA + beq TeamSpriteUpdate3_Loop3 ; CPU:$A119 PRG:2119 F0 10 + dex ; CPU:$A11B PRG:211B CA + beq TeamSpriteUpdate3_Loop4 ; CPU:$A11C PRG:211C F0 14 + dex ; CPU:$A11E PRG:211E CA + beq TeamSpriteUpdate3_Loop5 ; CPU:$A11F PRG:211F F0 18 + dex ; CPU:$A121 PRG:2121 CA + beq TeamSpriteUpdate3_Loop7 ; CPU:$A122 PRG:2122 F0 24 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate3_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate3_Loop2: + jsr TeamCheckFloorB ; CPU:$A124 PRG:2124 20 39 A2 + jsr BallUpdateBallSpeedB ; CPU:$A127 PRG:2127 20 F2 A8 + rts ; CPU:$A12A PRG:212A 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate3_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate3_Loop3: + jsr TeamResetFlagsA ; CPU:$A12B PRG:212B 20 99 A2 + jsr BallUpdateBallSpeedB ; CPU:$A12E PRG:212E 20 F2 A8 + rts ; CPU:$A131 PRG:2131 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate3_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate3_Loop4: + jsr BallUpdateTeamN ; CPU:$A132 PRG:2132 20 F1 A6 + jsr BallUpdateBallSpeedB ; CPU:$A135 PRG:2135 20 F2 A8 + rts ; CPU:$A138 PRG:2138 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate3_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate3_Loop5: + jsr BallUpdateAnimationC ; CPU:$A139 PRG:2139 20 E1 A7 + lda NumberToDisplay ; CPU:$A13C PRG:213C A5 45 + beq TeamSpriteUpdate3_Loop6 ; CPU:$A13E PRG:213E F0 04 + jsr BallSubtractSpeedB ; CPU:$A140 PRG:2140 20 3C A9 + rts ; CPU:$A143 PRG:2143 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate3_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate3_Loop6: + jsr BallUpdateBallSpeedB ; CPU:$A144 PRG:2144 20 F2 A8 + rts ; CPU:$A147 PRG:2147 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate3_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate3_Loop7: + jsr BallResetForTeamC ; CPU:$A148 PRG:2148 20 42 A8 + jsr BallUpdateBallSpeedB ; CPU:$A14B PRG:214B 20 F2 A8 + rts ; CPU:$A14E PRG:214E 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate4: + lda #$00 ; CPU:$A14F PRG:214F A9 00 + sta PlayerRightInput ; CPU:$A151 PRG:2151 85 76 + lda PlayerSpriteIdB ; CPU:$A153 PRG:2153 A5 57 + beq TeamSpriteUpdate4_Loop ; CPU:$A155 PRG:2155 F0 04 + jsr BallUpdateBallSpeedB ; CPU:$A157 PRG:2157 20 F2 A8 + rts ; CPU:$A15A PRG:215A 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate4_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate4_Loop: + ldx TeamScore1Hi ; CPU:$A15B PRG:215B A6 55 + beq TeamSpriteUpdate4_Loop2 ; CPU:$A15D PRG:215D F0 0C + dex ; CPU:$A15F PRG:215F CA + beq TeamSpriteUpdate4_Loop3 ; CPU:$A160 PRG:2160 F0 10 + dex ; CPU:$A162 PRG:2162 CA + beq TeamSpriteUpdate4_Loop4 ; CPU:$A163 PRG:2163 F0 14 + dex ; CPU:$A165 PRG:2165 CA + beq TeamSpriteUpdate4_Loop5 ; CPU:$A166 PRG:2166 F0 18 + dex ; CPU:$A168 PRG:2168 CA + beq TeamSpriteUpdate4_Loop7 ; CPU:$A169 PRG:2169 F0 24 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate4_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate4_Loop2: + jsr TeamCheckFloorB ; CPU:$A16B PRG:216B 20 39 A2 + jsr BallUpdateBallSpeedB ; CPU:$A16E PRG:216E 20 F2 A8 + rts ; CPU:$A171 PRG:2171 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate4_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate4_Loop3: + jsr TeamResetFlagsA ; CPU:$A172 PRG:2172 20 99 A2 + jsr BallUpdateBallSpeedB ; CPU:$A175 PRG:2175 20 F2 A8 + rts ; CPU:$A178 PRG:2178 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate4_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate4_Loop4: + jsr BallUpdateTeamN ; CPU:$A179 PRG:2179 20 F1 A6 + jsr BallUpdateBallSpeedB ; CPU:$A17C PRG:217C 20 F2 A8 + rts ; CPU:$A17F PRG:217F 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate4_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate4_Loop5: + jsr BallUpdateAnimationC ; CPU:$A180 PRG:2180 20 E1 A7 + lda NumberToDisplay ; CPU:$A183 PRG:2183 A5 45 + beq TeamSpriteUpdate4_Loop6 ; CPU:$A185 PRG:2185 F0 04 + jsr BallSubtractSpeedB ; CPU:$A187 PRG:2187 20 3C A9 + rts ; CPU:$A18A PRG:218A 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate4_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate4_Loop6: + jsr BallUpdateBallSpeedB ; CPU:$A18B PRG:218B 20 F2 A8 + rts ; CPU:$A18E PRG:218E 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate4_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate4_Loop7: + jsr BallResetForTeamC ; CPU:$A18F PRG:218F 20 42 A8 + jsr BallUpdateBallSpeedB ; CPU:$A192 PRG:2192 20 F2 A8 + rts ; CPU:$A195 PRG:2195 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate5: + lda #$00 ; CPU:$A196 PRG:2196 A9 00 + sta PlayerRightInput ; CPU:$A198 PRG:2198 85 76 + lda PlayerSpriteIdB ; CPU:$A19A PRG:219A A5 57 + beq TeamSpriteUpdate5_Loop ; CPU:$A19C PRG:219C F0 04 + jsr BallUpdateBallSpeedB ; CPU:$A19E PRG:219E 20 F2 A8 + rts ; CPU:$A1A1 PRG:21A1 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate5_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate5_Loop: + ldx TeamScore1Hi ; CPU:$A1A2 PRG:21A2 A6 55 + beq TeamSpriteUpdate5_Loop2 ; CPU:$A1A4 PRG:21A4 F0 0C + dex ; CPU:$A1A6 PRG:21A6 CA + beq TeamSpriteUpdate5_Loop3 ; CPU:$A1A7 PRG:21A7 F0 10 + dex ; CPU:$A1A9 PRG:21A9 CA + beq TeamSpriteUpdate5_Loop4 ; CPU:$A1AA PRG:21AA F0 14 + dex ; CPU:$A1AC PRG:21AC CA + beq TeamSpriteUpdate5_Loop5 ; CPU:$A1AD PRG:21AD F0 18 + dex ; CPU:$A1AF PRG:21AF CA + beq TeamSpriteUpdate5_Loop7 ; CPU:$A1B0 PRG:21B0 F0 24 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate5_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate5_Loop2: + jsr TeamCheckFloorA ; CPU:$A1B2 PRG:21B2 20 DD A1 + jsr BallUpdateBallSpeedB ; CPU:$A1B5 PRG:21B5 20 F2 A8 + rts ; CPU:$A1B8 PRG:21B8 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate5_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate5_Loop3: + jsr TeamResetFlagsA ; CPU:$A1B9 PRG:21B9 20 99 A2 + jsr BallUpdateBallSpeedB ; CPU:$A1BC PRG:21BC 20 F2 A8 + rts ; CPU:$A1BF PRG:21BF 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate5_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate5_Loop4: + jsr BallUpdateTeamN ; CPU:$A1C0 PRG:21C0 20 F1 A6 + jsr BallUpdateBallSpeedB ; CPU:$A1C3 PRG:21C3 20 F2 A8 + rts ; CPU:$A1C6 PRG:21C6 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate5_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate5_Loop5: + jsr BallUpdateAnimationD ; CPU:$A1C7 PRG:21C7 20 16 A8 + lda NumberToDisplay ; CPU:$A1CA PRG:21CA A5 45 + beq TeamSpriteUpdate5_Loop6 ; CPU:$A1CC PRG:21CC F0 04 + jsr BallSubtractSpeedB ; CPU:$A1CE PRG:21CE 20 3C A9 + rts ; CPU:$A1D1 PRG:21D1 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate5_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate5_Loop6: + jsr BallUpdateBallSpeedB ; CPU:$A1D2 PRG:21D2 20 F2 A8 + rts ; CPU:$A1D5 PRG:21D5 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSpriteUpdate5_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSpriteUpdate5_Loop7: + jsr BallResetForTeamC ; CPU:$A1D6 PRG:21D6 20 42 A8 + jsr BallUpdateBallSpeedB ; CPU:$A1D9 PRG:21D9 20 F2 A8 + rts ; CPU:$A1DC PRG:21DC 60 +; ----------------------------------------------------------------------------- +; Routine: TeamCheckFloorA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamCheckFloorA: + lda $0543 ; CPU:$A1DD PRG:21DD AD 43 05 + cmp #$34 ; CPU:$A1E0 PRG:21E0 C9 34 + beq TeamCheckFloorA_Loop ; CPU:$A1E2 PRG:21E2 F0 11 + lda $0553 ; CPU:$A1E4 PRG:21E4 AD 53 05 + cmp #$34 ; CPU:$A1E7 PRG:21E7 C9 34 + beq TeamCheckFloorA_Loop ; CPU:$A1E9 PRG:21E9 F0 0A + lda $0563 ; CPU:$A1EB PRG:21EB AD 63 05 + cmp #$34 ; CPU:$A1EE PRG:21EE C9 34 + beq TeamCheckFloorA_Loop ; CPU:$A1F0 PRG:21F0 F0 03 + jmp TeamSetAttrA ; CPU:$A1F2 PRG:21F2 4C 05 A2 +; ----------------------------------------------------------------------------- +; Routine: TeamCheckFloorA_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamCheckFloorA_Loop: + lda BallX ; CPU:$A1F5 PRG:21F5 AD 00 05 + cmp #$80 ; CPU:$A1F8 PRG:21F8 C9 80 + bcc TeamCheckFloorA_Loop2 ; CPU:$A1FA PRG:21FA 90 04 + cmp #$F0 ; CPU:$A1FC PRG:21FC C9 F0 + bcc TeamSetAttrA ; CPU:$A1FE PRG:21FE 90 05 +; ----------------------------------------------------------------------------- +; Routine: TeamCheckFloorA_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamCheckFloorA_Loop2: + lda #$81 ; CPU:$A200 PRG:2200 A9 81 + sta PlayerRightInput ; CPU:$A202 PRG:2202 85 76 + rts ; CPU:$A204 PRG:2204 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSetAttrA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSetAttrA: + lda BallFrameCounter ; CPU:$A205 PRG:2205 AD 02 05 + cmp #$24 ; CPU:$A208 PRG:2208 C9 24 + bcs TeamStoreAttr_Loop ; CPU:$A20A PRG:220A B0 2C + lda #$80 ; CPU:$A20C PRG:220C A9 80 + sta PlayerRightInput ; CPU:$A20E PRG:220E 85 76 + lda Zp93 ; CPU:$A210 PRG:2210 A5 93 + and #$03 ; CPU:$A212 PRG:2212 29 03 + cmp #$03 ; CPU:$A214 PRG:2214 C9 03 + beq TeamSetAttrA_Loop ; CPU:$A216 PRG:2216 F0 05 + lda #$00 ; CPU:$A218 PRG:2218 A9 00 + jmp TeamSetAttrB ; CPU:$A21A PRG:221A 4C 1F A2 +; ----------------------------------------------------------------------------- +; Routine: TeamSetAttrA_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSetAttrA_Loop: + lda #$FF ; CPU:$A21D PRG:221D A9 FF +; ----------------------------------------------------------------------------- +; Routine: TeamSetAttrB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSetAttrB: + sta Zp92 ; CPU:$A21F PRG:221F 85 92 + lda FrameCounter ; CPU:$A221 PRG:2221 A5 2D + and #$06 ; CPU:$A223 PRG:2223 29 06 + cmp #$02 ; CPU:$A225 PRG:2225 C9 02 + bne TeamSetAttrB_Loop ; CPU:$A227 PRG:2227 D0 05 + lda #$08 ; CPU:$A229 PRG:2229 A9 08 + jmp TeamStoreAttr ; CPU:$A22B PRG:222B 4C 34 A2 +; ----------------------------------------------------------------------------- +; Routine: TeamSetAttrB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSetAttrB_Loop: + cmp #$06 ; CPU:$A22E PRG:222E C9 06 + bne TeamStoreAttr_Loop ; CPU:$A230 PRG:2230 D0 06 + lda #$04 ; CPU:$A232 PRG:2232 A9 04 +; ----------------------------------------------------------------------------- +; Routine: TeamStoreAttr +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamStoreAttr: + ora PlayerRightInput ; CPU:$A234 PRG:2234 05 76 + sta PlayerRightInput ; CPU:$A236 PRG:2236 85 76 +; ----------------------------------------------------------------------------- +; Routine: TeamStoreAttr_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamStoreAttr_Loop: + rts ; CPU:$A238 PRG:2238 60 +; ----------------------------------------------------------------------------- +; Routine: TeamCheckFloorB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamCheckFloorB: + lda $0543 ; CPU:$A239 PRG:2239 AD 43 05 + cmp #$34 ; CPU:$A23C PRG:223C C9 34 + beq TeamCheckFloorB_Loop ; CPU:$A23E PRG:223E F0 11 + lda $0553 ; CPU:$A240 PRG:2240 AD 53 05 + cmp #$34 ; CPU:$A243 PRG:2243 C9 34 + beq TeamCheckFloorB_Loop ; CPU:$A245 PRG:2245 F0 0A + lda $0563 ; CPU:$A247 PRG:2247 AD 63 05 + cmp #$34 ; CPU:$A24A PRG:224A C9 34 + beq TeamCheckFloorB_Loop ; CPU:$A24C PRG:224C F0 03 + jmp TeamSetAttrC ; CPU:$A24E PRG:224E 4C 61 A2 +; ----------------------------------------------------------------------------- +; Routine: TeamCheckFloorB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamCheckFloorB_Loop: + lda BallX ; CPU:$A251 PRG:2251 AD 00 05 + cmp #$80 ; CPU:$A254 PRG:2254 C9 80 + bcc TeamCheckFloorB_Loop2 ; CPU:$A256 PRG:2256 90 04 + cmp #$F0 ; CPU:$A258 PRG:2258 C9 F0 + bcc TeamSetAttrC ; CPU:$A25A PRG:225A 90 05 +; ----------------------------------------------------------------------------- +; Routine: TeamCheckFloorB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamCheckFloorB_Loop2: + lda #$81 ; CPU:$A25C PRG:225C A9 81 + sta PlayerRightInput ; CPU:$A25E PRG:225E 85 76 + rts ; CPU:$A260 PRG:2260 60 +; ----------------------------------------------------------------------------- +; Routine: TeamSetAttrC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSetAttrC: + lda BallFrameCounter ; CPU:$A261 PRG:2261 AD 02 05 + cmp #$24 ; CPU:$A264 PRG:2264 C9 24 + bcs TeamStoreAttrB_Loop ; CPU:$A266 PRG:2266 B0 30 + lda BallFlags ; CPU:$A268 PRG:2268 A5 6E + and #$08 ; CPU:$A26A PRG:226A 29 08 + bne TeamSetAttrC_Loop ; CPU:$A26C PRG:226C D0 0F + lda TeamColorA ; CPU:$A26E PRG:226E A5 58 + cmp #$B0 ; CPU:$A270 PRG:2270 C9 B0 + bcc TeamStoreAttrB_Loop ; CPU:$A272 PRG:2272 90 24 + lda TeamColorB ; CPU:$A274 PRG:2274 A5 59 + sec ; CPU:$A276 PRG:2276 38 + sbc #$2E ; CPU:$A277 PRG:2277 E9 2E + cmp #$58 ; CPU:$A279 PRG:2279 C9 58 + bcs TeamStoreAttrB_Loop ; CPU:$A27B PRG:227B B0 1B +; ----------------------------------------------------------------------------- +; Routine: TeamSetAttrC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSetAttrC_Loop: + lda #$80 ; CPU:$A27D PRG:227D A9 80 + sta PlayerRightInput ; CPU:$A27F PRG:227F 85 76 + lda FrameCounter ; CPU:$A281 PRG:2281 A5 2D + and #$06 ; CPU:$A283 PRG:2283 29 06 + cmp #$02 ; CPU:$A285 PRG:2285 C9 02 + bne TeamSetAttrC_Loop2 ; CPU:$A287 PRG:2287 D0 05 + lda #$08 ; CPU:$A289 PRG:2289 A9 08 + jmp TeamStoreAttrB ; CPU:$A28B PRG:228B 4C 94 A2 +; ----------------------------------------------------------------------------- +; Routine: TeamSetAttrC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSetAttrC_Loop2: + cmp #$06 ; CPU:$A28E PRG:228E C9 06 + bne TeamStoreAttrB_Loop ; CPU:$A290 PRG:2290 D0 06 + lda #$04 ; CPU:$A292 PRG:2292 A9 04 +; ----------------------------------------------------------------------------- +; Routine: TeamStoreAttrB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamStoreAttrB: + ora PlayerRightInput ; CPU:$A294 PRG:2294 05 76 + sta PlayerRightInput ; CPU:$A296 PRG:2296 85 76 +; ----------------------------------------------------------------------------- +; Routine: TeamStoreAttrB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamStoreAttrB_Loop: + rts ; CPU:$A298 PRG:2298 60 +; ----------------------------------------------------------------------------- +; Routine: TeamResetFlagsA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamResetFlagsA: + lda #$00 ; CPU:$A299 PRG:2299 A9 00 + sta NationStateB ; CPU:$A29B PRG:229B 85 5F + lda BallFrameCounter ; CPU:$A29D PRG:229D AD 02 05 + cmp #$24 ; CPU:$A2A0 PRG:22A0 C9 24 + bcs TeamStoreAttrC_Loop ; CPU:$A2A2 PRG:22A2 B0 1B + lda #$80 ; CPU:$A2A4 PRG:22A4 A9 80 + sta PlayerRightInput ; CPU:$A2A6 PRG:22A6 85 76 + lda FrameCounter ; CPU:$A2A8 PRG:22A8 A5 2D + and #$1C ; CPU:$A2AA PRG:22AA 29 1C + cmp #$08 ; CPU:$A2AC PRG:22AC C9 08 + bne TeamResetFlagsA_Loop ; CPU:$A2AE PRG:22AE D0 05 + lda #$08 ; CPU:$A2B0 PRG:22B0 A9 08 + jmp TeamStoreAttrC ; CPU:$A2B2 PRG:22B2 4C BB A2 +; ----------------------------------------------------------------------------- +; Routine: TeamResetFlagsA_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamResetFlagsA_Loop: + cmp #$14 ; CPU:$A2B5 PRG:22B5 C9 14 + bne TeamStoreAttrC_Loop ; CPU:$A2B7 PRG:22B7 D0 06 + lda #$04 ; CPU:$A2B9 PRG:22B9 A9 04 +; ----------------------------------------------------------------------------- +; Routine: TeamStoreAttrC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamStoreAttrC: + ora PlayerRightInput ; CPU:$A2BB PRG:22BB 05 76 + sta PlayerRightInput ; CPU:$A2BD PRG:22BD 85 76 +; ----------------------------------------------------------------------------- +; Routine: TeamStoreAttrC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamStoreAttrC_Loop: + rts ; CPU:$A2BF PRG:22BF 60 +; ----------------------------------------------------------------------------- +; Routine: TeamResetFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamResetFlagsB: + lda #$00 ; CPU:$A2C0 PRG:22C0 A9 00 + sta NationStateB ; CPU:$A2C2 PRG:22C2 85 5F + lda BallFrameCounter ; CPU:$A2C4 PRG:22C4 AD 02 05 + cmp #$24 ; CPU:$A2C7 PRG:22C7 C9 24 + bcs TeamStoreAttrD_Loop ; CPU:$A2C9 PRG:22C9 B0 3B + lda NationSlotB ; CPU:$A2CB PRG:22CB A5 5D + asl a ; CPU:$A2CD PRG:22CD 0A + asl a ; CPU:$A2CE PRG:22CE 0A + asl a ; CPU:$A2CF PRG:22CF 0A + tax ; CPU:$A2D0 PRG:22D0 AA + lda BallPositionX,x ; CPU:$A2D1 PRG:22D1 BD 0F 05 + cmp #$E9 ; CPU:$A2D4 PRG:22D4 C9 E9 + bcc TeamResetFlagsB_Loop ; CPU:$A2D6 PRG:22D6 90 0F + lda FrameCounter ; CPU:$A2D8 PRG:22D8 A5 2D + and #$10 ; CPU:$A2DA PRG:22DA 29 10 + beq TeamResetFlagsB_Loop ; CPU:$A2DC PRG:22DC F0 09 + lda #$FF ; CPU:$A2DE PRG:22DE A9 FF + sta Zp61 ; CPU:$A2E0 PRG:22E0 85 61 + lda #$40 ; CPU:$A2E2 PRG:22E2 A9 40 + jmp TeamSetFlagsC ; CPU:$A2E4 PRG:22E4 4C ED A2 +; ----------------------------------------------------------------------------- +; Routine: TeamResetFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamResetFlagsB_Loop: + lda #$00 ; CPU:$A2E7 PRG:22E7 A9 00 + sta Zp61 ; CPU:$A2E9 PRG:22E9 85 61 + lda #$80 ; CPU:$A2EB PRG:22EB A9 80 +; ----------------------------------------------------------------------------- +; Routine: TeamSetFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSetFlagsC: + sta PlayerRightInput ; CPU:$A2ED PRG:22ED 85 76 + lda FrameCounter ; CPU:$A2EF PRG:22EF A5 2D + and #$1C ; CPU:$A2F1 PRG:22F1 29 1C + cmp #$04 ; CPU:$A2F3 PRG:22F3 C9 04 + bne TeamSetFlagsC_Loop ; CPU:$A2F5 PRG:22F5 D0 05 + lda #$08 ; CPU:$A2F7 PRG:22F7 A9 08 + jmp TeamStoreAttrD ; CPU:$A2F9 PRG:22F9 4C 02 A3 +; ----------------------------------------------------------------------------- +; Routine: TeamSetFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamSetFlagsC_Loop: + cmp #$1C ; CPU:$A2FC PRG:22FC C9 1C + bne TeamStoreAttrD_Loop ; CPU:$A2FE PRG:22FE D0 06 + lda #$04 ; CPU:$A300 PRG:2300 A9 04 +; ----------------------------------------------------------------------------- +; Routine: TeamStoreAttrD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamStoreAttrD: + ora PlayerRightInput ; CPU:$A302 PRG:2302 05 76 + sta PlayerRightInput ; CPU:$A304 PRG:2304 85 76 +; ----------------------------------------------------------------------------- +; Routine: TeamStoreAttrD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +TeamStoreAttrD_Loop: + rts ; CPU:$A306 PRG:2306 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamH: + lda #$00 ; CPU:$A307 PRG:2307 A9 00 + sta NationStateB ; CPU:$A309 PRG:2309 85 5F + lda NationSlotB ; CPU:$A30B PRG:230B A5 5D + asl a ; CPU:$A30D PRG:230D 0A + asl a ; CPU:$A30E PRG:230E 0A + asl a ; CPU:$A30F PRG:230F 0A + tax ; CPU:$A310 PRG:2310 AA + lda ScoreRecord,x ; CPU:$A311 PRG:2311 BD 13 05 + cmp #$33 ; CPU:$A314 PRG:2314 C9 33 + bne BallUpdateTeamH_Loop ; CPU:$A316 PRG:2316 D0 03 + jmp BallSetTeamHFlags ; CPU:$A318 PRG:2318 4C 71 A3 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamH_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamH_Loop: + jsr BallComputeNoteIndex ; CPU:$A31B PRG:231B 20 11 9F + lda BallSpeed ; CPU:$A31E PRG:231E AD 05 05 + cmp #$80 ; CPU:$A321 PRG:2321 C9 80 + bcs BallUpdateTeamH_Loop2 ; CPU:$A323 PRG:2323 B0 01 + rts ; CPU:$A325 PRG:2325 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamH_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamH_Loop2: + lda BallPositionX,x ; CPU:$A326 PRG:2326 BD 0F 05 + clc ; CPU:$A329 PRG:2329 18 + adc #$08 ; CPU:$A32A PRG:232A 69 08 + sec ; CPU:$A32C PRG:232C 38 + sbc TeamColorA ; CPU:$A32D PRG:232D E5 58 + bcs BallUpdateTeamH_Loop3 ; CPU:$A32F PRG:232F B0 01 + rts ; CPU:$A331 PRG:2331 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamH_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamH_Loop3: + cmp #$10 ; CPU:$A332 PRG:2332 C9 10 + bcc BallUpdateTeamH_Loop4 ; CPU:$A334 PRG:2334 90 01 + rts ; CPU:$A336 PRG:2336 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamH_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamH_Loop4: + lda BallPositionY,x ; CPU:$A337 PRG:2337 BD 10 05 + clc ; CPU:$A33A PRG:233A 18 + adc #$08 ; CPU:$A33B PRG:233B 69 08 + sec ; CPU:$A33D PRG:233D 38 + sbc TeamColorB ; CPU:$A33E PRG:233E E5 59 + bcs BallUpdateTeamH_Loop5 ; CPU:$A340 PRG:2340 B0 01 + rts ; CPU:$A342 PRG:2342 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamH_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamH_Loop5: + cmp #$10 ; CPU:$A343 PRG:2343 C9 10 + bcc BallUpdateTeamH_Loop6 ; CPU:$A345 PRG:2345 90 01 + rts ; CPU:$A347 PRG:2347 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamH_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamH_Loop6: + lda NumberToDisplay ; CPU:$A348 PRG:2348 A5 45 + sec ; CPU:$A34A PRG:234A 38 + sbc #$18 ; CPU:$A34B PRG:234B E9 18 + sta SpriteOffsetIndex ; CPU:$A34D PRG:234D 85 46 + lda BallFrameCounter ; CPU:$A34F PRG:234F AD 02 05 + cmp SpriteOffsetIndex ; CPU:$A352 PRG:2352 C5 46 + bcs BallUpdateTeamH_Loop7 ; CPU:$A354 PRG:2354 B0 08 + lda BallFrameCounter ; CPU:$A356 PRG:2356 AD 02 05 + cmp #$24 ; CPU:$A359 PRG:2359 C9 24 + bcc BallStoreTeamHFlagsB_Loop2 ; CPU:$A35B PRG:235B 90 4D + rts ; CPU:$A35D PRG:235D 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamH_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamH_Loop7: + lda BallFrameCounter ; CPU:$A35E PRG:235E AD 02 05 + cmp NumberToDisplay ; CPU:$A361 PRG:2361 C5 45 + bcs BallStoreTeamHFlagsB_Loop ; CPU:$A363 PRG:2363 B0 44 + lda BallPositionX,x ; CPU:$A365 PRG:2365 BD 0F 05 + cmp #$E2 ; CPU:$A368 PRG:2368 C9 E2 + bcc BallStoreTeamHFlagsB_Loop ; CPU:$A36A PRG:236A 90 3D + lda #$41 ; CPU:$A36C PRG:236C A9 41 + sta PlayerRightInput ; CPU:$A36E PRG:236E 85 76 + rts ; CPU:$A370 PRG:2370 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamHFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamHFlags: + lda #$40 ; CPU:$A371 PRG:2371 A9 40 + sta PlayerRightInput ; CPU:$A373 PRG:2373 85 76 + lda FrameCounter ; CPU:$A375 PRG:2375 A5 2D + and #$18 ; CPU:$A377 PRG:2377 29 18 + cmp #$08 ; CPU:$A379 PRG:2379 C9 08 + bne BallSetTeamHFlags_Loop ; CPU:$A37B PRG:237B D0 05 + lda #$08 ; CPU:$A37D PRG:237D A9 08 + jmp BallStoreTeamHFlags ; CPU:$A37F PRG:237F 4C 88 A3 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamHFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamHFlags_Loop: + cmp #$18 ; CPU:$A382 PRG:2382 C9 18 + bne BallStoreTeamHFlags_Loop ; CPU:$A384 PRG:2384 D0 06 + lda #$04 ; CPU:$A386 PRG:2386 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamHFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamHFlags: + ora PlayerRightInput ; CPU:$A388 PRG:2388 05 76 + sta PlayerRightInput ; CPU:$A38A PRG:238A 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamHFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamHFlags_Loop: + lda FrameCounter ; CPU:$A38C PRG:238C A5 2D + and #$22 ; CPU:$A38E PRG:238E 29 22 + cmp #$02 ; CPU:$A390 PRG:2390 C9 02 + bne BallStoreTeamHFlags_Loop2 ; CPU:$A392 PRG:2392 D0 0B + lda PlayerRightInput ; CPU:$A394 PRG:2394 A5 76 + and #$0C ; CPU:$A396 PRG:2396 29 0C + bne BallStoreTeamHFlagsB_Loop ; CPU:$A398 PRG:2398 D0 0F + lda #$02 ; CPU:$A39A PRG:239A A9 02 + jmp BallStoreTeamHFlagsB ; CPU:$A39C PRG:239C 4C A5 A3 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamHFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamHFlags_Loop2: + cmp #$20 ; CPU:$A39F PRG:239F C9 20 + bne BallStoreTeamHFlagsB_Loop ; CPU:$A3A1 PRG:23A1 D0 06 + lda #$01 ; CPU:$A3A3 PRG:23A3 A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamHFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamHFlagsB: + ora PlayerRightInput ; CPU:$A3A5 PRG:23A5 05 76 + sta PlayerRightInput ; CPU:$A3A7 PRG:23A7 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamHFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamHFlagsB_Loop: + rts ; CPU:$A3A9 PRG:23A9 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamHFlagsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamHFlagsB_Loop2: + lda #$80 ; CPU:$A3AA PRG:23AA A9 80 + sta PlayerRightInput ; CPU:$A3AC PRG:23AC 85 76 + lda FrameCounter ; CPU:$A3AE PRG:23AE A5 2D + and #$18 ; CPU:$A3B0 PRG:23B0 29 18 + cmp #$08 ; CPU:$A3B2 PRG:23B2 C9 08 + bne BallStoreTeamHFlagsB_Loop3 ; CPU:$A3B4 PRG:23B4 D0 05 + lda #$08 ; CPU:$A3B6 PRG:23B6 A9 08 + jmp BallStoreTeamHFlagsC ; CPU:$A3B8 PRG:23B8 4C C1 A3 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamHFlagsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamHFlagsB_Loop3: + cmp #$18 ; CPU:$A3BB PRG:23BB C9 18 + bne BallStoreTeamHFlagsC_Loop ; CPU:$A3BD PRG:23BD D0 06 + lda #$04 ; CPU:$A3BF PRG:23BF A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamHFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamHFlagsC: + ora PlayerRightInput ; CPU:$A3C1 PRG:23C1 05 76 + sta PlayerRightInput ; CPU:$A3C3 PRG:23C3 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamHFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamHFlagsC_Loop: + rts ; CPU:$A3C5 PRG:23C5 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamI +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamI: + lda #$00 ; CPU:$A3C6 PRG:23C6 A9 00 + sta NationStateB ; CPU:$A3C8 PRG:23C8 85 5F + lda NationSlotB ; CPU:$A3CA PRG:23CA A5 5D + asl a ; CPU:$A3CC PRG:23CC 0A + asl a ; CPU:$A3CD PRG:23CD 0A + asl a ; CPU:$A3CE PRG:23CE 0A + tax ; CPU:$A3CF PRG:23CF AA + lda ScoreRecord,x ; CPU:$A3D0 PRG:23D0 BD 13 05 + cmp #$33 ; CPU:$A3D3 PRG:23D3 C9 33 + bne BallUpdateTeamI_Loop ; CPU:$A3D5 PRG:23D5 D0 03 + jmp BallSetTeamIFlags ; CPU:$A3D7 PRG:23D7 4C 30 A4 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamI_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamI_Loop: + jsr BallComputeNoteIndex ; CPU:$A3DA PRG:23DA 20 11 9F + lda BallSpeed ; CPU:$A3DD PRG:23DD AD 05 05 + cmp #$80 ; CPU:$A3E0 PRG:23E0 C9 80 + bcs BallUpdateTeamI_Loop2 ; CPU:$A3E2 PRG:23E2 B0 01 + rts ; CPU:$A3E4 PRG:23E4 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamI_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamI_Loop2: + lda BallPositionX,x ; CPU:$A3E5 PRG:23E5 BD 0F 05 + clc ; CPU:$A3E8 PRG:23E8 18 + adc #$08 ; CPU:$A3E9 PRG:23E9 69 08 + sec ; CPU:$A3EB PRG:23EB 38 + sbc TeamColorA ; CPU:$A3EC PRG:23EC E5 58 + bcs BallUpdateTeamI_Loop3 ; CPU:$A3EE PRG:23EE B0 01 + rts ; CPU:$A3F0 PRG:23F0 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamI_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamI_Loop3: + cmp #$10 ; CPU:$A3F1 PRG:23F1 C9 10 + bcc BallUpdateTeamI_Loop4 ; CPU:$A3F3 PRG:23F3 90 01 + rts ; CPU:$A3F5 PRG:23F5 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamI_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamI_Loop4: + lda BallPositionY,x ; CPU:$A3F6 PRG:23F6 BD 10 05 + clc ; CPU:$A3F9 PRG:23F9 18 + adc #$08 ; CPU:$A3FA PRG:23FA 69 08 + sec ; CPU:$A3FC PRG:23FC 38 + sbc TeamColorB ; CPU:$A3FD PRG:23FD E5 59 + bcs BallUpdateTeamI_Loop5 ; CPU:$A3FF PRG:23FF B0 01 + rts ; CPU:$A401 PRG:2401 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamI_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamI_Loop5: + cmp #$10 ; CPU:$A402 PRG:2402 C9 10 + bcc BallUpdateTeamI_Loop6 ; CPU:$A404 PRG:2404 90 01 + rts ; CPU:$A406 PRG:2406 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamI_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamI_Loop6: + lda NumberToDisplay ; CPU:$A407 PRG:2407 A5 45 + sec ; CPU:$A409 PRG:2409 38 + sbc #$18 ; CPU:$A40A PRG:240A E9 18 + sta SpriteOffsetIndex ; CPU:$A40C PRG:240C 85 46 + lda BallFrameCounter ; CPU:$A40E PRG:240E AD 02 05 + cmp SpriteOffsetIndex ; CPU:$A411 PRG:2411 C5 46 + bcs BallUpdateTeamI_Loop7 ; CPU:$A413 PRG:2413 B0 08 + lda BallFrameCounter ; CPU:$A415 PRG:2415 AD 02 05 + cmp #$24 ; CPU:$A418 PRG:2418 C9 24 + bcc BallStoreTeamIFlagsB_Loop2 ; CPU:$A41A PRG:241A 90 4D + rts ; CPU:$A41C PRG:241C 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamI_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamI_Loop7: + lda BallFrameCounter ; CPU:$A41D PRG:241D AD 02 05 + cmp NumberToDisplay ; CPU:$A420 PRG:2420 C5 45 + bcs BallStoreTeamIFlagsB_Loop ; CPU:$A422 PRG:2422 B0 44 + lda BallPositionX,x ; CPU:$A424 PRG:2424 BD 0F 05 + cmp #$E2 ; CPU:$A427 PRG:2427 C9 E2 + bcc BallStoreTeamIFlagsB_Loop ; CPU:$A429 PRG:2429 90 3D + lda #$42 ; CPU:$A42B PRG:242B A9 42 + sta PlayerRightInput ; CPU:$A42D PRG:242D 85 76 + rts ; CPU:$A42F PRG:242F 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamIFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamIFlags: + lda #$40 ; CPU:$A430 PRG:2430 A9 40 + sta PlayerRightInput ; CPU:$A432 PRG:2432 85 76 + lda FrameCounter ; CPU:$A434 PRG:2434 A5 2D + and #$18 ; CPU:$A436 PRG:2436 29 18 + cmp #$08 ; CPU:$A438 PRG:2438 C9 08 + bne BallSetTeamIFlags_Loop ; CPU:$A43A PRG:243A D0 05 + lda #$08 ; CPU:$A43C PRG:243C A9 08 + jmp BallStoreTeamIFlags ; CPU:$A43E PRG:243E 4C 47 A4 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamIFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamIFlags_Loop: + cmp #$18 ; CPU:$A441 PRG:2441 C9 18 + bne BallStoreTeamIFlags_Loop ; CPU:$A443 PRG:2443 D0 06 + lda #$04 ; CPU:$A445 PRG:2445 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamIFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamIFlags: + ora PlayerRightInput ; CPU:$A447 PRG:2447 05 76 + sta PlayerRightInput ; CPU:$A449 PRG:2449 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamIFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamIFlags_Loop: + lda FrameCounter ; CPU:$A44B PRG:244B A5 2D + and #$22 ; CPU:$A44D PRG:244D 29 22 + cmp #$02 ; CPU:$A44F PRG:244F C9 02 + bne BallStoreTeamIFlags_Loop2 ; CPU:$A451 PRG:2451 D0 0B + lda PlayerRightInput ; CPU:$A453 PRG:2453 A5 76 + and #$0C ; CPU:$A455 PRG:2455 29 0C + bne BallStoreTeamIFlagsB_Loop ; CPU:$A457 PRG:2457 D0 0F + lda #$02 ; CPU:$A459 PRG:2459 A9 02 + jmp BallStoreTeamIFlagsB ; CPU:$A45B PRG:245B 4C 64 A4 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamIFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamIFlags_Loop2: + cmp #$20 ; CPU:$A45E PRG:245E C9 20 + bne BallStoreTeamIFlagsB_Loop ; CPU:$A460 PRG:2460 D0 06 + lda #$01 ; CPU:$A462 PRG:2462 A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamIFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamIFlagsB: + ora PlayerRightInput ; CPU:$A464 PRG:2464 05 76 + sta PlayerRightInput ; CPU:$A466 PRG:2466 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamIFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamIFlagsB_Loop: + rts ; CPU:$A468 PRG:2468 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamIFlagsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamIFlagsB_Loop2: + lda BallPositionX,x ; CPU:$A469 PRG:2469 BD 0F 05 + cmp #$E9 ; CPU:$A46C PRG:246C C9 E9 + bcc BallStoreTeamIFlagsB_Loop3 ; CPU:$A46E PRG:246E 90 0F + lda FrameCounter ; CPU:$A470 PRG:2470 A5 2D + and #$10 ; CPU:$A472 PRG:2472 29 10 + beq BallStoreTeamIFlagsB_Loop3 ; CPU:$A474 PRG:2474 F0 09 + lda #$FF ; CPU:$A476 PRG:2476 A9 FF + sta Zp61 ; CPU:$A478 PRG:2478 85 61 + lda #$40 ; CPU:$A47A PRG:247A A9 40 + jmp BallSetTeamJFlags ; CPU:$A47C PRG:247C 4C 85 A4 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamIFlagsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamIFlagsB_Loop3: + lda #$00 ; CPU:$A47F PRG:247F A9 00 + sta Zp61 ; CPU:$A481 PRG:2481 85 61 + lda #$80 ; CPU:$A483 PRG:2483 A9 80 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamJFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamJFlags: + sta PlayerRightInput ; CPU:$A485 PRG:2485 85 76 + lda FrameCounter ; CPU:$A487 PRG:2487 A5 2D + and #$18 ; CPU:$A489 PRG:2489 29 18 + cmp #$08 ; CPU:$A48B PRG:248B C9 08 + bne BallSetTeamJFlags_Loop ; CPU:$A48D PRG:248D D0 05 + lda #$08 ; CPU:$A48F PRG:248F A9 08 + jmp BallStoreTeamJFlags ; CPU:$A491 PRG:2491 4C 9A A4 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamJFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamJFlags_Loop: + cmp #$18 ; CPU:$A494 PRG:2494 C9 18 + bne BallStoreTeamJFlags_Loop ; CPU:$A496 PRG:2496 D0 06 + lda #$04 ; CPU:$A498 PRG:2498 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamJFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamJFlags: + ora PlayerRightInput ; CPU:$A49A PRG:249A 05 76 + sta PlayerRightInput ; CPU:$A49C PRG:249C 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamJFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamJFlags_Loop: + rts ; CPU:$A49E PRG:249E 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamJ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamJ: + lda #$00 ; CPU:$A49F PRG:249F A9 00 + sta NationStateB ; CPU:$A4A1 PRG:24A1 85 5F + lda NationSlotB ; CPU:$A4A3 PRG:24A3 A5 5D + asl a ; CPU:$A4A5 PRG:24A5 0A + asl a ; CPU:$A4A6 PRG:24A6 0A + asl a ; CPU:$A4A7 PRG:24A7 0A + tax ; CPU:$A4A8 PRG:24A8 AA + lda ScoreRecord,x ; CPU:$A4A9 PRG:24A9 BD 13 05 + cmp #$33 ; CPU:$A4AC PRG:24AC C9 33 + bne BallUpdateTeamJ_Loop ; CPU:$A4AE PRG:24AE D0 03 + jmp BallSetTeamKFlags ; CPU:$A4B0 PRG:24B0 4C FD A4 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamJ_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamJ_Loop: + jsr BallComputeNoteIndex ; CPU:$A4B3 PRG:24B3 20 11 9F + lda BallSpeed ; CPU:$A4B6 PRG:24B6 AD 05 05 + cmp #$80 ; CPU:$A4B9 PRG:24B9 C9 80 + bcs BallUpdateTeamJ_Loop2 ; CPU:$A4BB PRG:24BB B0 01 + rts ; CPU:$A4BD PRG:24BD 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamJ_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamJ_Loop2: + lda BallPositionX,x ; CPU:$A4BE PRG:24BE BD 0F 05 + clc ; CPU:$A4C1 PRG:24C1 18 + adc #$08 ; CPU:$A4C2 PRG:24C2 69 08 + sec ; CPU:$A4C4 PRG:24C4 38 + sbc TeamColorA ; CPU:$A4C5 PRG:24C5 E5 58 + bcs BallUpdateTeamJ_Loop3 ; CPU:$A4C7 PRG:24C7 B0 01 + rts ; CPU:$A4C9 PRG:24C9 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamJ_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamJ_Loop3: + cmp #$10 ; CPU:$A4CA PRG:24CA C9 10 + bcc BallUpdateTeamJ_Loop4 ; CPU:$A4CC PRG:24CC 90 01 + rts ; CPU:$A4CE PRG:24CE 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamJ_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamJ_Loop4: + lda BallPositionY,x ; CPU:$A4CF PRG:24CF BD 10 05 + clc ; CPU:$A4D2 PRG:24D2 18 + adc #$08 ; CPU:$A4D3 PRG:24D3 69 08 + sec ; CPU:$A4D5 PRG:24D5 38 + sbc TeamColorB ; CPU:$A4D6 PRG:24D6 E5 59 + bcs BallUpdateTeamJ_Loop5 ; CPU:$A4D8 PRG:24D8 B0 01 + rts ; CPU:$A4DA PRG:24DA 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamJ_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamJ_Loop5: + cmp #$10 ; CPU:$A4DB PRG:24DB C9 10 + bcc BallUpdateTeamJ_Loop6 ; CPU:$A4DD PRG:24DD 90 01 + rts ; CPU:$A4DF PRG:24DF 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamJ_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamJ_Loop6: + lda NumberToDisplay ; CPU:$A4E0 PRG:24E0 A5 45 + sec ; CPU:$A4E2 PRG:24E2 38 + sbc #$18 ; CPU:$A4E3 PRG:24E3 E9 18 + sta SpriteOffsetIndex ; CPU:$A4E5 PRG:24E5 85 46 + lda BallFrameCounter ; CPU:$A4E7 PRG:24E7 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$A4EA PRG:24EA C5 46 + bcs BallUpdateTeamJ_Loop7 ; CPU:$A4EC PRG:24EC B0 08 + lda BallFrameCounter ; CPU:$A4EE PRG:24EE AD 02 05 + cmp #$18 ; CPU:$A4F1 PRG:24F1 C9 18 + bcc BallStoreTeamKFlagsB_Loop2 ; CPU:$A4F3 PRG:24F3 90 41 + rts ; CPU:$A4F5 PRG:24F5 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamJ_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamJ_Loop7: + lda BallFrameCounter ; CPU:$A4F6 PRG:24F6 AD 02 05 + cmp NumberToDisplay ; CPU:$A4F9 PRG:24F9 C5 45 + bcs BallStoreTeamKFlagsB_Loop ; CPU:$A4FB PRG:24FB B0 38 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamKFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamKFlags: + lda #$40 ; CPU:$A4FD PRG:24FD A9 40 + sta PlayerRightInput ; CPU:$A4FF PRG:24FF 85 76 + lda FrameCounter ; CPU:$A501 PRG:2501 A5 2D + and #$18 ; CPU:$A503 PRG:2503 29 18 + cmp #$08 ; CPU:$A505 PRG:2505 C9 08 + bne BallSetTeamKFlags_Loop ; CPU:$A507 PRG:2507 D0 05 + lda #$08 ; CPU:$A509 PRG:2509 A9 08 + jmp BallStoreTeamKFlags ; CPU:$A50B PRG:250B 4C 14 A5 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamKFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamKFlags_Loop: + cmp #$18 ; CPU:$A50E PRG:250E C9 18 + bne BallStoreTeamKFlags_Loop ; CPU:$A510 PRG:2510 D0 06 + lda #$04 ; CPU:$A512 PRG:2512 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamKFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamKFlags: + ora PlayerRightInput ; CPU:$A514 PRG:2514 05 76 + sta PlayerRightInput ; CPU:$A516 PRG:2516 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamKFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamKFlags_Loop: + lda FrameCounter ; CPU:$A518 PRG:2518 A5 2D + and #$22 ; CPU:$A51A PRG:251A 29 22 + cmp #$02 ; CPU:$A51C PRG:251C C9 02 + bne BallStoreTeamKFlags_Loop2 ; CPU:$A51E PRG:251E D0 0B + lda PlayerRightInput ; CPU:$A520 PRG:2520 A5 76 + and #$0C ; CPU:$A522 PRG:2522 29 0C + bne BallStoreTeamKFlagsB_Loop ; CPU:$A524 PRG:2524 D0 0F + lda #$02 ; CPU:$A526 PRG:2526 A9 02 + jmp BallStoreTeamKFlagsB ; CPU:$A528 PRG:2528 4C 31 A5 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamKFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamKFlags_Loop2: + cmp #$20 ; CPU:$A52B PRG:252B C9 20 + bne BallStoreTeamKFlagsB_Loop ; CPU:$A52D PRG:252D D0 06 + lda #$01 ; CPU:$A52F PRG:252F A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamKFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamKFlagsB: + ora PlayerRightInput ; CPU:$A531 PRG:2531 05 76 + sta PlayerRightInput ; CPU:$A533 PRG:2533 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamKFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamKFlagsB_Loop: + rts ; CPU:$A535 PRG:2535 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamKFlagsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamKFlagsB_Loop2: + lda #$80 ; CPU:$A536 PRG:2536 A9 80 + sta PlayerRightInput ; CPU:$A538 PRG:2538 85 76 + lda FrameCounter ; CPU:$A53A PRG:253A A5 2D + and #$18 ; CPU:$A53C PRG:253C 29 18 + cmp #$08 ; CPU:$A53E PRG:253E C9 08 + bne BallStoreTeamKFlagsB_Loop3 ; CPU:$A540 PRG:2540 D0 05 + lda #$08 ; CPU:$A542 PRG:2542 A9 08 + jmp BallStoreTeamKFlagsC ; CPU:$A544 PRG:2544 4C 4D A5 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamKFlagsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamKFlagsB_Loop3: + cmp #$18 ; CPU:$A547 PRG:2547 C9 18 + bne BallStoreTeamKFlagsC_Loop ; CPU:$A549 PRG:2549 D0 06 + lda #$04 ; CPU:$A54B PRG:254B A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamKFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamKFlagsC: + ora PlayerRightInput ; CPU:$A54D PRG:254D 05 76 + sta PlayerRightInput ; CPU:$A54F PRG:254F 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamKFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamKFlagsC_Loop: + rts ; CPU:$A551 PRG:2551 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamL +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamL: + lda #$00 ; CPU:$A552 PRG:2552 A9 00 + sta NationStateB ; CPU:$A554 PRG:2554 85 5F + lda NationSlotB ; CPU:$A556 PRG:2556 A5 5D + asl a ; CPU:$A558 PRG:2558 0A + asl a ; CPU:$A559 PRG:2559 0A + asl a ; CPU:$A55A PRG:255A 0A + tax ; CPU:$A55B PRG:255B AA + lda ScoreRecord,x ; CPU:$A55C PRG:255C BD 13 05 + cmp #$33 ; CPU:$A55F PRG:255F C9 33 + bne BallUpdateTeamL_Loop ; CPU:$A561 PRG:2561 D0 03 + jmp BallSetTeamLFlags ; CPU:$A563 PRG:2563 4C AD A5 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamL_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamL_Loop: + jsr BallComputeNoteIndex ; CPU:$A566 PRG:2566 20 11 9F + clc ; CPU:$A569 PRG:2569 18 + adc #$06 ; CPU:$A56A PRG:256A 69 06 + sta NumberToDisplay ; CPU:$A56C PRG:256C 85 45 + lda BallPositionX,x ; CPU:$A56E PRG:256E BD 0F 05 + clc ; CPU:$A571 PRG:2571 18 + adc #$08 ; CPU:$A572 PRG:2572 69 08 + sec ; CPU:$A574 PRG:2574 38 + sbc TeamColorA ; CPU:$A575 PRG:2575 E5 58 + bcs BallUpdateTeamL_Loop2 ; CPU:$A577 PRG:2577 B0 01 + rts ; CPU:$A579 PRG:2579 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamL_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamL_Loop2: + cmp #$10 ; CPU:$A57A PRG:257A C9 10 + bcc BallUpdateTeamL_Loop3 ; CPU:$A57C PRG:257C 90 01 + rts ; CPU:$A57E PRG:257E 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamL_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamL_Loop3: + lda BallPositionY,x ; CPU:$A57F PRG:257F BD 10 05 + clc ; CPU:$A582 PRG:2582 18 + adc #$08 ; CPU:$A583 PRG:2583 69 08 + sec ; CPU:$A585 PRG:2585 38 + sbc TeamColorB ; CPU:$A586 PRG:2586 E5 59 + bcs BallUpdateTeamL_Loop4 ; CPU:$A588 PRG:2588 B0 01 + rts ; CPU:$A58A PRG:258A 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamL_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamL_Loop4: + cmp #$10 ; CPU:$A58B PRG:258B C9 10 + bcc BallUpdateTeamL_Loop5 ; CPU:$A58D PRG:258D 90 01 + rts ; CPU:$A58F PRG:258F 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamL_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamL_Loop5: + lda NumberToDisplay ; CPU:$A590 PRG:2590 A5 45 + sec ; CPU:$A592 PRG:2592 38 + sbc #$08 ; CPU:$A593 PRG:2593 E9 08 + sta SpriteOffsetIndex ; CPU:$A595 PRG:2595 85 46 + lda BallFrameCounter ; CPU:$A597 PRG:2597 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$A59A PRG:259A C5 46 + bcs BallUpdateTeamL_Loop6 ; CPU:$A59C PRG:259C B0 08 + lda BallFrameCounter ; CPU:$A59E PRG:259E AD 02 05 + cmp #$18 ; CPU:$A5A1 PRG:25A1 C9 18 + bcc BallStoreTeamLFlagsB_Loop2 ; CPU:$A5A3 PRG:25A3 90 3B + rts ; CPU:$A5A5 PRG:25A5 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamL_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamL_Loop6: + lda BallFrameCounter ; CPU:$A5A6 PRG:25A6 AD 02 05 + cmp NumberToDisplay ; CPU:$A5A9 PRG:25A9 C5 45 + bcs BallStoreTeamLFlagsB_Loop ; CPU:$A5AB PRG:25AB B0 32 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamLFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamLFlags: + lda #$40 ; CPU:$A5AD PRG:25AD A9 40 + sta PlayerRightInput ; CPU:$A5AF PRG:25AF 85 76 + lda FrameCounter ; CPU:$A5B1 PRG:25B1 A5 2D + and #$18 ; CPU:$A5B3 PRG:25B3 29 18 + cmp #$08 ; CPU:$A5B5 PRG:25B5 C9 08 + bne BallSetTeamLFlags_Loop ; CPU:$A5B7 PRG:25B7 D0 05 + lda #$08 ; CPU:$A5B9 PRG:25B9 A9 08 + jmp BallStoreTeamLFlags ; CPU:$A5BB PRG:25BB 4C C4 A5 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamLFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamLFlags_Loop: + cmp #$18 ; CPU:$A5BE PRG:25BE C9 18 + bne BallStoreTeamLFlags_Loop ; CPU:$A5C0 PRG:25C0 D0 06 + lda #$04 ; CPU:$A5C2 PRG:25C2 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamLFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamLFlags: + ora PlayerRightInput ; CPU:$A5C4 PRG:25C4 05 76 + sta PlayerRightInput ; CPU:$A5C6 PRG:25C6 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamLFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamLFlags_Loop: + lda FrameCounter ; CPU:$A5C8 PRG:25C8 A5 2D + and #$22 ; CPU:$A5CA PRG:25CA 29 22 + cmp #$02 ; CPU:$A5CC PRG:25CC C9 02 + bne BallStoreTeamLFlags_Loop2 ; CPU:$A5CE PRG:25CE D0 05 + lda #$01 ; CPU:$A5D0 PRG:25D0 A9 01 + jmp BallStoreTeamLFlagsB ; CPU:$A5D2 PRG:25D2 4C DB A5 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamLFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamLFlags_Loop2: + cmp #$20 ; CPU:$A5D5 PRG:25D5 C9 20 + bne BallStoreTeamLFlagsB_Loop ; CPU:$A5D7 PRG:25D7 D0 06 + lda #$01 ; CPU:$A5D9 PRG:25D9 A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamLFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamLFlagsB: + ora PlayerRightInput ; CPU:$A5DB PRG:25DB 05 76 + sta PlayerRightInput ; CPU:$A5DD PRG:25DD 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamLFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamLFlagsB_Loop: + rts ; CPU:$A5DF PRG:25DF 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamLFlagsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamLFlagsB_Loop2: + lda #$80 ; CPU:$A5E0 PRG:25E0 A9 80 + sta PlayerRightInput ; CPU:$A5E2 PRG:25E2 85 76 + lda FrameCounter ; CPU:$A5E4 PRG:25E4 A5 2D + and #$18 ; CPU:$A5E6 PRG:25E6 29 18 + cmp #$08 ; CPU:$A5E8 PRG:25E8 C9 08 + bne BallStoreTeamLFlagsB_Loop3 ; CPU:$A5EA PRG:25EA D0 05 + lda #$08 ; CPU:$A5EC PRG:25EC A9 08 + jmp BallStoreTeamLFlagsC ; CPU:$A5EE PRG:25EE 4C F7 A5 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamLFlagsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamLFlagsB_Loop3: + cmp #$18 ; CPU:$A5F1 PRG:25F1 C9 18 + bne BallStoreTeamLFlagsC_Loop ; CPU:$A5F3 PRG:25F3 D0 06 + lda #$04 ; CPU:$A5F5 PRG:25F5 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamLFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamLFlagsC: + ora PlayerRightInput ; CPU:$A5F7 PRG:25F7 05 76 + sta PlayerRightInput ; CPU:$A5F9 PRG:25F9 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamLFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamLFlagsC_Loop: + rts ; CPU:$A5FB PRG:25FB 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM: + lda #$00 ; CPU:$A5FC PRG:25FC A9 00 + sta NationStateB ; CPU:$A5FE PRG:25FE 85 5F + lda NationSlotB ; CPU:$A600 PRG:2600 A5 5D + asl a ; CPU:$A602 PRG:2602 0A + asl a ; CPU:$A603 PRG:2603 0A + asl a ; CPU:$A604 PRG:2604 0A + tax ; CPU:$A605 PRG:2605 AA + lda ScoreRecord,x ; CPU:$A606 PRG:2606 BD 13 05 + cmp #$33 ; CPU:$A609 PRG:2609 C9 33 + bne BallUpdateTeamM_Loop ; CPU:$A60B PRG:260B D0 03 + jmp BallSetTeamMFlags ; CPU:$A60D PRG:260D 4C 63 A6 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM_Loop: + jsr BallComputeNoteIndex ; CPU:$A610 PRG:2610 20 11 9F + lda BallSpeed ; CPU:$A613 PRG:2613 AD 05 05 + cmp #$80 ; CPU:$A616 PRG:2616 C9 80 + bcs BallUpdateTeamM_Loop2 ; CPU:$A618 PRG:2618 B0 01 + rts ; CPU:$A61A PRG:261A 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM_Loop2: + lda BallPositionX,x ; CPU:$A61B PRG:261B BD 0F 05 + clc ; CPU:$A61E PRG:261E 18 + adc #$08 ; CPU:$A61F PRG:261F 69 08 + sec ; CPU:$A621 PRG:2621 38 + sbc TeamColorA ; CPU:$A622 PRG:2622 E5 58 + bcs BallUpdateTeamM_Loop3 ; CPU:$A624 PRG:2624 B0 01 + rts ; CPU:$A626 PRG:2626 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM_Loop3: + cmp #$10 ; CPU:$A627 PRG:2627 C9 10 + bcc BallUpdateTeamM_Loop4 ; CPU:$A629 PRG:2629 90 01 + rts ; CPU:$A62B PRG:262B 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM_Loop4: + lda BallPositionY,x ; CPU:$A62C PRG:262C BD 10 05 + clc ; CPU:$A62F PRG:262F 18 + adc #$08 ; CPU:$A630 PRG:2630 69 08 + sec ; CPU:$A632 PRG:2632 38 + sbc TeamColorB ; CPU:$A633 PRG:2633 E5 59 + bcs BallUpdateTeamM_Loop5 ; CPU:$A635 PRG:2635 B0 01 + rts ; CPU:$A637 PRG:2637 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM_Loop5: + cmp #$10 ; CPU:$A638 PRG:2638 C9 10 + bcc BallUpdateTeamM_Loop6 ; CPU:$A63A PRG:263A 90 01 + rts ; CPU:$A63C PRG:263C 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM_Loop6: + lda NumberToDisplay ; CPU:$A63D PRG:263D A5 45 + sec ; CPU:$A63F PRG:263F 38 + sbc #$18 ; CPU:$A640 PRG:2640 E9 18 + sta SpriteOffsetIndex ; CPU:$A642 PRG:2642 85 46 + lda BallFrameCounter ; CPU:$A644 PRG:2644 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$A647 PRG:2647 C5 46 + bcs BallUpdateTeamM_Loop8 ; CPU:$A649 PRG:2649 B0 0B + lda BallFrameCounter ; CPU:$A64B PRG:264B AD 02 05 + cmp #$18 ; CPU:$A64E PRG:264E C9 18 + bcs BallUpdateTeamM_Loop7 ; CPU:$A650 PRG:2650 B0 03 + jmp BallSetCommonFlagsD ; CPU:$A652 PRG:2652 4C D5 A6 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM_Loop7: + rts ; CPU:$A655 PRG:2655 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM_Loop8: + lda BallFrameCounter ; CPU:$A656 PRG:2656 AD 02 05 + cmp NumberToDisplay ; CPU:$A659 PRG:2659 C5 45 + bcc BallUpdateTeamM_Loop9 ; CPU:$A65B PRG:265B 90 01 + rts ; CPU:$A65D PRG:265D 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamM_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamM_Loop9: + lda #$40 ; CPU:$A65E PRG:265E A9 40 + sta PlayerRightInput ; CPU:$A660 PRG:2660 85 76 + rts ; CPU:$A662 PRG:2662 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamMFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamMFlags: + lda #$40 ; CPU:$A663 PRG:2663 A9 40 + sta PlayerRightInput ; CPU:$A665 PRG:2665 85 76 + lda FrameCounter ; CPU:$A667 PRG:2667 A5 2D + and #$18 ; CPU:$A669 PRG:2669 29 18 + sta NumberToDisplay ; CPU:$A66B PRG:266B 85 45 + lda BallY ; CPU:$A66D PRG:266D AD 01 05 + cmp #$49 ; CPU:$A670 PRG:2670 C9 49 + bcc BallSetTeamMFlags_Loop ; CPU:$A672 PRG:2672 90 07 + cmp #$68 ; CPU:$A674 PRG:2674 C9 68 + bcs BallStoreTeamMFlags_Loop ; CPU:$A676 PRG:2676 B0 1B + jmp BallSetTeamMFlagsC ; CPU:$A678 PRG:2678 4C AB A6 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamMFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamMFlags_Loop: + lda NumberToDisplay ; CPU:$A67B PRG:267B A5 45 + cmp #$08 ; CPU:$A67D PRG:267D C9 08 + bne BallSetTeamMFlags_Loop2 ; CPU:$A67F PRG:267F D0 05 + lda #$08 ; CPU:$A681 PRG:2681 A9 08 + jmp BallStoreTeamMFlags ; CPU:$A683 PRG:2683 4C 8C A6 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamMFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamMFlags_Loop2: + cmp #$18 ; CPU:$A686 PRG:2686 C9 18 + beq BallSetCommonFlagsC ; CPU:$A688 PRG:2688 F0 35 + lda #$04 ; CPU:$A68A PRG:268A A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamMFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamMFlags: + ora PlayerRightInput ; CPU:$A68C PRG:268C 05 76 + sta PlayerRightInput ; CPU:$A68E PRG:268E 85 76 + jmp BallSetCommonFlagsC ; CPU:$A690 PRG:2690 4C BF A6 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamMFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamMFlags_Loop: + lda NumberToDisplay ; CPU:$A693 PRG:2693 A5 45 + cmp #$08 ; CPU:$A695 PRG:2695 C9 08 + bne BallStoreTeamMFlags_Loop2 ; CPU:$A697 PRG:2697 D0 05 + lda #$04 ; CPU:$A699 PRG:2699 A9 04 + jmp BallStoreTeamMFlagsB ; CPU:$A69B PRG:269B 4C A4 A6 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamMFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamMFlags_Loop2: + cmp #$18 ; CPU:$A69E PRG:269E C9 18 + beq BallSetCommonFlagsC ; CPU:$A6A0 PRG:26A0 F0 1D + lda #$08 ; CPU:$A6A2 PRG:26A2 A9 08 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamMFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamMFlagsB: + ora PlayerRightInput ; CPU:$A6A4 PRG:26A4 05 76 + sta PlayerRightInput ; CPU:$A6A6 PRG:26A6 85 76 + jmp BallSetCommonFlagsC ; CPU:$A6A8 PRG:26A8 4C BF A6 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamMFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamMFlagsC: + lda FrameCounter ; CPU:$A6AB PRG:26AB A5 2D + and #$10 ; CPU:$A6AD PRG:26AD 29 10 + beq BallSetTeamMFlagsC_Loop ; CPU:$A6AF PRG:26AF F0 05 + lda #$08 ; CPU:$A6B1 PRG:26B1 A9 08 + jmp BallStoreTeamMFlagsC ; CPU:$A6B3 PRG:26B3 4C B8 A6 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamMFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamMFlagsC_Loop: + lda #$04 ; CPU:$A6B6 PRG:26B6 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamMFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamMFlagsC: + ora PlayerRightInput ; CPU:$A6B8 PRG:26B8 05 76 + sta PlayerRightInput ; CPU:$A6BA PRG:26BA 85 76 + jmp BallSetCommonFlagsC ; CPU:$A6BC PRG:26BC 4C BF A6 +; ----------------------------------------------------------------------------- +; Routine: BallSetCommonFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetCommonFlagsC: + lda FrameCounter ; CPU:$A6BF PRG:26BF A5 2D + and #$22 ; CPU:$A6C1 PRG:26C1 29 22 + beq BallStoreCommonFlagsC_Loop ; CPU:$A6C3 PRG:26C3 F0 0F + cmp #$22 ; CPU:$A6C5 PRG:26C5 C9 22 + bne BallSetCommonFlagsC_Loop ; CPU:$A6C7 PRG:26C7 D0 05 + lda #$01 ; CPU:$A6C9 PRG:26C9 A9 01 + jmp BallStoreCommonFlagsC ; CPU:$A6CB PRG:26CB 4C D0 A6 +; ----------------------------------------------------------------------------- +; Routine: BallSetCommonFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetCommonFlagsC_Loop: + lda #$01 ; CPU:$A6CE PRG:26CE A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreCommonFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreCommonFlagsC: + ora PlayerRightInput ; CPU:$A6D0 PRG:26D0 05 76 + sta PlayerRightInput ; CPU:$A6D2 PRG:26D2 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreCommonFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreCommonFlagsC_Loop: + rts ; CPU:$A6D4 PRG:26D4 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetCommonFlagsD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetCommonFlagsD: + lda #$80 ; CPU:$A6D5 PRG:26D5 A9 80 + sta PlayerRightInput ; CPU:$A6D7 PRG:26D7 85 76 + lda FrameCounter ; CPU:$A6D9 PRG:26D9 A5 2D + and #$18 ; CPU:$A6DB PRG:26DB 29 18 + cmp #$08 ; CPU:$A6DD PRG:26DD C9 08 + bne BallSetCommonFlagsD_Loop ; CPU:$A6DF PRG:26DF D0 05 + lda #$08 ; CPU:$A6E1 PRG:26E1 A9 08 + jmp BallStoreCommonFlagsD ; CPU:$A6E3 PRG:26E3 4C EC A6 +; ----------------------------------------------------------------------------- +; Routine: BallSetCommonFlagsD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetCommonFlagsD_Loop: + cmp #$18 ; CPU:$A6E6 PRG:26E6 C9 18 + bne BallStoreCommonFlagsD_Loop ; CPU:$A6E8 PRG:26E8 D0 06 + lda #$04 ; CPU:$A6EA PRG:26EA A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreCommonFlagsD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreCommonFlagsD: + ora PlayerRightInput ; CPU:$A6EC PRG:26EC 05 76 + sta PlayerRightInput ; CPU:$A6EE PRG:26EE 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreCommonFlagsD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreCommonFlagsD_Loop: + rts ; CPU:$A6F0 PRG:26F0 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN: + lda #$00 ; CPU:$A6F1 PRG:26F1 A9 00 + sta NationStateB ; CPU:$A6F3 PRG:26F3 85 5F + lda NationSlotB ; CPU:$A6F5 PRG:26F5 A5 5D + asl a ; CPU:$A6F7 PRG:26F7 0A + asl a ; CPU:$A6F8 PRG:26F8 0A + asl a ; CPU:$A6F9 PRG:26F9 0A + tax ; CPU:$A6FA PRG:26FA AA + lda ScoreRecord,x ; CPU:$A6FB PRG:26FB BD 13 05 + cmp #$33 ; CPU:$A6FE PRG:26FE C9 33 + bne BallUpdateTeamN_Loop ; CPU:$A700 PRG:2700 D0 03 + jmp BallSetTeamNFlags ; CPU:$A702 PRG:2702 4C 8C A7 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN_Loop: + lda TeamNumber ; CPU:$A705 PRG:2705 A5 66 + and #$70 ; CPU:$A707 PRG:2707 29 70 + lsr a ; CPU:$A709 PRG:2709 4A + lsr a ; CPU:$A70A PRG:270A 4A + lsr a ; CPU:$A70B PRG:270B 4A + lsr a ; CPU:$A70C PRG:270C 4A + cmp #$07 ; CPU:$A70D PRG:270D C9 07 + beq BallUpdateTeamN_Loop2 ; CPU:$A70F PRG:270F F0 0A + cmp #$06 ; CPU:$A711 PRG:2711 C9 06 + beq BallUpdateTeamN_Loop3 ; CPU:$A713 PRG:2713 F0 0C + jsr BallComputeNoteIndexD ; CPU:$A715 PRG:2715 20 77 9F + jmp BallUpdateTeamN2 ; CPU:$A718 PRG:2718 4C 24 A7 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN_Loop2: + jsr BallComputeNoteIndexB ; CPU:$A71B PRG:271B 20 2D 9F + jmp BallUpdateTeamN2 ; CPU:$A71E PRG:271E 4C 24 A7 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN_Loop3: + jsr BallComputeNoteIndexC ; CPU:$A721 PRG:2721 20 52 9F +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN2: + jsr BallComputeNoteIndex ; CPU:$A724 PRG:2724 20 11 9F + lda BallSpeed ; CPU:$A727 PRG:2727 AD 05 05 + cmp #$80 ; CPU:$A72A PRG:272A C9 80 + bcs BallUpdateTeamN2_Loop ; CPU:$A72C PRG:272C B0 01 + rts ; CPU:$A72E PRG:272E 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN2_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN2_Loop: + lda BallPositionX,x ; CPU:$A72F PRG:272F BD 0F 05 + clc ; CPU:$A732 PRG:2732 18 + adc #$08 ; CPU:$A733 PRG:2733 69 08 + sec ; CPU:$A735 PRG:2735 38 + sbc TeamColorA ; CPU:$A736 PRG:2736 E5 58 + bcs BallUpdateTeamN2_Loop2 ; CPU:$A738 PRG:2738 B0 01 + rts ; CPU:$A73A PRG:273A 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN2_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN2_Loop2: + cmp #$10 ; CPU:$A73B PRG:273B C9 10 + bcc BallUpdateTeamN2_Loop3 ; CPU:$A73D PRG:273D 90 01 + rts ; CPU:$A73F PRG:273F 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN2_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN2_Loop3: + lda BallPositionY,x ; CPU:$A740 PRG:2740 BD 10 05 + clc ; CPU:$A743 PRG:2743 18 + adc #$08 ; CPU:$A744 PRG:2744 69 08 + sec ; CPU:$A746 PRG:2746 38 + sbc TeamColorB ; CPU:$A747 PRG:2747 E5 59 + bcs BallUpdateTeamN2_Loop4 ; CPU:$A749 PRG:2749 B0 01 + rts ; CPU:$A74B PRG:274B 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN2_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN2_Loop4: + cmp #$10 ; CPU:$A74C PRG:274C C9 10 + bcc BallUpdateTeamN2_Loop5 ; CPU:$A74E PRG:274E 90 01 + rts ; CPU:$A750 PRG:2750 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN2_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN2_Loop5: + lda TeamNumber ; CPU:$A751 PRG:2751 A5 66 + and #$70 ; CPU:$A753 PRG:2753 29 70 + lsr a ; CPU:$A755 PRG:2755 4A + lsr a ; CPU:$A756 PRG:2756 4A + lsr a ; CPU:$A757 PRG:2757 4A + lsr a ; CPU:$A758 PRG:2758 4A + cmp #$07 ; CPU:$A759 PRG:2759 C9 07 + bne BallUpdateTeamN2_Loop6 ; CPU:$A75B PRG:275B D0 07 + lda BallFrameCounter ; CPU:$A75D PRG:275D AD 02 05 + cmp #$88 ; CPU:$A760 PRG:2760 C9 88 + bcc BallStoreTeamNFlagsB_Loop2 ; CPU:$A762 PRG:2762 90 61 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN2_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN2_Loop6: + cmp #$06 ; CPU:$A764 PRG:2764 C9 06 + bne BallUpdateTeamN2_Loop7 ; CPU:$A766 PRG:2766 D0 07 + lda BallFrameCounter ; CPU:$A768 PRG:2768 AD 02 05 + cmp #$80 ; CPU:$A76B PRG:276B C9 80 + bcc BallStoreTeamNFlagsB_Loop2 ; CPU:$A76D PRG:276D 90 56 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN2_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN2_Loop7: + lda NumberToDisplay ; CPU:$A76F PRG:276F A5 45 + sec ; CPU:$A771 PRG:2771 38 + sbc #$18 ; CPU:$A772 PRG:2772 E9 18 + sta SpriteOffsetIndex ; CPU:$A774 PRG:2774 85 46 + lda BallFrameCounter ; CPU:$A776 PRG:2776 AD 02 05 + cmp SpriteOffsetIndex ; CPU:$A779 PRG:2779 C5 46 + bcs BallUpdateTeamN2_Loop8 ; CPU:$A77B PRG:277B B0 08 + lda BallFrameCounter ; CPU:$A77D PRG:277D AD 02 05 + cmp #$18 ; CPU:$A780 PRG:2780 C9 18 + bcc BallStoreTeamNFlagsB_Loop2 ; CPU:$A782 PRG:2782 90 41 + rts ; CPU:$A784 PRG:2784 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateTeamN2_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateTeamN2_Loop8: + lda BallFrameCounter ; CPU:$A785 PRG:2785 AD 02 05 + cmp NumberToDisplay ; CPU:$A788 PRG:2788 C5 45 + bcs BallStoreTeamNFlagsB_Loop ; CPU:$A78A PRG:278A B0 38 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamNFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamNFlags: + lda #$40 ; CPU:$A78C PRG:278C A9 40 + sta PlayerRightInput ; CPU:$A78E PRG:278E 85 76 + lda FrameCounter ; CPU:$A790 PRG:2790 A5 2D + and #$18 ; CPU:$A792 PRG:2792 29 18 + cmp #$08 ; CPU:$A794 PRG:2794 C9 08 + bne BallSetTeamNFlags_Loop ; CPU:$A796 PRG:2796 D0 05 + lda #$08 ; CPU:$A798 PRG:2798 A9 08 + jmp BallStoreTeamNFlags ; CPU:$A79A PRG:279A 4C A3 A7 +; ----------------------------------------------------------------------------- +; Routine: BallSetTeamNFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetTeamNFlags_Loop: + cmp #$18 ; CPU:$A79D PRG:279D C9 18 + bne BallStoreTeamNFlags_Loop ; CPU:$A79F PRG:279F D0 06 + lda #$04 ; CPU:$A7A1 PRG:27A1 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNFlags: + ora PlayerRightInput ; CPU:$A7A3 PRG:27A3 05 76 + sta PlayerRightInput ; CPU:$A7A5 PRG:27A5 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNFlags_Loop: + lda FrameCounter ; CPU:$A7A7 PRG:27A7 A5 2D + and #$22 ; CPU:$A7A9 PRG:27A9 29 22 + cmp #$02 ; CPU:$A7AB PRG:27AB C9 02 + bne BallStoreTeamNFlags_Loop2 ; CPU:$A7AD PRG:27AD D0 0B + lda PlayerRightInput ; CPU:$A7AF PRG:27AF A5 76 + and #$0C ; CPU:$A7B1 PRG:27B1 29 0C + bne BallStoreTeamNFlagsB_Loop ; CPU:$A7B3 PRG:27B3 D0 0F + lda #$02 ; CPU:$A7B5 PRG:27B5 A9 02 + jmp BallStoreTeamNFlagsB ; CPU:$A7B7 PRG:27B7 4C C0 A7 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNFlags_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNFlags_Loop2: + cmp #$20 ; CPU:$A7BA PRG:27BA C9 20 + bne BallStoreTeamNFlagsB_Loop ; CPU:$A7BC PRG:27BC D0 06 + lda #$01 ; CPU:$A7BE PRG:27BE A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNFlagsB: + ora PlayerRightInput ; CPU:$A7C0 PRG:27C0 05 76 + sta PlayerRightInput ; CPU:$A7C2 PRG:27C2 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNFlagsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNFlagsB_Loop: + rts ; CPU:$A7C4 PRG:27C4 60 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNFlagsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNFlagsB_Loop2: + lda #$80 ; CPU:$A7C5 PRG:27C5 A9 80 + sta PlayerRightInput ; CPU:$A7C7 PRG:27C7 85 76 + lda FrameCounter ; CPU:$A7C9 PRG:27C9 A5 2D + and #$18 ; CPU:$A7CB PRG:27CB 29 18 + cmp #$08 ; CPU:$A7CD PRG:27CD C9 08 + bne BallStoreTeamNFlagsB_Loop3 ; CPU:$A7CF PRG:27CF D0 05 + lda #$08 ; CPU:$A7D1 PRG:27D1 A9 08 + jmp BallStoreTeamNFlagsC ; CPU:$A7D3 PRG:27D3 4C DC A7 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNFlagsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNFlagsB_Loop3: + cmp #$18 ; CPU:$A7D6 PRG:27D6 C9 18 + bne BallStoreTeamNFlagsC_Loop ; CPU:$A7D8 PRG:27D8 D0 06 + lda #$04 ; CPU:$A7DA PRG:27DA A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNFlagsC: + ora PlayerRightInput ; CPU:$A7DC PRG:27DC 05 76 + sta PlayerRightInput ; CPU:$A7DE PRG:27DE 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNFlagsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNFlagsC_Loop: + rts ; CPU:$A7E0 PRG:27E0 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationC: + lda NationStateB ; CPU:$A7E1 PRG:27E1 A5 5F + beq BallUpdateAnimationC_Loop ; CPU:$A7E3 PRG:27E3 F0 09 + cmp #$01 ; CPU:$A7E5 PRG:27E5 C9 01 + beq BallUpdateAnimationC_Loop2 ; CPU:$A7E7 PRG:27E7 F0 0C + lda #$FF ; CPU:$A7E9 PRG:27E9 A9 FF + sta NumberToDisplay ; CPU:$A7EB PRG:27EB 85 45 + rts ; CPU:$A7ED PRG:27ED 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationC_Loop: + lda #$80 ; CPU:$A7EE PRG:27EE A9 80 + sta PlayerRightInput ; CPU:$A7F0 PRG:27F0 85 76 + jmp BallClearNumberC ; CPU:$A7F2 PRG:27F2 4C 11 A8 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationC_Loop2: + lda FrameCounter ; CPU:$A7F5 PRG:27F5 A5 2D + and #$0C ; CPU:$A7F7 PRG:27F7 29 0C + cmp #$04 ; CPU:$A7F9 PRG:27F9 C9 04 + bne BallUpdateAnimationC_Loop3 ; CPU:$A7FB PRG:27FB D0 05 + lda #$40 ; CPU:$A7FD PRG:27FD A9 40 + jmp BallStoreAnimFlagsC ; CPU:$A7FF PRG:27FF 4C 0F A8 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationC_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationC_Loop3: + cmp #$0C ; CPU:$A802 PRG:2802 C9 0C + bne BallUpdateAnimationC_Loop4 ; CPU:$A804 PRG:2804 D0 07 + lda #$02 ; CPU:$A806 PRG:2806 A9 02 + sta NationStateB ; CPU:$A808 PRG:2808 85 5F + jmp BallClearNumberC ; CPU:$A80A PRG:280A 4C 11 A8 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationC_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationC_Loop4: + lda #$41 ; CPU:$A80D PRG:280D A9 41 +; ----------------------------------------------------------------------------- +; Routine: BallStoreAnimFlagsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreAnimFlagsC: + sta PlayerRightInput ; CPU:$A80F PRG:280F 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallClearNumberC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallClearNumberC: + lda #$00 ; CPU:$A811 PRG:2811 A9 00 + sta NumberToDisplay ; CPU:$A813 PRG:2813 85 45 + rts ; CPU:$A815 PRG:2815 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationD: + lda NationStateB ; CPU:$A816 PRG:2816 A5 5F + beq BallUpdateAnimationD_Loop ; CPU:$A818 PRG:2818 F0 09 + cmp #$01 ; CPU:$A81A PRG:281A C9 01 + beq BallUpdateAnimationD_Loop2 ; CPU:$A81C PRG:281C F0 0C + lda #$FF ; CPU:$A81E PRG:281E A9 FF + sta NumberToDisplay ; CPU:$A820 PRG:2820 85 45 + rts ; CPU:$A822 PRG:2822 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationD_Loop: + lda #$80 ; CPU:$A823 PRG:2823 A9 80 + sta PlayerRightInput ; CPU:$A825 PRG:2825 85 76 + jmp BallClearNumberD ; CPU:$A827 PRG:2827 4C 3D A8 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationD_Loop2: + lda FrameCounter ; CPU:$A82A PRG:282A A5 2D + and #$0C ; CPU:$A82C PRG:282C 29 0C + cmp #$0C ; CPU:$A82E PRG:282E C9 0C + beq BallUpdateAnimationD_Loop3 ; CPU:$A830 PRG:2830 F0 07 + lda #$02 ; CPU:$A832 PRG:2832 A9 02 + sta NationStateB ; CPU:$A834 PRG:2834 85 5F + jmp BallClearNumberD ; CPU:$A836 PRG:2836 4C 3D A8 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateAnimationD_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateAnimationD_Loop3: + lda #$41 ; CPU:$A839 PRG:2839 A9 41 + sta PlayerRightInput ; CPU:$A83B PRG:283B 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallClearNumberD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallClearNumberD: + lda #$00 ; CPU:$A83D PRG:283D A9 00 + sta NumberToDisplay ; CPU:$A83F PRG:283F 85 45 + rts ; CPU:$A841 PRG:2841 60 +; ----------------------------------------------------------------------------- +; Routine: BallResetForTeamC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallResetForTeamC: + lda #$00 ; CPU:$A842 PRG:2842 A9 00 + sta NationStateB ; CPU:$A844 PRG:2844 85 5F + sta NationStateA ; CPU:$A846 PRG:2846 85 5E + lda TeamId ; CPU:$A848 PRG:2848 A5 70 + beq BallResetForTeamC_Loop ; CPU:$A84A PRG:284A F0 03 + jmp BallCheckFloorC ; CPU:$A84C PRG:284C 4C 5C A8 +; ----------------------------------------------------------------------------- +; Routine: BallResetForTeamC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallResetForTeamC_Loop: + lda #$00 ; CPU:$A84F PRG:284F A9 00 + sta PlayerSpriteIdB ; CPU:$A851 PRG:2851 85 57 + lda #$80 ; CPU:$A853 PRG:2853 A9 80 + sta PlayerRightPressed ; CPU:$A855 PRG:2855 85 78 + lda #$80 ; CPU:$A857 PRG:2857 A9 80 + sta PlayerRightInput ; CPU:$A859 PRG:2859 85 76 + rts ; CPU:$A85B PRG:285B 60 +; ----------------------------------------------------------------------------- +; Routine: BallCheckFloorC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckFloorC: + lda BallFrameCounter ; CPU:$A85C PRG:285C AD 02 05 + cmp #$20 ; CPU:$A85F PRG:285F C9 20 + bcs BallStoreFlagsI_Loop ; CPU:$A861 PRG:2861 B0 26 + lda BallSpeed ; CPU:$A863 PRG:2863 AD 05 05 + cmp #$80 ; CPU:$A866 PRG:2866 C9 80 + bcc BallStoreFlagsI_Loop ; CPU:$A868 PRG:2868 90 1F + lda #$80 ; CPU:$A86A PRG:286A A9 80 + sta PlayerRightPressed ; CPU:$A86C PRG:286C 85 78 + lda #$80 ; CPU:$A86E PRG:286E A9 80 + sta PlayerRightInput ; CPU:$A870 PRG:2870 85 76 + lda FrameCounter ; CPU:$A872 PRG:2872 A5 2D + and #$18 ; CPU:$A874 PRG:2874 29 18 + cmp #$08 ; CPU:$A876 PRG:2876 C9 08 + bne BallCheckFloorC_Loop ; CPU:$A878 PRG:2878 D0 05 + lda #$08 ; CPU:$A87A PRG:287A A9 08 + jmp BallStoreFlagsI ; CPU:$A87C PRG:287C 4C 85 A8 +; ----------------------------------------------------------------------------- +; Routine: BallCheckFloorC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckFloorC_Loop: + cmp #$18 ; CPU:$A87F PRG:287F C9 18 + bne BallStoreFlagsI_Loop ; CPU:$A881 PRG:2881 D0 06 + lda #$04 ; CPU:$A883 PRG:2883 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsI +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsI: + ora PlayerRightInput ; CPU:$A885 PRG:2885 05 76 + sta PlayerRightInput ; CPU:$A887 PRG:2887 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsI_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsI_Loop: + rts ; CPU:$A889 PRG:2889 60 +; ----------------------------------------------------------------------------- +; Routine: BallResetForTeamD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallResetForTeamD: + lda #$00 ; CPU:$A88A PRG:288A A9 00 + sta NationStateB ; CPU:$A88C PRG:288C 85 5F + sta NationStateA ; CPU:$A88E PRG:288E 85 5E + lda TeamId ; CPU:$A890 PRG:2890 A5 70 + beq BallResetForTeamD_Loop ; CPU:$A892 PRG:2892 F0 03 + jmp BallComputeSpeedD ; CPU:$A894 PRG:2894 4C A4 A8 +; ----------------------------------------------------------------------------- +; Routine: BallResetForTeamD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallResetForTeamD_Loop: + lda #$00 ; CPU:$A897 PRG:2897 A9 00 + sta PlayerSpriteIdB ; CPU:$A899 PRG:2899 85 57 + lda #$80 ; CPU:$A89B PRG:289B A9 80 + sta PlayerRightPressed ; CPU:$A89D PRG:289D 85 78 + lda #$80 ; CPU:$A89F PRG:289F A9 80 + sta PlayerRightInput ; CPU:$A8A1 PRG:28A1 85 76 + rts ; CPU:$A8A3 PRG:28A3 60 +; ----------------------------------------------------------------------------- +; Routine: BallComputeSpeedD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeSpeedD: + lda FrameCounter ; CPU:$A8A4 PRG:28A4 A5 2D + and #$1F ; CPU:$A8A6 PRG:28A6 29 1F + clc ; CPU:$A8A8 PRG:28A8 18 + adc #$10 ; CPU:$A8A9 PRG:28A9 69 10 + sta NumberToDisplay ; CPU:$A8AB PRG:28AB 85 45 + lda BallFrameCounter ; CPU:$A8AD PRG:28AD AD 02 05 + cmp NumberToDisplay ; CPU:$A8B0 PRG:28B0 C5 45 + bcs BallStoreFlagsJ_Loop ; CPU:$A8B2 PRG:28B2 B0 26 + lda BallSpeed ; CPU:$A8B4 PRG:28B4 AD 05 05 + cmp #$80 ; CPU:$A8B7 PRG:28B7 C9 80 + bcc BallStoreFlagsJ_Loop ; CPU:$A8B9 PRG:28B9 90 1F + lda #$80 ; CPU:$A8BB PRG:28BB A9 80 + sta PlayerRightPressed ; CPU:$A8BD PRG:28BD 85 78 + lda #$80 ; CPU:$A8BF PRG:28BF A9 80 + sta PlayerRightInput ; CPU:$A8C1 PRG:28C1 85 76 + lda FrameCounter ; CPU:$A8C3 PRG:28C3 A5 2D + and #$18 ; CPU:$A8C5 PRG:28C5 29 18 + cmp #$08 ; CPU:$A8C7 PRG:28C7 C9 08 + bne BallComputeSpeedD_Loop ; CPU:$A8C9 PRG:28C9 D0 05 + lda #$08 ; CPU:$A8CB PRG:28CB A9 08 + jmp BallStoreFlagsJ ; CPU:$A8CD PRG:28CD 4C D6 A8 +; ----------------------------------------------------------------------------- +; Routine: BallComputeSpeedD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallComputeSpeedD_Loop: + cmp #$18 ; CPU:$A8D0 PRG:28D0 C9 18 + bne BallStoreFlagsJ_Loop ; CPU:$A8D2 PRG:28D2 D0 06 + lda #$04 ; CPU:$A8D4 PRG:28D4 A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsJ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsJ: + ora PlayerRightInput ; CPU:$A8D6 PRG:28D6 05 76 + sta PlayerRightInput ; CPU:$A8D8 PRG:28D8 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsJ_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsJ_Loop: + lda FrameCounter ; CPU:$A8DA PRG:28DA A5 2D + and #$06 ; CPU:$A8DC PRG:28DC 29 06 + cmp #$02 ; CPU:$A8DE PRG:28DE C9 02 + bne BallStoreFlagsJ_Loop2 ; CPU:$A8E0 PRG:28E0 D0 05 + lda #$02 ; CPU:$A8E2 PRG:28E2 A9 02 + jmp BallStoreFlagsJ2 ; CPU:$A8E4 PRG:28E4 4C ED A8 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsJ_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsJ_Loop2: + cmp #$06 ; CPU:$A8E7 PRG:28E7 C9 06 + bne BallStoreFlagsJ2_Loop ; CPU:$A8E9 PRG:28E9 D0 06 + lda #$02 ; CPU:$A8EB PRG:28EB A9 02 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsJ2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsJ2: + ora PlayerRightInput ; CPU:$A8ED PRG:28ED 05 76 + sta PlayerRightInput ; CPU:$A8EF PRG:28EF 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreFlagsJ2_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreFlagsJ2_Loop: + rts ; CPU:$A8F1 PRG:28F1 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateBallSpeedB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateBallSpeedB: + lda PlayerRightInput ; CPU:$A8F2 PRG:28F2 A5 76 + bne BallStoreBallSpeedB_Loop ; CPU:$A8F4 PRG:28F4 D0 45 + lda Zp8A ; CPU:$A8F6 PRG:28F6 A5 8A + beq BallUpdateBallSpeedB_Loop ; CPU:$A8F8 PRG:28F8 F0 03 + dec Zp8A ; CPU:$A8FA PRG:28FA C6 8A + rts ; CPU:$A8FC PRG:28FC 60 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateBallSpeedB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateBallSpeedB_Loop: + lda NationSlotB ; CPU:$A8FD PRG:28FD A5 5D + asl a ; CPU:$A8FF PRG:28FF 0A + asl a ; CPU:$A900 PRG:2900 0A + asl a ; CPU:$A901 PRG:2901 0A + tax ; CPU:$A902 PRG:2902 AA + lda TeamColorA ; CPU:$A903 PRG:2903 A5 58 + clc ; CPU:$A905 PRG:2905 18 + adc #$02 ; CPU:$A906 PRG:2906 69 02 + sec ; CPU:$A908 PRG:2908 38 + sbc BallPositionX,x ; CPU:$A909 PRG:2909 FD 0F 05 + bcc BallUpdateBallSpeedB_Loop2 ; CPU:$A90C PRG:290C 90 0B + cmp #$04 ; CPU:$A90E PRG:290E C9 04 + bcc BallSetBallSpeedB_Loop ; CPU:$A910 PRG:2910 90 0D + lda PlayerRightInput ; CPU:$A912 PRG:2912 A5 76 + ora #$01 ; CPU:$A914 PRG:2914 09 01 + jmp BallSetBallSpeedB ; CPU:$A916 PRG:2916 4C 1D A9 +; ----------------------------------------------------------------------------- +; Routine: BallUpdateBallSpeedB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallUpdateBallSpeedB_Loop2: + lda PlayerRightInput ; CPU:$A919 PRG:2919 A5 76 + ora #$02 ; CPU:$A91B PRG:291B 09 02 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallSpeedB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallSpeedB: + sta PlayerRightInput ; CPU:$A91D PRG:291D 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallSpeedB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallSpeedB_Loop: + lda TeamColorB ; CPU:$A91F PRG:291F A5 59 + clc ; CPU:$A921 PRG:2921 18 + adc #$02 ; CPU:$A922 PRG:2922 69 02 + sec ; CPU:$A924 PRG:2924 38 + sbc BallPositionY,x ; CPU:$A925 PRG:2925 FD 10 05 + bcc BallSetBallSpeedB_Loop2 ; CPU:$A928 PRG:2928 90 0B + cmp #$04 ; CPU:$A92A PRG:292A C9 04 + bcc BallStoreBallSpeedB_Loop ; CPU:$A92C PRG:292C 90 0D + lda PlayerRightInput ; CPU:$A92E PRG:292E A5 76 + ora #$04 ; CPU:$A930 PRG:2930 09 04 + jmp BallStoreBallSpeedB ; CPU:$A932 PRG:2932 4C 39 A9 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallSpeedB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallSpeedB_Loop2: + lda PlayerRightInput ; CPU:$A935 PRG:2935 A5 76 + ora #$08 ; CPU:$A937 PRG:2937 09 08 +; ----------------------------------------------------------------------------- +; Routine: BallStoreBallSpeedB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreBallSpeedB: + sta PlayerRightInput ; CPU:$A939 PRG:2939 85 76 +; ----------------------------------------------------------------------------- +; Routine: BallStoreBallSpeedB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreBallSpeedB_Loop: + rts ; CPU:$A93B PRG:293B 60 +; ----------------------------------------------------------------------------- +; Routine: BallSubtractSpeedB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSubtractSpeedB: + lda $0552 ; CPU:$A93C PRG:293C AD 52 05 + sec ; CPU:$A93F PRG:293F 38 + sbc TeamColorB ; CPU:$A940 PRG:2940 E5 59 + bcc BallSubtractSpeedB_Loop2 ; CPU:$A942 PRG:2942 90 0A + cmp #$03 ; CPU:$A944 PRG:2944 C9 03 + bcs BallSubtractSpeedB_Loop ; CPU:$A946 PRG:2946 B0 01 + rts ; CPU:$A948 PRG:2948 60 +; ----------------------------------------------------------------------------- +; Routine: BallSubtractSpeedB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSubtractSpeedB_Loop: + lda #$08 ; CPU:$A949 PRG:2949 A9 08 + jmp BallStoreSpeedB ; CPU:$A94B PRG:294B 4C 50 A9 +; ----------------------------------------------------------------------------- +; Routine: BallSubtractSpeedB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSubtractSpeedB_Loop2: + lda #$04 ; CPU:$A94E PRG:294E A9 04 +; ----------------------------------------------------------------------------- +; Routine: BallStoreSpeedB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreSpeedB: + sta PlayerRightInput ; CPU:$A950 PRG:2950 85 76 + rts ; CPU:$A952 PRG:2952 60 +; ----------------------------------------------------------------------------- +; Routine: BallCheckFloorD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckFloorD: + lda BallFrameCounter ; CPU:$A953 PRG:2953 AD 02 05 + cmp #$28 ; CPU:$A956 PRG:2956 C9 28 + bcc BallSetPosition_Loop ; CPU:$A958 PRG:2958 90 1B + lda BallX ; CPU:$A95A PRG:295A AD 00 05 + cmp #$80 ; CPU:$A95D PRG:295D C9 80 + bcs BallCheckFloorD_Loop ; CPU:$A95F PRG:295F B0 0A + lda BallPreviousY ; CPU:$A961 PRG:2961 AD 07 05 + and #$FC ; CPU:$A964 PRG:2964 29 FC + ora #$01 ; CPU:$A966 PRG:2966 09 01 + jmp BallSetPosition ; CPU:$A968 PRG:2968 4C 72 A9 +; ----------------------------------------------------------------------------- +; Routine: BallCheckFloorD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckFloorD_Loop: + lda BallPreviousY ; CPU:$A96B PRG:296B AD 07 05 + and #$FC ; CPU:$A96E PRG:296E 29 FC + ora #$02 ; CPU:$A970 PRG:2970 09 02 +; ----------------------------------------------------------------------------- +; Routine: BallSetPosition +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetPosition: + sta BallPreviousY ; CPU:$A972 PRG:2972 8D 07 05 +; ----------------------------------------------------------------------------- +; Routine: BallSetPosition_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetPosition_Loop: + lda BallFrameCounter ; CPU:$A975 PRG:2975 AD 02 05 + bne BallAdvancePosition ; CPU:$A978 PRG:2978 D0 6C + lda BallSpeed ; CPU:$A97A PRG:297A AD 05 05 + cmp #$80 ; CPU:$A97D PRG:297D C9 80 + bcc BallAdvancePosition ; CPU:$A97F PRG:297F 90 65 + lda BallPreviousX ; CPU:$A981 PRG:2981 AD 08 05 + beq BallSetFlagsK_Loop ; CPU:$A984 PRG:2984 F0 56 + dec BallPreviousX ; CPU:$A986 PRG:2986 CE 08 05 + lda BallPreviousX ; CPU:$A989 PRG:2989 AD 08 05 + sta BallSpeed ; CPU:$A98C PRG:298C 8D 05 05 + lda #$00 ; CPU:$A98F PRG:298F A9 00 + sta TeamId ; CPU:$A991 PRG:2991 85 70 + lda #$02 ; CPU:$A993 PRG:2993 A9 02 + sta MusicPlayingFlag ; CPU:$A995 PRG:2995 85 EE + lda BallX ; CPU:$A997 PRG:2997 AD 00 05 + clc ; CPU:$A99A PRG:299A 18 + adc #$80 ; CPU:$A99B PRG:299B 69 80 + sta NumberToDisplay ; CPU:$A99D PRG:299D 85 45 + cmp #$2E ; CPU:$A99F PRG:299F C9 2E + bcc BallSetPosition_Loop4 ; CPU:$A9A1 PRG:29A1 90 30 + cmp #$D3 ; CPU:$A9A3 PRG:29A3 C9 D3 + bcs BallSetPosition_Loop4 ; CPU:$A9A5 PRG:29A5 B0 2C + lda BallY ; CPU:$A9A7 PRG:29A7 AD 01 05 + cmp #$30 ; CPU:$A9AA PRG:29AA C9 30 + bcc BallSetPosition_Loop4 ; CPU:$A9AC PRG:29AC 90 25 + cmp #$86 ; CPU:$A9AE PRG:29AE C9 86 + bcs BallSetPosition_Loop4 ; CPU:$A9B0 PRG:29B0 B0 21 + lda NumberToDisplay ; CPU:$A9B2 PRG:29B2 A5 45 + asl a ; CPU:$A9B4 PRG:29B4 0A + bcs BallSetPosition_Loop2 ; CPU:$A9B5 PRG:29B5 B0 0E + lda BallPreviousY ; CPU:$A9B7 PRG:29B7 AD 07 05 + and #$03 ; CPU:$A9BA PRG:29BA 29 03 + cmp #$02 ; CPU:$A9BC PRG:29BC C9 02 + bne BallSetPosition_Loop3 ; CPU:$A9BE PRG:29BE D0 0E +; ----------------------------------------------------------------------------- +; Routine: BallSetPosition_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetPosition_OnNonzero: + lda #$02 ; CPU:$A9C0 PRG:29C0 A9 02 + jmp BallSetFlagsK ; CPU:$A9C2 PRG:29C2 4C D5 A9 +; ----------------------------------------------------------------------------- +; Routine: BallSetPosition_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetPosition_Loop2: + lda BallPreviousY ; CPU:$A9C5 PRG:29C5 AD 07 05 + and #$03 ; CPU:$A9C8 PRG:29C8 29 03 + cmp #$01 ; CPU:$A9CA PRG:29CA C9 01 + bne BallSetPosition_OnNonzero ; CPU:$A9CC PRG:29CC D0 F2 +; ----------------------------------------------------------------------------- +; Routine: BallSetPosition_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetPosition_Loop3: + lda #$01 ; CPU:$A9CE PRG:29CE A9 01 + jmp BallSetFlagsK ; CPU:$A9D0 PRG:29D0 4C D5 A9 +; ----------------------------------------------------------------------------- +; Routine: BallSetPosition_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetPosition_Loop4: + lda #$03 ; CPU:$A9D3 PRG:29D3 A9 03 +; ----------------------------------------------------------------------------- +; Routine: BallSetFlagsK +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetFlagsK: + ora BallFlags ; CPU:$A9D5 PRG:29D5 05 6E + sta BallFlags ; CPU:$A9D7 PRG:29D7 85 6E + jmp BallSetSpeed ; CPU:$A9D9 PRG:29D9 4C E1 A9 +; ----------------------------------------------------------------------------- +; Routine: BallSetFlagsK_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetFlagsK_Loop: + lda #$00 ; CPU:$A9DC PRG:29DC A9 00 + sta BallSpeed ; CPU:$A9DE PRG:29DE 8D 05 05 +; ----------------------------------------------------------------------------- +; Routine: BallSetSpeed +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetSpeed: + lda #$08 ; CPU:$A9E1 PRG:29E1 A9 08 + sta BallCountdown ; CPU:$A9E3 PRG:29E3 8D 06 05 +; ----------------------------------------------------------------------------- +; Routine: BallAdvancePosition +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAdvancePosition: + lda BallX ; CPU:$A9E6 PRG:29E6 AD 00 05 + clc ; CPU:$A9E9 PRG:29E9 18 + adc #$02 ; CPU:$A9EA PRG:29EA 69 02 + cmp #$05 ; CPU:$A9EC PRG:29EC C9 05 + bcc BallAdvancePosition_Loop ; CPU:$A9EE PRG:29EE 90 03 + jmp BallSelectTeamSlot ; CPU:$A9F0 PRG:29F0 4C 00 AB +; ----------------------------------------------------------------------------- +; Routine: BallAdvancePosition_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAdvancePosition_Loop: + lda BallY ; CPU:$A9F3 PRG:29F3 AD 01 05 + sec ; CPU:$A9F6 PRG:29F6 38 + sbc #$30 ; CPU:$A9F7 PRG:29F7 E9 30 + cmp #$51 ; CPU:$A9F9 PRG:29F9 C9 51 + bcc BallAdvancePosition_Loop2 ; CPU:$A9FB PRG:29FB 90 03 + jmp BallSetFlagsL ; CPU:$A9FD PRG:29FD 4C 1B AA +; ----------------------------------------------------------------------------- +; Routine: BallAdvancePosition_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAdvancePosition_Loop2: + lda BallFrameCounter ; CPU:$AA00 PRG:2A00 AD 02 05 + cmp #$10 ; CPU:$AA03 PRG:2A03 C9 10 + bcs BallAdvancePosition_Loop3 ; CPU:$AA05 PRG:2A05 B0 03 + jmp BallSelectTeamSlot ; CPU:$AA07 PRG:2A07 4C 00 AB +; ----------------------------------------------------------------------------- +; Routine: BallAdvancePosition_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAdvancePosition_Loop3: + cmp #$28 ; CPU:$AA0A PRG:2A0A C9 28 + bcs BallAdvancePosition_Loop4 ; CPU:$AA0C PRG:2A0C B0 03 + jmp BallStartSoundB ; CPU:$AA0E PRG:2A0E 4C AE AA +; ----------------------------------------------------------------------------- +; Routine: BallAdvancePosition_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAdvancePosition_Loop4: + cmp #$2D ; CPU:$AA11 PRG:2A11 C9 2D + bcc BallAdvancePosition_Loop5 ; CPU:$AA13 PRG:2A13 90 03 + jmp BallSelectTeamSlot ; CPU:$AA15 PRG:2A15 4C 00 AB +; ----------------------------------------------------------------------------- +; Routine: BallAdvancePosition_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAdvancePosition_Loop5: + jmp BallStartSound ; CPU:$AA18 PRG:2A18 4C 24 AA +; ----------------------------------------------------------------------------- +; Routine: BallSetFlagsL +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetFlagsL: + lda BallFlags ; CPU:$AA1B PRG:2A1B A5 6E + ora #$03 ; CPU:$AA1D PRG:2A1D 09 03 + sta BallFlags ; CPU:$AA1F PRG:2A1F 85 6E + jmp BallSelectTeamSlot ; CPU:$AA21 PRG:2A21 4C 00 AB +; ----------------------------------------------------------------------------- +; Routine: BallStartSound +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartSound: + lda #$08 ; CPU:$AA24 PRG:2A24 A9 08 + sta SfxCommand ; CPU:$AA26 PRG:2A26 85 EF + lda BallPreviousX ; CPU:$AA28 PRG:2A28 AD 08 05 + sec ; CPU:$AA2B PRG:2A2B 38 + sbc #$02 ; CPU:$AA2C PRG:2A2C E9 02 + sta BallSpeed ; CPU:$AA2E PRG:2A2E 8D 05 05 + lda BallVelocityX ; CPU:$AA31 PRG:2A31 AD 03 05 + cmp #$80 ; CPU:$AA34 PRG:2A34 C9 80 + bcs BallStartSound_Loop2 ; CPU:$AA36 PRG:2A36 B0 1A + cmp #$03 ; CPU:$AA38 PRG:2A38 C9 03 + bcc BallStartSound_Loop ; CPU:$AA3A PRG:2A3A 90 09 + dec BallVelocityX ; CPU:$AA3C PRG:2A3C CE 03 05 + dec BallVelocityX ; CPU:$AA3F PRG:2A3F CE 03 05 + jmp BallCheckTeam ; CPU:$AA42 PRG:2A42 4C 6D AA +; ----------------------------------------------------------------------------- +; Routine: BallStartSound_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartSound_Loop: + lda #$00 ; CPU:$AA45 PRG:2A45 A9 00 + sta BallVelocityX ; CPU:$AA47 PRG:2A47 8D 03 05 + lda #$40 ; CPU:$AA4A PRG:2A4A A9 40 + sta BallTargetX ; CPU:$AA4C PRG:2A4C 8D 0B 05 + jmp BallCheckTeam ; CPU:$AA4F PRG:2A4F 4C 6D AA +; ----------------------------------------------------------------------------- +; Routine: BallStartSound_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartSound_Loop2: + cmp #$80 ; CPU:$AA52 PRG:2A52 C9 80 + beq BallCheckTeam ; CPU:$AA54 PRG:2A54 F0 17 + lda #$FE ; CPU:$AA56 PRG:2A56 A9 FE + bcs BallStartSound_Loop3 ; CPU:$AA58 PRG:2A58 B0 09 + inc BallVelocityX ; CPU:$AA5A PRG:2A5A EE 03 05 + inc BallVelocityX ; CPU:$AA5D PRG:2A5D EE 03 05 + jmp BallCheckTeam ; CPU:$AA60 PRG:2A60 4C 6D AA +; ----------------------------------------------------------------------------- +; Routine: BallStartSound_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartSound_Loop3: + lda #$80 ; CPU:$AA63 PRG:2A63 A9 80 + sta BallVelocityX ; CPU:$AA65 PRG:2A65 8D 03 05 + lda #$40 ; CPU:$AA68 PRG:2A68 A9 40 + sta BallTargetX ; CPU:$AA6A PRG:2A6A 8D 0B 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckTeam +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckTeam: + lda TeamId ; CPU:$AA6D PRG:2A6D A5 70 + cmp #$02 ; CPU:$AA6F PRG:2A6F C9 02 + bne BallCheckTeam_Loop ; CPU:$AA71 PRG:2A71 D0 06 + lda BallFlags ; CPU:$AA73 PRG:2A73 A5 6E + ora #$03 ; CPU:$AA75 PRG:2A75 09 03 + sta BallFlags ; CPU:$AA77 PRG:2A77 85 6E +; ----------------------------------------------------------------------------- +; Routine: BallCheckTeam_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckTeam_Loop: + jsr GetCrowdSpriteY ; CPU:$AA79 PRG:2A79 20 B1 C7 + jsr DrawNumberSpriteH ; CPU:$AA7C PRG:2A7C 20 04 C9 + lda ColorIndex ; CPU:$AA7F PRG:2A7F A5 47 + asl a ; CPU:$AA81 PRG:2A81 0A + bcc BallCheckTeam_Loop2 ; CPU:$AA82 PRG:2A82 90 12 + jsr DrawNumberSpriteM ; CPU:$AA84 PRG:2A84 20 CE C9 + lda #$00 ; CPU:$AA87 PRG:2A87 A9 00 + sta TeamScore1Hi ; CPU:$AA89 PRG:2A89 85 55 + lda #$15 ; CPU:$AA8B PRG:2A8B A9 15 + sta CrowdFlagsA ; CPU:$AA8D PRG:2A8D 85 50 + lda #$03 ; CPU:$AA8F PRG:2A8F A9 03 + sta TeamScore1Lo ; CPU:$AA91 PRG:2A91 85 54 + jmp BallFinishHit ; CPU:$AA93 PRG:2A93 4C A5 AA +; ----------------------------------------------------------------------------- +; Routine: BallCheckTeam_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckTeam_Loop2: + jsr CheckCrowdOffset ; CPU:$AA96 PRG:2A96 20 3B C9 + lda #$00 ; CPU:$AA99 PRG:2A99 A9 00 + sta TeamScore1Lo ; CPU:$AA9B PRG:2A9B 85 54 + lda #$15 ; CPU:$AA9D PRG:2A9D A9 15 + sta CrowdFlagsB ; CPU:$AA9F PRG:2A9F 85 51 + lda #$03 ; CPU:$AAA1 PRG:2AA1 A9 03 + sta TeamScore1Hi ; CPU:$AAA3 PRG:2AA3 85 55 +; ----------------------------------------------------------------------------- +; Routine: BallFinishHit +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFinishHit: + jsr DrawNumberSpriteV ; CPU:$AAA5 PRG:2AA5 20 5B CB + jsr ClearTeamSpriteFlags ; CPU:$AAA8 PRG:2AA8 20 89 CB + jmp BallSelectTeamSlot ; CPU:$AAAB PRG:2AAB 4C 00 AB +; ----------------------------------------------------------------------------- +; Routine: BallStartSoundB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartSoundB: + lda #$04 ; CPU:$AAAE PRG:2AAE A9 04 + sta SfxCommand ; CPU:$AAB0 PRG:2AB0 85 EF + lda BallVelocityX ; CPU:$AAB2 PRG:2AB2 AD 03 05 + beq BallStoreNumber_Loop ; CPU:$AAB5 PRG:2AB5 F0 3F + lda BallVelocityX ; CPU:$AAB7 PRG:2AB7 AD 03 05 + cmp #$80 ; CPU:$AABA PRG:2ABA C9 80 + bne BallStartSoundB_Loop ; CPU:$AABC PRG:2ABC D0 0A +; ----------------------------------------------------------------------------- +; Routine: BallStartSoundB_OnCarrySet +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartSoundB_OnCarrySet: + lda #$40 ; CPU:$AABE PRG:2ABE A9 40 + sta BallTargetX ; CPU:$AAC0 PRG:2AC0 8D 0B 05 + lda #$00 ; CPU:$AAC3 PRG:2AC3 A9 00 + jmp BallStoreNumber ; CPU:$AAC5 PRG:2AC5 4C F0 AA +; ----------------------------------------------------------------------------- +; Routine: BallStartSoundB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartSoundB_Loop: + lda BallVelocityX ; CPU:$AAC8 PRG:2AC8 AD 03 05 + asl a ; CPU:$AACB PRG:2ACB 0A + bcs BallStartSoundB_Loop2 ; CPU:$AACC PRG:2ACC B0 0D + lda BallVelocityX ; CPU:$AACE PRG:2ACE AD 03 05 + cmp #$02 ; CPU:$AAD1 PRG:2AD1 C9 02 + bcc BallStoreNumber_Loop ; CPU:$AAD3 PRG:2AD3 90 21 + sec ; CPU:$AAD5 PRG:2AD5 38 + sbc #$01 ; CPU:$AAD6 PRG:2AD6 E9 01 + jmp BallDecreaseNumber ; CPU:$AAD8 PRG:2AD8 4C EB AA +; ----------------------------------------------------------------------------- +; Routine: BallStartSoundB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartSoundB_Loop2: + lda BallVelocityX ; CPU:$AADB PRG:2ADB AD 03 05 + cmp #$FE ; CPU:$AADE PRG:2ADE C9 FE + bcs BallStartSoundB_OnCarrySet ; CPU:$AAE0 PRG:2AE0 B0 DC + clc ; CPU:$AAE2 PRG:2AE2 18 + adc #$01 ; CPU:$AAE3 PRG:2AE3 69 01 + sta BallVelocityX ; CPU:$AAE5 PRG:2AE5 8D 03 05 + jmp BallDecreaseNumber ; CPU:$AAE8 PRG:2AE8 4C EB AA +; ----------------------------------------------------------------------------- +; Routine: BallDecreaseNumber +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallDecreaseNumber: + eor #$FF ; CPU:$AAEB PRG:2AEB 49 FF + clc ; CPU:$AAED PRG:2AED 18 + adc #$01 ; CPU:$AAEE PRG:2AEE 69 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumber +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumber: + sta BallVelocityX ; CPU:$AAF0 PRG:2AF0 8D 03 05 + jmp BallSelectTeamSlot ; CPU:$AAF3 PRG:2AF3 4C 00 AB +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumber_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumber_Loop: + lda #$80 ; CPU:$AAF6 PRG:2AF6 A9 80 + sta BallTargetX ; CPU:$AAF8 PRG:2AF8 8D 0B 05 + lda #$80 ; CPU:$AAFB PRG:2AFB A9 80 + jmp BallStoreNumber ; CPU:$AAFD PRG:2AFD 4C F0 AA +; ----------------------------------------------------------------------------- +; Routine: BallSelectTeamSlot +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSelectTeamSlot: + lda PlayerSlotIndex ; CPU:$AB00 PRG:2B00 A5 8B + cmp #$04 ; CPU:$AB02 PRG:2B02 C9 04 + bcs BallSelectTeamSlot_Loop ; CPU:$AB04 PRG:2B04 B0 06 + lda PlayerSlotIndex2 ; CPU:$AB06 PRG:2B06 A5 8C + cmp #$04 ; CPU:$AB08 PRG:2B08 C9 04 + bcc BallSelectTeamSlot_Loop2 ; CPU:$AB0A PRG:2B0A 90 06 +; ----------------------------------------------------------------------------- +; Routine: BallSelectTeamSlot_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSelectTeamSlot_Loop: + lda BallFlags ; CPU:$AB0C PRG:2B0C A5 6E + ora #$03 ; CPU:$AB0E PRG:2B0E 09 03 + sta BallFlags ; CPU:$AB10 PRG:2B10 85 6E +; ----------------------------------------------------------------------------- +; Routine: BallSelectTeamSlot_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSelectTeamSlot_Loop2: + rts ; CPU:$AB12 PRG:2B12 60 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButton +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButton: + lda PlayerLeftPressed ; CPU:$AB13 PRG:2B13 A5 77 + and #$80 ; CPU:$AB15 PRG:2B15 29 80 + bne BallHandlePlayerButton_Loop ; CPU:$AB17 PRG:2B17 D0 03 + jmp BallFrameDone3 ; CPU:$AB19 PRG:2B19 4C CE AB +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButton_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButton_Loop: + lda TeamId ; CPU:$AB1C PRG:2B1C A5 70 + bne BallHandlePlayerButton_Loop2 ; CPU:$AB1E PRG:2B1E D0 0D + lda #$03 ; CPU:$AB20 PRG:2B20 A9 03 + sta BallSpeed ; CPU:$AB22 PRG:2B22 8D 05 05 + sta BallPreviousX ; CPU:$AB25 PRG:2B25 8D 08 05 + inc TeamId ; CPU:$AB28 PRG:2B28 E6 70 + jmp BallFrameDone3 ; CPU:$AB2A PRG:2B2A 4C CE AB +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButton_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButton_Loop2: + lda PlayerLeftInput ; CPU:$AB2D PRG:2B2D A5 75 + and #$02 ; CPU:$AB2F PRG:2B2F 29 02 + beq BallHandlePlayerButton_Loop3 ; CPU:$AB31 PRG:2B31 F0 07 + ldx #$28 ; CPU:$AB33 PRG:2B33 A2 28 + lda #$FE ; CPU:$AB35 PRG:2B35 A9 FE + jmp BallStorePlayerState ; CPU:$AB37 PRG:2B37 4C 4B AB +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButton_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButton_Loop3: + lda PlayerLeftInput ; CPU:$AB3A PRG:2B3A A5 75 + and #$01 ; CPU:$AB3C PRG:2B3C 29 01 + beq BallHandlePlayerButton_Loop4 ; CPU:$AB3E PRG:2B3E F0 07 + ldx #$C0 ; CPU:$AB40 PRG:2B40 A2 C0 + lda #$FF ; CPU:$AB42 PRG:2B42 A9 FF + jmp BallStorePlayerState ; CPU:$AB44 PRG:2B44 4C 4B AB +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButton_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButton_Loop4: + ldx #$00 ; CPU:$AB47 PRG:2B47 A2 00 + lda #$FE ; CPU:$AB49 PRG:2B49 A9 FE +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerState: + stx BallTargetX ; CPU:$AB4B PRG:2B4B 8E 0B 05 + sta BallVelocityX ; CPU:$AB4E PRG:2B4E 8D 03 05 + lda PlayerLeftInput ; CPU:$AB51 PRG:2B51 A5 75 + and #$04 ; CPU:$AB53 PRG:2B53 29 04 + beq BallStorePlayerState_Loop ; CPU:$AB55 PRG:2B55 F0 07 + ldx #$C0 ; CPU:$AB57 PRG:2B57 A2 C0 + lda #$00 ; CPU:$AB59 PRG:2B59 A9 00 + jmp BallStorePlayerStateB ; CPU:$AB5B PRG:2B5B 4C 6F AB +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerState_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerState_Loop: + lda PlayerLeftInput ; CPU:$AB5E PRG:2B5E A5 75 + and #$08 ; CPU:$AB60 PRG:2B60 29 08 + beq BallStorePlayerState_Loop2 ; CPU:$AB62 PRG:2B62 F0 07 + ldx #$00 ; CPU:$AB64 PRG:2B64 A2 00 + lda #$00 ; CPU:$AB66 PRG:2B66 A9 00 + jmp BallStorePlayerStateB ; CPU:$AB68 PRG:2B68 4C 6F AB +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerState_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerState_Loop2: + ldx #$80 ; CPU:$AB6B PRG:2B6B A2 80 + lda #$00 ; CPU:$AB6D PRG:2B6D A9 00 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateB: + stx BallTargetY ; CPU:$AB6F PRG:2B6F 8E 0C 05 + sta BallVelocityY ; CPU:$AB72 PRG:2B72 8D 04 05 + lda #$04 ; CPU:$AB75 PRG:2B75 A9 04 + sta BallSpeed ; CPU:$AB77 PRG:2B77 8D 05 05 + sta BallPreviousX ; CPU:$AB7A PRG:2B7A 8D 08 05 + lda #$15 ; CPU:$AB7D PRG:2B7D A9 15 + sta $053B ; CPU:$AB7F PRG:2B7F 8D 3B 05 + lda #$00 ; CPU:$AB82 PRG:2B82 A9 00 + sta $053C ; CPU:$AB84 PRG:2B84 8D 3C 05 + lda FrameCounter ; CPU:$AB87 PRG:2B87 A5 2D + and #$0E ; CPU:$AB89 PRG:2B89 29 0E + lsr a ; CPU:$AB8B PRG:2B8B 4A + clc ; CPU:$AB8C PRG:2B8C 18 + adc #$01 ; CPU:$AB8D PRG:2B8D 69 01 + sta BallCountdown ; CPU:$AB8F PRG:2B8F 8D 06 05 + lda #$08 ; CPU:$AB92 PRG:2B92 A9 08 + sta MusicPlayingFlag ; CPU:$AB94 PRG:2B94 85 EE + lda $053E ; CPU:$AB96 PRG:2B96 AD 3E 05 + ora #$01 ; CPU:$AB99 PRG:2B99 09 01 + sta $053E ; CPU:$AB9B PRG:2B9B 8D 3E 05 + lda BallFlags ; CPU:$AB9E PRG:2B9E A5 6E + ora #$04 ; CPU:$ABA0 PRG:2BA0 09 04 + sta BallFlags ; CPU:$ABA2 PRG:2BA2 85 6E + lda #$00 ; CPU:$ABA4 PRG:2BA4 A9 00 + sta PlayerSlotIndex2 ; CPU:$ABA6 PRG:2BA6 85 8C + sta PlayerSlotIndex ; CPU:$ABA8 PRG:2BA8 85 8B + jsr GetCrowdSpriteY ; CPU:$ABAA PRG:2BAA 20 B1 C7 + jsr DrawNumberSpriteH ; CPU:$ABAD PRG:2BAD 20 04 C9 + jsr DrawNumberSpriteM ; CPU:$ABB0 PRG:2BB0 20 CE C9 + jsr ClearTeamSpriteFlags ; CPU:$ABB3 PRG:2BB3 20 89 CB + lda #$00 ; CPU:$ABB6 PRG:2BB6 A9 00 + sta TeamScore1Hi ; CPU:$ABB8 PRG:2BB8 85 55 + lda #$03 ; CPU:$ABBA PRG:2BBA A9 03 + sta TeamScore1Lo ; CPU:$ABBC PRG:2BBC 85 54 + lda #$15 ; CPU:$ABBE PRG:2BBE A9 15 + sta CrowdFlagsA ; CPU:$ABC0 PRG:2BC0 85 50 + lda #$3C ; CPU:$ABC2 PRG:2BC2 A9 3C + sta $0539 ; CPU:$ABC4 PRG:2BC4 8D 39 05 + lda #$3A ; CPU:$ABC7 PRG:2BC7 A9 3A + sta $053A ; CPU:$ABC9 PRG:2BC9 8D 3A 05 + inc TeamId ; CPU:$ABCC PRG:2BCC E6 70 +; ----------------------------------------------------------------------------- +; Routine: BallFrameDone3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFrameDone3: + rts ; CPU:$ABCE PRG:2BCE 60 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonB: + lda PlayerRightPressed ; CPU:$ABCF PRG:2BCF A5 78 + and #$80 ; CPU:$ABD1 PRG:2BD1 29 80 + bne BallHandlePlayerButtonB_Loop ; CPU:$ABD3 PRG:2BD3 D0 03 + jmp BallFrameDone4 ; CPU:$ABD5 PRG:2BD5 4C 8A AC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonB_Loop: + lda TeamId ; CPU:$ABD8 PRG:2BD8 A5 70 + bne BallHandlePlayerButtonB_Loop2 ; CPU:$ABDA PRG:2BDA D0 0D + lda #$03 ; CPU:$ABDC PRG:2BDC A9 03 + sta BallSpeed ; CPU:$ABDE PRG:2BDE 8D 05 05 + sta BallPreviousX ; CPU:$ABE1 PRG:2BE1 8D 08 05 + inc TeamId ; CPU:$ABE4 PRG:2BE4 E6 70 + jmp BallFrameDone4 ; CPU:$ABE6 PRG:2BE6 4C 8A AC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonB_Loop2: + lda PlayerRightInput ; CPU:$ABE9 PRG:2BE9 A5 76 + and #$02 ; CPU:$ABEB PRG:2BEB 29 02 + beq BallHandlePlayerButtonB_Loop3 ; CPU:$ABED PRG:2BED F0 07 + ldx #$C0 ; CPU:$ABEF PRG:2BEF A2 C0 + lda #$01 ; CPU:$ABF1 PRG:2BF1 A9 01 + jmp BallStorePlayerStateC ; CPU:$ABF3 PRG:2BF3 4C 07 AC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonB_Loop3: + lda PlayerRightInput ; CPU:$ABF6 PRG:2BF6 A5 76 + and #$01 ; CPU:$ABF8 PRG:2BF8 29 01 + beq BallHandlePlayerButtonB_Loop4 ; CPU:$ABFA PRG:2BFA F0 07 + ldx #$40 ; CPU:$ABFC PRG:2BFC A2 40 + lda #$02 ; CPU:$ABFE PRG:2BFE A9 02 + jmp BallStorePlayerStateC ; CPU:$AC00 PRG:2C00 4C 07 AC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonB_Loop4: + ldx #$00 ; CPU:$AC03 PRG:2C03 A2 00 + lda #$02 ; CPU:$AC05 PRG:2C05 A9 02 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateC: + stx BallTargetX ; CPU:$AC07 PRG:2C07 8E 0B 05 + sta BallVelocityX ; CPU:$AC0A PRG:2C0A 8D 03 05 + lda PlayerRightInput ; CPU:$AC0D PRG:2C0D A5 76 + and #$08 ; CPU:$AC0F PRG:2C0F 29 08 + beq BallStorePlayerStateC_Loop ; CPU:$AC11 PRG:2C11 F0 07 + ldx #$C0 ; CPU:$AC13 PRG:2C13 A2 C0 + lda #$80 ; CPU:$AC15 PRG:2C15 A9 80 + jmp BallStorePlayerStateD ; CPU:$AC17 PRG:2C17 4C 2B AC +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateC_Loop: + lda PlayerRightInput ; CPU:$AC1A PRG:2C1A A5 76 + and #$04 ; CPU:$AC1C PRG:2C1C 29 04 + beq BallStorePlayerStateC_Loop2 ; CPU:$AC1E PRG:2C1E F0 07 + ldx #$00 ; CPU:$AC20 PRG:2C20 A2 00 + lda #$80 ; CPU:$AC22 PRG:2C22 A9 80 + jmp BallStorePlayerStateD ; CPU:$AC24 PRG:2C24 4C 2B AC +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateC_Loop2: + ldx #$80 ; CPU:$AC27 PRG:2C27 A2 80 + lda #$80 ; CPU:$AC29 PRG:2C29 A9 80 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateD: + stx BallTargetY ; CPU:$AC2B PRG:2C2B 8E 0C 05 + sta BallVelocityY ; CPU:$AC2E PRG:2C2E 8D 04 05 + lda #$04 ; CPU:$AC31 PRG:2C31 A9 04 + sta BallSpeed ; CPU:$AC33 PRG:2C33 8D 05 05 + sta BallPreviousX ; CPU:$AC36 PRG:2C36 8D 08 05 + lda #$35 ; CPU:$AC39 PRG:2C39 A9 35 + sta $054B ; CPU:$AC3B PRG:2C3B 8D 4B 05 + lda #$00 ; CPU:$AC3E PRG:2C3E A9 00 + sta $054C ; CPU:$AC40 PRG:2C40 8D 4C 05 + lda FrameCounter ; CPU:$AC43 PRG:2C43 A5 2D + and #$0E ; CPU:$AC45 PRG:2C45 29 0E + lsr a ; CPU:$AC47 PRG:2C47 4A + clc ; CPU:$AC48 PRG:2C48 18 + adc #$01 ; CPU:$AC49 PRG:2C49 69 01 + sta BallCountdown ; CPU:$AC4B PRG:2C4B 8D 06 05 + lda #$08 ; CPU:$AC4E PRG:2C4E A9 08 + sta MusicPlayingFlag ; CPU:$AC50 PRG:2C50 85 EE + lda $054E ; CPU:$AC52 PRG:2C52 AD 4E 05 + ora #$01 ; CPU:$AC55 PRG:2C55 09 01 + sta $054E ; CPU:$AC57 PRG:2C57 8D 4E 05 + lda BallFlags ; CPU:$AC5A PRG:2C5A A5 6E + ora #$08 ; CPU:$AC5C PRG:2C5C 09 08 + sta BallFlags ; CPU:$AC5E PRG:2C5E 85 6E + lda #$00 ; CPU:$AC60 PRG:2C60 A9 00 + sta PlayerSlotIndex2 ; CPU:$AC62 PRG:2C62 85 8C + sta PlayerSlotIndex ; CPU:$AC64 PRG:2C64 85 8B + jsr GetCrowdSpriteY ; CPU:$AC66 PRG:2C66 20 B1 C7 + jsr DrawNumberSpriteH ; CPU:$AC69 PRG:2C69 20 04 C9 + jsr CheckCrowdOffset ; CPU:$AC6C PRG:2C6C 20 3B C9 + jsr DrawNumberSpriteV ; CPU:$AC6F PRG:2C6F 20 5B CB + lda #$00 ; CPU:$AC72 PRG:2C72 A9 00 + sta TeamScore1Lo ; CPU:$AC74 PRG:2C74 85 54 + lda #$03 ; CPU:$AC76 PRG:2C76 A9 03 + sta TeamScore1Hi ; CPU:$AC78 PRG:2C78 85 55 + lda #$15 ; CPU:$AC7A PRG:2C7A A9 15 + sta CrowdFlagsB ; CPU:$AC7C PRG:2C7C 85 51 + lda #$C4 ; CPU:$AC7E PRG:2C7E A9 C4 + sta $0549 ; CPU:$AC80 PRG:2C80 8D 49 05 + lda #$76 ; CPU:$AC83 PRG:2C83 A9 76 + sta $054A ; CPU:$AC85 PRG:2C85 8D 4A 05 + inc TeamId ; CPU:$AC88 PRG:2C88 E6 70 +; ----------------------------------------------------------------------------- +; Routine: BallFrameDone4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFrameDone4: + rts ; CPU:$AC8A PRG:2C8A 60 +; ----------------------------------------------------------------------------- +; Routine: BallSelectSlot +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSelectSlot: + ldx #$05 ; CPU:$AC8B PRG:2C8B A2 05 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset: + txa ; CPU:$AC8D PRG:2C8D 8A + asl a ; CPU:$AC8E PRG:2C8E 0A + asl a ; CPU:$AC8F PRG:2C8F 0A + asl a ; CPU:$AC90 PRG:2C90 0A + tay ; CPU:$AC91 PRG:2C91 A8 + lda ScoreRecord,y ; CPU:$AC92 PRG:2C92 B9 13 05 + cmp #$14 ; CPU:$AC95 PRG:2C95 C9 14 + bne BallSlotOffset_Loop2 ; CPU:$AC97 PRG:2C97 D0 0B + jsr BallSetBallNumber ; CPU:$AC99 PRG:2C99 20 68 B5 + lda NumberToDisplay ; CPU:$AC9C PRG:2C9C A5 45 + bne BallSlotOffset_Loop ; CPU:$AC9E PRG:2C9E D0 03 + jmp BallNextPlayerSlotB ; CPU:$ACA0 PRG:2CA0 4C A4 AD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop: + rts ; CPU:$ACA3 PRG:2CA3 60 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop2: + lda BallPositionY,y ; CPU:$ACA4 PRG:2CA4 B9 10 05 + clc ; CPU:$ACA7 PRG:2CA7 18 + adc #$08 ; CPU:$ACA8 PRG:2CA8 69 08 + sec ; CPU:$ACAA PRG:2CAA 38 + sbc BallY ; CPU:$ACAB PRG:2CAB ED 01 05 + bcs BallSlotOffset_Loop3 ; CPU:$ACAE PRG:2CAE B0 03 + jmp BallNextPlayerSlotB ; CPU:$ACB0 PRG:2CB0 4C A4 AD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop3: + cmp #$10 ; CPU:$ACB3 PRG:2CB3 C9 10 + bcc BallSlotOffset_Loop4 ; CPU:$ACB5 PRG:2CB5 90 03 + jmp BallNextPlayerSlotB ; CPU:$ACB7 PRG:2CB7 4C A4 AD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop4: + lda BallX ; CPU:$ACBA PRG:2CBA AD 00 05 + clc ; CPU:$ACBD PRG:2CBD 18 + adc #$08 ; CPU:$ACBE PRG:2CBE 69 08 + sta NumberToDisplay ; CPU:$ACC0 PRG:2CC0 85 45 + lda BallPositionX,y ; CPU:$ACC2 PRG:2CC2 B9 0F 05 + clc ; CPU:$ACC5 PRG:2CC5 18 + adc #$0C ; CPU:$ACC6 PRG:2CC6 69 0C + sec ; CPU:$ACC8 PRG:2CC8 38 + sbc NumberToDisplay ; CPU:$ACC9 PRG:2CC9 E5 45 + bcs BallSlotOffset_Loop5 ; CPU:$ACCB PRG:2CCB B0 03 + jmp BallNextPlayerSlotB ; CPU:$ACCD PRG:2CCD 4C A4 AD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop5: + cmp #$08 ; CPU:$ACD0 PRG:2CD0 C9 08 + bcc BallStoreTeamNumber_Loop ; CPU:$ACD2 PRG:2CD2 90 46 + cmp #$10 ; CPU:$ACD4 PRG:2CD4 C9 10 + bcc BallSlotOffset_Loop6 ; CPU:$ACD6 PRG:2CD6 90 03 + jmp BallNextPlayerSlotB ; CPU:$ACD8 PRG:2CD8 4C A4 AD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop6: + lda BallFrameCounter ; CPU:$ACDB PRG:2CDB AD 02 05 + cmp #$10 ; CPU:$ACDE PRG:2CDE C9 10 + bcc BallSlotOffset_Loop7 ; CPU:$ACE0 PRG:2CE0 90 03 + jmp BallNextPlayerSlotB ; CPU:$ACE2 PRG:2CE2 4C A4 AD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop7: + lda BallPositionX,y ; CPU:$ACE5 PRG:2CE5 B9 0F 05 + cmp #$1C ; CPU:$ACE8 PRG:2CE8 C9 1C + bcs BallSlotOffset_Loop8 ; CPU:$ACEA PRG:2CEA B0 03 + jmp BallNextPlayerSlotB ; CPU:$ACEC PRG:2CEC 4C A4 AD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop8: + lda BallVelocityX ; CPU:$ACEF PRG:2CEF AD 03 05 + cmp #$03 ; CPU:$ACF2 PRG:2CF2 C9 03 + beq BallSlotOffset_Loop9 ; CPU:$ACF4 PRG:2CF4 F0 04 + cmp #$04 ; CPU:$ACF6 PRG:2CF6 C9 04 + bne BallSlotOffset_Loop10 ; CPU:$ACF8 PRG:2CF8 D0 0C +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop9: + jsr BallPlayerMoveStartB ; CPU:$ACFA PRG:2CFA 20 61 AE + lda #$04 ; CPU:$ACFD PRG:2CFD A9 04 + sta MusicPlayingFlag ; CPU:$ACFF PRG:2CFF 85 EE + lda #$12 ; CPU:$AD01 PRG:2D01 A9 12 + jmp BallStoreTeamNumber ; CPU:$AD03 PRG:2D03 4C 0F AD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffset_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffset_Loop10: + jsr BallPlayerMoveStartB ; CPU:$AD06 PRG:2D06 20 61 AE + lda #$01 ; CPU:$AD09 PRG:2D09 A9 01 + sta MusicPlayingFlag ; CPU:$AD0B PRG:2D0B 85 EE + lda #$12 ; CPU:$AD0D PRG:2D0D A9 12 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumber +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumber: + sta ScoreRecord,y ; CPU:$AD0F PRG:2D0F 99 13 05 + lda #$00 ; CPU:$AD12 PRG:2D12 A9 00 + sta $0514,y ; CPU:$AD14 PRG:2D14 99 14 05 + jmp BallNextPlayerSlot ; CPU:$AD17 PRG:2D17 4C 66 AD +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumber_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumber_Loop: + lda ScoreRecord,y ; CPU:$AD1A PRG:2D1A B9 13 05 + cmp #$13 ; CPU:$AD1D PRG:2D1D C9 13 + beq BallStoreTeamNumber_Loop2 ; CPU:$AD1F PRG:2D1F F0 0C + lda PlayerLeftInput ; CPU:$AD21 PRG:2D21 A5 75 + and #$02 ; CPU:$AD23 PRG:2D23 29 02 + beq BallStoreTeamNumber_Loop3 ; CPU:$AD25 PRG:2D25 F0 10 + lda PlayerLeftInput ; CPU:$AD27 PRG:2D27 A5 75 + and #$40 ; CPU:$AD29 PRG:2D29 29 40 + beq BallStoreTeamNumber_Loop3 ; CPU:$AD2B PRG:2D2B F0 0A +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumber_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumber_Loop2: + jsr BallHandlePlayerButtonC ; CPU:$AD2D PRG:2D2D 20 DD B0 + lda NumberToDisplay ; CPU:$AD30 PRG:2D30 A5 45 + bne BallNextPlayerSlotB ; CPU:$AD32 PRG:2D32 D0 70 + jmp BallNextPlayerSlot ; CPU:$AD34 PRG:2D34 4C 66 AD +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumber_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumber_Loop3: + lda BallFrameCounter ; CPU:$AD37 PRG:2D37 AD 02 05 + cmp #$20 ; CPU:$AD3A PRG:2D3A C9 20 + bcs BallNextPlayerSlotB ; CPU:$AD3C PRG:2D3C B0 66 + lda BallVelocityX ; CPU:$AD3E PRG:2D3E AD 03 05 + cmp #$03 ; CPU:$AD41 PRG:2D41 C9 03 + beq BallStoreTeamNumber_Loop4 ; CPU:$AD43 PRG:2D43 F0 04 + cmp #$04 ; CPU:$AD45 PRG:2D45 C9 04 + bne BallStoreTeamNumber_Loop5 ; CPU:$AD47 PRG:2D47 D0 0C +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumber_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumber_Loop4: + jsr BallPlayerMoveStartB ; CPU:$AD49 PRG:2D49 20 61 AE + lda #$04 ; CPU:$AD4C PRG:2D4C A9 04 + sta MusicPlayingFlag ; CPU:$AD4E PRG:2D4E 85 EE + lda #$16 ; CPU:$AD50 PRG:2D50 A9 16 + jmp BallStoreTeamNumberB ; CPU:$AD52 PRG:2D52 4C 5E AD +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumber_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumber_Loop5: + jsr BallSavePlayerSlot ; CPU:$AD55 PRG:2D55 20 AB AD + lda #$01 ; CPU:$AD58 PRG:2D58 A9 01 + sta MusicPlayingFlag ; CPU:$AD5A PRG:2D5A 85 EE + lda #$11 ; CPU:$AD5C PRG:2D5C A9 11 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberB: + sta ScoreRecord,y ; CPU:$AD5E PRG:2D5E 99 13 05 + lda #$08 ; CPU:$AD61 PRG:2D61 A9 08 + sta $0514,y ; CPU:$AD63 PRG:2D63 99 14 05 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlot +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlot: + txa ; CPU:$AD66 PRG:2D66 8A + pha ; CPU:$AD67 PRG:2D67 48 + inc PlayerSlotIndex ; CPU:$AD68 PRG:2D68 E6 8B + lda #$00 ; CPU:$AD6A PRG:2D6A A9 00 + sta PlayerSlotIndex2 ; CPU:$AD6C PRG:2D6C 85 8C + jsr DrawNumberSpriteAE ; CPU:$AD6E PRG:2D6E 20 93 D0 + jsr GetCrowdSpriteY ; CPU:$AD71 PRG:2D71 20 B1 C7 + jsr DrawNumberSpriteH ; CPU:$AD74 PRG:2D74 20 04 C9 + lda ColorIndex ; CPU:$AD77 PRG:2D77 A5 47 + asl a ; CPU:$AD79 PRG:2D79 0A + bcc BallNextPlayerSlot_Loop ; CPU:$AD7A PRG:2D7A 90 10 + jsr DrawNumberSpriteM ; CPU:$AD7C PRG:2D7C 20 CE C9 + lda #$00 ; CPU:$AD7F PRG:2D7F A9 00 + sta TeamScore1Hi ; CPU:$AD81 PRG:2D81 85 55 + lda #$15 ; CPU:$AD83 PRG:2D83 A9 15 + sta CrowdFlagsA ; CPU:$AD85 PRG:2D85 85 50 + lda #$03 ; CPU:$AD87 PRG:2D87 A9 03 + jmp BallFinishPlayerUpdate ; CPU:$AD89 PRG:2D89 4C 91 AD +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlot_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlot_Loop: + jsr CheckCrowdOffset ; CPU:$AD8C PRG:2D8C 20 3B C9 + lda #$01 ; CPU:$AD8F PRG:2D8F A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallFinishPlayerUpdate +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFinishPlayerUpdate: + sta TeamScore1Lo ; CPU:$AD91 PRG:2D91 85 54 + jsr DrawNumberSpriteV ; CPU:$AD93 PRG:2D93 20 5B CB + jsr ClearTeamSpriteFlags ; CPU:$AD96 PRG:2D96 20 89 CB + lda #$FF ; CPU:$AD99 PRG:2D99 A9 FF + sta PlayerSpriteId ; CPU:$AD9B PRG:2D9B 85 56 + lda #$00 ; CPU:$AD9D PRG:2D9D A9 00 + sta TeamId ; CPU:$AD9F PRG:2D9F 85 70 + pla ; CPU:$ADA1 PRG:2DA1 68 + tax ; CPU:$ADA2 PRG:2DA2 AA + rts ; CPU:$ADA3 PRG:2DA3 60 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotB: + dex ; CPU:$ADA4 PRG:2DA4 CA + bmi BallNextPlayerSlotB_Loop ; CPU:$ADA5 PRG:2DA5 30 03 + jmp BallSlotOffset ; CPU:$ADA7 PRG:2DA7 4C 8D AC +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotB_Loop: + rts ; CPU:$ADAA PRG:2DAA 60 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlot +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlot: + txa ; CPU:$ADAB PRG:2DAB 8A + pha ; CPU:$ADAC PRG:2DAC 48 + tya ; CPU:$ADAD PRG:2DAD 98 + pha ; CPU:$ADAE PRG:2DAE 48 + lda BallVelocityX ; CPU:$ADAF PRG:2DAF AD 03 05 + sta DrawPointerHi ; CPU:$ADB2 PRG:2DB2 85 49 + ldy #$00 ; CPU:$ADB4 PRG:2DB4 A0 00 + lda BallX ; CPU:$ADB6 PRG:2DB6 AD 00 05 + cmp #$33 ; CPU:$ADB9 PRG:2DB9 C9 33 + bcs BallSavePlayerSlot_Loop ; CPU:$ADBB PRG:2DBB B0 08 + iny ; CPU:$ADBD PRG:2DBD C8 + iny ; CPU:$ADBE PRG:2DBE C8 + cmp #$15 ; CPU:$ADBF PRG:2DBF C9 15 + bcs BallSavePlayerSlot_Loop ; CPU:$ADC1 PRG:2DC1 B0 02 + iny ; CPU:$ADC3 PRG:2DC3 C8 + iny ; CPU:$ADC4 PRG:2DC4 C8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlot_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlot_Loop: + lda PlayerLeftInput ; CPU:$ADC5 PRG:2DC5 A5 75 + and #$03 ; CPU:$ADC7 PRG:2DC7 29 03 + beq BallSavePlayerSlot_Loop2 ; CPU:$ADC9 PRG:2DC9 F0 0D + cmp #$01 ; CPU:$ADCB PRG:2DCB C9 01 + beq BallSavePlayerSlot_Loop3 ; CPU:$ADCD PRG:2DCD F0 12 + lda $E4EC,y ; CPU:$ADCF PRG:2DCF B9 EC E4 + ldx $E4ED,y ; CPU:$ADD2 PRG:2DD2 BE ED E4 + jmp BallPlayerMoveStart ; CPU:$ADD5 PRG:2DD5 4C E7 AD +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlot_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlot_Loop2: + lda $E4F2,y ; CPU:$ADD8 PRG:2DD8 B9 F2 E4 + ldx $E4F3,y ; CPU:$ADDB PRG:2DDB BE F3 E4 + jmp BallPlayerMoveStart ; CPU:$ADDE PRG:2DDE 4C E7 AD +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlot_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlot_Loop3: + lda $E4F8,y ; CPU:$ADE1 PRG:2DE1 B9 F8 E4 + ldx $E4F9,y ; CPU:$ADE4 PRG:2DE4 BE F9 E4 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStart +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStart: + sta BallVelocityX ; CPU:$ADE7 PRG:2DE7 8D 03 05 + stx BallTargetX ; CPU:$ADEA PRG:2DEA 8E 0B 05 + ldy #$00 ; CPU:$ADED PRG:2DED A0 00 + lda BallY ; CPU:$ADEF PRG:2DEF AD 01 05 + cmp #$49 ; CPU:$ADF2 PRG:2DF2 C9 49 + bcc BallPlayerMoveStart_Loop ; CPU:$ADF4 PRG:2DF4 90 08 + iny ; CPU:$ADF6 PRG:2DF6 C8 + iny ; CPU:$ADF7 PRG:2DF7 C8 + cmp #$68 ; CPU:$ADF8 PRG:2DF8 C9 68 + bcc BallPlayerMoveStart_Loop ; CPU:$ADFA PRG:2DFA 90 02 + iny ; CPU:$ADFC PRG:2DFC C8 + iny ; CPU:$ADFD PRG:2DFD C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStart_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStart_Loop: + lda PlayerLeftInput ; CPU:$ADFE PRG:2DFE A5 75 + and #$0C ; CPU:$AE00 PRG:2E00 29 0C + beq BallPlayerMoveStart_Loop2 ; CPU:$AE02 PRG:2E02 F0 0D + cmp #$04 ; CPU:$AE04 PRG:2E04 C9 04 + beq BallPlayerMoveStart_Loop3 ; CPU:$AE06 PRG:2E06 F0 12 + lda $E4DA,y ; CPU:$AE08 PRG:2E08 B9 DA E4 + ldx $E4DB,y ; CPU:$AE0B PRG:2E0B BE DB E4 + jmp BallPlayerMoveMiddle ; CPU:$AE0E PRG:2E0E 4C 20 AE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStart_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStart_Loop2: + lda $E4E0,y ; CPU:$AE11 PRG:2E11 B9 E0 E4 + ldx $E4E1,y ; CPU:$AE14 PRG:2E14 BE E1 E4 + jmp BallPlayerMoveMiddle ; CPU:$AE17 PRG:2E17 4C 20 AE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStart_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStart_Loop3: + lda $E4E6,y ; CPU:$AE1A PRG:2E1A B9 E6 E4 + ldx $E4E7,y ; CPU:$AE1D PRG:2E1D BE E7 E4 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddle +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddle: + sta BallVelocityY ; CPU:$AE20 PRG:2E20 8D 04 05 + stx BallTargetY ; CPU:$AE23 PRG:2E23 8E 0C 05 + lda PlayerLeftInput ; CPU:$AE26 PRG:2E26 A5 75 + and #$80 ; CPU:$AE28 PRG:2E28 29 80 + bne BallPlayerMoveMiddle_Loop ; CPU:$AE2A PRG:2E2A D0 05 + lda #$04 ; CPU:$AE2C PRG:2E2C A9 04 + jmp BallPlayerMoveEnd ; CPU:$AE2E PRG:2E2E 4C 47 AE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddle_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddle_Loop: + lda Zp91 ; CPU:$AE31 PRG:2E31 A5 91 + beq BallPlayerMoveMiddle_Loop2 ; CPU:$AE33 PRG:2E33 F0 05 + lda #$02 ; CPU:$AE35 PRG:2E35 A9 02 + jmp BallPlayerMoveEnd ; CPU:$AE37 PRG:2E37 4C 47 AE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddle_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddle_Loop2: + lda FrameCounter ; CPU:$AE3A PRG:2E3A A5 2D + and #$02 ; CPU:$AE3C PRG:2E3C 29 02 + beq BallPlayerMoveMiddle_Loop3 ; CPU:$AE3E PRG:2E3E F0 05 + lda #$05 ; CPU:$AE40 PRG:2E40 A9 05 + jmp BallPlayerMoveEnd ; CPU:$AE42 PRG:2E42 4C 47 AE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddle_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddle_Loop3: + lda #$06 ; CPU:$AE45 PRG:2E45 A9 06 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEnd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEnd: + sta BallSpeed ; CPU:$AE47 PRG:2E47 8D 05 05 + sta BallPreviousX ; CPU:$AE4A PRG:2E4A 8D 08 05 + sta $05DE ; CPU:$AE4D PRG:2E4D 8D DE 05 + lda BallCountdown ; CPU:$AE50 PRG:2E50 AD 06 05 + sta $05DF ; CPU:$AE53 PRG:2E53 8D DF 05 + pla ; CPU:$AE56 PRG:2E56 68 + tay ; CPU:$AE57 PRG:2E57 A8 + pla ; CPU:$AE58 PRG:2E58 68 + tax ; CPU:$AE59 PRG:2E59 AA + lda #$00 ; CPU:$AE5A PRG:2E5A A9 00 + sta NationStateB ; CPU:$AE5C PRG:2E5C 85 5F + inc Zp90 ; CPU:$AE5E PRG:2E5E E6 90 + rts ; CPU:$AE60 PRG:2E60 60 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartB: + txa ; CPU:$AE61 PRG:2E61 8A + pha ; CPU:$AE62 PRG:2E62 48 + tya ; CPU:$AE63 PRG:2E63 98 + pha ; CPU:$AE64 PRG:2E64 48 + lda PlayerCount ; CPU:$AE65 PRG:2E65 A5 2E + and #$0F ; CPU:$AE67 PRG:2E67 29 0F + beq BallPlayerMoveStartB_Loop3 ; CPU:$AE69 PRG:2E69 F0 25 + lda TeamNumber ; CPU:$AE6B PRG:2E6B A5 66 + and #$0F ; CPU:$AE6D PRG:2E6D 29 0F + cmp #$01 ; CPU:$AE6F PRG:2E6F C9 01 + beq BallPlayerMoveStartB_Loop3 ; CPU:$AE71 PRG:2E71 F0 1D + cmp #$04 ; CPU:$AE73 PRG:2E73 C9 04 + bcc BallPlayerMoveStartB_Loop ; CPU:$AE75 PRG:2E75 90 07 + cmp #$06 ; CPU:$AE77 PRG:2E77 C9 06 + bcc BallPlayerMoveStartB_Loop2 ; CPU:$AE79 PRG:2E79 90 0C + jmp BallPlayerMoveEndB ; CPU:$AE7B PRG:2E7B 4C 23 AF +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartB_Loop: + lda FrameCounter ; CPU:$AE7E PRG:2E7E A5 2D + and #$06 ; CPU:$AE80 PRG:2E80 29 06 + bne BallPlayerMoveStartB_Loop3 ; CPU:$AE82 PRG:2E82 D0 0C + jmp BallPlayerMoveEndB ; CPU:$AE84 PRG:2E84 4C 23 AF +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartB_Loop2: + lda FrameCounter ; CPU:$AE87 PRG:2E87 A5 2D + and #$02 ; CPU:$AE89 PRG:2E89 29 02 + beq BallPlayerMoveStartB_Loop3 ; CPU:$AE8B PRG:2E8B F0 03 + jmp BallPlayerMoveEndB ; CPU:$AE8D PRG:2E8D 4C 23 AF +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartB_Loop3: + lda BallVelocityX ; CPU:$AE90 PRG:2E90 AD 03 05 + sta DrawPointerHi ; CPU:$AE93 PRG:2E93 85 49 + lda FrameCounter ; CPU:$AE95 PRG:2E95 A5 2D + and #$0C ; CPU:$AE97 PRG:2E97 29 0C + sta NumberToDisplay ; CPU:$AE99 PRG:2E99 85 45 + lda FrameCounter ; CPU:$AE9B PRG:2E9B A5 2D + and #$30 ; CPU:$AE9D PRG:2E9D 29 30 + sta SpriteOffsetIndex ; CPU:$AE9F PRG:2E9F 85 46 + lda FrameCounter ; CPU:$AEA1 PRG:2EA1 A5 2D + and #$C0 ; CPU:$AEA3 PRG:2EA3 29 C0 + sta ColorIndex ; CPU:$AEA5 PRG:2EA5 85 47 + ldy #$00 ; CPU:$AEA7 PRG:2EA7 A0 00 + lda NumberToDisplay ; CPU:$AEA9 PRG:2EA9 A5 45 + cmp #$08 ; CPU:$AEAB PRG:2EAB C9 08 + bcs BallPlayerMoveStartB_Loop4 ; CPU:$AEAD PRG:2EAD B0 08 + iny ; CPU:$AEAF PRG:2EAF C8 + iny ; CPU:$AEB0 PRG:2EB0 C8 + cmp #$04 ; CPU:$AEB1 PRG:2EB1 C9 04 + bcs BallPlayerMoveStartB_Loop4 ; CPU:$AEB3 PRG:2EB3 B0 02 + iny ; CPU:$AEB5 PRG:2EB5 C8 + iny ; CPU:$AEB6 PRG:2EB6 C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartB_Loop4: + lda SpriteOffsetIndex ; CPU:$AEB7 PRG:2EB7 A5 46 + cmp #$10 ; CPU:$AEB9 PRG:2EB9 C9 10 + beq BallPlayerMoveStartB_Loop5 ; CPU:$AEBB PRG:2EBB F0 0D + cmp #$20 ; CPU:$AEBD PRG:2EBD C9 20 + beq BallPlayerMoveStartB_Loop6 ; CPU:$AEBF PRG:2EBF F0 12 + lda $E4EC,y ; CPU:$AEC1 PRG:2EC1 B9 EC E4 + ldx $E4ED,y ; CPU:$AEC4 PRG:2EC4 BE ED E4 + jmp BallPlayerMoveStartC ; CPU:$AEC7 PRG:2EC7 4C D9 AE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartB_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartB_Loop5: + lda $E4F2,y ; CPU:$AECA PRG:2ECA B9 F2 E4 + ldx $E4F3,y ; CPU:$AECD PRG:2ECD BE F3 E4 + jmp BallPlayerMoveStartC ; CPU:$AED0 PRG:2ED0 4C D9 AE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartB_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartB_Loop6: + lda $E4F8,y ; CPU:$AED3 PRG:2ED3 B9 F8 E4 + ldx $E4F9,y ; CPU:$AED6 PRG:2ED6 BE F9 E4 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartC: + sta BallVelocityX ; CPU:$AED9 PRG:2ED9 8D 03 05 + stx BallTargetX ; CPU:$AEDC PRG:2EDC 8E 0B 05 + ldy #$00 ; CPU:$AEDF PRG:2EDF A0 00 + lda BallY ; CPU:$AEE1 PRG:2EE1 AD 01 05 + cmp #$49 ; CPU:$AEE4 PRG:2EE4 C9 49 + bcc BallPlayerMoveStartC_Loop ; CPU:$AEE6 PRG:2EE6 90 08 + iny ; CPU:$AEE8 PRG:2EE8 C8 + iny ; CPU:$AEE9 PRG:2EE9 C8 + cmp #$68 ; CPU:$AEEA PRG:2EEA C9 68 + bcc BallPlayerMoveStartC_Loop ; CPU:$AEEC PRG:2EEC 90 02 + iny ; CPU:$AEEE PRG:2EEE C8 + iny ; CPU:$AEEF PRG:2EEF C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartC_Loop: + lda ColorIndex ; CPU:$AEF0 PRG:2EF0 A5 47 + cmp #$40 ; CPU:$AEF2 PRG:2EF2 C9 40 + beq BallPlayerMoveStartC_Loop2 ; CPU:$AEF4 PRG:2EF4 F0 0D + cmp #$80 ; CPU:$AEF6 PRG:2EF6 C9 80 + beq BallPlayerMoveStartC_Loop3 ; CPU:$AEF8 PRG:2EF8 F0 12 + lda $E4DA,y ; CPU:$AEFA PRG:2EFA B9 DA E4 + ldx $E4DB,y ; CPU:$AEFD PRG:2EFD BE DB E4 + jmp BallPlayerMoveMiddleB ; CPU:$AF00 PRG:2F00 4C 12 AF +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartC_Loop2: + lda $E4E0,y ; CPU:$AF03 PRG:2F03 B9 E0 E4 + ldx $E4E1,y ; CPU:$AF06 PRG:2F06 BE E1 E4 + jmp BallPlayerMoveMiddleB ; CPU:$AF09 PRG:2F09 4C 12 AF +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartC_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartC_Loop3: + lda $E4E6,y ; CPU:$AF0C PRG:2F0C B9 E6 E4 + ldx $E4E7,y ; CPU:$AF0F PRG:2F0F BE E7 E4 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleB: + sta BallVelocityY ; CPU:$AF12 PRG:2F12 8D 04 05 + stx BallTargetY ; CPU:$AF15 PRG:2F15 8E 0C 05 + lda PlayerLeftInput ; CPU:$AF18 PRG:2F18 A5 75 + and #$80 ; CPU:$AF1A PRG:2F1A 29 80 + bne BallPlayerMoveEndB ; CPU:$AF1C PRG:2F1C D0 05 + lda #$04 ; CPU:$AF1E PRG:2F1E A9 04 + jmp BallPlayerMoveEndH ; CPU:$AF20 PRG:2F20 4C 30 AF +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndB: + lda FrameCounter ; CPU:$AF23 PRG:2F23 A5 2D + and #$02 ; CPU:$AF25 PRG:2F25 29 02 + beq BallPlayerMoveEndB_Loop ; CPU:$AF27 PRG:2F27 F0 05 + lda #$05 ; CPU:$AF29 PRG:2F29 A9 05 + jmp BallPlayerMoveEndH ; CPU:$AF2B PRG:2F2B 4C 30 AF +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndB_Loop: + lda #$06 ; CPU:$AF2E PRG:2F2E A9 06 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndH: + sta BallSpeed ; CPU:$AF30 PRG:2F30 8D 05 05 + sta BallPreviousX ; CPU:$AF33 PRG:2F33 8D 08 05 + sta $05DE ; CPU:$AF36 PRG:2F36 8D DE 05 + lda BallCountdown ; CPU:$AF39 PRG:2F39 AD 06 05 + sta $05DF ; CPU:$AF3C PRG:2F3C 8D DF 05 + pla ; CPU:$AF3F PRG:2F3F 68 + tay ; CPU:$AF40 PRG:2F40 A8 + pla ; CPU:$AF41 PRG:2F41 68 + tax ; CPU:$AF42 PRG:2F42 AA + lda #$00 ; CPU:$AF43 PRG:2F43 A9 00 + sta NationStateB ; CPU:$AF45 PRG:2F45 85 5F + rts ; CPU:$AF47 PRG:2F47 60 +; ----------------------------------------------------------------------------- +; Routine: BallSelectSlotB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSelectSlotB: + ldx #$05 ; CPU:$AF48 PRG:2F48 A2 05 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetB: + txa ; CPU:$AF4A PRG:2F4A 8A + asl a ; CPU:$AF4B PRG:2F4B 0A + asl a ; CPU:$AF4C PRG:2F4C 0A + asl a ; CPU:$AF4D PRG:2F4D 0A + tay ; CPU:$AF4E PRG:2F4E A8 + lda $0516,y ; CPU:$AF4F PRG:2F4F B9 16 05 + and #$01 ; CPU:$AF52 PRG:2F52 29 01 + beq BallSlotOffsetB_Loop ; CPU:$AF54 PRG:2F54 F0 03 + jmp BallNextPlayerSlotD ; CPU:$AF56 PRG:2F56 4C F1 AF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetB_Loop: + lda BallX ; CPU:$AF59 PRG:2F59 AD 00 05 + clc ; CPU:$AF5C PRG:2F5C 18 + adc #$08 ; CPU:$AF5D PRG:2F5D 69 08 + sta NumberToDisplay ; CPU:$AF5F PRG:2F5F 85 45 + lda BallPositionX,y ; CPU:$AF61 PRG:2F61 B9 0F 05 + clc ; CPU:$AF64 PRG:2F64 18 + adc #$10 ; CPU:$AF65 PRG:2F65 69 10 + sec ; CPU:$AF67 PRG:2F67 38 + sbc NumberToDisplay ; CPU:$AF68 PRG:2F68 E5 45 + bcs BallSlotOffsetB_Loop2 ; CPU:$AF6A PRG:2F6A B0 03 + jmp BallNextPlayerSlotD ; CPU:$AF6C PRG:2F6C 4C F1 AF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetB_Loop2: + cmp #$10 ; CPU:$AF6F PRG:2F6F C9 10 + bcc BallSlotOffsetB_Loop3 ; CPU:$AF71 PRG:2F71 90 03 + jmp BallNextPlayerSlotD ; CPU:$AF73 PRG:2F73 4C F1 AF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetB_Loop3: + lda BallPositionY,y ; CPU:$AF76 PRG:2F76 B9 10 05 + clc ; CPU:$AF79 PRG:2F79 18 + adc #$08 ; CPU:$AF7A PRG:2F7A 69 08 + sec ; CPU:$AF7C PRG:2F7C 38 + sbc BallY ; CPU:$AF7D PRG:2F7D ED 01 05 + bcs BallSlotOffsetB_Loop4 ; CPU:$AF80 PRG:2F80 B0 03 + jmp BallNextPlayerSlotD ; CPU:$AF82 PRG:2F82 4C F1 AF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetB_Loop4: + cmp #$10 ; CPU:$AF85 PRG:2F85 C9 10 + bcc BallSlotOffsetB_Loop5 ; CPU:$AF87 PRG:2F87 90 03 + jmp BallNextPlayerSlotD ; CPU:$AF89 PRG:2F89 4C F1 AF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetB_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetB_Loop5: + lda ScoreRecord,y ; CPU:$AF8C PRG:2F8C B9 13 05 + cmp #$13 ; CPU:$AF8F PRG:2F8F C9 13 + beq BallSlotOffsetB_Loop6 ; CPU:$AF91 PRG:2F91 F0 0C + lda PlayerLeftInput ; CPU:$AF93 PRG:2F93 A5 75 + and #$02 ; CPU:$AF95 PRG:2F95 29 02 + beq BallSlotOffsetB_Loop7 ; CPU:$AF97 PRG:2F97 F0 10 + lda PlayerLeftInput ; CPU:$AF99 PRG:2F99 A5 75 + and #$40 ; CPU:$AF9B PRG:2F9B 29 40 + beq BallSlotOffsetB_Loop7 ; CPU:$AF9D PRG:2F9D F0 0A +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetB_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetB_Loop6: + jsr BallHandlePlayerButtonC ; CPU:$AF9F PRG:2F9F 20 DD B0 + lda NumberToDisplay ; CPU:$AFA2 PRG:2FA2 A5 45 + bne BallNextPlayerSlotD ; CPU:$AFA4 PRG:2FA4 D0 4B + jmp BallNextPlayerSlotC ; CPU:$AFA6 PRG:2FA6 4C B7 AF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetB_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetB_Loop7: + lda BallFrameCounter ; CPU:$AFA9 PRG:2FA9 AD 02 05 + cmp #$20 ; CPU:$AFAC PRG:2FAC C9 20 + bcs BallNextPlayerSlotD ; CPU:$AFAE PRG:2FAE B0 41 + jsr BallSavePlayerSlotB ; CPU:$AFB0 PRG:2FB0 20 F8 AF + lda #$10 ; CPU:$AFB3 PRG:2FB3 A9 10 + sta SfxCommand ; CPU:$AFB5 PRG:2FB5 85 EF +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotC: + txa ; CPU:$AFB7 PRG:2FB7 8A + pha ; CPU:$AFB8 PRG:2FB8 48 + inc PlayerSlotIndex ; CPU:$AFB9 PRG:2FB9 E6 8B + lda #$00 ; CPU:$AFBB PRG:2FBB A9 00 + sta PlayerSlotIndex2 ; CPU:$AFBD PRG:2FBD 85 8C + jsr DrawNumberSpriteAE ; CPU:$AFBF PRG:2FBF 20 93 D0 + jsr GetCrowdSpriteY ; CPU:$AFC2 PRG:2FC2 20 B1 C7 + jsr DrawNumberSpriteH ; CPU:$AFC5 PRG:2FC5 20 04 C9 + lda ColorIndex ; CPU:$AFC8 PRG:2FC8 A5 47 + asl a ; CPU:$AFCA PRG:2FCA 0A + bcc BallNextPlayerSlotC_Loop ; CPU:$AFCB PRG:2FCB 90 10 + jsr DrawNumberSpriteM ; CPU:$AFCD PRG:2FCD 20 CE C9 + lda #$00 ; CPU:$AFD0 PRG:2FD0 A9 00 + sta TeamScore1Hi ; CPU:$AFD2 PRG:2FD2 85 55 + lda #$15 ; CPU:$AFD4 PRG:2FD4 A9 15 + sta CrowdFlagsA ; CPU:$AFD6 PRG:2FD6 85 50 + lda #$03 ; CPU:$AFD8 PRG:2FD8 A9 03 + jmp BallFinishPlayerUpdateB ; CPU:$AFDA PRG:2FDA 4C E2 AF +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotC_Loop: + jsr CheckCrowdOffset ; CPU:$AFDD PRG:2FDD 20 3B C9 + lda #$02 ; CPU:$AFE0 PRG:2FE0 A9 02 +; ----------------------------------------------------------------------------- +; Routine: BallFinishPlayerUpdateB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFinishPlayerUpdateB: + sta TeamScore1Lo ; CPU:$AFE2 PRG:2FE2 85 54 + jsr DrawNumberSpriteV ; CPU:$AFE4 PRG:2FE4 20 5B CB + jsr ClearTeamSpriteFlags ; CPU:$AFE7 PRG:2FE7 20 89 CB + lda #$FF ; CPU:$AFEA PRG:2FEA A9 FF + sta PlayerSpriteId ; CPU:$AFEC PRG:2FEC 85 56 + pla ; CPU:$AFEE PRG:2FEE 68 + tax ; CPU:$AFEF PRG:2FEF AA + rts ; CPU:$AFF0 PRG:2FF0 60 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotD: + dex ; CPU:$AFF1 PRG:2FF1 CA + bmi BallNextPlayerSlotD_Loop ; CPU:$AFF2 PRG:2FF2 30 03 + jmp BallSlotOffsetB ; CPU:$AFF4 PRG:2FF4 4C 4A AF +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotD_Loop: + rts ; CPU:$AFF7 PRG:2FF7 60 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotB: + txa ; CPU:$AFF8 PRG:2FF8 8A + pha ; CPU:$AFF9 PRG:2FF9 48 + tya ; CPU:$AFFA PRG:2FFA 98 + pha ; CPU:$AFFB PRG:2FFB 48 + ldy #$00 ; CPU:$AFFC PRG:2FFC A0 00 + lda BallX ; CPU:$AFFE PRG:2FFE AD 00 05 + cmp #$33 ; CPU:$B001 PRG:3001 C9 33 + bcs BallSavePlayerSlotB_Loop ; CPU:$B003 PRG:3003 B0 08 + iny ; CPU:$B005 PRG:3005 C8 + iny ; CPU:$B006 PRG:3006 C8 + cmp #$15 ; CPU:$B007 PRG:3007 C9 15 + bcs BallSavePlayerSlotB_Loop ; CPU:$B009 PRG:3009 B0 02 + iny ; CPU:$B00B PRG:300B C8 + iny ; CPU:$B00C PRG:300C C8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotB_Loop: + lda PlayerLeftInput ; CPU:$B00D PRG:300D A5 75 + and #$03 ; CPU:$B00F PRG:300F 29 03 + beq BallSavePlayerSlotB_Loop2 ; CPU:$B011 PRG:3011 F0 0D + cmp #$01 ; CPU:$B013 PRG:3013 C9 01 + beq BallSavePlayerSlotB_Loop3 ; CPU:$B015 PRG:3015 F0 12 + lda $E4FE,y ; CPU:$B017 PRG:3017 B9 FE E4 + ldx $E4FF,y ; CPU:$B01A PRG:301A BE FF E4 + jmp BallPlayerMoveStartD ; CPU:$B01D PRG:301D 4C 32 B0 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotB_Loop2: + lda $E504,y ; CPU:$B020 PRG:3020 B9 04 E5 + ldx $E505,y ; CPU:$B023 PRG:3023 BE 05 E5 + jmp BallPlayerMoveStartD ; CPU:$B026 PRG:3026 4C 32 B0 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotB_Loop3: + lda $E50A,y ; CPU:$B029 PRG:3029 B9 0A E5 + ldx $E50B,y ; CPU:$B02C PRG:302C BE 0B E5 + jmp BallPlayerMoveStartD ; CPU:$B02F PRG:302F 4C 32 B0 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartD: + sta BallVelocityX ; CPU:$B032 PRG:3032 8D 03 05 + stx BallTargetX ; CPU:$B035 PRG:3035 8E 0B 05 + ldy #$00 ; CPU:$B038 PRG:3038 A0 00 + lda BallY ; CPU:$B03A PRG:303A AD 01 05 + cmp #$49 ; CPU:$B03D PRG:303D C9 49 + bcc BallPlayerMoveStartD_Loop ; CPU:$B03F PRG:303F 90 08 + iny ; CPU:$B041 PRG:3041 C8 + iny ; CPU:$B042 PRG:3042 C8 + cmp #$68 ; CPU:$B043 PRG:3043 C9 68 + bcc BallPlayerMoveStartD_Loop ; CPU:$B045 PRG:3045 90 02 + iny ; CPU:$B047 PRG:3047 C8 + iny ; CPU:$B048 PRG:3048 C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartD_Loop: + lda PlayerLeftInput ; CPU:$B049 PRG:3049 A5 75 + and #$0C ; CPU:$B04B PRG:304B 29 0C + beq BallPlayerMoveStartD_Loop2 ; CPU:$B04D PRG:304D F0 0D + cmp #$04 ; CPU:$B04F PRG:304F C9 04 + beq BallPlayerMoveStartD_Loop3 ; CPU:$B051 PRG:3051 F0 12 + lda $E4DA,y ; CPU:$B053 PRG:3053 B9 DA E4 + ldx $E4DB,y ; CPU:$B056 PRG:3056 BE DB E4 + jmp BallPlayerMoveMiddleC ; CPU:$B059 PRG:3059 4C 6B B0 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartD_Loop2: + lda $E4E0,y ; CPU:$B05C PRG:305C B9 E0 E4 + ldx $E4E1,y ; CPU:$B05F PRG:305F BE E1 E4 + jmp BallPlayerMoveMiddleC ; CPU:$B062 PRG:3062 4C 6B B0 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartD_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartD_Loop3: + lda $E4E6,y ; CPU:$B065 PRG:3065 B9 E6 E4 + ldx $E4E7,y ; CPU:$B068 PRG:3068 BE E7 E4 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleC: + sta BallVelocityY ; CPU:$B06B PRG:306B 8D 04 05 + stx BallTargetY ; CPU:$B06E PRG:306E 8E 0C 05 + lda PlayerLeftInput ; CPU:$B071 PRG:3071 A5 75 + and #$80 ; CPU:$B073 PRG:3073 29 80 + bne BallPlayerMoveMiddleC_Loop ; CPU:$B075 PRG:3075 D0 05 + lda #$04 ; CPU:$B077 PRG:3077 A9 04 + jmp BallPlayerMoveEndC ; CPU:$B079 PRG:3079 4C 89 B0 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleC_Loop: + lda FrameCounter ; CPU:$B07C PRG:307C A5 2D + and #$02 ; CPU:$B07E PRG:307E 29 02 + beq BallPlayerMoveMiddleC_Loop2 ; CPU:$B080 PRG:3080 F0 05 + lda #$05 ; CPU:$B082 PRG:3082 A9 05 + jmp BallPlayerMoveEndC ; CPU:$B084 PRG:3084 4C 89 B0 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleC_Loop2: + lda #$06 ; CPU:$B087 PRG:3087 A9 06 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndC: + sta BallSpeed ; CPU:$B089 PRG:3089 8D 05 05 + sta BallPreviousX ; CPU:$B08C PRG:308C 8D 08 05 + sta $05DE ; CPU:$B08F PRG:308F 8D DE 05 + lda BallCountdown ; CPU:$B092 PRG:3092 AD 06 05 + sta $05DF ; CPU:$B095 PRG:3095 8D DF 05 + pla ; CPU:$B098 PRG:3098 68 + tay ; CPU:$B099 PRG:3099 A8 + pla ; CPU:$B09A PRG:309A 68 + tax ; CPU:$B09B PRG:309B AA + lda PlayerLeftInput ; CPU:$B09C PRG:309C A5 75 + and #$03 ; CPU:$B09E PRG:309E 29 03 + cmp #$02 ; CPU:$B0A0 PRG:30A0 C9 02 + bne BallPlayerMoveEndC_Loop ; CPU:$B0A2 PRG:30A2 D0 05 + lda #$0C ; CPU:$B0A4 PRG:30A4 A9 0C + jmp BallStoreTeamNumberD ; CPU:$B0A6 PRG:30A6 4C D0 B0 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndC_Loop: + lda BallVelocityY ; CPU:$B0A9 PRG:30A9 AD 04 05 + and #$80 ; CPU:$B0AC PRG:30AC 29 80 + beq BallPlayerMoveEndC_Loop2 ; CPU:$B0AE PRG:30AE F0 08 + lda BallTargetY ; CPU:$B0B0 PRG:30B0 AD 0C 05 + beq BallPlayerMoveEndC_Loop3 ; CPU:$B0B3 PRG:30B3 F0 0D + jmp BallStoreTeamNumberC ; CPU:$B0B5 PRG:30B5 4C CE B0 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndC_Loop2: + lda BallVelocityY ; CPU:$B0B8 PRG:30B8 AD 04 05 + bne BallPlayerMoveEndC_Loop4 ; CPU:$B0BB PRG:30BB D0 0C + lda BallTargetY ; CPU:$B0BD PRG:30BD AD 0C 05 + bne BallPlayerMoveEndC_Loop4 ; CPU:$B0C0 PRG:30C0 D0 07 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndC_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndC_Loop3: + lda BallY ; CPU:$B0C2 PRG:30C2 AD 01 05 + cmp #$58 ; CPU:$B0C5 PRG:30C5 C9 58 + bcc BallStoreTeamNumberC ; CPU:$B0C7 PRG:30C7 90 05 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndC_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndC_Loop4: + lda #$0E ; CPU:$B0C9 PRG:30C9 A9 0E + jmp BallStoreTeamNumberD ; CPU:$B0CB PRG:30CB 4C D0 B0 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberC: + lda #$0D ; CPU:$B0CE PRG:30CE A9 0D +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberD: + sta ScoreRecord,y ; CPU:$B0D0 PRG:30D0 99 13 05 + lda #$08 ; CPU:$B0D3 PRG:30D3 A9 08 + sta $0514,y ; CPU:$B0D5 PRG:30D5 99 14 05 + lda #$00 ; CPU:$B0D8 PRG:30D8 A9 00 + sta NationStateB ; CPU:$B0DA PRG:30DA 85 5F + rts ; CPU:$B0DC PRG:30DC 60 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC: + lda $0516,y ; CPU:$B0DD PRG:30DD B9 16 05 + and #$01 ; CPU:$B0E0 PRG:30E0 29 01 + beq BallHandlePlayerButtonC_Loop ; CPU:$B0E2 PRG:30E2 F0 03 + jmp BallClearBall ; CPU:$B0E4 PRG:30E4 4C 34 B2 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop: + lda ScoreRecord,y ; CPU:$B0E7 PRG:30E7 B9 13 05 + cmp #$13 ; CPU:$B0EA PRG:30EA C9 13 + beq BallHandlePlayerButtonC_Loop2 ; CPU:$B0EC PRG:30EC F0 11 + lda #$13 ; CPU:$B0EE PRG:30EE A9 13 + sta ScoreRecord,y ; CPU:$B0F0 PRG:30F0 99 13 05 + lda #$00 ; CPU:$B0F3 PRG:30F3 A9 00 + sta $0514,y ; CPU:$B0F5 PRG:30F5 99 14 05 + lda #$01 ; CPU:$B0F8 PRG:30F8 A9 01 + sta NationStateB ; CPU:$B0FA PRG:30FA 85 5F + jmp BallClearBall ; CPU:$B0FC PRG:30FC 4C 34 B2 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop2: + lda BallFrameCounter ; CPU:$B0FF PRG:30FF AD 02 05 + cmp #$40 ; CPU:$B102 PRG:3102 C9 40 + bcc BallHandlePlayerButtonC_Loop3 ; CPU:$B104 PRG:3104 90 03 + jmp BallClearBall ; CPU:$B106 PRG:3106 4C 34 B2 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop3: + cmp #$20 ; CPU:$B109 PRG:3109 C9 20 + bcs BallHandlePlayerButtonC_Loop4 ; CPU:$B10B PRG:310B B0 03 + jmp BallClearBall ; CPU:$B10D PRG:310D 4C 34 B2 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop4: + lda $0514,y ; CPU:$B110 PRG:3110 B9 14 05 + sta NumberToDisplay ; CPU:$B113 PRG:3113 85 45 + txa ; CPU:$B115 PRG:3115 8A + pha ; CPU:$B116 PRG:3116 48 + tya ; CPU:$B117 PRG:3117 98 + pha ; CPU:$B118 PRG:3118 48 + ldy #$00 ; CPU:$B119 PRG:3119 A0 00 + lda BallX ; CPU:$B11B PRG:311B AD 00 05 + cmp #$33 ; CPU:$B11E PRG:311E C9 33 + bcs BallHandlePlayerButtonC_Loop5 ; CPU:$B120 PRG:3120 B0 08 + ldy #$06 ; CPU:$B122 PRG:3122 A0 06 + cmp #$15 ; CPU:$B124 PRG:3124 C9 15 + bcs BallHandlePlayerButtonC_Loop5 ; CPU:$B126 PRG:3126 B0 02 + ldy #$0C ; CPU:$B128 PRG:3128 A0 0C +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop5: + lda NumberToDisplay ; CPU:$B12A PRG:312A A5 45 + cmp #$05 ; CPU:$B12C PRG:312C C9 05 + bcs BallHandlePlayerButtonC_Loop6 ; CPU:$B12E PRG:312E B0 03 + jmp BallRestorePlayerSlot ; CPU:$B130 PRG:3130 4C 30 B2 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop6: + cmp #$07 ; CPU:$B133 PRG:3133 C9 07 + bcc BallHandlePlayerButtonC_Loop7 ; CPU:$B135 PRG:3135 90 0B + cmp #$09 ; CPU:$B137 PRG:3137 C9 09 + bcc BallHandlePlayerButtonC_Loop8 ; CPU:$B139 PRG:3139 90 0A + cmp #$0B ; CPU:$B13B PRG:313B C9 0B + bcc BallHandlePlayerButtonC_Loop7 ; CPU:$B13D PRG:313D 90 03 + jmp BallRestorePlayerSlot ; CPU:$B13F PRG:313F 4C 30 B2 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop7: + iny ; CPU:$B142 PRG:3142 C8 + iny ; CPU:$B143 PRG:3143 C8 + iny ; CPU:$B144 PRG:3144 C8 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop8: + lda PlayerLeftInput ; CPU:$B145 PRG:3145 A5 75 + and #$03 ; CPU:$B147 PRG:3147 29 03 + beq BallHandlePlayerButtonC_Loop9 ; CPU:$B149 PRG:3149 F0 11 + cmp #$01 ; CPU:$B14B PRG:314B C9 01 + beq BallHandlePlayerButtonC_Loop10 ; CPU:$B14D PRG:314D F0 1A + lda $E548,y ; CPU:$B14F PRG:314F B9 48 E5 + pha ; CPU:$B152 PRG:3152 48 + lda $E546,y ; CPU:$B153 PRG:3153 B9 46 E5 + ldx $E547,y ; CPU:$B156 PRG:3156 BE 47 E5 + jmp BallStorePlayerStateE ; CPU:$B159 PRG:3159 4C 76 B1 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop9: + lda $E55A,y ; CPU:$B15C PRG:315C B9 5A E5 + pha ; CPU:$B15F PRG:315F 48 + lda $E558,y ; CPU:$B160 PRG:3160 B9 58 E5 + ldx $E559,y ; CPU:$B163 PRG:3163 BE 59 E5 + jmp BallStorePlayerStateE ; CPU:$B166 PRG:3166 4C 76 B1 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonC_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonC_Loop10: + lda $E56C,y ; CPU:$B169 PRG:3169 B9 6C E5 + pha ; CPU:$B16C PRG:316C 48 + lda $E56A,y ; CPU:$B16D PRG:316D B9 6A E5 + ldx $E56B,y ; CPU:$B170 PRG:3170 BE 6B E5 + jmp BallStorePlayerStateE ; CPU:$B173 PRG:3173 4C 76 B1 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateE: + sta BallSpeed ; CPU:$B176 PRG:3176 8D 05 05 + stx BallVelocityX ; CPU:$B179 PRG:3179 8E 03 05 + pla ; CPU:$B17C PRG:317C 68 + sta BallTargetX ; CPU:$B17D PRG:317D 8D 0B 05 + lda PlayerLeftInput ; CPU:$B180 PRG:3180 A5 75 + and #$01 ; CPU:$B182 PRG:3182 29 01 + beq BallStorePlayerStateE_Loop ; CPU:$B184 PRG:3184 F0 03 + jmp BallPlayerMoveMiddleD ; CPU:$B186 PRG:3186 4C C2 B1 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateE_Loop: + ldy #$00 ; CPU:$B189 PRG:3189 A0 00 + lda BallY ; CPU:$B18B PRG:318B AD 01 05 + cmp #$49 ; CPU:$B18E PRG:318E C9 49 + bcc BallStorePlayerStateE_Loop2 ; CPU:$B190 PRG:3190 90 08 + iny ; CPU:$B192 PRG:3192 C8 + iny ; CPU:$B193 PRG:3193 C8 + cmp #$68 ; CPU:$B194 PRG:3194 C9 68 + bcc BallStorePlayerStateE_Loop2 ; CPU:$B196 PRG:3196 90 02 + iny ; CPU:$B198 PRG:3198 C8 + iny ; CPU:$B199 PRG:3199 C8 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateE_Loop2: + lda PlayerLeftInput ; CPU:$B19A PRG:319A A5 75 + and #$0C ; CPU:$B19C PRG:319C 29 0C + beq BallStorePlayerStateE_Loop3 ; CPU:$B19E PRG:319E F0 0D + cmp #$04 ; CPU:$B1A0 PRG:31A0 C9 04 + beq BallStorePlayerStateE_Loop4 ; CPU:$B1A2 PRG:31A2 F0 12 + lda $E510,y ; CPU:$B1A4 PRG:31A4 B9 10 E5 + ldx $E511,y ; CPU:$B1A7 PRG:31A7 BE 11 E5 + jmp BallStorePlayerStateF ; CPU:$B1AA PRG:31AA 4C BC B1 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateE_Loop3: + lda $E516,y ; CPU:$B1AD PRG:31AD B9 16 E5 + ldx $E517,y ; CPU:$B1B0 PRG:31B0 BE 17 E5 + jmp BallStorePlayerStateF ; CPU:$B1B3 PRG:31B3 4C BC B1 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateE_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateE_Loop4: + lda $E51C,y ; CPU:$B1B6 PRG:31B6 B9 1C E5 + ldx $E51D,y ; CPU:$B1B9 PRG:31B9 BE 1D E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateF: + sta BallVelocityY ; CPU:$B1BC PRG:31BC 8D 04 05 + jmp BallCheckPlayerFacing ; CPU:$B1BF PRG:31BF 4C FB B1 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleD: + ldy #$00 ; CPU:$B1C2 PRG:31C2 A0 00 + lda BallY ; CPU:$B1C4 PRG:31C4 AD 01 05 + cmp #$49 ; CPU:$B1C7 PRG:31C7 C9 49 + bcc BallPlayerMoveMiddleD_Loop ; CPU:$B1C9 PRG:31C9 90 08 + iny ; CPU:$B1CB PRG:31CB C8 + iny ; CPU:$B1CC PRG:31CC C8 + cmp #$68 ; CPU:$B1CD PRG:31CD C9 68 + bcc BallPlayerMoveMiddleD_Loop ; CPU:$B1CF PRG:31CF 90 02 + iny ; CPU:$B1D1 PRG:31D1 C8 + iny ; CPU:$B1D2 PRG:31D2 C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleD_Loop: + lda PlayerLeftInput ; CPU:$B1D3 PRG:31D3 A5 75 + and #$0C ; CPU:$B1D5 PRG:31D5 29 0C + beq BallPlayerMoveMiddleD_Loop2 ; CPU:$B1D7 PRG:31D7 F0 0D + cmp #$04 ; CPU:$B1D9 PRG:31D9 C9 04 + beq BallPlayerMoveMiddleD_Loop3 ; CPU:$B1DB PRG:31DB F0 12 + lda $E522,y ; CPU:$B1DD PRG:31DD B9 22 E5 + ldx $E523,y ; CPU:$B1E0 PRG:31E0 BE 23 E5 + jmp BallStorePlayerStateG ; CPU:$B1E3 PRG:31E3 4C F5 B1 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleD_Loop2: + lda $E528,y ; CPU:$B1E6 PRG:31E6 B9 28 E5 + ldx $E529,y ; CPU:$B1E9 PRG:31E9 BE 29 E5 + jmp BallStorePlayerStateG ; CPU:$B1EC PRG:31EC 4C F5 B1 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleD_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleD_Loop3: + lda $E52E,y ; CPU:$B1EF PRG:31EF B9 2E E5 + ldx $E52F,y ; CPU:$B1F2 PRG:31F2 BE 2F E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateG: + sta BallVelocityY ; CPU:$B1F5 PRG:31F5 8D 04 05 + stx BallTargetY ; CPU:$B1F8 PRG:31F8 8E 0C 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacing +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacing: + lda PlayerLeftInput ; CPU:$B1FB PRG:31FB A5 75 + and #$03 ; CPU:$B1FD PRG:31FD 29 03 + cmp #$01 ; CPU:$B1FF PRG:31FF C9 01 + bne BallCheckPlayerFacing_Loop ; CPU:$B201 PRG:3201 D0 0C + lda BallSpeed ; CPU:$B203 PRG:3203 AD 05 05 + clc ; CPU:$B206 PRG:3206 18 + adc #$01 ; CPU:$B207 PRG:3207 69 01 + sta BallPreviousX ; CPU:$B209 PRG:3209 8D 08 05 + jmp BallPlayHitSound ; CPU:$B20C PRG:320C 4C 23 B2 +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacing_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacing_Loop: + cmp #$02 ; CPU:$B20F PRG:320F C9 02 + bne BallCheckPlayerFacing_Loop2 ; CPU:$B211 PRG:3211 D0 08 + lda #$04 ; CPU:$B213 PRG:3213 A9 04 + sta BallPreviousX ; CPU:$B215 PRG:3215 8D 08 05 + jmp BallPlayHitSound ; CPU:$B218 PRG:3218 4C 23 B2 +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacing_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacing_Loop2: + lda #$03 ; CPU:$B21B PRG:321B A9 03 + sta BallPreviousX ; CPU:$B21D PRG:321D 8D 08 05 + jmp BallPlayHitSound ; CPU:$B220 PRG:3220 4C 23 B2 +; ----------------------------------------------------------------------------- +; Routine: BallPlayHitSound +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayHitSound: + lda #$02 ; CPU:$B223 PRG:3223 A9 02 + sta SfxCommand ; CPU:$B225 PRG:3225 85 EF + pla ; CPU:$B227 PRG:3227 68 + tay ; CPU:$B228 PRG:3228 A8 + pla ; CPU:$B229 PRG:3229 68 + tax ; CPU:$B22A PRG:322A AA + lda #$00 ; CPU:$B22B PRG:322B A9 00 + sta NumberToDisplay ; CPU:$B22D PRG:322D 85 45 + rts ; CPU:$B22F PRG:322F 60 +; ----------------------------------------------------------------------------- +; Routine: BallRestorePlayerSlot +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallRestorePlayerSlot: + pla ; CPU:$B230 PRG:3230 68 + tay ; CPU:$B231 PRG:3231 A8 + pla ; CPU:$B232 PRG:3232 68 + tax ; CPU:$B233 PRG:3233 AA +; ----------------------------------------------------------------------------- +; Routine: BallClearBall +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallClearBall: + lda #$FF ; CPU:$B234 PRG:3234 A9 FF + sta NumberToDisplay ; CPU:$B236 PRG:3236 85 45 + rts ; CPU:$B238 PRG:3238 60 +; ----------------------------------------------------------------------------- +; Routine: BallSelectSlotC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSelectSlotC: + ldx #$05 ; CPU:$B239 PRG:3239 A2 05 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC: + txa ; CPU:$B23B PRG:323B 8A + asl a ; CPU:$B23C PRG:323C 0A + asl a ; CPU:$B23D PRG:323D 0A + asl a ; CPU:$B23E PRG:323E 0A + tay ; CPU:$B23F PRG:323F A8 + lda BallX ; CPU:$B240 PRG:3240 AD 00 05 + clc ; CPU:$B243 PRG:3243 18 + adc #$08 ; CPU:$B244 PRG:3244 69 08 + sta NumberToDisplay ; CPU:$B246 PRG:3246 85 45 + lda BallPositionX,y ; CPU:$B248 PRG:3248 B9 0F 05 + clc ; CPU:$B24B PRG:324B 18 + adc #$18 ; CPU:$B24C PRG:324C 69 18 + sec ; CPU:$B24E PRG:324E 38 + sbc NumberToDisplay ; CPU:$B24F PRG:324F E5 45 + bcs BallSlotOffsetC_Loop ; CPU:$B251 PRG:3251 B0 03 + jmp BallNextPlayerSlotF ; CPU:$B253 PRG:3253 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop: + cmp #$20 ; CPU:$B256 PRG:3256 C9 20 + bcc BallSlotOffsetC_Loop2 ; CPU:$B258 PRG:3258 90 03 + jmp BallNextPlayerSlotF ; CPU:$B25A PRG:325A 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop2: + lda BallPositionY,y ; CPU:$B25D PRG:325D B9 10 05 + clc ; CPU:$B260 PRG:3260 18 + adc #$10 ; CPU:$B261 PRG:3261 69 10 + sec ; CPU:$B263 PRG:3263 38 + sbc BallY ; CPU:$B264 PRG:3264 ED 01 05 + bcs BallSlotOffsetC_Loop3 ; CPU:$B267 PRG:3267 B0 03 + jmp BallNextPlayerSlotF ; CPU:$B269 PRG:3269 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop3: + cmp #$20 ; CPU:$B26C PRG:326C C9 20 + bcc BallSlotOffsetC_Loop4 ; CPU:$B26E PRG:326E 90 03 + jmp BallNextPlayerSlotF ; CPU:$B270 PRG:3270 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop4: + lda PlayerLeftInput ; CPU:$B273 PRG:3273 A5 75 + and #$80 ; CPU:$B275 PRG:3275 29 80 + beq BallSlotOffsetC_Loop5 ; CPU:$B277 PRG:3277 F0 03 + jmp BallHandlePlayerButtonD ; CPU:$B279 PRG:3279 4C F8 B3 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop5: + lda $0516,y ; CPU:$B27C PRG:327C B9 16 05 + and #$01 ; CPU:$B27F PRG:327F 29 01 + beq BallSlotOffsetC_Loop6 ; CPU:$B281 PRG:3281 F0 03 + jmp BallNextPlayerSlotF ; CPU:$B283 PRG:3283 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop6: + lda ScoreRecord,y ; CPU:$B286 PRG:3286 B9 13 05 + cmp #$13 ; CPU:$B289 PRG:3289 C9 13 + beq BallSlotOffsetC_Loop7 ; CPU:$B28B PRG:328B F0 11 + lda #$13 ; CPU:$B28D PRG:328D A9 13 + sta ScoreRecord,y ; CPU:$B28F PRG:328F 99 13 05 + lda #$00 ; CPU:$B292 PRG:3292 A9 00 + sta $0514,y ; CPU:$B294 PRG:3294 99 14 05 + lda #$01 ; CPU:$B297 PRG:3297 A9 01 + sta NationStateB ; CPU:$B299 PRG:3299 85 5F + jmp BallNextPlayerSlotF ; CPU:$B29B PRG:329B 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop7: + lda BallX ; CPU:$B29E PRG:329E AD 00 05 + clc ; CPU:$B2A1 PRG:32A1 18 + adc #$08 ; CPU:$B2A2 PRG:32A2 69 08 + sta NumberToDisplay ; CPU:$B2A4 PRG:32A4 85 45 + lda BallPositionX,y ; CPU:$B2A6 PRG:32A6 B9 0F 05 + clc ; CPU:$B2A9 PRG:32A9 18 + adc #$10 ; CPU:$B2AA PRG:32AA 69 10 + sec ; CPU:$B2AC PRG:32AC 38 + sbc NumberToDisplay ; CPU:$B2AD PRG:32AD E5 45 + bcs BallSlotOffsetC_Loop8 ; CPU:$B2AF PRG:32AF B0 03 + jmp BallNextPlayerSlotF ; CPU:$B2B1 PRG:32B1 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop8: + cmp #$10 ; CPU:$B2B4 PRG:32B4 C9 10 + bcc BallSlotOffsetC_Loop9 ; CPU:$B2B6 PRG:32B6 90 03 + jmp BallNextPlayerSlotF ; CPU:$B2B8 PRG:32B8 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop9: + lda BallPositionY,y ; CPU:$B2BB PRG:32BB B9 10 05 + clc ; CPU:$B2BE PRG:32BE 18 + adc #$08 ; CPU:$B2BF PRG:32BF 69 08 + sec ; CPU:$B2C1 PRG:32C1 38 + sbc BallY ; CPU:$B2C2 PRG:32C2 ED 01 05 + bcs BallSlotOffsetC_Loop10 ; CPU:$B2C5 PRG:32C5 B0 03 + jmp BallNextPlayerSlotF ; CPU:$B2C7 PRG:32C7 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop10: + cmp #$10 ; CPU:$B2CA PRG:32CA C9 10 + bcc BallSlotOffsetC_Loop11 ; CPU:$B2CC PRG:32CC 90 03 + jmp BallNextPlayerSlotF ; CPU:$B2CE PRG:32CE 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop11: + lda BallFrameCounter ; CPU:$B2D1 PRG:32D1 AD 02 05 + cmp #$40 ; CPU:$B2D4 PRG:32D4 C9 40 + bcc BallSlotOffsetC_Loop12 ; CPU:$B2D6 PRG:32D6 90 03 + jmp BallNextPlayerSlotF ; CPU:$B2D8 PRG:32D8 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop12: + cmp #$20 ; CPU:$B2DB PRG:32DB C9 20 + bcs BallSlotOffsetC_Loop13 ; CPU:$B2DD PRG:32DD B0 03 + jmp BallNextPlayerSlotF ; CPU:$B2DF PRG:32DF 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop13: + lda $0514,y ; CPU:$B2E2 PRG:32E2 B9 14 05 + sta NumberToDisplay ; CPU:$B2E5 PRG:32E5 85 45 + txa ; CPU:$B2E7 PRG:32E7 8A + pha ; CPU:$B2E8 PRG:32E8 48 + tya ; CPU:$B2E9 PRG:32E9 98 + pha ; CPU:$B2EA PRG:32EA 48 + ldy #$00 ; CPU:$B2EB PRG:32EB A0 00 + lda BallX ; CPU:$B2ED PRG:32ED AD 00 05 + cmp #$33 ; CPU:$B2F0 PRG:32F0 C9 33 + bcs BallSlotOffsetC_Loop14 ; CPU:$B2F2 PRG:32F2 B0 08 + ldy #$06 ; CPU:$B2F4 PRG:32F4 A0 06 + cmp #$15 ; CPU:$B2F6 PRG:32F6 C9 15 + bcs BallSlotOffsetC_Loop14 ; CPU:$B2F8 PRG:32F8 B0 02 + ldy #$0C ; CPU:$B2FA PRG:32FA A0 0C +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop14: + lda NumberToDisplay ; CPU:$B2FC PRG:32FC A5 45 + cmp #$05 ; CPU:$B2FE PRG:32FE C9 05 + bcs BallSlotOffsetC_Loop15 ; CPU:$B300 PRG:3300 B0 03 + jmp BallRestorePlayerSlotC ; CPU:$B302 PRG:3302 4C EE B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop15: + cmp #$07 ; CPU:$B305 PRG:3305 C9 07 + bcc BallSlotOffsetC_Loop16 ; CPU:$B307 PRG:3307 90 0B + cmp #$09 ; CPU:$B309 PRG:3309 C9 09 + bcc BallSlotOffsetC_Loop17 ; CPU:$B30B PRG:330B 90 0A + cmp #$0B ; CPU:$B30D PRG:330D C9 0B + bcc BallSlotOffsetC_Loop16 ; CPU:$B30F PRG:330F 90 03 + jmp BallRestorePlayerSlotC ; CPU:$B311 PRG:3311 4C EE B4 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop16: + iny ; CPU:$B314 PRG:3314 C8 + iny ; CPU:$B315 PRG:3315 C8 + iny ; CPU:$B316 PRG:3316 C8 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop17: + lda PlayerLeftInput ; CPU:$B317 PRG:3317 A5 75 + and #$03 ; CPU:$B319 PRG:3319 29 03 + beq BallSlotOffsetC_Loop18 ; CPU:$B31B PRG:331B F0 11 + cmp #$01 ; CPU:$B31D PRG:331D C9 01 + beq BallSlotOffsetC_Loop19 ; CPU:$B31F PRG:331F F0 1A + lda $E548,y ; CPU:$B321 PRG:3321 B9 48 E5 + pha ; CPU:$B324 PRG:3324 48 + lda $E546,y ; CPU:$B325 PRG:3325 B9 46 E5 + ldx $E547,y ; CPU:$B328 PRG:3328 BE 47 E5 + jmp BallStorePlayerStateH ; CPU:$B32B PRG:332B 4C 48 B3 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop18: + lda $E55A,y ; CPU:$B32E PRG:332E B9 5A E5 + pha ; CPU:$B331 PRG:3331 48 + lda $E558,y ; CPU:$B332 PRG:3332 B9 58 E5 + ldx $E559,y ; CPU:$B335 PRG:3335 BE 59 E5 + jmp BallStorePlayerStateH ; CPU:$B338 PRG:3338 4C 48 B3 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetC_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetC_Loop19: + lda $E56C,y ; CPU:$B33B PRG:333B B9 6C E5 + pha ; CPU:$B33E PRG:333E 48 + lda $E56A,y ; CPU:$B33F PRG:333F B9 6A E5 + ldx $E56B,y ; CPU:$B342 PRG:3342 BE 6B E5 + jmp BallStorePlayerStateH ; CPU:$B345 PRG:3345 4C 48 B3 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateH: + sta BallSpeed ; CPU:$B348 PRG:3348 8D 05 05 + stx BallVelocityX ; CPU:$B34B PRG:334B 8E 03 05 + pla ; CPU:$B34E PRG:334E 68 + sta BallTargetX ; CPU:$B34F PRG:334F 8D 0B 05 + lda PlayerLeftInput ; CPU:$B352 PRG:3352 A5 75 + and #$01 ; CPU:$B354 PRG:3354 29 01 + beq BallStorePlayerStateH_Loop ; CPU:$B356 PRG:3356 F0 03 + jmp BallPlayerMoveMiddleE ; CPU:$B358 PRG:3358 4C 97 B3 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateH_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateH_Loop: + ldy #$00 ; CPU:$B35B PRG:335B A0 00 + lda BallY ; CPU:$B35D PRG:335D AD 01 05 + cmp #$49 ; CPU:$B360 PRG:3360 C9 49 + bcc BallStorePlayerStateH_Loop2 ; CPU:$B362 PRG:3362 90 08 + iny ; CPU:$B364 PRG:3364 C8 + iny ; CPU:$B365 PRG:3365 C8 + cmp #$68 ; CPU:$B366 PRG:3366 C9 68 + bcc BallStorePlayerStateH_Loop2 ; CPU:$B368 PRG:3368 90 02 + iny ; CPU:$B36A PRG:336A C8 + iny ; CPU:$B36B PRG:336B C8 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateH_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateH_Loop2: + lda PlayerLeftInput ; CPU:$B36C PRG:336C A5 75 + and #$0C ; CPU:$B36E PRG:336E 29 0C + beq BallStorePlayerStateH_Loop3 ; CPU:$B370 PRG:3370 F0 0D + cmp #$04 ; CPU:$B372 PRG:3372 C9 04 + beq BallStorePlayerStateH_Loop4 ; CPU:$B374 PRG:3374 F0 12 + lda $E510,y ; CPU:$B376 PRG:3376 B9 10 E5 + ldx $E511,y ; CPU:$B379 PRG:3379 BE 11 E5 + jmp BallStorePlayerStateI ; CPU:$B37C PRG:337C 4C 8E B3 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateH_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateH_Loop3: + lda $E516,y ; CPU:$B37F PRG:337F B9 16 E5 + ldx $E517,y ; CPU:$B382 PRG:3382 BE 17 E5 + jmp BallStorePlayerStateI ; CPU:$B385 PRG:3385 4C 8E B3 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateH_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateH_Loop4: + lda $E51C,y ; CPU:$B388 PRG:3388 B9 1C E5 + ldx $E51D,y ; CPU:$B38B PRG:338B BE 1D E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateI +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateI: + sta BallVelocityY ; CPU:$B38E PRG:338E 8D 04 05 + stx BallTargetY ; CPU:$B391 PRG:3391 8E 0C 05 + jmp BallCheckPlayerFacingB ; CPU:$B394 PRG:3394 4C D0 B3 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleE: + ldy #$00 ; CPU:$B397 PRG:3397 A0 00 + lda BallY ; CPU:$B399 PRG:3399 AD 01 05 + cmp #$49 ; CPU:$B39C PRG:339C C9 49 + bcc BallPlayerMoveMiddleE_Loop ; CPU:$B39E PRG:339E 90 08 + iny ; CPU:$B3A0 PRG:33A0 C8 + iny ; CPU:$B3A1 PRG:33A1 C8 + cmp #$68 ; CPU:$B3A2 PRG:33A2 C9 68 + bcc BallPlayerMoveMiddleE_Loop ; CPU:$B3A4 PRG:33A4 90 02 + iny ; CPU:$B3A6 PRG:33A6 C8 + iny ; CPU:$B3A7 PRG:33A7 C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleE_Loop: + lda PlayerLeftInput ; CPU:$B3A8 PRG:33A8 A5 75 + and #$0C ; CPU:$B3AA PRG:33AA 29 0C + beq BallPlayerMoveMiddleE_Loop2 ; CPU:$B3AC PRG:33AC F0 0D + cmp #$04 ; CPU:$B3AE PRG:33AE C9 04 + beq BallPlayerMoveMiddleE_Loop3 ; CPU:$B3B0 PRG:33B0 F0 12 + lda $E522,y ; CPU:$B3B2 PRG:33B2 B9 22 E5 + ldx $E523,y ; CPU:$B3B5 PRG:33B5 BE 23 E5 + jmp BallStorePlayerStateJ ; CPU:$B3B8 PRG:33B8 4C CA B3 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleE_Loop2: + lda $E528,y ; CPU:$B3BB PRG:33BB B9 28 E5 + ldx $E529,y ; CPU:$B3BE PRG:33BE BE 29 E5 + jmp BallStorePlayerStateJ ; CPU:$B3C1 PRG:33C1 4C CA B3 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleE_Loop3: + lda $E52E,y ; CPU:$B3C4 PRG:33C4 B9 2E E5 + ldx $E52F,y ; CPU:$B3C7 PRG:33C7 BE 2F E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateJ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateJ: + sta BallVelocityY ; CPU:$B3CA PRG:33CA 8D 04 05 + stx BallTargetY ; CPU:$B3CD PRG:33CD 8E 0C 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacingB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacingB: + lda PlayerLeftInput ; CPU:$B3D0 PRG:33D0 A5 75 + and #$03 ; CPU:$B3D2 PRG:33D2 29 03 + cmp #$01 ; CPU:$B3D4 PRG:33D4 C9 01 + bne BallCheckPlayerFacingB_Loop ; CPU:$B3D6 PRG:33D6 D0 0C + lda BallSpeed ; CPU:$B3D8 PRG:33D8 AD 05 05 + clc ; CPU:$B3DB PRG:33DB 18 + adc #$01 ; CPU:$B3DC PRG:33DC 69 01 + sta BallPreviousX ; CPU:$B3DE PRG:33DE 8D 08 05 + jmp BallRestorePlayerSlotB ; CPU:$B3E1 PRG:33E1 4C 9F B4 +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacingB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacingB_Loop: + cmp #$02 ; CPU:$B3E4 PRG:33E4 C9 02 + bne BallCheckPlayerFacingB_Loop2 ; CPU:$B3E6 PRG:33E6 D0 08 + lda #$04 ; CPU:$B3E8 PRG:33E8 A9 04 + sta BallPreviousX ; CPU:$B3EA PRG:33EA 8D 08 05 + jmp BallRestorePlayerSlotB ; CPU:$B3ED PRG:33ED 4C 9F B4 +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacingB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacingB_Loop2: + lda #$03 ; CPU:$B3F0 PRG:33F0 A9 03 + sta BallPreviousX ; CPU:$B3F2 PRG:33F2 8D 08 05 + jmp BallRestorePlayerSlotB ; CPU:$B3F5 PRG:33F5 4C 9F B4 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonD: + lda $0516,y ; CPU:$B3F8 PRG:33F8 B9 16 05 + and #$01 ; CPU:$B3FB PRG:33FB 29 01 + beq BallHandlePlayerButtonD_Loop ; CPU:$B3FD PRG:33FD F0 03 + jmp BallNextPlayerSlotF ; CPU:$B3FF PRG:33FF 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonD_Loop: + lda BallFrameCounter ; CPU:$B402 PRG:3402 AD 02 05 + cmp #$18 ; CPU:$B405 PRG:3405 C9 18 + bcc BallHandlePlayerButtonD_Loop2 ; CPU:$B407 PRG:3407 90 03 + jmp BallNextPlayerSlotF ; CPU:$B409 PRG:3409 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonD_Loop2: + txa ; CPU:$B40C PRG:340C 8A + pha ; CPU:$B40D PRG:340D 48 + tya ; CPU:$B40E PRG:340E 98 + pha ; CPU:$B40F PRG:340F 48 + ldy #$00 ; CPU:$B410 PRG:3410 A0 00 + lda BallX ; CPU:$B412 PRG:3412 AD 00 05 + cmp #$33 ; CPU:$B415 PRG:3415 C9 33 + bcs BallHandlePlayerButtonD_Loop3 ; CPU:$B417 PRG:3417 B0 08 + iny ; CPU:$B419 PRG:3419 C8 + iny ; CPU:$B41A PRG:341A C8 + cmp #$15 ; CPU:$B41B PRG:341B C9 15 + bcs BallHandlePlayerButtonD_Loop3 ; CPU:$B41D PRG:341D B0 02 + iny ; CPU:$B41F PRG:341F C8 + iny ; CPU:$B420 PRG:3420 C8 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonD_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonD_Loop3: + lda PlayerLeftInput ; CPU:$B421 PRG:3421 A5 75 + and #$03 ; CPU:$B423 PRG:3423 29 03 + beq BallHandlePlayerButtonD_Loop4 ; CPU:$B425 PRG:3425 F0 0D + cmp #$01 ; CPU:$B427 PRG:3427 C9 01 + beq BallHandlePlayerButtonD_Loop5 ; CPU:$B429 PRG:3429 F0 12 + lda $E534,y ; CPU:$B42B PRG:342B B9 34 E5 + ldx $E535,y ; CPU:$B42E PRG:342E BE 35 E5 + jmp BallStorePlayerStateK ; CPU:$B431 PRG:3431 4C 43 B4 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonD_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonD_Loop4: + lda $E53A,y ; CPU:$B434 PRG:3434 B9 3A E5 + ldx $E53B,y ; CPU:$B437 PRG:3437 BE 3B E5 + jmp BallStorePlayerStateK ; CPU:$B43A PRG:343A 4C 43 B4 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonD_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonD_Loop5: + lda $E540,y ; CPU:$B43D PRG:343D B9 40 E5 + ldx $E541,y ; CPU:$B440 PRG:3440 BE 41 E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateK +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateK: + sta BallVelocityX ; CPU:$B443 PRG:3443 8D 03 05 + stx BallTargetX ; CPU:$B446 PRG:3446 8E 0B 05 + ldy #$00 ; CPU:$B449 PRG:3449 A0 00 + lda BallY ; CPU:$B44B PRG:344B AD 01 05 + cmp #$49 ; CPU:$B44E PRG:344E C9 49 + bcc BallStorePlayerStateK_Loop ; CPU:$B450 PRG:3450 90 08 + iny ; CPU:$B452 PRG:3452 C8 + iny ; CPU:$B453 PRG:3453 C8 + cmp #$68 ; CPU:$B454 PRG:3454 C9 68 + bcc BallStorePlayerStateK_Loop ; CPU:$B456 PRG:3456 90 02 + iny ; CPU:$B458 PRG:3458 C8 + iny ; CPU:$B459 PRG:3459 C8 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateK_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateK_Loop: + lda PlayerLeftInput ; CPU:$B45A PRG:345A A5 75 + and #$0C ; CPU:$B45C PRG:345C 29 0C + beq BallStorePlayerStateK_Loop2 ; CPU:$B45E PRG:345E F0 0D + cmp #$04 ; CPU:$B460 PRG:3460 C9 04 + beq BallStorePlayerStateK_Loop3 ; CPU:$B462 PRG:3462 F0 12 + lda $E4DA,y ; CPU:$B464 PRG:3464 B9 DA E4 + ldx $E4DB,y ; CPU:$B467 PRG:3467 BE DB E4 + jmp BallStorePlayerStateL ; CPU:$B46A PRG:346A 4C 7C B4 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateK_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateK_Loop2: + lda $E4E0,y ; CPU:$B46D PRG:346D B9 E0 E4 + ldx $E4E1,y ; CPU:$B470 PRG:3470 BE E1 E4 + jmp BallStorePlayerStateL ; CPU:$B473 PRG:3473 4C 7C B4 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateK_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateK_Loop3: + lda $E4E6,y ; CPU:$B476 PRG:3476 B9 E6 E4 + ldx $E4E7,y ; CPU:$B479 PRG:3479 BE E7 E4 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateL +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateL: + sta BallVelocityY ; CPU:$B47C PRG:347C 8D 04 05 + stx BallTargetY ; CPU:$B47F PRG:347F 8E 0C 05 + lda #$06 ; CPU:$B482 PRG:3482 A9 06 + sta BallSpeed ; CPU:$B484 PRG:3484 8D 05 05 + sta BallPreviousX ; CPU:$B487 PRG:3487 8D 08 05 + pla ; CPU:$B48A PRG:348A 68 + tay ; CPU:$B48B PRG:348B A8 + pla ; CPU:$B48C PRG:348C 68 + tax ; CPU:$B48D PRG:348D AA + lda #$0C ; CPU:$B48E PRG:348E A9 0C + sta ScoreRecord,y ; CPU:$B490 PRG:3490 99 13 05 + lda #$08 ; CPU:$B493 PRG:3493 A9 08 + sta $0514,y ; CPU:$B495 PRG:3495 99 14 05 + lda #$01 ; CPU:$B498 PRG:3498 A9 01 + sta SfxCommand ; CPU:$B49A PRG:349A 85 EF + jmp BallNextPlayerSlotE ; CPU:$B49C PRG:349C 4C A7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallRestorePlayerSlotB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallRestorePlayerSlotB: + pla ; CPU:$B49F PRG:349F 68 + tay ; CPU:$B4A0 PRG:34A0 A8 + pla ; CPU:$B4A1 PRG:34A1 68 + tax ; CPU:$B4A2 PRG:34A2 AA + lda #$02 ; CPU:$B4A3 PRG:34A3 A9 02 + sta SfxCommand ; CPU:$B4A5 PRG:34A5 85 EF +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotE: + txa ; CPU:$B4A7 PRG:34A7 8A + pha ; CPU:$B4A8 PRG:34A8 48 + inc PlayerSlotIndex ; CPU:$B4A9 PRG:34A9 E6 8B + lda #$00 ; CPU:$B4AB PRG:34AB A9 00 + sta PlayerSlotIndex2 ; CPU:$B4AD PRG:34AD 85 8C + jsr DrawNumberSpriteAE ; CPU:$B4AF PRG:34AF 20 93 D0 + jsr GetCrowdSpriteY ; CPU:$B4B2 PRG:34B2 20 B1 C7 + jsr DrawNumberSpriteH ; CPU:$B4B5 PRG:34B5 20 04 C9 + lda ColorIndex ; CPU:$B4B8 PRG:34B8 A5 47 + asl a ; CPU:$B4BA PRG:34BA 0A + bcc BallNextPlayerSlotE_Loop ; CPU:$B4BB PRG:34BB 90 10 + jsr DrawNumberSpriteM ; CPU:$B4BD PRG:34BD 20 CE C9 + lda #$00 ; CPU:$B4C0 PRG:34C0 A9 00 + sta TeamScore1Hi ; CPU:$B4C2 PRG:34C2 85 55 + lda #$15 ; CPU:$B4C4 PRG:34C4 A9 15 + sta CrowdFlagsA ; CPU:$B4C6 PRG:34C6 85 50 + lda #$03 ; CPU:$B4C8 PRG:34C8 A9 03 + jmp BallFinishPlayerUpdateC ; CPU:$B4CA PRG:34CA 4C D8 B4 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotE_Loop: + lda BallFlags ; CPU:$B4CD PRG:34CD A5 6E + ora #$01 ; CPU:$B4CF PRG:34CF 09 01 + sta BallFlags ; CPU:$B4D1 PRG:34D1 85 6E + jsr CheckCrowdOffset ; CPU:$B4D3 PRG:34D3 20 3B C9 + lda #$00 ; CPU:$B4D6 PRG:34D6 A9 00 +; ----------------------------------------------------------------------------- +; Routine: BallFinishPlayerUpdateC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFinishPlayerUpdateC: + sta TeamScore1Lo ; CPU:$B4D8 PRG:34D8 85 54 + jsr DrawNumberSpriteV ; CPU:$B4DA PRG:34DA 20 5B CB + jsr ClearTeamSpriteFlags ; CPU:$B4DD PRG:34DD 20 89 CB + lda #$FF ; CPU:$B4E0 PRG:34E0 A9 FF + sta PlayerSpriteId ; CPU:$B4E2 PRG:34E2 85 56 + pla ; CPU:$B4E4 PRG:34E4 68 + tax ; CPU:$B4E5 PRG:34E5 AA + rts ; CPU:$B4E6 PRG:34E6 60 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotF: + dex ; CPU:$B4E7 PRG:34E7 CA + bmi BallNextPlayerSlotF_Loop ; CPU:$B4E8 PRG:34E8 30 03 + jmp BallSlotOffsetC ; CPU:$B4EA PRG:34EA 4C 3B B2 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotF_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotF_Loop: + rts ; CPU:$B4ED PRG:34ED 60 +; ----------------------------------------------------------------------------- +; Routine: BallRestorePlayerSlotC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallRestorePlayerSlotC: + pla ; CPU:$B4EE PRG:34EE 68 + tay ; CPU:$B4EF PRG:34EF A8 + pla ; CPU:$B4F0 PRG:34F0 68 + tax ; CPU:$B4F1 PRG:34F1 AA + jmp BallNextPlayerSlotF ; CPU:$B4F2 PRG:34F2 4C E7 B4 +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitType +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitType: + lda PlayerLeftInput ; CPU:$B4F5 PRG:34F5 A5 75 + and #$80 ; CPU:$B4F7 PRG:34F7 29 80 + beq BallCheckHitType_Loop ; CPU:$B4F9 PRG:34F9 F0 29 + lda BallHitOffsetTable ; CPU:$B4FB PRG:34FB AD B6 B6 + sta BallTargetPositionX ; CPU:$B4FE PRG:34FE 8D 11 05 + lda $B6B7 ; CPU:$B501 PRG:3501 AD B7 B6 + sta BallTargetPositionY ; CPU:$B504 PRG:3504 8D 12 05 + lda $B6B8 ; CPU:$B507 PRG:3507 AD B8 B6 + sta $0521 ; CPU:$B50A PRG:350A 8D 21 05 + lda $B6B9 ; CPU:$B50D PRG:350D AD B9 B6 + sta $0522 ; CPU:$B510 PRG:3510 8D 22 05 + lda $B6BA ; CPU:$B513 PRG:3513 AD BA B6 + sta $0531 ; CPU:$B516 PRG:3516 8D 31 05 + lda $B6BB ; CPU:$B519 PRG:3519 AD BB B6 + sta $0532 ; CPU:$B51C PRG:351C 8D 32 05 + lda #$02 ; CPU:$B51F PRG:351F A9 02 + sta NationStateA ; CPU:$B521 PRG:3521 85 5E + rts ; CPU:$B523 PRG:3523 60 +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitType_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitType_Loop: + lda BallY ; CPU:$B524 PRG:3524 AD 01 05 + cmp #$58 ; CPU:$B527 PRG:3527 C9 58 + bcc BallCheckHitType_Loop2 ; CPU:$B529 PRG:3529 90 14 + lda ScoreRecord ; CPU:$B52B PRG:352B AD 13 05 + cmp #$14 ; CPU:$B52E PRG:352E C9 14 + beq BallCheckHitTypeB ; CPU:$B530 PRG:3530 F0 1E + lda #$14 ; CPU:$B532 PRG:3532 A9 14 + sta ScoreRecord ; CPU:$B534 PRG:3534 8D 13 05 + lda #$00 ; CPU:$B537 PRG:3537 A9 00 + sta $0514 ; CPU:$B539 PRG:3539 8D 14 05 + jmp BallCheckHitTypeB ; CPU:$B53C PRG:353C 4C 50 B5 +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitType_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitType_Loop2: + lda $0533 ; CPU:$B53F PRG:353F AD 33 05 + cmp #$14 ; CPU:$B542 PRG:3542 C9 14 + beq BallCheckHitTypeB ; CPU:$B544 PRG:3544 F0 0A + lda #$14 ; CPU:$B546 PRG:3546 A9 14 + sta $0533 ; CPU:$B548 PRG:3548 8D 33 05 + lda #$00 ; CPU:$B54B PRG:354B A9 00 + sta $0534 ; CPU:$B54D PRG:354D 8D 34 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitTypeB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitTypeB: + lda PlayerLeftInput ; CPU:$B550 PRG:3550 A5 75 + and #$02 ; CPU:$B552 PRG:3552 29 02 + beq BallCheckHitTypeB_Loop ; CPU:$B554 PRG:3554 F0 11 + lda $0523 ; CPU:$B556 PRG:3556 AD 23 05 + cmp #$14 ; CPU:$B559 PRG:3559 C9 14 + beq BallCheckHitTypeB_Loop ; CPU:$B55B PRG:355B F0 0A + lda #$14 ; CPU:$B55D PRG:355D A9 14 + sta $0523 ; CPU:$B55F PRG:355F 8D 23 05 + lda #$00 ; CPU:$B562 PRG:3562 A9 00 + sta $0524 ; CPU:$B564 PRG:3564 8D 24 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitTypeB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitTypeB_Loop: + rts ; CPU:$B567 PRG:3567 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumber +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumber: + lda BallX ; CPU:$B568 PRG:3568 AD 00 05 + clc ; CPU:$B56B PRG:356B 18 + adc #$04 ; CPU:$B56C PRG:356C 69 04 + sta NumberToDisplay ; CPU:$B56E PRG:356E 85 45 + lda BallPositionX,y ; CPU:$B570 PRG:3570 B9 0F 05 + clc ; CPU:$B573 PRG:3573 18 + adc #$08 ; CPU:$B574 PRG:3574 69 08 + sec ; CPU:$B576 PRG:3576 38 + sbc NumberToDisplay ; CPU:$B577 PRG:3577 E5 45 + bcs BallSetBallNumber_Loop ; CPU:$B579 PRG:3579 B0 03 + jmp BallFrameDone5 ; CPU:$B57B PRG:357B 4C B1 B6 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumber_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumber_Loop: + cmp #$08 ; CPU:$B57E PRG:357E C9 08 + bcc BallSetBallNumber_Loop2 ; CPU:$B580 PRG:3580 90 03 + jmp BallFrameDone5 ; CPU:$B582 PRG:3582 4C B1 B6 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumber_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumber_Loop2: + lda BallPositionY,y ; CPU:$B585 PRG:3585 B9 10 05 + clc ; CPU:$B588 PRG:3588 18 + adc #$0C ; CPU:$B589 PRG:3589 69 0C + sec ; CPU:$B58B PRG:358B 38 + sbc BallY ; CPU:$B58C PRG:358C ED 01 05 + bcs BallSetBallNumber_Loop3 ; CPU:$B58F PRG:358F B0 03 + jmp BallFrameDone5 ; CPU:$B591 PRG:3591 4C B1 B6 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumber_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumber_Loop3: + cmp #$18 ; CPU:$B594 PRG:3594 C9 18 + bcc BallSetBallNumber_Loop4 ; CPU:$B596 PRG:3596 90 03 + jmp BallFrameDone5 ; CPU:$B598 PRG:3598 4C B1 B6 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumber_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumber_Loop4: + lda #$00 ; CPU:$B59B PRG:359B A9 00 + jmp BallStoreBallNumber ; CPU:$B59D PRG:359D 4C A7 B5 +; ---- data $B5A0-$B5A6 (7 bytes) ---- +; Unreached block: an earlier copy of the ball-reset code. +UnreachedCode_B5A0: + .byte $A9, $FF, $4C, $A7, $B5, $A9, $01 ; CPU:$B5A0 PRG:35A0 A9 FF 4C A7 B5 A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreBallNumber +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreBallNumber: + sta NumberToDisplay ; CPU:$B5A7 PRG:35A7 85 45 + txa ; CPU:$B5A9 PRG:35A9 8A + pha ; CPU:$B5AA PRG:35AA 48 + lda $0514,y ; CPU:$B5AB PRG:35AB B9 14 05 + cmp #$08 ; CPU:$B5AE PRG:35AE C9 08 + bcc BallStoreBallNumber_Loop ; CPU:$B5B0 PRG:35B0 90 08 + lda $0514,y ; CPU:$B5B2 PRG:35B2 B9 14 05 + eor #$0F ; CPU:$B5B5 PRG:35B5 49 0F + jmp BallGetNoteIndex ; CPU:$B5B7 PRG:35B7 4C BD B5 +; ----------------------------------------------------------------------------- +; Routine: BallStoreBallNumber_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreBallNumber_Loop: + lda $0514,y ; CPU:$B5BA PRG:35BA B9 14 05 +; ----------------------------------------------------------------------------- +; Routine: BallGetNoteIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetNoteIndex: + tax ; CPU:$B5BD PRG:35BD AA + lda $B6BC,x ; CPU:$B5BE PRG:35BE BD BC B6 + sta DrawPointerHi ; CPU:$B5C1 PRG:35C1 85 49 + pla ; CPU:$B5C3 PRG:35C3 68 + tax ; CPU:$B5C4 PRG:35C4 AA + lda DrawPointerHi ; CPU:$B5C5 PRG:35C5 A5 49 + sec ; CPU:$B5C7 PRG:35C7 38 + sbc BallFrameCounter ; CPU:$B5C8 PRG:35C8 ED 02 05 + bcs BallGetNoteIndex_Loop ; CPU:$B5CB PRG:35CB B0 03 + jmp BallFrameDone5 ; CPU:$B5CD PRG:35CD 4C B1 B6 +; ----------------------------------------------------------------------------- +; Routine: BallGetNoteIndex_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetNoteIndex_Loop: + cmp #$04 ; CPU:$B5D0 PRG:35D0 C9 04 + bcs BallGetNoteIndex_Loop2 ; CPU:$B5D2 PRG:35D2 B0 05 + lda #$FF ; CPU:$B5D4 PRG:35D4 A9 FF + jmp BallSetNumberState ; CPU:$B5D6 PRG:35D6 4C DB B5 +; ----------------------------------------------------------------------------- +; Routine: BallGetNoteIndex_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetNoteIndex_Loop2: + lda #$00 ; CPU:$B5D9 PRG:35D9 A9 00 +; ----------------------------------------------------------------------------- +; Routine: BallSetNumberState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetNumberState: + sta SpriteOffsetIndex ; CPU:$B5DB PRG:35DB 85 46 + lda NumberToDisplay ; CPU:$B5DD PRG:35DD A5 45 + beq BallCheckNumberState ; CPU:$B5DF PRG:35DF F0 31 + cmp #$FF ; CPU:$B5E1 PRG:35E1 C9 FF + beq BallStoreNumberStateB_Loop ; CPU:$B5E3 PRG:35E3 F0 18 + lda BallVelocityY ; CPU:$B5E5 PRG:35E5 AD 04 05 + cmp #$80 ; CPU:$B5E8 PRG:35E8 C9 80 + bne BallSetNumberState_Loop ; CPU:$B5EA PRG:35EA D0 05 + lda #$FF ; CPU:$B5EC PRG:35EC A9 FF + jmp BallStoreNumberStateB ; CPU:$B5EE PRG:35EE 4C F7 B5 +; ----------------------------------------------------------------------------- +; Routine: BallSetNumberState_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetNumberState_Loop: + lda BallVelocityY ; CPU:$B5F1 PRG:35F1 AD 04 05 + clc ; CPU:$B5F4 PRG:35F4 18 + adc #$FF ; CPU:$B5F5 PRG:35F5 69 FF +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateB: + sta BallVelocityY ; CPU:$B5F7 PRG:35F7 8D 04 05 + jmp BallCheckNumberState ; CPU:$B5FA PRG:35FA 4C 12 B6 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateB_Loop: + lda BallVelocityY ; CPU:$B5FD PRG:35FD AD 04 05 + cmp #$80 ; CPU:$B600 PRG:3600 C9 80 + bne BallStoreNumberStateB_Loop2 ; CPU:$B602 PRG:3602 D0 05 + lda #$01 ; CPU:$B604 PRG:3604 A9 01 + jmp BallStoreNumberStateC ; CPU:$B606 PRG:3606 4C 0F B6 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateB_Loop2: + lda BallVelocityY ; CPU:$B609 PRG:3609 AD 04 05 + clc ; CPU:$B60C PRG:360C 18 + adc #$01 ; CPU:$B60D PRG:360D 69 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateC: + sta BallVelocityY ; CPU:$B60F PRG:360F 8D 04 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckNumberState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckNumberState: + lda SpriteOffsetIndex ; CPU:$B612 PRG:3612 A5 46 + bne BallStoreNumberStateD_Loop ; CPU:$B614 PRG:3614 D0 1E + lda BallVelocityX ; CPU:$B616 PRG:3616 AD 03 05 + beq BallCheckNumberState_Loop ; CPU:$B619 PRG:3619 F0 09 + cmp #$80 ; CPU:$B61B PRG:361B C9 80 + bne BallCheckNumberState_Loop2 ; CPU:$B61D PRG:361D D0 0A + lda #$00 ; CPU:$B61F PRG:361F A9 00 + jmp BallStoreNumberStateD ; CPU:$B621 PRG:3621 4C 2E B6 +; ----------------------------------------------------------------------------- +; Routine: BallCheckNumberState_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckNumberState_Loop: + lda #$80 ; CPU:$B624 PRG:3624 A9 80 + jmp BallStoreNumberStateD ; CPU:$B626 PRG:3626 4C 2E B6 +; ----------------------------------------------------------------------------- +; Routine: BallCheckNumberState_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckNumberState_Loop2: + eor #$FF ; CPU:$B629 PRG:3629 49 FF + clc ; CPU:$B62B PRG:362B 18 + adc #$01 ; CPU:$B62C PRG:362C 69 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateD: + sta BallVelocityX ; CPU:$B62E PRG:362E 8D 03 05 + jmp BallStoreNumberStateF ; CPU:$B631 PRG:3631 4C 69 B6 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateD_Loop: + lda BallSpeed ; CPU:$B634 PRG:3634 AD 05 05 + cmp #$80 ; CPU:$B637 PRG:3637 C9 80 + bcs BallStoreNumberStateD_Loop2 ; CPU:$B639 PRG:3639 B0 06 + clc ; CPU:$B63B PRG:363B 18 + adc #$01 ; CPU:$B63C PRG:363C 69 01 + jmp BallStoreNumberStateE ; CPU:$B63E PRG:363E 4C 46 B6 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateD_Loop2: + eor #$FF ; CPU:$B641 PRG:3641 49 FF + clc ; CPU:$B643 PRG:3643 18 + adc #$01 ; CPU:$B644 PRG:3644 69 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateE: + sta BallSpeed ; CPU:$B646 PRG:3646 8D 05 05 + lda BallVelocityX ; CPU:$B649 PRG:3649 AD 03 05 + and #$80 ; CPU:$B64C PRG:364C 29 80 + bne BallStoreNumberStateF ; CPU:$B64E PRG:364E D0 19 + lda BallVelocityX ; CPU:$B650 PRG:3650 AD 03 05 + beq BallStoreNumberStateF ; CPU:$B653 PRG:3653 F0 14 + cmp #$01 ; CPU:$B655 PRG:3655 C9 01 + beq BallStoreNumberStateE_Loop ; CPU:$B657 PRG:3657 F0 06 + sec ; CPU:$B659 PRG:3659 38 + sbc #$01 ; CPU:$B65A PRG:365A E9 01 + jmp BallStartHitSound ; CPU:$B65C PRG:365C 4C 66 B6 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateE_Loop: + lda #$80 ; CPU:$B65F PRG:365F A9 80 + sta BallTargetX ; CPU:$B661 PRG:3661 8D 0B 05 + lda #$00 ; CPU:$B664 PRG:3664 A9 00 +; ----------------------------------------------------------------------------- +; Routine: BallStartHitSound +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartHitSound: + sta BallVelocityX ; CPU:$B666 PRG:3666 8D 03 05 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateF: + lda #$10 ; CPU:$B669 PRG:3669 A9 10 + sta MusicPlayingFlag ; CPU:$B66B PRG:366B 85 EE + lda #$00 ; CPU:$B66D PRG:366D A9 00 + sta PlayerSlotIndex2 ; CPU:$B66F PRG:366F 85 8C + jsr DrawNumberSpriteAE ; CPU:$B671 PRG:3671 20 93 D0 + lda $0516,y ; CPU:$B674 PRG:3674 B9 16 05 + and #$FE ; CPU:$B677 PRG:3677 29 FE + sta $0516,y ; CPU:$B679 PRG:3679 99 16 05 + jsr GetCrowdSpriteY ; CPU:$B67C PRG:367C 20 B1 C7 + lda ColorIndex ; CPU:$B67F PRG:367F A5 47 + asl a ; CPU:$B681 PRG:3681 0A + bcs BallStoreNumberStateF_Loop ; CPU:$B682 PRG:3682 B0 10 + lda #$03 ; CPU:$B684 PRG:3684 A9 03 + sta TeamScore1Hi ; CPU:$B686 PRG:3686 85 55 + lda #$15 ; CPU:$B688 PRG:3688 A9 15 + sta CrowdFlagsB ; CPU:$B68A PRG:368A 85 51 + jsr CheckCrowdOffset ; CPU:$B68C PRG:368C 20 3B C9 + lda #$00 ; CPU:$B68F PRG:368F A9 00 + jmp BallFinishPlayerUpdateD ; CPU:$B691 PRG:3691 4C A1 B6 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateF_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateF_Loop: + jsr DrawNumberSpriteM ; CPU:$B694 PRG:3694 20 CE C9 + lda #$00 ; CPU:$B697 PRG:3697 A9 00 + sta TeamScore1Hi ; CPU:$B699 PRG:3699 85 55 + lda #$15 ; CPU:$B69B PRG:369B A9 15 + sta CrowdFlagsA ; CPU:$B69D PRG:369D 85 50 + lda #$03 ; CPU:$B69F PRG:369F A9 03 +; ----------------------------------------------------------------------------- +; Routine: BallFinishPlayerUpdateD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFinishPlayerUpdateD: + sta TeamScore1Lo ; CPU:$B6A1 PRG:36A1 85 54 + jsr DrawNumberSpriteH ; CPU:$B6A3 PRG:36A3 20 04 C9 + jsr DrawNumberSpriteV ; CPU:$B6A6 PRG:36A6 20 5B CB + jsr ClearTeamSpriteFlags ; CPU:$B6A9 PRG:36A9 20 89 CB + lda #$FF ; CPU:$B6AC PRG:36AC A9 FF + sta NumberToDisplay ; CPU:$B6AE PRG:36AE 85 45 + rts ; CPU:$B6B0 PRG:36B0 60 +; ----------------------------------------------------------------------------- +; Routine: BallFrameDone5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFrameDone5: + lda #$00 ; CPU:$B6B1 PRG:36B1 A9 00 + sta NumberToDisplay ; CPU:$B6B3 PRG:36B3 85 45 + rts ; CPU:$B6B5 PRG:36B5 60 +; ---- data $B6B6-$B6C3 (14 bytes) ---- +; Seven ball-rebound offsets: three ($0A,$68,$0A,$58,$0A,$48) plus a +; four-value jump table ($24,$24,$2A,$30,$36,$3C,$40,$44) indexed by +; the kind of hit that was registered. +BallHitOffsetTable: +; referenced by `lda $B6B6` at $B4FB (operand $B6B6 falls inside this region) +; referenced by `lda $B6B7` at $B501 (operand $B6B7 falls inside this region) +; referenced by `lda $B6B8` at $B507 (operand $B6B8 falls inside this region) +; referenced by `lda $B6B9` at $B50D (operand $B6B9 falls inside this region) +; referenced by `lda $B6BA` at $B513 (operand $B6BA falls inside this region) +; referenced by `lda $B6BB` at $B519 (operand $B6BB falls inside this region) +; ... and 2 further references from decoded code + .byte $0A, $68, $0A, $58, $0A, $48, $24, $24, $2A, $30, $36, $3C, $40, $44 ; CPU:$B6B6 PRG:36B6 0A 68 0A 58 0A 48 24 24 2A 30 36 3C 40 44 +; ----------------------------------------------------------------------------- +; Routine: BallSelectSlotD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSelectSlotD: + ldx #$0B ; CPU:$B6C4 PRG:36C4 A2 0B +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD: + txa ; CPU:$B6C6 PRG:36C6 8A + asl a ; CPU:$B6C7 PRG:36C7 0A + asl a ; CPU:$B6C8 PRG:36C8 0A + asl a ; CPU:$B6C9 PRG:36C9 0A + tay ; CPU:$B6CA PRG:36CA A8 + lda ScoreRecord,y ; CPU:$B6CB PRG:36CB B9 13 05 + cmp #$34 ; CPU:$B6CE PRG:36CE C9 34 + bne BallSlotOffsetD_Loop2 ; CPU:$B6D0 PRG:36D0 D0 0B + jsr BallSetBallNumberB ; CPU:$B6D2 PRG:36D2 20 BF BF + lda NumberToDisplay ; CPU:$B6D5 PRG:36D5 A5 45 + bne BallSlotOffsetD_Loop ; CPU:$B6D7 PRG:36D7 D0 03 + jmp BallNextPlayerSlotH ; CPU:$B6D9 PRG:36D9 4C E0 B7 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop: + rts ; CPU:$B6DC PRG:36DC 60 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop2: + lda BallPositionY,y ; CPU:$B6DD PRG:36DD B9 10 05 + clc ; CPU:$B6E0 PRG:36E0 18 + adc #$08 ; CPU:$B6E1 PRG:36E1 69 08 + sec ; CPU:$B6E3 PRG:36E3 38 + sbc BallY ; CPU:$B6E4 PRG:36E4 ED 01 05 + bcs BallSlotOffsetD_Loop3 ; CPU:$B6E7 PRG:36E7 B0 03 + jmp BallNextPlayerSlotH ; CPU:$B6E9 PRG:36E9 4C E0 B7 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop3: + cmp #$10 ; CPU:$B6EC PRG:36EC C9 10 + bcc BallSlotOffsetD_Loop4 ; CPU:$B6EE PRG:36EE 90 03 + jmp BallNextPlayerSlotH ; CPU:$B6F0 PRG:36F0 4C E0 B7 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop4: + lda BallX ; CPU:$B6F3 PRG:36F3 AD 00 05 + sec ; CPU:$B6F6 PRG:36F6 38 + sbc #$08 ; CPU:$B6F7 PRG:36F7 E9 08 + sta NumberToDisplay ; CPU:$B6F9 PRG:36F9 85 45 + lda BallPositionX,y ; CPU:$B6FB PRG:36FB B9 0F 05 + clc ; CPU:$B6FE PRG:36FE 18 + adc #$04 ; CPU:$B6FF PRG:36FF 69 04 + sec ; CPU:$B701 PRG:3701 38 + sbc NumberToDisplay ; CPU:$B702 PRG:3702 E5 45 + bcs BallSlotOffsetD_Loop5 ; CPU:$B704 PRG:3704 B0 03 + jmp BallNextPlayerSlotH ; CPU:$B706 PRG:3706 4C E0 B7 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop5: + cmp #$09 ; CPU:$B709 PRG:3709 C9 09 + bcc BallSlotOffsetD_Loop6 ; CPU:$B70B PRG:370B 90 07 + cmp #$10 ; CPU:$B70D PRG:370D C9 10 + bcc BallStoreTeamNumberE_Loop ; CPU:$B70F PRG:370F 90 42 + jmp BallNextPlayerSlotH ; CPU:$B711 PRG:3711 4C E0 B7 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop6: + lda BallFrameCounter ; CPU:$B714 PRG:3714 AD 02 05 + cmp #$10 ; CPU:$B717 PRG:3717 C9 10 + bcc BallSlotOffsetD_Loop7 ; CPU:$B719 PRG:3719 90 03 + jmp BallNextPlayerSlotH ; CPU:$B71B PRG:371B 4C E0 B7 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop7: + lda BallPositionX,y ; CPU:$B71E PRG:371E B9 0F 05 + cmp #$E4 ; CPU:$B721 PRG:3721 C9 E4 + bcc BallSlotOffsetD_Loop8 ; CPU:$B723 PRG:3723 90 03 + jmp BallNextPlayerSlotH ; CPU:$B725 PRG:3725 4C E0 B7 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop8: + lda BallVelocityX ; CPU:$B728 PRG:3728 AD 03 05 + cmp #$FD ; CPU:$B72B PRG:372B C9 FD + beq BallSlotOffsetD_Loop9 ; CPU:$B72D PRG:372D F0 04 + cmp #$FC ; CPU:$B72F PRG:372F C9 FC + bne BallSlotOffsetD_Loop10 ; CPU:$B731 PRG:3731 D0 0C +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop9: + jsr BallSavePlayerSlotC ; CPU:$B733 PRG:3733 20 E9 B7 + lda #$04 ; CPU:$B736 PRG:3736 A9 04 + sta MusicPlayingFlag ; CPU:$B738 PRG:3738 85 EE + lda #$32 ; CPU:$B73A PRG:373A A9 32 + jmp BallStoreTeamNumberE ; CPU:$B73C PRG:373C 4C 48 B7 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetD_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetD_Loop10: + jsr BallSavePlayerSlotC ; CPU:$B73F PRG:373F 20 E9 B7 + lda #$01 ; CPU:$B742 PRG:3742 A9 01 + sta MusicPlayingFlag ; CPU:$B744 PRG:3744 85 EE + lda #$32 ; CPU:$B746 PRG:3746 A9 32 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberE: + sta ScoreRecord,y ; CPU:$B748 PRG:3748 99 13 05 + lda #$00 ; CPU:$B74B PRG:374B A9 00 + sta $0514,y ; CPU:$B74D PRG:374D 99 14 05 + jmp BallNextPlayerSlotG ; CPU:$B750 PRG:3750 4C A2 B7 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberE_Loop: + lda ScoreRecord,y ; CPU:$B753 PRG:3753 B9 13 05 + cmp #$33 ; CPU:$B756 PRG:3756 C9 33 + beq BallStoreTeamNumberE_Loop2 ; CPU:$B758 PRG:3758 F0 0C + lda PlayerRightInput ; CPU:$B75A PRG:375A A5 76 + and #$01 ; CPU:$B75C PRG:375C 29 01 + beq BallStoreTeamNumberE_Loop4 ; CPU:$B75E PRG:375E F0 13 + lda PlayerRightInput ; CPU:$B760 PRG:3760 A5 76 + and #$40 ; CPU:$B762 PRG:3762 29 40 + beq BallStoreTeamNumberE_Loop4 ; CPU:$B764 PRG:3764 F0 0D +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberE_Loop2: + jsr BallHandlePlayerButtonE ; CPU:$B766 PRG:3766 20 1F BB + lda NumberToDisplay ; CPU:$B769 PRG:3769 A5 45 + beq BallStoreTeamNumberE_Loop3 ; CPU:$B76B PRG:376B F0 03 + jmp BallNextPlayerSlotB ; CPU:$B76D PRG:376D 4C A4 AD +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberE_Loop3: + jmp BallNextPlayerSlotG ; CPU:$B770 PRG:3770 4C A2 B7 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberE_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberE_Loop4: + lda BallFrameCounter ; CPU:$B773 PRG:3773 AD 02 05 + cmp #$20 ; CPU:$B776 PRG:3776 C9 20 + bcs BallNextPlayerSlotH ; CPU:$B778 PRG:3778 B0 66 + lda BallVelocityX ; CPU:$B77A PRG:377A AD 03 05 + cmp #$FD ; CPU:$B77D PRG:377D C9 FD + beq BallStoreTeamNumberE_Loop5 ; CPU:$B77F PRG:377F F0 04 + cmp #$FC ; CPU:$B781 PRG:3781 C9 FC + bne BallStoreTeamNumberE_Loop6 ; CPU:$B783 PRG:3783 D0 0C +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberE_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberE_Loop5: + jsr BallSavePlayerSlotC ; CPU:$B785 PRG:3785 20 E9 B7 + lda #$04 ; CPU:$B788 PRG:3788 A9 04 + sta MusicPlayingFlag ; CPU:$B78A PRG:378A 85 EE + lda #$36 ; CPU:$B78C PRG:378C A9 36 + jmp BallStoreTeamNumberF ; CPU:$B78E PRG:378E 4C 9A B7 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberE_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberE_Loop6: + jsr BallSavePlayerSlotD ; CPU:$B791 PRG:3791 20 D2 B8 + lda #$01 ; CPU:$B794 PRG:3794 A9 01 + sta SfxCommand ; CPU:$B796 PRG:3796 85 EF + lda #$31 ; CPU:$B798 PRG:3798 A9 31 +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberF: + sta ScoreRecord,y ; CPU:$B79A PRG:379A 99 13 05 + lda #$08 ; CPU:$B79D PRG:379D A9 08 + sta $0514,y ; CPU:$B79F PRG:379F 99 14 05 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotG: + txa ; CPU:$B7A2 PRG:37A2 8A + pha ; CPU:$B7A3 PRG:37A3 48 + inc PlayerSlotIndex2 ; CPU:$B7A4 PRG:37A4 E6 8C + lda #$00 ; CPU:$B7A6 PRG:37A6 A9 00 + sta PlayerSlotIndex ; CPU:$B7A8 PRG:37A8 85 8B + jsr DrawNumberSpriteAE ; CPU:$B7AA PRG:37AA 20 93 D0 + jsr GetCrowdSpriteY ; CPU:$B7AD PRG:37AD 20 B1 C7 + jsr DrawNumberSpriteH ; CPU:$B7B0 PRG:37B0 20 04 C9 + lda ColorIndex ; CPU:$B7B3 PRG:37B3 A5 47 + asl a ; CPU:$B7B5 PRG:37B5 0A + bcs BallNextPlayerSlotG_Loop ; CPU:$B7B6 PRG:37B6 B0 10 + jsr CheckCrowdOffset ; CPU:$B7B8 PRG:37B8 20 3B C9 + lda #$00 ; CPU:$B7BB PRG:37BB A9 00 + sta TeamScore1Lo ; CPU:$B7BD PRG:37BD 85 54 + lda #$15 ; CPU:$B7BF PRG:37BF A9 15 + sta CrowdFlagsB ; CPU:$B7C1 PRG:37C1 85 51 + lda #$03 ; CPU:$B7C3 PRG:37C3 A9 03 + jmp BallFinishPlayerUpdateE ; CPU:$B7C5 PRG:37C5 4C CD B7 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotG_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotG_Loop: + jsr DrawNumberSpriteM ; CPU:$B7C8 PRG:37C8 20 CE C9 + lda #$01 ; CPU:$B7CB PRG:37CB A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallFinishPlayerUpdateE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFinishPlayerUpdateE: + sta TeamScore1Hi ; CPU:$B7CD PRG:37CD 85 55 + jsr DrawNumberSpriteV ; CPU:$B7CF PRG:37CF 20 5B CB + jsr ClearTeamSpriteFlags ; CPU:$B7D2 PRG:37D2 20 89 CB + lda #$FF ; CPU:$B7D5 PRG:37D5 A9 FF + sta PlayerSpriteIdB ; CPU:$B7D7 PRG:37D7 85 57 + lda #$00 ; CPU:$B7D9 PRG:37D9 A9 00 + sta TeamId ; CPU:$B7DB PRG:37DB 85 70 + pla ; CPU:$B7DD PRG:37DD 68 + tax ; CPU:$B7DE PRG:37DE AA + rts ; CPU:$B7DF PRG:37DF 60 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotH: + dex ; CPU:$B7E0 PRG:37E0 CA + cpx #$05 ; CPU:$B7E1 PRG:37E1 E0 05 + beq BallNextPlayerSlotH_Loop ; CPU:$B7E3 PRG:37E3 F0 03 + jmp BallSlotOffsetD ; CPU:$B7E5 PRG:37E5 4C C6 B6 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotH_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotH_Loop: + rts ; CPU:$B7E8 PRG:37E8 60 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotC: + txa ; CPU:$B7E9 PRG:37E9 8A + pha ; CPU:$B7EA PRG:37EA 48 + tya ; CPU:$B7EB PRG:37EB 98 + pha ; CPU:$B7EC PRG:37EC 48 + lda PlayerCount ; CPU:$B7ED PRG:37ED A5 2E + and #$F0 ; CPU:$B7EF PRG:37EF 29 F0 + beq BallSavePlayerSlotC_Loop3 ; CPU:$B7F1 PRG:37F1 F0 27 + lda TeamNumber ; CPU:$B7F3 PRG:37F3 A5 66 + lsr a ; CPU:$B7F5 PRG:37F5 4A + lsr a ; CPU:$B7F6 PRG:37F6 4A + lsr a ; CPU:$B7F7 PRG:37F7 4A + lsr a ; CPU:$B7F8 PRG:37F8 4A + cmp #$01 ; CPU:$B7F9 PRG:37F9 C9 01 + beq BallSavePlayerSlotC_Loop3 ; CPU:$B7FB PRG:37FB F0 1D + cmp #$04 ; CPU:$B7FD PRG:37FD C9 04 + bcc BallSavePlayerSlotC_Loop ; CPU:$B7FF PRG:37FF 90 07 + cmp #$06 ; CPU:$B801 PRG:3801 C9 06 + bcc BallSavePlayerSlotC_Loop2 ; CPU:$B803 PRG:3803 90 0C + jmp BallPlayerMoveEndD ; CPU:$B805 PRG:3805 4C AD B8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotC_Loop: + lda FrameCounter ; CPU:$B808 PRG:3808 A5 2D + and #$06 ; CPU:$B80A PRG:380A 29 06 + bne BallSavePlayerSlotC_Loop3 ; CPU:$B80C PRG:380C D0 0C + jmp BallPlayerMoveEndD ; CPU:$B80E PRG:380E 4C AD B8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotC_Loop2: + lda FrameCounter ; CPU:$B811 PRG:3811 A5 2D + and #$02 ; CPU:$B813 PRG:3813 29 02 + beq BallSavePlayerSlotC_Loop3 ; CPU:$B815 PRG:3815 F0 03 + jmp BallPlayerMoveEndD ; CPU:$B817 PRG:3817 4C AD B8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotC_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotC_Loop3: + lda BallVelocityX ; CPU:$B81A PRG:381A AD 03 05 + sta DrawPointerHi ; CPU:$B81D PRG:381D 85 49 + lda FrameCounter ; CPU:$B81F PRG:381F A5 2D + and #$0C ; CPU:$B821 PRG:3821 29 0C + sta NumberToDisplay ; CPU:$B823 PRG:3823 85 45 + lda FrameCounter ; CPU:$B825 PRG:3825 A5 2D + and #$30 ; CPU:$B827 PRG:3827 29 30 + sta SpriteOffsetIndex ; CPU:$B829 PRG:3829 85 46 + lda FrameCounter ; CPU:$B82B PRG:382B A5 2D + and #$C0 ; CPU:$B82D PRG:382D 29 C0 + sta ColorIndex ; CPU:$B82F PRG:382F 85 47 + ldy #$00 ; CPU:$B831 PRG:3831 A0 00 + lda NumberToDisplay ; CPU:$B833 PRG:3833 A5 45 + cmp #$04 ; CPU:$B835 PRG:3835 C9 04 + bcc BallSavePlayerSlotC_Loop4 ; CPU:$B837 PRG:3837 90 08 + iny ; CPU:$B839 PRG:3839 C8 + iny ; CPU:$B83A PRG:383A C8 + cmp #$08 ; CPU:$B83B PRG:383B C9 08 + bcc BallSavePlayerSlotC_Loop4 ; CPU:$B83D PRG:383D 90 02 + iny ; CPU:$B83F PRG:383F C8 + iny ; CPU:$B840 PRG:3840 C8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotC_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotC_Loop4: + lda SpriteOffsetIndex ; CPU:$B841 PRG:3841 A5 46 + cmp #$10 ; CPU:$B843 PRG:3843 C9 10 + beq BallSavePlayerSlotC_Loop5 ; CPU:$B845 PRG:3845 F0 0D + cmp #$20 ; CPU:$B847 PRG:3847 C9 20 + beq BallSavePlayerSlotC_Loop6 ; CPU:$B849 PRG:3849 F0 12 + lda $E57C,y ; CPU:$B84B PRG:384B B9 7C E5 + ldx $E57D,y ; CPU:$B84E PRG:384E BE 7D E5 + jmp BallPlayerMoveStartE ; CPU:$B851 PRG:3851 4C 63 B8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotC_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotC_Loop5: + lda $E582,y ; CPU:$B854 PRG:3854 B9 82 E5 + ldx $E583,y ; CPU:$B857 PRG:3857 BE 83 E5 + jmp BallPlayerMoveStartE ; CPU:$B85A PRG:385A 4C 63 B8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotC_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotC_Loop6: + lda $E588,y ; CPU:$B85D PRG:385D B9 88 E5 + ldx $E589,y ; CPU:$B860 PRG:3860 BE 89 E5 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartE: + sta BallVelocityX ; CPU:$B863 PRG:3863 8D 03 05 + stx BallTargetX ; CPU:$B866 PRG:3866 8E 0B 05 + ldy #$00 ; CPU:$B869 PRG:3869 A0 00 + lda BallY ; CPU:$B86B PRG:386B AD 01 05 + cmp #$49 ; CPU:$B86E PRG:386E C9 49 + bcc BallPlayerMoveStartE_Loop ; CPU:$B870 PRG:3870 90 08 + iny ; CPU:$B872 PRG:3872 C8 + iny ; CPU:$B873 PRG:3873 C8 + cmp #$68 ; CPU:$B874 PRG:3874 C9 68 + bcc BallPlayerMoveStartE_Loop ; CPU:$B876 PRG:3876 90 02 + iny ; CPU:$B878 PRG:3878 C8 + iny ; CPU:$B879 PRG:3879 C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartE_Loop: + lda ColorIndex ; CPU:$B87A PRG:387A A5 47 + cmp #$40 ; CPU:$B87C PRG:387C C9 40 + beq BallPlayerMoveStartE_Loop2 ; CPU:$B87E PRG:387E F0 0D + cmp #$80 ; CPU:$B880 PRG:3880 C9 80 + beq BallPlayerMoveStartE_Loop3 ; CPU:$B882 PRG:3882 F0 12 + lda $E4DA,y ; CPU:$B884 PRG:3884 B9 DA E4 + ldx $E4DB,y ; CPU:$B887 PRG:3887 BE DB E4 + jmp BallPlayerMoveMiddleF ; CPU:$B88A PRG:388A 4C 9C B8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartE_Loop2: + lda $E4E0,y ; CPU:$B88D PRG:388D B9 E0 E4 + ldx $E4E1,y ; CPU:$B890 PRG:3890 BE E1 E4 + jmp BallPlayerMoveMiddleF ; CPU:$B893 PRG:3893 4C 9C B8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartE_Loop3: + lda $E4E6,y ; CPU:$B896 PRG:3896 B9 E6 E4 + ldx $E4E7,y ; CPU:$B899 PRG:3899 BE E7 E4 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleF: + sta BallVelocityY ; CPU:$B89C PRG:389C 8D 04 05 + stx BallTargetY ; CPU:$B89F PRG:389F 8E 0C 05 + lda PlayerRightInput ; CPU:$B8A2 PRG:38A2 A5 76 + and #$80 ; CPU:$B8A4 PRG:38A4 29 80 + bne BallPlayerMoveEndD ; CPU:$B8A6 PRG:38A6 D0 05 + lda #$04 ; CPU:$B8A8 PRG:38A8 A9 04 + jmp BallPlayerMoveEndE ; CPU:$B8AA PRG:38AA 4C BA B8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndD: + lda FrameCounter ; CPU:$B8AD PRG:38AD A5 2D + and #$02 ; CPU:$B8AF PRG:38AF 29 02 + beq BallPlayerMoveEndD_Loop ; CPU:$B8B1 PRG:38B1 F0 05 + lda #$05 ; CPU:$B8B3 PRG:38B3 A9 05 + jmp BallPlayerMoveEndE ; CPU:$B8B5 PRG:38B5 4C BA B8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndD_Loop: + lda #$06 ; CPU:$B8B8 PRG:38B8 A9 06 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndE: + sta BallSpeed ; CPU:$B8BA PRG:38BA 8D 05 05 + sta BallPreviousX ; CPU:$B8BD PRG:38BD 8D 08 05 + sta $05DE ; CPU:$B8C0 PRG:38C0 8D DE 05 + lda BallCountdown ; CPU:$B8C3 PRG:38C3 AD 06 05 + sta $05DF ; CPU:$B8C6 PRG:38C6 8D DF 05 + pla ; CPU:$B8C9 PRG:38C9 68 + tay ; CPU:$B8CA PRG:38CA A8 + pla ; CPU:$B8CB PRG:38CB 68 + tax ; CPU:$B8CC PRG:38CC AA + lda #$00 ; CPU:$B8CD PRG:38CD A9 00 + sta NationStateA ; CPU:$B8CF PRG:38CF 85 5E + rts ; CPU:$B8D1 PRG:38D1 60 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotD: + txa ; CPU:$B8D2 PRG:38D2 8A + pha ; CPU:$B8D3 PRG:38D3 48 + tya ; CPU:$B8D4 PRG:38D4 98 + pha ; CPU:$B8D5 PRG:38D5 48 + lda BallVelocityX ; CPU:$B8D6 PRG:38D6 AD 03 05 + sta DrawPointerHi ; CPU:$B8D9 PRG:38D9 85 49 + ldy #$00 ; CPU:$B8DB PRG:38DB A0 00 + lda BallX ; CPU:$B8DD PRG:38DD AD 00 05 + cmp #$CE ; CPU:$B8E0 PRG:38E0 C9 CE + bcc BallSavePlayerSlotD_Loop ; CPU:$B8E2 PRG:38E2 90 08 + iny ; CPU:$B8E4 PRG:38E4 C8 + iny ; CPU:$B8E5 PRG:38E5 C8 + cmp #$EC ; CPU:$B8E6 PRG:38E6 C9 EC + bcc BallSavePlayerSlotD_Loop ; CPU:$B8E8 PRG:38E8 90 02 + iny ; CPU:$B8EA PRG:38EA C8 + iny ; CPU:$B8EB PRG:38EB C8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotD_Loop: + lda PlayerRightInput ; CPU:$B8EC PRG:38EC A5 76 + and #$03 ; CPU:$B8EE PRG:38EE 29 03 + beq BallSavePlayerSlotD_Loop2 ; CPU:$B8F0 PRG:38F0 F0 0D + cmp #$01 ; CPU:$B8F2 PRG:38F2 C9 01 + beq BallSavePlayerSlotD_Loop3 ; CPU:$B8F4 PRG:38F4 F0 12 + lda $E57C,y ; CPU:$B8F6 PRG:38F6 B9 7C E5 + ldx $E57D,y ; CPU:$B8F9 PRG:38F9 BE 7D E5 + jmp BallPlayerMoveStartF ; CPU:$B8FC PRG:38FC 4C 0E B9 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotD_Loop2: + lda $E582,y ; CPU:$B8FF PRG:38FF B9 82 E5 + ldx $E583,y ; CPU:$B902 PRG:3902 BE 83 E5 + jmp BallPlayerMoveStartF ; CPU:$B905 PRG:3905 4C 0E B9 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotD_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotD_Loop3: + lda $E588,y ; CPU:$B908 PRG:3908 B9 88 E5 + ldx $E589,y ; CPU:$B90B PRG:390B BE 89 E5 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartF: + sta BallVelocityX ; CPU:$B90E PRG:390E 8D 03 05 + stx BallTargetX ; CPU:$B911 PRG:3911 8E 0B 05 + ldy #$00 ; CPU:$B914 PRG:3914 A0 00 + lda BallY ; CPU:$B916 PRG:3916 AD 01 05 + cmp #$49 ; CPU:$B919 PRG:3919 C9 49 + bcc BallPlayerMoveStartF_Loop ; CPU:$B91B PRG:391B 90 08 + iny ; CPU:$B91D PRG:391D C8 + iny ; CPU:$B91E PRG:391E C8 + cmp #$68 ; CPU:$B91F PRG:391F C9 68 + bcc BallPlayerMoveStartF_Loop ; CPU:$B921 PRG:3921 90 02 + iny ; CPU:$B923 PRG:3923 C8 + iny ; CPU:$B924 PRG:3924 C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartF_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartF_Loop: + lda PlayerRightInput ; CPU:$B925 PRG:3925 A5 76 + and #$0C ; CPU:$B927 PRG:3927 29 0C + beq BallPlayerMoveStartF_Loop2 ; CPU:$B929 PRG:3929 F0 0D + cmp #$04 ; CPU:$B92B PRG:392B C9 04 + beq BallPlayerMoveStartF_Loop3 ; CPU:$B92D PRG:392D F0 12 + lda $E4DA,y ; CPU:$B92F PRG:392F B9 DA E4 + ldx $E4DB,y ; CPU:$B932 PRG:3932 BE DB E4 + jmp BallPlayerMoveMiddleG ; CPU:$B935 PRG:3935 4C 47 B9 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartF_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartF_Loop2: + lda $E4E0,y ; CPU:$B938 PRG:3938 B9 E0 E4 + ldx $E4E1,y ; CPU:$B93B PRG:393B BE E1 E4 + jmp BallPlayerMoveMiddleG ; CPU:$B93E PRG:393E 4C 47 B9 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartF_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartF_Loop3: + lda $E4E6,y ; CPU:$B941 PRG:3941 B9 E6 E4 + ldx $E4E7,y ; CPU:$B944 PRG:3944 BE E7 E4 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleG: + sta BallVelocityY ; CPU:$B947 PRG:3947 8D 04 05 + stx BallTargetY ; CPU:$B94A PRG:394A 8E 0C 05 + lda PlayerRightInput ; CPU:$B94D PRG:394D A5 76 + and #$80 ; CPU:$B94F PRG:394F 29 80 + bne BallPlayerMoveMiddleG_Loop ; CPU:$B951 PRG:3951 D0 05 + lda #$04 ; CPU:$B953 PRG:3953 A9 04 + jmp BallPlayerMoveEndF ; CPU:$B955 PRG:3955 4C 6E B9 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleG_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleG_Loop: + lda Zp92 ; CPU:$B958 PRG:3958 A5 92 + beq BallPlayerMoveMiddleG_Loop2 ; CPU:$B95A PRG:395A F0 05 + lda #$02 ; CPU:$B95C PRG:395C A9 02 + jmp BallPlayerMoveEndF ; CPU:$B95E PRG:395E 4C 6E B9 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleG_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleG_Loop2: + lda FrameCounter ; CPU:$B961 PRG:3961 A5 2D + and #$02 ; CPU:$B963 PRG:3963 29 02 + beq BallPlayerMoveMiddleG_Loop3 ; CPU:$B965 PRG:3965 F0 05 + lda #$05 ; CPU:$B967 PRG:3967 A9 05 + jmp BallPlayerMoveEndF ; CPU:$B969 PRG:3969 4C 6E B9 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleG_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleG_Loop3: + lda #$06 ; CPU:$B96C PRG:396C A9 06 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndF: + sta BallSpeed ; CPU:$B96E PRG:396E 8D 05 05 + sta BallPreviousX ; CPU:$B971 PRG:3971 8D 08 05 + sta $05DE ; CPU:$B974 PRG:3974 8D DE 05 + lda BallCountdown ; CPU:$B977 PRG:3977 AD 06 05 + sta $05DF ; CPU:$B97A PRG:397A 8D DF 05 + pla ; CPU:$B97D PRG:397D 68 + tay ; CPU:$B97E PRG:397E A8 + pla ; CPU:$B97F PRG:397F 68 + tax ; CPU:$B980 PRG:3980 AA + lda #$00 ; CPU:$B981 PRG:3981 A9 00 + sta NationStateA ; CPU:$B983 PRG:3983 85 5E + inc Zp93 ; CPU:$B985 PRG:3985 E6 93 + rts ; CPU:$B987 PRG:3987 60 +; ----------------------------------------------------------------------------- +; Routine: BallSelectSlotE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSelectSlotE: + ldx #$0B ; CPU:$B988 PRG:3988 A2 0B +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetE: + txa ; CPU:$B98A PRG:398A 8A + asl a ; CPU:$B98B PRG:398B 0A + asl a ; CPU:$B98C PRG:398C 0A + asl a ; CPU:$B98D PRG:398D 0A + tay ; CPU:$B98E PRG:398E A8 + lda $0516,y ; CPU:$B98F PRG:398F B9 16 05 + and #$01 ; CPU:$B992 PRG:3992 29 01 + beq BallSlotOffsetE_Loop ; CPU:$B994 PRG:3994 F0 03 + jmp BallNextPlayerSlotJ ; CPU:$B996 PRG:3996 4C 31 BA +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetE_Loop: + lda BallX ; CPU:$B999 PRG:3999 AD 00 05 + sec ; CPU:$B99C PRG:399C 38 + sbc #$08 ; CPU:$B99D PRG:399D E9 08 + sta NumberToDisplay ; CPU:$B99F PRG:399F 85 45 + lda BallPositionX,y ; CPU:$B9A1 PRG:39A1 B9 0F 05 + clc ; CPU:$B9A4 PRG:39A4 18 + adc #$00 ; CPU:$B9A5 PRG:39A5 69 00 + sec ; CPU:$B9A7 PRG:39A7 38 + sbc NumberToDisplay ; CPU:$B9A8 PRG:39A8 E5 45 + bcs BallSlotOffsetE_Loop2 ; CPU:$B9AA PRG:39AA B0 03 + jmp BallNextPlayerSlotJ ; CPU:$B9AC PRG:39AC 4C 31 BA +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetE_Loop2: + cmp #$10 ; CPU:$B9AF PRG:39AF C9 10 + bcc BallSlotOffsetE_Loop3 ; CPU:$B9B1 PRG:39B1 90 03 + jmp BallNextPlayerSlotJ ; CPU:$B9B3 PRG:39B3 4C 31 BA +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetE_Loop3: + lda BallPositionY,y ; CPU:$B9B6 PRG:39B6 B9 10 05 + clc ; CPU:$B9B9 PRG:39B9 18 + adc #$08 ; CPU:$B9BA PRG:39BA 69 08 + sec ; CPU:$B9BC PRG:39BC 38 + sbc BallY ; CPU:$B9BD PRG:39BD ED 01 05 + bcs BallSlotOffsetE_Loop4 ; CPU:$B9C0 PRG:39C0 B0 03 + jmp BallNextPlayerSlotJ ; CPU:$B9C2 PRG:39C2 4C 31 BA +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetE_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetE_Loop4: + cmp #$10 ; CPU:$B9C5 PRG:39C5 C9 10 + bcc BallSlotOffsetE_Loop5 ; CPU:$B9C7 PRG:39C7 90 03 + jmp BallNextPlayerSlotJ ; CPU:$B9C9 PRG:39C9 4C 31 BA +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetE_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetE_Loop5: + lda ScoreRecord,y ; CPU:$B9CC PRG:39CC B9 13 05 + cmp #$33 ; CPU:$B9CF PRG:39CF C9 33 + beq BallSlotOffsetE_Loop6 ; CPU:$B9D1 PRG:39D1 F0 0C + lda PlayerRightInput ; CPU:$B9D3 PRG:39D3 A5 76 + and #$01 ; CPU:$B9D5 PRG:39D5 29 01 + beq BallSlotOffsetE_Loop7 ; CPU:$B9D7 PRG:39D7 F0 10 + lda PlayerRightInput ; CPU:$B9D9 PRG:39D9 A5 76 + and #$40 ; CPU:$B9DB PRG:39DB 29 40 + beq BallSlotOffsetE_Loop7 ; CPU:$B9DD PRG:39DD F0 0A +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetE_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetE_Loop6: + jsr BallHandlePlayerButtonE ; CPU:$B9DF PRG:39DF 20 1F BB + lda NumberToDisplay ; CPU:$B9E2 PRG:39E2 A5 45 + bne BallNextPlayerSlotJ ; CPU:$B9E4 PRG:39E4 D0 4B + jmp BallNextPlayerSlotI ; CPU:$B9E6 PRG:39E6 4C F7 B9 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetE_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetE_Loop7: + lda BallFrameCounter ; CPU:$B9E9 PRG:39E9 AD 02 05 + cmp #$20 ; CPU:$B9EC PRG:39EC C9 20 + bcs BallNextPlayerSlotJ ; CPU:$B9EE PRG:39EE B0 41 + jsr BallSavePlayerSlotE ; CPU:$B9F0 PRG:39F0 20 3A BA + lda #$10 ; CPU:$B9F3 PRG:39F3 A9 10 + sta SfxCommand ; CPU:$B9F5 PRG:39F5 85 EF +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotI +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotI: + txa ; CPU:$B9F7 PRG:39F7 8A + pha ; CPU:$B9F8 PRG:39F8 48 + inc PlayerSlotIndex2 ; CPU:$B9F9 PRG:39F9 E6 8C + lda #$00 ; CPU:$B9FB PRG:39FB A9 00 + sta PlayerSlotIndex ; CPU:$B9FD PRG:39FD 85 8B + jsr DrawNumberSpriteAE ; CPU:$B9FF PRG:39FF 20 93 D0 + jsr GetCrowdSpriteY ; CPU:$BA02 PRG:3A02 20 B1 C7 + jsr DrawNumberSpriteH ; CPU:$BA05 PRG:3A05 20 04 C9 + lda ColorIndex ; CPU:$BA08 PRG:3A08 A5 47 + asl a ; CPU:$BA0A PRG:3A0A 0A + bcs BallNextPlayerSlotI_Loop ; CPU:$BA0B PRG:3A0B B0 10 + jsr CheckCrowdOffset ; CPU:$BA0D PRG:3A0D 20 3B C9 + lda #$00 ; CPU:$BA10 PRG:3A10 A9 00 + sta TeamScore1Lo ; CPU:$BA12 PRG:3A12 85 54 + lda #$15 ; CPU:$BA14 PRG:3A14 A9 15 + sta CrowdFlagsB ; CPU:$BA16 PRG:3A16 85 51 + lda #$03 ; CPU:$BA18 PRG:3A18 A9 03 + jmp BallFinishPlayerUpdateF ; CPU:$BA1A PRG:3A1A 4C 22 BA +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotI_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotI_Loop: + jsr DrawNumberSpriteM ; CPU:$BA1D PRG:3A1D 20 CE C9 + lda #$02 ; CPU:$BA20 PRG:3A20 A9 02 +; ----------------------------------------------------------------------------- +; Routine: BallFinishPlayerUpdateF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFinishPlayerUpdateF: + sta TeamScore1Hi ; CPU:$BA22 PRG:3A22 85 55 + jsr DrawNumberSpriteV ; CPU:$BA24 PRG:3A24 20 5B CB + jsr ClearTeamSpriteFlags ; CPU:$BA27 PRG:3A27 20 89 CB + lda #$FF ; CPU:$BA2A PRG:3A2A A9 FF + sta PlayerSpriteIdB ; CPU:$BA2C PRG:3A2C 85 57 + pla ; CPU:$BA2E PRG:3A2E 68 + tax ; CPU:$BA2F PRG:3A2F AA + rts ; CPU:$BA30 PRG:3A30 60 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotJ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotJ: + dex ; CPU:$BA31 PRG:3A31 CA + cpx #$05 ; CPU:$BA32 PRG:3A32 E0 05 + beq BallNextPlayerSlotJ_Loop ; CPU:$BA34 PRG:3A34 F0 03 + jmp BallSlotOffsetE ; CPU:$BA36 PRG:3A36 4C 8A B9 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotJ_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotJ_Loop: + rts ; CPU:$BA39 PRG:3A39 60 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotE: + txa ; CPU:$BA3A PRG:3A3A 8A + pha ; CPU:$BA3B PRG:3A3B 48 + tya ; CPU:$BA3C PRG:3A3C 98 + pha ; CPU:$BA3D PRG:3A3D 48 + ldy #$00 ; CPU:$BA3E PRG:3A3E A0 00 + lda BallX ; CPU:$BA40 PRG:3A40 AD 00 05 + cmp #$CE ; CPU:$BA43 PRG:3A43 C9 CE + bcc BallSavePlayerSlotE_Loop ; CPU:$BA45 PRG:3A45 90 08 + iny ; CPU:$BA47 PRG:3A47 C8 + iny ; CPU:$BA48 PRG:3A48 C8 + cmp #$EC ; CPU:$BA49 PRG:3A49 C9 EC + bcc BallSavePlayerSlotE_Loop ; CPU:$BA4B PRG:3A4B 90 02 + iny ; CPU:$BA4D PRG:3A4D C8 + iny ; CPU:$BA4E PRG:3A4E C8 +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotE_Loop: + lda PlayerRightInput ; CPU:$BA4F PRG:3A4F A5 76 + and #$03 ; CPU:$BA51 PRG:3A51 29 03 + beq BallSavePlayerSlotE_Loop2 ; CPU:$BA53 PRG:3A53 F0 0D + cmp #$01 ; CPU:$BA55 PRG:3A55 C9 01 + beq BallSavePlayerSlotE_Loop3 ; CPU:$BA57 PRG:3A57 F0 12 + lda $E58E,y ; CPU:$BA59 PRG:3A59 B9 8E E5 + ldx $E58F,y ; CPU:$BA5C PRG:3A5C BE 8F E5 + jmp BallPlayerMoveStartG ; CPU:$BA5F PRG:3A5F 4C 74 BA +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotE_Loop2: + lda $E594,y ; CPU:$BA62 PRG:3A62 B9 94 E5 + ldx $E595,y ; CPU:$BA65 PRG:3A65 BE 95 E5 + jmp BallPlayerMoveStartG ; CPU:$BA68 PRG:3A68 4C 74 BA +; ----------------------------------------------------------------------------- +; Routine: BallSavePlayerSlotE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSavePlayerSlotE_Loop3: + lda $E59A,y ; CPU:$BA6B PRG:3A6B B9 9A E5 + ldx $E59B,y ; CPU:$BA6E PRG:3A6E BE 9B E5 + jmp BallPlayerMoveStartG ; CPU:$BA71 PRG:3A71 4C 74 BA +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartG: + sta BallVelocityX ; CPU:$BA74 PRG:3A74 8D 03 05 + stx BallTargetX ; CPU:$BA77 PRG:3A77 8E 0B 05 + ldy #$00 ; CPU:$BA7A PRG:3A7A A0 00 + lda BallY ; CPU:$BA7C PRG:3A7C AD 01 05 + cmp #$49 ; CPU:$BA7F PRG:3A7F C9 49 + bcc BallPlayerMoveStartG_Loop ; CPU:$BA81 PRG:3A81 90 08 + iny ; CPU:$BA83 PRG:3A83 C8 + iny ; CPU:$BA84 PRG:3A84 C8 + cmp #$68 ; CPU:$BA85 PRG:3A85 C9 68 + bcc BallPlayerMoveStartG_Loop ; CPU:$BA87 PRG:3A87 90 02 + iny ; CPU:$BA89 PRG:3A89 C8 + iny ; CPU:$BA8A PRG:3A8A C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartG_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartG_Loop: + lda PlayerRightInput ; CPU:$BA8B PRG:3A8B A5 76 + and #$0C ; CPU:$BA8D PRG:3A8D 29 0C + beq BallPlayerMoveStartG_Loop2 ; CPU:$BA8F PRG:3A8F F0 0D + cmp #$04 ; CPU:$BA91 PRG:3A91 C9 04 + beq BallPlayerMoveStartG_Loop3 ; CPU:$BA93 PRG:3A93 F0 12 + lda $E4DA,y ; CPU:$BA95 PRG:3A95 B9 DA E4 + ldx $E4DB,y ; CPU:$BA98 PRG:3A98 BE DB E4 + jmp BallPlayerMoveMiddleH ; CPU:$BA9B PRG:3A9B 4C AD BA +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartG_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartG_Loop2: + lda $E4E0,y ; CPU:$BA9E PRG:3A9E B9 E0 E4 + ldx $E4E1,y ; CPU:$BAA1 PRG:3AA1 BE E1 E4 + jmp BallPlayerMoveMiddleH ; CPU:$BAA4 PRG:3AA4 4C AD BA +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveStartG_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveStartG_Loop3: + lda $E4E6,y ; CPU:$BAA7 PRG:3AA7 B9 E6 E4 + ldx $E4E7,y ; CPU:$BAAA PRG:3AAA BE E7 E4 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleH: + sta BallVelocityY ; CPU:$BAAD PRG:3AAD 8D 04 05 + stx BallTargetY ; CPU:$BAB0 PRG:3AB0 8E 0C 05 + lda PlayerRightInput ; CPU:$BAB3 PRG:3AB3 A5 76 + and #$80 ; CPU:$BAB5 PRG:3AB5 29 80 + bne BallPlayerMoveMiddleH_Loop ; CPU:$BAB7 PRG:3AB7 D0 05 + lda #$04 ; CPU:$BAB9 PRG:3AB9 A9 04 + jmp BallPlayerMoveEndG ; CPU:$BABB PRG:3ABB 4C CB BA +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleH_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleH_Loop: + lda FrameCounter ; CPU:$BABE PRG:3ABE A5 2D + and #$02 ; CPU:$BAC0 PRG:3AC0 29 02 + beq BallPlayerMoveMiddleH_Loop2 ; CPU:$BAC2 PRG:3AC2 F0 05 + lda #$05 ; CPU:$BAC4 PRG:3AC4 A9 05 + jmp BallPlayerMoveEndG ; CPU:$BAC6 PRG:3AC6 4C CB BA +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleH_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleH_Loop2: + lda #$06 ; CPU:$BAC9 PRG:3AC9 A9 06 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndG: + sta BallSpeed ; CPU:$BACB PRG:3ACB 8D 05 05 + sta BallPreviousX ; CPU:$BACE PRG:3ACE 8D 08 05 + sta $05DE ; CPU:$BAD1 PRG:3AD1 8D DE 05 + lda BallCountdown ; CPU:$BAD4 PRG:3AD4 AD 06 05 + sta $05DF ; CPU:$BAD7 PRG:3AD7 8D DF 05 + pla ; CPU:$BADA PRG:3ADA 68 + tay ; CPU:$BADB PRG:3ADB A8 + pla ; CPU:$BADC PRG:3ADC 68 + tax ; CPU:$BADD PRG:3ADD AA + lda PlayerRightInput ; CPU:$BADE PRG:3ADE A5 76 + and #$03 ; CPU:$BAE0 PRG:3AE0 29 03 + cmp #$01 ; CPU:$BAE2 PRG:3AE2 C9 01 + bne BallPlayerMoveEndG_Loop ; CPU:$BAE4 PRG:3AE4 D0 05 + lda #$2C ; CPU:$BAE6 PRG:3AE6 A9 2C + jmp BallStoreTeamNumberH ; CPU:$BAE8 PRG:3AE8 4C 12 BB +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndG_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndG_Loop: + lda BallVelocityY ; CPU:$BAEB PRG:3AEB AD 04 05 + and #$80 ; CPU:$BAEE PRG:3AEE 29 80 + beq BallPlayerMoveEndG_Loop2 ; CPU:$BAF0 PRG:3AF0 F0 08 + lda BallTargetY ; CPU:$BAF2 PRG:3AF2 AD 0C 05 + beq BallPlayerMoveEndG_Loop3 ; CPU:$BAF5 PRG:3AF5 F0 0D + jmp BallStoreTeamNumberG ; CPU:$BAF7 PRG:3AF7 4C 10 BB +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndG_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndG_Loop2: + lda BallVelocityY ; CPU:$BAFA PRG:3AFA AD 04 05 + bne BallPlayerMoveEndG_Loop4 ; CPU:$BAFD PRG:3AFD D0 0C + lda BallTargetY ; CPU:$BAFF PRG:3AFF AD 0C 05 + bne BallPlayerMoveEndG_Loop4 ; CPU:$BB02 PRG:3B02 D0 07 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndG_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndG_Loop3: + lda BallY ; CPU:$BB04 PRG:3B04 AD 01 05 + cmp #$58 ; CPU:$BB07 PRG:3B07 C9 58 + bcc BallStoreTeamNumberG ; CPU:$BB09 PRG:3B09 90 05 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveEndG_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveEndG_Loop4: + lda #$2E ; CPU:$BB0B PRG:3B0B A9 2E + jmp BallStoreTeamNumberH ; CPU:$BB0D PRG:3B0D 4C 12 BB +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberG: + lda #$2D ; CPU:$BB10 PRG:3B10 A9 2D +; ----------------------------------------------------------------------------- +; Routine: BallStoreTeamNumberH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreTeamNumberH: + sta ScoreRecord,y ; CPU:$BB12 PRG:3B12 99 13 05 + lda #$08 ; CPU:$BB15 PRG:3B15 A9 08 + sta $0514,y ; CPU:$BB17 PRG:3B17 99 14 05 + lda #$00 ; CPU:$BB1A PRG:3B1A A9 00 + sta NationStateA ; CPU:$BB1C PRG:3B1C 85 5E + rts ; CPU:$BB1E PRG:3B1E 60 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE: + lda $0516,y ; CPU:$BB1F PRG:3B1F B9 16 05 + and #$01 ; CPU:$BB22 PRG:3B22 29 01 + beq BallHandlePlayerButtonE_Loop ; CPU:$BB24 PRG:3B24 F0 03 + jmp BallClearBallB ; CPU:$BB26 PRG:3B26 4C 79 BC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop: + lda ScoreRecord,y ; CPU:$BB29 PRG:3B29 B9 13 05 + cmp #$33 ; CPU:$BB2C PRG:3B2C C9 33 + beq BallHandlePlayerButtonE_Loop2 ; CPU:$BB2E PRG:3B2E F0 11 + lda #$33 ; CPU:$BB30 PRG:3B30 A9 33 + sta ScoreRecord,y ; CPU:$BB32 PRG:3B32 99 13 05 + lda #$00 ; CPU:$BB35 PRG:3B35 A9 00 + sta $0514,y ; CPU:$BB37 PRG:3B37 99 14 05 + lda #$01 ; CPU:$BB3A PRG:3B3A A9 01 + sta NationStateA ; CPU:$BB3C PRG:3B3C 85 5E + jmp BallClearBallB ; CPU:$BB3E PRG:3B3E 4C 79 BC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop2: + lda BallFrameCounter ; CPU:$BB41 PRG:3B41 AD 02 05 + cmp #$40 ; CPU:$BB44 PRG:3B44 C9 40 + bcc BallHandlePlayerButtonE_Loop3 ; CPU:$BB46 PRG:3B46 90 03 + jmp BallClearBallB ; CPU:$BB48 PRG:3B48 4C 79 BC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop3: + cmp #$20 ; CPU:$BB4B PRG:3B4B C9 20 + bcs BallHandlePlayerButtonE_Loop4 ; CPU:$BB4D PRG:3B4D B0 03 + jmp BallClearBallB ; CPU:$BB4F PRG:3B4F 4C 79 BC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop4: + lda $0514,y ; CPU:$BB52 PRG:3B52 B9 14 05 + sta NumberToDisplay ; CPU:$BB55 PRG:3B55 85 45 + txa ; CPU:$BB57 PRG:3B57 8A + pha ; CPU:$BB58 PRG:3B58 48 + tya ; CPU:$BB59 PRG:3B59 98 + pha ; CPU:$BB5A PRG:3B5A 48 + ldy #$00 ; CPU:$BB5B PRG:3B5B A0 00 + lda BallX ; CPU:$BB5D PRG:3B5D AD 00 05 + cmp #$CE ; CPU:$BB60 PRG:3B60 C9 CE + bcc BallHandlePlayerButtonE_Loop5 ; CPU:$BB62 PRG:3B62 90 08 + ldy #$06 ; CPU:$BB64 PRG:3B64 A0 06 + cmp #$EC ; CPU:$BB66 PRG:3B66 C9 EC + bcc BallHandlePlayerButtonE_Loop5 ; CPU:$BB68 PRG:3B68 90 02 + ldy #$0C ; CPU:$BB6A PRG:3B6A A0 0C +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop5: + lda NumberToDisplay ; CPU:$BB6C PRG:3B6C A5 45 + cmp #$05 ; CPU:$BB6E PRG:3B6E C9 05 + bcs BallHandlePlayerButtonE_Loop6 ; CPU:$BB70 PRG:3B70 B0 03 + jmp BallRestorePlayerSlotD ; CPU:$BB72 PRG:3B72 4C 75 BC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop6: + cmp #$07 ; CPU:$BB75 PRG:3B75 C9 07 + bcc BallHandlePlayerButtonE_Loop7 ; CPU:$BB77 PRG:3B77 90 0B + cmp #$09 ; CPU:$BB79 PRG:3B79 C9 09 + bcc BallHandlePlayerButtonE_Loop8 ; CPU:$BB7B PRG:3B7B 90 0A + cmp #$0B ; CPU:$BB7D PRG:3B7D C9 0B + bcc BallHandlePlayerButtonE_Loop7 ; CPU:$BB7F PRG:3B7F 90 03 + jmp BallRestorePlayerSlotD ; CPU:$BB81 PRG:3B81 4C 75 BC +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop7: + iny ; CPU:$BB84 PRG:3B84 C8 + iny ; CPU:$BB85 PRG:3B85 C8 + iny ; CPU:$BB86 PRG:3B86 C8 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop8: + lda PlayerRightInput ; CPU:$BB87 PRG:3B87 A5 76 + and #$03 ; CPU:$BB89 PRG:3B89 29 03 + beq BallHandlePlayerButtonE_Loop9 ; CPU:$BB8B PRG:3B8B F0 11 + cmp #$01 ; CPU:$BB8D PRG:3B8D C9 01 + beq BallHandlePlayerButtonE_Loop10 ; CPU:$BB8F PRG:3B8F F0 1A + lda $E5B4,y ; CPU:$BB91 PRG:3B91 B9 B4 E5 + pha ; CPU:$BB94 PRG:3B94 48 + lda $E5B2,y ; CPU:$BB95 PRG:3B95 B9 B2 E5 + ldx $E5B3,y ; CPU:$BB98 PRG:3B98 BE B3 E5 + jmp BallStorePlayerStateM ; CPU:$BB9B PRG:3B9B 4C B8 BB +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop9: + lda $E5C6,y ; CPU:$BB9E PRG:3B9E B9 C6 E5 + pha ; CPU:$BBA1 PRG:3BA1 48 + lda $E5C4,y ; CPU:$BBA2 PRG:3BA2 B9 C4 E5 + ldx $E5C5,y ; CPU:$BBA5 PRG:3BA5 BE C5 E5 + jmp BallStorePlayerStateM ; CPU:$BBA8 PRG:3BA8 4C B8 BB +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonE_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonE_Loop10: + lda $E5D8,y ; CPU:$BBAB PRG:3BAB B9 D8 E5 + pha ; CPU:$BBAE PRG:3BAE 48 + lda $E5D6,y ; CPU:$BBAF PRG:3BAF B9 D6 E5 + ldx $E5D7,y ; CPU:$BBB2 PRG:3BB2 BE D7 E5 + jmp BallStorePlayerStateM ; CPU:$BBB5 PRG:3BB5 4C B8 BB +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateM +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateM: + sta BallSpeed ; CPU:$BBB8 PRG:3BB8 8D 05 05 + stx BallVelocityX ; CPU:$BBBB PRG:3BBB 8E 03 05 + pla ; CPU:$BBBE PRG:3BBE 68 + sta BallTargetX ; CPU:$BBBF PRG:3BBF 8D 0B 05 + lda PlayerRightInput ; CPU:$BBC2 PRG:3BC2 A5 76 + and #$02 ; CPU:$BBC4 PRG:3BC4 29 02 + beq BallStorePlayerStateM_Loop ; CPU:$BBC6 PRG:3BC6 F0 03 + jmp BallPlayerMoveMiddleI ; CPU:$BBC8 PRG:3BC8 4C 07 BC +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateM_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateM_Loop: + ldy #$00 ; CPU:$BBCB PRG:3BCB A0 00 + lda BallY ; CPU:$BBCD PRG:3BCD AD 01 05 + cmp #$49 ; CPU:$BBD0 PRG:3BD0 C9 49 + bcc BallStorePlayerStateM_Loop2 ; CPU:$BBD2 PRG:3BD2 90 08 + iny ; CPU:$BBD4 PRG:3BD4 C8 + iny ; CPU:$BBD5 PRG:3BD5 C8 + cmp #$68 ; CPU:$BBD6 PRG:3BD6 C9 68 + bcc BallStorePlayerStateM_Loop2 ; CPU:$BBD8 PRG:3BD8 90 02 + iny ; CPU:$BBDA PRG:3BDA C8 + iny ; CPU:$BBDB PRG:3BDB C8 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateM_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateM_Loop2: + lda PlayerRightInput ; CPU:$BBDC PRG:3BDC A5 76 + and #$0C ; CPU:$BBDE PRG:3BDE 29 0C + beq BallStorePlayerStateM_Loop3 ; CPU:$BBE0 PRG:3BE0 F0 0D + cmp #$04 ; CPU:$BBE2 PRG:3BE2 C9 04 + beq BallStorePlayerStateM_Loop4 ; CPU:$BBE4 PRG:3BE4 F0 12 + lda $E510,y ; CPU:$BBE6 PRG:3BE6 B9 10 E5 + ldx $E511,y ; CPU:$BBE9 PRG:3BE9 BE 11 E5 + jmp BallStorePlayerStateN ; CPU:$BBEC PRG:3BEC 4C FE BB +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateM_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateM_Loop3: + lda $E516,y ; CPU:$BBEF PRG:3BEF B9 16 E5 + ldx $E517,y ; CPU:$BBF2 PRG:3BF2 BE 17 E5 + jmp BallStorePlayerStateN ; CPU:$BBF5 PRG:3BF5 4C FE BB +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateM_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateM_Loop4: + lda $E51C,y ; CPU:$BBF8 PRG:3BF8 B9 1C E5 + ldx $E51D,y ; CPU:$BBFB PRG:3BFB BE 1D E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateN +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateN: + sta BallVelocityY ; CPU:$BBFE PRG:3BFE 8D 04 05 + stx BallTargetY ; CPU:$BC01 PRG:3C01 8E 0C 05 + jmp BallCheckPlayerFacingC ; CPU:$BC04 PRG:3C04 4C 40 BC +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleI +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleI: + ldy #$00 ; CPU:$BC07 PRG:3C07 A0 00 + lda BallY ; CPU:$BC09 PRG:3C09 AD 01 05 + cmp #$49 ; CPU:$BC0C PRG:3C0C C9 49 + bcc BallPlayerMoveMiddleI_Loop ; CPU:$BC0E PRG:3C0E 90 08 + iny ; CPU:$BC10 PRG:3C10 C8 + iny ; CPU:$BC11 PRG:3C11 C8 + cmp #$68 ; CPU:$BC12 PRG:3C12 C9 68 + bcc BallPlayerMoveMiddleI_Loop ; CPU:$BC14 PRG:3C14 90 02 + iny ; CPU:$BC16 PRG:3C16 C8 + iny ; CPU:$BC17 PRG:3C17 C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleI_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleI_Loop: + lda PlayerRightInput ; CPU:$BC18 PRG:3C18 A5 76 + and #$0C ; CPU:$BC1A PRG:3C1A 29 0C + beq BallPlayerMoveMiddleI_Loop2 ; CPU:$BC1C PRG:3C1C F0 0D + cmp #$04 ; CPU:$BC1E PRG:3C1E C9 04 + beq BallPlayerMoveMiddleI_Loop3 ; CPU:$BC20 PRG:3C20 F0 12 + lda $E522,y ; CPU:$BC22 PRG:3C22 B9 22 E5 + ldx $E523,y ; CPU:$BC25 PRG:3C25 BE 23 E5 + jmp BallStorePlayerStateO ; CPU:$BC28 PRG:3C28 4C 3A BC +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleI_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleI_Loop2: + lda $E528,y ; CPU:$BC2B PRG:3C2B B9 28 E5 + ldx $E529,y ; CPU:$BC2E PRG:3C2E BE 29 E5 + jmp BallStorePlayerStateO ; CPU:$BC31 PRG:3C31 4C 3A BC +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleI_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleI_Loop3: + lda $E52E,y ; CPU:$BC34 PRG:3C34 B9 2E E5 + ldx $E52F,y ; CPU:$BC37 PRG:3C37 BE 2F E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateO +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateO: + sta BallVelocityY ; CPU:$BC3A PRG:3C3A 8D 04 05 + stx BallTargetY ; CPU:$BC3D PRG:3C3D 8E 0C 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacingC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacingC: + lda PlayerRightInput ; CPU:$BC40 PRG:3C40 A5 76 + and #$03 ; CPU:$BC42 PRG:3C42 29 03 + cmp #$02 ; CPU:$BC44 PRG:3C44 C9 02 + bne BallCheckPlayerFacingC_Loop ; CPU:$BC46 PRG:3C46 D0 0C + lda BallSpeed ; CPU:$BC48 PRG:3C48 AD 05 05 + clc ; CPU:$BC4B PRG:3C4B 18 + adc #$01 ; CPU:$BC4C PRG:3C4C 69 01 + sta BallPreviousX ; CPU:$BC4E PRG:3C4E 8D 08 05 + jmp BallPlayHitSoundB ; CPU:$BC51 PRG:3C51 4C 68 BC +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacingC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacingC_Loop: + cmp #$01 ; CPU:$BC54 PRG:3C54 C9 01 + bne BallCheckPlayerFacingC_Loop2 ; CPU:$BC56 PRG:3C56 D0 08 + lda #$04 ; CPU:$BC58 PRG:3C58 A9 04 + sta BallPreviousX ; CPU:$BC5A PRG:3C5A 8D 08 05 + jmp BallPlayHitSoundB ; CPU:$BC5D PRG:3C5D 4C 68 BC +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacingC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacingC_Loop2: + lda #$03 ; CPU:$BC60 PRG:3C60 A9 03 + sta BallPreviousX ; CPU:$BC62 PRG:3C62 8D 08 05 + jmp BallPlayHitSoundB ; CPU:$BC65 PRG:3C65 4C 68 BC +; ----------------------------------------------------------------------------- +; Routine: BallPlayHitSoundB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayHitSoundB: + lda #$02 ; CPU:$BC68 PRG:3C68 A9 02 + sta SfxCommand ; CPU:$BC6A PRG:3C6A 85 EF + pla ; CPU:$BC6C PRG:3C6C 68 + tay ; CPU:$BC6D PRG:3C6D A8 + pla ; CPU:$BC6E PRG:3C6E 68 + tax ; CPU:$BC6F PRG:3C6F AA + lda #$00 ; CPU:$BC70 PRG:3C70 A9 00 + sta NumberToDisplay ; CPU:$BC72 PRG:3C72 85 45 + rts ; CPU:$BC74 PRG:3C74 60 +; ----------------------------------------------------------------------------- +; Routine: BallRestorePlayerSlotD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallRestorePlayerSlotD: + pla ; CPU:$BC75 PRG:3C75 68 + tay ; CPU:$BC76 PRG:3C76 A8 + pla ; CPU:$BC77 PRG:3C77 68 + tax ; CPU:$BC78 PRG:3C78 AA +; ----------------------------------------------------------------------------- +; Routine: BallClearBallB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallClearBallB: + lda #$FF ; CPU:$BC79 PRG:3C79 A9 FF + sta NumberToDisplay ; CPU:$BC7B PRG:3C7B 85 45 + rts ; CPU:$BC7D PRG:3C7D 60 +; ----------------------------------------------------------------------------- +; Routine: BallSelectSlotF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSelectSlotF: + ldx #$0B ; CPU:$BC7E PRG:3C7E A2 0B +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF: + txa ; CPU:$BC80 PRG:3C80 8A + asl a ; CPU:$BC81 PRG:3C81 0A + asl a ; CPU:$BC82 PRG:3C82 0A + asl a ; CPU:$BC83 PRG:3C83 0A + tay ; CPU:$BC84 PRG:3C84 A8 + lda BallX ; CPU:$BC85 PRG:3C85 AD 00 05 + sec ; CPU:$BC88 PRG:3C88 38 + sbc #$08 ; CPU:$BC89 PRG:3C89 E9 08 + sta NumberToDisplay ; CPU:$BC8B PRG:3C8B 85 45 + lda BallPositionX,y ; CPU:$BC8D PRG:3C8D B9 0F 05 + clc ; CPU:$BC90 PRG:3C90 18 + adc #$08 ; CPU:$BC91 PRG:3C91 69 08 + sec ; CPU:$BC93 PRG:3C93 38 + sbc NumberToDisplay ; CPU:$BC94 PRG:3C94 E5 45 + bcs BallSlotOffsetF_Loop ; CPU:$BC96 PRG:3C96 B0 03 + jmp BallNextPlayerSlotL ; CPU:$BC98 PRG:3C98 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop: + cmp #$20 ; CPU:$BC9B PRG:3C9B C9 20 + bcc BallSlotOffsetF_Loop2 ; CPU:$BC9D PRG:3C9D 90 03 + jmp BallNextPlayerSlotL ; CPU:$BC9F PRG:3C9F 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop2: + lda BallPositionY,y ; CPU:$BCA2 PRG:3CA2 B9 10 05 + clc ; CPU:$BCA5 PRG:3CA5 18 + adc #$10 ; CPU:$BCA6 PRG:3CA6 69 10 + sec ; CPU:$BCA8 PRG:3CA8 38 + sbc BallY ; CPU:$BCA9 PRG:3CA9 ED 01 05 + bcs BallSlotOffsetF_Loop3 ; CPU:$BCAC PRG:3CAC B0 03 + jmp BallNextPlayerSlotL ; CPU:$BCAE PRG:3CAE 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop3: + cmp #$20 ; CPU:$BCB1 PRG:3CB1 C9 20 + bcc BallSlotOffsetF_Loop4 ; CPU:$BCB3 PRG:3CB3 90 03 + jmp BallNextPlayerSlotL ; CPU:$BCB5 PRG:3CB5 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop4: + lda PlayerRightInput ; CPU:$BCB8 PRG:3CB8 A5 76 + and #$80 ; CPU:$BCBA PRG:3CBA 29 80 + beq BallSlotOffsetF_Loop5 ; CPU:$BCBC PRG:3CBC F0 03 + jmp BallHandlePlayerButtonF ; CPU:$BCBE PRG:3CBE 4C 3D BE +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop5: + lda $0516,y ; CPU:$BCC1 PRG:3CC1 B9 16 05 + and #$01 ; CPU:$BCC4 PRG:3CC4 29 01 + beq BallSlotOffsetF_Loop6 ; CPU:$BCC6 PRG:3CC6 F0 03 + jmp BallNextPlayerSlotL ; CPU:$BCC8 PRG:3CC8 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop6: + lda ScoreRecord,y ; CPU:$BCCB PRG:3CCB B9 13 05 + cmp #$33 ; CPU:$BCCE PRG:3CCE C9 33 + beq BallSlotOffsetF_Loop7 ; CPU:$BCD0 PRG:3CD0 F0 11 + lda #$33 ; CPU:$BCD2 PRG:3CD2 A9 33 + sta ScoreRecord,y ; CPU:$BCD4 PRG:3CD4 99 13 05 + lda #$00 ; CPU:$BCD7 PRG:3CD7 A9 00 + sta $0514,y ; CPU:$BCD9 PRG:3CD9 99 14 05 + lda #$01 ; CPU:$BCDC PRG:3CDC A9 01 + sta NationStateA ; CPU:$BCDE PRG:3CDE 85 5E + jmp BallNextPlayerSlotL ; CPU:$BCE0 PRG:3CE0 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop7: + lda BallX ; CPU:$BCE3 PRG:3CE3 AD 00 05 + sec ; CPU:$BCE6 PRG:3CE6 38 + sbc #$08 ; CPU:$BCE7 PRG:3CE7 E9 08 + sta NumberToDisplay ; CPU:$BCE9 PRG:3CE9 85 45 + lda BallPositionX,y ; CPU:$BCEB PRG:3CEB B9 0F 05 + clc ; CPU:$BCEE PRG:3CEE 18 + adc #$00 ; CPU:$BCEF PRG:3CEF 69 00 + sec ; CPU:$BCF1 PRG:3CF1 38 + sbc NumberToDisplay ; CPU:$BCF2 PRG:3CF2 E5 45 + bcs BallSlotOffsetF_Loop8 ; CPU:$BCF4 PRG:3CF4 B0 03 + jmp BallNextPlayerSlotL ; CPU:$BCF6 PRG:3CF6 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop8: + cmp #$10 ; CPU:$BCF9 PRG:3CF9 C9 10 + bcc BallSlotOffsetF_Loop9 ; CPU:$BCFB PRG:3CFB 90 03 + jmp BallNextPlayerSlotL ; CPU:$BCFD PRG:3CFD 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop9: + lda BallPositionY,y ; CPU:$BD00 PRG:3D00 B9 10 05 + clc ; CPU:$BD03 PRG:3D03 18 + adc #$08 ; CPU:$BD04 PRG:3D04 69 08 + sec ; CPU:$BD06 PRG:3D06 38 + sbc BallY ; CPU:$BD07 PRG:3D07 ED 01 05 + bcs BallSlotOffsetF_Loop10 ; CPU:$BD0A PRG:3D0A B0 03 + jmp BallNextPlayerSlotL ; CPU:$BD0C PRG:3D0C 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop10: + cmp #$10 ; CPU:$BD0F PRG:3D0F C9 10 + bcc BallSlotOffsetF_Loop11 ; CPU:$BD11 PRG:3D11 90 03 + jmp BallNextPlayerSlotL ; CPU:$BD13 PRG:3D13 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop11 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop11: + lda BallFrameCounter ; CPU:$BD16 PRG:3D16 AD 02 05 + cmp #$40 ; CPU:$BD19 PRG:3D19 C9 40 + bcc BallSlotOffsetF_Loop12 ; CPU:$BD1B PRG:3D1B 90 03 + jmp BallNextPlayerSlotL ; CPU:$BD1D PRG:3D1D 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop12 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop12: + cmp #$20 ; CPU:$BD20 PRG:3D20 C9 20 + bcs BallSlotOffsetF_Loop13 ; CPU:$BD22 PRG:3D22 B0 03 + jmp BallNextPlayerSlotL ; CPU:$BD24 PRG:3D24 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop13 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop13: + lda $0514,y ; CPU:$BD27 PRG:3D27 B9 14 05 + sta NumberToDisplay ; CPU:$BD2A PRG:3D2A 85 45 + txa ; CPU:$BD2C PRG:3D2C 8A + pha ; CPU:$BD2D PRG:3D2D 48 + tya ; CPU:$BD2E PRG:3D2E 98 + pha ; CPU:$BD2F PRG:3D2F 48 + ldy #$00 ; CPU:$BD30 PRG:3D30 A0 00 + lda BallX ; CPU:$BD32 PRG:3D32 AD 00 05 + cmp #$CE ; CPU:$BD35 PRG:3D35 C9 CE + bcc BallSlotOffsetF_Loop14 ; CPU:$BD37 PRG:3D37 90 08 + ldy #$06 ; CPU:$BD39 PRG:3D39 A0 06 + cmp #$EC ; CPU:$BD3B PRG:3D3B C9 EC + bcc BallSlotOffsetF_Loop14 ; CPU:$BD3D PRG:3D3D 90 02 + ldy #$0C ; CPU:$BD3F PRG:3D3F A0 0C +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop14 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop14: + lda NumberToDisplay ; CPU:$BD41 PRG:3D41 A5 45 + cmp #$05 ; CPU:$BD43 PRG:3D43 C9 05 + bcs BallSlotOffsetF_Loop15 ; CPU:$BD45 PRG:3D45 B0 03 + jmp BallRestorePlayerSlotF ; CPU:$BD47 PRG:3D47 4C 45 BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop15 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop15: + cmp #$07 ; CPU:$BD4A PRG:3D4A C9 07 + bcc BallSlotOffsetF_Loop16 ; CPU:$BD4C PRG:3D4C 90 0B + cmp #$09 ; CPU:$BD4E PRG:3D4E C9 09 + bcc BallSlotOffsetF_Loop17 ; CPU:$BD50 PRG:3D50 90 0A + cmp #$0B ; CPU:$BD52 PRG:3D52 C9 0B + bcc BallSlotOffsetF_Loop16 ; CPU:$BD54 PRG:3D54 90 03 + jmp BallRestorePlayerSlotF ; CPU:$BD56 PRG:3D56 4C 45 BF +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop16 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop16: + iny ; CPU:$BD59 PRG:3D59 C8 + iny ; CPU:$BD5A PRG:3D5A C8 + iny ; CPU:$BD5B PRG:3D5B C8 +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop17 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop17: + lda PlayerRightInput ; CPU:$BD5C PRG:3D5C A5 76 + and #$03 ; CPU:$BD5E PRG:3D5E 29 03 + beq BallSlotOffsetF_Loop18 ; CPU:$BD60 PRG:3D60 F0 11 + cmp #$01 ; CPU:$BD62 PRG:3D62 C9 01 + beq BallSlotOffsetF_Loop19 ; CPU:$BD64 PRG:3D64 F0 1A + lda $E5B4,y ; CPU:$BD66 PRG:3D66 B9 B4 E5 + pha ; CPU:$BD69 PRG:3D69 48 + lda $E5B2,y ; CPU:$BD6A PRG:3D6A B9 B2 E5 + ldx $E5B3,y ; CPU:$BD6D PRG:3D6D BE B3 E5 + jmp BallStorePlayerStateP ; CPU:$BD70 PRG:3D70 4C 8D BD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop18 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop18: + lda $E5C6,y ; CPU:$BD73 PRG:3D73 B9 C6 E5 + pha ; CPU:$BD76 PRG:3D76 48 + lda $E5C4,y ; CPU:$BD77 PRG:3D77 B9 C4 E5 + ldx $E5C5,y ; CPU:$BD7A PRG:3D7A BE C5 E5 + jmp BallStorePlayerStateP ; CPU:$BD7D PRG:3D7D 4C 8D BD +; ----------------------------------------------------------------------------- +; Routine: BallSlotOffsetF_Loop19 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSlotOffsetF_Loop19: + lda $E5D8,y ; CPU:$BD80 PRG:3D80 B9 D8 E5 + pha ; CPU:$BD83 PRG:3D83 48 + lda $E5D6,y ; CPU:$BD84 PRG:3D84 B9 D6 E5 + ldx $E5D7,y ; CPU:$BD87 PRG:3D87 BE D7 E5 + jmp BallStorePlayerStateP ; CPU:$BD8A PRG:3D8A 4C 8D BD +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateP +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateP: + sta BallSpeed ; CPU:$BD8D PRG:3D8D 8D 05 05 + stx BallVelocityX ; CPU:$BD90 PRG:3D90 8E 03 05 + pla ; CPU:$BD93 PRG:3D93 68 + sta BallTargetX ; CPU:$BD94 PRG:3D94 8D 0B 05 + lda PlayerRightInput ; CPU:$BD97 PRG:3D97 A5 76 + and #$02 ; CPU:$BD99 PRG:3D99 29 02 + beq BallStorePlayerStateP_Loop ; CPU:$BD9B PRG:3D9B F0 03 + jmp BallPlayerMoveMiddleJ ; CPU:$BD9D PRG:3D9D 4C DC BD +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateP_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateP_Loop: + ldy #$00 ; CPU:$BDA0 PRG:3DA0 A0 00 + lda BallY ; CPU:$BDA2 PRG:3DA2 AD 01 05 + cmp #$49 ; CPU:$BDA5 PRG:3DA5 C9 49 + bcc BallStorePlayerStateP_Loop2 ; CPU:$BDA7 PRG:3DA7 90 08 + iny ; CPU:$BDA9 PRG:3DA9 C8 + iny ; CPU:$BDAA PRG:3DAA C8 + cmp #$68 ; CPU:$BDAB PRG:3DAB C9 68 + bcc BallStorePlayerStateP_Loop2 ; CPU:$BDAD PRG:3DAD 90 02 + iny ; CPU:$BDAF PRG:3DAF C8 + iny ; CPU:$BDB0 PRG:3DB0 C8 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateP_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateP_Loop2: + lda PlayerRightInput ; CPU:$BDB1 PRG:3DB1 A5 76 + and #$0C ; CPU:$BDB3 PRG:3DB3 29 0C + beq BallStorePlayerStateP_Loop3 ; CPU:$BDB5 PRG:3DB5 F0 0D + cmp #$04 ; CPU:$BDB7 PRG:3DB7 C9 04 + beq BallStorePlayerStateP_Loop4 ; CPU:$BDB9 PRG:3DB9 F0 12 + lda $E510,y ; CPU:$BDBB PRG:3DBB B9 10 E5 + ldx $E511,y ; CPU:$BDBE PRG:3DBE BE 11 E5 + jmp BallStorePlayerStateQ ; CPU:$BDC1 PRG:3DC1 4C D3 BD +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateP_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateP_Loop3: + lda $E516,y ; CPU:$BDC4 PRG:3DC4 B9 16 E5 + ldx $E517,y ; CPU:$BDC7 PRG:3DC7 BE 17 E5 + jmp BallStorePlayerStateQ ; CPU:$BDCA PRG:3DCA 4C D3 BD +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateP_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateP_Loop4: + lda $E51C,y ; CPU:$BDCD PRG:3DCD B9 1C E5 + ldx $E51D,y ; CPU:$BDD0 PRG:3DD0 BE 1D E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateQ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateQ: + sta BallVelocityY ; CPU:$BDD3 PRG:3DD3 8D 04 05 + stx BallTargetY ; CPU:$BDD6 PRG:3DD6 8E 0C 05 + jmp BallCheckPlayerFacingD ; CPU:$BDD9 PRG:3DD9 4C 15 BE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleJ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleJ: + ldy #$00 ; CPU:$BDDC PRG:3DDC A0 00 + lda BallY ; CPU:$BDDE PRG:3DDE AD 01 05 + cmp #$49 ; CPU:$BDE1 PRG:3DE1 C9 49 + bcc BallPlayerMoveMiddleJ_Loop ; CPU:$BDE3 PRG:3DE3 90 08 + iny ; CPU:$BDE5 PRG:3DE5 C8 + iny ; CPU:$BDE6 PRG:3DE6 C8 + cmp #$68 ; CPU:$BDE7 PRG:3DE7 C9 68 + bcc BallPlayerMoveMiddleJ_Loop ; CPU:$BDE9 PRG:3DE9 90 02 + iny ; CPU:$BDEB PRG:3DEB C8 + iny ; CPU:$BDEC PRG:3DEC C8 +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleJ_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleJ_Loop: + lda PlayerRightInput ; CPU:$BDED PRG:3DED A5 76 + and #$0C ; CPU:$BDEF PRG:3DEF 29 0C + beq BallPlayerMoveMiddleJ_Loop2 ; CPU:$BDF1 PRG:3DF1 F0 0D + cmp #$04 ; CPU:$BDF3 PRG:3DF3 C9 04 + beq BallPlayerMoveMiddleJ_Loop3 ; CPU:$BDF5 PRG:3DF5 F0 12 + lda $E522,y ; CPU:$BDF7 PRG:3DF7 B9 22 E5 + ldx $E523,y ; CPU:$BDFA PRG:3DFA BE 23 E5 + jmp BallStorePlayerStateR ; CPU:$BDFD PRG:3DFD 4C 0F BE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleJ_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleJ_Loop2: + lda $E528,y ; CPU:$BE00 PRG:3E00 B9 28 E5 + ldx $E529,y ; CPU:$BE03 PRG:3E03 BE 29 E5 + jmp BallStorePlayerStateR ; CPU:$BE06 PRG:3E06 4C 0F BE +; ----------------------------------------------------------------------------- +; Routine: BallPlayerMoveMiddleJ_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallPlayerMoveMiddleJ_Loop3: + lda $E52E,y ; CPU:$BE09 PRG:3E09 B9 2E E5 + ldx $E52F,y ; CPU:$BE0C PRG:3E0C BE 2F E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateR +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateR: + sta BallVelocityY ; CPU:$BE0F PRG:3E0F 8D 04 05 + stx BallTargetY ; CPU:$BE12 PRG:3E12 8E 0C 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacingD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacingD: + lda PlayerRightInput ; CPU:$BE15 PRG:3E15 A5 76 + and #$03 ; CPU:$BE17 PRG:3E17 29 03 + cmp #$02 ; CPU:$BE19 PRG:3E19 C9 02 + bne BallCheckPlayerFacingD_Loop ; CPU:$BE1B PRG:3E1B D0 0C + lda BallSpeed ; CPU:$BE1D PRG:3E1D AD 05 05 + clc ; CPU:$BE20 PRG:3E20 18 + adc #$01 ; CPU:$BE21 PRG:3E21 69 01 + sta BallPreviousX ; CPU:$BE23 PRG:3E23 8D 08 05 + jmp BallRestorePlayerSlotE ; CPU:$BE26 PRG:3E26 4C E4 BE +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacingD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacingD_Loop: + cmp #$01 ; CPU:$BE29 PRG:3E29 C9 01 + bne BallCheckPlayerFacingD_Loop2 ; CPU:$BE2B PRG:3E2B D0 08 + lda #$04 ; CPU:$BE2D PRG:3E2D A9 04 + sta BallPreviousX ; CPU:$BE2F PRG:3E2F 8D 08 05 + jmp BallRestorePlayerSlotE ; CPU:$BE32 PRG:3E32 4C E4 BE +; ----------------------------------------------------------------------------- +; Routine: BallCheckPlayerFacingD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckPlayerFacingD_Loop2: + lda #$03 ; CPU:$BE35 PRG:3E35 A9 03 + sta BallPreviousX ; CPU:$BE37 PRG:3E37 8D 08 05 + jmp BallRestorePlayerSlotE ; CPU:$BE3A PRG:3E3A 4C E4 BE +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonF: + lda $0516,y ; CPU:$BE3D PRG:3E3D B9 16 05 + and #$01 ; CPU:$BE40 PRG:3E40 29 01 + beq BallHandlePlayerButtonF_Loop ; CPU:$BE42 PRG:3E42 F0 03 + jmp BallNextPlayerSlotL ; CPU:$BE44 PRG:3E44 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonF_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonF_Loop: + lda BallFrameCounter ; CPU:$BE47 PRG:3E47 AD 02 05 + cmp #$18 ; CPU:$BE4A PRG:3E4A C9 18 + bcc BallHandlePlayerButtonF_Loop2 ; CPU:$BE4C PRG:3E4C 90 03 + jmp BallNextPlayerSlotL ; CPU:$BE4E PRG:3E4E 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonF_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonF_Loop2: + txa ; CPU:$BE51 PRG:3E51 8A + pha ; CPU:$BE52 PRG:3E52 48 + tya ; CPU:$BE53 PRG:3E53 98 + pha ; CPU:$BE54 PRG:3E54 48 + ldy #$00 ; CPU:$BE55 PRG:3E55 A0 00 + lda BallX ; CPU:$BE57 PRG:3E57 AD 00 05 + cmp #$CE ; CPU:$BE5A PRG:3E5A C9 CE + bcc BallHandlePlayerButtonF_Loop3 ; CPU:$BE5C PRG:3E5C 90 08 + iny ; CPU:$BE5E PRG:3E5E C8 + iny ; CPU:$BE5F PRG:3E5F C8 + cmp #$EC ; CPU:$BE60 PRG:3E60 C9 EC + bcc BallHandlePlayerButtonF_Loop3 ; CPU:$BE62 PRG:3E62 90 02 + iny ; CPU:$BE64 PRG:3E64 C8 + iny ; CPU:$BE65 PRG:3E65 C8 +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonF_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonF_Loop3: + lda PlayerRightInput ; CPU:$BE66 PRG:3E66 A5 76 + and #$03 ; CPU:$BE68 PRG:3E68 29 03 + beq BallHandlePlayerButtonF_Loop4 ; CPU:$BE6A PRG:3E6A F0 0D + cmp #$01 ; CPU:$BE6C PRG:3E6C C9 01 + beq BallHandlePlayerButtonF_Loop5 ; CPU:$BE6E PRG:3E6E F0 12 + lda $E5A0,y ; CPU:$BE70 PRG:3E70 B9 A0 E5 + ldx $E5A1,y ; CPU:$BE73 PRG:3E73 BE A1 E5 + jmp BallStorePlayerStateS ; CPU:$BE76 PRG:3E76 4C 88 BE +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonF_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonF_Loop4: + lda $E5A6,y ; CPU:$BE79 PRG:3E79 B9 A6 E5 + ldx $E5A7,y ; CPU:$BE7C PRG:3E7C BE A7 E5 + jmp BallStorePlayerStateS ; CPU:$BE7F PRG:3E7F 4C 88 BE +; ----------------------------------------------------------------------------- +; Routine: BallHandlePlayerButtonF_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallHandlePlayerButtonF_Loop5: + lda $E5AC,y ; CPU:$BE82 PRG:3E82 B9 AC E5 + ldx $E5AD,y ; CPU:$BE85 PRG:3E85 BE AD E5 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateS +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateS: + sta BallVelocityX ; CPU:$BE88 PRG:3E88 8D 03 05 + stx BallTargetX ; CPU:$BE8B PRG:3E8B 8E 0B 05 + ldy #$00 ; CPU:$BE8E PRG:3E8E A0 00 + lda BallY ; CPU:$BE90 PRG:3E90 AD 01 05 + cmp #$49 ; CPU:$BE93 PRG:3E93 C9 49 + bcc BallStorePlayerStateS_Loop ; CPU:$BE95 PRG:3E95 90 08 + iny ; CPU:$BE97 PRG:3E97 C8 + iny ; CPU:$BE98 PRG:3E98 C8 + cmp #$68 ; CPU:$BE99 PRG:3E99 C9 68 + bcc BallStorePlayerStateS_Loop ; CPU:$BE9B PRG:3E9B 90 02 + iny ; CPU:$BE9D PRG:3E9D C8 + iny ; CPU:$BE9E PRG:3E9E C8 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateS_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateS_Loop: + lda PlayerRightInput ; CPU:$BE9F PRG:3E9F A5 76 + and #$0C ; CPU:$BEA1 PRG:3EA1 29 0C + beq BallStorePlayerStateS_Loop2 ; CPU:$BEA3 PRG:3EA3 F0 0D + cmp #$04 ; CPU:$BEA5 PRG:3EA5 C9 04 + beq BallStorePlayerStateS_Loop3 ; CPU:$BEA7 PRG:3EA7 F0 12 + lda $E4DA,y ; CPU:$BEA9 PRG:3EA9 B9 DA E4 + ldx $E4DB,y ; CPU:$BEAC PRG:3EAC BE DB E4 + jmp BallStorePlayerStateT ; CPU:$BEAF PRG:3EAF 4C C1 BE +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateS_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateS_Loop2: + lda $E4E0,y ; CPU:$BEB2 PRG:3EB2 B9 E0 E4 + ldx $E4E1,y ; CPU:$BEB5 PRG:3EB5 BE E1 E4 + jmp BallStorePlayerStateT ; CPU:$BEB8 PRG:3EB8 4C C1 BE +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateS_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateS_Loop3: + lda $E4E6,y ; CPU:$BEBB PRG:3EBB B9 E6 E4 + ldx $E4E7,y ; CPU:$BEBE PRG:3EBE BE E7 E4 +; ----------------------------------------------------------------------------- +; Routine: BallStorePlayerStateT +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStorePlayerStateT: + sta BallVelocityY ; CPU:$BEC1 PRG:3EC1 8D 04 05 + stx BallTargetY ; CPU:$BEC4 PRG:3EC4 8E 0C 05 + lda #$06 ; CPU:$BEC7 PRG:3EC7 A9 06 + sta BallSpeed ; CPU:$BEC9 PRG:3EC9 8D 05 05 + sta BallPreviousX ; CPU:$BECC PRG:3ECC 8D 08 05 + pla ; CPU:$BECF PRG:3ECF 68 + tay ; CPU:$BED0 PRG:3ED0 A8 + pla ; CPU:$BED1 PRG:3ED1 68 + tax ; CPU:$BED2 PRG:3ED2 AA + lda #$2C ; CPU:$BED3 PRG:3ED3 A9 2C + sta ScoreRecord,y ; CPU:$BED5 PRG:3ED5 99 13 05 + lda #$08 ; CPU:$BED8 PRG:3ED8 A9 08 + sta $0514,y ; CPU:$BEDA PRG:3EDA 99 14 05 + lda #$01 ; CPU:$BEDD PRG:3EDD A9 01 + sta SfxCommand ; CPU:$BEDF PRG:3EDF 85 EF + jmp BallNextPlayerSlotK ; CPU:$BEE1 PRG:3EE1 4C EC BE +; ----------------------------------------------------------------------------- +; Routine: BallRestorePlayerSlotE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallRestorePlayerSlotE: + pla ; CPU:$BEE4 PRG:3EE4 68 + tay ; CPU:$BEE5 PRG:3EE5 A8 + pla ; CPU:$BEE6 PRG:3EE6 68 + tax ; CPU:$BEE7 PRG:3EE7 AA + lda #$02 ; CPU:$BEE8 PRG:3EE8 A9 02 + sta SfxCommand ; CPU:$BEEA PRG:3EEA 85 EF +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotK +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotK: + txa ; CPU:$BEEC PRG:3EEC 8A + pha ; CPU:$BEED PRG:3EED 48 + inc PlayerSlotIndex2 ; CPU:$BEEE PRG:3EEE E6 8C + lda #$00 ; CPU:$BEF0 PRG:3EF0 A9 00 + sta PlayerSlotIndex ; CPU:$BEF2 PRG:3EF2 85 8B + jsr DrawNumberSpriteAE ; CPU:$BEF4 PRG:3EF4 20 93 D0 + jsr GetCrowdSpriteY ; CPU:$BEF7 PRG:3EF7 20 B1 C7 + jsr DrawNumberSpriteH ; CPU:$BEFA PRG:3EFA 20 04 C9 + lda ColorIndex ; CPU:$BEFD PRG:3EFD A5 47 + asl a ; CPU:$BEFF PRG:3EFF 0A + bcs BallNextPlayerSlotK_Loop ; CPU:$BF00 PRG:3F00 B0 10 + jsr CheckCrowdOffset ; CPU:$BF02 PRG:3F02 20 3B C9 + lda #$00 ; CPU:$BF05 PRG:3F05 A9 00 + sta TeamScore1Lo ; CPU:$BF07 PRG:3F07 85 54 + lda #$15 ; CPU:$BF09 PRG:3F09 A9 15 + sta CrowdFlagsB ; CPU:$BF0B PRG:3F0B 85 51 + lda #$03 ; CPU:$BF0D PRG:3F0D A9 03 + jmp BallFinishPlayerUpdateG ; CPU:$BF0F PRG:3F0F 4C 1D BF +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotK_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotK_Loop: + lda BallFlags ; CPU:$BF12 PRG:3F12 A5 6E + ora #$02 ; CPU:$BF14 PRG:3F14 09 02 + sta BallFlags ; CPU:$BF16 PRG:3F16 85 6E + jsr DrawNumberSpriteM ; CPU:$BF18 PRG:3F18 20 CE C9 + lda #$00 ; CPU:$BF1B PRG:3F1B A9 00 +; ----------------------------------------------------------------------------- +; Routine: BallFinishPlayerUpdateG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFinishPlayerUpdateG: + sta TeamScore1Hi ; CPU:$BF1D PRG:3F1D 85 55 + jsr DrawNumberSpriteV ; CPU:$BF1F PRG:3F1F 20 5B CB + jsr ClearTeamSpriteFlags ; CPU:$BF22 PRG:3F22 20 89 CB + lda #$FF ; CPU:$BF25 PRG:3F25 A9 FF + sta PlayerSpriteIdB ; CPU:$BF27 PRG:3F27 85 57 + pla ; CPU:$BF29 PRG:3F29 68 + tax ; CPU:$BF2A PRG:3F2A AA + lda #$01 ; CPU:$BF2B PRG:3F2B A9 01 + stx Zp53 ; CPU:$BF2D PRG:3F2D 86 53 +; ----------------------------------------------------------------------------- +; Routine: BallWaitFrames +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallWaitFrames: + dec Zp53 ; CPU:$BF2F PRG:3F2F C6 53 + bcc BallWaitFrames_Loop ; CPU:$BF31 PRG:3F31 90 04 + asl a ; CPU:$BF33 PRG:3F33 0A + jmp BallWaitFrames ; CPU:$BF34 PRG:3F34 4C 2F BF +; ----------------------------------------------------------------------------- +; Routine: BallWaitFrames_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallWaitFrames_Loop: + eor #$FF ; CPU:$BF37 PRG:3F37 49 FF + and CrowdFlagsB ; CPU:$BF39 PRG:3F39 25 51 + rts ; CPU:$BF3B PRG:3F3B 60 +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotL +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotL: + dex ; CPU:$BF3C PRG:3F3C CA + cpx #$05 ; CPU:$BF3D PRG:3F3D E0 05 + beq BallNextPlayerSlotL_Loop ; CPU:$BF3F PRG:3F3F F0 03 + jmp BallSlotOffsetF ; CPU:$BF41 PRG:3F41 4C 80 BC +; ----------------------------------------------------------------------------- +; Routine: BallNextPlayerSlotL_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallNextPlayerSlotL_Loop: + rts ; CPU:$BF44 PRG:3F44 60 +; ----------------------------------------------------------------------------- +; Routine: BallRestorePlayerSlotF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallRestorePlayerSlotF: + pla ; CPU:$BF45 PRG:3F45 68 + tay ; CPU:$BF46 PRG:3F46 A8 + pla ; CPU:$BF47 PRG:3F47 68 + tax ; CPU:$BF48 PRG:3F48 AA + jmp BallNextPlayerSlotL ; CPU:$BF49 PRG:3F49 4C 3C BF +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitTypeC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitTypeC: + lda PlayerRightInput ; CPU:$BF4C PRG:3F4C A5 76 + and #$80 ; CPU:$BF4E PRG:3F4E 29 80 + beq BallCheckHitTypeC_Loop ; CPU:$BF50 PRG:3F50 F0 29 + lda BallHitTypeTable ; CPU:$BF52 PRG:3F52 AD 0F C1 + sta $0541 ; CPU:$BF55 PRG:3F55 8D 41 05 + lda $C110 ; CPU:$BF58 PRG:3F58 AD 10 C1 + sta $0542 ; CPU:$BF5B PRG:3F5B 8D 42 05 + lda $C111 ; CPU:$BF5E PRG:3F5E AD 11 C1 + sta $0551 ; CPU:$BF61 PRG:3F61 8D 51 05 + lda $C112 ; CPU:$BF64 PRG:3F64 AD 12 C1 + sta $0552 ; CPU:$BF67 PRG:3F67 8D 52 05 + lda $C113 ; CPU:$BF6A PRG:3F6A AD 13 C1 + sta $0561 ; CPU:$BF6D PRG:3F6D 8D 61 05 + lda $C114 ; CPU:$BF70 PRG:3F70 AD 14 C1 + sta $0562 ; CPU:$BF73 PRG:3F73 8D 62 05 + lda #$02 ; CPU:$BF76 PRG:3F76 A9 02 + sta NationStateB ; CPU:$BF78 PRG:3F78 85 5F + rts ; CPU:$BF7A PRG:3F7A 60 +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitTypeC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitTypeC_Loop: + lda BallY ; CPU:$BF7B PRG:3F7B AD 01 05 + cmp #$58 ; CPU:$BF7E PRG:3F7E C9 58 + bcc BallCheckHitTypeC_Loop2 ; CPU:$BF80 PRG:3F80 90 14 + lda $0543 ; CPU:$BF82 PRG:3F82 AD 43 05 + cmp #$34 ; CPU:$BF85 PRG:3F85 C9 34 + beq BallCheckHitTypeD ; CPU:$BF87 PRG:3F87 F0 1E + lda #$34 ; CPU:$BF89 PRG:3F89 A9 34 + sta $0543 ; CPU:$BF8B PRG:3F8B 8D 43 05 + lda #$00 ; CPU:$BF8E PRG:3F8E A9 00 + sta $0544 ; CPU:$BF90 PRG:3F90 8D 44 05 + jmp BallCheckHitTypeD ; CPU:$BF93 PRG:3F93 4C A7 BF +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitTypeC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitTypeC_Loop2: + lda $0563 ; CPU:$BF96 PRG:3F96 AD 63 05 + cmp #$34 ; CPU:$BF99 PRG:3F99 C9 34 + beq BallCheckHitTypeD ; CPU:$BF9B PRG:3F9B F0 0A + lda #$34 ; CPU:$BF9D PRG:3F9D A9 34 + sta $0563 ; CPU:$BF9F PRG:3F9F 8D 63 05 + lda #$00 ; CPU:$BFA2 PRG:3FA2 A9 00 + sta $0564 ; CPU:$BFA4 PRG:3FA4 8D 64 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitTypeD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitTypeD: + lda PlayerRightInput ; CPU:$BFA7 PRG:3FA7 A5 76 + and #$01 ; CPU:$BFA9 PRG:3FA9 29 01 + beq BallCheckHitTypeD_Loop ; CPU:$BFAB PRG:3FAB F0 11 + lda $0553 ; CPU:$BFAD PRG:3FAD AD 53 05 + cmp #$34 ; CPU:$BFB0 PRG:3FB0 C9 34 + beq BallCheckHitTypeD_Loop ; CPU:$BFB2 PRG:3FB2 F0 0A + lda #$34 ; CPU:$BFB4 PRG:3FB4 A9 34 + sta $0553 ; CPU:$BFB6 PRG:3FB6 8D 53 05 + lda #$00 ; CPU:$BFB9 PRG:3FB9 A9 00 + sta $0554 ; CPU:$BFBB PRG:3FBB 8D 54 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckHitTypeD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckHitTypeD_Loop: + rts ; CPU:$BFBE PRG:3FBE 60 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumberB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumberB: + lda BallX ; CPU:$BFBF PRG:3FBF AD 00 05 + sec ; CPU:$BFC2 PRG:3FC2 38 + sbc #$04 ; CPU:$BFC3 PRG:3FC3 E9 04 + sta NumberToDisplay ; CPU:$BFC5 PRG:3FC5 85 45 + lda BallPositionX,y ; CPU:$BFC7 PRG:3FC7 B9 0F 05 + sec ; CPU:$BFCA PRG:3FCA 38 + sbc #$08 ; CPU:$BFCB PRG:3FCB E9 08 + sec ; CPU:$BFCD PRG:3FCD 38 + sbc NumberToDisplay ; CPU:$BFCE PRG:3FCE E5 45 + bcc BallSetBallNumberB_Loop ; CPU:$BFD0 PRG:3FD0 90 03 + jmp BallFrameDone6 ; CPU:$BFD2 PRG:3FD2 4C 0A C1 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumberB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumberB_Loop: + cmp #$F8 ; CPU:$BFD5 PRG:3FD5 C9 F8 + bcs BallSetBallNumberB_Loop2 ; CPU:$BFD7 PRG:3FD7 B0 03 + jmp BallFrameDone6 ; CPU:$BFD9 PRG:3FD9 4C 0A C1 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumberB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumberB_Loop2: + lda BallPositionY,y ; CPU:$BFDC PRG:3FDC B9 10 05 + clc ; CPU:$BFDF PRG:3FDF 18 + adc #$0C ; CPU:$BFE0 PRG:3FE0 69 0C + sec ; CPU:$BFE2 PRG:3FE2 38 + sbc BallY ; CPU:$BFE3 PRG:3FE3 ED 01 05 + bcs BallSetBallNumberB_Loop3 ; CPU:$BFE6 PRG:3FE6 B0 03 + jmp BallFrameDone6 ; CPU:$BFE8 PRG:3FE8 4C 0A C1 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumberB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumberB_Loop3: + cmp #$18 ; CPU:$BFEB PRG:3FEB C9 18 + bcc BallSetBallNumberB_Loop4 ; CPU:$BFED PRG:3FED 90 03 + jmp BallFrameDone6 ; CPU:$BFEF PRG:3FEF 4C 0A C1 +; ----------------------------------------------------------------------------- +; Routine: BallSetBallNumberB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetBallNumberB_Loop4: + lda #$00 ; CPU:$BFF2 PRG:3FF2 A9 00 + jmp BallStoreBallNumberB ; CPU:$BFF4 PRG:3FF4 4C FE BF +; ---- data $BFF7-$BFFD (7 bytes) ---- +; Unreached block: an earlier copy of the ball-reset code. +UnreachedCode_BFF7: + .byte $A9, $FF, $4C, $FE, $BF, $A9, $01 ; CPU:$BFF7 PRG:3FF7 A9 FF 4C FE BF A9 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreBallNumberB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreBallNumberB: + sta NumberToDisplay ; CPU:$BFFE PRG:3FFE 85 45 + txa ; CPU:$C000 PRG:4000 8A + pha ; CPU:$C001 PRG:4001 48 + lda $0514,y ; CPU:$C002 PRG:4002 B9 14 05 + cmp #$08 ; CPU:$C005 PRG:4005 C9 08 + bcc BallStoreBallNumberB_Loop ; CPU:$C007 PRG:4007 90 08 + lda $0514,y ; CPU:$C009 PRG:4009 B9 14 05 + eor #$0F ; CPU:$C00C PRG:400C 49 0F + jmp BallGetNoteIndexB ; CPU:$C00E PRG:400E 4C 14 C0 +; ----------------------------------------------------------------------------- +; Routine: BallStoreBallNumberB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreBallNumberB_Loop: + lda $0514,y ; CPU:$C011 PRG:4011 B9 14 05 +; ----------------------------------------------------------------------------- +; Routine: BallGetNoteIndexB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetNoteIndexB: + tax ; CPU:$C014 PRG:4014 AA + lda $B6BC,x ; CPU:$C015 PRG:4015 BD BC B6 + sta DrawPointerHi ; CPU:$C018 PRG:4018 85 49 + pla ; CPU:$C01A PRG:401A 68 + tax ; CPU:$C01B PRG:401B AA + lda DrawPointerHi ; CPU:$C01C PRG:401C A5 49 + sec ; CPU:$C01E PRG:401E 38 + sbc BallFrameCounter ; CPU:$C01F PRG:401F ED 02 05 + bcs BallGetNoteIndexB_Loop ; CPU:$C022 PRG:4022 B0 03 + jmp BallFrameDone6 ; CPU:$C024 PRG:4024 4C 0A C1 +; ----------------------------------------------------------------------------- +; Routine: BallGetNoteIndexB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetNoteIndexB_Loop: + cmp #$04 ; CPU:$C027 PRG:4027 C9 04 + bcs BallGetNoteIndexB_Loop2 ; CPU:$C029 PRG:4029 B0 05 + lda #$FF ; CPU:$C02B PRG:402B A9 FF + jmp BallSetNumberStateB ; CPU:$C02D PRG:402D 4C 32 C0 +; ----------------------------------------------------------------------------- +; Routine: BallGetNoteIndexB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallGetNoteIndexB_Loop2: + lda #$00 ; CPU:$C030 PRG:4030 A9 00 +; ----------------------------------------------------------------------------- +; Routine: BallSetNumberStateB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetNumberStateB: + sta SpriteOffsetIndex ; CPU:$C032 PRG:4032 85 46 + lda NumberToDisplay ; CPU:$C034 PRG:4034 A5 45 + beq BallCheckNumberStateB ; CPU:$C036 PRG:4036 F0 31 + cmp #$FF ; CPU:$C038 PRG:4038 C9 FF + beq BallStoreNumberStateG_Loop ; CPU:$C03A PRG:403A F0 18 + lda BallVelocityY ; CPU:$C03C PRG:403C AD 04 05 + cmp #$80 ; CPU:$C03F PRG:403F C9 80 + bne BallSetNumberStateB_Loop ; CPU:$C041 PRG:4041 D0 05 + lda #$FF ; CPU:$C043 PRG:4043 A9 FF + jmp BallStoreNumberStateG ; CPU:$C045 PRG:4045 4C 4E C0 +; ----------------------------------------------------------------------------- +; Routine: BallSetNumberStateB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallSetNumberStateB_Loop: + lda BallVelocityY ; CPU:$C048 PRG:4048 AD 04 05 + clc ; CPU:$C04B PRG:404B 18 + adc #$FF ; CPU:$C04C PRG:404C 69 FF +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateG: + sta BallVelocityY ; CPU:$C04E PRG:404E 8D 04 05 + jmp BallCheckNumberStateB ; CPU:$C051 PRG:4051 4C 69 C0 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateG_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateG_Loop: + lda BallVelocityY ; CPU:$C054 PRG:4054 AD 04 05 + cmp #$80 ; CPU:$C057 PRG:4057 C9 80 + bne BallStoreNumberStateG_Loop2 ; CPU:$C059 PRG:4059 D0 05 + lda #$01 ; CPU:$C05B PRG:405B A9 01 + jmp BallStoreNumberStateH ; CPU:$C05D PRG:405D 4C 66 C0 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateG_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateG_Loop2: + lda BallVelocityY ; CPU:$C060 PRG:4060 AD 04 05 + clc ; CPU:$C063 PRG:4063 18 + adc #$01 ; CPU:$C064 PRG:4064 69 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateH: + sta BallVelocityY ; CPU:$C066 PRG:4066 8D 04 05 +; ----------------------------------------------------------------------------- +; Routine: BallCheckNumberStateB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckNumberStateB: + lda SpriteOffsetIndex ; CPU:$C069 PRG:4069 A5 46 + bne BallStoreNumberStateI_Loop ; CPU:$C06B PRG:406B D0 1E + lda BallVelocityX ; CPU:$C06D PRG:406D AD 03 05 + beq BallCheckNumberStateB_Loop ; CPU:$C070 PRG:4070 F0 09 + cmp #$80 ; CPU:$C072 PRG:4072 C9 80 + bne BallCheckNumberStateB_Loop2 ; CPU:$C074 PRG:4074 D0 0A + lda #$00 ; CPU:$C076 PRG:4076 A9 00 + jmp BallStoreNumberStateI ; CPU:$C078 PRG:4078 4C 85 C0 +; ----------------------------------------------------------------------------- +; Routine: BallCheckNumberStateB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckNumberStateB_Loop: + lda #$80 ; CPU:$C07B PRG:407B A9 80 + jmp BallStoreNumberStateI ; CPU:$C07D PRG:407D 4C 85 C0 +; ----------------------------------------------------------------------------- +; Routine: BallCheckNumberStateB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallCheckNumberStateB_Loop2: + eor #$FF ; CPU:$C080 PRG:4080 49 FF + clc ; CPU:$C082 PRG:4082 18 + adc #$01 ; CPU:$C083 PRG:4083 69 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateI +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateI: + sta BallVelocityX ; CPU:$C085 PRG:4085 8D 03 05 + jmp BallStoreNumberStateK ; CPU:$C088 PRG:4088 4C C2 C0 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateI_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateI_Loop: + lda BallSpeed ; CPU:$C08B PRG:408B AD 05 05 + cmp #$80 ; CPU:$C08E PRG:408E C9 80 + bcs BallStoreNumberStateI_Loop2 ; CPU:$C090 PRG:4090 B0 06 + clc ; CPU:$C092 PRG:4092 18 + adc #$01 ; CPU:$C093 PRG:4093 69 01 + jmp BallStoreNumberStateJ ; CPU:$C095 PRG:4095 4C 9D C0 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateI_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateI_Loop2: + eor #$FF ; CPU:$C098 PRG:4098 49 FF + clc ; CPU:$C09A PRG:409A 18 + adc #$01 ; CPU:$C09B PRG:409B 69 01 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateJ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateJ: + sta BallSpeed ; CPU:$C09D PRG:409D 8D 05 05 + lda BallVelocityX ; CPU:$C0A0 PRG:40A0 AD 03 05 + and #$80 ; CPU:$C0A3 PRG:40A3 29 80 + beq BallStoreNumberStateK ; CPU:$C0A5 PRG:40A5 F0 1B + lda BallVelocityX ; CPU:$C0A7 PRG:40A7 AD 03 05 + cmp #$80 ; CPU:$C0AA PRG:40AA C9 80 + beq BallStoreNumberStateK ; CPU:$C0AC PRG:40AC F0 14 + cmp #$FF ; CPU:$C0AE PRG:40AE C9 FF + beq BallStoreNumberStateJ_Loop ; CPU:$C0B0 PRG:40B0 F0 06 + clc ; CPU:$C0B2 PRG:40B2 18 + adc #$01 ; CPU:$C0B3 PRG:40B3 69 01 + jmp BallStartHitSoundB ; CPU:$C0B5 PRG:40B5 4C BF C0 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateJ_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateJ_Loop: + lda #$80 ; CPU:$C0B8 PRG:40B8 A9 80 + sta BallTargetX ; CPU:$C0BA PRG:40BA 8D 0B 05 + lda #$80 ; CPU:$C0BD PRG:40BD A9 80 +; ----------------------------------------------------------------------------- +; Routine: BallStartHitSoundB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStartHitSoundB: + sta BallVelocityX ; CPU:$C0BF PRG:40BF 8D 03 05 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateK +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateK: + lda #$10 ; CPU:$C0C2 PRG:40C2 A9 10 + sta MusicPlayingFlag ; CPU:$C0C4 PRG:40C4 85 EE + lda #$00 ; CPU:$C0C6 PRG:40C6 A9 00 + sta PlayerSlotIndex ; CPU:$C0C8 PRG:40C8 85 8B + jsr DrawNumberSpriteAE ; CPU:$C0CA PRG:40CA 20 93 D0 + lda $0516,y ; CPU:$C0CD PRG:40CD B9 16 05 + and #$FE ; CPU:$C0D0 PRG:40D0 29 FE + sta $0516,y ; CPU:$C0D2 PRG:40D2 99 16 05 + jsr GetCrowdSpriteY ; CPU:$C0D5 PRG:40D5 20 B1 C7 + lda ColorIndex ; CPU:$C0D8 PRG:40D8 A5 47 + asl a ; CPU:$C0DA PRG:40DA 0A + bcs BallStoreNumberStateK_Loop ; CPU:$C0DB PRG:40DB B0 10 + jsr CheckCrowdOffset ; CPU:$C0DD PRG:40DD 20 3B C9 + lda #$00 ; CPU:$C0E0 PRG:40E0 A9 00 + sta TeamScore1Lo ; CPU:$C0E2 PRG:40E2 85 54 + lda #$15 ; CPU:$C0E4 PRG:40E4 A9 15 + sta CrowdFlagsB ; CPU:$C0E6 PRG:40E6 85 51 + lda #$03 ; CPU:$C0E8 PRG:40E8 A9 03 + jmp BallFinishPlayerUpdateH ; CPU:$C0EA PRG:40EA 4C FA C0 +; ----------------------------------------------------------------------------- +; Routine: BallStoreNumberStateK_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreNumberStateK_Loop: + lda #$03 ; CPU:$C0ED PRG:40ED A9 03 + sta TeamScore1Lo ; CPU:$C0EF PRG:40EF 85 54 + lda #$15 ; CPU:$C0F1 PRG:40F1 A9 15 + sta CrowdFlagsA ; CPU:$C0F3 PRG:40F3 85 50 + jsr DrawNumberSpriteM ; CPU:$C0F5 PRG:40F5 20 CE C9 + lda #$00 ; CPU:$C0F8 PRG:40F8 A9 00 +; ----------------------------------------------------------------------------- +; Routine: BallFinishPlayerUpdateH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFinishPlayerUpdateH: + sta TeamScore1Hi ; CPU:$C0FA PRG:40FA 85 55 + jsr DrawNumberSpriteH ; CPU:$C0FC PRG:40FC 20 04 C9 + jsr DrawNumberSpriteV ; CPU:$C0FF PRG:40FF 20 5B CB + jsr ClearTeamSpriteFlags ; CPU:$C102 PRG:4102 20 89 CB + lda #$FF ; CPU:$C105 PRG:4105 A9 FF + sta NumberToDisplay ; CPU:$C107 PRG:4107 85 45 + rts ; CPU:$C109 PRG:4109 60 +; ----------------------------------------------------------------------------- +; Routine: BallFrameDone6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallFrameDone6: + lda #$00 ; CPU:$C10A PRG:410A A9 00 + sta NumberToDisplay ; CPU:$C10C PRG:410C 85 45 + rts ; CPU:$C10E PRG:410E 60 +; ---- data $C10F-$C114 (6 bytes) ---- +; Six bytes of hit-type data used by the ball code. +BallHitTypeTable: +; referenced by `lda $C10F` at $BF52 (operand $C10F falls inside this region) +; referenced by `lda $C110` at $BF58 (operand $C110 falls inside this region) +; referenced by `lda $C111` at $BF5E (operand $C111 falls inside this region) +; referenced by `lda $C112` at $BF64 (operand $C112 falls inside this region) +; referenced by `lda $C113` at $BF6A (operand $C113 falls inside this region) +; referenced by `lda $C114` at $BF70 (operand $C114 falls inside this region) + .byte $F6, $68, $F6, $58, $F6, $48 ; CPU:$C10F PRG:410F F6 68 F6 58 F6 48 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallX +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallX: + lda BallVelocityX ; CPU:$C115 PRG:4115 AD 03 05 + asl a ; CPU:$C118 PRG:4118 0A + bcs UpdateBallX_Loop2 ; CPU:$C119 PRG:4119 B0 1E + lda BallFractionX ; CPU:$C11B PRG:411B AD 09 05 + clc ; CPU:$C11E PRG:411E 18 + adc BallTargetX ; CPU:$C11F PRG:411F 6D 0B 05 + sta BallFractionX ; CPU:$C122 PRG:4122 8D 09 05 + lda BallX ; CPU:$C125 PRG:4125 AD 00 05 + adc BallVelocityX ; CPU:$C128 PRG:4128 6D 03 05 + cmp #$88 ; CPU:$C12B PRG:412B C9 88 + bcs UpdateBallX_Loop ; CPU:$C12D PRG:412D B0 04 + cmp #$78 ; CPU:$C12F PRG:412F C9 78 + bcs UpdateBallY ; CPU:$C131 PRG:4131 B0 34 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallX_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallX_Loop: + sta BallX ; CPU:$C133 PRG:4133 8D 00 05 + jmp UpdateBallY ; CPU:$C136 PRG:4136 4C 67 C1 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallX_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallX_Loop2: + beq UpdateBallX_Loop4 ; CPU:$C139 PRG:4139 F0 12 + lda BallX ; CPU:$C13B PRG:413B AD 00 05 + clc ; CPU:$C13E PRG:413E 18 + adc BallVelocityX ; CPU:$C13F PRG:413F 6D 03 05 + cmp #$88 ; CPU:$C142 PRG:4142 C9 88 + bcs UpdateBallX_Loop3 ; CPU:$C144 PRG:4144 B0 04 + cmp #$78 ; CPU:$C146 PRG:4146 C9 78 + bcs UpdateBallX_Loop4 ; CPU:$C148 PRG:4148 B0 03 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallX_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallX_Loop3: + sta BallX ; CPU:$C14A PRG:414A 8D 00 05 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallX_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallX_Loop4: + lda BallFractionX ; CPU:$C14D PRG:414D AD 09 05 + sec ; CPU:$C150 PRG:4150 38 + sbc BallTargetX ; CPU:$C151 PRG:4151 ED 0B 05 + sta BallFractionX ; CPU:$C154 PRG:4154 8D 09 05 + lda BallX ; CPU:$C157 PRG:4157 AD 00 05 + sbc #$00 ; CPU:$C15A PRG:415A E9 00 + cmp #$88 ; CPU:$C15C PRG:415C C9 88 + bcs UpdateBallX_Loop5 ; CPU:$C15E PRG:415E B0 04 + cmp #$78 ; CPU:$C160 PRG:4160 C9 78 + bcs UpdateBallY ; CPU:$C162 PRG:4162 B0 03 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallX_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallX_Loop5: + sta BallX ; CPU:$C164 PRG:4164 8D 00 05 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallY +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallY: + lda BallVelocityY ; CPU:$C167 PRG:4167 AD 04 05 + asl a ; CPU:$C16A PRG:416A 0A + bcs UpdateBallY_Loop ; CPU:$C16B PRG:416B B0 1E + lda BallFractionY ; CPU:$C16D PRG:416D AD 0A 05 + clc ; CPU:$C170 PRG:4170 18 + adc BallTargetY ; CPU:$C171 PRG:4171 6D 0C 05 + sta BallFractionY ; CPU:$C174 PRG:4174 8D 0A 05 + lda BallY ; CPU:$C177 PRG:4177 AD 01 05 + adc BallVelocityY ; CPU:$C17A PRG:417A 6D 04 05 + cmp #$18 ; CPU:$C17D PRG:417D C9 18 + bcc UpdateBallFrameCounter ; CPU:$C17F PRG:417F 90 38 + cmp #$A8 ; CPU:$C181 PRG:4181 C9 A8 + bcs UpdateBallFrameCounter ; CPU:$C183 PRG:4183 B0 34 + sta BallY ; CPU:$C185 PRG:4185 8D 01 05 + jmp UpdateBallFrameCounter ; CPU:$C188 PRG:4188 4C B9 C1 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallY_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallY_Loop: + beq UpdateBallY_Loop2 ; CPU:$C18B PRG:418B F0 12 + lda BallY ; CPU:$C18D PRG:418D AD 01 05 + clc ; CPU:$C190 PRG:4190 18 + adc BallVelocityY ; CPU:$C191 PRG:4191 6D 04 05 + cmp #$28 ; CPU:$C194 PRG:4194 C9 28 + bcc UpdateBallY_Loop2 ; CPU:$C196 PRG:4196 90 07 + cmp #$F8 ; CPU:$C198 PRG:4198 C9 F8 + bcs UpdateBallY_Loop2 ; CPU:$C19A PRG:419A B0 03 + sta BallY ; CPU:$C19C PRG:419C 8D 01 05 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallY_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallY_Loop2: + lda BallFractionY ; CPU:$C19F PRG:419F AD 0A 05 + sec ; CPU:$C1A2 PRG:41A2 38 + sbc BallTargetY ; CPU:$C1A3 PRG:41A3 ED 0C 05 + sta BallFractionY ; CPU:$C1A6 PRG:41A6 8D 0A 05 + lda BallY ; CPU:$C1A9 PRG:41A9 AD 01 05 + sbc #$00 ; CPU:$C1AC PRG:41AC E9 00 + cmp #$28 ; CPU:$C1AE PRG:41AE C9 28 + bcc UpdateBallFrameCounter ; CPU:$C1B0 PRG:41B0 90 07 + cmp #$F8 ; CPU:$C1B2 PRG:41B2 C9 F8 + bcs UpdateBallFrameCounter ; CPU:$C1B4 PRG:41B4 B0 03 + sta BallY ; CPU:$C1B6 PRG:41B6 8D 01 05 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallFrameCounter +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallFrameCounter: + lda BallFrameCounter ; CPU:$C1B9 PRG:41B9 AD 02 05 + clc ; CPU:$C1BC PRG:41BC 18 + adc BallSpeed ; CPU:$C1BD PRG:41BD 6D 05 05 + cmp #$F0 ; CPU:$C1C0 PRG:41C0 C9 F0 + bcc UpdateBallFrameCounter_Loop ; CPU:$C1C2 PRG:41C2 90 05 + lda #$00 ; CPU:$C1C4 PRG:41C4 A9 00 + jmp AdvanceBallFrame ; CPU:$C1C6 PRG:41C6 4C D5 C1 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallFrameCounter_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallFrameCounter_Loop: + cmp #$E0 ; CPU:$C1C9 PRG:41C9 C9 E0 + bcc AdvanceBallFrame ; CPU:$C1CB PRG:41CB 90 08 + lda #$00 ; CPU:$C1CD PRG:41CD A9 00 + sta BallSpeed ; CPU:$C1CF PRG:41CF 8D 05 05 + sta BallPreviousX ; CPU:$C1D2 PRG:41D2 8D 08 05 +; ----------------------------------------------------------------------------- +; Routine: AdvanceBallFrame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AdvanceBallFrame: + sta BallFrameCounter ; CPU:$C1D5 PRG:41D5 8D 02 05 + dec BallCountdown ; CPU:$C1D8 PRG:41D8 CE 06 05 + bne AdvanceBallFrame_Loop ; CPU:$C1DB PRG:41DB D0 08 + lda #$08 ; CPU:$C1DD PRG:41DD A9 08 + sta BallCountdown ; CPU:$C1DF PRG:41DF 8D 06 05 + dec BallSpeed ; CPU:$C1E2 PRG:41E2 CE 05 05 +; ----------------------------------------------------------------------------- +; Routine: AdvanceBallFrame_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AdvanceBallFrame_Loop: + rts ; CPU:$C1E5 PRG:41E5 60 +; ----------------------------------------------------------------------------- +; Routine: InitBallAnimations +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitBallAnimations: + lda #$00 ; CPU:$C1E6 PRG:41E6 A9 00 + sta TableIndex ; CPU:$C1E8 PRG:41E8 85 4E +; ----------------------------------------------------------------------------- +; Routine: BallAnimationIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationIndex: + lda TableIndex ; CPU:$C1EA PRG:41EA A5 4E + asl a ; CPU:$C1EC PRG:41EC 0A + asl a ; CPU:$C1ED PRG:41ED 0A + asl a ; CPU:$C1EE PRG:41EE 0A + tax ; CPU:$C1EF PRG:41EF AA + lda ScoreRecord,x ; CPU:$C1F0 PRG:41F0 BD 13 05 + and #$18 ; CPU:$C1F3 PRG:41F3 29 18 + beq BallAnimationIndex_Loop ; CPU:$C1F5 PRG:41F5 F0 03 + jmp BallAnimationStoreValueC_Loop ; CPU:$C1F7 PRG:41F7 4C 86 C2 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationIndex_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationIndex_Loop: + lda BallPositionX,x ; CPU:$C1FA PRG:41FA BD 0F 05 + cmp BallTargetPositionX,x ; CPU:$C1FD PRG:41FD DD 11 05 + beq BallAnimationStoreValue_Loop ; CPU:$C200 PRG:4200 F0 4F + bcs BallStoreAnimation_Loop ; CPU:$C202 PRG:4202 B0 28 + lda BallPositionX,x ; CPU:$C204 PRG:4204 BD 0F 05 + cmp #$80 ; CPU:$C207 PRG:4207 C9 80 + bcs UpdateBallAnimationTable ; CPU:$C209 PRG:4209 B0 0A + lda BallTargetPositionX,x ; CPU:$C20B PRG:420B BD 11 05 + cmp #$80 ; CPU:$C20E PRG:420E C9 80 + bcc UpdateBallAnimationTable ; CPU:$C210 PRG:4210 90 03 + jmp BallStoreAnimation_Loop2 ; CPU:$C212 PRG:4212 4C 3D C2 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimationTable +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimationTable: + inc BallPositionX,x ; CPU:$C215 PRG:4215 FE 0F 05 + inc BallPositionX,x ; CPU:$C218 PRG:4218 FE 0F 05 + cpx #$30 ; CPU:$C21B PRG:421B E0 30 + bcs UpdateBallAnimationTable_Loop ; CPU:$C21D PRG:421D B0 05 + lda #$07 ; CPU:$C21F PRG:421F A9 07 + jmp BallStoreAnimation ; CPU:$C221 PRG:4221 4C 26 C2 +; ----------------------------------------------------------------------------- +; Routine: UpdateBallAnimationTable_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateBallAnimationTable_Loop: + lda #$24 ; CPU:$C224 PRG:4224 A9 24 +; ----------------------------------------------------------------------------- +; Routine: BallStoreAnimation +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreAnimation: + sta ScoreRecord,x ; CPU:$C226 PRG:4226 9D 13 05 + jmp BallAnimationStoreValue_Loop ; CPU:$C229 PRG:4229 4C 51 C2 +; ----------------------------------------------------------------------------- +; Routine: BallStoreAnimation_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreAnimation_Loop: + lda BallPositionX,x ; CPU:$C22C PRG:422C BD 0F 05 + cmp #$80 ; CPU:$C22F PRG:422F C9 80 + bcc BallStoreAnimation_Loop2 ; CPU:$C231 PRG:4231 90 0A + lda BallTargetPositionX,x ; CPU:$C233 PRG:4233 BD 11 05 + cmp #$80 ; CPU:$C236 PRG:4236 C9 80 + bcs BallStoreAnimation_Loop2 ; CPU:$C238 PRG:4238 B0 03 + jmp UpdateBallAnimationTable ; CPU:$C23A PRG:423A 4C 15 C2 +; ----------------------------------------------------------------------------- +; Routine: BallStoreAnimation_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreAnimation_Loop2: + dec BallPositionX,x ; CPU:$C23D PRG:423D DE 0F 05 + dec BallPositionX,x ; CPU:$C240 PRG:4240 DE 0F 05 + cpx #$30 ; CPU:$C243 PRG:4243 E0 30 + bcs BallStoreAnimation_Loop3 ; CPU:$C245 PRG:4245 B0 05 + lda #$04 ; CPU:$C247 PRG:4247 A9 04 + jmp BallAnimationStoreValue ; CPU:$C249 PRG:4249 4C 4E C2 +; ----------------------------------------------------------------------------- +; Routine: BallStoreAnimation_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallStoreAnimation_Loop3: + lda #$27 ; CPU:$C24C PRG:424C A9 27 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationStoreValue +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationStoreValue: + sta ScoreRecord,x ; CPU:$C24E PRG:424E 9D 13 05 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationStoreValue_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationStoreValue_Loop: + lda BallPositionY,x ; CPU:$C251 PRG:4251 BD 10 05 + cmp BallTargetPositionY,x ; CPU:$C254 PRG:4254 DD 12 05 + beq BallAnimationStoreValueC_Loop ; CPU:$C257 PRG:4257 F0 2D + bcs BallAnimationStoreValueB_Loop ; CPU:$C259 PRG:4259 B0 17 + inc BallPositionY,x ; CPU:$C25B PRG:425B FE 10 05 + inc BallPositionY,x ; CPU:$C25E PRG:425E FE 10 05 + cpx #$30 ; CPU:$C261 PRG:4261 E0 30 + bcs BallAnimationStoreValue_Loop2 ; CPU:$C263 PRG:4263 B0 05 + lda #$06 ; CPU:$C265 PRG:4265 A9 06 + jmp BallAnimationStoreValueB ; CPU:$C267 PRG:4267 4C 6C C2 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationStoreValue_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationStoreValue_Loop2: + lda #$26 ; CPU:$C26A PRG:426A A9 26 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationStoreValueB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationStoreValueB: + sta ScoreRecord,x ; CPU:$C26C PRG:426C 9D 13 05 + jmp BallAnimationStoreValueC_Loop ; CPU:$C26F PRG:426F 4C 86 C2 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationStoreValueB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationStoreValueB_Loop: + dec BallPositionY,x ; CPU:$C272 PRG:4272 DE 10 05 + dec BallPositionY,x ; CPU:$C275 PRG:4275 DE 10 05 + cpx #$30 ; CPU:$C278 PRG:4278 E0 30 + bcs BallAnimationStoreValueB_Loop2 ; CPU:$C27A PRG:427A B0 05 + lda #$05 ; CPU:$C27C PRG:427C A9 05 + jmp BallAnimationStoreValueC ; CPU:$C27E PRG:427E 4C 83 C2 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationStoreValueB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationStoreValueB_Loop2: + lda #$25 ; CPU:$C281 PRG:4281 A9 25 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationStoreValueC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationStoreValueC: + sta ScoreRecord,x ; CPU:$C283 PRG:4283 9D 13 05 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationStoreValueC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationStoreValueC_Loop: + lda TableIndex ; CPU:$C286 PRG:4286 A5 4E + cmp #$0B ; CPU:$C288 PRG:4288 C9 0B + beq BallAnimationStoreValueC_Loop2 ; CPU:$C28A PRG:428A F0 05 + inc TableIndex ; CPU:$C28C PRG:428C E6 4E + jmp BallAnimationIndex ; CPU:$C28E PRG:428E 4C EA C1 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationStoreValueC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationStoreValueC_Loop2: + rts ; CPU:$C291 PRG:4291 60 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationCheckScroll +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationCheckScroll: + lda ScrollX ; CPU:$C292 PRG:4292 A5 06 + cmp ScrollTargetX ; CPU:$C294 PRG:4294 C5 4F + beq BallAnimationCheckScroll_Loop2 ; CPU:$C296 PRG:4296 F0 0D + bcs BallAnimationCheckScroll_Loop ; CPU:$C298 PRG:4298 B0 07 + inc ScrollX ; CPU:$C29A PRG:429A E6 06 + inc ScrollX ; CPU:$C29C PRG:429C E6 06 + jmp BallAnimationCheckScroll_Loop2 ; CPU:$C29E PRG:429E 4C A5 C2 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationCheckScroll_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationCheckScroll_Loop: + dec ScrollX ; CPU:$C2A1 PRG:42A1 C6 06 + dec ScrollX ; CPU:$C2A3 PRG:42A3 C6 06 +; ----------------------------------------------------------------------------- +; Routine: BallAnimationCheckScroll_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +BallAnimationCheckScroll_Loop2: + rts ; CPU:$C2A5 PRG:42A5 60 +; ----------------------------------------------------------------------------- +; Routine: DrawPlayers +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawPlayers: + lda BallPreviousY ; CPU:$C2A6 PRG:42A6 AD 07 05 + and #$C0 ; CPU:$C2A9 PRG:42A9 29 C0 + lsr a ; CPU:$C2AB PRG:42AB 4A + lsr a ; CPU:$C2AC PRG:42AC 4A + lsr a ; CPU:$C2AD PRG:42AD 4A + sta SpriteOffsetIndex ; CPU:$C2AE PRG:42AE 85 46 + lda BallX ; CPU:$C2B0 PRG:42B0 AD 00 05 + sta ColorIndex ; CPU:$C2B3 PRG:42B3 85 47 + lda BallY ; CPU:$C2B5 PRG:42B5 AD 01 05 + sta DrawPointerLo ; CPU:$C2B8 PRG:42B8 85 48 + lda #$10 ; CPU:$C2BA PRG:42BA A9 10 + sta TableIndex ; CPU:$C2BC PRG:42BC 85 4E + jsr DrawTeamFlags ; CPU:$C2BE PRG:42BE 20 EF C3 + lda DrawPointerLo ; CPU:$C2C1 PRG:42C1 A5 48 + sec ; CPU:$C2C3 PRG:42C3 38 + sbc #$08 ; CPU:$C2C4 PRG:42C4 E9 08 + sta $050E ; CPU:$C2C6 PRG:42C6 8D 0E 05 + lda DrawPointerLo ; CPU:$C2C9 PRG:42C9 A5 48 + sec ; CPU:$C2CB PRG:42CB 38 + sbc #$10 ; CPU:$C2CC PRG:42CC E9 10 + sec ; CPU:$C2CE PRG:42CE 38 + sbc BallFrameCounter ; CPU:$C2CF PRG:42CF ED 02 05 + bcc LoadTeamSpriteOffsets_Loop2 ; CPU:$C2D2 PRG:42D2 90 7F + sta NumberTileColumn ; CPU:$C2D4 PRG:42D4 85 15 + lda TileListPtrLo ; CPU:$C2D6 PRG:42D6 A5 4A + sec ; CPU:$C2D8 PRG:42D8 38 + sbc ScrollX ; CPU:$C2D9 PRG:42D9 E5 06 + sta TileListPtrLo ; CPU:$C2DB PRG:42DB 85 4A + lda TileListPtrHi ; CPU:$C2DD PRG:42DD A5 4B + sbc #$00 ; CPU:$C2DF PRG:42DF E9 00 + bcc LoadTeamSpriteOffsets_Loop ; CPU:$C2E1 PRG:42E1 90 68 + sta TileListPtrHi ; CPU:$C2E3 PRG:42E3 85 4B + bne LoadTeamSpriteOffsets_Loop ; CPU:$C2E5 PRG:42E5 D0 64 + lda TileListPtrLo ; CPU:$C2E7 PRG:42E7 A5 4A + sec ; CPU:$C2E9 PRG:42E9 38 + sbc #$04 ; CPU:$C2EA PRG:42EA E9 04 + sta $050D ; CPU:$C2EC PRG:42EC 8D 0D 05 + lda TileListPtrLo ; CPU:$C2EF PRG:42EF A5 4A + sec ; CPU:$C2F1 PRG:42F1 38 + sbc #$08 ; CPU:$C2F2 PRG:42F2 E9 08 + bcc LoadTeamSpriteOffsets_Loop ; CPU:$C2F4 PRG:42F4 90 55 + sta NumberTileRow ; CPU:$C2F6 PRG:42F6 85 18 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamSpriteOffsets +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamSpriteOffsets: + ldy SpriteOffsetIndex ; CPU:$C2F8 PRG:42F8 A4 46 + lda $E5E8,y ; CPU:$C2FA PRG:42FA B9 E8 E5 + sta TeamSpritePtrHi ; CPU:$C2FD PRG:42FD 85 17 + lda $E5E9,y ; CPU:$C2FF PRG:42FF B9 E9 E5 + sta TeamSpritePtrLo ; CPU:$C302 PRG:4302 85 16 + jsr BuildPlayerSpriteEntries ; CPU:$C304 PRG:4304 20 D8 83 + lda NumberTileColumn ; CPU:$C307 PRG:4307 A5 15 + clc ; CPU:$C309 PRG:4309 18 + adc #$08 ; CPU:$C30A PRG:430A 69 08 + sta NumberTileColumn ; CPU:$C30C PRG:430C 85 15 + lda $E5EA,y ; CPU:$C30E PRG:430E B9 EA E5 + sta TeamSpritePtrHi ; CPU:$C311 PRG:4311 85 17 + lda $E5EB,y ; CPU:$C313 PRG:4313 B9 EB E5 + sta TeamSpritePtrLo ; CPU:$C316 PRG:4316 85 16 + jsr BuildPlayerSpriteEntries ; CPU:$C318 PRG:4318 20 D8 83 + lda NumberTileColumn ; CPU:$C31B PRG:431B A5 15 + sec ; CPU:$C31D PRG:431D 38 + sbc #$08 ; CPU:$C31E PRG:431E E9 08 + sta NumberTileColumn ; CPU:$C320 PRG:4320 85 15 + lda NumberTileRow ; CPU:$C322 PRG:4322 A5 18 + clc ; CPU:$C324 PRG:4324 18 + adc #$08 ; CPU:$C325 PRG:4325 69 08 + sta NumberTileRow ; CPU:$C327 PRG:4327 85 18 + lda $E5EC,y ; CPU:$C329 PRG:4329 B9 EC E5 + sta TeamSpritePtrHi ; CPU:$C32C PRG:432C 85 17 + lda $E5ED,y ; CPU:$C32E PRG:432E B9 ED E5 + sta TeamSpritePtrLo ; CPU:$C331 PRG:4331 85 16 + jsr BuildPlayerSpriteEntries ; CPU:$C333 PRG:4333 20 D8 83 + lda NumberTileColumn ; CPU:$C336 PRG:4336 A5 15 + clc ; CPU:$C338 PRG:4338 18 + adc #$08 ; CPU:$C339 PRG:4339 69 08 + sta NumberTileColumn ; CPU:$C33B PRG:433B 85 15 + lda $E5EE,y ; CPU:$C33D PRG:433D B9 EE E5 + sta TeamSpritePtrHi ; CPU:$C340 PRG:4340 85 17 + lda $E5EF,y ; CPU:$C342 PRG:4342 B9 EF E5 + sta TeamSpritePtrLo ; CPU:$C345 PRG:4345 85 16 + jsr BuildPlayerSpriteEntries ; CPU:$C347 PRG:4347 20 D8 83 + rts ; CPU:$C34A PRG:434A 60 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamSpriteOffsets_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamSpriteOffsets_Loop: + lda #$F0 ; CPU:$C34B PRG:434B A9 F0 + sta NumberTileColumn ; CPU:$C34D PRG:434D 85 15 + sta $050E ; CPU:$C34F PRG:434F 8D 0E 05 + rts ; CPU:$C352 PRG:4352 60 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamSpriteOffsets_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamSpriteOffsets_Loop2: + lda TileListPtrLo ; CPU:$C353 PRG:4353 A5 4A + sec ; CPU:$C355 PRG:4355 38 + sbc ScrollX ; CPU:$C356 PRG:4356 E5 06 + sta TileListPtrLo ; CPU:$C358 PRG:4358 85 4A + lda TileListPtrHi ; CPU:$C35A PRG:435A A5 4B + sbc #$00 ; CPU:$C35C PRG:435C E9 00 + bcc LoadTeamSpriteOffsets_Loop ; CPU:$C35E PRG:435E 90 EB + sta TileListPtrHi ; CPU:$C360 PRG:4360 85 4B + bne LoadTeamSpriteOffsets_Loop ; CPU:$C362 PRG:4362 D0 E7 + lda TileListPtrLo ; CPU:$C364 PRG:4364 A5 4A + sec ; CPU:$C366 PRG:4366 38 + sbc #$04 ; CPU:$C367 PRG:4367 E9 04 + sta $050D ; CPU:$C369 PRG:4369 8D 0D 05 + rts ; CPU:$C36C PRG:436C 60 +; ----------------------------------------------------------------------------- +; Routine: DrawCourt +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawCourt: + lda #$00 ; CPU:$C36D PRG:436D A9 00 + sta TableIndex ; CPU:$C36F PRG:436F 85 4E +; ----------------------------------------------------------------------------- +; Routine: DrawCourtFrame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawCourtFrame: + jsr GetTileIndex ; CPU:$C371 PRG:4371 20 86 C3 + jsr DrawTeamFlags ; CPU:$C374 PRG:4374 20 EF C3 + jsr GetDrawX ; CPU:$C377 PRG:4377 20 FD C4 + lda TableIndex ; CPU:$C37A PRG:437A A5 4E + cmp #$0B ; CPU:$C37C PRG:437C C9 0B + beq DrawCourtFrame_Loop ; CPU:$C37E PRG:437E F0 05 + inc TableIndex ; CPU:$C380 PRG:4380 E6 4E + jmp DrawCourtFrame ; CPU:$C382 PRG:4382 4C 71 C3 +; ----------------------------------------------------------------------------- +; Routine: DrawCourtFrame_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawCourtFrame_Loop: + rts ; CPU:$C385 PRG:4385 60 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndex: + lda TableIndex ; CPU:$C386 PRG:4386 A5 4E + asl a ; CPU:$C388 PRG:4388 0A + asl a ; CPU:$C389 PRG:4389 0A + asl a ; CPU:$C38A PRG:438A 0A + tay ; CPU:$C38B PRG:438B A8 + lda TitleFlag ; CPU:$C38C PRG:438C A5 8D + beq GetTileIndex_Loop ; CPU:$C38E PRG:438E F0 08 + lda $0516,y ; CPU:$C390 PRG:4390 B9 16 05 + and #$06 ; CPU:$C393 PRG:4393 29 06 + lsr a ; CPU:$C395 PRG:4395 4A + sta NumberParity ; CPU:$C396 PRG:4396 85 84 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndex_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndex_Loop: + lda ScoreRecord,y ; CPU:$C398 PRG:4398 B9 13 05 + sta TileListPtrLo ; CPU:$C39B PRG:439B 85 4A + lda #$00 ; CPU:$C39D PRG:439D A9 00 + sta TileListPtrHi ; CPU:$C39F PRG:439F 85 4B + asl TileListPtrLo ; CPU:$C3A1 PRG:43A1 06 4A + rol TileListPtrHi ; CPU:$C3A3 PRG:43A3 26 4B + asl TileListPtrLo ; CPU:$C3A5 PRG:43A5 06 4A + rol TileListPtrHi ; CPU:$C3A7 PRG:43A7 26 4B + asl TileListPtrLo ; CPU:$C3A9 PRG:43A9 06 4A + rol TileListPtrHi ; CPU:$C3AB PRG:43AB 26 4B + asl TileListPtrLo ; CPU:$C3AD PRG:43AD 06 4A + rol TileListPtrHi ; CPU:$C3AF PRG:43AF 26 4B + asl TileListPtrLo ; CPU:$C3B1 PRG:43B1 06 4A + rol TileListPtrHi ; CPU:$C3B3 PRG:43B3 26 4B + clc ; CPU:$C3B5 PRG:43B5 18 + lda #$08 ; CPU:$C3B6 PRG:43B6 A9 08 + adc TileListPtrLo ; CPU:$C3B8 PRG:43B8 65 4A + sta TileListPtrLo ; CPU:$C3BA PRG:43BA 85 4A + lda #$E6 ; CPU:$C3BC PRG:43BC A9 E6 + adc TileListPtrHi ; CPU:$C3BE PRG:43BE 65 4B + sta TileListPtrHi ; CPU:$C3C0 PRG:43C0 85 4B + lda $0514,y ; CPU:$C3C2 PRG:43C2 B9 14 05 + and #$0F ; CPU:$C3C5 PRG:43C5 29 0F + asl a ; CPU:$C3C7 PRG:43C7 0A + clc ; CPU:$C3C8 PRG:43C8 18 + adc TileListPtrLo ; CPU:$C3C9 PRG:43C9 65 4A + sta TileListPtrLo ; CPU:$C3CB PRG:43CB 85 4A + lda #$00 ; CPU:$C3CD PRG:43CD A9 00 + adc TileListPtrHi ; CPU:$C3CF PRG:43CF 65 4B + sta TileListPtrHi ; CPU:$C3D1 PRG:43D1 85 4B + ldy #$00 ; CPU:$C3D3 PRG:43D3 A0 00 + lda (TileListPtrLo),y ; CPU:$C3D5 PRG:43D5 B1 4A + sta NumberToDisplay ; CPU:$C3D7 PRG:43D7 85 45 + iny ; CPU:$C3D9 PRG:43D9 C8 + lda (TileListPtrLo),y ; CPU:$C3DA PRG:43DA B1 4A + sta SpriteOffsetIndex ; CPU:$C3DC PRG:43DC 85 46 + lda TableIndex ; CPU:$C3DE PRG:43DE A5 4E + asl a ; CPU:$C3E0 PRG:43E0 0A + asl a ; CPU:$C3E1 PRG:43E1 0A + asl a ; CPU:$C3E2 PRG:43E2 0A + tay ; CPU:$C3E3 PRG:43E3 A8 + lda BallPositionX,y ; CPU:$C3E4 PRG:43E4 B9 0F 05 + sta ColorIndex ; CPU:$C3E7 PRG:43E7 85 47 + lda BallPositionY,y ; CPU:$C3E9 PRG:43E9 B9 10 05 + sta DrawPointerLo ; CPU:$C3EC PRG:43EC 85 48 + rts ; CPU:$C3EE PRG:43EE 60 +; ----------------------------------------------------------------------------- +; Routine: DrawTeamFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawTeamFlags: + lda DrawPointerLo ; CPU:$C3EF PRG:43EF A5 48 + sta TileListPtrLo ; CPU:$C3F1 PRG:43F1 85 4A + lda #$00 ; CPU:$C3F3 PRG:43F3 A9 00 + sta TileListPtrHi ; CPU:$C3F5 PRG:43F5 85 4B + asl TileListPtrLo ; CPU:$C3F7 PRG:43F7 06 4A + rol TileListPtrHi ; CPU:$C3F9 PRG:43F9 26 4B + lda ColorIndex ; CPU:$C3FB PRG:43FB A5 47 + asl a ; CPU:$C3FD PRG:43FD 0A + bcs DrawTeamFlags_Loop ; CPU:$C3FE PRG:43FE B0 10 + clc ; CPU:$C400 PRG:4400 18 + lda #$98 ; CPU:$C401 PRG:4401 A9 98 + adc TileListPtrLo ; CPU:$C403 PRG:4403 65 4A + sta TileListPtrLo ; CPU:$C405 PRG:4405 85 4A + lda #$F3 ; CPU:$C407 PRG:4407 A9 F3 + adc TileListPtrHi ; CPU:$C409 PRG:4409 65 4B + sta TileListPtrHi ; CPU:$C40B PRG:440B 85 4B + jmp ReadTileListByte ; CPU:$C40D PRG:440D 4C 1D C4 +; ----------------------------------------------------------------------------- +; Routine: DrawTeamFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawTeamFlags_Loop: + clc ; CPU:$C410 PRG:4410 18 + lda #$02 ; CPU:$C411 PRG:4411 A9 02 + adc TileListPtrLo ; CPU:$C413 PRG:4413 65 4A + sta TileListPtrLo ; CPU:$C415 PRG:4415 85 4A + lda #$F5 ; CPU:$C417 PRG:4417 A9 F5 + adc TileListPtrHi ; CPU:$C419 PRG:4419 65 4B + sta TileListPtrHi ; CPU:$C41B PRG:441B 85 4B +; ----------------------------------------------------------------------------- +; Routine: ReadTileListByte +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadTileListByte: + ldy #$00 ; CPU:$C41D PRG:441D A0 00 + lda (TileListPtrLo),y ; CPU:$C41F PRG:441F B1 4A + sta TileIndex ; CPU:$C421 PRG:4421 85 4C + iny ; CPU:$C423 PRG:4423 C8 + lda (TileListPtrLo),y ; CPU:$C424 PRG:4424 B1 4A + sta TileAttribute ; CPU:$C426 PRG:4426 85 4D + lda #$00 ; CPU:$C428 PRG:4428 A9 00 + sta TileListPtrLo ; CPU:$C42A PRG:442A 85 4A + sta TileListPtrHi ; CPU:$C42C PRG:442C 85 4B + lda ColorIndex ; CPU:$C42E PRG:442E A5 47 + asl a ; CPU:$C430 PRG:4430 0A + bcc ReadTileListByte_Loop ; CPU:$C431 PRG:4431 90 0A + lda ColorIndex ; CPU:$C433 PRG:4433 A5 47 + eor #$FF ; CPU:$C435 PRG:4435 49 FF + clc ; CPU:$C437 PRG:4437 18 + adc #$01 ; CPU:$C438 PRG:4438 69 01 + jmp ShiftTileList ; CPU:$C43A PRG:443A 4C 3F C4 +; ----------------------------------------------------------------------------- +; Routine: ReadTileListByte_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadTileListByte_Loop: + lda ColorIndex ; CPU:$C43D PRG:443D A5 47 +; ----------------------------------------------------------------------------- +; Routine: ShiftTileList +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftTileList: + sta DrawPointerHi ; CPU:$C43F PRG:443F 85 49 + ldx #$07 ; CPU:$C441 PRG:4441 A2 07 + asl DrawPointerHi ; CPU:$C443 PRG:4443 06 49 +; ----------------------------------------------------------------------------- +; Routine: ShiftTileList_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftTileList_OnNonzero: + lsr TileAttribute ; CPU:$C445 PRG:4445 46 4D + ror TileIndex ; CPU:$C447 PRG:4447 66 4C + asl DrawPointerHi ; CPU:$C449 PRG:4449 06 49 + bcc ShiftTileList_Loop ; CPU:$C44B PRG:444B 90 0D + lda TileIndex ; CPU:$C44D PRG:444D A5 4C + clc ; CPU:$C44F PRG:444F 18 + adc TileListPtrLo ; CPU:$C450 PRG:4450 65 4A + sta TileListPtrLo ; CPU:$C452 PRG:4452 85 4A + lda TileAttribute ; CPU:$C454 PRG:4454 A5 4D + adc TileListPtrHi ; CPU:$C456 PRG:4456 65 4B + sta TileListPtrHi ; CPU:$C458 PRG:4458 85 4B +; ----------------------------------------------------------------------------- +; Routine: ShiftTileList_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftTileList_Loop: + dex ; CPU:$C45A PRG:445A CA + bne ShiftTileList_OnNonzero ; CPU:$C45B PRG:445B D0 E8 + lda TableIndex ; CPU:$C45D PRG:445D A5 4E + cmp #$10 ; CPU:$C45F PRG:445F C9 10 + bne ShiftTileList_Loop3 ; CPU:$C461 PRG:4461 D0 37 + lda BallFractionX ; CPU:$C463 PRG:4463 AD 09 05 + sta DrawPointerHi ; CPU:$C466 PRG:4466 85 49 +; ----------------------------------------------------------------------------- +; Routine: ShiftTileList_OnCarryClear +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftTileList_OnCarryClear: + lda DrawPointerHi ; CPU:$C468 PRG:4468 A5 49 + beq ShiftTileList_Loop3 ; CPU:$C46A PRG:446A F0 2E + lsr TileAttribute ; CPU:$C46C PRG:446C 46 4D + ror TileIndex ; CPU:$C46E PRG:446E 66 4C + asl DrawPointerHi ; CPU:$C470 PRG:4470 06 49 + bcc ShiftTileList_OnCarryClear ; CPU:$C472 PRG:4472 90 F4 + lda BallX ; CPU:$C474 PRG:4474 AD 00 05 + asl a ; CPU:$C477 PRG:4477 0A + bcs ShiftTileList_Loop2 ; CPU:$C478 PRG:4478 B0 10 + lda TileIndex ; CPU:$C47A PRG:447A A5 4C + clc ; CPU:$C47C PRG:447C 18 + adc TileListPtrLo ; CPU:$C47D PRG:447D 65 4A + sta TileListPtrLo ; CPU:$C47F PRG:447F 85 4A + lda TileAttribute ; CPU:$C481 PRG:4481 A5 4D + adc TileListPtrHi ; CPU:$C483 PRG:4483 65 4B + sta TileListPtrHi ; CPU:$C485 PRG:4485 85 4B + jmp ShiftTileList_OnCarryClear ; CPU:$C487 PRG:4487 4C 68 C4 +; ----------------------------------------------------------------------------- +; Routine: ShiftTileList_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftTileList_Loop2: + lda TileListPtrLo ; CPU:$C48A PRG:448A A5 4A + sec ; CPU:$C48C PRG:448C 38 + sbc TileIndex ; CPU:$C48D PRG:448D E5 4C + sta TileListPtrLo ; CPU:$C48F PRG:448F 85 4A + lda TileListPtrHi ; CPU:$C491 PRG:4491 A5 4B + sbc TileAttribute ; CPU:$C493 PRG:4493 E5 4D + sta TileListPtrHi ; CPU:$C495 PRG:4495 85 4B + jmp ShiftTileList_OnCarryClear ; CPU:$C497 PRG:4497 4C 68 C4 +; ----------------------------------------------------------------------------- +; Routine: ShiftTileList_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftTileList_Loop3: + lda DrawPointerLo ; CPU:$C49A PRG:449A A5 48 + sta TileIndex ; CPU:$C49C PRG:449C 85 4C + lda #$00 ; CPU:$C49E PRG:449E A9 00 + sta TileAttribute ; CPU:$C4A0 PRG:44A0 85 4D + asl TileIndex ; CPU:$C4A2 PRG:44A2 06 4C + rol TileAttribute ; CPU:$C4A4 PRG:44A4 26 4D + clc ; CPU:$C4A6 PRG:44A6 18 + lda #$6C ; CPU:$C4A7 PRG:44A7 A9 6C +DrawIndicatorBoard: + adc TileIndex ; CPU:$C4A9 PRG:44A9 65 4C + sta TileIndex ; CPU:$C4AB PRG:44AB 85 4C + lda #$F6 ; CPU:$C4AD PRG:44AD A9 F6 + adc TileAttribute ; CPU:$C4AF PRG:44AF 65 4D + sta TileAttribute ; CPU:$C4B1 PRG:44B1 85 4D + ldy #$00 ; CPU:$C4B3 PRG:44B3 A0 00 + lda ColorIndex ; CPU:$C4B5 PRG:44B5 A5 47 + asl a ; CPU:$C4B7 PRG:44B7 0A + bcc DrawIndicatorBoard_Loop ; CPU:$C4B8 PRG:44B8 90 11 + lda (TileIndex),y ; CPU:$C4BA PRG:44BA B1 4C + sec ; CPU:$C4BC PRG:44BC 38 + sbc TileListPtrLo ; CPU:$C4BD PRG:44BD E5 4A + sta TileListPtrLo ; CPU:$C4BF PRG:44BF 85 4A + iny ; CPU:$C4C1 PRG:44C1 C8 + lda (TileIndex),y ; CPU:$C4C2 PRG:44C2 B1 4C + sbc TileListPtrHi ; CPU:$C4C4 PRG:44C4 E5 4B + sta TileListPtrHi ; CPU:$C4C6 PRG:44C6 85 4B + jmp ShiftDrawPointer ; CPU:$C4C8 PRG:44C8 4C D9 C4 +; ----------------------------------------------------------------------------- +; Routine: DrawIndicatorBoard_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawIndicatorBoard_Loop: + lda (TileIndex),y ; CPU:$C4CB PRG:44CB B1 4C + clc ; CPU:$C4CD PRG:44CD 18 + adc TileListPtrLo ; CPU:$C4CE PRG:44CE 65 4A + sta TileListPtrLo ; CPU:$C4D0 PRG:44D0 85 4A + iny ; CPU:$C4D2 PRG:44D2 C8 + lda (TileIndex),y ; CPU:$C4D3 PRG:44D3 B1 4C + adc TileListPtrHi ; CPU:$C4D5 PRG:44D5 65 4B + sta TileListPtrHi ; CPU:$C4D7 PRG:44D7 85 4B +; ----------------------------------------------------------------------------- +; Routine: ShiftDrawPointer +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftDrawPointer: + lsr TileListPtrHi ; CPU:$C4D9 PRG:44D9 46 4B + ror TileListPtrLo ; CPU:$C4DB PRG:44DB 66 4A + lsr TileListPtrHi ; CPU:$C4DD PRG:44DD 46 4B + ror TileListPtrLo ; CPU:$C4DF PRG:44DF 66 4A + lsr TileListPtrHi ; CPU:$C4E1 PRG:44E1 46 4B + ror TileListPtrLo ; CPU:$C4E3 PRG:44E3 66 4A + lsr TileListPtrHi ; CPU:$C4E5 PRG:44E5 46 4B + ror TileListPtrLo ; CPU:$C4E7 PRG:44E7 66 4A + lsr TileListPtrHi ; CPU:$C4E9 PRG:44E9 46 4B + ror TileListPtrLo ; CPU:$C4EB PRG:44EB 66 4A + lsr TileListPtrHi ; CPU:$C4ED PRG:44ED 46 4B + ror TileListPtrLo ; CPU:$C4EF PRG:44EF 66 4A + lsr TileListPtrHi ; CPU:$C4F1 PRG:44F1 46 4B + ror TileListPtrLo ; CPU:$C4F3 PRG:44F3 66 4A + lda DrawPointerLo ; CPU:$C4F5 PRG:44F5 A5 48 + clc ; CPU:$C4F7 PRG:44F7 18 + adc #$40 ; CPU:$C4F8 PRG:44F8 69 40 + sta DrawPointerLo ; CPU:$C4FA PRG:44FA 85 48 + rts ; CPU:$C4FC PRG:44FC 60 +; ----------------------------------------------------------------------------- +; Routine: GetDrawX +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetDrawX: + lda DrawPointerLo ; CPU:$C4FD PRG:44FD A5 48 + sec ; CPU:$C4FF PRG:44FF 38 + sbc #$08 ; CPU:$C500 PRG:4500 E9 08 + sta DrawPointerLo ; CPU:$C502 PRG:4502 85 48 + lda NumberToDisplay ; CPU:$C504 PRG:4504 A5 45 + bne GetDrawX_Loop ; CPU:$C506 PRG:4506 D0 0E + lda TableIndex ; CPU:$C508 PRG:4508 A5 4E + asl a ; CPU:$C50A PRG:450A 0A + tay ; CPU:$C50B PRG:450B A8 + lda #$F0 ; CPU:$C50C PRG:450C A9 F0 + sta $0570,y ; CPU:$C50E PRG:450E 99 70 05 + lda DrawPointerLo ; CPU:$C511 PRG:4511 A5 48 + jmp StoreDrawX ; CPU:$C513 PRG:4513 4C 22 C5 +; ----------------------------------------------------------------------------- +; Routine: GetDrawX_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetDrawX_Loop: + lda TableIndex ; CPU:$C516 PRG:4516 A5 4E + asl a ; CPU:$C518 PRG:4518 0A + tay ; CPU:$C519 PRG:4519 A8 + lda DrawPointerLo ; CPU:$C51A PRG:451A A5 48 + sta $0570,y ; CPU:$C51C PRG:451C 99 70 05 + sec ; CPU:$C51F PRG:451F 38 + sbc NumberToDisplay ; CPU:$C520 PRG:4520 E5 45 +; ----------------------------------------------------------------------------- +; Routine: StoreDrawX +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreDrawX: + sta NumberTileColumn ; CPU:$C522 PRG:4522 85 15 + sec ; CPU:$C524 PRG:4524 38 + lda TileListPtrLo ; CPU:$C525 PRG:4525 A5 4A + sbc #$04 ; CPU:$C527 PRG:4527 E9 04 + sta TileListPtrLo ; CPU:$C529 PRG:4529 85 4A + bcs StoreDrawX_Loop ; CPU:$C52B PRG:452B B0 08 + lda TileListPtrHi ; CPU:$C52D PRG:452D A5 4B + sbc #$00 ; CPU:$C52F PRG:452F E9 00 + bcc DrawNumberSpriteE_Loop ; CPU:$C531 PRG:4531 90 77 + sta TileListPtrHi ; CPU:$C533 PRG:4533 85 4B +; ----------------------------------------------------------------------------- +; Routine: StoreDrawX_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreDrawX_Loop: + sec ; CPU:$C535 PRG:4535 38 + lda TileListPtrLo ; CPU:$C536 PRG:4536 A5 4A + sbc ScrollX ; CPU:$C538 PRG:4538 E5 06 + sta TileListPtrLo ; CPU:$C53A PRG:453A 85 4A + bcs StoreDrawX_Loop2 ; CPU:$C53C PRG:453C B0 0D + lda TileListPtrHi ; CPU:$C53E PRG:453E A5 4B + sbc #$00 ; CPU:$C540 PRG:4540 E9 00 + bcc DrawNumberSpriteE_Loop ; CPU:$C542 PRG:4542 90 66 + bne DrawNumberSpriteE_Loop ; CPU:$C544 PRG:4544 D0 64 + sta TileListPtrHi ; CPU:$C546 PRG:4546 85 4B + jmp StoreDrawTile ; CPU:$C548 PRG:4548 4C 4F C5 +; ----------------------------------------------------------------------------- +; Routine: StoreDrawX_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreDrawX_Loop2: + lda TileListPtrHi ; CPU:$C54B PRG:454B A5 4B + bne DrawNumberSpriteE_Loop ; CPU:$C54D PRG:454D D0 5B +; ----------------------------------------------------------------------------- +; Routine: StoreDrawTile +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreDrawTile: + lda TileListPtrLo ; CPU:$C54F PRG:454F A5 4A + sta $056F,y ; CPU:$C551 PRG:4551 99 6F 05 + sta NumberTileRow ; CPU:$C554 PRG:4554 85 18 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSprite +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSprite: + lda SpriteOffsetIndex ; CPU:$C556 PRG:4556 A5 46 + sta TileListPtrLo ; CPU:$C558 PRG:4558 85 4A + lda #$00 ; CPU:$C55A PRG:455A A9 00 + sta TileListPtrHi ; CPU:$C55C PRG:455C 85 4B + asl TileListPtrLo ; CPU:$C55E PRG:455E 06 4A + rol TileListPtrHi ; CPU:$C560 PRG:4560 26 4B + asl TileListPtrLo ; CPU:$C562 PRG:4562 06 4A + rol TileListPtrHi ; CPU:$C564 PRG:4564 26 4B + asl TileListPtrLo ; CPU:$C566 PRG:4566 06 4A +DrawNumberSpriteB: + rol TileListPtrHi ; CPU:$C568 PRG:4568 26 4B + asl TileListPtrLo ; CPU:$C56A PRG:456A 06 4A +DrawNumberSpriteC: + rol TileListPtrHi ; CPU:$C56C PRG:456C 26 4B + clc ; CPU:$C56E PRG:456E 18 + lda #$08 ; CPU:$C56F PRG:456F A9 08 + adc TileListPtrLo ; CPU:$C571 PRG:4571 65 4A + sta TileListPtrLo ; CPU:$C573 PRG:4573 85 4A + lda #$EE ; CPU:$C575 PRG:4575 A9 EE + adc TileListPtrHi ; CPU:$C577 PRG:4577 65 4B + sta TileListPtrHi ; CPU:$C579 PRG:4579 85 4B + ldy #$02 ; CPU:$C57B PRG:457B A0 02 + lda TitleFlag ; CPU:$C57D PRG:457D A5 8D + beq DrawNumberSpriteC_Loop ; CPU:$C57F PRG:457F F0 07 + lda (TileListPtrLo),y ; CPU:$C581 PRG:4581 B1 4A + ora NumberParity ; CPU:$C583 PRG:4583 05 84 + jmp DrawNumberSpriteD ; CPU:$C585 PRG:4585 4C 8A C5 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteC_Loop: + lda (TileListPtrLo),y ; CPU:$C588 PRG:4588 B1 4A +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteD: + sta TeamSpritePtrHi ; CPU:$C58A PRG:458A 85 17 + iny ; CPU:$C58C PRG:458C C8 + lda CrowdOffsetA ; CPU:$C58D PRG:458D A5 85 + beq DrawNumberSpriteD_Loop ; CPU:$C58F PRG:458F F0 08 + lda (TileListPtrLo),y ; CPU:$C591 PRG:4591 B1 4A + clc ; CPU:$C593 PRG:4593 18 + adc #$60 ; CPU:$C594 PRG:4594 69 60 + jmp DrawNumberSpriteE ; CPU:$C596 PRG:4596 4C 9B C5 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteD_Loop: + lda (TileListPtrLo),y ; CPU:$C599 PRG:4599 B1 4A +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteE: + sta TeamSpritePtrLo ; CPU:$C59B PRG:459B 85 16 + jsr BuildPlayerSpriteEntries ; CPU:$C59D PRG:459D 20 D8 83 + jsr DrawNumberSpriteF ; CPU:$C5A0 PRG:45A0 20 B4 C5 + jsr DrawNumberSpriteF ; CPU:$C5A3 PRG:45A3 20 B4 C5 + jsr DrawNumberSpriteF ; CPU:$C5A6 PRG:45A6 20 B4 C5 + rts ; CPU:$C5A9 PRG:45A9 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteE_Loop: + lda TableIndex ; CPU:$C5AA PRG:45AA A5 4E + asl a ; CPU:$C5AC PRG:45AC 0A + tay ; CPU:$C5AD PRG:45AD A8 + lda #$F0 ; CPU:$C5AE PRG:45AE A9 F0 + sta $0570,y ; CPU:$C5B0 PRG:45B0 99 70 05 + rts ; CPU:$C5B3 PRG:45B3 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteF: + iny ; CPU:$C5B4 PRG:45B4 C8 + lda (TileListPtrLo),y ; CPU:$C5B5 PRG:45B5 B1 4A + clc ; CPU:$C5B7 PRG:45B7 18 + adc NumberTileRow ; CPU:$C5B8 PRG:45B8 65 18 + sta NumberTileRow ; CPU:$C5BA PRG:45BA 85 18 + iny ; CPU:$C5BC PRG:45BC C8 + lda (TileListPtrLo),y ; CPU:$C5BD PRG:45BD B1 4A + clc ; CPU:$C5BF PRG:45BF 18 + adc NumberTileColumn ; CPU:$C5C0 PRG:45C0 65 15 + sta NumberTileColumn ; CPU:$C5C2 PRG:45C2 85 15 + iny ; CPU:$C5C4 PRG:45C4 C8 + lda TitleFlag ; CPU:$C5C5 PRG:45C5 A5 8D + beq DrawNumberSpriteF_Loop ; CPU:$C5C7 PRG:45C7 F0 07 + lda (TileListPtrLo),y ; CPU:$C5C9 PRG:45C9 B1 4A + ora NumberParity ; CPU:$C5CB PRG:45CB 05 84 + jmp DrawNumberSpriteG ; CPU:$C5CD PRG:45CD 4C D2 C5 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteF_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteF_Loop: + lda (TileListPtrLo),y ; CPU:$C5D0 PRG:45D0 B1 4A +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteG: + sta TeamSpritePtrHi ; CPU:$C5D2 PRG:45D2 85 17 + iny ; CPU:$C5D4 PRG:45D4 C8 + lda (TileListPtrLo),y ; CPU:$C5D5 PRG:45D5 B1 4A + cmp #$FF ; CPU:$C5D7 PRG:45D7 C9 FF + beq StoreSpriteIndex_Loop ; CPU:$C5D9 PRG:45D9 F0 13 + lda CrowdOffsetA ; CPU:$C5DB PRG:45DB A5 85 + beq DrawNumberSpriteG_Loop ; CPU:$C5DD PRG:45DD F0 08 + lda (TileListPtrLo),y ; CPU:$C5DF PRG:45DF B1 4A + clc ; CPU:$C5E1 PRG:45E1 18 + adc #$60 ; CPU:$C5E2 PRG:45E2 69 60 + jmp StoreSpriteIndex ; CPU:$C5E4 PRG:45E4 4C E9 C5 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteG_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteG_Loop: + lda (TileListPtrLo),y ; CPU:$C5E7 PRG:45E7 B1 4A +; ----------------------------------------------------------------------------- +; Routine: StoreSpriteIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreSpriteIndex: + sta TeamSpritePtrLo ; CPU:$C5E9 PRG:45E9 85 16 + jsr BuildPlayerSpriteEntries ; CPU:$C5EB PRG:45EB 20 D8 83 +; ----------------------------------------------------------------------------- +; Routine: StoreSpriteIndex_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreSpriteIndex_Loop: + rts ; CPU:$C5EE PRG:45EE 60 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd: + lda TitleFlag ; CPU:$C5EF PRG:45EF A5 8D + bne AnimateCrowd_Loop ; CPU:$C5F1 PRG:45F1 D0 01 + rts ; CPU:$C5F3 PRG:45F3 60 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop: + lda FrameCounter ; CPU:$C5F4 PRG:45F4 A5 2D + and #$0F ; CPU:$C5F6 PRG:45F6 29 0F + tax ; CPU:$C5F8 PRG:45F8 AA + beq CrowdFrame0 ; CPU:$C5F9 PRG:45F9 F0 3D + dex ; CPU:$C5FB PRG:45FB CA + beq CrowdFrame1 ; CPU:$C5FC PRG:45FC F0 52 + dex ; CPU:$C5FE PRG:45FE CA + beq CrowdFrame2 ; CPU:$C5FF PRG:45FF F0 67 + dex ; CPU:$C601 PRG:4601 CA + bne AnimateCrowd_Loop2 ; CPU:$C602 PRG:4602 D0 03 + jmp CrowdFrame3 ; CPU:$C604 PRG:4604 4C 80 C6 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop2: + dex ; CPU:$C607 PRG:4607 CA + bne AnimateCrowd_Loop3 ; CPU:$C608 PRG:4608 D0 03 + jmp CrowdFrame4 ; CPU:$C60A PRG:460A 4C 98 C6 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop3: + dex ; CPU:$C60D PRG:460D CA + bne AnimateCrowd_Loop4 ; CPU:$C60E PRG:460E D0 03 + jmp CrowdSpriteFlag0 ; CPU:$C610 PRG:4610 4C B0 C6 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop4: + dex ; CPU:$C613 PRG:4613 CA + bne AnimateCrowd_Loop5 ; CPU:$C614 PRG:4614 D0 03 + jmp CrowdSpriteFlag1 ; CPU:$C616 PRG:4616 4C C8 C6 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop5: + dex ; CPU:$C619 PRG:4619 CA + bne AnimateCrowd_Loop6 ; CPU:$C61A PRG:461A D0 03 + jmp CrowdSpriteFlag2 ; CPU:$C61C PRG:461C 4C E0 C6 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop6: + dex ; CPU:$C61F PRG:461F CA + bne AnimateCrowd_Loop7 ; CPU:$C620 PRG:4620 D0 03 + jmp CrowdSpriteFlag3 ; CPU:$C622 PRG:4622 4C F8 C6 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop7: + dex ; CPU:$C625 PRG:4625 CA + bne AnimateCrowd_Loop8 ; CPU:$C626 PRG:4626 D0 03 + jmp CrowdSpriteFlag4 ; CPU:$C628 PRG:4628 4C 10 C7 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop8: + dex ; CPU:$C62B PRG:462B CA + bne AnimateCrowd_Loop9 ; CPU:$C62C PRG:462C D0 03 + jmp CrowdSpriteFlag5 ; CPU:$C62E PRG:462E 4C 28 C7 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop9: + dex ; CPU:$C631 PRG:4631 CA + bne AnimateCrowd_Loop10 ; CPU:$C632 PRG:4632 D0 03 + jmp CrowdSpriteFlag6 ; CPU:$C634 PRG:4634 4C 40 C7 +; ----------------------------------------------------------------------------- +; Routine: AnimateCrowd_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateCrowd_Loop10: + rts ; CPU:$C637 PRG:4637 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame0: + lda CrowdFlagsA ; CPU:$C638 PRG:4638 A5 50 + and #$01 ; CPU:$C63A PRG:463A 29 01 + bne CrowdFrame0_Loop ; CPU:$C63C PRG:463C D0 09 + lda $0516 ; CPU:$C63E PRG:463E AD 16 05 + and #$F9 ; CPU:$C641 PRG:4641 29 F9 + sta $0516 ; CPU:$C643 PRG:4643 8D 16 05 + rts ; CPU:$C646 PRG:4646 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame0_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame0_Loop: + lda $0516 ; CPU:$C647 PRG:4647 AD 16 05 + ora #$06 ; CPU:$C64A PRG:464A 09 06 + sta $0516 ; CPU:$C64C PRG:464C 8D 16 05 + rts ; CPU:$C64F PRG:464F 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame1: + lda CrowdFlagsA ; CPU:$C650 PRG:4650 A5 50 + and #$02 ; CPU:$C652 PRG:4652 29 02 + bne CrowdFrame1_Loop ; CPU:$C654 PRG:4654 D0 09 + lda $051E ; CPU:$C656 PRG:4656 AD 1E 05 + and #$F9 ; CPU:$C659 PRG:4659 29 F9 + sta $051E ; CPU:$C65B PRG:465B 8D 1E 05 + rts ; CPU:$C65E PRG:465E 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame1_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame1_Loop: + lda $051E ; CPU:$C65F PRG:465F AD 1E 05 + ora #$06 ; CPU:$C662 PRG:4662 09 06 + sta $051E ; CPU:$C664 PRG:4664 8D 1E 05 + rts ; CPU:$C667 PRG:4667 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame2: + lda CrowdFlagsA ; CPU:$C668 PRG:4668 A5 50 + and #$04 ; CPU:$C66A PRG:466A 29 04 + bne CrowdFrame2_Loop ; CPU:$C66C PRG:466C D0 09 + lda $0526 ; CPU:$C66E PRG:466E AD 26 05 + and #$F9 ; CPU:$C671 PRG:4671 29 F9 + sta $0526 ; CPU:$C673 PRG:4673 8D 26 05 + rts ; CPU:$C676 PRG:4676 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame2_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame2_Loop: + lda $0526 ; CPU:$C677 PRG:4677 AD 26 05 + ora #$06 ; CPU:$C67A PRG:467A 09 06 + sta $0526 ; CPU:$C67C PRG:467C 8D 26 05 + rts ; CPU:$C67F PRG:467F 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame3: + lda CrowdFlagsA ; CPU:$C680 PRG:4680 A5 50 + and #$08 ; CPU:$C682 PRG:4682 29 08 + bne CrowdFrame3_Loop ; CPU:$C684 PRG:4684 D0 09 + lda $052E ; CPU:$C686 PRG:4686 AD 2E 05 + and #$F9 ; CPU:$C689 PRG:4689 29 F9 + sta $052E ; CPU:$C68B PRG:468B 8D 2E 05 + rts ; CPU:$C68E PRG:468E 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame3_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame3_Loop: + lda $052E ; CPU:$C68F PRG:468F AD 2E 05 + ora #$06 ; CPU:$C692 PRG:4692 09 06 + sta $052E ; CPU:$C694 PRG:4694 8D 2E 05 + rts ; CPU:$C697 PRG:4697 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame4: + lda CrowdFlagsA ; CPU:$C698 PRG:4698 A5 50 + and #$10 ; CPU:$C69A PRG:469A 29 10 + bne CrowdFrame4_Loop ; CPU:$C69C PRG:469C D0 09 + lda $0536 ; CPU:$C69E PRG:469E AD 36 05 + and #$F9 ; CPU:$C6A1 PRG:46A1 29 F9 + sta $0536 ; CPU:$C6A3 PRG:46A3 8D 36 05 + rts ; CPU:$C6A6 PRG:46A6 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdFrame4_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdFrame4_Loop: + lda $0536 ; CPU:$C6A7 PRG:46A7 AD 36 05 + ora #$06 ; CPU:$C6AA PRG:46AA 09 06 + sta $0536 ; CPU:$C6AC PRG:46AC 8D 36 05 + rts ; CPU:$C6AF PRG:46AF 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag0: + lda CrowdFlagsA ; CPU:$C6B0 PRG:46B0 A5 50 + and #$20 ; CPU:$C6B2 PRG:46B2 29 20 + bne CrowdSpriteFlag0_Loop ; CPU:$C6B4 PRG:46B4 D0 09 + lda $053E ; CPU:$C6B6 PRG:46B6 AD 3E 05 + and #$F9 ; CPU:$C6B9 PRG:46B9 29 F9 + sta $053E ; CPU:$C6BB PRG:46BB 8D 3E 05 + rts ; CPU:$C6BE PRG:46BE 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag0_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag0_Loop: + lda $053E ; CPU:$C6BF PRG:46BF AD 3E 05 + ora #$06 ; CPU:$C6C2 PRG:46C2 09 06 + sta $053E ; CPU:$C6C4 PRG:46C4 8D 3E 05 + rts ; CPU:$C6C7 PRG:46C7 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag1: + lda CrowdFlagsB ; CPU:$C6C8 PRG:46C8 A5 51 + and #$01 ; CPU:$C6CA PRG:46CA 29 01 + bne CrowdSpriteFlag1_Loop ; CPU:$C6CC PRG:46CC D0 09 + lda $0546 ; CPU:$C6CE PRG:46CE AD 46 05 + and #$F9 ; CPU:$C6D1 PRG:46D1 29 F9 + sta $0546 ; CPU:$C6D3 PRG:46D3 8D 46 05 + rts ; CPU:$C6D6 PRG:46D6 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag1_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag1_Loop: + lda $0546 ; CPU:$C6D7 PRG:46D7 AD 46 05 + ora #$06 ; CPU:$C6DA PRG:46DA 09 06 + sta $0546 ; CPU:$C6DC PRG:46DC 8D 46 05 + rts ; CPU:$C6DF PRG:46DF 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag2: + lda CrowdFlagsB ; CPU:$C6E0 PRG:46E0 A5 51 + and #$02 ; CPU:$C6E2 PRG:46E2 29 02 + bne CrowdSpriteFlag2_Loop ; CPU:$C6E4 PRG:46E4 D0 09 + lda $054E ; CPU:$C6E6 PRG:46E6 AD 4E 05 + and #$F9 ; CPU:$C6E9 PRG:46E9 29 F9 + sta $054E ; CPU:$C6EB PRG:46EB 8D 4E 05 + rts ; CPU:$C6EE PRG:46EE 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag2_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag2_Loop: + lda $054E ; CPU:$C6EF PRG:46EF AD 4E 05 + ora #$06 ; CPU:$C6F2 PRG:46F2 09 06 + sta $054E ; CPU:$C6F4 PRG:46F4 8D 4E 05 + rts ; CPU:$C6F7 PRG:46F7 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag3: + lda CrowdFlagsB ; CPU:$C6F8 PRG:46F8 A5 51 + and #$04 ; CPU:$C6FA PRG:46FA 29 04 + bne CrowdSpriteFlag3_Loop ; CPU:$C6FC PRG:46FC D0 09 + lda $0556 ; CPU:$C6FE PRG:46FE AD 56 05 + and #$F9 ; CPU:$C701 PRG:4701 29 F9 + sta $0556 ; CPU:$C703 PRG:4703 8D 56 05 + rts ; CPU:$C706 PRG:4706 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag3_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag3_Loop: + lda $0556 ; CPU:$C707 PRG:4707 AD 56 05 + ora #$06 ; CPU:$C70A PRG:470A 09 06 + sta $0556 ; CPU:$C70C PRG:470C 8D 56 05 + rts ; CPU:$C70F PRG:470F 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag4: + lda CrowdFlagsB ; CPU:$C710 PRG:4710 A5 51 + and #$08 ; CPU:$C712 PRG:4712 29 08 + bne CrowdSpriteFlag4_Loop ; CPU:$C714 PRG:4714 D0 09 + lda $055E ; CPU:$C716 PRG:4716 AD 5E 05 + and #$F9 ; CPU:$C719 PRG:4719 29 F9 + sta $055E ; CPU:$C71B PRG:471B 8D 5E 05 + rts ; CPU:$C71E PRG:471E 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag4_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag4_Loop: + lda $055E ; CPU:$C71F PRG:471F AD 5E 05 + ora #$06 ; CPU:$C722 PRG:4722 09 06 + sta $055E ; CPU:$C724 PRG:4724 8D 5E 05 + rts ; CPU:$C727 PRG:4727 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag5: + lda CrowdFlagsB ; CPU:$C728 PRG:4728 A5 51 + and #$10 ; CPU:$C72A PRG:472A 29 10 + bne CrowdSpriteFlag5_Loop ; CPU:$C72C PRG:472C D0 09 + lda $0566 ; CPU:$C72E PRG:472E AD 66 05 + and #$F9 ; CPU:$C731 PRG:4731 29 F9 + sta $0566 ; CPU:$C733 PRG:4733 8D 66 05 + rts ; CPU:$C736 PRG:4736 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag5_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag5_Loop: + lda $0566 ; CPU:$C737 PRG:4737 AD 66 05 + ora #$06 ; CPU:$C73A PRG:473A 09 06 + sta $0566 ; CPU:$C73C PRG:473C 8D 66 05 + rts ; CPU:$C73F PRG:473F 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag6: + lda CrowdFlagsB ; CPU:$C740 PRG:4740 A5 51 + and #$20 ; CPU:$C742 PRG:4742 29 20 + bne CrowdSpriteFlag6_Loop ; CPU:$C744 PRG:4744 D0 09 + lda $056E ; CPU:$C746 PRG:4746 AD 6E 05 + and #$F9 ; CPU:$C749 PRG:4749 29 F9 + sta $056E ; CPU:$C74B PRG:474B 8D 6E 05 + rts ; CPU:$C74E PRG:474E 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteFlag6_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteFlag6_Loop: + lda $056E ; CPU:$C74F PRG:474F AD 6E 05 + ora #$06 ; CPU:$C752 PRG:4752 09 06 + sta $056E ; CPU:$C754 PRG:4754 8D 6E 05 + rts ; CPU:$C757 PRG:4757 60 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreBoard +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreBoard: + lda $050D ; CPU:$C758 PRG:4758 AD 0D 05 + sta NumberTileRow ; CPU:$C75B PRG:475B 85 18 + lda $050E ; CPU:$C75D PRG:475D AD 0E 05 + sta NumberTileColumn ; CPU:$C760 PRG:4760 85 15 + lda #$02 ; CPU:$C762 PRG:4762 A9 02 + sta TeamSpritePtrHi ; CPU:$C764 PRG:4764 85 17 + lda BallFrameCounter ; CPU:$C766 PRG:4766 AD 02 05 + cmp #$2A ; CPU:$C769 PRG:4769 C9 2A + bcs DrawScoreBoard_Loop ; CPU:$C76B PRG:476B B0 05 + lda #$27 ; CPU:$C76D PRG:476D A9 27 + jmp StoreCrowdSprite ; CPU:$C76F PRG:476F 4C 86 C7 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreBoard_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreBoard_Loop: + cmp #$54 ; CPU:$C772 PRG:4772 C9 54 + bcs DrawScoreBoard_Loop2 ; CPU:$C774 PRG:4774 B0 05 + lda #$25 ; CPU:$C776 PRG:4776 A9 25 + jmp StoreCrowdSprite ; CPU:$C778 PRG:4778 4C 86 C7 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreBoard_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreBoard_Loop2: + cmp #$7E ; CPU:$C77B PRG:477B C9 7E + bcs DrawScoreBoard_Loop3 ; CPU:$C77D PRG:477D B0 05 + lda #$23 ; CPU:$C77F PRG:477F A9 23 + jmp StoreCrowdSprite ; CPU:$C781 PRG:4781 4C 86 C7 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreBoard_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreBoard_Loop3: + lda #$21 ; CPU:$C784 PRG:4784 A9 21 +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdSprite +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdSprite: + sta TeamSpritePtrLo ; CPU:$C786 PRG:4786 85 16 + jsr BuildPlayerSpriteEntries ; CPU:$C788 PRG:4788 20 D8 83 + rts ; CPU:$C78B PRG:478B 60 +; ----------------------------------------------------------------------------- +; Routine: CrowdSpriteLoopStart +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CrowdSpriteLoopStart: + ldy #$00 ; CPU:$C78C PRG:478C A0 00 +; ----------------------------------------------------------------------------- +; Routine: ReadCrowdSpriteByte +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadCrowdSpriteByte: + lda $0570,y ; CPU:$C78E PRG:478E B9 70 05 + cmp #$F0 ; CPU:$C791 PRG:4791 C9 F0 + beq ReadCrowdSpriteByte_Loop ; CPU:$C793 PRG:4793 F0 12 + sta NumberTileColumn ; CPU:$C795 PRG:4795 85 15 + lda $056F,y ; CPU:$C797 PRG:4797 B9 6F 05 + sta NumberTileRow ; CPU:$C79A PRG:479A 85 18 + lda #$02 ; CPU:$C79C PRG:479C A9 02 + sta TeamSpritePtrHi ; CPU:$C79E PRG:479E 85 17 + lda #$27 ; CPU:$C7A0 PRG:47A0 A9 27 + sta TeamSpritePtrLo ; CPU:$C7A2 PRG:47A2 85 16 + jsr BuildPlayerSpriteEntries ; CPU:$C7A4 PRG:47A4 20 D8 83 +; ----------------------------------------------------------------------------- +; Routine: ReadCrowdSpriteByte_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadCrowdSpriteByte_Loop: + cpy #$16 ; CPU:$C7A7 PRG:47A7 C0 16 + beq ReadCrowdSpriteByte_Loop2 ; CPU:$C7A9 PRG:47A9 F0 05 + iny ; CPU:$C7AB PRG:47AB C8 + iny ; CPU:$C7AC PRG:47AC C8 + jmp ReadCrowdSpriteByte ; CPU:$C7AD PRG:47AD 4C 8E C7 +; ----------------------------------------------------------------------------- +; Routine: ReadCrowdSpriteByte_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadCrowdSpriteByte_Loop2: + rts ; CPU:$C7B0 PRG:47B0 60 +; ----------------------------------------------------------------------------- +; Routine: GetCrowdSpriteY +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetCrowdSpriteY: + lda BallFrameCounter ; CPU:$C7B1 PRG:47B1 AD 02 05 + sec ; CPU:$C7B4 PRG:47B4 38 + sbc #$08 ; CPU:$C7B5 PRG:47B5 E9 08 + bcc GetCrowdSpriteY_Loop ; CPU:$C7B7 PRG:47B7 90 0C + sta DrawPointerLo ; CPU:$C7B9 PRG:47B9 85 48 + lda BallSpeed ; CPU:$C7BB PRG:47BB AD 05 05 + cmp #$80 ; CPU:$C7BE PRG:47BE C9 80 + bcc DrawTeamSelection ; CPU:$C7C0 PRG:47C0 90 13 + jmp DrawCrowdSpriteRow ; CPU:$C7C2 PRG:47C2 4C CD C7 +; ----------------------------------------------------------------------------- +; Routine: GetCrowdSpriteY_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetCrowdSpriteY_Loop: + jsr GetCrowdSpriteTile ; CPU:$C7C5 PRG:47C5 20 EE C7 + lda #$00 ; CPU:$C7C8 PRG:47C8 A9 00 + jmp GetCrowdSpriteX ; CPU:$C7CA PRG:47CA 4C 33 C8 +; ----------------------------------------------------------------------------- +; Routine: DrawCrowdSpriteRow +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawCrowdSpriteRow: + jsr NegateValue ; CPU:$C7CD PRG:47CD 20 09 C8 + lda #$01 ; CPU:$C7D0 PRG:47D0 A9 01 + jmp GetCrowdSpriteX ; CPU:$C7D2 PRG:47D2 4C 33 C8 +; ----------------------------------------------------------------------------- +; Routine: DrawTeamSelection +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawTeamSelection: + lda BallSpeed ; CPU:$C7D5 PRG:47D5 AD 05 05 + eor #$FF ; CPU:$C7D8 PRG:47D8 49 FF + jsr NegateValue ; CPU:$C7DA PRG:47DA 20 09 C8 + jsr GetCrowdSpriteTile ; CPU:$C7DD PRG:47DD 20 EE C7 + lda NumberToDisplay ; CPU:$C7E0 PRG:47E0 A5 45 + clc ; CPU:$C7E2 PRG:47E2 18 + adc DrawPointerHi ; CPU:$C7E3 PRG:47E3 65 49 + sta NumberToDisplay ; CPU:$C7E5 PRG:47E5 85 45 + sta SpriteOffsetIndex ; CPU:$C7E7 PRG:47E7 85 46 + lda #$02 ; CPU:$C7E9 PRG:47E9 A9 02 + jmp GetCrowdSpriteX ; CPU:$C7EB PRG:47EB 4C 33 C8 +; ----------------------------------------------------------------------------- +; Routine: GetCrowdSpriteTile +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetCrowdSpriteTile: + lda #$08 ; CPU:$C7EE PRG:47EE A9 08 + sec ; CPU:$C7F0 PRG:47F0 38 + sbc BallCountdown ; CPU:$C7F1 PRG:47F1 ED 06 05 + asl a ; CPU:$C7F4 PRG:47F4 0A + sta NumberToDisplay ; CPU:$C7F5 PRG:47F5 85 45 + lda BallSpeed ; CPU:$C7F7 PRG:47F7 AD 05 05 + asl a ; CPU:$C7FA PRG:47FA 0A + clc ; CPU:$C7FB PRG:47FB 18 + adc #$01 ; CPU:$C7FC PRG:47FC 69 01 + asl a ; CPU:$C7FE PRG:47FE 0A + asl a ; CPU:$C7FF PRG:47FF 0A + asl a ; CPU:$C800 PRG:4800 0A + sec ; CPU:$C801 PRG:4801 38 + sbc NumberToDisplay ; CPU:$C802 PRG:4802 E5 45 + sta NumberToDisplay ; CPU:$C804 PRG:4804 85 45 + sta SpriteOffsetIndex ; CPU:$C806 PRG:4806 85 46 + rts ; CPU:$C808 PRG:4808 60 +; ----------------------------------------------------------------------------- +; Routine: NegateValue +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NegateValue: + eor #$FF ; CPU:$C809 PRG:4809 49 FF + clc ; CPU:$C80B PRG:480B 18 + adc #$01 ; CPU:$C80C PRG:480C 69 01 + sta ColorIndex ; CPU:$C80E PRG:480E 85 47 + lda #$00 ; CPU:$C810 PRG:4810 A9 00 + sta NumberToDisplay ; CPU:$C812 PRG:4812 85 45 +; ----------------------------------------------------------------------------- +; Routine: SetCrowdFrameIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetCrowdFrameIndex: + lda #$08 ; CPU:$C814 PRG:4814 A9 08 + sta SpriteOffsetIndex ; CPU:$C816 PRG:4816 85 46 +; ----------------------------------------------------------------------------- +; Routine: SetCrowdFrameIndex_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetCrowdFrameIndex_OnNonzero: + lda DrawPointerLo ; CPU:$C818 PRG:4818 A5 48 + sec ; CPU:$C81A PRG:481A 38 + sbc ColorIndex ; CPU:$C81B PRG:481B E5 47 + bcc SetCrowdFrameIndex_Loop ; CPU:$C81D PRG:481D 90 0D + sta DrawPointerLo ; CPU:$C81F PRG:481F 85 48 + inc NumberToDisplay ; CPU:$C821 PRG:4821 E6 45 + dec SpriteOffsetIndex ; CPU:$C823 PRG:4823 C6 46 + bne SetCrowdFrameIndex_OnNonzero ; CPU:$C825 PRG:4825 D0 F1 + inc ColorIndex ; CPU:$C827 PRG:4827 E6 47 + jmp SetCrowdFrameIndex ; CPU:$C829 PRG:4829 4C 14 C8 +; ----------------------------------------------------------------------------- +; Routine: SetCrowdFrameIndex_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetCrowdFrameIndex_Loop: + lda NumberToDisplay ; CPU:$C82C PRG:482C A5 45 + sta SpriteOffsetIndex ; CPU:$C82E PRG:482E 85 46 + sta DrawPointerHi ; CPU:$C830 PRG:4830 85 49 + rts ; CPU:$C832 PRG:4832 60 +; ----------------------------------------------------------------------------- +; Routine: GetCrowdSpriteX +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetCrowdSpriteX: + lda BallVelocityX ; CPU:$C833 PRG:4833 AD 03 05 + sta TileListPtrHi ; CPU:$C836 PRG:4836 85 4B + lda BallTargetX ; CPU:$C838 PRG:4838 AD 0B 05 + sta TileListPtrLo ; CPU:$C83B PRG:483B 85 4A + lda BallX ; CPU:$C83D PRG:483D AD 00 05 + sta TileAttribute ; CPU:$C840 PRG:4840 85 4D + lda BallFractionX ; CPU:$C842 PRG:4842 AD 09 05 + sta TileIndex ; CPU:$C845 PRG:4845 85 4C + lda BallVelocityX ; CPU:$C847 PRG:4847 AD 03 05 + asl a ; CPU:$C84A PRG:484A 0A + bcc StoreCrowdSpriteX_OnNonzero2 ; CPU:$C84B PRG:484B 90 2D + bne GetCrowdSpriteX_Loop ; CPU:$C84D PRG:484D D0 05 + lda #$00 ; CPU:$C84F PRG:484F A9 00 + jmp StoreCrowdSpriteX ; CPU:$C851 PRG:4851 4C 5C C8 +; ----------------------------------------------------------------------------- +; Routine: GetCrowdSpriteX_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetCrowdSpriteX_Loop: + lda BallVelocityX ; CPU:$C854 PRG:4854 AD 03 05 + eor #$FF ; CPU:$C857 PRG:4857 49 FF + clc ; CPU:$C859 PRG:4859 18 + adc #$01 ; CPU:$C85A PRG:485A 69 01 +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdSpriteX +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdSpriteX: + sta TileListPtrHi ; CPU:$C85C PRG:485C 85 4B +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdSpriteX_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdSpriteX_OnNonzero: + lsr SpriteOffsetIndex ; CPU:$C85E PRG:485E 46 46 + bcc StoreCrowdSpriteX_Loop ; CPU:$C860 PRG:4860 90 0D + lda TileIndex ; CPU:$C862 PRG:4862 A5 4C + sec ; CPU:$C864 PRG:4864 38 + sbc TileListPtrLo ; CPU:$C865 PRG:4865 E5 4A + sta TileIndex ; CPU:$C867 PRG:4867 85 4C + lda TileAttribute ; CPU:$C869 PRG:4869 A5 4D + sbc TileListPtrHi ; CPU:$C86B PRG:486B E5 4B + sta TileAttribute ; CPU:$C86D PRG:486D 85 4D +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdSpriteX_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdSpriteX_Loop: + asl TileListPtrLo ; CPU:$C86F PRG:486F 06 4A + rol TileListPtrHi ; CPU:$C871 PRG:4871 26 4B + lda SpriteOffsetIndex ; CPU:$C873 PRG:4873 A5 46 + bne StoreCrowdSpriteX_OnNonzero ; CPU:$C875 PRG:4875 D0 E7 + jmp StoreTeamColorA ; CPU:$C877 PRG:4877 4C 93 C8 +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdSpriteX_OnNonzero2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdSpriteX_OnNonzero2: + lsr SpriteOffsetIndex ; CPU:$C87A PRG:487A 46 46 + bcc StoreCrowdSpriteX_Loop2 ; CPU:$C87C PRG:487C 90 0D + lda TileIndex ; CPU:$C87E PRG:487E A5 4C + clc ; CPU:$C880 PRG:4880 18 + adc TileListPtrLo ; CPU:$C881 PRG:4881 65 4A + sta TileIndex ; CPU:$C883 PRG:4883 85 4C + lda TileAttribute ; CPU:$C885 PRG:4885 A5 4D + adc TileListPtrHi ; CPU:$C887 PRG:4887 65 4B + sta TileAttribute ; CPU:$C889 PRG:4889 85 4D +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdSpriteX_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdSpriteX_Loop2: + asl TileListPtrLo ; CPU:$C88B PRG:488B 06 4A + rol TileListPtrHi ; CPU:$C88D PRG:488D 26 4B + lda SpriteOffsetIndex ; CPU:$C88F PRG:488F A5 46 + bne StoreCrowdSpriteX_OnNonzero2 ; CPU:$C891 PRG:4891 D0 E7 +; ----------------------------------------------------------------------------- +; Routine: StoreTeamColorA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreTeamColorA: + lda TileAttribute ; CPU:$C893 PRG:4893 A5 4D + sta ColorIndex ; CPU:$C895 PRG:4895 85 47 + sta TeamColorA ; CPU:$C897 PRG:4897 85 58 + lda NumberToDisplay ; CPU:$C899 PRG:4899 A5 45 + sta SpriteOffsetIndex ; CPU:$C89B PRG:489B 85 46 + lda BallVelocityY ; CPU:$C89D PRG:489D AD 04 05 + sta TileListPtrHi ; CPU:$C8A0 PRG:48A0 85 4B + lda BallTargetY ; CPU:$C8A2 PRG:48A2 AD 0C 05 + sta TileListPtrLo ; CPU:$C8A5 PRG:48A5 85 4A + lda BallY ; CPU:$C8A7 PRG:48A7 AD 01 05 + sta TileAttribute ; CPU:$C8AA PRG:48AA 85 4D + lda BallFractionY ; CPU:$C8AC PRG:48AC AD 0A 05 + sta TileIndex ; CPU:$C8AF PRG:48AF 85 4C + lda BallVelocityY ; CPU:$C8B1 PRG:48B1 AD 04 05 + asl a ; CPU:$C8B4 PRG:48B4 0A + bcc DrawNationFlag0_OnNonzero ; CPU:$C8B5 PRG:48B5 90 2D + bne StoreTeamColorA_Loop ; CPU:$C8B7 PRG:48B7 D0 05 + lda #$00 ; CPU:$C8B9 PRG:48B9 A9 00 + jmp DrawNationFlags ; CPU:$C8BB PRG:48BB 4C C6 C8 +; ----------------------------------------------------------------------------- +; Routine: StoreTeamColorA_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreTeamColorA_Loop: + lda BallVelocityY ; CPU:$C8BE PRG:48BE AD 04 05 + eor #$FF ; CPU:$C8C1 PRG:48C1 49 FF + clc ; CPU:$C8C3 PRG:48C3 18 + adc #$01 ; CPU:$C8C4 PRG:48C4 69 01 +; ----------------------------------------------------------------------------- +; Routine: DrawNationFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNationFlags: + sta TileListPtrHi ; CPU:$C8C6 PRG:48C6 85 4B +; ----------------------------------------------------------------------------- +; Routine: DrawNationFlags_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNationFlags_OnNonzero: + lsr SpriteOffsetIndex ; CPU:$C8C8 PRG:48C8 46 46 + bcc DrawNationFlag0_Loop ; CPU:$C8CA PRG:48CA 90 0D + lda TileIndex ; CPU:$C8CC PRG:48CC A5 4C + sec ; CPU:$C8CE PRG:48CE 38 + sbc TileListPtrLo ; CPU:$C8CF PRG:48CF E5 4A +DrawNationFlag0: + sta TileIndex ; CPU:$C8D1 PRG:48D1 85 4C + lda TileAttribute ; CPU:$C8D3 PRG:48D3 A5 4D + sbc TileListPtrHi ; CPU:$C8D5 PRG:48D5 E5 4B + sta TileAttribute ; CPU:$C8D7 PRG:48D7 85 4D +; ----------------------------------------------------------------------------- +; Routine: DrawNationFlag0_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNationFlag0_Loop: + asl TileListPtrLo ; CPU:$C8D9 PRG:48D9 06 4A + rol TileListPtrHi ; CPU:$C8DB PRG:48DB 26 4B + lda SpriteOffsetIndex ; CPU:$C8DD PRG:48DD A5 46 + bne DrawNationFlags_OnNonzero ; CPU:$C8DF PRG:48DF D0 E7 + jmp StoreTeamColorB ; CPU:$C8E1 PRG:48E1 4C FD C8 +; ----------------------------------------------------------------------------- +; Routine: DrawNationFlag0_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNationFlag0_OnNonzero: + lsr SpriteOffsetIndex ; CPU:$C8E4 PRG:48E4 46 46 + bcc DrawNationFlag0_Loop2 ; CPU:$C8E6 PRG:48E6 90 0D + lda TileIndex ; CPU:$C8E8 PRG:48E8 A5 4C + clc ; CPU:$C8EA PRG:48EA 18 + adc TileListPtrLo ; CPU:$C8EB PRG:48EB 65 4A + sta TileIndex ; CPU:$C8ED PRG:48ED 85 4C + lda TileAttribute ; CPU:$C8EF PRG:48EF A5 4D + adc TileListPtrHi ; CPU:$C8F1 PRG:48F1 65 4B + sta TileAttribute ; CPU:$C8F3 PRG:48F3 85 4D +; ----------------------------------------------------------------------------- +; Routine: DrawNationFlag0_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNationFlag0_Loop2: + asl TileListPtrLo ; CPU:$C8F5 PRG:48F5 06 4A + rol TileListPtrHi ; CPU:$C8F7 PRG:48F7 26 4B + lda SpriteOffsetIndex ; CPU:$C8F9 PRG:48F9 A5 46 + bne DrawNationFlag0_OnNonzero ; CPU:$C8FB PRG:48FB D0 E7 +; ----------------------------------------------------------------------------- +; Routine: StoreTeamColorB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreTeamColorB: + lda TileAttribute ; CPU:$C8FD PRG:48FD A5 4D + sta DrawPointerLo ; CPU:$C8FF PRG:48FF 85 48 + sta TeamColorB ; CPU:$C901 PRG:4901 85 59 + rts ; CPU:$C903 PRG:4903 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteH: + lda ColorIndex ; CPU:$C904 PRG:4904 A5 47 + asl a ; CPU:$C906 PRG:4906 0A +DrawNumberSpriteI: + bcs DrawNumberSpriteI_Loop3 ; CPU:$C907 PRG:4907 B0 19 + lda ColorIndex ; CPU:$C909 PRG:4909 A5 47 + cmp #$24 ; CPU:$C90B PRG:490B C9 24 + bcs DrawNumberSpriteI_Loop ; CPU:$C90D PRG:490D B0 05 + lda #$40 ; CPU:$C90F PRG:490F A9 40 + jmp StoreCrowdOffset ; CPU:$C911 PRG:4911 4C 38 C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteI_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteI_Loop: + cmp #$54 ; CPU:$C914 PRG:4914 C9 54 + bcc DrawNumberSpriteI_Loop2 ; CPU:$C916 PRG:4916 90 05 + lda #$78 ; CPU:$C918 PRG:4918 A9 78 + jmp StoreCrowdOffset ; CPU:$C91A PRG:491A 4C 38 C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteI_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteI_Loop2: + lda #$68 ; CPU:$C91D PRG:491D A9 68 + jmp StoreCrowdOffset ; CPU:$C91F PRG:491F 4C 38 C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteI_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteI_Loop3: + lda ColorIndex ; CPU:$C922 PRG:4922 A5 47 + cmp #$DC ; CPU:$C924 PRG:4924 C9 DC + bcs DrawNumberSpriteJ ; CPU:$C926 PRG:4926 B0 0E + cmp #$AC ; CPU:$C928 PRG:4928 C9 AC + bcs DrawNumberSpriteI_Loop4 ; CPU:$C92A PRG:492A B0 05 + lda #$00 ; CPU:$C92C PRG:492C A9 00 + jmp StoreCrowdOffset ; CPU:$C92E PRG:492E 4C 38 C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteI_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteI_Loop4: + lda #$10 ; CPU:$C931 PRG:4931 A9 10 + jmp StoreCrowdOffset ; CPU:$C933 PRG:4933 4C 38 C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteJ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteJ: + lda #$30 ; CPU:$C936 PRG:4936 A9 30 +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdOffset +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdOffset: + sta ScrollTargetX ; CPU:$C938 PRG:4938 85 4F + rts ; CPU:$C93A PRG:493A 60 +; ----------------------------------------------------------------------------- +; Routine: CheckCrowdOffset +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckCrowdOffset: + lda DrawPointerLo ; CPU:$C93B PRG:493B A5 48 + cmp #$58 ; CPU:$C93D PRG:493D C9 58 + bcs StoreCrowdTile_Loop ; CPU:$C93F PRG:493F B0 22 + lda ColorIndex ; CPU:$C941 PRG:4941 A5 47 + cmp #$15 ; CPU:$C943 PRG:4943 C9 15 + bcc CheckCrowdOffset_Loop ; CPU:$C945 PRG:4945 90 09 + cmp #$29 ; CPU:$C947 PRG:4947 C9 29 + bcc DrawNumberSpriteK ; CPU:$C949 PRG:4949 90 0A +; ----------------------------------------------------------------------------- +; Routine: CheckCrowdOffset_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckCrowdOffset_OnZero: + lda #$28 ; CPU:$C94B PRG:494B A9 28 + jmp StoreCrowdTile ; CPU:$C94D PRG:494D 4C 5E C9 +; ----------------------------------------------------------------------------- +; Routine: CheckCrowdOffset_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckCrowdOffset_Loop: + lda #$14 ; CPU:$C950 PRG:4950 A9 14 + jmp StoreCrowdTile ; CPU:$C952 PRG:4952 4C 5E C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteK +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteK: + lda $0523 ; CPU:$C955 PRG:4955 AD 23 05 + cmp #$14 ; CPU:$C958 PRG:4958 C9 14 + beq CheckCrowdOffset_OnZero ; CPU:$C95A PRG:495A F0 EF + lda #$3C ; CPU:$C95C PRG:495C A9 3C +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdTile +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdTile: + sta CrowdFlagsA ; CPU:$C95E PRG:495E 85 50 + jmp DrawNumberSpriteL ; CPU:$C960 PRG:4960 4C 83 C9 +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdTile_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdTile_Loop: + lda ColorIndex ; CPU:$C963 PRG:4963 A5 47 + cmp #$15 ; CPU:$C965 PRG:4965 C9 15 + bcc StoreCrowdTile_Loop2 ; CPU:$C967 PRG:4967 90 09 + cmp #$29 ; CPU:$C969 PRG:4969 C9 29 + bcc StoreCrowdTile_Loop3 ; CPU:$C96B PRG:496B 90 0A +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdTile_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdTile_OnZero: + lda #$0A ; CPU:$C96D PRG:496D A9 0A + jmp StoreCrowdTile ; CPU:$C96F PRG:496F 4C 5E C9 +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdTile_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdTile_Loop2: + lda #$05 ; CPU:$C972 PRG:4972 A9 05 + jmp StoreCrowdTile ; CPU:$C974 PRG:4974 4C 5E C9 +; ----------------------------------------------------------------------------- +; Routine: StoreCrowdTile_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreCrowdTile_Loop3: + lda $0523 ; CPU:$C977 PRG:4977 AD 23 05 + cmp #$14 ; CPU:$C97A PRG:497A C9 14 + beq StoreCrowdTile_OnZero ; CPU:$C97C PRG:497C F0 EF + lda #$0F ; CPU:$C97E PRG:497E A9 0F + jmp StoreCrowdTile ; CPU:$C980 PRG:4980 4C 5E C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteL +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteL: + lda FrameCounter ; CPU:$C983 PRG:4983 A5 2D + and #$03 ; CPU:$C985 PRG:4985 29 03 + sta SpriteOffsetIndex ; CPU:$C987 PRG:4987 85 46 + lda CrowdFlagsA ; CPU:$C989 PRG:4989 A5 50 + sta DrawPointerHi ; CPU:$C98B PRG:498B 85 49 +; ----------------------------------------------------------------------------- +; Routine: SetNumberIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetNumberIndex: + lda #$07 ; CPU:$C98D PRG:498D A9 07 + sta NumberToDisplay ; CPU:$C98F PRG:498F 85 45 +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBits +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBits: + rol DrawPointerHi ; CPU:$C991 PRG:4991 26 49 + bcc ShiftNumberBits_OnNonzero ; CPU:$C993 PRG:4993 90 06 + lda SpriteOffsetIndex ; CPU:$C995 PRG:4995 A5 46 + beq ShiftNumberBits_Loop2 ; CPU:$C997 PRG:4997 F0 10 + dec SpriteOffsetIndex ; CPU:$C999 PRG:4999 C6 46 +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBits_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBits_OnNonzero: + lda NumberToDisplay ; CPU:$C99B PRG:499B A5 45 + beq ShiftNumberBits_Loop ; CPU:$C99D PRG:499D F0 05 + dec NumberToDisplay ; CPU:$C99F PRG:499F C6 45 + jmp ShiftNumberBits ; CPU:$C9A1 PRG:49A1 4C 91 C9 +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBits_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBits_Loop: + rol DrawPointerHi ; CPU:$C9A4 PRG:49A4 26 49 + jmp SetNumberIndex ; CPU:$C9A6 PRG:49A6 4C 8D C9 +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBits_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBits_Loop2: + lda NumberToDisplay ; CPU:$C9A9 PRG:49A9 A5 45 + asl a ; CPU:$C9AB PRG:49AB 0A + asl a ; CPU:$C9AC PRG:49AC 0A + asl a ; CPU:$C9AD PRG:49AD 0A + tax ; CPU:$C9AE PRG:49AE AA + lda $0516,x ; CPU:$C9AF PRG:49AF BD 16 05 + and #$01 ; CPU:$C9B2 PRG:49B2 29 01 + bne ShiftNumberBits_OnNonzero ; CPU:$C9B4 PRG:49B4 D0 E5 + lda NumberToDisplay ; CPU:$C9B6 PRG:49B6 A5 45 + sta NationSlotA ; CPU:$C9B8 PRG:49B8 85 5C + lda #$FF ; CPU:$C9BA PRG:49BA A9 FF + sta Zp7F ; CPU:$C9BC PRG:49BC 85 7F + lda CrowdOffsetB ; CPU:$C9BE PRG:49BE A5 87 + and #$01 ; CPU:$C9C0 PRG:49C0 29 01 + beq ShiftNumberBits_Loop3 ; CPU:$C9C2 PRG:49C2 F0 05 + lda #$00 ; CPU:$C9C4 PRG:49C4 A9 00 + sta Zp89 ; CPU:$C9C6 PRG:49C6 85 89 + rts ; CPU:$C9C8 PRG:49C8 60 +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBits_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBits_Loop3: + lda #$10 ; CPU:$C9C9 PRG:49C9 A9 10 + sta Zp89 ; CPU:$C9CB PRG:49CB 85 89 + rts ; CPU:$C9CD PRG:49CD 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteM +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteM: + lda DrawPointerLo ; CPU:$C9CE PRG:49CE A5 48 + cmp #$58 ; CPU:$C9D0 PRG:49D0 C9 58 + bcs DrawNumberSpriteN_Loop ; CPU:$C9D2 PRG:49D2 B0 22 + lda ColorIndex ; CPU:$C9D4 PRG:49D4 A5 47 + cmp #$EC ; CPU:$C9D6 PRG:49D6 C9 EC + bcs DrawNumberSpriteM_Loop ; CPU:$C9D8 PRG:49D8 B0 09 + cmp #$D8 ; CPU:$C9DA PRG:49DA C9 D8 + bcs DrawNumberSpriteM_Loop2 ; CPU:$C9DC PRG:49DC B0 0A +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteM_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteM_OnZero: + lda #$28 ; CPU:$C9DE PRG:49DE A9 28 + jmp DrawNumberSpriteN ; CPU:$C9E0 PRG:49E0 4C F1 C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteM_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteM_Loop: + lda #$14 ; CPU:$C9E3 PRG:49E3 A9 14 + jmp DrawNumberSpriteN ; CPU:$C9E5 PRG:49E5 4C F1 C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteM_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteM_Loop2: + lda $0553 ; CPU:$C9E8 PRG:49E8 AD 53 05 + cmp #$34 ; CPU:$C9EB PRG:49EB C9 34 + beq DrawNumberSpriteM_OnZero ; CPU:$C9ED PRG:49ED F0 EF + lda #$3C ; CPU:$C9EF PRG:49EF A9 3C +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteN +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteN: + sta CrowdFlagsB ; CPU:$C9F1 PRG:49F1 85 51 + jmp GetFrameMod4 ; CPU:$C9F3 PRG:49F3 4C 16 CA +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteN_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteN_Loop: + lda ColorIndex ; CPU:$C9F6 PRG:49F6 A5 47 + cmp #$EC ; CPU:$C9F8 PRG:49F8 C9 EC + bcs DrawNumberSpriteN_Loop2 ; CPU:$C9FA PRG:49FA B0 09 + cmp #$D8 ; CPU:$C9FC PRG:49FC C9 D8 + bcs DrawNumberSpriteN_Loop3 ; CPU:$C9FE PRG:49FE B0 0A +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteN_OnZero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteN_OnZero: + lda #$0A ; CPU:$CA00 PRG:4A00 A9 0A + jmp DrawNumberSpriteN ; CPU:$CA02 PRG:4A02 4C F1 C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteN_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteN_Loop2: + lda #$05 ; CPU:$CA05 PRG:4A05 A9 05 + jmp DrawNumberSpriteN ; CPU:$CA07 PRG:4A07 4C F1 C9 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteN_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteN_Loop3: + lda $0553 ; CPU:$CA0A PRG:4A0A AD 53 05 + cmp #$34 ; CPU:$CA0D PRG:4A0D C9 34 + beq DrawNumberSpriteN_OnZero ; CPU:$CA0F PRG:4A0F F0 EF + lda #$0F ; CPU:$CA11 PRG:4A11 A9 0F + jmp DrawNumberSpriteN ; CPU:$CA13 PRG:4A13 4C F1 C9 +; ----------------------------------------------------------------------------- +; Routine: GetFrameMod4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetFrameMod4: + lda FrameCounter ; CPU:$CA16 PRG:4A16 A5 2D + and #$03 ; CPU:$CA18 PRG:4A18 29 03 + sta SpriteOffsetIndex ; CPU:$CA1A PRG:4A1A 85 46 + lda CrowdFlagsB ; CPU:$CA1C PRG:4A1C A5 51 + sta DrawPointerHi ; CPU:$CA1E PRG:4A1E 85 49 +; ----------------------------------------------------------------------------- +; Routine: SetNumberIndexB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetNumberIndexB: + lda #$07 ; CPU:$CA20 PRG:4A20 A9 07 + sta NumberToDisplay ; CPU:$CA22 PRG:4A22 85 45 +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBitsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBitsB: + rol DrawPointerHi ; CPU:$CA24 PRG:4A24 26 49 + bcc ShiftNumberBitsB_OnNonzero ; CPU:$CA26 PRG:4A26 90 06 + lda SpriteOffsetIndex ; CPU:$CA28 PRG:4A28 A5 46 + beq ShiftNumberBitsB_Loop2 ; CPU:$CA2A PRG:4A2A F0 10 + dec SpriteOffsetIndex ; CPU:$CA2C PRG:4A2C C6 46 +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBitsB_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBitsB_OnNonzero: + lda NumberToDisplay ; CPU:$CA2E PRG:4A2E A5 45 + beq ShiftNumberBitsB_Loop ; CPU:$CA30 PRG:4A30 F0 05 + dec NumberToDisplay ; CPU:$CA32 PRG:4A32 C6 45 + jmp ShiftNumberBitsB ; CPU:$CA34 PRG:4A34 4C 24 CA +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBitsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBitsB_Loop: + rol DrawPointerHi ; CPU:$CA37 PRG:4A37 26 49 + jmp SetNumberIndexB ; CPU:$CA39 PRG:4A39 4C 20 CA +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBitsB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBitsB_Loop2: + lda NumberToDisplay ; CPU:$CA3C PRG:4A3C A5 45 + clc ; CPU:$CA3E PRG:4A3E 18 + adc #$06 ; CPU:$CA3F PRG:4A3F 69 06 + asl a ; CPU:$CA41 PRG:4A41 0A + asl a ; CPU:$CA42 PRG:4A42 0A + asl a ; CPU:$CA43 PRG:4A43 0A + tax ; CPU:$CA44 PRG:4A44 AA + lda $0516,x ; CPU:$CA45 PRG:4A45 BD 16 05 + and #$01 ; CPU:$CA48 PRG:4A48 29 01 + bne ShiftNumberBitsB_OnNonzero ; CPU:$CA4A PRG:4A4A D0 E2 + lda NumberToDisplay ; CPU:$CA4C PRG:4A4C A5 45 + clc ; CPU:$CA4E PRG:4A4E 18 + adc #$06 ; CPU:$CA4F PRG:4A4F 69 06 + sta NationSlotB ; CPU:$CA51 PRG:4A51 85 5D + lda #$FF ; CPU:$CA53 PRG:4A53 A9 FF + sta Zp80 ; CPU:$CA55 PRG:4A55 85 80 + lda CrowdOffsetB ; CPU:$CA57 PRG:4A57 A5 87 + and #$01 ; CPU:$CA59 PRG:4A59 29 01 + beq ShiftNumberBitsB_Loop3 ; CPU:$CA5B PRG:4A5B F0 05 + lda #$00 ; CPU:$CA5D PRG:4A5D A9 00 + sta Zp8A ; CPU:$CA5F PRG:4A5F 85 8A + rts ; CPU:$CA61 PRG:4A61 60 +; ----------------------------------------------------------------------------- +; Routine: ShiftNumberBitsB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ShiftNumberBitsB_Loop3: + lda #$10 ; CPU:$CA62 PRG:4A62 A9 10 + sta Zp8A ; CPU:$CA64 PRG:4A64 85 8A + rts ; CPU:$CA66 PRG:4A66 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteO +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteO: + lda PlayerCount ; CPU:$CA67 PRG:4A67 A5 2E + and #$0F ; CPU:$CA69 PRG:4A69 29 0F + beq DrawNumberSpriteO_Loop ; CPU:$CA6B PRG:4A6B F0 03 + jmp DrawNumberSpriteR ; CPU:$CA6D PRG:4A6D 4C D0 CA +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteO_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteO_Loop: + lda Zp7F ; CPU:$CA70 PRG:4A70 A5 7F + bne DrawNumberSpriteO_Loop2 ; CPU:$CA72 PRG:4A72 D0 01 + rts ; CPU:$CA74 PRG:4A74 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteO_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteO_Loop2: + lda PlayerLeftInput ; CPU:$CA75 PRG:4A75 A5 75 + and #$F0 ; CPU:$CA77 PRG:4A77 29 F0 + beq DrawNumberSpriteO_Loop3 ; CPU:$CA79 PRG:4A79 F0 01 + rts ; CPU:$CA7B PRG:4A7B 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteO_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteO_Loop3: + lda PlayerLeftInput ; CPU:$CA7C PRG:4A7C A5 75 + bne DrawNumberSpriteO_Loop4 ; CPU:$CA7E PRG:4A7E D0 01 + rts ; CPU:$CA80 PRG:4A80 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteO_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteO_Loop4: + lda TeamColorA ; CPU:$CA81 PRG:4A81 A5 58 + cmp #$80 ; CPU:$CA83 PRG:4A83 C9 80 + bcc DrawNumberSpriteO_Loop5 ; CPU:$CA85 PRG:4A85 90 01 + rts ; CPU:$CA87 PRG:4A87 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteO_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteO_Loop5: + lda TeamColorB ; CPU:$CA88 PRG:4A88 A5 59 + sec ; CPU:$CA8A PRG:4A8A 38 + sbc #$48 ; CPU:$CA8B PRG:4A8B E9 48 + cmp #$20 ; CPU:$CA8D PRG:4A8D C9 20 + bcc DrawNumberSpriteO_Loop6 ; CPU:$CA8F PRG:4A8F 90 03 + jmp DrawNumberSpriteR ; CPU:$CA91 PRG:4A91 4C D0 CA +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteO_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteO_Loop6: + ldx #$00 ; CPU:$CA94 PRG:4A94 A2 00 +DrawNumberSpriteP: + lda CrowdFlagsA ; CPU:$CA96 PRG:4A96 A5 50 + cmp #$05 ; CPU:$CA98 PRG:4A98 C9 05 + beq DrawNumberSpriteQ_Loop ; CPU:$CA9A PRG:4A9A F0 1C + inx ; CPU:$CA9C PRG:4A9C E8 + cmp #$0A ; CPU:$CA9D PRG:4A9D C9 0A +DrawNumberSpriteQ: + beq DrawNumberSpriteQ_Loop ; CPU:$CA9F PRG:4A9F F0 17 + inx ; CPU:$CAA1 PRG:4AA1 E8 + cmp #$0F ; CPU:$CAA2 PRG:4AA2 C9 0F + beq DrawNumberSpriteQ_Loop ; CPU:$CAA4 PRG:4AA4 F0 12 + inx ; CPU:$CAA6 PRG:4AA6 E8 + cmp #$14 ; CPU:$CAA7 PRG:4AA7 C9 14 + beq DrawNumberSpriteQ_Loop ; CPU:$CAA9 PRG:4AA9 F0 0D + inx ; CPU:$CAAB PRG:4AAB E8 + cmp #$28 ; CPU:$CAAC PRG:4AAC C9 28 + beq DrawNumberSpriteQ_Loop ; CPU:$CAAE PRG:4AAE F0 08 + inx ; CPU:$CAB0 PRG:4AB0 E8 + cmp #$3C ; CPU:$CAB1 PRG:4AB1 C9 3C + beq DrawNumberSpriteQ_Loop ; CPU:$CAB3 PRG:4AB3 F0 03 + jmp DrawNumberSpriteR ; CPU:$CAB5 PRG:4AB5 4C D0 CA +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteQ_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteQ_Loop: + lda PlayerLeftInput ; CPU:$CAB8 PRG:4AB8 A5 75 + and #$0C ; CPU:$CABA PRG:4ABA 29 0C + beq DrawNumberSpriteR ; CPU:$CABC PRG:4ABC F0 12 + lsr a ; CPU:$CABE PRG:4ABE 4A + lsr a ; CPU:$CABF PRG:4ABF 4A + lsr a ; CPU:$CAC0 PRG:4AC0 4A + sta NumberToDisplay ; CPU:$CAC1 PRG:4AC1 85 45 + txa ; CPU:$CAC3 PRG:4AC3 8A + asl a ; CPU:$CAC4 PRG:4AC4 0A + clc ; CPU:$CAC5 PRG:4AC5 18 + adc NumberToDisplay ; CPU:$CAC6 PRG:4AC6 65 45 + tax ; CPU:$CAC8 PRG:4AC8 AA + lda PlayerSpeedTable,x ; CPU:$CAC9 PRG:4AC9 BD D5 CA + beq DrawNumberSpriteR ; CPU:$CACC PRG:4ACC F0 02 + sta CrowdFlagsA ; CPU:$CACE PRG:4ACE 85 50 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteR +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteR: + lda #$00 ; CPU:$CAD0 PRG:4AD0 A9 00 + sta Zp7F ; CPU:$CAD2 PRG:4AD2 85 7F + rts ; CPU:$CAD4 PRG:4AD4 60 +; ---- data $CAD5-$CAE0 (12 bytes) ---- +; Six 16-bit entries holding the per-player movement speeds. +PlayerSpeedTable: +; referenced by `lda $CAD5,x` at $CAC9 (operand $CAD5 falls inside this region) + .byte $14, $00, $28, $00, $3C, $00, $00, $05, $00, $0A, $00, $0F ; CPU:$CAD5 PRG:4AD5 14 00 28 00 3C 00 00 05 00 0A 00 0F +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteS +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteS: + lda PlayerCount ; CPU:$CAE1 PRG:4AE1 A5 2E + and #$F0 ; CPU:$CAE3 PRG:4AE3 29 F0 + beq DrawNumberSpriteS_Loop ; CPU:$CAE5 PRG:4AE5 F0 03 + jmp DrawNumberSpriteU ; CPU:$CAE7 PRG:4AE7 4C 4A CB +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteS_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteS_Loop: + lda Zp80 ; CPU:$CAEA PRG:4AEA A5 80 + bne DrawNumberSpriteS_Loop2 ; CPU:$CAEC PRG:4AEC D0 01 + rts ; CPU:$CAEE PRG:4AEE 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteS_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteS_Loop2: + lda PlayerRightInput ; CPU:$CAEF PRG:4AEF A5 76 + and #$F0 ; CPU:$CAF1 PRG:4AF1 29 F0 + beq DrawNumberSpriteS_Loop3 ; CPU:$CAF3 PRG:4AF3 F0 01 + rts ; CPU:$CAF5 PRG:4AF5 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteS_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteS_Loop3: + lda PlayerRightInput ; CPU:$CAF6 PRG:4AF6 A5 76 + bne DrawNumberSpriteS_Loop4 ; CPU:$CAF8 PRG:4AF8 D0 01 + rts ; CPU:$CAFA PRG:4AFA 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteS_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteS_Loop4: + lda TeamColorA ; CPU:$CAFB PRG:4AFB A5 58 + cmp #$80 ; CPU:$CAFD PRG:4AFD C9 80 + bcs DrawNumberSpriteS_Loop5 ; CPU:$CAFF PRG:4AFF B0 01 + rts ; CPU:$CB01 PRG:4B01 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteS_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteS_Loop5: + lda TeamColorB ; CPU:$CB02 PRG:4B02 A5 59 + sec ; CPU:$CB04 PRG:4B04 38 + sbc #$48 ; CPU:$CB05 PRG:4B05 E9 48 + cmp #$20 ; CPU:$CB07 PRG:4B07 C9 20 + bcc DrawNumberSpriteS_Loop6 ; CPU:$CB09 PRG:4B09 90 03 + jmp DrawNumberSpriteU ; CPU:$CB0B PRG:4B0B 4C 4A CB +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteS_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteS_Loop6: + ldx #$00 ; CPU:$CB0E PRG:4B0E A2 00 + lda CrowdFlagsB ; CPU:$CB10 PRG:4B10 A5 51 + cmp #$05 ; CPU:$CB12 PRG:4B12 C9 05 + beq DrawNumberSpriteS_Loop7 ; CPU:$CB14 PRG:4B14 F0 1C + inx ; CPU:$CB16 PRG:4B16 E8 + cmp #$0A ; CPU:$CB17 PRG:4B17 C9 0A + beq DrawNumberSpriteS_Loop7 ; CPU:$CB19 PRG:4B19 F0 17 + inx ; CPU:$CB1B PRG:4B1B E8 + cmp #$0F ; CPU:$CB1C PRG:4B1C C9 0F + beq DrawNumberSpriteS_Loop7 ; CPU:$CB1E PRG:4B1E F0 12 + inx ; CPU:$CB20 PRG:4B20 E8 + cmp #$14 ; CPU:$CB21 PRG:4B21 C9 14 + beq DrawNumberSpriteS_Loop7 ; CPU:$CB23 PRG:4B23 F0 0D + inx ; CPU:$CB25 PRG:4B25 E8 + cmp #$28 ; CPU:$CB26 PRG:4B26 C9 28 + beq DrawNumberSpriteS_Loop7 ; CPU:$CB28 PRG:4B28 F0 08 + inx ; CPU:$CB2A PRG:4B2A E8 + cmp #$3C ; CPU:$CB2B PRG:4B2B C9 3C + beq DrawNumberSpriteS_Loop7 ; CPU:$CB2D PRG:4B2D F0 03 + jmp DrawNumberSpriteU ; CPU:$CB2F PRG:4B2F 4C 4A CB +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteS_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteS_Loop7: + lda PlayerRightInput ; CPU:$CB32 PRG:4B32 A5 76 + and #$0C ; CPU:$CB34 PRG:4B34 29 0C + beq DrawNumberSpriteU ; CPU:$CB36 PRG:4B36 F0 12 + lsr a ; CPU:$CB38 PRG:4B38 4A + lsr a ; CPU:$CB39 PRG:4B39 4A + lsr a ; CPU:$CB3A PRG:4B3A 4A + sta NumberToDisplay ; CPU:$CB3B PRG:4B3B 85 45 + txa ; CPU:$CB3D PRG:4B3D 8A + asl a ; CPU:$CB3E PRG:4B3E 0A + clc ; CPU:$CB3F PRG:4B3F 18 + adc NumberToDisplay ; CPU:$CB40 PRG:4B40 65 45 + tax ; CPU:$CB42 PRG:4B42 AA + lda PlayerSpeedTableCopy,x ; CPU:$CB43 PRG:4B43 BD 4F CB + beq DrawNumberSpriteU ; CPU:$CB46 PRG:4B46 F0 02 + sta CrowdFlagsB ; CPU:$CB48 PRG:4B48 85 51 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteU +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteU: + lda #$00 ; CPU:$CB4A PRG:4B4A A9 00 + sta Zp80 ; CPU:$CB4C PRG:4B4C 85 80 + rts ; CPU:$CB4E PRG:4B4E 60 +; ---- data $CB4F-$CB5A (12 bytes) ---- +; A second copy of PlayerSpeedTable, used by the other side of the court. +PlayerSpeedTableCopy: +; referenced by `lda $CB4F,x` at $CB43 (operand $CB4F falls inside this region) + .byte $14, $00, $28, $00, $3C, $00, $00, $05, $00, $0A, $00, $0F ; CPU:$CB4F PRG:4B4F 14 00 28 00 3C 00 00 05 00 0A 00 0F +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteV +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteV: + ldx #$00 ; CPU:$CB5B PRG:4B5B A2 00 + ldy #$00 ; CPU:$CB5D PRG:4B5D A0 00 + lda CrowdFlagsA ; CPU:$CB5F PRG:4B5F A5 50 + sta NumberToDisplay ; CPU:$CB61 PRG:4B61 85 45 +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteFlag: + lda $0516,y ; CPU:$CB63 PRG:4B63 B9 16 05 + and #$01 ; CPU:$CB66 PRG:4B66 29 01 + bne CheckTeamSpriteFlag_Loop ; CPU:$CB68 PRG:4B68 D0 04 + lsr NumberToDisplay ; CPU:$CB6A PRG:4B6A 46 45 + bcs CheckTeamSpriteFlag_Loop2 ; CPU:$CB6C PRG:4B6C B0 0C +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteFlag_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteFlag_Loop: + lda $DAFD,x ; CPU:$CB6E PRG:4B6E BD FD DA + sta BallTargetPositionX,y ; CPU:$CB71 PRG:4B71 99 11 05 + lda $DAFE,x ; CPU:$CB74 PRG:4B74 BD FE DA + sta BallTargetPositionY,y ; CPU:$CB77 PRG:4B77 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteFlag_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteFlag_Loop2: + inx ; CPU:$CB7A PRG:4B7A E8 + inx ; CPU:$CB7B PRG:4B7B E8 + cpx #$0C ; CPU:$CB7C PRG:4B7C E0 0C + beq CheckTeamSpriteFlag_Loop3 ; CPU:$CB7E PRG:4B7E F0 08 + tya ; CPU:$CB80 PRG:4B80 98 + clc ; CPU:$CB81 PRG:4B81 18 + adc #$08 ; CPU:$CB82 PRG:4B82 69 08 + tay ; CPU:$CB84 PRG:4B84 A8 + jmp CheckTeamSpriteFlag ; CPU:$CB85 PRG:4B85 4C 63 CB +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteFlag_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteFlag_Loop3: + rts ; CPU:$CB88 PRG:4B88 60 +; ----------------------------------------------------------------------------- +; Routine: ClearTeamSpriteFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearTeamSpriteFlags: + ldx #$00 ; CPU:$CB89 PRG:4B89 A2 00 + ldy #$00 ; CPU:$CB8B PRG:4B8B A0 00 + lda CrowdFlagsB ; CPU:$CB8D PRG:4B8D A5 51 + sta NumberToDisplay ; CPU:$CB8F PRG:4B8F 85 45 +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteFlagB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteFlagB: + lda $0546,y ; CPU:$CB91 PRG:4B91 B9 46 05 + and #$01 ; CPU:$CB94 PRG:4B94 29 01 + bne CheckTeamSpriteFlagB_Loop ; CPU:$CB96 PRG:4B96 D0 04 + lsr NumberToDisplay ; CPU:$CB98 PRG:4B98 46 45 + bcs CheckTeamSpriteFlagB_Loop2 ; CPU:$CB9A PRG:4B9A B0 0C +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteFlagB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteFlagB_Loop: + lda $DB2D,x ; CPU:$CB9C PRG:4B9C BD 2D DB + sta $0541,y ; CPU:$CB9F PRG:4B9F 99 41 05 + lda $DB2E,x ; CPU:$CBA2 PRG:4BA2 BD 2E DB + sta $0542,y ; CPU:$CBA5 PRG:4BA5 99 42 05 +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteFlagB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteFlagB_Loop2: + inx ; CPU:$CBA8 PRG:4BA8 E8 + inx ; CPU:$CBA9 PRG:4BA9 E8 + cpx #$0C ; CPU:$CBAA PRG:4BAA E0 0C + beq CheckTeamSpriteFlagB_Loop3 ; CPU:$CBAC PRG:4BAC F0 08 + tya ; CPU:$CBAE PRG:4BAE 98 + clc ; CPU:$CBAF PRG:4BAF 18 + adc #$08 ; CPU:$CBB0 PRG:4BB0 69 08 + tay ; CPU:$CBB2 PRG:4BB2 A8 + jmp CheckTeamSpriteFlagB ; CPU:$CBB3 PRG:4BB3 4C 91 CB +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteFlagB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteFlagB_Loop3: + rts ; CPU:$CBB6 PRG:4BB6 60 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberState: + lda #$00 ; CPU:$CBB7 PRG:4BB7 A9 00 + sta NumberToDisplay ; CPU:$CBB9 PRG:4BB9 85 45 + sta SpriteOffsetIndex ; CPU:$CBBB PRG:4BBB 85 46 + lda PlayerLeftInput ; CPU:$CBBD PRG:4BBD A5 75 + and #$01 ; CPU:$CBBF PRG:4BBF 29 01 + beq ClearNumberState_Loop ; CPU:$CBC1 PRG:4BC1 F0 04 + lda #$02 ; CPU:$CBC3 PRG:4BC3 A9 02 + sta NumberToDisplay ; CPU:$CBC5 PRG:4BC5 85 45 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberState_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberState_Loop: + lda PlayerLeftInput ; CPU:$CBC7 PRG:4BC7 A5 75 + and #$02 ; CPU:$CBC9 PRG:4BC9 29 02 + beq ClearNumberState_Loop2 ; CPU:$CBCB PRG:4BCB F0 04 + lda #$FE ; CPU:$CBCD PRG:4BCD A9 FE + sta NumberToDisplay ; CPU:$CBCF PRG:4BCF 85 45 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberState_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberState_Loop2: + lda PlayerLeftInput ; CPU:$CBD1 PRG:4BD1 A5 75 + and #$04 ; CPU:$CBD3 PRG:4BD3 29 04 + beq ClearNumberState_Loop3 ; CPU:$CBD5 PRG:4BD5 F0 04 + lda #$02 ; CPU:$CBD7 PRG:4BD7 A9 02 + sta SpriteOffsetIndex ; CPU:$CBD9 PRG:4BD9 85 46 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberState_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberState_Loop3: + lda PlayerLeftInput ; CPU:$CBDB PRG:4BDB A5 75 + and #$08 ; CPU:$CBDD PRG:4BDD 29 08 + beq ClearNumberState_Loop4 ; CPU:$CBDF PRG:4BDF F0 04 + lda #$FE ; CPU:$CBE1 PRG:4BE1 A9 FE + sta SpriteOffsetIndex ; CPU:$CBE3 PRG:4BE3 85 46 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberState_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberState_Loop4: + lda CrowdFlagsA ; CPU:$CBE5 PRG:4BE5 A5 50 + sta ColorIndex ; CPU:$CBE7 PRG:4BE7 85 47 + lda #$00 ; CPU:$CBE9 PRG:4BE9 A9 00 + sta TableIndex ; CPU:$CBEB PRG:4BEB 85 4E + ldx #$00 ; CPU:$CBED PRG:4BED A2 00 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexB: + lda TableIndex ; CPU:$CBEF PRG:4BEF A5 4E + asl a ; CPU:$CBF1 PRG:4BF1 0A + asl a ; CPU:$CBF2 PRG:4BF2 0A + asl a ; CPU:$CBF3 PRG:4BF3 0A + tay ; CPU:$CBF4 PRG:4BF4 A8 + lsr ColorIndex ; CPU:$CBF5 PRG:4BF5 46 47 + bcc GetTileIndexB_Loop2 ; CPU:$CBF7 PRG:4BF7 90 2D + lda ScoreRecord,y ; CPU:$CBF9 PRG:4BF9 B9 13 05 + and #$18 ; CPU:$CBFC PRG:4BFC 29 18 + bne GetTileIndexB_Loop2 ; CPU:$CBFE PRG:4BFE D0 26 + clc ; CPU:$CC00 PRG:4C00 18 + lda BallTargetPositionX,y ; CPU:$CC01 PRG:4C01 B9 11 05 + adc NumberToDisplay ; CPU:$CC04 PRG:4C04 65 45 + cmp $F368,x ; CPU:$CC06 PRG:4C06 DD 68 F3 + bcc GetTileIndexB_Loop ; CPU:$CC09 PRG:4C09 90 08 + cmp $F369,x ; CPU:$CC0B PRG:4C0B DD 69 F3 + bcs GetTileIndexB_Loop ; CPU:$CC0E PRG:4C0E B0 03 + sta BallTargetPositionX,y ; CPU:$CC10 PRG:4C10 99 11 05 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexB_Loop: + clc ; CPU:$CC13 PRG:4C13 18 + lda BallTargetPositionY,y ; CPU:$CC14 PRG:4C14 B9 12 05 + adc SpriteOffsetIndex ; CPU:$CC17 PRG:4C17 65 46 + cmp $F36A,x ; CPU:$CC19 PRG:4C19 DD 6A F3 + bcc GetTileIndexB_Loop2 ; CPU:$CC1C PRG:4C1C 90 08 + cmp $F36B,x ; CPU:$CC1E PRG:4C1E DD 6B F3 + bcs GetTileIndexB_Loop2 ; CPU:$CC21 PRG:4C21 B0 03 + sta BallTargetPositionY,y ; CPU:$CC23 PRG:4C23 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexB_Loop2: + lda TableIndex ; CPU:$CC26 PRG:4C26 A5 4E + cmp #$05 ; CPU:$CC28 PRG:4C28 C9 05 + beq GetTileIndexB_Loop3 ; CPU:$CC2A PRG:4C2A F0 0A + inc TableIndex ; CPU:$CC2C PRG:4C2C E6 4E + txa ; CPU:$CC2E PRG:4C2E 8A + clc ; CPU:$CC2F PRG:4C2F 18 + adc #$04 ; CPU:$CC30 PRG:4C30 69 04 + tax ; CPU:$CC32 PRG:4C32 AA + jmp GetTileIndexB ; CPU:$CC33 PRG:4C33 4C EF CB +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexB_Loop3: + rts ; CPU:$CC36 PRG:4C36 60 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberStateB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberStateB: + lda #$00 ; CPU:$CC37 PRG:4C37 A9 00 + sta NumberToDisplay ; CPU:$CC39 PRG:4C39 85 45 + sta SpriteOffsetIndex ; CPU:$CC3B PRG:4C3B 85 46 + lda PlayerRightInput ; CPU:$CC3D PRG:4C3D A5 76 + and #$01 ; CPU:$CC3F PRG:4C3F 29 01 + beq ClearNumberStateB_Loop ; CPU:$CC41 PRG:4C41 F0 04 + lda #$02 ; CPU:$CC43 PRG:4C43 A9 02 + sta NumberToDisplay ; CPU:$CC45 PRG:4C45 85 45 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberStateB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberStateB_Loop: + lda PlayerRightInput ; CPU:$CC47 PRG:4C47 A5 76 + and #$02 ; CPU:$CC49 PRG:4C49 29 02 + beq ClearNumberStateB_Loop2 ; CPU:$CC4B PRG:4C4B F0 04 + lda #$FE ; CPU:$CC4D PRG:4C4D A9 FE + sta NumberToDisplay ; CPU:$CC4F PRG:4C4F 85 45 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberStateB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberStateB_Loop2: + lda PlayerRightInput ; CPU:$CC51 PRG:4C51 A5 76 + and #$04 ; CPU:$CC53 PRG:4C53 29 04 + beq ClearNumberStateB_Loop3 ; CPU:$CC55 PRG:4C55 F0 04 + lda #$02 ; CPU:$CC57 PRG:4C57 A9 02 + sta SpriteOffsetIndex ; CPU:$CC59 PRG:4C59 85 46 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberStateB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberStateB_Loop3: + lda PlayerRightInput ; CPU:$CC5B PRG:4C5B A5 76 + and #$08 ; CPU:$CC5D PRG:4C5D 29 08 + beq ClearNumberStateB_Loop4 ; CPU:$CC5F PRG:4C5F F0 04 + lda #$FE ; CPU:$CC61 PRG:4C61 A9 FE + sta SpriteOffsetIndex ; CPU:$CC63 PRG:4C63 85 46 +; ----------------------------------------------------------------------------- +; Routine: ClearNumberStateB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearNumberStateB_Loop4: + lda CrowdFlagsB ; CPU:$CC65 PRG:4C65 A5 51 + sta ColorIndex ; CPU:$CC67 PRG:4C67 85 47 + lda #$06 ; CPU:$CC69 PRG:4C69 A9 06 + sta TableIndex ; CPU:$CC6B PRG:4C6B 85 4E + ldx #$18 ; CPU:$CC6D PRG:4C6D A2 18 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexC: + lda TableIndex ; CPU:$CC6F PRG:4C6F A5 4E + asl a ; CPU:$CC71 PRG:4C71 0A + asl a ; CPU:$CC72 PRG:4C72 0A + asl a ; CPU:$CC73 PRG:4C73 0A + tay ; CPU:$CC74 PRG:4C74 A8 + lsr ColorIndex ; CPU:$CC75 PRG:4C75 46 47 + bcc GetTileIndexC_Loop2 ; CPU:$CC77 PRG:4C77 90 2D + lda ScoreRecord,y ; CPU:$CC79 PRG:4C79 B9 13 05 + and #$18 ; CPU:$CC7C PRG:4C7C 29 18 + bne GetTileIndexC_Loop2 ; CPU:$CC7E PRG:4C7E D0 26 + clc ; CPU:$CC80 PRG:4C80 18 + lda BallTargetPositionX,y ; CPU:$CC81 PRG:4C81 B9 11 05 + adc NumberToDisplay ; CPU:$CC84 PRG:4C84 65 45 + cmp $F368,x ; CPU:$CC86 PRG:4C86 DD 68 F3 + bcc GetTileIndexC_Loop ; CPU:$CC89 PRG:4C89 90 08 + cmp $F369,x ; CPU:$CC8B PRG:4C8B DD 69 F3 + bcs GetTileIndexC_Loop ; CPU:$CC8E PRG:4C8E B0 03 + sta BallTargetPositionX,y ; CPU:$CC90 PRG:4C90 99 11 05 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexC_Loop: + clc ; CPU:$CC93 PRG:4C93 18 + lda BallTargetPositionY,y ; CPU:$CC94 PRG:4C94 B9 12 05 + adc SpriteOffsetIndex ; CPU:$CC97 PRG:4C97 65 46 + cmp $F36A,x ; CPU:$CC99 PRG:4C99 DD 6A F3 + bcc GetTileIndexC_Loop2 ; CPU:$CC9C PRG:4C9C 90 08 + cmp $F36B,x ; CPU:$CC9E PRG:4C9E DD 6B F3 + bcs GetTileIndexC_Loop2 ; CPU:$CCA1 PRG:4CA1 B0 03 + sta BallTargetPositionY,y ; CPU:$CCA3 PRG:4CA3 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexC_Loop2: + lda TableIndex ; CPU:$CCA6 PRG:4CA6 A5 4E + cmp #$0B ; CPU:$CCA8 PRG:4CA8 C9 0B + beq GetTileIndexC_Loop3 ; CPU:$CCAA PRG:4CAA F0 0A + inc TableIndex ; CPU:$CCAC PRG:4CAC E6 4E + txa ; CPU:$CCAE PRG:4CAE 8A + clc ; CPU:$CCAF PRG:4CAF 18 + adc #$04 ; CPU:$CCB0 PRG:4CB0 69 04 + tax ; CPU:$CCB2 PRG:4CB2 AA + jmp GetTileIndexC ; CPU:$CCB3 PRG:4CB3 4C 6F CC +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexC_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexC_Loop3: + rts ; CPU:$CCB6 PRG:4CB6 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteZ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteZ: + lda FrameCounter ; CPU:$CCB7 PRG:4CB7 A5 2D + and #$03 ; CPU:$CCB9 PRG:4CB9 29 03 + cmp #$03 ; CPU:$CCBB PRG:4CBB C9 03 + beq DrawNumberSpriteZ_Loop ; CPU:$CCBD PRG:4CBD F0 03 + jmp NextTeamSprite_Loop ; CPU:$CCBF PRG:4CBF 4C 77 CD +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteZ_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteZ_Loop: + lda #$00 ; CPU:$CCC2 PRG:4CC2 A9 00 + sta TableIndex ; CPU:$CCC4 PRG:4CC4 85 4E +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexD: + lda TableIndex ; CPU:$CCC6 PRG:4CC6 A5 4E + asl a ; CPU:$CCC8 PRG:4CC8 0A + asl a ; CPU:$CCC9 PRG:4CC9 0A + asl a ; CPU:$CCCA PRG:4CCA 0A + tay ; CPU:$CCCB PRG:4CCB A8 + cpy #$30 ; CPU:$CCCC PRG:4CCC C0 30 + bcs GetTileIndexD_Loop ; CPU:$CCCE PRG:4CCE B0 0E + lda ScoreRecord,y ; CPU:$CCD0 PRG:4CD0 B9 13 05 + cmp #$12 ; CPU:$CCD3 PRG:4CD3 C9 12 + beq GetTileIndexD_Loop2 ; CPU:$CCD5 PRG:4CD5 F0 15 + cmp #$16 ; CPU:$CCD7 PRG:4CD7 C9 16 + beq GetTileIndexD_Loop5 ; CPU:$CCD9 PRG:4CD9 F0 32 + jmp CheckTeamSpriteIndex ; CPU:$CCDB PRG:4CDB 4C 2E CD +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexD_Loop: + lda ScoreRecord,y ; CPU:$CCDE PRG:4CDE B9 13 05 + cmp #$32 ; CPU:$CCE1 PRG:4CE1 C9 32 + beq GetTileIndexD_Loop5 ; CPU:$CCE3 PRG:4CE3 F0 28 + cmp #$36 ; CPU:$CCE5 PRG:4CE5 C9 36 + beq GetTileIndexD_Loop2 ; CPU:$CCE7 PRG:4CE7 F0 03 + jmp CheckTeamSpriteIndex ; CPU:$CCE9 PRG:4CE9 4C 2E CD +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexD_Loop2: + lda BallTargetPositionX,y ; CPU:$CCEC PRG:4CEC B9 11 05 + sec ; CPU:$CCEF PRG:4CEF 38 + sbc #$02 ; CPU:$CCF0 PRG:4CF0 E9 02 + bcs GetTileIndexD_Loop3 ; CPU:$CCF2 PRG:4CF2 B0 03 + jmp CheckTeamSpriteIndex ; CPU:$CCF4 PRG:4CF4 4C 2E CD +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexD_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexD_Loop3: + cmp #$02 ; CPU:$CCF7 PRG:4CF7 C9 02 + bcs GetTileIndexD_Loop4 ; CPU:$CCF9 PRG:4CF9 B0 03 + jmp CheckTeamSpriteIndex ; CPU:$CCFB PRG:4CFB 4C 2E CD +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexD_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexD_Loop4: + sta BallTargetPositionX,y ; CPU:$CCFE PRG:4CFE 99 11 05 + lda BallPositionX,y ; CPU:$CD01 PRG:4D01 B9 0F 05 + sec ; CPU:$CD04 PRG:4D04 38 + sbc #$02 ; CPU:$CD05 PRG:4D05 E9 02 + sta BallPositionX,y ; CPU:$CD07 PRG:4D07 99 0F 05 + jmp CheckTeamSpriteIndex ; CPU:$CD0A PRG:4D0A 4C 2E CD +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexD_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexD_Loop5: + lda BallTargetPositionX,y ; CPU:$CD0D PRG:4D0D B9 11 05 + clc ; CPU:$CD10 PRG:4D10 18 + adc #$02 ; CPU:$CD11 PRG:4D11 69 02 + bcs GetTileIndexD_Loop6 ; CPU:$CD13 PRG:4D13 B0 03 + jmp CheckTeamSpriteIndex ; CPU:$CD15 PRG:4D15 4C 2E CD +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexD_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexD_Loop6: + cmp #$FE ; CPU:$CD18 PRG:4D18 C9 FE + bcc GetTileIndexD_Loop7 ; CPU:$CD1A PRG:4D1A 90 03 + jmp CheckTeamSpriteIndex ; CPU:$CD1C PRG:4D1C 4C 2E CD +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexD_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexD_Loop7: + sta BallTargetPositionX,y ; CPU:$CD1F PRG:4D1F 99 11 05 + lda BallPositionX,y ; CPU:$CD22 PRG:4D22 B9 0F 05 + clc ; CPU:$CD25 PRG:4D25 18 + adc #$02 ; CPU:$CD26 PRG:4D26 69 02 + sta BallPositionX,y ; CPU:$CD28 PRG:4D28 99 0F 05 + jmp CheckTeamSpriteIndex ; CPU:$CD2B PRG:4D2B 4C 2E CD +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteIndex: + lda $0514,y ; CPU:$CD2E PRG:4D2E B9 14 05 + cmp #$0F ; CPU:$CD31 PRG:4D31 C9 0F + beq CheckTeamSpriteIndex_Loop ; CPU:$CD33 PRG:4D33 F0 0C + lda $0514,y ; CPU:$CD35 PRG:4D35 B9 14 05 + clc ; CPU:$CD38 PRG:4D38 18 + adc #$01 ; CPU:$CD39 PRG:4D39 69 01 + sta $0514,y ; CPU:$CD3B PRG:4D3B 99 14 05 + jmp NextTeamSprite ; CPU:$CD3E PRG:4D3E 4C 6C CD +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteIndex_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteIndex_Loop: + lda #$00 ; CPU:$CD41 PRG:4D41 A9 00 + sta $0514,y ; CPU:$CD43 PRG:4D43 99 14 05 + ldx ScoreRecord,y ; CPU:$CD46 PRG:4D46 BE 13 05 + cpx #$12 ; CPU:$CD49 PRG:4D49 E0 12 + beq CheckTeamSpriteIndex_Loop2 ; CPU:$CD4B PRG:4D4B F0 07 + cpx #$32 ; CPU:$CD4D PRG:4D4D E0 32 + beq CheckTeamSpriteIndex_Loop3 ; CPU:$CD4F PRG:4D4F F0 0C + jmp LoadTeamSpriteData ; CPU:$CD51 PRG:4D51 4C 66 CD +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteIndex_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteIndex_Loop2: + lda BallTargetPositionX,y ; CPU:$CD54 PRG:4D54 B9 11 05 + clc ; CPU:$CD57 PRG:4D57 18 + adc #$20 ; CPU:$CD58 PRG:4D58 69 20 + jmp StoreTeamSpriteY ; CPU:$CD5A PRG:4D5A 4C 63 CD +; ----------------------------------------------------------------------------- +; Routine: CheckTeamSpriteIndex_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckTeamSpriteIndex_Loop3: + lda BallTargetPositionX,y ; CPU:$CD5D PRG:4D5D B9 11 05 + sec ; CPU:$CD60 PRG:4D60 38 + sbc #$20 ; CPU:$CD61 PRG:4D61 E9 20 +; ----------------------------------------------------------------------------- +; Routine: StoreTeamSpriteY +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreTeamSpriteY: + sta BallTargetPositionX,y ; CPU:$CD63 PRG:4D63 99 11 05 +; ----------------------------------------------------------------------------- +; Routine: LoadTeamSpriteData +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadTeamSpriteData: + lda NationCodeTable,x ; CPU:$CD66 PRG:4D66 BD 78 CD + sta ScoreRecord,y ; CPU:$CD69 PRG:4D69 99 13 05 +; ----------------------------------------------------------------------------- +; Routine: NextTeamSprite +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextTeamSprite: + lda TableIndex ; CPU:$CD6C PRG:4D6C A5 4E + cmp #$0B ; CPU:$CD6E PRG:4D6E C9 0B + beq NextTeamSprite_Loop ; CPU:$CD70 PRG:4D70 F0 05 + inc TableIndex ; CPU:$CD72 PRG:4D72 E6 4E + jmp GetTileIndexD ; CPU:$CD74 PRG:4D74 4C C6 CC +; ----------------------------------------------------------------------------- +; Routine: NextTeamSprite_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextTeamSprite_Loop: + rts ; CPU:$CD77 PRG:4D77 60 +; ---- data $CD78-$CDB7 (64 bytes) ---- +; Ten entries: the sprite/flag code of each of the ten selectable nations +; (USA, URS, CHN, CUB, JPN, BRA, KOR, TUN, YOU, COM). +NationCodeTable: +; referenced by `lda $CD78,x` at $CD66 (operand $CD78 falls inside this region) + .byte $00, $01, $02, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$CD78 PRG:4D78 00 01 02 03 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $17, $00, $18, $19, $1A, $1B, $00, $00, $00, $00 ; CPU:$CD88 PRG:4D88 00 00 00 00 00 00 17 00 18 19 1A 1B 00 00 00 00 + .byte $20, $21, $22, $23, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20 ; CPU:$CD98 PRG:4D98 20 21 22 23 20 20 20 20 20 20 20 20 20 20 20 20 + .byte $20, $20, $20, $20, $20, $20, $37, $20, $38, $39, $3A, $3B, $20, $20, $20, $20 ; CPU:$CDA8 PRG:4DA8 20 20 20 20 20 20 37 20 38 39 3A 3B 20 20 20 20 +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateFlag: + lda FrameCounter ; CPU:$CDB8 PRG:4DB8 A5 2D + and #$20 ; CPU:$CDBA PRG:4DBA 29 20 + bne CheckAnimateFlag_Loop ; CPU:$CDBC PRG:4DBC D0 01 + rts ; CPU:$CDBE PRG:4DBE 60 +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateFlag_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateFlag_Loop: + lda BallX ; CPU:$CDBF PRG:4DBF AD 00 05 + clc ; CPU:$CDC2 PRG:4DC2 18 + adc #$80 ; CPU:$CDC3 PRG:4DC3 69 80 + sta NumberToDisplay ; CPU:$CDC5 PRG:4DC5 85 45 + lda BallY ; CPU:$CDC7 PRG:4DC7 AD 01 05 + sta SpriteOffsetIndex ; CPU:$CDCA PRG:4DCA 85 46 + ldy #$05 ; CPU:$CDCC PRG:4DCC A0 05 +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateFlag_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateFlag_OnNonnegative: + tya ; CPU:$CDCE PRG:4DCE 98 + asl a ; CPU:$CDCF PRG:4DCF 0A + asl a ; CPU:$CDD0 PRG:4DD0 0A + asl a ; CPU:$CDD1 PRG:4DD1 0A + tax ; CPU:$CDD2 PRG:4DD2 AA + lda ScoreRecord,x ; CPU:$CDD3 PRG:4DD3 BD 13 05 + and #$18 ; CPU:$CDD6 PRG:4DD6 29 18 + beq CheckAnimateFlag_Loop2 ; CPU:$CDD8 PRG:4DD8 F0 03 + jmp NextSpriteRow ; CPU:$CDDA PRG:4DDA 4C 2E CE +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateFlag_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateFlag_Loop2: + lda BallPositionX,x ; CPU:$CDDD PRG:4DDD BD 0F 05 + clc ; CPU:$CDE0 PRG:4DE0 18 + adc #$80 ; CPU:$CDE1 PRG:4DE1 69 80 + sta DrawPointerHi ; CPU:$CDE3 PRG:4DE3 85 49 + lda NumberToDisplay ; CPU:$CDE5 PRG:4DE5 A5 45 + sec ; CPU:$CDE7 PRG:4DE7 38 + sbc DrawPointerHi ; CPU:$CDE8 PRG:4DE8 E5 49 + bcs CheckAnimateFlag_Loop3 ; CPU:$CDEA PRG:4DEA B0 05 + eor #$FF ; CPU:$CDEC PRG:4DEC 49 FF + clc ; CPU:$CDEE PRG:4DEE 18 + adc #$01 ; CPU:$CDEF PRG:4DEF 69 01 +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateFlag_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateFlag_Loop3: + sta ColorIndex ; CPU:$CDF1 PRG:4DF1 85 47 + lda SpriteOffsetIndex ; CPU:$CDF3 PRG:4DF3 A5 46 + sec ; CPU:$CDF5 PRG:4DF5 38 + sbc BallPositionY,x ; CPU:$CDF6 PRG:4DF6 FD 10 05 + bcs CheckAnimateFlag_Loop4 ; CPU:$CDF9 PRG:4DF9 B0 05 + eor #$FF ; CPU:$CDFB PRG:4DFB 49 FF + clc ; CPU:$CDFD PRG:4DFD 18 + adc #$01 ; CPU:$CDFE PRG:4DFE 69 01 +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateFlag_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateFlag_Loop4: + sta DrawPointerLo ; CPU:$CE00 PRG:4E00 85 48 + sec ; CPU:$CE02 PRG:4E02 38 + lda ColorIndex ; CPU:$CE03 PRG:4E03 A5 47 + sbc DrawPointerLo ; CPU:$CE05 PRG:4E05 E5 48 + bcc CheckAnimateFlag_Loop6 ; CPU:$CE07 PRG:4E07 90 14 + cmp #$03 ; CPU:$CE09 PRG:4E09 C9 03 + bcc CheckAnimateFlag_Loop6 ; CPU:$CE0B PRG:4E0B 90 10 + lda NumberToDisplay ; CPU:$CE0D PRG:4E0D A5 45 + cmp DrawPointerHi ; CPU:$CE0F PRG:4E0F C5 49 + bcc CheckAnimateFlag_Loop5 ; CPU:$CE11 PRG:4E11 90 05 + lda #$03 ; CPU:$CE13 PRG:4E13 A9 03 + jmp StoreSpriteValue ; CPU:$CE15 PRG:4E15 4C 2B CE +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateFlag_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateFlag_Loop5: + lda #$00 ; CPU:$CE18 PRG:4E18 A9 00 + jmp StoreSpriteValue ; CPU:$CE1A PRG:4E1A 4C 2B CE +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateFlag_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateFlag_Loop6: + lda SpriteOffsetIndex ; CPU:$CE1D PRG:4E1D A5 46 + cmp BallPositionY,x ; CPU:$CE1F PRG:4E1F DD 10 05 + bcc CheckAnimateFlag_Loop7 ; CPU:$CE22 PRG:4E22 90 05 + lda #$02 ; CPU:$CE24 PRG:4E24 A9 02 + jmp StoreSpriteValue ; CPU:$CE26 PRG:4E26 4C 2B CE +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateFlag_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateFlag_Loop7: + lda #$01 ; CPU:$CE29 PRG:4E29 A9 01 +; ----------------------------------------------------------------------------- +; Routine: StoreSpriteValue +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreSpriteValue: + sta ScoreRecord,x ; CPU:$CE2B PRG:4E2B 9D 13 05 +; ----------------------------------------------------------------------------- +; Routine: NextSpriteRow +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextSpriteRow: + dey ; CPU:$CE2E PRG:4E2E 88 + bpl CheckAnimateFlag_OnNonnegative ; CPU:$CE2F PRG:4E2F 10 9D + rts ; CPU:$CE31 PRG:4E31 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAA: + lda FrameCounter ; CPU:$CE32 PRG:4E32 A5 2D + and #$20 ; CPU:$CE34 PRG:4E34 29 20 + bne DrawNumberSpriteAA_Loop ; CPU:$CE36 PRG:4E36 D0 01 + rts ; CPU:$CE38 PRG:4E38 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAA_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAA_Loop: + lda BallX ; CPU:$CE39 PRG:4E39 AD 00 05 + clc ; CPU:$CE3C PRG:4E3C 18 + adc #$80 ; CPU:$CE3D PRG:4E3D 69 80 + sta NumberToDisplay ; CPU:$CE3F PRG:4E3F 85 45 + lda BallY ; CPU:$CE41 PRG:4E41 AD 01 05 + sta SpriteOffsetIndex ; CPU:$CE44 PRG:4E44 85 46 + ldy #$0B ; CPU:$CE46 PRG:4E46 A0 0B +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAA_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAA_OnNonzero: + tya ; CPU:$CE48 PRG:4E48 98 + asl a ; CPU:$CE49 PRG:4E49 0A + asl a ; CPU:$CE4A PRG:4E4A 0A + asl a ; CPU:$CE4B PRG:4E4B 0A + tax ; CPU:$CE4C PRG:4E4C AA + lda ScoreRecord,x ; CPU:$CE4D PRG:4E4D BD 13 05 + and #$18 ; CPU:$CE50 PRG:4E50 29 18 + beq DrawNumberSpriteAA_Loop2 ; CPU:$CE52 PRG:4E52 F0 03 + jmp NextSpriteRowB ; CPU:$CE54 PRG:4E54 4C A8 CE +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAA_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAA_Loop2: + lda BallPositionX,x ; CPU:$CE57 PRG:4E57 BD 0F 05 + clc ; CPU:$CE5A PRG:4E5A 18 + adc #$80 ; CPU:$CE5B PRG:4E5B 69 80 + sta DrawPointerHi ; CPU:$CE5D PRG:4E5D 85 49 + lda NumberToDisplay ; CPU:$CE5F PRG:4E5F A5 45 + sec ; CPU:$CE61 PRG:4E61 38 + sbc DrawPointerHi ; CPU:$CE62 PRG:4E62 E5 49 + bcs DrawNumberSpriteAA_Loop3 ; CPU:$CE64 PRG:4E64 B0 05 + eor #$FF ; CPU:$CE66 PRG:4E66 49 FF + clc ; CPU:$CE68 PRG:4E68 18 + adc #$01 ; CPU:$CE69 PRG:4E69 69 01 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAA_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAA_Loop3: + sta ColorIndex ; CPU:$CE6B PRG:4E6B 85 47 + lda SpriteOffsetIndex ; CPU:$CE6D PRG:4E6D A5 46 + sec ; CPU:$CE6F PRG:4E6F 38 + sbc BallPositionY,x ; CPU:$CE70 PRG:4E70 FD 10 05 + bcs DrawNumberSpriteAA_Loop4 ; CPU:$CE73 PRG:4E73 B0 05 + eor #$FF ; CPU:$CE75 PRG:4E75 49 FF + clc ; CPU:$CE77 PRG:4E77 18 + adc #$01 ; CPU:$CE78 PRG:4E78 69 01 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAA_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAA_Loop4: + sta DrawPointerLo ; CPU:$CE7A PRG:4E7A 85 48 + sec ; CPU:$CE7C PRG:4E7C 38 + lda ColorIndex ; CPU:$CE7D PRG:4E7D A5 47 + sbc DrawPointerLo ; CPU:$CE7F PRG:4E7F E5 48 + bcc DrawNumberSpriteAA_Loop6 ; CPU:$CE81 PRG:4E81 90 14 + cmp #$03 ; CPU:$CE83 PRG:4E83 C9 03 + bcc DrawNumberSpriteAA_Loop6 ; CPU:$CE85 PRG:4E85 90 10 + lda NumberToDisplay ; CPU:$CE87 PRG:4E87 A5 45 + cmp DrawPointerHi ; CPU:$CE89 PRG:4E89 C5 49 + bcc DrawNumberSpriteAA_Loop5 ; CPU:$CE8B PRG:4E8B 90 05 + lda #$20 ; CPU:$CE8D PRG:4E8D A9 20 + jmp StoreSpriteValueB ; CPU:$CE8F PRG:4E8F 4C A5 CE +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAA_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAA_Loop5: + lda #$23 ; CPU:$CE92 PRG:4E92 A9 23 + jmp StoreSpriteValueB ; CPU:$CE94 PRG:4E94 4C A5 CE +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAA_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAA_Loop6: + lda SpriteOffsetIndex ; CPU:$CE97 PRG:4E97 A5 46 + cmp BallPositionY,x ; CPU:$CE99 PRG:4E99 DD 10 05 + bcc DrawNumberSpriteAA_Loop7 ; CPU:$CE9C PRG:4E9C 90 05 + lda #$22 ; CPU:$CE9E PRG:4E9E A9 22 + jmp StoreSpriteValueB ; CPU:$CEA0 PRG:4EA0 4C A5 CE +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAA_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAA_Loop7: + lda #$21 ; CPU:$CEA3 PRG:4EA3 A9 21 +; ----------------------------------------------------------------------------- +; Routine: StoreSpriteValueB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreSpriteValueB: + sta ScoreRecord,x ; CPU:$CEA5 PRG:4EA5 9D 13 05 +; ----------------------------------------------------------------------------- +; Routine: NextSpriteRowB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextSpriteRowB: + dey ; CPU:$CEA8 PRG:4EA8 88 + cpy #$05 ; CPU:$CEA9 PRG:4EA9 C0 05 + bne DrawNumberSpriteAA_OnNonzero ; CPU:$CEAB PRG:4EAB D0 9B + rts ; CPU:$CEAD PRG:4EAD 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAB: + lda TeamColorA ; CPU:$CEAE PRG:4EAE A5 58 + and #$FE ; CPU:$CEB0 PRG:4EB0 29 FE + clc ; CPU:$CEB2 PRG:4EB2 18 + adc #$08 ; CPU:$CEB3 PRG:4EB3 69 08 + sta NumberToDisplay ; CPU:$CEB5 PRG:4EB5 85 45 + lda TeamColorB ; CPU:$CEB7 PRG:4EB7 A5 59 + and #$FE ; CPU:$CEB9 PRG:4EB9 29 FE + bne DrawNumberSpriteAB_Loop ; CPU:$CEBB PRG:4EBB D0 01 + rts ; CPU:$CEBD PRG:4EBD 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAB_Loop: + sta SpriteOffsetIndex ; CPU:$CEBE PRG:4EBE 85 46 + lda TeamColorA ; CPU:$CEC0 PRG:4EC0 A5 58 + and #$80 ; CPU:$CEC2 PRG:4EC2 29 80 + beq DrawNumberSpriteAB_Loop2 ; CPU:$CEC4 PRG:4EC4 F0 03 + jmp SubtractFour_Loop ; CPU:$CEC6 PRG:4EC6 4C 89 CF +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAB_Loop2: + lda #$05 ; CPU:$CEC9 PRG:4EC9 A9 05 + sta TableIndex ; CPU:$CECB PRG:4ECB 85 4E + ldx #$14 ; CPU:$CECD PRG:4ECD A2 14 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexE: + lda TableIndex ; CPU:$CECF PRG:4ECF A5 4E + asl a ; CPU:$CED1 PRG:4ED1 0A + asl a ; CPU:$CED2 PRG:4ED2 0A + asl a ; CPU:$CED3 PRG:4ED3 0A + tay ; CPU:$CED4 PRG:4ED4 A8 + lda $0516,y ; CPU:$CED5 PRG:4ED5 B9 16 05 + and #$01 ; CPU:$CED8 PRG:4ED8 29 01 + beq GetTileIndexE_Loop ; CPU:$CEDA PRG:4EDA F0 03 + jmp SubtractFour ; CPU:$CEDC PRG:4EDC 4C 7D CF +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexE_Loop: + lda $0516,y ; CPU:$CEDF PRG:4EDF B9 16 05 + and #$80 ; CPU:$CEE2 PRG:4EE2 29 80 + beq GetTileIndexE_Loop2 ; CPU:$CEE4 PRG:4EE4 F0 03 + jmp GetSpriteTileAddress ; CPU:$CEE6 PRG:4EE6 4C 1E CF +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexE_Loop2: + lda BallPositionX,y ; CPU:$CEE9 PRG:4EE9 B9 0F 05 + clc ; CPU:$CEEC PRG:4EEC 18 + adc #$18 ; CPU:$CEED PRG:4EED 69 18 + sec ; CPU:$CEEF PRG:4EEF 38 + sbc NumberToDisplay ; CPU:$CEF0 PRG:4EF0 E5 45 + bcs GetTileIndexE_Loop3 ; CPU:$CEF2 PRG:4EF2 B0 03 + jmp SubtractFour ; CPU:$CEF4 PRG:4EF4 4C 7D CF +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexE_Loop3: + cmp #$20 ; CPU:$CEF7 PRG:4EF7 C9 20 + bcc GetTileIndexE_Loop4 ; CPU:$CEF9 PRG:4EF9 90 03 + jmp SubtractFour ; CPU:$CEFB PRG:4EFB 4C 7D CF +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexE_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexE_Loop4: + lda BallPositionY,y ; CPU:$CEFE PRG:4EFE B9 10 05 + clc ; CPU:$CF01 PRG:4F01 18 + adc #$10 ; CPU:$CF02 PRG:4F02 69 10 + sec ; CPU:$CF04 PRG:4F04 38 + sbc SpriteOffsetIndex ; CPU:$CF05 PRG:4F05 E5 46 + bcs GetTileIndexE_Loop5 ; CPU:$CF07 PRG:4F07 B0 03 + jmp SubtractFour ; CPU:$CF09 PRG:4F09 4C 7D CF +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexE_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexE_Loop5: + cmp #$20 ; CPU:$CF0C PRG:4F0C C9 20 + bcc GetTileIndexE_Loop6 ; CPU:$CF0E PRG:4F0E 90 03 + jmp SubtractFour ; CPU:$CF10 PRG:4F10 4C 7D CF +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexE_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexE_Loop6: + lda $0516,y ; CPU:$CF13 PRG:4F13 B9 16 05 + ora #$80 ; CPU:$CF16 PRG:4F16 09 80 + sta $0516,y ; CPU:$CF18 PRG:4F18 99 16 05 + jmp SubtractFour_Loop ; CPU:$CF1B PRG:4F1B 4C 89 CF +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddress +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddress: + lda BallPositionX,y ; CPU:$CF1E PRG:4F1E B9 0F 05 + clc ; CPU:$CF21 PRG:4F21 18 + adc #$0A ; CPU:$CF22 PRG:4F22 69 0A + sec ; CPU:$CF24 PRG:4F24 38 + sbc NumberToDisplay ; CPU:$CF25 PRG:4F25 E5 45 + bcs GetSpriteTileAddress_Loop2 ; CPU:$CF27 PRG:4F27 B0 11 + lda #$02 ; CPU:$CF29 PRG:4F29 A9 02 + clc ; CPU:$CF2B PRG:4F2B 18 + adc BallTargetPositionX,y ; CPU:$CF2C PRG:4F2C 79 11 05 + cmp $F369,x ; CPU:$CF2F PRG:4F2F DD 69 F3 + bcs GetSpriteTileAddress_Loop ; CPU:$CF32 PRG:4F32 B0 03 + sta BallTargetPositionX,y ; CPU:$CF34 PRG:4F34 99 11 05 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddress_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddress_Loop: + jmp GetSpriteTileAddress_Loop3 ; CPU:$CF37 PRG:4F37 4C 4C CF +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddress_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddress_Loop2: + cmp #$10 ; CPU:$CF3A PRG:4F3A C9 10 + bcc GetSpriteTileAddress_Loop3 ; CPU:$CF3C PRG:4F3C 90 0E + lda BallTargetPositionX,y ; CPU:$CF3E PRG:4F3E B9 11 05 + sec ; CPU:$CF41 PRG:4F41 38 + sbc #$02 ; CPU:$CF42 PRG:4F42 E9 02 + cmp $F368,x ; CPU:$CF44 PRG:4F44 DD 68 F3 + bcc GetSpriteTileAddress_Loop3 ; CPU:$CF47 PRG:4F47 90 03 + sta BallTargetPositionX,y ; CPU:$CF49 PRG:4F49 99 11 05 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddress_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddress_Loop3: + lda BallPositionY,y ; CPU:$CF4C PRG:4F4C B9 10 05 + clc ; CPU:$CF4F PRG:4F4F 18 + adc #$08 ; CPU:$CF50 PRG:4F50 69 08 + sec ; CPU:$CF52 PRG:4F52 38 + sbc SpriteOffsetIndex ; CPU:$CF53 PRG:4F53 E5 46 + bcs GetSpriteTileAddress_Loop5 ; CPU:$CF55 PRG:4F55 B0 11 + lda #$02 ; CPU:$CF57 PRG:4F57 A9 02 + clc ; CPU:$CF59 PRG:4F59 18 + adc BallTargetPositionY,y ; CPU:$CF5A PRG:4F5A 79 12 05 + cmp $F36B,x ; CPU:$CF5D PRG:4F5D DD 6B F3 + bcs GetSpriteTileAddress_Loop4 ; CPU:$CF60 PRG:4F60 B0 03 + sta BallTargetPositionY,y ; CPU:$CF62 PRG:4F62 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddress_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddress_Loop4: + jmp GetSpriteTileAddress_Loop6 ; CPU:$CF65 PRG:4F65 4C 7A CF +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddress_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddress_Loop5: + cmp #$10 ; CPU:$CF68 PRG:4F68 C9 10 + bcc GetSpriteTileAddress_Loop6 ; CPU:$CF6A PRG:4F6A 90 0E + lda BallTargetPositionY,y ; CPU:$CF6C PRG:4F6C B9 12 05 + sec ; CPU:$CF6F PRG:4F6F 38 + sbc #$02 ; CPU:$CF70 PRG:4F70 E9 02 + cmp $F36A,x ; CPU:$CF72 PRG:4F72 DD 6A F3 + bcc GetSpriteTileAddress_Loop6 ; CPU:$CF75 PRG:4F75 90 03 + sta BallTargetPositionY,y ; CPU:$CF77 PRG:4F77 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddress_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddress_Loop6: + jmp SubtractFourB_Loop ; CPU:$CF7A PRG:4F7A 4C 69 D0 +; ----------------------------------------------------------------------------- +; Routine: SubtractFour +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SubtractFour: + txa ; CPU:$CF7D PRG:4F7D 8A + sec ; CPU:$CF7E PRG:4F7E 38 + sbc #$04 ; CPU:$CF7F PRG:4F7F E9 04 + tax ; CPU:$CF81 PRG:4F81 AA + dec TableIndex ; CPU:$CF82 PRG:4F82 C6 4E + bmi SubtractFour_Loop ; CPU:$CF84 PRG:4F84 30 03 + jmp GetTileIndexE ; CPU:$CF86 PRG:4F86 4C CF CE +; ----------------------------------------------------------------------------- +; Routine: SubtractFour_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SubtractFour_Loop: + rts ; CPU:$CF89 PRG:4F89 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAC: + lda TeamColorA ; CPU:$CF8A PRG:4F8A A5 58 + and #$FE ; CPU:$CF8C PRG:4F8C 29 FE + sec ; CPU:$CF8E PRG:4F8E 38 + sbc #$08 ; CPU:$CF8F PRG:4F8F E9 08 + sta NumberToDisplay ; CPU:$CF91 PRG:4F91 85 45 + lda TeamColorB ; CPU:$CF93 PRG:4F93 A5 59 + and #$FE ; CPU:$CF95 PRG:4F95 29 FE + bne DrawNumberSpriteAC_Loop ; CPU:$CF97 PRG:4F97 D0 01 + rts ; CPU:$CF99 PRG:4F99 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAC_Loop: + sta SpriteOffsetIndex ; CPU:$CF9A PRG:4F9A 85 46 + lda TeamColorA ; CPU:$CF9C PRG:4F9C A5 58 + and #$80 ; CPU:$CF9E PRG:4F9E 29 80 + bne DrawNumberSpriteAC_Loop2 ; CPU:$CFA0 PRG:4FA0 D0 03 + jmp SubtractFourB_Loop ; CPU:$CFA2 PRG:4FA2 4C 69 D0 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAC_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAC_Loop2: + lda #$0B ; CPU:$CFA5 PRG:4FA5 A9 0B + sta TableIndex ; CPU:$CFA7 PRG:4FA7 85 4E + ldx #$2C ; CPU:$CFA9 PRG:4FA9 A2 2C +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexF: + lda TableIndex ; CPU:$CFAB PRG:4FAB A5 4E + asl a ; CPU:$CFAD PRG:4FAD 0A + asl a ; CPU:$CFAE PRG:4FAE 0A + asl a ; CPU:$CFAF PRG:4FAF 0A + tay ; CPU:$CFB0 PRG:4FB0 A8 + lda $0516,y ; CPU:$CFB1 PRG:4FB1 B9 16 05 + and #$01 ; CPU:$CFB4 PRG:4FB4 29 01 + beq GetTileIndexF_Loop ; CPU:$CFB6 PRG:4FB6 F0 03 + jmp SubtractFourB ; CPU:$CFB8 PRG:4FB8 4C 59 D0 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexF_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexF_Loop: + lda $0516,y ; CPU:$CFBB PRG:4FBB B9 16 05 + and #$80 ; CPU:$CFBE PRG:4FBE 29 80 + beq GetTileIndexF_Loop2 ; CPU:$CFC0 PRG:4FC0 F0 03 + jmp GetSpriteTileAddressB ; CPU:$CFC2 PRG:4FC2 4C FA CF +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexF_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexF_Loop2: + lda BallPositionX,y ; CPU:$CFC5 PRG:4FC5 B9 0F 05 + clc ; CPU:$CFC8 PRG:4FC8 18 + adc #$08 ; CPU:$CFC9 PRG:4FC9 69 08 + sec ; CPU:$CFCB PRG:4FCB 38 + sbc NumberToDisplay ; CPU:$CFCC PRG:4FCC E5 45 + bcs GetTileIndexF_Loop3 ; CPU:$CFCE PRG:4FCE B0 03 + jmp SubtractFourB ; CPU:$CFD0 PRG:4FD0 4C 59 D0 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexF_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexF_Loop3: + cmp #$20 ; CPU:$CFD3 PRG:4FD3 C9 20 + bcc GetTileIndexF_Loop4 ; CPU:$CFD5 PRG:4FD5 90 03 + jmp SubtractFourB ; CPU:$CFD7 PRG:4FD7 4C 59 D0 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexF_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexF_Loop4: + lda BallPositionY,y ; CPU:$CFDA PRG:4FDA B9 10 05 + clc ; CPU:$CFDD PRG:4FDD 18 + adc #$10 ; CPU:$CFDE PRG:4FDE 69 10 + sec ; CPU:$CFE0 PRG:4FE0 38 + sbc SpriteOffsetIndex ; CPU:$CFE1 PRG:4FE1 E5 46 + bcs GetTileIndexF_Loop5 ; CPU:$CFE3 PRG:4FE3 B0 03 + jmp SubtractFourB ; CPU:$CFE5 PRG:4FE5 4C 59 D0 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexF_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexF_Loop5: + cmp #$20 ; CPU:$CFE8 PRG:4FE8 C9 20 + bcc GetTileIndexF_Loop6 ; CPU:$CFEA PRG:4FEA 90 03 + jmp SubtractFourB ; CPU:$CFEC PRG:4FEC 4C 59 D0 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexF_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexF_Loop6: + lda $0516,y ; CPU:$CFEF PRG:4FEF B9 16 05 + ora #$80 ; CPU:$CFF2 PRG:4FF2 09 80 + sta $0516,y ; CPU:$CFF4 PRG:4FF4 99 16 05 + jmp SubtractFourB_Loop ; CPU:$CFF7 PRG:4FF7 4C 69 D0 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddressB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddressB: + lda BallPositionX,y ; CPU:$CFFA PRG:4FFA B9 0F 05 + clc ; CPU:$CFFD PRG:4FFD 18 + adc #$00 ; CPU:$CFFE PRG:4FFE 69 00 + sec ; CPU:$D000 PRG:5000 38 + sbc NumberToDisplay ; CPU:$D001 PRG:5001 E5 45 + bcs GetSpriteTileAddressB_Loop2 ; CPU:$D003 PRG:5003 B0 11 + lda #$02 ; CPU:$D005 PRG:5005 A9 02 + clc ; CPU:$D007 PRG:5007 18 + adc BallTargetPositionX,y ; CPU:$D008 PRG:5008 79 11 05 + cmp $F369,x ; CPU:$D00B PRG:500B DD 69 F3 + bcs GetSpriteTileAddressB_Loop ; CPU:$D00E PRG:500E B0 03 + sta BallTargetPositionX,y ; CPU:$D010 PRG:5010 99 11 05 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddressB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddressB_Loop: + jmp GetSpriteTileAddressB_Loop3 ; CPU:$D013 PRG:5013 4C 28 D0 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddressB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddressB_Loop2: + cmp #$10 ; CPU:$D016 PRG:5016 C9 10 + bcc GetSpriteTileAddressB_Loop3 ; CPU:$D018 PRG:5018 90 0E + lda BallTargetPositionX,y ; CPU:$D01A PRG:501A B9 11 05 + sec ; CPU:$D01D PRG:501D 38 + sbc #$02 ; CPU:$D01E PRG:501E E9 02 + cmp $F368,x ; CPU:$D020 PRG:5020 DD 68 F3 + bcc GetSpriteTileAddressB_Loop3 ; CPU:$D023 PRG:5023 90 03 + sta BallTargetPositionX,y ; CPU:$D025 PRG:5025 99 11 05 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddressB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddressB_Loop3: + lda BallPositionY,y ; CPU:$D028 PRG:5028 B9 10 05 + clc ; CPU:$D02B PRG:502B 18 + adc #$08 ; CPU:$D02C PRG:502C 69 08 + sec ; CPU:$D02E PRG:502E 38 + sbc SpriteOffsetIndex ; CPU:$D02F PRG:502F E5 46 + bcs GetSpriteTileAddressB_Loop5 ; CPU:$D031 PRG:5031 B0 11 + lda #$02 ; CPU:$D033 PRG:5033 A9 02 + clc ; CPU:$D035 PRG:5035 18 + adc BallTargetPositionY,y ; CPU:$D036 PRG:5036 79 12 05 + cmp $F36B,x ; CPU:$D039 PRG:5039 DD 6B F3 + bcs GetSpriteTileAddressB_Loop4 ; CPU:$D03C PRG:503C B0 03 + sta BallTargetPositionY,y ; CPU:$D03E PRG:503E 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddressB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddressB_Loop4: + jmp GetSpriteTileAddressB_Loop6 ; CPU:$D041 PRG:5041 4C 56 D0 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddressB_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddressB_Loop5: + cmp #$10 ; CPU:$D044 PRG:5044 C9 10 + bcc GetSpriteTileAddressB_Loop6 ; CPU:$D046 PRG:5046 90 0E + lda BallTargetPositionY,y ; CPU:$D048 PRG:5048 B9 12 05 + sec ; CPU:$D04B PRG:504B 38 + sbc #$02 ; CPU:$D04C PRG:504C E9 02 + cmp $F36A,x ; CPU:$D04E PRG:504E DD 6A F3 + bcc GetSpriteTileAddressB_Loop6 ; CPU:$D051 PRG:5051 90 03 + sta BallTargetPositionY,y ; CPU:$D053 PRG:5053 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: GetSpriteTileAddressB_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetSpriteTileAddressB_Loop6: + jmp SubtractFourB_Loop ; CPU:$D056 PRG:5056 4C 69 D0 +; ----------------------------------------------------------------------------- +; Routine: SubtractFourB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SubtractFourB: + txa ; CPU:$D059 PRG:5059 8A + sec ; CPU:$D05A PRG:505A 38 + sbc #$04 ; CPU:$D05B PRG:505B E9 04 + tax ; CPU:$D05D PRG:505D AA + dec TableIndex ; CPU:$D05E PRG:505E C6 4E + lda TableIndex ; CPU:$D060 PRG:5060 A5 4E + cmp #$06 ; CPU:$D062 PRG:5062 C9 06 + bcc SubtractFourB_Loop ; CPU:$D064 PRG:5064 90 03 + jmp GetTileIndexF ; CPU:$D066 PRG:5066 4C AB CF +; ----------------------------------------------------------------------------- +; Routine: SubtractFourB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SubtractFourB_Loop: + rts ; CPU:$D069 PRG:5069 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAD: + lda FrameCounter ; CPU:$D06A PRG:506A A5 2D + and #$07 ; CPU:$D06C PRG:506C 29 07 + cmp #$07 ; CPU:$D06E PRG:506E C9 07 + bne DrawNumberSpriteAD_Loop2 ; CPU:$D070 PRG:5070 D0 20 + lda BallVelocityX ; CPU:$D072 PRG:5072 AD 03 05 + bne DrawNumberSpriteAD_Loop ; CPU:$D075 PRG:5075 D0 12 + lda BallVelocityY ; CPU:$D077 PRG:5077 AD 04 05 + bne DrawNumberSpriteAD_Loop ; CPU:$D07A PRG:507A D0 0D + lda BallSpeed ; CPU:$D07C PRG:507C AD 05 05 + bne DrawNumberSpriteAD_Loop ; CPU:$D07F PRG:507F D0 08 + lda BallPreviousX ; CPU:$D081 PRG:5081 AD 08 05 + bne DrawNumberSpriteAD_Loop ; CPU:$D084 PRG:5084 D0 03 + jmp DrawNumberSpriteAD_Loop2 ; CPU:$D086 PRG:5086 4C 92 D0 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAD_Loop: + lda BallPreviousY ; CPU:$D089 PRG:5089 AD 07 05 + clc ; CPU:$D08C PRG:508C 18 + adc #$40 ; CPU:$D08D PRG:508D 69 40 + sta BallPreviousY ; CPU:$D08F PRG:508F 8D 07 05 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAD_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAD_Loop2: + rts ; CPU:$D092 PRG:5092 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAE: + lda BallFlags ; CPU:$D093 PRG:5093 A5 6E + and #$03 ; CPU:$D095 PRG:5095 29 03 + beq DrawNumberSpriteAE_Loop ; CPU:$D097 PRG:5097 F0 01 + rts ; CPU:$D099 PRG:5099 60 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAE_Loop: + txa ; CPU:$D09A PRG:509A 8A + pha ; CPU:$D09B PRG:509B 48 + tya ; CPU:$D09C PRG:509C 98 + pha ; CPU:$D09D PRG:509D 48 + lda #$0B ; CPU:$D09E PRG:509E A9 0B + sta TableIndex ; CPU:$D0A0 PRG:50A0 85 4E +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAE_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAE_OnNonnegative: + lda TableIndex ; CPU:$D0A2 PRG:50A2 A5 4E + asl a ; CPU:$D0A4 PRG:50A4 0A + asl a ; CPU:$D0A5 PRG:50A5 0A + asl a ; CPU:$D0A6 PRG:50A6 0A + tax ; CPU:$D0A7 PRG:50A7 AA + sta NumberToDisplay ; CPU:$D0A8 PRG:50A8 85 45 + cpy NumberToDisplay ; CPU:$D0AA PRG:50AA C4 45 + bne SetDrawFlags_Loop ; CPU:$D0AC PRG:50AC D0 25 + lda $0516,x ; CPU:$D0AE PRG:50AE BD 16 05 + and #$01 ; CPU:$D0B1 PRG:50B1 29 01 + bne DrawNumberSpriteAE_Loop2 ; CPU:$D0B3 PRG:50B3 D0 0A + lda $0516,x ; CPU:$D0B5 PRG:50B5 BD 16 05 + ora #$01 ; CPU:$D0B8 PRG:50B8 09 01 + and #$3F ; CPU:$D0BA PRG:50BA 29 3F + jmp StoreSpriteFlag ; CPU:$D0BC PRG:50BC 4C DA D0 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAE_Loop2: + lda TableIndex ; CPU:$D0BF PRG:50BF A5 4E + cmp #$06 ; CPU:$D0C1 PRG:50C1 C9 06 + bcs DrawNumberSpriteAE_Loop3 ; CPU:$D0C3 PRG:50C3 B0 05 + lda #$10 ; CPU:$D0C5 PRG:50C5 A9 10 + jmp SetDrawFlags ; CPU:$D0C7 PRG:50C7 4C CC D0 +; ----------------------------------------------------------------------------- +; Routine: DrawNumberSpriteAE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawNumberSpriteAE_Loop3: + lda #$20 ; CPU:$D0CA PRG:50CA A9 20 +; ----------------------------------------------------------------------------- +; Routine: SetDrawFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetDrawFlags: + ora BallFlags ; CPU:$D0CC PRG:50CC 05 6E + sta BallFlags ; CPU:$D0CE PRG:50CE 85 6E + jmp ClearDrawFlags ; CPU:$D0D0 PRG:50D0 4C DD D0 +; ----------------------------------------------------------------------------- +; Routine: SetDrawFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetDrawFlags_Loop: + lda $0516,x ; CPU:$D0D3 PRG:50D3 BD 16 05 + and #$FE ; CPU:$D0D6 PRG:50D6 29 FE + and #$3F ; CPU:$D0D8 PRG:50D8 29 3F +; ----------------------------------------------------------------------------- +; Routine: StoreSpriteFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreSpriteFlag: + sta $0516,x ; CPU:$D0DA PRG:50DA 9D 16 05 +; ----------------------------------------------------------------------------- +; Routine: ClearDrawFlags +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearDrawFlags: + lda BallFlags ; CPU:$D0DD PRG:50DD A5 6E + and #$F3 ; CPU:$D0DF PRG:50DF 29 F3 + sta BallFlags ; CPU:$D0E1 PRG:50E1 85 6E + cpy #$30 ; CPU:$D0E3 PRG:50E3 C0 30 + bcs ClearDrawFlags_Loop ; CPU:$D0E5 PRG:50E5 B0 05 + lda #$04 ; CPU:$D0E7 PRG:50E7 A9 04 + jmp SetDrawFlagsB ; CPU:$D0E9 PRG:50E9 4C EE D0 +; ----------------------------------------------------------------------------- +; Routine: ClearDrawFlags_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearDrawFlags_Loop: + lda #$08 ; CPU:$D0EC PRG:50EC A9 08 +; ----------------------------------------------------------------------------- +; Routine: SetDrawFlagsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetDrawFlagsB: + ora BallFlags ; CPU:$D0EE PRG:50EE 05 6E + sta BallFlags ; CPU:$D0F0 PRG:50F0 85 6E + dec TableIndex ; CPU:$D0F2 PRG:50F2 C6 4E + bpl DrawNumberSpriteAE_OnNonnegative ; CPU:$D0F4 PRG:50F4 10 AC + pla ; CPU:$D0F6 PRG:50F6 68 + tay ; CPU:$D0F7 PRG:50F7 A8 + pla ; CPU:$D0F8 PRG:50F8 68 + tax ; CPU:$D0F9 PRG:50F9 AA + rts ; CPU:$D0FA PRG:50FA 60 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudience +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudience: + lda PpuCtrlShadow ; CPU:$D0FB PRG:50FB A5 19 + ora #$04 ; CPU:$D0FD PRG:50FD 09 04 + sta PPUCTRL ; CPU:$D0FF PRG:50FF 8D 00 20 + lda Zp62 ; CPU:$D102 PRG:5102 A5 62 + cmp #$0A ; CPU:$D104 PRG:5104 C9 0A + bcc AnimateAudience_Loop ; CPU:$D106 PRG:5106 90 13 + cmp #$80 ; CPU:$D108 PRG:5108 C9 80 + bcc AnimateAudience_Loop2 ; CPU:$D10A PRG:510A 90 1C + lda #$0B ; CPU:$D10C PRG:510C A9 0B + jsr GetTableIndex ; CPU:$D10E PRG:510E 20 48 D1 + lda Zp62 ; CPU:$D111 PRG:5111 A5 62 + and #$0F ; CPU:$D113 PRG:5113 29 0F + jsr GetTableIndexB ; CPU:$D115 PRG:5115 20 5A D1 + jmp SetPpuAddress2059 ; CPU:$D118 PRG:5118 4C 35 D1 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudience_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudience_Loop: + lda #$0C ; CPU:$D11B PRG:511B A9 0C + jsr GetTableIndex ; CPU:$D11D PRG:511D 20 48 D1 + lda Zp62 ; CPU:$D120 PRG:5120 A5 62 + jsr GetTableIndexB ; CPU:$D122 PRG:5122 20 5A D1 + jmp SetPpuAddress2059 ; CPU:$D125 PRG:5125 4C 35 D1 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudience_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudience_Loop2: + lda #$0A ; CPU:$D128 PRG:5128 A9 0A + jsr GetTableIndex ; CPU:$D12A PRG:512A 20 48 D1 + lda Zp62 ; CPU:$D12D PRG:512D A5 62 + sec ; CPU:$D12F PRG:512F 38 + sbc #$0A ; CPU:$D130 PRG:5130 E9 0A + jsr GetTableIndexB ; CPU:$D132 PRG:5132 20 5A D1 +; ----------------------------------------------------------------------------- +; Routine: SetPpuAddress2059 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetPpuAddress2059: + lda #$20 ; CPU:$D135 PRG:5135 A9 20 + sta PPUADDR ; CPU:$D137 PRG:5137 8D 06 20 + lda #$59 ; CPU:$D13A PRG:513A A9 59 + sta PPUADDR ; CPU:$D13C PRG:513C 8D 06 20 + jsr WriteTileBytes ; CPU:$D13F PRG:513F 20 A6 D1 + lda PpuCtrlShadow ; CPU:$D142 PRG:5142 A5 19 + sta PPUCTRL ; CPU:$D144 PRG:5144 8D 00 20 + rts ; CPU:$D147 PRG:5147 60 +; ----------------------------------------------------------------------------- +; Routine: GetTableIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTableIndex: + asl a ; CPU:$D148 PRG:5148 0A + asl a ; CPU:$D149 PRG:5149 0A + asl a ; CPU:$D14A PRG:514A 0A + tay ; CPU:$D14B PRG:514B A8 + lda #$20 ; CPU:$D14C PRG:514C A9 20 + sta PPUADDR ; CPU:$D14E PRG:514E 8D 06 20 + lda #$5B ; CPU:$D151 PRG:5151 A9 5B + sta PPUADDR ; CPU:$D153 PRG:5153 8D 06 20 + jsr WriteTwoTileBytes ; CPU:$D156 PRG:5156 20 7D D1 + rts ; CPU:$D159 PRG:5159 60 +; ----------------------------------------------------------------------------- +; Routine: GetTableIndexB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTableIndexB: + asl a ; CPU:$D15A PRG:515A 0A + asl a ; CPU:$D15B PRG:515B 0A + asl a ; CPU:$D15C PRG:515C 0A + tay ; CPU:$D15D PRG:515D A8 + lda #$20 ; CPU:$D15E PRG:515E A9 20 + sta PPUADDR ; CPU:$D160 PRG:5160 8D 06 20 + lda #$5C ; CPU:$D163 PRG:5163 A9 5C + sta PPUADDR ; CPU:$D165 PRG:5165 8D 06 20 + jsr WriteTwoTileBytes ; CPU:$D168 PRG:5168 20 7D D1 + iny ; CPU:$D16B PRG:516B C8 + iny ; CPU:$D16C PRG:516C C8 + iny ; CPU:$D16D PRG:516D C8 + iny ; CPU:$D16E PRG:516E C8 + lda #$20 ; CPU:$D16F PRG:516F A9 20 + sta PPUADDR ; CPU:$D171 PRG:5171 8D 06 20 + lda #$5D ; CPU:$D174 PRG:5174 A9 5D + sta PPUADDR ; CPU:$D176 PRG:5176 8D 06 20 + jsr WriteTwoTileBytes ; CPU:$D179 PRG:5179 20 7D D1 + rts ; CPU:$D17C PRG:517C 60 +; ----------------------------------------------------------------------------- +; Routine: WriteTwoTileBytes +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteTwoTileBytes: + lda $E0D0,y ; CPU:$D17D PRG:517D B9 D0 E0 + sta PPUDATA ; CPU:$D180 PRG:5180 8D 07 20 + lda $E0D1,y ; CPU:$D183 PRG:5183 B9 D1 E0 + sta PPUDATA ; CPU:$D186 PRG:5186 8D 07 20 + lda $E0D2,y ; CPU:$D189 PRG:5189 B9 D2 E0 + sta PPUDATA ; CPU:$D18C PRG:518C 8D 07 20 + lda IndicatorIndex ; CPU:$D18F PRG:518F A5 64 + cmp #$0F ; CPU:$D191 PRG:5191 C9 0F + beq WriteTwoTileBytes_Loop ; CPU:$D193 PRG:5193 F0 07 + lda $E0D3,y ; CPU:$D195 PRG:5195 B9 D3 E0 + sta PPUDATA ; CPU:$D198 PRG:5198 8D 07 20 + rts ; CPU:$D19B PRG:519B 60 +; ----------------------------------------------------------------------------- +; Routine: WriteTwoTileBytes_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteTwoTileBytes_Loop: + lda $E0D3,y ; CPU:$D19C PRG:519C B9 D3 E0 + clc ; CPU:$D19F PRG:519F 18 + adc #$01 ; CPU:$D1A0 PRG:51A0 69 01 + sta PPUDATA ; CPU:$D1A2 PRG:51A2 8D 07 20 + rts ; CPU:$D1A5 PRG:51A5 60 +; ----------------------------------------------------------------------------- +; Routine: WriteTileBytes +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteTileBytes: + lda #$62 ; CPU:$D1A6 PRG:51A6 A9 62 + sta PPUDATA ; CPU:$D1A8 PRG:51A8 8D 07 20 + lda #$66 ; CPU:$D1AB PRG:51AB A9 66 + sta PPUDATA ; CPU:$D1AD PRG:51AD 8D 07 20 + sta PPUDATA ; CPU:$D1B0 PRG:51B0 8D 07 20 + rts ; CPU:$D1B3 PRG:51B3 60 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceB: + lda PpuCtrlShadow ; CPU:$D1B4 PRG:51B4 A5 19 + ora #$04 ; CPU:$D1B6 PRG:51B6 09 04 + sta PPUCTRL ; CPU:$D1B8 PRG:51B8 8D 00 20 + lda Zp63 ; CPU:$D1BB PRG:51BB A5 63 + cmp #$0A ; CPU:$D1BD PRG:51BD C9 0A + bcc AnimateAudienceB_Loop ; CPU:$D1BF PRG:51BF 90 13 + cmp #$80 ; CPU:$D1C1 PRG:51C1 C9 80 + bcc AnimateAudienceB_Loop2 ; CPU:$D1C3 PRG:51C3 90 1C + lda #$0B ; CPU:$D1C5 PRG:51C5 A9 0B + jsr GetTableIndexC ; CPU:$D1C7 PRG:51C7 20 01 D2 + lda Zp63 ; CPU:$D1CA PRG:51CA A5 63 + and #$0F ; CPU:$D1CC PRG:51CC 29 0F + jsr GetTableIndexD ; CPU:$D1CE PRG:51CE 20 13 D2 + jmp SetPpuAddress205A ; CPU:$D1D1 PRG:51D1 4C EE D1 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceB_Loop: + lda #$0C ; CPU:$D1D4 PRG:51D4 A9 0C + jsr GetTableIndexC ; CPU:$D1D6 PRG:51D6 20 01 D2 + lda Zp63 ; CPU:$D1D9 PRG:51D9 A5 63 + jsr GetTableIndexD ; CPU:$D1DB PRG:51DB 20 13 D2 + jmp SetPpuAddress205A ; CPU:$D1DE PRG:51DE 4C EE D1 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceB_Loop2: + lda #$0A ; CPU:$D1E1 PRG:51E1 A9 0A + jsr GetTableIndexC ; CPU:$D1E3 PRG:51E3 20 01 D2 + lda Zp63 ; CPU:$D1E6 PRG:51E6 A5 63 + sec ; CPU:$D1E8 PRG:51E8 38 + sbc #$0A ; CPU:$D1E9 PRG:51E9 E9 0A + jsr GetTableIndexD ; CPU:$D1EB PRG:51EB 20 13 D2 +; ----------------------------------------------------------------------------- +; Routine: SetPpuAddress205A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetPpuAddress205A: + lda #$20 ; CPU:$D1EE PRG:51EE A9 20 + sta PPUADDR ; CPU:$D1F0 PRG:51F0 8D 06 20 + lda #$5A ; CPU:$D1F3 PRG:51F3 A9 5A + sta PPUADDR ; CPU:$D1F5 PRG:51F5 8D 06 20 + jsr WriteTileBytes ; CPU:$D1F8 PRG:51F8 20 A6 D1 + lda PpuCtrlShadow ; CPU:$D1FB PRG:51FB A5 19 + sta PPUCTRL ; CPU:$D1FD PRG:51FD 8D 00 20 + rts ; CPU:$D200 PRG:5200 60 +; ----------------------------------------------------------------------------- +; Routine: GetTableIndexC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTableIndexC: + asl a ; CPU:$D201 PRG:5201 0A + asl a ; CPU:$D202 PRG:5202 0A + asl a ; CPU:$D203 PRG:5203 0A + tay ; CPU:$D204 PRG:5204 A8 + lda #$20 ; CPU:$D205 PRG:5205 A9 20 + sta PPUADDR ; CPU:$D207 PRG:5207 8D 06 20 + lda #$56 ; CPU:$D20A PRG:520A A9 56 + sta PPUADDR ; CPU:$D20C PRG:520C 8D 06 20 + jsr WriteTwoTileBytesB ; CPU:$D20F PRG:520F 20 36 D2 + rts ; CPU:$D212 PRG:5212 60 +; ----------------------------------------------------------------------------- +; Routine: GetTableIndexD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTableIndexD: + asl a ; CPU:$D213 PRG:5213 0A + asl a ; CPU:$D214 PRG:5214 0A + asl a ; CPU:$D215 PRG:5215 0A + tay ; CPU:$D216 PRG:5216 A8 + lda #$20 ; CPU:$D217 PRG:5217 A9 20 + sta PPUADDR ; CPU:$D219 PRG:5219 8D 06 20 + lda #$57 ; CPU:$D21C PRG:521C A9 57 + sta PPUADDR ; CPU:$D21E PRG:521E 8D 06 20 + jsr WriteTwoTileBytesB ; CPU:$D221 PRG:5221 20 36 D2 + iny ; CPU:$D224 PRG:5224 C8 + iny ; CPU:$D225 PRG:5225 C8 + iny ; CPU:$D226 PRG:5226 C8 + iny ; CPU:$D227 PRG:5227 C8 + lda #$20 ; CPU:$D228 PRG:5228 A9 20 + sta PPUADDR ; CPU:$D22A PRG:522A 8D 06 20 + lda #$58 ; CPU:$D22D PRG:522D A9 58 + sta PPUADDR ; CPU:$D22F PRG:522F 8D 06 20 + jsr WriteTwoTileBytesB ; CPU:$D232 PRG:5232 20 36 D2 + rts ; CPU:$D235 PRG:5235 60 +; ----------------------------------------------------------------------------- +; Routine: WriteTwoTileBytesB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteTwoTileBytesB: + lda $E0D0,y ; CPU:$D236 PRG:5236 B9 D0 E0 + sta PPUDATA ; CPU:$D239 PRG:5239 8D 07 20 + lda $E0D1,y ; CPU:$D23C PRG:523C B9 D1 E0 + sta PPUDATA ; CPU:$D23F PRG:523F 8D 07 20 + lda $E0D2,y ; CPU:$D242 PRG:5242 B9 D2 E0 + sta PPUDATA ; CPU:$D245 PRG:5245 8D 07 20 + lda IndicatorIndex ; CPU:$D248 PRG:5248 A5 64 + cmp #$F0 ; CPU:$D24A PRG:524A C9 F0 + beq WriteTwoTileBytesB_Loop ; CPU:$D24C PRG:524C F0 07 + lda $E0D3,y ; CPU:$D24E PRG:524E B9 D3 E0 + sta PPUDATA ; CPU:$D251 PRG:5251 8D 07 20 + rts ; CPU:$D254 PRG:5254 60 +; ----------------------------------------------------------------------------- +; Routine: WriteTwoTileBytesB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteTwoTileBytesB_Loop: + lda $E0D3,y ; CPU:$D255 PRG:5255 B9 D3 E0 + clc ; CPU:$D258 PRG:5258 18 + adc #$01 ; CPU:$D259 PRG:5259 69 01 + sta PPUDATA ; CPU:$D25B PRG:525B 8D 07 20 + rts ; CPU:$D25E PRG:525E 60 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceC: + lda PpuCtrlShadow ; CPU:$D25F PRG:525F A5 19 + ora #$04 ; CPU:$D261 PRG:5261 09 04 + sta PPUCTRL ; CPU:$D263 PRG:5263 8D 00 20 + lda #$20 ; CPU:$D266 PRG:5266 A9 20 + sta PPUADDR ; CPU:$D268 PRG:5268 8D 06 20 + lda #$7E ; CPU:$D26B PRG:526B A9 7E + sta PPUADDR ; CPU:$D26D PRG:526D 8D 06 20 + lda TeamNumber ; CPU:$D270 PRG:5270 A5 66 + and #$0F ; CPU:$D272 PRG:5272 29 0F + sta NumberToDisplay ; CPU:$D274 PRG:5274 85 45 + lda Zp6D ; CPU:$D276 PRG:5276 A5 6D + and #$0F ; CPU:$D278 PRG:5278 29 0F + cmp NumberToDisplay ; CPU:$D27A PRG:527A C5 45 + beq AnimateAudienceC_Loop ; CPU:$D27C PRG:527C F0 05 + lda #$02 ; CPU:$D27E PRG:527E A9 02 + jmp SetAnimateState ; CPU:$D280 PRG:5280 4C 85 D2 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceC_Loop: + lda #$01 ; CPU:$D283 PRG:5283 A9 01 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState: + sta SpriteOffsetIndex ; CPU:$D285 PRG:5285 85 46 + lda #$00 ; CPU:$D287 PRG:5287 A9 00 + sta NumberToDisplay ; CPU:$D289 PRG:5289 85 45 + lda IndicatorValue ; CPU:$D28B PRG:528B A5 68 + cmp SpriteOffsetIndex ; CPU:$D28D PRG:528D C5 46 + bne SetAnimateState_Loop ; CPU:$D28F PRG:528F D0 02 + inc NumberToDisplay ; CPU:$D291 PRG:5291 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop: + lda Zp69 ; CPU:$D293 PRG:5293 A5 69 + cmp SpriteOffsetIndex ; CPU:$D295 PRG:5295 C5 46 + bne SetAnimateState_Loop2 ; CPU:$D297 PRG:5297 D0 04 + inc NumberToDisplay ; CPU:$D299 PRG:5299 E6 45 + inc NumberToDisplay ; CPU:$D29B PRG:529B E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop2: + lda TeamFlags ; CPU:$D29D PRG:529D A5 67 + bne SetAnimateState_Loop3 ; CPU:$D29F PRG:529F D0 02 + inc NumberToDisplay ; CPU:$D2A1 PRG:52A1 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop3: + cmp #$01 ; CPU:$D2A3 PRG:52A3 C9 01 + bne SetAnimateState_Loop4 ; CPU:$D2A5 PRG:52A5 D0 04 + inc NumberToDisplay ; CPU:$D2A7 PRG:52A7 E6 45 + inc NumberToDisplay ; CPU:$D2A9 PRG:52A9 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop4: + lda NumberToDisplay ; CPU:$D2AB PRG:52AB A5 45 + clc ; CPU:$D2AD PRG:52AD 18 + adc #$82 ; CPU:$D2AE PRG:52AE 69 82 + sta PPUDATA ; CPU:$D2B0 PRG:52B0 8D 07 20 + lda #$00 ; CPU:$D2B3 PRG:52B3 A9 00 + sta NumberToDisplay ; CPU:$D2B5 PRG:52B5 85 45 + lda Zp6A ; CPU:$D2B7 PRG:52B7 A5 6A + cmp SpriteOffsetIndex ; CPU:$D2B9 PRG:52B9 C5 46 + bne SetAnimateState_Loop5 ; CPU:$D2BB PRG:52BB D0 02 + inc NumberToDisplay ; CPU:$D2BD PRG:52BD E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop5: + lda Zp6B ; CPU:$D2BF PRG:52BF A5 6B + cmp SpriteOffsetIndex ; CPU:$D2C1 PRG:52C1 C5 46 + bne SetAnimateState_Loop6 ; CPU:$D2C3 PRG:52C3 D0 04 + inc NumberToDisplay ; CPU:$D2C5 PRG:52C5 E6 45 + inc NumberToDisplay ; CPU:$D2C7 PRG:52C7 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop6: + lda TeamFlags ; CPU:$D2C9 PRG:52C9 A5 67 + cmp #$02 ; CPU:$D2CB PRG:52CB C9 02 + bne SetAnimateState_Loop7 ; CPU:$D2CD PRG:52CD D0 02 + inc NumberToDisplay ; CPU:$D2CF PRG:52CF E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop7: + cmp #$03 ; CPU:$D2D1 PRG:52D1 C9 03 + bne SetAnimateState_Loop8 ; CPU:$D2D3 PRG:52D3 D0 04 + inc NumberToDisplay ; CPU:$D2D5 PRG:52D5 E6 45 + inc NumberToDisplay ; CPU:$D2D7 PRG:52D7 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop8: + lda NumberToDisplay ; CPU:$D2D9 PRG:52D9 A5 45 + clc ; CPU:$D2DB PRG:52DB 18 + adc #$7E ; CPU:$D2DC PRG:52DC 69 7E + sta PPUDATA ; CPU:$D2DE PRG:52DE 8D 07 20 + lda #$00 ; CPU:$D2E1 PRG:52E1 A9 00 + sta NumberToDisplay ; CPU:$D2E3 PRG:52E3 85 45 + lda Zp6C ; CPU:$D2E5 PRG:52E5 A5 6C + cmp SpriteOffsetIndex ; CPU:$D2E7 PRG:52E7 C5 46 + bne SetAnimateState_Loop9 ; CPU:$D2E9 PRG:52E9 D0 02 + inc NumberToDisplay ; CPU:$D2EB PRG:52EB E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop9: + lda TeamFlags ; CPU:$D2ED PRG:52ED A5 67 + cmp #$04 ; CPU:$D2EF PRG:52EF C9 04 + bne SetAnimateState_Loop10 ; CPU:$D2F1 PRG:52F1 D0 02 + inc NumberToDisplay ; CPU:$D2F3 PRG:52F3 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateState_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateState_Loop10: + lda NumberToDisplay ; CPU:$D2F5 PRG:52F5 A5 45 + clc ; CPU:$D2F7 PRG:52F7 18 + adc #$86 ; CPU:$D2F8 PRG:52F8 69 86 + sta PPUDATA ; CPU:$D2FA PRG:52FA 8D 07 20 + lda PpuCtrlShadow ; CPU:$D2FD PRG:52FD A5 19 + sta PPUCTRL ; CPU:$D2FF PRG:52FF 8D 00 20 + rts ; CPU:$D302 PRG:5302 60 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceD: + lda PpuCtrlShadow ; CPU:$D303 PRG:5303 A5 19 + ora #$04 ; CPU:$D305 PRG:5305 09 04 + sta PPUCTRL ; CPU:$D307 PRG:5307 8D 00 20 + lda #$20 ; CPU:$D30A PRG:530A A9 20 + sta PPUADDR ; CPU:$D30C PRG:530C 8D 06 20 + lda #$75 ; CPU:$D30F PRG:530F A9 75 + sta PPUADDR ; CPU:$D311 PRG:5311 8D 06 20 + lda TeamNumber ; CPU:$D314 PRG:5314 A5 66 + lsr a ; CPU:$D316 PRG:5316 4A + lsr a ; CPU:$D317 PRG:5317 4A + lsr a ; CPU:$D318 PRG:5318 4A + lsr a ; CPU:$D319 PRG:5319 4A + sta NumberToDisplay ; CPU:$D31A PRG:531A 85 45 + lda Zp6D ; CPU:$D31C PRG:531C A5 6D + lsr a ; CPU:$D31E PRG:531E 4A + lsr a ; CPU:$D31F PRG:531F 4A + lsr a ; CPU:$D320 PRG:5320 4A + lsr a ; CPU:$D321 PRG:5321 4A + cmp NumberToDisplay ; CPU:$D322 PRG:5322 C5 45 + beq AnimateAudienceD_Loop ; CPU:$D324 PRG:5324 F0 05 + lda #$01 ; CPU:$D326 PRG:5326 A9 01 + jmp SetAnimateStateB ; CPU:$D328 PRG:5328 4C 2D D3 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceD_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceD_Loop: + lda #$02 ; CPU:$D32B PRG:532B A9 02 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB: + sta SpriteOffsetIndex ; CPU:$D32D PRG:532D 85 46 + lda #$00 ; CPU:$D32F PRG:532F A9 00 + sta NumberToDisplay ; CPU:$D331 PRG:5331 85 45 + lda IndicatorValue ; CPU:$D333 PRG:5333 A5 68 + cmp SpriteOffsetIndex ; CPU:$D335 PRG:5335 C5 46 + bne SetAnimateStateB_Loop ; CPU:$D337 PRG:5337 D0 02 + inc NumberToDisplay ; CPU:$D339 PRG:5339 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop: + lda Zp69 ; CPU:$D33B PRG:533B A5 69 + cmp SpriteOffsetIndex ; CPU:$D33D PRG:533D C5 46 + bne SetAnimateStateB_Loop2 ; CPU:$D33F PRG:533F D0 04 + inc NumberToDisplay ; CPU:$D341 PRG:5341 E6 45 + inc NumberToDisplay ; CPU:$D343 PRG:5343 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop2: + lda TeamFlags ; CPU:$D345 PRG:5345 A5 67 + bne SetAnimateStateB_Loop3 ; CPU:$D347 PRG:5347 D0 02 + inc NumberToDisplay ; CPU:$D349 PRG:5349 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop3: + cmp #$01 ; CPU:$D34B PRG:534B C9 01 + bne SetAnimateStateB_Loop4 ; CPU:$D34D PRG:534D D0 04 + inc NumberToDisplay ; CPU:$D34F PRG:534F E6 45 + inc NumberToDisplay ; CPU:$D351 PRG:5351 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop4: + lda NumberToDisplay ; CPU:$D353 PRG:5353 A5 45 + clc ; CPU:$D355 PRG:5355 18 + adc #$7E ; CPU:$D356 PRG:5356 69 7E + sta PPUDATA ; CPU:$D358 PRG:5358 8D 07 20 + lda #$00 ; CPU:$D35B PRG:535B A9 00 + sta NumberToDisplay ; CPU:$D35D PRG:535D 85 45 + lda Zp6A ; CPU:$D35F PRG:535F A5 6A + cmp SpriteOffsetIndex ; CPU:$D361 PRG:5361 C5 46 + bne SetAnimateStateB_Loop5 ; CPU:$D363 PRG:5363 D0 02 + inc NumberToDisplay ; CPU:$D365 PRG:5365 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop5: + lda Zp6B ; CPU:$D367 PRG:5367 A5 6B + cmp SpriteOffsetIndex ; CPU:$D369 PRG:5369 C5 46 + bne SetAnimateStateB_Loop6 ; CPU:$D36B PRG:536B D0 04 + inc NumberToDisplay ; CPU:$D36D PRG:536D E6 45 + inc NumberToDisplay ; CPU:$D36F PRG:536F E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop6: + lda TeamFlags ; CPU:$D371 PRG:5371 A5 67 + cmp #$02 ; CPU:$D373 PRG:5373 C9 02 + bne SetAnimateStateB_Loop7 ; CPU:$D375 PRG:5375 D0 02 + inc NumberToDisplay ; CPU:$D377 PRG:5377 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop7: + cmp #$03 ; CPU:$D379 PRG:5379 C9 03 + bne SetAnimateStateB_Loop8 ; CPU:$D37B PRG:537B D0 04 + inc NumberToDisplay ; CPU:$D37D PRG:537D E6 45 + inc NumberToDisplay ; CPU:$D37F PRG:537F E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop8: + lda NumberToDisplay ; CPU:$D381 PRG:5381 A5 45 + clc ; CPU:$D383 PRG:5383 18 + adc #$7E ; CPU:$D384 PRG:5384 69 7E + sta PPUDATA ; CPU:$D386 PRG:5386 8D 07 20 + lda #$00 ; CPU:$D389 PRG:5389 A9 00 + sta NumberToDisplay ; CPU:$D38B PRG:538B 85 45 + lda Zp6C ; CPU:$D38D PRG:538D A5 6C + cmp SpriteOffsetIndex ; CPU:$D38F PRG:538F C5 46 + bne SetAnimateStateB_Loop9 ; CPU:$D391 PRG:5391 D0 02 + inc NumberToDisplay ; CPU:$D393 PRG:5393 E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop9: + lda TeamFlags ; CPU:$D395 PRG:5395 A5 67 + cmp #$04 ; CPU:$D397 PRG:5397 C9 04 + bne SetAnimateStateB_Loop10 ; CPU:$D399 PRG:5399 D0 02 + inc NumberToDisplay ; CPU:$D39B PRG:539B E6 45 +; ----------------------------------------------------------------------------- +; Routine: SetAnimateStateB_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAnimateStateB_Loop10: + lda NumberToDisplay ; CPU:$D39D PRG:539D A5 45 + clc ; CPU:$D39F PRG:539F 18 + adc #$86 ; CPU:$D3A0 PRG:53A0 69 86 + sta PPUDATA ; CPU:$D3A2 PRG:53A2 8D 07 20 + lda PpuCtrlShadow ; CPU:$D3A5 PRG:53A5 A5 19 + sta PPUCTRL ; CPU:$D3A7 PRG:53A7 8D 00 20 + rts ; CPU:$D3AA PRG:53AA 60 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE: + lda IndicatorStep ; CPU:$D3AB PRG:53AB AD 87 05 + asl a ; CPU:$D3AE PRG:53AE 0A + asl a ; CPU:$D3AF PRG:53AF 0A + sta NumberToDisplay ; CPU:$D3B0 PRG:53B0 85 45 + lda CrowdAnimationCounter ; CPU:$D3B2 PRG:53B2 AD 88 05 + cmp #$79 ; CPU:$D3B5 PRG:53B5 C9 79 + beq AnimateAudienceE_Loop ; CPU:$D3B7 PRG:53B7 F0 04 + cmp #$78 ; CPU:$D3B9 PRG:53B9 C9 78 + bne AnimateAudienceE_Loop2 ; CPU:$D3BB PRG:53BB D0 05 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop: + lda #$00 ; CPU:$D3BD PRG:53BD A9 00 + jmp ReadAnimateTable_Loop ; CPU:$D3BF PRG:53BF 4C 18 D4 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop2: + lda CrowdAnimationCounter ; CPU:$D3C2 PRG:53C2 AD 88 05 + cmp #$61 ; CPU:$D3C5 PRG:53C5 C9 61 + beq AnimateAudienceE_Loop3 ; CPU:$D3C7 PRG:53C7 F0 04 + cmp #$60 ; CPU:$D3C9 PRG:53C9 C9 60 + bne AnimateAudienceE_Loop4 ; CPU:$D3CB PRG:53CB D0 03 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop3: + jmp ReadAnimateTable ; CPU:$D3CD PRG:53CD 4C 0C D4 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop4: + lda CrowdAnimationCounter ; CPU:$D3D0 PRG:53D0 AD 88 05 + cmp #$49 ; CPU:$D3D3 PRG:53D3 C9 49 + beq AnimateAudienceE_Loop5 ; CPU:$D3D5 PRG:53D5 F0 04 + cmp #$48 ; CPU:$D3D7 PRG:53D7 C9 48 + bne AnimateAudienceE_Loop6 ; CPU:$D3D9 PRG:53D9 D0 03 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop5: + jmp NextAnimateStepC ; CPU:$D3DB PRG:53DB 4C 0A D4 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop6: + lda CrowdAnimationCounter ; CPU:$D3DE PRG:53DE AD 88 05 + cmp #$31 ; CPU:$D3E1 PRG:53E1 C9 31 + beq AnimateAudienceE_Loop7 ; CPU:$D3E3 PRG:53E3 F0 04 + cmp #$30 ; CPU:$D3E5 PRG:53E5 C9 30 + bne AnimateAudienceE_Loop8 ; CPU:$D3E7 PRG:53E7 D0 03 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop7: + jmp NextAnimateStepB ; CPU:$D3E9 PRG:53E9 4C 08 D4 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop8 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop8: + lda CrowdAnimationCounter ; CPU:$D3EC PRG:53EC AD 88 05 + cmp #$19 ; CPU:$D3EF PRG:53EF C9 19 + beq AnimateAudienceE_Loop9 ; CPU:$D3F1 PRG:53F1 F0 04 + cmp #$18 ; CPU:$D3F3 PRG:53F3 C9 18 + bne AnimateAudienceE_Loop10 ; CPU:$D3F5 PRG:53F5 D0 03 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop9 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop9: + jmp NextAnimateStep ; CPU:$D3F7 PRG:53F7 4C 06 D4 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceE_Loop10 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceE_Loop10: + lda CrowdAnimationCounter ; CPU:$D3FA PRG:53FA AD 88 05 + cmp #$03 ; CPU:$D3FD PRG:53FD C9 03 + bcs ReadAnimateTable_Loop2 ; CPU:$D3FF PRG:53FF B0 4A + lda #$00 ; CPU:$D401 PRG:5401 A9 00 + jmp ReadAnimateTable_Loop ; CPU:$D403 PRG:5403 4C 18 D4 +; ----------------------------------------------------------------------------- +; Routine: NextAnimateStep +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextAnimateStep: + inc NumberToDisplay ; CPU:$D406 PRG:5406 E6 45 +; ----------------------------------------------------------------------------- +; Routine: NextAnimateStepB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextAnimateStepB: + inc NumberToDisplay ; CPU:$D408 PRG:5408 E6 45 +; ----------------------------------------------------------------------------- +; Routine: NextAnimateStepC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextAnimateStepC: + inc NumberToDisplay ; CPU:$D40A PRG:540A E6 45 +; ----------------------------------------------------------------------------- +; Routine: ReadAnimateTable +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadAnimateTable: + ldx NumberToDisplay ; CPU:$D40C PRG:540C A6 45 + lda $E07C,x ; CPU:$D40E PRG:540E BD 7C E0 + cmp #$FF ; CPU:$D411 PRG:5411 C9 FF + bne ReadAnimateTable_Loop ; CPU:$D413 PRG:5413 D0 03 + jmp ReadAnimateTable_Loop2 ; CPU:$D415 PRG:5415 4C 4B D4 +; ----------------------------------------------------------------------------- +; Routine: ReadAnimateTable_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadAnimateTable_Loop: + asl a ; CPU:$D418 PRG:5418 0A + asl a ; CPU:$D419 PRG:5419 0A + asl a ; CPU:$D41A PRG:541A 0A + tax ; CPU:$D41B PRG:541B AA + lda #$20 ; CPU:$D41C PRG:541C A9 20 + sta PPUADDR ; CPU:$D41E PRG:541E 8D 06 20 + lda #$D9 ; CPU:$D421 PRG:5421 A9 D9 + sta PPUADDR ; CPU:$D423 PRG:5423 8D 06 20 + lda $DFFC,x ; CPU:$D426 PRG:5426 BD FC DF + sta PPUDATA ; CPU:$D429 PRG:5429 8D 07 20 + jsr WriteAnimateByte ; CPU:$D42C PRG:542C 20 4F D4 + jsr WriteAnimateByte ; CPU:$D42F PRG:542F 20 4F D4 + jsr WriteAnimateByte ; CPU:$D432 PRG:5432 20 4F D4 + lda #$20 ; CPU:$D435 PRG:5435 A9 20 + sta PPUADDR ; CPU:$D437 PRG:5437 8D 06 20 + lda #$F9 ; CPU:$D43A PRG:543A A9 F9 + sta PPUADDR ; CPU:$D43C PRG:543C 8D 06 20 + jsr WriteAnimateByte ; CPU:$D43F PRG:543F 20 4F D4 + jsr WriteAnimateByte ; CPU:$D442 PRG:5442 20 4F D4 + jsr WriteAnimateByte ; CPU:$D445 PRG:5445 20 4F D4 + jsr WriteAnimateByte ; CPU:$D448 PRG:5448 20 4F D4 +; ----------------------------------------------------------------------------- +; Routine: ReadAnimateTable_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadAnimateTable_Loop2: + dec CrowdAnimationCounter ; CPU:$D44B PRG:544B CE 88 05 + rts ; CPU:$D44E PRG:544E 60 +; ----------------------------------------------------------------------------- +; Routine: WriteAnimateByte +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteAnimateByte: + inx ; CPU:$D44F PRG:544F E8 + lda $DFFC,x ; CPU:$D450 PRG:5450 BD FC DF + sta PPUDATA ; CPU:$D453 PRG:5453 8D 07 20 + rts ; CPU:$D456 PRG:5456 60 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceF +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceF: + lda PpuCtrlShadow ; CPU:$D457 PRG:5457 A5 19 + ora #$04 ; CPU:$D459 PRG:5459 09 04 + sta PPUCTRL ; CPU:$D45B PRG:545B 8D 00 20 + lda IndicatorStep ; CPU:$D45E PRG:545E AD 87 05 + sta NumberToDisplay ; CPU:$D461 PRG:5461 85 45 + lda CrowdAnimationCounter ; CPU:$D463 PRG:5463 AD 88 05 + cmp #$79 ; CPU:$D466 PRG:5466 C9 79 + beq AnimateAudienceF_Loop ; CPU:$D468 PRG:5468 F0 04 + cmp #$78 ; CPU:$D46A PRG:546A C9 78 + bne AnimateAudienceF_Loop2 ; CPU:$D46C PRG:546C D0 05 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceF_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceF_Loop: + lda #$00 ; CPU:$D46E PRG:546E A9 00 + jmp CheckAnimateChar_Loop2 ; CPU:$D470 PRG:5470 4C 9D D4 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceF_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceF_Loop2: + lda CrowdAnimationCounter ; CPU:$D473 PRG:5473 AD 88 05 + cmp #$19 ; CPU:$D476 PRG:5476 C9 19 + beq AnimateAudienceF_Loop3 ; CPU:$D478 PRG:5478 F0 07 + cmp #$18 ; CPU:$D47A PRG:547A C9 18 + beq AnimateAudienceF_Loop3 ; CPU:$D47C PRG:547C F0 03 + jmp CheckAnimateChar ; CPU:$D47E PRG:547E 4C 86 D4 +; ----------------------------------------------------------------------------- +; Routine: AnimateAudienceF_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +AnimateAudienceF_Loop3: + lda #$00 ; CPU:$D481 PRG:5481 A9 00 + jmp CheckAnimateChar_Loop2 ; CPU:$D483 PRG:5483 4C 9D D4 +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateChar +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateChar: + lda CrowdAnimationCounter ; CPU:$D486 PRG:5486 AD 88 05 + cmp #$61 ; CPU:$D489 PRG:5489 C9 61 + beq CheckAnimateChar_Loop ; CPU:$D48B PRG:548B F0 04 + cmp #$60 ; CPU:$D48D PRG:548D C9 60 + bne CheckAnimateChar_Loop3 ; CPU:$D48F PRG:548F D0 71 +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateChar_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateChar_Loop: + ldx NumberToDisplay ; CPU:$D491 PRG:5491 A6 45 + lda $E0C0,x ; CPU:$D493 PRG:5493 BD C0 E0 + cmp #$FF ; CPU:$D496 PRG:5496 C9 FF + bne CheckAnimateChar_Loop2 ; CPU:$D498 PRG:5498 D0 03 + jmp CheckAnimateChar_Loop3 ; CPU:$D49A PRG:549A 4C 02 D5 +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateChar_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateChar_Loop2: + asl a ; CPU:$D49D PRG:549D 0A + asl a ; CPU:$D49E PRG:549E 0A + asl a ; CPU:$D49F PRG:549F 0A + tax ; CPU:$D4A0 PRG:54A0 AA + pha ; CPU:$D4A1 PRG:54A1 48 + lda #$20 ; CPU:$D4A2 PRG:54A2 A9 20 + sta PPUADDR ; CPU:$D4A4 PRG:54A4 8D 06 20 + lda #$EC ; CPU:$D4A7 PRG:54A7 A9 EC + sta PPUADDR ; CPU:$D4A9 PRG:54A9 8D 06 20 + lda $E0A0,x ; CPU:$D4AC PRG:54AC BD A0 E0 + sta PPUDATA ; CPU:$D4AF PRG:54AF 8D 07 20 + jsr WriteAnimateByteB ; CPU:$D4B2 PRG:54B2 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4B5 PRG:54B5 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4B8 PRG:54B8 20 0B D5 + lda #$20 ; CPU:$D4BB PRG:54BB A9 20 + sta PPUADDR ; CPU:$D4BD PRG:54BD 8D 06 20 + lda #$ED ; CPU:$D4C0 PRG:54C0 A9 ED + sta PPUADDR ; CPU:$D4C2 PRG:54C2 8D 06 20 + jsr WriteAnimateByteB ; CPU:$D4C5 PRG:54C5 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4C8 PRG:54C8 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4CB PRG:54CB 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4CE PRG:54CE 20 0B D5 + pla ; CPU:$D4D1 PRG:54D1 68 + tax ; CPU:$D4D2 PRG:54D2 AA + lda #$24 ; CPU:$D4D3 PRG:54D3 A9 24 + sta PPUADDR ; CPU:$D4D5 PRG:54D5 8D 06 20 + lda #$E6 ; CPU:$D4D8 PRG:54D8 A9 E6 + sta PPUADDR ; CPU:$D4DA PRG:54DA 8D 06 20 + lda $E0A0,x ; CPU:$D4DD PRG:54DD BD A0 E0 + sta PPUDATA ; CPU:$D4E0 PRG:54E0 8D 07 20 + jsr WriteAnimateByteB ; CPU:$D4E3 PRG:54E3 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4E6 PRG:54E6 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4E9 PRG:54E9 20 0B D5 + lda #$24 ; CPU:$D4EC PRG:54EC A9 24 + sta PPUADDR ; CPU:$D4EE PRG:54EE 8D 06 20 + lda #$E7 ; CPU:$D4F1 PRG:54F1 A9 E7 + sta PPUADDR ; CPU:$D4F3 PRG:54F3 8D 06 20 + jsr WriteAnimateByteB ; CPU:$D4F6 PRG:54F6 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4F9 PRG:54F9 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4FC PRG:54FC 20 0B D5 + jsr WriteAnimateByteB ; CPU:$D4FF PRG:54FF 20 0B D5 +; ----------------------------------------------------------------------------- +; Routine: CheckAnimateChar_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckAnimateChar_Loop3: + dec CrowdAnimationCounter ; CPU:$D502 PRG:5502 CE 88 05 + lda PpuCtrlShadow ; CPU:$D505 PRG:5505 A5 19 + sta PPUCTRL ; CPU:$D507 PRG:5507 8D 00 20 + rts ; CPU:$D50A PRG:550A 60 +; ----------------------------------------------------------------------------- +; Routine: WriteAnimateByteB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteAnimateByteB: + inx ; CPU:$D50B PRG:550B E8 + lda $E0A0,x ; CPU:$D50C PRG:550C BD A0 E0 + sta PPUDATA ; CPU:$D50F PRG:550F 8D 07 20 + rts ; CPU:$D512 PRG:5512 60 +; ----------------------------------------------------------------------------- +; Routine: DrawScoreDigitsAt +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawScoreDigitsAt: + lda NumberToDisplay ; CPU:$D513 PRG:5513 A5 45 + tax ; CPU:$D515 PRG:5515 AA + lda #$20 ; CPU:$D516 PRG:5516 A9 20 + sta PPUADDR ; CPU:$D518 PRG:5518 8D 06 20 + lda #$56 ; CPU:$D51B PRG:551B A9 56 + sta PPUADDR ; CPU:$D51D PRG:551D 8D 06 20 + jsr WriteEightDigits ; CPU:$D520 PRG:5520 20 4B D5 + lda #$20 ; CPU:$D523 PRG:5523 A9 20 + sta PPUADDR ; CPU:$D525 PRG:5525 8D 06 20 + lda #$76 ; CPU:$D528 PRG:5528 A9 76 + sta PPUADDR ; CPU:$D52A PRG:552A 8D 06 20 + jsr WriteEightDigits ; CPU:$D52D PRG:552D 20 4B D5 + lda #$20 ; CPU:$D530 PRG:5530 A9 20 + sta PPUADDR ; CPU:$D532 PRG:5532 8D 06 20 + lda #$96 ; CPU:$D535 PRG:5535 A9 96 + sta PPUADDR ; CPU:$D537 PRG:5537 8D 06 20 + jsr WriteEightDigits ; CPU:$D53A PRG:553A 20 4B D5 + lda #$20 ; CPU:$D53D PRG:553D A9 20 + sta PPUADDR ; CPU:$D53F PRG:553F 8D 06 20 + lda #$B6 ; CPU:$D542 PRG:5542 A9 B6 + sta PPUADDR ; CPU:$D544 PRG:5544 8D 06 20 + jsr ClearDigit ; CPU:$D547 PRG:5547 20 6C D5 + rts ; CPU:$D54A PRG:554A 60 +; ----------------------------------------------------------------------------- +; Routine: WriteEightDigits +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteEightDigits: + jsr WriteOneDigit ; CPU:$D54B PRG:554B 20 64 D5 + jsr WriteOneDigit ; CPU:$D54E PRG:554E 20 64 D5 + jsr WriteOneDigit ; CPU:$D551 PRG:5551 20 64 D5 + jsr WriteOneDigit ; CPU:$D554 PRG:5554 20 64 D5 + jsr WriteOneDigit ; CPU:$D557 PRG:5557 20 64 D5 + jsr WriteOneDigit ; CPU:$D55A PRG:555A 20 64 D5 + jsr WriteOneDigit ; CPU:$D55D PRG:555D 20 64 D5 + jsr WriteOneDigit ; CPU:$D560 PRG:5560 20 64 D5 + rts ; CPU:$D563 PRG:5563 60 +; ----------------------------------------------------------------------------- +; Routine: WriteOneDigit +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteOneDigit: + lda DigitGlyphTable,x ; CPU:$D564 PRG:5564 BD 7B D5 + sta PPUDATA ; CPU:$D567 PRG:5567 8D 07 20 + inx ; CPU:$D56A PRG:556A E8 + rts ; CPU:$D56B PRG:556B 60 +; ----------------------------------------------------------------------------- +; Routine: ClearDigit +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearDigit: + lda IndicatorIndex ; CPU:$D56C PRG:556C A5 64 + cmp #$0F ; CPU:$D56E PRG:556E C9 0F + bne ClearDigit_Loop ; CPU:$D570 PRG:5570 D0 05 + txa ; CPU:$D572 PRG:5572 8A + clc ; CPU:$D573 PRG:5573 18 + adc #$08 ; CPU:$D574 PRG:5574 69 08 + tax ; CPU:$D576 PRG:5576 AA +; ----------------------------------------------------------------------------- +; Routine: ClearDigit_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearDigit_Loop: + jsr WriteEightDigits ; CPU:$D577 PRG:5577 20 4B D5 + rts ; CPU:$D57A PRG:557A 60 +; ---- data $D57B-$D5CA (80 bytes) ---- +; Ten 8x8 digit glyphs, in the order 0..9, written to the PPU by +; WriteOneDigit. +DigitGlyphTable: +; referenced by `lda $D57B,x` at $D564 (operand $D57B falls inside this region) + .byte $65, $65, $64, $64, $62, $64, $64, $65, $66, $6B, $70, $70, $6C, $72, $70, $6E ; CPU:$D57B PRG:557B 65 65 64 64 62 64 64 65 66 6B 70 70 6C 72 70 6E + .byte $66, $6B, $70, $70, $66, $70, $70, $6E, $77, $77, $77, $76, $76, $76, $76, $76 ; CPU:$D58B PRG:558B 66 6B 70 70 66 70 70 6E 77 77 77 76 76 76 76 76 + .byte $76, $76, $76, $76, $76, $77, $77, $77, $65, $63, $63, $62, $64, $63, $64, $64 ; CPU:$D59B PRG:559B 76 76 76 76 76 77 77 77 65 63 63 62 64 63 64 64 + .byte $71, $6B, $6B, $66, $71, $73, $70, $70, $6B, $66, $71, $68, $6B, $70, $66, $6B ; CPU:$D5AB PRG:55AB 71 6B 6B 66 71 73 70 70 6B 66 71 68 6B 70 66 6B + .byte $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76 ; CPU:$D5BB PRG:55BB 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardBits +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardBits: + ldy #$00 ; CPU:$D5CB PRG:55CB A0 00 + lda FrameCounter ; CPU:$D5CD PRG:55CD A5 2D + and #$1F ; CPU:$D5CF PRG:55CF 29 1F + asl a ; CPU:$D5D1 PRG:55D1 0A + tax ; CPU:$D5D2 PRG:55D2 AA + lda $D643,x ; CPU:$D5D3 PRG:55D3 BD 43 D6 + sta PPUADDR ; CPU:$D5D6 PRG:55D6 8D 06 20 + sta PpuAddrLo ; CPU:$D5D9 PRG:55D9 85 7C + lda CrowdTileTable,x ; CPU:$D5DB PRG:55DB BD 42 D6 + sta PPUADDR ; CPU:$D5DE PRG:55DE 8D 06 20 + sta PpuAddrHi ; CPU:$D5E1 PRG:55E1 85 7D +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardBits_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardBits_OnNonzero: + ldx PPUDATA ; CPU:$D5E3 PRG:55E3 AE 07 20 + ldx PPUDATA ; CPU:$D5E6 PRG:55E6 AE 07 20 + cpx #$F8 ; CPU:$D5E9 PRG:55E9 E0 F8 + beq UpdateIndicatorBoardBits_Loop ; CPU:$D5EB PRG:55EB F0 17 + cpx #$F9 ; CPU:$D5ED PRG:55ED E0 F9 + beq UpdateIndicatorBoardBits_Loop2 ; CPU:$D5EF PRG:55EF F0 18 + cpx #$FA ; CPU:$D5F1 PRG:55F1 E0 FA + beq UpdateIndicatorBoardBits_Loop3 ; CPU:$D5F3 PRG:55F3 F0 19 + cpx #$FB ; CPU:$D5F5 PRG:55F5 E0 FB + beq UpdateIndicatorBoardBits_Loop4 ; CPU:$D5F7 PRG:55F7 F0 1A + cpx #$FC ; CPU:$D5F9 PRG:55F9 E0 FC + beq UpdateIndicatorBoardBits_Loop5 ; CPU:$D5FB PRG:55FB F0 1B + cpx #$FD ; CPU:$D5FD PRG:55FD E0 FD + beq UpdateIndicatorBoardBits_Loop6 ; CPU:$D5FF PRG:55FF F0 1C + jmp SetPpuAddressFromZp ; CPU:$D601 PRG:5601 4C 22 D6 +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardBits_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardBits_Loop: + ldx #$FB ; CPU:$D604 PRG:5604 A2 FB + jmp SetPpuAddressFromZp ; CPU:$D606 PRG:5606 4C 22 D6 +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardBits_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardBits_Loop2: + ldx #$F9 ; CPU:$D609 PRG:5609 A2 F9 + jmp SetPpuAddressFromZp ; CPU:$D60B PRG:560B 4C 22 D6 +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardBits_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardBits_Loop3: + ldx #$F8 ; CPU:$D60E PRG:560E A2 F8 + jmp SetPpuAddressFromZp ; CPU:$D610 PRG:5610 4C 22 D6 +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardBits_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardBits_Loop4: + ldx #$FA ; CPU:$D613 PRG:5613 A2 FA + jmp SetPpuAddressFromZp ; CPU:$D615 PRG:5615 4C 22 D6 +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardBits_Loop5 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardBits_Loop5: + ldx #$FD ; CPU:$D618 PRG:5618 A2 FD + jmp SetPpuAddressFromZp ; CPU:$D61A PRG:561A 4C 22 D6 +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardBits_Loop6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardBits_Loop6: + ldx #$FC ; CPU:$D61D PRG:561D A2 FC + jmp SetPpuAddressFromZp ; CPU:$D61F PRG:561F 4C 22 D6 +; ----------------------------------------------------------------------------- +; Routine: SetPpuAddressFromZp +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetPpuAddressFromZp: + lda PpuAddrLo ; CPU:$D622 PRG:5622 A5 7C + sta PPUADDR ; CPU:$D624 PRG:5624 8D 06 20 + lda PpuAddrHi ; CPU:$D627 PRG:5627 A5 7D + sta PPUADDR ; CPU:$D629 PRG:5629 8D 06 20 + stx PPUDATA ; CPU:$D62C PRG:562C 8E 07 20 + lda PpuAddrHi ; CPU:$D62F PRG:562F A5 7D + clc ; CPU:$D631 PRG:5631 18 + adc #$01 ; CPU:$D632 PRG:5632 69 01 + sta PpuAddrHi ; CPU:$D634 PRG:5634 85 7D + lda PpuAddrLo ; CPU:$D636 PRG:5636 A5 7C + adc #$00 ; CPU:$D638 PRG:5638 69 00 + sta PpuAddrLo ; CPU:$D63A PRG:563A 85 7C + iny ; CPU:$D63C PRG:563C C8 + cpy #$04 ; CPU:$D63D PRG:563D C0 04 + bne UpdateIndicatorBoardBits_OnNonzero ; CPU:$D63F PRG:563F D0 A2 + rts ; CPU:$D641 PRG:5641 60 +; ---- data $D642-$D681 (64 bytes) ---- +; Thirty-two (tile, attribute) pairs for the spectators in the stands. +CrowdTileTable: +; referenced by `lda $D643,x` at $D5D3 (operand $D643 falls inside this region) +; referenced by `lda $D642,x` at $D5DB (operand $D642 falls inside this region) + .byte $6C, $20, $72, $20, $2C, $20, $32, $20, $4C, $20, $52, $20, $6C, $20, $72, $20 ; CPU:$D642 PRG:5642 6C 20 72 20 2C 20 32 20 4C 20 52 20 6C 20 72 20 + .byte $8C, $20, $92, $20, $AC, $20, $B2, $20, $CC, $20, $D2, $20, $8C, $20, $92, $20 ; CPU:$D652 PRG:5652 8C 20 92 20 AC 20 B2 20 CC 20 D2 20 8C 20 92 20 + .byte $60, $24, $65, $24, $20, $24, $25, $24, $40, $24, $45, $24, $60, $24, $65, $24 ; CPU:$D662 PRG:5662 60 24 65 24 20 24 25 24 40 24 45 24 60 24 65 24 + .byte $80, $24, $85, $24, $A0, $24, $A5, $24, $C0, $24, $C5, $24, $80, $24, $85, $24 ; CPU:$D672 PRG:5672 80 24 85 24 A0 24 A5 24 C0 24 C5 24 80 24 85 24 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorFlag: + lda BallFlags ; CPU:$D682 PRG:5682 A5 6E + and #$20 ; CPU:$D684 PRG:5684 29 20 + bne CheckIndicatorFlag_Loop4 ; CPU:$D686 PRG:5686 D0 2A + lda BallFlags ; CPU:$D688 PRG:5688 A5 6E + and #$10 ; CPU:$D68A PRG:568A 29 10 + beq CheckIndicatorFlag_Loop ; CPU:$D68C PRG:568C F0 03 + jmp SetIndicatorStep1 ; CPU:$D68E PRG:568E 4C BA D6 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorFlag_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorFlag_Loop: + lda BallFlags ; CPU:$D691 PRG:5691 A5 6E + and #$0F ; CPU:$D693 PRG:5693 29 0F + cmp #$0B ; CPU:$D695 PRG:5695 C9 0B + beq SetIndicatorStep1_Loop ; CPU:$D697 PRG:5697 F0 29 + cmp #$07 ; CPU:$D699 PRG:5699 C9 07 + bne CheckIndicatorFlag_Loop2 ; CPU:$D69B PRG:569B D0 03 + jmp SetIndicatorStep2 ; CPU:$D69D PRG:569D 4C CA D6 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorFlag_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorFlag_Loop2: + lda BallFlags ; CPU:$D6A0 PRG:56A0 A5 6E + and #$03 ; CPU:$D6A2 PRG:56A2 29 03 + cmp #$02 ; CPU:$D6A4 PRG:56A4 C9 02 + beq SetIndicatorStep2_Loop ; CPU:$D6A6 PRG:56A6 F0 2A + cmp #$01 ; CPU:$D6A8 PRG:56A8 C9 01 + bne CheckIndicatorFlag_Loop3 ; CPU:$D6AA PRG:56AA D0 03 + jmp SetIndicatorStep3 ; CPU:$D6AC PRG:56AC 4C DA D6 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorFlag_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorFlag_Loop3: + jmp SetIndicatorStep3 ; CPU:$D6AF PRG:56AF 4C DA D6 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorFlag_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorFlag_Loop4: + lda #$01 ; CPU:$D6B2 PRG:56B2 A9 01 + sta IndicatorStep ; CPU:$D6B4 PRG:56B4 8D 87 05 + jmp CheckIndicatorCount ; CPU:$D6B7 PRG:56B7 4C E2 D6 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorStep1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorStep1: + lda #$02 ; CPU:$D6BA PRG:56BA A9 02 + sta IndicatorStep ; CPU:$D6BC PRG:56BC 8D 87 05 + jmp CheckIndicatorPage ; CPU:$D6BF PRG:56BF 4C 9A D7 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorStep1_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorStep1_Loop: + lda #$03 ; CPU:$D6C2 PRG:56C2 A9 03 + sta IndicatorStep ; CPU:$D6C4 PRG:56C4 8D 87 05 + jmp CheckIndicatorCount ; CPU:$D6C7 PRG:56C7 4C E2 D6 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorStep2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorStep2: + lda #$04 ; CPU:$D6CA PRG:56CA A9 04 + sta IndicatorStep ; CPU:$D6CC PRG:56CC 8D 87 05 + jmp CheckIndicatorPage ; CPU:$D6CF PRG:56CF 4C 9A D7 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorStep2_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorStep2_Loop: + lda #$05 ; CPU:$D6D2 PRG:56D2 A9 05 + sta IndicatorStep ; CPU:$D6D4 PRG:56D4 8D 87 05 + jmp CheckIndicatorCount ; CPU:$D6D7 PRG:56D7 4C E2 D6 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorStep3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorStep3: + lda #$06 ; CPU:$D6DA PRG:56DA A9 06 + sta IndicatorStep ; CPU:$D6DC PRG:56DC 8D 87 05 + jmp CheckIndicatorPage ; CPU:$D6DF PRG:56DF 4C 9A D7 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorCount +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorCount: + lda IndicatorIndex ; CPU:$D6E2 PRG:56E2 A5 64 + cmp #$0F ; CPU:$D6E4 PRG:56E4 C9 0F + beq CheckIndicatorCount_Loop ; CPU:$D6E6 PRG:56E6 F0 07 + lda #$0F ; CPU:$D6E8 PRG:56E8 A9 0F + sta IndicatorIndex ; CPU:$D6EA PRG:56EA 85 64 + jmp ClearIndicatorFlag ; CPU:$D6EC PRG:56EC 4C 95 D7 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorCount_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorCount_Loop: + inc Zp62 ; CPU:$D6EF PRG:56EF E6 62 + lda Zp62 ; CPU:$D6F1 PRG:56F1 A5 62 + cmp #$0F ; CPU:$D6F3 PRG:56F3 C9 0F + bcs CheckIndicatorCount_Loop2 ; CPU:$D6F5 PRG:56F5 B0 03 + jmp ClearIndicatorFlag ; CPU:$D6F7 PRG:56F7 4C 95 D7 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorCount_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorCount_Loop2: + cmp #$80 ; CPU:$D6FA PRG:56FA C9 80 + bcs CheckIndicatorCount_Loop3 ; CPU:$D6FC PRG:56FC B0 0E + cmp #$13 ; CPU:$D6FE PRG:56FE C9 13 + beq SetIndicatorPointerA_Loop ; CPU:$D700 PRG:5700 F0 23 + sec ; CPU:$D702 PRG:5702 38 + sbc Zp63 ; CPU:$D703 PRG:5703 E5 63 + cmp #$02 ; CPU:$D705 PRG:5705 C9 02 + bcs SetIndicatorPointerA_Loop2 ; CPU:$D707 PRG:5707 B0 26 + jmp ClearIndicatorFlag ; CPU:$D709 PRG:5709 4C 95 D7 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorCount_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorCount_Loop3: + cmp #$82 ; CPU:$D70C PRG:570C C9 82 + beq CheckIndicatorCount_Loop4 ; CPU:$D70E PRG:570E F0 03 + jmp ClearIndicatorFlag ; CPU:$D710 PRG:5710 4C 95 D7 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorCount_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorCount_Loop4: + sec ; CPU:$D713 PRG:5713 38 + sbc Zp63 ; CPU:$D714 PRG:5714 E5 63 + cmp #$02 ; CPU:$D716 PRG:5716 C9 02 + bcs SetIndicatorPointerA_Loop2 ; CPU:$D718 PRG:5718 B0 15 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorPointerA +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorPointerA: + lda #$81 ; CPU:$D71A PRG:571A A9 81 + sta Zp62 ; CPU:$D71C PRG:571C 85 62 + lda #$80 ; CPU:$D71E PRG:571E A9 80 + sta Zp63 ; CPU:$D720 PRG:5720 85 63 + jmp ClearIndicatorFlag ; CPU:$D722 PRG:5722 4C 95 D7 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorPointerA_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorPointerA_Loop: + sec ; CPU:$D725 PRG:5725 38 + sbc Zp63 ; CPU:$D726 PRG:5726 E5 63 + cmp #$02 ; CPU:$D728 PRG:5728 C9 02 + bcs SetIndicatorPointerA_Loop2 ; CPU:$D72A PRG:572A B0 03 + jmp SetIndicatorPointerA ; CPU:$D72C PRG:572C 4C 1A D7 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorPointerA_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorPointerA_Loop2: + lda TeamNumber ; CPU:$D72F PRG:572F A5 66 + and #$0F ; CPU:$D731 PRG:5731 29 0F + sta NumberToDisplay ; CPU:$D733 PRG:5733 85 45 + lda Zp6D ; CPU:$D735 PRG:5735 A5 6D + and #$0F ; CPU:$D737 PRG:5737 29 0F + cmp NumberToDisplay ; CPU:$D739 PRG:5739 C5 45 + bne SetIndicatorPointerA_Loop3 ; CPU:$D73B PRG:573B D0 05 + lda #$01 ; CPU:$D73D PRG:573D A9 01 + jmp StoreIndicatorValue ; CPU:$D73F PRG:573F 4C 44 D7 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorPointerA_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorPointerA_Loop3: + lda #$02 ; CPU:$D742 PRG:5742 A9 02 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValue +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValue: + sta NumberToDisplay ; CPU:$D744 PRG:5744 85 45 + ldx TeamFlags ; CPU:$D746 PRG:5746 A6 67 + lda NumberToDisplay ; CPU:$D748 PRG:5748 A5 45 + sta IndicatorValue,x ; CPU:$D74A PRG:574A 95 68 + lda #$00 ; CPU:$D74C PRG:574C A9 00 + sta NumberToDisplay ; CPU:$D74E PRG:574E 85 45 + sta SpriteOffsetIndex ; CPU:$D750 PRG:5750 85 46 + ldx #$04 ; CPU:$D752 PRG:5752 A2 04 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValue_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValue_OnNonnegative: + lda IndicatorValue,x ; CPU:$D754 PRG:5754 B5 68 + beq StoreIndicatorValue_Loop2 ; CPU:$D756 PRG:5756 F0 0F + cmp #$01 ; CPU:$D758 PRG:5758 C9 01 + bne StoreIndicatorValue_Loop ; CPU:$D75A PRG:575A D0 05 + inc NumberToDisplay ; CPU:$D75C PRG:575C E6 45 + jmp StoreIndicatorValue_Loop2 ; CPU:$D75E PRG:575E 4C 67 D7 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValue_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValue_Loop: + cmp #$02 ; CPU:$D761 PRG:5761 C9 02 + bne StoreIndicatorValue_Loop2 ; CPU:$D763 PRG:5763 D0 02 + inc SpriteOffsetIndex ; CPU:$D765 PRG:5765 E6 46 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValue_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValue_Loop2: + dex ; CPU:$D767 PRG:5767 CA + bpl StoreIndicatorValue_OnNonnegative ; CPU:$D768 PRG:5768 10 EA + lda NumberToDisplay ; CPU:$D76A PRG:576A A5 45 + cmp #$03 ; CPU:$D76C PRG:576C C9 03 + beq StoreIndicatorValue_Loop3 ; CPU:$D76E PRG:576E F0 0F + lda SpriteOffsetIndex ; CPU:$D770 PRG:5770 A5 46 + cmp #$03 ; CPU:$D772 PRG:5772 C9 03 + beq StoreIndicatorValue_Loop4 ; CPU:$D774 PRG:5774 F0 14 + inc TeamFlags ; CPU:$D776 PRG:5776 E6 67 + lda #$01 ; CPU:$D778 PRG:5778 A9 01 + sta PointFlag ; CPU:$D77A PRG:577A 85 6F + jmp UpdateIndicatorBoardDone ; CPU:$D77C PRG:577C 4C 99 D7 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValue_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValue_Loop3: + lda #$0F ; CPU:$D77F PRG:577F A9 0F + sta TeamFlags ; CPU:$D781 PRG:5781 85 67 + lda #$02 ; CPU:$D783 PRG:5783 A9 02 + sta PointFlag ; CPU:$D785 PRG:5785 85 6F + jmp UpdateIndicatorBoardDone ; CPU:$D787 PRG:5787 4C 99 D7 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValue_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValue_Loop4: + lda #$0F ; CPU:$D78A PRG:578A A9 0F + sta TeamFlags ; CPU:$D78C PRG:578C 85 67 + lda #$03 ; CPU:$D78E PRG:578E A9 03 + sta PointFlag ; CPU:$D790 PRG:5790 85 6F + jmp UpdateIndicatorBoardDone ; CPU:$D792 PRG:5792 4C 99 D7 +; ----------------------------------------------------------------------------- +; Routine: ClearIndicatorFlag +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearIndicatorFlag: + lda #$00 ; CPU:$D795 PRG:5795 A9 00 + sta PointFlag ; CPU:$D797 PRG:5797 85 6F +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardDone +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardDone: + rts ; CPU:$D799 PRG:5799 60 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorPage +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorPage: + lda IndicatorIndex ; CPU:$D79A PRG:579A A5 64 + cmp #$F0 ; CPU:$D79C PRG:579C C9 F0 + beq CheckIndicatorPage_Loop ; CPU:$D79E PRG:579E F0 07 + lda #$F0 ; CPU:$D7A0 PRG:57A0 A9 F0 + sta IndicatorIndex ; CPU:$D7A2 PRG:57A2 85 64 + jmp ClearIndicatorFlagB ; CPU:$D7A4 PRG:57A4 4C 51 D8 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorPage_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorPage_Loop: + inc Zp63 ; CPU:$D7A7 PRG:57A7 E6 63 + lda Zp63 ; CPU:$D7A9 PRG:57A9 A5 63 + cmp #$0F ; CPU:$D7AB PRG:57AB C9 0F + bcs CheckIndicatorPage_Loop2 ; CPU:$D7AD PRG:57AD B0 03 + jmp ClearIndicatorFlagB ; CPU:$D7AF PRG:57AF 4C 51 D8 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorPage_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorPage_Loop2: + cmp #$80 ; CPU:$D7B2 PRG:57B2 C9 80 + bcs CheckIndicatorPage_Loop3 ; CPU:$D7B4 PRG:57B4 B0 0E + cmp #$13 ; CPU:$D7B6 PRG:57B6 C9 13 + beq SetIndicatorPointerB_Loop ; CPU:$D7B8 PRG:57B8 F0 23 + sec ; CPU:$D7BA PRG:57BA 38 + sbc Zp62 ; CPU:$D7BB PRG:57BB E5 62 + cmp #$02 ; CPU:$D7BD PRG:57BD C9 02 + bcs SetIndicatorPointerB_Loop2 ; CPU:$D7BF PRG:57BF B0 26 + jmp ClearIndicatorFlagB ; CPU:$D7C1 PRG:57C1 4C 51 D8 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorPage_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorPage_Loop3: + cmp #$82 ; CPU:$D7C4 PRG:57C4 C9 82 + beq CheckIndicatorPage_Loop4 ; CPU:$D7C6 PRG:57C6 F0 03 + jmp ClearIndicatorFlagB ; CPU:$D7C8 PRG:57C8 4C 51 D8 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorPage_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorPage_Loop4: + sec ; CPU:$D7CB PRG:57CB 38 + sbc Zp62 ; CPU:$D7CC PRG:57CC E5 62 + cmp #$02 ; CPU:$D7CE PRG:57CE C9 02 + bcs SetIndicatorPointerB_Loop2 ; CPU:$D7D0 PRG:57D0 B0 15 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorPointerB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorPointerB: + lda #$81 ; CPU:$D7D2 PRG:57D2 A9 81 + sta Zp63 ; CPU:$D7D4 PRG:57D4 85 63 + lda #$80 ; CPU:$D7D6 PRG:57D6 A9 80 + sta Zp62 ; CPU:$D7D8 PRG:57D8 85 62 + jmp ClearIndicatorFlagB ; CPU:$D7DA PRG:57DA 4C 51 D8 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorPointerB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorPointerB_Loop: + sec ; CPU:$D7DD PRG:57DD 38 + sbc Zp62 ; CPU:$D7DE PRG:57DE E5 62 + cmp #$02 ; CPU:$D7E0 PRG:57E0 C9 02 + bcs SetIndicatorPointerB_Loop2 ; CPU:$D7E2 PRG:57E2 B0 03 + jmp SetIndicatorPointerB ; CPU:$D7E4 PRG:57E4 4C D2 D7 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorPointerB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorPointerB_Loop2: + lda TeamNumber ; CPU:$D7E7 PRG:57E7 A5 66 + lsr a ; CPU:$D7E9 PRG:57E9 4A + lsr a ; CPU:$D7EA PRG:57EA 4A + lsr a ; CPU:$D7EB PRG:57EB 4A + lsr a ; CPU:$D7EC PRG:57EC 4A + sta NumberToDisplay ; CPU:$D7ED PRG:57ED 85 45 + lda Zp6D ; CPU:$D7EF PRG:57EF A5 6D + lsr a ; CPU:$D7F1 PRG:57F1 4A + lsr a ; CPU:$D7F2 PRG:57F2 4A + lsr a ; CPU:$D7F3 PRG:57F3 4A + lsr a ; CPU:$D7F4 PRG:57F4 4A + cmp NumberToDisplay ; CPU:$D7F5 PRG:57F5 C5 45 + bne SetIndicatorPointerB_Loop3 ; CPU:$D7F7 PRG:57F7 D0 05 + lda #$02 ; CPU:$D7F9 PRG:57F9 A9 02 + jmp StoreIndicatorValueB ; CPU:$D7FB PRG:57FB 4C 00 D8 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorPointerB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorPointerB_Loop3: + lda #$01 ; CPU:$D7FE PRG:57FE A9 01 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValueB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValueB: + sta NumberToDisplay ; CPU:$D800 PRG:5800 85 45 + ldx TeamFlags ; CPU:$D802 PRG:5802 A6 67 + lda NumberToDisplay ; CPU:$D804 PRG:5804 A5 45 + sta IndicatorValue,x ; CPU:$D806 PRG:5806 95 68 + lda #$00 ; CPU:$D808 PRG:5808 A9 00 + sta NumberToDisplay ; CPU:$D80A PRG:580A 85 45 + sta SpriteOffsetIndex ; CPU:$D80C PRG:580C 85 46 + ldx #$04 ; CPU:$D80E PRG:580E A2 04 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValueB_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValueB_OnNonnegative: + lda IndicatorValue,x ; CPU:$D810 PRG:5810 B5 68 + beq StoreIndicatorValueB_Loop2 ; CPU:$D812 PRG:5812 F0 0F + cmp #$01 ; CPU:$D814 PRG:5814 C9 01 + bne StoreIndicatorValueB_Loop ; CPU:$D816 PRG:5816 D0 05 + inc NumberToDisplay ; CPU:$D818 PRG:5818 E6 45 + jmp StoreIndicatorValueB_Loop2 ; CPU:$D81A PRG:581A 4C 23 D8 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValueB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValueB_Loop: + cmp #$02 ; CPU:$D81D PRG:581D C9 02 + bne StoreIndicatorValueB_Loop2 ; CPU:$D81F PRG:581F D0 02 + inc SpriteOffsetIndex ; CPU:$D821 PRG:5821 E6 46 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValueB_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValueB_Loop2: + dex ; CPU:$D823 PRG:5823 CA + bpl StoreIndicatorValueB_OnNonnegative ; CPU:$D824 PRG:5824 10 EA + lda NumberToDisplay ; CPU:$D826 PRG:5826 A5 45 + cmp #$03 ; CPU:$D828 PRG:5828 C9 03 + beq StoreIndicatorValueB_Loop3 ; CPU:$D82A PRG:582A F0 0F + lda SpriteOffsetIndex ; CPU:$D82C PRG:582C A5 46 + cmp #$03 ; CPU:$D82E PRG:582E C9 03 + beq StoreIndicatorValueB_Loop4 ; CPU:$D830 PRG:5830 F0 14 + inc TeamFlags ; CPU:$D832 PRG:5832 E6 67 + lda #$01 ; CPU:$D834 PRG:5834 A9 01 + sta PointFlag ; CPU:$D836 PRG:5836 85 6F + jmp UpdateIndicatorBoardDoneB ; CPU:$D838 PRG:5838 4C 55 D8 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValueB_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValueB_Loop3: + lda #$0F ; CPU:$D83B PRG:583B A9 0F + sta TeamFlags ; CPU:$D83D PRG:583D 85 67 + lda #$02 ; CPU:$D83F PRG:583F A9 02 + sta PointFlag ; CPU:$D841 PRG:5841 85 6F + jmp UpdateIndicatorBoardDoneB ; CPU:$D843 PRG:5843 4C 55 D8 +; ----------------------------------------------------------------------------- +; Routine: StoreIndicatorValueB_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreIndicatorValueB_Loop4: + lda #$0F ; CPU:$D846 PRG:5846 A9 0F + sta TeamFlags ; CPU:$D848 PRG:5848 85 67 + lda #$03 ; CPU:$D84A PRG:584A A9 03 + sta PointFlag ; CPU:$D84C PRG:584C 85 6F + jmp UpdateIndicatorBoardDoneB ; CPU:$D84E PRG:584E 4C 55 D8 +; ----------------------------------------------------------------------------- +; Routine: ClearIndicatorFlagB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ClearIndicatorFlagB: + lda #$00 ; CPU:$D851 PRG:5851 A9 00 + sta PointFlag ; CPU:$D853 PRG:5853 85 6F +; ----------------------------------------------------------------------------- +; Routine: UpdateIndicatorBoardDoneB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateIndicatorBoardDoneB: + rts ; CPU:$D855 PRG:5855 60 +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: DrawPlayersAndCrowd +; Global: Builds the sprite list for the players, the ball, the umpire and the +; crowd and hands it to the OAM shadow. +; Local: Called by the state handlers that need the picture updated. +; Parameters: none +; Returns: nothing +; Clobbers: A, X, Y and the OAM shadow. +; ----------------------------------------------------------------------------- +DrawPlayersAndCrowd: + lda #$02 ; CPU:$D856 PRG:5856 A9 02 + sta Zp00 ; CPU:$D858 PRG:5858 85 00 + lda CrowdOffsetB ; CPU:$D85A PRG:585A A5 87 + and #$01 ; CPU:$D85C PRG:585C 29 01 + clc ; CPU:$D85E PRG:585E 18 + adc CrowdOffsetA ; CPU:$D85F PRG:585F 65 85 + cmp #$00 ; CPU:$D861 PRG:5861 C9 00 + beq DrawPlayersAndCrowd_Loop ; CPU:$D863 PRG:5863 F0 0E + cmp #$01 ; CPU:$D865 PRG:5865 C9 01 + beq DrawPlayersAndCrowd_Loop2 ; CPU:$D867 PRG:5867 F0 18 + cmp #$02 ; CPU:$D869 PRG:5869 C9 02 + beq DrawPlayersAndCrowd_Loop3 ; CPU:$D86B PRG:586B F0 22 + jsr UpdateBallX ; CPU:$D86D PRG:586D 20 15 C1 + jmp DrawPlayersAndCrowd_Loop4 ; CPU:$D870 PRG:5870 4C 95 D8 +; ----------------------------------------------------------------------------- +; Routine: DrawPlayersAndCrowd_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawPlayersAndCrowd_Loop: + lda FrameCounter ; CPU:$D873 PRG:5873 A5 2D + and #$03 ; CPU:$D875 PRG:5875 29 03 + cmp #$03 ; CPU:$D877 PRG:5877 C9 03 + beq DrawPlayersAndCrowd_Loop4 ; CPU:$D879 PRG:5879 F0 1A + jsr UpdateBallX ; CPU:$D87B PRG:587B 20 15 C1 + jmp DrawPlayersAndCrowd_Loop4 ; CPU:$D87E PRG:587E 4C 95 D8 +; ----------------------------------------------------------------------------- +; Routine: DrawPlayersAndCrowd_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawPlayersAndCrowd_Loop2: + lda FrameCounter ; CPU:$D881 PRG:5881 A5 2D + and #$07 ; CPU:$D883 PRG:5883 29 07 + cmp #$07 ; CPU:$D885 PRG:5885 C9 07 + beq DrawPlayersAndCrowd_Loop4 ; CPU:$D887 PRG:5887 F0 0C + jsr UpdateBallX ; CPU:$D889 PRG:5889 20 15 C1 + jmp DrawPlayersAndCrowd_Loop4 ; CPU:$D88C PRG:588C 4C 95 D8 +; ----------------------------------------------------------------------------- +; Routine: DrawPlayersAndCrowd_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawPlayersAndCrowd_Loop3: + jsr UpdateBallX ; CPU:$D88F PRG:588F 20 15 C1 + jmp DrawPlayersAndCrowd_Loop4 ; CPU:$D892 PRG:5892 4C 95 D8 +; ----------------------------------------------------------------------------- +; Routine: DrawPlayersAndCrowd_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DrawPlayersAndCrowd_Loop4: + jsr InitBallAnimations ; CPU:$D895 PRG:5895 20 E6 C1 + jsr DrawPlayers ; CPU:$D898 PRG:5898 20 A6 C2 + jsr DrawCourt ; CPU:$D89B PRG:589B 20 6D C3 + jsr DrawScoreBoard ; CPU:$D89E PRG:589E 20 58 C7 + jsr CrowdSpriteLoopStart ; CPU:$D8A1 PRG:58A1 20 8C C7 + jsr BallAnimationCheckScroll ; CPU:$D8A4 PRG:58A4 20 92 C2 + jsr DrawNumberSpriteZ ; CPU:$D8A7 PRG:58A7 20 B7 CC + jsr CheckAnimateFlag ; CPU:$D8AA PRG:58AA 20 B8 CD + jsr DrawNumberSpriteAA ; CPU:$D8AD PRG:58AD 20 32 CE + jsr DrawNumberSpriteAD ; CPU:$D8B0 PRG:58B0 20 6A D0 + jsr CheckIndicatorFrame ; CPU:$D8B3 PRG:58B3 20 B7 D8 + rts ; CPU:$D8B6 PRG:58B6 60 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorFrame +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorFrame: + lda BallFrameCounter ; CPU:$D8B7 PRG:58B7 AD 02 05 + bne SetIndicatorDelay_Loop ; CPU:$D8BA PRG:58BA D0 1F + lda BallPreviousX ; CPU:$D8BC PRG:58BC AD 08 05 + beq CheckIndicatorFrame_Loop ; CPU:$D8BF PRG:58BF F0 10 + dec BallPreviousX ; CPU:$D8C1 PRG:58C1 CE 08 05 + lda BallPreviousX ; CPU:$D8C4 PRG:58C4 AD 08 05 + sta BallSpeed ; CPU:$D8C7 PRG:58C7 8D 05 05 + lda #$02 ; CPU:$D8CA PRG:58CA A9 02 + sta MusicPlayingFlag ; CPU:$D8CC PRG:58CC 85 EE + jmp SetIndicatorDelay ; CPU:$D8CE PRG:58CE 4C D6 D8 +; ----------------------------------------------------------------------------- +; Routine: CheckIndicatorFrame_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckIndicatorFrame_Loop: + lda #$00 ; CPU:$D8D1 PRG:58D1 A9 00 + sta BallSpeed ; CPU:$D8D3 PRG:58D3 8D 05 05 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorDelay +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorDelay: + lda #$08 ; CPU:$D8D6 PRG:58D6 A9 08 + sta BallCountdown ; CPU:$D8D8 PRG:58D8 8D 06 05 +; ----------------------------------------------------------------------------- +; Routine: SetIndicatorDelay_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetIndicatorDelay_Loop: + jsr BallAdvancePosition ; CPU:$D8DB PRG:58DB 20 E6 A9 + rts ; CPU:$D8DE PRG:58DE 60 +; ----------------------------------------------------------------------------- +; Routine: ResetTeamPositions +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ResetTeamPositions: + lda #$05 ; CPU:$D8DF PRG:58DF A9 05 + sta TableIndex ; CPU:$D8E1 PRG:58E1 85 4E + lda NumberToDisplay ; CPU:$D8E3 PRG:58E3 A5 45 + clc ; CPU:$D8E5 PRG:58E5 18 + adc #$0A ; CPU:$D8E6 PRG:58E6 69 0A + tax ; CPU:$D8E8 PRG:58E8 AA +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexG +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexG: + lda TableIndex ; CPU:$D8E9 PRG:58E9 A5 4E + asl a ; CPU:$D8EB PRG:58EB 0A + asl a ; CPU:$D8EC PRG:58EC 0A + asl a ; CPU:$D8ED PRG:58ED 0A + tay ; CPU:$D8EE PRG:58EE A8 + lda SpriteTileTable,x ; CPU:$D8EF PRG:58EF BD D9 DA + sta BallTargetPositionX,y ; CPU:$D8F2 PRG:58F2 99 11 05 + lda $DADA,x ; CPU:$D8F5 PRG:58F5 BD DA DA + sta BallTargetPositionY,y ; CPU:$D8F8 PRG:58F8 99 12 05 + dec TableIndex ; CPU:$D8FB PRG:58FB C6 4E +ResetTeamPositionsB: + bpl ResetTeamPositionsB_Loop ; CPU:$D8FD PRG:58FD 10 01 + rts ; CPU:$D8FF PRG:58FF 60 +; ----------------------------------------------------------------------------- +; Routine: ResetTeamPositionsB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ResetTeamPositionsB_Loop: + dex ; CPU:$D900 PRG:5900 CA + dex ; CPU:$D901 PRG:5901 CA + jmp GetTileIndexG ; CPU:$D902 PRG:5902 4C E9 D8 +; ----------------------------------------------------------------------------- +; Routine: SetTeamPositionsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetTeamPositionsB: + lda #$0B ; CPU:$D905 PRG:5905 A9 0B + sta TableIndex ; CPU:$D907 PRG:5907 85 4E + lda NumberToDisplay ; CPU:$D909 PRG:5909 A5 45 + clc ; CPU:$D90B PRG:590B 18 + adc #$0A ; CPU:$D90C PRG:590C 69 0A + tax ; CPU:$D90E PRG:590E AA +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexH +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexH: + lda TableIndex ; CPU:$D90F PRG:590F A5 4E + asl a ; CPU:$D911 PRG:5911 0A + asl a ; CPU:$D912 PRG:5912 0A + asl a ; CPU:$D913 PRG:5913 0A + tay ; CPU:$D914 PRG:5914 A8 + lda $DB09,x ; CPU:$D915 PRG:5915 BD 09 DB + sta BallTargetPositionX,y ; CPU:$D918 PRG:5918 99 11 05 + lda $DB0A,x ; CPU:$D91B PRG:591B BD 0A DB + sta BallTargetPositionY,y ; CPU:$D91E PRG:591E 99 12 05 + dec TableIndex ; CPU:$D921 PRG:5921 C6 4E + lda TableIndex ; CPU:$D923 PRG:5923 A5 4E + cmp #$05 ; CPU:$D925 PRG:5925 C9 05 + bne GetTileIndexH_Loop ; CPU:$D927 PRG:5927 D0 01 + rts ; CPU:$D929 PRG:5929 60 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexH_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexH_Loop: + dex ; CPU:$D92A PRG:592A CA + dex ; CPU:$D92B PRG:592B CA + jmp GetTileIndexH ; CPU:$D92C PRG:592C 4C 0F D9 +; ----------------------------------------------------------------------------- +; Routine: SetTeamScores +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetTeamScores: + lda #$05 ; CPU:$D92F PRG:592F A9 05 + sta TableIndex ; CPU:$D931 PRG:5931 85 4E +; ----------------------------------------------------------------------------- +; Routine: SetTeamScores_OnNonnegative +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetTeamScores_OnNonnegative: + lda TableIndex ; CPU:$D933 PRG:5933 A5 4E + asl a ; CPU:$D935 PRG:5935 0A + asl a ; CPU:$D936 PRG:5936 0A + asl a ; CPU:$D937 PRG:5937 0A + tay ; CPU:$D938 PRG:5938 A8 + lda NumberToDisplay ; CPU:$D939 PRG:5939 A5 45 + sta ScoreRecord,y ; CPU:$D93B PRG:593B 99 13 05 + lda #$00 ; CPU:$D93E PRG:593E A9 00 + sta $0514,y ; CPU:$D940 PRG:5940 99 14 05 + dec TableIndex ; CPU:$D943 PRG:5943 C6 4E + bpl SetTeamScores_OnNonnegative ; CPU:$D945 PRG:5945 10 EC + rts ; CPU:$D947 PRG:5947 60 +; ----------------------------------------------------------------------------- +; Routine: SetTeamScoresB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetTeamScoresB: + lda #$0B ; CPU:$D948 PRG:5948 A9 0B + sta TableIndex ; CPU:$D94A PRG:594A 85 4E +; ----------------------------------------------------------------------------- +; Routine: SetTeamScoresB_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetTeamScoresB_OnNonzero: + lda TableIndex ; CPU:$D94C PRG:594C A5 4E + asl a ; CPU:$D94E PRG:594E 0A + asl a ; CPU:$D94F PRG:594F 0A + asl a ; CPU:$D950 PRG:5950 0A + tay ; CPU:$D951 PRG:5951 A8 + lda NumberToDisplay ; CPU:$D952 PRG:5952 A5 45 + sta ScoreRecord,y ; CPU:$D954 PRG:5954 99 13 05 + lda #$00 ; CPU:$D957 PRG:5957 A9 00 + sta $0514,y ; CPU:$D959 PRG:5959 99 14 05 + dec TableIndex ; CPU:$D95C PRG:595C C6 4E + lda TableIndex ; CPU:$D95E PRG:595E A5 4E + cmp #$05 ; CPU:$D960 PRG:5960 C9 05 + bne SetTeamScoresB_OnNonzero ; CPU:$D962 PRG:5962 D0 E8 + rts ; CPU:$D964 PRG:5964 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateTeamPlayerPositions +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateTeamPlayerPositions: + lda #$05 ; CPU:$D965 PRG:5965 A9 05 + sta TableIndex ; CPU:$D967 PRG:5967 85 4E + ldx #$0A ; CPU:$D969 PRG:5969 A2 0A +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexI +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexI: + lda TableIndex ; CPU:$D96B PRG:596B A5 4E + asl a ; CPU:$D96D PRG:596D 0A + asl a ; CPU:$D96E PRG:596E 0A + asl a ; CPU:$D96F PRG:596F 0A + tay ; CPU:$D970 PRG:5970 A8 + lda BallTargetPositionX,y ; CPU:$D971 PRG:5971 B9 11 05 + cmp #$80 ; CPU:$D974 PRG:5974 C9 80 + bcs GetTileIndexI_Loop ; CPU:$D976 PRG:5976 B0 03 + jmp GetTileIndexI_Loop2 ; CPU:$D978 PRG:5978 4C 85 D9 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexI_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexI_Loop: + lda BallTargetPositionY,y ; CPU:$D97B PRG:597B B9 12 05 + cmp #$2C ; CPU:$D97E PRG:597E C9 2C + bcc GetTileIndexI_Loop2 ; CPU:$D980 PRG:5980 90 03 + jmp NextPlayerPosition ; CPU:$D982 PRG:5982 4C B1 D9 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexI_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexI_Loop2: + lda BallTargetPositionY,y ; CPU:$D985 PRG:5985 B9 12 05 + cmp #$28 ; CPU:$D988 PRG:5988 C9 28 + beq GetTileIndexI_Loop3 ; CPU:$D98A PRG:598A F0 09 + sec ; CPU:$D98C PRG:598C 38 + sbc #$02 ; CPU:$D98D PRG:598D E9 02 + sta BallTargetPositionY,y ; CPU:$D98F PRG:598F 99 12 05 + jmp NextPlayerPosition ; CPU:$D992 PRG:5992 4C B1 D9 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexI_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexI_Loop3: + lda BallTargetPositionX,y ; CPU:$D995 PRG:5995 B9 11 05 + cmp #$B8 ; CPU:$D998 PRG:5998 C9 B8 + beq GetTileIndexI_Loop4 ; CPU:$D99A PRG:599A F0 09 + sec ; CPU:$D99C PRG:599C 38 + sbc #$02 ; CPU:$D99D PRG:599D E9 02 + sta BallTargetPositionX,y ; CPU:$D99F PRG:599F 99 11 05 + jmp NextPlayerPosition ; CPU:$D9A2 PRG:59A2 4C B1 D9 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexI_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexI_Loop4: + lda $DB09,x ; CPU:$D9A5 PRG:59A5 BD 09 DB + sta BallTargetPositionX,y ; CPU:$D9A8 PRG:59A8 99 11 05 + lda $DB0A,x ; CPU:$D9AB PRG:59AB BD 0A DB + sta BallTargetPositionY,y ; CPU:$D9AE PRG:59AE 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: NextPlayerPosition +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextPlayerPosition: + dec TableIndex ; CPU:$D9B1 PRG:59B1 C6 4E + bpl NextPlayerPosition_Loop ; CPU:$D9B3 PRG:59B3 10 01 + rts ; CPU:$D9B5 PRG:59B5 60 +; ----------------------------------------------------------------------------- +; Routine: NextPlayerPosition_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextPlayerPosition_Loop: + dex ; CPU:$D9B6 PRG:59B6 CA + dex ; CPU:$D9B7 PRG:59B7 CA + jmp GetTileIndexI ; CPU:$D9B8 PRG:59B8 4C 6B D9 +; ----------------------------------------------------------------------------- +; Routine: UpdateTeamPlayerPositionsB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateTeamPlayerPositionsB: + lda #$0B ; CPU:$D9BB PRG:59BB A9 0B + sta TableIndex ; CPU:$D9BD PRG:59BD 85 4E + ldx #$0A ; CPU:$D9BF PRG:59BF A2 0A +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexJ +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexJ: + lda TableIndex ; CPU:$D9C1 PRG:59C1 A5 4E + asl a ; CPU:$D9C3 PRG:59C3 0A + asl a ; CPU:$D9C4 PRG:59C4 0A + asl a ; CPU:$D9C5 PRG:59C5 0A + tay ; CPU:$D9C6 PRG:59C6 A8 + lda BallTargetPositionX,y ; CPU:$D9C7 PRG:59C7 B9 11 05 + cmp #$80 ; CPU:$D9CA PRG:59CA C9 80 + bcc GetTileIndexJ_Loop ; CPU:$D9CC PRG:59CC 90 03 + jmp GetTileIndexJ_Loop2 ; CPU:$D9CE PRG:59CE 4C DB D9 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexJ_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexJ_Loop: + lda BallTargetPositionY,y ; CPU:$D9D1 PRG:59D1 B9 12 05 + cmp #$84 ; CPU:$D9D4 PRG:59D4 C9 84 + bcs GetTileIndexJ_Loop2 ; CPU:$D9D6 PRG:59D6 B0 03 + jmp UpdateTeamPlayerPositionsC ; CPU:$D9D8 PRG:59D8 4C 07 DA +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexJ_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexJ_Loop2: + lda BallTargetPositionY,y ; CPU:$D9DB PRG:59DB B9 12 05 + cmp #$88 ; CPU:$D9DE PRG:59DE C9 88 + beq GetTileIndexJ_Loop3 ; CPU:$D9E0 PRG:59E0 F0 09 + clc ; CPU:$D9E2 PRG:59E2 18 + adc #$02 ; CPU:$D9E3 PRG:59E3 69 02 + sta BallTargetPositionY,y ; CPU:$D9E5 PRG:59E5 99 12 05 + jmp UpdateTeamPlayerPositionsC ; CPU:$D9E8 PRG:59E8 4C 07 DA +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexJ_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexJ_Loop3: + lda BallTargetPositionX,y ; CPU:$D9EB PRG:59EB B9 11 05 + cmp #$48 ; CPU:$D9EE PRG:59EE C9 48 + beq GetTileIndexJ_Loop4 ; CPU:$D9F0 PRG:59F0 F0 09 + clc ; CPU:$D9F2 PRG:59F2 18 + adc #$02 ; CPU:$D9F3 PRG:59F3 69 02 + sta BallTargetPositionX,y ; CPU:$D9F5 PRG:59F5 99 11 05 + jmp UpdateTeamPlayerPositionsC ; CPU:$D9F8 PRG:59F8 4C 07 DA +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexJ_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexJ_Loop4: + lda SpriteTileTable,x ; CPU:$D9FB PRG:59FB BD D9 DA + sta BallTargetPositionX,y ; CPU:$D9FE PRG:59FE 99 11 05 + lda $DADA,x ; CPU:$DA01 PRG:5A01 BD DA DA + sta BallTargetPositionY,y ; CPU:$DA04 PRG:5A04 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: UpdateTeamPlayerPositionsC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateTeamPlayerPositionsC: + dec TableIndex ; CPU:$DA07 PRG:5A07 C6 4E + lda TableIndex ; CPU:$DA09 PRG:5A09 A5 4E + cmp #$05 ; CPU:$DA0B PRG:5A0B C9 05 + bne UpdateTeamPlayerPositionsC_Loop ; CPU:$DA0D PRG:5A0D D0 01 + rts ; CPU:$DA0F PRG:5A0F 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateTeamPlayerPositionsC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateTeamPlayerPositionsC_Loop: + dex ; CPU:$DA10 PRG:5A10 CA + dex ; CPU:$DA11 PRG:5A11 CA + jmp GetTileIndexJ ; CPU:$DA12 PRG:5A12 4C C1 D9 +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPositionLoop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitPlayerPositionLoop: + lda #$05 ; CPU:$DA15 PRG:5A15 A9 05 + sta TableIndex ; CPU:$DA17 PRG:5A17 85 4E + lda NumberToDisplay ; CPU:$DA19 PRG:5A19 A5 45 + clc ; CPU:$DA1B PRG:5A1B 18 + adc #$0A ; CPU:$DA1C PRG:5A1C 69 0A + tax ; CPU:$DA1E PRG:5A1E AA +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexK +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexK: + lda TableIndex ; CPU:$DA1F PRG:5A1F A5 4E + asl a ; CPU:$DA21 PRG:5A21 0A + asl a ; CPU:$DA22 PRG:5A22 0A + asl a ; CPU:$DA23 PRG:5A23 0A + tay ; CPU:$DA24 PRG:5A24 A8 + lda SpriteTileTable,x ; CPU:$DA25 PRG:5A25 BD D9 DA + sta BallPositionX,y ; CPU:$DA28 PRG:5A28 99 0F 05 + sta BallTargetPositionX,y ; CPU:$DA2B PRG:5A2B 99 11 05 + lda $DADA,x ; CPU:$DA2E PRG:5A2E BD DA DA + sta BallPositionY,y ; CPU:$DA31 PRG:5A31 99 10 05 + sta BallTargetPositionY,y ; CPU:$DA34 PRG:5A34 99 12 05 + dec TableIndex ; CPU:$DA37 PRG:5A37 C6 4E + bpl GetTileIndexK_Loop ; CPU:$DA39 PRG:5A39 10 01 + rts ; CPU:$DA3B PRG:5A3B 60 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexK_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexK_Loop: + dex ; CPU:$DA3C PRG:5A3C CA + dex ; CPU:$DA3D PRG:5A3D CA + jmp GetTileIndexK ; CPU:$DA3E PRG:5A3E 4C 1F DA +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPositionLoopB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitPlayerPositionLoopB: + lda #$0B ; CPU:$DA41 PRG:5A41 A9 0B + sta TableIndex ; CPU:$DA43 PRG:5A43 85 4E + lda NumberToDisplay ; CPU:$DA45 PRG:5A45 A5 45 + clc ; CPU:$DA47 PRG:5A47 18 + adc #$0A ; CPU:$DA48 PRG:5A48 69 0A + tax ; CPU:$DA4A PRG:5A4A AA +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexL +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexL: + lda TableIndex ; CPU:$DA4B PRG:5A4B A5 4E + asl a ; CPU:$DA4D PRG:5A4D 0A + asl a ; CPU:$DA4E PRG:5A4E 0A + asl a ; CPU:$DA4F PRG:5A4F 0A + tay ; CPU:$DA50 PRG:5A50 A8 + lda $DB09,x ; CPU:$DA51 PRG:5A51 BD 09 DB + sta BallPositionX,y ; CPU:$DA54 PRG:5A54 99 0F 05 + sta BallTargetPositionX,y ; CPU:$DA57 PRG:5A57 99 11 05 + lda $DB0A,x ; CPU:$DA5A PRG:5A5A BD 0A DB + sta BallPositionY,y ; CPU:$DA5D PRG:5A5D 99 10 05 + sta BallTargetPositionY,y ; CPU:$DA60 PRG:5A60 99 12 05 + dec TableIndex ; CPU:$DA63 PRG:5A63 C6 4E + lda TableIndex ; CPU:$DA65 PRG:5A65 A5 4E + cmp #$05 ; CPU:$DA67 PRG:5A67 C9 05 + bne GetTileIndexL_Loop ; CPU:$DA69 PRG:5A69 D0 01 + rts ; CPU:$DA6B PRG:5A6B 60 +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexL_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexL_Loop: + dex ; CPU:$DA6C PRG:5A6C CA + dex ; CPU:$DA6D PRG:5A6D CA + jmp GetTileIndexL ; CPU:$DA6E PRG:5A6E 4C 4B DA +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPositionLoopC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitPlayerPositionLoopC: + lda #$05 ; CPU:$DA71 PRG:5A71 A9 05 + sta TableIndex ; CPU:$DA73 PRG:5A73 85 4E + ldx #$0A ; CPU:$DA75 PRG:5A75 A2 0A +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexM +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexM: + lda TableIndex ; CPU:$DA77 PRG:5A77 A5 4E + asl a ; CPU:$DA79 PRG:5A79 0A + asl a ; CPU:$DA7A PRG:5A7A 0A + asl a ; CPU:$DA7B PRG:5A7B 0A + tay ; CPU:$DA7C PRG:5A7C A8 + lda BallTargetPositionX,y ; CPU:$DA7D PRG:5A7D B9 11 05 + cmp #$58 ; CPU:$DA80 PRG:5A80 C9 58 + beq GetTileIndexM_Loop ; CPU:$DA82 PRG:5A82 F0 09 + sec ; CPU:$DA84 PRG:5A84 38 + sbc #$02 ; CPU:$DA85 PRG:5A85 E9 02 + sta BallTargetPositionX,y ; CPU:$DA87 PRG:5A87 99 11 05 + jmp NextPlayerPositionB ; CPU:$DA8A PRG:5A8A 4C 99 DA +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexM_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexM_Loop: + lda SpriteTileTable,x ; CPU:$DA8D PRG:5A8D BD D9 DA + sta BallTargetPositionX,y ; CPU:$DA90 PRG:5A90 99 11 05 + lda $DADA,x ; CPU:$DA93 PRG:5A93 BD DA DA + sta BallTargetPositionY,y ; CPU:$DA96 PRG:5A96 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: NextPlayerPositionB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextPlayerPositionB: + dec TableIndex ; CPU:$DA99 PRG:5A99 C6 4E + bpl NextPlayerPositionB_Loop ; CPU:$DA9B PRG:5A9B 10 01 + rts ; CPU:$DA9D PRG:5A9D 60 +; ----------------------------------------------------------------------------- +; Routine: NextPlayerPositionB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NextPlayerPositionB_Loop: + dex ; CPU:$DA9E PRG:5A9E CA + dex ; CPU:$DA9F PRG:5A9F CA + jmp GetTileIndexM ; CPU:$DAA0 PRG:5AA0 4C 77 DA +; ----------------------------------------------------------------------------- +; Routine: InitPlayerPositionLoopD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitPlayerPositionLoopD: + lda #$0B ; CPU:$DAA3 PRG:5AA3 A9 0B + sta TableIndex ; CPU:$DAA5 PRG:5AA5 85 4E + ldx #$0A ; CPU:$DAA7 PRG:5AA7 A2 0A +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexN +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexN: + lda TableIndex ; CPU:$DAA9 PRG:5AA9 A5 4E + asl a ; CPU:$DAAB PRG:5AAB 0A + asl a ; CPU:$DAAC PRG:5AAC 0A + asl a ; CPU:$DAAD PRG:5AAD 0A + tay ; CPU:$DAAE PRG:5AAE A8 + lda BallTargetPositionX,y ; CPU:$DAAF PRG:5AAF B9 11 05 + cmp #$A8 ; CPU:$DAB2 PRG:5AB2 C9 A8 + beq GetTileIndexN_Loop ; CPU:$DAB4 PRG:5AB4 F0 09 + sec ; CPU:$DAB6 PRG:5AB6 38 + sbc #$02 ; CPU:$DAB7 PRG:5AB7 E9 02 + sta BallTargetPositionX,y ; CPU:$DAB9 PRG:5AB9 99 11 05 + jmp CheckPlayerPositionCount ; CPU:$DABC PRG:5ABC 4C CB DA +; ----------------------------------------------------------------------------- +; Routine: GetTileIndexN_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetTileIndexN_Loop: + lda $DB09,x ; CPU:$DABF PRG:5ABF BD 09 DB + sta BallTargetPositionX,y ; CPU:$DAC2 PRG:5AC2 99 11 05 + lda $DB0A,x ; CPU:$DAC5 PRG:5AC5 BD 0A DB + sta BallTargetPositionY,y ; CPU:$DAC8 PRG:5AC8 99 12 05 +; ----------------------------------------------------------------------------- +; Routine: CheckPlayerPositionCount +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckPlayerPositionCount: + dec TableIndex ; CPU:$DACB PRG:5ACB C6 4E + lda TableIndex ; CPU:$DACD PRG:5ACD A5 4E + cmp #$05 ; CPU:$DACF PRG:5ACF C9 05 + bne CheckPlayerPositionCount_Loop ; CPU:$DAD1 PRG:5AD1 D0 01 + rts ; CPU:$DAD3 PRG:5AD3 60 +; ----------------------------------------------------------------------------- +; Routine: CheckPlayerPositionCount_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +CheckPlayerPositionCount_Loop: + dex ; CPU:$DAD4 PRG:5AD4 CA + dex ; CPU:$DAD5 PRG:5AD5 CA + jmp GetTileIndexN ; CPU:$DAD6 PRG:5AD6 4C A9 DA +; ---- data $DAD9-$DB38 (96 bytes) ---- +; 48 four-byte OAM entries (Y, tile, X, attribute) describing the players, +; the ball and the umpire. +SpriteTileTable: +; referenced by `lda $DAFD,x` at $CB6E (operand $DAFD falls inside this region) +; referenced by `lda $DAFE,x` at $CB74 (operand $DAFE falls inside this region) +; referenced by `lda $DB2D,x` at $CB9C (operand $DB2D falls inside this region) +; referenced by `lda $DB2E,x` at $CBA2 (operand $DB2E falls inside this region) +; referenced by `lda $DAD9,x` at $D8EF (operand $DAD9 falls inside this region) +; referenced by `lda $DADA,x` at $D8F5 (operand $DADA falls inside this region) +; ... and 14 further references from decoded code + .byte $58, $80, $58, $70, $58, $60, $58, $50, $58, $40, $58, $30, $14, $80, $3C, $80 ; CPU:$DAD9 PRG:5AD9 58 80 58 70 58 60 58 50 58 40 58 30 14 80 3C 80 + .byte $1E, $6C, $32, $6C, $24, $5C, $2E, $5C, $58, $30, $5E, $30, $66, $30, $6E, $30 ; CPU:$DAE9 PRG:5AE9 1E 6C 32 6C 24 5C 2E 5C 58 30 5E 30 66 30 6E 30 + .byte $76, $30, $7E, $30, $14, $76, $3C, $76, $0A, $58, $30, $58, $14, $3A, $3C, $3A ; CPU:$DAF9 PRG:5AF9 76 30 7E 30 14 76 3C 76 0A 58 30 58 14 3A 3C 3A + .byte $A8, $80, $A8, $70, $A8, $60, $A8, $50, $A8, $40, $A8, $30, $EC, $80, $C4, $80 ; CPU:$DB09 PRG:5B09 A8 80 A8 70 A8 60 A8 50 A8 40 A8 30 EC 80 C4 80 + .byte $E2, $6C, $CE, $6C, $DC, $5C, $D2, $5C, $52, $28, $5A, $28, $62, $28, $6A, $28 ; CPU:$DB19 PRG:5B19 E2 6C CE 6C DC 5C D2 5C 52 28 5A 28 62 28 6A 28 + .byte $72, $28, $7A, $28, $EC, $76, $C4, $76, $F6, $58, $D0, $58, $EC, $3A, $C4, $3A ; CPU:$DB29 PRG:5B29 72 28 7A 28 EC 76 C4 76 F6 58 D0 58 EC 3A C4 3A +; ----------------------------------------------------------------------------- +; Routine: LoadBackgroundTilemap +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadBackgroundTilemap: + lda #$FF ; CPU:$DB39 PRG:5B39 A9 FF + sta OamDirty ; CPU:$DB3B PRG:5B3B 85 44 + lda TitleFlag ; CPU:$DB3D PRG:5B3D A5 8D + beq LoadBackgroundTilemap_Loop ; CPU:$DB3F PRG:5B3F F0 05 + ldy #$20 ; CPU:$DB41 PRG:5B41 A0 20 + jmp SetBackgroundTileRow ; CPU:$DB43 PRG:5B43 4C 4F DB +; ----------------------------------------------------------------------------- +; Routine: LoadBackgroundTilemap_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadBackgroundTilemap_Loop: + lda TeamNumber ; CPU:$DB46 PRG:5B46 A5 66 + lsr a ; CPU:$DB48 PRG:5B48 4A + lsr a ; CPU:$DB49 PRG:5B49 4A + lsr a ; CPU:$DB4A PRG:5B4A 4A + lsr a ; CPU:$DB4B PRG:5B4B 4A + asl a ; CPU:$DB4C PRG:5B4C 0A + asl a ; CPU:$DB4D PRG:5B4D 0A + tay ; CPU:$DB4E PRG:5B4E A8 +; ----------------------------------------------------------------------------- +; Routine: SetBackgroundTileRow +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetBackgroundTileRow: + ldx #$04 ; CPU:$DB4F PRG:5B4F A2 04 +; ----------------------------------------------------------------------------- +; Routine: WriteBackgroundTile +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteBackgroundTile: + lda BackgroundTilemapData,y ; CPU:$DB51 PRG:5B51 B9 7E DB + sta $040B,x ; CPU:$DB54 PRG:5B54 9D 0B 04 + dex ; CPU:$DB57 PRG:5B57 CA + beq WriteBackgroundTile_Loop ; CPU:$DB58 PRG:5B58 F0 04 + iny ; CPU:$DB5A PRG:5B5A C8 + jmp WriteBackgroundTile ; CPU:$DB5B PRG:5B5B 4C 51 DB +; ----------------------------------------------------------------------------- +; Routine: WriteBackgroundTile_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteBackgroundTile_Loop: + lda TitleFlag ; CPU:$DB5E PRG:5B5E A5 8D + beq WriteBackgroundTile_Loop2 ; CPU:$DB60 PRG:5B60 F0 05 + ldy #$20 ; CPU:$DB62 PRG:5B62 A0 20 + jmp SetAttributeRow ; CPU:$DB64 PRG:5B64 4C 6E DB +; ----------------------------------------------------------------------------- +; Routine: WriteBackgroundTile_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteBackgroundTile_Loop2: + lda TeamNumber ; CPU:$DB67 PRG:5B67 A5 66 + and #$0F ; CPU:$DB69 PRG:5B69 29 0F + asl a ; CPU:$DB6B PRG:5B6B 0A + asl a ; CPU:$DB6C PRG:5B6C 0A + tay ; CPU:$DB6D PRG:5B6D A8 +; ----------------------------------------------------------------------------- +; Routine: SetAttributeRow +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetAttributeRow: + ldx #$04 ; CPU:$DB6E PRG:5B6E A2 04 +; ----------------------------------------------------------------------------- +; Routine: WriteAttributeTile +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteAttributeTile: + lda BackgroundTilemapData,y ; CPU:$DB70 PRG:5B70 B9 7E DB + sta $0407,x ; CPU:$DB73 PRG:5B73 9D 07 04 + dex ; CPU:$DB76 PRG:5B76 CA + bne WriteAttributeTile_Loop ; CPU:$DB77 PRG:5B77 D0 01 + rts ; CPU:$DB79 PRG:5B79 60 +; ----------------------------------------------------------------------------- +; Routine: WriteAttributeTile_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +WriteAttributeTile_Loop: + iny ; CPU:$DB7A PRG:5B7A C8 + jmp WriteAttributeTile ; CPU:$DB7B PRG:5B7B 4C 70 DB +; ---- data $DB7E-$DBA1 (36 bytes) ---- +; 36 bytes of nametable data copied to $0407 and $040B by +; LoadBackgroundTilemap. +BackgroundTilemapData: +; referenced by `lda $DB7E,y` at $DB51 (operand $DB7E falls inside this region) +; referenced by `lda $DB7E,y` at $DB70 (operand $DB7E falls inside this region) + .byte $0F, $17, $0F, $30, $0F, $17, $24, $30, $0F, $0F, $04, $36, $0F, $0F, $29, $17 ; CPU:$DB7E PRG:5B7E 0F 17 0F 30 0F 17 24 30 0F 0F 04 36 0F 0F 29 17 + .byte $0F, $0F, $15, $36, $0F, $0F, $37, $17, $0F, $0F, $11, $36, $0F, $17, $2A, $30 ; CPU:$DB8E PRG:5B8E 0F 0F 15 36 0F 0F 37 17 0F 0F 11 36 0F 17 2A 30 + .byte $0F, $0F, $20, $36 ; CPU:$DB9E PRG:5B9E 0F 0F 20 36 +; ----------------------------------------------------------------------------- +; Routine: QueueScreenUpdate +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +QueueScreenUpdate: + lda #$14 ; CPU:$DBA2 PRG:5BA2 A9 14 + sta $05C0 ; CPU:$DBA4 PRG:5BA4 8D C0 05 + lda #$02 ; CPU:$DBA7 PRG:5BA7 A9 02 + sta $05C1 ; CPU:$DBA9 PRG:5BA9 8D C1 05 + lda TeamNumber ; CPU:$DBAC PRG:5BAC A5 66 + lsr a ; CPU:$DBAE PRG:5BAE 4A + lsr a ; CPU:$DBAF PRG:5BAF 4A + lsr a ; CPU:$DBB0 PRG:5BB0 4A + lsr a ; CPU:$DBB1 PRG:5BB1 4A + asl a ; CPU:$DBB2 PRG:5BB2 0A + asl a ; CPU:$DBB3 PRG:5BB3 0A + tay ; CPU:$DBB4 PRG:5BB4 A8 + lda TitleFlag ; CPU:$DBB5 PRG:5BB5 A5 8D + beq QueueScreenUpdate_Loop2 ; CPU:$DBB7 PRG:5BB7 F0 0F + cpy #$1C ; CPU:$DBB9 PRG:5BB9 C0 1C + bne QueueScreenUpdate_Loop ; CPU:$DBBB PRG:5BBB D0 05 + ldy #$24 ; CPU:$DBBD PRG:5BBD A0 24 + jmp QueueScreenUpdate_Loop2 ; CPU:$DBBF PRG:5BBF 4C C8 DB +; ----------------------------------------------------------------------------- +; Routine: QueueScreenUpdate_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +QueueScreenUpdate_Loop: + cpy #$00 ; CPU:$DBC2 PRG:5BC2 C0 00 + bne QueueScreenUpdate_Loop2 ; CPU:$DBC4 PRG:5BC4 D0 02 + ldy #$20 ; CPU:$DBC6 PRG:5BC6 A0 20 +; ----------------------------------------------------------------------------- +; Routine: QueueScreenUpdate_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +QueueScreenUpdate_Loop2: + lda NationNameTable,y ; CPU:$DBC8 PRG:5BC8 B9 26 DC + sta $05C2 ; CPU:$DBCB PRG:5BCB 8D C2 05 + lda $DC27,y ; CPU:$DBCE PRG:5BCE B9 27 DC + sta $05C3 ; CPU:$DBD1 PRG:5BD1 8D C3 05 + lda $DC28,y ; CPU:$DBD4 PRG:5BD4 B9 28 DC + sta $05C4 ; CPU:$DBD7 PRG:5BD7 8D C4 05 + lda #$FE ; CPU:$DBDA PRG:5BDA A9 FE + sta $05C5 ; CPU:$DBDC PRG:5BDC 8D C5 05 + lda #$1F ; CPU:$DBDF PRG:5BDF A9 1F + sta $05C6 ; CPU:$DBE1 PRG:5BE1 8D C6 05 + lda #$02 ; CPU:$DBE4 PRG:5BE4 A9 02 + sta $05C7 ; CPU:$DBE6 PRG:5BE6 8D C7 05 + lda TeamNumber ; CPU:$DBE9 PRG:5BE9 A5 66 + and #$0F ; CPU:$DBEB PRG:5BEB 29 0F + asl a ; CPU:$DBED PRG:5BED 0A + asl a ; CPU:$DBEE PRG:5BEE 0A + tay ; CPU:$DBEF PRG:5BEF A8 + lda TitleFlag ; CPU:$DBF0 PRG:5BF0 A5 8D + beq QueueScreenUpdate_Loop4 ; CPU:$DBF2 PRG:5BF2 F0 0F + cpy #$1C ; CPU:$DBF4 PRG:5BF4 C0 1C + bne QueueScreenUpdate_Loop3 ; CPU:$DBF6 PRG:5BF6 D0 05 + ldy #$24 ; CPU:$DBF8 PRG:5BF8 A0 24 + jmp QueueScreenUpdate_Loop4 ; CPU:$DBFA PRG:5BFA 4C 03 DC +; ----------------------------------------------------------------------------- +; Routine: QueueScreenUpdate_Loop3 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +QueueScreenUpdate_Loop3: + cpy #$00 ; CPU:$DBFD PRG:5BFD C0 00 + bne QueueScreenUpdate_Loop4 ; CPU:$DBFF PRG:5BFF D0 02 + ldy #$20 ; CPU:$DC01 PRG:5C01 A0 20 +; ----------------------------------------------------------------------------- +; Routine: QueueScreenUpdate_Loop4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +QueueScreenUpdate_Loop4: + lda NationNameTable,y ; CPU:$DC03 PRG:5C03 B9 26 DC + sta $05C8 ; CPU:$DC06 PRG:5C06 8D C8 05 + lda $DC27,y ; CPU:$DC09 PRG:5C09 B9 27 DC + sta $05C9 ; CPU:$DC0C PRG:5C0C 8D C9 05 + lda $DC28,y ; CPU:$DC0F PRG:5C0F B9 28 DC + sta $05CA ; CPU:$DC12 PRG:5C12 8D CA 05 + lda #$FF ; CPU:$DC15 PRG:5C15 A9 FF + sta $05CB ; CPU:$DC17 PRG:5C17 8D CB 05 + lda #$C0 ; CPU:$DC1A PRG:5C1A A9 C0 + sta CmdStreamPtrLo ; CPU:$DC1C PRG:5C1C 85 0E + lda #$05 ; CPU:$DC1E PRG:5C1E A9 05 + sta CmdStreamPtrHi ; CPU:$DC20 PRG:5C20 85 0F + jsr DecodeCommandStream ; CPU:$DC22 PRG:5C22 20 BE 8F + rts ; CPU:$DC25 PRG:5C25 60 +; ---- data $DC26-$DC4D (40 bytes) ---- +; Ten four-byte nation abbreviations: USA, URS, CHN, CUB, JPN, BRA, KOR, +; TUN, YOU, COM. +NationNameTable: +; referenced by `lda $DC26,y` at $DBC8 (operand $DC26 falls inside this region) +; referenced by `lda $DC27,y` at $DBCE (operand $DC27 falls inside this region) +; referenced by `lda $DC28,y` at $DBD4 (operand $DC28 falls inside this region) +; referenced by `lda $DC26,y` at $DC03 (operand $DC26 falls inside this region) +; referenced by `lda $DC27,y` at $DC09 (operand $DC27 falls inside this region) +; referenced by `lda $DC28,y` at $DC0F (operand $DC28 falls inside this region) + .byte $55, $53, $41, $20, $55, $52, $53, $20, $43, $48, $4E, $20, $43, $55, $42, $20 ; CPU:$DC26 PRG:5C26 55 53 41 20 55 52 53 20 43 48 4E 20 43 55 42 20 + .byte $4A, $50, $4E, $20, $42, $52, $41, $20, $4B, $4F, $52, $20, $54, $55, $4E, $20 ; CPU:$DC36 PRG:5C36 4A 50 4E 20 42 52 41 20 4B 4F 52 20 54 55 4E 20 + .byte $59, $4F, $55, $20, $43, $4F, $4D, $20 ; CPU:$DC46 PRG:5C46 59 4F 55 20 43 4F 4D 20 +; ----------------------------------------------------------------------------- +; Routine: StopAllSounds +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StopAllSounds: + lda #$00 ; CPU:$DC4E PRG:5C4E A9 00 + sta APUSTATUS ; CPU:$DC50 PRG:5C50 8D 15 40 + rts ; CPU:$DC53 PRG:5C53 60 +; ---- data $DC54-$F6CD (6778 bytes) ---- +; 6,778 bytes of sound-engine data: the note tables, the tone tables and the +; byte-code streams the music player at $FAFF interprets. +MusicAndSoundData: +; referenced by `lda $DF8C,x` at $9278 (operand $DF8C falls inside this region) +; referenced by `lda $DF8D,x` at $928E (operand $DF8D falls inside this region) +; referenced by `lda $DF8C,x` at $92B9 (operand $DF8C falls inside this region) +; referenced by `lda $DF8D,x` at $92BE (operand $DF8D falls inside this region) +; referenced by `lda $E4EC,y` at $ADCF (operand $E4EC falls inside this region) +; referenced by `ldx $E4ED,y` at $ADD2 (operand $E4ED falls inside this region) +; ... and 219 further references from decoded code + .byte $EA, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC54 PRG:5C54 EA FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC64 PRG:5C64 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC74 PRG:5C74 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC84 PRG:5C84 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC94 PRG:5C94 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCA4 PRG:5CA4 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $AD, $85, $60, $AD ; CPU:$DCB4 PRG:5CB4 FF FF FF FF FF FF FF FF FF FF FF FF AD 85 60 AD + .byte $16, $62, $AD, $0A, $60, $66, $75, $66, $66, $70, $6B, $AD, $04, $66, $75, $66 ; CPU:$DCC4 PRG:5CC4 16 62 AD 0A 60 66 75 66 66 70 6B AD 04 66 75 66 + .byte $75, $AD, $09, $66, $AD, $0A, $60, $66, $75, $68, $66, $73, $6B, $AD, $04, $66 ; CPU:$DCD4 PRG:5CD4 75 AD 09 66 AD 0A 60 66 75 68 66 73 6B AD 04 66 + .byte $75, $66, $75, $AD, $09, $66, $AD, $0A, $60, $66, $72, $6B, $66, $75, $67, $73 ; CPU:$DCE4 PRG:5CE4 75 66 75 AD 09 66 AD 0A 60 66 72 6B 66 75 67 73 + .byte $75, $71, $66, $75, $66, $75, $66, $73, $75, $71, $66, $75, $66, $75, $66, $AD ; CPU:$DCF4 PRG:5CF4 75 71 66 75 66 75 66 73 75 71 66 75 66 75 66 AD + .byte $0A, $60, $66, $70, $75, $70, $75, $66, $75, $66, $75, $66, $75, $66, $75, $66 ; CPU:$DD04 PRG:5D04 0A 60 66 70 75 70 75 66 75 66 75 66 75 66 75 66 + .byte $75, $6E, $75, $66, $75, $71, $75, $66, $AD, $0A, $60, $66, $66, $75, $73, $6B ; CPU:$DD14 PRG:5D14 75 6E 75 66 75 71 75 66 AD 0A 60 66 66 75 73 6B + .byte $66, $75, $66, $75, $66, $75, $66, $75, $66, $75, $6D, $6D, $66, $6A, $6D, $75 ; CPU:$DD24 PRG:5D24 66 75 66 75 66 75 66 75 66 75 6D 6D 66 6A 6D 75 + .byte $66, $AD, $0A, $60, $66, $66, $72, $75, $67, $66, $72, $75, $74, $66, $75, $66 ; CPU:$DD34 PRG:5D34 66 AD 0A 60 66 66 72 75 67 66 72 75 74 66 75 66 + .byte $75, $66, $72, $75, $75, $66, $75, $75, $74, $66, $AD, $0A, $60, $AD, $16, $A9 ; CPU:$DD44 PRG:5D44 75 66 72 75 75 66 75 75 74 66 AD 0A 60 AD 16 A9 + .byte $AD, $4A, $60, $AD, $16, $62, $AD, $0A, $60, $AD, $05, $66, $AD, $03, $75, $71 ; CPU:$DD54 PRG:5D54 AD 4A 60 AD 16 62 AD 0A 60 AD 05 66 AD 03 75 71 + .byte $AD, $05, $66, $75, $66, $75, $AD, $05, $66, $AD, $0A, $60, $AD, $05, $66, $75 ; CPU:$DD64 PRG:5D64 AD 05 66 75 66 75 AD 05 66 AD 0A 60 AD 05 66 75 + .byte $66, $6A, $75, $AD, $05, $66, $75, $66, $75, $AD, $05, $66, $AD, $0A, $60, $AD ; CPU:$DD74 PRG:5D74 66 6A 75 AD 05 66 75 66 75 AD 05 66 AD 0A 60 AD + .byte $05, $66, $75, $6E, $73, $74, $66, $73, $75, $71, $66, $75, $66, $75, $AD, $05 ; CPU:$DD84 PRG:5D84 05 66 75 6E 73 74 66 73 75 71 66 75 66 75 AD 05 + .byte $66, $AD, $0A, $60, $AD, $05, $66, $75, $6D, $72, $71, $66, $69, $6E, $75, $66 ; CPU:$DD94 PRG:5D94 66 AD 0A 60 AD 05 66 75 6D 72 71 66 69 6E 75 66 + .byte $75, $66, $75, $AD, $05, $66, $AD, $0A, $60, $AD, $05, $66, $75, $66, $69, $75 ; CPU:$DDA4 PRG:5DA4 75 66 75 AD 05 66 AD 0A 60 AD 05 66 75 66 69 75 + .byte $66, $75, $6D, $75, $66, $75, $66, $75, $AD, $05, $66, $AD, $0A, $60, $AD, $05 ; CPU:$DDB4 PRG:5DB4 66 75 6D 75 66 75 66 75 AD 05 66 AD 0A 60 AD 05 + .byte $66, $AD, $03, $75, $74, $66, $72, $75, $75, $66, $75, $66, $75, $AD, $05, $66 ; CPU:$DDC4 PRG:5DC4 66 AD 03 75 74 66 72 75 75 66 75 66 75 AD 05 66 + .byte $AD, $0A, $60, $AD, $16, $A9, $AD, $2D, $60, $47, $41, $4D, $45, $AD, $06, $60 ; CPU:$DDD4 PRG:5DD4 AD 0A 60 AD 16 A9 AD 2D 60 47 41 4D 45 AD 06 60 + .byte $54, $52, $41, $49, $4E, $49, $4E, $47, $AD, $2F, $60, $3C, $33, $3B, $3A, $38 ; CPU:$DDE4 PRG:5DE4 54 52 41 49 4E 49 4E 47 AD 2F 60 3C 33 3B 3A 38 + .byte $60, $4E, $49, $4E, $54, $45, $4E, $44, $4F, $AD, $33, $60, $54, $3D, $48, $41 ; CPU:$DDF4 PRG:5DF4 60 4E 49 4E 54 45 4E 44 4F AD 33 60 54 3D 48 41 + .byte $53, $48, $49, $53, $48, $49, $54, $41, $AD, $4A, $60, $AD, $09, $AA, $AD, $06 ; CPU:$DE04 PRG:5E04 53 48 49 53 48 49 54 41 AD 4A 60 AD 09 AA AD 06 + .byte $55, $AA, $AA, $AD, $06, $55, $AA, $AA, $AD, $06, $5A, $AA, $AA, $AD, $06, $55 ; CPU:$DE14 PRG:5E14 55 AA AA AD 06 55 AA AA AD 06 5A AA AA AD 06 55 + .byte $AA, $AA, $AD, $06, $A5, $AD, $11, $AA, $AD, $4A, $60, $50, $4C, $41, $59, $60 ; CPU:$DE24 PRG:5E24 AA AA AD 06 A5 AD 11 AA AD 4A 60 50 4C 41 59 60 + .byte $60, $53, $45, $4C, $45, $43, $54, $AD, $53, $60, $33, $50, $4C, $41, $59, $45 ; CPU:$DE34 PRG:5E34 60 53 45 4C 45 43 54 AD 53 60 33 50 4C 41 59 45 + .byte $52, $60, $57, $4F, $4D, $45, $4E, $AD, $33, $60, $33, $50, $4C, $41, $59, $45 ; CPU:$DE44 PRG:5E44 52 60 57 4F 4D 45 4E AD 33 60 33 50 4C 41 59 45 + .byte $52, $60, $4D, $45, $4E, $AD, $35, $60, $34, $50, $4C, $41, $59, $45, $52, $60 ; CPU:$DE54 PRG:5E54 52 60 4D 45 4E AD 35 60 34 50 4C 41 59 45 52 60 + .byte $57, $4F, $4D, $45, $4E, $AD, $33, $60, $34, $50, $4C, $41, $59, $45, $52, $60 ; CPU:$DE64 PRG:5E64 57 4F 4D 45 4E AD 33 60 34 50 4C 41 59 45 52 60 + .byte $4D, $45, $4E, $AD, $14, $60, $AD, $05, $06, $AD, $06, $60, $AD, $05, $06, $AD ; CPU:$DE74 PRG:5E74 4D 45 4E AD 14 60 AD 05 06 AD 06 60 AD 05 06 AD + .byte $10, $60, $06, $AD, $03, $01, $06, $AD, $06, $60, $06, $AD, $03, $01, $06, $AD ; CPU:$DE84 PRG:5E84 10 60 06 AD 03 01 06 AD 06 60 06 AD 03 01 06 AD + .byte $10, $60, $06, $AD, $03, $01, $06, $AD, $06, $60, $06, $AD, $03, $01, $06, $AD ; CPU:$DE94 PRG:5E94 10 60 06 AD 03 01 06 AD 06 60 06 AD 03 01 06 AD + .byte $10, $60, $E4, $55, $53, $41, $06, $AD, $06, $60, $E4, $4A, $50, $4E, $06, $AD ; CPU:$DEA4 PRG:5EA4 10 60 E4 55 53 41 06 AD 06 60 E4 4A 50 4E 06 AD + .byte $10, $60, $AD, $05, $06, $AD, $06, $60, $AD, $05, $06, $AD, $10, $60, $06, $AD ; CPU:$DEB4 PRG:5EB4 10 60 AD 05 06 AD 06 60 AD 05 06 AD 10 60 06 AD + .byte $03, $01, $06, $AD, $06, $60, $06, $AD, $03, $01, $06, $AD, $10, $60, $06, $AD ; CPU:$DEC4 PRG:5EC4 03 01 06 AD 06 60 06 AD 03 01 06 AD 10 60 06 AD + .byte $03, $01, $06, $AD, $06, $60, $06, $AD, $03, $01, $06, $AD, $10, $60, $E4, $55 ; CPU:$DED4 PRG:5ED4 03 01 06 AD 06 60 06 AD 03 01 06 AD 10 60 E4 55 + .byte $52, $53, $06, $AD, $06, $60, $E4, $42, $52, $41, $06, $AD, $10, $60, $AD, $05 ; CPU:$DEE4 PRG:5EE4 52 53 06 AD 06 60 E4 42 52 41 06 AD 10 60 AD 05 + .byte $06, $AD, $06, $60, $AD, $05, $06, $AD, $10, $60, $06, $AD, $03, $01, $06, $AD ; CPU:$DEF4 PRG:5EF4 06 AD 06 60 AD 05 06 AD 10 60 06 AD 03 01 06 AD + .byte $06, $60, $06, $AD, $03, $01, $06, $AD, $10, $60, $06, $AD, $03, $01, $06, $AD ; CPU:$DF04 PRG:5F04 06 60 06 AD 03 01 06 AD 10 60 06 AD 03 01 06 AD + .byte $06, $60, $06, $AD, $03, $01, $06, $AD, $10, $60, $E4, $43, $48, $4E, $06, $AD ; CPU:$DF14 PRG:5F14 06 60 06 AD 03 01 06 AD 10 60 E4 43 48 4E 06 AD + .byte $06, $60, $E4, $4B, $4F, $52, $06, $AD, $10, $60, $AD, $05, $06, $AD, $06, $60 ; CPU:$DF24 PRG:5F24 06 60 E4 4B 4F 52 06 AD 10 60 AD 05 06 AD 06 60 + .byte $AD, $05, $06, $AD, $10, $60, $06, $AD, $03, $01, $06, $AD, $06, $60, $06, $AD ; CPU:$DF34 PRG:5F34 AD 05 06 AD 10 60 06 AD 03 01 06 AD 06 60 06 AD + .byte $03, $01, $06, $AD, $10, $60, $06, $AD, $03, $01, $06, $AD, $06, $60, $06, $AD ; CPU:$DF44 PRG:5F44 03 01 06 AD 10 60 06 AD 03 01 06 AD 06 60 06 AD + .byte $03, $01, $06, $AD, $10, $60, $E4, $43, $55, $42, $06, $AD, $06, $60, $E4, $54 ; CPU:$DF54 PRG:5F54 03 01 06 AD 10 60 E4 43 55 42 06 AD 06 60 E4 54 + .byte $55, $4E, $06, $AD, $48, $60, $AD, $1A, $AA, $5A, $AA, $AA, $5A, $AD, $04, $AA ; CPU:$DF64 PRG:5F64 55 4E 06 AD 48 60 AD 1A AA 5A AA AA 5A AD 04 AA + .byte $5A, $AA, $AA, $5A, $AD, $04, $AA, $5A, $AA, $AA, $5A, $AD, $04, $AA, $5A, $AA ; CPU:$DF74 PRG:5F74 5A AA AA 5A AD 04 AA 5A AA AA 5A AD 04 AA 5A AA + .byte $AA, $5A, $AD, $0A, $AA, $AE, $00, $00, $A0, $67, $03, $00, $03, $01, $43, $00 ; CPU:$DF84 PRG:5F84 AA 5A AD 0A AA AE 00 00 A0 67 03 00 03 01 43 00 + .byte $83, $00, $83, $01, $C3, $00, $48, $A7, $03, $02, $03, $03, $03, $03, $03, $03 ; CPU:$DF94 PRG:5F94 83 00 83 01 C3 00 48 A7 03 02 03 03 03 03 03 03 + .byte $03, $03, $03, $03, $48, $C7, $03, $08, $03, $0A, $03, $0B, $03, $09, $83, $0A ; CPU:$DFA4 PRG:5FA4 03 03 03 03 48 C7 03 08 03 0A 03 0B 03 09 83 0A + .byte $83, $0B, $48, $87, $03, $07, $03, $03, $03, $03, $03, $03, $03, $03, $03, $03 ; CPU:$DFB4 PRG:5FB4 83 0B 48 87 03 07 03 03 03 03 03 03 03 03 03 03 + .byte $48, $67, $03, $1E, $03, $1F, $03, $1F, $03, $1F, $03, $1F, $03, $1F, $A0, $87 ; CPU:$DFC4 PRG:5FC4 48 67 03 1E 03 1F 03 1F 03 1F 03 1F 03 1F A0 87 + .byte $03, $04, $03, $05, $43, $04, $83, $04, $03, $06, $C3, $04, $A0, $A7, $03, $0C ; CPU:$DFD4 PRG:5FD4 03 04 03 05 43 04 83 04 03 06 C3 04 A0 A7 03 0C + .byte $03, $0D, $43, $0C, $83, $0C, $03, $0E, $C3, $0C, $A0, $C7, $03, $0F, $03, $18 ; CPU:$DFE4 PRG:5FE4 03 0D 43 0C 83 0C 03 0E C3 0C A0 C7 03 0F 03 18 + .byte $03, $1C, $83, $0F, $03, $19, $C3, $0F, $01, $B4, $B5, $01, $93, $B6, $B7, $93 ; CPU:$DFF4 PRG:5FF4 03 1C 83 0F 03 19 C3 0F 01 B4 B5 01 93 B6 B7 93 + .byte $C5, $C6, $B5, $01, $C7, $C8, $C9, $93, $01, $B4, $CA, $CB, $93, $CC, $CD, $CE ; CPU:$E004 PRG:6004 C5 C6 B5 01 C7 C8 C9 93 01 B4 CA CB 93 CC CD CE + .byte $CF, $C6, $B5, $01, $D0, $C8, $C9, $93, $01, $B4, $B5, $01, $D5, $D6, $D7, $93 ; CPU:$E014 PRG:6014 CF C6 B5 01 D0 C8 C9 93 01 B4 B5 01 D5 D6 D7 93 + .byte $01, $B4, $B5, $01, $93, $CC, $D8, $D9, $01, $B4, $B5, $01, $93, $BC, $BD, $93 ; CPU:$E024 PRG:6024 01 B4 B5 01 93 CC D8 D9 01 B4 B5 01 93 BC BD 93 + .byte $01, $B8, $B9, $01, $93, $BA, $BB, $93, $01, $C2, $B5, $01, $93, $C3, $C4, $93 ; CPU:$E034 PRG:6034 01 B8 B9 01 93 BA BB 93 01 C2 B5 01 93 C3 C4 93 + .byte $01, $BE, $BF, $01, $93, $C0, $C1, $93, $01, $B4, $B5, $01, $93, $D3, $D4, $93 ; CPU:$E044 PRG:6044 01 BE BF 01 93 C0 C1 93 01 B4 B5 01 93 D3 D4 93 + .byte $01, $B4, $B5, $01, $93, $D1, $D2, $93, $01, $B4, $B5, $01, $D5, $DC, $DB, $93 ; CPU:$E054 PRG:6054 01 B4 B5 01 93 D1 D2 93 01 B4 B5 01 D5 DC DB 93 + .byte $01, $B4, $B5, $01, $93, $DA, $D8, $D9, $01, $DA, $B5, $01, $DB, $E4, $E1, $93 ; CPU:$E064 PRG:6064 01 B4 B5 01 93 DA D8 D9 01 DA B5 01 DB E4 E1 93 + .byte $01, $B4, $DD, $01, $93, $E0, $DE, $DF, $00, $FF, $FF, $FF, $0C, $02, $FF, $FF ; CPU:$E074 PRG:6074 01 B4 DD 01 93 E0 DE DF 00 FF FF FF 0C 02 FF FF + .byte $0D, $01, $FF, $FF, $06, $07, $02, $FF, $06, $07, $01, $FF, $04, $02, $FF, $FF ; CPU:$E084 PRG:6084 0D 01 FF FF 06 07 02 FF 06 07 01 FF 04 02 FF FF + .byte $05, $01, $FF, $FF, $00, $00, $00, $FF, $00, $00, $00, $FF, $93, $06, $E5, $E7 ; CPU:$E094 PRG:6094 05 01 FF FF 00 00 00 FF 00 00 00 FF 93 06 E5 E7 + .byte $93, $06, $E6, $E8, $93, $EA, $EC, $EE, $93, $EB, $ED, $EF, $F0, $F1, $F2, $F3 ; CPU:$E0A4 PRG:60A4 93 06 E6 E8 93 EA EC EE 93 EB ED EF F0 F1 F2 F3 + .byte $93, $EB, $ED, $EF, $93, $EA, $F6, $F3, $F4, $F5, $F7, $EF, $00, $00, $00, $02 ; CPU:$E0B4 PRG:60B4 93 EB ED EF 93 EA F6 F3 F4 F5 F7 EF 00 00 00 02 + .byte $02, $01, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $65, $6B, $6B, $7C ; CPU:$E0C4 PRG:60C4 02 01 01 00 00 00 00 00 00 00 00 00 65 6B 6B 7C + .byte $65, $70, $70, $7C, $62, $66, $66, $76, $63, $6B, $6B, $78, $65, $66, $74, $7C ; CPU:$E0D4 PRG:60D4 65 70 70 7C 62 66 66 76 63 6B 6B 78 65 66 74 7C + .byte $65, $70, $6D, $7C, $65, $69, $66, $7C, $65, $73, $70, $7C, $62, $69, $71, $76 ; CPU:$E0E4 PRG:60E4 65 70 6D 7C 65 69 66 7C 65 73 70 7C 62 69 71 76 + .byte $64, $72, $73, $7A, $65, $71, $66, $7C, $65, $6E, $70, $7C, $65, $71, $6B, $7C ; CPU:$E0F4 PRG:60F4 64 72 73 7A 65 71 66 7C 65 6E 70 7C 65 71 6B 7C + .byte $65, $6E, $70, $7C, $65, $66, $70, $7A, $65, $6F, $66, $76, $65, $71, $6B, $7C ; CPU:$E104 PRG:6104 65 6E 70 7C 65 66 70 7A 65 6F 66 76 65 71 6B 7C + .byte $65, $73, $70, $7C, $65, $6B, $6D, $76, $65, $70, $72, $7A, $63, $6B, $6B, $78 ; CPU:$E114 PRG:6114 65 73 70 7C 65 6B 6D 76 65 70 72 7A 63 6B 6B 78 + .byte $62, $66, $66, $76, $63, $6B, $66, $76, $62, $66, $66, $76, $62, $66, $66, $76 ; CPU:$E124 PRG:6124 62 66 66 76 63 6B 66 76 62 66 66 76 62 66 66 76 + .byte $62, $66, $66, $76, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E134 PRG:6134 62 66 66 76 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $01, $FE, $FE ; CPU:$E144 PRG:6144 00 00 00 00 00 00 00 00 00 00 00 00 01 01 FE FE + .byte $F9, $F8, $FC, $01, $F8, $F8, $FA, $FB, $AD, $04, $F8, $FE, $FE, $FA, $F8, $AD ; CPU:$E154 PRG:6154 F9 F8 FC 01 F8 F8 FA FB AD 04 F8 FE FE FA F8 AD + .byte $0C, $60, $01, $01, $FE, $FE, $F8, $FC, $FD, $F8, $FA, $01, $F8, $F8, $FD, $FC ; CPU:$E164 PRG:6164 0C 60 01 01 FE FE F8 FC FD F8 FA 01 F8 F8 FD FC + .byte $F8, $FC, $FE, $FE, $F8, $01, $AD, $0C, $60, $01, $01, $FE, $FE, $01, $F8, $F9 ; CPU:$E174 PRG:6174 F8 FC FE FE F8 01 AD 0C 60 01 01 FE FE 01 F8 F9 + .byte $FA, $F8, $F8, $FD, $FA, $FA, $AD, $03, $F8, $FE, $FE, $FA, $F8, $8A, $60, $AD ; CPU:$E184 PRG:6184 FA F8 F8 FD FA FA AD 03 F8 FE FE FA F8 8A 60 AD + .byte $08, $62, $60, $8A, $01, $01, $FE, $FE, $F8, $F9, $FD, $F8, $F8, $FA, $F8, $F8 ; CPU:$E194 PRG:6194 08 62 60 8A 01 01 FE FE F8 F9 FD F8 F8 FA F8 F8 + .byte $FB, $FC, $F8, $FD, $FE, $FE, $F8, $FD, $8A, $7E, $AD, $08, $66, $7E, $8A, $01 ; CPU:$E1A4 PRG:61A4 FB FC F8 FD FE FE F8 FD 8A 7E AD 08 66 7E 8A 01 + .byte $01, $FE, $FE, $FC, $FA, $F8, $F8, $FD, $AD, $05, $F8, $FA, $F8, $FE, $FE, $F8 ; CPU:$E1B4 PRG:61B4 01 FE FE FC FA F8 F8 FD AD 05 F8 FA F8 FE FE F8 + .byte $F8, $8A, $7E, $AD, $08, $66, $7E, $8A, $01, $01, $FE, $FE, $F8, $F8, $FC, $FA ; CPU:$E1C4 PRG:61C4 F8 8A 7E AD 08 66 7E 8A 01 01 FE FE F8 F8 FC FA + .byte $F8, $FC, $AD, $03, $F8, $FD, $01, $F8, $FE, $FE, $FA, $F8, $8A, $86, $AD, $08 ; CPU:$E1D4 PRG:61D4 F8 FC AD 03 F8 FD 01 F8 FE FE FA F8 8A 86 AD 08 + .byte $76, $86, $8A, $01, $01, $FE, $FE, $FB, $F8, $FB, $01, $AD, $06, $F8, $FC, $F8 ; CPU:$E1E4 PRG:61E4 76 86 8A 01 01 FE FE FB F8 FB 01 AD 06 F8 FC F8 + .byte $FE, $FE, $FA, $AD, $04, $F8, $AD, $03, $01, $B4, $B5, $AD, $03, $01, $F8, $01 ; CPU:$E1F4 PRG:61F4 FE FE FA AD 04 F8 AD 03 01 B4 B5 AD 03 01 F8 01 + .byte $01, $99, $98, $90, $AD, $15, $93, $B6, $B7, $AD, $04, $93, $01, $9B, $9A, $06 ; CPU:$E204 PRG:6204 01 99 98 90 AD 15 93 B6 B7 AD 04 93 01 9B 9A 06 + .byte $91, $06, $06, $06, $AA, $AB, $AC, $AF, $AD, $04, $06, $5A, $5B, $5A, $5C, $5D ; CPU:$E214 PRG:6214 91 06 06 06 AA AB AC AF AD 04 06 5A 5B 5A 5C 5D + .byte $5A, $5E, $5F, $06, $06, $B0, $B1, $06, $06, $06, $8B, $98, $AD, $03, $06, $92 ; CPU:$E224 PRG:6224 5A 5E 5F 06 06 B0 B1 06 06 06 8B 98 AD 03 06 92 + .byte $AD, $07, $94, $E5, $E6, $AD, $0C, $94, $B2, $B3, $AD, $04, $94, $06, $06, $9D ; CPU:$E234 PRG:6234 AD 07 94 E5 E6 AD 0C 94 B2 B3 AD 04 94 06 06 9D + .byte $9C, $AD, $08, $01, $E7, $E8, $AD, $0C, $01, $2C, $31, $AD, $04, $01, $06, $9F ; CPU:$E244 PRG:6244 9C AD 08 01 E7 E8 AD 0C 01 2C 31 AD 04 01 06 9F + .byte $9E, $AD, $16, $01, $28, $2B, $30, $AD, $04, $01, $9C, $AD, $18, $01, $27, $2A ; CPU:$E254 PRG:6254 9E AD 16 01 28 2B 30 AD 04 01 9C AD 18 01 27 2A + .byte $2F, $AD, $10, $01, $0B, $AD, $0C, $09, $26, $29, $AD, $05, $09, $AD, $0B, $01 ; CPU:$E264 PRG:6264 2F AD 10 01 0B AD 0C 09 26 29 AD 05 09 AD 0B 01 + .byte $3E, $03, $AD, $09, $06, $07, $3F, $06, $20, $0F, $AD, $03, $06, $11, $06, $AD ; CPU:$E274 PRG:6274 3E 03 AD 09 06 07 3F 06 20 0F AD 03 06 11 06 AD + .byte $0B, $01, $04, $3F, $AD, $08, $06, $DD, $08, $06, $23, $25, $10, $AD, $03, $06 ; CPU:$E284 PRG:6284 0B 01 04 3F AD 08 06 DD 08 06 23 25 10 AD 03 06 + .byte $11, $06, $AD, $0A, $01, $02, $05, $AD, $09, $06, $07, $3F, $06, $22, $24, $DF ; CPU:$E294 PRG:6294 11 06 AD 0A 01 02 05 AD 09 06 07 3F 06 22 24 DF + .byte $AD, $03, $06, $11, $06, $AD, $09, $01, $3E, $03, $AD, $09, $06, $DD, $08, $06 ; CPU:$E2A4 PRG:62A4 AD 03 06 11 06 AD 09 01 3E 03 AD 09 06 DD 08 06 + .byte $06, $21, $1C, $AD, $04, $06, $11, $06, $AD, $09, $01, $04, $3F, $AD, $09, $06 ; CPU:$E2B4 PRG:62B4 06 21 1C AD 04 06 11 06 AD 09 01 04 3F AD 09 06 + .byte $07, $3F, $06, $06, $20, $0F, $AD, $04, $06, $11, $06, $AD, $08, $01, $02, $05 ; CPU:$E2C4 PRG:62C4 07 3F 06 06 20 0F AD 04 06 11 06 AD 08 01 02 05 + .byte $AD, $09, $06, $DD, $08, $06, $06, $1E, $1F, $10, $AD, $04, $06, $11, $06, $AD ; CPU:$E2D4 PRG:62D4 AD 09 06 DD 08 06 06 1E 1F 10 AD 04 06 11 06 AD + .byte $07, $01, $3E, $03, $AD, $0A, $06, $07, $3F, $06, $06, $1B, $1D, $DF, $AD, $04 ; CPU:$E2E4 PRG:62E4 07 01 3E 03 AD 0A 06 07 3F 06 06 1B 1D DF AD 04 + .byte $06, $11, $06, $AD, $07, $01, $04, $3F, $AD, $09, $06, $DD, $08, $AD, $03, $06 ; CPU:$E2F4 PRG:62F4 06 11 06 AD 07 01 04 3F AD 09 06 DD 08 AD 03 06 + .byte $1A, $1C, $AD, $05, $06, $11, $06, $AD, $06, $01, $02, $05, $AD, $0A, $06, $07 ; CPU:$E304 PRG:6304 1A 1C AD 05 06 11 06 AD 06 01 02 05 AD 0A 06 07 + .byte $3F, $AD, $03, $06, $19, $0F, $AD, $05, $06, $11, $06, $AD, $05, $01, $3E, $03 ; CPU:$E314 PRG:6314 3F AD 03 06 19 0F AD 05 06 11 06 AD 05 01 3E 03 + .byte $AD, $0A, $06, $DD, $08, $AD, $04, $06, $18, $10, $AD, $05, $06, $11, $06, $AD ; CPU:$E324 PRG:6324 AD 0A 06 DD 08 AD 04 06 18 10 AD 05 06 11 06 AD + .byte $05, $01, $E3, $AD, $11, $0A, $17, $AD, $08, $0A, $AD, $17, $01, $16, $AD, $88 ; CPU:$E334 PRG:6334 05 01 E3 AD 11 0A 17 AD 08 0A AD 17 01 16 AD 88 + .byte $01, $AD, $05, $AA, $AD, $03, $55, $AD, $05, $AA, $AD, $03, $A5, $AD, $08, $0A ; CPU:$E344 PRG:6344 01 AD 05 AA AD 03 55 AD 05 AA AD 03 A5 AD 08 0A + .byte $AD, $28, $00, $F8, $F8, $FA, $FE, $FE, $F8, $FB, $FD, $AD, $03, $F8, $01, $FE ; CPU:$E354 PRG:6354 AD 28 00 F8 F8 FA FE FE F8 FB FD AD 03 F8 01 FE + .byte $FE, $AD, $12, $01, $F8, $FA, $F8, $FE, $FE, $AD, $03, $F8, $FD, $AD, $03, $F8 ; CPU:$E364 PRG:6364 FE AD 12 01 F8 FA F8 FE FE AD 03 F8 FD AD 03 F8 + .byte $FE, $FE, $AD, $12, $01, $AD, $03, $F8, $FE, $FE, $FA, $F8, $FB, $F8, $FD, $F8 ; CPU:$E374 PRG:6374 FE FE AD 12 01 AD 03 F8 FE FE FA F8 FB F8 FD F8 + .byte $F8, $FE, $FE, $AD, $12, $01, $F8, $FD, $FB, $FE, $FE, $AD, $03, $F8, $FA, $AD ; CPU:$E384 PRG:6384 F8 FE FE AD 12 01 F8 FD FB FE FE AD 03 F8 FA AD + .byte $03, $F8, $FE, $FE, $AD, $12, $01, $AD, $03, $F8, $FE, $FE, $FA, $AD, $03, $F8 ; CPU:$E394 PRG:6394 03 F8 FE FE AD 12 01 AD 03 F8 FE FE FA AD 03 F8 + .byte $01, $F8, $FD, $FE, $FE, $AD, $13, $01, $F8, $F8, $FE, $FE, $FD, $FB, $AD, $04 ; CPU:$E3A4 PRG:63A4 01 F8 FD FE FE AD 13 01 F8 F8 FE FE FD FB AD 04 + .byte $F8, $FC, $FE, $FE, $AD, $12, $01, $FA, $F8, $F8, $FE, $FE, $AD, $03, $F8, $FD ; CPU:$E3B4 PRG:63B4 F8 FC FE FE AD 12 01 FA F8 F8 FE FE AD 03 F8 FD + .byte $AD, $03, $F8, $FE, $FE, $AD, $12, $01, $AD, $0B, $93, $95, $A0, $AD, $13, $01 ; CPU:$E3C4 PRG:63C4 AD 03 F8 FE FE AD 12 01 AD 0B 93 95 A0 AD 13 01 + .byte $5F, $8C, $8D, $5E, $06, $06, $06, $06, $8E, $8F, $A8, $96, $A1, $A2, $AD, $12 ; CPU:$E3D4 PRG:63D4 5F 8C 8D 5E 06 06 06 06 8E 8F A8 96 A1 A2 AD 12 + .byte $01, $AD, $06, $94, $E5, $E6, $AD, $03, $94, $97, $06, $A3, $AD, $18, $01, $E7 ; CPU:$E3E4 PRG:63E4 01 AD 06 94 E5 E6 AD 03 94 97 06 A3 AD 18 01 E7 + .byte $E8, $AD, $04, $01, $A4, $06, $A0, $AD, $1D, $01, $A5, $A6, $A1, $A2, $AD, $1D ; CPU:$E3F4 PRG:63F4 E8 AD 04 01 A4 06 A0 AD 1D 01 A5 A6 A1 A2 AD 1D + .byte $01, $A7, $06, $A3, $AD, $10, $01, $AD, $07, $09, $0C, $AD, $06, $01, $A4, $06 ; CPU:$E404 PRG:6404 01 A7 06 A3 AD 10 01 AD 07 09 0C AD 06 01 A4 06 + .byte $A0, $AD, $0F, $01, $AD, $07, $06, $14, $AD, $06, $01, $A5, $A6, $A1, $A2, $AD ; CPU:$E414 PRG:6414 A0 AD 0F 01 AD 07 06 14 AD 06 01 A5 A6 A1 A2 AD + .byte $0E, $01, $AD, $07, $06, $15, $E1, $AD, $06, $01, $A7, $06, $A3, $AD, $0E, $01 ; CPU:$E424 PRG:6424 0E 01 AD 07 06 15 E1 AD 06 01 A7 06 A3 AD 0E 01 + .byte $AD, $07, $06, $E0, $12, $AD, $07, $01, $A4, $06, $A0, $AD, $0D, $01, $AD, $08 ; CPU:$E434 PRG:6434 AD 07 06 E0 12 AD 07 01 A4 06 A0 AD 0D 01 AD 08 + .byte $06, $13, $AD, $07, $01, $A5, $A6, $A1, $A2, $AD, $0C, $01, $AD, $08, $06, $14 ; CPU:$E444 PRG:6444 06 13 AD 07 01 A5 A6 A1 A2 AD 0C 01 AD 08 06 14 + .byte $AD, $08, $01, $A7, $06, $A3, $AD, $0C, $01, $AD, $08, $06, $15, $E1, $AD, $08 ; CPU:$E454 PRG:6454 AD 08 01 A7 06 A3 AD 0C 01 AD 08 06 15 E1 AD 08 + .byte $01, $A4, $06, $A0, $AD, $0B, $01, $AD, $08, $06, $E0, $12, $AD, $08, $01, $A5 ; CPU:$E464 PRG:6464 01 A4 06 A0 AD 0B 01 AD 08 06 E0 12 AD 08 01 A5 + .byte $A6, $A1, $A2, $AD, $0A, $01, $AD, $09, $06, $13, $AD, $09, $01, $A7, $06, $A3 ; CPU:$E474 PRG:6474 A6 A1 A2 AD 0A 01 AD 09 06 13 AD 09 01 A7 06 A3 + .byte $AD, $0A, $01, $AD, $09, $06, $14, $AD, $0A, $01, $A4, $06, $A0, $AD, $09, $01 ; CPU:$E484 PRG:6484 AD 0A 01 AD 09 06 14 AD 0A 01 A4 06 A0 AD 09 01 + .byte $AD, $09, $06, $15, $E1, $AD, $09, $01, $A5, $A6, $A1, $A2, $AD, $08, $01, $AD ; CPU:$E494 PRG:6494 AD 09 06 15 E1 AD 09 01 A5 A6 A1 A2 AD 08 01 AD + .byte $0A, $0A, $E2, $AD, $0A, $01, $A7, $06, $A3, $AD, $1E, $01, $A4, $06, $A0, $AD ; CPU:$E4A4 PRG:64A4 0A 0A E2 AD 0A 01 A7 06 A3 AD 1E 01 A4 06 A0 AD + .byte $1D, $01, $A5, $A6, $A1, $A2, $AD, $1D, $01, $A7, $06, $A3, $AD, $1E, $01, $A4 ; CPU:$E4B4 PRG:64B4 1D 01 A5 A6 A1 A2 AD 1D 01 A7 06 A3 AD 1E 01 A4 + .byte $06, $A0, $AD, $1D, $01, $A5, $A6, $A1, $A2, $AD, $04, $01, $AD, $10, $AA, $AD ; CPU:$E4C4 PRG:64C4 06 A0 AD 1D 01 A5 A6 A1 A2 AD 04 01 AD 10 AA AD + .byte $08, $0A, $AD, $28, $00, $AE, $00, $00, $80, $40, $80, $80, $00, $40, $00, $00 ; CPU:$E4D4 PRG:64D4 08 0A AD 28 00 AE 00 00 80 40 80 80 00 40 00 00 + .byte $80, $40, $00, $80, $00, $40, $00, $00, $FF, $40, $80, $C0, $80, $60, $80, $80 ; CPU:$E4E4 PRG:64E4 80 40 00 80 00 40 00 00 FF 40 80 C0 80 60 80 80 + .byte $80, $40, $00, $20, $00, $00, $00, $00, $00, $40, $FF, $40, $FF, $00, $80, $80 ; CPU:$E4F4 PRG:64F4 80 40 00 20 00 00 00 00 00 40 FF 40 FF 00 80 80 + .byte $80, $80, $80, $20, $00, $00, $00, $00, $00, $20, $00, $40, $80, $80, $FF, $00 ; CPU:$E504 PRG:6504 80 80 80 20 00 00 00 00 00 20 00 40 80 80 FF 00 + .byte $FE, $00, $00, $00, $00, $00, $00, $00, $02, $00, $01, $00, $00, $80, $80, $40 ; CPU:$E514 PRG:6514 FE 00 00 00 00 00 00 00 02 00 01 00 00 80 80 40 + .byte $80, $80, $FF, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $80, $00, $40 ; CPU:$E524 PRG:6524 80 80 FF 00 00 00 00 00 00 00 01 00 00 80 00 40 + .byte $FF, $40, $FF, $00, $80, $C0, $FF, $00, $80, $C0, $80, $80, $80, $C0, $80, $80 ; CPU:$E534 PRG:6534 FF 40 FF 00 80 C0 FF 00 80 C0 80 80 80 C0 80 80 + .byte $80, $40, $00, $FC, $00, $01, $FD, $80, $FF, $FC, $00, $00, $FD, $80, $FE, $FC ; CPU:$E544 PRG:6544 80 40 00 FC 00 01 FD 80 FF FC 00 00 FD 80 FE FC + .byte $00, $FF, $FD, $80, $01, $FD, $00, $02, $FE, $80, $00, $FD, $00, $01, $FE, $80 ; CPU:$E554 PRG:6554 00 FF FD 80 01 FD 00 02 FE 80 00 FD 00 01 FE 80 + .byte $FF, $FD, $00, $00, $FE, $80, $04, $FF, $00, $04, $FF, $80, $03, $FF, $00, $03 ; CPU:$E564 PRG:6564 FF FD 00 00 FE 80 04 FF 00 04 FF 80 03 FF 00 03 + .byte $FF, $80, $02, $FF, $00, $02, $FF, $80, $00, $00, $00, $00, $80, $40, $00, $80 ; CPU:$E574 PRG:6574 FF 80 02 FF 00 02 FF 80 00 00 00 00 80 40 00 80 + .byte $00, $40, $80, $20, $01, $40, $00, $C0, $00, $60, $00, $00, $80, $20, $80, $40 ; CPU:$E584 PRG:6584 00 40 80 20 01 40 00 C0 00 60 00 00 80 20 80 40 + .byte $00, $80, $00, $20, $00, $00, $01, $40, $01, $00, $00, $80, $00, $C0, $00, $80 ; CPU:$E594 PRG:6594 00 80 00 20 00 00 01 40 01 00 00 80 00 C0 00 80 + .byte $00, $40, $01, $00, $00, $C0, $00, $80, $01, $40, $01, $00, $00, $C0, $04, $01 ; CPU:$E5A4 PRG:65A4 00 40 01 00 00 C0 00 80 01 40 01 00 00 C0 04 01 + .byte $00, $04, $01, $80, $03, $01, $00, $03, $01, $80, $02, $01, $00, $02, $01, $80 ; CPU:$E5B4 PRG:65B4 00 04 01 80 03 01 00 03 01 80 02 01 00 02 01 80 + .byte $01, $03, $00, $02, $02, $80, $00, $03, $00, $01, $02, $80, $FF, $03, $00, $00 ; CPU:$E5C4 PRG:65C4 01 03 00 02 02 80 00 03 00 01 02 80 FF 03 00 00 + .byte $02, $80, $00, $04, $00, $01, $03, $80, $FF, $04, $00, $00, $03, $80, $FE, $04 ; CPU:$E5D4 PRG:65D4 02 80 00 04 00 01 03 80 FF 04 00 00 03 80 FE 04 + .byte $00, $FF, $03, $80, $02, $10, $02, $11, $42, $10, $42, $11, $02, $12, $02, $13 ; CPU:$E5E4 PRG:65E4 00 FF 03 80 02 10 02 11 42 10 42 11 02 12 02 13 + .byte $42, $12, $42, $13, $02, $14, $02, $15, $42, $14, $42, $15, $02, $16, $02, $17 ; CPU:$E5F4 PRG:65F4 42 12 42 13 02 14 02 15 42 14 42 15 02 16 02 17 + .byte $42, $16, $42, $17, $00, $01, $00, $01, $00, $01, $00, $01, $00, $1B, $00, $1B ; CPU:$E604 PRG:6604 42 16 42 17 00 01 00 01 00 01 00 01 00 1B 00 1B + .byte $00, $01, $00, $01, $00, $01, $00, $01, $00, $01, $00, $01, $00, $1B, $00, $1B ; CPU:$E614 PRG:6614 00 01 00 01 00 01 00 01 00 01 00 01 00 1B 00 1B + .byte $00, $01, $00, $01, $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $45, $00, $45 ; CPU:$E624 PRG:6624 00 01 00 01 00 0B 00 0B 00 0B 00 0B 00 45 00 45 + .byte $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $45, $00, $45 ; CPU:$E634 PRG:6634 00 0B 00 0B 00 0B 00 0B 00 0B 00 0B 00 45 00 45 + .byte $00, $0B, $00, $0B, $00, $11, $00, $11, $00, $11, $00, $11, $00, $3B, $00, $3B ; CPU:$E644 PRG:6644 00 0B 00 0B 00 11 00 11 00 11 00 11 00 3B 00 3B + .byte $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $3B, $00, $3B ; CPU:$E654 PRG:6654 00 11 00 11 00 11 00 11 00 11 00 11 00 3B 00 3B + .byte $00, $11, $00, $11, $00, $4F, $00, $4F, $00, $4F, $00, $4F, $00, $51, $00, $51 ; CPU:$E664 PRG:6664 00 11 00 11 00 4F 00 4F 00 4F 00 4F 00 51 00 51 + .byte $00, $4F, $00, $4F, $00, $4F, $00, $4F, $00, $4F, $00, $4F, $00, $51, $00, $51 ; CPU:$E674 PRG:6674 00 4F 00 4F 00 4F 00 4F 00 4F 00 4F 00 51 00 51 + .byte $00, $4F, $00, $4F, $00, $19, $00, $19, $00, $1B, $00, $1B, $00, $19, $00, $19 ; CPU:$E684 PRG:6684 00 4F 00 4F 00 19 00 19 00 1B 00 1B 00 19 00 19 + .byte $00, $1B, $00, $1B, $00, $19, $00, $19, $00, $1B, $00, $1B, $00, $19, $00, $19 ; CPU:$E694 PRG:6694 00 1B 00 1B 00 19 00 19 00 1B 00 1B 00 19 00 19 + .byte $00, $1B, $00, $1B, $00, $27, $00, $27, $00, $29, $00, $29, $00, $27, $00, $27 ; CPU:$E6A4 PRG:66A4 00 1B 00 1B 00 27 00 27 00 29 00 29 00 27 00 27 + .byte $00, $29, $00, $29, $00, $27, $00, $27, $00, $29, $00, $29, $00, $27, $00, $27 ; CPU:$E6B4 PRG:66B4 00 29 00 29 00 27 00 27 00 29 00 29 00 27 00 27 + .byte $00, $29, $00, $29, $00, $2B, $00, $2B, $00, $2D, $00, $2D, $00, $2B, $00, $2B ; CPU:$E6C4 PRG:66C4 00 29 00 29 00 2B 00 2B 00 2D 00 2D 00 2B 00 2B + .byte $00, $2D, $00, $2D, $00, $2B, $00, $2B, $00, $2D, $00, $2D, $00, $2B, $00, $2B ; CPU:$E6D4 PRG:66D4 00 2D 00 2D 00 2B 00 2B 00 2D 00 2D 00 2B 00 2B + .byte $00, $2D, $00, $2D, $00, $4B, $00, $4B, $00, $4D, $00, $4D, $00, $4B, $00, $4B ; CPU:$E6E4 PRG:66E4 00 2D 00 2D 00 4B 00 4B 00 4D 00 4D 00 4B 00 4B + .byte $00, $4D, $00, $4D, $00, $4B, $00, $4B, $00, $4D, $00, $4D, $00, $4B, $00, $4B ; CPU:$E6F4 PRG:66F4 00 4D 00 4D 00 4B 00 4B 00 4D 00 4D 00 4B 00 4B + .byte $00, $4D, $00, $4D, $00, $3D, $00, $3D, $00, $3D, $00, $3D, $00, $3D, $00, $3D ; CPU:$E704 PRG:6704 00 4D 00 4D 00 3D 00 3D 00 3D 00 3D 00 3D 00 3D + .byte $00, $3D, $00, $3D, $00, $3D, $00, $3D, $00, $3D, $00, $3D, $00, $3D, $00, $3D ; CPU:$E714 PRG:6714 00 3D 00 3D 00 3D 00 3D 00 3D 00 3D 00 3D 00 3D + .byte $00, $3D, $00, $3D, $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $0B ; CPU:$E724 PRG:6724 00 3D 00 3D 00 0B 00 0B 00 0B 00 0B 00 0B 00 0B + .byte $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $0B, $00, $0B ; CPU:$E734 PRG:6734 00 0B 00 0B 00 0B 00 0B 00 0B 00 0B 00 0B 00 0B + .byte $00, $0B, $00, $0B, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11 ; CPU:$E744 PRG:6744 00 0B 00 0B 00 11 00 11 00 11 00 11 00 11 00 11 + .byte $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11 ; CPU:$E754 PRG:6754 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 + .byte $00, $11, $00, $11, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E764 PRG:6764 00 11 00 11 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E774 PRG:6774 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $3D, $00, $3D, $00, $3F, $00, $3F, $00, $47, $00, $47 ; CPU:$E784 PRG:6784 00 00 00 00 00 3D 00 3D 00 3F 00 3F 00 47 00 47 + .byte $00, $49, $00, $49, $00, $3F, $00, $47, $00, $49, $00, $49, $00, $3F, $00, $3F ; CPU:$E794 PRG:6794 00 49 00 49 00 3F 00 47 00 49 00 49 00 3F 00 3F + .byte $00, $3D, $00, $3D, $00, $01, $00, $01, $00, $0B, $00, $0B, $00, $0D, $00, $0D ; CPU:$E7A4 PRG:67A4 00 3D 00 3D 00 01 00 01 00 0B 00 0B 00 0D 00 0D + .byte $00, $0F, $00, $0F, $00, $0B, $00, $0D, $00, $0F, $00, $0F, $00, $0D, $00, $0D ; CPU:$E7B4 PRG:67B4 00 0F 00 0F 00 0B 00 0D 00 0F 00 0F 00 0D 00 0D + .byte $00, $0B, $00, $0B, $00, $01, $00, $01, $00, $11, $00, $11, $00, $13, $00, $13 ; CPU:$E7C4 PRG:67C4 00 0B 00 0B 00 01 00 01 00 11 00 11 00 13 00 13 + .byte $00, $15, $00, $15, $00, $11, $00, $13, $00, $15, $00, $15, $00, $13, $00, $13 ; CPU:$E7D4 PRG:67D4 00 15 00 15 00 11 00 13 00 15 00 15 00 13 00 13 + .byte $00, $11, $00, $11, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E7E4 PRG:67E4 00 11 00 11 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E7F4 PRG:67F4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $33, $00, $33, $00, $33, $00, $33, $00, $33, $00, $33 ; CPU:$E804 PRG:6804 00 00 00 00 00 33 00 33 00 33 00 33 00 33 00 33 + .byte $00, $33, $00, $33, $00, $33, $00, $33, $00, $33, $00, $33, $00, $33, $00, $33 ; CPU:$E814 PRG:6814 00 33 00 33 00 33 00 33 00 33 00 33 00 33 00 33 + .byte $00, $33, $00, $33, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03 ; CPU:$E824 PRG:6824 00 33 00 33 00 03 00 03 00 03 00 03 00 03 00 03 + .byte $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03 ; CPU:$E834 PRG:6834 00 03 00 03 00 03 00 03 00 03 00 03 00 03 00 03 + .byte $00, $03, $00, $03, $00, $01, $00, $03, $00, $03, $00, $19, $00, $19, $00, $17 ; CPU:$E844 PRG:6844 00 03 00 03 00 01 00 03 00 03 00 19 00 19 00 17 + .byte $00, $17, $04, $1D, $04, $1D, $04, $1D, $04, $1D, $04, $1D, $00, $1F, $00, $1F ; CPU:$E854 PRG:6854 00 17 04 1D 04 1D 04 1D 04 1D 04 1D 00 1F 00 1F + .byte $00, $1B, $00, $01, $00, $03, $00, $03, $06, $05, $0C, $05, $12, $07, $18, $07 ; CPU:$E864 PRG:6864 00 1B 00 01 00 03 00 03 06 05 0C 05 12 07 18 07 + .byte $1C, $41, $20, $41, $20, $43, $1C, $43, $18, $1B, $12, $1B, $0C, $1B, $06, $1B ; CPU:$E874 PRG:6874 1C 41 20 41 20 43 1C 43 18 1B 12 1B 0C 1B 06 1B + .byte $00, $03, $00, $03, $00, $03, $00, $03, $06, $07, $0C, $07, $12, $09, $18, $09 ; CPU:$E884 PRG:6884 00 03 00 03 00 03 00 03 06 07 0C 07 12 09 18 09 + .byte $1C, $09, $20, $09, $20, $09, $1C, $09, $18, $1B, $12, $1B, $0C, $1B, $06, $1B ; CPU:$E894 PRG:6894 1C 09 20 09 20 09 1C 09 18 1B 12 1B 0C 1B 06 1B + .byte $00, $03, $00, $03, $00, $21, $00, $21, $00, $23, $00, $23, $00, $23, $00, $23 ; CPU:$E8A4 PRG:68A4 00 03 00 03 00 21 00 21 00 23 00 23 00 23 00 23 + .byte $00, $23, $00, $23, $00, $23, $00, $23, $00, $21, $00, $21, $00, $25, $00, $25 ; CPU:$E8B4 PRG:68B4 00 23 00 23 00 23 00 23 00 21 00 21 00 25 00 25 + .byte $00, $25, $00, $25, $00, $37, $00, $37, $08, $39, $08, $39, $00, $2F, $00, $2F ; CPU:$E8C4 PRG:68C4 00 25 00 25 00 37 00 37 08 39 08 39 00 2F 00 2F + .byte $00, $31, $00, $31, $00, $2F, $00, $2F, $00, $31, $00, $31, $00, $2F, $00, $2F ; CPU:$E8D4 PRG:68D4 00 31 00 31 00 2F 00 2F 00 31 00 31 00 2F 00 2F + .byte $00, $31, $00, $31, $00, $2F, $00, $2F, $00, $31, $00, $31, $00, $2F, $00, $2F ; CPU:$E8E4 PRG:68E4 00 31 00 31 00 2F 00 2F 00 31 00 31 00 2F 00 2F + .byte $00, $31, $00, $31, $00, $2F, $00, $2F, $00, $31, $00, $31, $00, $39, $00, $39 ; CPU:$E8F4 PRG:68F4 00 31 00 31 00 2F 00 2F 00 31 00 31 00 39 00 39 + .byte $00, $1F, $00, $1F, $00, $53, $00, $53, $00, $53, $00, $53, $00, $55, $00, $55 ; CPU:$E904 PRG:6904 00 1F 00 1F 00 53 00 53 00 53 00 53 00 55 00 55 + .byte $00, $55, $00, $55, $00, $55, $00, $55, $00, $55, $00, $55, $00, $53, $00, $53 ; CPU:$E914 PRG:6914 00 55 00 55 00 55 00 55 00 55 00 55 00 53 00 53 + .byte $00, $53, $00, $53, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11 ; CPU:$E924 PRG:6924 00 53 00 53 00 11 00 11 00 11 00 11 00 11 00 11 + .byte $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11, $00, $11 ; CPU:$E934 PRG:6934 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 + .byte $00, $11, $00, $11, $00, $11, $04, $13, $08, $15, $04, $13, $00, $11, $04, $13 ; CPU:$E944 PRG:6944 00 11 00 11 00 11 04 13 08 15 04 13 00 11 04 13 + .byte $08, $15, $04, $13, $00, $11, $04, $13, $08, $15, $04, $13, $00, $11, $04, $13 ; CPU:$E954 PRG:6954 08 15 04 13 00 11 04 13 08 15 04 13 00 11 04 13 + .byte $08, $15, $04, $13, $00, $55, $00, $55, $00, $55, $00, $55, $00, $55, $00, $55 ; CPU:$E964 PRG:6964 08 15 04 13 00 55 00 55 00 55 00 55 00 55 00 55 + .byte $00, $55, $00, $55, $00, $55, $00, $55, $00, $55, $00, $55, $00, $55, $00, $55 ; CPU:$E974 PRG:6974 00 55 00 55 00 55 00 55 00 55 00 55 00 55 00 55 + .byte $00, $55, $00, $55, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E984 PRG:6984 00 55 00 55 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E994 PRG:6994 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E9A4 PRG:69A4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E9B4 PRG:69B4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E9C4 PRG:69C4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E9D4 PRG:69D4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E9E4 PRG:69E4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$E9F4 PRG:69F4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $1A, $00, $1A ; CPU:$EA04 PRG:6A04 00 00 00 00 00 00 00 00 00 00 00 00 00 1A 00 1A + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $1A, $00, $1A ; CPU:$EA14 PRG:6A14 00 00 00 00 00 00 00 00 00 00 00 00 00 1A 00 1A + .byte $00, $00, $00, $00, $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $44, $00, $44 ; CPU:$EA24 PRG:6A24 00 00 00 00 00 0A 00 0A 00 0A 00 0A 00 44 00 44 + .byte $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $44, $00, $44 ; CPU:$EA34 PRG:6A34 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 44 00 44 + .byte $00, $0A, $00, $0A, $00, $10, $00, $10, $00, $10, $00, $10, $00, $3A, $00, $3A ; CPU:$EA44 PRG:6A44 00 0A 00 0A 00 10 00 10 00 10 00 10 00 3A 00 3A + .byte $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $3A, $00, $3A ; CPU:$EA54 PRG:6A54 00 10 00 10 00 10 00 10 00 10 00 10 00 3A 00 3A + .byte $00, $10, $00, $10, $00, $50, $00, $50, $00, $50, $00, $50, $00, $4E, $00, $4E ; CPU:$EA64 PRG:6A64 00 10 00 10 00 50 00 50 00 50 00 50 00 4E 00 4E + .byte $00, $50, $00, $50, $00, $50, $00, $50, $00, $50, $00, $50, $00, $4E, $00, $4E ; CPU:$EA74 PRG:6A74 00 50 00 50 00 50 00 50 00 50 00 50 00 4E 00 4E + .byte $00, $50, $00, $50, $00, $18, $00, $18, $00, $1A, $00, $1A, $00, $18, $00, $18 ; CPU:$EA84 PRG:6A84 00 50 00 50 00 18 00 18 00 1A 00 1A 00 18 00 18 + .byte $00, $1A, $00, $1A, $00, $18, $00, $18, $00, $1A, $00, $1A, $00, $18, $00, $18 ; CPU:$EA94 PRG:6A94 00 1A 00 1A 00 18 00 18 00 1A 00 1A 00 18 00 18 + .byte $00, $1A, $00, $1A, $00, $26, $00, $26, $00, $28, $00, $28, $00, $26, $00, $26 ; CPU:$EAA4 PRG:6AA4 00 1A 00 1A 00 26 00 26 00 28 00 28 00 26 00 26 + .byte $00, $28, $00, $28, $00, $26, $00, $26, $00, $28, $00, $28, $00, $26, $00, $26 ; CPU:$EAB4 PRG:6AB4 00 28 00 28 00 26 00 26 00 28 00 28 00 26 00 26 + .byte $00, $28, $00, $28, $00, $2A, $00, $2A, $00, $2C, $00, $2C, $00, $2A, $00, $2A ; CPU:$EAC4 PRG:6AC4 00 28 00 28 00 2A 00 2A 00 2C 00 2C 00 2A 00 2A + .byte $00, $2C, $00, $2C, $00, $2A, $00, $2A, $00, $2C, $00, $2C, $00, $2A, $00, $2A ; CPU:$EAD4 PRG:6AD4 00 2C 00 2C 00 2A 00 2A 00 2C 00 2C 00 2A 00 2A + .byte $00, $2C, $00, $2C, $00, $4A, $00, $4A, $00, $4C, $00, $4C, $00, $4A, $00, $4A ; CPU:$EAE4 PRG:6AE4 00 2C 00 2C 00 4A 00 4A 00 4C 00 4C 00 4A 00 4A + .byte $00, $4C, $00, $4C, $00, $4A, $00, $4A, $00, $4C, $00, $4C, $00, $4A, $00, $4A ; CPU:$EAF4 PRG:6AF4 00 4C 00 4C 00 4A 00 4A 00 4C 00 4C 00 4A 00 4A + .byte $00, $4C, $00, $4C, $00, $3C, $00, $3C, $00, $3C, $00, $3C, $00, $3C, $00, $3C ; CPU:$EB04 PRG:6B04 00 4C 00 4C 00 3C 00 3C 00 3C 00 3C 00 3C 00 3C + .byte $00, $3C, $00, $3C, $00, $3C, $00, $3C, $00, $3C, $00, $3C, $00, $3C, $00, $3C ; CPU:$EB14 PRG:6B14 00 3C 00 3C 00 3C 00 3C 00 3C 00 3C 00 3C 00 3C + .byte $00, $3C, $00, $3C, $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $0A ; CPU:$EB24 PRG:6B24 00 3C 00 3C 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A + .byte $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $0A, $00, $0A ; CPU:$EB34 PRG:6B34 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A + .byte $00, $0A, $00, $0A, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10 ; CPU:$EB44 PRG:6B44 00 0A 00 0A 00 10 00 10 00 10 00 10 00 10 00 10 + .byte $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10 ; CPU:$EB54 PRG:6B54 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 + .byte $00, $10, $00, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EB64 PRG:6B64 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EB74 PRG:6B74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $3C, $00, $3C, $00, $3E, $00, $3E, $00, $46, $00, $46 ; CPU:$EB84 PRG:6B84 00 00 00 00 00 3C 00 3C 00 3E 00 3E 00 46 00 46 + .byte $00, $48, $00, $48, $00, $3E, $00, $46, $00, $48, $00, $48, $00, $3E, $00, $3E ; CPU:$EB94 PRG:6B94 00 48 00 48 00 3E 00 46 00 48 00 48 00 3E 00 3E + .byte $00, $3C, $00, $3C, $00, $00, $00, $00, $00, $0A, $00, $0A, $00, $0C, $00, $0C ; CPU:$EBA4 PRG:6BA4 00 3C 00 3C 00 00 00 00 00 0A 00 0A 00 0C 00 0C + .byte $00, $0E, $00, $0E, $00, $0A, $00, $0C, $00, $0E, $00, $0E, $00, $0C, $00, $0C ; CPU:$EBB4 PRG:6BB4 00 0E 00 0E 00 0A 00 0C 00 0E 00 0E 00 0C 00 0C + .byte $00, $0A, $00, $0A, $00, $00, $00, $00, $00, $10, $00, $10, $00, $12, $00, $12 ; CPU:$EBC4 PRG:6BC4 00 0A 00 0A 00 00 00 00 00 10 00 10 00 12 00 12 + .byte $00, $14, $00, $14, $00, $10, $00, $12, $00, $14, $00, $14, $00, $12, $00, $12 ; CPU:$EBD4 PRG:6BD4 00 14 00 14 00 10 00 12 00 14 00 14 00 12 00 12 + .byte $00, $10, $00, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EBE4 PRG:6BE4 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EBF4 PRG:6BF4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $32, $00, $32, $00, $32, $00, $32, $00, $32, $00, $32 ; CPU:$EC04 PRG:6C04 00 00 00 00 00 32 00 32 00 32 00 32 00 32 00 32 + .byte $00, $32, $00, $32, $00, $32, $00, $32, $00, $32, $00, $32, $00, $32, $00, $32 ; CPU:$EC14 PRG:6C14 00 32 00 32 00 32 00 32 00 32 00 32 00 32 00 32 + .byte $00, $32, $00, $32, $00, $02, $00, $02, $00, $02, $00, $02, $00, $02, $00, $02 ; CPU:$EC24 PRG:6C24 00 32 00 32 00 02 00 02 00 02 00 02 00 02 00 02 + .byte $00, $02, $00, $02, $00, $02, $00, $02, $00, $02, $00, $02, $00, $02, $00, $02 ; CPU:$EC34 PRG:6C34 00 02 00 02 00 02 00 02 00 02 00 02 00 02 00 02 + .byte $00, $02, $00, $02, $00, $00, $00, $02, $00, $02, $00, $18, $00, $18, $00, $16 ; CPU:$EC44 PRG:6C44 00 02 00 02 00 00 00 02 00 02 00 18 00 18 00 16 + .byte $00, $16, $04, $1C, $04, $1C, $04, $1C, $04, $1C, $04, $1C, $00, $1E, $00, $1E ; CPU:$EC54 PRG:6C54 00 16 04 1C 04 1C 04 1C 04 1C 04 1C 00 1E 00 1E + .byte $00, $1A, $00, $00, $00, $02, $00, $02, $06, $04, $0C, $04, $12, $06, $18, $06 ; CPU:$EC64 PRG:6C64 00 1A 00 00 00 02 00 02 06 04 0C 04 12 06 18 06 + .byte $1C, $40, $20, $40, $20, $42, $1C, $42, $18, $1A, $12, $1A, $0C, $1A, $06, $1A ; CPU:$EC74 PRG:6C74 1C 40 20 40 20 42 1C 42 18 1A 12 1A 0C 1A 06 1A + .byte $00, $02, $00, $02, $00, $02, $00, $02, $06, $06, $0C, $06, $12, $08, $18, $08 ; CPU:$EC84 PRG:6C84 00 02 00 02 00 02 00 02 06 06 0C 06 12 08 18 08 + .byte $1C, $08, $20, $08, $20, $08, $1C, $08, $18, $1A, $12, $1A, $0C, $1A, $06, $1A ; CPU:$EC94 PRG:6C94 1C 08 20 08 20 08 1C 08 18 1A 12 1A 0C 1A 06 1A + .byte $00, $02, $00, $02, $00, $20, $00, $20, $00, $22, $00, $22, $00, $22, $00, $22 ; CPU:$ECA4 PRG:6CA4 00 02 00 02 00 20 00 20 00 22 00 22 00 22 00 22 + .byte $00, $22, $00, $22, $00, $22, $00, $22, $00, $20, $00, $20, $00, $24, $00, $24 ; CPU:$ECB4 PRG:6CB4 00 22 00 22 00 22 00 22 00 20 00 20 00 24 00 24 + .byte $00, $24, $00, $24, $00, $36, $00, $36, $08, $38, $08, $38, $00, $2E, $00, $2E ; CPU:$ECC4 PRG:6CC4 00 24 00 24 00 36 00 36 08 38 08 38 00 2E 00 2E + .byte $00, $30, $00, $30, $00, $2E, $00, $2E, $00, $30, $00, $30, $00, $2E, $00, $2E ; CPU:$ECD4 PRG:6CD4 00 30 00 30 00 2E 00 2E 00 30 00 30 00 2E 00 2E + .byte $00, $30, $00, $30, $00, $2E, $00, $2E, $00, $30, $00, $30, $00, $2E, $00, $2E ; CPU:$ECE4 PRG:6CE4 00 30 00 30 00 2E 00 2E 00 30 00 30 00 2E 00 2E + .byte $00, $30, $00, $30, $00, $2E, $00, $2E, $00, $30, $00, $30, $00, $38, $00, $38 ; CPU:$ECF4 PRG:6CF4 00 30 00 30 00 2E 00 2E 00 30 00 30 00 38 00 38 + .byte $00, $1E, $00, $1E, $00, $52, $00, $52, $00, $52, $00, $52, $00, $54, $00, $54 ; CPU:$ED04 PRG:6D04 00 1E 00 1E 00 52 00 52 00 52 00 52 00 54 00 54 + .byte $00, $54, $00, $54, $00, $54, $00, $54, $00, $54, $00, $54, $00, $52, $00, $52 ; CPU:$ED14 PRG:6D14 00 54 00 54 00 54 00 54 00 54 00 54 00 52 00 52 + .byte $00, $52, $00, $52, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10 ; CPU:$ED24 PRG:6D24 00 52 00 52 00 10 00 10 00 10 00 10 00 10 00 10 + .byte $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10, $00, $10 ; CPU:$ED34 PRG:6D34 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 + .byte $00, $10, $00, $10, $00, $10, $04, $12, $08, $14, $04, $12, $00, $10, $04, $12 ; CPU:$ED44 PRG:6D44 00 10 00 10 00 10 04 12 08 14 04 12 00 10 04 12 + .byte $08, $14, $04, $12, $00, $10, $04, $12, $08, $14, $04, $12, $00, $10, $04, $12 ; CPU:$ED54 PRG:6D54 08 14 04 12 00 10 04 12 08 14 04 12 00 10 04 12 + .byte $08, $14, $04, $12, $00, $54, $00, $54, $00, $54, $00, $54, $00, $54, $00, $54 ; CPU:$ED64 PRG:6D64 08 14 04 12 00 54 00 54 00 54 00 54 00 54 00 54 + .byte $00, $54, $00, $54, $00, $54, $00, $54, $00, $54, $00, $54, $00, $54, $00, $54 ; CPU:$ED74 PRG:6D74 00 54 00 54 00 54 00 54 00 54 00 54 00 54 00 54 + .byte $00, $54, $00, $54, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$ED84 PRG:6D84 00 54 00 54 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$ED94 PRG:6D94 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EDA4 PRG:6DA4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EDB4 PRG:6DB4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EDC4 PRG:6DC4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EDD4 PRG:6DD4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EDE4 PRG:6DE4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$EDF4 PRG:6DF4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $33, $FD, $F8, $00, $31, $08, $00, $00, $32 ; CPU:$EE04 PRG:6E04 00 00 00 00 00 00 00 33 FD F8 00 31 08 00 00 32 + .byte $FB, $F8, $00, $30, $00, $00, $41, $33, $03, $F8, $41, $31, $F8, $00, $41, $32 ; CPU:$EE14 PRG:6E14 FB F8 00 30 00 00 41 33 03 F8 41 31 F8 00 41 32 + .byte $05, $F8, $41, $30, $00, $00, $00, $37, $00, $F8, $00, $35, $08, $00, $00, $36 ; CPU:$EE24 PRG:6E24 05 F8 41 30 00 00 00 37 00 F8 00 35 08 00 00 36 + .byte $FB, $F8, $00, $34, $00, $00, $41, $37, $00, $F8, $41, $35, $F8, $00, $41, $36 ; CPU:$EE34 PRG:6E34 FB F8 00 34 00 00 41 37 00 F8 41 35 F8 00 41 36 + .byte $05, $F8, $41, $34, $00, $00, $00, $3B, $04, $F8, $00, $3A, $00, $F8, $00, $39 ; CPU:$EE44 PRG:6E44 05 F8 41 34 00 00 00 3B 04 F8 00 3A 00 F8 00 39 + .byte $FD, $F8, $00, $38, $00, $00, $41, $3B, $FC, $F8, $41, $3A, $00, $F8, $41, $39 ; CPU:$EE54 PRG:6E54 FD F8 00 38 00 00 41 3B FC F8 41 3A 00 F8 41 39 + .byte $03, $F8, $41, $38, $00, $00, $00, $3F, $FF, $F8, $00, $3E, $00, $F8, $00, $3D ; CPU:$EE64 PRG:6E64 03 F8 41 38 00 00 00 3F FF F8 00 3E 00 F8 00 3D + .byte $00, $F8, $00, $3C, $00, $00, $41, $3F, $01, $F8, $41, $3E, $00, $F8, $41, $3D ; CPU:$EE74 PRG:6E74 00 F8 00 3C 00 00 41 3F 01 F8 41 3E 00 F8 41 3D + .byte $00, $F8, $41, $3C, $00, $00, $00, $3F, $FF, $F8, $00, $3E, $00, $F8, $00, $41 ; CPU:$EE84 PRG:6E84 00 F8 41 3C 00 00 00 3F FF F8 00 3E 00 F8 00 41 + .byte $03, $F8, $00, $40, $00, $00, $41, $3F, $01, $F8, $41, $3E, $00, $F8, $41, $41 ; CPU:$EE94 PRG:6E94 03 F8 00 40 00 00 41 3F 01 F8 41 3E 00 F8 41 41 + .byte $FD, $F8, $41, $40, $00, $00, $00, $44, $00, $F8, $00, $43, $00, $F8, $00, $42 ; CPU:$EEA4 PRG:6EA4 FD F8 41 40 00 00 00 44 00 F8 00 43 00 F8 00 42 + .byte $FF, $FF, $FF, $FF, $00, $00, $01, $44, $00, $F8, $01, $43, $00, $F8, $01, $42 ; CPU:$EEB4 PRG:6EB4 FF FF FF FF 00 00 01 44 00 F8 01 43 00 F8 01 42 + .byte $FF, $FF, $FF, $FF, $00, $00, $00, $48, $00, $FB, $00, $47, $00, $F8, $00, $46 ; CPU:$EEC4 PRG:6EC4 FF FF FF FF 00 00 00 48 00 FB 00 47 00 F8 00 46 + .byte $00, $FC, $00, $45, $00, $00, $41, $48, $00, $FB, $41, $47, $00, $F8, $41, $46 ; CPU:$EED4 PRG:6ED4 00 FC 00 45 00 00 41 48 00 FB 41 47 00 F8 41 46 + .byte $00, $FC, $41, $45, $00, $00, $00, $44, $00, $F8, $00, $47, $00, $F8, $00, $46 ; CPU:$EEE4 PRG:6EE4 00 FC 41 45 00 00 00 44 00 F8 00 47 00 F8 00 46 + .byte $00, $FA, $00, $45, $00, $00, $41, $44, $00, $F8, $41, $47, $00, $F8, $41, $46 ; CPU:$EEF4 PRG:6EF4 00 FA 00 45 00 00 41 44 00 F8 41 47 00 F8 41 46 + .byte $00, $FA, $41, $45, $00, $00, $00, $44, $00, $F8, $00, $4C, $00, $F8, $00, $4B ; CPU:$EF04 PRG:6F04 00 FA 41 45 00 00 00 44 00 F8 00 4C 00 F8 00 4B + .byte $FF, $FF, $FF, $FF, $00, $00, $01, $44, $00, $F8, $01, $4C, $00, $F8, $01, $4B ; CPU:$EF14 PRG:6F14 FF FF FF FF 00 00 01 44 00 F8 01 4C 00 F8 01 4B + .byte $FF, $FF, $FF, $FF, $00, $00, $00, $4D, $00, $FB, $00, $4A, $00, $F8, $00, $49 ; CPU:$EF24 PRG:6F24 FF FF FF FF 00 00 00 4D 00 FB 00 4A 00 F8 00 49 + .byte $00, $FC, $00, $45, $00, $00, $41, $4D, $00, $FB, $41, $4A, $00, $F8, $41, $49 ; CPU:$EF34 PRG:6F34 00 FC 00 45 00 00 41 4D 00 FB 41 4A 00 F8 41 49 + .byte $00, $FC, $41, $45, $00, $00, $00, $44, $00, $F8, $00, $4A, $00, $F8, $00, $49 ; CPU:$EF44 PRG:6F44 00 FC 41 45 00 00 00 44 00 F8 00 4A 00 F8 00 49 + .byte $00, $FA, $00, $45, $00, $00, $41, $44, $00, $F8, $41, $4A, $00, $F8, $41, $49 ; CPU:$EF54 PRG:6F54 00 FA 00 45 00 00 41 44 00 F8 41 4A 00 F8 41 49 + .byte $00, $FA, $41, $45, $00, $00, $00, $4E, $05, $FA, $00, $35, $08, $00, $00, $36 ; CPU:$EF64 PRG:6F64 00 FA 41 45 00 00 00 4E 05 FA 00 35 08 00 00 36 + .byte $FC, $F8, $00, $34, $00, $00, $41, $4E, $FB, $FA, $41, $35, $F8, $00, $41, $36 ; CPU:$EF74 PRG:6F74 FC F8 00 34 00 00 41 4E FB FA 41 35 F8 00 41 36 + .byte $04, $F8, $41, $34, $00, $00, $00, $51, $07, $FE, $00, $50, $FB, $FA, $00, $4F ; CPU:$EF84 PRG:6F84 04 F8 41 34 00 00 00 51 07 FE 00 50 FB FA 00 4F + .byte $00, $F8, $00, $30, $00, $00, $41, $51, $F9, $FE, $41, $50, $05, $FA, $41, $4F ; CPU:$EF94 PRG:6F94 00 F8 00 30 00 00 41 51 F9 FE 41 50 05 FA 41 4F + .byte $00, $F8, $41, $30, $00, $00, $00, $52, $00, $F8, $00, $4F, $00, $F8, $00, $30 ; CPU:$EFA4 PRG:6FA4 00 F8 41 30 00 00 00 52 00 F8 00 4F 00 F8 00 30 + .byte $FF, $FF, $FF, $FF, $00, $00, $41, $52, $00, $F8, $41, $4F, $00, $F8, $41, $30 ; CPU:$EFB4 PRG:6FB4 FF FF FF FF 00 00 41 52 00 F8 41 4F 00 F8 41 30 + .byte $FF, $FF, $FF, $FF, $00, $00, $00, $56, $08, $04, $00, $55, $08, $00, $00, $54 ; CPU:$EFC4 PRG:6FC4 FF FF FF FF 00 00 00 56 08 04 00 55 08 00 00 54 + .byte $08, $00, $00, $53, $00, $00, $41, $56, $F8, $04, $41, $55, $F8, $00, $41, $54 ; CPU:$EFD4 PRG:6FD4 08 00 00 53 00 00 41 56 F8 04 41 55 F8 00 41 54 + .byte $F8, $00, $41, $53, $00, $00, $00, $59, $09, $00, $00, $58, $FE, $FE, $00, $57 ; CPU:$EFE4 PRG:6FE4 F8 00 41 53 00 00 00 59 09 00 00 58 FE FE 00 57 + .byte $01, $F8, $00, $30, $00, $00, $41, $59, $F7, $00, $41, $58, $02, $FE, $41, $57 ; CPU:$EFF4 PRG:6FF4 01 F8 00 30 00 00 41 59 F7 00 41 58 02 FE 41 57 + .byte $FF, $F8, $41, $30, $00, $00, $00, $5D, $00, $F8, $00, $5C, $FF, $F8, $00, $5A ; CPU:$F004 PRG:7004 FF F8 41 30 00 00 00 5D 00 F8 00 5C FF F8 00 5A + .byte $06, $01, $00, $5B, $00, $00, $41, $5D, $00, $F8, $41, $5C, $01, $F8, $41, $5A ; CPU:$F014 PRG:7014 06 01 00 5B 00 00 41 5D 00 F8 41 5C 01 F8 41 5A + .byte $FA, $01, $41, $5B, $00, $00, $00, $5D, $00, $F8, $00, $5C, $FF, $F8, $00, $5F ; CPU:$F024 PRG:7024 FA 01 41 5B 00 00 00 5D 00 F8 00 5C FF F8 00 5F + .byte $01, $FC, $00, $5E, $00, $00, $41, $5D, $00, $F8, $41, $5C, $01, $F8, $41, $5F ; CPU:$F034 PRG:7034 01 FC 00 5E 00 00 41 5D 00 F8 41 5C 01 F8 41 5F + .byte $FF, $FC, $41, $5E, $00, $00, $00, $89, $02, $F8, $00, $88, $00, $F9, $00, $87 ; CPU:$F044 PRG:7044 FF FC 41 5E 00 00 00 89 02 F8 00 88 00 F9 00 87 + .byte $06, $FF, $00, $86, $00, $00, $41, $89, $FE, $F8, $41, $88, $00, $F9, $41, $87 ; CPU:$F054 PRG:7054 06 FF 00 86 00 00 41 89 FE F8 41 88 00 F9 41 87 + .byte $FA, $FF, $41, $86, $00, $00, $00, $77, $FC, $F8, $00, $75, $08, $00, $00, $76 ; CPU:$F064 PRG:7064 FA FF 41 86 00 00 00 77 FC F8 00 75 08 00 00 76 + .byte $FC, $F8, $00, $42, $00, $00, $01, $77, $FC, $F8, $01, $75, $08, $00, $01, $76 ; CPU:$F074 PRG:7074 FC F8 00 42 00 00 01 77 FC F8 01 75 08 00 01 76 + .byte $FC, $F8, $01, $42, $00, $00, $40, $77, $FC, $F8, $40, $76, $08, $00, $40, $75 ; CPU:$F084 PRG:7084 FC F8 01 42 00 00 40 77 FC F8 40 76 08 00 40 75 + .byte $FC, $F8, $40, $42, $00, $00, $41, $77, $FC, $F8, $41, $76, $08, $00, $41, $75 ; CPU:$F094 PRG:7094 FC F8 40 42 00 00 41 77 FC F8 41 76 08 00 41 75 + .byte $FC, $F8, $41, $42, $00, $00, $00, $78, $FC, $F8, $00, $75, $08, $00, $00, $76 ; CPU:$F0A4 PRG:70A4 FC F8 41 42 00 00 00 78 FC F8 00 75 08 00 00 76 + .byte $FC, $F8, $00, $4B, $00, $00, $01, $78, $FC, $F8, $01, $75, $08, $00, $01, $76 ; CPU:$F0B4 PRG:70B4 FC F8 00 4B 00 00 01 78 FC F8 01 75 08 00 01 76 + .byte $FC, $F8, $01, $4B, $00, $00, $40, $78, $FC, $F8, $40, $76, $08, $00, $40, $75 ; CPU:$F0C4 PRG:70C4 FC F8 01 4B 00 00 40 78 FC F8 40 76 08 00 40 75 + .byte $FC, $F8, $40, $4B, $00, $00, $41, $78, $FC, $F8, $41, $76, $08, $00, $41, $75 ; CPU:$F0D4 PRG:70D4 FC F8 40 4B 00 00 41 78 FC F8 41 76 08 00 41 75 + .byte $FC, $F8, $41, $4B, $00, $00, $00, $6E, $00, $F8, $00, $6C, $F8, $07, $00, $6D ; CPU:$F0E4 PRG:70E4 FC F8 41 4B 00 00 00 6E 00 F8 00 6C F8 07 00 6D + .byte $FF, $FF, $FF, $FF, $00, $00, $41, $6E, $00, $F8, $41, $6C, $08, $07, $41, $6D ; CPU:$F0F4 PRG:70F4 FF FF FF FF 00 00 41 6E 00 F8 41 6C 08 07 41 6D + .byte $FF, $FF, $FF, $FF, $00, $00, $00, $71, $08, $FD, $00, $72, $F0, $03, $00, $6F ; CPU:$F104 PRG:7104 FF FF FF FF 00 00 00 71 08 FD 00 72 F0 03 00 6F + .byte $03, $F8, $00, $70, $00, $00, $41, $72, $F8, $FD, $41, $72, $10, $03, $41, $6F ; CPU:$F114 PRG:7114 03 F8 00 70 00 00 41 72 F8 FD 41 72 10 03 41 6F + .byte $FD, $F8, $41, $70, $00, $00, $00, $64, $00, $F8, $00, $63, $08, $00, $00, $62 ; CPU:$F124 PRG:7124 FD F8 41 70 00 00 00 64 00 F8 00 63 08 00 00 62 + .byte $FB, $F8, $00, $61, $00, $00, $41, $64, $00, $F8, $41, $63, $F8, $00, $41, $62 ; CPU:$F134 PRG:7134 FB F8 00 61 00 00 41 64 00 F8 41 63 F8 00 41 62 + .byte $05, $F8, $41, $61, $00, $00, $00, $67, $FF, $F8, $00, $66, $08, $00, $00, $65 ; CPU:$F144 PRG:7144 05 F8 41 61 00 00 00 67 FF F8 00 66 08 00 00 65 + .byte $FA, $F8, $00, $61, $00, $00, $41, $67, $01, $F8, $41, $66, $F8, $00, $41, $65 ; CPU:$F154 PRG:7154 FA F8 00 61 00 00 41 67 01 F8 41 66 F8 00 41 65 + .byte $06, $F8, $41, $61, $00, $00, $00, $69, $FC, $F8, $00, $66, $08, $00, $00, $68 ; CPU:$F164 PRG:7164 06 F8 41 61 00 00 00 69 FC F8 00 66 08 00 00 68 + .byte $F8, $00, $00, $61, $00, $00, $41, $69, $04, $F8, $41, $66, $F8, $00, $41, $68 ; CPU:$F174 PRG:7174 F8 00 00 61 00 00 41 69 04 F8 41 66 F8 00 41 68 + .byte $08, $00, $41, $61, $00, $00, $00, $6B, $F8, $00, $00, $6A, $01, $F8, $00, $61 ; CPU:$F184 PRG:7184 08 00 41 61 00 00 00 6B F8 00 00 6A 01 F8 00 61 + .byte $FF, $FF, $FF, $FF, $00, $00, $41, $6B, $08, $00, $41, $6A, $FF, $F8, $41, $61 ; CPU:$F194 PRG:7194 FF FF FF FF 00 00 41 6B 08 00 41 6A FF F8 41 61 + .byte $FF, $FF, $FF, $FF, $00, $00, $00, $44, $FC, $F8, $00, $73, $08, $00, $00, $74 ; CPU:$F1A4 PRG:71A4 FF FF FF FF 00 00 00 44 FC F8 00 73 08 00 00 74 + .byte $FC, $F8, $00, $4B, $00, $00, $01, $44, $FC, $F8, $01, $73, $08, $00, $01, $74 ; CPU:$F1B4 PRG:71B4 FC F8 00 4B 00 00 01 44 FC F8 01 73 08 00 01 74 + .byte $FC, $F8, $01, $4B, $00, $00, $00, $7B, $00, $F8, $00, $7A, $00, $F8, $00, $61 ; CPU:$F1C4 PRG:71C4 FC F8 01 4B 00 00 00 7B 00 F8 00 7A 00 F8 00 61 + .byte $04, $05, $00, $79, $00, $00, $41, $7B, $00, $F8, $41, $7A, $00, $F8, $41, $61 ; CPU:$F1D4 PRG:71D4 04 05 00 79 00 00 41 7B 00 F8 41 7A 00 F8 41 61 + .byte $FC, $05, $41, $79, $00, $00, $00, $7E, $00, $F8, $00, $7C, $00, $F8, $00, $61 ; CPU:$F1E4 PRG:71E4 FC 05 41 79 00 00 00 7E 00 F8 00 7C 00 F8 00 61 + .byte $06, $04, $00, $7D, $00, $00, $41, $7E, $00, $F8, $41, $7C, $00, $F8, $41, $61 ; CPU:$F1F4 PRG:71F4 06 04 00 7D 00 00 41 7E 00 F8 41 7C 00 F8 41 61 + .byte $FA, $04, $41, $7D, $00, $00, $00, $82, $02, $F8, $00, $3A, $00, $F8, $00, $41 ; CPU:$F204 PRG:7204 FA 04 41 7D 00 00 00 82 02 F8 00 3A 00 F8 00 41 + .byte $04, $F8, $00, $81, $00, $00, $41, $82, $FE, $F8, $41, $3A, $00, $F8, $41, $41 ; CPU:$F214 PRG:7214 04 F8 00 81 00 00 41 82 FE F8 41 3A 00 F8 41 41 + .byte $FC, $F8, $41, $81, $00, $00, $00, $85, $FF, $F8, $00, $3A, $00, $F8, $00, $83 ; CPU:$F224 PRG:7224 FC F8 41 81 00 00 00 85 FF F8 00 3A 00 F8 00 83 + .byte $07, $02, $00, $84, $00, $00, $41, $85, $01, $F8, $41, $3A, $00, $F8, $41, $83 ; CPU:$F234 PRG:7234 07 02 00 84 00 00 41 85 01 F8 41 3A 00 F8 41 83 + .byte $F9, $02, $41, $84, $00, $00, $00, $44, $FC, $F8, $00, $73, $08, $00, $00, $74 ; CPU:$F244 PRG:7244 F9 02 41 84 00 00 00 44 FC F8 00 73 08 00 00 74 + .byte $FC, $F8, $00, $42, $00, $00, $01, $44, $FC, $F8, $01, $73, $08, $00, $01, $74 ; CPU:$F254 PRG:7254 FC F8 00 42 00 00 01 44 FC F8 01 73 08 00 01 74 + .byte $FC, $F8, $01, $42, $00, $00, $00, $7F, $01, $F8, $00, $7C, $03, $FA, $00, $80 ; CPU:$F264 PRG:7264 FC F8 01 42 00 00 00 7F 01 F8 00 7C 03 FA 00 80 + .byte $FD, $FE, $00, $61, $00, $00, $41, $7F, $FF, $F8, $41, $7C, $FD, $FA, $41, $80 ; CPU:$F274 PRG:7274 FD FE 00 61 00 00 41 7F FF F8 41 7C FD FA 41 80 + .byte $03, $FE, $41, $61, $00, $00, $00, $82, $02, $F8, $00, $3A, $00, $F8, $00, $41 ; CPU:$F284 PRG:7284 03 FE 41 61 00 00 00 82 02 F8 00 3A 00 F8 00 41 + .byte $04, $F8, $00, $81, $00, $00, $41, $82, $FE, $F8, $41, $3A, $00, $F8, $41, $41 ; CPU:$F294 PRG:7294 04 F8 00 81 00 00 41 82 FE F8 41 3A 00 F8 41 41 + .byte $FC, $F8, $41, $81, $00, $00, $40, $51, $F9, $FF, $40, $50, $05, $FA, $40, $4F ; CPU:$F2A4 PRG:72A4 FC F8 41 81 00 00 40 51 F9 FF 40 50 05 FA 40 4F + .byte $00, $F8, $40, $30, $00, $00, $01, $51, $07, $FF, $01, $50, $FB, $FA, $01, $4F ; CPU:$F2B4 PRG:72B4 00 F8 40 30 00 00 01 51 07 FF 01 50 FB FA 01 4F + .byte $00, $F8, $01, $30, $00, $00, $40, $52, $00, $F8, $40, $4F, $00, $F8, $40, $30 ; CPU:$F2C4 PRG:72C4 00 F8 01 30 00 00 40 52 00 F8 40 4F 00 F8 40 30 + .byte $FF, $FF, $FF, $FF, $00, $00, $01, $52, $00, $F8, $01, $4F, $00, $F8, $01, $30 ; CPU:$F2D4 PRG:72D4 FF FF FF FF 00 00 01 52 00 F8 01 4F 00 F8 01 30 + .byte $FF, $FF, $FF, $FF, $00, $00, $40, $33, $FB, $F8, $40, $32, $08, $00, $40, $31 ; CPU:$F2E4 PRG:72E4 FF FF FF FF 00 00 40 33 FB F8 40 32 08 00 40 31 + .byte $FD, $F8, $40, $30, $00, $00, $01, $33, $05, $F8, $01, $32, $F8, $00, $01, $31 ; CPU:$F2F4 PRG:72F4 FD F8 40 30 00 00 01 33 05 F8 01 32 F8 00 01 31 + .byte $03, $F8, $01, $30, $00, $00, $40, $52, $00, $F8, $40, $4F, $00, $F8, $40, $30 ; CPU:$F304 PRG:7304 03 F8 01 30 00 00 40 52 00 F8 40 4F 00 F8 40 30 + .byte $FF, $FF, $FF, $FF, $00, $00, $01, $52, $00, $F8, $01, $4F, $00, $F8, $01, $30 ; CPU:$F314 PRG:7314 FF FF FF FF 00 00 01 52 00 F8 01 4F 00 F8 01 30 + .byte $FF, $FF, $FF, $FF, $00, $00, $00, $8C, $00, $F8, $00, $8B, $00, $F8, $00, $30 ; CPU:$F324 PRG:7324 FF FF FF FF 00 00 00 8C 00 F8 00 8B 00 F8 00 30 + .byte $FF, $FF, $FF, $FF, $00, $00, $41, $8C, $00, $F8, $41, $8B, $00, $F8, $41, $30 ; CPU:$F334 PRG:7334 FF FF FF FF 00 00 41 8C 00 F8 41 8B 00 F8 41 30 + .byte $FF, $FF, $FF, $FF, $00, $00, $00, $8E, $00, $F8, $00, $8D, $05, $FA, $00, $8A ; CPU:$F344 PRG:7344 FF FF FF FF 00 00 00 8E 00 F8 00 8D 05 FA 00 8A + .byte $FF, $FF, $FF, $FF, $00, $00, $41, $8E, $00, $F8, $41, $8D, $FB, $FA, $41, $8A ; CPU:$F354 PRG:7354 FF FF FF FF 00 00 41 8E 00 F8 41 8D FB FA 41 8A + .byte $FF, $FF, $FF, $FF, $09, $28, $51, $90, $15, $60, $51, $90, $09, $28, $31, $80 ; CPU:$F364 PRG:7364 FF FF FF FF 09 28 51 90 15 60 51 90 09 28 31 80 + .byte $15, $60, $31, $80, $09, $28, $21, $60, $15, $60, $21, $60, $D9, $F8, $51, $90 ; CPU:$F374 PRG:7374 15 60 31 80 09 28 21 60 15 60 21 60 D9 F8 51 90 + .byte $A1, $EC, $51, $90, $D9, $F8, $31, $80, $A1, $EC, $31, $80, $D9, $F8, $21, $60 ; CPU:$F384 PRG:7384 A1 EC 51 90 D9 F8 31 80 A1 EC 31 80 D9 F8 21 60 + .byte $A1, $EC, $21, $60, $00, $40, $66, $40, $CD, $40, $33, $41, $9A, $41, $00, $42 ; CPU:$F394 PRG:7394 A1 EC 21 60 00 40 66 40 CD 40 33 41 9A 41 00 42 + .byte $66, $42, $CD, $42, $33, $43, $9A, $43, $00, $44, $66, $44, $CD, $44, $33, $45 ; CPU:$F3A4 PRG:73A4 66 42 CD 42 33 43 9A 43 00 44 66 44 CD 44 33 45 + .byte $9A, $45, $00, $46, $66, $46, $CD, $46, $33, $47, $9A, $47, $00, $48, $66, $48 ; CPU:$F3B4 PRG:73B4 9A 45 00 46 66 46 CD 46 33 47 9A 47 00 48 66 48 + .byte $CD, $48, $33, $49, $9A, $49, $00, $4A, $66, $4A, $CD, $4A, $33, $4B, $9A, $4B ; CPU:$F3C4 PRG:73C4 CD 48 33 49 9A 49 00 4A 66 4A CD 4A 33 4B 9A 4B + .byte $00, $4C, $66, $4C, $CD, $4C, $33, $4D, $9A, $4D, $00, $4E, $66, $4E, $CD, $4E ; CPU:$F3D4 PRG:73D4 00 4C 66 4C CD 4C 33 4D 9A 4D 00 4E 66 4E CD 4E + .byte $33, $4F, $9A, $4F, $00, $50, $66, $50, $CD, $50, $33, $51, $9A, $51, $00, $52 ; CPU:$F3E4 PRG:73E4 33 4F 9A 4F 00 50 66 50 CD 50 33 51 9A 51 00 52 + .byte $66, $52, $CD, $52, $33, $53, $9A, $53, $00, $54, $66, $54, $CD, $54, $33, $55 ; CPU:$F3F4 PRG:73F4 66 52 CD 52 33 53 9A 53 00 54 66 54 CD 54 33 55 + .byte $9A, $55, $00, $56, $66, $56, $CD, $56, $33, $57, $9A, $57, $00, $58, $66, $58 ; CPU:$F404 PRG:7404 9A 55 00 56 66 56 CD 56 33 57 9A 57 00 58 66 58 + .byte $CD, $58, $33, $59, $9A, $59, $00, $5A, $66, $5A, $CD, $5A, $33, $5B, $9A, $5B ; CPU:$F414 PRG:7414 CD 58 33 59 9A 59 00 5A 66 5A CD 5A 33 5B 9A 5B + .byte $00, $5C, $66, $5C, $CD, $5C, $33, $5D, $9A, $5D, $00, $5E, $66, $5E, $CD, $5E ; CPU:$F424 PRG:7424 00 5C 66 5C CD 5C 33 5D 9A 5D 00 5E 66 5E CD 5E + .byte $33, $5F, $9A, $5F, $00, $60, $66, $60, $CD, $60, $33, $61, $9A, $61, $00, $62 ; CPU:$F434 PRG:7434 33 5F 9A 5F 00 60 66 60 CD 60 33 61 9A 61 00 62 + .byte $66, $62, $CD, $62, $33, $63, $9A, $63, $00, $64, $66, $64, $CD, $64, $33, $65 ; CPU:$F444 PRG:7444 66 62 CD 62 33 63 9A 63 00 64 66 64 CD 64 33 65 + .byte $9A, $65, $00, $66, $66, $66, $CD, $66, $33, $67, $9A, $67, $00, $68, $66, $68 ; CPU:$F454 PRG:7454 9A 65 00 66 66 66 CD 66 33 67 9A 67 00 68 66 68 + .byte $CD, $68, $33, $69, $9A, $69, $00, $6A, $66, $6A, $CD, $6A, $33, $6B, $9A, $6B ; CPU:$F464 PRG:7464 CD 68 33 69 9A 69 00 6A 66 6A CD 6A 33 6B 9A 6B + .byte $00, $6C, $66, $6C, $CD, $6C, $33, $6D, $9A, $6D, $00, $6E, $66, $6E, $CD, $6E ; CPU:$F474 PRG:7474 00 6C 66 6C CD 6C 33 6D 9A 6D 00 6E 66 6E CD 6E + .byte $33, $6F, $9A, $6F, $00, $70, $66, $70, $CD, $70, $33, $71, $9A, $71, $00, $72 ; CPU:$F484 PRG:7484 33 6F 9A 6F 00 70 66 70 CD 70 33 71 9A 71 00 72 + .byte $66, $72, $CD, $72, $33, $73, $9A, $73, $00, $74, $66, $74, $CD, $74, $33, $75 ; CPU:$F494 PRG:7494 66 72 CD 72 33 73 9A 73 00 74 66 74 CD 74 33 75 + .byte $9A, $75, $00, $76, $66, $76, $CD, $76, $33, $77, $9A, $77, $00, $78, $66, $78 ; CPU:$F4A4 PRG:74A4 9A 75 00 76 66 76 CD 76 33 77 9A 77 00 78 66 78 + .byte $CD, $78, $33, $79, $9A, $79, $00, $7A, $66, $7A, $CD, $7A, $33, $7B, $9A, $7B ; CPU:$F4B4 PRG:74B4 CD 78 33 79 9A 79 00 7A 66 7A CD 7A 33 7B 9A 7B + .byte $00, $7C, $66, $7C, $CD, $7C, $33, $7D, $9A, $7D, $00, $7E, $66, $7E, $CD, $7E ; CPU:$F4C4 PRG:74C4 00 7C 66 7C CD 7C 33 7D 9A 7D 00 7E 66 7E CD 7E + .byte $33, $7F, $9A, $7F, $00, $80, $66, $80, $CD, $80, $33, $81, $9A, $81, $00, $82 ; CPU:$F4D4 PRG:74D4 33 7F 9A 7F 00 80 66 80 CD 80 33 81 9A 81 00 82 + .byte $66, $82, $CD, $82, $33, $83, $9A, $83, $00, $84, $66, $84, $CD, $84, $33, $85 ; CPU:$F4E4 PRG:74E4 66 82 CD 82 33 83 9A 83 00 84 66 84 CD 84 33 85 + .byte $9A, $85, $00, $86, $66, $86, $CD, $86, $33, $87, $9A, $87, $00, $88, $89, $48 ; CPU:$F4F4 PRG:74F4 9A 85 00 86 66 86 CD 86 33 87 9A 87 00 88 89 48 + .byte $DE, $48, $33, $49, $89, $49, $DE, $49, $33, $4A, $89, $4A, $DE, $4A, $33, $4B ; CPU:$F504 PRG:7504 DE 48 33 49 89 49 DE 49 33 4A 89 4A DE 4A 33 4B + .byte $89, $4B, $DE, $4B, $33, $4C, $89, $4C, $DE, $4C, $33, $4D, $89, $4D, $DE, $4D ; CPU:$F514 PRG:7514 89 4B DE 4B 33 4C 89 4C DE 4C 33 4D 89 4D DE 4D + .byte $33, $4E, $89, $4E, $DE, $4E, $33, $4F, $89, $4F, $DE, $4F, $33, $50, $89, $50 ; CPU:$F524 PRG:7524 33 4E 89 4E DE 4E 33 4F 89 4F DE 4F 33 50 89 50 + .byte $DE, $50, $33, $51, $89, $51, $DE, $51, $33, $52, $89, $52, $DE, $52, $33, $53 ; CPU:$F534 PRG:7534 DE 50 33 51 89 51 DE 51 33 52 89 52 DE 52 33 53 + .byte $89, $53, $DE, $53, $33, $54, $89, $54, $DE, $54, $33, $55, $89, $55, $DE, $55 ; CPU:$F544 PRG:7544 89 53 DE 53 33 54 89 54 DE 54 33 55 89 55 DE 55 + .byte $33, $56, $89, $56, $DE, $56, $33, $57, $89, $57, $DE, $57, $33, $58, $89, $58 ; CPU:$F554 PRG:7554 33 56 89 56 DE 56 33 57 89 57 DE 57 33 58 89 58 + .byte $DE, $58, $33, $59, $89, $59, $DE, $59, $33, $5A, $89, $5A, $DE, $5A, $33, $5B ; CPU:$F564 PRG:7564 DE 58 33 59 89 59 DE 59 33 5A 89 5A DE 5A 33 5B + .byte $89, $5B, $DE, $5B, $33, $5C, $89, $5C, $DE, $5C, $33, $5D, $89, $5D, $DE, $5D ; CPU:$F574 PRG:7574 89 5B DE 5B 33 5C 89 5C DE 5C 33 5D 89 5D DE 5D + .byte $33, $5E, $89, $5E, $DE, $5E, $33, $5F, $89, $5F, $DE, $5F, $33, $60, $89, $60 ; CPU:$F584 PRG:7584 33 5E 89 5E DE 5E 33 5F 89 5F DE 5F 33 60 89 60 + .byte $DE, $60, $33, $61, $89, $61, $DE, $61, $33, $62, $89, $62, $DE, $62, $33, $63 ; CPU:$F594 PRG:7594 DE 60 33 61 89 61 DE 61 33 62 89 62 DE 62 33 63 + .byte $89, $63, $DE, $63, $33, $64, $89, $64, $DE, $64, $33, $65, $89, $65, $DE, $65 ; CPU:$F5A4 PRG:75A4 89 63 DE 63 33 64 89 64 DE 64 33 65 89 65 DE 65 + .byte $33, $66, $89, $66, $DE, $66, $33, $67, $89, $67, $DE, $67, $33, $68, $89, $68 ; CPU:$F5B4 PRG:75B4 33 66 89 66 DE 66 33 67 89 67 DE 67 33 68 89 68 + .byte $DE, $68, $33, $69, $89, $69, $DE, $69, $33, $6A, $89, $6A, $DE, $6A, $33, $6B ; CPU:$F5C4 PRG:75C4 DE 68 33 69 89 69 DE 69 33 6A 89 6A DE 6A 33 6B + .byte $89, $6B, $DE, $6B, $33, $6C, $89, $6C, $DE, $6C, $33, $6D, $89, $6D, $DE, $6D ; CPU:$F5D4 PRG:75D4 89 6B DE 6B 33 6C 89 6C DE 6C 33 6D 89 6D DE 6D + .byte $33, $6E, $89, $6E, $DE, $6E, $33, $6F, $89, $6F, $DE, $6F, $33, $70, $89, $70 ; CPU:$F5E4 PRG:75E4 33 6E 89 6E DE 6E 33 6F 89 6F DE 6F 33 70 89 70 + .byte $DE, $70, $33, $71, $89, $71, $DE, $71, $33, $72, $89, $72, $DE, $72, $33, $73 ; CPU:$F5F4 PRG:75F4 DE 70 33 71 89 71 DE 71 33 72 89 72 DE 72 33 73 + .byte $89, $73, $DE, $73, $33, $74, $89, $74, $DE, $74, $33, $75, $89, $75, $DE, $75 ; CPU:$F604 PRG:7604 89 73 DE 73 33 74 89 74 DE 74 33 75 89 75 DE 75 + .byte $33, $76, $89, $76, $DE, $76, $33, $77, $89, $77, $DE, $77, $33, $78, $89, $78 ; CPU:$F614 PRG:7614 33 76 89 76 DE 76 33 77 89 77 DE 77 33 78 89 78 + .byte $DE, $78, $33, $79, $89, $79, $DE, $79, $33, $7A, $89, $7A, $DE, $7A, $33, $7B ; CPU:$F624 PRG:7624 DE 78 33 79 89 79 DE 79 33 7A 89 7A DE 7A 33 7B + .byte $89, $7B, $DE, $7B, $33, $7C, $89, $7C, $DE, $7C, $33, $7D, $89, $7D, $DE, $7D ; CPU:$F634 PRG:7634 89 7B DE 7B 33 7C 89 7C DE 7C 33 7D 89 7D DE 7D + .byte $33, $7E, $89, $7E, $DE, $7E, $33, $7F, $89, $7F, $DE, $7F, $33, $80, $89, $80 ; CPU:$F644 PRG:7644 33 7E 89 7E DE 7E 33 7F 89 7F DE 7F 33 80 89 80 + .byte $DE, $80, $33, $81, $89, $81, $DE, $81, $33, $82, $89, $82, $DE, $82, $33, $83 ; CPU:$F654 PRG:7654 DE 80 33 81 89 81 DE 81 33 82 89 82 DE 82 33 83 + .byte $89, $83, $DE, $83, $33, $84, $89, $84, $00, $70, $E0, $6F, $C0, $6F, $A0, $6F ; CPU:$F664 PRG:7664 89 83 DE 83 33 84 89 84 00 70 E0 6F C0 6F A0 6F + .byte $80, $6F, $60, $6F, $40, $6F, $20, $6F, $00, $6F, $E0, $6E, $C0, $6E, $A0, $6E ; CPU:$F674 PRG:7674 80 6F 60 6F 40 6F 20 6F 00 6F E0 6E C0 6E A0 6E + .byte $80, $6E, $60, $6E, $40, $6E, $20, $6E, $00, $6E, $E0, $6D, $C0, $6D, $A0, $6D ; CPU:$F684 PRG:7684 80 6E 60 6E 40 6E 20 6E 00 6E E0 6D C0 6D A0 6D + .byte $80, $6D, $60, $6D, $40, $6D, $20, $6D, $00, $6D, $E0, $6C, $C0, $6C, $A0, $6C ; CPU:$F694 PRG:7694 80 6D 60 6D 40 6D 20 6D 00 6D E0 6C C0 6C A0 6C + .byte $80, $6C, $60, $6C, $40, $6C, $20, $6C, $00, $6C, $E0, $6B, $C0, $6B, $A0, $6B ; CPU:$F6A4 PRG:76A4 80 6C 60 6C 40 6C 20 6C 00 6C E0 6B C0 6B A0 6B + .byte $80, $6B, $60, $6B, $40, $6B, $20, $6B, $00, $6B, $E0, $6A, $C0, $6A, $A0, $6A ; CPU:$F6B4 PRG:76B4 80 6B 60 6B 40 6B 20 6B 00 6B E0 6A C0 6A A0 6A + .byte $80, $6A, $60, $6A, $40, $6A, $20, $6A, $00, $6A ; CPU:$F6C4 PRG:76C4 80 6A 60 6A 40 6A 20 6A 00 6A +; ---- data $F6CE-$F6D6 (9 bytes) ---- +; The first entries of the pulse-channel note table. +MusicPulseTableStart: + .byte $E0, $69, $C0, $69, $A0, $69, $80, $69, $60 ; CPU:$F6CE PRG:76CE E0 69 C0 69 A0 69 80 69 60 +; ---- data $F6D7-$F758 (130 bytes) ---- +; Pulse-channel note data for the music player. +MusicPulseTable: + .byte $69, $40, $69, $20, $69, $00, $69, $E0, $68, $C0, $68, $A0, $68, $80, $68, $60 ; CPU:$F6D7 PRG:76D7 69 40 69 20 69 00 69 E0 68 C0 68 A0 68 80 68 60 + .byte $68, $40, $68, $20, $68, $00, $68, $E0, $67, $C0, $67, $A0, $67, $80, $67, $60 ; CPU:$F6E7 PRG:76E7 68 40 68 20 68 00 68 E0 67 C0 67 A0 67 80 67 60 + .byte $67, $40, $67, $20, $67, $00, $67, $E0, $66, $C0, $66, $A0, $66, $80, $66, $60 ; CPU:$F6F7 PRG:76F7 67 40 67 20 67 00 67 E0 66 C0 66 A0 66 80 66 60 + .byte $66, $40, $66, $20, $66, $00, $66, $E0, $65, $C0, $65, $A0, $65, $80, $65, $60 ; CPU:$F707 PRG:7707 66 40 66 20 66 00 66 E0 65 C0 65 A0 65 80 65 60 + .byte $65, $40, $65, $20, $65, $00, $65, $E0, $64, $C0, $64, $A0, $64, $80, $64, $60 ; CPU:$F717 PRG:7717 65 40 65 20 65 00 65 E0 64 C0 64 A0 64 80 64 60 + .byte $64, $40, $64, $20, $64, $00, $64, $E0, $63, $C0, $63, $A0, $63, $80, $63, $60 ; CPU:$F727 PRG:7727 64 40 64 20 64 00 64 E0 63 C0 63 A0 63 80 63 60 + .byte $63, $40, $63, $20, $63, $00, $63, $E0, $62, $C0, $62, $A0, $62, $80, $62, $60 ; CPU:$F737 PRG:7737 63 40 63 20 63 00 63 E0 62 C0 62 A0 62 80 62 60 + .byte $62, $40, $62, $20, $62, $00, $62, $E0, $61, $C0, $61, $A0, $61, $80, $61, $60 ; CPU:$F747 PRG:7747 62 40 62 20 62 00 62 E0 61 C0 61 A0 61 80 61 60 + .byte $61, $40 ; CPU:$F757 PRG:7757 61 40 +; ---- data $F759-$F75F (7 bytes) ---- +; The last entries of the pulse-channel note table. +MusicPulseTableEnd: + .byte $61, $20, $61, $00, $61, $E0, $60 ; CPU:$F759 PRG:7759 61 20 61 00 61 E0 60 +; ---- data $F760-$F7FF (160 bytes) ---- +; The second half of the pulse-channel note data. +MusicPulseTableB: + .byte $C0, $60, $A0, $60, $80, $60, $60, $60, $40, $60, $20, $60, $00, $60, $E0, $5F ; CPU:$F760 PRG:7760 C0 60 A0 60 80 60 60 60 40 60 20 60 00 60 E0 5F + .byte $C0, $5F, $A0, $5F, $80, $5F, $60, $5F, $40, $5F, $20, $5F, $00, $5F, $E0, $5E ; CPU:$F770 PRG:7770 C0 5F A0 5F 80 5F 60 5F 40 5F 20 5F 00 5F E0 5E + .byte $C0, $5E, $A0, $5E, $80, $5E, $60, $5E, $40, $5E, $20, $5E, $00, $5E, $E0, $5D ; CPU:$F780 PRG:7780 C0 5E A0 5E 80 5E 60 5E 40 5E 20 5E 00 5E E0 5D + .byte $C0, $5D, $A0, $5D, $80, $5D, $60, $5D, $40, $5D, $20, $5D, $00, $5D, $E0, $5C ; CPU:$F790 PRG:7790 C0 5D A0 5D 80 5D 60 5D 40 5D 20 5D 00 5D E0 5C + .byte $C0, $5C, $A0, $5C, $80, $5C, $60, $5C, $40, $5C, $20, $5C, $00, $5C, $E0, $5B ; CPU:$F7A0 PRG:77A0 C0 5C A0 5C 80 5C 60 5C 40 5C 20 5C 00 5C E0 5B + .byte $C0, $5B, $A0, $5B, $80, $5B, $60, $5B, $40, $5B, $20, $5B, $00, $5B, $E0, $5A ; CPU:$F7B0 PRG:77B0 C0 5B A0 5B 80 5B 60 5B 40 5B 20 5B 00 5B E0 5A + .byte $C0, $5A, $A0, $5A, $80, $5A, $60, $5A, $40, $5A, $20, $5A, $00, $5A, $E0, $59 ; CPU:$F7C0 PRG:77C0 C0 5A A0 5A 80 5A 60 5A 40 5A 20 5A 00 5A E0 59 + .byte $C0, $59, $A0, $59, $80, $59, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F7D0 PRG:77D0 C0 59 A0 59 80 59 FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F7E0 PRG:77E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F7F0 PRG:77F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +; ----------------------------------------------------------------------------- +; ----------------------------------------------------------------------------- +; Routine: InitSoundEngine +; Global: Brings the APU up and starts the sound engine; the music player and +; the effects dispatcher live in this block. +; Local: Called from the NMI handler when the sound is not running yet. +; Parameters: none +; Returns: nothing +; Clobbers: A, X, Y and most of the APU registers. +; ----------------------------------------------------------------------------- +InitSoundEngine: + lda #$FF ; CPU:$F800 PRG:7800 A9 FF + sta JOY2 ; CPU:$F802 PRG:7802 8D 17 40 + lda #$0F ; CPU:$F805 PRG:7805 A9 0F + sta APUSTATUS ; CPU:$F807 PRG:7807 8D 15 40 + jsr DispatchSfxByBit ; CPU:$F80A PRG:780A 20 06 F9 + jsr DispatchSfxByBitB ; CPU:$F80D PRG:780D 20 C6 F9 + jsr DispatchSfxByBitC ; CPU:$F810 PRG:7810 20 43 FA + jsr UpdateCrowdSound ; CPU:$F813 PRG:7813 20 F3 FA + jsr RunSoundSequence ; CPU:$F816 PRG:7816 20 FF FA + lda #$00 ; CPU:$F819 PRG:7819 A9 00 + sta SfxCommand ; CPU:$F81B PRG:781B 85 EF + sta MusicPlayingFlag ; CPU:$F81D PRG:781D 85 EE + sta ApplauseCommand ; CPU:$F81F PRG:781F 85 ED + sta CrowdSoundCommand ; CPU:$F821 PRG:7821 85 EC + sta MusicCommand ; CPU:$F823 PRG:7823 85 EB + ldy $06FA ; CPU:$F825 PRG:7825 AC FA 06 + lda SoundSequenceFlags ; CPU:$F828 PRG:7828 A5 E4 + and #$02 ; CPU:$F82A PRG:782A 29 02 + beq InitSoundEngine_Loop ; CPU:$F82C PRG:782C F0 07 + inc $06FA ; CPU:$F82E PRG:782E EE FA 06 + cpy #$50 ; CPU:$F831 PRG:7831 C0 50 + bcc InitSoundEngine_Loop2 ; CPU:$F833 PRG:7833 90 06 +; ----------------------------------------------------------------------------- +; Routine: InitSoundEngine_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitSoundEngine_Loop: + tya ; CPU:$F835 PRG:7835 98 + beq InitSoundEngine_Loop2 ; CPU:$F836 PRG:7836 F0 03 + dec $06FA ; CPU:$F838 PRG:7838 CE FA 06 +; ----------------------------------------------------------------------------- +; Routine: InitSoundEngine_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +InitSoundEngine_Loop2: + sty APUDMCDIRECT ; CPU:$F83B PRG:783B 8C 11 40 + rts ; CPU:$F83E PRG:783E 60 +; ----------------------------------------------------------------------------- +; Routine: SetPulse1Envelope +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetPulse1Envelope: + stx APUPULSE1CTRL ; CPU:$F83F PRG:783F 8E 00 40 + sty APUPULSE1SWEEP ; CPU:$F842 PRG:7842 8C 01 40 + rts ; CPU:$F845 PRG:7845 60 +; ----------------------------------------------------------------------------- +; Routine: SetPulse2Envelope +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetPulse2Envelope: + stx APUPULSE2CTRL ; CPU:$F846 PRG:7846 8E 04 40 + sty APUPULSE2SWEEP ; CPU:$F849 PRG:7849 8C 05 40 + rts ; CPU:$F84C PRG:784C 60 +; ---- data $F84D-$F84F (3 bytes) ---- +; Unreached block: a `JMP $F83F` tail of the sound engine. +UnreachedCode_F84D: + .byte $20, $3F, $F8 ; CPU:$F84D PRG:784D 20 3F F8 +; ----------------------------------------------------------------------------- +; Routine: PlayPulse1Note +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlayPulse1Note: + ldx #$00 ; CPU:$F850 PRG:7850 A2 00 +; ----------------------------------------------------------------------------- +; Routine: PlayPulse1Note_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlayPulse1Note_OnNonzero: + tay ; CPU:$F852 PRG:7852 A8 + lda $FF01,y ; CPU:$F853 PRG:7853 B9 01 FF + beq PlayPulse1Note_Loop ; CPU:$F856 PRG:7856 F0 0B + sta APUPULSE1TIMERLO,x ; CPU:$F858 PRG:7858 9D 02 40 + lda $FF00,y ; CPU:$F85B PRG:785B B9 00 FF + ora #$08 ; CPU:$F85E PRG:785E 09 08 + sta APUPULSE1TIMERHI,x ; CPU:$F860 PRG:7860 9D 03 40 +; ----------------------------------------------------------------------------- +; Routine: PlayPulse1Note_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlayPulse1Note_Loop: + rts ; CPU:$F863 PRG:7863 60 +; ---- data $F864-$F866 (3 bytes) ---- +; Unreached block: a `JMP $F846` tail of the sound engine. +UnreachedCode_F864: + .byte $20, $46, $F8 ; CPU:$F864 PRG:7864 20 46 F8 +; ----------------------------------------------------------------------------- +; Routine: PlayPulse2Note +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlayPulse2Note: + ldx #$04 ; CPU:$F867 PRG:7867 A2 04 + bne PlayPulse1Note_OnNonzero ; CPU:$F869 PRG:7869 D0 E7 +; ----------------------------------------------------------------------------- +; Routine: PlayTriangleNote +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlayTriangleNote: + ldx #$08 ; CPU:$F86B PRG:786B A2 08 + bne PlayPulse1Note_OnNonzero ; CPU:$F86D PRG:786D D0 E3 +; ----------------------------------------------------------------------------- +; Routine: NoteToPeriodIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +NoteToPeriodIndex: + tax ; CPU:$F86F PRG:786F AA + ror a ; CPU:$F870 PRG:7870 6A + txa ; CPU:$F871 PRG:7871 8A + rol a ; CPU:$F872 PRG:7872 2A + rol a ; CPU:$F873 PRG:7873 2A + rol a ; CPU:$F874 PRG:7874 2A +; ----------------------------------------------------------------------------- +; Routine: GetNoisePeriodIndex +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +GetNoisePeriodIndex: + and #$07 ; CPU:$F875 PRG:7875 29 07 + clc ; CPU:$F877 PRG:7877 18 + adc SoundNoteIndex ; CPU:$F878 PRG:7878 65 E5 + tay ; CPU:$F87A PRG:787A A8 + lda $FF52,y ; CPU:$F87B PRG:787B B9 52 FF + rts ; CPU:$F87E PRG:787E 60 +; ---- data $F87F-$F89E (32 bytes) ---- +; Thirty-two noise-channel period values used by the crowd and the whistle. +NoisePeriodTable: +; referenced by `lda $F88E,y` at $F8E6 (operand $F88E falls inside this region) + .byte $02, $05, $05, $06, $06, $07, $08, $08, $0A, $0A, $0A, $0B, $0B, $0C, $0C, $0B ; CPU:$F87F PRG:787F 02 05 05 06 06 07 08 08 0A 0A 0A 0B 0B 0C 0C 0B + .byte $10, $11, $13, $15, $16, $14, $18, $19, $16, $17, $16, $1A, $1E, $1F, $18, $12 ; CPU:$F88F PRG:788F 10 11 13 15 16 14 18 19 16 17 16 1A 1E 1F 18 12 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxWhistle +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxWhistle: + jsr StartSfxEnvelope ; CPU:$F89F PRG:789F 20 C5 F8 + ldx #$81 ; CPU:$F8A2 PRG:78A2 A2 81 + ldy #$8E ; CPU:$F8A4 PRG:78A4 A0 8E + jsr SetPulse1Envelope ; CPU:$F8A6 PRG:78A6 20 3F F8 + ldx #$89 ; CPU:$F8A9 PRG:78A9 A2 89 + ldy #$89 ; CPU:$F8AB PRG:78AB A0 89 + stx APUPULSE1TIMERLO ; CPU:$F8AD PRG:78AD 8E 02 40 + sty APUPULSE1TIMERHI ; CPU:$F8B0 PRG:78B0 8C 03 40 + lda #$03 ; CPU:$F8B3 PRG:78B3 A9 03 + sta APUNOISECTRL ; CPU:$F8B5 PRG:78B5 8D 0C 40 + lda #$0B ; CPU:$F8B8 PRG:78B8 A9 0B + sta APUNOISEPERIOD ; CPU:$F8BA PRG:78BA 8D 0E 40 + lda #$08 ; CPU:$F8BD PRG:78BD A9 08 + sta APUNOISELENGTH ; CPU:$F8BF PRG:78BF 8D 0F 40 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxWhistle_OnCarrySet +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxWhistle_OnCarrySet: + jmp DecrementSfxCounter ; CPU:$F8C2 PRG:78C2 4C F7 F8 +; ----------------------------------------------------------------------------- +; Routine: StartSfxEnvelope +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StartSfxEnvelope: + lda SfxCommand ; CPU:$F8C5 PRG:78C5 A5 EF + sta SoundPlayingFlags ; CPU:$F8C7 PRG:78C7 85 E0 + lda #$0F ; CPU:$F8C9 PRG:78C9 A9 0F + sta $06F5 ; CPU:$F8CB PRG:78CB 8D F5 06 + rts ; CPU:$F8CE PRG:78CE 60 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxHit +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxHit: + jsr StartSfxEnvelope ; CPU:$F8CF PRG:78CF 20 C5 F8 + ldx #$81 ; CPU:$F8D2 PRG:78D2 A2 81 + ldy #$8E ; CPU:$F8D4 PRG:78D4 A0 8E + jsr SetPulse1Envelope ; CPU:$F8D6 PRG:78D6 20 3F F8 + ldx #$FC ; CPU:$F8D9 PRG:78D9 A2 FC + ldy #$89 ; CPU:$F8DB PRG:78DB A0 89 + stx APUPULSE1TIMERLO ; CPU:$F8DD PRG:78DD 8E 02 40 + sty APUPULSE1TIMERHI ; CPU:$F8E0 PRG:78E0 8C 03 40 +; ----------------------------------------------------------------------------- +; Routine: UpdateNoiseSfx +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateNoiseSfx: + ldy $06F5 ; CPU:$F8E3 PRG:78E3 AC F5 06 + lda $F88E,y ; CPU:$F8E6 PRG:78E6 B9 8E F8 + sta APUNOISECTRL ; CPU:$F8E9 PRG:78E9 8D 0C 40 + lda $F87E,y ; CPU:$F8EC PRG:78EC B9 7E F8 + sta APUNOISEPERIOD ; CPU:$F8EF PRG:78EF 8D 0E 40 + lda #$18 ; CPU:$F8F2 PRG:78F2 A9 18 + sta APUNOISELENGTH ; CPU:$F8F4 PRG:78F4 8D 0F 40 +; ----------------------------------------------------------------------------- +; Routine: DecrementSfxCounter +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DecrementSfxCounter: + dec $06F5 ; CPU:$F8F7 PRG:78F7 CE F5 06 + bne DecrementSfxCounter_Loop ; CPU:$F8FA PRG:78FA D0 09 + lda #$00 ; CPU:$F8FC PRG:78FC A9 00 + sta SoundPlayingFlags ; CPU:$F8FE PRG:78FE 85 E0 + lda #$10 ; CPU:$F900 PRG:7900 A9 10 + sta APUPULSE1CTRL ; CPU:$F902 PRG:7902 8D 00 40 +; ----------------------------------------------------------------------------- +; Routine: DecrementSfxCounter_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DecrementSfxCounter_Loop: + rts ; CPU:$F905 PRG:7905 60 +; ----------------------------------------------------------------------------- +; Routine: DispatchSfxByBit +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DispatchSfxByBit: + lda SfxCommand ; CPU:$F906 PRG:7906 A5 EF + bne DispatchSfxByBit_Loop ; CPU:$F908 PRG:7908 D0 05 + lda SoundPlayingFlags ; CPU:$F90A PRG:790A A5 E0 + bne DispatchSfxByBit_Loop2 ; CPU:$F90C PRG:790C D0 11 + rts ; CPU:$F90E PRG:790E 60 +; ----------------------------------------------------------------------------- +; Routine: DispatchSfxByBit_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DispatchSfxByBit_Loop: + lsr a ; CPU:$F90F PRG:790F 4A + bcs PlaySfxHit ; CPU:$F910 PRG:7910 B0 BD + lsr a ; CPU:$F912 PRG:7912 4A + bcs PlaySfxWhistle ; CPU:$F913 PRG:7913 B0 8A + lsr a ; CPU:$F915 PRG:7915 4A + bcs PlaySfxCrowd ; CPU:$F916 PRG:7916 B0 17 + lsr a ; CPU:$F918 PRG:7918 4A + bcs PlaySfxBounce ; CPU:$F919 PRG:7919 B0 2B + lsr a ; CPU:$F91B PRG:791B 4A + bcs PlaySfxNet ; CPU:$F91C PRG:791C B0 3D + rts ; CPU:$F91E PRG:791E 60 +; ----------------------------------------------------------------------------- +; Routine: DispatchSfxByBit_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DispatchSfxByBit_Loop2: + lsr a ; CPU:$F91F PRG:791F 4A + bcs UpdateNoiseSfx ; CPU:$F920 PRG:7920 B0 C1 + lsr a ; CPU:$F922 PRG:7922 4A + bcs PlaySfxWhistle_OnCarrySet ; CPU:$F923 PRG:7923 B0 9D + lsr a ; CPU:$F925 PRG:7925 4A + bcs StopSfxCrowd ; CPU:$F926 PRG:7926 B0 1B + lsr a ; CPU:$F928 PRG:7928 4A + bcs StopSfxBounce ; CPU:$F929 PRG:7929 B0 2D + lsr a ; CPU:$F92B PRG:792B 4A + bcs StopSfxNet ; CPU:$F92C PRG:792C B0 41 + rts ; CPU:$F92E PRG:792E 60 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxCrowd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxCrowd: + jsr StartSfxEnvelope ; CPU:$F92F PRG:792F 20 C5 F8 + ldx #$81 ; CPU:$F932 PRG:7932 A2 81 + ldy #$86 ; CPU:$F934 PRG:7934 A0 86 + jsr SetPulse1Envelope ; CPU:$F936 PRG:7936 20 3F F8 + ldx #$82 ; CPU:$F939 PRG:7939 A2 82 + ldy #$FC ; CPU:$F93B PRG:793B A0 FC + stx APUPULSE1TIMERLO ; CPU:$F93D PRG:793D 8E 02 40 + sty APUPULSE1TIMERHI ; CPU:$F940 PRG:7940 8C 03 40 +; ----------------------------------------------------------------------------- +; Routine: StopSfxCrowd +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StopSfxCrowd: + jmp DecrementSfxCounter ; CPU:$F943 PRG:7943 4C F7 F8 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxBounce +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxBounce: + jsr StartSfxEnvelope ; CPU:$F946 PRG:7946 20 C5 F8 + lda #$04 ; CPU:$F949 PRG:7949 A9 04 + sta APUNOISECTRL ; CPU:$F94B PRG:794B 8D 0C 40 + lda #$05 ; CPU:$F94E PRG:794E A9 05 + sta APUNOISEPERIOD ; CPU:$F950 PRG:7950 8D 0E 40 + lda #$08 ; CPU:$F953 PRG:7953 A9 08 + sta APUNOISELENGTH ; CPU:$F955 PRG:7955 8D 0F 40 +; ----------------------------------------------------------------------------- +; Routine: StopSfxBounce +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StopSfxBounce: + jmp DecrementSfxCounter ; CPU:$F958 PRG:7958 4C F7 F8 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxNet +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxNet: + jsr StartSfxEnvelope ; CPU:$F95B PRG:795B 20 C5 F8 + ldx #$81 ; CPU:$F95E PRG:795E A2 81 + ldy #$8E ; CPU:$F960 PRG:7960 A0 8E + jsr SetPulse1Envelope ; CPU:$F962 PRG:7962 20 3F F8 + ldx #$89 ; CPU:$F965 PRG:7965 A2 89 + ldy #$89 ; CPU:$F967 PRG:7967 A0 89 + stx APUPULSE1TIMERLO ; CPU:$F969 PRG:7969 8E 02 40 + sty APUPULSE1TIMERHI ; CPU:$F96C PRG:796C 8C 03 40 +; ----------------------------------------------------------------------------- +; Routine: StopSfxNet +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StopSfxNet: + jmp DecrementSfxCounter ; CPU:$F96F PRG:796F 4C F7 F8 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxCheer +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxCheer: + ldx #$81 ; CPU:$F972 PRG:7972 A2 81 + ldy #$8E ; CPU:$F974 PRG:7974 A0 8E + jsr SetPulse2Envelope ; CPU:$F976 PRG:7976 20 46 F8 + ldx #$89 ; CPU:$F979 PRG:7979 A2 89 + ldy #$8A ; CPU:$F97B PRG:797B A0 8A + stx APUPULSE2TIMERLO ; CPU:$F97D PRG:797D 8E 06 40 + sty APUPULSE2TIMERHI ; CPU:$F980 PRG:7980 8C 07 40 + lda #$02 ; CPU:$F983 PRG:7983 A9 02 + sta APUNOISECTRL ; CPU:$F985 PRG:7985 8D 0C 40 + lda #$0B ; CPU:$F988 PRG:7988 A9 0B + sta APUNOISEPERIOD ; CPU:$F98A PRG:798A 8D 0E 40 + lda #$08 ; CPU:$F98D PRG:798D A9 08 + sta APUNOISELENGTH ; CPU:$F98F PRG:798F 8D 0F 40 + rts ; CPU:$F992 PRG:7992 60 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxPoint +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxPoint: + ldx #$82 ; CPU:$F993 PRG:7993 A2 82 + ldy #$CE ; CPU:$F995 PRG:7995 A0 CE + jsr SetPulse2Envelope ; CPU:$F997 PRG:7997 20 46 F8 + ldx #$57 ; CPU:$F99A PRG:799A A2 57 + ldy #$DB ; CPU:$F99C PRG:799C A0 DB + stx APUPULSE2TIMERLO ; CPU:$F99E PRG:799E 8E 06 40 + sty APUPULSE2TIMERHI ; CPU:$F9A1 PRG:79A1 8C 07 40 + rts ; CPU:$F9A4 PRG:79A4 60 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxServe +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxServe: + ldx #$81 ; CPU:$F9A5 PRG:79A5 A2 81 + ldy #$8E ; CPU:$F9A7 PRG:79A7 A0 8E + jsr SetPulse2Envelope ; CPU:$F9A9 PRG:79A9 20 46 F8 + ldx #$89 ; CPU:$F9AC PRG:79AC A2 89 + ldy #$8A ; CPU:$F9AE PRG:79AE A0 8A + stx APUPULSE2TIMERLO ; CPU:$F9B0 PRG:79B0 8E 06 40 + sty APUPULSE2TIMERHI ; CPU:$F9B3 PRG:79B3 8C 07 40 + lda #$03 ; CPU:$F9B6 PRG:79B6 A9 03 + sta APUNOISECTRL ; CPU:$F9B8 PRG:79B8 8D 0C 40 + lda #$07 ; CPU:$F9BB PRG:79BB A9 07 + sta APUNOISEPERIOD ; CPU:$F9BD PRG:79BD 8D 0E 40 + lda #$08 ; CPU:$F9C0 PRG:79C0 A9 08 + sta APUNOISELENGTH ; CPU:$F9C2 PRG:79C2 8D 0F 40 + rts ; CPU:$F9C5 PRG:79C5 60 +; ----------------------------------------------------------------------------- +; Routine: DispatchSfxByBitB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DispatchSfxByBitB: + lda MusicPlayingFlag ; CPU:$F9C6 PRG:79C6 A5 EE + beq DecrementSfxCounterB ; CPU:$F9C8 PRG:79C8 F0 1B + lda #$0F ; CPU:$F9CA PRG:79CA A9 0F + sta $06F2 ; CPU:$F9CC PRG:79CC 8D F2 06 + lda #$01 ; CPU:$F9CF PRG:79CF A9 01 + sta SoundEffectTimer1 ; CPU:$F9D1 PRG:79D1 85 E1 + lda MusicPlayingFlag ; CPU:$F9D3 PRG:79D3 A5 EE + lsr a ; CPU:$F9D5 PRG:79D5 4A + bcs PlaySfxCheer ; CPU:$F9D6 PRG:79D6 B0 9A + lsr a ; CPU:$F9D8 PRG:79D8 4A + bcs PlaySfxPoint ; CPU:$F9D9 PRG:79D9 B0 B8 + lsr a ; CPU:$F9DB PRG:79DB 4A + bcs PlaySfxServe ; CPU:$F9DC PRG:79DC B0 C7 + lsr a ; CPU:$F9DE PRG:79DE 4A + bcs PlaySfxWhistleB ; CPU:$F9DF PRG:79DF B0 0E + lsr a ; CPU:$F9E1 PRG:79E1 4A + bcs PlaySfxBallBounce ; CPU:$F9E2 PRG:79E2 B0 2C + rts ; CPU:$F9E4 PRG:79E4 60 +; ----------------------------------------------------------------------------- +; Routine: DecrementSfxCounterB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DecrementSfxCounterB: + dec $06F2 ; CPU:$F9E5 PRG:79E5 CE F2 06 + bne DecrementSfxCounterB_Loop ; CPU:$F9E8 PRG:79E8 D0 04 + lda #$00 ; CPU:$F9EA PRG:79EA A9 00 + sta SoundEffectTimer1 ; CPU:$F9EC PRG:79EC 85 E1 +; ----------------------------------------------------------------------------- +; Routine: DecrementSfxCounterB_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DecrementSfxCounterB_Loop: + rts ; CPU:$F9EE PRG:79EE 60 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxWhistleB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxWhistleB: + ldx #$82 ; CPU:$F9EF PRG:79EF A2 82 + ldy #$8B ; CPU:$F9F1 PRG:79F1 A0 8B + jsr SetPulse2Envelope ; CPU:$F9F3 PRG:79F3 20 46 F8 + ldx #$9A ; CPU:$F9F6 PRG:79F6 A2 9A + ldy #$09 ; CPU:$F9F8 PRG:79F8 A0 09 + stx APUPULSE2TIMERLO ; CPU:$F9FA PRG:79FA 8E 06 40 + sty APUPULSE2TIMERHI ; CPU:$F9FD PRG:79FD 8C 07 40 + lda #$01 ; CPU:$FA00 PRG:7A00 A9 01 + sta APUNOISECTRL ; CPU:$FA02 PRG:7A02 8D 0C 40 + lda #$04 ; CPU:$FA05 PRG:7A05 A9 04 + sta APUNOISEPERIOD ; CPU:$FA07 PRG:7A07 8D 0E 40 + lda #$F8 ; CPU:$FA0A PRG:7A0A A9 F8 + sta APUNOISELENGTH ; CPU:$FA0C PRG:7A0C 8D 0F 40 + rts ; CPU:$FA0F PRG:7A0F 60 +; ----------------------------------------------------------------------------- +; Routine: PlaySfxBallBounce +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySfxBallBounce: + ldx #$8F ; CPU:$FA10 PRG:7A10 A2 8F + ldy #$92 ; CPU:$FA12 PRG:7A12 A0 92 + jsr SetPulse2Envelope ; CPU:$FA14 PRG:7A14 20 46 F8 + ldx #$00 ; CPU:$FA17 PRG:7A17 A2 00 + ldy #$F9 ; CPU:$FA19 PRG:7A19 A0 F9 + stx APUPULSE2TIMERLO ; CPU:$FA1B PRG:7A1B 8E 06 40 + sty APUPULSE2TIMERHI ; CPU:$FA1E PRG:7A1E 8C 07 40 + rts ; CPU:$FA21 PRG:7A21 60 +; ----------------------------------------------------------------------------- +; Routine: SetCrowdNoiseVolume +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetCrowdNoiseVolume: + lda #$9F ; CPU:$FA22 PRG:7A22 A9 9F + sta APUPULSE1CTRL ; CPU:$FA24 PRG:7A24 8D 00 40 + sta APUPULSE2CTRL ; CPU:$FA27 PRG:7A27 8D 04 40 + lda #$7F ; CPU:$FA2A PRG:7A2A A9 7F + sta APUPULSE1SWEEP ; CPU:$FA2C PRG:7A2C 8D 01 40 + sta APUPULSE2SWEEP ; CPU:$FA2F PRG:7A2F 8D 05 40 + lda #$8E ; CPU:$FA32 PRG:7A32 A9 8E + sta APUPULSE1TIMERLO ; CPU:$FA34 PRG:7A34 8D 02 40 + sta APUPULSE2TIMERLO ; CPU:$FA37 PRG:7A37 8D 06 40 + lda #$88 ; CPU:$FA3A PRG:7A3A A9 88 + sta APUPULSE1TIMERHI ; CPU:$FA3C PRG:7A3C 8D 03 40 + sta APUPULSE2TIMERHI ; CPU:$FA3F PRG:7A3F 8D 07 40 + rts ; CPU:$FA42 PRG:7A42 60 +; ----------------------------------------------------------------------------- +; Routine: DispatchSfxByBitC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DispatchSfxByBitC: + lda ApplauseCommand ; CPU:$FA43 PRG:7A43 A5 ED + beq DecrementSfxCounterC ; CPU:$FA45 PRG:7A45 F0 15 + lda #$30 ; CPU:$FA47 PRG:7A47 A9 30 + sta $06EF ; CPU:$FA49 PRG:7A49 8D EF 06 + lda #$01 ; CPU:$FA4C PRG:7A4C A9 01 + sta SoundEffectTimer2 ; CPU:$FA4E PRG:7A4E 85 E2 + lda ApplauseCommand ; CPU:$FA50 PRG:7A50 A5 ED + lsr a ; CPU:$FA52 PRG:7A52 4A + bcs SetCrowdNoiseVolume ; CPU:$FA53 PRG:7A53 B0 CD + lsr a ; CPU:$FA55 PRG:7A55 4A + bcs SetCrowdNoiseVolumeB ; CPU:$FA56 PRG:7A56 B0 0E + lsr a ; CPU:$FA58 PRG:7A58 4A + bcs SetCrowdNoiseVolumeC ; CPU:$FA59 PRG:7A59 B0 2E + rts ; CPU:$FA5B PRG:7A5B 60 +; ----------------------------------------------------------------------------- +; Routine: DecrementSfxCounterC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DecrementSfxCounterC: + dec $06EF ; CPU:$FA5C PRG:7A5C CE EF 06 + bne DecrementSfxCounterC_Loop ; CPU:$FA5F PRG:7A5F D0 04 + lda #$00 ; CPU:$FA61 PRG:7A61 A9 00 + sta SoundEffectTimer2 ; CPU:$FA63 PRG:7A63 85 E2 +; ----------------------------------------------------------------------------- +; Routine: DecrementSfxCounterC_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +DecrementSfxCounterC_Loop: + rts ; CPU:$FA65 PRG:7A65 60 +; ----------------------------------------------------------------------------- +; Routine: SetCrowdNoiseVolumeB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetCrowdNoiseVolumeB: + lda #$9F ; CPU:$FA66 PRG:7A66 A9 9F + sta APUPULSE1CTRL ; CPU:$FA68 PRG:7A68 8D 00 40 + sta APUPULSE2CTRL ; CPU:$FA6B PRG:7A6B 8D 04 40 + lda #$F0 ; CPU:$FA6E PRG:7A6E A9 F0 + sta APUPULSE1SWEEP ; CPU:$FA70 PRG:7A70 8D 01 40 + sta APUPULSE2SWEEP ; CPU:$FA73 PRG:7A73 8D 05 40 + lda #$60 ; CPU:$FA76 PRG:7A76 A9 60 + sta APUPULSE1TIMERLO ; CPU:$FA78 PRG:7A78 8D 02 40 + lda #$70 ; CPU:$FA7B PRG:7A7B A9 70 + sta APUPULSE2TIMERLO ; CPU:$FA7D PRG:7A7D 8D 06 40 + lda #$B0 ; CPU:$FA80 PRG:7A80 A9 B0 + sta APUPULSE1TIMERHI ; CPU:$FA82 PRG:7A82 8D 03 40 + sta APUPULSE2TIMERHI ; CPU:$FA85 PRG:7A85 8D 07 40 + rts ; CPU:$FA88 PRG:7A88 60 +; ----------------------------------------------------------------------------- +; Routine: SetCrowdNoiseVolumeC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetCrowdNoiseVolumeC: + lda #$9F ; CPU:$FA89 PRG:7A89 A9 9F + sta APUPULSE1CTRL ; CPU:$FA8B PRG:7A8B 8D 00 40 + sta APUPULSE2CTRL ; CPU:$FA8E PRG:7A8E 8D 04 40 + lda #$F0 ; CPU:$FA91 PRG:7A91 A9 F0 + sta APUPULSE1SWEEP ; CPU:$FA93 PRG:7A93 8D 01 40 + sta APUPULSE2SWEEP ; CPU:$FA96 PRG:7A96 8D 05 40 + lda #$60 ; CPU:$FA99 PRG:7A99 A9 60 + sta APUPULSE1TIMERLO ; CPU:$FA9B PRG:7A9B 8D 02 40 + lda #$70 ; CPU:$FA9E PRG:7A9E A9 70 + sta APUPULSE2TIMERLO ; CPU:$FAA0 PRG:7AA0 8D 06 40 + lda #$F0 ; CPU:$FAA3 PRG:7AA3 A9 F0 + sta APUPULSE1TIMERHI ; CPU:$FAA5 PRG:7AA5 8D 03 40 + sta APUPULSE2TIMERHI ; CPU:$FAA8 PRG:7AA8 8D 07 40 + rts ; CPU:$FAAB PRG:7AAB 60 +; ---- data $FAAC-$FAC3 (24 bytes) ---- +; Sixteen crowd-noise steps (which noise period and which length to use) +; plus sixteen constant values. +CrowdNoisePatternTable: +; referenced by `ldx $FAAC,y` at $FAD1 (operand $FAAC falls inside this region) +; referenced by `lda $FABC,y` at $FAD6 (operand $FABC falls inside this region) + .byte $1B, $1C, $1D, $1C, $1D, $1E, $1F, $1E, $1D, $1C, $1B, $1C, $1D, $1C, $1B, $1A ; CPU:$FAAC PRG:7AAC 1B 1C 1D 1C 1D 1E 1F 1E 1D 1C 1B 1C 1D 1C 1B 1A + .byte $0C, $0C, $0C, $0C, $0C, $0C, $0C, $0C ; CPU:$FABC PRG:7ABC 0C 0C 0C 0C 0C 0C 0C 0C +; ----------------------------------------------------------------------------- +; Routine: UpdateCrowdNoisePattern +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateCrowdNoisePattern: + sty CrowdNoiseStep ; CPU:$FAC4 PRG:7AC4 84 E3 + lda #$3F ; CPU:$FAC6 PRG:7AC6 A9 3F + sta $06EC ; CPU:$FAC8 PRG:7AC8 8D EC 06 +; ----------------------------------------------------------------------------- +; Routine: PlayCrowdNoiseStep +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlayCrowdNoiseStep: + lda $06EC ; CPU:$FACB PRG:7ACB AD EC 06 + lsr a ; CPU:$FACE PRG:7ACE 4A + lsr a ; CPU:$FACF PRG:7ACF 4A + tay ; CPU:$FAD0 PRG:7AD0 A8 + ldx CrowdNoisePatternTable,y ; CPU:$FAD1 PRG:7AD1 BE AC FA + lsr a ; CPU:$FAD4 PRG:7AD4 4A + tay ; CPU:$FAD5 PRG:7AD5 A8 + lda $FABC,y ; CPU:$FAD6 PRG:7AD6 B9 BC FA + stx APUNOISECTRL ; CPU:$FAD9 PRG:7AD9 8E 0C 40 + sta APUNOISEPERIOD ; CPU:$FADC PRG:7ADC 8D 0E 40 + lda #$18 ; CPU:$FADF PRG:7ADF A9 18 + sta APUNOISELENGTH ; CPU:$FAE1 PRG:7AE1 8D 0F 40 + dec $06EC ; CPU:$FAE4 PRG:7AE4 CE EC 06 + bne PlayCrowdNoiseStep_Loop ; CPU:$FAE7 PRG:7AE7 D0 09 + lda #$00 ; CPU:$FAE9 PRG:7AE9 A9 00 + sta CrowdNoiseStep ; CPU:$FAEB PRG:7AEB 85 E3 + lda #$10 ; CPU:$FAED PRG:7AED A9 10 + sta APUNOISECTRL ; CPU:$FAEF PRG:7AEF 8D 0C 40 +; ----------------------------------------------------------------------------- +; Routine: PlayCrowdNoiseStep_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlayCrowdNoiseStep_Loop: + rts ; CPU:$FAF2 PRG:7AF2 60 +; ----------------------------------------------------------------------------- +; Routine: UpdateCrowdSound +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateCrowdSound: + ldy CrowdSoundCommand ; CPU:$FAF3 PRG:7AF3 A4 EC + lda CrowdNoiseStep ; CPU:$FAF5 PRG:7AF5 A5 E3 + lsr a ; CPU:$FAF7 PRG:7AF7 4A + bcs PlayCrowdNoiseStep ; CPU:$FAF8 PRG:7AF8 B0 D1 + lsr CrowdSoundCommand ; CPU:$FAFA PRG:7AFA 46 EC + bcs UpdateCrowdNoisePattern ; CPU:$FAFC PRG:7AFC B0 C6 + rts ; CPU:$FAFE PRG:7AFE 60 +; ----------------------------------------------------------------------------- +; Routine: RunSoundSequence +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +RunSoundSequence: + lda MusicCommand ; CPU:$FAFF PRG:7AFF A5 EB + bne StartSoundSequence ; CPU:$FB01 PRG:7B01 D0 05 + lda SoundSequenceFlags ; CPU:$FB03 PRG:7B03 A5 E4 + bne RunSoundSequenceStep ; CPU:$FB05 PRG:7B05 D0 4F + rts ; CPU:$FB07 PRG:7B07 60 +; ----------------------------------------------------------------------------- +; Routine: StartSoundSequence +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StartSoundSequence: + ldx #$01 ; CPU:$FB08 PRG:7B08 A2 01 + stx ZpEA ; CPU:$FB0A PRG:7B0A 86 EA + cmp #$40 ; CPU:$FB0C PRG:7B0C C9 40 + bne StartSoundSequence_OnNonzero ; CPU:$FB0E PRG:7B0E D0 08 + lda SoundSequenceFlags ; CPU:$FB10 PRG:7B10 A5 E4 + and #$02 ; CPU:$FB12 PRG:7B12 29 02 + sta ZpE9 ; CPU:$FB14 PRG:7B14 85 E9 + lda MusicCommand ; CPU:$FB16 PRG:7B16 A5 EB +; ----------------------------------------------------------------------------- +; Routine: StartSoundSequence_OnNonzero +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StartSoundSequence_OnNonzero: + sta SoundSequenceFlags ; CPU:$FB18 PRG:7B18 85 E4 + ldy #$00 ; CPU:$FB1A PRG:7B1A A0 00 + sty $06FF ; CPU:$FB1C PRG:7B1C 8C FF 06 +; ----------------------------------------------------------------------------- +; Routine: LoadSoundSequenceNote +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +LoadSoundSequenceNote: + iny ; CPU:$FB1F PRG:7B1F C8 + lsr a ; CPU:$FB20 PRG:7B20 4A + bcc LoadSoundSequenceNote ; CPU:$FB21 PRG:7B21 90 FC + lda $FC8E,y ; CPU:$FB23 PRG:7B23 B9 8E FC + tay ; CPU:$FB26 PRG:7B26 A8 + lda $FC8F,y ; CPU:$FB27 PRG:7B27 B9 8F FC + sta SoundNoteIndex ; CPU:$FB2A PRG:7B2A 85 E5 + lda $FC90,y ; CPU:$FB2C PRG:7B2C B9 90 FC + sta SoundNoteIndex2 ; CPU:$FB2F PRG:7B2F 85 E6 + lda $FC91,y ; CPU:$FB31 PRG:7B31 B9 91 FC + sta ZpE7 ; CPU:$FB34 PRG:7B34 85 E7 + lda $FC92,y ; CPU:$FB36 PRG:7B36 B9 92 FC + sta $06FD ; CPU:$FB39 PRG:7B39 8D FD 06 + lda $FC93,y ; CPU:$FB3C PRG:7B3C B9 93 FC + sta $06FE ; CPU:$FB3F PRG:7B3F 8D FE 06 + lda $FC94,y ; CPU:$FB42 PRG:7B42 B9 94 FC + sta $06FC ; CPU:$FB45 PRG:7B45 8D FC 06 + lda #$01 ; CPU:$FB48 PRG:7B48 A9 01 + sta $06F9 ; CPU:$FB4A PRG:7B4A 8D F9 06 + sta $06F8 ; CPU:$FB4D PRG:7B4D 8D F8 06 + sta $06F7 ; CPU:$FB50 PRG:7B50 8D F7 06 + sta $06F6 ; CPU:$FB53 PRG:7B53 8D F6 06 +; ----------------------------------------------------------------------------- +; Routine: RunSoundSequenceStep +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +RunSoundSequenceStep: + dec $06F9 ; CPU:$FB56 PRG:7B56 CE F9 06 + bne UpdateSequencePulse2 ; CPU:$FB59 PRG:7B59 D0 73 +; ----------------------------------------------------------------------------- +; Routine: ReadSoundSequenceByte +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +ReadSoundSequenceByte: + ldy $06FF ; CPU:$FB5B PRG:7B5B AC FF 06 + inc $06FF ; CPU:$FB5E PRG:7B5E EE FF 06 + lda (SoundNoteIndex2),y ; CPU:$FB61 PRG:7B61 B1 E6 + beq StopSoundSequence ; CPU:$FB63 PRG:7B63 F0 1F + cmp #$01 ; CPU:$FB65 PRG:7B65 C9 01 + bne PlaySequenceNote ; CPU:$FB67 PRG:7B67 D0 3B + inc ZpEA ; CPU:$FB69 PRG:7B69 E6 EA + lda ZpEA ; CPU:$FB6B PRG:7B6B A5 EA + lsr a ; CPU:$FB6D PRG:7B6D 4A + bcc ReadSoundSequenceByte ; CPU:$FB6E PRG:7B6E 90 EB + lda $06FF ; CPU:$FB70 PRG:7B70 AD FF 06 + clc ; CPU:$FB73 PRG:7B73 18 + adc #$08 ; CPU:$FB74 PRG:7B74 69 08 + sta $06FF ; CPU:$FB76 PRG:7B76 8D FF 06 + lda $06FD ; CPU:$FB79 PRG:7B79 AD FD 06 + clc ; CPU:$FB7C PRG:7B7C 18 + adc #$0D ; CPU:$FB7D PRG:7B7D 69 0D + sta $06FD ; CPU:$FB7F PRG:7B7F 8D FD 06 + bne ReadSoundSequenceByte ; CPU:$FB82 PRG:7B82 D0 D7 +; ----------------------------------------------------------------------------- +; Routine: StopSoundSequence +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StopSoundSequence: + lda SoundSequenceFlags ; CPU:$FB84 PRG:7B84 A5 E4 + cmp #$80 ; CPU:$FB86 PRG:7B86 C9 80 + bne StopSoundSequence_Loop ; CPU:$FB88 PRG:7B88 D0 04 + lda ZpE9 ; CPU:$FB8A PRG:7B8A A5 E9 + bne StartSoundSequence_OnNonzero ; CPU:$FB8C PRG:7B8C D0 8A +; ----------------------------------------------------------------------------- +; Routine: StopSoundSequence_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StopSoundSequence_Loop: + lda SoundSequenceFlags ; CPU:$FB8E PRG:7B8E A5 E4 + and #$02 ; CPU:$FB90 PRG:7B90 29 02 + bne StartSoundSequence_OnNonzero ; CPU:$FB92 PRG:7B92 D0 84 + lda #$00 ; CPU:$FB94 PRG:7B94 A9 00 + sta SoundSequenceFlags ; CPU:$FB96 PRG:7B96 85 E4 + lda #$10 ; CPU:$FB98 PRG:7B98 A9 10 + sta APUPULSE1CTRL ; CPU:$FB9A PRG:7B9A 8D 00 40 + sta APUPULSE2CTRL ; CPU:$FB9D PRG:7B9D 8D 04 40 + sta APUNOISECTRL ; CPU:$FBA0 PRG:7BA0 8D 0C 40 + rts ; CPU:$FBA3 PRG:7BA3 60 +; ----------------------------------------------------------------------------- +; Routine: PlaySequenceNote +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySequenceNote: + jsr NoteToPeriodIndex ; CPU:$FBA4 PRG:7BA4 20 6F F8 + sta $06F9 ; CPU:$FBA7 PRG:7BA7 8D F9 06 + lda SoundEffectTimer1 ; CPU:$FBAA PRG:7BAA A5 E1 + ora SoundEffectTimer2 ; CPU:$FBAC PRG:7BAC 05 E2 + bne UpdateSequencePulse2_Loop2 ; CPU:$FBAE PRG:7BAE D0 38 + txa ; CPU:$FBB0 PRG:7BB0 8A + and #$3E ; CPU:$FBB1 PRG:7BB1 29 3E + jsr PlayPulse2Note ; CPU:$FBB3 PRG:7BB3 20 67 F8 + tay ; CPU:$FBB6 PRG:7BB6 A8 + beq PlaySequenceNote_Loop ; CPU:$FBB7 PRG:7BB7 F0 02 + ldy #$0F ; CPU:$FBB9 PRG:7BB9 A0 0F +; ----------------------------------------------------------------------------- +; Routine: PlaySequenceNote_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +PlaySequenceNote_Loop: + sty $06FB ; CPU:$FBBB PRG:7BBB 8C FB 06 +SetPulse2ForSequence: + ldx #$86 ; CPU:$FBBE PRG:7BBE A2 86 + lda $06F9 ; CPU:$FBC0 PRG:7BC0 AD F9 06 + cmp #$10 ; CPU:$FBC3 PRG:7BC3 C9 10 + bcs SetPulse2ForSequence_Loop ; CPU:$FBC5 PRG:7BC5 B0 02 + ldx #$82 ; CPU:$FBC7 PRG:7BC7 A2 82 +; ----------------------------------------------------------------------------- +; Routine: SetPulse2ForSequence_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetPulse2ForSequence_Loop: + ldy #$7F ; CPU:$FBC9 PRG:7BC9 A0 7F + jsr SetPulse2Envelope ; CPU:$FBCB PRG:7BCB 20 46 F8 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequencePulse2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequencePulse2: + lda SoundEffectTimer1 ; CPU:$FBCE PRG:7BCE A5 E1 + ora SoundEffectTimer2 ; CPU:$FBD0 PRG:7BD0 05 E2 + bne UpdateSequencePulse2_Loop2 ; CPU:$FBD2 PRG:7BD2 D0 14 + lda SoundSequenceFlags ; CPU:$FBD4 PRG:7BD4 A5 E4 + and #$02 ; CPU:$FBD6 PRG:7BD6 29 02 + beq UpdateSequencePulse2_Loop2 ; CPU:$FBD8 PRG:7BD8 F0 0E + ldy $06FB ; CPU:$FBDA PRG:7BDA AC FB 06 + beq UpdateSequencePulse2_Loop ; CPU:$FBDD PRG:7BDD F0 03 + dec $06FB ; CPU:$FBDF PRG:7BDF CE FB 06 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequencePulse2_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequencePulse2_Loop: + lda SoundEngineData,y ; CPU:$FBE2 PRG:7BE2 B9 7F FC + sta APUPULSE2CTRL ; CPU:$FBE5 PRG:7BE5 8D 04 40 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequencePulse2_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequencePulse2_Loop2: + ldy $06FE ; CPU:$FBE8 PRG:7BE8 AC FE 06 + beq UpdateSequenceTriangle ; CPU:$FBEB PRG:7BEB F0 2F + dec $06F8 ; CPU:$FBED PRG:7BED CE F8 06 + bne UpdateSequenceTriangle ; CPU:$FBF0 PRG:7BF0 D0 2A + beq UpdateSequenceNote_Loop ; CPU:$FBF2 PRG:7BF2 F0 05 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequenceNote +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequenceNote: + jsr GetNoisePeriodIndex ; CPU:$FBF4 PRG:7BF4 20 75 F8 + sta ZpE8 ; CPU:$FBF7 PRG:7BF7 85 E8 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequenceNote_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequenceNote_Loop: + ldy $06FE ; CPU:$FBF9 PRG:7BF9 AC FE 06 + inc $06FE ; CPU:$FBFC PRG:7BFC EE FE 06 + lda (SoundNoteIndex2),y ; CPU:$FBFF PRG:7BFF B1 E6 + bmi UpdateSequenceNote ; CPU:$FC01 PRG:7C01 30 F1 +UpdateSequencePulse1: + ldx SoundPlayingFlags ; CPU:$FC03 PRG:7C03 A6 E0 + bne StoreSequencePulse1 ; CPU:$FC05 PRG:7C05 D0 10 + jsr PlayPulse1Note ; CPU:$FC07 PRG:7C07 20 50 F8 + bne UpdateSequencePulse1_Loop ; CPU:$FC0A PRG:7C0A D0 04 + ldx #$10 ; CPU:$FC0C PRG:7C0C A2 10 + bne UpdateSequencePulse1_Loop2 ; CPU:$FC0E PRG:7C0E D0 02 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequencePulse1_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequencePulse1_Loop: + ldx #$86 ; CPU:$FC10 PRG:7C10 A2 86 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequencePulse1_Loop2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequencePulse1_Loop2: + ldy #$7F ; CPU:$FC12 PRG:7C12 A0 7F + jsr SetPulse1Envelope ; CPU:$FC14 PRG:7C14 20 3F F8 +; ----------------------------------------------------------------------------- +; Routine: StoreSequencePulse1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +StoreSequencePulse1: + lda ZpE8 ; CPU:$FC17 PRG:7C17 A5 E8 + sta $06F8 ; CPU:$FC19 PRG:7C19 8D F8 06 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequenceTriangle +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequenceTriangle: + ldy $06FD ; CPU:$FC1C PRG:7C1C AC FD 06 + beq UpdateSequenceNoise ; CPU:$FC1F PRG:7C1F F0 24 + dec $06F7 ; CPU:$FC21 PRG:7C21 CE F7 06 + bne UpdateSequenceNoise ; CPU:$FC24 PRG:7C24 D0 1F + inc $06FD ; CPU:$FC26 PRG:7C26 EE FD 06 + lda (SoundNoteIndex2),y ; CPU:$FC29 PRG:7C29 B1 E6 + jsr NoteToPeriodIndex ; CPU:$FC2B PRG:7C2B 20 6F F8 + sta $06F7 ; CPU:$FC2E PRG:7C2E 8D F7 06 + clc ; CPU:$FC31 PRG:7C31 18 + adc #$FE ; CPU:$FC32 PRG:7C32 69 FE + cmp #$0E ; CPU:$FC34 PRG:7C34 C9 0E + bcc UpdateSequenceTriangle_Loop ; CPU:$FC36 PRG:7C36 90 02 + lda #$0E ; CPU:$FC38 PRG:7C38 A9 0E +; ----------------------------------------------------------------------------- +; Routine: UpdateSequenceTriangle_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequenceTriangle_Loop: + asl a ; CPU:$FC3A PRG:7C3A 0A + asl a ; CPU:$FC3B PRG:7C3B 0A + sta APUTRIANGLECTRL ; CPU:$FC3C PRG:7C3C 8D 08 40 + txa ; CPU:$FC3F PRG:7C3F 8A + and #$3E ; CPU:$FC40 PRG:7C40 29 3E + jsr PlayTriangleNote ; CPU:$FC42 PRG:7C42 20 6B F8 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequenceNoise +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequenceNoise: + lda SoundSequenceFlags ; CPU:$FC45 PRG:7C45 A5 E4 + and #$04 ; CPU:$FC47 PRG:7C47 29 04 + beq SetNoiseForSequence_Loop ; CPU:$FC49 PRG:7C49 F0 33 + dec $06F6 ; CPU:$FC4B PRG:7C4B CE F6 06 + bne SetNoiseForSequence_Loop ; CPU:$FC4E PRG:7C4E D0 2E + ldy $06FC ; CPU:$FC50 PRG:7C50 AC FC 06 + inc $06FC ; CPU:$FC53 PRG:7C53 EE FC 06 + lda (SoundNoteIndex2),y ; CPU:$FC56 PRG:7C56 B1 E6 + jsr NoteToPeriodIndex ; CPU:$FC58 PRG:7C58 20 6F F8 + sta $06F6 ; CPU:$FC5B PRG:7C5B 8D F6 06 + txa ; CPU:$FC5E PRG:7C5E 8A + and #$3E ; CPU:$FC5F PRG:7C5F 29 3E + beq SetNoiseForSequence_Loop ; CPU:$FC61 PRG:7C61 F0 1B + and #$20 ; CPU:$FC63 PRG:7C63 29 20 + bne UpdateSequenceNoise_Loop ; CPU:$FC65 PRG:7C65 D0 08 + lda #$00 ; CPU:$FC67 PRG:7C67 A9 00 + ldx #$01 ; CPU:$FC69 PRG:7C69 A2 01 + ldy #$08 ; CPU:$FC6B PRG:7C6B A0 08 + bne SetNoiseForSequence ; CPU:$FC6D PRG:7C6D D0 06 +; ----------------------------------------------------------------------------- +; Routine: UpdateSequenceNoise_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +UpdateSequenceNoise_Loop: + lda #$00 ; CPU:$FC6F PRG:7C6F A9 00 + ldx #$02 ; CPU:$FC71 PRG:7C71 A2 02 + ldy #$08 ; CPU:$FC73 PRG:7C73 A0 08 +; ----------------------------------------------------------------------------- +; Routine: SetNoiseForSequence +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetNoiseForSequence: + sta APUNOISECTRL ; CPU:$FC75 PRG:7C75 8D 0C 40 + stx APUNOISEPERIOD ; CPU:$FC78 PRG:7C78 8E 0E 40 + sty APUNOISELENGTH ; CPU:$FC7B PRG:7C7B 8C 0F 40 +; ----------------------------------------------------------------------------- +; Routine: SetNoiseForSequence_Loop +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +SetNoiseForSequence_Loop: + rts ; CPU:$FC7E PRG:7C7E 60 +; ---- data $FC7F-$FE4B (461 bytes) ---- +; The music player's note tables and its byte-code program. +SoundEngineData: +; referenced by `lda $FC8E,y` at $FB23 (operand $FC8E falls inside this region) +; referenced by `lda $FC8F,y` at $FB27 (operand $FC8F falls inside this region) +; referenced by `lda $FC90,y` at $FB2C (operand $FC90 falls inside this region) +; referenced by `lda $FC91,y` at $FB31 (operand $FC91 falls inside this region) +; referenced by `lda $FC92,y` at $FB36 (operand $FC92 falls inside this region) +; referenced by `lda $FC93,y` at $FB3C (operand $FC93 falls inside this region) +; ... and 2 further references from decoded code + .byte $50, $51, $51, $52, $52, $53, $53, $54, $54, $55, $55, $56, $56, $57, $57, $58 ; CPU:$FC7F PRG:7C7F 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 + .byte $08, $0D, $1C, $17, $17, $17, $12, $12, $00, $62, $FF, $6E, $2A, $08, $B1, $FC ; CPU:$FC8F PRG:7C8F 08 0D 1C 17 17 17 12 12 00 62 FF 6E 2A 08 B1 FC + .byte $69, $00, $08, $5B, $FE, $00, $00, $08, $61, $FE, $00, $00, $08, $A5, $FD, $84 ; CPU:$FC9F PRG:7C9F 69 00 08 5B FE 00 00 08 61 FE 00 00 08 A5 FD 84 + .byte $1D, $A4, $6A, $6E, $72, $84, $72, $02, $C5, $88, $84, $72, $EE, $6E, $6C, $6E ; CPU:$FCAF PRG:7CAF 1D A4 6A 6E 72 84 72 02 C5 88 84 72 EE 6E 6C 6E + .byte $88, $46, $02, $C9, $8C, $88, $44, $F2, $72, $70, $72, $8C, $4A, $02, $CD, $94 ; CPU:$FCBF PRG:7CBF 88 46 02 C9 8C 88 44 F2 72 70 72 8C 4A 02 CD 94 + .byte $8C, $88, $45, $44, $72, $44, $01, $66, $AA, $6E, $B2, $84, $C8, $42, $00, $48 ; CPU:$FCCF PRG:7CCF 8C 88 45 44 72 44 01 66 AA 6E B2 84 C8 42 00 48 + .byte $48, $46, $48, $0A, $4C, $C3, $06, $48, $C3, $C4, $42, $44, $72, $44, $AE, $B2 ; CPU:$FCDF PRG:7CDF 48 46 48 0A 4C C3 06 48 C3 C4 42 44 72 44 AE B2 + .byte $84, $88, $4C, $88, $84, $6A, $6A, $6A, $AC, $AE, $B2, $64, $02, $E1, $5C, $7C ; CPU:$FCEF PRG:7CEF 84 88 4C 88 84 6A 6A 6A AC AE B2 64 02 E1 5C 7C + .byte $5C, $60, $64, $44, $72, $44, $AE, $66, $02, $EB, $AE, $6A, $66, $A4, $AA, $44 ; CPU:$FCFF PRG:7CFF 5C 60 64 44 72 44 AE 66 02 EB AE 6A 66 A4 AA 44 + .byte $6E, $72, $44, $4E, $8C, $48, $AE, $B2, $C4, $42, $00, $43, $5C, $44, $6A, $44 ; CPU:$FD0F PRG:7D0F 6E 72 44 4E 8C 48 AE B2 C4 42 00 43 5C 44 6A 44 + .byte $5C, $44, $6A, $44, $6E, $4C, $44, $4C, $6E, $4C, $44, $4C, $60, $48, $6E, $48 ; CPU:$FD1F PRG:7D1F 5C 44 6A 44 6E 4C 44 4C 6E 4C 44 4C 60 48 6E 48 + .byte $60, $48, $6E, $48, $6A, $4E, $72, $4E, $6A, $4E, $72, $4E, $64, $72, $6C, $72 ; CPU:$FD2F PRG:7D2F 60 48 6E 48 6A 4E 72 4E 6A 4E 72 4E 64 72 6C 72 + .byte $64, $72, $6C, $72, $6E, $4C, $44, $4C, $6E, $4C, $44, $4C, $60, $6E, $66, $6E ; CPU:$FD3F PRG:7D3F 64 72 6C 72 6E 4C 44 4C 6E 4C 44 4C 60 6E 66 6E + .byte $66, $44, $6E, $44, $6A, $4E, $48, $72, $6A, $60, $6E, $66, $6E, $6A, $4E, $48 ; CPU:$FD4F PRG:7D4F 66 44 6E 44 6A 4E 48 72 6A 60 6E 66 6E 6A 4E 48 + .byte $72, $5C, $6A, $64, $6A, $5C, $6A, $64, $6A, $66, $44, $6E, $44, $66, $44, $6E ; CPU:$FD5F PRG:7D5F 72 5C 6A 64 6A 5C 6A 64 6A 66 44 6E 44 66 44 6E + .byte $44, $5C, $44, $6A, $44, $5C, $44, $6A, $44, $64, $72, $6C, $72, $64, $72, $6C ; CPU:$FD6F PRG:7D6F 44 5C 44 6A 44 5C 44 6A 44 64 72 6C 72 64 72 6C + .byte $72, $6E, $4C, $44, $4C, $6E, $4C, $44, $4C, $66, $44, $6E, $44, $66, $44, $6E ; CPU:$FD7F PRG:7D7F 72 6E 4C 44 4C 6E 4C 44 4C 66 44 6E 44 66 44 6E + .byte $44, $5C, $6A, $64, $6A, $6E, $4C, $44, $4C, $60, $48, $6E, $48, $6A, $4E, $48 ; CPU:$FD8F PRG:7D8F 44 5C 6A 64 6A 6E 4C 44 4C 60 48 6E 48 6A 4E 48 + .byte $72, $5C, $6A, $64, $6A, $5C, $42, $6A, $68, $6A, $8C, $4A, $02, $CD, $92, $8C ; CPU:$FD9F PRG:7D9F 72 5C 6A 64 6A 5C 42 6A 68 6A 8C 4A 02 CD 92 8C + .byte $88, $46, $02, $C9, $AE, $84, $72, $AA, $4E, $8C, $88, $44, $2E, $EB, $22, $60 ; CPU:$FDAF PRG:7DAF 88 46 02 C9 AE 84 72 AA 4E 8C 88 44 2E EB 22 60 + .byte $C3, $DC, $00, $81, $02, $20, $1E, $20, $02, $1C, $02, $1C, $80, $1C, $87, $20 ; CPU:$FDBF PRG:7DBF C3 DC 00 81 02 20 1E 20 02 1C 02 1C 80 1C 87 20 + .byte $80, $24, $87, $26, $80, $24, $87, $22, $80, $24, $87, $1C, $80, $1E, $87, $20 ; CPU:$FDCF PRG:7DCF 80 24 87 26 80 24 87 22 80 24 87 1C 80 1E 87 20 + .byte $80, $1E, $87, $20, $80, $1E, $87, $20, $80, $1E, $87, $20, $80, $26, $87, $24 ; CPU:$FDDF PRG:7DDF 80 1E 87 20 80 1E 87 20 80 1E 87 20 80 26 87 24 + .byte $80, $20, $87, $1E, $80, $20, $87, $24, $80, $26, $87, $20, $80, $26, $87, $2A ; CPU:$FDEF PRG:7DEF 80 20 87 1E 80 20 87 24 80 26 87 20 80 26 87 2A + .byte $80, $26, $87, $2A, $80, $26, $87, $2A, $80, $26, $87, $2A, $80, $32, $87, $2E ; CPU:$FDFF PRG:7DFF 80 26 87 2A 80 26 87 2A 80 26 87 2A 80 32 87 2E + .byte $80, $2A, $87, $26, $80, $2A, $87, $26, $80, $24, $87, $20, $81, $2A, $80, $26 ; CPU:$FE0F PRG:7E0F 80 2A 87 26 80 2A 87 26 80 24 87 20 81 2A 80 26 + .byte $87, $24, $80, $1C, $81, $3C, $87, $02, $83, $34, $42, $72, $70, $72, $5C, $AA ; CPU:$FE1F PRG:7E1F 87 24 80 1C 81 3C 87 02 83 34 42 72 70 72 5C AA + .byte $6A, $64, $44, $6A, $44, $60, $AE, $6E, $66, $48, $6E, $48, $6A, $88, $72, $6A ; CPU:$FE2F PRG:7E2F 6A 64 44 6A 44 60 AE 6E 66 48 6E 48 6A 88 72 6A + .byte $4E, $72, $4E, $4C, $04, $C5, $2E, $6A, $C3, $E4, $40, $60, $60 ; CPU:$FE3F PRG:7E3F 4E 72 4E 4C 04 C5 2E 6A C3 E4 40 60 60 +; ---- data $FE4C-$FE52 (7 bytes) ---- +; Seven bytes of constants used by the music player. +SoundEngineDataC: + .byte $A0, $A0, $A0, $A0, $A0, $A0, $A0 ; CPU:$FE4C PRG:7E4C A0 A0 A0 A0 A0 A0 A0 + ldy #$A0 ; CPU:$FE53 PRG:7E53 A0 A0 + ldy #$A0 ; CPU:$FE55 PRG:7E55 A0 A0 + ldy #$60 ; CPU:$FE57 PRG:7E57 A0 60 +; ---- data $FE59-$FFF6 (414 bytes) ---- +; The second part of the music player's byte-code program. +SoundEngineDataB: +; referenced by `lda $FF01,y` at $F853 (operand $FF01 falls inside this region) +; referenced by `lda $FF00,y` at $F85B (operand $FF00 falls inside this region) +; referenced by `lda $FF52,y` at $F87B (operand $FF52 falls inside this region) + .byte $E0, $C0, $0C, $C5, $0C, $C5, $4C, $00, $00, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE59 PRG:7E59 E0 C0 0C C5 0C C5 4C 00 00 FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE69 PRG:7E69 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE79 PRG:7E79 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE89 PRG:7E89 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE99 PRG:7E99 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEA9 PRG:7EA9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEB9 PRG:7EB9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEC9 PRG:7EC9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FED9 PRG:7ED9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEE9 PRG:7EE9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $03, $57, $00, $00, $00, $D4, $00, $C8, $00 ; CPU:$FEF9 PRG:7EF9 FF FF FF FF FF FF FF 03 57 00 00 00 D4 00 C8 00 + .byte $BD, $00, $B2, $00, $A8, $00, $9F, $00, $96, $00, $8D, $00, $85, $00, $7E, $00 ; CPU:$FF09 PRG:7F09 BD 00 B2 00 A8 00 9F 00 96 00 8D 00 85 00 7E 00 + .byte $76, $00, $70, $01, $AB, $01, $93, $01, $7C, $01, $67, $01, $52, $01, $3F, $01 ; CPU:$FF19 PRG:7F19 76 00 70 01 AB 01 93 01 7C 01 67 01 52 01 3F 01 + .byte $2D, $01, $1C, $01, $0C, $00, $FD, $00, $EE, $00, $E1, $02, $3A, $02, $1A, $01 ; CPU:$FF29 PRG:7F29 2D 01 1C 01 0C 00 FD 00 EE 00 E1 02 3A 02 1A 01 + .byte $FC, $01, $DF, $01, $C4, $00, $6A, $00, $64, $00, $5F, $00, $59, $00, $54, $00 ; CPU:$FF39 PRG:7F39 FC 01 DF 01 C4 00 6A 00 64 00 5F 00 59 00 54 00 + .byte $50, $00, $4B, $00, $47, $00, $0E, $04, $75, $05, $0A, $14, $28, $0D, $21, $06 ; CPU:$FF49 PRG:7F49 50 00 4B 00 47 00 0E 04 75 05 0A 14 28 0D 21 06 + .byte $07, $05, $0B, $16, $2C, $58, $21, $42, $06, $6F, $ED, $6B, $E9, $2F, $EB, $29 ; CPU:$FF59 PRG:7F59 07 05 0B 16 2C 58 21 42 06 6F ED 6B E9 2F EB 29 + .byte $E5, $E1, $83, $DF, $21, $E3, $A4, $84, $B2, $AE, $33, $EB, $3D, $E5, $E1, $83 ; CPU:$FF69 PRG:7F69 E5 E1 83 DF 21 E3 A4 84 B2 AE 33 EB 3D E5 E1 83 + .byte $FD, $1D, $E1, $64, $42, $A4, $68, $42, $A8, $EB, $83, $E1, $1F, $E1, $6A, $42 ; CPU:$FF79 PRG:7F79 FD 1D E1 64 42 A4 68 42 A8 EB 83 E1 1F E1 6A 42 + .byte $6A, $42, $00, $85, $4A, $87, $48, $85, $46, $87, $42, $84, $3E, $87, $1A, $84 ; CPU:$FF89 PRG:7F89 6A 42 00 85 4A 87 48 85 46 87 42 84 3E 87 1A 84 + .byte $16, $87, $12, $87, $10, $85, $02, $87, $02, $12, $3E, $84, $46, $87, $12, $12 ; CPU:$FF99 PRG:7F99 16 87 12 87 10 85 02 87 02 12 3E 84 46 87 12 12 + .byte $46, $12, $84, $3E, $86, $0C, $02, $08, $1A, $84, $42, $87, $12, $12, $1A, $12 ; CPU:$FFA9 PRG:7FA9 46 12 84 3E 86 0C 02 08 1A 84 42 87 12 12 1A 12 + .byte $84, $16, $87, $1A, $81, $3E, $02, $82, $3E, $81, $42, $02, $82, $3E, $87, $1A ; CPU:$FFB9 PRG:7FB9 84 16 87 1A 81 3E 02 82 3E 81 42 02 82 3E 87 1A + .byte $85, $02, $81, $32, $02, $32, $02, $09, $E1, $A0, $2F, $F9, $B8, $A0, $B8, $E0 ; CPU:$FFC9 PRG:7FC9 85 02 81 32 02 32 02 09 E1 A0 2F F9 B8 A0 B8 E0 + .byte $9C, $AA, $84, $9C, $AA, $A0, $AA, $88, $05, $DD, $84, $09, $E1, $88, $EA, $AA ; CPU:$FFD9 PRG:7FD9 9C AA 84 9C AA A0 AA 88 05 DD 84 09 E1 88 EA AA + .byte $B4, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFE9 PRG:7FE9 B4 FF FF FF FF FF FF FF FF FF FF FF FF FF +; ----------------------------------------------------------------------------- +; Routine: JumpToInitSoundEngine +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +JumpToInitSoundEngine: + jmp InitSoundEngine ; CPU:$FFF7 PRG:7FF7 4C 00 F8 +; ---- data $FFFA-$FFFF (6 bytes) ---- +; The three CPU vectors: NMI $8053, RESET $8000, IRQ $FFFF. +CpuVectors: + .byte $53, $80, $00, $80, $FF, $FF ; CPU:$FFFA PRG:7FFA 53 80 00 80 FF FF diff --git a/_wip/NROM/Volleyball (U)/rom.nes b/NROM/Volleyball (U)/rom.nes similarity index 100% rename from _wip/NROM/Volleyball (U)/rom.nes rename to NROM/Volleyball (U)/rom.nes diff --git a/NROM/Volleyball (U)/routinemap.tsv b/NROM/Volleyball (U)/routinemap.tsv new file mode 100644 index 0000000..16ae01e --- /dev/null +++ b/NROM/Volleyball (U)/routinemap.tsv @@ -0,0 +1,1956 @@ +# Volleyball (U) - Pass 2 name map +# + +# ---- derived internal branch-target names ---- +8000 Reset +800B WaitForVblankStart +8010 WaitForVblankEnd +803E InitGameAndEnterMainLoop +8053 NmiHandler +805B NmiStartFrameWork +8064 NmiUpdateGame +8083 NmiUpdateGame_Loop +8090 NmiUpdateGame_Loop2 +80A4 NmiUpdateGame_Loop3 +80D2 NmiUpdateGame_Loop4 +80D8 NmiUpdateGame_Loop5 +80DE NmiUpdateGame_Loop6 +80E5 NmiUpdateGame_Loop7 +80EB NmiUpdateGame_Loop8 +80F2 NmiUpdateGame_Loop9 +80F8 NmiUpdateGame_Loop10 +8108 NmiUpdateGame_Loop11 +811E NmiAnimateCrowd +812F NmiAnimateCrowd_Loop +8132 NmiUpdateIndicatorBoard +8139 NmiStartRendering +817A NmiSetOverlayFlags +8185 NmiSetOverlayFlags_Loop +8189 NmiRunSoundAndOverlay +8190 NmiUpdateCrowdSprites +819E NmiBuildOamBuffer +81A6 NmiBuildOamBuffer_Loop +81A9 NmiBuildOamBuffer_Loop2 +81B3 NmiBuildOamBuffer_Loop3 +81B5 MainIdleLoop +81CC NmiIgnoreAndReturn +81FF FlushVramUpdateScript +8210 RunVramUpdateScript +8223 RunVramUpdateRun +822E WriteVramRunByte +823A VramUpdateScriptComplete +8245 AdvanceVramScriptPointer +8269 ReadBothControllersOld +8277 ReadBothControllersLegacy +827F ReadBothControllersLegacy_Loop +829D ShiftControllerBits +82AC ReadPlayerController +82C2 ShiftPlayerControllerBits +82C4 ShiftPlayerControllerBits_OnNonzero +82F5 CopyOamBufferToPpu +82FA CopyOamBufferToPpu_Loop +830A CopyOamBufferToPpu_Loop2 +8315 UpdateScrollAndNametable +8335 InitPpuForPowerOn +833A InitPpuForPowerOn_OnZero +8378 ClearScreensForNewGame +8384 ClearScreensForNewGame_OnNonnegative +8397 ClearNametableAndOamFlag +839E ClearNametable0 +83B5 ClearNametable0_OnNonzero +83CC ClearNametable0_OnNonzero2 +83D3 ClearOamPendingFlag +83D8 BuildPlayerSpriteEntries +83E3 BuildPlayerSpriteEntries_OnNonzero +83EF BuildPlayerSpriteEntries_Loop +83F2 BuildPlayerSpriteEntries_Loop2 +8404 BuildPlayerSpriteEntries_Loop3 +8424 WriteAttributeUpdateScript +8429 WriteAttributeUpdateScript_Loop +8432 WriteAttributeUpdateScript_OnNonzero +8440 WriteAttributeScriptBytes +844E WriteAttributeScriptBytes_Loop +845D ClearGameRam +8465 ClearGameRam_OnNonzero +846E ClearGameRam_OnNonzero2 +8480 ClearGameRam_OnNonzero3 +848F LoadSpriteTableTeamA +8495 LoadSpriteTableTeamA_OnNonzero +849F LoadSpriteTableTeamB +84A5 LoadSpriteTableTeamB_OnNonzero +84AF LoadSpriteTableTeamC +84B5 LoadSpriteTableTeamC_OnNonzero +84BF LoadSpriteTableTeamD +84C5 LoadSpriteTableTeamD_OnNonzero +84CF LoadSpriteTableTeamE +84D5 LoadSpriteTableTeamE_OnNonzero +84DF UploadOamShadowToPpu +84E4 UploadOamShadowToPpu_Loop +84F3 UploadOamShadowToPpu_OnNonzero +85B1 DispatchGameState +85F7 DecrementStateTimer +85FF DecrementStateTimer_Loop +8600 AdvanceSubState +8603 AdvanceGameState +860A SetGameState +8611 StateTitleScreenInit +862A StateTitleScreenInit_Loop +8630 TitleInit_ClearGameState +865D TitleInit_ClearGameState_Loop +8666 TitleInit_QueueIntroScript +8675 TitleInit_LoadSprites +867B TitleInit_SetWaitTimer +8686 TitleInit_WaitTimer +8689 TitleInit_StartMatchSetup +869B TitleInit_AttractLoop +86B5 TitleInit_AttractLoop_Loop +86BB TitleInit_AttractLoop_Loop2 +86C1 TitleInit_AttractLoop_Loop3 +86C7 TitleInit_AttractLoop_Loop4 +86E2 TitleInit_AttractLoop_Loop5 +86EB TitleInit_AttractLoop_Loop6 +86FC TitleInit_AttractLoop_Loop7 +871A TitleInit_SelectSlotTwo +8727 TitleInit_SelectSlotTwo_Loop +8729 TitleInit_SetNumberTile +873E TitleInit_SwitchToDemoState +8743 StateTitleScreen +8753 Title_WaitForStartPress +8759 Title_StartDemoCountdown +876C Title_StartDemoCountdown_Loop +8775 Title_StartDemoCountdown_Loop2 +877F Title_StartDemoCountdown_Loop3 +8782 Title_StartDemoCountdown_Loop4 +8794 Title_StartDemoCountdown_Loop5 +87A7 Title_StartDemoCountdown_Loop6 +87B0 Title_StartDemoCountdown_Loop7 +87B9 Title_StartDemoCountdown_Loop8 +87C2 Title_StartDemoCountdown_Loop9 +87CB TitleInit_SetNumberTileB +87ED TitleInit_SetNumberTileB_Loop +87EF TitleInit_DrawNumberEven +880B TitleInit_DrawNumberEven_Loop +880D TitleInit_DrawNumberOdd +8819 TitleInit_GoToModeSelect +8821 StateModeSelect +882E StateModeSelect_Loop +883A StateModeSelect_Loop2 +883D StateModeSelect_Loop3 +8840 StateModeSelect_Loop4 +8843 StateModeSelectToMatch +8856 StateModeSelectToMatch_Loop +8859 StateModeSelectToMatch_Loop2 +885F StateModeSelectToMatch_Loop3 +8865 StateModeSelectToMatch_Loop4 +8870 StateModeSelectToMatch_Loop5 +8873 StateModeSelectToMatch_Loop6 +887D StateCourtSetup +8890 StateCourtSetup_Loop +8896 StateCourtSetup_Loop2 +889C StateCourtSetup_Loop3 +88BF StateCourtSetup_Loop4 +88DD StateCourtSetup_Loop5 +88E0 StateCourtSetup_Loop6 +88F2 StateCourtSetup_Loop7 +8910 StateCourtSetup_Loop8 +8913 CourtSetup_StartWhistle +8933 CourtSetup_UpdateFrame +894B CourtSetup_UpdateFrame_Loop +894E CourtSetup_GoToNextState +8951 StateRally +8958 StateRally_Loop +895E StateRally_Loop2 +8964 StateRally_Loop3 +896A StateRally_Loop4 +8970 StateRally_Loop5 +8976 StateRally_Loop6 +897C StateRally_Loop7 +8982 StateRally_Loop8 +8988 StateRally_Loop9 +898E StateRally_Loop10 +8994 StateRally_Loop11 +899A StateRally_Loop12 +89A0 StateRally_Loop13 +89A6 StateRally_Loop14 +89AC StateRally_Loop15 +89B2 Rally_ResetForPoint +89C3 Rally_SkipFrame +89C9 Rally_SetServeFlag +89D3 Rally_CountdownToServe +89E3 Rally_CountdownToServe_Loop +89E6 Rally_UpdatePlayers +89F7 Rally_UpdatePlayers_Loop +8A00 Rally_UpdatePlayers_Loop2 +8A03 Rally_UpdatePlayers_Loop3 +8A14 Rally_EndPoint +8A1A Rally_ClearServeFlags +8A34 Rally_DrawAndWait +8A3A Rally_ResumeAfterWhistle +8A44 Rally_CheckPointEnd +8A54 Rally_CheckPointEnd_Loop +8A69 Rally_CheckPointEnd_Loop2 +8A6C Rally_FrameDone +8A72 Rally_ClearServeFlag2 +8A78 Rally_ClearOverFlag +8A82 Rally_ClearTeamScores +8AB9 Rally_ClearTeamScores_OnCarrySet +8ABC Rally_ClearTeamScores_Loop +8AC7 Rally_ClearTeamScores_Loop2 +8AD2 Rally_UpdateTeamFlags +8AE7 Rally_UpdateTeamFlags_Loop +8AF0 Rally_UpdateTeamFlags_Loop2 +8AF3 Rally_UpdateTeamFlags_Loop3 +8B04 Rally_FrameDone2 +8B0A Rally_SetWhistleFlag +8B1A Rally_SetWhistleFlag_Loop +8B1F Rally_GoToNextState +8B22 Rally_RestartDemo +8B47 StateNewPoint +8B60 StateNewPoint_Loop +8B66 StateNewPoint_Loop2 +8B6C StateNewPoint_Loop3 +8B72 StateNewPoint_Loop4 +8B78 StateNewPoint_Loop5 +8B7E StateNewPoint_Loop6 +8B81 NewPoint_ResetStructs +8B92 NewPoint_FrameDone +8B98 NewPoint_ResetScore +8BAA NewPoint_ResetScore_Loop +8BAF NewPoint_ClearBall +8BC7 NewPoint_FrameDone2 +8BCD NewPoint_ShowScore +8BE9 NewPoint_FrameDone3 +8BEF NewPoint_MoveBall +8C0B Rally_UpdateTeamsAndDraw +8C17 GetTeamPlayerOffset +8C63 SetNumberAndDraw +8C7F SetStateAndAdvance +8C85 SetStateFive +8C8A StateTeamSelection +8C97 StateTeamSelection_Loop +8C9D StateTeamSelection_Loop2 +8CA3 StateTeamSelection_Loop3 +8CA9 StateTeamSelection_Loop4 +8CAF TeamSelect_Start +8CBD TeamSelect_CountTeams +8CC5 TeamSelect_CountTeams_OnNonzero +8CD2 TeamSelect_CountTeams_Loop +8CD4 TeamSelect_NextTeam +8CDD TeamSelect_CheckTeam +8CE6 TeamSelect_CheckTeam_Loop +8CEC TeamSelect_ConfirmTeam +8CEF TeamSelect_ConfirmTeam_Loop +8D07 ServeSet_BallPosition +8D1F ServeSet_CheckDmc +8D32 ServeSet_CheckDmc_Loop +8D38 ServeSet_SetTimer +8D46 ServeSet_WaitForServe +8D55 ServeSet_StopSounds +8D62 ServeSet_GoToNextState +8D65 StateServeSetup +8D7B StateServeSetup_Loop +8D81 StateServeSetup_Loop2 +8D9D StateServeSetup_Loop3 +8DA3 StateServeSetup_Loop4 +8DBF StateServeSetup_Loop5 +8DC5 StateServeSetup_Loop6 +8DD1 StateServeSetup_Loop7 +8DDA StateServeSetup_Loop8 +8DDD ServeSet_ClearPlayerInput +8DEA ServeSet_FrameDone +8DFA AdvanceSubStateShared +8E09 StateAttractDemo +8E16 StateAttractDemo_Loop +8E24 StateAttractDemo_Loop2 +8E35 StateAttractDemo_Loop3 +8E48 StateAttractDemo_Loop4 +8E4D StateMatchResults +8E63 StateMatchResults_Loop +8E69 StateMatchResults_Loop2 +8E6F StateMatchResults_Loop3 +8E75 StateMatchResults_Loop4 +8E7B StateMatchResults_Loop5 +8E81 StateMatchResults_Loop6 +8E87 Results_Start +8E99 Results_FrameDone +8E9F Results_ResetStructs +8EBA Results_ResetStructs_Loop +8EC0 Results_ResetStructs_Loop2 +8EDC Results_FrameDone2 +8EE2 Results_MoveBall +8EFE Results_UpdateTeams +8F0A GetTeamPlayerOffsetB +8F57 GetTeamPlayerOffsetB_Loop +8F59 ShiftTeamOffset +8F69 SetNumberAndDrawB +8F85 SetStateAndAdvanceB +8F8B SetStateFiveB +8F90 ReadCommandStreamByte +8FA5 ReadCommandStreamByte_Loop +8FBE DecodeCommandStream +8FC0 DecodeCommandStream_OnNonzero +8FDF RunCommandStream +8FEF RunCommandStream_Loop +9001 InitMatchStructs +903E UpdateMatchStructs +906D UpdateMatchStructs_Loop +908E DrawMatchFrame +90C0 InitMatchPlayers +90D9 UpdatePlayerInput +90F7 UpdatePlayerInput_Loop +9106 SetPlayerCount +9112 UpdatePlayerControl +9118 UpdatePlayerControl_OnZero +9127 UpdatePlayerControl_Loop +912B CompareScores +9134 CompareScores_Loop +913A CompareScores_OnZero +9149 CompareScores_Loop2 +914D CompareScoresB +9153 UpdatePlayerAction +915A UpdatePlayerAction_Loop +9160 UpdatePlayerAction_OnZero +916F UpdatePlayerAction_Loop2 +9173 CompareScoresC +917C CompareScoresC_Loop +9182 CompareScoresC_OnZero +9191 CompareScoresC_Loop2 +9195 CompareScoresD +919B ClearPlayerAction +91AE ClearPlayerAction_Loop +91B6 GetNumberOffset +91C5 DrawScoreDigits +91C7 DrawScoreDigits_OnNonnegative +9202 DrawScoreDigits_Loop +921A DrawScoreNumber +9239 DrawScoreNumber_Loop +9262 LoadTeamSprites +926A LoadTeamSprites_OnNonzero +9286 LoadTeamSprites_Loop +928E LoadTeamSprites_Loop2 +92B5 ReadTeamSpriteData +92B9 LoadTeamSpritePair +92D0 QueueTitleScript +931E InitPlayerStructs +934E InitScoreStructs +9397 LoadTeamNumberTable +93AE LoadTeamNumberTable_Loop +93D6 LoadTeamNumberTable_Loop2 +93F5 InitTeamPlayerStruct +9407 InitTeamPlayerStruct_OnNonnegative +9426 InitRallyStructs +943A InitRallyStructs_Loop +9448 InitRallyStructs_Loop2 +9456 DrawRallyFrame +947D DrawRallyFrame_Loop +9480 UpdateBallFrame +948F UpdateBallFrame_Loop +9492 BallFrameDone +9495 BallFrameDone_Loop +949E BallFrameDone_Loop2 +94A1 UpdateBallMovement +94AA UpdateBallMovement_Loop +94B8 UpdateBallMovement_Loop2 +94C7 UpdateBallMovement_Loop3 +94D0 UpdateBallMovement_Loop4 +94E0 UpdateBallMovement_Loop5 +94E6 UpdateBallMovement_Loop6 +94EC UpdateBallMovement_Loop7 +94F2 UpdateBallMovement_Loop8 +94F8 UpdateBallMovement_Loop9 +94FE UpdateBallAnimation +9507 UpdateBallAnimation_Loop +9515 UpdateBallAnimation_Loop2 +9524 UpdateBallAnimation_Loop3 +952D UpdateBallAnimation_Loop4 +953D UpdateBallAnimation_Loop5 +9543 UpdateBallAnimation_Loop6 +9549 UpdateBallAnimation_Loop7 +954F UpdateBallAnimation_Loop8 +9555 UpdateBallAnimation_Loop9 +955B BallRoutineEnd +955C GetBallNumberIndex +9567 GetBallNumberIndex_Loop +956D GetBallNumberIndex_Loop2 +9573 GetBallNumberIndex_Loop3 +9579 GetBallNumberIndex_Loop4 +957F GetBallNumberIndex_Loop5 +9585 GetBallNumberIndex_Loop6 +958B GetBallNumberIndex_Loop7 +958C TeamPlayerMove0 +9598 TeamPlayerMove0_Loop +95A8 TeamPlayerMove0_Loop2 +95AF TeamPlayerMove0_Loop3 +95B6 TeamPlayerMove0_Loop4 +95C0 TeamPlayerMove0_Loop5 +95C3 TeamPlayerMove0End +95C7 TeamPlayerMove0End_Loop +95D2 TeamPlayerMove0End_Loop2 +95D6 TeamPlayerMove0End_Loop3 +95DD TeamPlayerMove1 +95E9 TeamPlayerMove1_Loop +95F9 TeamPlayerMove1_Loop2 +9600 TeamPlayerMove1_Loop3 +9607 TeamPlayerMove1_Loop4 +960E TeamPlayerMove1_Loop5 +9619 TeamPlayerMove1_Loop6 +961D TeamPlayerMove1_Loop7 +9624 TeamPlayerMove1Start +9630 TeamPlayerMove1Start_Loop +9640 TeamPlayerMove1Start_Loop2 +9647 TeamPlayerMove1Start_Loop3 +964E TeamPlayerMove1Start_Loop4 +9658 TeamPlayerMove1Start_Loop5 +965B TeamPlayerMove1End +965F TeamPlayerMove1End_Loop +966A TeamPlayerMove1End_Loop2 +966E TeamPlayerMove1End_Loop3 +9675 TeamPlayerMove2 +9681 TeamPlayerMove2_Loop +9691 TeamPlayerMove2_Loop2 +9698 TeamPlayerMove2_Loop3 +969F TeamPlayerMove2_Loop4 +96A9 TeamPlayerMove2_Loop5 +96AC TeamPlayerMove2End +96B0 TeamPlayerMove2End_Loop +96BB TeamPlayerMove2End_Loop2 +96BF TeamPlayerMove2End_Loop3 +96C6 TeamPlayerMove3 +96D2 TeamPlayerMove3_Loop +96E2 TeamPlayerMove3_Loop2 +96E9 TeamPlayerMove3_Loop3 +96F0 TeamPlayerMove3_Loop4 +96F7 TeamPlayerMove3_Loop5 +9702 TeamPlayerMove3_Loop6 +9706 TeamPlayerMove3_Loop7 +970D TeamPlayerMove4 +9719 TeamPlayerMove4_Loop +9729 TeamPlayerMove4_Loop2 +9730 TeamPlayerMove4_Loop3 +9737 TeamPlayerMove4_Loop4 +973E TeamPlayerMove4_Loop5 +9749 TeamPlayerMove4_Loop6 +974D TeamPlayerMove4_Loop7 +9754 TeamPlayerMove5 +9760 TeamPlayerMove5_Loop +9770 TeamPlayerMove5_Loop2 +9777 TeamPlayerMove5_Loop3 +977E TeamPlayerMove5_Loop4 +9785 TeamPlayerMove5_Loop5 +9790 TeamPlayerMove5_Loop6 +9794 TeamPlayerMove5_Loop7 +979B CheckBallInPlay +97B3 CheckBallInPlay_Loop +97BE CheckBallInPlay_Loop2 +97C5 BallBounceOnFloor +97DD BallBounceOnFloor_Loop +97DF BallSetDirection +97EE BallSetDirection_Loop +97F4 BallStoreSpriteFlags +97F8 BallFrameDone0 +97F9 CheckBallLanded +9811 CheckBallLanded_Loop +981C CheckBallLanded_Loop2 +9823 BallComputeSpriteAttr +983F BallComputeSpriteAttr_Loop +9850 BallComputeSpriteAttr_Loop2 +9856 BallStoreFlagsB +985A BallStoreFlagsB_Loop +985B BallComputeAttrB +9877 BallComputeAttrB_Loop +987D BallStoreFlagsC +9881 BallStoreFlagsC_Loop +9882 BallComputeAttrC +98A9 BallComputeAttrC_Loop +98AF BallSetAnimFlags +98BE BallSetAnimFlags_Loop +98C4 BallStoreFlagsD +98C8 BallStoreFlagsD_Loop +98C9 BallUpdateTeamA +98DD BallUpdateTeamA_Loop +98E8 BallUpdateTeamA_Loop2 +98F4 BallUpdateTeamA_Loop3 +98F9 BallUpdateTeamA_Loop4 +9905 BallUpdateTeamA_Loop5 +990A BallUpdateTeamA_Loop6 +9920 BallUpdateTeamA_Loop7 +9933 BallSetTeamAFlags +9944 BallSetTeamAFlags_Loop +994A BallStoreTeamAFlags +994E BallStoreTeamAFlags_Loop +995B BallStoreTeamAFlags_Loop2 +9967 BallStoreTeamAFlagsB +996B BallStoreTeamAFlagsB_Loop +996C BallStoreTeamAFlagsB_Loop2 +997D BallStoreTeamAFlagsB_Loop3 +9983 BallStoreTeamAFlagsC +9987 BallStoreTeamAFlagsC_Loop +9988 BallUpdateTeamB +999C BallUpdateTeamB_Loop +99A7 BallUpdateTeamB_Loop2 +99B3 BallUpdateTeamB_Loop3 +99B8 BallUpdateTeamB_Loop4 +99C4 BallUpdateTeamB_Loop5 +99C9 BallUpdateTeamB_Loop6 +99DF BallUpdateTeamB_Loop7 +99F2 BallSetTeamBFlags +9A03 BallSetTeamBFlags_Loop +9A09 BallStoreTeamBFlags +9A0D BallStoreTeamBFlags_Loop +9A1A BallStoreTeamBFlags_Loop2 +9A26 BallStoreTeamBFlagsB +9A2A BallStoreTeamBFlagsB_Loop +9A2B BallStoreTeamBFlagsB_Loop2 +9A41 BallStoreTeamBFlagsB_Loop3 +9A47 BallSetTeamBFlagsC +9A56 BallSetTeamBFlagsC_Loop +9A5C BallStoreTeamBFlagsD +9A60 BallStoreTeamBFlagsD_Loop +9A61 BallUpdateTeamC +9A75 BallUpdateTeamC_Loop +9A80 BallUpdateTeamC_Loop2 +9A8C BallUpdateTeamC_Loop3 +9A91 BallUpdateTeamC_Loop4 +9A9D BallUpdateTeamC_Loop5 +9AA2 BallUpdateTeamC_Loop6 +9AB8 BallUpdateTeamC_Loop7 +9ABF BallSetTeamCFlags +9AD0 BallSetTeamCFlags_Loop +9AD6 BallStoreTeamCFlags +9ADA BallStoreTeamCFlags_Loop +9AE7 BallStoreTeamCFlags_Loop2 +9AF3 BallStoreTeamCFlagsB +9AF7 BallStoreTeamCFlagsB_Loop +9AF8 BallStoreTeamCFlagsB_Loop2 +9B09 BallStoreTeamCFlagsB_Loop3 +9B0F BallStoreTeamCFlagsC +9B13 BallStoreTeamCFlagsC_Loop +9B14 BallUpdateTeamD +9B28 BallUpdateTeamD_Loop +9B3C BallUpdateTeamD_Loop2 +9B41 BallUpdateTeamD_Loop3 +9B4D BallUpdateTeamD_Loop4 +9B52 BallUpdateTeamD_Loop5 +9B68 BallUpdateTeamD_Loop6 +9B6F BallSetTeamDFlags +9B80 BallSetTeamDFlags_Loop +9B86 BallStoreTeamDFlags +9B8A BallStoreTeamDFlags_Loop +9B97 BallStoreTeamDFlags_Loop2 +9B9D BallStoreTeamDFlagsB +9BA1 BallStoreTeamDFlagsB_Loop +9BA2 BallStoreTeamDFlagsB_Loop2 +9BB3 BallStoreTeamDFlagsB_Loop3 +9BB9 BallStoreTeamDFlagsC +9BBD BallStoreTeamDFlagsC_Loop +9BBE BallUpdateTeamE +9BD2 BallUpdateTeamE_Loop +9BDD BallUpdateTeamE_Loop2 +9BE9 BallUpdateTeamE_Loop3 +9BEE BallUpdateTeamE_Loop4 +9BFA BallUpdateTeamE_Loop5 +9BFF BallUpdateTeamE_Loop6 +9C17 BallUpdateTeamE_Loop7 +9C18 BallUpdateTeamE_Loop8 +9C20 BallUpdateTeamE_Loop9 +9C25 BallSetTeamEFlags +9C3D BallSetTeamEFlags_Loop +9C48 BallSetTeamEFlags_Loop2 +9C4E BallStoreTeamEFlags +9C55 BallStoreTeamEFlags_Loop +9C60 BallStoreTeamEFlags_Loop2 +9C66 BallStoreTeamEFlagsB +9C6D BallSetTeamEFlagsC +9C78 BallSetTeamEFlagsC_Loop +9C7A BallStoreTeamEFlagsD +9C81 BallSetCommonFlags +9C90 BallSetCommonFlags_Loop +9C92 BallStoreCommonFlags +9C96 BallStoreCommonFlags_Loop +9C97 BallSetCommonFlagsB +9CA8 BallSetCommonFlagsB_Loop +9CAE BallStoreCommonFlagsB +9CB2 BallStoreCommonFlagsB_Loop +9CB3 BallUpdateTeamF +9CC7 BallUpdateTeamF_Loop +9CD9 BallUpdateTeamF_Loop2 +9CDF BallUpdateTeamF_Loop3 +9CE2 CheckBallAboveScreen +9CEA CheckBallAboveScreen_Loop +9CF6 CheckBallAboveScreen_Loop2 +9CFB CheckBallAboveScreen_Loop3 +9D07 CheckBallAboveScreen_Loop4 +9D0C CheckBallAboveScreen_Loop5 +9D1E CheckBallAboveScreen_Loop6 +9D29 BallMoveUp +9D3F BallMoveUp_Loop +9D46 BallSetFlagsE +9D57 BallSetFlagsE_Loop +9D5D BallStoreFlagsE +9D61 BallStoreFlagsE_Loop +9D6E BallStoreFlagsE_Loop2 +9D7A BallStoreFlagsE2 +9D7E BallStoreFlagsE2_Loop +9D7F BallStoreFlagsE2_Loop2 +9D90 BallStoreFlagsE2_Loop3 +9D96 BallStoreFlagsE3 +9D9A BallStoreFlagsE3_Loop +9D9B BallUpdateAnimation +9DA8 BallUpdateAnimation_Loop +9DAF BallUpdateAnimation_Loop2 +9DBC BallUpdateAnimation_Loop3 +9DC7 BallUpdateAnimation_Loop4 +9DC9 BallStoreAnimFlags +9DCB BallClearNumber +9DD0 BallUpdateAnimationB +9DDD BallUpdateAnimationB_Loop +9DE4 BallUpdateAnimationB_Loop2 +9DF3 BallUpdateAnimationB_Loop3 +9DF7 BallClearNumberB +9DFC BallResetForTeam +9E09 BallResetForTeam_Loop +9E18 BallCheckFloor +9E3B BallCheckFloor_Loop +9E41 BallStoreFlagsF +9E45 BallFrameDone2 +9E46 BallResetForTeamB +9E53 BallResetForTeamB_Loop +9E62 BallComputeSpeed +9E8E BallComputeSpeed_Loop +9E94 BallStoreFlagsG +9E98 BallCheckSpin +9EA5 BallCheckSpin_Loop +9EAB BallStoreFlagsH +9EAF BallStoreFlagsH_Loop +9EB0 BallUpdateBallSpeed +9EBB BallUpdateBallSpeed_Loop +9ED7 BallUpdateBallSpeed_Loop2 +9EDB BallSetBallSpeed +9EDD BallSetBallSpeed_Loop +9EF3 BallSetBallSpeed_Loop2 +9EF7 BallStoreBallSpeed +9EF9 BallStoreBallSpeed_Loop +9EFA BallSubtractSpeed +9F07 BallSubtractSpeed_Loop +9F0C BallSubtractSpeed_Loop2 +9F0E BallStoreSpeed +9F11 BallComputeNoteIndex +9F2D BallComputeNoteIndexB +9F52 BallComputeNoteIndexC +9F77 BallComputeNoteIndexD +9F9C BallGetTeamSlot +9FA9 BallGetTeamSlot_Loop +9FAF BallGetTeamSlot_Loop2 +9FB5 BallGetTeamSlot_Loop3 +9FBB BallGetTeamSlot_Loop4 +9FC1 BallGetTeamSlot_Loop5 +9FC7 BallGetTeamSlot_Loop6 +9FCD BallGetTeamSlot_Loop7 +9FCE BallUpdateTeamG +9FDA BallUpdateTeamG_Loop +9FEA BallUpdateTeamG_Loop2 +9FF1 BallUpdateTeamG_Loop3 +9FF8 BallUpdateTeamG_Loop4 +A002 BallUpdateTeamG_Loop5 +A005 TeamSpriteUpdate0End +A009 TeamSpriteUpdate0End_Loop +A014 TeamSpriteUpdate0End_Loop2 +A018 TeamSpriteUpdate0End_Loop3 +A01F TeamSpriteUpdate0 +A02B TeamSpriteUpdate0_Loop +A03B TeamSpriteUpdate0_Loop2 +A042 TeamSpriteUpdate0_Loop3 +A049 TeamSpriteUpdate0_Loop4 +A050 TeamSpriteUpdate0_Loop5 +A05B TeamSpriteUpdate0_Loop6 +A05F TeamSpriteUpdate0_Loop7 +A066 TeamSpriteUpdate1 +A072 TeamSpriteUpdate1_Loop +A082 TeamSpriteUpdate1_Loop2 +A089 TeamSpriteUpdate1_Loop3 +A090 TeamSpriteUpdate1_Loop4 +A09A TeamSpriteUpdate1_Loop5 +A09D TeamSpriteUpdate1End +A0A1 TeamSpriteUpdate1End_Loop +A0AC TeamSpriteUpdate1End_Loop2 +A0B0 TeamSpriteUpdate1End_Loop3 +A0B7 TeamSpriteUpdate2 +A0C3 TeamSpriteUpdate2_Loop +A0D3 TeamSpriteUpdate2_Loop2 +A0DA TeamSpriteUpdate2_Loop3 +A0E1 TeamSpriteUpdate2_Loop4 +A0EB TeamSpriteUpdate2_Loop5 +A0EE TeamSpriteUpdate2End +A0F2 TeamSpriteUpdate2End_Loop +A0FD TeamSpriteUpdate2End_Loop2 +A101 TeamSpriteUpdate2End_Loop3 +A108 TeamSpriteUpdate3 +A114 TeamSpriteUpdate3_Loop +A124 TeamSpriteUpdate3_Loop2 +A12B TeamSpriteUpdate3_Loop3 +A132 TeamSpriteUpdate3_Loop4 +A139 TeamSpriteUpdate3_Loop5 +A144 TeamSpriteUpdate3_Loop6 +A148 TeamSpriteUpdate3_Loop7 +A14F TeamSpriteUpdate4 +A15B TeamSpriteUpdate4_Loop +A16B TeamSpriteUpdate4_Loop2 +A172 TeamSpriteUpdate4_Loop3 +A179 TeamSpriteUpdate4_Loop4 +A180 TeamSpriteUpdate4_Loop5 +A18B TeamSpriteUpdate4_Loop6 +A18F TeamSpriteUpdate4_Loop7 +A196 TeamSpriteUpdate5 +A1A2 TeamSpriteUpdate5_Loop +A1B2 TeamSpriteUpdate5_Loop2 +A1B9 TeamSpriteUpdate5_Loop3 +A1C0 TeamSpriteUpdate5_Loop4 +A1C7 TeamSpriteUpdate5_Loop5 +A1D2 TeamSpriteUpdate5_Loop6 +A1D6 TeamSpriteUpdate5_Loop7 +A1DD TeamCheckFloorA +A1F5 TeamCheckFloorA_Loop +A200 TeamCheckFloorA_Loop2 +A205 TeamSetAttrA +A21D TeamSetAttrA_Loop +A21F TeamSetAttrB +A22E TeamSetAttrB_Loop +A234 TeamStoreAttr +A238 TeamStoreAttr_Loop +A239 TeamCheckFloorB +A251 TeamCheckFloorB_Loop +A25C TeamCheckFloorB_Loop2 +A261 TeamSetAttrC +A27D TeamSetAttrC_Loop +A28E TeamSetAttrC_Loop2 +A294 TeamStoreAttrB +A298 TeamStoreAttrB_Loop +A299 TeamResetFlagsA +A2B5 TeamResetFlagsA_Loop +A2BB TeamStoreAttrC +A2BF TeamStoreAttrC_Loop +A2C0 TeamResetFlagsB +A2E7 TeamResetFlagsB_Loop +A2ED TeamSetFlagsC +A2FC TeamSetFlagsC_Loop +A302 TeamStoreAttrD +A306 TeamStoreAttrD_Loop +A307 BallUpdateTeamH +A31B BallUpdateTeamH_Loop +A326 BallUpdateTeamH_Loop2 +A332 BallUpdateTeamH_Loop3 +A337 BallUpdateTeamH_Loop4 +A343 BallUpdateTeamH_Loop5 +A348 BallUpdateTeamH_Loop6 +A35E BallUpdateTeamH_Loop7 +A371 BallSetTeamHFlags +A382 BallSetTeamHFlags_Loop +A388 BallStoreTeamHFlags +A38C BallStoreTeamHFlags_Loop +A39F BallStoreTeamHFlags_Loop2 +A3A5 BallStoreTeamHFlagsB +A3A9 BallStoreTeamHFlagsB_Loop +A3AA BallStoreTeamHFlagsB_Loop2 +A3BB BallStoreTeamHFlagsB_Loop3 +A3C1 BallStoreTeamHFlagsC +A3C5 BallStoreTeamHFlagsC_Loop +A3C6 BallUpdateTeamI +A3DA BallUpdateTeamI_Loop +A3E5 BallUpdateTeamI_Loop2 +A3F1 BallUpdateTeamI_Loop3 +A3F6 BallUpdateTeamI_Loop4 +A402 BallUpdateTeamI_Loop5 +A407 BallUpdateTeamI_Loop6 +A41D BallUpdateTeamI_Loop7 +A430 BallSetTeamIFlags +A441 BallSetTeamIFlags_Loop +A447 BallStoreTeamIFlags +A44B BallStoreTeamIFlags_Loop +A45E BallStoreTeamIFlags_Loop2 +A464 BallStoreTeamIFlagsB +A468 BallStoreTeamIFlagsB_Loop +A469 BallStoreTeamIFlagsB_Loop2 +A47F BallStoreTeamIFlagsB_Loop3 +A485 BallSetTeamJFlags +A494 BallSetTeamJFlags_Loop +A49A BallStoreTeamJFlags +A49E BallStoreTeamJFlags_Loop +A49F BallUpdateTeamJ +A4B3 BallUpdateTeamJ_Loop +A4BE BallUpdateTeamJ_Loop2 +A4CA BallUpdateTeamJ_Loop3 +A4CF BallUpdateTeamJ_Loop4 +A4DB BallUpdateTeamJ_Loop5 +A4E0 BallUpdateTeamJ_Loop6 +A4F6 BallUpdateTeamJ_Loop7 +A4FD BallSetTeamKFlags +A50E BallSetTeamKFlags_Loop +A514 BallStoreTeamKFlags +A518 BallStoreTeamKFlags_Loop +A52B BallStoreTeamKFlags_Loop2 +A531 BallStoreTeamKFlagsB +A535 BallStoreTeamKFlagsB_Loop +A536 BallStoreTeamKFlagsB_Loop2 +A547 BallStoreTeamKFlagsB_Loop3 +A54D BallStoreTeamKFlagsC +A551 BallStoreTeamKFlagsC_Loop +A552 BallUpdateTeamL +A566 BallUpdateTeamL_Loop +A57A BallUpdateTeamL_Loop2 +A57F BallUpdateTeamL_Loop3 +A58B BallUpdateTeamL_Loop4 +A590 BallUpdateTeamL_Loop5 +A5A6 BallUpdateTeamL_Loop6 +A5AD BallSetTeamLFlags +A5BE BallSetTeamLFlags_Loop +A5C4 BallStoreTeamLFlags +A5C8 BallStoreTeamLFlags_Loop +A5D5 BallStoreTeamLFlags_Loop2 +A5DB BallStoreTeamLFlagsB +A5DF BallStoreTeamLFlagsB_Loop +A5E0 BallStoreTeamLFlagsB_Loop2 +A5F1 BallStoreTeamLFlagsB_Loop3 +A5F7 BallStoreTeamLFlagsC +A5FB BallStoreTeamLFlagsC_Loop +A5FC BallUpdateTeamM +A610 BallUpdateTeamM_Loop +A61B BallUpdateTeamM_Loop2 +A627 BallUpdateTeamM_Loop3 +A62C BallUpdateTeamM_Loop4 +A638 BallUpdateTeamM_Loop5 +A63D BallUpdateTeamM_Loop6 +A655 BallUpdateTeamM_Loop7 +A656 BallUpdateTeamM_Loop8 +A65E BallUpdateTeamM_Loop9 +A663 BallSetTeamMFlags +A67B BallSetTeamMFlags_Loop +A686 BallSetTeamMFlags_Loop2 +A68C BallStoreTeamMFlags +A693 BallStoreTeamMFlags_Loop +A69E BallStoreTeamMFlags_Loop2 +A6A4 BallStoreTeamMFlagsB +A6AB BallSetTeamMFlagsC +A6B6 BallSetTeamMFlagsC_Loop +A6B8 BallStoreTeamMFlagsC +A6BF BallSetCommonFlagsC +A6CE BallSetCommonFlagsC_Loop +A6D0 BallStoreCommonFlagsC +A6D4 BallStoreCommonFlagsC_Loop +A6D5 BallSetCommonFlagsD +A6E6 BallSetCommonFlagsD_Loop +A6EC BallStoreCommonFlagsD +A6F0 BallStoreCommonFlagsD_Loop +A6F1 BallUpdateTeamN +A705 BallUpdateTeamN_Loop +A71B BallUpdateTeamN_Loop2 +A721 BallUpdateTeamN_Loop3 +A724 BallUpdateTeamN2 +A72F BallUpdateTeamN2_Loop +A73B BallUpdateTeamN2_Loop2 +A740 BallUpdateTeamN2_Loop3 +A74C BallUpdateTeamN2_Loop4 +A751 BallUpdateTeamN2_Loop5 +A764 BallUpdateTeamN2_Loop6 +A76F BallUpdateTeamN2_Loop7 +A785 BallUpdateTeamN2_Loop8 +A78C BallSetTeamNFlags +A79D BallSetTeamNFlags_Loop +A7A3 BallStoreTeamNFlags +A7A7 BallStoreTeamNFlags_Loop +A7BA BallStoreTeamNFlags_Loop2 +A7C0 BallStoreTeamNFlagsB +A7C4 BallStoreTeamNFlagsB_Loop +A7C5 BallStoreTeamNFlagsB_Loop2 +A7D6 BallStoreTeamNFlagsB_Loop3 +A7DC BallStoreTeamNFlagsC +A7E0 BallStoreTeamNFlagsC_Loop +A7E1 BallUpdateAnimationC +A7EE BallUpdateAnimationC_Loop +A7F5 BallUpdateAnimationC_Loop2 +A802 BallUpdateAnimationC_Loop3 +A80D BallUpdateAnimationC_Loop4 +A80F BallStoreAnimFlagsC +A811 BallClearNumberC +A816 BallUpdateAnimationD +A823 BallUpdateAnimationD_Loop +A82A BallUpdateAnimationD_Loop2 +A839 BallUpdateAnimationD_Loop3 +A83D BallClearNumberD +A842 BallResetForTeamC +A84F BallResetForTeamC_Loop +A85C BallCheckFloorC +A87F BallCheckFloorC_Loop +A885 BallStoreFlagsI +A889 BallStoreFlagsI_Loop +A88A BallResetForTeamD +A897 BallResetForTeamD_Loop +A8A4 BallComputeSpeedD +A8D0 BallComputeSpeedD_Loop +A8D6 BallStoreFlagsJ +A8DA BallStoreFlagsJ_Loop +A8E7 BallStoreFlagsJ_Loop2 +A8ED BallStoreFlagsJ2 +A8F1 BallStoreFlagsJ2_Loop +A8F2 BallUpdateBallSpeedB +A8FD BallUpdateBallSpeedB_Loop +A919 BallUpdateBallSpeedB_Loop2 +A91D BallSetBallSpeedB +A91F BallSetBallSpeedB_Loop +A935 BallSetBallSpeedB_Loop2 +A939 BallStoreBallSpeedB +A93B BallStoreBallSpeedB_Loop +A93C BallSubtractSpeedB +A949 BallSubtractSpeedB_Loop +A94E BallSubtractSpeedB_Loop2 +A950 BallStoreSpeedB +A953 BallCheckFloorD +A96B BallCheckFloorD_Loop +A972 BallSetPosition +A975 BallSetPosition_Loop +A9C0 BallSetPosition_OnNonzero +A9C5 BallSetPosition_Loop2 +A9CE BallSetPosition_Loop3 +A9D3 BallSetPosition_Loop4 +A9D5 BallSetFlagsK +A9DC BallSetFlagsK_Loop +A9E1 BallSetSpeed +A9E6 BallAdvancePosition +A9F3 BallAdvancePosition_Loop +AA00 BallAdvancePosition_Loop2 +AA0A BallAdvancePosition_Loop3 +AA11 BallAdvancePosition_Loop4 +AA18 BallAdvancePosition_Loop5 +AA1B BallSetFlagsL +AA24 BallStartSound +AA45 BallStartSound_Loop +AA52 BallStartSound_Loop2 +AA63 BallStartSound_Loop3 +AA6D BallCheckTeam +AA79 BallCheckTeam_Loop +AA96 BallCheckTeam_Loop2 +AAA5 BallFinishHit +AAAE BallStartSoundB +AABE BallStartSoundB_OnCarrySet +AAC8 BallStartSoundB_Loop +AADB BallStartSoundB_Loop2 +AAEB BallDecreaseNumber +AAF0 BallStoreNumber +AAF6 BallStoreNumber_Loop +AB00 BallSelectTeamSlot +AB0C BallSelectTeamSlot_Loop +AB12 BallSelectTeamSlot_Loop2 +AB13 BallHandlePlayerButton +AB1C BallHandlePlayerButton_Loop +AB2D BallHandlePlayerButton_Loop2 +AB3A BallHandlePlayerButton_Loop3 +AB47 BallHandlePlayerButton_Loop4 +AB4B BallStorePlayerState +AB5E BallStorePlayerState_Loop +AB6B BallStorePlayerState_Loop2 +AB6F BallStorePlayerStateB +ABCE BallFrameDone3 +ABCF BallHandlePlayerButtonB +ABD8 BallHandlePlayerButtonB_Loop +ABE9 BallHandlePlayerButtonB_Loop2 +ABF6 BallHandlePlayerButtonB_Loop3 +AC03 BallHandlePlayerButtonB_Loop4 +AC07 BallStorePlayerStateC +AC1A BallStorePlayerStateC_Loop +AC27 BallStorePlayerStateC_Loop2 +AC2B BallStorePlayerStateD +AC8A BallFrameDone4 +AC8B BallSelectSlot +AC8D BallSlotOffset +ACA3 BallSlotOffset_Loop +ACA4 BallSlotOffset_Loop2 +ACB3 BallSlotOffset_Loop3 +ACBA BallSlotOffset_Loop4 +ACD0 BallSlotOffset_Loop5 +ACDB BallSlotOffset_Loop6 +ACE5 BallSlotOffset_Loop7 +ACEF BallSlotOffset_Loop8 +ACFA BallSlotOffset_Loop9 +AD06 BallSlotOffset_Loop10 +AD0F BallStoreTeamNumber +AD1A BallStoreTeamNumber_Loop +AD2D BallStoreTeamNumber_Loop2 +AD37 BallStoreTeamNumber_Loop3 +AD49 BallStoreTeamNumber_Loop4 +AD55 BallStoreTeamNumber_Loop5 +AD5E BallStoreTeamNumberB +AD66 BallNextPlayerSlot +AD8C BallNextPlayerSlot_Loop +AD91 BallFinishPlayerUpdate +ADA4 BallNextPlayerSlotB +ADAA BallNextPlayerSlotB_Loop +ADAB BallSavePlayerSlot +ADC5 BallSavePlayerSlot_Loop +ADD8 BallSavePlayerSlot_Loop2 +ADE1 BallSavePlayerSlot_Loop3 +ADE7 BallPlayerMoveStart +ADFE BallPlayerMoveStart_Loop +AE11 BallPlayerMoveStart_Loop2 +AE1A BallPlayerMoveStart_Loop3 +AE20 BallPlayerMoveMiddle +AE31 BallPlayerMoveMiddle_Loop +AE3A BallPlayerMoveMiddle_Loop2 +AE45 BallPlayerMoveMiddle_Loop3 +AE47 BallPlayerMoveEnd +AE61 BallPlayerMoveStartB +AE7E BallPlayerMoveStartB_Loop +AE87 BallPlayerMoveStartB_Loop2 +AE90 BallPlayerMoveStartB_Loop3 +AEB7 BallPlayerMoveStartB_Loop4 +AECA BallPlayerMoveStartB_Loop5 +AED3 BallPlayerMoveStartB_Loop6 +AED9 BallPlayerMoveStartC +AEF0 BallPlayerMoveStartC_Loop +AF03 BallPlayerMoveStartC_Loop2 +AF0C BallPlayerMoveStartC_Loop3 +AF12 BallPlayerMoveMiddleB +AF23 BallPlayerMoveEndB +AF2E BallPlayerMoveEndB_Loop +AF30 BallPlayerMoveEndH +AF48 BallSelectSlotB +AF4A BallSlotOffsetB +AF59 BallSlotOffsetB_Loop +AF6F BallSlotOffsetB_Loop2 +AF76 BallSlotOffsetB_Loop3 +AF85 BallSlotOffsetB_Loop4 +AF8C BallSlotOffsetB_Loop5 +AF9F BallSlotOffsetB_Loop6 +AFA9 BallSlotOffsetB_Loop7 +AFB7 BallNextPlayerSlotC +AFDD BallNextPlayerSlotC_Loop +AFE2 BallFinishPlayerUpdateB +AFF1 BallNextPlayerSlotD +AFF7 BallNextPlayerSlotD_Loop +AFF8 BallSavePlayerSlotB +B00D BallSavePlayerSlotB_Loop +B020 BallSavePlayerSlotB_Loop2 +B029 BallSavePlayerSlotB_Loop3 +B032 BallPlayerMoveStartD +B049 BallPlayerMoveStartD_Loop +B05C BallPlayerMoveStartD_Loop2 +B065 BallPlayerMoveStartD_Loop3 +B06B BallPlayerMoveMiddleC +B07C BallPlayerMoveMiddleC_Loop +B087 BallPlayerMoveMiddleC_Loop2 +B089 BallPlayerMoveEndC +B0A9 BallPlayerMoveEndC_Loop +B0B8 BallPlayerMoveEndC_Loop2 +B0C2 BallPlayerMoveEndC_Loop3 +B0C9 BallPlayerMoveEndC_Loop4 +B0CE BallStoreTeamNumberC +B0D0 BallStoreTeamNumberD +B0DD BallHandlePlayerButtonC +B0E7 BallHandlePlayerButtonC_Loop +B0FF BallHandlePlayerButtonC_Loop2 +B109 BallHandlePlayerButtonC_Loop3 +B110 BallHandlePlayerButtonC_Loop4 +B12A BallHandlePlayerButtonC_Loop5 +B133 BallHandlePlayerButtonC_Loop6 +B142 BallHandlePlayerButtonC_Loop7 +B145 BallHandlePlayerButtonC_Loop8 +B15C BallHandlePlayerButtonC_Loop9 +B169 BallHandlePlayerButtonC_Loop10 +B176 BallStorePlayerStateE +B189 BallStorePlayerStateE_Loop +B19A BallStorePlayerStateE_Loop2 +B1AD BallStorePlayerStateE_Loop3 +B1B6 BallStorePlayerStateE_Loop4 +B1BC BallStorePlayerStateF +B1C2 BallPlayerMoveMiddleD +B1D3 BallPlayerMoveMiddleD_Loop +B1E6 BallPlayerMoveMiddleD_Loop2 +B1EF BallPlayerMoveMiddleD_Loop3 +B1F5 BallStorePlayerStateG +B1FB BallCheckPlayerFacing +B20F BallCheckPlayerFacing_Loop +B21B BallCheckPlayerFacing_Loop2 +B223 BallPlayHitSound +B230 BallRestorePlayerSlot +B234 BallClearBall +B239 BallSelectSlotC +B23B BallSlotOffsetC +B256 BallSlotOffsetC_Loop +B25D BallSlotOffsetC_Loop2 +B26C BallSlotOffsetC_Loop3 +B273 BallSlotOffsetC_Loop4 +B27C BallSlotOffsetC_Loop5 +B286 BallSlotOffsetC_Loop6 +B29E BallSlotOffsetC_Loop7 +B2B4 BallSlotOffsetC_Loop8 +B2BB BallSlotOffsetC_Loop9 +B2CA BallSlotOffsetC_Loop10 +B2D1 BallSlotOffsetC_Loop11 +B2DB BallSlotOffsetC_Loop12 +B2E2 BallSlotOffsetC_Loop13 +B2FC BallSlotOffsetC_Loop14 +B305 BallSlotOffsetC_Loop15 +B314 BallSlotOffsetC_Loop16 +B317 BallSlotOffsetC_Loop17 +B32E BallSlotOffsetC_Loop18 +B33B BallSlotOffsetC_Loop19 +B348 BallStorePlayerStateH +B35B BallStorePlayerStateH_Loop +B36C BallStorePlayerStateH_Loop2 +B37F BallStorePlayerStateH_Loop3 +B388 BallStorePlayerStateH_Loop4 +B38E BallStorePlayerStateI +B397 BallPlayerMoveMiddleE +B3A8 BallPlayerMoveMiddleE_Loop +B3BB BallPlayerMoveMiddleE_Loop2 +B3C4 BallPlayerMoveMiddleE_Loop3 +B3CA BallStorePlayerStateJ +B3D0 BallCheckPlayerFacingB +B3E4 BallCheckPlayerFacingB_Loop +B3F0 BallCheckPlayerFacingB_Loop2 +B3F8 BallHandlePlayerButtonD +B402 BallHandlePlayerButtonD_Loop +B40C BallHandlePlayerButtonD_Loop2 +B421 BallHandlePlayerButtonD_Loop3 +B434 BallHandlePlayerButtonD_Loop4 +B43D BallHandlePlayerButtonD_Loop5 +B443 BallStorePlayerStateK +B45A BallStorePlayerStateK_Loop +B46D BallStorePlayerStateK_Loop2 +B476 BallStorePlayerStateK_Loop3 +B47C BallStorePlayerStateL +B49F BallRestorePlayerSlotB +B4A7 BallNextPlayerSlotE +B4CD BallNextPlayerSlotE_Loop +B4D8 BallFinishPlayerUpdateC +B4E7 BallNextPlayerSlotF +B4ED BallNextPlayerSlotF_Loop +B4EE BallRestorePlayerSlotC +B4F5 BallCheckHitType +B524 BallCheckHitType_Loop +B53F BallCheckHitType_Loop2 +B550 BallCheckHitTypeB +B567 BallCheckHitTypeB_Loop +B568 BallSetBallNumber +B57E BallSetBallNumber_Loop +B585 BallSetBallNumber_Loop2 +B594 BallSetBallNumber_Loop3 +B59B BallSetBallNumber_Loop4 +B5A7 BallStoreBallNumber +B5BA BallStoreBallNumber_Loop +B5BD BallGetNoteIndex +B5D0 BallGetNoteIndex_Loop +B5D9 BallGetNoteIndex_Loop2 +B5DB BallSetNumberState +B5F1 BallSetNumberState_Loop +B5F7 BallStoreNumberStateB +B5FD BallStoreNumberStateB_Loop +B609 BallStoreNumberStateB_Loop2 +B60F BallStoreNumberStateC +B612 BallCheckNumberState +B624 BallCheckNumberState_Loop +B629 BallCheckNumberState_Loop2 +B62E BallStoreNumberStateD +B634 BallStoreNumberStateD_Loop +B641 BallStoreNumberStateD_Loop2 +B646 BallStoreNumberStateE +B65F BallStoreNumberStateE_Loop +B666 BallStartHitSound +B669 BallStoreNumberStateF +B694 BallStoreNumberStateF_Loop +B6A1 BallFinishPlayerUpdateD +B6B1 BallFrameDone5 +B6C4 BallSelectSlotD +B6C6 BallSlotOffsetD +B6DC BallSlotOffsetD_Loop +B6DD BallSlotOffsetD_Loop2 +B6EC BallSlotOffsetD_Loop3 +B6F3 BallSlotOffsetD_Loop4 +B709 BallSlotOffsetD_Loop5 +B714 BallSlotOffsetD_Loop6 +B71E BallSlotOffsetD_Loop7 +B728 BallSlotOffsetD_Loop8 +B733 BallSlotOffsetD_Loop9 +B73F BallSlotOffsetD_Loop10 +B748 BallStoreTeamNumberE +B753 BallStoreTeamNumberE_Loop +B766 BallStoreTeamNumberE_Loop2 +B770 BallStoreTeamNumberE_Loop3 +B773 BallStoreTeamNumberE_Loop4 +B785 BallStoreTeamNumberE_Loop5 +B791 BallStoreTeamNumberE_Loop6 +B79A BallStoreTeamNumberF +B7A2 BallNextPlayerSlotG +B7C8 BallNextPlayerSlotG_Loop +B7CD BallFinishPlayerUpdateE +B7E0 BallNextPlayerSlotH +B7E8 BallNextPlayerSlotH_Loop +B7E9 BallSavePlayerSlotC +B808 BallSavePlayerSlotC_Loop +B811 BallSavePlayerSlotC_Loop2 +B81A BallSavePlayerSlotC_Loop3 +B841 BallSavePlayerSlotC_Loop4 +B854 BallSavePlayerSlotC_Loop5 +B85D BallSavePlayerSlotC_Loop6 +B863 BallPlayerMoveStartE +B87A BallPlayerMoveStartE_Loop +B88D BallPlayerMoveStartE_Loop2 +B896 BallPlayerMoveStartE_Loop3 +B89C BallPlayerMoveMiddleF +B8AD BallPlayerMoveEndD +B8B8 BallPlayerMoveEndD_Loop +B8BA BallPlayerMoveEndE +B8D2 BallSavePlayerSlotD +B8EC BallSavePlayerSlotD_Loop +B8FF BallSavePlayerSlotD_Loop2 +B908 BallSavePlayerSlotD_Loop3 +B90E BallPlayerMoveStartF +B925 BallPlayerMoveStartF_Loop +B938 BallPlayerMoveStartF_Loop2 +B941 BallPlayerMoveStartF_Loop3 +B947 BallPlayerMoveMiddleG +B958 BallPlayerMoveMiddleG_Loop +B961 BallPlayerMoveMiddleG_Loop2 +B96C BallPlayerMoveMiddleG_Loop3 +B96E BallPlayerMoveEndF +B988 BallSelectSlotE +B98A BallSlotOffsetE +B999 BallSlotOffsetE_Loop +B9AF BallSlotOffsetE_Loop2 +B9B6 BallSlotOffsetE_Loop3 +B9C5 BallSlotOffsetE_Loop4 +B9CC BallSlotOffsetE_Loop5 +B9DF BallSlotOffsetE_Loop6 +B9E9 BallSlotOffsetE_Loop7 +B9F7 BallNextPlayerSlotI +BA1D BallNextPlayerSlotI_Loop +BA22 BallFinishPlayerUpdateF +BA31 BallNextPlayerSlotJ +BA39 BallNextPlayerSlotJ_Loop +BA3A BallSavePlayerSlotE +BA4F BallSavePlayerSlotE_Loop +BA62 BallSavePlayerSlotE_Loop2 +BA6B BallSavePlayerSlotE_Loop3 +BA74 BallPlayerMoveStartG +BA8B BallPlayerMoveStartG_Loop +BA9E BallPlayerMoveStartG_Loop2 +BAA7 BallPlayerMoveStartG_Loop3 +BAAD BallPlayerMoveMiddleH +BABE BallPlayerMoveMiddleH_Loop +BAC9 BallPlayerMoveMiddleH_Loop2 +BACB BallPlayerMoveEndG +BAEB BallPlayerMoveEndG_Loop +BAFA BallPlayerMoveEndG_Loop2 +BB04 BallPlayerMoveEndG_Loop3 +BB0B BallPlayerMoveEndG_Loop4 +BB10 BallStoreTeamNumberG +BB12 BallStoreTeamNumberH +BB1F BallHandlePlayerButtonE +BB29 BallHandlePlayerButtonE_Loop +BB41 BallHandlePlayerButtonE_Loop2 +BB4B BallHandlePlayerButtonE_Loop3 +BB52 BallHandlePlayerButtonE_Loop4 +BB6C BallHandlePlayerButtonE_Loop5 +BB75 BallHandlePlayerButtonE_Loop6 +BB84 BallHandlePlayerButtonE_Loop7 +BB87 BallHandlePlayerButtonE_Loop8 +BB9E BallHandlePlayerButtonE_Loop9 +BBAB BallHandlePlayerButtonE_Loop10 +BBB8 BallStorePlayerStateM +BBCB BallStorePlayerStateM_Loop +BBDC BallStorePlayerStateM_Loop2 +BBEF BallStorePlayerStateM_Loop3 +BBF8 BallStorePlayerStateM_Loop4 +BBFE BallStorePlayerStateN +BC07 BallPlayerMoveMiddleI +BC18 BallPlayerMoveMiddleI_Loop +BC2B BallPlayerMoveMiddleI_Loop2 +BC34 BallPlayerMoveMiddleI_Loop3 +BC3A BallStorePlayerStateO +BC40 BallCheckPlayerFacingC +BC54 BallCheckPlayerFacingC_Loop +BC60 BallCheckPlayerFacingC_Loop2 +BC68 BallPlayHitSoundB +BC75 BallRestorePlayerSlotD +BC79 BallClearBallB +BC7E BallSelectSlotF +BC80 BallSlotOffsetF +BC9B BallSlotOffsetF_Loop +BCA2 BallSlotOffsetF_Loop2 +BCB1 BallSlotOffsetF_Loop3 +BCB8 BallSlotOffsetF_Loop4 +BCC1 BallSlotOffsetF_Loop5 +BCCB BallSlotOffsetF_Loop6 +BCE3 BallSlotOffsetF_Loop7 +BCF9 BallSlotOffsetF_Loop8 +BD00 BallSlotOffsetF_Loop9 +BD0F BallSlotOffsetF_Loop10 +BD16 BallSlotOffsetF_Loop11 +BD20 BallSlotOffsetF_Loop12 +BD27 BallSlotOffsetF_Loop13 +BD41 BallSlotOffsetF_Loop14 +BD4A BallSlotOffsetF_Loop15 +BD59 BallSlotOffsetF_Loop16 +BD5C BallSlotOffsetF_Loop17 +BD73 BallSlotOffsetF_Loop18 +BD80 BallSlotOffsetF_Loop19 +BD8D BallStorePlayerStateP +BDA0 BallStorePlayerStateP_Loop +BDB1 BallStorePlayerStateP_Loop2 +BDC4 BallStorePlayerStateP_Loop3 +BDCD BallStorePlayerStateP_Loop4 +BDD3 BallStorePlayerStateQ +BDDC BallPlayerMoveMiddleJ +BDED BallPlayerMoveMiddleJ_Loop +BE00 BallPlayerMoveMiddleJ_Loop2 +BE09 BallPlayerMoveMiddleJ_Loop3 +BE0F BallStorePlayerStateR +BE15 BallCheckPlayerFacingD +BE29 BallCheckPlayerFacingD_Loop +BE35 BallCheckPlayerFacingD_Loop2 +BE3D BallHandlePlayerButtonF +BE47 BallHandlePlayerButtonF_Loop +BE51 BallHandlePlayerButtonF_Loop2 +BE66 BallHandlePlayerButtonF_Loop3 +BE79 BallHandlePlayerButtonF_Loop4 +BE82 BallHandlePlayerButtonF_Loop5 +BE88 BallStorePlayerStateS +BE9F BallStorePlayerStateS_Loop +BEB2 BallStorePlayerStateS_Loop2 +BEBB BallStorePlayerStateS_Loop3 +BEC1 BallStorePlayerStateT +BEE4 BallRestorePlayerSlotE +BEEC BallNextPlayerSlotK +BF12 BallNextPlayerSlotK_Loop +BF1D BallFinishPlayerUpdateG +BF2F BallWaitFrames +BF37 BallWaitFrames_Loop +BF3C BallNextPlayerSlotL +BF44 BallNextPlayerSlotL_Loop +BF45 BallRestorePlayerSlotF +BF4C BallCheckHitTypeC +BF7B BallCheckHitTypeC_Loop +BF96 BallCheckHitTypeC_Loop2 +BFA7 BallCheckHitTypeD +BFBE BallCheckHitTypeD_Loop +BFBF BallSetBallNumberB +BFD5 BallSetBallNumberB_Loop +BFDC BallSetBallNumberB_Loop2 +BFEB BallSetBallNumberB_Loop3 +BFF2 BallSetBallNumberB_Loop4 +BFFE BallStoreBallNumberB +C011 BallStoreBallNumberB_Loop +C014 BallGetNoteIndexB +C027 BallGetNoteIndexB_Loop +C030 BallGetNoteIndexB_Loop2 +C032 BallSetNumberStateB +C048 BallSetNumberStateB_Loop +C04E BallStoreNumberStateG +C054 BallStoreNumberStateG_Loop +C060 BallStoreNumberStateG_Loop2 +C066 BallStoreNumberStateH +C069 BallCheckNumberStateB +C07B BallCheckNumberStateB_Loop +C080 BallCheckNumberStateB_Loop2 +C085 BallStoreNumberStateI +C08B BallStoreNumberStateI_Loop +C098 BallStoreNumberStateI_Loop2 +C09D BallStoreNumberStateJ +C0B8 BallStoreNumberStateJ_Loop +C0BF BallStartHitSoundB +C0C2 BallStoreNumberStateK +C0ED BallStoreNumberStateK_Loop +C0FA BallFinishPlayerUpdateH +C10A BallFrameDone6 +C115 UpdateBallX +C133 UpdateBallX_Loop +C139 UpdateBallX_Loop2 +C14A UpdateBallX_Loop3 +C14D UpdateBallX_Loop4 +C164 UpdateBallX_Loop5 +C167 UpdateBallY +C18B UpdateBallY_Loop +C19F UpdateBallY_Loop2 +C1B9 UpdateBallFrameCounter +C1C9 UpdateBallFrameCounter_Loop +C1D5 AdvanceBallFrame +C1E5 AdvanceBallFrame_Loop +C1E6 InitBallAnimations +C1EA BallAnimationIndex +C1FA BallAnimationIndex_Loop +C215 UpdateBallAnimationTable +C224 UpdateBallAnimationTable_Loop +C226 BallStoreAnimation +C22C BallStoreAnimation_Loop +C23D BallStoreAnimation_Loop2 +C24C BallStoreAnimation_Loop3 +C24E BallAnimationStoreValue +C251 BallAnimationStoreValue_Loop +C26A BallAnimationStoreValue_Loop2 +C26C BallAnimationStoreValueB +C272 BallAnimationStoreValueB_Loop +C281 BallAnimationStoreValueB_Loop2 +C283 BallAnimationStoreValueC +C286 BallAnimationStoreValueC_Loop +C291 BallAnimationStoreValueC_Loop2 +C292 BallAnimationCheckScroll +C2A1 BallAnimationCheckScroll_Loop +C2A5 BallAnimationCheckScroll_Loop2 +C2A6 DrawPlayers +C2F8 LoadTeamSpriteOffsets +C34B LoadTeamSpriteOffsets_Loop +C353 LoadTeamSpriteOffsets_Loop2 +C36D DrawCourt +C371 DrawCourtFrame +C385 DrawCourtFrame_Loop +C386 GetTileIndex +C398 GetTileIndex_Loop +C3EF DrawTeamFlags +C410 DrawTeamFlags_Loop +C41D ReadTileListByte +C43D ReadTileListByte_Loop +C43F ShiftTileList +C445 ShiftTileList_OnNonzero +C45A ShiftTileList_Loop +C468 ShiftTileList_OnCarryClear +C48A ShiftTileList_Loop2 +C49A ShiftTileList_Loop3 +C4A9 DrawIndicatorBoard +C4CB DrawIndicatorBoard_Loop +C4D9 ShiftDrawPointer +C4FD GetDrawX +C516 GetDrawX_Loop +C522 StoreDrawX +C535 StoreDrawX_Loop +C54B StoreDrawX_Loop2 +C54F StoreDrawTile +C556 DrawNumberSprite +C568 DrawNumberSpriteB +C56C DrawNumberSpriteC +C588 DrawNumberSpriteC_Loop +C58A DrawNumberSpriteD +C599 DrawNumberSpriteD_Loop +C59B DrawNumberSpriteE +C5AA DrawNumberSpriteE_Loop +C5B4 DrawNumberSpriteF +C5D0 DrawNumberSpriteF_Loop +C5D2 DrawNumberSpriteG +C5E7 DrawNumberSpriteG_Loop +C5E9 StoreSpriteIndex +C5EE StoreSpriteIndex_Loop +C5EF AnimateCrowd +C5F4 AnimateCrowd_Loop +C607 AnimateCrowd_Loop2 +C60D AnimateCrowd_Loop3 +C613 AnimateCrowd_Loop4 +C619 AnimateCrowd_Loop5 +C61F AnimateCrowd_Loop6 +C625 AnimateCrowd_Loop7 +C62B AnimateCrowd_Loop8 +C631 AnimateCrowd_Loop9 +C637 AnimateCrowd_Loop10 +C638 CrowdFrame0 +C647 CrowdFrame0_Loop +C650 CrowdFrame1 +C65F CrowdFrame1_Loop +C668 CrowdFrame2 +C677 CrowdFrame2_Loop +C680 CrowdFrame3 +C68F CrowdFrame3_Loop +C698 CrowdFrame4 +C6A7 CrowdFrame4_Loop +C6B0 CrowdSpriteFlag0 +C6BF CrowdSpriteFlag0_Loop +C6C8 CrowdSpriteFlag1 +C6D7 CrowdSpriteFlag1_Loop +C6E0 CrowdSpriteFlag2 +C6EF CrowdSpriteFlag2_Loop +C6F8 CrowdSpriteFlag3 +C707 CrowdSpriteFlag3_Loop +C710 CrowdSpriteFlag4 +C71F CrowdSpriteFlag4_Loop +C728 CrowdSpriteFlag5 +C737 CrowdSpriteFlag5_Loop +C740 CrowdSpriteFlag6 +C74F CrowdSpriteFlag6_Loop +C758 DrawScoreBoard +C772 DrawScoreBoard_Loop +C77B DrawScoreBoard_Loop2 +C784 DrawScoreBoard_Loop3 +C786 StoreCrowdSprite +C78C CrowdSpriteLoopStart +C78E ReadCrowdSpriteByte +C7A7 ReadCrowdSpriteByte_Loop +C7B0 ReadCrowdSpriteByte_Loop2 +C7B1 GetCrowdSpriteY +C7C5 GetCrowdSpriteY_Loop +C7CD DrawCrowdSpriteRow +C7D5 DrawTeamSelection +C7EE GetCrowdSpriteTile +C809 NegateValue +C814 SetCrowdFrameIndex +C818 SetCrowdFrameIndex_OnNonzero +C82C SetCrowdFrameIndex_Loop +C833 GetCrowdSpriteX +C854 GetCrowdSpriteX_Loop +C85C StoreCrowdSpriteX +C85E StoreCrowdSpriteX_OnNonzero +C86F StoreCrowdSpriteX_Loop +C87A StoreCrowdSpriteX_OnNonzero2 +C88B StoreCrowdSpriteX_Loop2 +C893 StoreTeamColorA +C8BE StoreTeamColorA_Loop +C8C6 DrawNationFlags +C8C8 DrawNationFlags_OnNonzero +C8D1 DrawNationFlag0 +C8D9 DrawNationFlag0_Loop +C8E4 DrawNationFlag0_OnNonzero +C8F5 DrawNationFlag0_Loop2 +C8FD StoreTeamColorB +C904 DrawNumberSpriteH +C907 DrawNumberSpriteI +C914 DrawNumberSpriteI_Loop +C91D DrawNumberSpriteI_Loop2 +C922 DrawNumberSpriteI_Loop3 +C931 DrawNumberSpriteI_Loop4 +C936 DrawNumberSpriteJ +C938 StoreCrowdOffset +C93B CheckCrowdOffset +C94B CheckCrowdOffset_OnZero +C950 CheckCrowdOffset_Loop +C955 DrawNumberSpriteK +C95E StoreCrowdTile +C963 StoreCrowdTile_Loop +C96D StoreCrowdTile_OnZero +C972 StoreCrowdTile_Loop2 +C977 StoreCrowdTile_Loop3 +C983 DrawNumberSpriteL +C98D SetNumberIndex +C991 ShiftNumberBits +C99B ShiftNumberBits_OnNonzero +C9A4 ShiftNumberBits_Loop +C9A9 ShiftNumberBits_Loop2 +C9C9 ShiftNumberBits_Loop3 +C9CE DrawNumberSpriteM +C9DE DrawNumberSpriteM_OnZero +C9E3 DrawNumberSpriteM_Loop +C9E8 DrawNumberSpriteM_Loop2 +C9F1 DrawNumberSpriteN +C9F6 DrawNumberSpriteN_Loop +CA00 DrawNumberSpriteN_OnZero +CA05 DrawNumberSpriteN_Loop2 +CA0A DrawNumberSpriteN_Loop3 +CA16 GetFrameMod4 +CA20 SetNumberIndexB +CA24 ShiftNumberBitsB +CA2E ShiftNumberBitsB_OnNonzero +CA37 ShiftNumberBitsB_Loop +CA3C ShiftNumberBitsB_Loop2 +CA62 ShiftNumberBitsB_Loop3 +CA67 DrawNumberSpriteO +CA70 DrawNumberSpriteO_Loop +CA75 DrawNumberSpriteO_Loop2 +CA7C DrawNumberSpriteO_Loop3 +CA81 DrawNumberSpriteO_Loop4 +CA88 DrawNumberSpriteO_Loop5 +CA94 DrawNumberSpriteO_Loop6 +CA96 DrawNumberSpriteP +CA9F DrawNumberSpriteQ +CAB8 DrawNumberSpriteQ_Loop +CAD0 DrawNumberSpriteR +CAE1 DrawNumberSpriteS +CAEA DrawNumberSpriteS_Loop +CAEF DrawNumberSpriteS_Loop2 +CAF6 DrawNumberSpriteS_Loop3 +CAFB DrawNumberSpriteS_Loop4 +CB02 DrawNumberSpriteS_Loop5 +CB0E DrawNumberSpriteS_Loop6 +CB32 DrawNumberSpriteS_Loop7 +CB4A DrawNumberSpriteU +CB5B DrawNumberSpriteV +CB63 CheckTeamSpriteFlag +CB6E CheckTeamSpriteFlag_Loop +CB7A CheckTeamSpriteFlag_Loop2 +CB88 CheckTeamSpriteFlag_Loop3 +CB89 ClearTeamSpriteFlags +CB91 CheckTeamSpriteFlagB +CB9C CheckTeamSpriteFlagB_Loop +CBA8 CheckTeamSpriteFlagB_Loop2 +CBB6 CheckTeamSpriteFlagB_Loop3 +CBB7 ClearNumberState +CBC7 ClearNumberState_Loop +CBD1 ClearNumberState_Loop2 +CBDB ClearNumberState_Loop3 +CBE5 ClearNumberState_Loop4 +CBEF GetTileIndexB +CC13 GetTileIndexB_Loop +CC26 GetTileIndexB_Loop2 +CC36 GetTileIndexB_Loop3 +CC37 ClearNumberStateB +CC47 ClearNumberStateB_Loop +CC51 ClearNumberStateB_Loop2 +CC5B ClearNumberStateB_Loop3 +CC65 ClearNumberStateB_Loop4 +CC6F GetTileIndexC +CC93 GetTileIndexC_Loop +CCA6 GetTileIndexC_Loop2 +CCB6 GetTileIndexC_Loop3 +CCB7 DrawNumberSpriteZ +CCC2 DrawNumberSpriteZ_Loop +CCC6 GetTileIndexD +CCDE GetTileIndexD_Loop +CCEC GetTileIndexD_Loop2 +CCF7 GetTileIndexD_Loop3 +CCFE GetTileIndexD_Loop4 +CD0D GetTileIndexD_Loop5 +CD18 GetTileIndexD_Loop6 +CD1F GetTileIndexD_Loop7 +CD2E CheckTeamSpriteIndex +CD41 CheckTeamSpriteIndex_Loop +CD54 CheckTeamSpriteIndex_Loop2 +CD5D CheckTeamSpriteIndex_Loop3 +CD63 StoreTeamSpriteY +CD66 LoadTeamSpriteData +CD6C NextTeamSprite +CD77 NextTeamSprite_Loop +CDB8 CheckAnimateFlag +CDBF CheckAnimateFlag_Loop +CDCE CheckAnimateFlag_OnNonnegative +CDDD CheckAnimateFlag_Loop2 +CDF1 CheckAnimateFlag_Loop3 +CE00 CheckAnimateFlag_Loop4 +CE18 CheckAnimateFlag_Loop5 +CE1D CheckAnimateFlag_Loop6 +CE29 CheckAnimateFlag_Loop7 +CE2B StoreSpriteValue +CE2E NextSpriteRow +CE32 DrawNumberSpriteAA +CE39 DrawNumberSpriteAA_Loop +CE48 DrawNumberSpriteAA_OnNonzero +CE57 DrawNumberSpriteAA_Loop2 +CE6B DrawNumberSpriteAA_Loop3 +CE7A DrawNumberSpriteAA_Loop4 +CE92 DrawNumberSpriteAA_Loop5 +CE97 DrawNumberSpriteAA_Loop6 +CEA3 DrawNumberSpriteAA_Loop7 +CEA5 StoreSpriteValueB +CEA8 NextSpriteRowB +CEAE DrawNumberSpriteAB +CEBE DrawNumberSpriteAB_Loop +CEC9 DrawNumberSpriteAB_Loop2 +CECF GetTileIndexE +CEDF GetTileIndexE_Loop +CEE9 GetTileIndexE_Loop2 +CEF7 GetTileIndexE_Loop3 +CEFE GetTileIndexE_Loop4 +CF0C GetTileIndexE_Loop5 +CF13 GetTileIndexE_Loop6 +CF1E GetSpriteTileAddress +CF37 GetSpriteTileAddress_Loop +CF3A GetSpriteTileAddress_Loop2 +CF4C GetSpriteTileAddress_Loop3 +CF65 GetSpriteTileAddress_Loop4 +CF68 GetSpriteTileAddress_Loop5 +CF7A GetSpriteTileAddress_Loop6 +CF7D SubtractFour +CF89 SubtractFour_Loop +CF8A DrawNumberSpriteAC +CF9A DrawNumberSpriteAC_Loop +CFA5 DrawNumberSpriteAC_Loop2 +CFAB GetTileIndexF +CFBB GetTileIndexF_Loop +CFC5 GetTileIndexF_Loop2 +CFD3 GetTileIndexF_Loop3 +CFDA GetTileIndexF_Loop4 +CFE8 GetTileIndexF_Loop5 +CFEF GetTileIndexF_Loop6 +CFFA GetSpriteTileAddressB +D013 GetSpriteTileAddressB_Loop +D016 GetSpriteTileAddressB_Loop2 +D028 GetSpriteTileAddressB_Loop3 +D041 GetSpriteTileAddressB_Loop4 +D044 GetSpriteTileAddressB_Loop5 +D056 GetSpriteTileAddressB_Loop6 +D059 SubtractFourB +D069 SubtractFourB_Loop +D06A DrawNumberSpriteAD +D089 DrawNumberSpriteAD_Loop +D092 DrawNumberSpriteAD_Loop2 +D093 DrawNumberSpriteAE +D09A DrawNumberSpriteAE_Loop +D0A2 DrawNumberSpriteAE_OnNonnegative +D0BF DrawNumberSpriteAE_Loop2 +D0CA DrawNumberSpriteAE_Loop3 +D0CC SetDrawFlags +D0D3 SetDrawFlags_Loop +D0DA StoreSpriteFlag +D0DD ClearDrawFlags +D0EC ClearDrawFlags_Loop +D0EE SetDrawFlagsB +D0FB AnimateAudience +D11B AnimateAudience_Loop +D128 AnimateAudience_Loop2 +D135 SetPpuAddress2059 +D148 GetTableIndex +D15A GetTableIndexB +D17D WriteTwoTileBytes +D19C WriteTwoTileBytes_Loop +D1A6 WriteTileBytes +D1B4 AnimateAudienceB +D1D4 AnimateAudienceB_Loop +D1E1 AnimateAudienceB_Loop2 +D1EE SetPpuAddress205A +D201 GetTableIndexC +D213 GetTableIndexD +D236 WriteTwoTileBytesB +D255 WriteTwoTileBytesB_Loop +D25F AnimateAudienceC +D283 AnimateAudienceC_Loop +D285 SetAnimateState +D293 SetAnimateState_Loop +D29D SetAnimateState_Loop2 +D2A3 SetAnimateState_Loop3 +D2AB SetAnimateState_Loop4 +D2BF SetAnimateState_Loop5 +D2C9 SetAnimateState_Loop6 +D2D1 SetAnimateState_Loop7 +D2D9 SetAnimateState_Loop8 +D2ED SetAnimateState_Loop9 +D2F5 SetAnimateState_Loop10 +D303 AnimateAudienceD +D32B AnimateAudienceD_Loop +D32D SetAnimateStateB +D33B SetAnimateStateB_Loop +D345 SetAnimateStateB_Loop2 +D34B SetAnimateStateB_Loop3 +D353 SetAnimateStateB_Loop4 +D367 SetAnimateStateB_Loop5 +D371 SetAnimateStateB_Loop6 +D379 SetAnimateStateB_Loop7 +D381 SetAnimateStateB_Loop8 +D395 SetAnimateStateB_Loop9 +D39D SetAnimateStateB_Loop10 +D3AB AnimateAudienceE +D3BD AnimateAudienceE_Loop +D3C2 AnimateAudienceE_Loop2 +D3CD AnimateAudienceE_Loop3 +D3D0 AnimateAudienceE_Loop4 +D3DB AnimateAudienceE_Loop5 +D3DE AnimateAudienceE_Loop6 +D3E9 AnimateAudienceE_Loop7 +D3EC AnimateAudienceE_Loop8 +D3F7 AnimateAudienceE_Loop9 +D3FA AnimateAudienceE_Loop10 +D406 NextAnimateStep +D408 NextAnimateStepB +D40A NextAnimateStepC +D40C ReadAnimateTable +D418 ReadAnimateTable_Loop +D44B ReadAnimateTable_Loop2 +D44F WriteAnimateByte +D457 AnimateAudienceF +D46E AnimateAudienceF_Loop +D473 AnimateAudienceF_Loop2 +D481 AnimateAudienceF_Loop3 +D486 CheckAnimateChar +D491 CheckAnimateChar_Loop +D49D CheckAnimateChar_Loop2 +D502 CheckAnimateChar_Loop3 +D50B WriteAnimateByteB +D513 DrawScoreDigitsAt +D54B WriteEightDigits +D564 WriteOneDigit +D56C ClearDigit +D577 ClearDigit_Loop +D5CB UpdateIndicatorBoardBits +D5E3 UpdateIndicatorBoardBits_OnNonzero +D604 UpdateIndicatorBoardBits_Loop +D609 UpdateIndicatorBoardBits_Loop2 +D60E UpdateIndicatorBoardBits_Loop3 +D613 UpdateIndicatorBoardBits_Loop4 +D618 UpdateIndicatorBoardBits_Loop5 +D61D UpdateIndicatorBoardBits_Loop6 +D622 SetPpuAddressFromZp +D682 CheckIndicatorFlag +D691 CheckIndicatorFlag_Loop +D6A0 CheckIndicatorFlag_Loop2 +D6AF CheckIndicatorFlag_Loop3 +D6B2 CheckIndicatorFlag_Loop4 +D6BA SetIndicatorStep1 +D6C2 SetIndicatorStep1_Loop +D6CA SetIndicatorStep2 +D6D2 SetIndicatorStep2_Loop +D6DA SetIndicatorStep3 +D6E2 CheckIndicatorCount +D6EF CheckIndicatorCount_Loop +D6FA CheckIndicatorCount_Loop2 +D70C CheckIndicatorCount_Loop3 +D713 CheckIndicatorCount_Loop4 +D71A SetIndicatorPointerA +D725 SetIndicatorPointerA_Loop +D72F SetIndicatorPointerA_Loop2 +D742 SetIndicatorPointerA_Loop3 +D744 StoreIndicatorValue +D754 StoreIndicatorValue_OnNonnegative +D761 StoreIndicatorValue_Loop +D767 StoreIndicatorValue_Loop2 +D77F StoreIndicatorValue_Loop3 +D78A StoreIndicatorValue_Loop4 +D795 ClearIndicatorFlag +D799 UpdateIndicatorBoardDone +D79A CheckIndicatorPage +D7A7 CheckIndicatorPage_Loop +D7B2 CheckIndicatorPage_Loop2 +D7C4 CheckIndicatorPage_Loop3 +D7CB CheckIndicatorPage_Loop4 +D7D2 SetIndicatorPointerB +D7DD SetIndicatorPointerB_Loop +D7E7 SetIndicatorPointerB_Loop2 +D7FE SetIndicatorPointerB_Loop3 +D800 StoreIndicatorValueB +D810 StoreIndicatorValueB_OnNonnegative +D81D StoreIndicatorValueB_Loop +D823 StoreIndicatorValueB_Loop2 +D83B StoreIndicatorValueB_Loop3 +D846 StoreIndicatorValueB_Loop4 +D851 ClearIndicatorFlagB +D855 UpdateIndicatorBoardDoneB +D856 DrawPlayersAndCrowd +D873 DrawPlayersAndCrowd_Loop +D881 DrawPlayersAndCrowd_Loop2 +D88F DrawPlayersAndCrowd_Loop3 +D895 DrawPlayersAndCrowd_Loop4 +D8B7 CheckIndicatorFrame +D8D1 CheckIndicatorFrame_Loop +D8D6 SetIndicatorDelay +D8DB SetIndicatorDelay_Loop +D8DF ResetTeamPositions +D8E9 GetTileIndexG +D8FD ResetTeamPositionsB +D900 ResetTeamPositionsB_Loop +D905 SetTeamPositionsB +D90F GetTileIndexH +D92A GetTileIndexH_Loop +D92F SetTeamScores +D933 SetTeamScores_OnNonnegative +D948 SetTeamScoresB +D94C SetTeamScoresB_OnNonzero +D965 UpdateTeamPlayerPositions +D96B GetTileIndexI +D97B GetTileIndexI_Loop +D985 GetTileIndexI_Loop2 +D995 GetTileIndexI_Loop3 +D9A5 GetTileIndexI_Loop4 +D9B1 NextPlayerPosition +D9B6 NextPlayerPosition_Loop +D9BB UpdateTeamPlayerPositionsB +D9C1 GetTileIndexJ +D9D1 GetTileIndexJ_Loop +D9DB GetTileIndexJ_Loop2 +D9EB GetTileIndexJ_Loop3 +D9FB GetTileIndexJ_Loop4 +DA07 UpdateTeamPlayerPositionsC +DA10 UpdateTeamPlayerPositionsC_Loop +DA15 InitPlayerPositionLoop +DA1F GetTileIndexK +DA3C GetTileIndexK_Loop +DA41 InitPlayerPositionLoopB +DA4B GetTileIndexL +DA6C GetTileIndexL_Loop +DA71 InitPlayerPositionLoopC +DA77 GetTileIndexM +DA8D GetTileIndexM_Loop +DA99 NextPlayerPositionB +DA9E NextPlayerPositionB_Loop +DAA3 InitPlayerPositionLoopD +DAA9 GetTileIndexN +DABF GetTileIndexN_Loop +DACB CheckPlayerPositionCount +DAD4 CheckPlayerPositionCount_Loop +DB39 LoadBackgroundTilemap +DB46 LoadBackgroundTilemap_Loop +DB4F SetBackgroundTileRow +DB51 WriteBackgroundTile +DB5E WriteBackgroundTile_Loop +DB67 WriteBackgroundTile_Loop2 +DB6E SetAttributeRow +DB70 WriteAttributeTile +DB7A WriteAttributeTile_Loop +DBA2 QueueScreenUpdate +DBC2 QueueScreenUpdate_Loop +DBC8 QueueScreenUpdate_Loop2 +DBFD QueueScreenUpdate_Loop3 +DC03 QueueScreenUpdate_Loop4 +DC4E StopAllSounds +F800 InitSoundEngine +F835 InitSoundEngine_Loop +F83B InitSoundEngine_Loop2 +F83F SetPulse1Envelope +F846 SetPulse2Envelope +F850 PlayPulse1Note +F852 PlayPulse1Note_OnNonzero +F863 PlayPulse1Note_Loop +F867 PlayPulse2Note +F86B PlayTriangleNote +F86F NoteToPeriodIndex +F875 GetNoisePeriodIndex +F89F PlaySfxWhistle +F8C2 PlaySfxWhistle_OnCarrySet +F8C5 StartSfxEnvelope +F8CF PlaySfxHit +F8E3 UpdateNoiseSfx +F8F7 DecrementSfxCounter +F905 DecrementSfxCounter_Loop +F906 DispatchSfxByBit +F90F DispatchSfxByBit_Loop +F91F DispatchSfxByBit_Loop2 +F92F PlaySfxCrowd +F943 StopSfxCrowd +F946 PlaySfxBounce +F958 StopSfxBounce +F95B PlaySfxNet +F96F StopSfxNet +F972 PlaySfxCheer +F993 PlaySfxPoint +F9A5 PlaySfxServe +F9C6 DispatchSfxByBitB +F9E5 DecrementSfxCounterB +F9EE DecrementSfxCounterB_Loop +F9EF PlaySfxWhistleB +FA10 PlaySfxBallBounce +FA22 SetCrowdNoiseVolume +FA43 DispatchSfxByBitC +FA5C DecrementSfxCounterC +FA65 DecrementSfxCounterC_Loop +FA66 SetCrowdNoiseVolumeB +FA89 SetCrowdNoiseVolumeC +FAC4 UpdateCrowdNoisePattern +FACB PlayCrowdNoiseStep +FAF2 PlayCrowdNoiseStep_Loop +FAF3 UpdateCrowdSound +FAFF RunSoundSequence +FB08 StartSoundSequence +FB18 StartSoundSequence_OnNonzero +FB1F LoadSoundSequenceNote +FB56 RunSoundSequenceStep +FB5B ReadSoundSequenceByte +FB84 StopSoundSequence +FB8E StopSoundSequence_Loop +FBA4 PlaySequenceNote +FBBB PlaySequenceNote_Loop +FBBE SetPulse2ForSequence +FBC9 SetPulse2ForSequence_Loop +FBCE UpdateSequencePulse2 +FBE2 UpdateSequencePulse2_Loop +FBE8 UpdateSequencePulse2_Loop2 +FBF4 UpdateSequenceNote +FBF9 UpdateSequenceNote_Loop +FC03 UpdateSequencePulse1 +FC10 UpdateSequencePulse1_Loop +FC12 UpdateSequencePulse1_Loop2 +FC17 StoreSequencePulse1 +FC1C UpdateSequenceTriangle +FC3A UpdateSequenceTriangle_Loop +FC45 UpdateSequenceNoise +FC6F UpdateSequenceNoise_Loop +FC75 SetNoiseForSequence +FC7E SetNoiseForSequence_Loop +FFF7 JumpToInitSoundEngine diff --git a/NROM/Volleyball (U)/routinemap_hand.tsv b/NROM/Volleyball (U)/routinemap_hand.tsv new file mode 100644 index 0000000..f9aa68c --- /dev/null +++ b/NROM/Volleyball (U)/routinemap_hand.tsv @@ -0,0 +1,734 @@ +# Volleyball (U) - Pass 2 name map +# + +8000 Reset +800B WaitForVblankStart +8010 WaitForVblankEnd +803E InitGameAndEnterMainLoop +8053 NmiHandler +805B NmiStartFrameWork +8064 NmiUpdateGame +811E NmiAnimateCrowd +8132 NmiUpdateIndicatorBoard +8139 NmiStartRendering +817A NmiSetOverlayFlags +8189 NmiRunSoundAndOverlay +8190 NmiUpdateCrowdSprites +819E NmiBuildOamBuffer +81B5 MainIdleLoop +81CC NmiIgnoreAndReturn +81FF FlushVramUpdateScript +8210 RunVramUpdateScript +8223 RunVramUpdateRun +822E WriteVramRunByte +823A VramUpdateScriptComplete +8245 AdvanceVramScriptPointer +8269 ReadBothControllersOld +8277 ReadBothControllersLegacy +829D ShiftControllerBits +82AC ReadPlayerController +82C2 ShiftPlayerControllerBits +82F5 CopyOamBufferToPpu +8315 UpdateScrollAndNametable +8335 InitPpuForPowerOn +8378 ClearScreensForNewGame +8397 ClearNametableAndOamFlag +839E ClearNametable0 +83D3 ClearOamPendingFlag +83D8 BuildPlayerSpriteEntries +8424 WriteAttributeUpdateScript +8440 WriteAttributeScriptBytes +845D ClearGameRam +848F LoadSpriteTableTeamA +849F LoadSpriteTableTeamB +84AF LoadSpriteTableTeamC +84BF LoadSpriteTableTeamD +84CF LoadSpriteTableTeamE +84DF UploadOamShadowToPpu +85B1 DispatchGameState +85F7 DecrementStateTimer +8600 AdvanceSubState +8603 AdvanceGameState +860A SetGameState +8611 StateTitleScreenInit +8630 TitleInit_ClearGameState +8666 TitleInit_QueueIntroScript +8675 TitleInit_LoadSprites +867B TitleInit_SetWaitTimer +8686 TitleInit_WaitTimer +8689 TitleInit_StartMatchSetup +869B TitleInit_AttractLoop +871A TitleInit_SelectSlotTwo +8729 TitleInit_SetNumberTile +873E TitleInit_SwitchToDemoState +8743 StateTitleScreen +8753 Title_WaitForStartPress +8759 Title_StartDemoCountdown +87CB TitleInit_SetNumberTileB +87EF TitleInit_DrawNumberEven +880D TitleInit_DrawNumberOdd +8819 TitleInit_GoToModeSelect +8821 StateModeSelect +8843 StateModeSelectToMatch +887D StateCourtSetup +8913 CourtSetup_StartWhistle +8933 CourtSetup_UpdateFrame +894E CourtSetup_GoToNextState +8951 StateRally +89B2 Rally_ResetForPoint +89C3 Rally_SkipFrame +89C9 Rally_SetServeFlag +89D3 Rally_CountdownToServe +89E6 Rally_UpdatePlayers +8A14 Rally_EndPoint +8A1A Rally_ClearServeFlags +8A34 Rally_DrawAndWait +8A3A Rally_ResumeAfterWhistle +8A44 Rally_CheckPointEnd +8A6C Rally_FrameDone +8A72 Rally_ClearServeFlag2 +8A78 Rally_ClearOverFlag +8A82 Rally_ClearTeamScores +8AD2 Rally_UpdateTeamFlags +8B04 Rally_FrameDone2 +8B0A Rally_SetWhistleFlag +8B1F Rally_GoToNextState +8B22 Rally_RestartDemo +8B47 StateNewPoint +8B81 NewPoint_ResetStructs +8B92 NewPoint_FrameDone +8B98 NewPoint_ResetScore +8BAF NewPoint_ClearBall +8BC7 NewPoint_FrameDone2 +8BCD NewPoint_ShowScore +8BE9 NewPoint_FrameDone3 +8BEF NewPoint_MoveBall +8C0B Rally_UpdateTeamsAndDraw +8C17 GetTeamPlayerOffset +8C63 SetNumberAndDraw +8C7F SetStateAndAdvance +8C85 SetStateFive +8C8A StateTeamSelection +8CAF TeamSelect_Start +8CBD TeamSelect_CountTeams +8CD4 TeamSelect_NextTeam +8CDD TeamSelect_CheckTeam +8CEC TeamSelect_ConfirmTeam +8D07 ServeSet_BallPosition +8D1F ServeSet_CheckDmc +8D38 ServeSet_SetTimer +8D46 ServeSet_WaitForServe +8D55 ServeSet_StopSounds +8D62 ServeSet_GoToNextState +8D65 StateServeSetup +8DDD ServeSet_ClearPlayerInput +8DEA ServeSet_FrameDone +8DFA AdvanceSubStateShared +8E09 StateAttractDemo +8E4D StateMatchResults +8E87 Results_Start +8E99 Results_FrameDone +8E9F Results_ResetStructs +8EDC Results_FrameDone2 +8EE2 Results_MoveBall +8EFE Results_UpdateTeams +8F0A GetTeamPlayerOffsetB +8F59 ShiftTeamOffset +8F69 SetNumberAndDrawB +8F85 SetStateAndAdvanceB +8F8B SetStateFiveB +8F90 ReadCommandStreamByte +8FBE DecodeCommandStream +8FDF RunCommandStream +9001 InitMatchStructs +903E UpdateMatchStructs +908E DrawMatchFrame +90C0 InitMatchPlayers +90D9 UpdatePlayerInput +9106 SetPlayerCount +9112 UpdatePlayerControl +912B CompareScores +914D CompareScoresB +9153 UpdatePlayerAction +9173 CompareScoresC +9195 CompareScoresD +919B ClearPlayerAction +91B6 GetNumberOffset +91C5 DrawScoreDigits +921A DrawScoreNumber +9262 LoadTeamSprites +92B5 ReadTeamSpriteData +92B9 LoadTeamSpritePair +92D0 QueueTitleScript +931E InitPlayerStructs +934E InitScoreStructs +9397 LoadTeamNumberTable +93F5 InitTeamPlayerStruct +9426 InitRallyStructs +9456 DrawRallyFrame +9480 UpdateBallFrame +9492 BallFrameDone +94A1 UpdateBallMovement +94FE UpdateBallAnimation +955B BallRoutineEnd +955C GetBallNumberIndex +958C TeamPlayerMove0 +95C3 TeamPlayerMove0End +95DD TeamPlayerMove1 +9624 TeamPlayerMove1Start +965B TeamPlayerMove1End +9675 TeamPlayerMove2 +96AC TeamPlayerMove2End +96C6 TeamPlayerMove3 +970D TeamPlayerMove4 +9754 TeamPlayerMove5 +979B CheckBallInPlay +97C5 BallBounceOnFloor +97DF BallSetDirection +97F4 BallStoreSpriteFlags +97F8 BallFrameDone0 +97F9 CheckBallLanded +9823 BallComputeSpriteAttr +9856 BallStoreFlagsB +985B BallComputeAttrB +987D BallStoreFlagsC +9882 BallComputeAttrC +98AF BallSetAnimFlags +98C4 BallStoreFlagsD +98C9 BallUpdateTeamA +9933 BallSetTeamAFlags +994A BallStoreTeamAFlags +9967 BallStoreTeamAFlagsB +9983 BallStoreTeamAFlagsC +9988 BallUpdateTeamB +99F2 BallSetTeamBFlags +9A09 BallStoreTeamBFlags +9A26 BallStoreTeamBFlagsB +9A47 BallSetTeamBFlagsC +9A5C BallStoreTeamBFlagsD +9A61 BallUpdateTeamC +9ABF BallSetTeamCFlags +9AD6 BallStoreTeamCFlags +9AF3 BallStoreTeamCFlagsB +9B0F BallStoreTeamCFlagsC +9B14 BallUpdateTeamD +9B6F BallSetTeamDFlags +9B86 BallStoreTeamDFlags +9B9D BallStoreTeamDFlagsB +9BB9 BallStoreTeamDFlagsC +9BBE BallUpdateTeamE +9C25 BallSetTeamEFlags +9C4E BallStoreTeamEFlags +9C66 BallStoreTeamEFlagsB +9C6D BallSetTeamEFlagsC +9C7A BallStoreTeamEFlagsD +9C81 BallSetCommonFlags +9C92 BallStoreCommonFlags +9C97 BallSetCommonFlagsB +9CAE BallStoreCommonFlagsB +9CB3 BallUpdateTeamF +9CE2 CheckBallAboveScreen +9D29 BallMoveUp +9D46 BallSetFlagsE +9D5D BallStoreFlagsE +9D7A BallStoreFlagsE2 +9D96 BallStoreFlagsE3 +9D9B BallUpdateAnimation +9DC9 BallStoreAnimFlags +9DCB BallClearNumber +9DD0 BallUpdateAnimationB +9DF7 BallClearNumberB +9DFC BallResetForTeam +9E18 BallCheckFloor +9E41 BallStoreFlagsF +9E45 BallFrameDone2 +9E46 BallResetForTeamB +9E62 BallComputeSpeed +9E94 BallStoreFlagsG +9E98 BallCheckSpin +9EAB BallStoreFlagsH +9EB0 BallUpdateBallSpeed +9EDB BallSetBallSpeed +9EF7 BallStoreBallSpeed +9EFA BallSubtractSpeed +9F0E BallStoreSpeed +9F11 BallComputeNoteIndex +9F2D BallComputeNoteIndexB +9F52 BallComputeNoteIndexC +9F77 BallComputeNoteIndexD +9F9C BallGetTeamSlot +9FCE BallUpdateTeamG +A005 TeamSpriteUpdate0End +A01F TeamSpriteUpdate0 +A066 TeamSpriteUpdate1 +A09D TeamSpriteUpdate1End +A0B7 TeamSpriteUpdate2 +A0EE TeamSpriteUpdate2End +A108 TeamSpriteUpdate3 +A14F TeamSpriteUpdate4 +A196 TeamSpriteUpdate5 +A1DD TeamCheckFloorA +A205 TeamSetAttrA +A21F TeamSetAttrB +A234 TeamStoreAttr +A239 TeamCheckFloorB +A261 TeamSetAttrC +A294 TeamStoreAttrB +A299 TeamResetFlagsA +A2BB TeamStoreAttrC +A2C0 TeamResetFlagsB +A2ED TeamSetFlagsC +A302 TeamStoreAttrD +A307 BallUpdateTeamH +A371 BallSetTeamHFlags +A388 BallStoreTeamHFlags +A3A5 BallStoreTeamHFlagsB +A3C1 BallStoreTeamHFlagsC +A3C6 BallUpdateTeamI +A430 BallSetTeamIFlags +A447 BallStoreTeamIFlags +A464 BallStoreTeamIFlagsB +A485 BallSetTeamJFlags +A49A BallStoreTeamJFlags +A49F BallUpdateTeamJ +A4FD BallSetTeamKFlags +A514 BallStoreTeamKFlags +A531 BallStoreTeamKFlagsB +A54D BallStoreTeamKFlagsC +A552 BallUpdateTeamL +A5AD BallSetTeamLFlags +A5C4 BallStoreTeamLFlags +A5DB BallStoreTeamLFlagsB +A5F7 BallStoreTeamLFlagsC +A5FC BallUpdateTeamM +A663 BallSetTeamMFlags +A68C BallStoreTeamMFlags +A6A4 BallStoreTeamMFlagsB +A6AB BallSetTeamMFlagsC +A6B8 BallStoreTeamMFlagsC +A6BF BallSetCommonFlagsC +A6D0 BallStoreCommonFlagsC +A6D5 BallSetCommonFlagsD +A6EC BallStoreCommonFlagsD +A6F1 BallUpdateTeamN +A724 BallUpdateTeamN2 +A78C BallSetTeamNFlags +A7A3 BallStoreTeamNFlags +A7C0 BallStoreTeamNFlagsB +A7DC BallStoreTeamNFlagsC +A7E1 BallUpdateAnimationC +A80F BallStoreAnimFlagsC +A811 BallClearNumberC +A816 BallUpdateAnimationD +A83D BallClearNumberD +A842 BallResetForTeamC +A85C BallCheckFloorC +A885 BallStoreFlagsI +A88A BallResetForTeamD +A8A4 BallComputeSpeedD +A8D6 BallStoreFlagsJ +A8ED BallStoreFlagsJ2 +A8F2 BallUpdateBallSpeedB +A91D BallSetBallSpeedB +A939 BallStoreBallSpeedB +A93C BallSubtractSpeedB +A950 BallStoreSpeedB +A953 BallCheckFloorD +A972 BallSetPosition +A9D5 BallSetFlagsK +A9E1 BallSetSpeed +A9E6 BallAdvancePosition +AA1B BallSetFlagsL +AA24 BallStartSound +AA6D BallCheckTeam +AAA5 BallFinishHit +AAAE BallStartSoundB +AAEB BallDecreaseNumber +AAF0 BallStoreNumber +AB00 BallSelectTeamSlot +AB13 BallHandlePlayerButton +AB4B BallStorePlayerState +AB6F BallStorePlayerStateB +ABCE BallFrameDone3 +ABCF BallHandlePlayerButtonB +AC07 BallStorePlayerStateC +AC2B BallStorePlayerStateD +AC8A BallFrameDone4 +AC8B BallSelectSlot +AC8D BallSlotOffset +AD0F BallStoreTeamNumber +AD5E BallStoreTeamNumberB +AD66 BallNextPlayerSlot +AD91 BallFinishPlayerUpdate +ADA4 BallNextPlayerSlotB +ADAB BallSavePlayerSlot +ADE7 BallPlayerMoveStart +AE20 BallPlayerMoveMiddle +AE47 BallPlayerMoveEnd +AE61 BallPlayerMoveStartB +AED9 BallPlayerMoveStartC +AF12 BallPlayerMoveMiddleB +AF23 BallPlayerMoveEndB +AF30 BallPlayerMoveEndH +AF48 BallSelectSlotB +AF4A BallSlotOffsetB +AFB7 BallNextPlayerSlotC +AFE2 BallFinishPlayerUpdateB +AFF1 BallNextPlayerSlotD +AFF8 BallSavePlayerSlotB +B032 BallPlayerMoveStartD +B06B BallPlayerMoveMiddleC +B089 BallPlayerMoveEndC +B0CE BallStoreTeamNumberC +B0D0 BallStoreTeamNumberD +B0DD BallHandlePlayerButtonC +B176 BallStorePlayerStateE +B1BC BallStorePlayerStateF +B1C2 BallPlayerMoveMiddleD +B1F5 BallStorePlayerStateG +B1FB BallCheckPlayerFacing +B223 BallPlayHitSound +B230 BallRestorePlayerSlot +B234 BallClearBall +B239 BallSelectSlotC +B23B BallSlotOffsetC +B348 BallStorePlayerStateH +B38E BallStorePlayerStateI +B397 BallPlayerMoveMiddleE +B3CA BallStorePlayerStateJ +B3D0 BallCheckPlayerFacingB +B3F8 BallHandlePlayerButtonD +B443 BallStorePlayerStateK +B47C BallStorePlayerStateL +B49F BallRestorePlayerSlotB +B4A7 BallNextPlayerSlotE +B4D8 BallFinishPlayerUpdateC +B4E7 BallNextPlayerSlotF +B4EE BallRestorePlayerSlotC +B4F5 BallCheckHitType +B550 BallCheckHitTypeB +B568 BallSetBallNumber +B5A7 BallStoreBallNumber +B5BD BallGetNoteIndex +B5DB BallSetNumberState +B5F7 BallStoreNumberStateB +B60F BallStoreNumberStateC +B612 BallCheckNumberState +B62E BallStoreNumberStateD +B646 BallStoreNumberStateE +B666 BallStartHitSound +B669 BallStoreNumberStateF +B6A1 BallFinishPlayerUpdateD +B6B1 BallFrameDone5 +B6C4 BallSelectSlotD +B6C6 BallSlotOffsetD +B748 BallStoreTeamNumberE +B79A BallStoreTeamNumberF +B7A2 BallNextPlayerSlotG +B7CD BallFinishPlayerUpdateE +B7E0 BallNextPlayerSlotH +B7E9 BallSavePlayerSlotC +B863 BallPlayerMoveStartE +B89C BallPlayerMoveMiddleF +B8AD BallPlayerMoveEndD +B8BA BallPlayerMoveEndE +B8D2 BallSavePlayerSlotD +B90E BallPlayerMoveStartF +B947 BallPlayerMoveMiddleG +B96E BallPlayerMoveEndF +B988 BallSelectSlotE +B98A BallSlotOffsetE +B9F7 BallNextPlayerSlotI +BA22 BallFinishPlayerUpdateF +BA31 BallNextPlayerSlotJ +BA3A BallSavePlayerSlotE +BA74 BallPlayerMoveStartG +BAAD BallPlayerMoveMiddleH +BACB BallPlayerMoveEndG +BB10 BallStoreTeamNumberG +BB12 BallStoreTeamNumberH +BB1F BallHandlePlayerButtonE +BBB8 BallStorePlayerStateM +BBFE BallStorePlayerStateN +BC07 BallPlayerMoveMiddleI +BC3A BallStorePlayerStateO +BC40 BallCheckPlayerFacingC +BC68 BallPlayHitSoundB +BC75 BallRestorePlayerSlotD +BC79 BallClearBallB +BC7E BallSelectSlotF +BC80 BallSlotOffsetF +BD8D BallStorePlayerStateP +BDD3 BallStorePlayerStateQ +BDDC BallPlayerMoveMiddleJ +BE0F BallStorePlayerStateR +BE15 BallCheckPlayerFacingD +BE3D BallHandlePlayerButtonF +BE88 BallStorePlayerStateS +BEC1 BallStorePlayerStateT +BEE4 BallRestorePlayerSlotE +BEEC BallNextPlayerSlotK +BF1D BallFinishPlayerUpdateG +BF2F BallWaitFrames +BF3C BallNextPlayerSlotL +BF45 BallRestorePlayerSlotF +BF4C BallCheckHitTypeC +BFA7 BallCheckHitTypeD +BFBF BallSetBallNumberB +BFFE BallStoreBallNumberB +C014 BallGetNoteIndexB +C032 BallSetNumberStateB +C04E BallStoreNumberStateG +C066 BallStoreNumberStateH +C069 BallCheckNumberStateB +C085 BallStoreNumberStateI +C09D BallStoreNumberStateJ +C0BF BallStartHitSoundB +C0C2 BallStoreNumberStateK +C0FA BallFinishPlayerUpdateH +C10A BallFrameDone6 +C115 UpdateBallX +C167 UpdateBallY +C1B9 UpdateBallFrameCounter +C1D5 AdvanceBallFrame +C1E6 InitBallAnimations +C1EA BallAnimationIndex +C215 UpdateBallAnimationTable +C226 BallStoreAnimation +C24E BallAnimationStoreValue +C26C BallAnimationStoreValueB +C283 BallAnimationStoreValueC +C292 BallAnimationCheckScroll +C2A6 DrawPlayers +C2F8 LoadTeamSpriteOffsets +C36D DrawCourt +C371 DrawCourtFrame +C386 GetTileIndex +C3EF DrawTeamFlags +C41D ReadTileListByte +C43F ShiftTileList +C4A9 DrawIndicatorBoard +C4D9 ShiftDrawPointer +C4FD GetDrawX +C522 StoreDrawX +C54F StoreDrawTile +C556 DrawNumberSprite +C568 DrawNumberSpriteB +C56C DrawNumberSpriteC +C58A DrawNumberSpriteD +C59B DrawNumberSpriteE +C5B4 DrawNumberSpriteF +C5D2 DrawNumberSpriteG +C5E9 StoreSpriteIndex +C5EF AnimateCrowd +C638 CrowdFrame0 +C650 CrowdFrame1 +C668 CrowdFrame2 +C680 CrowdFrame3 +C698 CrowdFrame4 +C6B0 CrowdSpriteFlag0 +C6C8 CrowdSpriteFlag1 +C6E0 CrowdSpriteFlag2 +C6F8 CrowdSpriteFlag3 +C710 CrowdSpriteFlag4 +C728 CrowdSpriteFlag5 +C740 CrowdSpriteFlag6 +C758 DrawScoreBoard +C786 StoreCrowdSprite +C78C CrowdSpriteLoopStart +C78E ReadCrowdSpriteByte +C7B1 GetCrowdSpriteY +C7CD DrawCrowdSpriteRow +C7D5 DrawTeamSelection +C7EE GetCrowdSpriteTile +C809 NegateValue +C814 SetCrowdFrameIndex +C833 GetCrowdSpriteX +C85C StoreCrowdSpriteX +C893 StoreTeamColorA +C8C6 DrawNationFlags +C8D1 DrawNationFlag0 +C8FD StoreTeamColorB +C904 DrawNumberSpriteH +C907 DrawNumberSpriteI +C936 DrawNumberSpriteJ +C938 StoreCrowdOffset +C93B CheckCrowdOffset +C955 DrawNumberSpriteK +C95E StoreCrowdTile +C983 DrawNumberSpriteL +C98D SetNumberIndex +C991 ShiftNumberBits +C9CE DrawNumberSpriteM +C9F1 DrawNumberSpriteN +CA16 GetFrameMod4 +CA20 SetNumberIndexB +CA24 ShiftNumberBitsB +CA67 DrawNumberSpriteO +CA96 DrawNumberSpriteP +CA9F DrawNumberSpriteQ +CAD0 DrawNumberSpriteR +CAE1 DrawNumberSpriteS +CB4A DrawNumberSpriteU +CB5B DrawNumberSpriteV +CB63 CheckTeamSpriteFlag +CB89 ClearTeamSpriteFlags +CB91 CheckTeamSpriteFlagB +CBB7 ClearNumberState +CBEF GetTileIndexB +CC37 ClearNumberStateB +CC6F GetTileIndexC +CCB7 DrawNumberSpriteZ +CCC6 GetTileIndexD +CD2E CheckTeamSpriteIndex +CD63 StoreTeamSpriteY +CD66 LoadTeamSpriteData +CD6C NextTeamSprite +CDB8 CheckAnimateFlag +CE2B StoreSpriteValue +CE2E NextSpriteRow +CE32 DrawNumberSpriteAA +CEA5 StoreSpriteValueB +CEA8 NextSpriteRowB +CEAE DrawNumberSpriteAB +CECF GetTileIndexE +CF1E GetSpriteTileAddress +CF7D SubtractFour +CF8A DrawNumberSpriteAC +CFAB GetTileIndexF +CFFA GetSpriteTileAddressB +D059 SubtractFourB +D06A DrawNumberSpriteAD +D093 DrawNumberSpriteAE +D0CC SetDrawFlags +D0DA StoreSpriteFlag +D0DD ClearDrawFlags +D0EE SetDrawFlagsB +D0FB AnimateAudience +D135 SetPpuAddress2059 +D148 GetTableIndex +D15A GetTableIndexB +D17D WriteTwoTileBytes +D1A6 WriteTileBytes +D1B4 AnimateAudienceB +D1EE SetPpuAddress205A +D201 GetTableIndexC +D213 GetTableIndexD +D236 WriteTwoTileBytesB +D25F AnimateAudienceC +D285 SetAnimateState +D303 AnimateAudienceD +D32D SetAnimateStateB +D3AB AnimateAudienceE +D406 NextAnimateStep +D408 NextAnimateStepB +D40A NextAnimateStepC +D40C ReadAnimateTable +D44F WriteAnimateByte +D457 AnimateAudienceF +D486 CheckAnimateChar +D50B WriteAnimateByteB +D513 DrawScoreDigitsAt +D54B WriteEightDigits +D564 WriteOneDigit +D56C ClearDigit +D5CB UpdateIndicatorBoardBits +D622 SetPpuAddressFromZp +D682 CheckIndicatorFlag +D6BA SetIndicatorStep1 +D6CA SetIndicatorStep2 +D6DA SetIndicatorStep3 +D6E2 CheckIndicatorCount +D71A SetIndicatorPointerA +D744 StoreIndicatorValue +D795 ClearIndicatorFlag +D799 UpdateIndicatorBoardDone +D79A CheckIndicatorPage +D7D2 SetIndicatorPointerB +D800 StoreIndicatorValueB +D851 ClearIndicatorFlagB +D855 UpdateIndicatorBoardDoneB +D856 DrawPlayersAndCrowd +D8B7 CheckIndicatorFrame +D8D6 SetIndicatorDelay +D8DF ResetTeamPositions +D8E9 GetTileIndexG +D8FD ResetTeamPositionsB +D905 SetTeamPositionsB +D90F GetTileIndexH +D92F SetTeamScores +D948 SetTeamScoresB +D965 UpdateTeamPlayerPositions +D96B GetTileIndexI +D9B1 NextPlayerPosition +D9BB UpdateTeamPlayerPositionsB +D9C1 GetTileIndexJ +DA07 UpdateTeamPlayerPositionsC +DA15 InitPlayerPositionLoop +DA1F GetTileIndexK +DA41 InitPlayerPositionLoopB +DA4B GetTileIndexL +DA71 InitPlayerPositionLoopC +DA77 GetTileIndexM +DA99 NextPlayerPositionB +DAA3 InitPlayerPositionLoopD +DAA9 GetTileIndexN +DACB CheckPlayerPositionCount +DB39 LoadBackgroundTilemap +DB4F SetBackgroundTileRow +DB51 WriteBackgroundTile +DB6E SetAttributeRow +DB70 WriteAttributeTile +DBA2 QueueScreenUpdate +DC4E StopAllSounds +F800 InitSoundEngine +F83F SetPulse1Envelope +F846 SetPulse2Envelope +F850 PlayPulse1Note +F867 PlayPulse2Note +F86B PlayTriangleNote +F86F NoteToPeriodIndex +F875 GetNoisePeriodIndex +F89F PlaySfxWhistle +F8C5 StartSfxEnvelope +F8CF PlaySfxHit +F8E3 UpdateNoiseSfx +F8F7 DecrementSfxCounter +F906 DispatchSfxByBit +F92F PlaySfxCrowd +F943 StopSfxCrowd +F946 PlaySfxBounce +F958 StopSfxBounce +F95B PlaySfxNet +F96F StopSfxNet +F972 PlaySfxCheer +F993 PlaySfxPoint +F9A5 PlaySfxServe +F9C6 DispatchSfxByBitB +F9E5 DecrementSfxCounterB +F9EF PlaySfxWhistleB +FA10 PlaySfxBallBounce +FA22 SetCrowdNoiseVolume +FA43 DispatchSfxByBitC +FA5C DecrementSfxCounterC +FA66 SetCrowdNoiseVolumeB +FA89 SetCrowdNoiseVolumeC +FAC4 UpdateCrowdNoisePattern +FACB PlayCrowdNoiseStep +FAF3 UpdateCrowdSound +FAFF RunSoundSequence +FB08 StartSoundSequence +FB1F LoadSoundSequenceNote +FB56 RunSoundSequenceStep +FB5B ReadSoundSequenceByte +FB84 StopSoundSequence +FBA4 PlaySequenceNote +FBBE SetPulse2ForSequence +FBCE UpdateSequencePulse2 +FBF4 UpdateSequenceNote +FC03 UpdateSequencePulse1 +FC17 StoreSequencePulse1 +FC1C UpdateSequenceTriangle +FC45 UpdateSequenceNoise +FC75 SetNoiseForSequence +FFF7 JumpToInitSoundEngine diff --git a/_wip/NROM/Golf (JU)/symbols.inc b/NROM/Volleyball (U)/symbols.inc similarity index 100% rename from _wip/NROM/Golf (JU)/symbols.inc rename to NROM/Volleyball (U)/symbols.inc diff --git a/NROM/Volleyball (U)/volleyball_mesen.cdl b/NROM/Volleyball (U)/volleyball_mesen.cdl new file mode 100644 index 0000000..de32f88 Binary files /dev/null and b/NROM/Volleyball (U)/volleyball_mesen.cdl differ diff --git a/NROM/Xevious (U)/README.md b/NROM/Xevious (U)/README.md index 289f5ea..a498ef2 100644 --- a/NROM/Xevious (U)/README.md +++ b/NROM/Xevious (U)/README.md @@ -2,11 +2,14 @@ ## Status -**Pass 3 complete.** All routine entry points (jsr/jmp targets) have semantic -names, and all raw `$XXXX` call operands in `jsr`/`jmp` instructions have been -replaced with label references (except 7 targets outside code range, kept as -raw addresses). Major data tables and zero-page aliases have been named. The -project builds and verifies byte-identical to the original ROM. +**Pass 3 complete, with a Pass 1 correction applied on 2026-10-21.** The +original static-trace split missed 1,158 bytes of code reached through +computed dispatch; the Mesen CDL capture `xevious_mesen.cdl` (present in +this folder) was applied with `_tools/cdl_reclass.py`, which re-split the +file (1,158 data→code, 48 code→data). The 45 entry points that the +correction recovered now carry `Sub_XXXX` names, so there is no +`Label_XXXX` residue. Six raw `$XXXX` call operands remain, all inside +regions the CDL never observed (listed under **Pass 1 notes**). `make` assembles `header.s`, `prg.s`, `chr.s`, links them with `ld65` and compares the result against `rom.nes`: @@ -20,10 +23,10 @@ Byte-identical ROM verified. | Metric | Value | |--------|-------| | PRG size | 32768 bytes (32 KB) at $8000-$FFFF | -| Code | 11321 bytes (34.5%) | -| Data | 21447 bytes (65.5%) | -| Instructions | 5513 | -| Routines/labels | 795 | +| Code | 12455 bytes (38.0%) | +| Data | 20313 bytes (62.0%) | +| Instructions | 6002 | +| Label definitions | 868 (624 `Sub_XXXX` internal) | | Zero-page aliases | 156 (in `locals.inc`) | | Indirect dispatches | `jmp ($fe)` at $BA88 (table $BA8B, 16 entries), `jmp ($4)` at $CA07 (table $CA0A, 64 entries) | @@ -31,9 +34,9 @@ Byte-identical ROM verified. | Metric | Value | |--------|-------| -| `Label_XXXX` names replaced | 781 labels → unique names | -| Raw `$XXXX` jsr/jmp operands replaced | 466 → label references | -| Remaining raw `$XXXX` jsr/jmp | 7 (targets outside code range) | +| `Label_XXXX` names replaced | 781 at Pass 2 + 45 recovered by the CDL re-split | +| Raw `$XXXX` jsr/jmp operands replaced | 466 at Pass 2; every re-split operand on an instruction boundary now uses a label | +| Remaining raw `$XXXX` jsr/jmp | 6 (inside CDL-silent misdecoded regions — see Pass 1 notes) | | Semantic zero-page aliases | ~20 (in `locals.inc`) | ### Pass 3 results @@ -41,17 +44,87 @@ Byte-identical ROM verified. | Metric | Value | |--------|-------| | Semantic entry-point names | 143 (Reset, NmiHandler, IrqHandler, InputRead, ObjInitCall, ObjMoveCall, ObjDrawCall, ObjUpdateCall, SetOamPtrs, WaitVblank, GameModeDispatch, ObjSpriteSetup, ObjCommonUpdate, etc.) | -| Internal branch labels | ~574 (`Sub_XXXX` address-based, local to routines) | -| Named data tables | PatternData, SpriteAttrTable, JumpTable4, ResetVarTable | +| Internal branch labels | 624 (`Sub_XXXX` address-based, local to routines) | +| Named data tables | 32 (see the inventory below) | | Semantic zero-page aliases | ~20 (PPUCTRLShadow, ObjectX, ObjectY, ObjPtr, GameMode, Joypad1Cur, etc.) | +### Data table inventory + +| Address | Size | Name | What it is | +|---------|------|------|------------| +| $8000–$A2BF | 8896 B | `PatternData` | Tile/sprite pattern data | +| $A6CE–$A6D6 | 9 B | `Data_A6CE` | Undetermined bytes before the VRAM copy loop at $A6D7 | +| $A74B–$A768 | 30 B | `VramWritePtrTable` | 15 × 16-bit pointers to the VRAM write descriptors below (read by `lda $A74B,x` at $A6E1) | +| $A769–$A8D4 | 364 B | `VramWriteData` | VRAM write descriptors `[lo, hi, count, data…]`; written to $2006/$2007 by the routine at $A6DE | +| $A8D5–$A8F4 | 32 B | `DataStreamPtrTable` | 16 × 16-bit pointers to the streams at $ACFB–$B8AA (read by `lda $A8D5,x` at $F3E4); first byte of each stream is a count loaded into Zp12 | +| $A8F5–$A9BA | 198 B | `ObjTilePtrTable` | 99 × 16-bit pointers to the tile data at $A9BB–$ACFA (read by `lda $A8F5,y` at $C353, stored per object at $050A/$050B) | +| $A9BB–$ACFA | 832 B | `ObjTileData` | Tile/attribute data addressed by `ObjTilePtrTable` | +| $ACFB–$B8AA | 2992 B | `DataStreamData` | Data streams addressed by `DataStreamPtrTable` | +| $BA8B–$BAAA | 32 B | `IndDispatchFeTable` | 16-entry indirect jump table for `jmp ($fe)` | +| $BB55–$BEFA | 934 B | `SpriteAttrTable` | Sprite object attribute table (+ copyright text) | +| $C09E–$C1FD | 352 B | `ObjParamTable` | Enemy/object parameter table (byte pairs) | +| $C28F–$C304 | 118 B | `ObjInitDirTable` | Object initial direction/speed table | +| $CA0A–$CA61 | 88 B | `JumpTable4` | 64-entry indirect jump table for `jmp ($4)` | +| $CD37–$CD44 | 14 B | `OamSlotTable` | OAM sprite slot/index table | +| $D215–$D249 | 53 B | `ObjSubPtrTable` | Object subroutine pointer table | +| $D654–$D6F8 | 165 B | `ObjMoveDeltaTable` | Object movement delta table | +| $D833–$D83A | 8 B | `ObjDataPtrTable` | 4 × 16-bit pointers to the layout records at $D840/$D84A/$D864/$D882 | +| $D83B–$D8DF | 165 B | `ObjLayoutData` | Object layout records addressed by `ObjDataPtrTable` | +| $DF78–$DFA1 | 42 B | `ObjPtrTable` | Object/enemy routine pointer table | +| $ED7C–$EE27 | 172 B | `EnemyPtrTable` | Enemy routine pointer table ($F0xx–$F1xx) | +| $EF3B–$EFC5 | 139 B | `SpriteLayoutData2` | 4-byte sprite layout records (x offset, y offset, tile, attribute) | +| $F0E8–$F1D9 | 242 B | `EnemySpawnTable` | Enemy spawn parameter table (4-byte entries) | +| $F53C–$F55B | 32 B | `AttrAddrTable` | 16 × 16-bit PPU attribute-table addresses ($23C0–$23F8, $2BC0–$2BF8) | +| $F5D8–$F61C | 69 B | `TextTileData` | Text as font tile indices ($0A = `A`, $24 = space) with $FE/$FF control codes; decodes to PLAYER, GAME OVER, READY, SOLVALOU, LEFT, PAUSE | +| $F89E–$F8BD | 32 B | `HandlerPtrTable` | 16 handler pointers called by pha/pha/rts (each stored value is target−1) | +| $F957–$F976 | 32 B | `ObjSpeedTable` | Speed bytes read by `lda $F956,y` at $F7CC (1-based index) | +| $F977–$F996 | 32 B | `ObjSpeedTable2` | Speed bytes subtracted by `sbc $F976,y` at $F7C5 | +| $F997–$F9BC | 38 B | `SpriteLayoutPtrTable` | 19 × 16-bit pointers to the records at $F9BD–$FAF5 | +| $F9BD–$FAF5 | 313 B | `SpriteLayoutData` | 4-byte sprite layout records (x offset, y offset, tile, attribute) | +| $FC19–$FC4D | 53 B | `ResetVarTable` | Reset variable table | +| $FE02–$FE09 | 8 B | `OamIndexTable` | OAM sprite index table | +| $FEE6–$FF05 | 32 B | `PaletteData` | 32 bytes of palette data copied to PPUDATA and the $0280 mirror | +| $FF06–$FF1C | 23 B | `OamAttrTable` | OAM attribute bytes read by `lda $FF06,y` at $FCAD/$FCC2 | + +Many smaller data blocks remain unnamed; they are left as classified `.byte` blocks per the no-guessy-rewrites convention. + ### Pass 1 notes +- The committed Pass 1 split was produced by a static trace and never used + the Mesen CDL in this folder. `_tools/cdl_reclass.py` was run against + `xevious_mesen.cdl` on 2026-10-21: 1,158 bytes reclassified data→code, + 48 code→data, 42 labels emitted, and 3 branch targets resolved to new + labels. The recovery is what makes the $A74B–$B8AA and $F9xx tables + readable: before it, $A6D7 (a VRAM copy loop) and $F8BD–$F915 (handler + entries) sat inside `.byte` blocks. +- The pointer table at $D833 is 4 entries and starts at the byte the + tracer had decoded as `rti` at $D833; `lda $D833,y` / `lda $D834,y` at + $D7E3/$D7E8 read it high/low. The former `ObjCodePtrTable` label at + $D834 was one byte late and has been replaced by `ObjDataPtrTable` at + $D833. - Two computed-dispatch mechanisms were recovered via declared jump tables: - `jmp ($fe)` at $BA88 indexes a 16-entry table at $BA8B (targets in $BAAB–$BB20 range) - `jmp ($4)` at $CA07 indexes a 64-entry table at $CA0A (targets mostly in $CA–$CB and $C0–$C3 ranges) - One branch at $E40A targets $E3B5, which falls inside the operand of `jsr $CF2F` at $E3B3. Emitted as `.byte` with an explanatory comment since the target cannot be a label. -- Six addresses contain undocumented/illegal opcodes not decoded by the tracer: $9848, $A2C3, $CD89, $E0FF, $E3B5, $F230. + +### Pass 1 residue (CDL-silent, left as found) + +The CDL has no opinion about these addresses (they were never fetched), so +the re-split could not settle them. They are the only remaining +inconsistencies and are documented rather than guessed at. + +- Six raw `$XXXX` call operands have no instruction boundary at the target: + `jsr $08A9` at $C62D (`Sub_C626`), `jsr $01D7` at $D24B, + `jsr $F230` at $D61E (`Sub_D61B`), `jmp $CE04` at $DF63 + ($CE04 is two bytes into `bit $00A2` at $CE03), `jsr $21FF` at $EAA9 + and `jsr $E0FF` at $EAAD (both in `Sub_EA9F`). +- `Sub_C626`, `Sub_D61B`, `Sub_D63E`, `Sub_EA9F` and `$D24B` decode as + code but their bytes form tables (4-byte records, pointer-table tails). + They are the source of five of the six raw operands above. +- `$D617–$D628` and `$EA9F–$EAC0` are therefore still emitted as + instructions; their bytes read as data tables. +- Six addresses contain undocumented/illegal opcodes not decoded by the + tracer: $9848, $A2C3, $CD89, $E0FF, $E3B5, $F230. ## ROM @@ -79,18 +152,21 @@ Byte-identical ROM verified. ## Open work -- **Pass 1** - complete. Code/data split produced; build verifies byte-identical. -- **Pass 2** - complete. All `Label_XXXX` names replaced with unique names; all - raw `$XXXX` jsr/jmp operands replaced with label references (7 remain outside code range). -- **Pass 3** - complete. All 143 routine entry points have semantic names; - ~574 internal branch labels remain as `Sub_XXXX` address-based names; - ~20 zero-page aliases have semantic names; 4 data tables named. -- **Promotion** to `NROM//` once ready, as `git mv`. +- **Pass 1** - complete, and re-split from the Mesen CDL on 2026-10-21 + (see Pass 1 notes and residue above). +- **Pass 2** - complete. All `Label_XXXX` names are replaced and every + raw `jsr`/`jmp` operand that lands on an instruction boundary uses a + label. Six CDL-silent operands remain raw (listed above). +- **Pass 3** - complete. 143 routine entry points have semantic names; + 624 internal labels remain as `Sub_XXXX` address-based names; 32 data + tables are named (inventory above); smaller blocks remain classified + `.byte` per the no-guessy-rewrites convention. +- **Promotion** - done: promoted to `NROM/Xevious (U)` in commit `df11857`. ## Files | File | Purpose | -|--------|-------| +|--------|---------| | `prg.s` | Pass 3 disassembly (semantic entry-point names + Sub_XXXX branch labels) | | `header.s` | iNES header include | | `chr.s` | CHR include | @@ -101,3 +177,4 @@ Byte-identical ROM verified. | `symbols.inc` | NES hardware register names | | `locals.inc` | zero-page aliases (semantic names applied at Pass 2/3) | | `Makefile` | build and byte-identity check | +| `xevious_mesen.cdl` | Mesen Code Data Logger capture (CDLv2) used to correct the split | diff --git a/NROM/Xevious (U)/prg.s b/NROM/Xevious (U)/prg.s index e57fad8..390a341 100644 --- a/NROM/Xevious (U)/prg.s +++ b/NROM/Xevious (U)/prg.s @@ -602,13 +602,13 @@ PatternData: ; ----------------------------------------------------------------------------- Sub_A2C0: bit a:$002D ; CPU:$A2C0 PRG:22C0 2C 2D 00 -; ---- data $A2C3-$A522 (608 bytes) ---- ; referenced by `lda $A3F1,x` at $F214 (operand $A3F1 falls inside this region) ; referenced by `lda $A3F0,x` at $F218 (operand $A3F0 falls inside this region) ; referenced by `lda $A2E5,x` at $F453 (operand $A2E5 falls inside this region) ; referenced by `lda $A2E5,x` at $F481 (operand $A2E5 falls inside this region) ; referenced by `cmp $A3DC,x` at $F52E (operand $A3DC falls inside this region) ; referenced by `lda $A3DD,x` at $F538 (operand $A3DD falls inside this region) +; ---- data $A2C3-$A405 (323 bytes) ---- .byte $03, $03, $00, $2C, $2E, $2C, $2D, $2D, $01, $2C, $02, $01, $2C, $00, $00, $2D ; CPU:$A2C3 PRG:22C3 03 03 00 2C 2E 2C 2D 2D 01 2C 02 01 2C 00 00 2D .byte $2C, $2C, $2D, $2D, $2F, $2F, $2D, $2D, $2D, $2C, $2C, $2F, $2D, $2C, $2D, $2C ; CPU:$A2D3 PRG:22D3 2C 2C 2D 2D 2F 2F 2D 2D 2D 2C 2C 2F 2D 2C 2D 2C .byte $2D, $29, $02, $2C, $01, $2D, $2C, $2C, $2C, $00, $2D, $03, $2D, $2D, $2D, $2C ; CPU:$A2E3 PRG:22E3 2D 29 02 2C 01 2D 2C 2C 2C 00 2D 03 2D 2D 2D 2C @@ -629,24 +629,195 @@ Sub_A2C0: .byte $2C, $2C, $2F, $2D, $2D, $2D, $2C, $2D, $25, $35, $00, $64, $55, $97, $00, $C2 ; CPU:$A3D3 PRG:23D3 2C 2C 2F 2D 2D 2D 2C 2D 25 35 00 64 55 97 00 C2 .byte $55, $C6, $AA, $CE, $55, $E8, $AA, $F4, $FF, $F5, $55, $FF, $00, $05, $A4, $85 ; CPU:$A3E3 PRG:23E3 55 C6 AA CE 55 E8 AA F4 FF F5 55 FF 00 05 A4 85 .byte $A4, $53, $A4, $1A, $A5, $50, $A5, $6A, $A6, $59, $A6, $05, $A4, $85, $A4, $53 ; CPU:$A3F3 PRG:23F3 A4 53 A4 1A A5 50 A5 6A A6 59 A6 05 A4 85 A4 53 - .byte $A4, $22, $A5, $A0, $00, $A9, $3F, $99, $08, $02, $C8, $A9, $00, $99, $08, $02 ; CPU:$A403 PRG:2403 A4 22 A5 A0 00 A9 3F 99 08 02 C8 A9 00 99 08 02 - .byte $C8, $A9, $14, $99, $08, $02, $C8, $A2, $00, $BD, $AC, $A7, $99, $08, $02, $C8 ; CPU:$A413 PRG:2413 C8 A9 14 99 08 02 C8 A2 00 BD AC A7 99 08 02 C8 - .byte $E8, $E0, $14, $D0, $F4, $A9, $00, $99, $08, $02, $84, $1A, $A9, $06, $85, $01 ; CPU:$A423 PRG:2423 E8 E0 14 D0 F4 A9 00 99 08 02 84 1A A9 06 85 01 - .byte $8D, $01, $20, $E6, $42, $A5, $3C, $29, $01, $F0, $03, $20, $7F, $F8, $A9, $00 ; CPU:$A433 PRG:2433 8D 01 20 E6 42 A5 3C 29 01 F0 03 20 7F F8 A9 00 - .byte $85, $3C, $85, $5C, $85, $5D, $85, $60, $A2, $0F, $9D, $A0, $02, $CA, $10, $FA ; CPU:$A443 PRG:2443 85 3C 85 5C 85 5D 85 60 A2 0F 9D A0 02 CA 10 FA - .byte $60, $A9, $00, $85, $03, $A5, $00, $29, $EF, $09, $02, $85, $00, $A9, $1E, $85 ; CPU:$A453 PRG:2453 60 A9 00 85 03 A5 00 29 EF 09 02 85 00 A9 1E 85 - .byte $01, $E6, $42, $A4, $1A, $A9, $3F, $99, $08, $02, $C8, $A9, $01, $99, $08, $02 ; CPU:$A463 PRG:2463 01 E6 42 A4 1A A9 3F 99 08 02 C8 A9 01 99 08 02 - .byte $C8, $99, $08, $02, $C8, $A9, $0F, $99, $08, $02, $C8, $A9, $00, $99, $08, $02 ; CPU:$A473 PRG:2473 C8 99 08 02 C8 A9 0F 99 08 02 C8 A9 00 99 08 02 - .byte $84, $1A, $60, $AD, $02, $20, $A9, $20, $8D, $06, $20, $A9, $00, $8D, $06, $20 ; CPU:$A483 PRG:2483 84 1A 60 AD 02 20 A9 20 8D 06 20 A9 00 8D 06 20 - .byte $A2, $00, $A9, $24, $20, $D7, $A6, $20, $D7, $A6, $20, $D7, $A6, $A2, $C0, $20 ; CPU:$A493 PRG:2493 A2 00 A9 24 20 D7 A6 20 D7 A6 20 D7 A6 A2 C0 20 - .byte $D7, $A6, $A2, $40, $A9, $00, $20, $D7, $A6, $AD, $02, $20, $A9, $28, $8D, $06 ; CPU:$A4A3 PRG:24A3 D7 A6 A2 40 A9 00 20 D7 A6 AD 02 20 A9 28 8D 06 - .byte $20, $A9, $00, $8D, $06, $20, $A9, $24, $A2, $00, $20, $D7, $A6, $20, $D7, $A6 ; CPU:$A4B3 PRG:24B3 20 A9 00 8D 06 20 A9 24 A2 00 20 D7 A6 20 D7 A6 - .byte $20, $D7, $A6, $A2, $C0, $20, $D7, $A6, $A2, $40, $20, $D7, $A6, $A2, $00, $A0 ; CPU:$A4C3 PRG:24C3 20 D7 A6 A2 C0 20 D7 A6 A2 40 20 D7 A6 A2 00 A0 - .byte $0E, $20, $DE, $A6, $88, $D0, $FA, $A5, $5E, $F0, $06, $20, $DE, $A6, $20, $10 ; CPU:$A4D3 PRG:24D3 0E 20 DE A6 88 D0 FA A5 5E F0 06 20 DE A6 20 10 - .byte $A7, $20, $17, $A7, $20, $1E, $A7, $E6, $42, $A4, $1A, $A2, $00, $A5, $5D, $F0 ; CPU:$A4E3 PRG:24E3 A7 20 17 A7 20 1E A7 E6 42 A4 1A A2 00 A5 5D F0 - .byte $02, $A2, $08, $BD, $0B, $A5, $99, $08, $02, $C8, $E8, $8A, $29, $07, $D0, $F3 ; CPU:$A4F3 PRG:24F3 02 A2 08 BD 0B A5 99 08 02 C8 E8 8A 29 07 D0 F3 - .byte $A9, $00, $99, $08, $02, $84, $1A, $60, $21, $EA, $01, $CD, $22, $2A, $01, $24 ; CPU:$A503 PRG:2503 A9 00 99 08 02 84 1A 60 21 EA 01 CD 22 2A 01 24 - .byte $21, $EA, $01, $24, $22, $2A, $01, $CD, $E6, $03, $A5, $03, $C9, $F0, $D0, $17 ; CPU:$A513 PRG:2513 21 EA 01 24 22 2A 01 CD E6 03 A5 03 C9 F0 D0 17 + .byte $A4, $22, $A5 ; CPU:$A403 PRG:2403 A4 22 A5 + ldy #$00 ; CPU:$A406 PRG:2406 A0 00 + lda #$3F ; CPU:$A408 PRG:2408 A9 3F + sta $0208,y ; CPU:$A40A PRG:240A 99 08 02 + iny ; CPU:$A40D PRG:240D C8 + lda #$00 ; CPU:$A40E PRG:240E A9 00 + sta $0208,y ; CPU:$A410 PRG:2410 99 08 02 + iny ; CPU:$A413 PRG:2413 C8 + lda #$14 ; CPU:$A414 PRG:2414 A9 14 + sta $0208,y ; CPU:$A416 PRG:2416 99 08 02 + iny ; CPU:$A419 PRG:2419 C8 + ldx #$00 ; CPU:$A41A PRG:241A A2 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_A41C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A41C: + lda $A7AC,x ; CPU:$A41C PRG:241C BD AC A7 + sta $0208,y ; CPU:$A41F PRG:241F 99 08 02 + iny ; CPU:$A422 PRG:2422 C8 + inx ; CPU:$A423 PRG:2423 E8 + cpx #$14 ; CPU:$A424 PRG:2424 E0 14 + bne Sub_A41C ; CPU:$A426 PRG:2426 D0 F4 + lda #$00 ; CPU:$A428 PRG:2428 A9 00 + sta $0208,y ; CPU:$A42A PRG:242A 99 08 02 + sty Joypad1Press2 ; CPU:$A42D PRG:242D 84 1A + lda #$06 ; CPU:$A42F PRG:242F A9 06 + sta PPUMASKShadow ; CPU:$A431 PRG:2431 85 01 + sta $2001 ; CPU:$A433 PRG:2433 8D 01 20 + inc Zp42 ; CPU:$A436 PRG:2436 E6 42 + lda ResetHi ; CPU:$A438 PRG:2438 A5 3C + and #$01 ; CPU:$A43A PRG:243A 29 01 + beq Sub_A441 ; CPU:$A43C PRG:243C F0 03 +; ---- data $A43E-$A440 (3 bytes) ---- + .byte $20, $7F, $F8 ; CPU:$A43E PRG:243E 20 7F F8 +; ----------------------------------------------------------------------------- +; Routine: Sub_A441 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A441: + lda #$00 ; CPU:$A441 PRG:2441 A9 00 + sta ResetHi ; CPU:$A443 PRG:2443 85 3C + sta $5C ; CPU:$A445 PRG:2445 85 5C + sta Zp5D ; CPU:$A447 PRG:2447 85 5D + sta Zp60 ; CPU:$A449 PRG:2449 85 60 + ldx #$0F ; CPU:$A44B PRG:244B A2 0F +; ----------------------------------------------------------------------------- +; Routine: Sub_A44D +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A44D: + sta $02A0,x ; CPU:$A44D PRG:244D 9D A0 02 + dex ; CPU:$A450 PRG:2450 CA + bpl Sub_A44D ; CPU:$A451 PRG:2451 10 FA + rts ; CPU:$A453 PRG:2453 60 + lda #$00 ; CPU:$A454 PRG:2454 A9 00 + sta ScrollY ; CPU:$A456 PRG:2456 85 03 + lda PPUCTRLShadow ; CPU:$A458 PRG:2458 A5 00 + and #$EF ; CPU:$A45A PRG:245A 29 EF + ora #$02 ; CPU:$A45C PRG:245C 09 02 + sta PPUCTRLShadow ; CPU:$A45E PRG:245E 85 00 + lda #$1E ; CPU:$A460 PRG:2460 A9 1E + sta PPUMASKShadow ; CPU:$A462 PRG:2462 85 01 + inc Zp42 ; CPU:$A464 PRG:2464 E6 42 + ldy Joypad1Press2 ; CPU:$A466 PRG:2466 A4 1A + lda #$3F ; CPU:$A468 PRG:2468 A9 3F + sta $0208,y ; CPU:$A46A PRG:246A 99 08 02 + iny ; CPU:$A46D PRG:246D C8 + lda #$01 ; CPU:$A46E PRG:246E A9 01 + sta $0208,y ; CPU:$A470 PRG:2470 99 08 02 + iny ; CPU:$A473 PRG:2473 C8 + sta $0208,y ; CPU:$A474 PRG:2474 99 08 02 + iny ; CPU:$A477 PRG:2477 C8 + lda #$0F ; CPU:$A478 PRG:2478 A9 0F + sta $0208,y ; CPU:$A47A PRG:247A 99 08 02 + iny ; CPU:$A47D PRG:247D C8 + lda #$00 ; CPU:$A47E PRG:247E A9 00 + sta $0208,y ; CPU:$A480 PRG:2480 99 08 02 + sty Joypad1Press2 ; CPU:$A483 PRG:2483 84 1A + rts ; CPU:$A485 PRG:2485 60 + lda $2002 ; CPU:$A486 PRG:2486 AD 02 20 + lda #$20 ; CPU:$A489 PRG:2489 A9 20 + sta $2006 ; CPU:$A48B PRG:248B 8D 06 20 + lda #$00 ; CPU:$A48E PRG:248E A9 00 + sta $2006 ; CPU:$A490 PRG:2490 8D 06 20 + ldx #$00 ; CPU:$A493 PRG:2493 A2 00 + lda #$24 ; CPU:$A495 PRG:2495 A9 24 + jsr Sub_A6D7 ; CPU:$A497 PRG:2497 20 D7 A6 + jsr Sub_A6D7 ; CPU:$A49A PRG:249A 20 D7 A6 + jsr Sub_A6D7 ; CPU:$A49D PRG:249D 20 D7 A6 + ldx #$C0 ; CPU:$A4A0 PRG:24A0 A2 C0 + jsr Sub_A6D7 ; CPU:$A4A2 PRG:24A2 20 D7 A6 + ldx #$40 ; CPU:$A4A5 PRG:24A5 A2 40 + lda #$00 ; CPU:$A4A7 PRG:24A7 A9 00 + jsr Sub_A6D7 ; CPU:$A4A9 PRG:24A9 20 D7 A6 + lda $2002 ; CPU:$A4AC PRG:24AC AD 02 20 + lda #$28 ; CPU:$A4AF PRG:24AF A9 28 + sta $2006 ; CPU:$A4B1 PRG:24B1 8D 06 20 + lda #$00 ; CPU:$A4B4 PRG:24B4 A9 00 + sta $2006 ; CPU:$A4B6 PRG:24B6 8D 06 20 + lda #$24 ; CPU:$A4B9 PRG:24B9 A9 24 + ldx #$00 ; CPU:$A4BB PRG:24BB A2 00 + jsr Sub_A6D7 ; CPU:$A4BD PRG:24BD 20 D7 A6 + jsr Sub_A6D7 ; CPU:$A4C0 PRG:24C0 20 D7 A6 + jsr Sub_A6D7 ; CPU:$A4C3 PRG:24C3 20 D7 A6 + ldx #$C0 ; CPU:$A4C6 PRG:24C6 A2 C0 + jsr Sub_A6D7 ; CPU:$A4C8 PRG:24C8 20 D7 A6 + ldx #$40 ; CPU:$A4CB PRG:24CB A2 40 + jsr Sub_A6D7 ; CPU:$A4CD PRG:24CD 20 D7 A6 + ldx #$00 ; CPU:$A4D0 PRG:24D0 A2 00 + ldy #$0E ; CPU:$A4D2 PRG:24D2 A0 0E +; ----------------------------------------------------------------------------- +; Routine: Sub_A4D4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A4D4: + jsr Sub_A6DE ; CPU:$A4D4 PRG:24D4 20 DE A6 + dey ; CPU:$A4D7 PRG:24D7 88 + bne Sub_A4D4 ; CPU:$A4D8 PRG:24D8 D0 FA + lda Zp5E ; CPU:$A4DA PRG:24DA A5 5E + beq Sub_A4E4 ; CPU:$A4DC PRG:24DC F0 06 + jsr Sub_A6DE ; CPU:$A4DE PRG:24DE 20 DE A6 + jsr Sub_A710 ; CPU:$A4E1 PRG:24E1 20 10 A7 +; ----------------------------------------------------------------------------- +; Routine: Sub_A4E4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A4E4: + jsr Sub_A717 ; CPU:$A4E4 PRG:24E4 20 17 A7 + jsr Sub_A71E ; CPU:$A4E7 PRG:24E7 20 1E A7 + inc Zp42 ; CPU:$A4EA PRG:24EA E6 42 +Sub_A4EC: + ldy Joypad1Press2 ; CPU:$A4EC PRG:24EC A4 1A + ldx #$00 ; CPU:$A4EE PRG:24EE A2 00 + lda Zp5D ; CPU:$A4F0 PRG:24F0 A5 5D + beq Sub_A4F6 ; CPU:$A4F2 PRG:24F2 F0 02 + ldx #$08 ; CPU:$A4F4 PRG:24F4 A2 08 +; ----------------------------------------------------------------------------- +; Routine: Sub_A4F6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A4F6: + lda $A50B,x ; CPU:$A4F6 PRG:24F6 BD 0B A5 + sta $0208,y ; CPU:$A4F9 PRG:24F9 99 08 02 + iny ; CPU:$A4FC PRG:24FC C8 + inx ; CPU:$A4FD PRG:24FD E8 + txa ; CPU:$A4FE PRG:24FE 8A + and #$07 ; CPU:$A4FF PRG:24FF 29 07 + bne Sub_A4F6 ; CPU:$A501 PRG:2501 D0 F3 + lda #$00 ; CPU:$A503 PRG:2503 A9 00 + sta $0208,y ; CPU:$A505 PRG:2505 99 08 02 + sty Joypad1Press2 ; CPU:$A508 PRG:2508 84 1A + rts ; CPU:$A50A PRG:250A 60 +; ---- data $A50B-$A51A (16 bytes) ---- + .byte $21, $EA, $01, $CD, $22, $2A, $01, $24, $21, $EA, $01, $24, $22, $2A, $01, $CD ; CPU:$A50B PRG:250B 21 EA 01 CD 22 2A 01 24 21 EA 01 24 22 2A 01 CD + inc ScrollY ; CPU:$A51B PRG:251B E6 03 + lda ScrollY ; CPU:$A51D PRG:251D A5 03 + cmp #$F0 ; CPU:$A51F PRG:251F C9 F0 + bne Sub_A53A ; CPU:$A521 PRG:2521 D0 17 ; ----------------------------------------------------------------------------- ; Routine: Sub_A523 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -658,16 +829,16 @@ Sub_A2C0: ; ----------------------------------------------------------------------------- Sub_A523: lda #$00 ; CPU:$A523 PRG:2523 A9 00 - sta ScrollY ; CPU:$A525 PRG:2525 85 03 - lda PPUCTRLShadow ; CPU:$A527 PRG:2527 A5 00 + sta ScrollY ; CPU:$A525 PRG:2525 85 03 + lda PPUCTRLShadow ; CPU:$A527 PRG:2527 A5 00 and #$FC ; CPU:$A529 PRG:2529 29 FC - sta PPUCTRLShadow ; CPU:$A52B PRG:252B 85 00 + sta PPUCTRLShadow ; CPU:$A52B PRG:252B 85 00 lda #$04 ; CPU:$A52D PRG:252D A9 04 sta Zp42 ; CPU:$A52F PRG:252F 85 42 lda #$FE ; CPU:$A531 PRG:2531 A9 FE sta Zp43 ; CPU:$A533 PRG:2533 85 43 lda #$00 ; CPU:$A535 PRG:2535 A9 00 - sta GameSubMode ; CPU:$A537 PRG:2537 85 1B + sta GameSubMode ; CPU:$A537 PRG:2537 85 1B rts ; CPU:$A539 PRG:2539 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_A53A @@ -679,34 +850,334 @@ Sub_A523: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_A53A: - lda Joypad1Press ; CPU:$A53A PRG:253A A5 09 + lda Joypad1Press ; CPU:$A53A PRG:253A A5 09 and #$0C ; CPU:$A53C PRG:253C 29 0C - bne Sub_A523 ; CPU:$A53E PRG:253E D0 E3 + bne Sub_A523 ; CPU:$A53E PRG:253E D0 E3 rts ; CPU:$A540 PRG:2540 60 -; ---- data $A541-$A6A2 (354 bytes) ---- +; ---- data $A541-$A550 (16 bytes) ---- .byte $63, $93, $00, $60, $63, $93, $00, $98, $47, $9C, $00, $D8, $57, $9C, $00, $D8 ; CPU:$A541 PRG:2541 63 93 00 60 63 93 00 98 47 9C 00 D8 57 9C 00 D8 - .byte $A2, $00, $BD, $41, $A5, $9D, $20, $07, $E8, $E0, $10, $D0, $F5, $A5, $1B, $29 ; CPU:$A551 PRG:2551 A2 00 BD 41 A5 9D 20 07 E8 E0 10 D0 F5 A5 1B 29 - .byte $01, $D0, $16, $A5, $43, $C9, $F4, $90, $06, $A5, $1B, $29, $07, $D0, $0A, $C6 ; CPU:$A561 PRG:2561 01 D0 16 A5 43 C9 F4 90 06 A5 1B 29 07 D0 0A C6 - .byte $43, $D0, $06, $A9, $05, $85, $42, $85, $60, $A5, $09, $29, $08, $F0, $05, $A9 ; CPU:$A571 PRG:2571 43 D0 06 A9 05 85 42 85 60 A5 09 29 08 F0 05 A9 - .byte $06, $85, $42, $60, $A5, $09, $29, $04, $F0, $06, $A5, $5D, $49, $01, $85, $5D ; CPU:$A581 PRG:2581 06 85 42 60 A5 09 29 04 F0 06 A5 5D 49 01 85 5D - .byte $20, $EC, $A4, $4C, $C2, $A5, $A2, $0C, $4C, $B2, $A5, $A2, $10, $4C, $B2, $A5 ; CPU:$A591 PRG:2591 20 EC A4 4C C2 A5 A2 0C 4C B2 A5 A2 10 4C B2 A5 - .byte $A2, $14, $4C, $B2, $A5, $A2, $00, $4C, $B2, $A5, $A2, $04, $4C, $B2, $A5, $A2 ; CPU:$A5A1 PRG:25A1 A2 14 4C B2 A5 A2 00 4C B2 A5 A2 04 4C B2 A5 A2 - .byte $08, $A0, $40, $BD, $2A, $A6, $99, $00, $07, $C8, $E8, $8A, $29, $03, $D0, $F3 ; CPU:$A5B1 PRG:25B1 08 A0 40 BD 2A A6 99 00 07 C8 E8 8A 29 03 D0 F3 - .byte $60, $A5, $43, $C9, $85, $90, $3A, $C9, $89, $90, $E4, $C9, $8D, $90, $DB, $C9 ; CPU:$A5C1 PRG:25C1 60 A5 43 C9 85 90 3A C9 89 90 E4 C9 8D 90 DB C9 - .byte $91, $90, $D2, $C9, $F4, $B0, $29, $C9, $F0, $B0, $BB, $C9, $EC, $B0, $BC, $C9 ; CPU:$A5D1 PRG:25D1 91 90 D2 C9 F4 B0 29 C9 F0 B0 BB C9 EC B0 BC C9 - .byte $E8, $B0, $BD, $0A, $29, $0C, $18, $69, $18, $AA, $20, $B2, $A5, $A5, $1B, $29 ; CPU:$A5E1 PRG:25E1 E8 B0 BD 0A 29 0C 18 69 18 AA 20 B2 A5 A5 1B 29 - .byte $01, $18, $69, $D4, $38, $E5, $43, $38, $E5, $43, $18, $69, $20, $8D, $43, $07 ; CPU:$A5F1 PRG:25F1 01 18 69 D4 38 E5 43 38 E5 43 18 69 20 8D 43 07 - .byte $60, $C9, $1E, $90, $23, $29, $07, $AA, $A4, $1A, $A9, $3F, $99, $08, $02, $C8 ; CPU:$A601 PRG:2601 60 C9 1E 90 23 29 07 AA A4 1A A9 3F 99 08 02 C8 - .byte $A9, $01, $99, $08, $02, $C8, $99, $08, $02, $C8, $BD, $52, $A6, $99, $08, $02 ; CPU:$A611 PRG:2611 A9 01 99 08 02 C8 99 08 02 C8 BD 52 A6 99 08 02 - .byte $C8, $A9, $00, $99, $08, $02, $84, $1A, $60, $3C, $F8, $03, $D5, $3C, $FB, $03 ; CPU:$A621 PRG:2621 C8 A9 00 99 08 02 84 1A 60 3C F8 03 D5 3C FB 03 - .byte $D5, $3C, $D3, $03, $D5, $3C, $D3, $03, $25, $3C, $FB, $03, $25, $3C, $F8, $03 ; CPU:$A631 PRG:2631 D5 3C D3 03 D5 3C D3 03 25 3C FB 03 25 3C F8 03 - .byte $25, $3C, $F8, $03, $00, $3C, $F9, $03, $00, $3C, $FA, $03, $00, $3C, $F9, $43 ; CPU:$A641 PRG:2641 25 3C F8 03 00 3C F9 03 00 3C FA 03 00 3C F9 43 - .byte $00, $0F, $12, $15, $16, $25, $27, $06, $30, $A9, $00, $A6, $5D, $86, $5E, $85 ; CPU:$A651 PRG:2651 00 0F 12 15 16 25 27 06 30 A9 00 A6 5D 86 5E 85 - .byte $60, $A2, $08, $95, $80, $95, $9A, $CA, $10, $F9, $A9, $00, $85, $03, $85, $0F ; CPU:$A661 PRG:2661 60 A2 08 95 80 95 9A CA 10 F9 A9 00 85 03 85 0F - .byte $85, $25, $85, $26, $85, $29, $A5, $00, $29, $FD, $85, $00, $A9, $1F, $85, $14 ; CPU:$A671 PRG:2671 85 25 85 26 85 29 A5 00 29 FD 85 00 A9 1F 85 14 - .byte $A9, $3B, $85, $15, $A9, $01, $85, $10, $A4, $1A, $A2, $00, $86, $42, $BD, $CE ; CPU:$A681 PRG:2681 A9 3B 85 15 A9 01 85 10 A4 1A A2 00 86 42 BD CE - .byte $A6, $99, $08, $02, $C8, $E8, $E0, $09, $D0, $F4, $88, $84, $1A, $20, $C2, $F3 ; CPU:$A691 PRG:2691 A6 99 08 02 C8 E8 E0 09 D0 F4 88 84 1A 20 C2 F3 - .byte $A9, $00 ; CPU:$A6A1 PRG:26A1 A9 00 + ldx #$00 ; CPU:$A551 PRG:2551 A2 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_A553 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A553: + lda $A541,x ; CPU:$A553 PRG:2553 BD 41 A5 + sta $0720,x ; CPU:$A556 PRG:2556 9D 20 07 + inx ; CPU:$A559 PRG:2559 E8 + cpx #$10 ; CPU:$A55A PRG:255A E0 10 + bne Sub_A553 ; CPU:$A55C PRG:255C D0 F5 + lda GameSubMode ; CPU:$A55E PRG:255E A5 1B + and #$01 ; CPU:$A560 PRG:2560 29 01 + bne Sub_A57A ; CPU:$A562 PRG:2562 D0 16 + lda Zp43 ; CPU:$A564 PRG:2564 A5 43 + cmp #$F4 ; CPU:$A566 PRG:2566 C9 F4 + bcc Sub_A570 ; CPU:$A568 PRG:2568 90 06 + lda GameSubMode ; CPU:$A56A PRG:256A A5 1B + and #$07 ; CPU:$A56C PRG:256C 29 07 + bne Sub_A57A ; CPU:$A56E PRG:256E D0 0A +; ----------------------------------------------------------------------------- +; Routine: Sub_A570 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A570: + dec Zp43 ; CPU:$A570 PRG:2570 C6 43 + bne Sub_A57A ; CPU:$A572 PRG:2572 D0 06 + lda #$05 ; CPU:$A574 PRG:2574 A9 05 + sta Zp42 ; CPU:$A576 PRG:2576 85 42 + sta Zp60 ; CPU:$A578 PRG:2578 85 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A57A +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A57A: + lda Joypad1Press ; CPU:$A57A PRG:257A A5 09 + and #$08 ; CPU:$A57C PRG:257C 29 08 + beq Sub_A585 ; CPU:$A57E PRG:257E F0 05 + lda #$06 ; CPU:$A580 PRG:2580 A9 06 + sta Zp42 ; CPU:$A582 PRG:2582 85 42 + rts ; CPU:$A584 PRG:2584 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A585 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A585: + lda Joypad1Press ; CPU:$A585 PRG:2585 A5 09 + and #$04 ; CPU:$A587 PRG:2587 29 04 + beq Sub_A591 ; CPU:$A589 PRG:2589 F0 06 + lda Zp5D ; CPU:$A58B PRG:258B A5 5D + eor #$01 ; CPU:$A58D PRG:258D 49 01 + sta Zp5D ; CPU:$A58F PRG:258F 85 5D +; ----------------------------------------------------------------------------- +; Routine: Sub_A591 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A591: + jsr Sub_A4EC ; CPU:$A591 PRG:2591 20 EC A4 + jmp Sub_A5C2 ; CPU:$A594 PRG:2594 4C C2 A5 +; ----------------------------------------------------------------------------- +; Routine: Sub_A597 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A597: + ldx #$0C ; CPU:$A597 PRG:2597 A2 0C + jmp Sub_A5B2 ; CPU:$A599 PRG:2599 4C B2 A5 +; ----------------------------------------------------------------------------- +; Routine: Sub_A59C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A59C: + ldx #$10 ; CPU:$A59C PRG:259C A2 10 + jmp Sub_A5B2 ; CPU:$A59E PRG:259E 4C B2 A5 +; ----------------------------------------------------------------------------- +; Routine: Sub_A5A1 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A5A1: + ldx #$14 ; CPU:$A5A1 PRG:25A1 A2 14 + jmp Sub_A5B2 ; CPU:$A5A3 PRG:25A3 4C B2 A5 +; ----------------------------------------------------------------------------- +; Routine: Sub_A5A6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A5A6: + ldx #$00 ; CPU:$A5A6 PRG:25A6 A2 00 + jmp Sub_A5B2 ; CPU:$A5A8 PRG:25A8 4C B2 A5 +; ----------------------------------------------------------------------------- +; Routine: Sub_A5AB +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A5AB: + ldx #$04 ; CPU:$A5AB PRG:25AB A2 04 + jmp Sub_A5B2 ; CPU:$A5AD PRG:25AD 4C B2 A5 +; ----------------------------------------------------------------------------- +; Routine: Sub_A5B0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A5B0: + ldx #$08 ; CPU:$A5B0 PRG:25B0 A2 08 +Sub_A5B2: + ldy #$40 ; CPU:$A5B2 PRG:25B2 A0 40 +; ----------------------------------------------------------------------------- +; Routine: Sub_A5B4 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A5B4: + lda $A62A,x ; CPU:$A5B4 PRG:25B4 BD 2A A6 + sta $0700,y ; CPU:$A5B7 PRG:25B7 99 00 07 + iny ; CPU:$A5BA PRG:25BA C8 + inx ; CPU:$A5BB PRG:25BB E8 + txa ; CPU:$A5BC PRG:25BC 8A + and #$03 ; CPU:$A5BD PRG:25BD 29 03 + bne Sub_A5B4 ; CPU:$A5BF PRG:25BF D0 F3 + rts ; CPU:$A5C1 PRG:25C1 60 +Sub_A5C2: + lda Zp43 ; CPU:$A5C2 PRG:25C2 A5 43 + cmp #$85 ; CPU:$A5C4 PRG:25C4 C9 85 + bcc Sub_A602 ; CPU:$A5C6 PRG:25C6 90 3A + cmp #$89 ; CPU:$A5C8 PRG:25C8 C9 89 + bcc Sub_A5B0 ; CPU:$A5CA PRG:25CA 90 E4 + cmp #$8D ; CPU:$A5CC PRG:25CC C9 8D + bcc Sub_A5AB ; CPU:$A5CE PRG:25CE 90 DB + cmp #$91 ; CPU:$A5D0 PRG:25D0 C9 91 + bcc Sub_A5A6 ; CPU:$A5D2 PRG:25D2 90 D2 + cmp #$F4 ; CPU:$A5D4 PRG:25D4 C9 F4 + bcs Sub_A601 ; CPU:$A5D6 PRG:25D6 B0 29 + cmp #$F0 ; CPU:$A5D8 PRG:25D8 C9 F0 + bcs Sub_A597 ; CPU:$A5DA PRG:25DA B0 BB + cmp #$EC ; CPU:$A5DC PRG:25DC C9 EC + bcs Sub_A59C ; CPU:$A5DE PRG:25DE B0 BC + cmp #$E8 ; CPU:$A5E0 PRG:25E0 C9 E8 + bcs Sub_A5A1 ; CPU:$A5E2 PRG:25E2 B0 BD + asl a ; CPU:$A5E4 PRG:25E4 0A + and #$0C ; CPU:$A5E5 PRG:25E5 29 0C + clc ; CPU:$A5E7 PRG:25E7 18 + adc #$18 ; CPU:$A5E8 PRG:25E8 69 18 + tax ; CPU:$A5EA PRG:25EA AA + jsr Sub_A5B2 ; CPU:$A5EB PRG:25EB 20 B2 A5 + lda GameSubMode ; CPU:$A5EE PRG:25EE A5 1B + and #$01 ; CPU:$A5F0 PRG:25F0 29 01 + clc ; CPU:$A5F2 PRG:25F2 18 + adc #$D4 ; CPU:$A5F3 PRG:25F3 69 D4 + sec ; CPU:$A5F5 PRG:25F5 38 + sbc Zp43 ; CPU:$A5F6 PRG:25F6 E5 43 + sec ; CPU:$A5F8 PRG:25F8 38 + sbc Zp43 ; CPU:$A5F9 PRG:25F9 E5 43 + clc ; CPU:$A5FB PRG:25FB 18 + adc #$20 ; CPU:$A5FC PRG:25FC 69 20 + sta $0743 ; CPU:$A5FE PRG:25FE 8D 43 07 +; ----------------------------------------------------------------------------- +; Routine: Sub_A601 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A601: + rts ; CPU:$A601 PRG:2601 60 +; ----------------------------------------------------------------------------- +; Routine: Sub_A602 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A602: + cmp #$1E ; CPU:$A602 PRG:2602 C9 1E + bcc Sub_A629 ; CPU:$A604 PRG:2604 90 23 + and #$07 ; CPU:$A606 PRG:2606 29 07 + tax ; CPU:$A608 PRG:2608 AA + ldy Joypad1Press2 ; CPU:$A609 PRG:2609 A4 1A + lda #$3F ; CPU:$A60B PRG:260B A9 3F + sta $0208,y ; CPU:$A60D PRG:260D 99 08 02 + iny ; CPU:$A610 PRG:2610 C8 + lda #$01 ; CPU:$A611 PRG:2611 A9 01 + sta $0208,y ; CPU:$A613 PRG:2613 99 08 02 + iny ; CPU:$A616 PRG:2616 C8 + sta $0208,y ; CPU:$A617 PRG:2617 99 08 02 + iny ; CPU:$A61A PRG:261A C8 + lda $A652,x ; CPU:$A61B PRG:261B BD 52 A6 + sta $0208,y ; CPU:$A61E PRG:261E 99 08 02 + iny ; CPU:$A621 PRG:2621 C8 + lda #$00 ; CPU:$A622 PRG:2622 A9 00 + sta $0208,y ; CPU:$A624 PRG:2624 99 08 02 + sty Joypad1Press2 ; CPU:$A627 PRG:2627 84 1A +; ----------------------------------------------------------------------------- +; Routine: Sub_A629 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A629: + rts ; CPU:$A629 PRG:2629 60 +; ---- data $A62A-$A659 (48 bytes) ---- + .byte $3C, $F8, $03, $D5, $3C, $FB, $03, $D5, $3C, $D3, $03, $D5, $3C, $D3, $03, $25 ; CPU:$A62A PRG:262A 3C F8 03 D5 3C FB 03 D5 3C D3 03 D5 3C D3 03 25 + .byte $3C, $FB, $03, $25, $3C, $F8, $03, $25, $3C, $F8, $03, $00, $3C, $F9, $03, $00 ; CPU:$A63A PRG:263A 3C FB 03 25 3C F8 03 25 3C F8 03 00 3C F9 03 00 + .byte $3C, $FA, $03, $00, $3C, $F9, $43, $00, $0F, $12, $15, $16, $25, $27, $06, $30 ; CPU:$A64A PRG:264A 3C FA 03 00 3C F9 43 00 0F 12 15 16 25 27 06 30 + lda #$00 ; CPU:$A65A PRG:265A A9 00 + ldx Zp5D ; CPU:$A65C PRG:265C A6 5D + stx Zp5E ; CPU:$A65E PRG:265E 86 5E + sta Zp60 ; CPU:$A660 PRG:2660 85 60 + ldx #$08 ; CPU:$A662 PRG:2662 A2 08 +; ----------------------------------------------------------------------------- +; Routine: Sub_A664 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A664: + sta Zp80,x ; CPU:$A664 PRG:2664 95 80 + sta Zp9A,x ; CPU:$A666 PRG:2666 95 9A + dex ; CPU:$A668 PRG:2668 CA + bpl Sub_A664 ; CPU:$A669 PRG:2669 10 F9 + lda #$00 ; CPU:$A66B PRG:266B A9 00 + sta ScrollY ; CPU:$A66D PRG:266D 85 03 + sta NmiToggle ; CPU:$A66F PRG:266F 85 0F + sta Zp25 ; CPU:$A671 PRG:2671 85 25 + sta Zp26 ; CPU:$A673 PRG:2673 85 26 + sta Zp29 ; CPU:$A675 PRG:2675 85 29 + lda PPUCTRLShadow ; CPU:$A677 PRG:2677 A5 00 + and #$FD ; CPU:$A679 PRG:2679 29 FD + sta PPUCTRLShadow ; CPU:$A67B PRG:267B 85 00 + lda #$1F ; CPU:$A67D PRG:267D A9 1F + sta Zp14 ; CPU:$A67F PRG:267F 85 14 + lda #$3B ; CPU:$A681 PRG:2681 A9 3B + sta Zp15 ; CPU:$A683 PRG:2683 85 15 + lda #$01 ; CPU:$A685 PRG:2685 A9 01 + sta GameMode ; CPU:$A687 PRG:2687 85 10 + ldy Joypad1Press2 ; CPU:$A689 PRG:2689 A4 1A + ldx #$00 ; CPU:$A68B PRG:268B A2 00 + stx Zp42 ; CPU:$A68D PRG:268D 86 42 +; ----------------------------------------------------------------------------- +; Routine: Sub_A68F +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A68F: + lda $A6CE,x ; CPU:$A68F PRG:268F BD CE A6 + sta $0208,y ; CPU:$A692 PRG:2692 99 08 02 + iny ; CPU:$A695 PRG:2695 C8 + inx ; CPU:$A696 PRG:2696 E8 + cpx #$09 ; CPU:$A697 PRG:2697 E0 09 + bne Sub_A68F ; CPU:$A699 PRG:2699 D0 F4 + dey ; CPU:$A69B PRG:269B 88 + sty Joypad1Press2 ; CPU:$A69C PRG:269C 84 1A + jsr Sub_F3C2 ; CPU:$A69E PRG:269E 20 C2 F3 + lda #$00 ; CPU:$A6A1 PRG:26A1 A9 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_A6A3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -731,8 +1202,8 @@ Sub_A6A5: sta Zp88,x ; CPU:$A6A5 PRG:26A5 95 88 sta ZpA2,x ; CPU:$A6A7 PRG:26A7 95 A2 dex ; CPU:$A6A9 PRG:26A9 CA - bpl Sub_A6A5 ; CPU:$A6AA PRG:26AA 10 F9 - sta ResetHi ; CPU:$A6AC PRG:26AC 85 3C + bpl Sub_A6A5 ; CPU:$A6AA PRG:26AA 10 F9 + sta ResetHi ; CPU:$A6AC PRG:26AC 85 3C lda #$FF ; CPU:$A6AE PRG:26AE A9 FF sta Zp90 ; CPU:$A6B0 PRG:26B0 85 90 sta ZpAA ; CPU:$A6B2 PRG:26B2 85 AA @@ -753,11 +1224,11 @@ Sub_A6BA: sta Zp8A,x ; CPU:$A6BC PRG:26BC 95 8A sta ZpA4,x ; CPU:$A6BE PRG:26BE 95 A4 dex ; CPU:$A6C0 PRG:26C0 CA - bpl Sub_A6BA ; CPU:$A6C1 PRG:26C1 10 F7 + bpl Sub_A6BA ; CPU:$A6C1 PRG:26C1 10 F7 lda Zp5F ; CPU:$A6C3 PRG:26C3 A5 5F sta Zp8D ; CPU:$A6C5 PRG:26C5 85 8D ldx Zp5D ; CPU:$A6C7 PRG:26C7 A6 5D - beq Sub_A6CD ; CPU:$A6C9 PRG:26C9 F0 02 + beq Sub_A6CD ; CPU:$A6C9 PRG:26C9 F0 02 sta ZpA7 ; CPU:$A6CB PRG:26CB 85 A7 ; ----------------------------------------------------------------------------- ; Routine: Sub_A6CD @@ -770,299 +1241,422 @@ Sub_A6BA: ; ----------------------------------------------------------------------------- Sub_A6CD: rts ; CPU:$A6CD PRG:26CD 60 -; ---- data $A6CE-$B8AA (4573 bytes) ---- -; referenced by `lda $A8F5,y` at $C353 (operand $A8F5 falls inside this region) -; referenced by `lda $A8F6,y` at $C359 (operand $A8F6 falls inside this region) -; referenced by `lda $B89F,y` at $CBDF (operand $B89F falls inside this region) -; referenced by `lda $B89F,y` at $CBF9 (operand $B89F falls inside this region) -; referenced by `lda $A8D5,x` at $F3E4 (operand $A8D5 falls inside this region) -; referenced by `lda $A8D6,x` at $F3E9 (operand $A8D6 falls inside this region) - .byte $3F, $12, $02, $30, $00, $3F, $01, $01, $0F, $8D, $07, $20, $CA, $D0, $FA, $60 ; CPU:$A6CE PRG:26CE 3F 12 02 30 00 3F 01 01 0F 8D 07 20 CA D0 FA 60 - .byte $AD, $02, $20, $BD, $4B, $A7, $E8, $85, $04, $BD, $4B, $A7, $E8, $85, $05, $84 ; CPU:$A6DE PRG:26DE AD 02 20 BD 4B A7 E8 85 04 BD 4B A7 E8 85 05 84 - .byte $2C, $A0, $01, $B1, $04, $8D, $06, $20, $A0, $00, $B1, $04, $8D, $06, $20, $A0 ; CPU:$A6EE PRG:26EE 2C A0 01 B1 04 8D 06 20 A0 00 B1 04 8D 06 20 A0 - .byte $02, $B1, $04, $85, $0E, $C8, $B1, $04, $8D, $07, $20, $C6, $0E, $D0, $F6, $A4 ; CPU:$A6FE PRG:26FE 02 B1 04 85 0E C8 B1 04 8D 07 20 C6 0E D0 F6 A4 - .byte $2C, $60, $A0, $95, $A2, $9A, $4C, $22, $A7, $A0, $83, $A2, $80, $4C, $22, $A7 ; CPU:$A70E PRG:270E 2C 60 A0 95 A2 9A 4C 22 A7 A0 83 A2 80 4C 22 A7 - .byte $A0, $8C, $A2, $4B, $AD, $02, $20, $A9, $20, $8D, $06, $20, $8C, $06, $20, $A0 ; CPU:$A71E PRG:271E A0 8C A2 4B AD 02 20 A9 20 8D 06 20 8C 06 20 A0 - .byte $06, $B5, $00, $D0, $0B, $A9, $24, $8D, $07, $20, $E8, $88, $D0, $F3, $B5, $00 ; CPU:$A72E PRG:272E 06 B5 00 D0 0B A9 24 8D 07 20 E8 88 D0 F3 B5 00 - .byte $8D, $07, $20, $E8, $88, $10, $F7, $B5, $00, $8D, $07, $20, $60, $C0, $A7, $C6 ; CPU:$A73E PRG:273E 8D 07 20 E8 88 10 F7 B5 00 8D 07 20 60 C0 A7 C6 - .byte $A7, $D7, $A7, $F3, $A7, $0D, $A8, $28, $A8, $43, $A8, $5E, $A8, $62, $A8, $6D ; CPU:$A74E PRG:274E A7 D7 A7 F3 A7 0D A8 28 A8 43 A8 5E A8 62 A8 6D - .byte $A8, $79, $A8, $99, $A8, $B7, $A8, $69, $A7, $D1, $A7, $C0, $23, $40, $FF, $FF ; CPU:$A75E PRG:275E A8 79 A8 99 A8 B7 A8 69 A7 D1 A7 C0 23 40 FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $00, $00, $00, $00, $00, $00, $00, $00, $55, $11 ; CPU:$A76E PRG:276E FF FF FF FF FF FF 00 00 00 00 00 00 00 00 55 11 - .byte $00, $00, $00, $00, $00, $55, $05, $05, $05, $00, $00, $05, $05, $05, $00, $00 ; CPU:$A77E PRG:277E 00 00 00 00 00 55 05 05 05 00 00 05 05 05 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$A78E PRG:278E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0F, $0F ; CPU:$A79E PRG:279E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F 0F - .byte $30, $02, $0F, $0F, $16, $02, $0F, $16, $0F, $16, $0F, $0F, $16, $16, $0F, $0F ; CPU:$A7AE PRG:27AE 30 02 0F 0F 16 02 0F 16 0F 16 0F 0F 16 16 0F 0F - .byte $30, $02, $63, $20, $03, $01, $1E, $19, $6C, $20, $08, $11, $12, $26, $1C, $0C ; CPU:$A7BE PRG:27BE 30 02 63 20 03 01 1E 19 6C 20 08 11 12 26 1C 0C - .byte $18, $1B, $0E, $75, $20, $03, $02, $1E, $19, $04, $21, $19, $98, $8F, $CC, $9D ; CPU:$A7CE PRG:27CE 18 1B 0E 75 20 03 02 1E 19 04 21 19 98 8F CC 9D - .byte $8F, $CC, $8F, $9C, $8F, $9C, $CC, $8F, $8F, $8F, $CC, $9D, $8F, $CC, $9D, $8F ; CPU:$A7DE PRG:27DE 8F CC 8F 9C 8F 9C CC 8F 8F 8F CC 9D 8F CC 9D 8F - .byte $9D, $8F, $CC, $8F, $99, $25, $21, $17, $9D, $9E, $8F, $9B, $9F, $9C, $93, $9D ; CPU:$A7EE PRG:27EE 9D 8F CC 8F 99 25 21 17 9D 9E 8F 9B 9F 9C 93 9D - .byte $9E, $98, $8F, $9D, $8F, $98, $8F, $9D, $9E, $FE, $8F, $FE, $8F, $9F, $9C, $45 ; CPU:$A7FE PRG:27FE 9E 98 8F 9D 8F 98 8F 9D 9E FE 8F FE 8F 9F 9C 45 - .byte $21, $18, $98, $8F, $9E, $9A, $8F, $9C, $CC, $9A, $8F, $9F, $9C, $FE, $8F, $9D ; CPU:$A80E PRG:280E 21 18 98 8F 9E 9A 8F 9C CC 9A 8F 9F 9C FE 8F 9D - .byte $9E, $98, $8F, $9D, $8F, $FE, $8F, $9A, $8F, $99, $64, $21, $18, $98, $8F, $9B ; CPU:$A81E PRG:281E 9E 98 8F 9D 8F FE 8F 9A 8F 99 64 21 18 98 8F 9B - .byte $9D, $9E, $9A, $8F, $99, $93, $9D, $8F, $9B, $FE, $8F, $93, $9D, $8F, $9B, $93 ; CPU:$A82E PRG:282E 9D 9E 9A 8F 99 93 9D 8F 9B FE 8F 93 9D 8F 9B 93 - .byte $9D, $8F, $9B, $9F, $9C, $83, $21, $18, $98, $8F, $CC, $CC, $CC, $CC, $CC, $CC ; CPU:$A83E PRG:283E 9D 8F 9B 9F 9C 83 21 18 98 8F CC CC CC CC CC CC - .byte $CC, $CC, $C7, $C7, $C7, $C7, $C7, $C7, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC ; CPU:$A84E PRG:284E CC CC C7 C7 C7 C7 C7 C7 CC CC CC CC CC CC CC CC - .byte $A4, $21, $01, $9B, $EC, $21, $08, $01, $24, $19, $15, $0A, $22, $0E, $1B, $2C ; CPU:$A85E PRG:285E A4 21 01 9B EC 21 08 01 24 19 15 0A 22 0E 1B 2C - .byte $22, $09, $02, $24, $19, $15, $0A, $22, $0E, $1B, $1C, $A2, $22, $1D, $1D, $16 ; CPU:$A86E PRG:286E 22 09 02 24 19 15 0A 22 0E 1B 1C A2 22 1D 1D 16 - .byte $24, $0A, $17, $0D, $24, $87, $24, $01, $09, $08, $02, $24, $01, $09, $08, $08 ; CPU:$A87E PRG:287E 24 0A 17 0D 24 87 24 01 09 08 02 24 01 09 08 08 - .byte $24, $17, $0A, $16, $0C, $18, $24, $15, $1D, $0D, $25, $23, $23, $1B, $0B, $0A ; CPU:$A88E PRG:288E 24 17 0A 16 0C 18 24 15 1D 0D 25 23 23 1B 0B 0A - .byte $17, $0D, $0A, $12, $24, $0C, $18, $25, $24, $15, $1D, $0D, $25, $24, $12, $1C ; CPU:$A89E PRG:289E 17 0D 0A 12 24 0C 18 25 24 15 1D 0D 25 24 12 1C - .byte $24, $15, $12, $0C, $0E, $17, $1C, $0E, $0D, $63, $23, $1B, $0B, $22, $24, $17 ; CPU:$A8AE PRG:28AE 24 15 12 0C 0E 17 1C 0E 0D 63 23 1B 0B 22 24 17 - .byte $12, $17, $1D, $0E, $17, $0D, $18, $24, $18, $0F, $24, $0A, $16, $0E, $1B, $12 ; CPU:$A8BE PRG:28BE 12 17 1D 0E 17 0D 18 24 18 0F 24 0A 16 0E 1B 12 - .byte $0C, $0A, $24, $12, $17, $0C, $25, $FB, $AC, $BC, $AD, $76, $AE, $26, $AF, $A5 ; CPU:$A8CE PRG:28CE 0C 0A 24 12 17 0C 25 FB AC BC AD 76 AE 26 AF A5 - .byte $AF, $71, $B0, $2F, $B1, $BF, $B1, $8D, $B2, $FB, $B2, $CB, $B3, $9B, $B4, $8D ; CPU:$A8DE PRG:28DE AF 71 B0 2F B1 BF B1 8D B2 FB B2 CB B3 9B B4 8D - .byte $B5, $3D, $B6, $C1, $B6, $93, $B7, $BB, $A9, $C1, $A9, $C7, $A9, $CD, $A9, $D5 ; CPU:$A8EE PRG:28EE B5 3D B6 C1 B6 93 B7 BB A9 C1 A9 C7 A9 CD A9 D5 - .byte $A9, $DD, $A9, $E3, $A9, $E7, $A9, $ED, $A9, $F1, $A9, $F7, $A9, $FD, $A9, $05 ; CPU:$A8FE PRG:28FE A9 DD A9 E3 A9 E7 A9 ED A9 F1 A9 F7 A9 FD A9 05 - .byte $AA, $2D, $AA, $39, $AA, $35, $AA, $3D, $AA, $45, $AA, $43, $AA, $47, $AA, $49 ; CPU:$A90E PRG:290E AA 2D AA 39 AA 35 AA 3D AA 45 AA 43 AA 47 AA 49 - .byte $AA, $5F, $AA, $65, $AA, $6D, $AA, $69, $AA, $7D, $AA, $79, $AA, $8D, $AA, $89 ; CPU:$A91E PRG:291E AA 5F AA 65 AA 6D AA 69 AA 7D AA 79 AA 8D AA 89 - .byte $AA, $99, $AA, $A3, $AA, $AB, $AA, $B3, $AA, $BB, $AA, $C7, $AA, $CD, $AA, $DD ; CPU:$A92E PRG:292E AA 99 AA A3 AA AB AA B3 AA BB AA C7 AA CD AA DD - .byte $AA, $DB, $AA, $E1, $AA, $ED, $AA, $FD, $AA, $03, $AB, $07, $AB, $0B, $AB, $13 ; CPU:$A93E PRG:293E AA DB AA E1 AA ED AA FD AA 03 AB 07 AB 0B AB 13 - .byte $AB, $11, $AB, $0F, $AB, $1D, $AB, $2F, $AB, $41, $AB, $51, $AB, $55, $AB, $3F ; CPU:$A94E PRG:294E AB 11 AB 0F AB 1D AB 2F AB 41 AB 51 AB 55 AB 3F - .byte $AB, $2D, $AB, $1B, $AB, $65, $AB, $85, $AB, $87, $AB, $8B, $AB, $99, $AB, $AB ; CPU:$A95E PRG:295E AB 2D AB 1B AB 65 AB 85 AB 87 AB 8B AB 99 AB AB - .byte $AB, $B5, $AB, $C7, $AB, $CD, $AB, $CF, $AB, $D7, $AB, $DD, $AB, $E5, $AB, $EB ; CPU:$A96E PRG:296E AB B5 AB C7 AB CD AB CF AB D7 AB DD AB E5 AB EB - .byte $AB, $F1, $AB, $F9, $AB, $01, $AC, $19, $AC, $1F, $AC, $1B, $AC, $21, $AC, $25 ; CPU:$A97E PRG:297E AB F1 AB F9 AB 01 AC 19 AC 1F AC 1B AC 21 AC 25 - .byte $AC, $29, $AC, $2F, $AC, $35, $AC, $41, $AC, $49, $AC, $53, $AC, $6B, $AC, $67 ; CPU:$A98E PRG:298E AC 29 AC 2F AC 35 AC 41 AC 49 AC 53 AC 6B AC 67 - .byte $AC, $4F, $AC, $7F, $AC, $8D, $AC, $99, $AC, $A5, $AC, $B1, $AC, $B7, $AC, $BD ; CPU:$A99E PRG:299E AC 4F AC 7F AC 8D AC 99 AC A5 AC B1 AC B7 AC BD - .byte $AC, $CD, $AC, $DD, $AC, $E1, $AC, $E7, $AC, $F9, $AC, $EB, $AC, $00, $60, $04 ; CPU:$A9AE PRG:29AE AC CD AC DD AC E1 AC E7 AC F9 AC EB AC 00 60 04 - .byte $30, $08, $FF, $00, $5C, $1E, $58, $00, $FF, $00, $34, $08, $A0, $00, $FF, $04 ; CPU:$A9BE PRG:29BE 30 08 FF 00 5C 1E 58 00 FF 00 34 08 A0 00 FF 04 - .byte $68, $00, $50, $04, $28, $00, $FF, $00, $08, $18, $40, $00, $58, $04, $FF, $00 ; CPU:$A9CE PRG:29CE 68 00 50 04 28 00 FF 00 08 18 40 00 58 04 FF 00 - .byte $78, $1C, $A0, $19, $FF, $1C, $64, $18, $FF, $00, $90, $10, $80, $00, $FF, $00 ; CPU:$A9DE PRG:29DE 78 1C A0 19 FF 1C 64 18 FF 00 90 10 80 00 FF 00 - .byte $90, $04, $FF, $00, $5C, $1C, $40, $00, $FF, $00, $4C, $1E, $68, $00, $FF, $00 ; CPU:$A9EE PRG:29EE 90 04 FF 00 5C 1C 40 00 FF 00 4C 1E 68 00 FF 00 - .byte $60, $10, $D8, $18, $38, $1F, $FF, $00, $30, $10, $30, $08, $20, $18, $20, $00 ; CPU:$A9FE PRG:29FE 60 10 D8 18 38 1F FF 00 30 10 30 08 20 18 20 00 - .byte $30, $10, $30, $08, $20, $18, $20, $00, $30, $10, $30, $08, $20, $18, $20, $00 ; CPU:$AA0E PRG:2A0E 30 10 30 08 20 18 20 00 30 10 30 08 20 18 20 00 - .byte $30, $10, $30, $08, $20, $18, $20, $00, $30, $10, $30, $08, $20, $18, $20, $10 ; CPU:$AA1E PRG:2A1E 30 10 30 08 20 18 20 00 30 10 30 08 20 18 20 10 - .byte $10, $08, $C0, $10, $30, $18, $FF, $18, $FF, $18, $FF, $08, $FF, $08, $FF, $00 ; CPU:$AA2E PRG:2A2E 10 08 C0 10 30 18 FF 18 FF 18 FF 08 FF 08 FF 00 - .byte $B0, $10, $C0, $00, $FF, $00, $C0, $1C, $40, $00, $FF, $00, $18, $1C, $38, $19 ; CPU:$AA3E PRG:2A3E B0 10 C0 00 FF 00 C0 1C 40 00 FF 00 18 1C 38 19 - .byte $40, $1C, $40, $18, $48, $1C, $20, $00, $20, $10, $20, $00, $20, $10, $20, $00 ; CPU:$AA4E PRG:2A4E 40 1C 40 18 48 1C 20 00 20 10 20 00 20 10 20 00 - .byte $FF, $00, $32, $08, $90, $00, $FF, $00, $92, $18, $FF, $0C, $04, $1C, $34, $14 ; CPU:$AA5E PRG:2A5E FF 00 32 08 90 00 FF 00 92 18 FF 0C 04 1C 34 14 - .byte $60, $10, $60, $0C, $60, $04, $60, $00, $60, $1C, $60, $10, $04, $00, $34, $1C ; CPU:$AA6E PRG:2A6E 60 10 60 0C 60 04 60 00 60 1C 60 10 04 00 34 1C - .byte $60, $14, $60, $10, $60, $0C, $60, $04, $60, $00, $60, $14, $04, $04, $34, $00 ; CPU:$AA7E PRG:2A7E 60 14 60 10 60 0C 60 04 60 00 60 14 04 04 34 00 - .byte $60, $1C, $60, $14, $60, $10, $60, $0C, $60, $04, $60, $10, $0C, $18, $D0, $14 ; CPU:$AA8E PRG:2A8E 60 1C 60 14 60 10 60 0C 60 04 60 10 0C 18 D0 14 - .byte $20, $10, $FF, $00, $FF, $1C, $28, $00, $08, $1C, $48, $00, $FF, $00, $50, $08 ; CPU:$AA9E PRG:2A9E 20 10 FF 00 FF 1C 28 00 08 1C 48 00 FF 00 50 08 - .byte $40, $18, $40, $00, $FF, $00, $50, $18, $40, $08, $40, $00, $FF, $00, $A0, $10 ; CPU:$AAAE PRG:2AAE 40 18 40 00 FF 00 50 18 40 08 40 00 FF 00 A0 10 - .byte $E0, $10, $30, $11, $40, $01, $40, $00, $FF, $00, $AC, $10, $FF, $00, $FF, $00 ; CPU:$AABE PRG:2ABE E0 10 30 11 40 01 40 00 FF 00 AC 10 FF 00 FF 00 - .byte $38, $10, $E8, $14, $24, $10, $40, $14, $74, $11, $94, $19, $FF, $10, $10, $00 ; CPU:$AACE PRG:2ACE 38 10 E8 14 24 10 40 14 74 11 94 19 FF 10 10 00 - .byte $FF, $00, $FF, $00, $08, $18, $48, $00, $58, $1C, $48, $00, $70, $1E, $FF, $00 ; CPU:$AADE PRG:2ADE FF 00 FF 00 08 18 48 00 58 1C 48 00 70 1E FF 00 - .byte $08, $18, $78, $00, $58, $04, $60, $00, $38, $0A, $18, $0C, $A8, $00, $FF, $00 ; CPU:$AAEE PRG:2AEE 08 18 78 00 58 04 60 00 38 0A 18 0C A8 00 FF 00 - .byte $08, $08, $78, $00, $FF, $1C, $62, $18, $FF, $1C, $82, $18, $FF, $1C, $A2, $18 ; CPU:$AAFE PRG:2AFE 08 08 78 00 FF 1C 62 18 FF 1C 82 18 FF 1C A2 18 - .byte $FF, $04, $20, $04, $20, $00, $E4, $18, $FF, $00, $C0, $18, $FF, $1C, $40, $0C ; CPU:$AB0E PRG:2B0E FF 04 20 04 20 00 E4 18 FF 00 C0 18 FF 1C 40 0C - .byte $60, $1C, $60, $0C, $60, $1C, $60, $0C, $60, $1C, $60, $0C, $60, $1C, $60, $00 ; CPU:$AB1E PRG:2B1E 60 1C 60 0C 60 1C 60 0C 60 1C 60 0C 60 1C 60 00 - .byte $40, $10, $60, $00, $60, $10, $60, $00, $60, $10, $60, $00, $60, $10, $60, $00 ; CPU:$AB2E PRG:2B2E 40 10 60 00 60 10 60 00 60 10 60 00 60 10 60 00 - .byte $60, $04, $40, $14, $60, $04, $60, $14, $60, $04, $60, $14, $60, $04, $60, $14 ; CPU:$AB3E PRG:2B3E 60 04 40 14 60 04 60 14 60 04 60 14 60 04 60 14 - .byte $60, $04, $60, $18, $40, $08, $20, $08, $40, $18, $60, $08, $60, $18, $60, $08 ; CPU:$AB4E PRG:2B4E 60 04 60 18 40 08 20 08 40 18 60 08 60 18 60 08 - .byte $60, $18, $60, $08, $60, $18, $60, $08, $80, $10, $80, $17, $80, $14, $20, $08 ; CPU:$AB5E PRG:2B5E 60 18 60 08 60 18 60 08 80 10 80 17 80 14 20 08 - .byte $40, $06, $20, $08, $10, $10, $28, $18, $10, $1A, $20, $18, $48, $14, $18, $08 ; CPU:$AB6E PRG:2B6E 40 06 20 08 10 10 28 18 10 1A 20 18 48 14 18 08 - .byte $70, $0D, $A0, $18, $98, $1C, $80, $00, $FF, $00, $F8, $04, $40, $00, $70, $10 ; CPU:$AB7E PRG:2B7E 70 0D A0 18 98 1C 80 00 FF 00 F8 04 40 00 70 10 - .byte $C0, $0E, $5C, $10, $B8, $00, $B8, $1E, $20, $00, $FF, $00, $80, $10, $C0, $14 ; CPU:$AB8E PRG:2B8E C0 0E 5C 10 B8 00 B8 1E 20 00 FF 00 80 10 C0 14 - .byte $2C, $10, $48, $14, $6C, $11, $A0, $19, $50, $1C, $44, $18, $FF, $00, $04, $08 ; CPU:$AB9E PRG:2B9E 2C 10 48 14 6C 11 A0 19 50 1C 44 18 FF 00 04 08 - .byte $80, $04, $1C, $08, $D0, $0C, $FF, $10, $10, $18, $C0, $14, $30, $10, $4C, $00 ; CPU:$ABAE PRG:2BAE 80 04 1C 08 D0 0C FF 10 10 18 C0 14 30 10 4C 00 - .byte $2C, $10, $50, $00, $68, $04, $30, $08, $FF, $10, $08, $00, $78, $10, $50, $00 ; CPU:$ABBE PRG:2BBE 2C 10 50 00 68 04 30 08 FF 10 08 00 78 10 50 00 - .byte $FF, $00, $74, $08, $A0, $18, $A0, $00, $FF, $00, $A0, $1C, $20, $1E, $FF, $00 ; CPU:$ABCE PRG:2BCE FF 00 74 08 A0 18 A0 00 FF 00 A0 1C 20 1E FF 00 - .byte $70, $10, $E0, $10, $A0, $00, $FF, $00, $04, $08, $A8, $00, $FF, $00, $04, $08 ; CPU:$ABDE PRG:2BDE 70 10 E0 10 A0 00 FF 00 04 08 A8 00 FF 00 04 08 - .byte $D8, $00, $FF, $00, $04, $08, $E0, $08, $28, $00, $FF, $10, $18, $00, $40, $08 ; CPU:$ABEE PRG:2BEE D8 00 FF 00 04 08 E0 08 28 00 FF 10 18 00 40 08 - .byte $80, $10, $28, $10, $58, $18, $80, $00, $80, $08, $80, $10, $80, $18, $80, $00 ; CPU:$ABFE PRG:2BFE 80 10 28 10 58 18 80 00 80 08 80 10 80 18 80 00 - .byte $80, $08, $80, $10, $80, $18, $80, $00, $80, $08, $80, $08, $20, $08, $A0, $18 ; CPU:$AC0E PRG:2C0E 80 08 80 10 80 18 80 00 80 08 80 08 20 08 A0 18 - .byte $FF, $18, $20, $18, $A0, $08, $FF, $00, $70, $10, $70, $00, $70, $10, $70, $00 ; CPU:$AC1E PRG:2C1E FF 18 20 18 A0 08 FF 00 70 10 70 00 70 10 70 00 - .byte $FF, $00, $60, $10, $60, $00, $FF, $1C, $40, $0C, $40, $10, $18, $00, $18, $1C ; CPU:$AC2E PRG:2C2E FF 00 60 10 60 00 FF 1C 40 0C 40 10 18 00 18 1C - .byte $40, $00, $FF, $00, $40, $10, $80, $00, $D8, $1C, $40, $00, $80, $00, $C0, $1C ; CPU:$AC3E PRG:2C3E 40 00 FF 00 40 10 80 00 D8 1C 40 00 80 00 C0 1C - .byte $40, $10, $10, $1C, $40, $0C, $50, $1C, $50, $0C, $50, $1C, $50, $0C, $50, $1C ; CPU:$AC4E PRG:2C4E 40 10 10 1C 40 0C 50 1C 50 0C 50 1C 50 0C 50 1C - .byte $50, $0C, $50, $1C, $50, $0C, $50, $1C, $50, $10, $10, $04, $40, $14, $50, $04 ; CPU:$AC5E PRG:2C5E 50 0C 50 1C 50 0C 50 1C 50 10 10 04 40 14 50 04 - .byte $50, $14, $50, $04, $50, $14, $50, $04, $50, $14, $50, $04, $50, $14, $50, $04 ; CPU:$AC6E PRG:2C6E 50 14 50 04 50 14 50 04 50 14 50 04 50 14 50 04 - .byte $50, $00, $18, $04, $10, $08, $60, $0C, $3C, $0A, $58, $01, $80, $04, $FF, $00 ; CPU:$AC7E PRG:2C7E 50 00 18 04 10 08 60 0C 3C 0A 58 01 80 04 FF 00 - .byte $30, $10, $A0, $18, $10, $08, $F0, $10, $E0, $00, $FF, $00, $10, $08, $88, $18 ; CPU:$AC8E PRG:2C8E 30 10 A0 18 10 08 F0 10 E0 00 FF 00 10 08 88 18 - .byte $08, $08, $E8, $10, $A0, $00, $FF, $00, $30, $18, $68, $08, $68, $10, $C0, $10 ; CPU:$AC9E PRG:2C9E 08 08 E8 10 A0 00 FF 00 30 18 68 08 68 10 C0 10 - .byte $F0, $08, $FF, $00, $40, $04, $34, $08, $FF, $00, $80, $10, $80, $00, $FF, $00 ; CPU:$ACAE PRG:2CAE F0 08 FF 00 40 04 34 08 FF 00 80 10 80 00 FF 00 - .byte $62, $10, $70, $0E, $54, $10, $DA, $10, $50, $08, $48, $18, $48, $00, $FF, $00 ; CPU:$ACBE PRG:2CBE 62 10 70 0E 54 10 DA 10 50 08 48 18 48 00 FF 00 - .byte $60, $10, $98, $14, $20, $10, $E4, $10, $50, $18, $48, $08, $48, $00, $FF, $1C ; CPU:$ACCE PRG:2CCE 60 10 98 14 20 10 E4 10 50 18 48 08 48 00 FF 1C - .byte $80, $19, $FF, $00, $58, $10, $80, $00, $FF, $1C, $80, $18, $FF, $00, $10, $1C ; CPU:$ACDE PRG:2CDE 80 19 FF 00 58 10 80 00 FF 1C 80 18 FF 00 10 1C - .byte $E0, $10, $E0, $14, $88, $10, $80, $08, $C8, $08, $A8, $00, $FF, $20, $FE, $3A ; CPU:$ACEE PRG:2CEE E0 10 E0 14 88 10 80 08 C8 08 A8 00 FF 20 FE 3A - .byte $0F, $00, $FE, $38, $FF, $00, $FE, $36, $60, $00, $FE, $3E, $1F, $00, $FC, $40 ; CPU:$ACFE PRG:2CFE 0F 00 FE 38 FF 00 FE 36 60 00 FE 3E 1F 00 FC 40 - .byte $07, $00, $FC, $3C, $1F, $00, $FC, $42, $1F, $00, $FC, $44, $07, $00, $F8, $2C ; CPU:$AD0E PRG:2D0E 07 00 FC 3C 1F 00 FC 42 1F 00 FC 44 07 00 F8 2C - .byte $E8, $2C, $DE, $2A, $27, $1A, $D2, $2C, $D2, $04, $08, $AA, $D2, $06, $0A, $AA ; CPU:$AD1E PRG:2D1E E8 2C DE 2A 27 1A D2 2C D2 04 08 AA D2 06 0A AA - .byte $C0, $32, $B4, $2C, $B4, $04, $0C, $AA, $B4, $06, $0E, $AA, $AA, $04, $12, $AA ; CPU:$AD2E PRG:2D2E C0 32 B4 2C B4 04 0C AA B4 06 0E AA AA 04 12 AA - .byte $A8, $00, $12, $AA, $9E, $06, $14, $AA, $9C, $32, $9C, $34, $9C, $34, $9C, $00 ; CPU:$AD3E PRG:2D3E A8 00 12 AA 9E 06 14 AA 9C 32 9C 34 9C 34 9C 00 - .byte $12, $AA, $90, $2C, $80, $2C, $78, $06, $0E, $AA, $76, $00, $0E, $AA, $70, $2C ; CPU:$AD4E PRG:2D4E 12 AA 90 2C 80 2C 78 06 0E AA 76 00 0E AA 70 2C - .byte $6A, $26, $1C, $FF, $5E, $4E, $84, $06, $5C, $34, $5C, $34, $5C, $38, $1F, $00 ; CPU:$AD5E PRG:2D5E 6A 26 1C FF 5E 4E 84 06 5C 34 5C 34 5C 38 1F 00 - .byte $5A, $4E, $84, $86, $58, $2C, $58, $4E, $84, $06, $50, $2C, $44, $2C, $42, $28 ; CPU:$AD6E PRG:2D6E 5A 4E 84 86 58 2C 58 4E 84 06 50 2C 44 2C 42 28 - .byte $38, $00, $0E, $FF, $38, $04, $10, $FF, $36, $2E, $03, $24, $06, $18, $FF, $22 ; CPU:$AD7E PRG:2D7E 38 00 0E FF 38 04 10 FF 36 2E 03 24 06 18 FF 22 - .byte $00, $16, $FF, $20, $06, $14, $FF, $1E, $00, $02, $FF, $1E, $00, $12, $FF, $1C ; CPU:$AD8E PRG:2D8E 00 16 FF 20 06 14 FF 1E 00 02 FF 1E 00 12 FF 1C - .byte $04, $10, $FF, $16, $1C, $10, $AA, $14, $32, $14, $1E, $0E, $AA, $14, $20, $10 ; CPU:$AD9E PRG:2D9E 04 10 FF 16 1C 10 AA 14 32 14 1E 0E AA 14 20 10 - .byte $AA, $14, $22, $12, $AA, $14, $26, $02, $FF, $12, $24, $10, $AA, $00, $30, $FC ; CPU:$ADAE PRG:2DAE AA 14 22 12 AA 14 26 02 FF 12 24 10 AA 00 30 FC - .byte $2E, $01, $EC, $32, $E4, $2A, $27, $1A, $E4, $4C, $64, $00, $DA, $00, $12, $FF ; CPU:$ADBE PRG:2DBE 2E 01 EC 32 E4 2A 27 1A E4 4C 64 00 DA 00 12 FF - .byte $DA, $04, $14, $FF, $D0, $06, $06, $FF, $D0, $00, $08, $FF, $C6, $00, $12, $FF ; CPU:$ADCE PRG:2DCE DA 04 14 FF D0 06 06 FF D0 00 08 FF C6 00 12 FF - .byte $C6, $00, $14, $FF, $C0, $2C, $BC, $4C, $7C, $02, $B2, $32, $B2, $00, $14, $FF ; CPU:$ADDE PRG:2DDE C6 00 14 FF C0 2C BC 4C 7C 02 B2 32 B2 00 14 FF - .byte $AA, $4C, $7C, $04, $9E, $2C, $9E, $00, $14, $FF, $9E, $06, $16, $FF, $92, $2C ; CPU:$ADEE PRG:2DEE AA 4C 7C 04 9E 2C 9E 00 14 FF 9E 06 16 FF 92 2C - .byte $90, $00, $14, $FF, $80, $32, $74, $06, $06, $FF, $6C, $00, $12, $FF, $6C, $06 ; CPU:$ADFE PRG:2DFE 90 00 14 FF 80 32 74 06 06 FF 6C 00 12 FF 6C 06 - .byte $14, $FF, $6A, $06, $12, $FF, $6A, $00, $14, $FF, $64, $26, $1C, $FF, $64, $4C ; CPU:$AE0E PRG:2E0E 14 FF 6A 06 12 FF 6A 00 14 FF 64 26 1C FF 64 4C - .byte $24, $06, $58, $2C, $48, $32, $44, $4C, $5C, $08, $42, $4C, $CC, $0A, $3A, $26 ; CPU:$AE1E PRG:2E1E 24 06 58 2C 48 32 44 4C 5C 08 42 4C CC 0A 3A 26 - .byte $12, $FF, $32, $06, $06, $FF, $32, $00, $08, $FF, $30, $2C, $24, $4C, $94, $0C ; CPU:$AE2E PRG:2E2E 12 FF 32 06 06 FF 32 00 08 FF 30 2C 24 4C 94 0C - .byte $24, $04, $0E, $FF, $22, $06, $10, $FF, $20, $32, $20, $04, $12, $FF, $1E, $06 ; CPU:$AE3E PRG:2E3E 24 04 0E FF 22 06 10 FF 20 32 20 04 12 FF 1E 06 - .byte $14, $FF, $1C, $04, $16, $FF, $1C, $36, $90, $00, $1A, $2E, $01, $14, $32, $14 ; CPU:$AE4E PRG:2E4E 14 FF 1C 04 16 FF 1C 36 90 00 1A 2E 01 14 32 14 - .byte $00, $0A, $FF, $14, $00, $0C, $FF, $10, $06, $08, $FF, $10, $02, $0A, $FF, $10 ; CPU:$AE5E PRG:2E5E 00 0A FF 14 00 0C FF 10 06 08 FF 10 02 0A FF 10 - .byte $02, $0C, $FF, $10, $06, $0E, $FF, $00, $07, $FE, $46, $7F, $3C, $FE, $36, $70 ; CPU:$AE6E PRG:2E6E 02 0C FF 10 06 0E FF 00 07 FE 46 7F 3C FE 36 70 - .byte $00, $E8, $2A, $1A, $11, $E8, $06, $16, $AA, $E2, $46, $3F, $3C, $B8, $2A, $27 ; CPU:$AE7E PRG:2E7E 00 E8 2A 1A 11 E8 06 16 AA E2 46 3F 3C B8 2A 27 - .byte $11, $B8, $00, $0A, $AA, $B6, $06, $0A, $AA, $B6, $46, $3F, $3C, $A0, $2A, $27 ; CPU:$AE8E PRG:2E8E 11 B8 00 0A AA B6 06 0A AA B6 46 3F 3C A0 2A 27 - .byte $27, $A0, $0A, $06, $FF, $9E, $08, $06, $FF, $9C, $26, $02, $FF, $90, $4A, $8E ; CPU:$AE9E PRG:2E9E 27 A0 0A 06 FF 9E 08 06 FF 9C 26 02 FF 90 4A 8E - .byte $2A, $1A, $27, $8E, $00, $10, $AA, $8C, $04, $10, $AA, $88, $28, $84, $04, $0E ; CPU:$AEAE PRG:2EAE 2A 1A 27 8E 00 10 AA 8C 04 10 AA 88 28 84 04 0E - .byte $AA, $84, $06, $10, $AA, $80, $34, $80, $48, $00, $00, $78, $2C, $68, $06, $04 ; CPU:$AEBE PRG:2EBE AA 84 06 10 AA 80 34 80 48 00 00 78 2C 68 06 04 - .byte $FF, $68, $00, $0A, $FF, $62, $00, $16, $AA, $60, $32, $58, $06, $14, $FF, $54 ; CPU:$AECE PRG:2ECE FF 68 00 0A FF 62 00 16 AA 60 32 58 06 14 FF 54 - .byte $2C, $54, $4E, $78, $08, $48, $34, $48, $06, $06, $FF, $48, $00, $0C, $FF, $40 ; CPU:$AEDE PRG:2EDE 2C 54 4E 78 08 48 34 48 06 06 FF 48 00 0C FF 40 - .byte $2C, $34, $2A, $07, $27, $32, $04, $04, $AA, $32, $00, $08, $AA, $32, $06, $0C ; CPU:$AEEE PRG:2EEE 2C 34 2A 07 27 32 04 04 AA 32 00 08 AA 32 06 0C - .byte $AA, $32, $04, $10, $AA, $28, $32, $28, $06, $0C, $AA, $1A, $2A, $07, $1A, $1A ; CPU:$AEFE PRG:2EFE AA 32 04 10 AA 28 32 28 06 0C AA 1A 2A 07 1A 1A - .byte $06, $12, $FF, $1A, $00, $16, $FF, $1A, $06, $1A, $FF, $14, $0E, $16, $FF, $12 ; CPU:$AF0E PRG:2F0E 06 12 FF 1A 00 16 FF 1A 06 1A FF 14 0E 16 FF 12 - .byte $0C, $16, $FF, $12, $26, $1C, $FF, $00, $29, $FE, $2E, $01, $F0, $32, $EA, $4C ; CPU:$AF1E PRG:2F1E 0C 16 FF 12 26 1C FF 00 29 FE 2E 01 F0 32 EA 4C - .byte $64, $0E, $E2, $4C, $D4, $10, $DE, $2A, $27, $1A, $D8, $04, $14, $FF, $D8, $06 ; CPU:$AF2E PRG:2F2E 64 0E E2 4C D4 10 DE 2A 27 1A D8 04 14 FF D8 06 - .byte $16, $FF, $D0, $4C, $84, $12, $CA, $2C, $C2, $00, $0A, $FF, $C2, $06, $0C, $FF ; CPU:$AF3E PRG:2F3E 16 FF D0 4C 84 12 CA 2C C2 00 0A FF C2 06 0C FF - .byte $C2, $26, $14, $FF, $BC, $4C, $EC, $14, $BA, $32, $B2, $06, $18, $FF, $B0, $06 ; CPU:$AF4E PRG:2F4E C2 26 14 FF BC 4C EC 14 BA 32 B2 06 18 FF B0 06 - .byte $1A, $FF, $AE, $00, $18, $FF, $AC, $00, $1A, $FF, $A6, $4C, $EC, $16, $9E, $2C ; CPU:$AF5E PRG:2F5E 1A FF AE 00 18 FF AC 00 1A FF A6 4C EC 16 9E 2C - .byte $8A, $32, $88, $46, $01, $01, $74, $2E, $45, $72, $1A, $0C, $00, $70, $18, $0A ; CPU:$AF6E PRG:2F6E 8A 32 88 46 01 01 74 2E 45 72 1A 0C 00 70 18 0A - .byte $00, $6E, $16, $0A, $00, $6C, $14, $0A, $00, $6A, $12, $0A, $00, $68, $10, $0C ; CPU:$AF7E PRG:2F7E 00 6E 16 0A 00 6C 14 0A 00 6A 12 0A 00 68 10 0C - .byte $00, $62, $2E, $45, $50, $32, $3E, $46, $3F, $3C, $30, $48, $00, $00, $2E, $34 ; CPU:$AF8E PRG:2F8E 00 62 2E 45 50 32 3E 46 3F 3C 30 48 00 00 2E 34 - .byte $2C, $2C, $20, $2C, $10, $2C, $00, $11, $FE, $36, $A0, $00, $FE, $3C, $1F, $00 ; CPU:$AF9E PRG:2F9E 2C 2C 20 2C 10 2C 00 11 FE 36 A0 00 FE 3C 1F 00 - .byte $FE, $42, $1F, $00, $FC, $2C, $EE, $2C, $E2, $34, $E2, $32, $DE, $2A, $00, $11 ; CPU:$AFAE PRG:2FAE FE 42 1F 00 FC 2C EE 2C E2 34 E2 32 DE 2A 00 11 - .byte $DA, $06, $08, $AA, $DA, $04, $0A, $AA, $DA, $0E, $0E, $AA, $D8, $0C, $0E, $AA ; CPU:$AFBE PRG:2FBE DA 06 08 AA DA 04 0A AA DA 0E 0E AA D8 0C 0E AA - .byte $D8, $04, $08, $AA, $D8, $06, $0A, $AA, $C8, $2C, $C8, $50, $40, $06, $BC, $50 ; CPU:$AFCE PRG:2FCE D8 04 08 AA D8 06 0A AA C8 2C C8 50 40 06 BC 50 - .byte $60, $07, $B8, $2C, $B8, $50, $A0, $07, $B4, $50, $60, $07, $B0, $2C, $B0, $50 ; CPU:$AFDE PRG:2FDE 60 07 B8 2C B8 50 A0 07 B4 50 60 07 B0 2C B0 50 - .byte $A0, $08, $AC, $50, $D8, $08, $A6, $32, $A4, $0E, $14, $FF, $A2, $0C, $14, $FF ; CPU:$AFEE PRG:2FEE A0 08 AC 50 D8 08 A6 32 A4 0E 14 FF A2 0C 14 FF - .byte $98, $50, $C0, $07, $96, $50, $80, $07, $94, $50, $60, $07, $92, $2C, $92, $50 ; CPU:$AFFE PRG:2FFE 98 50 C0 07 96 50 80 07 94 50 60 07 92 2C 92 50 - .byte $C0, $07, $7A, $32, $76, $28, $6E, $4C, $90, $18, $6E, $38, $0F, $0F, $6E, $3A ; CPU:$B00E PRG:300E C0 07 7A 32 76 28 6E 4C 90 18 6E 38 0F 0F 6E 3A - .byte $0F, $0F, $6C, $26, $18, $AA, $6A, $04, $10, $AA, $68, $00, $10, $AA, $66, $04 ; CPU:$B01E PRG:301E 0F 0F 6C 26 18 AA 6A 04 10 AA 68 00 10 AA 66 04 - .byte $10, $AA, $64, $00, $10, $AA, $62, $2C, $4A, $32, $4A, $2A, $00, $1A, $4A, $06 ; CPU:$B02E PRG:302E 10 AA 64 00 10 AA 62 2C 4A 32 4A 2A 00 1A 4A 06 - .byte $08, $FF, $3E, $2C, $34, $2A, $07, $1A, $34, $06, $10, $AA, $30, $4C, $28, $1A ; CPU:$B03E PRG:303E 08 FF 3E 2C 34 2A 07 1A 34 06 10 AA 30 4C 28 1A - .byte $30, $26, $1A, $FF, $2E, $32, $20, $4C, $20, $1C, $1E, $4C, $E0, $1E, $1C, $4C ; CPU:$B04E PRG:304E 30 26 1A FF 2E 32 20 4C 20 1C 1E 4C E0 1E 1C 4C - .byte $20, $1C, $18, $0E, $0E, $FF, $16, $0C, $0E, $FF, $16, $06, $08, $FF, $16, $06 ; CPU:$B05E PRG:305E 20 1C 18 0E 0E FF 16 0C 0E FF 16 06 08 FF 16 06 - .byte $16, $FF, $00, $23, $FE, $3A, $07, $07, $F0, $2A, $27, $1A, $F0, $00, $0A, $FF ; CPU:$B06E PRG:306E 16 FF 00 23 FE 3A 07 07 F0 2A 27 1A F0 00 0A FF - .byte $F0, $04, $0C, $FF, $E8, $4C, $C4, $20, $D6, $4C, $E4, $22, $D4, $06, $04, $AA ; CPU:$B07E PRG:307E F0 04 0C FF E8 4C C4 20 D6 4C E4 22 D4 06 04 AA - .byte $D2, $00, $02, $AA, $CA, $4C, $E4, $24, $B8, $4C, $E4, $26, $B4, $04, $08, $AA ; CPU:$B08E PRG:308E D2 00 02 AA CA 4C E4 24 B8 4C E4 26 B4 04 08 AA - .byte $B4, $00, $06, $AA, $B0, $46, $1F, $3C, $AC, $48, $00, $00, $AA, $06, $0A, $AA ; CPU:$B09E PRG:309E B4 00 06 AA B0 46 1F 3C AC 48 00 00 AA 06 0A AA - .byte $AA, $06, $0C, $AA, $9E, $0E, $0C, $AA, $9C, $0C, $0C, $AA, $9A, $2C, $8A, $26 ; CPU:$B0AE PRG:30AE AA 06 0C AA 9E 0E 0C AA 9C 0C 0C AA 9A 2C 8A 26 - .byte $1C, $FF, $82, $32, $7A, $1C, $08, $AA, $78, $1E, $06, $AA, $78, $20, $08, $AA ; CPU:$B0BE PRG:30BE 1C FF 82 32 7A 1C 08 AA 78 1E 06 AA 78 20 08 AA - .byte $78, $22, $0A, $AA, $76, $24, $08, $AA, $6E, $4E, $B8, $8C, $6A, $4E, $A0, $8A ; CPU:$B0CE PRG:30CE 78 22 0A AA 76 24 08 AA 6E 4E B8 8C 6A 4E A0 8A - .byte $6A, $4E, $D0, $8A, $66, $4E, $B8, $8A, $5E, $06, $10, $FF, $5C, $00, $12, $FF ; CPU:$B0DE PRG:30DE 6A 4E D0 8A 66 4E B8 8A 5E 06 10 FF 5C 00 12 FF - .byte $56, $4C, $EC, $28, $54, $00, $12, $FF, $4E, $00, $10, $FF, $4E, $26, $02, $FF ; CPU:$B0EE PRG:30EE 56 4C EC 28 54 00 12 FF 4E 00 10 FF 4E 26 02 FF - .byte $42, $4C, $0C, $2A, $3C, $4C, $C4, $2C, $32, $06, $12, $FF, $26, $00, $12, $FF ; CPU:$B0FE PRG:30FE 42 4C 0C 2A 3C 4C C4 2C 32 06 12 FF 26 00 12 FF - .byte $24, $00, $0E, $FF, $22, $00, $0A, $FF, $18, $42, $3F, $00, $18, $3C, $07, $00 ; CPU:$B10E PRG:310E 24 00 0E FF 22 00 0A FF 18 42 3F 00 18 3C 07 00 - .byte $14, $0E, $06, $AA, $14, $0E, $0C, $AA, $12, $0C, $06, $AA, $12, $0C, $0C, $AA ; CPU:$B11E PRG:311E 14 0E 06 AA 14 0E 0C AA 12 0C 06 AA 12 0C 0C AA - .byte $00, $00, $FE, $46, $7F, $3C, $F0, $2A, $1A, $27, $F0, $06, $10, $AA, $EE, $04 ; CPU:$B12E PRG:312E 00 00 FE 46 7F 3C F0 2A 1A 27 F0 06 10 AA EE 04 - .byte $10, $AA, $EC, $46, $3F, $3C, $CA, $4C, $60, $2E, $C8, $4C, $78, $30, $C4, $4C ; CPU:$B13E PRG:313E 10 AA EC 46 3F 3C CA 4C 60 2E C8 4C 78 30 C4 4C - .byte $90, $32, $C2, $4C, $90, $34, $BE, $4C, $90, $36, $BC, $4C, $78, $38, $A0, $04 ; CPU:$B14E PRG:314E 90 32 C2 4C 90 34 BE 4C 90 36 BC 4C 78 38 A0 04 - .byte $10, $FF, $9E, $00, $12, $FF, $9E, $46, $3F, $3C, $9C, $06, $14, $FF, $9A, $04 ; CPU:$B15E PRG:315E 10 FF 9E 00 12 FF 9E 46 3F 3C 9C 06 14 FF 9A 04 - .byte $16, $FF, $82, $56, $1B, $00, $7E, $00, $18, $AA, $7C, $26, $04, $FF, $6C, $48 ; CPU:$B16E PRG:316E 16 FF 82 56 1B 00 7E 00 18 AA 7C 26 04 FF 6C 48 - .byte $00, $00, $6A, $04, $08, $FF, $6A, $06, $0E, $FF, $6A, $04, $14, $FF, $6A, $06 ; CPU:$B17E PRG:317E 00 00 6A 04 08 FF 6A 06 0E FF 6A 04 14 FF 6A 06 - .byte $1A, $FF, $66, $28, $50, $46, $3F, $FF, $34, $2A, $07, $27, $32, $06, $16, $AA ; CPU:$B18E PRG:318E 1A FF 66 28 50 46 3F FF 34 2A 07 27 32 06 16 AA - .byte $32, $06, $1A, $AA, $2A, $4E, $40, $0D, $26, $4E, $60, $0E, $1C, $56, $1D, $00 ; CPU:$B19E PRG:319E 32 06 1A AA 2A 4E 40 0D 26 4E 60 0E 1C 56 1D 00 - .byte $1A, $56, $1D, $00, $12, $2A, $07, $1A, $12, $26, $1C, $FF, $10, $48, $00, $00 ; CPU:$B1AE PRG:31AE 1A 56 1D 00 12 2A 07 1A 12 26 1C FF 10 48 00 00 - .byte $00, $2F, $F2, $2C, $F2, $34, $EE, $2A, $1A, $27, $EE, $4C, $EC, $3A, $EA, $32 ; CPU:$B1BE PRG:31BE 00 2F F2 2C F2 34 EE 2A 1A 27 EE 4C EC 3A EA 32 - .byte $E4, $00, $18, $AA, $E4, $00, $06, $AA, $E2, $06, $16, $AA, $E2, $06, $08, $AA ; CPU:$B1CE PRG:31CE E4 00 18 AA E4 00 06 AA E2 06 16 AA E2 06 08 AA - .byte $E0, $00, $14, $AA, $E0, $00, $0A, $AA, $CC, $04, $16, $AA, $C8, $0E, $16, $AA ; CPU:$B1DE PRG:31DE E0 00 14 AA E0 00 0A AA CC 04 16 AA C8 0E 16 AA - .byte $C8, $00, $14, $AA, $C8, $00, $1A, $AA, $C6, $0C, $16, $AA, $C2, $04, $16, $AA ; CPU:$B1EE PRG:31EE C8 00 14 AA C8 00 1A AA C6 0C 16 AA C2 04 16 AA - .byte $BA, $34, $B2, $06, $16, $AA, $AA, $2C, $A8, $4C, $5C, $3C, $A8, $4C, $8C, $3E ; CPU:$B1FE PRG:31FE BA 34 B2 06 16 AA AA 2C A8 4C 5C 3C A8 4C 8C 3E - .byte $A8, $4C, $DC, $40, $9C, $32, $94, $06, $14, $AA, $94, $00, $16, $AA, $92, $4C ; CPU:$B20E PRG:320E A8 4C DC 40 9C 32 94 06 14 AA 94 00 16 AA 92 4C - .byte $84, $42, $92, $4C, $DC, $44, $82, $2C, $7C, $4C, $7C, $46, $78, $26, $02, $AA ; CPU:$B21E PRG:321E 84 42 92 4C DC 44 82 2C 7C 4C 7C 46 78 26 02 AA - .byte $72, $32, $72, $00, $14, $AA, $72, $06, $16, $AA, $6C, $4C, $DC, $48, $6A, $4C ; CPU:$B22E PRG:322E 72 32 72 00 14 AA 72 06 16 AA 6C 4C DC 48 6A 4C - .byte $DC, $4A, $66, $4C, $DC, $48, $64, $4E, $DC, $07, $60, $4E, $DC, $87, $44, $4C ; CPU:$B23E PRG:323E DC 4A 66 4C DC 48 64 4E DC 07 60 4E DC 87 44 4C - .byte $70, $4C, $44, $4C, $88, $4E, $44, $4C, $A0, $50, $34, $02, $08, $AA, $34, $02 ; CPU:$B24E PRG:324E 70 4C 44 4C 88 4E 44 4C A0 50 34 02 08 AA 34 02 - .byte $16, $AA, $24, $4C, $A8, $52, $22, $4C, $B8, $54, $20, $4C, $C8, $56, $1C, $4C ; CPU:$B25E PRG:325E 16 AA 24 4C A8 52 22 4C B8 54 20 4C C8 56 1C 4C - .byte $6C, $58, $1A, $4C, $5C, $5A, $18, $4C, $4C, $5C, $18, $06, $10, $AA, $18, $06 ; CPU:$B26E PRG:326E 6C 58 1A 4C 5C 5A 18 4C 4C 5C 18 06 10 AA 18 06 - .byte $14, $AA, $18, $06, $18, $AA, $12, $02, $10, $AA, $12, $02, $18, $AA, $00, $1E ; CPU:$B27E PRG:327E 14 AA 18 06 18 AA 12 02 10 AA 12 02 18 AA 00 1E - .byte $FC, $2E, $1F, $F4, $2A, $1A, $27, $F4, $26, $0A, $AA, $F2, $26, $0E, $AA, $F0 ; CPU:$B28E PRG:328E FC 2E 1F F4 2A 1A 27 F4 26 0A AA F2 26 0E AA F0 - .byte $26, $12, $AA, $EE, $26, $16, $AA, $EA, $32, $E2, $2E, $38, $D4, $0E, $0C, $FF ; CPU:$B29E PRG:329E 26 12 AA EE 26 16 AA EA 32 E2 2E 38 D4 0E 0C FF - .byte $D2, $0C, $0C, $FF, $D0, $32, $D0, $34, $D0, $2C, $CA, $2C, $C4, $2E, $6F, $BC ; CPU:$B2AE PRG:32AE D2 0C 0C FF D0 32 D0 34 D0 2C CA 2C C4 2E 6F BC - .byte $32, $B2, $52, $00, $00, $86, $54, $00, $00, $7C, $2E, $45, $76, $2A, $27, $0A ; CPU:$B2BE PRG:32BE 32 B2 52 00 00 86 54 00 00 7C 2E 45 76 2A 27 0A - .byte $76, $1A, $0C, $03, $74, $18, $0A, $03, $72, $16, $0A, $00, $70, $14, $0A, $00 ; CPU:$B2CE PRG:32CE 76 1A 0C 03 74 18 0A 03 72 16 0A 00 70 14 0A 00 - .byte $6E, $12, $0A, $06, $6C, $2E, $65, $6C, $10, $0C, $00, $62, $32, $62, $34, $5A ; CPU:$B2DE PRG:32DE 6E 12 0A 06 6C 2E 65 6C 10 0C 00 62 32 62 34 5A - .byte $2E, $65, $4A, $32, $3E, $2C, $2E, $2C, $20, $2C, $10, $32, $00, $02, $FE, $2C ; CPU:$B2EE PRG:32EE 2E 65 4A 32 3E 2C 2E 2C 20 2C 10 32 00 02 FE 2C - .byte $FE, $42, $3F, $00, $F6, $32, $F2, $34, $EE, $2C, $E2, $32, $DA, $2C, $CE, $32 ; CPU:$B2FE PRG:32FE FE 42 3F 00 F6 32 F2 34 EE 2C E2 32 DA 2C CE 32 - .byte $C6, $4C, $18, $5E, $C6, $4C, $58, $60, $C6, $4C, $98, $62, $BE, $4C, $38, $64 ; CPU:$B30E PRG:330E C6 4C 18 5E C6 4C 58 60 C6 4C 98 62 BE 4C 38 64 - .byte $BE, $4C, $78, $66, $B8, $4C, $28, $68, $B8, $4C, $58, $6A, $B8, $4C, $88, $6C ; CPU:$B31E PRG:331E BE 4C 78 66 B8 4C 28 68 B8 4C 58 6A B8 4C 88 6C - .byte $A8, $2A, $1A, $27, $A8, $04, $0C, $FF, $A8, $04, $10, $FF, $A6, $04, $0E, $FF ; CPU:$B32E PRG:332E A8 2A 1A 27 A8 04 0C FF A8 04 10 FF A6 04 0E FF - .byte $A4, $04, $0C, $FF, $A4, $04, $10, $FF, $9A, $54, $00, $00, $8E, $06, $1A, $AA ; CPU:$B33E PRG:333E A4 04 0C FF A4 04 10 FF 9A 54 00 00 8E 06 1A AA - .byte $8C, $06, $1A, $AA, $8A, $54, $00, $00, $84, $04, $18, $AA, $84, $04, $1A, $AA ; CPU:$B34E PRG:334E 8C 06 1A AA 8A 54 00 00 84 04 18 AA 84 04 1A AA - .byte $7A, $54, $00, $00, $6E, $06, $0A, $FF, $6E, $04, $0E, $FF, $6E, $06, $12, $FF ; CPU:$B35E PRG:335E 7A 54 00 00 6E 06 0A FF 6E 04 0E FF 6E 06 12 FF - .byte $62, $4C, $78, $6E, $46, $26, $04, $FF, $46, $26, $08, $FF, $46, $26, $0C, $FF ; CPU:$B36E PRG:336E 62 4C 78 6E 46 26 04 FF 46 26 08 FF 46 26 0C FF - .byte $46, $26, $10, $FF, $42, $26, $04, $FF, $42, $26, $08, $FF, $42, $26, $0C, $FF ; CPU:$B37E PRG:337E 46 26 10 FF 42 26 04 FF 42 26 08 FF 42 26 0C FF - .byte $42, $26, $10, $FF, $34, $2A, $07, $27, $32, $04, $0E, $AA, $32, $00, $12, $AA ; CPU:$B38E PRG:338E 42 26 10 FF 34 2A 07 27 32 04 0E AA 32 00 12 AA - .byte $32, $04, $16, $AA, $28, $06, $18, $AA, $20, $2A, $07, $1A, $20, $0A, $10, $FF ; CPU:$B39E PRG:339E 32 04 16 AA 28 06 18 AA 20 2A 07 1A 20 0A 10 FF - .byte $1E, $08, $10, $FF, $1A, $0A, $10, $FF, $18, $08, $10, $FF, $16, $02, $04, $FF ; CPU:$B3AE PRG:33AE 1E 08 10 FF 1A 0A 10 FF 18 08 10 FF 16 02 04 FF - .byte $16, $02, $1A, $FF, $10, $02, $04, $FF, $10, $02, $1A, $FF, $00, $29, $FA, $56 ; CPU:$B3BE PRG:33BE 16 02 1A FF 10 02 04 FF 10 02 1A FF 00 29 FA 56 - .byte $1D, $00, $F2, $46, $7F, $FF, $E8, $2A, $27, $1A, $E8, $1C, $14, $FF, $E6, $1E ; CPU:$B3CE PRG:33CE 1D 00 F2 46 7F FF E8 2A 27 1A E8 1C 14 FF E6 1E - .byte $12, $FF, $E6, $20, $14, $FF, $E6, $22, $16, $FF, $E4, $24, $14, $FF, $E2, $4C ; CPU:$B3DE PRG:33DE 12 FF E6 20 14 FF E6 22 16 FF E4 24 14 FF E2 4C - .byte $64, $70, $DA, $4C, $D4, $72, $CC, $4C, $D4, $74, $CC, $00, $0A, $FF, $CC, $06 ; CPU:$B3EE PRG:33EE 64 70 DA 4C D4 72 CC 4C D4 74 CC 00 0A FF CC 06 - .byte $0C, $FF, $C2, $48, $00, $00, $C2, $4E, $84, $07, $BE, $4E, $84, $07, $BA, $4E ; CPU:$B3FE PRG:33FE 0C FF C2 48 00 00 C2 4E 84 07 BE 4E 84 07 BA 4E - .byte $84, $07, $B6, $4E, $84, $0B, $AE, $4E, $EC, $0D, $A6, $4E, $EC, $0D, $A2, $46 ; CPU:$B40E PRG:340E 84 07 B6 4E 84 0B AE 4E EC 0D A6 4E EC 0D A2 46 - .byte $7F, $3F, $9A, $2C, $88, $32, $88, $26, $12, $FF, $7C, $26, $12, $FF, $7C, $46 ; CPU:$B41E PRG:341E 7F 3F 9A 2C 88 32 88 26 12 FF 7C 26 12 FF 7C 46 - .byte $3F, $3F, $76, $4C, $DC, $76, $74, $06, $14, $FF, $72, $04, $12, $FF, $72, $48 ; CPU:$B42E PRG:342E 3F 3F 76 4C DC 76 74 06 14 FF 72 04 12 FF 72 48 - .byte $00, $00, $70, $06, $10, $FF, $6E, $04, $0E, $FF, $6C, $06, $0C, $FF, $6A, $04 ; CPU:$B43E PRG:343E 00 00 70 06 10 FF 6E 04 0E FF 6C 06 0C FF 6A 04 - .byte $0A, $FF, $68, $06, $08, $FF, $66, $34, $66, $04, $06, $FF, $62, $2C, $60, $2C ; CPU:$B44E PRG:344E 0A FF 68 06 08 FF 66 34 66 04 06 FF 62 2C 60 2C - .byte $52, $46, $7F, $FF, $42, $2C, $3A, $32, $28, $4C, $20, $78, $26, $0E, $14, $FF ; CPU:$B45E PRG:345E 52 46 7F FF 42 2C 3A 32 28 4C 20 78 26 0E 14 FF - .byte $24, $0C, $14, $FF, $20, $48, $00, $00, $20, $06, $02, $FF, $20, $06, $08, $FF ; CPU:$B46E PRG:346E 24 0C 14 FF 20 48 00 00 20 06 02 FF 20 06 08 FF - .byte $1A, $26, $1C, $FF, $1A, $04, $02, $FF, $1A, $04, $08, $FF, $18, $26, $1A, $FF ; CPU:$B47E PRG:347E 1A 26 1C FF 1A 04 02 FF 1A 04 08 FF 18 26 1A FF - .byte $16, $26, $18, $FF, $14, $26, $16, $FF, $12, $48, $00, $00, $00, $2F, $FE, $42 ; CPU:$B48E PRG:348E 16 26 18 FF 14 26 16 FF 12 48 00 00 00 2F FE 42 - .byte $0F, $00, $FE, $3E, $0F, $00, $FE, $40, $03, $00, $FE, $44, $03, $00, $F2, $34 ; CPU:$B49E PRG:349E 0F 00 FE 3E 0F 00 FE 40 03 00 FE 44 03 00 F2 34 - .byte $EE, $4C, $EC, $7A, $E4, $2A, $27, $1A, $E4, $02, $06, $FF, $E4, $06, $08, $FF ; CPU:$B4AE PRG:34AE EE 4C EC 7A E4 2A 27 1A E4 02 06 FF E4 06 08 FF - .byte $E4, $06, $16, $FF, $E4, $02, $18, $FF, $E2, $06, $06, $FF, $E2, $02, $08, $FF ; CPU:$B4BE PRG:34BE E4 06 16 FF E4 02 18 FF E2 06 06 FF E2 02 08 FF - .byte $E2, $02, $16, $FF, $E2, $06, $18, $FF, $DC, $4C, $74, $7C, $CA, $4E, $B0, $07 ; CPU:$B4CE PRG:34CE E2 02 16 FF E2 06 18 FF DC 4C 74 7C CA 4E B0 07 - .byte $CA, $4E, $C0, $07, $C8, $4E, $B0, $07, $C8, $4E, $C0, $07, $BC, $04, $08, $FF ; CPU:$B4DE PRG:34DE CA 4E C0 07 C8 4E B0 07 C8 4E C0 07 BC 04 08 FF - .byte $BA, $04, $08, $FF, $BA, $04, $0C, $FF, $B8, $04, $0C, $FF, $B2, $4C, $24, $7E ; CPU:$B4EE PRG:34EE BA 04 08 FF BA 04 0C FF B8 04 0C FF B2 4C 24 7E - .byte $A6, $4C, $8C, $80, $A2, $34, $A2, $4C, $DC, $7E, $A0, $4C, $DC, $7E, $96, $2C ; CPU:$B4FE PRG:34FE A6 4C 8C 80 A2 34 A2 4C DC 7E A0 4C DC 7E 96 2C - .byte $92, $4C, $84, $82, $8A, $26, $02, $FF, $8A, $26, $04, $FF, $88, $26, $02, $FF ; CPU:$B50E PRG:350E 92 4C 84 82 8A 26 02 FF 8A 26 04 FF 88 26 02 FF - .byte $88, $26, $04, $FF, $86, $32, $82, $2C, $76, $04, $14, $FF, $76, $06, $16, $FF ; CPU:$B51E PRG:351E 88 26 04 FF 86 32 82 2C 76 04 14 FF 76 06 16 FF - .byte $72, $32, $72, $4C, $DC, $84, $6E, $06, $14, $FF, $6E, $04, $16, $FF, $6A, $2C ; CPU:$B52E PRG:352E 72 32 72 4C DC 84 6E 06 14 FF 6E 04 16 FF 6A 2C - .byte $68, $42, $07, $00, $5A, $32, $50, $02, $0A, $FF, $44, $4C, $88, $86, $44, $4C ; CPU:$B53E PRG:353E 68 42 07 00 5A 32 50 02 0A FF 44 4C 88 86 44 4C - .byte $70, $88, $44, $4C, $58, $8A, $34, $06, $06, $FF, $34, $06, $08, $FF, $2E, $02 ; CPU:$B54E PRG:354E 70 88 44 4C 58 8A 34 06 06 FF 34 06 08 FF 2E 02 - .byte $12, $FF, $2C, $02, $14, $FF, $2A, $02, $16, $FF, $28, $02, $18, $FF, $24, $4E ; CPU:$B55E PRG:355E 12 FF 2C 02 14 FF 2A 02 16 FF 28 02 18 FF 24 4E - .byte $DC, $08, $20, $4E, $DC, $08, $1C, $4E, $DC, $08, $18, $4E, $DC, $0B, $16, $4C ; CPU:$B56E PRG:356E DC 08 20 4E DC 08 1C 4E DC 08 18 4E DC 0B 16 4C - .byte $78, $8C, $16, $4C, $B8, $8E, $16, $0E, $12, $FF, $14, $0C, $12, $FF, $00, $15 ; CPU:$B57E PRG:357E 78 8C 16 4C B8 8E 16 0E 12 FF 14 0C 12 FF 00 15 - .byte $F4, $2A, $1A, $11, $F4, $02, $1A, $AA, $F0, $02, $0E, $AA, $F0, $02, $08, $AA ; CPU:$B58E PRG:358E F4 2A 1A 11 F4 02 1A AA F0 02 0E AA F0 02 08 AA - .byte $EA, $06, $08, $AA, $E8, $06, $0A, $AA, $E6, $06, $0C, $AA, $E4, $06, $0E, $AA ; CPU:$B59E PRG:359E EA 06 08 AA E8 06 0A AA E6 06 0C AA E4 06 0E AA - .byte $E2, $34, $E2, $02, $06, $AA, $DC, $02, $0E, $AA, $D2, $2C, $BA, $32, $AE, $0E ; CPU:$B5AE PRG:35AE E2 34 E2 02 06 AA DC 02 0E AA D2 2C BA 32 AE 0E - .byte $08, $FF, $AE, $0E, $14, $FF, $AC, $0C, $08, $FF, $AC, $0C, $14, $FF, $A8, $2C ; CPU:$B5BE PRG:35BE 08 FF AE 0E 14 FF AC 0C 08 FF AC 0C 14 FF A8 2C - .byte $9E, $50, $70, $07, $9A, $50, $90, $07, $96, $50, $B0, $0D, $92, $50, $D0, $07 ; CPU:$B5CE PRG:35CE 9E 50 70 07 9A 50 90 07 96 50 B0 0D 92 50 D0 07 - .byte $90, $32, $8A, $50, $B0, $0D, $86, $50, $90, $07, $82, $50, $70, $07, $7E, $50 ; CPU:$B5DE PRG:35DE 90 32 8A 50 B0 0D 86 50 90 07 82 50 70 07 7E 50 - .byte $50, $07, $78, $2C, $6C, $2A, $00, $11, $6C, $06, $06, $AA, $6A, $00, $08, $AA ; CPU:$B5EE PRG:35EE 50 07 78 2C 6C 2A 00 11 6C 06 06 AA 6A 00 08 AA - .byte $68, $06, $0A, $AA, $66, $00, $0C, $AA, $64, $06, $0E, $AA, $60, $32, $5C, $34 ; CPU:$B5FE PRG:35FE 68 06 0A AA 66 00 0C AA 64 06 0E AA 60 32 5C 34 - .byte $58, $2E, $EC, $40, $32, $3E, $2A, $07, $1A, $3E, $26, $18, $FF, $3E, $26, $1A ; CPU:$B60E PRG:360E 58 2E EC 40 32 3E 2A 07 1A 3E 26 18 FF 3E 26 1A - .byte $FF, $38, $2C, $32, $02, $0A, $AA, $20, $4C, $10, $90, $20, $4C, $E0, $92, $1E ; CPU:$B61E PRG:361E FF 38 2C 32 02 0A AA 20 4C 10 90 20 4C E0 92 1E - .byte $32, $1E, $4C, $20, $94, $1E, $4C, $D0, $96, $1A, $2E, $E6, $0A, $32, $00, $05 ; CPU:$B62E PRG:362E 32 1E 4C 20 94 1E 4C D0 96 1A 2E E6 0A 32 00 05 - .byte $FE, $2E, $6D, $F6, $32, $F2, $46, $3F, $FF, $EC, $2A, $1A, $0A, $E6, $2E, $F1 ; CPU:$B63E PRG:363E FE 2E 6D F6 32 F2 46 3F FF EC 2A 1A 0A E6 2E F1 - .byte $E6, $48, $00, $00, $E0, $1A, $0C, $03, $DE, $18, $0A, $03, $DC, $16, $0A, $03 ; CPU:$B64E PRG:364E E6 48 00 00 E0 1A 0C 03 DE 18 0A 03 DC 16 0A 03 - .byte $DA, $32, $DA, $14, $0A, $03, $D8, $2E, $34, $D8, $12, $0A, $03, $D6, $10, $0C ; CPU:$B65E PRG:365E DA 32 DA 14 0A 03 D8 2E 34 D8 12 0A 03 D6 10 0C - .byte $03, $D4, $32, $CA, $2E, $49, $C4, $32, $BA, $2E, $3E, $AA, $32, $A0, $52, $00 ; CPU:$B66E PRG:366E 03 D4 32 CA 2E 49 C4 32 BA 2E 3E AA 32 A0 52 00 - .byte $00, $7E, $2E, $46, $7A, $32, $70, $54, $00, $00, $66, $2E, $66, $66, $2A, $1A ; CPU:$B67E PRG:367E 00 7E 2E 46 7A 32 70 54 00 00 66 2E 66 66 2A 1A - .byte $27, $66, $1A, $0C, $00, $64, $32, $64, $18, $0A, $00, $62, $16, $0A, $00, $60 ; CPU:$B68E PRG:368E 27 66 1A 0C 00 64 32 64 18 0A 00 62 16 0A 00 60 - .byte $14, $0A, $00, $5E, $12, $0A, $00, $5C, $2E, $21, $5C, $10, $0C, $00, $54, $32 ; CPU:$B69E PRG:369E 14 0A 00 5E 12 0A 00 5C 2E 21 5C 10 0C 00 54 32 - .byte $4A, $2C, $3A, $32, $34, $34, $34, $2A, $07, $00, $30, $2C, $20, $32, $1A, $2C ; CPU:$B6AE PRG:36AE 4A 2C 3A 32 34 34 34 2A 07 00 30 2C 20 32 1A 2C - .byte $0A, $32, $00, $24, $FE, $2E, $08, $F2, $32, $F0, $2A, $27, $1A, $F0, $26, $02 ; CPU:$B6BE PRG:36BE 0A 32 00 24 FE 2E 08 F2 32 F0 2A 27 1A F0 26 02 - .byte $FF, $EC, $4C, $B4, $98, $EC, $00, $10, $FF, $E4, $4C, $B4, $9A, $E2, $06, $10 ; CPU:$B6CE PRG:36CE FF EC 4C B4 98 EC 00 10 FF E4 4C B4 9A E2 06 10 - .byte $FF, $DC, $4C, $B4, $9C, $D6, $4C, $D4, $9E, $D4, $06, $04, $AA, $D2, $06, $02 ; CPU:$B6DE PRG:36DE FF DC 4C B4 9C D6 4C D4 9E D4 06 04 AA D2 06 02 - .byte $AA, $D0, $00, $16, $FF, $CA, $4C, $D4, $A0, $C4, $06, $16, $FF, $C0, $4C, $D4 ; CPU:$B6EE PRG:36EE AA D0 00 16 FF CA 4C D4 A0 C4 06 16 FF C0 4C D4 - .byte $A2, $BC, $4E, $D4, $07, $B8, $4E, $D4, $0D, $B4, $06, $04, $AA, $B4, $00, $06 ; CPU:$B6FE PRG:36FE A2 BC 4E D4 07 B8 4E D4 0D B4 06 04 AA B4 00 06 - .byte $AA, $B4, $26, $16, $FF, $B0, $2C, $A8, $26, $0A, $AA, $A0, $2C, $9E, $00, $0A ; CPU:$B70E PRG:370E AA B4 26 16 FF B0 2C A8 26 0A AA A0 2C 9E 00 0A - .byte $AA, $9E, $06, $0C, $AA, $90, $32, $88, $2C, $78, $32, $78, $0E, $04, $AA, $76 ; CPU:$B71E PRG:371E AA 9E 06 0C AA 90 32 88 2C 78 32 78 0E 04 AA 76 - .byte $0C, $04, $AA, $76, $4C, $88, $A4, $76, $4C, $E8, $A6, $6C, $4C, $90, $A8, $6C ; CPU:$B72E PRG:372E 0C 04 AA 76 4C 88 A4 76 4C E8 A6 6C 4C 90 A8 6C - .byte $4C, $E0, $AA, $5E, $4C, $44, $AC, $5C, $06, $10, $FF, $5A, $26, $1C, $FF, $58 ; CPU:$B73E PRG:373E 4C E0 AA 5E 4C 44 AC 5C 06 10 FF 5A 26 1C FF 58 - .byte $00, $14, $FF, $54, $06, $18, $FF, $4C, $4C, $44, $AE, $44, $4C, $00, $B0, $42 ; CPU:$B74E PRG:374E 00 14 FF 54 06 18 FF 4C 4C 44 AE 44 4C 00 B0 42 - .byte $4C, $B4, $B2, $38, $00, $08, $FF, $34, $06, $0C, $FF, $1E, $02, $0E, $FF, $1E ; CPU:$B75E PRG:375E 4C B4 B2 38 00 08 FF 34 06 0C FF 1E 02 0E FF 1E - .byte $02, $12, $FF, $1E, $02, $16, $FF, $1A, $2E, $3F, $1A, $02, $12, $FF, $1A, $4E ; CPU:$B76E PRG:376E 02 12 FF 1E 02 16 FF 1A 2E 3F 1A 02 12 FF 1A 4E - .byte $D4, $07, $16, $4E, $D4, $0D, $14, $0E, $06, $AA, $12, $0C, $06, $AA, $12, $4E ; CPU:$B77E PRG:377E D4 07 16 4E D4 0D 14 0E 06 AA 12 0C 06 AA 12 4E - .byte $D4, $0D, $0C, $32, $00, $30, $FE, $34, $FE, $2C, $F0, $2A, $27, $1A, $F0, $26 ; CPU:$B78E PRG:378E D4 0D 0C 32 00 30 FE 34 FE 2C F0 2A 27 1A F0 26 - .byte $1C, $FF, $EE, $32, $E6, $4C, $64, $B4, $E4, $02, $14, $FF, $E0, $4C, $DC, $B6 ; CPU:$B79E PRG:379E 1C FF EE 32 E6 4C 64 B4 E4 02 14 FF E0 4C DC B6 - .byte $DC, $4C, $64, $B6, $D6, $02, $12, $FF, $D6, $02, $16, $FF, $D6, $4C, $DC, $B6 ; CPU:$B7AE PRG:37AE DC 4C 64 B6 D6 02 12 FF D6 02 16 FF D6 4C DC B6 - .byte $D2, $4C, $64, $B6, $D2, $02, $14, $FF, $CC, $4C, $DC, $B6, $CA, $00, $06, $FF ; CPU:$B7BE PRG:37BE D2 4C 64 B6 D2 02 14 FF CC 4C DC B6 CA 00 06 FF - .byte $CA, $00, $14, $FF, $C6, $4C, $64, $B8, $C6, $4C, $DC, $BA, $C4, $34, $C2, $2C ; CPU:$B7CE PRG:37CE CA 00 14 FF C6 4C 64 B8 C6 4C DC BA C4 34 C2 2C - .byte $BA, $4E, $94, $0D, $BA, $4E, $B0, $0D, $B6, $4E, $94, $0E, $B6, $4E, $B0, $0D ; CPU:$B7DE PRG:37DE BA 4E 94 0D BA 4E B0 0D B6 4E 94 0E B6 4E B0 0D - .byte $B2, $2C, $A2, $2C, $94, $06, $12, $FF, $92, $32, $92, $06, $14, $FF, $90, $06 ; CPU:$B7EE PRG:37EE B2 2C A2 2C 94 06 12 FF 92 32 92 06 14 FF 90 06 - .byte $14, $FF, $8E, $06, $16, $FF, $84, $2C, $7C, $00, $04, $FF, $7C, $00, $12, $FF ; CPU:$B7FE PRG:37FE 14 FF 8E 06 16 FF 84 2C 7C 00 04 FF 7C 00 12 FF - .byte $7C, $00, $16, $FF, $78, $00, $08, $FF, $78, $00, $14, $FF, $78, $00, $1C, $FF ; CPU:$B80E PRG:380E 7C 00 16 FF 78 00 08 FF 78 00 14 FF 78 00 1C FF - .byte $6E, $0E, $10, $FF, $6E, $4E, $CC, $0D, $6C, $0C, $10, $FF, $6A, $32, $6A, $4E ; CPU:$B81E PRG:381E 6E 0E 10 FF 6E 4E CC 0D 6C 0C 10 FF 6A 32 6A 4E - .byte $CC, $0D, $66, $26, $0A, $FF, $64, $26, $0C, $FF, $62, $2C, $52, $32, $4E, $00 ; CPU:$B82E PRG:382E CC 0D 66 26 0A FF 64 26 0C FF 62 2C 52 32 4E 00 - .byte $10, $FF, $4C, $06, $12, $FF, $4A, $4C, $CC, $BC, $42, $02, $12, $FF, $3C, $02 ; CPU:$B83E PRG:383E 10 FF 4C 06 12 FF 4A 4C CC BC 42 02 12 FF 3C 02 - .byte $04, $FF, $3A, $26, $12, $FF, $3A, $02, $1C, $FF, $36, $02, $12, $FF, $34, $4C ; CPU:$B84E PRG:384E 04 FF 3A 26 12 FF 3A 02 1C FF 36 02 12 FF 34 4C - .byte $64, $BE, $34, $4C, $CC, $BE, $30, $2E, $E6, $22, $4C, $A8, $C0, $22, $4C, $CC ; CPU:$B85E PRG:385E 64 BE 34 4C CC BE 30 2E E6 22 4C A8 C0 22 4C CC - .byte $C2, $20, $32, $1C, $4C, $CC, $C4, $16, $0E, $0E, $FF, $16, $0E, $12, $FF, $14 ; CPU:$B86E PRG:386E C2 20 32 1C 4C CC C4 16 0E 0E FF 16 0E 12 FF 14 - .byte $2E, $7E, $14, $0C, $0E, $FF, $14, $0C, $12, $FF, $0C, $32, $0C, $38, $03, $00 ; CPU:$B87E PRG:387E 2E 7E 14 0C 0E FF 14 0C 12 FF 0C 32 0C 38 03 00 - .byte $0C, $3A, $03, $00, $0C, $3E, $07, $00, $0C, $3C, $07, $00, $0C, $36, $C0, $00 ; CPU:$B88E PRG:388E 0C 3A 03 00 0C 3E 07 00 0C 3C 07 00 0C 36 C0 00 - .byte $00, $FF, $FF, $FF, $FF, $FF, $FF, $AA, $AA, $AA, $FF, $FF, $FF ; CPU:$B89E PRG:389E 00 FF FF FF FF FF FF AA AA AA FF FF FF +Data_A6CE: +; Nine bytes between the routine ending at $A6CD and the VRAM copy loop at $A6D7. +; Structure undetermined: no instruction references this address. +; ---- data $A6CE-$A6D6 (9 bytes) ---- + .byte $3F, $12, $02, $30, $00, $3F, $01, $01, $0F ; CPU:$A6CE PRG:26CE 3F 12 02 30 00 3F 01 01 0F +; ----------------------------------------------------------------------------- +; Routine: Sub_A6D7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A6D7: + sta $2007 ; CPU:$A6D7 PRG:26D7 8D 07 20 + dex ; CPU:$A6DA PRG:26DA CA + bne Sub_A6D7 ; CPU:$A6DB PRG:26DB D0 FA + rts ; CPU:$A6DD PRG:26DD 60 +Sub_A6DE: + lda $2002 ; CPU:$A6DE PRG:26DE AD 02 20 + lda $A74B,x ; CPU:$A6E1 PRG:26E1 BD 4B A7 + inx ; CPU:$A6E4 PRG:26E4 E8 + sta VramPtrLo ; CPU:$A6E5 PRG:26E5 85 04 + lda $A74B,x ; CPU:$A6E7 PRG:26E7 BD 4B A7 + inx ; CPU:$A6EA PRG:26EA E8 + sta VramCopyCount ; CPU:$A6EB PRG:26EB 85 05 + sty Zp2C ; CPU:$A6ED PRG:26ED 84 2C + ldy #$01 ; CPU:$A6EF PRG:26EF A0 01 + lda (VramPtrLo),y ; CPU:$A6F1 PRG:26F1 B1 04 + sta $2006 ; CPU:$A6F3 PRG:26F3 8D 06 20 + ldy #$00 ; CPU:$A6F6 PRG:26F6 A0 00 + lda (VramPtrLo),y ; CPU:$A6F8 PRG:26F8 B1 04 + sta $2006 ; CPU:$A6FA PRG:26FA 8D 06 20 + ldy #$02 ; CPU:$A6FD PRG:26FD A0 02 + lda (VramPtrLo),y ; CPU:$A6FF PRG:26FF B1 04 + sta ObjUpdateFlag ; CPU:$A701 PRG:2701 85 0E +; ----------------------------------------------------------------------------- +; Routine: Sub_A703 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A703: + iny ; CPU:$A703 PRG:2703 C8 + lda (VramPtrLo),y ; CPU:$A704 PRG:2704 B1 04 + sta $2007 ; CPU:$A706 PRG:2706 8D 07 20 + dec ObjUpdateFlag ; CPU:$A709 PRG:2709 C6 0E + bne Sub_A703 ; CPU:$A70B PRG:270B D0 F6 + ldy Zp2C ; CPU:$A70D PRG:270D A4 2C + rts ; CPU:$A70F PRG:270F 60 +Sub_A710: + ldy #$95 ; CPU:$A710 PRG:2710 A0 95 + ldx #$9A ; CPU:$A712 PRG:2712 A2 9A + jmp Sub_A722 ; CPU:$A714 PRG:2714 4C 22 A7 +Sub_A717: + ldy #$83 ; CPU:$A717 PRG:2717 A0 83 + ldx #$80 ; CPU:$A719 PRG:2719 A2 80 + jmp Sub_A722 ; CPU:$A71B PRG:271B 4C 22 A7 +Sub_A71E: + ldy #$8C ; CPU:$A71E PRG:271E A0 8C + ldx #$4B ; CPU:$A720 PRG:2720 A2 4B +Sub_A722: + lda $2002 ; CPU:$A722 PRG:2722 AD 02 20 + lda #$20 ; CPU:$A725 PRG:2725 A9 20 + sta $2006 ; CPU:$A727 PRG:2727 8D 06 20 + sty $2006 ; CPU:$A72A PRG:272A 8C 06 20 + ldy #$06 ; CPU:$A72D PRG:272D A0 06 +; ----------------------------------------------------------------------------- +; Routine: Sub_A72F +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A72F: + lda PPUCTRLShadow,x ; CPU:$A72F PRG:272F B5 00 + bne Sub_A73E ; CPU:$A731 PRG:2731 D0 0B + lda #$24 ; CPU:$A733 PRG:2733 A9 24 + sta $2007 ; CPU:$A735 PRG:2735 8D 07 20 + inx ; CPU:$A738 PRG:2738 E8 + dey ; CPU:$A739 PRG:2739 88 + bne Sub_A72F ; CPU:$A73A PRG:273A D0 F3 +; ----------------------------------------------------------------------------- +; Routine: Sub_A73C +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A73C: + lda PPUCTRLShadow,x ; CPU:$A73C PRG:273C B5 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_A73E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_A73E: + sta $2007 ; CPU:$A73E PRG:273E 8D 07 20 + inx ; CPU:$A741 PRG:2741 E8 + dey ; CPU:$A742 PRG:2742 88 + bpl Sub_A73C ; CPU:$A743 PRG:2743 10 F7 + lda PPUCTRLShadow,x ; CPU:$A745 PRG:2745 B5 00 + sta $2007 ; CPU:$A747 PRG:2747 8D 07 20 + rts ; CPU:$A74A PRG:274A 60 +; ---- data $A74B-$A768 (30 bytes) ---- +; 15 x 16-bit pointers to the VRAM write descriptors at $A769-$A8D4 (read by lda $A74B,x at $A6E1). +VramWritePtrTable: + .byte $C0, $A7, $C6, $A7, $D7, $A7, $F3, $A7, $0D, $A8, $28, $A8, $43, $A8, $5E, $A8 ; CPU:$A74B PRG:274B C0 A7 C6 A7 D7 A7 F3 A7 0D A8 28 A8 43 A8 5E A8 + .byte $62, $A8, $6D, $A8, $79, $A8, $99, $A8, $B7, $A8, $69, $A7, $D1, $A7 ; CPU:$A75B PRG:275B 62 A8 6D A8 79 A8 99 A8 B7 A8 69 A7 D1 A7 +; ---- data $A769-$A8D4 (364 bytes) ---- +; VRAM write descriptors: [lo, hi, count, data...]; the routine at $A6DE writes +; hi/lo to $2006 and then count bytes to $2007. +VramWriteData: + .byte $C0, $23, $40, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $00, $00, $00, $00, $00 ; CPU:$A769 PRG:2769 C0 23 40 FF FF FF FF FF FF FF FF 00 00 00 00 00 + .byte $00, $00, $00, $55, $11, $00, $00, $00, $00, $00, $55, $05, $05, $05, $00, $00 ; CPU:$A779 PRG:2779 00 00 00 55 11 00 00 00 00 00 55 05 05 05 00 00 + .byte $05, $05, $05, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$A789 PRG:2789 05 05 05 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$A799 PRG:2799 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .byte $00, $00, $00, $0F, $0F, $30, $02, $0F, $0F, $16, $02, $0F, $16, $0F, $16, $0F ; CPU:$A7A9 PRG:27A9 00 00 00 0F 0F 30 02 0F 0F 16 02 0F 16 0F 16 0F + .byte $0F, $16, $16, $0F, $0F, $30, $02, $63, $20, $03, $01, $1E, $19, $6C, $20, $08 ; CPU:$A7B9 PRG:27B9 0F 16 16 0F 0F 30 02 63 20 03 01 1E 19 6C 20 08 + .byte $11, $12, $26, $1C, $0C, $18, $1B, $0E, $75, $20, $03, $02, $1E, $19, $04, $21 ; CPU:$A7C9 PRG:27C9 11 12 26 1C 0C 18 1B 0E 75 20 03 02 1E 19 04 21 + .byte $19, $98, $8F, $CC, $9D, $8F, $CC, $8F, $9C, $8F, $9C, $CC, $8F, $8F, $8F, $CC ; CPU:$A7D9 PRG:27D9 19 98 8F CC 9D 8F CC 8F 9C 8F 9C CC 8F 8F 8F CC + .byte $9D, $8F, $CC, $9D, $8F, $9D, $8F, $CC, $8F, $99, $25, $21, $17, $9D, $9E, $8F ; CPU:$A7E9 PRG:27E9 9D 8F CC 9D 8F 9D 8F CC 8F 99 25 21 17 9D 9E 8F + .byte $9B, $9F, $9C, $93, $9D, $9E, $98, $8F, $9D, $8F, $98, $8F, $9D, $9E, $FE, $8F ; CPU:$A7F9 PRG:27F9 9B 9F 9C 93 9D 9E 98 8F 9D 8F 98 8F 9D 9E FE 8F + .byte $FE, $8F, $9F, $9C, $45, $21, $18, $98, $8F, $9E, $9A, $8F, $9C, $CC, $9A, $8F ; CPU:$A809 PRG:2809 FE 8F 9F 9C 45 21 18 98 8F 9E 9A 8F 9C CC 9A 8F + .byte $9F, $9C, $FE, $8F, $9D, $9E, $98, $8F, $9D, $8F, $FE, $8F, $9A, $8F, $99, $64 ; CPU:$A819 PRG:2819 9F 9C FE 8F 9D 9E 98 8F 9D 8F FE 8F 9A 8F 99 64 + .byte $21, $18, $98, $8F, $9B, $9D, $9E, $9A, $8F, $99, $93, $9D, $8F, $9B, $FE, $8F ; CPU:$A829 PRG:2829 21 18 98 8F 9B 9D 9E 9A 8F 99 93 9D 8F 9B FE 8F + .byte $93, $9D, $8F, $9B, $93, $9D, $8F, $9B, $9F, $9C, $83, $21, $18, $98, $8F, $CC ; CPU:$A839 PRG:2839 93 9D 8F 9B 93 9D 8F 9B 9F 9C 83 21 18 98 8F CC + .byte $CC, $CC, $CC, $CC, $CC, $CC, $CC, $C7, $C7, $C7, $C7, $C7, $C7, $CC, $CC, $CC ; CPU:$A849 PRG:2849 CC CC CC CC CC CC CC C7 C7 C7 C7 C7 C7 CC CC CC + .byte $CC, $CC, $CC, $CC, $CC, $A4, $21, $01, $9B, $EC, $21, $08, $01, $24, $19, $15 ; CPU:$A859 PRG:2859 CC CC CC CC CC A4 21 01 9B EC 21 08 01 24 19 15 + .byte $0A, $22, $0E, $1B, $2C, $22, $09, $02, $24, $19, $15, $0A, $22, $0E, $1B, $1C ; CPU:$A869 PRG:2869 0A 22 0E 1B 2C 22 09 02 24 19 15 0A 22 0E 1B 1C + .byte $A2, $22, $1D, $1D, $16, $24, $0A, $17, $0D, $24, $87, $24, $01, $09, $08, $02 ; CPU:$A879 PRG:2879 A2 22 1D 1D 16 24 0A 17 0D 24 87 24 01 09 08 02 + .byte $24, $01, $09, $08, $08, $24, $17, $0A, $16, $0C, $18, $24, $15, $1D, $0D, $25 ; CPU:$A889 PRG:2889 24 01 09 08 08 24 17 0A 16 0C 18 24 15 1D 0D 25 + .byte $23, $23, $1B, $0B, $0A, $17, $0D, $0A, $12, $24, $0C, $18, $25, $24, $15, $1D ; CPU:$A899 PRG:2899 23 23 1B 0B 0A 17 0D 0A 12 24 0C 18 25 24 15 1D + .byte $0D, $25, $24, $12, $1C, $24, $15, $12, $0C, $0E, $17, $1C, $0E, $0D, $63, $23 ; CPU:$A8A9 PRG:28A9 0D 25 24 12 1C 24 15 12 0C 0E 17 1C 0E 0D 63 23 + .byte $1B, $0B, $22, $24, $17, $12, $17, $1D, $0E, $17, $0D, $18, $24, $18, $0F, $24 ; CPU:$A8B9 PRG:28B9 1B 0B 22 24 17 12 17 1D 0E 17 0D 18 24 18 0F 24 + .byte $0A, $16, $0E, $1B, $12, $0C, $0A, $24, $12, $17, $0C, $25 ; CPU:$A8C9 PRG:28C9 0A 16 0E 1B 12 0C 0A 24 12 17 0C 25 +; ---- data $A8D5-$A8F4 (32 bytes) ---- +; 16 x 16-bit pointers to the streams at $ACFB-$B8AA (read by lda $A8D5,x at $F3E4); +; the first byte of each stream is loaded into Zp12 as a count. +DataStreamPtrTable: + .byte $FB, $AC, $BC, $AD, $76, $AE, $26, $AF, $A5, $AF, $71, $B0, $2F, $B1, $BF, $B1 ; CPU:$A8D5 PRG:28D5 FB AC BC AD 76 AE 26 AF A5 AF 71 B0 2F B1 BF B1 + .byte $8D, $B2, $FB, $B2, $CB, $B3, $9B, $B4, $8D, $B5, $3D, $B6, $C1, $B6, $93, $B7 ; CPU:$A8E5 PRG:28E5 8D B2 FB B2 CB B3 9B B4 8D B5 3D B6 C1 B6 93 B7 +; ---- data $A8F5-$A9BA (198 bytes) ---- +; 99 x 16-bit pointers to the tile data at $A9BB-$ACFA (read by lda $A8F5,y at $C353 +; and stored per object at $050A/$050B). +ObjTilePtrTable: + .byte $BB, $A9, $C1, $A9, $C7, $A9, $CD, $A9, $D5, $A9, $DD, $A9, $E3, $A9, $E7, $A9 ; CPU:$A8F5 PRG:28F5 BB A9 C1 A9 C7 A9 CD A9 D5 A9 DD A9 E3 A9 E7 A9 + .byte $ED, $A9, $F1, $A9, $F7, $A9, $FD, $A9, $05, $AA, $2D, $AA, $39, $AA, $35, $AA ; CPU:$A905 PRG:2905 ED A9 F1 A9 F7 A9 FD A9 05 AA 2D AA 39 AA 35 AA + .byte $3D, $AA, $45, $AA, $43, $AA, $47, $AA, $49, $AA, $5F, $AA, $65, $AA, $6D, $AA ; CPU:$A915 PRG:2915 3D AA 45 AA 43 AA 47 AA 49 AA 5F AA 65 AA 6D AA + .byte $69, $AA, $7D, $AA, $79, $AA, $8D, $AA, $89, $AA, $99, $AA, $A3, $AA, $AB, $AA ; CPU:$A925 PRG:2925 69 AA 7D AA 79 AA 8D AA 89 AA 99 AA A3 AA AB AA + .byte $B3, $AA, $BB, $AA, $C7, $AA, $CD, $AA, $DD, $AA, $DB, $AA, $E1, $AA, $ED, $AA ; CPU:$A935 PRG:2935 B3 AA BB AA C7 AA CD AA DD AA DB AA E1 AA ED AA + .byte $FD, $AA, $03, $AB, $07, $AB, $0B, $AB, $13, $AB, $11, $AB, $0F, $AB, $1D, $AB ; CPU:$A945 PRG:2945 FD AA 03 AB 07 AB 0B AB 13 AB 11 AB 0F AB 1D AB + .byte $2F, $AB, $41, $AB, $51, $AB, $55, $AB, $3F, $AB, $2D, $AB, $1B, $AB, $65, $AB ; CPU:$A955 PRG:2955 2F AB 41 AB 51 AB 55 AB 3F AB 2D AB 1B AB 65 AB + .byte $85, $AB, $87, $AB, $8B, $AB, $99, $AB, $AB, $AB, $B5, $AB, $C7, $AB, $CD, $AB ; CPU:$A965 PRG:2965 85 AB 87 AB 8B AB 99 AB AB AB B5 AB C7 AB CD AB + .byte $CF, $AB, $D7, $AB, $DD, $AB, $E5, $AB, $EB, $AB, $F1, $AB, $F9, $AB, $01, $AC ; CPU:$A975 PRG:2975 CF AB D7 AB DD AB E5 AB EB AB F1 AB F9 AB 01 AC + .byte $19, $AC, $1F, $AC, $1B, $AC, $21, $AC, $25, $AC, $29, $AC, $2F, $AC, $35, $AC ; CPU:$A985 PRG:2985 19 AC 1F AC 1B AC 21 AC 25 AC 29 AC 2F AC 35 AC + .byte $41, $AC, $49, $AC, $53, $AC, $6B, $AC, $67, $AC, $4F, $AC, $7F, $AC, $8D, $AC ; CPU:$A995 PRG:2995 41 AC 49 AC 53 AC 6B AC 67 AC 4F AC 7F AC 8D AC + .byte $99, $AC, $A5, $AC, $B1, $AC, $B7, $AC, $BD, $AC, $CD, $AC, $DD, $AC, $E1, $AC ; CPU:$A9A5 PRG:29A5 99 AC A5 AC B1 AC B7 AC BD AC CD AC DD AC E1 AC + .byte $E7, $AC, $F9, $AC, $EB, $AC ; CPU:$A9B5 PRG:29B5 E7 AC F9 AC EB AC +; ---- data $A9BB-$ACFA (832 bytes) ---- +; Tile/attribute data addressed by the 99-entry table at $A8F5. +ObjTileData: + .byte $00, $60, $04, $30, $08, $FF, $00, $5C, $1E, $58, $00, $FF, $00, $34, $08, $A0 ; CPU:$A9BB PRG:29BB 00 60 04 30 08 FF 00 5C 1E 58 00 FF 00 34 08 A0 + .byte $00, $FF, $04, $68, $00, $50, $04, $28, $00, $FF, $00, $08, $18, $40, $00, $58 ; CPU:$A9CB PRG:29CB 00 FF 04 68 00 50 04 28 00 FF 00 08 18 40 00 58 + .byte $04, $FF, $00, $78, $1C, $A0, $19, $FF, $1C, $64, $18, $FF, $00, $90, $10, $80 ; CPU:$A9DB PRG:29DB 04 FF 00 78 1C A0 19 FF 1C 64 18 FF 00 90 10 80 + .byte $00, $FF, $00, $90, $04, $FF, $00, $5C, $1C, $40, $00, $FF, $00, $4C, $1E, $68 ; CPU:$A9EB PRG:29EB 00 FF 00 90 04 FF 00 5C 1C 40 00 FF 00 4C 1E 68 + .byte $00, $FF, $00, $60, $10, $D8, $18, $38, $1F, $FF, $00, $30, $10, $30, $08, $20 ; CPU:$A9FB PRG:29FB 00 FF 00 60 10 D8 18 38 1F FF 00 30 10 30 08 20 + .byte $18, $20, $00, $30, $10, $30, $08, $20, $18, $20, $00, $30, $10, $30, $08, $20 ; CPU:$AA0B PRG:2A0B 18 20 00 30 10 30 08 20 18 20 00 30 10 30 08 20 + .byte $18, $20, $00, $30, $10, $30, $08, $20, $18, $20, $00, $30, $10, $30, $08, $20 ; CPU:$AA1B PRG:2A1B 18 20 00 30 10 30 08 20 18 20 00 30 10 30 08 20 + .byte $18, $20, $10, $10, $08, $C0, $10, $30, $18, $FF, $18, $FF, $18, $FF, $08, $FF ; CPU:$AA2B PRG:2A2B 18 20 10 10 08 C0 10 30 18 FF 18 FF 18 FF 08 FF + .byte $08, $FF, $00, $B0, $10, $C0, $00, $FF, $00, $C0, $1C, $40, $00, $FF, $00, $18 ; CPU:$AA3B PRG:2A3B 08 FF 00 B0 10 C0 00 FF 00 C0 1C 40 00 FF 00 18 + .byte $1C, $38, $19, $40, $1C, $40, $18, $48, $1C, $20, $00, $20, $10, $20, $00, $20 ; CPU:$AA4B PRG:2A4B 1C 38 19 40 1C 40 18 48 1C 20 00 20 10 20 00 20 + .byte $10, $20, $00, $FF, $00, $32, $08, $90, $00, $FF, $00, $92, $18, $FF, $0C, $04 ; CPU:$AA5B PRG:2A5B 10 20 00 FF 00 32 08 90 00 FF 00 92 18 FF 0C 04 + .byte $1C, $34, $14, $60, $10, $60, $0C, $60, $04, $60, $00, $60, $1C, $60, $10, $04 ; CPU:$AA6B PRG:2A6B 1C 34 14 60 10 60 0C 60 04 60 00 60 1C 60 10 04 + .byte $00, $34, $1C, $60, $14, $60, $10, $60, $0C, $60, $04, $60, $00, $60, $14, $04 ; CPU:$AA7B PRG:2A7B 00 34 1C 60 14 60 10 60 0C 60 04 60 00 60 14 04 + .byte $04, $34, $00, $60, $1C, $60, $14, $60, $10, $60, $0C, $60, $04, $60, $10, $0C ; CPU:$AA8B PRG:2A8B 04 34 00 60 1C 60 14 60 10 60 0C 60 04 60 10 0C + .byte $18, $D0, $14, $20, $10, $FF, $00, $FF, $1C, $28, $00, $08, $1C, $48, $00, $FF ; CPU:$AA9B PRG:2A9B 18 D0 14 20 10 FF 00 FF 1C 28 00 08 1C 48 00 FF + .byte $00, $50, $08, $40, $18, $40, $00, $FF, $00, $50, $18, $40, $08, $40, $00, $FF ; CPU:$AAAB PRG:2AAB 00 50 08 40 18 40 00 FF 00 50 18 40 08 40 00 FF + .byte $00, $A0, $10, $E0, $10, $30, $11, $40, $01, $40, $00, $FF, $00, $AC, $10, $FF ; CPU:$AABB PRG:2ABB 00 A0 10 E0 10 30 11 40 01 40 00 FF 00 AC 10 FF + .byte $00, $FF, $00, $38, $10, $E8, $14, $24, $10, $40, $14, $74, $11, $94, $19, $FF ; CPU:$AACB PRG:2ACB 00 FF 00 38 10 E8 14 24 10 40 14 74 11 94 19 FF + .byte $10, $10, $00, $FF, $00, $FF, $00, $08, $18, $48, $00, $58, $1C, $48, $00, $70 ; CPU:$AADB PRG:2ADB 10 10 00 FF 00 FF 00 08 18 48 00 58 1C 48 00 70 + .byte $1E, $FF, $00, $08, $18, $78, $00, $58, $04, $60, $00, $38, $0A, $18, $0C, $A8 ; CPU:$AAEB PRG:2AEB 1E FF 00 08 18 78 00 58 04 60 00 38 0A 18 0C A8 + .byte $00, $FF, $00, $08, $08, $78, $00, $FF, $1C, $62, $18, $FF, $1C, $82, $18, $FF ; CPU:$AAFB PRG:2AFB 00 FF 00 08 08 78 00 FF 1C 62 18 FF 1C 82 18 FF + .byte $1C, $A2, $18, $FF, $04, $20, $04, $20, $00, $E4, $18, $FF, $00, $C0, $18, $FF ; CPU:$AB0B PRG:2B0B 1C A2 18 FF 04 20 04 20 00 E4 18 FF 00 C0 18 FF + .byte $1C, $40, $0C, $60, $1C, $60, $0C, $60, $1C, $60, $0C, $60, $1C, $60, $0C, $60 ; CPU:$AB1B PRG:2B1B 1C 40 0C 60 1C 60 0C 60 1C 60 0C 60 1C 60 0C 60 + .byte $1C, $60, $00, $40, $10, $60, $00, $60, $10, $60, $00, $60, $10, $60, $00, $60 ; CPU:$AB2B PRG:2B2B 1C 60 00 40 10 60 00 60 10 60 00 60 10 60 00 60 + .byte $10, $60, $00, $60, $04, $40, $14, $60, $04, $60, $14, $60, $04, $60, $14, $60 ; CPU:$AB3B PRG:2B3B 10 60 00 60 04 40 14 60 04 60 14 60 04 60 14 60 + .byte $04, $60, $14, $60, $04, $60, $18, $40, $08, $20, $08, $40, $18, $60, $08, $60 ; CPU:$AB4B PRG:2B4B 04 60 14 60 04 60 18 40 08 20 08 40 18 60 08 60 + .byte $18, $60, $08, $60, $18, $60, $08, $60, $18, $60, $08, $80, $10, $80, $17, $80 ; CPU:$AB5B PRG:2B5B 18 60 08 60 18 60 08 60 18 60 08 80 10 80 17 80 + .byte $14, $20, $08, $40, $06, $20, $08, $10, $10, $28, $18, $10, $1A, $20, $18, $48 ; CPU:$AB6B PRG:2B6B 14 20 08 40 06 20 08 10 10 28 18 10 1A 20 18 48 + .byte $14, $18, $08, $70, $0D, $A0, $18, $98, $1C, $80, $00, $FF, $00, $F8, $04, $40 ; CPU:$AB7B PRG:2B7B 14 18 08 70 0D A0 18 98 1C 80 00 FF 00 F8 04 40 + .byte $00, $70, $10, $C0, $0E, $5C, $10, $B8, $00, $B8, $1E, $20, $00, $FF, $00, $80 ; CPU:$AB8B PRG:2B8B 00 70 10 C0 0E 5C 10 B8 00 B8 1E 20 00 FF 00 80 + .byte $10, $C0, $14, $2C, $10, $48, $14, $6C, $11, $A0, $19, $50, $1C, $44, $18, $FF ; CPU:$AB9B PRG:2B9B 10 C0 14 2C 10 48 14 6C 11 A0 19 50 1C 44 18 FF + .byte $00, $04, $08, $80, $04, $1C, $08, $D0, $0C, $FF, $10, $10, $18, $C0, $14, $30 ; CPU:$ABAB PRG:2BAB 00 04 08 80 04 1C 08 D0 0C FF 10 10 18 C0 14 30 + .byte $10, $4C, $00, $2C, $10, $50, $00, $68, $04, $30, $08, $FF, $10, $08, $00, $78 ; CPU:$ABBB PRG:2BBB 10 4C 00 2C 10 50 00 68 04 30 08 FF 10 08 00 78 + .byte $10, $50, $00, $FF, $00, $74, $08, $A0, $18, $A0, $00, $FF, $00, $A0, $1C, $20 ; CPU:$ABCB PRG:2BCB 10 50 00 FF 00 74 08 A0 18 A0 00 FF 00 A0 1C 20 + .byte $1E, $FF, $00, $70, $10, $E0, $10, $A0, $00, $FF, $00, $04, $08, $A8, $00, $FF ; CPU:$ABDB PRG:2BDB 1E FF 00 70 10 E0 10 A0 00 FF 00 04 08 A8 00 FF + .byte $00, $04, $08, $D8, $00, $FF, $00, $04, $08, $E0, $08, $28, $00, $FF, $10, $18 ; CPU:$ABEB PRG:2BEB 00 04 08 D8 00 FF 00 04 08 E0 08 28 00 FF 10 18 + .byte $00, $40, $08, $80, $10, $28, $10, $58, $18, $80, $00, $80, $08, $80, $10, $80 ; CPU:$ABFB PRG:2BFB 00 40 08 80 10 28 10 58 18 80 00 80 08 80 10 80 + .byte $18, $80, $00, $80, $08, $80, $10, $80, $18, $80, $00, $80, $08, $80, $08, $20 ; CPU:$AC0B PRG:2C0B 18 80 00 80 08 80 10 80 18 80 00 80 08 80 08 20 + .byte $08, $A0, $18, $FF, $18, $20, $18, $A0, $08, $FF, $00, $70, $10, $70, $00, $70 ; CPU:$AC1B PRG:2C1B 08 A0 18 FF 18 20 18 A0 08 FF 00 70 10 70 00 70 + .byte $10, $70, $00, $FF, $00, $60, $10, $60, $00, $FF, $1C, $40, $0C, $40, $10, $18 ; CPU:$AC2B PRG:2C2B 10 70 00 FF 00 60 10 60 00 FF 1C 40 0C 40 10 18 + .byte $00, $18, $1C, $40, $00, $FF, $00, $40, $10, $80, $00, $D8, $1C, $40, $00, $80 ; CPU:$AC3B PRG:2C3B 00 18 1C 40 00 FF 00 40 10 80 00 D8 1C 40 00 80 + .byte $00, $C0, $1C, $40, $10, $10, $1C, $40, $0C, $50, $1C, $50, $0C, $50, $1C, $50 ; CPU:$AC4B PRG:2C4B 00 C0 1C 40 10 10 1C 40 0C 50 1C 50 0C 50 1C 50 + .byte $0C, $50, $1C, $50, $0C, $50, $1C, $50, $0C, $50, $1C, $50, $10, $10, $04, $40 ; CPU:$AC5B PRG:2C5B 0C 50 1C 50 0C 50 1C 50 0C 50 1C 50 10 10 04 40 + .byte $14, $50, $04, $50, $14, $50, $04, $50, $14, $50, $04, $50, $14, $50, $04, $50 ; CPU:$AC6B PRG:2C6B 14 50 04 50 14 50 04 50 14 50 04 50 14 50 04 50 + .byte $14, $50, $04, $50, $00, $18, $04, $10, $08, $60, $0C, $3C, $0A, $58, $01, $80 ; CPU:$AC7B PRG:2C7B 14 50 04 50 00 18 04 10 08 60 0C 3C 0A 58 01 80 + .byte $04, $FF, $00, $30, $10, $A0, $18, $10, $08, $F0, $10, $E0, $00, $FF, $00, $10 ; CPU:$AC8B PRG:2C8B 04 FF 00 30 10 A0 18 10 08 F0 10 E0 00 FF 00 10 + .byte $08, $88, $18, $08, $08, $E8, $10, $A0, $00, $FF, $00, $30, $18, $68, $08, $68 ; CPU:$AC9B PRG:2C9B 08 88 18 08 08 E8 10 A0 00 FF 00 30 18 68 08 68 + .byte $10, $C0, $10, $F0, $08, $FF, $00, $40, $04, $34, $08, $FF, $00, $80, $10, $80 ; CPU:$ACAB PRG:2CAB 10 C0 10 F0 08 FF 00 40 04 34 08 FF 00 80 10 80 + .byte $00, $FF, $00, $62, $10, $70, $0E, $54, $10, $DA, $10, $50, $08, $48, $18, $48 ; CPU:$ACBB PRG:2CBB 00 FF 00 62 10 70 0E 54 10 DA 10 50 08 48 18 48 + .byte $00, $FF, $00, $60, $10, $98, $14, $20, $10, $E4, $10, $50, $18, $48, $08, $48 ; CPU:$ACCB PRG:2CCB 00 FF 00 60 10 98 14 20 10 E4 10 50 18 48 08 48 + .byte $00, $FF, $1C, $80, $19, $FF, $00, $58, $10, $80, $00, $FF, $1C, $80, $18, $FF ; CPU:$ACDB PRG:2CDB 00 FF 1C 80 19 FF 00 58 10 80 00 FF 1C 80 18 FF + .byte $00, $10, $1C, $E0, $10, $E0, $14, $88, $10, $80, $08, $C8, $08, $A8, $00, $FF ; CPU:$ACEB PRG:2CEB 00 10 1C E0 10 E0 14 88 10 80 08 C8 08 A8 00 FF +; ---- data $ACFB-$B8AA (2992 bytes) ---- +; Data streams addressed by the 16-entry table at $A8D5. +DataStreamData: + .byte $20, $FE, $3A, $0F, $00, $FE, $38, $FF, $00, $FE, $36, $60, $00, $FE, $3E, $1F ; CPU:$ACFB PRG:2CFB 20 FE 3A 0F 00 FE 38 FF 00 FE 36 60 00 FE 3E 1F + .byte $00, $FC, $40, $07, $00, $FC, $3C, $1F, $00, $FC, $42, $1F, $00, $FC, $44, $07 ; CPU:$AD0B PRG:2D0B 00 FC 40 07 00 FC 3C 1F 00 FC 42 1F 00 FC 44 07 + .byte $00, $F8, $2C, $E8, $2C, $DE, $2A, $27, $1A, $D2, $2C, $D2, $04, $08, $AA, $D2 ; CPU:$AD1B PRG:2D1B 00 F8 2C E8 2C DE 2A 27 1A D2 2C D2 04 08 AA D2 + .byte $06, $0A, $AA, $C0, $32, $B4, $2C, $B4, $04, $0C, $AA, $B4, $06, $0E, $AA, $AA ; CPU:$AD2B PRG:2D2B 06 0A AA C0 32 B4 2C B4 04 0C AA B4 06 0E AA AA + .byte $04, $12, $AA, $A8, $00, $12, $AA, $9E, $06, $14, $AA, $9C, $32, $9C, $34, $9C ; CPU:$AD3B PRG:2D3B 04 12 AA A8 00 12 AA 9E 06 14 AA 9C 32 9C 34 9C + .byte $34, $9C, $00, $12, $AA, $90, $2C, $80, $2C, $78, $06, $0E, $AA, $76, $00, $0E ; CPU:$AD4B PRG:2D4B 34 9C 00 12 AA 90 2C 80 2C 78 06 0E AA 76 00 0E + .byte $AA, $70, $2C, $6A, $26, $1C, $FF, $5E, $4E, $84, $06, $5C, $34, $5C, $34, $5C ; CPU:$AD5B PRG:2D5B AA 70 2C 6A 26 1C FF 5E 4E 84 06 5C 34 5C 34 5C + .byte $38, $1F, $00, $5A, $4E, $84, $86, $58, $2C, $58, $4E, $84, $06, $50, $2C, $44 ; CPU:$AD6B PRG:2D6B 38 1F 00 5A 4E 84 86 58 2C 58 4E 84 06 50 2C 44 + .byte $2C, $42, $28, $38, $00, $0E, $FF, $38, $04, $10, $FF, $36, $2E, $03, $24, $06 ; CPU:$AD7B PRG:2D7B 2C 42 28 38 00 0E FF 38 04 10 FF 36 2E 03 24 06 + .byte $18, $FF, $22, $00, $16, $FF, $20, $06, $14, $FF, $1E, $00, $02, $FF, $1E, $00 ; CPU:$AD8B PRG:2D8B 18 FF 22 00 16 FF 20 06 14 FF 1E 00 02 FF 1E 00 + .byte $12, $FF, $1C, $04, $10, $FF, $16, $1C, $10, $AA, $14, $32, $14, $1E, $0E, $AA ; CPU:$AD9B PRG:2D9B 12 FF 1C 04 10 FF 16 1C 10 AA 14 32 14 1E 0E AA + .byte $14, $20, $10, $AA, $14, $22, $12, $AA, $14, $26, $02, $FF, $12, $24, $10, $AA ; CPU:$ADAB PRG:2DAB 14 20 10 AA 14 22 12 AA 14 26 02 FF 12 24 10 AA + .byte $00, $30, $FC, $2E, $01, $EC, $32, $E4, $2A, $27, $1A, $E4, $4C, $64, $00, $DA ; CPU:$ADBB PRG:2DBB 00 30 FC 2E 01 EC 32 E4 2A 27 1A E4 4C 64 00 DA + .byte $00, $12, $FF, $DA, $04, $14, $FF, $D0, $06, $06, $FF, $D0, $00, $08, $FF, $C6 ; CPU:$ADCB PRG:2DCB 00 12 FF DA 04 14 FF D0 06 06 FF D0 00 08 FF C6 + .byte $00, $12, $FF, $C6, $00, $14, $FF, $C0, $2C, $BC, $4C, $7C, $02, $B2, $32, $B2 ; CPU:$ADDB PRG:2DDB 00 12 FF C6 00 14 FF C0 2C BC 4C 7C 02 B2 32 B2 + .byte $00, $14, $FF, $AA, $4C, $7C, $04, $9E, $2C, $9E, $00, $14, $FF, $9E, $06, $16 ; CPU:$ADEB PRG:2DEB 00 14 FF AA 4C 7C 04 9E 2C 9E 00 14 FF 9E 06 16 + .byte $FF, $92, $2C, $90, $00, $14, $FF, $80, $32, $74, $06, $06, $FF, $6C, $00, $12 ; CPU:$ADFB PRG:2DFB FF 92 2C 90 00 14 FF 80 32 74 06 06 FF 6C 00 12 + .byte $FF, $6C, $06, $14, $FF, $6A, $06, $12, $FF, $6A, $00, $14, $FF, $64, $26, $1C ; CPU:$AE0B PRG:2E0B FF 6C 06 14 FF 6A 06 12 FF 6A 00 14 FF 64 26 1C + .byte $FF, $64, $4C, $24, $06, $58, $2C, $48, $32, $44, $4C, $5C, $08, $42, $4C, $CC ; CPU:$AE1B PRG:2E1B FF 64 4C 24 06 58 2C 48 32 44 4C 5C 08 42 4C CC + .byte $0A, $3A, $26, $12, $FF, $32, $06, $06, $FF, $32, $00, $08, $FF, $30, $2C, $24 ; CPU:$AE2B PRG:2E2B 0A 3A 26 12 FF 32 06 06 FF 32 00 08 FF 30 2C 24 + .byte $4C, $94, $0C, $24, $04, $0E, $FF, $22, $06, $10, $FF, $20, $32, $20, $04, $12 ; CPU:$AE3B PRG:2E3B 4C 94 0C 24 04 0E FF 22 06 10 FF 20 32 20 04 12 + .byte $FF, $1E, $06, $14, $FF, $1C, $04, $16, $FF, $1C, $36, $90, $00, $1A, $2E, $01 ; CPU:$AE4B PRG:2E4B FF 1E 06 14 FF 1C 04 16 FF 1C 36 90 00 1A 2E 01 + .byte $14, $32, $14, $00, $0A, $FF, $14, $00, $0C, $FF, $10, $06, $08, $FF, $10, $02 ; CPU:$AE5B PRG:2E5B 14 32 14 00 0A FF 14 00 0C FF 10 06 08 FF 10 02 + .byte $0A, $FF, $10, $02, $0C, $FF, $10, $06, $0E, $FF, $00, $07, $FE, $46, $7F, $3C ; CPU:$AE6B PRG:2E6B 0A FF 10 02 0C FF 10 06 0E FF 00 07 FE 46 7F 3C + .byte $FE, $36, $70, $00, $E8, $2A, $1A, $11, $E8, $06, $16, $AA, $E2, $46, $3F, $3C ; CPU:$AE7B PRG:2E7B FE 36 70 00 E8 2A 1A 11 E8 06 16 AA E2 46 3F 3C + .byte $B8, $2A, $27, $11, $B8, $00, $0A, $AA, $B6, $06, $0A, $AA, $B6, $46, $3F, $3C ; CPU:$AE8B PRG:2E8B B8 2A 27 11 B8 00 0A AA B6 06 0A AA B6 46 3F 3C + .byte $A0, $2A, $27, $27, $A0, $0A, $06, $FF, $9E, $08, $06, $FF, $9C, $26, $02, $FF ; CPU:$AE9B PRG:2E9B A0 2A 27 27 A0 0A 06 FF 9E 08 06 FF 9C 26 02 FF + .byte $90, $4A, $8E, $2A, $1A, $27, $8E, $00, $10, $AA, $8C, $04, $10, $AA, $88, $28 ; CPU:$AEAB PRG:2EAB 90 4A 8E 2A 1A 27 8E 00 10 AA 8C 04 10 AA 88 28 + .byte $84, $04, $0E, $AA, $84, $06, $10, $AA, $80, $34, $80, $48, $00, $00, $78, $2C ; CPU:$AEBB PRG:2EBB 84 04 0E AA 84 06 10 AA 80 34 80 48 00 00 78 2C + .byte $68, $06, $04, $FF, $68, $00, $0A, $FF, $62, $00, $16, $AA, $60, $32, $58, $06 ; CPU:$AECB PRG:2ECB 68 06 04 FF 68 00 0A FF 62 00 16 AA 60 32 58 06 + .byte $14, $FF, $54, $2C, $54, $4E, $78, $08, $48, $34, $48, $06, $06, $FF, $48, $00 ; CPU:$AEDB PRG:2EDB 14 FF 54 2C 54 4E 78 08 48 34 48 06 06 FF 48 00 + .byte $0C, $FF, $40, $2C, $34, $2A, $07, $27, $32, $04, $04, $AA, $32, $00, $08, $AA ; CPU:$AEEB PRG:2EEB 0C FF 40 2C 34 2A 07 27 32 04 04 AA 32 00 08 AA + .byte $32, $06, $0C, $AA, $32, $04, $10, $AA, $28, $32, $28, $06, $0C, $AA, $1A, $2A ; CPU:$AEFB PRG:2EFB 32 06 0C AA 32 04 10 AA 28 32 28 06 0C AA 1A 2A + .byte $07, $1A, $1A, $06, $12, $FF, $1A, $00, $16, $FF, $1A, $06, $1A, $FF, $14, $0E ; CPU:$AF0B PRG:2F0B 07 1A 1A 06 12 FF 1A 00 16 FF 1A 06 1A FF 14 0E + .byte $16, $FF, $12, $0C, $16, $FF, $12, $26, $1C, $FF, $00, $29, $FE, $2E, $01, $F0 ; CPU:$AF1B PRG:2F1B 16 FF 12 0C 16 FF 12 26 1C FF 00 29 FE 2E 01 F0 + .byte $32, $EA, $4C, $64, $0E, $E2, $4C, $D4, $10, $DE, $2A, $27, $1A, $D8, $04, $14 ; CPU:$AF2B PRG:2F2B 32 EA 4C 64 0E E2 4C D4 10 DE 2A 27 1A D8 04 14 + .byte $FF, $D8, $06, $16, $FF, $D0, $4C, $84, $12, $CA, $2C, $C2, $00, $0A, $FF, $C2 ; CPU:$AF3B PRG:2F3B FF D8 06 16 FF D0 4C 84 12 CA 2C C2 00 0A FF C2 + .byte $06, $0C, $FF, $C2, $26, $14, $FF, $BC, $4C, $EC, $14, $BA, $32, $B2, $06, $18 ; CPU:$AF4B PRG:2F4B 06 0C FF C2 26 14 FF BC 4C EC 14 BA 32 B2 06 18 + .byte $FF, $B0, $06, $1A, $FF, $AE, $00, $18, $FF, $AC, $00, $1A, $FF, $A6, $4C, $EC ; CPU:$AF5B PRG:2F5B FF B0 06 1A FF AE 00 18 FF AC 00 1A FF A6 4C EC + .byte $16, $9E, $2C, $8A, $32, $88, $46, $01, $01, $74, $2E, $45, $72, $1A, $0C, $00 ; CPU:$AF6B PRG:2F6B 16 9E 2C 8A 32 88 46 01 01 74 2E 45 72 1A 0C 00 + .byte $70, $18, $0A, $00, $6E, $16, $0A, $00, $6C, $14, $0A, $00, $6A, $12, $0A, $00 ; CPU:$AF7B PRG:2F7B 70 18 0A 00 6E 16 0A 00 6C 14 0A 00 6A 12 0A 00 + .byte $68, $10, $0C, $00, $62, $2E, $45, $50, $32, $3E, $46, $3F, $3C, $30, $48, $00 ; CPU:$AF8B PRG:2F8B 68 10 0C 00 62 2E 45 50 32 3E 46 3F 3C 30 48 00 + .byte $00, $2E, $34, $2C, $2C, $20, $2C, $10, $2C, $00, $11, $FE, $36, $A0, $00, $FE ; CPU:$AF9B PRG:2F9B 00 2E 34 2C 2C 20 2C 10 2C 00 11 FE 36 A0 00 FE + .byte $3C, $1F, $00, $FE, $42, $1F, $00, $FC, $2C, $EE, $2C, $E2, $34, $E2, $32, $DE ; CPU:$AFAB PRG:2FAB 3C 1F 00 FE 42 1F 00 FC 2C EE 2C E2 34 E2 32 DE + .byte $2A, $00, $11, $DA, $06, $08, $AA, $DA, $04, $0A, $AA, $DA, $0E, $0E, $AA, $D8 ; CPU:$AFBB PRG:2FBB 2A 00 11 DA 06 08 AA DA 04 0A AA DA 0E 0E AA D8 + .byte $0C, $0E, $AA, $D8, $04, $08, $AA, $D8, $06, $0A, $AA, $C8, $2C, $C8, $50, $40 ; CPU:$AFCB PRG:2FCB 0C 0E AA D8 04 08 AA D8 06 0A AA C8 2C C8 50 40 + .byte $06, $BC, $50, $60, $07, $B8, $2C, $B8, $50, $A0, $07, $B4, $50, $60, $07, $B0 ; CPU:$AFDB PRG:2FDB 06 BC 50 60 07 B8 2C B8 50 A0 07 B4 50 60 07 B0 + .byte $2C, $B0, $50, $A0, $08, $AC, $50, $D8, $08, $A6, $32, $A4, $0E, $14, $FF, $A2 ; CPU:$AFEB PRG:2FEB 2C B0 50 A0 08 AC 50 D8 08 A6 32 A4 0E 14 FF A2 + .byte $0C, $14, $FF, $98, $50, $C0, $07, $96, $50, $80, $07, $94, $50, $60, $07, $92 ; CPU:$AFFB PRG:2FFB 0C 14 FF 98 50 C0 07 96 50 80 07 94 50 60 07 92 + .byte $2C, $92, $50, $C0, $07, $7A, $32, $76, $28, $6E, $4C, $90, $18, $6E, $38, $0F ; CPU:$B00B PRG:300B 2C 92 50 C0 07 7A 32 76 28 6E 4C 90 18 6E 38 0F + .byte $0F, $6E, $3A, $0F, $0F, $6C, $26, $18, $AA, $6A, $04, $10, $AA, $68, $00, $10 ; CPU:$B01B PRG:301B 0F 6E 3A 0F 0F 6C 26 18 AA 6A 04 10 AA 68 00 10 + .byte $AA, $66, $04, $10, $AA, $64, $00, $10, $AA, $62, $2C, $4A, $32, $4A, $2A, $00 ; CPU:$B02B PRG:302B AA 66 04 10 AA 64 00 10 AA 62 2C 4A 32 4A 2A 00 + .byte $1A, $4A, $06, $08, $FF, $3E, $2C, $34, $2A, $07, $1A, $34, $06, $10, $AA, $30 ; CPU:$B03B PRG:303B 1A 4A 06 08 FF 3E 2C 34 2A 07 1A 34 06 10 AA 30 + .byte $4C, $28, $1A, $30, $26, $1A, $FF, $2E, $32, $20, $4C, $20, $1C, $1E, $4C, $E0 ; CPU:$B04B PRG:304B 4C 28 1A 30 26 1A FF 2E 32 20 4C 20 1C 1E 4C E0 + .byte $1E, $1C, $4C, $20, $1C, $18, $0E, $0E, $FF, $16, $0C, $0E, $FF, $16, $06, $08 ; CPU:$B05B PRG:305B 1E 1C 4C 20 1C 18 0E 0E FF 16 0C 0E FF 16 06 08 + .byte $FF, $16, $06, $16, $FF, $00, $23, $FE, $3A, $07, $07, $F0, $2A, $27, $1A, $F0 ; CPU:$B06B PRG:306B FF 16 06 16 FF 00 23 FE 3A 07 07 F0 2A 27 1A F0 + .byte $00, $0A, $FF, $F0, $04, $0C, $FF, $E8, $4C, $C4, $20, $D6, $4C, $E4, $22, $D4 ; CPU:$B07B PRG:307B 00 0A FF F0 04 0C FF E8 4C C4 20 D6 4C E4 22 D4 + .byte $06, $04, $AA, $D2, $00, $02, $AA, $CA, $4C, $E4, $24, $B8, $4C, $E4, $26, $B4 ; CPU:$B08B PRG:308B 06 04 AA D2 00 02 AA CA 4C E4 24 B8 4C E4 26 B4 + .byte $04, $08, $AA, $B4, $00, $06, $AA, $B0, $46, $1F, $3C, $AC, $48, $00, $00, $AA ; CPU:$B09B PRG:309B 04 08 AA B4 00 06 AA B0 46 1F 3C AC 48 00 00 AA + .byte $06, $0A, $AA, $AA, $06, $0C, $AA, $9E, $0E, $0C, $AA, $9C, $0C, $0C, $AA, $9A ; CPU:$B0AB PRG:30AB 06 0A AA AA 06 0C AA 9E 0E 0C AA 9C 0C 0C AA 9A + .byte $2C, $8A, $26, $1C, $FF, $82, $32, $7A, $1C, $08, $AA, $78, $1E, $06, $AA, $78 ; CPU:$B0BB PRG:30BB 2C 8A 26 1C FF 82 32 7A 1C 08 AA 78 1E 06 AA 78 + .byte $20, $08, $AA, $78, $22, $0A, $AA, $76, $24, $08, $AA, $6E, $4E, $B8, $8C, $6A ; CPU:$B0CB PRG:30CB 20 08 AA 78 22 0A AA 76 24 08 AA 6E 4E B8 8C 6A + .byte $4E, $A0, $8A, $6A, $4E, $D0, $8A, $66, $4E, $B8, $8A, $5E, $06, $10, $FF, $5C ; CPU:$B0DB PRG:30DB 4E A0 8A 6A 4E D0 8A 66 4E B8 8A 5E 06 10 FF 5C + .byte $00, $12, $FF, $56, $4C, $EC, $28, $54, $00, $12, $FF, $4E, $00, $10, $FF, $4E ; CPU:$B0EB PRG:30EB 00 12 FF 56 4C EC 28 54 00 12 FF 4E 00 10 FF 4E + .byte $26, $02, $FF, $42, $4C, $0C, $2A, $3C, $4C, $C4, $2C, $32, $06, $12, $FF, $26 ; CPU:$B0FB PRG:30FB 26 02 FF 42 4C 0C 2A 3C 4C C4 2C 32 06 12 FF 26 + .byte $00, $12, $FF, $24, $00, $0E, $FF, $22, $00, $0A, $FF, $18, $42, $3F, $00, $18 ; CPU:$B10B PRG:310B 00 12 FF 24 00 0E FF 22 00 0A FF 18 42 3F 00 18 + .byte $3C, $07, $00, $14, $0E, $06, $AA, $14, $0E, $0C, $AA, $12, $0C, $06, $AA, $12 ; CPU:$B11B PRG:311B 3C 07 00 14 0E 06 AA 14 0E 0C AA 12 0C 06 AA 12 + .byte $0C, $0C, $AA, $00, $00, $FE, $46, $7F, $3C, $F0, $2A, $1A, $27, $F0, $06, $10 ; CPU:$B12B PRG:312B 0C 0C AA 00 00 FE 46 7F 3C F0 2A 1A 27 F0 06 10 + .byte $AA, $EE, $04, $10, $AA, $EC, $46, $3F, $3C, $CA, $4C, $60, $2E, $C8, $4C, $78 ; CPU:$B13B PRG:313B AA EE 04 10 AA EC 46 3F 3C CA 4C 60 2E C8 4C 78 + .byte $30, $C4, $4C, $90, $32, $C2, $4C, $90, $34, $BE, $4C, $90, $36, $BC, $4C, $78 ; CPU:$B14B PRG:314B 30 C4 4C 90 32 C2 4C 90 34 BE 4C 90 36 BC 4C 78 + .byte $38, $A0, $04, $10, $FF, $9E, $00, $12, $FF, $9E, $46, $3F, $3C, $9C, $06, $14 ; CPU:$B15B PRG:315B 38 A0 04 10 FF 9E 00 12 FF 9E 46 3F 3C 9C 06 14 + .byte $FF, $9A, $04, $16, $FF, $82, $56, $1B, $00, $7E, $00, $18, $AA, $7C, $26, $04 ; CPU:$B16B PRG:316B FF 9A 04 16 FF 82 56 1B 00 7E 00 18 AA 7C 26 04 + .byte $FF, $6C, $48, $00, $00, $6A, $04, $08, $FF, $6A, $06, $0E, $FF, $6A, $04, $14 ; CPU:$B17B PRG:317B FF 6C 48 00 00 6A 04 08 FF 6A 06 0E FF 6A 04 14 + .byte $FF, $6A, $06, $1A, $FF, $66, $28, $50, $46, $3F, $FF, $34, $2A, $07, $27, $32 ; CPU:$B18B PRG:318B FF 6A 06 1A FF 66 28 50 46 3F FF 34 2A 07 27 32 + .byte $06, $16, $AA, $32, $06, $1A, $AA, $2A, $4E, $40, $0D, $26, $4E, $60, $0E, $1C ; CPU:$B19B PRG:319B 06 16 AA 32 06 1A AA 2A 4E 40 0D 26 4E 60 0E 1C + .byte $56, $1D, $00, $1A, $56, $1D, $00, $12, $2A, $07, $1A, $12, $26, $1C, $FF, $10 ; CPU:$B1AB PRG:31AB 56 1D 00 1A 56 1D 00 12 2A 07 1A 12 26 1C FF 10 + .byte $48, $00, $00, $00, $2F, $F2, $2C, $F2, $34, $EE, $2A, $1A, $27, $EE, $4C, $EC ; CPU:$B1BB PRG:31BB 48 00 00 00 2F F2 2C F2 34 EE 2A 1A 27 EE 4C EC + .byte $3A, $EA, $32, $E4, $00, $18, $AA, $E4, $00, $06, $AA, $E2, $06, $16, $AA, $E2 ; CPU:$B1CB PRG:31CB 3A EA 32 E4 00 18 AA E4 00 06 AA E2 06 16 AA E2 + .byte $06, $08, $AA, $E0, $00, $14, $AA, $E0, $00, $0A, $AA, $CC, $04, $16, $AA, $C8 ; CPU:$B1DB PRG:31DB 06 08 AA E0 00 14 AA E0 00 0A AA CC 04 16 AA C8 + .byte $0E, $16, $AA, $C8, $00, $14, $AA, $C8, $00, $1A, $AA, $C6, $0C, $16, $AA, $C2 ; CPU:$B1EB PRG:31EB 0E 16 AA C8 00 14 AA C8 00 1A AA C6 0C 16 AA C2 + .byte $04, $16, $AA, $BA, $34, $B2, $06, $16, $AA, $AA, $2C, $A8, $4C, $5C, $3C, $A8 ; CPU:$B1FB PRG:31FB 04 16 AA BA 34 B2 06 16 AA AA 2C A8 4C 5C 3C A8 + .byte $4C, $8C, $3E, $A8, $4C, $DC, $40, $9C, $32, $94, $06, $14, $AA, $94, $00, $16 ; CPU:$B20B PRG:320B 4C 8C 3E A8 4C DC 40 9C 32 94 06 14 AA 94 00 16 + .byte $AA, $92, $4C, $84, $42, $92, $4C, $DC, $44, $82, $2C, $7C, $4C, $7C, $46, $78 ; CPU:$B21B PRG:321B AA 92 4C 84 42 92 4C DC 44 82 2C 7C 4C 7C 46 78 + .byte $26, $02, $AA, $72, $32, $72, $00, $14, $AA, $72, $06, $16, $AA, $6C, $4C, $DC ; CPU:$B22B PRG:322B 26 02 AA 72 32 72 00 14 AA 72 06 16 AA 6C 4C DC + .byte $48, $6A, $4C, $DC, $4A, $66, $4C, $DC, $48, $64, $4E, $DC, $07, $60, $4E, $DC ; CPU:$B23B PRG:323B 48 6A 4C DC 4A 66 4C DC 48 64 4E DC 07 60 4E DC + .byte $87, $44, $4C, $70, $4C, $44, $4C, $88, $4E, $44, $4C, $A0, $50, $34, $02, $08 ; CPU:$B24B PRG:324B 87 44 4C 70 4C 44 4C 88 4E 44 4C A0 50 34 02 08 + .byte $AA, $34, $02, $16, $AA, $24, $4C, $A8, $52, $22, $4C, $B8, $54, $20, $4C, $C8 ; CPU:$B25B PRG:325B AA 34 02 16 AA 24 4C A8 52 22 4C B8 54 20 4C C8 + .byte $56, $1C, $4C, $6C, $58, $1A, $4C, $5C, $5A, $18, $4C, $4C, $5C, $18, $06, $10 ; CPU:$B26B PRG:326B 56 1C 4C 6C 58 1A 4C 5C 5A 18 4C 4C 5C 18 06 10 + .byte $AA, $18, $06, $14, $AA, $18, $06, $18, $AA, $12, $02, $10, $AA, $12, $02, $18 ; CPU:$B27B PRG:327B AA 18 06 14 AA 18 06 18 AA 12 02 10 AA 12 02 18 + .byte $AA, $00, $1E, $FC, $2E, $1F, $F4, $2A, $1A, $27, $F4, $26, $0A, $AA, $F2, $26 ; CPU:$B28B PRG:328B AA 00 1E FC 2E 1F F4 2A 1A 27 F4 26 0A AA F2 26 + .byte $0E, $AA, $F0, $26, $12, $AA, $EE, $26, $16, $AA, $EA, $32, $E2, $2E, $38, $D4 ; CPU:$B29B PRG:329B 0E AA F0 26 12 AA EE 26 16 AA EA 32 E2 2E 38 D4 + .byte $0E, $0C, $FF, $D2, $0C, $0C, $FF, $D0, $32, $D0, $34, $D0, $2C, $CA, $2C, $C4 ; CPU:$B2AB PRG:32AB 0E 0C FF D2 0C 0C FF D0 32 D0 34 D0 2C CA 2C C4 + .byte $2E, $6F, $BC, $32, $B2, $52, $00, $00, $86, $54, $00, $00, $7C, $2E, $45, $76 ; CPU:$B2BB PRG:32BB 2E 6F BC 32 B2 52 00 00 86 54 00 00 7C 2E 45 76 + .byte $2A, $27, $0A, $76, $1A, $0C, $03, $74, $18, $0A, $03, $72, $16, $0A, $00, $70 ; CPU:$B2CB PRG:32CB 2A 27 0A 76 1A 0C 03 74 18 0A 03 72 16 0A 00 70 + .byte $14, $0A, $00, $6E, $12, $0A, $06, $6C, $2E, $65, $6C, $10, $0C, $00, $62, $32 ; CPU:$B2DB PRG:32DB 14 0A 00 6E 12 0A 06 6C 2E 65 6C 10 0C 00 62 32 + .byte $62, $34, $5A, $2E, $65, $4A, $32, $3E, $2C, $2E, $2C, $20, $2C, $10, $32, $00 ; CPU:$B2EB PRG:32EB 62 34 5A 2E 65 4A 32 3E 2C 2E 2C 20 2C 10 32 00 + .byte $02, $FE, $2C, $FE, $42, $3F, $00, $F6, $32, $F2, $34, $EE, $2C, $E2, $32, $DA ; CPU:$B2FB PRG:32FB 02 FE 2C FE 42 3F 00 F6 32 F2 34 EE 2C E2 32 DA + .byte $2C, $CE, $32, $C6, $4C, $18, $5E, $C6, $4C, $58, $60, $C6, $4C, $98, $62, $BE ; CPU:$B30B PRG:330B 2C CE 32 C6 4C 18 5E C6 4C 58 60 C6 4C 98 62 BE + .byte $4C, $38, $64, $BE, $4C, $78, $66, $B8, $4C, $28, $68, $B8, $4C, $58, $6A, $B8 ; CPU:$B31B PRG:331B 4C 38 64 BE 4C 78 66 B8 4C 28 68 B8 4C 58 6A B8 + .byte $4C, $88, $6C, $A8, $2A, $1A, $27, $A8, $04, $0C, $FF, $A8, $04, $10, $FF, $A6 ; CPU:$B32B PRG:332B 4C 88 6C A8 2A 1A 27 A8 04 0C FF A8 04 10 FF A6 + .byte $04, $0E, $FF, $A4, $04, $0C, $FF, $A4, $04, $10, $FF, $9A, $54, $00, $00, $8E ; CPU:$B33B PRG:333B 04 0E FF A4 04 0C FF A4 04 10 FF 9A 54 00 00 8E + .byte $06, $1A, $AA, $8C, $06, $1A, $AA, $8A, $54, $00, $00, $84, $04, $18, $AA, $84 ; CPU:$B34B PRG:334B 06 1A AA 8C 06 1A AA 8A 54 00 00 84 04 18 AA 84 + .byte $04, $1A, $AA, $7A, $54, $00, $00, $6E, $06, $0A, $FF, $6E, $04, $0E, $FF, $6E ; CPU:$B35B PRG:335B 04 1A AA 7A 54 00 00 6E 06 0A FF 6E 04 0E FF 6E + .byte $06, $12, $FF, $62, $4C, $78, $6E, $46, $26, $04, $FF, $46, $26, $08, $FF, $46 ; CPU:$B36B PRG:336B 06 12 FF 62 4C 78 6E 46 26 04 FF 46 26 08 FF 46 + .byte $26, $0C, $FF, $46, $26, $10, $FF, $42, $26, $04, $FF, $42, $26, $08, $FF, $42 ; CPU:$B37B PRG:337B 26 0C FF 46 26 10 FF 42 26 04 FF 42 26 08 FF 42 + .byte $26, $0C, $FF, $42, $26, $10, $FF, $34, $2A, $07, $27, $32, $04, $0E, $AA, $32 ; CPU:$B38B PRG:338B 26 0C FF 42 26 10 FF 34 2A 07 27 32 04 0E AA 32 + .byte $00, $12, $AA, $32, $04, $16, $AA, $28, $06, $18, $AA, $20, $2A, $07, $1A, $20 ; CPU:$B39B PRG:339B 00 12 AA 32 04 16 AA 28 06 18 AA 20 2A 07 1A 20 + .byte $0A, $10, $FF, $1E, $08, $10, $FF, $1A, $0A, $10, $FF, $18, $08, $10, $FF, $16 ; CPU:$B3AB PRG:33AB 0A 10 FF 1E 08 10 FF 1A 0A 10 FF 18 08 10 FF 16 + .byte $02, $04, $FF, $16, $02, $1A, $FF, $10, $02, $04, $FF, $10, $02, $1A, $FF, $00 ; CPU:$B3BB PRG:33BB 02 04 FF 16 02 1A FF 10 02 04 FF 10 02 1A FF 00 + .byte $29, $FA, $56, $1D, $00, $F2, $46, $7F, $FF, $E8, $2A, $27, $1A, $E8, $1C, $14 ; CPU:$B3CB PRG:33CB 29 FA 56 1D 00 F2 46 7F FF E8 2A 27 1A E8 1C 14 + .byte $FF, $E6, $1E, $12, $FF, $E6, $20, $14, $FF, $E6, $22, $16, $FF, $E4, $24, $14 ; CPU:$B3DB PRG:33DB FF E6 1E 12 FF E6 20 14 FF E6 22 16 FF E4 24 14 + .byte $FF, $E2, $4C, $64, $70, $DA, $4C, $D4, $72, $CC, $4C, $D4, $74, $CC, $00, $0A ; CPU:$B3EB PRG:33EB FF E2 4C 64 70 DA 4C D4 72 CC 4C D4 74 CC 00 0A + .byte $FF, $CC, $06, $0C, $FF, $C2, $48, $00, $00, $C2, $4E, $84, $07, $BE, $4E, $84 ; CPU:$B3FB PRG:33FB FF CC 06 0C FF C2 48 00 00 C2 4E 84 07 BE 4E 84 + .byte $07, $BA, $4E, $84, $07, $B6, $4E, $84, $0B, $AE, $4E, $EC, $0D, $A6, $4E, $EC ; CPU:$B40B PRG:340B 07 BA 4E 84 07 B6 4E 84 0B AE 4E EC 0D A6 4E EC + .byte $0D, $A2, $46, $7F, $3F, $9A, $2C, $88, $32, $88, $26, $12, $FF, $7C, $26, $12 ; CPU:$B41B PRG:341B 0D A2 46 7F 3F 9A 2C 88 32 88 26 12 FF 7C 26 12 + .byte $FF, $7C, $46, $3F, $3F, $76, $4C, $DC, $76, $74, $06, $14, $FF, $72, $04, $12 ; CPU:$B42B PRG:342B FF 7C 46 3F 3F 76 4C DC 76 74 06 14 FF 72 04 12 + .byte $FF, $72, $48, $00, $00, $70, $06, $10, $FF, $6E, $04, $0E, $FF, $6C, $06, $0C ; CPU:$B43B PRG:343B FF 72 48 00 00 70 06 10 FF 6E 04 0E FF 6C 06 0C + .byte $FF, $6A, $04, $0A, $FF, $68, $06, $08, $FF, $66, $34, $66, $04, $06, $FF, $62 ; CPU:$B44B PRG:344B FF 6A 04 0A FF 68 06 08 FF 66 34 66 04 06 FF 62 + .byte $2C, $60, $2C, $52, $46, $7F, $FF, $42, $2C, $3A, $32, $28, $4C, $20, $78, $26 ; CPU:$B45B PRG:345B 2C 60 2C 52 46 7F FF 42 2C 3A 32 28 4C 20 78 26 + .byte $0E, $14, $FF, $24, $0C, $14, $FF, $20, $48, $00, $00, $20, $06, $02, $FF, $20 ; CPU:$B46B PRG:346B 0E 14 FF 24 0C 14 FF 20 48 00 00 20 06 02 FF 20 + .byte $06, $08, $FF, $1A, $26, $1C, $FF, $1A, $04, $02, $FF, $1A, $04, $08, $FF, $18 ; CPU:$B47B PRG:347B 06 08 FF 1A 26 1C FF 1A 04 02 FF 1A 04 08 FF 18 + .byte $26, $1A, $FF, $16, $26, $18, $FF, $14, $26, $16, $FF, $12, $48, $00, $00, $00 ; CPU:$B48B PRG:348B 26 1A FF 16 26 18 FF 14 26 16 FF 12 48 00 00 00 + .byte $2F, $FE, $42, $0F, $00, $FE, $3E, $0F, $00, $FE, $40, $03, $00, $FE, $44, $03 ; CPU:$B49B PRG:349B 2F FE 42 0F 00 FE 3E 0F 00 FE 40 03 00 FE 44 03 + .byte $00, $F2, $34, $EE, $4C, $EC, $7A, $E4, $2A, $27, $1A, $E4, $02, $06, $FF, $E4 ; CPU:$B4AB PRG:34AB 00 F2 34 EE 4C EC 7A E4 2A 27 1A E4 02 06 FF E4 + .byte $06, $08, $FF, $E4, $06, $16, $FF, $E4, $02, $18, $FF, $E2, $06, $06, $FF, $E2 ; CPU:$B4BB PRG:34BB 06 08 FF E4 06 16 FF E4 02 18 FF E2 06 06 FF E2 + .byte $02, $08, $FF, $E2, $02, $16, $FF, $E2, $06, $18, $FF, $DC, $4C, $74, $7C, $CA ; CPU:$B4CB PRG:34CB 02 08 FF E2 02 16 FF E2 06 18 FF DC 4C 74 7C CA + .byte $4E, $B0, $07, $CA, $4E, $C0, $07, $C8, $4E, $B0, $07, $C8, $4E, $C0, $07, $BC ; CPU:$B4DB PRG:34DB 4E B0 07 CA 4E C0 07 C8 4E B0 07 C8 4E C0 07 BC + .byte $04, $08, $FF, $BA, $04, $08, $FF, $BA, $04, $0C, $FF, $B8, $04, $0C, $FF, $B2 ; CPU:$B4EB PRG:34EB 04 08 FF BA 04 08 FF BA 04 0C FF B8 04 0C FF B2 + .byte $4C, $24, $7E, $A6, $4C, $8C, $80, $A2, $34, $A2, $4C, $DC, $7E, $A0, $4C, $DC ; CPU:$B4FB PRG:34FB 4C 24 7E A6 4C 8C 80 A2 34 A2 4C DC 7E A0 4C DC + .byte $7E, $96, $2C, $92, $4C, $84, $82, $8A, $26, $02, $FF, $8A, $26, $04, $FF, $88 ; CPU:$B50B PRG:350B 7E 96 2C 92 4C 84 82 8A 26 02 FF 8A 26 04 FF 88 + .byte $26, $02, $FF, $88, $26, $04, $FF, $86, $32, $82, $2C, $76, $04, $14, $FF, $76 ; CPU:$B51B PRG:351B 26 02 FF 88 26 04 FF 86 32 82 2C 76 04 14 FF 76 + .byte $06, $16, $FF, $72, $32, $72, $4C, $DC, $84, $6E, $06, $14, $FF, $6E, $04, $16 ; CPU:$B52B PRG:352B 06 16 FF 72 32 72 4C DC 84 6E 06 14 FF 6E 04 16 + .byte $FF, $6A, $2C, $68, $42, $07, $00, $5A, $32, $50, $02, $0A, $FF, $44, $4C, $88 ; CPU:$B53B PRG:353B FF 6A 2C 68 42 07 00 5A 32 50 02 0A FF 44 4C 88 + .byte $86, $44, $4C, $70, $88, $44, $4C, $58, $8A, $34, $06, $06, $FF, $34, $06, $08 ; CPU:$B54B PRG:354B 86 44 4C 70 88 44 4C 58 8A 34 06 06 FF 34 06 08 + .byte $FF, $2E, $02, $12, $FF, $2C, $02, $14, $FF, $2A, $02, $16, $FF, $28, $02, $18 ; CPU:$B55B PRG:355B FF 2E 02 12 FF 2C 02 14 FF 2A 02 16 FF 28 02 18 + .byte $FF, $24, $4E, $DC, $08, $20, $4E, $DC, $08, $1C, $4E, $DC, $08, $18, $4E, $DC ; CPU:$B56B PRG:356B FF 24 4E DC 08 20 4E DC 08 1C 4E DC 08 18 4E DC + .byte $0B, $16, $4C, $78, $8C, $16, $4C, $B8, $8E, $16, $0E, $12, $FF, $14, $0C, $12 ; CPU:$B57B PRG:357B 0B 16 4C 78 8C 16 4C B8 8E 16 0E 12 FF 14 0C 12 + .byte $FF, $00, $15, $F4, $2A, $1A, $11, $F4, $02, $1A, $AA, $F0, $02, $0E, $AA, $F0 ; CPU:$B58B PRG:358B FF 00 15 F4 2A 1A 11 F4 02 1A AA F0 02 0E AA F0 + .byte $02, $08, $AA, $EA, $06, $08, $AA, $E8, $06, $0A, $AA, $E6, $06, $0C, $AA, $E4 ; CPU:$B59B PRG:359B 02 08 AA EA 06 08 AA E8 06 0A AA E6 06 0C AA E4 + .byte $06, $0E, $AA, $E2, $34, $E2, $02, $06, $AA, $DC, $02, $0E, $AA, $D2, $2C, $BA ; CPU:$B5AB PRG:35AB 06 0E AA E2 34 E2 02 06 AA DC 02 0E AA D2 2C BA + .byte $32, $AE, $0E, $08, $FF, $AE, $0E, $14, $FF, $AC, $0C, $08, $FF, $AC, $0C, $14 ; CPU:$B5BB PRG:35BB 32 AE 0E 08 FF AE 0E 14 FF AC 0C 08 FF AC 0C 14 + .byte $FF, $A8, $2C, $9E, $50, $70, $07, $9A, $50, $90, $07, $96, $50, $B0, $0D, $92 ; CPU:$B5CB PRG:35CB FF A8 2C 9E 50 70 07 9A 50 90 07 96 50 B0 0D 92 + .byte $50, $D0, $07, $90, $32, $8A, $50, $B0, $0D, $86, $50, $90, $07, $82, $50, $70 ; CPU:$B5DB PRG:35DB 50 D0 07 90 32 8A 50 B0 0D 86 50 90 07 82 50 70 + .byte $07, $7E, $50, $50, $07, $78, $2C, $6C, $2A, $00, $11, $6C, $06, $06, $AA, $6A ; CPU:$B5EB PRG:35EB 07 7E 50 50 07 78 2C 6C 2A 00 11 6C 06 06 AA 6A + .byte $00, $08, $AA, $68, $06, $0A, $AA, $66, $00, $0C, $AA, $64, $06, $0E, $AA, $60 ; CPU:$B5FB PRG:35FB 00 08 AA 68 06 0A AA 66 00 0C AA 64 06 0E AA 60 + .byte $32, $5C, $34, $58, $2E, $EC, $40, $32, $3E, $2A, $07, $1A, $3E, $26, $18, $FF ; CPU:$B60B PRG:360B 32 5C 34 58 2E EC 40 32 3E 2A 07 1A 3E 26 18 FF + .byte $3E, $26, $1A, $FF, $38, $2C, $32, $02, $0A, $AA, $20, $4C, $10, $90, $20, $4C ; CPU:$B61B PRG:361B 3E 26 1A FF 38 2C 32 02 0A AA 20 4C 10 90 20 4C + .byte $E0, $92, $1E, $32, $1E, $4C, $20, $94, $1E, $4C, $D0, $96, $1A, $2E, $E6, $0A ; CPU:$B62B PRG:362B E0 92 1E 32 1E 4C 20 94 1E 4C D0 96 1A 2E E6 0A + .byte $32, $00, $05, $FE, $2E, $6D, $F6, $32, $F2, $46, $3F, $FF, $EC, $2A, $1A, $0A ; CPU:$B63B PRG:363B 32 00 05 FE 2E 6D F6 32 F2 46 3F FF EC 2A 1A 0A + .byte $E6, $2E, $F1, $E6, $48, $00, $00, $E0, $1A, $0C, $03, $DE, $18, $0A, $03, $DC ; CPU:$B64B PRG:364B E6 2E F1 E6 48 00 00 E0 1A 0C 03 DE 18 0A 03 DC + .byte $16, $0A, $03, $DA, $32, $DA, $14, $0A, $03, $D8, $2E, $34, $D8, $12, $0A, $03 ; CPU:$B65B PRG:365B 16 0A 03 DA 32 DA 14 0A 03 D8 2E 34 D8 12 0A 03 + .byte $D6, $10, $0C, $03, $D4, $32, $CA, $2E, $49, $C4, $32, $BA, $2E, $3E, $AA, $32 ; CPU:$B66B PRG:366B D6 10 0C 03 D4 32 CA 2E 49 C4 32 BA 2E 3E AA 32 + .byte $A0, $52, $00, $00, $7E, $2E, $46, $7A, $32, $70, $54, $00, $00, $66, $2E, $66 ; CPU:$B67B PRG:367B A0 52 00 00 7E 2E 46 7A 32 70 54 00 00 66 2E 66 + .byte $66, $2A, $1A, $27, $66, $1A, $0C, $00, $64, $32, $64, $18, $0A, $00, $62, $16 ; CPU:$B68B PRG:368B 66 2A 1A 27 66 1A 0C 00 64 32 64 18 0A 00 62 16 + .byte $0A, $00, $60, $14, $0A, $00, $5E, $12, $0A, $00, $5C, $2E, $21, $5C, $10, $0C ; CPU:$B69B PRG:369B 0A 00 60 14 0A 00 5E 12 0A 00 5C 2E 21 5C 10 0C + .byte $00, $54, $32, $4A, $2C, $3A, $32, $34, $34, $34, $2A, $07, $00, $30, $2C, $20 ; CPU:$B6AB PRG:36AB 00 54 32 4A 2C 3A 32 34 34 34 2A 07 00 30 2C 20 + .byte $32, $1A, $2C, $0A, $32, $00, $24, $FE, $2E, $08, $F2, $32, $F0, $2A, $27, $1A ; CPU:$B6BB PRG:36BB 32 1A 2C 0A 32 00 24 FE 2E 08 F2 32 F0 2A 27 1A + .byte $F0, $26, $02, $FF, $EC, $4C, $B4, $98, $EC, $00, $10, $FF, $E4, $4C, $B4, $9A ; CPU:$B6CB PRG:36CB F0 26 02 FF EC 4C B4 98 EC 00 10 FF E4 4C B4 9A + .byte $E2, $06, $10, $FF, $DC, $4C, $B4, $9C, $D6, $4C, $D4, $9E, $D4, $06, $04, $AA ; CPU:$B6DB PRG:36DB E2 06 10 FF DC 4C B4 9C D6 4C D4 9E D4 06 04 AA + .byte $D2, $06, $02, $AA, $D0, $00, $16, $FF, $CA, $4C, $D4, $A0, $C4, $06, $16, $FF ; CPU:$B6EB PRG:36EB D2 06 02 AA D0 00 16 FF CA 4C D4 A0 C4 06 16 FF + .byte $C0, $4C, $D4, $A2, $BC, $4E, $D4, $07, $B8, $4E, $D4, $0D, $B4, $06, $04, $AA ; CPU:$B6FB PRG:36FB C0 4C D4 A2 BC 4E D4 07 B8 4E D4 0D B4 06 04 AA + .byte $B4, $00, $06, $AA, $B4, $26, $16, $FF, $B0, $2C, $A8, $26, $0A, $AA, $A0, $2C ; CPU:$B70B PRG:370B B4 00 06 AA B4 26 16 FF B0 2C A8 26 0A AA A0 2C + .byte $9E, $00, $0A, $AA, $9E, $06, $0C, $AA, $90, $32, $88, $2C, $78, $32, $78, $0E ; CPU:$B71B PRG:371B 9E 00 0A AA 9E 06 0C AA 90 32 88 2C 78 32 78 0E + .byte $04, $AA, $76, $0C, $04, $AA, $76, $4C, $88, $A4, $76, $4C, $E8, $A6, $6C, $4C ; CPU:$B72B PRG:372B 04 AA 76 0C 04 AA 76 4C 88 A4 76 4C E8 A6 6C 4C + .byte $90, $A8, $6C, $4C, $E0, $AA, $5E, $4C, $44, $AC, $5C, $06, $10, $FF, $5A, $26 ; CPU:$B73B PRG:373B 90 A8 6C 4C E0 AA 5E 4C 44 AC 5C 06 10 FF 5A 26 + .byte $1C, $FF, $58, $00, $14, $FF, $54, $06, $18, $FF, $4C, $4C, $44, $AE, $44, $4C ; CPU:$B74B PRG:374B 1C FF 58 00 14 FF 54 06 18 FF 4C 4C 44 AE 44 4C + .byte $00, $B0, $42, $4C, $B4, $B2, $38, $00, $08, $FF, $34, $06, $0C, $FF, $1E, $02 ; CPU:$B75B PRG:375B 00 B0 42 4C B4 B2 38 00 08 FF 34 06 0C FF 1E 02 + .byte $0E, $FF, $1E, $02, $12, $FF, $1E, $02, $16, $FF, $1A, $2E, $3F, $1A, $02, $12 ; CPU:$B76B PRG:376B 0E FF 1E 02 12 FF 1E 02 16 FF 1A 2E 3F 1A 02 12 + .byte $FF, $1A, $4E, $D4, $07, $16, $4E, $D4, $0D, $14, $0E, $06, $AA, $12, $0C, $06 ; CPU:$B77B PRG:377B FF 1A 4E D4 07 16 4E D4 0D 14 0E 06 AA 12 0C 06 + .byte $AA, $12, $4E, $D4, $0D, $0C, $32, $00, $30, $FE, $34, $FE, $2C, $F0, $2A, $27 ; CPU:$B78B PRG:378B AA 12 4E D4 0D 0C 32 00 30 FE 34 FE 2C F0 2A 27 + .byte $1A, $F0, $26, $1C, $FF, $EE, $32, $E6, $4C, $64, $B4, $E4, $02, $14, $FF, $E0 ; CPU:$B79B PRG:379B 1A F0 26 1C FF EE 32 E6 4C 64 B4 E4 02 14 FF E0 + .byte $4C, $DC, $B6, $DC, $4C, $64, $B6, $D6, $02, $12, $FF, $D6, $02, $16, $FF, $D6 ; CPU:$B7AB PRG:37AB 4C DC B6 DC 4C 64 B6 D6 02 12 FF D6 02 16 FF D6 + .byte $4C, $DC, $B6, $D2, $4C, $64, $B6, $D2, $02, $14, $FF, $CC, $4C, $DC, $B6, $CA ; CPU:$B7BB PRG:37BB 4C DC B6 D2 4C 64 B6 D2 02 14 FF CC 4C DC B6 CA + .byte $00, $06, $FF, $CA, $00, $14, $FF, $C6, $4C, $64, $B8, $C6, $4C, $DC, $BA, $C4 ; CPU:$B7CB PRG:37CB 00 06 FF CA 00 14 FF C6 4C 64 B8 C6 4C DC BA C4 + .byte $34, $C2, $2C, $BA, $4E, $94, $0D, $BA, $4E, $B0, $0D, $B6, $4E, $94, $0E, $B6 ; CPU:$B7DB PRG:37DB 34 C2 2C BA 4E 94 0D BA 4E B0 0D B6 4E 94 0E B6 + .byte $4E, $B0, $0D, $B2, $2C, $A2, $2C, $94, $06, $12, $FF, $92, $32, $92, $06, $14 ; CPU:$B7EB PRG:37EB 4E B0 0D B2 2C A2 2C 94 06 12 FF 92 32 92 06 14 + .byte $FF, $90, $06, $14, $FF, $8E, $06, $16, $FF, $84, $2C, $7C, $00, $04, $FF, $7C ; CPU:$B7FB PRG:37FB FF 90 06 14 FF 8E 06 16 FF 84 2C 7C 00 04 FF 7C + .byte $00, $12, $FF, $7C, $00, $16, $FF, $78, $00, $08, $FF, $78, $00, $14, $FF, $78 ; CPU:$B80B PRG:380B 00 12 FF 7C 00 16 FF 78 00 08 FF 78 00 14 FF 78 + .byte $00, $1C, $FF, $6E, $0E, $10, $FF, $6E, $4E, $CC, $0D, $6C, $0C, $10, $FF, $6A ; CPU:$B81B PRG:381B 00 1C FF 6E 0E 10 FF 6E 4E CC 0D 6C 0C 10 FF 6A + .byte $32, $6A, $4E, $CC, $0D, $66, $26, $0A, $FF, $64, $26, $0C, $FF, $62, $2C, $52 ; CPU:$B82B PRG:382B 32 6A 4E CC 0D 66 26 0A FF 64 26 0C FF 62 2C 52 + .byte $32, $4E, $00, $10, $FF, $4C, $06, $12, $FF, $4A, $4C, $CC, $BC, $42, $02, $12 ; CPU:$B83B PRG:383B 32 4E 00 10 FF 4C 06 12 FF 4A 4C CC BC 42 02 12 + .byte $FF, $3C, $02, $04, $FF, $3A, $26, $12, $FF, $3A, $02, $1C, $FF, $36, $02, $12 ; CPU:$B84B PRG:384B FF 3C 02 04 FF 3A 26 12 FF 3A 02 1C FF 36 02 12 + .byte $FF, $34, $4C, $64, $BE, $34, $4C, $CC, $BE, $30, $2E, $E6, $22, $4C, $A8, $C0 ; CPU:$B85B PRG:385B FF 34 4C 64 BE 34 4C CC BE 30 2E E6 22 4C A8 C0 + .byte $22, $4C, $CC, $C2, $20, $32, $1C, $4C, $CC, $C4, $16, $0E, $0E, $FF, $16, $0E ; CPU:$B86B PRG:386B 22 4C CC C2 20 32 1C 4C CC C4 16 0E 0E FF 16 0E + .byte $12, $FF, $14, $2E, $7E, $14, $0C, $0E, $FF, $14, $0C, $12, $FF, $0C, $32, $0C ; CPU:$B87B PRG:387B 12 FF 14 2E 7E 14 0C 0E FF 14 0C 12 FF 0C 32 0C + .byte $38, $03, $00, $0C, $3A, $03, $00, $0C, $3E, $07, $00, $0C, $3C, $07, $00, $0C ; CPU:$B88B PRG:388B 38 03 00 0C 3A 03 00 0C 3E 07 00 0C 3C 07 00 0C + .byte $36, $C0, $00, $00, $FF, $FF, $FF, $FF, $FF, $FF, $AA, $AA, $AA, $FF, $FF, $FF ; CPU:$B89B PRG:389B 36 C0 00 00 FF FF FF FF FF FF AA AA AA FF FF FF ; ----------------------------------------------------------------------------- ; Routine: SetOamPtrs ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1116,7 +1710,7 @@ Sub_B8D7: sta (ZpF0),y ; CPU:$B8D7 PRG:38D7 91 F0 iny ; CPU:$B8D9 PRG:38D9 C8 cpy #$14 ; CPU:$B8DA PRG:38DA C0 14 - bne Sub_B8D7 ; CPU:$B8DC PRG:38DC D0 F9 + bne Sub_B8D7 ; CPU:$B8DC PRG:38DC D0 F9 ldy #$00 ; CPU:$B8DE PRG:38DE A0 00 ldx #$14 ; CPU:$B8E0 PRG:38E0 A2 14 ; ----------------------------------------------------------------------------- @@ -1136,7 +1730,7 @@ Sub_B8E2: adc #$08 ; CPU:$B8E8 PRG:38E8 69 08 tay ; CPU:$B8EA PRG:38EA A8 dex ; CPU:$B8EB PRG:38EB CA - bne Sub_B8E2 ; CPU:$B8EC PRG:38EC D0 F4 + bne Sub_B8E2 ; CPU:$B8EC PRG:38EC D0 F4 rts ; CPU:$B8EE PRG:38EE 60 ; ----------------------------------------------------------------------------- ; Routine: ClearZpVars @@ -1169,15 +1763,15 @@ ClearZpVars: Sub_B901: ldy ZpFD ; CPU:$B901 PRG:3901 A4 FD lda (ZpF2),y ; CPU:$B903 PRG:3903 B1 F2 - beq OamEntryDone ; CPU:$B905 PRG:3905 F0 44 + beq OamEntryDone ; CPU:$B905 PRG:3905 F0 44 cmp #$05 ; CPU:$B907 PRG:3907 C9 05 - bcc Sub_B916 ; CPU:$B909 PRG:3909 90 0B + bcc Sub_B916 ; CPU:$B909 PRG:3909 90 0B sec ; CPU:$B90B PRG:390B 38 sbc #$05 ; CPU:$B90C PRG:390C E9 05 tay ; CPU:$B90E PRG:390E A8 lda #$01 ; CPU:$B90F PRG:390F A9 01 sta (ZpFE),y ; CPU:$B911 PRG:3911 91 FE - jmp OamEntryDone ; CPU:$B913 PRG:3913 4C 4B B9 + jmp OamEntryDone ; CPU:$B913 PRG:3913 4C 4B B9 ; ----------------------------------------------------------------------------- ; Routine: Sub_B916 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1192,15 +1786,15 @@ Sub_B916: sbc #$01 ; CPU:$B917 PRG:3917 E9 01 tay ; CPU:$B919 PRG:3919 A8 lda (ZpFE),y ; CPU:$B91A PRG:391A B1 FE - bne OamEntryDone ; CPU:$B91C PRG:391C D0 2D + bne OamEntryDone ; CPU:$B91C PRG:391C D0 2D lda #$01 ; CPU:$B91E PRG:391E A9 01 sta (ZpFE),y ; CPU:$B920 PRG:3920 91 FE tya ; CPU:$B922 PRG:3922 98 tax ; CPU:$B923 PRG:3923 AA cmp #$03 ; CPU:$B924 PRG:3924 C9 03 - bne Sub_B92D ; CPU:$B926 PRG:3926 D0 05 + bne Sub_B92D ; CPU:$B926 PRG:3926 D0 05 lda #$00 ; CPU:$B928 PRG:3928 A9 00 - jmp WriteOamAttr ; CPU:$B92A PRG:392A 4C 30 B9 + jmp WriteOamAttr ; CPU:$B92A PRG:392A 4C 30 B9 ; ----------------------------------------------------------------------------- ; Routine: Sub_B92D ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1249,7 +1843,7 @@ Sub_B93D: pla ; CPU:$B945 PRG:3945 68 sec ; CPU:$B946 PRG:3946 38 sbc #$01 ; CPU:$B947 PRG:3947 E9 01 - bne Sub_B93D ; CPU:$B949 PRG:3949 D0 F2 + bne Sub_B93D ; CPU:$B949 PRG:3949 D0 F2 ; ----------------------------------------------------------------------------- ; Routine: OamEntryDone ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1265,7 +1859,7 @@ OamEntryDone: adc #$08 ; CPU:$B94E PRG:394E 69 08 sta ZpFD ; CPU:$B950 PRG:3950 85 FD cmp #$A0 ; CPU:$B952 PRG:3952 C9 A0 - bcc Sub_B901 ; CPU:$B954 PRG:3954 90 AB + bcc Sub_B901 ; CPU:$B954 PRG:3954 90 AB ldy #$00 ; CPU:$B956 PRG:3956 A0 00 sty ZpFC ; CPU:$B958 PRG:3958 84 FC sty ZpFD ; CPU:$B95A PRG:395A 84 FD @@ -1285,13 +1879,13 @@ UpdateOamSprite: sta ZpFF ; CPU:$B964 PRG:3964 85 FF ldy ZpFC ; CPU:$B966 PRG:3966 A4 FC lda (ZpFE),y ; CPU:$B968 PRG:3968 B1 FE - beq Sub_B985 ; CPU:$B96A PRG:396A F0 19 + beq Sub_B985 ; CPU:$B96A PRG:396A F0 19 ldy ZpFC ; CPU:$B96C PRG:396C A4 FC lda (ZpF0),y ; CPU:$B96E PRG:396E B1 F0 - beq Sub_B979 ; CPU:$B970 PRG:3970 F0 07 + beq Sub_B979 ; CPU:$B970 PRG:3970 F0 07 lda #$00 ; CPU:$B972 PRG:3972 A9 00 sta (ZpF0),y ; CPU:$B974 PRG:3974 91 F0 - jmp ProcessSpriteList ; CPU:$B976 PRG:3976 4C 94 B9 + jmp ProcessSpriteList ; CPU:$B976 PRG:3976 4C 94 B9 ; ----------------------------------------------------------------------------- ; Routine: Sub_B979 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1304,8 +1898,8 @@ UpdateOamSprite: Sub_B979: ldy ZpFD ; CPU:$B979 PRG:3979 A4 FD lda (ZpF2),y ; CPU:$B97B PRG:397B B1 F2 - bne Sub_B982 ; CPU:$B97D PRG:397D D0 03 - jmp SpriteListDone ; CPU:$B97F PRG:397F 4C 65 BA + bne Sub_B982 ; CPU:$B97D PRG:397D D0 03 + jmp SpriteListDone ; CPU:$B97F PRG:397F 4C 65 BA ; ----------------------------------------------------------------------------- ; Routine: Sub_B982 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1316,7 +1910,7 @@ Sub_B979: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_B982: - jmp SetSpriteActive ; CPU:$B982 PRG:3982 4C 00 BA + jmp SetSpriteActive ; CPU:$B982 PRG:3982 4C 00 BA ; ----------------------------------------------------------------------------- ; Routine: Sub_B985 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1329,8 +1923,8 @@ Sub_B982: Sub_B985: ldy ZpFC ; CPU:$B985 PRG:3985 A4 FC lda (ZpF0),y ; CPU:$B987 PRG:3987 B1 F0 - bne Sub_B98E ; CPU:$B989 PRG:3989 D0 03 - jmp SpriteListDone ; CPU:$B98B PRG:398B 4C 65 BA + bne Sub_B98E ; CPU:$B989 PRG:3989 D0 03 + jmp SpriteListDone ; CPU:$B98B PRG:398B 4C 65 BA ; ----------------------------------------------------------------------------- ; Routine: Sub_B98E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1343,7 +1937,7 @@ Sub_B985: Sub_B98E: ldy ZpFD ; CPU:$B98E PRG:398E A4 FD lda (ZpF2),y ; CPU:$B990 PRG:3990 B1 F2 - bne SetSpriteActive ; CPU:$B992 PRG:3992 D0 6C + bne SetSpriteActive ; CPU:$B992 PRG:3992 D0 6C ; ----------------------------------------------------------------------------- ; Routine: ProcessSpriteList ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1375,10 +1969,10 @@ ProcessSpriteList: tay ; CPU:$B9B0 PRG:39B0 A8 pla ; CPU:$B9B1 PRG:39B1 68 sta (ZpF2),y ; CPU:$B9B2 PRG:39B2 91 F2 - jsr CalcOamPtr ; CPU:$B9B4 PRG:39B4 20 30 BB + jsr CalcOamPtr ; CPU:$B9B4 PRG:39B4 20 30 BB ldy ZpFD ; CPU:$B9B7 PRG:39B7 A4 FD sta (ZpF2),y ; CPU:$B9B9 PRG:39B9 91 F2 - jsr CalcOamPtr ; CPU:$B9BB PRG:39BB 20 30 BB + jsr CalcOamPtr ; CPU:$B9BB PRG:39BB 20 30 BB tax ; CPU:$B9BE PRG:39BE AA lda ZpFD ; CPU:$B9BF PRG:39BF A5 FD clc ; CPU:$B9C1 PRG:39C1 18 @@ -1386,7 +1980,7 @@ ProcessSpriteList: tay ; CPU:$B9C4 PRG:39C4 A8 txa ; CPU:$B9C5 PRG:39C5 8A sta (ZpF2),y ; CPU:$B9C6 PRG:39C6 91 F2 - jsr CalcOamPtr ; CPU:$B9C8 PRG:39C8 20 30 BB + jsr CalcOamPtr ; CPU:$B9C8 PRG:39C8 20 30 BB tax ; CPU:$B9CB PRG:39CB AA lda ZpFD ; CPU:$B9CC PRG:39CC A5 FD clc ; CPU:$B9CE PRG:39CE 18 @@ -1394,7 +1988,7 @@ ProcessSpriteList: tay ; CPU:$B9D1 PRG:39D1 A8 txa ; CPU:$B9D2 PRG:39D2 8A sta (ZpF2),y ; CPU:$B9D3 PRG:39D3 91 F2 - jsr CalcOamPtr ; CPU:$B9D5 PRG:39D5 20 30 BB + jsr CalcOamPtr ; CPU:$B9D5 PRG:39D5 20 30 BB tax ; CPU:$B9D8 PRG:39D8 AA lda ZpFD ; CPU:$B9D9 PRG:39D9 A5 FD clc ; CPU:$B9DB PRG:39DB 18 @@ -1405,8 +1999,8 @@ ProcessSpriteList: ldy ZpFD ; CPU:$B9E2 PRG:39E2 A4 FD lda (ZpF2),y ; CPU:$B9E4 PRG:39E4 B1 F2 cmp #$04 ; CPU:$B9E6 PRG:39E6 C9 04 - bne SetSpriteAttr ; CPU:$B9E8 PRG:39E8 D0 25 - jsr CalcOamPtr ; CPU:$B9EA PRG:39EA 20 30 BB + bne SetSpriteAttr ; CPU:$B9E8 PRG:39E8 D0 25 + jsr CalcOamPtr ; CPU:$B9EA PRG:39EA 20 30 BB tax ; CPU:$B9ED PRG:39ED AA lda ZpFD ; CPU:$B9EE PRG:39EE A5 FD clc ; CPU:$B9F0 PRG:39F0 18 @@ -1417,7 +2011,7 @@ ProcessSpriteList: ldy ZpFC ; CPU:$B9F7 PRG:39F7 A4 FC lda #$00 ; CPU:$B9F9 PRG:39F9 A9 00 sta (ZpF0),y ; CPU:$B9FB PRG:39FB 91 F0 - jmp SpriteListDone ; CPU:$B9FD PRG:39FD 4C 65 BA + jmp SpriteListDone ; CPU:$B9FD PRG:39FD 4C 65 BA ; ----------------------------------------------------------------------------- ; Routine: SetSpriteActive ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1436,7 +2030,7 @@ SetSpriteActive: sec ; CPU:$BA08 PRG:3A08 38 sbc #$01 ; CPU:$BA09 PRG:3A09 E9 01 sta (ZpF2),y ; CPU:$BA0B PRG:3A0B 91 F2 - bne SpriteListDone ; CPU:$BA0D PRG:3A0D D0 56 + bne SpriteListDone ; CPU:$BA0D PRG:3A0D D0 56 ; ----------------------------------------------------------------------------- ; Routine: SetSpriteAttr ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1447,11 +2041,11 @@ SetSpriteActive: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- SetSpriteAttr: - jsr CalcOamPtr ; CPU:$BA0F PRG:3A0F 20 30 BB + jsr CalcOamPtr ; CPU:$BA0F PRG:3A0F 20 30 BB cmp #$F0 ; CPU:$BA12 PRG:3A12 C9 F0 - bcs Sub_BA7A ; CPU:$BA14 PRG:3A14 B0 64 + bcs Sub_BA7A ; CPU:$BA14 PRG:3A14 B0 64 cmp #$C0 ; CPU:$BA16 PRG:3A16 C9 C0 - bcs Sub_BA58 ; CPU:$BA18 PRG:3A18 B0 3E + bcs Sub_BA58 ; CPU:$BA18 PRG:3A18 B0 3E pha ; CPU:$BA1A PRG:3A1A 48 and #$F0 ; CPU:$BA1B PRG:3A1B 29 F0 lsr a ; CPU:$BA1D PRG:3A1D 4A @@ -1464,7 +2058,7 @@ SetSpriteAttr: sta ZpFF ; CPU:$BA29 PRG:3A29 85 FF pla ; CPU:$BA2B PRG:3A2B 68 and #$0F ; CPU:$BA2C PRG:3A2C 29 0F - beq Sub_BA38 ; CPU:$BA2E PRG:3A2E F0 08 + beq Sub_BA38 ; CPU:$BA2E PRG:3A2E F0 08 tax ; CPU:$BA30 PRG:3A30 AA ; ----------------------------------------------------------------------------- ; Routine: Sub_BA31 @@ -1479,7 +2073,7 @@ Sub_BA31: lsr ZpFE ; CPU:$BA31 PRG:3A31 46 FE ror ZpFF ; CPU:$BA33 PRG:3A33 66 FF dex ; CPU:$BA35 PRG:3A35 CA - bne Sub_BA31 ; CPU:$BA36 PRG:3A36 D0 F9 + bne Sub_BA31 ; CPU:$BA36 PRG:3A36 D0 F9 ; ----------------------------------------------------------------------------- ; Routine: Sub_BA38 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1504,7 +2098,7 @@ Sub_BA38: ldy ZpFD ; CPU:$BA4B PRG:3A4B A4 FD lda (ZpF2),y ; CPU:$BA4D PRG:3A4D B1 F2 cmp #$05 ; CPU:$BA4F PRG:3A4F C9 05 - bcc Sub_BA58 ; CPU:$BA51 PRG:3A51 90 05 + bcc Sub_BA58 ; CPU:$BA51 PRG:3A51 90 05 sec ; CPU:$BA53 PRG:3A53 38 sbc #$04 ; CPU:$BA54 PRG:3A54 E9 04 sta (ZpF2),y ; CPU:$BA56 PRG:3A56 91 F2 @@ -1518,7 +2112,7 @@ Sub_BA38: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_BA58: - jsr CalcOamPtr ; CPU:$BA58 PRG:3A58 20 30 BB + jsr CalcOamPtr ; CPU:$BA58 PRG:3A58 20 30 BB pha ; CPU:$BA5B PRG:3A5B 48 lda ZpFD ; CPU:$BA5C PRG:3A5C A5 FD clc ; CPU:$BA5E PRG:3A5E 18 @@ -1544,8 +2138,8 @@ SpriteListDone: adc #$01 ; CPU:$BA6E PRG:3A6E 69 01 sta ZpFC ; CPU:$BA70 PRG:3A70 85 FC cmp #$14 ; CPU:$BA72 PRG:3A72 C9 14 - bcs Sub_BA79 ; CPU:$BA74 PRG:3A74 B0 03 - jmp UpdateOamSprite ; CPU:$BA76 PRG:3A76 4C 5C B9 + bcs Sub_BA79 ; CPU:$BA74 PRG:3A74 B0 03 + jmp UpdateOamSprite ; CPU:$BA76 PRG:3A76 4C 5C B9 ; ----------------------------------------------------------------------------- ; Routine: Sub_BA79 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1575,6 +2169,8 @@ Sub_BA7A: lda $BA8C,x ; CPU:$BA83 PRG:3A83 BD 8C BA sta ZpFF ; CPU:$BA86 PRG:3A86 85 FF jmp ($00FE) ; CPU:$BA88 PRG:3A88 6C FE 00 +IndDispatchFeTable: +; 16-entry indirect jump table for `jmp ($fe)` at $BA88, read by lda $BA8B,x/$BA8C,x ; ---- data $BA8B-$BAAA (32 bytes) ---- ; referenced by `lda $BA8B,x` at $BA7E (operand $BA8B falls inside this region) ; referenced by `lda $BA8C,x` at $BA83 (operand $BA8C falls inside this region) @@ -1595,7 +2191,7 @@ SetAttrZero: sta (ZpF0),y ; CPU:$BAAF PRG:3AAF 91 F0 ldy ZpFD ; CPU:$BAB1 PRG:3AB1 A4 FD sta (ZpF2),y ; CPU:$BAB3 PRG:3AB3 91 F2 - jmp SpriteListDone ; CPU:$BAB5 PRG:3AB5 4C 65 BA + jmp SpriteListDone ; CPU:$BAB5 PRG:3AB5 4C 65 BA ; ----------------------------------------------------------------------------- ; Routine: SetAttrBit6 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1606,7 +2202,7 @@ SetAttrZero: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- SetAttrBit6: - jsr CalcOamPtr ; CPU:$BAB8 PRG:3AB8 20 30 BB + jsr CalcOamPtr ; CPU:$BAB8 PRG:3AB8 20 30 BB pha ; CPU:$BABB PRG:3ABB 48 lda ZpFD ; CPU:$BABC PRG:3ABC A5 FD clc ; CPU:$BABE PRG:3ABE 18 @@ -1618,7 +2214,7 @@ SetAttrBit6: pla ; CPU:$BAC8 PRG:3AC8 68 ora (ZpF2),y ; CPU:$BAC9 PRG:3AC9 11 F2 sta (ZpF2),y ; CPU:$BACB PRG:3ACB 91 F2 - jmp SetSpriteAttr ; CPU:$BACD PRG:3ACD 4C 0F BA + jmp SetSpriteAttr ; CPU:$BACD PRG:3ACD 4C 0F BA ; ----------------------------------------------------------------------------- ; Routine: SetAttrClear67 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1629,7 +2225,7 @@ SetAttrBit6: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- SetAttrClear67: - jsr CalcOamPtr ; CPU:$BAD0 PRG:3AD0 20 30 BB + jsr CalcOamPtr ; CPU:$BAD0 PRG:3AD0 20 30 BB pha ; CPU:$BAD3 PRG:3AD3 48 lda ZpFD ; CPU:$BAD4 PRG:3AD4 A5 FD clc ; CPU:$BAD6 PRG:3AD6 18 @@ -1641,7 +2237,7 @@ SetAttrClear67: pla ; CPU:$BAE0 PRG:3AE0 68 ora (ZpF2),y ; CPU:$BAE1 PRG:3AE1 11 F2 sta (ZpF2),y ; CPU:$BAE3 PRG:3AE3 91 F2 - jmp SetSpriteAttr ; CPU:$BAE5 PRG:3AE5 4C 0F BA + jmp SetSpriteAttr ; CPU:$BAE5 PRG:3AE5 4C 0F BA ; ----------------------------------------------------------------------------- ; Routine: SetAttrClear5 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1652,7 +2248,7 @@ SetAttrClear67: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- SetAttrClear5: - jsr CalcOamPtr ; CPU:$BAE8 PRG:3AE8 20 30 BB + jsr CalcOamPtr ; CPU:$BAE8 PRG:3AE8 20 30 BB pha ; CPU:$BAEB PRG:3AEB 48 lda ZpFD ; CPU:$BAEC PRG:3AEC A5 FD clc ; CPU:$BAEE PRG:3AEE 18 @@ -1664,7 +2260,7 @@ SetAttrClear5: pla ; CPU:$BAF8 PRG:3AF8 68 ora (ZpF2),y ; CPU:$BAF9 PRG:3AF9 11 F2 sta (ZpF2),y ; CPU:$BAFB PRG:3AFB 91 F2 - jmp SetSpriteAttr ; CPU:$BAFD PRG:3AFD 4C 0F BA + jmp SetSpriteAttr ; CPU:$BAFD PRG:3AFD 4C 0F BA ; ----------------------------------------------------------------------------- ; Routine: SetAttrByteLo ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1675,7 +2271,7 @@ SetAttrClear5: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- SetAttrByteLo: - jsr CalcOamPtr ; CPU:$BB00 PRG:3B00 20 30 BB + jsr CalcOamPtr ; CPU:$BB00 PRG:3B00 20 30 BB pha ; CPU:$BB03 PRG:3B03 48 lda ZpFD ; CPU:$BB04 PRG:3B04 A5 FD clc ; CPU:$BB06 PRG:3B06 18 @@ -1683,7 +2279,7 @@ SetAttrByteLo: tay ; CPU:$BB09 PRG:3B09 A8 pla ; CPU:$BB0A PRG:3B0A 68 sta (ZpF2),y ; CPU:$BB0B PRG:3B0B 91 F2 - jmp SetSpriteAttr ; CPU:$BB0D PRG:3B0D 4C 0F BA + jmp SetSpriteAttr ; CPU:$BB0D PRG:3B0D 4C 0F BA ; ----------------------------------------------------------------------------- ; Routine: SetAttrByte4 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1694,7 +2290,7 @@ SetAttrByteLo: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- SetAttrByte4: - jsr CalcOamPtr ; CPU:$BB10 PRG:3B10 20 30 BB + jsr CalcOamPtr ; CPU:$BB10 PRG:3B10 20 30 BB pha ; CPU:$BB13 PRG:3B13 48 lda ZpFD ; CPU:$BB14 PRG:3B14 A5 FD clc ; CPU:$BB16 PRG:3B16 18 @@ -1702,7 +2298,7 @@ SetAttrByte4: tay ; CPU:$BB19 PRG:3B19 A8 pla ; CPU:$BB1A PRG:3B1A 68 sta (ZpF2),y ; CPU:$BB1B PRG:3B1B 91 F2 - jmp SetSpriteAttr ; CPU:$BB1D PRG:3B1D 4C 0F BA + jmp SetSpriteAttr ; CPU:$BB1D PRG:3B1D 4C 0F BA ; ----------------------------------------------------------------------------- ; Routine: SetAttrByte1 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1713,7 +2309,7 @@ SetAttrByte4: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- SetAttrByte1: - jsr CalcOamPtr ; CPU:$BB20 PRG:3B20 20 30 BB + jsr CalcOamPtr ; CPU:$BB20 PRG:3B20 20 30 BB pha ; CPU:$BB23 PRG:3B23 48 lda ZpFD ; CPU:$BB24 PRG:3B24 A5 FD clc ; CPU:$BB26 PRG:3B26 18 @@ -1721,7 +2317,7 @@ SetAttrByte1: tay ; CPU:$BB29 PRG:3B29 A8 pla ; CPU:$BB2A PRG:3B2A 68 sta (ZpF2),y ; CPU:$BB2B PRG:3B2B 91 F2 - jmp SetSpriteAttr ; CPU:$BB2D PRG:3B2D 4C 0F BA + jmp SetSpriteAttr ; CPU:$BB2D PRG:3B2D 4C 0F BA ; ----------------------------------------------------------------------------- ; Routine: CalcOamPtr ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1832,12 +2428,12 @@ SpriteAttrTable: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- GameModeDispatch: - lda GameMode ; CPU:$BEFB PRG:3EFB A5 10 - beq Sub_BF4C ; CPU:$BEFD PRG:3EFD F0 4D + lda GameMode ; CPU:$BEFB PRG:3EFB A5 10 + beq Sub_BF4C ; CPU:$BEFD PRG:3EFD F0 4D ldx #$00 ; CPU:$BEFF PRG:3EFF A2 00 lda Zp60 ; CPU:$BF01 PRG:3F01 A5 60 - beq Sub_BF08 ; CPU:$BF03 PRG:3F03 F0 03 - jmp DispatchLdyJmp ; CPU:$BF05 PRG:3F05 4C DC F1 + beq Sub_BF08 ; CPU:$BF03 PRG:3F03 F0 03 + jmp DispatchLdyJmp ; CPU:$BF05 PRG:3F05 4C DC F1 ; ----------------------------------------------------------------------------- ; Routine: Sub_BF08 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1850,12 +2446,12 @@ GameModeDispatch: Sub_BF08: ldy #$00 ; CPU:$BF08 PRG:3F08 A0 00 lda #$18 ; CPU:$BF0A PRG:3F0A A9 18 - sta ObjPtr ; CPU:$BF0C PRG:3F0C 85 13 - lda ResetHi ; CPU:$BF0E PRG:3F0E A5 3C + sta ObjPtr ; CPU:$BF0C PRG:3F0C 85 13 + lda ResetHi ; CPU:$BF0E PRG:3F0E A5 3C and #$01 ; CPU:$BF10 PRG:3F10 29 01 - beq Sub_BF18 ; CPU:$BF12 PRG:3F12 F0 04 + beq Sub_BF18 ; CPU:$BF12 PRG:3F12 F0 04 lda #$A8 ; CPU:$BF14 PRG:3F14 A9 A8 - sta ObjPtr ; CPU:$BF16 PRG:3F16 85 13 + sta ObjPtr ; CPU:$BF16 PRG:3F16 85 13 ; ----------------------------------------------------------------------------- ; Routine: Sub_BF18 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1869,14 +2465,14 @@ Sub_BF18: lda #$F0 ; CPU:$BF18 PRG:3F18 A9 F0 sta $0700,y ; CPU:$BF1A PRG:3F1A 99 00 07 lda Zp80,x ; CPU:$BF1D PRG:3F1D B5 80 - bne Sub_BF2A ; CPU:$BF1F PRG:3F1F D0 09 + bne Sub_BF2A ; CPU:$BF1F PRG:3F1F D0 09 iny ; CPU:$BF21 PRG:3F21 C8 iny ; CPU:$BF22 PRG:3F22 C8 iny ; CPU:$BF23 PRG:3F23 C8 iny ; CPU:$BF24 PRG:3F24 C8 inx ; CPU:$BF25 PRG:3F25 E8 cpy #$18 ; CPU:$BF26 PRG:3F26 C0 18 - bne Sub_BF18 ; CPU:$BF28 PRG:3F28 D0 EE + bne Sub_BF18 ; CPU:$BF28 PRG:3F28 D0 EE ; ----------------------------------------------------------------------------- ; Routine: Sub_BF2A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1901,11 +2497,11 @@ Sub_BF2A: and #$FC ; CPU:$BF3E PRG:3F3E 29 FC asl a ; CPU:$BF40 PRG:3F40 0A clc ; CPU:$BF41 PRG:3F41 18 - adc ObjPtr ; CPU:$BF42 PRG:3F42 65 13 + adc ObjPtr ; CPU:$BF42 PRG:3F42 65 13 sta $0700,y ; CPU:$BF44 PRG:3F44 99 00 07 iny ; CPU:$BF47 PRG:3F47 C8 cpy #$20 ; CPU:$BF48 PRG:3F48 C0 20 - bne Sub_BF2A ; CPU:$BF4A PRG:3F4A D0 DE + bne Sub_BF2A ; CPU:$BF4A PRG:3F4A D0 DE ; ----------------------------------------------------------------------------- ; Routine: Sub_BF4C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1929,7 +2525,7 @@ Sub_BF4C: ObjSpritesInit6: stx Zp48 ; CPU:$BF4D PRG:3F4D 86 48 ldx #$06 ; CPU:$BF4F PRG:3F4F A2 06 - jmp ObjSpriteLoop ; CPU:$BF51 PRG:3F51 4C 5F BF + jmp ObjSpriteLoop ; CPU:$BF51 PRG:3F51 4C 5F BF ; ----------------------------------------------------------------------------- ; Routine: ObjSpritesInit5 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1942,7 +2538,7 @@ ObjSpritesInit6: ObjSpritesInit5: stx Zp48 ; CPU:$BF54 PRG:3F54 86 48 ldx #$05 ; CPU:$BF56 PRG:3F56 A2 05 - jmp ObjSpriteLoop ; CPU:$BF58 PRG:3F58 4C 5F BF + jmp ObjSpriteLoop ; CPU:$BF58 PRG:3F58 4C 5F BF ; ----------------------------------------------------------------------------- ; Routine: ObjSpritesInit4 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1967,7 +2563,7 @@ ObjSpritesInit4: ObjSpriteLoop: sty Zp49 ; CPU:$BF5F PRG:3F5F 84 49 ldy Zp60 ; CPU:$BF61 PRG:3F61 A4 60 - bne ObjSpriteReturn ; CPU:$BF63 PRG:3F63 D0 60 + bne ObjSpriteReturn ; CPU:$BF63 PRG:3F63 D0 60 clc ; CPU:$BF65 PRG:3F65 18 adc Zp80,x ; CPU:$BF66 PRG:3F66 75 80 ; ----------------------------------------------------------------------------- @@ -1981,7 +2577,7 @@ ObjSpriteLoop: ; ----------------------------------------------------------------------------- ObjCoordClamp: cmp #$0A ; CPU:$BF68 PRG:3F68 C9 0A - bcc Sub_BF82 ; CPU:$BF6A PRG:3F6A 90 16 + bcc Sub_BF82 ; CPU:$BF6A PRG:3F6A 90 16 ; ----------------------------------------------------------------------------- ; Routine: Sub_BF6C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -1997,13 +2593,13 @@ Sub_BF6C: inc Zp7F,x ; CPU:$BF6F PRG:3F6F F6 7F sta Zp80,x ; CPU:$BF71 PRG:3F71 95 80 cmp #$0A ; CPU:$BF73 PRG:3F73 C9 0A - bcs Sub_BF6C ; CPU:$BF75 PRG:3F75 B0 F5 + bcs Sub_BF6C ; CPU:$BF75 PRG:3F75 B0 F5 dex ; CPU:$BF77 PRG:3F77 CA txa ; CPU:$BF78 PRG:3F78 8A and #$07 ; CPU:$BF79 PRG:3F79 29 07 - beq Sub_BF84 ; CPU:$BF7B PRG:3F7B F0 07 + beq Sub_BF84 ; CPU:$BF7B PRG:3F7B F0 07 lda Zp80,x ; CPU:$BF7D PRG:3F7D B5 80 - jmp ObjCoordClamp ; CPU:$BF7F PRG:3F7F 4C 68 BF + jmp ObjCoordClamp ; CPU:$BF7F PRG:3F7F 4C 68 BF ; ----------------------------------------------------------------------------- ; Routine: Sub_BF82 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2027,7 +2623,7 @@ Sub_BF82: Sub_BF84: ldy #$00 ; CPU:$BF84 PRG:3F84 A0 00 lda #$08 ; CPU:$BF86 PRG:3F86 A9 08 - sta ObjUpdateFlag ; CPU:$BF88 PRG:3F88 85 0E + sta ObjUpdateFlag ; CPU:$BF88 PRG:3F88 85 0E ldx #$00 ; CPU:$BF8A PRG:3F8A A2 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_BF8C @@ -2041,13 +2637,13 @@ Sub_BF84: Sub_BF8C: lda Zp80,x ; CPU:$BF8C PRG:3F8C B5 80 cmp a:$004B,y ; CPU:$BF8E PRG:3F8E D9 4B 00 - bcc ObjSpriteLoop2 ; CPU:$BF91 PRG:3F91 90 16 - bne Sub_BF9E ; CPU:$BF93 PRG:3F93 D0 09 + bcc ObjSpriteLoop2 ; CPU:$BF91 PRG:3F91 90 16 + bne Sub_BF9E ; CPU:$BF93 PRG:3F93 D0 09 inx ; CPU:$BF95 PRG:3F95 E8 iny ; CPU:$BF96 PRG:3F96 C8 - dec ObjUpdateFlag ; CPU:$BF97 PRG:3F97 C6 0E - bne Sub_BF8C ; CPU:$BF99 PRG:3F99 D0 F1 - jmp ObjSpriteLoop2 ; CPU:$BF9B PRG:3F9B 4C A9 BF + dec ObjUpdateFlag ; CPU:$BF97 PRG:3F97 C6 0E + bne Sub_BF8C ; CPU:$BF99 PRG:3F99 D0 F1 + jmp ObjSpriteLoop2 ; CPU:$BF9B PRG:3F9B 4C A9 BF ; ----------------------------------------------------------------------------- ; Routine: Sub_BF9E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2062,8 +2658,8 @@ Sub_BF9E: sta a:$004B,y ; CPU:$BFA0 PRG:3FA0 99 4B 00 inx ; CPU:$BFA3 PRG:3FA3 E8 iny ; CPU:$BFA4 PRG:3FA4 C8 - dec ObjUpdateFlag ; CPU:$BFA5 PRG:3FA5 C6 0E - bne Sub_BF9E ; CPU:$BFA7 PRG:3FA7 D0 F5 + dec ObjUpdateFlag ; CPU:$BFA5 PRG:3FA5 C6 0E + bne Sub_BF9E ; CPU:$BFA7 PRG:3FA7 D0 F5 ; ----------------------------------------------------------------------------- ; Routine: ObjSpriteLoop2 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2087,11 +2683,11 @@ ObjSpriteLoop2: Sub_BFAB: lda Zp80,x ; CPU:$BFAB PRG:3FAB B5 80 cmp Zp88,x ; CPU:$BFAD PRG:3FAD D5 88 - bcc ObjSpriteReturn ; CPU:$BFAF PRG:3FAF 90 14 - bne Sub_BFB8 ; CPU:$BFB1 PRG:3FB1 D0 05 + bcc ObjSpriteReturn ; CPU:$BFAF PRG:3FAF 90 14 + bne Sub_BFB8 ; CPU:$BFB1 PRG:3FB1 D0 05 inx ; CPU:$BFB3 PRG:3FB3 E8 cpx #$04 ; CPU:$BFB4 PRG:3FB4 E0 04 - bne Sub_BFAB ; CPU:$BFB6 PRG:3FB6 D0 F3 + bne Sub_BFAB ; CPU:$BFB6 PRG:3FB6 D0 F3 ; ----------------------------------------------------------------------------- ; Routine: Sub_BFB8 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2106,7 +2702,7 @@ Sub_BFB8: lda #$01 ; CPU:$BFBA PRG:3FBA A9 01 sta $0603 ; CPU:$BFBC PRG:3FBC 8D 03 06 sta $0604 ; CPU:$BFBF PRG:3FBF 8D 04 06 - jsr ObjSpriteInit ; CPU:$BFC2 PRG:3FC2 20 CA BF + jsr ObjSpriteInit ; CPU:$BFC2 PRG:3FC2 20 CA BF ; ----------------------------------------------------------------------------- ; Routine: ObjSpriteReturn ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2131,7 +2727,7 @@ ObjSpriteReturn: ; ----------------------------------------------------------------------------- ObjSpriteInit: lda Zp8C ; CPU:$BFCA PRG:3FCA A5 8C - bne ObjSpriteLoop3 ; CPU:$BFCC PRG:3FCC D0 1C + bne ObjSpriteLoop3 ; CPU:$BFCC PRG:3FCC D0 1C lda #$01 ; CPU:$BFCE PRG:3FCE A9 01 sta Zp8C ; CPU:$BFD0 PRG:3FD0 85 8C ldx #$00 ; CPU:$BFD2 PRG:3FD2 A2 00 @@ -2156,7 +2752,7 @@ ObjSpriteCopyTable: inx ; CPU:$BFE3 PRG:3FE3 E8 iny ; CPU:$BFE4 PRG:3FE4 C8 cpy #$02 ; CPU:$BFE5 PRG:3FE5 C0 02 - bne ObjSpriteCopyTable ; CPU:$BFE7 PRG:3FE7 D0 F5 + bne ObjSpriteCopyTable ; CPU:$BFE7 PRG:3FE7 D0 F5 rts ; CPU:$BFE9 PRG:3FE9 60 ; ----------------------------------------------------------------------------- ; Routine: ObjSpriteLoop3 @@ -2184,7 +2780,7 @@ ObjSpriteAdjust: clc ; CPU:$BFF1 PRG:3FF1 18 adc Zp88,x ; CPU:$BFF2 PRG:3FF2 75 88 cmp #$0A ; CPU:$BFF4 PRG:3FF4 C9 0A - bcc ObjSpriteStore ; CPU:$BFF6 PRG:3FF6 90 05 + bcc ObjSpriteStore ; CPU:$BFF6 PRG:3FF6 90 05 sec ; CPU:$BFF8 PRG:3FF8 38 sbc #$0A ; CPU:$BFF9 PRG:3FF9 E9 0A inc Zp87,x ; CPU:$BFFB PRG:3FFB F6 87 @@ -2200,12 +2796,13 @@ ObjSpriteAdjust: ObjSpriteStore: sta Zp88,x ; CPU:$BFFD PRG:3FFD 95 88 dex ; CPU:$BFFF PRG:3FFF CA - dey ; CPU:$C000 PRG:4000 88 - bne ObjSpriteAdjust ; CPU:$C001 PRG:4001 D0 EB +; ---- data $C000-$C000 (1 bytes) ---- + .byte $88 ; CPU:$C000 PRG:4000 88 + bne ObjSpriteAdjust ; CPU:$C001 PRG:4001 D0 EB lda Zp88,x ; CPU:$C003 PRG:4003 B5 88 sec ; CPU:$C005 PRG:4005 38 sbc #$0A ; CPU:$C006 PRG:4006 E9 0A - bcc Sub_C00E ; CPU:$C008 PRG:4008 90 04 + bcc Sub_C00E ; CPU:$C008 PRG:4008 90 04 sta Zp88,x ; CPU:$C00A PRG:400A 95 88 inc Zp87,x ; CPU:$C00C PRG:400C F6 87 ; ----------------------------------------------------------------------------- @@ -2257,7 +2854,7 @@ ObjSpawnInit: Sub_C01A: sta ZpD8,x ; CPU:$C01A PRG:401A 95 D8 dex ; CPU:$C01C PRG:401C CA - bpl Sub_C01A ; CPU:$C01D PRG:401D 10 FB + bpl Sub_C01A ; CPU:$C01D PRG:401D 10 FB ldx Zp65 ; CPU:$C01F PRG:401F A6 65 rts ; CPU:$C021 PRG:4021 60 ; ----------------------------------------------------------------------------- @@ -2273,7 +2870,7 @@ Sub_C022: lda Zp8F ; CPU:$C022 PRG:4022 A5 8F clc ; CPU:$C024 PRG:4024 18 adc #$FE ; CPU:$C025 PRG:4025 69 FE - bcs Sub_C02B ; CPU:$C027 PRG:4027 B0 02 + bcs Sub_C02B ; CPU:$C027 PRG:4027 B0 02 lda #$00 ; CPU:$C029 PRG:4029 A9 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_C02B @@ -2301,7 +2898,7 @@ ObjMoveY: sec ; CPU:$C030 PRG:4030 38 adc Zp40 ; CPU:$C031 PRG:4031 65 40 cmp #$80 ; CPU:$C033 PRG:4033 C9 80 - bcc Sub_C03A ; CPU:$C035 PRG:4035 90 03 + bcc Sub_C03A ; CPU:$C035 PRG:4035 90 03 sec ; CPU:$C037 PRG:4037 38 sbc #$40 ; CPU:$C038 PRG:4038 E9 40 ; ----------------------------------------------------------------------------- @@ -2327,7 +2924,7 @@ Sub_C03A: ObjMoveXSign: asl a ; CPU:$C03C PRG:403C 0A tax ; CPU:$C03D PRG:403D AA - bcs Sub_C04B ; CPU:$C03E PRG:403E B0 0B + bcs Sub_C04B ; CPU:$C03E PRG:403E B0 0B lda $C09E,x ; CPU:$C040 PRG:4040 BD 9E C0 sta Zp30 ; CPU:$C043 PRG:4043 85 30 lda $C09F,x ; CPU:$C045 PRG:4045 BD 9F C0 @@ -2361,7 +2958,7 @@ ObjSpawnInit2: lda (Zp2A),y ; CPU:$C056 PRG:4056 B1 2A dey ; CPU:$C058 PRG:4058 88 dey ; CPU:$C059 PRG:4059 88 - jmp ObjMoveXSign ; CPU:$C05A PRG:405A 4C 3C C0 + jmp ObjMoveXSign ; CPU:$C05A PRG:405A 4C 3C C0 ; ----------------------------------------------------------------------------- ; Routine: ObjSetPosition ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2382,20 +2979,20 @@ ObjSetPosition: asl a ; CPU:$C065 PRG:4065 0A asl a ; CPU:$C066 PRG:4066 0A adc Zp84 ; CPU:$C067 PRG:4067 65 84 - sta ObjPtr ; CPU:$C069 PRG:4069 85 13 + sta ObjPtr ; CPU:$C069 PRG:4069 85 13 lda Zp81 ; CPU:$C06B PRG:406B A5 81 asl a ; CPU:$C06D PRG:406D 0A asl a ; CPU:$C06E PRG:406E 0A asl a ; CPU:$C06F PRG:406F 0A asl a ; CPU:$C070 PRG:4070 0A adc Zp82 ; CPU:$C071 PRG:4071 65 82 - sta ObjectYLo ; CPU:$C073 PRG:4073 85 35 - inc ObjectYLo ; CPU:$C075 PRG:4075 E6 35 + sta ObjectYLo ; CPU:$C073 PRG:4073 85 35 + inc ObjectYLo ; CPU:$C075 PRG:4075 E6 35 lda Zp8E ; CPU:$C077 PRG:4077 A5 8E clc ; CPU:$C079 PRG:4079 18 adc #$01 ; CPU:$C07A PRG:407A 69 01 - sta ObjectYHi ; CPU:$C07C PRG:407C 85 36 - lda ObjPtr ; CPU:$C07E PRG:407E A5 13 + sta ObjectYHi ; CPU:$C07C PRG:407C 85 36 + lda ObjPtr ; CPU:$C07E PRG:407E A5 13 ldy #$10 ; CPU:$C080 PRG:4080 A0 10 ; ----------------------------------------------------------------------------- ; Routine: Sub_C082 @@ -2408,10 +3005,10 @@ ObjSetPosition: ; ----------------------------------------------------------------------------- Sub_C082: sec ; CPU:$C082 PRG:4082 38 - sbc ObjectYHi ; CPU:$C083 PRG:4083 E5 36 - bcs Sub_C08B ; CPU:$C085 PRG:4085 B0 04 - dec ObjectYLo ; CPU:$C087 PRG:4087 C6 35 - beq Sub_C090 ; CPU:$C089 PRG:4089 F0 05 + sbc ObjectYHi ; CPU:$C083 PRG:4083 E5 36 + bcs Sub_C08B ; CPU:$C085 PRG:4085 B0 04 + dec ObjectYLo ; CPU:$C087 PRG:4087 C6 35 + beq Sub_C090 ; CPU:$C089 PRG:4089 F0 05 ; ----------------------------------------------------------------------------- ; Routine: Sub_C08B ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2424,7 +3021,7 @@ Sub_C082: Sub_C08B: inc Zp8F ; CPU:$C08B PRG:408B E6 8F dey ; CPU:$C08D PRG:408D 88 - bne Sub_C082 ; CPU:$C08E PRG:408E D0 F2 + bne Sub_C082 ; CPU:$C08E PRG:408E D0 F2 ; ----------------------------------------------------------------------------- ; Routine: Sub_C090 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2436,7 +3033,7 @@ Sub_C08B: ; ----------------------------------------------------------------------------- Sub_C090: lda Zp8F ; CPU:$C090 PRG:4090 A5 8F - bpl Sub_C099 ; CPU:$C092 PRG:4092 10 05 + bpl Sub_C099 ; CPU:$C092 PRG:4092 10 05 sec ; CPU:$C094 PRG:4094 38 sbc #$40 ; CPU:$C095 PRG:4095 E9 40 sta Zp8F ; CPU:$C097 PRG:4097 85 8F @@ -2465,6 +3062,8 @@ Sub_C099: ; ----------------------------------------------------------------------------- Sub_C09D: rts ; CPU:$C09D PRG:409D 60 +ObjParamTable: +; Enemy/object parameter table (byte pairs read by lda $C09E,x/$C09F,x) ; ---- data $C09E-$C1FD (352 bytes) ---- ; referenced by `lda $C09E,x` at $C040 (operand $C09E falls inside this region) ; referenced by `lda $C09F,x` at $C045 (operand $C09F falls inside this region) @@ -2504,7 +3103,7 @@ Sub_C09D: ; ----------------------------------------------------------------------------- ObjInitCall: lda Zp32 ; CPU:$C1FE PRG:41FE A5 32 - bne Sub_C203 ; CPU:$C200 PRG:4200 D0 01 + bne Sub_C203 ; CPU:$C200 PRG:4200 D0 01 rts ; CPU:$C202 PRG:4202 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_C203 @@ -2517,7 +3116,7 @@ ObjInitCall: ; ----------------------------------------------------------------------------- Sub_C203: lda Zp3E ; CPU:$C203 PRG:4203 A5 3E - beq Sub_C22D ; CPU:$C205 PRG:4205 F0 26 + beq Sub_C22D ; CPU:$C205 PRG:4205 F0 26 ldx #$00 ; CPU:$C207 PRG:4207 A2 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_C209 @@ -2530,10 +3129,10 @@ Sub_C203: ; ----------------------------------------------------------------------------- Sub_C209: lda ZpD8,x ; CPU:$C209 PRG:4209 B5 D8 - beq Sub_C213 ; CPU:$C20B PRG:420B F0 06 + beq Sub_C213 ; CPU:$C20B PRG:420B F0 06 inx ; CPU:$C20D PRG:420D E8 cpx #$07 ; CPU:$C20E PRG:420E E0 07 - bne Sub_C209 ; CPU:$C210 PRG:4210 D0 F7 + bne Sub_C209 ; CPU:$C210 PRG:4210 D0 F7 rts ; CPU:$C212 PRG:4212 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_C213 @@ -2545,7 +3144,7 @@ Sub_C209: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C213: - stx ObjPtr ; CPU:$C213 PRG:4213 86 13 + stx ObjPtr ; CPU:$C213 PRG:4213 86 13 ; ----------------------------------------------------------------------------- ; Routine: Sub_C215 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2558,9 +3157,9 @@ Sub_C213: Sub_C215: inx ; CPU:$C215 PRG:4215 E8 lda ZpD8,x ; CPU:$C216 PRG:4216 B5 D8 - beq Sub_C21F ; CPU:$C218 PRG:4218 F0 05 + beq Sub_C21F ; CPU:$C218 PRG:4218 F0 05 cpx #$07 ; CPU:$C21A PRG:421A E0 07 - bne Sub_C215 ; CPU:$C21C PRG:421C D0 F7 + bne Sub_C215 ; CPU:$C21C PRG:421C D0 F7 rts ; CPU:$C21E PRG:421E 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_C21F @@ -2573,7 +3172,7 @@ Sub_C215: ; ----------------------------------------------------------------------------- Sub_C21F: sta Zp3E ; CPU:$C21F PRG:421F 85 3E - ldy ObjPtr ; CPU:$C221 PRG:4221 A4 13 + ldy ObjPtr ; CPU:$C221 PRG:4221 A4 13 lda #$25 ; CPU:$C223 PRG:4223 A9 25 sta a:$00D8,y ; CPU:$C225 PRG:4225 99 D8 00 lda #$27 ; CPU:$C228 PRG:4228 A9 27 @@ -2590,11 +3189,11 @@ Sub_C21F: ; ----------------------------------------------------------------------------- Sub_C22D: lda Zp44 ; CPU:$C22D PRG:422D A5 44 - beq Sub_C23A ; CPU:$C22F PRG:422F F0 09 + beq Sub_C23A ; CPU:$C22F PRG:422F F0 09 lda #$00 ; CPU:$C231 PRG:4231 A9 00 sta Zp44 ; CPU:$C233 PRG:4233 85 44 lda #$23 ; CPU:$C235 PRG:4235 A9 23 - jsr ObjPushX ; CPU:$C237 PRG:4237 20 7D C2 + jsr ObjPushX ; CPU:$C237 PRG:4237 20 7D C2 ; ----------------------------------------------------------------------------- ; Routine: Sub_C23A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2606,12 +3205,12 @@ Sub_C22D: ; ----------------------------------------------------------------------------- Sub_C23A: lda Zp3F ; CPU:$C23A PRG:423A A5 3F - beq Sub_C249 ; CPU:$C23C PRG:423C F0 0B - lda GameSubMode ; CPU:$C23E PRG:423E A5 1B + beq Sub_C249 ; CPU:$C23C PRG:423C F0 0B + lda GameSubMode ; CPU:$C23E PRG:423E A5 1B and Zp41 ; CPU:$C240 PRG:4240 25 41 - bne Sub_C249 ; CPU:$C242 PRG:4242 D0 05 + bne Sub_C249 ; CPU:$C242 PRG:4242 D0 05 dec Zp3F ; CPU:$C244 PRG:4244 C6 3F - jsr ObjSubRoutine ; CPU:$C246 PRG:4246 20 65 C2 + jsr ObjSubRoutine ; CPU:$C246 PRG:4246 20 65 C2 ; ----------------------------------------------------------------------------- ; Routine: Sub_C249 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2623,7 +3222,7 @@ Sub_C23A: ; ----------------------------------------------------------------------------- Sub_C249: lda Zp30 ; CPU:$C249 PRG:4249 A5 30 - bne Sub_C24E ; CPU:$C24B PRG:424B D0 01 + bne Sub_C24E ; CPU:$C24B PRG:424B D0 01 rts ; CPU:$C24D PRG:424D 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_C24E @@ -2640,7 +3239,7 @@ Sub_C24E: and #$7F ; CPU:$C252 PRG:4252 29 7F tay ; CPU:$C254 PRG:4254 A8 lda Zp30 ; CPU:$C255 PRG:4255 A5 30 - sta ObjUpdateFlag ; CPU:$C257 PRG:4257 85 0E + sta ObjUpdateFlag ; CPU:$C257 PRG:4257 85 0E ; ----------------------------------------------------------------------------- ; Routine: Sub_C259 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2655,8 +3254,8 @@ Sub_C259: sta ZpD8,x ; CPU:$C25C PRG:425C 95 D8 iny ; CPU:$C25E PRG:425E C8 inx ; CPU:$C25F PRG:425F E8 - dec ObjUpdateFlag ; CPU:$C260 PRG:4260 C6 0E - bne Sub_C259 ; CPU:$C262 PRG:4262 D0 F5 + dec ObjUpdateFlag ; CPU:$C260 PRG:4260 C6 0E + bne Sub_C259 ; CPU:$C262 PRG:4262 D0 F5 rts ; CPU:$C264 PRG:4264 60 ; ----------------------------------------------------------------------------- ; Routine: ObjSubRoutine @@ -2680,9 +3279,9 @@ ObjSubRoutine: ; ----------------------------------------------------------------------------- Sub_C267: lda ZpD8,x ; CPU:$C267 PRG:4267 B5 D8 - beq Sub_C26F ; CPU:$C269 PRG:4269 F0 04 + beq Sub_C26F ; CPU:$C269 PRG:4269 F0 04 dex ; CPU:$C26B PRG:426B CA - bne Sub_C267 ; CPU:$C26C PRG:426C D0 F9 + bne Sub_C267 ; CPU:$C26C PRG:426C D0 F9 rts ; CPU:$C26E PRG:426E 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_C26F @@ -2710,7 +3309,7 @@ Sub_C274: lda (Zp2A),y ; CPU:$C274 PRG:4274 B1 2A iny ; CPU:$C276 PRG:4276 C8 iny ; CPU:$C277 PRG:4277 C8 - jmp ObjPushX ; CPU:$C278 PRG:4278 4C 7D C2 + jmp ObjPushX ; CPU:$C278 PRG:4278 4C 7D C2 ; ----------------------------------------------------------------------------- ; Routine: ObjSubRoutine2 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2745,10 +3344,10 @@ ObjPushX: ; ----------------------------------------------------------------------------- Sub_C280: lda ZpD8,x ; CPU:$C280 PRG:4280 B5 D8 - beq Sub_C28B ; CPU:$C282 PRG:4282 F0 07 + beq Sub_C28B ; CPU:$C282 PRG:4282 F0 07 inx ; CPU:$C284 PRG:4284 E8 cpx #$08 ; CPU:$C285 PRG:4285 E0 08 - bne Sub_C280 ; CPU:$C287 PRG:4287 D0 F7 + bne Sub_C280 ; CPU:$C287 PRG:4287 D0 F7 pla ; CPU:$C289 PRG:4289 68 rts ; CPU:$C28A PRG:428A 60 ; ----------------------------------------------------------------------------- @@ -2764,6 +3363,8 @@ Sub_C28B: pla ; CPU:$C28B PRG:428B 68 sta ZpD8,x ; CPU:$C28C PRG:428C 95 D8 rts ; CPU:$C28E PRG:428E 60 +ObjInitDirTable: +; Object initial direction/speed table (read by lda $C28F,y during object init) ; ---- data $C28F-$C304 (118 bytes) ---- ; referenced by `lda $C28F,y` at $C259 (operand $C28F falls inside this region) .byte $00, $01, $01, $01, $01, $01, $01, $03, $03, $03, $03, $03, $03, $19, $19, $19 ; CPU:$C28F PRG:428F 00 01 01 01 01 01 01 03 03 03 03 03 03 19 19 19 @@ -2811,13 +3412,13 @@ Sub_C30F: ; ----------------------------------------------------------------------------- Sub_C311: lda $0500,x ; CPU:$C311 PRG:4311 BD 00 05 - beq Sub_C322 ; CPU:$C314 PRG:4314 F0 0C + beq Sub_C322 ; CPU:$C314 PRG:4314 F0 0C txa ; CPU:$C316 PRG:4316 8A clc ; CPU:$C317 PRG:4317 18 adc #$10 ; CPU:$C318 PRG:4318 69 10 tax ; CPU:$C31A PRG:431A AA cpx #$80 ; CPU:$C31B PRG:431B E0 80 - bne Sub_C311 ; CPU:$C31D PRG:431D D0 F2 + bne Sub_C311 ; CPU:$C31D PRG:431D D0 F2 iny ; CPU:$C31F PRG:431F C8 iny ; CPU:$C320 PRG:4320 C8 rts ; CPU:$C321 PRG:4321 60 @@ -2857,7 +3458,7 @@ Sub_C322: lda $A8F6,y ; CPU:$C359 PRG:4359 B9 F6 A8 sta $050B,x ; CPU:$C35C PRG:435C 9D 0B 05 ldy Zp2C ; CPU:$C35F PRG:435F A4 2C - jmp ObjSpriteAttrs ; CPU:$C361 PRG:4361 4C A0 C7 + jmp ObjSpriteAttrs ; CPU:$C361 PRG:4361 4C A0 C7 ; ----------------------------------------------------------------------------- ; Routine: Sub_C364 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2868,7 +3469,7 @@ Sub_C322: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C364: - jsr ObjSpriteSetup ; CPU:$C364 PRG:4364 20 76 C3 + jsr ObjSpriteSetup ; CPU:$C364 PRG:4364 20 76 C3 lda #$00 ; CPU:$C367 PRG:4367 A9 00 sta $050E,x ; CPU:$C369 PRG:4369 9D 0E 05 rts ; CPU:$C36C PRG:436C 60 @@ -2882,7 +3483,7 @@ Sub_C364: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C36D: - jsr ObjSpriteSetup ; CPU:$C36D PRG:436D 20 76 C3 + jsr ObjSpriteSetup ; CPU:$C36D PRG:436D 20 76 C3 lda #$01 ; CPU:$C370 PRG:4370 A9 01 sta $050E,x ; CPU:$C372 PRG:4372 9D 0E 05 rts ; CPU:$C375 PRG:4375 60 @@ -2908,13 +3509,13 @@ ObjSpriteSetup: ; ----------------------------------------------------------------------------- Sub_C378: lda $0500,x ; CPU:$C378 PRG:4378 BD 00 05 - beq Sub_C38B ; CPU:$C37B PRG:437B F0 0E + beq Sub_C38B ; CPU:$C37B PRG:437B F0 0E txa ; CPU:$C37D PRG:437D 8A clc ; CPU:$C37E PRG:437E 18 adc #$10 ; CPU:$C37F PRG:437F 69 10 tax ; CPU:$C381 PRG:4381 AA cpx #$80 ; CPU:$C382 PRG:4382 E0 80 - bne Sub_C378 ; CPU:$C384 PRG:4384 D0 F2 + bne Sub_C378 ; CPU:$C384 PRG:4384 D0 F2 iny ; CPU:$C386 PRG:4386 C8 iny ; CPU:$C387 PRG:4387 C8 pla ; CPU:$C388 PRG:4388 68 @@ -2971,9 +3572,9 @@ Sub_C38B: ObjDrawCall: ldx #$00 ; CPU:$C3C6 PRG:43C6 A2 00 stx Zp2E ; CPU:$C3C8 PRG:43C8 86 2E - lda GameSubMode ; CPU:$C3CA PRG:43CA A5 1B + lda GameSubMode ; CPU:$C3CA PRG:43CA A5 1B and #$01 ; CPU:$C3CC PRG:43CC 29 01 - bne Sub_C407 ; CPU:$C3CE PRG:43CE D0 37 + bne Sub_C407 ; CPU:$C3CE PRG:43CE D0 37 ; ----------------------------------------------------------------------------- ; Routine: Sub_C3D0 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -2987,9 +3588,9 @@ Sub_C3D0: lda $0507,x ; CPU:$C3D0 PRG:43D0 BD 07 05 clc ; CPU:$C3D3 PRG:43D3 18 adc Zp25 ; CPU:$C3D4 PRG:43D4 65 25 - bcc Sub_C3E2 ; CPU:$C3D6 PRG:43D6 90 0A + bcc Sub_C3E2 ; CPU:$C3D6 PRG:43D6 90 0A inc $0506,x ; CPU:$C3D8 PRG:43D8 FE 06 05 - beq Sub_C3E2 ; CPU:$C3DB PRG:43DB F0 05 + beq Sub_C3E2 ; CPU:$C3DB PRG:43DB F0 05 lda #$00 ; CPU:$C3DD PRG:43DD A9 00 sta $0500,x ; CPU:$C3DF PRG:43DF 9D 00 05 ; ----------------------------------------------------------------------------- @@ -3003,13 +3604,13 @@ Sub_C3D0: ; ----------------------------------------------------------------------------- Sub_C3E2: sta $0507,x ; CPU:$C3E2 PRG:43E2 9D 07 05 - jsr ObjSpriteAttr ; CPU:$C3E5 PRG:43E5 20 2D C4 + jsr ObjSpriteAttr ; CPU:$C3E5 PRG:43E5 20 2D C4 txa ; CPU:$C3E8 PRG:43E8 8A clc ; CPU:$C3E9 PRG:43E9 18 adc #$10 ; CPU:$C3EA PRG:43EA 69 10 tax ; CPU:$C3EC PRG:43EC AA cpx #$80 ; CPU:$C3ED PRG:43ED E0 80 - bne Sub_C3D0 ; CPU:$C3EF PRG:43EF D0 DF + bne Sub_C3D0 ; CPU:$C3EF PRG:43EF D0 DF ; ----------------------------------------------------------------------------- ; Routine: ObjSpriteCheck ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3033,8 +3634,8 @@ ObjSpriteCheck: Sub_C3F3: lda $0500,x ; CPU:$C3F3 PRG:43F3 BD 00 05 cmp #$04 ; CPU:$C3F6 PRG:43F6 C9 04 - bne Sub_C3FD ; CPU:$C3F8 PRG:43F8 D0 03 - jsr ObjSpriteIndex ; CPU:$C3FA PRG:43FA 20 99 C6 + bne Sub_C3FD ; CPU:$C3F8 PRG:43F8 D0 03 + jsr ObjSpriteIndex ; CPU:$C3FA PRG:43FA 20 99 C6 ; ----------------------------------------------------------------------------- ; Routine: Sub_C3FD ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3050,7 +3651,7 @@ Sub_C3FD: adc #$10 ; CPU:$C3FF PRG:43FF 69 10 tax ; CPU:$C401 PRG:4401 AA cpx #$80 ; CPU:$C402 PRG:4402 E0 80 - bne Sub_C3F3 ; CPU:$C404 PRG:4404 D0 ED + bne Sub_C3F3 ; CPU:$C404 PRG:4404 D0 ED rts ; CPU:$C406 PRG:4406 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_C407 @@ -3076,9 +3677,9 @@ Sub_C409: lda $0507,x ; CPU:$C409 PRG:4409 BD 07 05 clc ; CPU:$C40C PRG:440C 18 adc Zp25 ; CPU:$C40D PRG:440D 65 25 - bcc Sub_C41B ; CPU:$C40F PRG:440F 90 0A + bcc Sub_C41B ; CPU:$C40F PRG:440F 90 0A inc $0506,x ; CPU:$C411 PRG:4411 FE 06 05 - beq Sub_C41B ; CPU:$C414 PRG:4414 F0 05 + beq Sub_C41B ; CPU:$C414 PRG:4414 F0 05 lda #$00 ; CPU:$C416 PRG:4416 A9 00 sta $0500,x ; CPU:$C418 PRG:4418 9D 00 05 ; ----------------------------------------------------------------------------- @@ -3092,14 +3693,14 @@ Sub_C409: ; ----------------------------------------------------------------------------- Sub_C41B: sta $0507,x ; CPU:$C41B PRG:441B 9D 07 05 - jsr ObjSpriteAttr ; CPU:$C41E PRG:441E 20 2D C4 + jsr ObjSpriteAttr ; CPU:$C41E PRG:441E 20 2D C4 txa ; CPU:$C421 PRG:4421 8A sec ; CPU:$C422 PRG:4422 38 sbc #$10 ; CPU:$C423 PRG:4423 E9 10 tax ; CPU:$C425 PRG:4425 AA cpx #$F0 ; CPU:$C426 PRG:4426 E0 F0 - bne Sub_C409 ; CPU:$C428 PRG:4428 D0 DF - jmp ObjSpriteCheck ; CPU:$C42A PRG:442A 4C F1 C3 + bne Sub_C409 ; CPU:$C428 PRG:4428 D0 DF + jmp ObjSpriteCheck ; CPU:$C42A PRG:442A 4C F1 C3 ; ----------------------------------------------------------------------------- ; Routine: ObjSpriteAttr ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3166,8 +3767,8 @@ Sub_C455: cpy ZpC3 ; CPU:$C457 PRG:4457 C4 C3 cpy Zp8B ; CPU:$C459 PRG:4459 C4 8B cpy ZpAD ; CPU:$C45B PRG:445B C4 AD - cpy Joypad2Cur2 ; CPU:$C45D PRG:445D C4 0A - cmp NmiFrameFlag ; CPU:$C45F PRG:445F C5 0D + cpy Joypad2Cur2 ; CPU:$C45D PRG:445D C4 0A + cmp NmiFrameFlag ; CPU:$C45F PRG:445F C5 0D cmp Zp52 ; CPU:$C461 PRG:4461 C5 52 cmp Zp3A ; CPU:$C463 PRG:4463 C5 3A cmp Zp52 ; CPU:$C465 PRG:4465 C5 52 @@ -3186,8 +3787,8 @@ Sub_C455: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C473: - bmi Sub_C4E6 ; CPU:$C473 PRG:4473 30 71 - jmp ObjCommonUpdate ; CPU:$C475 PRG:4475 4C D8 C7 + bmi Sub_C4E6 ; CPU:$C473 PRG:4473 30 71 + jmp ObjCommonUpdate ; CPU:$C475 PRG:4475 4C D8 C7 ; ---- data $C478-$C47C (5 bytes) ---- .byte $20, $B4, $C6, $BD, $00 ; CPU:$C478 PRG:4478 20 B4 C6 BD 00 ; ----------------------------------------------------------------------------- @@ -3216,15 +3817,15 @@ Sub_C47D: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C49A: - bpl Sub_C445 ; CPU:$C49A PRG:449A 10 A9 - bvc Sub_C43B ; CPU:$C49C PRG:449C 50 9D + bpl Sub_C445 ; CPU:$C49A PRG:449A 10 A9 + bvc Sub_C43B ; CPU:$C49C PRG:449C 50 9D ora #$05 ; CPU:$C49E PRG:449E 09 05 lda $0500,x ; CPU:$C4A0 PRG:44A0 BD 00 05 and #$1F ; CPU:$C4A3 PRG:44A3 29 1F clc ; CPU:$C4A5 PRG:44A5 18 adc #$06 ; CPU:$C4A6 PRG:44A6 69 06 sta $0500,x ; CPU:$C4A8 PRG:44A8 9D 00 05 - jmp ObjCommonUpdate ; CPU:$C4AB PRG:44AB 4C D8 C7 + jmp ObjCommonUpdate ; CPU:$C4AB PRG:44AB 4C D8 C7 ; ---- data $C4AE-$C4D1 (36 bytes) ---- .byte $20, $B4, $C6, $BD, $00, $05, $30, $30, $29, $20, $F0, $F1, $A9, $38, $9D, $09 ; CPU:$C4AE PRG:44AE 20 B4 C6 BD 00 05 30 30 29 20 F0 F1 A9 38 9D 09 .byte $05, $A9, $14, $4C, $20, $C5, $20, $79, $C5, $20, $B4, $C6, $BD, $00, $05, $30 ; CPU:$C4BE PRG:44BE 05 A9 14 4C 20 C5 20 79 C5 20 B4 C6 BD 00 05 30 @@ -3239,15 +3840,15 @@ Sub_C49A: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C4D2: - bpl Sub_C47D ; CPU:$C4D2 PRG:44D2 10 A9 - bvc Sub_C473 ; CPU:$C4D4 PRG:44D4 50 9D + bpl Sub_C47D ; CPU:$C4D2 PRG:44D2 10 A9 + bvc Sub_C473 ; CPU:$C4D4 PRG:44D4 50 9D ora #$05 ; CPU:$C4D6 PRG:44D6 09 05 lda $0500,x ; CPU:$C4D8 PRG:44D8 BD 00 05 and #$1F ; CPU:$C4DB PRG:44DB 29 1F clc ; CPU:$C4DD PRG:44DD 18 adc #$06 ; CPU:$C4DE PRG:44DE 69 06 sta $0500,x ; CPU:$C4E0 PRG:44E0 9D 00 05 - jmp ObjCommonUpdate ; CPU:$C4E3 PRG:44E3 4C D8 C7 + jmp ObjCommonUpdate ; CPU:$C4E3 PRG:44E3 4C D8 C7 ; ----------------------------------------------------------------------------- ; Routine: Sub_C4E6 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3259,7 +3860,7 @@ Sub_C4D2: ; ----------------------------------------------------------------------------- Sub_C4E6: lda $050E,x ; CPU:$C4E6 PRG:44E6 BD 0E 05 - bne Sub_C4FB ; CPU:$C4E9 PRG:44E9 D0 10 + bne Sub_C4FB ; CPU:$C4E9 PRG:44E9 D0 10 lda #$03 ; CPU:$C4EB PRG:44EB A9 03 sta $0500,x ; CPU:$C4ED PRG:44ED 9D 00 05 lda #$05 ; CPU:$C4F0 PRG:44F0 A9 05 @@ -3318,12 +3919,12 @@ Sub_C4FF: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C50B: - jsr ObjXUpdate ; CPU:$C50B PRG:450B 20 79 C5 - jsr ObjSpriteY ; CPU:$C50E PRG:450E 20 B4 C6 + jsr ObjXUpdate ; CPU:$C50B PRG:450B 20 79 C5 + jsr ObjSpriteY ; CPU:$C50E PRG:450E 20 B4 C6 lda $0500,x ; CPU:$C511 PRG:4511 BD 00 05 - bmi Sub_C4E6 ; CPU:$C514 PRG:4514 30 D0 + bmi Sub_C4E6 ; CPU:$C514 PRG:4514 30 D0 dec $0509,x ; CPU:$C516 PRG:4516 DE 09 05 - bne Sub_C523 ; CPU:$C519 PRG:4519 D0 08 + bne Sub_C523 ; CPU:$C519 PRG:4519 D0 08 and #$1F ; CPU:$C51B PRG:451B 29 1F sec ; CPU:$C51D PRG:451D 38 sbc #$09 ; CPU:$C51E PRG:451E E9 09 @@ -3338,7 +3939,7 @@ Sub_C50B: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C523: - jmp ObjCommonUpdate ; CPU:$C523 PRG:4523 4C D8 C7 + jmp ObjCommonUpdate ; CPU:$C523 PRG:4523 4C D8 C7 ; ---- data $C526-$C53A (21 bytes) ---- .byte $20, $74, $C5, $20, $B4, $C6, $BD, $00, $05, $30, $B5, $DE, $09, $05, $D0, $3B ; CPU:$C526 PRG:4526 20 74 C5 20 B4 C6 BD 00 05 30 B5 DE 09 05 D0 3B .byte $A9, $0E, $4C, $20, $C5 ; CPU:$C536 PRG:4536 A9 0E 4C 20 C5 @@ -3352,16 +3953,16 @@ Sub_C523: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C53B: - jsr ObjYUpdate ; CPU:$C53B PRG:453B 20 74 C5 - jsr ObjSpriteY ; CPU:$C53E PRG:453E 20 B4 C6 + jsr ObjYUpdate ; CPU:$C53B PRG:453B 20 74 C5 + jsr ObjSpriteY ; CPU:$C53E PRG:453E 20 B4 C6 lda $0500,x ; CPU:$C541 PRG:4541 BD 00 05 - bmi Sub_C4E6 ; CPU:$C544 PRG:4544 30 A0 + bmi Sub_C4E6 ; CPU:$C544 PRG:4544 30 A0 dec $0509,x ; CPU:$C546 PRG:4546 DE 09 05 - bne Sub_C571 ; CPU:$C549 PRG:4549 D0 26 + bne Sub_C571 ; CPU:$C549 PRG:4549 D0 26 and #$1F ; CPU:$C54B PRG:454B 29 1F sec ; CPU:$C54D PRG:454D 38 sbc #$0E ; CPU:$C54E PRG:454E E9 0E - jmp ObjYCheck ; CPU:$C550 PRG:4550 4C 68 C5 + jmp ObjYCheck ; CPU:$C550 PRG:4550 4C 68 C5 ; ---- data $C553-$C567 (21 bytes) ---- .byte $20, $A3, $C5, $20, $B4, $C6, $BD, $00, $05, $30, $88, $DE, $09, $05, $D0, $C0 ; CPU:$C553 PRG:4553 20 A3 C5 20 B4 C6 BD 00 05 30 88 DE 09 05 D0 C0 .byte $29, $1F, $38, $E9, $0B ; CPU:$C563 PRG:4563 29 1F 38 E9 0B @@ -3376,7 +3977,7 @@ Sub_C53B: ; ----------------------------------------------------------------------------- ObjYCheck: cmp #$06 ; CPU:$C568 PRG:4568 C9 06 - beq Sub_C56E ; CPU:$C56A PRG:456A F0 02 + beq Sub_C56E ; CPU:$C56A PRG:456A F0 02 lda #$07 ; CPU:$C56C PRG:456C A9 07 ; ----------------------------------------------------------------------------- ; Routine: Sub_C56E @@ -3399,7 +4000,7 @@ Sub_C56E: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C571: - jmp ObjCommonUpdate ; CPU:$C571 PRG:4571 4C D8 C7 + jmp ObjCommonUpdate ; CPU:$C571 PRG:4571 4C D8 C7 ; ----------------------------------------------------------------------------- ; Routine: ObjYUpdate ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3411,7 +4012,7 @@ Sub_C571: ; ----------------------------------------------------------------------------- ObjYUpdate: lda #$E0 ; CPU:$C574 PRG:4574 A9 E0 - jmp ObjXUpdate2 ; CPU:$C576 PRG:4576 4C 7B C5 + jmp ObjXUpdate2 ; CPU:$C576 PRG:4576 4C 7B C5 ; ----------------------------------------------------------------------------- ; Routine: ObjXUpdate ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3436,9 +4037,9 @@ ObjXUpdate2: clc ; CPU:$C57B PRG:457B 18 adc $0508,x ; CPU:$C57C PRG:457C 7D 08 05 sta $0508,x ; CPU:$C57F PRG:457F 9D 08 05 - bcc Sub_C58C ; CPU:$C582 PRG:4582 90 08 + bcc Sub_C58C ; CPU:$C582 PRG:4582 90 08 inc $0507,x ; CPU:$C584 PRG:4584 FE 07 05 - bne Sub_C58C ; CPU:$C587 PRG:4587 D0 03 + bne Sub_C58C ; CPU:$C587 PRG:4587 D0 03 inc $0506,x ; CPU:$C589 PRG:4589 FE 06 05 ; ----------------------------------------------------------------------------- ; Routine: Sub_C58C @@ -3452,11 +4053,11 @@ ObjXUpdate2: Sub_C58C: lda $0507,x ; CPU:$C58C PRG:458C BD 07 05 and #$03 ; CPU:$C58F PRG:458F 29 03 - bne Sub_C5A2 ; CPU:$C591 PRG:4591 D0 0F + bne Sub_C5A2 ; CPU:$C591 PRG:4591 D0 0F inc $050C,x ; CPU:$C593 PRG:4593 FE 0C 05 lda $050C,x ; CPU:$C596 PRG:4596 BD 0C 05 cmp #$0E ; CPU:$C599 PRG:4599 C9 0E - bne Sub_C5A2 ; CPU:$C59B PRG:459B D0 05 + bne Sub_C5A2 ; CPU:$C59B PRG:459B D0 05 lda #$0B ; CPU:$C59D PRG:459D A9 0B sta $050C,x ; CPU:$C59F PRG:459F 9D 0C 05 ; ----------------------------------------------------------------------------- @@ -3498,8 +4099,8 @@ Sub_C626: inc $050C,x ; CPU:$C633 PRG:4633 FE 0C 05 lda $050C,x ; CPU:$C636 PRG:4636 BD 0C 05 cmp #$03 ; CPU:$C639 PRG:4639 C9 03 - bne Sub_C640 ; CPU:$C63B PRG:463B D0 03 - jmp DispatchJsrStoreLdaClc2 ; CPU:$C63D PRG:463D 4C 65 CF + bne Sub_C640 ; CPU:$C63B PRG:463B D0 03 + jmp DispatchJsrStoreLdaClc2 ; CPU:$C63D PRG:463D 4C 65 CF ; ----------------------------------------------------------------------------- ; Routine: Sub_C640 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3511,7 +4112,7 @@ Sub_C626: ; ----------------------------------------------------------------------------- Sub_C640: cmp #$05 ; CPU:$C640 PRG:4640 C9 05 - bne Sub_C64E ; CPU:$C642 PRG:4642 D0 0A + bne Sub_C64E ; CPU:$C642 PRG:4642 D0 0A lda #$00 ; CPU:$C644 PRG:4644 A9 00 sta $050C,x ; CPU:$C646 PRG:4646 9D 0C 05 lda #$01 ; CPU:$C649 PRG:4649 A9 01 @@ -3563,12 +4164,12 @@ ObjSpriteIndex: lsr a ; CPU:$C69B PRG:469B 4A lsr a ; CPU:$C69C PRG:469C 4A lsr a ; CPU:$C69D PRG:469D 4A - adc GameSubMode ; CPU:$C69E PRG:469E 65 1B + adc GameSubMode ; CPU:$C69E PRG:469E 65 1B and #$04 ; CPU:$C6A0 PRG:46A0 29 04 - beq Sub_C6AC ; CPU:$C6A2 PRG:46A2 F0 08 + beq Sub_C6AC ; CPU:$C6A2 PRG:46A2 F0 08 lda #$13 ; CPU:$C6A4 PRG:46A4 A9 13 sta $050C,x ; CPU:$C6A6 PRG:46A6 9D 0C 05 - jsr ObjCommonUpdate ; CPU:$C6A9 PRG:46A9 20 D8 C7 + jsr ObjCommonUpdate ; CPU:$C6A9 PRG:46A9 20 D8 C7 ; ----------------------------------------------------------------------------- ; Routine: Sub_C6AC ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3581,7 +4182,7 @@ ObjSpriteIndex: Sub_C6AC: lda #$0A ; CPU:$C6AC PRG:46AC A9 0A sta $050C,x ; CPU:$C6AE PRG:46AE 9D 0C 05 - jmp ObjCommonUpdate ; CPU:$C6B1 PRG:46B1 4C D8 C7 + jmp ObjCommonUpdate ; CPU:$C6B1 PRG:46B1 4C D8 C7 ; ----------------------------------------------------------------------------- ; Routine: ObjSpriteY ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3593,21 +4194,21 @@ Sub_C6AC: ; ----------------------------------------------------------------------------- ObjSpriteY: lda $0506,x ; CPU:$C6B4 PRG:46B4 BD 06 05 - bne Sub_C71F ; CPU:$C6B7 PRG:46B7 D0 66 + bne Sub_C71F ; CPU:$C6B7 PRG:46B7 D0 66 lda $0507,x ; CPU:$C6B9 PRG:46B9 BD 07 05 sec ; CPU:$C6BC PRG:46BC 38 sbc Zp24 ; CPU:$C6BD PRG:46BD E5 24 clc ; CPU:$C6BF PRG:46BF 18 adc #$4B ; CPU:$C6C0 PRG:46C0 69 4B cmp #$17 ; CPU:$C6C2 PRG:46C2 C9 17 - bcs Sub_C6DF ; CPU:$C6C4 PRG:46C4 B0 19 + bcs Sub_C6DF ; CPU:$C6C4 PRG:46C4 B0 19 lda $0504,x ; CPU:$C6C6 PRG:46C6 BD 04 05 sec ; CPU:$C6C9 PRG:46C9 38 sbc Zp23 ; CPU:$C6CA PRG:46CA E5 23 clc ; CPU:$C6CC PRG:46CC 18 adc #$0B ; CPU:$C6CD PRG:46CD 69 0B cmp #$17 ; CPU:$C6CF PRG:46CF C9 17 - bcs Sub_C6DF ; CPU:$C6D1 PRG:46D1 B0 0C + bcs Sub_C6DF ; CPU:$C6D1 PRG:46D1 B0 0C ; ---- data $C6D3-$C6D3 (1 bytes) ---- .byte $A9 ; CPU:$C6D3 PRG:46D3 A9 ; ----------------------------------------------------------------------------- @@ -3622,7 +4223,7 @@ ObjSpriteY: Sub_C6D4: ora (Zp85,x) ; CPU:$C6D4 PRG:46D4 01 85 rol a:$00BD ; CPU:$C6D6 PRG:46D6 2E BD 00 - ora Joypad1Press ; CPU:$C6D9 PRG:46D9 05 09 + ora Joypad1Press ; CPU:$C6D9 PRG:46D9 05 09 rti ; CPU:$C6DB PRG:46DB 40 sta $0500,x ; CPU:$C6DC PRG:46DC 9D 00 05 ; ----------------------------------------------------------------------------- @@ -3636,24 +4237,24 @@ Sub_C6D4: ; ----------------------------------------------------------------------------- Sub_C6DF: lda $02A0 ; CPU:$C6DF PRG:46DF AD A0 02 - beq Sub_C71F ; CPU:$C6E2 PRG:46E2 F0 3B + beq Sub_C71F ; CPU:$C6E2 PRG:46E2 F0 3B lda $0507,x ; CPU:$C6E4 PRG:46E4 BD 07 05 sec ; CPU:$C6E7 PRG:46E7 38 sbc $02A4 ; CPU:$C6E8 PRG:46E8 ED A4 02 clc ; CPU:$C6EB PRG:46EB 18 adc #$0C ; CPU:$C6EC PRG:46EC 69 0C cmp #$17 ; CPU:$C6EE PRG:46EE C9 17 - bcs Sub_C71F ; CPU:$C6F0 PRG:46F0 B0 2D + bcs Sub_C71F ; CPU:$C6F0 PRG:46F0 B0 2D lda $0504,x ; CPU:$C6F2 PRG:46F2 BD 04 05 sec ; CPU:$C6F5 PRG:46F5 38 sbc $02A3 ; CPU:$C6F6 PRG:46F6 ED A3 02 clc ; CPU:$C6F9 PRG:46F9 18 adc #$0C ; CPU:$C6FA PRG:46FA 69 0C cmp #$17 ; CPU:$C6FC PRG:46FC C9 17 - bcs Sub_C71F ; CPU:$C6FE PRG:46FE B0 1F + bcs Sub_C71F ; CPU:$C6FE PRG:46FE B0 1F lda $02A0 ; CPU:$C700 PRG:4700 AD A0 02 cmp #$20 ; CPU:$C703 PRG:4703 C9 20 - bne Sub_C717 ; CPU:$C705 PRG:4705 D0 10 + bne Sub_C717 ; CPU:$C705 PRG:4705 D0 10 lda $0500,x ; CPU:$C707 PRG:4707 BD 00 05 ora #$80 ; CPU:$C70A PRG:470A 09 80 sta $0500,x ; CPU:$C70C PRG:470C 9D 00 05 @@ -3669,7 +4270,7 @@ Sub_C6DF: ; ----------------------------------------------------------------------------- Sub_C711: sta $0612 ; CPU:$C711 PRG:4711 8D 12 06 - jsr ObjSpriteX ; CPU:$C714 PRG:4714 20 20 C7 + jsr ObjSpriteX ; CPU:$C714 PRG:4714 20 20 C7 ; ----------------------------------------------------------------------------- ; Routine: Sub_C717 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3706,9 +4307,9 @@ Sub_C71F: ObjSpriteX: lda $050F,x ; CPU:$C720 PRG:4720 BD 0F 05 cmp #$05 ; CPU:$C723 PRG:4723 C9 05 - bcs Sub_C72B ; CPU:$C725 PRG:4725 B0 04 + bcs Sub_C72B ; CPU:$C725 PRG:4725 B0 04 asl a ; CPU:$C727 PRG:4727 0A - jmp ObjSpritesInit5 ; CPU:$C728 PRG:4728 4C 54 BF + jmp ObjSpritesInit5 ; CPU:$C728 PRG:4728 4C 54 BF ; ----------------------------------------------------------------------------- ; Routine: Sub_C72B ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3723,12 +4324,12 @@ Sub_C72B: sbc #$05 ; CPU:$C72C PRG:472C E9 05 tay ; CPU:$C72E PRG:472E A8 lda $C741,y ; CPU:$C72F PRG:472F B9 41 C7 - jsr ObjSpritesInit4 ; CPU:$C732 PRG:4732 20 5B BF + jsr ObjSpritesInit4 ; CPU:$C732 PRG:4732 20 5B BF lda $050F,x ; CPU:$C735 PRG:4735 BD 0F 05 and #$01 ; CPU:$C738 PRG:4738 29 01 - bne Sub_C71F ; CPU:$C73A PRG:473A D0 E3 + bne Sub_C71F ; CPU:$C73A PRG:473A D0 E3 lda #$05 ; CPU:$C73C PRG:473C A9 05 - jmp ObjSpritesInit5 ; CPU:$C73E PRG:473E 4C 54 BF + jmp ObjSpritesInit5 ; CPU:$C73E PRG:473E 4C 54 BF ; ---- data $C741-$C79F (95 bytes) ---- ; referenced by `lda $C741,y` at $C72F (operand $C741 falls inside this region) .byte $01, $01, $02, $02, $0A, $BD, $02, $05, $0A, $0A, $29, $7C, $A8, $20, $C4, $C7 ; CPU:$C741 PRG:4741 01 01 02 02 0A BD 02 05 0A 0A 29 7C A8 20 C4 C7 @@ -3748,18 +4349,18 @@ Sub_C72B: ; ----------------------------------------------------------------------------- ObjSpriteAttrs: lda $050A,x ; CPU:$C7A0 PRG:47A0 BD 0A 05 - sta VramPtrLo ; CPU:$C7A3 PRG:47A3 85 04 + sta VramPtrLo ; CPU:$C7A3 PRG:47A3 85 04 lda $050B,x ; CPU:$C7A5 PRG:47A5 BD 0B 05 - sta VramCopyCount ; CPU:$C7A8 PRG:47A8 85 05 + sta VramCopyCount ; CPU:$C7A8 PRG:47A8 85 05 lda $0501,x ; CPU:$C7AA PRG:47AA BD 01 05 sty Zp2C ; CPU:$C7AD PRG:47AD 84 2C tay ; CPU:$C7AF PRG:47AF A8 inc $0501,x ; CPU:$C7B0 PRG:47B0 FE 01 05 inc $0501,x ; CPU:$C7B3 PRG:47B3 FE 01 05 - lda (VramPtrLo),y ; CPU:$C7B6 PRG:47B6 B1 04 + lda (VramPtrLo),y ; CPU:$C7B6 PRG:47B6 B1 04 sta $0502,x ; CPU:$C7B8 PRG:47B8 9D 02 05 iny ; CPU:$C7BB PRG:47BB C8 - lda (VramPtrLo),y ; CPU:$C7BC PRG:47BC B1 04 + lda (VramPtrLo),y ; CPU:$C7BC PRG:47BC B1 04 sta $0509,x ; CPU:$C7BE PRG:47BE 9D 09 05 ldy Zp2C ; CPU:$C7C1 PRG:47C1 A4 2C rts ; CPU:$C7C3 PRG:47C3 60 @@ -3784,14 +4385,14 @@ Sub_C7C4: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C7C6: - sta ObjPtr ; CPU:$C7C6 PRG:47C6 85 13 + sta ObjPtr ; CPU:$C7C6 PRG:47C6 85 13 lda $C93C,y ; CPU:$C7C8 PRG:47C8 B9 3C C9 - sta ObjectYLo ; CPU:$C7CB PRG:47CB 85 35 + sta ObjectYLo ; CPU:$C7CB PRG:47CB 85 35 lda $C93D,y ; CPU:$C7CD PRG:47CD B9 3D C9 - sta ObjectYHi ; CPU:$C7D0 PRG:47D0 85 36 + sta ObjectYHi ; CPU:$C7D0 PRG:47D0 85 36 asl a ; CPU:$C7D2 PRG:47D2 0A - bcc Sub_C7D7 ; CPU:$C7D3 PRG:47D3 90 02 - dec ObjPtr ; CPU:$C7D5 PRG:47D5 C6 13 + bcc Sub_C7D7 ; CPU:$C7D3 PRG:47D3 90 02 + dec ObjPtr ; CPU:$C7D5 PRG:47D5 C6 13 ; ----------------------------------------------------------------------------- ; Routine: Sub_C7D7 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3815,7 +4416,7 @@ Sub_C7D7: ObjCommonUpdate: lda $0506,x ; CPU:$C7D8 PRG:47D8 BD 06 05 ora $0503,x ; CPU:$C7DB PRG:47DB 1D 03 05 - beq Sub_C7E1 ; CPU:$C7DE PRG:47DE F0 01 + beq Sub_C7E1 ; CPU:$C7DE PRG:47DE F0 01 ; ----------------------------------------------------------------------------- ; Routine: Sub_C7E0 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3839,23 +4440,23 @@ Sub_C7E0: Sub_C7E1: lda $0504,x ; CPU:$C7E1 PRG:47E1 BD 04 05 cmp #$F1 ; CPU:$C7E4 PRG:47E4 C9 F1 - bcs Sub_C7E0 ; CPU:$C7E6 PRG:47E6 B0 F8 - sta ObjectXLo ; CPU:$C7E8 PRG:47E8 85 37 + bcs Sub_C7E0 ; CPU:$C7E6 PRG:47E6 B0 F8 + sta ObjectXLo ; CPU:$C7E8 PRG:47E8 85 37 lda $0507,x ; CPU:$C7EA PRG:47EA BD 07 05 cmp #$F0 ; CPU:$C7ED PRG:47ED C9 F0 - bcs Sub_C7E0 ; CPU:$C7EF PRG:47EF B0 EF - sta ObjectXHi ; CPU:$C7F1 PRG:47F1 85 38 + bcs Sub_C7E0 ; CPU:$C7EF PRG:47EF B0 EF + sta ObjectXHi ; CPU:$C7F1 PRG:47F1 85 38 lda $050C,x ; CPU:$C7F3 PRG:47F3 BD 0C 05 asl a ; CPU:$C7F6 PRG:47F6 0A tay ; CPU:$C7F7 PRG:47F7 A8 lda $C83A,y ; CPU:$C7F8 PRG:47F8 B9 3A C8 - sta VramPtrLo ; CPU:$C7FB PRG:47FB 85 04 + sta VramPtrLo ; CPU:$C7FB PRG:47FB 85 04 lda $C83B,y ; CPU:$C7FD PRG:47FD B9 3B C8 - sta VramCopyCount ; CPU:$C800 PRG:4800 85 05 + sta VramCopyCount ; CPU:$C800 PRG:4800 85 05 ldy #$00 ; CPU:$C802 PRG:4802 A0 00 - lda (VramPtrLo),y ; CPU:$C804 PRG:4804 B1 04 - sta ObjUpdateFlag ; CPU:$C806 PRG:4806 85 0E - stx ObjPtr ; CPU:$C808 PRG:4808 86 13 + lda (VramPtrLo),y ; CPU:$C804 PRG:4804 B1 04 + sta ObjUpdateFlag ; CPU:$C806 PRG:4806 85 0E + stx ObjPtr ; CPU:$C808 PRG:4808 86 13 iny ; CPU:$C80A PRG:480A C8 ; ----------------------------------------------------------------------------- ; Routine: Sub_C80B @@ -3867,31 +4468,31 @@ Sub_C7E1: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C80B: - ldx ObjectDeltaX ; CPU:$C80B PRG:480B A6 2D - beq Sub_C837 ; CPU:$C80D PRG:480D F0 28 - lda (VramPtrLo),y ; CPU:$C80F PRG:480F B1 04 + ldx ObjectDeltaX ; CPU:$C80B PRG:480B A6 2D + beq Sub_C837 ; CPU:$C80D PRG:480D F0 28 + lda (VramPtrLo),y ; CPU:$C80F PRG:480F B1 04 clc ; CPU:$C811 PRG:4811 18 - adc ObjectXHi ; CPU:$C812 PRG:4812 65 38 + adc ObjectXHi ; CPU:$C812 PRG:4812 65 38 sta $0700,x ; CPU:$C814 PRG:4814 9D 00 07 inx ; CPU:$C817 PRG:4817 E8 iny ; CPU:$C818 PRG:4818 C8 - lda (VramPtrLo),y ; CPU:$C819 PRG:4819 B1 04 + lda (VramPtrLo),y ; CPU:$C819 PRG:4819 B1 04 sta $0700,x ; CPU:$C81B PRG:481B 9D 00 07 inx ; CPU:$C81E PRG:481E E8 iny ; CPU:$C81F PRG:481F C8 - lda (VramPtrLo),y ; CPU:$C820 PRG:4820 B1 04 + lda (VramPtrLo),y ; CPU:$C820 PRG:4820 B1 04 sta $0700,x ; CPU:$C822 PRG:4822 9D 00 07 inx ; CPU:$C825 PRG:4825 E8 iny ; CPU:$C826 PRG:4826 C8 - lda (VramPtrLo),y ; CPU:$C827 PRG:4827 B1 04 + lda (VramPtrLo),y ; CPU:$C827 PRG:4827 B1 04 clc ; CPU:$C829 PRG:4829 18 - adc ObjectXLo ; CPU:$C82A PRG:482A 65 37 + adc ObjectXLo ; CPU:$C82A PRG:482A 65 37 sta $0700,x ; CPU:$C82C PRG:482C 9D 00 07 inx ; CPU:$C82F PRG:482F E8 iny ; CPU:$C830 PRG:4830 C8 - stx ObjectDeltaX ; CPU:$C831 PRG:4831 86 2D - dec ObjUpdateFlag ; CPU:$C833 PRG:4833 C6 0E - bne Sub_C80B ; CPU:$C835 PRG:4835 D0 D4 + stx ObjectDeltaX ; CPU:$C831 PRG:4831 86 2D + dec ObjUpdateFlag ; CPU:$C833 PRG:4833 C6 0E + bne Sub_C80B ; CPU:$C835 PRG:4835 D0 D4 ; ----------------------------------------------------------------------------- ; Routine: Sub_C837 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -3902,7 +4503,7 @@ Sub_C80B: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C837: - ldx ObjPtr ; CPU:$C837 PRG:4837 A6 13 + ldx ObjPtr ; CPU:$C837 PRG:4837 A6 13 rts ; CPU:$C839 PRG:4839 60 ; ---- data $C83A-$C8B3 (122 bytes) ---- ; referenced by `lda $C83A,y` at $C7F8 (operand $C83A falls inside this region) @@ -3925,10 +4526,10 @@ Sub_C837: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C8B4: - sbc ScrollY ; CPU:$C8B4 PRG:48B4 E5 03 + sbc ScrollY ; CPU:$C8B4 PRG:48B4 E5 03 php ; CPU:$C8B6 PRG:48B6 08 php ; CPU:$C8B7 PRG:48B7 08 - inc ScrollY ; CPU:$C8B8 PRG:48B8 E6 03 + inc ScrollY ; CPU:$C8B8 PRG:48B8 E6 03 brk ; CPU:$C8BA PRG:48BA 00 ; ---- data $C8BB-$C8BD (3 bytes) ---- .byte $08, $E7, $03 ; CPU:$C8BB PRG:48BB 08 E7 03 @@ -3943,7 +4544,7 @@ Sub_C8B4: ; ----------------------------------------------------------------------------- Sub_C8BE: php ; CPU:$C8BE PRG:48BE 08 - ora VramPtrLo ; CPU:$C8BF PRG:48BF 05 04 + ora VramPtrLo ; CPU:$C8BF PRG:48BF 05 04 cpx $0403 ; CPU:$C8C1 PRG:48C1 EC 03 04 brk ; CPU:$C8C4 PRG:48C4 00 ; ---- data $C8C5-$C8D1 (13 bytes) ---- @@ -3959,7 +4560,7 @@ Sub_C8BE: ; ----------------------------------------------------------------------------- Sub_C8D2: cpy #$08 ; CPU:$C8D2 PRG:48D2 C0 08 - ora VramPtrLo ; CPU:$C8D4 PRG:48D4 05 04 + ora VramPtrLo ; CPU:$C8D4 PRG:48D4 05 04 sbc $0403 ; CPU:$C8D6 PRG:48D6 ED 03 04 brk ; CPU:$C8D9 PRG:48D9 00 ; ---- data $C8DA-$C90E (53 bytes) ---- @@ -3977,7 +4578,7 @@ Sub_C8D2: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C90F: - lda (PPUMASKShadow,x) ; CPU:$C90F PRG:490F A1 01 + lda (PPUMASKShadow,x) ; CPU:$C90F PRG:490F A1 01 php ; CPU:$C911 PRG:4911 08 php ; CPU:$C912 PRG:4912 08 ldx #$01 ; CPU:$C913 PRG:4913 A2 01 @@ -3994,10 +4595,10 @@ Sub_C90F: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_C920: - lda PPUMASKShadow ; CPU:$C920 PRG:4920 A5 01 + lda PPUMASKShadow ; CPU:$C920 PRG:4920 A5 01 php ; CPU:$C922 PRG:4922 08 php ; CPU:$C923 PRG:4923 08 - ldx PPUMASKShadow ; CPU:$C924 PRG:4924 A6 01 + ldx PPUMASKShadow ; CPU:$C924 PRG:4924 A6 01 brk ; CPU:$C926 PRG:4926 00 ; ---- data $C927-$C9BB (149 bytes) ---- ; referenced by `lda $C93C,y` at $C7C8 (operand $C93C falls inside this region) @@ -4034,17 +4635,17 @@ C9bcCheck: ; ----------------------------------------------------------------------------- DispatchCheck: lda (Zp2A),y ; CPU:$C9BE PRG:49BE B1 2A - beq Sub_C9E2 ; CPU:$C9C0 PRG:49C0 F0 20 - sta ObjPtr ; CPU:$C9C2 PRG:49C2 85 13 + beq Sub_C9E2 ; CPU:$C9C0 PRG:49C0 F0 20 + sta ObjPtr ; CPU:$C9C2 PRG:49C2 85 13 lda Zp99 ; CPU:$C9C4 PRG:49C4 A5 99 and #$FE ; CPU:$C9C6 PRG:49C6 29 FE - beq Sub_C9E2 ; CPU:$C9C8 PRG:49C8 F0 18 - cmp ObjPtr ; CPU:$C9CA PRG:49CA C5 13 - beq Sub_C9E3 ; CPU:$C9CC PRG:49CC F0 15 - bcs Sub_C9E2 ; CPU:$C9CE PRG:49CE B0 12 + beq Sub_C9E2 ; CPU:$C9C8 PRG:49C8 F0 18 + cmp ObjPtr ; CPU:$C9CA PRG:49CA C5 13 + beq Sub_C9E3 ; CPU:$C9CC PRG:49CC F0 15 + bcs Sub_C9E2 ; CPU:$C9CE PRG:49CE B0 12 ldx #$04 ; CPU:$C9D0 PRG:49D0 A2 04 - jsr DispatchInc ; CPU:$C9D2 PRG:49D2 20 D8 C9 - jmp DispatchCheck ; CPU:$C9D5 PRG:49D5 4C BE C9 + jsr DispatchInc ; CPU:$C9D2 PRG:49D2 20 D8 C9 + jmp DispatchCheck ; CPU:$C9D5 PRG:49D5 4C BE C9 ; ----------------------------------------------------------------------------- ; Routine: DispatchInc ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4056,7 +4657,7 @@ DispatchCheck: ; ----------------------------------------------------------------------------- DispatchInc: inc Zp2A ; CPU:$C9D8 PRG:49D8 E6 2A - bne Sub_C9DE ; CPU:$C9DA PRG:49DA D0 02 + bne Sub_C9DE ; CPU:$C9DA PRG:49DA D0 02 inc Zp2B ; CPU:$C9DC PRG:49DC E6 2B ; ----------------------------------------------------------------------------- ; Routine: Sub_C9DE @@ -4069,7 +4670,7 @@ DispatchInc: ; ----------------------------------------------------------------------------- Sub_C9DE: dex ; CPU:$C9DE PRG:49DE CA - bne DispatchInc ; CPU:$C9DF PRG:49DF D0 F7 + bne DispatchInc ; CPU:$C9DF PRG:49DF D0 F7 rts ; CPU:$C9E1 PRG:49E1 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_C9E2 @@ -4097,13 +4698,13 @@ Sub_C9E3: tax ; CPU:$C9E6 PRG:49E6 AA iny ; CPU:$C9E7 PRG:49E7 C8 cmp #$28 ; CPU:$C9E8 PRG:49E8 C9 28 - bcc Sub_C9F7 ; CPU:$C9EA PRG:49EA 90 0B + bcc Sub_C9F7 ; CPU:$C9EA PRG:49EA 90 0B lda Zp99 ; CPU:$C9EC PRG:49EC A5 99 and #$01 ; CPU:$C9EE PRG:49EE 29 01 - bne Sub_C9F7 ; CPU:$C9F0 PRG:49F0 D0 05 + bne Sub_C9F7 ; CPU:$C9F0 PRG:49F0 D0 05 iny ; CPU:$C9F2 PRG:49F2 C8 iny ; CPU:$C9F3 PRG:49F3 C8 - jmp DispatchCheck ; CPU:$C9F4 PRG:49F4 4C BE C9 + jmp DispatchCheck ; CPU:$C9F4 PRG:49F4 4C BE C9 ; ----------------------------------------------------------------------------- ; Routine: Sub_C9F7 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4115,11 +4716,11 @@ Sub_C9E3: ; ----------------------------------------------------------------------------- Sub_C9F7: lda $CA0A,x ; CPU:$C9F7 PRG:49F7 BD 0A CA - sta VramPtrLo ; CPU:$C9FA PRG:49FA 85 04 + sta VramPtrLo ; CPU:$C9FA PRG:49FA 85 04 lda $CA0B,x ; CPU:$C9FC PRG:49FC BD 0B CA - sta VramCopyCount ; CPU:$C9FF PRG:49FF 85 05 - jsr JumpIndirect4 ; CPU:$CA01 PRG:4A01 20 07 CA - jmp DispatchCheck ; CPU:$CA04 PRG:4A04 4C BE C9 + sta VramCopyCount ; CPU:$C9FF PRG:49FF 85 05 + jsr JumpIndirect4 ; CPU:$CA01 PRG:4A01 20 07 CA + jmp DispatchCheck ; CPU:$CA04 PRG:4A04 4C BE C9 ; ----------------------------------------------------------------------------- ; Routine: JumpIndirect4 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4152,10 +4753,10 @@ JumpTable4: ; ----------------------------------------------------------------------------- Sub_CA62: ldx #$02 ; CPU:$CA62 PRG:4A62 A2 02 - jsr DispatchInc ; CPU:$CA64 PRG:4A64 20 D8 C9 + jsr DispatchInc ; CPU:$CA64 PRG:4A64 20 D8 C9 dey ; CPU:$CA67 PRG:4A67 88 dey ; CPU:$CA68 PRG:4A68 88 - jmp ObjSubRoutine2 ; CPU:$CA69 PRG:4A69 4C 7B C2 + jmp ObjSubRoutine2 ; CPU:$CA69 PRG:4A69 4C 7B C2 ; ----------------------------------------------------------------------------- ; Routine: Sub_CA6C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4167,10 +4768,10 @@ Sub_CA62: ; ----------------------------------------------------------------------------- Sub_CA6C: ldx #$02 ; CPU:$CA6C PRG:4A6C A2 02 - jsr DispatchInc ; CPU:$CA6E PRG:4A6E 20 D8 C9 + jsr DispatchInc ; CPU:$CA6E PRG:4A6E 20 D8 C9 dey ; CPU:$CA71 PRG:4A71 88 dey ; CPU:$CA72 PRG:4A72 88 - jmp ObjMoveY ; CPU:$CA73 PRG:4A73 4C 2E C0 + jmp ObjMoveY ; CPU:$CA73 PRG:4A73 4C 2E C0 ; ----------------------------------------------------------------------------- ; Routine: Sub_CA76 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4182,10 +4783,10 @@ Sub_CA6C: ; ----------------------------------------------------------------------------- Sub_CA76: ldx #$02 ; CPU:$CA76 PRG:4A76 A2 02 - jsr DispatchInc ; CPU:$CA78 PRG:4A78 20 D8 C9 + jsr DispatchInc ; CPU:$CA78 PRG:4A78 20 D8 C9 dey ; CPU:$CA7B PRG:4A7B 88 dey ; CPU:$CA7C PRG:4A7C 88 - jmp ObjSpawnInit ; CPU:$CA7D PRG:4A7D 4C 10 C0 + jmp ObjSpawnInit ; CPU:$CA7D PRG:4A7D 4C 10 C0 ; ----------------------------------------------------------------------------- ; Routine: Sub_CA80 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4196,9 +4797,9 @@ Sub_CA76: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CA80: - jsr ObjSpawnInit2 ; CPU:$CA80 PRG:4A80 20 56 C0 + jsr ObjSpawnInit2 ; CPU:$CA80 PRG:4A80 20 56 C0 ldx #$03 ; CPU:$CA83 PRG:4A83 A2 03 - jmp DispatchInc ; CPU:$CA85 PRG:4A85 4C D8 C9 + jmp DispatchInc ; CPU:$CA85 PRG:4A85 4C D8 C9 ; ----------------------------------------------------------------------------- ; Routine: Sub_CA88 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4210,10 +4811,10 @@ Sub_CA80: ; ----------------------------------------------------------------------------- Sub_CA88: ldx #$02 ; CPU:$CA88 PRG:4A88 A2 02 - jsr DispatchInc ; CPU:$CA8A PRG:4A8A 20 D8 C9 + jsr DispatchInc ; CPU:$CA8A PRG:4A8A 20 D8 C9 dey ; CPU:$CA8D PRG:4A8D 88 dey ; CPU:$CA8E PRG:4A8E 88 - jmp ObjSetPosition ; CPU:$CA8F PRG:4A8F 4C 5D C0 + jmp ObjSetPosition ; CPU:$CA8F PRG:4A8F 4C 5D C0 ; ----------------------------------------------------------------------------- ; Routine: Sub_CA92 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4273,7 +4874,7 @@ Sub_CAA0: Sub_CAAB: lda #$00 ; CPU:$CAAB PRG:4AAB A9 00 sta Zp3F ; CPU:$CAAD PRG:4AAD 85 3F - jmp DispatchStoreY2Rts ; CPU:$CAAF PRG:4AAF 4C B6 CA + jmp DispatchStoreY2Rts ; CPU:$CAAF PRG:4AAF 4C B6 CA ; ----------------------------------------------------------------------------- ; Routine: Sub_CAB2 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4311,7 +4912,7 @@ DispatchStoreY2Rts: Sub_CAB9: lda (Zp2A),y ; CPU:$CAB9 PRG:4AB9 B1 2A sta Zp94 ; CPU:$CABB PRG:4ABB 85 94 - jmp DispatchStoreY2Rts ; CPU:$CABD PRG:4ABD 4C B6 CA + jmp DispatchStoreY2Rts ; CPU:$CABD PRG:4ABD 4C B6 CA ; ----------------------------------------------------------------------------- ; Routine: Sub_CAC0 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4324,7 +4925,7 @@ Sub_CAB9: Sub_CAC0: lda (Zp2A),y ; CPU:$CAC0 PRG:4AC0 B1 2A sta Zp92 ; CPU:$CAC2 PRG:4AC2 85 92 - jmp DispatchStoreY2Rts ; CPU:$CAC4 PRG:4AC4 4C B6 CA + jmp DispatchStoreY2Rts ; CPU:$CAC4 PRG:4AC4 4C B6 CA ; ----------------------------------------------------------------------------- ; Routine: Sub_CAC7 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4337,7 +4938,7 @@ Sub_CAC0: Sub_CAC7: lda (Zp2A),y ; CPU:$CAC7 PRG:4AC7 B1 2A sta Zp93 ; CPU:$CAC9 PRG:4AC9 85 93 - jmp DispatchStoreY2Rts ; CPU:$CACB PRG:4ACB 4C B6 CA + jmp DispatchStoreY2Rts ; CPU:$CACB PRG:4ACB 4C B6 CA ; ----------------------------------------------------------------------------- ; Routine: Sub_CACE ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4350,7 +4951,7 @@ Sub_CAC7: Sub_CACE: lda (Zp2A),y ; CPU:$CACE PRG:4ACE B1 2A sta Zp95 ; CPU:$CAD0 PRG:4AD0 85 95 - jmp DispatchStoreY2Rts ; CPU:$CAD2 PRG:4AD2 4C B6 CA + jmp DispatchStoreY2Rts ; CPU:$CAD2 PRG:4AD2 4C B6 CA ; ----------------------------------------------------------------------------- ; Routine: Sub_CAD5 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4363,7 +4964,7 @@ Sub_CACE: Sub_CAD5: lda (Zp2A),y ; CPU:$CAD5 PRG:4AD5 B1 2A sta Zp96 ; CPU:$CAD7 PRG:4AD7 85 96 - jmp DispatchStoreY2Rts ; CPU:$CAD9 PRG:4AD9 4C B6 CA + jmp DispatchStoreY2Rts ; CPU:$CAD9 PRG:4AD9 4C B6 CA ; ----------------------------------------------------------------------------- ; Routine: Sub_CADC ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4376,7 +4977,7 @@ Sub_CAD5: Sub_CADC: lda (Zp2A),y ; CPU:$CADC PRG:4ADC B1 2A sta Zp97 ; CPU:$CADE PRG:4ADE 85 97 - jmp DispatchStoreY2Rts ; CPU:$CAE0 PRG:4AE0 4C B6 CA + jmp DispatchStoreY2Rts ; CPU:$CAE0 PRG:4AE0 4C B6 CA ; ----------------------------------------------------------------------------- ; Routine: Sub_CAE3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4389,7 +4990,7 @@ Sub_CADC: Sub_CAE3: lda (Zp2A),y ; CPU:$CAE3 PRG:4AE3 B1 2A sta Zp98 ; CPU:$CAE5 PRG:4AE5 85 98 - jmp DispatchStoreY2Rts ; CPU:$CAE7 PRG:4AE7 4C B6 CA + jmp DispatchStoreY2Rts ; CPU:$CAE7 PRG:4AE7 4C B6 CA ; ----------------------------------------------------------------------------- ; Routine: Sub_CAEA ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4400,7 +5001,7 @@ Sub_CAE3: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CAEA: - jsr DispatchLsrsRts ; CPU:$CAEA PRG:4AEA 20 8D CC + jsr DispatchLsrsRts ; CPU:$CAEA PRG:4AEA 20 8D CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CAED ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4411,14 +5012,14 @@ Sub_CAEA: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CAED: - jsr DispatchLdaEorEorAslAslRol ; CPU:$CAED PRG:4AED 20 5C F5 + jsr DispatchLdaEorEorAslAslRol ; CPU:$CAED PRG:4AED 20 5C F5 cmp #$D0 ; CPU:$CAF0 PRG:4AF0 C9 D0 - bcs Sub_CAED ; CPU:$CAF2 PRG:4AF2 B0 F9 + bcs Sub_CAED ; CPU:$CAF2 PRG:4AF2 B0 F9 clc ; CPU:$CAF4 PRG:4AF4 18 adc #$10 ; CPU:$CAF5 PRG:4AF5 69 10 sta $0303,x ; CPU:$CAF7 PRG:4AF7 9D 03 03 ldx #$02 ; CPU:$CAFA PRG:4AFA A2 02 - jsr DispatchInc ; CPU:$CAFC PRG:4AFC 20 D8 C9 + jsr DispatchInc ; CPU:$CAFC PRG:4AFC 20 D8 C9 dey ; CPU:$CAFF PRG:4AFF 88 dey ; CPU:$CB00 PRG:4B00 88 rts ; CPU:$CB01 PRG:4B01 60 @@ -4432,10 +5033,10 @@ Sub_CAED: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB02: - jsr DispatchLsrsRts ; CPU:$CB02 PRG:4B02 20 8D CC + jsr DispatchLsrsRts ; CPU:$CB02 PRG:4B02 20 8D CC ldx #$34 ; CPU:$CB05 PRG:4B05 A2 34 lda #$01 ; CPU:$CB07 PRG:4B07 A9 01 - jmp DispatchStoreLsrsB ; CPU:$CB09 PRG:4B09 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB09 PRG:4B09 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB0C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4446,12 +5047,12 @@ Sub_CB02: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB0C: - jsr DispatchLsrsRts ; CPU:$CB0C PRG:4B0C 20 8D CC + jsr DispatchLsrsRts ; CPU:$CB0C PRG:4B0C 20 8D CC lda #$00 ; CPU:$CB0F PRG:4B0F A9 00 sta Zp58 ; CPU:$CB11 PRG:4B11 85 58 ldx #$30 ; CPU:$CB13 PRG:4B13 A2 30 lda #$01 ; CPU:$CB15 PRG:4B15 A9 01 - jmp DispatchStoreLsrsB ; CPU:$CB17 PRG:4B17 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB17 PRG:4B17 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB1A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4462,10 +5063,10 @@ Sub_CB0C: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB1A: - jsr DispatchLsrsRts ; CPU:$CB1A PRG:4B1A 20 8D CC + jsr DispatchLsrsRts ; CPU:$CB1A PRG:4B1A 20 8D CC ldx #$00 ; CPU:$CB1D PRG:4B1D A2 00 lda #$01 ; CPU:$CB1F PRG:4B1F A9 01 - jmp DispatchStoreLsrsB ; CPU:$CB21 PRG:4B21 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB21 PRG:4B21 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB24 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4476,10 +5077,10 @@ Sub_CB1A: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB24: - jsr DispatchLsrsRts ; CPU:$CB24 PRG:4B24 20 8D CC + jsr DispatchLsrsRts ; CPU:$CB24 PRG:4B24 20 8D CC ldx #$00 ; CPU:$CB27 PRG:4B27 A2 00 lda #$01 ; CPU:$CB29 PRG:4B29 A9 01 - jmp DispatchStoreLsrsB ; CPU:$CB2B PRG:4B2B 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB2B PRG:4B2B 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB2E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4490,10 +5091,10 @@ Sub_CB24: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB2E: - jsr DispatchLsrsRts ; CPU:$CB2E PRG:4B2E 20 8D CC + jsr DispatchLsrsRts ; CPU:$CB2E PRG:4B2E 20 8D CC ldx #$04 ; CPU:$CB31 PRG:4B31 A2 04 lda #$01 ; CPU:$CB33 PRG:4B33 A9 01 - jmp DispatchStoreLsrsB ; CPU:$CB35 PRG:4B35 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB35 PRG:4B35 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB38 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4504,10 +5105,10 @@ Sub_CB2E: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB38: - jsr DispatchLsrsRts ; CPU:$CB38 PRG:4B38 20 8D CC + jsr DispatchLsrsRts ; CPU:$CB38 PRG:4B38 20 8D CC ldx #$08 ; CPU:$CB3B PRG:4B3B A2 08 lda #$01 ; CPU:$CB3D PRG:4B3D A9 01 - jmp DispatchStoreLsrsB ; CPU:$CB3F PRG:4B3F 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB3F PRG:4B3F 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB42 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4518,10 +5119,10 @@ Sub_CB38: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB42: - jsr DispatchLsrsRts ; CPU:$CB42 PRG:4B42 20 8D CC + jsr DispatchLsrsRts ; CPU:$CB42 PRG:4B42 20 8D CC ldx #$0C ; CPU:$CB45 PRG:4B45 A2 0C lda #$01 ; CPU:$CB47 PRG:4B47 A9 01 - jmp DispatchStoreLsrsB ; CPU:$CB49 PRG:4B49 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB49 PRG:4B49 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB4C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4534,7 +5135,7 @@ Sub_CB42: Sub_CB4C: ldx #$10 ; CPU:$CB4C PRG:4B4C A2 10 lda #$02 ; CPU:$CB4E PRG:4B4E A9 02 - jmp DispatchStoreLsrsB ; CPU:$CB50 PRG:4B50 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB50 PRG:4B50 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB53 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4545,10 +5146,10 @@ Sub_CB4C: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB53: - jsr DispatchLsrsRts2 ; CPU:$CB53 PRG:4B53 20 E1 CC + jsr DispatchLsrsRts2 ; CPU:$CB53 PRG:4B53 20 E1 CC ldx #$18 ; CPU:$CB56 PRG:4B56 A2 18 lda #$02 ; CPU:$CB58 PRG:4B58 A9 02 - jmp DispatchStoreLsrsB ; CPU:$CB5A PRG:4B5A 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB5A PRG:4B5A 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB5D ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4561,7 +5162,7 @@ Sub_CB53: Sub_CB5D: ldx #$20 ; CPU:$CB5D PRG:4B5D A2 20 lda #$02 ; CPU:$CB5F PRG:4B5F A9 02 - jmp DispatchStoreLsrsB ; CPU:$CB61 PRG:4B61 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB61 PRG:4B61 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB64 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4572,10 +5173,10 @@ Sub_CB5D: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB64: - jsr DispatchLsrsRts2 ; CPU:$CB64 PRG:4B64 20 E1 CC + jsr DispatchLsrsRts2 ; CPU:$CB64 PRG:4B64 20 E1 CC ldx #$28 ; CPU:$CB67 PRG:4B67 A2 28 lda #$02 ; CPU:$CB69 PRG:4B69 A9 02 - jmp DispatchStoreLsrsB ; CPU:$CB6B PRG:4B6B 4C 12 CC + jmp DispatchStoreLsrsB ; CPU:$CB6B PRG:4B6B 4C 12 CC ; ----------------------------------------------------------------------------- ; Routine: Sub_CB6E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4589,7 +5190,7 @@ Sub_CB6E: ldx #$38 ; CPU:$CB6E PRG:4B6E A2 38 lda #$04 ; CPU:$CB70 PRG:4B70 A9 04 inc Zp61 ; CPU:$CB72 PRG:4B72 E6 61 - jmp DispatchStoreLsrs ; CPU:$CB74 PRG:4B74 4C 9A CB + jmp DispatchStoreLsrs ; CPU:$CB74 PRG:4B74 4C 9A CB ; ----------------------------------------------------------------------------- ; Routine: Sub_CB77 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4602,7 +5203,7 @@ Sub_CB6E: Sub_CB77: ldx #$48 ; CPU:$CB77 PRG:4B77 A2 48 lda #$06 ; CPU:$CB79 PRG:4B79 A9 06 - jmp DispatchStoreLsrs ; CPU:$CB7B PRG:4B7B 4C 9A CB + jmp DispatchStoreLsrs ; CPU:$CB7B PRG:4B7B 4C 9A CB ; ----------------------------------------------------------------------------- ; Routine: Sub_CB7E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4615,7 +5216,7 @@ Sub_CB77: Sub_CB7E: ldx #$60 ; CPU:$CB7E PRG:4B7E A2 60 lda #$06 ; CPU:$CB80 PRG:4B80 A9 06 - jmp DispatchStoreLsrs ; CPU:$CB82 PRG:4B82 4C 9A CB + jmp DispatchStoreLsrs ; CPU:$CB82 PRG:4B82 4C 9A CB ; ----------------------------------------------------------------------------- ; Routine: Sub_CB85 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4628,7 +5229,7 @@ Sub_CB7E: Sub_CB85: ldx #$78 ; CPU:$CB85 PRG:4B85 A2 78 lda #$06 ; CPU:$CB87 PRG:4B87 A9 06 - jmp DispatchStoreLsrs ; CPU:$CB89 PRG:4B89 4C 9A CB + jmp DispatchStoreLsrs ; CPU:$CB89 PRG:4B89 4C 9A CB ; ----------------------------------------------------------------------------- ; Routine: Sub_CB8C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4641,7 +5242,7 @@ Sub_CB85: Sub_CB8C: ldx #$90 ; CPU:$CB8C PRG:4B8C A2 90 lda #$06 ; CPU:$CB8E PRG:4B8E A9 06 - jmp DispatchStoreLsrs ; CPU:$CB90 PRG:4B90 4C 9A CB + jmp DispatchStoreLsrs ; CPU:$CB90 PRG:4B90 4C 9A CB ; ----------------------------------------------------------------------------- ; Routine: Sub_CB93 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4652,7 +5253,7 @@ Sub_CB8C: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CB93: - jsr DispatchLsrsRts ; CPU:$CB93 PRG:4B93 20 8D CC + jsr DispatchLsrsRts ; CPU:$CB93 PRG:4B93 20 8D CC ldx #$A8 ; CPU:$CB96 PRG:4B96 A2 A8 lda #$04 ; CPU:$CB98 PRG:4B98 A9 04 ; ----------------------------------------------------------------------------- @@ -4665,11 +5266,11 @@ Sub_CB93: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchStoreLsrs: - sta ObjUpdateFlag ; CPU:$CB9A PRG:4B9A 85 0E + sta ObjUpdateFlag ; CPU:$CB9A PRG:4B9A 85 0E lda Zp99 ; CPU:$CB9C PRG:4B9C A5 99 lsr a ; CPU:$CB9E PRG:4B9E 4A - bcc Sub_CBAB ; CPU:$CB9F PRG:4B9F 90 0A - lda ObjUpdateFlag ; CPU:$CBA1 PRG:4BA1 A5 0E + bcc Sub_CBAB ; CPU:$CB9F PRG:4B9F 90 0A + lda ObjUpdateFlag ; CPU:$CBA1 PRG:4BA1 A5 0E ; ----------------------------------------------------------------------------- ; Routine: Sub_CBA3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4682,9 +5283,9 @@ DispatchStoreLsrs: Sub_CBA3: inx ; CPU:$CBA3 PRG:4BA3 E8 inx ; CPU:$CBA4 PRG:4BA4 E8 - dec ObjUpdateFlag ; CPU:$CBA5 PRG:4BA5 C6 0E - bne Sub_CBA3 ; CPU:$CBA7 PRG:4BA7 D0 FA - sta ObjUpdateFlag ; CPU:$CBA9 PRG:4BA9 85 0E + dec ObjUpdateFlag ; CPU:$CBA5 PRG:4BA5 C6 0E + bne Sub_CBA3 ; CPU:$CBA7 PRG:4BA7 D0 FA + sta ObjUpdateFlag ; CPU:$CBA9 PRG:4BA9 85 0E ; ----------------------------------------------------------------------------- ; Routine: Sub_CBAB ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4723,12 +5324,12 @@ Sub_CBB6: tya ; CPU:$CBC6 PRG:4BC6 98 ldy Zp57 ; CPU:$CBC7 PRG:4BC7 A4 57 inc Zp57 ; CPU:$CBC9 PRG:4BC9 E6 57 - jsr DispatchLsrsPhi ; CPU:$CBCB PRG:4BCB 20 DA CB + jsr DispatchLsrsPhi ; CPU:$CBCB PRG:4BCB 20 DA CB pla ; CPU:$CBCE PRG:4BCE 68 clc ; CPU:$CBCF PRG:4BCF 18 adc #$02 ; CPU:$CBD0 PRG:4BD0 69 02 - dec ObjUpdateFlag ; CPU:$CBD2 PRG:4BD2 C6 0E - bne Sub_CBB6 ; CPU:$CBD4 PRG:4BD4 D0 E0 + dec ObjUpdateFlag ; CPU:$CBD2 PRG:4BD2 C6 0E + bne Sub_CBB6 ; CPU:$CBD4 PRG:4BD4 D0 E0 ldy Zp2C ; CPU:$CBD6 PRG:4BD6 A4 2C iny ; CPU:$CBD8 PRG:4BD8 C8 rts ; CPU:$CBD9 PRG:4BD9 60 @@ -4744,17 +5345,17 @@ Sub_CBB6: DispatchLsrsPhi: lsr a ; CPU:$CBDA PRG:4BDA 4A lsr a ; CPU:$CBDB PRG:4BDB 4A - bcs Sub_CBF8 ; CPU:$CBDC PRG:4BDC B0 1A + bcs Sub_CBF8 ; CPU:$CBDC PRG:4BDC B0 1A pha ; CPU:$CBDE PRG:4BDE 48 lda $B89F,y ; CPU:$CBDF PRG:4BDF B9 9F B8 - and ObjectX ; CPU:$CBE2 PRG:4BE2 25 18 - sta ObjPtr ; CPU:$CBE4 PRG:4BE4 85 13 + and ObjectX ; CPU:$CBE2 PRG:4BE2 25 18 + sta ObjPtr ; CPU:$CBE4 PRG:4BE4 85 13 pla ; CPU:$CBE6 PRG:4BE6 68 tay ; CPU:$CBE7 PRG:4BE7 A8 - lda ObjectX ; CPU:$CBE8 PRG:4BE8 A5 18 + lda ObjectX ; CPU:$CBE8 PRG:4BE8 A5 18 eor #$FF ; CPU:$CBEA PRG:4BEA 49 FF and $022E,y ; CPU:$CBEC PRG:4BEC 39 2E 02 - ora ObjPtr ; CPU:$CBEF PRG:4BEF 05 13 + ora ObjPtr ; CPU:$CBEF PRG:4BEF 05 13 sta $022E,y ; CPU:$CBF1 PRG:4BF1 99 2E 02 sta $0200,y ; CPU:$CBF4 PRG:4BF4 99 00 02 rts ; CPU:$CBF7 PRG:4BF7 60 @@ -4770,14 +5371,14 @@ DispatchLsrsPhi: Sub_CBF8: pha ; CPU:$CBF8 PRG:4BF8 48 lda $B89F,y ; CPU:$CBF9 PRG:4BF9 B9 9F B8 - and ObjectY ; CPU:$CBFC PRG:4BFC 25 19 - sta ObjPtr ; CPU:$CBFE PRG:4BFE 85 13 + and ObjectY ; CPU:$CBFC PRG:4BFC 25 19 + sta ObjPtr ; CPU:$CBFE PRG:4BFE 85 13 pla ; CPU:$CC00 PRG:4C00 68 tay ; CPU:$CC01 PRG:4C01 A8 - lda ObjectY ; CPU:$CC02 PRG:4C02 A5 19 + lda ObjectY ; CPU:$CC02 PRG:4C02 A5 19 eor #$FF ; CPU:$CC04 PRG:4C04 49 FF and $022E,y ; CPU:$CC06 PRG:4C06 39 2E 02 - ora ObjPtr ; CPU:$CC09 PRG:4C09 05 13 + ora ObjPtr ; CPU:$CC09 PRG:4C09 05 13 sta $022E,y ; CPU:$CC0B PRG:4C0B 99 2E 02 sta $0200,y ; CPU:$CC0E PRG:4C0E 99 00 02 rts ; CPU:$CC11 PRG:4C11 60 @@ -4791,11 +5392,11 @@ Sub_CBF8: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchStoreLsrsB: - sta ObjUpdateFlag ; CPU:$CC12 PRG:4C12 85 0E + sta ObjUpdateFlag ; CPU:$CC12 PRG:4C12 85 0E lda Zp99 ; CPU:$CC14 PRG:4C14 A5 99 lsr a ; CPU:$CC16 PRG:4C16 4A - bcc Sub_CC23 ; CPU:$CC17 PRG:4C17 90 0A - lda ObjUpdateFlag ; CPU:$CC19 PRG:4C19 A5 0E + bcc Sub_CC23 ; CPU:$CC17 PRG:4C17 90 0A + lda ObjUpdateFlag ; CPU:$CC19 PRG:4C19 A5 0E ; ----------------------------------------------------------------------------- ; Routine: Sub_CC1B ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4808,9 +5409,9 @@ DispatchStoreLsrsB: Sub_CC1B: inx ; CPU:$CC1B PRG:4C1B E8 inx ; CPU:$CC1C PRG:4C1C E8 - dec ObjUpdateFlag ; CPU:$CC1D PRG:4C1D C6 0E - bne Sub_CC1B ; CPU:$CC1F PRG:4C1F D0 FA - sta ObjUpdateFlag ; CPU:$CC21 PRG:4C21 85 0E + dec ObjUpdateFlag ; CPU:$CC1D PRG:4C1D C6 0E + bne Sub_CC1B ; CPU:$CC1F PRG:4C1F D0 FA + sta ObjUpdateFlag ; CPU:$CC21 PRG:4C21 85 0E ; ----------------------------------------------------------------------------- ; Routine: Sub_CC23 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -4844,12 +5445,12 @@ Sub_CC28: inx ; CPU:$CC37 PRG:4C37 E8 tya ; CPU:$CC38 PRG:4C38 98 ldy Zp2C ; CPU:$CC39 PRG:4C39 A4 2C - jsr DispatchLsrsPhiB ; CPU:$CC3B PRG:4C3B 20 4A CC + jsr DispatchLsrsPhiB ; CPU:$CC3B PRG:4C3B 20 4A CC pla ; CPU:$CC3E PRG:4C3E 68 clc ; CPU:$CC3F PRG:4C3F 18 adc #$02 ; CPU:$CC40 PRG:4C40 69 02 - dec ObjUpdateFlag ; CPU:$CC42 PRG:4C42 C6 0E - bne Sub_CC28 ; CPU:$CC44 PRG:4C44 D0 E2 + dec ObjUpdateFlag ; CPU:$CC42 PRG:4C42 C6 0E + bne Sub_CC28 ; CPU:$CC44 PRG:4C44 D0 E2 ldy Zp2C ; CPU:$CC46 PRG:4C46 A4 2C iny ; CPU:$CC48 PRG:4C48 C8 rts ; CPU:$CC49 PRG:4C49 60 @@ -4865,17 +5466,17 @@ Sub_CC28: DispatchLsrsPhiB: lsr a ; CPU:$CC4A PRG:4C4A 4A lsr a ; CPU:$CC4B PRG:4C4B 4A - bcs Sub_CC67 ; CPU:$CC4C PRG:4C4C B0 19 + bcs Sub_CC67 ; CPU:$CC4C PRG:4C4C B0 19 pha ; CPU:$CC4E PRG:4C4E 48 lda (Zp2A),y ; CPU:$CC4F PRG:4C4F B1 2A - and ObjectX ; CPU:$CC51 PRG:4C51 25 18 - sta ObjPtr ; CPU:$CC53 PRG:4C53 85 13 + and ObjectX ; CPU:$CC51 PRG:4C51 25 18 + sta ObjPtr ; CPU:$CC53 PRG:4C53 85 13 pla ; CPU:$CC55 PRG:4C55 68 tay ; CPU:$CC56 PRG:4C56 A8 - lda ObjectX ; CPU:$CC57 PRG:4C57 A5 18 + lda ObjectX ; CPU:$CC57 PRG:4C57 A5 18 eor #$FF ; CPU:$CC59 PRG:4C59 49 FF and $022E,y ; CPU:$CC5B PRG:4C5B 39 2E 02 - ora ObjPtr ; CPU:$CC5E PRG:4C5E 05 13 + ora ObjPtr ; CPU:$CC5E PRG:4C5E 05 13 sta $022E,y ; CPU:$CC60 PRG:4C60 99 2E 02 sta $0200,y ; CPU:$CC63 PRG:4C63 99 00 02 rts ; CPU:$CC66 PRG:4C66 60 @@ -4891,14 +5492,14 @@ DispatchLsrsPhiB: Sub_CC67: pha ; CPU:$CC67 PRG:4C67 48 lda (Zp2A),y ; CPU:$CC68 PRG:4C68 B1 2A - and ObjectY ; CPU:$CC6A PRG:4C6A 25 19 - sta ObjPtr ; CPU:$CC6C PRG:4C6C 85 13 + and ObjectY ; CPU:$CC6A PRG:4C6A 25 19 + sta ObjPtr ; CPU:$CC6C PRG:4C6C 85 13 pla ; CPU:$CC6E PRG:4C6E 68 tay ; CPU:$CC6F PRG:4C6F A8 - lda ObjectY ; CPU:$CC70 PRG:4C70 A5 19 + lda ObjectY ; CPU:$CC70 PRG:4C70 A5 19 eor #$FF ; CPU:$CC72 PRG:4C72 49 FF and $022E,y ; CPU:$CC74 PRG:4C74 39 2E 02 - ora ObjPtr ; CPU:$CC77 PRG:4C77 05 13 + ora ObjPtr ; CPU:$CC77 PRG:4C77 05 13 sta $022E,y ; CPU:$CC79 PRG:4C79 99 2E 02 sta $0200,y ; CPU:$CC7C PRG:4C7C 99 00 02 rts ; CPU:$CC7F PRG:4C7F 60 @@ -4931,7 +5532,7 @@ Sub_CC80: DispatchLsrsRts: lda Zp99 ; CPU:$CC8D PRG:4C8D A5 99 lsr a ; CPU:$CC8F PRG:4C8F 4A - bcs Sub_CC93 ; CPU:$CC90 PRG:4C90 B0 01 + bcs Sub_CC93 ; CPU:$CC90 PRG:4C90 B0 01 rts ; CPU:$CC92 PRG:4C92 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_CC93 @@ -4947,7 +5548,7 @@ Sub_CC93: lsr a ; CPU:$CC94 PRG:4C94 4A tax ; CPU:$CC95 PRG:4C95 AA lda $CD37,x ; CPU:$CC96 PRG:4C96 BD 37 CD - sta ObjPtr ; CPU:$CC99 PRG:4C99 85 13 + sta ObjPtr ; CPU:$CC99 PRG:4C99 85 13 ldx #$00 ; CPU:$CC9B PRG:4C9B A2 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_CC9D @@ -4960,13 +5561,13 @@ Sub_CC93: ; ----------------------------------------------------------------------------- Sub_CC9D: lda $0300,x ; CPU:$CC9D PRG:4C9D BD 00 03 - beq Sub_CCAC ; CPU:$CCA0 PRG:4CA0 F0 0A + beq Sub_CCAC ; CPU:$CCA0 PRG:4CA0 F0 0A txa ; CPU:$CCA2 PRG:4CA2 8A clc ; CPU:$CCA3 PRG:4CA3 18 adc #$08 ; CPU:$CCA4 PRG:4CA4 69 08 tax ; CPU:$CCA6 PRG:4CA6 AA cpx #$80 ; CPU:$CCA7 PRG:4CA7 E0 80 - bne Sub_CC9D ; CPU:$CCA9 PRG:4CA9 D0 F2 + bne Sub_CC9D ; CPU:$CCA9 PRG:4CA9 D0 F2 rts ; CPU:$CCAB PRG:4CAB 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_CCAC @@ -4978,7 +5579,7 @@ Sub_CC9D: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CCAC: - lda ObjPtr ; CPU:$CCAC PRG:4CAC A5 13 + lda ObjPtr ; CPU:$CCAC PRG:4CAC A5 13 sta $0300,x ; CPU:$CCAE PRG:4CAE 9D 00 03 lda #$02 ; CPU:$CCB1 PRG:4CB1 A9 02 sta $0301,x ; CPU:$CCB3 PRG:4CB3 9D 01 03 @@ -4986,7 +5587,7 @@ Sub_CCAC: sta $0307,x ; CPU:$CCB8 PRG:4CB8 9D 07 03 sta $0306,x ; CPU:$CCBB PRG:4CBB 9D 06 03 sec ; CPU:$CCBE PRG:4CBE 38 - sbc ScrollY ; CPU:$CCBF PRG:4CBF E5 03 + sbc ScrollY ; CPU:$CCBF PRG:4CBF E5 03 and #$07 ; CPU:$CCC1 PRG:4CC1 29 07 clc ; CPU:$CCC3 PRG:4CC3 18 adc #$EF ; CPU:$CCC4 PRG:4CC4 69 EF @@ -5015,7 +5616,7 @@ Sub_CCAC: DispatchLsrsRts2: lda Zp99 ; CPU:$CCE1 PRG:4CE1 A5 99 lsr a ; CPU:$CCE3 PRG:4CE3 4A - bcs Sub_CCE7 ; CPU:$CCE4 PRG:4CE4 B0 01 + bcs Sub_CCE7 ; CPU:$CCE4 PRG:4CE4 B0 01 rts ; CPU:$CCE6 PRG:4CE6 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_CCE7 @@ -5031,7 +5632,7 @@ Sub_CCE7: lsr a ; CPU:$CCE8 PRG:4CE8 4A tax ; CPU:$CCE9 PRG:4CE9 AA lda $CD37,x ; CPU:$CCEA PRG:4CEA BD 37 CD - sta ObjPtr ; CPU:$CCED PRG:4CED 85 13 + sta ObjPtr ; CPU:$CCED PRG:4CED 85 13 ldx #$00 ; CPU:$CCEF PRG:4CEF A2 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_CCF1 @@ -5044,13 +5645,13 @@ Sub_CCE7: ; ----------------------------------------------------------------------------- Sub_CCF1: lda $0300,x ; CPU:$CCF1 PRG:4CF1 BD 00 03 - beq Sub_CD00 ; CPU:$CCF4 PRG:4CF4 F0 0A + beq Sub_CD00 ; CPU:$CCF4 PRG:4CF4 F0 0A txa ; CPU:$CCF6 PRG:4CF6 8A clc ; CPU:$CCF7 PRG:4CF7 18 adc #$08 ; CPU:$CCF8 PRG:4CF8 69 08 tax ; CPU:$CCFA PRG:4CFA AA cpx #$80 ; CPU:$CCFB PRG:4CFB E0 80 - bne Sub_CCF1 ; CPU:$CCFD PRG:4CFD D0 F2 + bne Sub_CCF1 ; CPU:$CCFD PRG:4CFD D0 F2 rts ; CPU:$CCFF PRG:4CFF 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_CD00 @@ -5062,11 +5663,11 @@ Sub_CCF1: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CD00: - lda ObjPtr ; CPU:$CD00 PRG:4D00 A5 13 + lda ObjPtr ; CPU:$CD00 PRG:4D00 A5 13 sta $0300,x ; CPU:$CD02 PRG:4D02 9D 00 03 lda #$02 ; CPU:$CD05 PRG:4D05 A9 02 sta $0301,x ; CPU:$CD07 PRG:4D07 9D 01 03 - lda ScrollY ; CPU:$CD0A PRG:4D0A A5 03 + lda ScrollY ; CPU:$CD0A PRG:4D0A A5 03 and #$07 ; CPU:$CD0C PRG:4D0C 29 07 clc ; CPU:$CD0E PRG:4D0E 18 adc #$E7 ; CPU:$CD0F PRG:4D0F 69 E7 @@ -5088,6 +5689,8 @@ Sub_CD00: sta $0306,x ; CPU:$CD30 PRG:4D30 9D 06 03 sta $0307,x ; CPU:$CD33 PRG:4D33 9D 07 03 rts ; CPU:$CD36 PRG:4D36 60 +OamSlotTable: +; OAM sprite slot/index table (read by lda $CD37,x) ; ---- data $CD37-$CD44 (14 bytes) ---- ; referenced by `lda $CD37,x` at $CC96 (operand $CD37 falls inside this region) ; referenced by `lda $CD37,x` at $CCEA (operand $CD37 falls inside this region) @@ -5104,9 +5707,10 @@ Sub_CD00: Sub_CD45: rol a ; CPU:$CD45 PRG:4D45 2A bit $2E32 ; CPU:$CD46 PRG:4D46 2C 32 2E - bmi Sub_CD81 ; CPU:$CD49 PRG:4D49 30 36 + bmi Sub_CD81 ; CPU:$CD49 PRG:4D49 30 36 sec ; CPU:$CD4B PRG:4D4B 38 - rts ; CPU:$CD4C PRG:4D4C 60 +; ---- data $CD4C-$CD4C (1 bytes) ---- + .byte $60 ; CPU:$CD4C PRG:4D4C 60 ; ---- data $CD4D-$CD80 (52 bytes) ---- .byte $61, $62, $63, $64, $65, $66, $67, $68, $69, $6A, $6B, $6C, $6D, $6E, $6F, $73 ; CPU:$CD4D PRG:4D4D 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 73 .byte $2D, $2D, $76, $2D, $73, $76, $A5, $2D, $79, $7C, $A5, $79, $8D, $8D, $7C, $70 ; CPU:$CD5D PRG:4D5D 2D 2D 76 2D 73 76 A5 2D 79 7C A5 79 8D 8D 7C 70 @@ -5155,12 +5759,12 @@ Sub_CE03: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CE06: - jsr DispatchAndCheck ; CPU:$CE06 PRG:4E06 20 11 CE + jsr DispatchAndCheck ; CPU:$CE06 PRG:4E06 20 11 CE txa ; CPU:$CE09 PRG:4E09 8A clc ; CPU:$CE0A PRG:4E0A 18 adc #$10 ; CPU:$CE0B PRG:4E0B 69 10 tax ; CPU:$CE0D PRG:4E0D AA - bne Sub_CE06 ; CPU:$CE0E PRG:4E0E D0 F6 + bne Sub_CE06 ; CPU:$CE0E PRG:4E0E D0 F6 rts ; CPU:$CE10 PRG:4E10 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchAndCheck @@ -5174,18 +5778,18 @@ Sub_CE06: DispatchAndCheck: lda $0400,x ; CPU:$CE11 PRG:4E11 BD 00 04 and #$03 ; CPU:$CE14 PRG:4E14 29 03 - beq Sub_CE3D ; CPU:$CE16 PRG:4E16 F0 25 + beq Sub_CE3D ; CPU:$CE16 PRG:4E16 F0 25 sec ; CPU:$CE18 PRG:4E18 38 sbc #$01 ; CPU:$CE19 PRG:4E19 E9 01 - beq Sub_CE3E ; CPU:$CE1B PRG:4E1B F0 21 + beq Sub_CE3E ; CPU:$CE1B PRG:4E1B F0 21 sec ; CPU:$CE1D PRG:4E1D 38 sbc #$01 ; CPU:$CE1E PRG:4E1E E9 01 - beq Sub_CE45 ; CPU:$CE20 PRG:4E20 F0 23 + beq Sub_CE45 ; CPU:$CE20 PRG:4E20 F0 23 lda $0407,x ; CPU:$CE22 PRG:4E22 BD 07 04 clc ; CPU:$CE25 PRG:4E25 18 adc Zp25 ; CPU:$CE26 PRG:4E26 65 25 sta $0407,x ; CPU:$CE28 PRG:4E28 9D 07 04 - bcc Sub_CE30 ; CPU:$CE2B PRG:4E2B 90 03 + bcc Sub_CE30 ; CPU:$CE2B PRG:4E2B 90 03 inc $0407,x ; CPU:$CE2D PRG:4E2D FE 07 04 ; ----------------------------------------------------------------------------- ; Routine: Sub_CE30 @@ -5197,9 +5801,9 @@ DispatchAndCheck: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CE30: - jsr DispatchOraCheck ; CPU:$CE30 PRG:4E30 20 50 CE + jsr DispatchOraCheck ; CPU:$CE30 PRG:4E30 20 50 CE dec $040B,x ; CPU:$CE33 PRG:4E33 DE 0B 04 - bne Sub_CE3D ; CPU:$CE36 PRG:4E36 D0 05 + bne Sub_CE3D ; CPU:$CE36 PRG:4E36 D0 05 lda #$01 ; CPU:$CE38 PRG:4E38 A9 01 sta $0400,x ; CPU:$CE3A PRG:4E3A 9D 00 04 ; ----------------------------------------------------------------------------- @@ -5223,8 +5827,8 @@ Sub_CE3D: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CE3E: - jsr DispatchAddStoreLda ; CPU:$CE3E PRG:4E3E 20 3D D0 - jsr DispatchOraCheck ; CPU:$CE41 PRG:4E41 20 50 CE + jsr DispatchAddStoreLda ; CPU:$CE3E PRG:4E3E 20 3D D0 + jsr DispatchOraCheck ; CPU:$CE41 PRG:4E41 20 50 CE rts ; CPU:$CE44 PRG:4E44 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_CE45 @@ -5237,7 +5841,7 @@ Sub_CE3E: ; ----------------------------------------------------------------------------- Sub_CE45: lda #$03 ; CPU:$CE45 PRG:4E45 A9 03 - jsr DispatchStoreB ; CPU:$CE47 PRG:4E47 20 0C D1 + jsr DispatchStoreB ; CPU:$CE47 PRG:4E47 20 0C D1 lda #$01 ; CPU:$CE4A PRG:4E4A A9 01 sta $0400,x ; CPU:$CE4C PRG:4E4C 9D 00 04 rts ; CPU:$CE4F PRG:4E4F 60 @@ -5253,10 +5857,10 @@ Sub_CE45: DispatchOraCheck: lda $0403,x ; CPU:$CE50 PRG:4E50 BD 03 04 ora $0406,x ; CPU:$CE53 PRG:4E53 1D 06 04 - bne Sub_CE5F ; CPU:$CE56 PRG:4E56 D0 07 + bne Sub_CE5F ; CPU:$CE56 PRG:4E56 D0 07 lda $0404,x ; CPU:$CE58 PRG:4E58 BD 04 04 cmp #$F9 ; CPU:$CE5B PRG:4E5B C9 F9 - bcc Sub_CE65 ; CPU:$CE5D PRG:4E5D 90 06 + bcc Sub_CE65 ; CPU:$CE5D PRG:4E5D 90 06 ; ----------------------------------------------------------------------------- ; Routine: Sub_CE5F ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -5281,20 +5885,20 @@ Sub_CE5F: ; ----------------------------------------------------------------------------- Sub_CE65: lda #$02 ; CPU:$CE65 PRG:4E65 A9 02 - sta ObjPtr ; CPU:$CE67 PRG:4E67 85 13 + sta ObjPtr ; CPU:$CE67 PRG:4E67 85 13 lda $0407,x ; CPU:$CE69 PRG:4E69 BD 07 04 cmp #$F0 ; CPU:$CE6C PRG:4E6C C9 F0 - bcs Sub_CEC2 ; CPU:$CE6E PRG:4E6E B0 52 - ldy ObjectDeltaX ; CPU:$CE70 PRG:4E70 A4 2D - beq Sub_CEC2 ; CPU:$CE72 PRG:4E72 F0 4E + bcs Sub_CEC2 ; CPU:$CE6E PRG:4E6E B0 52 + ldy ObjectDeltaX ; CPU:$CE70 PRG:4E70 A4 2D + beq Sub_CEC2 ; CPU:$CE72 PRG:4E72 F0 4E sta $0700,y ; CPU:$CE74 PRG:4E74 99 00 07 sec ; CPU:$CE77 PRG:4E77 38 sbc Zp24 ; CPU:$CE78 PRG:4E78 E5 24 clc ; CPU:$CE7A PRG:4E7A 18 adc #$02 ; CPU:$CE7B PRG:4E7B 69 02 cmp #$0D ; CPU:$CE7D PRG:4E7D C9 0D - bcs Sub_CE83 ; CPU:$CE7F PRG:4E7F B0 02 - dec ObjPtr ; CPU:$CE81 PRG:4E81 C6 13 + bcs Sub_CE83 ; CPU:$CE7F PRG:4E7F B0 02 + dec ObjPtr ; CPU:$CE81 PRG:4E81 C6 13 ; ----------------------------------------------------------------------------- ; Routine: Sub_CE83 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -5323,14 +5927,14 @@ Sub_CE83: lda $0404,x ; CPU:$CEA0 PRG:4EA0 BD 04 04 sta $0700,y ; CPU:$CEA3 PRG:4EA3 99 00 07 iny ; CPU:$CEA6 PRG:4EA6 C8 - sty ObjectDeltaX ; CPU:$CEA7 PRG:4EA7 84 2D + sty ObjectDeltaX ; CPU:$CEA7 PRG:4EA7 84 2D sec ; CPU:$CEA9 PRG:4EA9 38 sbc Zp23 ; CPU:$CEAA PRG:4EAA E5 23 clc ; CPU:$CEAC PRG:4EAC 18 adc #$02 ; CPU:$CEAD PRG:4EAD 69 02 cmp #$0D ; CPU:$CEAF PRG:4EAF C9 0D - bcs Sub_CEB5 ; CPU:$CEB1 PRG:4EB1 B0 02 - dec ObjPtr ; CPU:$CEB3 PRG:4EB3 C6 13 + bcs Sub_CEB5 ; CPU:$CEB1 PRG:4EB1 B0 02 + dec ObjPtr ; CPU:$CEB3 PRG:4EB3 C6 13 ; ----------------------------------------------------------------------------- ; Routine: Sub_CEB5 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -5341,10 +5945,10 @@ Sub_CE83: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CEB5: - lda ObjPtr ; CPU:$CEB5 PRG:4EB5 A5 13 - bne Sub_CEC2 ; CPU:$CEB7 PRG:4EB7 D0 09 + lda ObjPtr ; CPU:$CEB5 PRG:4EB5 A5 13 + bne Sub_CEC2 ; CPU:$CEB7 PRG:4EB7 D0 09 lda Zp3B ; CPU:$CEB9 PRG:4EB9 A5 3B - bne Sub_CEC2 ; CPU:$CEBB PRG:4EBB D0 05 + bne Sub_CEC2 ; CPU:$CEBB PRG:4EBB D0 05 inc $0611 ; CPU:$CEBD PRG:4EBD EE 11 06 inc Zp3B ; CPU:$CEC0 PRG:4EC0 E6 3B ; ----------------------------------------------------------------------------- @@ -5370,22 +5974,22 @@ Sub_CEC2: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CECF: - jsr DispatchJmpA ; CPU:$CECF PRG:4ECF 20 F6 CE + jsr DispatchJmpA ; CPU:$CECF PRG:4ECF 20 F6 CE lda $0382,x ; CPU:$CED2 PRG:4ED2 BD 82 03 sec ; CPU:$CED5 PRG:4ED5 38 sbc #$04 ; CPU:$CED6 PRG:4ED6 E9 04 sta $0382,x ; CPU:$CED8 PRG:4ED8 9D 82 03 - jsr DispatchJmpA ; CPU:$CEDB PRG:4EDB 20 F6 CE + jsr DispatchJmpA ; CPU:$CEDB PRG:4EDB 20 F6 CE lda $0382,x ; CPU:$CEDE PRG:4EDE BD 82 03 clc ; CPU:$CEE1 PRG:4EE1 18 adc #$06 ; CPU:$CEE2 PRG:4EE2 69 06 sta $0382,x ; CPU:$CEE4 PRG:4EE4 9D 82 03 - jsr DispatchJmpA ; CPU:$CEE7 PRG:4EE7 20 F6 CE + jsr DispatchJmpA ; CPU:$CEE7 PRG:4EE7 20 F6 CE lda $0382,x ; CPU:$CEEA PRG:4EEA BD 82 03 sec ; CPU:$CEED PRG:4EED 38 sbc #$08 ; CPU:$CEEE PRG:4EEE E9 08 sta $0382,x ; CPU:$CEF0 PRG:4EF0 9D 82 03 - jmp DispatchJmpA ; CPU:$CEF3 PRG:4EF3 4C F6 CE + jmp DispatchJmpA ; CPU:$CEF3 PRG:4EF3 4C F6 CE ; ----------------------------------------------------------------------------- ; Routine: DispatchJmpA ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -5397,7 +6001,7 @@ Sub_CECF: ; ----------------------------------------------------------------------------- DispatchJmpA: lda #$03 ; CPU:$CEF6 PRG:4EF6 A9 03 - jmp DispatchStoreJsrStoreLda ; CPU:$CEF8 PRG:4EF8 4C FD CE + jmp DispatchStoreJsrStoreLda ; CPU:$CEF8 PRG:4EF8 4C FD CE ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaA ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -5420,7 +6024,7 @@ DispatchLdaA: ; ----------------------------------------------------------------------------- DispatchStoreJsrStoreLda: sta Zp39 ; CPU:$CEFD PRG:4EFD 85 39 - jsr DispatchLdyA ; CPU:$CEFF PRG:4EFF 20 54 D1 + jsr DispatchLdyA ; CPU:$CEFF PRG:4EFF 20 54 D1 lda $0383,x ; CPU:$CF02 PRG:4F02 BD 83 03 sta $0403,y ; CPU:$CF05 PRG:4F05 99 03 04 lda $0384,x ; CPU:$CF08 PRG:4F08 BD 84 03 @@ -5461,20 +6065,20 @@ Sub_CF22: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchJsrStoreLdaClc: - jsr DispatchLdyA ; CPU:$CF2F PRG:4F2F 20 54 D1 + jsr DispatchLdyA ; CPU:$CF2F PRG:4F2F 20 54 D1 lda $0383,x ; CPU:$CF32 PRG:4F32 BD 83 03 sta $0403,y ; CPU:$CF35 PRG:4F35 99 03 04 lda $0384,x ; CPU:$CF38 PRG:4F38 BD 84 03 clc ; CPU:$CF3B PRG:4F3B 18 adc #$04 ; CPU:$CF3C PRG:4F3C 69 04 - bcs Sub_CF64 ; CPU:$CF3E PRG:4F3E B0 24 + bcs Sub_CF64 ; CPU:$CF3E PRG:4F3E B0 24 sta $0404,y ; CPU:$CF40 PRG:4F40 99 04 04 lda $0386,x ; CPU:$CF43 PRG:4F43 BD 86 03 sta $0406,y ; CPU:$CF46 PRG:4F46 99 06 04 lda $0387,x ; CPU:$CF49 PRG:4F49 BD 87 03 clc ; CPU:$CF4C PRG:4F4C 18 adc #$04 ; CPU:$CF4D PRG:4F4D 69 04 - bcs Sub_CF64 ; CPU:$CF4F PRG:4F4F B0 13 + bcs Sub_CF64 ; CPU:$CF4F PRG:4F4F B0 13 sta $0407,y ; CPU:$CF51 PRG:4F51 99 07 04 lda #$01 ; CPU:$CF54 PRG:4F54 A9 01 sta $0400,y ; CPU:$CF56 PRG:4F56 99 00 04 @@ -5483,7 +6087,7 @@ DispatchJsrStoreLdaClc: tya ; CPU:$CF5B PRG:4F5B 98 tax ; CPU:$CF5C PRG:4F5C AA lda #$02 ; CPU:$CF5D PRG:4F5D A9 02 - jsr DispatchJsrSubBcs ; CPU:$CF5F PRG:4F5F 20 88 D0 + jsr DispatchJsrSubBcs ; CPU:$CF5F PRG:4F5F 20 88 D0 pla ; CPU:$CF62 PRG:4F62 68 tax ; CPU:$CF63 PRG:4F63 AA ; ----------------------------------------------------------------------------- @@ -5507,20 +6111,20 @@ Sub_CF64: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchJsrStoreLdaClc2: - jsr DispatchLdyA ; CPU:$CF65 PRG:4F65 20 54 D1 + jsr DispatchLdyA ; CPU:$CF65 PRG:4F65 20 54 D1 lda $0503,x ; CPU:$CF68 PRG:4F68 BD 03 05 sta $0403,y ; CPU:$CF6B PRG:4F6B 99 03 04 lda $0504,x ; CPU:$CF6E PRG:4F6E BD 04 05 clc ; CPU:$CF71 PRG:4F71 18 adc #$04 ; CPU:$CF72 PRG:4F72 69 04 - bcs Sub_CF9A ; CPU:$CF74 PRG:4F74 B0 24 + bcs Sub_CF9A ; CPU:$CF74 PRG:4F74 B0 24 sta $0404,y ; CPU:$CF76 PRG:4F76 99 04 04 lda $0506,x ; CPU:$CF79 PRG:4F79 BD 06 05 sta $0406,y ; CPU:$CF7C PRG:4F7C 99 06 04 lda $0507,x ; CPU:$CF7F PRG:4F7F BD 07 05 clc ; CPU:$CF82 PRG:4F82 18 adc #$04 ; CPU:$CF83 PRG:4F83 69 04 - bcs Sub_CF9A ; CPU:$CF85 PRG:4F85 B0 13 + bcs Sub_CF9A ; CPU:$CF85 PRG:4F85 B0 13 sta $0407,y ; CPU:$CF87 PRG:4F87 99 07 04 lda #$01 ; CPU:$CF8A PRG:4F8A A9 01 sta $0400,y ; CPU:$CF8C PRG:4F8C 99 00 04 @@ -5539,7 +6143,7 @@ DispatchJsrStoreLdaClc2: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CF95: - jsr DispatchJsrSubBcs ; CPU:$CF95 PRG:4F95 20 88 D0 + jsr DispatchJsrSubBcs ; CPU:$CF95 PRG:4F95 20 88 D0 pla ; CPU:$CF98 PRG:4F98 68 tax ; CPU:$CF99 PRG:4F99 AA ; ----------------------------------------------------------------------------- @@ -5563,20 +6167,20 @@ Sub_CF9A: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchJsrStoreLdaClc3: - jsr DispatchLdyA ; CPU:$CF9B PRG:4F9B 20 54 D1 + jsr DispatchLdyA ; CPU:$CF9B PRG:4F9B 20 54 D1 lda #$00 ; CPU:$CF9E PRG:4F9E A9 00 sta $0403,y ; CPU:$CFA0 PRG:4FA0 99 03 04 lda $0303,x ; CPU:$CFA3 PRG:4FA3 BD 03 03 clc ; CPU:$CFA6 PRG:4FA6 18 adc #$04 ; CPU:$CFA7 PRG:4FA7 69 04 - bcs Sub_CFD4 ; CPU:$CFA9 PRG:4FA9 B0 29 + bcs Sub_CFD4 ; CPU:$CFA9 PRG:4FA9 B0 29 sta $0404,y ; CPU:$CFAB PRG:4FAB 99 04 04 lda $0301,x ; CPU:$CFAE PRG:4FAE BD 01 03 sta $0406,y ; CPU:$CFB1 PRG:4FB1 99 06 04 lda $0302,x ; CPU:$CFB4 PRG:4FB4 BD 02 03 clc ; CPU:$CFB7 PRG:4FB7 18 adc #$04 ; CPU:$CFB8 PRG:4FB8 69 04 - bcs Sub_CFD4 ; CPU:$CFBA PRG:4FBA B0 18 + bcs Sub_CFD4 ; CPU:$CFBA PRG:4FBA B0 18 sta $0407,y ; CPU:$CFBC PRG:4FBC 99 07 04 lda #$03 ; CPU:$CFBF PRG:4FBF A9 03 sta $0400,y ; CPU:$CFC1 PRG:4FC1 99 00 04 @@ -5597,7 +6201,7 @@ DispatchJsrStoreLdaClc3: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_CFCF: - jsr DispatchJsrSubBcs ; CPU:$CFCF PRG:4FCF 20 88 D0 + jsr DispatchJsrSubBcs ; CPU:$CFCF PRG:4FCF 20 88 D0 pla ; CPU:$CFD2 PRG:4FD2 68 tax ; CPU:$CFD3 PRG:4FD3 AA ; ----------------------------------------------------------------------------- @@ -5636,12 +6240,12 @@ DispatchTyaPhaLdy: Sub_CFD9: lda $0400,y ; CPU:$CFD9 PRG:4FD9 B9 00 04 and #$03 ; CPU:$CFDC PRG:4FDC 29 03 - beq Sub_CFEA ; CPU:$CFDE PRG:4FDE F0 0A + beq Sub_CFEA ; CPU:$CFDE PRG:4FDE F0 0A tya ; CPU:$CFE0 PRG:4FE0 98 clc ; CPU:$CFE1 PRG:4FE1 18 adc #$10 ; CPU:$CFE2 PRG:4FE2 69 10 tay ; CPU:$CFE4 PRG:4FE4 A8 - bne Sub_CFD9 ; CPU:$CFE5 PRG:4FE5 D0 F2 + bne Sub_CFD9 ; CPU:$CFE5 PRG:4FE5 D0 F2 pla ; CPU:$CFE7 PRG:4FE7 68 tay ; CPU:$CFE8 PRG:4FE8 A8 rts ; CPU:$CFE9 PRG:4FE9 60 @@ -5671,7 +6275,7 @@ Sub_CFEA: tya ; CPU:$D008 PRG:5008 98 tax ; CPU:$D009 PRG:5009 AA lda #$02 ; CPU:$D00A PRG:500A A9 02 - jsr DispatchJsrSubBcs ; CPU:$D00C PRG:500C 20 88 D0 + jsr DispatchJsrSubBcs ; CPU:$D00C PRG:500C 20 88 D0 pla ; CPU:$D00F PRG:500F 68 tax ; CPU:$D010 PRG:5010 AA pla ; CPU:$D011 PRG:5011 68 @@ -5707,16 +6311,16 @@ Sub_D018: Sub_D024: sta $0403,x ; CPU:$D024 PRG:5024 9D 03 04 sta $0406,x ; CPU:$D027 PRG:5027 9D 06 04 - lda ObjectXLo ; CPU:$D02A PRG:502A A5 37 + lda ObjectXLo ; CPU:$D02A PRG:502A A5 37 sta $0404,x ; CPU:$D02C PRG:502C 9D 04 04 - lda ObjectXHi ; CPU:$D02F PRG:502F A5 38 + lda ObjectXHi ; CPU:$D02F PRG:502F A5 38 sta $0407,x ; CPU:$D031 PRG:5031 9D 07 04 txa ; CPU:$D034 PRG:5034 8A clc ; CPU:$D035 PRG:5035 18 adc #$10 ; CPU:$D036 PRG:5036 69 10 tax ; CPU:$D038 PRG:5038 AA dey ; CPU:$D039 PRG:5039 88 - bne Sub_D018 ; CPU:$D03A PRG:503A D0 DC + bne Sub_D018 ; CPU:$D03A PRG:503A D0 DC rts ; CPU:$D03C PRG:503C 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchAddStoreLda @@ -5736,9 +6340,9 @@ DispatchAddStoreLda: adc $0404,x ; CPU:$D04A PRG:504A 7D 04 04 sta $0404,x ; CPU:$D04D PRG:504D 9D 04 04 lda $040C,x ; CPU:$D050 PRG:5050 BD 0C 04 - bpl Sub_D05A ; CPU:$D053 PRG:5053 10 05 + bpl Sub_D05A ; CPU:$D053 PRG:5053 10 05 lda #$FF ; CPU:$D055 PRG:5055 A9 FF - jmp DispatchAdcStoreLdaAdd ; CPU:$D057 PRG:5057 4C 5C D0 + jmp DispatchAdcStoreLdaAdd ; CPU:$D057 PRG:5057 4C 5C D0 ; ----------------------------------------------------------------------------- ; Routine: Sub_D05A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -5770,9 +6374,9 @@ DispatchAdcStoreLdaAdd: adc $0407,x ; CPU:$D06F PRG:506F 7D 07 04 sta $0407,x ; CPU:$D072 PRG:5072 9D 07 04 lda $040E,x ; CPU:$D075 PRG:5075 BD 0E 04 - bpl Sub_D07F ; CPU:$D078 PRG:5078 10 05 + bpl Sub_D07F ; CPU:$D078 PRG:5078 10 05 lda #$FF ; CPU:$D07A PRG:507A A9 FF - jmp DispatchAdcStoreRts ; CPU:$D07C PRG:507C 4C 81 D0 + jmp DispatchAdcStoreRts ; CPU:$D07C PRG:507C 4C 81 D0 ; ----------------------------------------------------------------------------- ; Routine: Sub_D07F ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -5808,27 +6412,27 @@ DispatchAdcStoreRts: ; ----------------------------------------------------------------------------- DispatchJsrSubBcs: sta Zp39 ; CPU:$D088 PRG:5088 85 39 - jsr DispatchCheckLdaRts ; CPU:$D08A PRG:508A 20 F8 D0 + jsr DispatchCheckLdaRts ; CPU:$D08A PRG:508A 20 F8 D0 sec ; CPU:$D08D PRG:508D 38 sbc $0404,x ; CPU:$D08E PRG:508E FD 04 04 - bcs Sub_D0BA ; CPU:$D091 PRG:5091 B0 27 + bcs Sub_D0BA ; CPU:$D091 PRG:5091 B0 27 eor #$FF ; CPU:$D093 PRG:5093 49 FF clc ; CPU:$D095 PRG:5095 18 adc #$01 ; CPU:$D096 PRG:5096 69 01 - sta ObjectXLo ; CPU:$D098 PRG:5098 85 37 - jsr DispatchCheckLdaRts2 ; CPU:$D09A PRG:509A 20 02 D1 + sta ObjectXLo ; CPU:$D098 PRG:5098 85 37 + jsr DispatchCheckLdaRts2 ; CPU:$D09A PRG:509A 20 02 D1 sec ; CPU:$D09D PRG:509D 38 sbc $0407,x ; CPU:$D09E PRG:509E FD 07 04 - bcs Sub_D0D8 ; CPU:$D0A1 PRG:50A1 B0 35 + bcs Sub_D0D8 ; CPU:$D0A1 PRG:50A1 B0 35 eor #$FF ; CPU:$D0A3 PRG:50A3 49 FF clc ; CPU:$D0A5 PRG:50A5 18 adc #$01 ; CPU:$D0A6 PRG:50A6 69 01 - sta ObjectXHi ; CPU:$D0A8 PRG:50A8 85 38 - jsr DispatchJsrLdaCmpBccBneLda ; CPU:$D0AA PRG:50AA 20 5D ED - sta ObjPtr ; CPU:$D0AD PRG:50AD 85 13 + sta ObjectXHi ; CPU:$D0A8 PRG:50A8 85 38 + jsr DispatchJsrLdaCmpBccBneLda ; CPU:$D0AA PRG:50AA 20 5D ED + sta ObjPtr ; CPU:$D0AD PRG:50AD 85 13 lda #$18 ; CPU:$D0AF PRG:50AF A9 18 sec ; CPU:$D0B1 PRG:50B1 38 - sbc ObjPtr ; CPU:$D0B2 PRG:50B2 E5 13 + sbc ObjPtr ; CPU:$D0B2 PRG:50B2 E5 13 sta $0402,x ; CPU:$D0B4 PRG:50B4 9D 02 04 jmp DispatchStoreStoreStoreStore ; CPU:$D0B7 PRG:50B7 4C 0E D1 ; ----------------------------------------------------------------------------- @@ -5841,16 +6445,16 @@ DispatchJsrSubBcs: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D0BA: - sta ObjectXLo ; CPU:$D0BA PRG:50BA 85 37 - jsr DispatchCheckLdaRts2 ; CPU:$D0BC PRG:50BC 20 02 D1 + sta ObjectXLo ; CPU:$D0BA PRG:50BA 85 37 + jsr DispatchCheckLdaRts2 ; CPU:$D0BC PRG:50BC 20 02 D1 sec ; CPU:$D0BF PRG:50BF 38 sbc $0407,x ; CPU:$D0C0 PRG:50C0 FD 07 04 - bcs Sub_D0E6 ; CPU:$D0C3 PRG:50C3 B0 21 + bcs Sub_D0E6 ; CPU:$D0C3 PRG:50C3 B0 21 eor #$FF ; CPU:$D0C5 PRG:50C5 49 FF clc ; CPU:$D0C7 PRG:50C7 18 adc #$01 ; CPU:$D0C8 PRG:50C8 69 01 - sta ObjectXHi ; CPU:$D0CA PRG:50CA 85 38 - jsr DispatchJsrLdaCmpBccBneLda ; CPU:$D0CC PRG:50CC 20 5D ED + sta ObjectXHi ; CPU:$D0CA PRG:50CA 85 38 + jsr DispatchJsrLdaCmpBccBneLda ; CPU:$D0CC PRG:50CC 20 5D ED clc ; CPU:$D0CF PRG:50CF 18 adc #$08 ; CPU:$D0D0 PRG:50D0 69 08 sta $0402,x ; CPU:$D0D2 PRG:50D2 9D 02 04 @@ -5865,8 +6469,8 @@ Sub_D0BA: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D0D8: - sta ObjectXHi ; CPU:$D0D8 PRG:50D8 85 38 - jsr DispatchJsrLdaCmpBccBneLda ; CPU:$D0DA PRG:50DA 20 5D ED + sta ObjectXHi ; CPU:$D0D8 PRG:50D8 85 38 + jsr DispatchJsrLdaCmpBccBneLda ; CPU:$D0DA PRG:50DA 20 5D ED clc ; CPU:$D0DD PRG:50DD 18 adc #$18 ; CPU:$D0DE PRG:50DE 69 18 sta $0402,x ; CPU:$D0E0 PRG:50E0 9D 02 04 @@ -5881,12 +6485,12 @@ Sub_D0D8: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D0E6: - sta ObjectXHi ; CPU:$D0E6 PRG:50E6 85 38 - jsr DispatchJsrLdaCmpBccBneLda ; CPU:$D0E8 PRG:50E8 20 5D ED - sta ObjPtr ; CPU:$D0EB PRG:50EB 85 13 + sta ObjectXHi ; CPU:$D0E6 PRG:50E6 85 38 + jsr DispatchJsrLdaCmpBccBneLda ; CPU:$D0E8 PRG:50E8 20 5D ED + sta ObjPtr ; CPU:$D0EB PRG:50EB 85 13 lda #$08 ; CPU:$D0ED PRG:50ED A9 08 sec ; CPU:$D0EF PRG:50EF 38 - sbc ObjPtr ; CPU:$D0F0 PRG:50F0 E5 13 + sbc ObjPtr ; CPU:$D0F0 PRG:50F0 E5 13 sta $0402,x ; CPU:$D0F2 PRG:50F2 9D 02 04 jmp DispatchStoreStoreStoreStore ; CPU:$D0F5 PRG:50F5 4C 0E D1 ; ----------------------------------------------------------------------------- @@ -5900,7 +6504,7 @@ Sub_D0E6: ; ----------------------------------------------------------------------------- DispatchCheckLdaRts: lda Zp3B ; CPU:$D0F8 PRG:50F8 A5 3B - bne Sub_D0FF ; CPU:$D0FA PRG:50FA D0 03 + bne Sub_D0FF ; CPU:$D0FA PRG:50FA D0 03 lda Zp23 ; CPU:$D0FC PRG:50FC A5 23 rts ; CPU:$D0FE PRG:50FE 60 ; ----------------------------------------------------------------------------- @@ -5926,7 +6530,7 @@ Sub_D0FF: ; ----------------------------------------------------------------------------- DispatchCheckLdaRts2: lda Zp3B ; CPU:$D102 PRG:5102 A5 3B - bne Sub_D109 ; CPU:$D104 PRG:5104 D0 03 + bne Sub_D109 ; CPU:$D104 PRG:5104 D0 03 lda Zp24 ; CPU:$D106 PRG:5106 A5 24 rts ; CPU:$D108 PRG:5108 60 ; ----------------------------------------------------------------------------- @@ -5968,7 +6572,7 @@ DispatchStoreStoreStoreStore: sta $040E,x ; CPU:$D116 PRG:5116 9D 0E 04 sta $040F,x ; CPU:$D119 PRG:5119 9D 0F 04 lda Zp39 ; CPU:$D11C PRG:511C A5 39 - bne Sub_D121 ; CPU:$D11E PRG:511E D0 01 + bne Sub_D121 ; CPU:$D11E PRG:511E D0 01 rts ; CPU:$D120 PRG:5120 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_D121 @@ -6010,7 +6614,7 @@ Sub_D129: adc $040E,x ; CPU:$D149 PRG:5149 7D 0E 04 sta $040E,x ; CPU:$D14C PRG:514C 9D 0E 04 dec Zp39 ; CPU:$D14F PRG:514F C6 39 - bne Sub_D129 ; CPU:$D151 PRG:5151 D0 D6 + bne Sub_D129 ; CPU:$D151 PRG:5151 D0 D6 rts ; CPU:$D153 PRG:5153 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdyA @@ -6035,12 +6639,12 @@ DispatchLdyA: Sub_D156: lda $0400,y ; CPU:$D156 PRG:5156 B9 00 04 and #$03 ; CPU:$D159 PRG:5159 29 03 - beq Sub_D166 ; CPU:$D15B PRG:515B F0 09 + beq Sub_D166 ; CPU:$D15B PRG:515B F0 09 tya ; CPU:$D15D PRG:515D 98 clc ; CPU:$D15E PRG:515E 18 adc #$10 ; CPU:$D15F PRG:515F 69 10 tay ; CPU:$D161 PRG:5161 A8 - bne Sub_D156 ; CPU:$D162 PRG:5162 D0 F2 + bne Sub_D156 ; CPU:$D162 PRG:5162 D0 F2 pla ; CPU:$D164 PRG:5164 68 pla ; CPU:$D165 PRG:5165 68 ; ----------------------------------------------------------------------------- @@ -6076,14 +6680,14 @@ ObjMoveCall: ; ----------------------------------------------------------------------------- Sub_D169: lda $0300,x ; CPU:$D169 PRG:5169 BD 00 03 - beq DispatchTxAddTaxCpx ; CPU:$D16C PRG:516C F0 2D + beq DispatchTxAddTaxCpx ; CPU:$D16C PRG:516C F0 2D tay ; CPU:$D16E PRG:516E A8 lda $0301,x ; CPU:$D16F PRG:516F BD 01 03 cmp #$02 ; CPU:$D172 PRG:5172 C9 02 - bne Sub_D17E ; CPU:$D174 PRG:5174 D0 08 + bne Sub_D17E ; CPU:$D174 PRG:5174 D0 08 lda #$FF ; CPU:$D176 PRG:5176 A9 FF sta $0301,x ; CPU:$D178 PRG:5178 9D 01 03 - jmp DispatchTxAddTaxCpx ; CPU:$D17B PRG:517B 4C 9B D1 + jmp DispatchTxAddTaxCpx ; CPU:$D17B PRG:517B 4C 9B D1 ; ----------------------------------------------------------------------------- ; Routine: Sub_D17E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6097,13 +6701,13 @@ Sub_D17E: lda $0302,x ; CPU:$D17E PRG:517E BD 02 03 clc ; CPU:$D181 PRG:5181 18 adc Zp25 ; CPU:$D182 PRG:5182 65 25 - bcc Sub_D198 ; CPU:$D184 PRG:5184 90 12 + bcc Sub_D198 ; CPU:$D184 PRG:5184 90 12 inc $0301,x ; CPU:$D186 PRG:5186 FE 01 03 - beq Sub_D198 ; CPU:$D189 PRG:5189 F0 0D + beq Sub_D198 ; CPU:$D189 PRG:5189 F0 0D cpy #$0E ; CPU:$D18B PRG:518B C0 0E - beq Sub_D198 ; CPU:$D18D PRG:518D F0 09 + beq Sub_D198 ; CPU:$D18D PRG:518D F0 09 cpy #$48 ; CPU:$D18F PRG:518F C0 48 - beq Sub_D198 ; CPU:$D191 PRG:5191 F0 05 + beq Sub_D198 ; CPU:$D191 PRG:5191 F0 05 lda #$00 ; CPU:$D193 PRG:5193 A9 00 sta $0300,x ; CPU:$D195 PRG:5195 9D 00 03 ; ----------------------------------------------------------------------------- @@ -6132,10 +6736,10 @@ DispatchTxAddTaxCpx: adc #$08 ; CPU:$D19D PRG:519D 69 08 tax ; CPU:$D19F PRG:519F AA cpx #$80 ; CPU:$D1A0 PRG:51A0 E0 80 - bne Sub_D169 ; CPU:$D1A2 PRG:51A2 D0 C5 - lda GameSubMode ; CPU:$D1A4 PRG:51A4 A5 1B + bne Sub_D169 ; CPU:$D1A2 PRG:51A2 D0 C5 + lda GameSubMode ; CPU:$D1A4 PRG:51A4 A5 1B lsr a ; CPU:$D1A6 PRG:51A6 4A - bcs Sub_D1DB ; CPU:$D1A7 PRG:51A7 B0 32 + bcs Sub_D1DB ; CPU:$D1A7 PRG:51A7 B0 32 ldx #$00 ; CPU:$D1A9 PRG:51A9 A2 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_D1AB @@ -6147,13 +6751,13 @@ DispatchTxAddTaxCpx: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D1AB: - jsr DispatchLdyPhaLdaPha ; CPU:$D1AB PRG:51AB 20 09 D2 + jsr DispatchLdyPhaLdaPha ; CPU:$D1AB PRG:51AB 20 09 D2 txa ; CPU:$D1AE PRG:51AE 8A clc ; CPU:$D1AF PRG:51AF 18 adc #$08 ; CPU:$D1B0 PRG:51B0 69 08 tax ; CPU:$D1B2 PRG:51B2 AA cpx #$80 ; CPU:$D1B3 PRG:51B3 E0 80 - bne Sub_D1AB ; CPU:$D1B5 PRG:51B5 D0 F4 + bne Sub_D1AB ; CPU:$D1B5 PRG:51B5 D0 F4 ldx #$00 ; CPU:$D1B7 PRG:51B7 A2 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_D1B9 @@ -6167,11 +6771,11 @@ Sub_D1AB: Sub_D1B9: lda $0300,x ; CPU:$D1B9 PRG:51B9 BD 00 03 cmp #$4A ; CPU:$D1BC PRG:51BC C9 4A - beq Sub_D1D5 ; CPU:$D1BE PRG:51BE F0 15 + beq Sub_D1D5 ; CPU:$D1BE PRG:51BE F0 15 cmp #$3A ; CPU:$D1C0 PRG:51C0 C9 3A - beq Sub_D1C8 ; CPU:$D1C2 PRG:51C2 F0 04 + beq Sub_D1C8 ; CPU:$D1C2 PRG:51C2 F0 04 cmp #$3C ; CPU:$D1C4 PRG:51C4 C9 3C - bne DispatchTxAddTaxCpx2 ; CPU:$D1C6 PRG:51C6 D0 03 + bne DispatchTxAddTaxCpx2 ; CPU:$D1C6 PRG:51C6 D0 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_D1C8 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6182,7 +6786,7 @@ Sub_D1B9: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D1C8: - jsr DispatchLsrsLsrsAnd ; CPU:$D1C8 PRG:51C8 20 DA D7 + jsr DispatchLsrsLsrsAnd ; CPU:$D1C8 PRG:51C8 20 DA D7 ; ----------------------------------------------------------------------------- ; Routine: DispatchTxAddTaxCpx2 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6198,7 +6802,7 @@ DispatchTxAddTaxCpx2: adc #$08 ; CPU:$D1CD PRG:51CD 69 08 tax ; CPU:$D1CF PRG:51CF AA cpx #$80 ; CPU:$D1D0 PRG:51D0 E0 80 - bne Sub_D1B9 ; CPU:$D1D2 PRG:51D2 D0 E5 + bne Sub_D1B9 ; CPU:$D1D2 PRG:51D2 D0 E5 rts ; CPU:$D1D4 PRG:51D4 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_D1D5 @@ -6210,8 +6814,8 @@ DispatchTxAddTaxCpx2: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D1D5: - jsr DispatchCheckBeqRts ; CPU:$D1D5 PRG:51D5 20 CB D2 - jmp DispatchTxAddTaxCpx2 ; CPU:$D1D8 PRG:51D8 4C CB D1 + jsr DispatchCheckBeqRts ; CPU:$D1D5 PRG:51D5 20 CB D2 + jmp DispatchTxAddTaxCpx2 ; CPU:$D1D8 PRG:51D8 4C CB D1 ; ----------------------------------------------------------------------------- ; Routine: Sub_D1DB ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6233,12 +6837,12 @@ Sub_D1DB: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D1DD: - jsr DispatchLdyPhaLdaPha ; CPU:$D1DD PRG:51DD 20 09 D2 + jsr DispatchLdyPhaLdaPha ; CPU:$D1DD PRG:51DD 20 09 D2 txa ; CPU:$D1E0 PRG:51E0 8A sec ; CPU:$D1E1 PRG:51E1 38 sbc #$08 ; CPU:$D1E2 PRG:51E2 E9 08 tax ; CPU:$D1E4 PRG:51E4 AA - bpl Sub_D1DD ; CPU:$D1E5 PRG:51E5 10 F6 + bpl Sub_D1DD ; CPU:$D1E5 PRG:51E5 10 F6 ldx #$78 ; CPU:$D1E7 PRG:51E7 A2 78 ; ----------------------------------------------------------------------------- ; Routine: Sub_D1E9 @@ -6252,11 +6856,11 @@ Sub_D1DD: Sub_D1E9: lda $0300,x ; CPU:$D1E9 PRG:51E9 BD 00 03 cmp #$4A ; CPU:$D1EC PRG:51EC C9 4A - beq Sub_D203 ; CPU:$D1EE PRG:51EE F0 13 + beq Sub_D203 ; CPU:$D1EE PRG:51EE F0 13 cmp #$3A ; CPU:$D1F0 PRG:51F0 C9 3A - beq Sub_D1F8 ; CPU:$D1F2 PRG:51F2 F0 04 + beq Sub_D1F8 ; CPU:$D1F2 PRG:51F2 F0 04 cmp #$3C ; CPU:$D1F4 PRG:51F4 C9 3C - bne DispatchSubTaxBpl ; CPU:$D1F6 PRG:51F6 D0 03 + bne DispatchSubTaxBpl ; CPU:$D1F6 PRG:51F6 D0 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_D1F8 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6267,7 +6871,7 @@ Sub_D1E9: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D1F8: - jsr DispatchLsrsLsrsAnd ; CPU:$D1F8 PRG:51F8 20 DA D7 + jsr DispatchLsrsLsrsAnd ; CPU:$D1F8 PRG:51F8 20 DA D7 ; ----------------------------------------------------------------------------- ; Routine: DispatchSubTaxBpl ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6282,7 +6886,7 @@ DispatchSubTaxBpl: sec ; CPU:$D1FC PRG:51FC 38 sbc #$08 ; CPU:$D1FD PRG:51FD E9 08 tax ; CPU:$D1FF PRG:51FF AA - bpl Sub_D1E9 ; CPU:$D200 PRG:5200 10 E7 + bpl Sub_D1E9 ; CPU:$D200 PRG:5200 10 E7 rts ; CPU:$D202 PRG:5202 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_D203 @@ -6294,8 +6898,8 @@ DispatchSubTaxBpl: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D203: - jsr DispatchCheckBeqRts ; CPU:$D203 PRG:5203 20 CB D2 - jmp DispatchSubTaxBpl ; CPU:$D206 PRG:5206 4C FB D1 + jsr DispatchCheckBeqRts ; CPU:$D203 PRG:5203 20 CB D2 + jmp DispatchSubTaxBpl ; CPU:$D206 PRG:5206 4C FB D1 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdyPhaLdaPha ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6312,6 +6916,8 @@ DispatchLdyPhaLdaPha: lda $D215,y ; CPU:$D210 PRG:5210 B9 15 D2 pha ; CPU:$D213 PRG:5213 48 rts ; CPU:$D214 PRG:5214 60 +ObjSubPtrTable: +; Object subroutine pointer table (16-bit entries called via pha/pha/rts) ; ---- data $D215-$D249 (53 bytes) ---- ; referenced by `lda $D216,y` at $D20C (operand $D216 falls inside this region) ; referenced by `lda $D215,y` at $D210 (operand $D215 falls inside this region) @@ -6319,20 +6925,11 @@ DispatchLdyPhaLdaPha: .byte $27, $DD, $46, $DE, $A9, $DD, $7C, $DB, $CC, $DB, $02, $DC, $44, $DC, $5E, $DC ; CPU:$D225 PRG:5225 27 DD 46 DE A9 DD 7C DB CC DB 02 DC 44 DC 5E DC .byte $6A, $DB, $B2, $DB, $3D, $DB, $70, $DC, $75, $DC, $AD, $D8, $AD, $D8, $AD, $D8 ; CPU:$D235 PRG:5235 6A DB B2 DB 3D DB 70 DC 75 DC AD D8 AD D8 AD D8 .byte $AD, $D8, $2B, $D9, $FB ; CPU:$D245 PRG:5245 AD D8 2B D9 FB -; ----------------------------------------------------------------------------- -; Routine: Sub_D24A -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -Sub_D24A: - cmp $D720,y ; CPU:$D24A PRG:524A D9 20 D7 - ora (ZpD7,x) ; CPU:$D24D PRG:524D 01 D7 - lsr ZpD7,x ; CPU:$D24F PRG:524F 56 D7 - rti ; CPU:$D251 PRG:5251 40 +; ---- data $D24A-$D24A (1 bytes) ---- + .byte $D9 ; CPU:$D24A PRG:524A D9 + jsr $01D7 ; CPU:$D24B PRG:524B 20 D7 01 + .byte $D7, $56 ; CPU:$D24E PRG:524E D7 56 -- dcp Zp56,x (undocumented; ca65 cannot encode) + .byte $D7, $40 ; CPU:$D250 PRG:5250 D7 40 -- dcp Zp40,x (undocumented; ca65 cannot encode) ; ---- data $D252-$D2C3 (114 bytes) ---- .byte $D7, $D2, $D6, $96, $D8, $96, $D8, $96, $D8, $96, $D8, $E8, $D2, $1F, $D7, $62 ; CPU:$D252 PRG:5252 D7 D2 D6 96 D8 96 D8 96 D8 96 D8 E8 D2 1F D7 62 .byte $D2, $BD, $02, $03, $38, $E9, $06, $B0, $0A, $A9, $00, $9D, $00, $03, $85, $13 ; CPU:$D262 PRG:5262 D2 BD 02 03 38 E9 06 B0 0A A9 00 9D 00 03 85 13 @@ -6369,7 +6966,7 @@ Sub_D2C4: ; ----------------------------------------------------------------------------- DispatchCheckBeqRts: lda $0301,x ; CPU:$D2CB PRG:52CB BD 01 03 - beq Sub_D2D1 ; CPU:$D2CE PRG:52CE F0 01 + beq Sub_D2D1 ; CPU:$D2CE PRG:52CE F0 01 rts ; CPU:$D2D0 PRG:52D0 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_D2D1 @@ -6382,10 +6979,10 @@ DispatchCheckBeqRts: ; ----------------------------------------------------------------------------- Sub_D2D1: lda $0302,x ; CPU:$D2D1 PRG:52D1 BD 02 03 - sta ObjectXHi ; CPU:$D2D4 PRG:52D4 85 38 + sta ObjectXHi ; CPU:$D2D4 PRG:52D4 85 38 lda $0303,x ; CPU:$D2D6 PRG:52D6 BD 03 03 - sta ObjectXLo ; CPU:$D2D9 PRG:52D9 85 37 - stx ObjPtr ; CPU:$D2DB PRG:52DB 86 13 + sta ObjectXLo ; CPU:$D2D9 PRG:52D9 85 37 + stx ObjPtr ; CPU:$D2DB PRG:52DB 86 13 ldx #$10 ; CPU:$D2DD PRG:52DD A2 10 ; ----------------------------------------------------------------------------- ; Routine: Sub_D2DF @@ -6397,10 +6994,10 @@ Sub_D2D1: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D2DF: - jsr DispatchLdyBeqLdaAdd ; CPU:$D2DF PRG:52DF 20 D9 D5 + jsr DispatchLdyBeqLdaAdd ; CPU:$D2DF PRG:52DF 20 D9 D5 cpx #$20 ; CPU:$D2E2 PRG:52E2 E0 20 - bne Sub_D2DF ; CPU:$D2E4 PRG:52E4 D0 F9 - ldx ObjPtr ; CPU:$D2E6 PRG:52E6 A6 13 + bne Sub_D2DF ; CPU:$D2E4 PRG:52E4 D0 F9 + ldx ObjPtr ; CPU:$D2E6 PRG:52E6 A6 13 rts ; CPU:$D2E8 PRG:52E8 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_D2E9 @@ -6413,9 +7010,9 @@ Sub_D2DF: ; ----------------------------------------------------------------------------- Sub_D2E9: lda $0301,x ; CPU:$D2E9 PRG:52E9 BD 01 03 - beq Sub_D2F4 ; CPU:$D2EC PRG:52EC F0 06 - bmi Sub_D2F3 ; CPU:$D2EE PRG:52EE 30 03 - jmp DispatchCmpBneLdaSub ; CPU:$D2F0 PRG:52F0 4C 14 D3 + beq Sub_D2F4 ; CPU:$D2EC PRG:52EC F0 06 + bmi Sub_D2F3 ; CPU:$D2EE PRG:52EE 30 03 + jmp DispatchCmpBneLdaSub ; CPU:$D2F0 PRG:52F0 4C 14 D3 ; ----------------------------------------------------------------------------- ; Routine: Sub_D2F3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6440,9 +7037,9 @@ Sub_D2F4: lda $0302,x ; CPU:$D2F4 PRG:52F4 BD 02 03 sec ; CPU:$D2F7 PRG:52F7 38 sbc #$50 ; CPU:$D2F8 PRG:52F8 E9 50 - sta ObjectXHi ; CPU:$D2FA PRG:52FA 85 38 - bcs Sub_D301 ; CPU:$D2FC PRG:52FC B0 03 - jmp DispatchStoreStoreStoreStx ; CPU:$D2FE PRG:52FE 4C 28 D3 + sta ObjectXHi ; CPU:$D2FA PRG:52FA 85 38 + bcs Sub_D301 ; CPU:$D2FC PRG:52FC B0 03 + jmp DispatchStoreStoreStoreStx ; CPU:$D2FE PRG:52FE 4C 28 D3 ; ----------------------------------------------------------------------------- ; Routine: Sub_D301 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6454,13 +7051,13 @@ Sub_D2F4: ; ----------------------------------------------------------------------------- Sub_D301: lda $0303,x ; CPU:$D301 PRG:5301 BD 03 03 - sta ObjectXLo ; CPU:$D304 PRG:5304 85 37 + sta ObjectXLo ; CPU:$D304 PRG:5304 85 37 lda $0307,x ; CPU:$D306 PRG:5306 BD 07 03 - sta ObjPtr ; CPU:$D309 PRG:5309 85 13 + sta ObjPtr ; CPU:$D309 PRG:5309 85 13 stx Zp2C ; CPU:$D30B PRG:530B 86 2C lda #$00 ; CPU:$D30D PRG:530D A9 00 - sta ObjectYLo ; CPU:$D30F PRG:530F 85 35 - jmp DispatchLdxC ; CPU:$D311 PRG:5311 4C C3 D3 + sta ObjectYLo ; CPU:$D30F PRG:530F 85 35 + jmp DispatchLdxC ; CPU:$D311 PRG:5311 4C C3 D3 ; ----------------------------------------------------------------------------- ; Routine: DispatchCmpBneLdaSub ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6472,12 +7069,12 @@ Sub_D301: ; ----------------------------------------------------------------------------- DispatchCmpBneLdaSub: cmp #$01 ; CPU:$D314 PRG:5314 C9 01 - bne Sub_D322 ; CPU:$D316 PRG:5316 D0 0A + bne Sub_D322 ; CPU:$D316 PRG:5316 D0 0A lda $0302,x ; CPU:$D318 PRG:5318 BD 02 03 sec ; CPU:$D31B PRG:531B 38 sbc #$50 ; CPU:$D31C PRG:531C E9 50 - sta ObjectXHi ; CPU:$D31E PRG:531E 85 38 - bcc Sub_D301 ; CPU:$D320 PRG:5320 90 DF + sta ObjectXHi ; CPU:$D31E PRG:531E 85 38 + bcc Sub_D301 ; CPU:$D320 PRG:5320 90 DF ; ----------------------------------------------------------------------------- ; Routine: Sub_D322 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6502,13 +7099,13 @@ Sub_D322: ; ----------------------------------------------------------------------------- DispatchStoreStoreStoreStx: lda $0303,x ; CPU:$D328 PRG:5328 BD 03 03 - sta ObjectXLo ; CPU:$D32B PRG:532B 85 37 + sta ObjectXLo ; CPU:$D32B PRG:532B 85 37 lda $0307,x ; CPU:$D32D PRG:532D BD 07 03 - sta ObjPtr ; CPU:$D330 PRG:5330 85 13 + sta ObjPtr ; CPU:$D330 PRG:5330 85 13 stx Zp2C ; CPU:$D332 PRG:5332 86 2C lda #$01 ; CPU:$D334 PRG:5334 A9 01 - sta ObjectYLo ; CPU:$D336 PRG:5336 85 35 - jmp DispatchLdxC ; CPU:$D338 PRG:5338 4C C3 D3 + sta ObjectYLo ; CPU:$D336 PRG:5336 85 35 + jmp DispatchLdxC ; CPU:$D338 PRG:5338 4C C3 D3 ; ---- data $D33B-$D342 (8 bytes) ---- .byte $A5, $5A, $05, $3B, $D0, $05, $A9, $01 ; CPU:$D33B PRG:533B A5 5A 05 3B D0 05 A9 01 ; ----------------------------------------------------------------------------- @@ -6523,9 +7120,9 @@ DispatchStoreStoreStoreStx: Sub_D343: sta $060B ; CPU:$D343 PRG:5343 8D 0B 06 lda $0301,x ; CPU:$D346 PRG:5346 BD 01 03 - beq Sub_D351 ; CPU:$D349 PRG:5349 F0 06 - bmi Sub_D350 ; CPU:$D34B PRG:534B 30 03 - jmp DispatchCmpBneLdaSub2 ; CPU:$D34D PRG:534D 4C 72 D3 + beq Sub_D351 ; CPU:$D349 PRG:5349 F0 06 + bmi Sub_D350 ; CPU:$D34B PRG:534B 30 03 + jmp DispatchCmpBneLdaSub2 ; CPU:$D34D PRG:534D 4C 72 D3 ; ----------------------------------------------------------------------------- ; Routine: Sub_D350 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6550,9 +7147,9 @@ Sub_D351: lda $0302,x ; CPU:$D351 PRG:5351 BD 02 03 sec ; CPU:$D354 PRG:5354 38 sbc #$50 ; CPU:$D355 PRG:5355 E9 50 - sta ObjectXHi ; CPU:$D357 PRG:5357 85 38 - bcs DispatchStoreJmp ; CPU:$D359 PRG:5359 B0 03 - jmp DispatchLdaD ; CPU:$D35B PRG:535B 4C 83 D3 + sta ObjectXHi ; CPU:$D357 PRG:5357 85 38 + bcs DispatchStoreJmp ; CPU:$D359 PRG:5359 B0 03 + jmp DispatchLdaD ; CPU:$D35B PRG:535B 4C 83 D3 ; ----------------------------------------------------------------------------- ; Routine: DispatchStoreJmp ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6564,8 +7161,8 @@ Sub_D351: ; ----------------------------------------------------------------------------- DispatchStoreJmp: lda #$00 ; CPU:$D35E PRG:535E A9 00 - sta ObjectYLo ; CPU:$D360 PRG:5360 85 35 - jmp DispatchStoreStoreStoreStx4 ; CPU:$D362 PRG:5362 4C 87 D3 + sta ObjectYLo ; CPU:$D360 PRG:5360 85 35 + jmp DispatchStoreStoreStoreStx4; CPU:$D362 PRG:5362 4C 87 D3 ; ----------------------------------------------------------------------------- ; Routine: Sub_D365 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6590,7 +7187,7 @@ Sub_D367: sta $0300,x ; CPU:$D367 PRG:5367 9D 00 03 txa ; CPU:$D36A PRG:536A 8A pha ; CPU:$D36B PRG:536B 48 - jsr ClearOamInit ; CPU:$D36C PRG:536C 20 D3 B8 + jsr ClearOamInit ; CPU:$D36C PRG:536C 20 D3 B8 pla ; CPU:$D36F PRG:536F 68 tax ; CPU:$D370 PRG:5370 AA rts ; CPU:$D371 PRG:5371 60 @@ -6605,13 +7202,13 @@ Sub_D367: ; ----------------------------------------------------------------------------- DispatchCmpBneLdaSub2: cmp #$01 ; CPU:$D372 PRG:5372 C9 01 - bne Sub_D365 ; CPU:$D374 PRG:5374 D0 EF + bne Sub_D365 ; CPU:$D374 PRG:5374 D0 EF lda $0302,x ; CPU:$D376 PRG:5376 BD 02 03 sec ; CPU:$D379 PRG:5379 38 sbc #$50 ; CPU:$D37A PRG:537A E9 50 - sta ObjectXHi ; CPU:$D37C PRG:537C 85 38 - bcs Sub_D365 ; CPU:$D37E PRG:537E B0 E5 - jmp DispatchStoreJmp ; CPU:$D380 PRG:5380 4C 5E D3 + sta ObjectXHi ; CPU:$D37C PRG:537C 85 38 + bcs Sub_D365 ; CPU:$D37E PRG:537E B0 E5 + jmp DispatchStoreJmp ; CPU:$D380 PRG:5380 4C 5E D3 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaD ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6633,7 +7230,7 @@ DispatchLdaD: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D385: - sta ObjectYLo ; CPU:$D385 PRG:5385 85 35 + sta ObjectYLo ; CPU:$D385 PRG:5385 85 35 ; ----------------------------------------------------------------------------- ; Routine: DispatchStoreStoreStoreStx4 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6645,9 +7242,9 @@ Sub_D385: ; ----------------------------------------------------------------------------- DispatchStoreStoreStoreStx4: lda $0303,x ; CPU:$D387 PRG:5387 BD 03 03 - sta ObjectXLo ; CPU:$D38A PRG:538A 85 37 + sta ObjectXLo ; CPU:$D38A PRG:538A 85 37 lda $0307,x ; CPU:$D38C PRG:538C BD 07 03 - sta ObjPtr ; CPU:$D38F PRG:538F 85 13 + sta ObjPtr ; CPU:$D38F PRG:538F 85 13 stx Zp2C ; CPU:$D391 PRG:5391 86 2C ldx #$00 ; CPU:$D393 PRG:5393 A2 00 ; ----------------------------------------------------------------------------- @@ -6660,9 +7257,9 @@ DispatchStoreStoreStoreStx4: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D395: - jsr DispatchLdaBne ; CPU:$D395 PRG:5395 20 D5 D5 + jsr DispatchLdaBne ; CPU:$D395 PRG:5395 20 D5 D5 cpx #$10 ; CPU:$D398 PRG:5398 E0 10 - bne Sub_D395 ; CPU:$D39A PRG:539A D0 F9 + bne Sub_D395 ; CPU:$D39A PRG:539A D0 F9 ldx #$20 ; CPU:$D39C PRG:539C A2 20 ; ----------------------------------------------------------------------------- ; Routine: Sub_D39E @@ -6674,10 +7271,10 @@ Sub_D395: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D39E: - lsr ObjPtr ; CPU:$D39E PRG:539E 46 13 - bcs Sub_D3A8 ; CPU:$D3A0 PRG:53A0 B0 06 - jsr DispatchLdaBne ; CPU:$D3A2 PRG:53A2 20 D5 D5 - jmp DispatchCpxBneLdaAndClc ; CPU:$D3A5 PRG:53A5 4C AC D3 + lsr ObjPtr ; CPU:$D39E PRG:539E 46 13 + bcs Sub_D3A8 ; CPU:$D3A0 PRG:53A0 B0 06 + jsr DispatchLdaBne ; CPU:$D3A2 PRG:53A2 20 D5 D5 + jmp DispatchCpxBneLdaAndClc ; CPU:$D3A5 PRG:53A5 4C AC D3 ; ----------------------------------------------------------------------------- ; Routine: Sub_D3A8 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6703,8 +7300,8 @@ Sub_D3A8: ; ----------------------------------------------------------------------------- DispatchCpxBneLdaAndClc: cpx #$30 ; CPU:$D3AC PRG:53AC E0 30 - bne Sub_D39E ; CPU:$D3AE PRG:53AE D0 EE - lda GameSubMode ; CPU:$D3B0 PRG:53B0 A5 1B + bne Sub_D39E ; CPU:$D3AE PRG:53AE D0 EE + lda GameSubMode ; CPU:$D3B0 PRG:53B0 A5 1B and #$30 ; CPU:$D3B2 PRG:53B2 29 30 clc ; CPU:$D3B4 PRG:53B4 18 adc #$60 ; CPU:$D3B5 PRG:53B5 69 60 @@ -6720,7 +7317,7 @@ DispatchCpxBneLdaAndClc: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D3BA: - sta ObjUpdateFlag ; CPU:$D3BA PRG:53BA 85 0E + sta ObjUpdateFlag ; CPU:$D3BA PRG:53BA 85 0E ; ----------------------------------------------------------------------------- ; Routine: Sub_D3BC ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6731,9 +7328,9 @@ Sub_D3BA: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D3BC: - jsr DispatchLdaBne ; CPU:$D3BC PRG:53BC 20 D5 D5 - dec ObjUpdateFlag ; CPU:$D3BF PRG:53BF C6 0E - bne Sub_D3BC ; CPU:$D3C1 PRG:53C1 D0 F9 + jsr DispatchLdaBne ; CPU:$D3BC PRG:53BC 20 D5 D5 + dec ObjUpdateFlag ; CPU:$D3BF PRG:53BF C6 0E + bne Sub_D3BC ; CPU:$D3C1 PRG:53C1 D0 F9 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdxC ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6755,13 +7352,13 @@ DispatchLdxC: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D3C5: - jsr DispatchLdaBne ; CPU:$D3C5 PRG:53C5 20 D5 D5 + jsr DispatchLdaBne ; CPU:$D3C5 PRG:53C5 20 D5 D5 cpx #$60 ; CPU:$D3C8 PRG:53C8 E0 60 - bne Sub_D3C5 ; CPU:$D3CA PRG:53CA D0 F9 + bne Sub_D3C5 ; CPU:$D3CA PRG:53CA D0 F9 ldx Zp2C ; CPU:$D3CC PRG:53CC A6 2C lda $0300,x ; CPU:$D3CE PRG:53CE BD 00 03 cmp #$0E ; CPU:$D3D1 PRG:53D1 C9 0E - beq Sub_D3D6 ; CPU:$D3D3 PRG:53D3 F0 01 + beq Sub_D3D6 ; CPU:$D3D3 PRG:53D3 F0 01 rts ; CPU:$D3D5 PRG:53D5 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_D3D6 @@ -6774,16 +7371,16 @@ Sub_D3C5: ; ----------------------------------------------------------------------------- Sub_D3D6: ldy #$00 ; CPU:$D3D6 PRG:53D6 A0 00 - jsr DispatchCheckLdaAdd2 ; CPU:$D3D8 PRG:53D8 20 E3 D4 - jsr DispatchCheckLdaAdd2 ; CPU:$D3DB PRG:53DB 20 E3 D4 - jsr DispatchCheckLdaAdd2 ; CPU:$D3DE PRG:53DE 20 E3 D4 - jsr DispatchCheckLdaAdd2 ; CPU:$D3E1 PRG:53E1 20 E3 D4 + jsr DispatchCheckLdaAdd2 ; CPU:$D3D8 PRG:53D8 20 E3 D4 + jsr DispatchCheckLdaAdd2 ; CPU:$D3DB PRG:53DB 20 E3 D4 + jsr DispatchCheckLdaAdd2 ; CPU:$D3DE PRG:53DE 20 E3 D4 + jsr DispatchCheckLdaAdd2 ; CPU:$D3E1 PRG:53E1 20 E3 D4 lda $0301,x ; CPU:$D3E4 PRG:53E4 BD 01 03 - beq Sub_D3F2 ; CPU:$D3E7 PRG:53E7 F0 09 + beq Sub_D3F2 ; CPU:$D3E7 PRG:53E7 F0 09 lda $0302,x ; CPU:$D3E9 PRG:53E9 BD 02 03 sec ; CPU:$D3EC PRG:53EC 38 sbc #$28 ; CPU:$D3ED PRG:53ED E9 28 - bcc Sub_D3FA ; CPU:$D3EF PRG:53EF 90 09 + bcc Sub_D3FA ; CPU:$D3EF PRG:53EF 90 09 ; ----------------------------------------------------------------------------- ; Routine: Sub_D3F1 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6808,7 +7405,7 @@ Sub_D3F2: lda $0302,x ; CPU:$D3F2 PRG:53F2 BD 02 03 sec ; CPU:$D3F5 PRG:53F5 38 sbc #$28 ; CPU:$D3F6 PRG:53F6 E9 28 - bcc Sub_D3F1 ; CPU:$D3F8 PRG:53F8 90 F7 + bcc Sub_D3F1 ; CPU:$D3F8 PRG:53F8 90 F7 ; ----------------------------------------------------------------------------- ; Routine: Sub_D3FA ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6834,9 +7431,9 @@ Sub_D3FD: clc ; CPU:$D400 PRG:5400 18 adc #$18 ; CPU:$D401 PRG:5401 69 18 sta $0303,x ; CPU:$D403 PRG:5403 9D 03 03 - jsr DispatchSubSecClcAdd ; CPU:$D406 PRG:5406 20 E1 DC + jsr DispatchSubSecClcAdd ; CPU:$D406 PRG:5406 20 E1 DC lda $0306,x ; CPU:$D409 PRG:5409 BD 06 03 - bne Sub_D421 ; CPU:$D40C PRG:540C D0 13 + bne Sub_D421 ; CPU:$D40C PRG:540C D0 13 lda $0302,x ; CPU:$D40E PRG:540E BD 02 03 clc ; CPU:$D411 PRG:5411 18 adc #$28 ; CPU:$D412 PRG:5412 69 28 @@ -6859,7 +7456,7 @@ Sub_D421: txa ; CPU:$D421 PRG:5421 8A pha ; CPU:$D422 PRG:5422 48 lda #$04 ; CPU:$D423 PRG:5423 A9 04 - jsr ObjSpritesInit4 ; CPU:$D425 PRG:5425 20 5B BF + jsr ObjSpritesInit4 ; CPU:$D425 PRG:5425 20 5B BF lda #$48 ; CPU:$D428 PRG:5428 A9 48 sta $0300,x ; CPU:$D42A PRG:542A 9D 00 03 ldy #$70 ; CPU:$D42D PRG:542D A0 70 @@ -6885,7 +7482,7 @@ Sub_D421: Sub_D446: lsr a ; CPU:$D446 PRG:5446 4A sta $0300,y ; CPU:$D447 PRG:5447 99 00 03 - jsr ClearOamInit ; CPU:$D44A PRG:544A 20 D3 B8 + jsr ClearOamInit ; CPU:$D44A PRG:544A 20 D3 B8 ldx #$00 ; CPU:$D44D PRG:544D A2 00 stx Zp61 ; CPU:$D44F PRG:544F 86 61 ; ----------------------------------------------------------------------------- @@ -6899,13 +7496,13 @@ Sub_D446: ; ----------------------------------------------------------------------------- Sub_D451: lda $0300,x ; CPU:$D451 PRG:5451 BD 00 03 - beq Sub_D462 ; CPU:$D454 PRG:5454 F0 0C + beq Sub_D462 ; CPU:$D454 PRG:5454 F0 0C txa ; CPU:$D456 PRG:5456 8A clc ; CPU:$D457 PRG:5457 18 adc #$08 ; CPU:$D458 PRG:5458 69 08 tax ; CPU:$D45A PRG:545A AA cmp #$80 ; CPU:$D45B PRG:545B C9 80 - bne Sub_D451 ; CPU:$D45D PRG:545D D0 F2 + bne Sub_D451 ; CPU:$D45D PRG:545D D0 F2 pla ; CPU:$D45F PRG:545F 68 tax ; CPU:$D460 PRG:5460 AA rts ; CPU:$D461 PRG:5461 60 @@ -6940,7 +7537,7 @@ Sub_D462: clc ; CPU:$D48C PRG:548C 18 adc #$28 ; CPU:$D48D PRG:548D 69 28 sta $0302,x ; CPU:$D48F PRG:548F 9D 02 03 - sta ObjectXHi ; CPU:$D492 PRG:5492 85 38 + sta ObjectXHi ; CPU:$D492 PRG:5492 85 38 lda $0303,x ; CPU:$D494 PRG:5494 BD 03 03 sec ; CPU:$D497 PRG:5497 38 ; ----------------------------------------------------------------------------- @@ -6955,10 +7552,10 @@ Sub_D462: Sub_D498: sbc #$18 ; CPU:$D498 PRG:5498 E9 18 sta $0303,x ; CPU:$D49A PRG:549A 9D 03 03 - sta ObjectXLo ; CPU:$D49D PRG:549D 85 37 - jsr DispatchCheckLdaAdd ; CPU:$D49F PRG:549F 20 A8 D4 - jsr DispatchCheckLdaAdd ; CPU:$D4A2 PRG:54A2 20 A8 D4 - jsr DispatchCheckLdaAdd ; CPU:$D4A5 PRG:54A5 20 A8 D4 + sta ObjectXLo ; CPU:$D49D PRG:549D 85 37 + jsr DispatchCheckLdaAdd ; CPU:$D49F PRG:549F 20 A8 D4 + jsr DispatchCheckLdaAdd ; CPU:$D4A2 PRG:54A2 20 A8 D4 + jsr DispatchCheckLdaAdd ; CPU:$D4A5 PRG:54A5 20 A8 D4 ; ----------------------------------------------------------------------------- ; Routine: DispatchCheckLdaAdd ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -6970,11 +7567,11 @@ Sub_D498: ; ----------------------------------------------------------------------------- DispatchCheckLdaAdd: lda $0301,x ; CPU:$D4A8 PRG:54A8 BD 01 03 - beq Sub_D4B9 ; CPU:$D4AB PRG:54AB F0 0C - lda ObjectXHi ; CPU:$D4AD PRG:54AD A5 38 + beq Sub_D4B9 ; CPU:$D4AB PRG:54AB F0 0C + lda ObjectXHi ; CPU:$D4AD PRG:54AD A5 38 clc ; CPU:$D4AF PRG:54AF 18 adc $D6C7,y ; CPU:$D4B0 PRG:54B0 79 C7 D6 - bcc Sub_D4C1 ; CPU:$D4B3 PRG:54B3 90 0C + bcc Sub_D4C1 ; CPU:$D4B3 PRG:54B3 90 0C ; ----------------------------------------------------------------------------- ; Routine: Sub_D4B5 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7009,10 +7606,10 @@ Sub_D4B7: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D4B9: - lda ObjectXHi ; CPU:$D4B9 PRG:54B9 A5 38 + lda ObjectXHi ; CPU:$D4B9 PRG:54B9 A5 38 clc ; CPU:$D4BB PRG:54BB 18 adc $D6C7,y ; CPU:$D4BC PRG:54BC 79 C7 D6 - bcc Sub_D4B5 ; CPU:$D4BF PRG:54BF 90 F4 + bcc Sub_D4B5 ; CPU:$D4BF PRG:54BF 90 F4 ; ----------------------------------------------------------------------------- ; Routine: Sub_D4C1 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7025,18 +7622,18 @@ Sub_D4B9: Sub_D4C1: sta Zp46 ; CPU:$D4C1 PRG:54C1 85 46 iny ; CPU:$D4C3 PRG:54C3 C8 - lda ObjectXLo ; CPU:$D4C4 PRG:54C4 A5 37 + lda ObjectXLo ; CPU:$D4C4 PRG:54C4 A5 37 clc ; CPU:$D4C6 PRG:54C6 18 adc $D6C7,y ; CPU:$D4C7 PRG:54C7 79 C7 D6 sta Zp45 ; CPU:$D4CA PRG:54CA 85 45 iny ; CPU:$D4CC PRG:54CC C8 lda $D6C7,y ; CPU:$D4CD PRG:54CD B9 C7 D6 and $0307,x ; CPU:$D4D0 PRG:54D0 3D 07 03 - bne Sub_D4B7 ; CPU:$D4D3 PRG:54D3 D0 E2 + bne Sub_D4B7 ; CPU:$D4D3 PRG:54D3 D0 E2 lda $D6C7,y ; CPU:$D4D5 PRG:54D5 B9 C7 D6 ora $0307,x ; CPU:$D4D8 PRG:54D8 1D 07 03 sta $0307,x ; CPU:$D4DB PRG:54DB 9D 07 03 - jsr DispatchTaxPhaLdxLda ; CPU:$D4DE PRG:54DE 20 94 D5 + jsr DispatchTaxPhaLdxLda ; CPU:$D4DE PRG:54DE 20 94 D5 iny ; CPU:$D4E1 PRG:54E1 C8 rts ; CPU:$D4E2 PRG:54E2 60 ; ----------------------------------------------------------------------------- @@ -7050,11 +7647,11 @@ Sub_D4C1: ; ----------------------------------------------------------------------------- DispatchCheckLdaAdd2: lda $0301,x ; CPU:$D4E3 PRG:54E3 BD 01 03 - beq Sub_D4F5 ; CPU:$D4E6 PRG:54E6 F0 0D + beq Sub_D4F5 ; CPU:$D4E6 PRG:54E6 F0 0D lda $0302,x ; CPU:$D4E8 PRG:54E8 BD 02 03 clc ; CPU:$D4EB PRG:54EB 18 adc $D6C7,y ; CPU:$D4EC PRG:54EC 79 C7 D6 - bcc Sub_D4FE ; CPU:$D4EF PRG:54EF 90 0D + bcc Sub_D4FE ; CPU:$D4EF PRG:54EF 90 0D ; ----------------------------------------------------------------------------- ; Routine: Sub_D4F1 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7092,7 +7689,7 @@ Sub_D4F5: lda $0302,x ; CPU:$D4F5 PRG:54F5 BD 02 03 clc ; CPU:$D4F8 PRG:54F8 18 adc $D6C7,y ; CPU:$D4F9 PRG:54F9 79 C7 D6 - bcc Sub_D4F1 ; CPU:$D4FC PRG:54FC 90 F3 + bcc Sub_D4F1 ; CPU:$D4FC PRG:54FC 90 F3 ; ----------------------------------------------------------------------------- ; Routine: Sub_D4FE ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7112,21 +7709,21 @@ Sub_D4FE: iny ; CPU:$D50A PRG:550A C8 lda $D6C7,y ; CPU:$D50B PRG:550B B9 C7 D6 and $0307,x ; CPU:$D50E PRG:550E 3D 07 03 - bne Sub_D4F3 ; CPU:$D511 PRG:5511 D0 E0 + bne Sub_D4F3 ; CPU:$D511 PRG:5511 D0 E0 lda Zp24 ; CPU:$D513 PRG:5513 A5 24 sec ; CPU:$D515 PRG:5515 38 sbc Zp46 ; CPU:$D516 PRG:5516 E5 46 sec ; CPU:$D518 PRG:5518 38 sbc #$32 ; CPU:$D519 PRG:5519 E9 32 cmp #$15 ; CPU:$D51B PRG:551B C9 15 - bcs Sub_D52F ; CPU:$D51D PRG:551D B0 10 + bcs Sub_D52F ; CPU:$D51D PRG:551D B0 10 lda Zp23 ; CPU:$D51F PRG:551F A5 23 sec ; CPU:$D521 PRG:5521 38 sbc Zp45 ; CPU:$D522 PRG:5522 E5 45 clc ; CPU:$D524 PRG:5524 18 adc #$0E ; CPU:$D525 PRG:5525 69 0E cmp #$15 ; CPU:$D527 PRG:5527 C9 15 - bcs Sub_D52F ; CPU:$D529 PRG:5529 B0 04 + bcs Sub_D52F ; CPU:$D529 PRG:5529 B0 04 lda #$01 ; CPU:$D52B PRG:552B A9 01 sta Zp2E ; CPU:$D52D PRG:552D 85 2E ; ----------------------------------------------------------------------------- @@ -7141,22 +7738,22 @@ Sub_D4FE: Sub_D52F: lda $02A0 ; CPU:$D52F PRG:552F AD A0 02 cmp #$20 ; CPU:$D532 PRG:5532 C9 20 - bne Sub_D561 ; CPU:$D534 PRG:5534 D0 2B + bne Sub_D561 ; CPU:$D534 PRG:5534 D0 2B lda Zp46 ; CPU:$D536 PRG:5536 A5 46 sec ; CPU:$D538 PRG:5538 38 sbc $02A4 ; CPU:$D539 PRG:5539 ED A4 02 clc ; CPU:$D53C PRG:553C 18 adc #$07 ; CPU:$D53D PRG:553D 69 07 cmp #$15 ; CPU:$D53F PRG:553F C9 15 - bcs Sub_D561 ; CPU:$D541 PRG:5541 B0 1E + bcs Sub_D561 ; CPU:$D541 PRG:5541 B0 1E lda Zp45 ; CPU:$D543 PRG:5543 A5 45 sec ; CPU:$D545 PRG:5545 38 sbc $02A3 ; CPU:$D546 PRG:5546 ED A3 02 clc ; CPU:$D549 PRG:5549 18 adc #$07 ; CPU:$D54A PRG:554A 69 07 cmp #$15 ; CPU:$D54C PRG:554C C9 15 - bcs Sub_D561 ; CPU:$D54E PRG:554E B0 11 - jsr DispatchTaxPhaLdxLda ; CPU:$D550 PRG:5550 20 94 D5 + bcs Sub_D561 ; CPU:$D54E PRG:554E B0 11 + jsr DispatchTaxPhaLdxLda ; CPU:$D550 PRG:5550 20 94 D5 lda $D6C7,y ; CPU:$D553 PRG:5553 B9 C7 D6 ora $0307,x ; CPU:$D556 PRG:5556 1D 07 03 sta $0307,x ; CPU:$D559 PRG:5559 9D 07 03 @@ -7171,7 +7768,7 @@ Sub_D52F: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D55E: - jsr ObjSpritesInit4 ; CPU:$D55E PRG:555E 20 5B BF + jsr ObjSpritesInit4 ; CPU:$D55E PRG:555E 20 5B BF ; ----------------------------------------------------------------------------- ; Routine: Sub_D561 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7185,7 +7782,7 @@ Sub_D561: lda $D6C7,y ; CPU:$D561 PRG:5561 B9 C7 D6 iny ; CPU:$D564 PRG:5564 C8 and $0307,x ; CPU:$D565 PRG:5565 3D 07 03 - beq Sub_D56B ; CPU:$D568 PRG:5568 F0 01 + beq Sub_D56B ; CPU:$D568 PRG:5568 F0 01 ; ----------------------------------------------------------------------------- ; Routine: Sub_D56A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7207,21 +7804,21 @@ Sub_D56A: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D56B: - lda GameSubMode ; CPU:$D56B PRG:556B A5 1B + lda GameSubMode ; CPU:$D56B PRG:556B A5 1B clc ; CPU:$D56D PRG:556D 18 adc #$02 ; CPU:$D56E PRG:556E 69 02 and #$03 ; CPU:$D570 PRG:5570 29 03 - bne Sub_D56A ; CPU:$D572 PRG:5572 D0 F6 + bne Sub_D56A ; CPU:$D572 PRG:5572 D0 F6 lda Zp46 ; CPU:$D574 PRG:5574 A5 46 cmp Zp91 ; CPU:$D576 PRG:5576 C5 91 - bcs Sub_D56A ; CPU:$D578 PRG:5578 B0 F0 + bcs Sub_D56A ; CPU:$D578 PRG:5578 B0 F0 lda Zp61 ; CPU:$D57A PRG:557A A5 61 cmp #$FF ; CPU:$D57C PRG:557C C9 FF - beq Sub_D58A ; CPU:$D57E PRG:557E F0 0A - jsr DispatchLdaEorEorAslAslRol ; CPU:$D580 PRG:5580 20 5C F5 + beq Sub_D58A ; CPU:$D57E PRG:557E F0 0A + jsr DispatchLdaEorEorAslAslRol ; CPU:$D580 PRG:5580 20 5C F5 and #$0F ; CPU:$D583 PRG:5583 29 0F - bne Sub_D56A ; CPU:$D585 PRG:5585 D0 E3 - jmp DispatchTyaPhaLdy ; CPU:$D587 PRG:5587 4C D5 CF + bne Sub_D56A ; CPU:$D585 PRG:5585 D0 E3 + jmp DispatchTyaPhaLdy ; CPU:$D587 PRG:5587 4C D5 CF ; ----------------------------------------------------------------------------- ; Routine: Sub_D58A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7232,10 +7829,10 @@ Sub_D56B: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D58A: - jsr DispatchLdaEorEorAslAslRol ; CPU:$D58A PRG:558A 20 5C F5 + jsr DispatchLdaEorEorAslAslRol ; CPU:$D58A PRG:558A 20 5C F5 and #$1F ; CPU:$D58D PRG:558D 29 1F - bne Sub_D56A ; CPU:$D58F PRG:558F D0 D9 - jmp DispatchTyaPhaLdy ; CPU:$D591 PRG:5591 4C D5 CF + bne Sub_D56A ; CPU:$D58F PRG:558F D0 D9 + jmp DispatchTyaPhaLdy ; CPU:$D591 PRG:5591 4C D5 CF ; ----------------------------------------------------------------------------- ; Routine: DispatchTaxPhaLdxLda ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7272,13 +7869,13 @@ Sub_D59A: ; ----------------------------------------------------------------------------- Sub_D59D: lda $0300,x ; CPU:$D59D PRG:559D BD 00 03 - beq Sub_D5AE ; CPU:$D5A0 PRG:55A0 F0 0C + beq Sub_D5AE ; CPU:$D5A0 PRG:55A0 F0 0C txa ; CPU:$D5A2 PRG:55A2 8A clc ; CPU:$D5A3 PRG:55A3 18 adc #$08 ; CPU:$D5A4 PRG:55A4 69 08 tax ; CPU:$D5A6 PRG:55A6 AA cmp #$80 ; CPU:$D5A7 PRG:55A7 C9 80 - bne Sub_D59D ; CPU:$D5A9 PRG:55A9 D0 F2 + bne Sub_D59D ; CPU:$D5A9 PRG:55A9 D0 F2 pla ; CPU:$D5AB PRG:55AB 68 tax ; CPU:$D5AC PRG:55AC AA rts ; CPU:$D5AD PRG:55AD 60 @@ -7331,8 +7928,8 @@ Sub_D5CF: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchLdaBne: - lda ObjectYLo ; CPU:$D5D5 PRG:55D5 A5 35 - bne Sub_D608 ; CPU:$D5D7 PRG:55D7 D0 2F + lda ObjectYLo ; CPU:$D5D5 PRG:55D5 A5 35 + bne Sub_D608 ; CPU:$D5D7 PRG:55D7 D0 2F ; ----------------------------------------------------------------------------- ; Routine: DispatchLdyBeqLdaAdd ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7343,12 +7940,12 @@ DispatchLdaBne: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchLdyBeqLdaAdd: - ldy ObjectDeltaX ; CPU:$D5D9 PRG:55D9 A4 2D - beq Sub_D603 ; CPU:$D5DB PRG:55DB F0 26 + ldy ObjectDeltaX ; CPU:$D5D9 PRG:55D9 A4 2D + beq Sub_D603 ; CPU:$D5DB PRG:55DB F0 26 lda $D617,x ; CPU:$D5DD PRG:55DD BD 17 D6 clc ; CPU:$D5E0 PRG:55E0 18 - adc ObjectXHi ; CPU:$D5E1 PRG:55E1 65 38 - bcs Sub_D603 ; CPU:$D5E3 PRG:55E3 B0 1E + adc ObjectXHi ; CPU:$D5E1 PRG:55E1 65 38 + bcs Sub_D603 ; CPU:$D5E3 PRG:55E3 B0 1E ; ----------------------------------------------------------------------------- ; Routine: DispatchStoreIncStoreInc ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7369,10 +7966,10 @@ DispatchStoreIncStoreInc: iny ; CPU:$D5F6 PRG:55F6 C8 lda $D61A,x ; CPU:$D5F7 PRG:55F7 BD 1A D6 clc ; CPU:$D5FA PRG:55FA 18 - adc ObjectXLo ; CPU:$D5FB PRG:55FB 65 37 + adc ObjectXLo ; CPU:$D5FB PRG:55FB 65 37 sta $0700,y ; CPU:$D5FD PRG:55FD 99 00 07 iny ; CPU:$D600 PRG:5600 C8 - sty ObjectDeltaX ; CPU:$D601 PRG:5601 84 2D + sty ObjectDeltaX ; CPU:$D601 PRG:5601 84 2D ; ----------------------------------------------------------------------------- ; Routine: Sub_D603 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7398,13 +7995,13 @@ Sub_D603: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D608: - ldy ObjectDeltaX ; CPU:$D608 PRG:5608 A4 2D - beq Sub_D603 ; CPU:$D60A PRG:560A F0 F7 + ldy ObjectDeltaX ; CPU:$D608 PRG:5608 A4 2D + beq Sub_D603 ; CPU:$D60A PRG:560A F0 F7 lda $D617,x ; CPU:$D60C PRG:560C BD 17 D6 clc ; CPU:$D60F PRG:560F 18 - adc ObjectXHi ; CPU:$D610 PRG:5610 65 38 - bcc Sub_D603 ; CPU:$D612 PRG:5612 90 EF - jmp DispatchStoreIncStoreInc ; CPU:$D614 PRG:5614 4C E5 D5 + adc ObjectXHi ; CPU:$D610 PRG:5610 65 38 + bcc Sub_D603 ; CPU:$D612 PRG:5612 90 EF + jmp DispatchStoreIncStoreInc ; CPU:$D614 PRG:5614 4C E5 D5 ; ----------------------------------------------------------------------------- ; Routine: Sub_D617 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7426,7 +8023,7 @@ Sub_D617: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D618: - beq Sub_D61B ; CPU:$D618 PRG:5618 F0 01 + beq Sub_D61B ; CPU:$D618 PRG:5618 F0 01 clc ; CPU:$D61A PRG:561A 18 ; ----------------------------------------------------------------------------- ; Routine: Sub_D61B @@ -7439,10 +8036,10 @@ Sub_D618: ; ----------------------------------------------------------------------------- Sub_D61B: plp ; CPU:$D61B PRG:561B 28 - sbc (PPUMASKShadow),y ; CPU:$D61C PRG:561C F1 01 + sbc (PPUMASKShadow),y ; CPU:$D61C PRG:561C F1 01 jsr $F230 ; CPU:$D61E PRG:561E 20 30 F2 - ora (ObjectX,x) ; CPU:$D621 PRG:5621 01 18 - bmi Sub_D618 ; CPU:$D623 PRG:5623 30 F3 + ora (ObjectX,x) ; CPU:$D621 PRG:5621 01 18 + bmi Sub_D618 ; CPU:$D623 PRG:5623 30 F3 ora (Zp20,x) ; CPU:$D625 PRG:5625 01 20 brk ; CPU:$D627 PRG:5627 00 ; ---- data $D628-$D628 (1 bytes) ---- @@ -7457,7 +8054,7 @@ Sub_D61B: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D629: - ora (PPUCTRLShadow,x) ; CPU:$D629 PRG:5629 01 00 + ora (PPUCTRLShadow,x) ; CPU:$D629 PRG:5629 01 00 brk ; CPU:$D62B PRG:562B 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_D62C @@ -7469,10 +8066,10 @@ Sub_D629: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D62C: - sbc PPUMASKShadow,x ; CPU:$D62C PRG:562C F5 01 + sbc PPUMASKShadow,x ; CPU:$D62C PRG:562C F5 01 php ; CPU:$D62E PRG:562E 08 php ; CPU:$D62F PRG:562F 08 - inc PPUMASKShadow,x ; CPU:$D630 PRG:5630 F6 01 + inc PPUMASKShadow,x ; CPU:$D630 PRG:5630 F6 01 brk ; CPU:$D632 PRG:5632 00 ; ---- data $D633-$D63D (11 bytes) ---- .byte $08, $F7, $01, $08, $1B, $EF, $01, $0B, $1B, $EF, $41 ; CPU:$D633 PRG:5633 08 F7 01 08 1B EF 01 0B 1B EF 41 @@ -7487,16 +8084,18 @@ Sub_D62C: ; ----------------------------------------------------------------------------- Sub_D63E: and $EF3D ; CPU:$D63E PRG:563E 2D 3D EF - sta (Joypad2Prev,x) ; CPU:$D641 PRG:5641 81 0B + sta (Joypad2Prev,x) ; CPU:$D641 PRG:5641 81 0B and $C1EF,x ; CPU:$D643 PRG:5643 3D EF C1 and $DA00 ; CPU:$D646 PRG:5646 2D 00 DA - ora (PPUCTRLShadow,x) ; CPU:$D649 PRG:5649 01 00 + ora (PPUCTRLShadow,x) ; CPU:$D649 PRG:5649 01 00 php ; CPU:$D64B PRG:564B 08 cld ; CPU:$D64C PRG:564C D8 ora (ZpF8,x) ; CPU:$D64D PRG:564D 01 F8 - bpl Sub_D629 ; CPU:$D64F PRG:564F 10 D8 + bpl Sub_D629 ; CPU:$D64F PRG:564F 10 D8 ora (ZpF0,x) ; CPU:$D651 PRG:5651 01 F0 brk ; CPU:$D653 PRG:5653 00 +ObjMoveDeltaTable: +; Object movement delta table (read by adc $D6C7,y) ; ---- data $D654-$D6F8 (165 bytes) ---- ; referenced by `adc $D6C7,y` at $D4B0 (operand $D6C7 falls inside this region) ; referenced by `adc $D6C7,y` at $D4BC (operand $D6C7 falls inside this region) @@ -7530,18 +8129,20 @@ Sub_D6F9: sta a:$00A9 ; CPU:$D6FB PRG:56FB 8D A9 00 sta $0300,x ; CPU:$D6FE PRG:56FE 9D 00 03 rts ; CPU:$D701 PRG:5701 60 -; ---- data $D702-$D793 (146 bytes) ---- ; referenced by `cmp $D720,y` at $D24A (operand $D720 falls inside this region) +; ---- data $D702-$D71F (30 bytes) ---- .byte $A5, $2E, $48, $20, $DC, $DC, $68, $85, $2E, $BD, $06, $03, $F0, $10, $A9, $3E ; CPU:$D702 PRG:5702 A5 2E 48 20 DC DC 68 85 2E BD 06 03 F0 10 A9 3E - .byte $9D, $00, $03, $A9, $01, $8D, $12, $06, $A9, $01, $20, $5B, $BF, $60, $60, $20 ; CPU:$D712 PRG:5712 9D 00 03 A9 01 8D 12 06 A9 01 20 5B BF 60 60 20 - .byte $DC, $DC, $BD, $06, $03, $F0, $17, $A9, $3A, $9D, $00, $03, $A9, $00, $9D, $06 ; CPU:$D722 PRG:5722 DC DC BD 06 03 F0 17 A9 3A 9D 00 03 A9 00 9D 06 - .byte $03, $9D, $07, $03, $A9, $01, $8D, $12, $06, $A9, $02, $20, $5B, $BF, $60, $20 ; CPU:$D732 PRG:5732 03 9D 07 03 A9 01 8D 12 06 A9 02 20 5B BF 60 20 - .byte $6A, $D7, $20, $DC, $DC, $BD, $06, $03, $F0, $0A, $A9, $10, $9D, $00, $03, $A9 ; CPU:$D742 PRG:5742 6A D7 20 DC DC BD 06 03 F0 0A A9 10 9D 00 03 A9 - .byte $02, $20, $5B, $BF, $60, $20, $6A, $D7, $FE, $07, $03, $BD, $07, $03, $C9, $30 ; CPU:$D752 PRG:5752 02 20 5B BF 60 20 6A D7 FE 07 03 BD 07 03 C9 30 - .byte $D0, $05, $A9, $3C, $9D, $00, $03, $60, $BD, $07, $03, $4A, $4A, $4A, $29, $06 ; CPU:$D762 PRG:5762 D0 05 A9 3C 9D 00 03 60 BD 07 03 4A 4A 4A 29 06 - .byte $A8, $B9, $C3, $D7, $85, $04, $B9, $C4, $D7, $85, $05, $A0, $00, $B1, $04, $85 ; CPU:$D772 PRG:5772 A8 B9 C3 D7 85 04 B9 C4 D7 85 05 A0 00 B1 04 85 - .byte $0E, $C8, $BD, $02, $03, $85, $38, $BD, $03, $03, $85, $37, $86, $13, $A6, $2D ; CPU:$D782 PRG:5782 0E C8 BD 02 03 85 38 BD 03 03 85 37 86 13 A6 2D - .byte $F0, $2A ; CPU:$D792 PRG:5792 F0 2A + .byte $9D, $00, $03, $A9, $01, $8D, $12, $06, $A9, $01, $20, $5B, $BF, $60 ; CPU:$D712 PRG:5712 9D 00 03 A9 01 8D 12 06 A9 01 20 5B BF 60 + rts ; CPU:$D720 PRG:5720 60 +; ---- data $D721-$D793 (115 bytes) ---- + .byte $20, $DC, $DC, $BD, $06, $03, $F0, $17, $A9, $3A, $9D, $00, $03, $A9, $00, $9D ; CPU:$D721 PRG:5721 20 DC DC BD 06 03 F0 17 A9 3A 9D 00 03 A9 00 9D + .byte $06, $03, $9D, $07, $03, $A9, $01, $8D, $12, $06, $A9, $02, $20, $5B, $BF, $60 ; CPU:$D731 PRG:5731 06 03 9D 07 03 A9 01 8D 12 06 A9 02 20 5B BF 60 + .byte $20, $6A, $D7, $20, $DC, $DC, $BD, $06, $03, $F0, $0A, $A9, $10, $9D, $00, $03 ; CPU:$D741 PRG:5741 20 6A D7 20 DC DC BD 06 03 F0 0A A9 10 9D 00 03 + .byte $A9, $02, $20, $5B, $BF, $60, $20, $6A, $D7, $FE, $07, $03, $BD, $07, $03, $C9 ; CPU:$D751 PRG:5751 A9 02 20 5B BF 60 20 6A D7 FE 07 03 BD 07 03 C9 + .byte $30, $D0, $05, $A9, $3C, $9D, $00, $03, $60, $BD, $07, $03, $4A, $4A, $4A, $29 ; CPU:$D761 PRG:5761 30 D0 05 A9 3C 9D 00 03 60 BD 07 03 4A 4A 4A 29 + .byte $06, $A8, $B9, $C3, $D7, $85, $04, $B9, $C4, $D7, $85, $05, $A0, $00, $B1, $04 ; CPU:$D771 PRG:5771 06 A8 B9 C3 D7 85 04 B9 C4 D7 85 05 A0 00 B1 04 + .byte $85, $0E, $C8, $BD, $02, $03, $85, $38, $BD, $03, $03, $85, $37, $86, $13, $A6 ; CPU:$D781 PRG:5781 85 0E C8 BD 02 03 85 38 BD 03 03 85 37 86 13 A6 + .byte $2D, $F0, $2A ; CPU:$D791 PRG:5791 2D F0 2A ; ----------------------------------------------------------------------------- ; Routine: Sub_D794 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7552,14 +8153,14 @@ Sub_D6F9: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D794: - lda (VramPtrLo),y ; CPU:$D794 PRG:5794 B1 04 + lda (VramPtrLo),y ; CPU:$D794 PRG:5794 B1 04 clc ; CPU:$D796 PRG:5796 18 - adc ObjectXHi ; CPU:$D797 PRG:5797 65 38 - bcs Sub_D7BE ; CPU:$D799 PRG:5799 B0 23 + adc ObjectXHi ; CPU:$D797 PRG:5797 65 38 + bcs Sub_D7BE ; CPU:$D799 PRG:5799 B0 23 sta $0700,x ; CPU:$D79B PRG:579B 9D 00 07 inx ; CPU:$D79E PRG:579E E8 iny ; CPU:$D79F PRG:579F C8 - lda (VramPtrLo),y ; CPU:$D7A0 PRG:57A0 B1 04 + lda (VramPtrLo),y ; CPU:$D7A0 PRG:57A0 B1 04 sta $0700,x ; CPU:$D7A2 PRG:57A2 9D 00 07 inx ; CPU:$D7A5 PRG:57A5 E8 iny ; CPU:$D7A6 PRG:57A6 C8 @@ -7573,19 +8174,19 @@ Sub_D794: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D7A7: - lda (VramPtrLo),y ; CPU:$D7A7 PRG:57A7 B1 04 + lda (VramPtrLo),y ; CPU:$D7A7 PRG:57A7 B1 04 sta $0700,x ; CPU:$D7A9 PRG:57A9 9D 00 07 inx ; CPU:$D7AC PRG:57AC E8 iny ; CPU:$D7AD PRG:57AD C8 - lda (VramPtrLo),y ; CPU:$D7AE PRG:57AE B1 04 + lda (VramPtrLo),y ; CPU:$D7AE PRG:57AE B1 04 clc ; CPU:$D7B0 PRG:57B0 18 - adc ObjectXLo ; CPU:$D7B1 PRG:57B1 65 37 + adc ObjectXLo ; CPU:$D7B1 PRG:57B1 65 37 sta $0700,x ; CPU:$D7B3 PRG:57B3 9D 00 07 iny ; CPU:$D7B6 PRG:57B6 C8 inx ; CPU:$D7B7 PRG:57B7 E8 - beq Sub_D7BE ; CPU:$D7B8 PRG:57B8 F0 04 - dec ObjUpdateFlag ; CPU:$D7BA PRG:57BA C6 0E - bne Sub_D794 ; CPU:$D7BC PRG:57BC D0 D6 + beq Sub_D7BE ; CPU:$D7B8 PRG:57B8 F0 04 + dec ObjUpdateFlag ; CPU:$D7BA PRG:57BA C6 0E + bne Sub_D794 ; CPU:$D7BC PRG:57BC D0 D6 ; ----------------------------------------------------------------------------- ; Routine: Sub_D7BE ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7596,8 +8197,8 @@ Sub_D7A7: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D7BE: - stx ObjectDeltaX ; CPU:$D7BE PRG:57BE 86 2D - ldx ObjPtr ; CPU:$D7C0 PRG:57C0 A6 13 + stx ObjectDeltaX ; CPU:$D7BE PRG:57BE 86 2D + ldx ObjPtr ; CPU:$D7C0 PRG:57C0 A6 13 rts ; CPU:$D7C2 PRG:57C2 60 ; ---- data $D7C3-$D7D9 (23 bytes) ---- .byte $3B, $D8, $45, $D8, $53, $D8, $71, $D8, $CD, $D7, $03, $01, $1C, $02, $00, $00 ; CPU:$D7C3 PRG:57C3 3B D8 45 D8 53 D8 71 D8 CD D7 03 01 1C 02 00 00 @@ -7619,20 +8220,20 @@ DispatchLsrsLsrsAnd: and #$06 ; CPU:$D7E0 PRG:57E0 29 06 tay ; CPU:$D7E2 PRG:57E2 A8 lda $D833,y ; CPU:$D7E3 PRG:57E3 B9 33 D8 - sta VramPtrLo ; CPU:$D7E6 PRG:57E6 85 04 + sta VramPtrLo ; CPU:$D7E6 PRG:57E6 85 04 lda $D834,y ; CPU:$D7E8 PRG:57E8 B9 34 D8 - sta VramCopyCount ; CPU:$D7EB PRG:57EB 85 05 + sta VramCopyCount ; CPU:$D7EB PRG:57EB 85 05 ldy #$00 ; CPU:$D7ED PRG:57ED A0 00 - lda (VramPtrLo),y ; CPU:$D7EF PRG:57EF B1 04 - sta ObjUpdateFlag ; CPU:$D7F1 PRG:57F1 85 0E + lda (VramPtrLo),y ; CPU:$D7EF PRG:57EF B1 04 + sta ObjUpdateFlag ; CPU:$D7F1 PRG:57F1 85 0E iny ; CPU:$D7F3 PRG:57F3 C8 lda $0302,x ; CPU:$D7F4 PRG:57F4 BD 02 03 - sta ObjectXHi ; CPU:$D7F7 PRG:57F7 85 38 + sta ObjectXHi ; CPU:$D7F7 PRG:57F7 85 38 lda $0303,x ; CPU:$D7F9 PRG:57F9 BD 03 03 - sta ObjectXLo ; CPU:$D7FC PRG:57FC 85 37 - stx ObjPtr ; CPU:$D7FE PRG:57FE 86 13 - ldx ObjectDeltaX ; CPU:$D800 PRG:5800 A6 2D - beq Sub_D82E ; CPU:$D802 PRG:5802 F0 2A + sta ObjectXLo ; CPU:$D7FC PRG:57FC 85 37 + stx ObjPtr ; CPU:$D7FE PRG:57FE 86 13 + ldx ObjectDeltaX ; CPU:$D800 PRG:5800 A6 2D + beq Sub_D82E ; CPU:$D802 PRG:5802 F0 2A ; ----------------------------------------------------------------------------- ; Routine: Sub_D804 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7643,22 +8244,22 @@ DispatchLsrsLsrsAnd: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D804: - lda (VramPtrLo),y ; CPU:$D804 PRG:5804 B1 04 + lda (VramPtrLo),y ; CPU:$D804 PRG:5804 B1 04 clc ; CPU:$D806 PRG:5806 18 - adc ObjectXHi ; CPU:$D807 PRG:5807 65 38 - bcs Sub_D82E ; CPU:$D809 PRG:5809 B0 23 + adc ObjectXHi ; CPU:$D807 PRG:5807 65 38 + bcs Sub_D82E ; CPU:$D809 PRG:5809 B0 23 sta $0700,x ; CPU:$D80B PRG:580B 9D 00 07 inx ; CPU:$D80E PRG:580E E8 iny ; CPU:$D80F PRG:580F C8 - lda (VramPtrLo),y ; CPU:$D810 PRG:5810 B1 04 + lda (VramPtrLo),y ; CPU:$D810 PRG:5810 B1 04 sta $0700,x ; CPU:$D812 PRG:5812 9D 00 07 inx ; CPU:$D815 PRG:5815 E8 iny ; CPU:$D816 PRG:5816 C8 - lda (VramPtrLo),y ; CPU:$D817 PRG:5817 B1 04 + lda (VramPtrLo),y ; CPU:$D817 PRG:5817 B1 04 sta $0700,x ; CPU:$D819 PRG:5819 9D 00 07 inx ; CPU:$D81C PRG:581C E8 iny ; CPU:$D81D PRG:581D C8 - lda (VramPtrLo),y ; CPU:$D81E PRG:581E B1 04 + lda (VramPtrLo),y ; CPU:$D81E PRG:581E B1 04 ; ----------------------------------------------------------------------------- ; Routine: Sub_D820 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7670,13 +8271,13 @@ Sub_D804: ; ----------------------------------------------------------------------------- Sub_D820: clc ; CPU:$D820 PRG:5820 18 - adc ObjectXLo ; CPU:$D821 PRG:5821 65 37 + adc ObjectXLo ; CPU:$D821 PRG:5821 65 37 sta $0700,x ; CPU:$D823 PRG:5823 9D 00 07 iny ; CPU:$D826 PRG:5826 C8 inx ; CPU:$D827 PRG:5827 E8 - beq Sub_D82E ; CPU:$D828 PRG:5828 F0 04 - dec ObjUpdateFlag ; CPU:$D82A PRG:582A C6 0E - bne Sub_D804 ; CPU:$D82C PRG:582C D0 D6 + beq Sub_D82E ; CPU:$D828 PRG:5828 F0 04 + dec ObjUpdateFlag ; CPU:$D82A PRG:582A C6 0E + bne Sub_D804 ; CPU:$D82C PRG:582C D0 D6 ; ----------------------------------------------------------------------------- ; Routine: Sub_D82E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7687,33 +8288,31 @@ Sub_D820: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D82E: - stx ObjectDeltaX ; CPU:$D82E PRG:582E 86 2D - ldx ObjPtr ; CPU:$D830 PRG:5830 A6 13 + stx ObjectDeltaX ; CPU:$D82E PRG:582E 86 2D + ldx ObjPtr ; CPU:$D830 PRG:5830 A6 13 rts ; CPU:$D832 PRG:5832 60 -; ----------------------------------------------------------------------------- -; Routine: Sub_D833 -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -Sub_D833: - rti ; CPU:$D833 PRG:5833 40 -; ---- data $D834-$D8DF (172 bytes) ---- +; ---- data $D833-$D83A (8 bytes) ---- +; referenced by `lda $D833,y` at $D7E3 (operand $D833 falls inside this region) ; referenced by `lda $D834,y` at $D7E8 (operand $D834 falls inside this region) - .byte $D8, $4A, $D8, $64, $D8, $82, $D8, $01, $04, $41, $01, $04, $01, $08, $43, $00 ; CPU:$D834 PRG:5834 D8 4A D8 64 D8 82 D8 01 04 41 01 04 01 08 43 00 - .byte $08, $01, $04, $45, $01, $04, $02, $07, $47, $00, $07, $0D, $43, $00, $0D, $04 ; CPU:$D844 PRG:5844 08 01 04 45 01 04 02 07 47 00 07 0D 43 00 0D 04 - .byte $00, $49, $01, $00, $00, $4B, $C1, $08, $08, $4B, $01, $00, $08, $4B, $41, $08 ; CPU:$D854 PRG:5854 00 49 01 00 00 4B C1 08 08 4B 01 00 08 4B 41 08 - .byte $03, $08, $6E, $00, $08, $0A, $47, $00, $0A, $10, $43, $00, $10, $04, $00, $4D ; CPU:$D864 PRG:5864 03 08 6E 00 08 0A 47 00 0A 10 43 00 10 04 00 4D - .byte $01, $00, $00, $4F, $C1, $08, $08, $4F, $01, $00, $08, $4F, $41, $08, $05, $0E ; CPU:$D874 PRG:5874 01 00 00 4F C1 08 08 4F 01 00 08 4F 41 08 05 0E - .byte $B2, $00, $05, $05, $B3, $00, $0E, $0D, $6E, $00, $0D, $0F, $47, $00, $0F, $15 ; CPU:$D884 PRG:5884 B2 00 05 05 B3 00 0E 0D 6E 00 0D 0F 47 00 0F 15 - .byte $43, $00, $15, $BD, $00, $03, $48, $20, $04, $DA, $BD, $00, $03, $C9, $02, $D0 ; CPU:$D894 PRG:5894 43 00 15 BD 00 03 48 20 04 DA BD 00 03 C9 02 D0 - .byte $08, $68, $38, $E9, $16, $9D, $00, $03, $48, $68, $BD, $00, $03, $38, $E9, $40 ; CPU:$D8A4 PRG:58A4 08 68 38 E9 16 9D 00 03 48 68 BD 00 03 38 E9 40 - .byte $B0, $03, $18, $69, $16, $A8, $B9, $A7, $D9, $48, $18, $7D, $02, $03, $9D, $02 ; CPU:$D8B4 PRG:58B4 B0 03 18 69 16 A8 B9 A7 D9 48 18 7D 02 03 9D 02 - .byte $03, $B9, $A8, $D9, $48, $18, $7D, $03, $03, $9D, $03, $03, $20, $DC, $DC, $68 ; CPU:$D8C4 PRG:58C4 03 B9 A8 D9 48 18 7D 03 03 9D 03 03 20 DC DC 68 - .byte $49, $FF, $38, $7D, $03, $03, $9D, $03, $03, $68, $49, $FF ; CPU:$D8D4 PRG:58D4 49 FF 38 7D 03 03 9D 03 03 68 49 FF +; 4 x 16-bit pointers to layout records below (read by lda $D833,y / lda $D834,y +; at $D7E3/$D7E8; the index is masked with #$06). +ObjDataPtrTable: + .byte $40, $D8, $4A, $D8, $64, $D8, $82, $D8 ; CPU:$D833 PRG:5833 40 D8 4A D8 64 D8 82 D8 +; ---- data $D83B-$D8DF (165 bytes) ---- +; Object layout records addressed by the table at $D833 (4-byte entries; targets +; $D840, $D84A, $D864 and $D882). +ObjLayoutData: + .byte $01, $04, $41, $01, $04, $01, $08, $43, $00, $08, $01, $04, $45, $01, $04, $02 ; CPU:$D83B PRG:583B 01 04 41 01 04 01 08 43 00 08 01 04 45 01 04 02 + .byte $07, $47, $00, $07, $0D, $43, $00, $0D, $04, $00, $49, $01, $00, $00, $4B, $C1 ; CPU:$D84B PRG:584B 07 47 00 07 0D 43 00 0D 04 00 49 01 00 00 4B C1 + .byte $08, $08, $4B, $01, $00, $08, $4B, $41, $08, $03, $08, $6E, $00, $08, $0A, $47 ; CPU:$D85B PRG:585B 08 08 4B 01 00 08 4B 41 08 03 08 6E 00 08 0A 47 + .byte $00, $0A, $10, $43, $00, $10, $04, $00, $4D, $01, $00, $00, $4F, $C1, $08, $08 ; CPU:$D86B PRG:586B 00 0A 10 43 00 10 04 00 4D 01 00 00 4F C1 08 08 + .byte $4F, $01, $00, $08, $4F, $41, $08, $05, $0E, $B2, $00, $05, $05, $B3, $00, $0E ; CPU:$D87B PRG:587B 4F 01 00 08 4F 41 08 05 0E B2 00 05 05 B3 00 0E + .byte $0D, $6E, $00, $0D, $0F, $47, $00, $0F, $15, $43, $00, $15, $BD, $00, $03, $48 ; CPU:$D88B PRG:588B 0D 6E 00 0D 0F 47 00 0F 15 43 00 15 BD 00 03 48 + .byte $20, $04, $DA, $BD, $00, $03, $C9, $02, $D0, $08, $68, $38, $E9, $16, $9D, $00 ; CPU:$D89B PRG:589B 20 04 DA BD 00 03 C9 02 D0 08 68 38 E9 16 9D 00 + .byte $03, $48, $68, $BD, $00, $03, $38, $E9, $40, $B0, $03, $18, $69, $16, $A8, $B9 ; CPU:$D8AB PRG:58AB 03 48 68 BD 00 03 38 E9 40 B0 03 18 69 16 A8 B9 + .byte $A7, $D9, $48, $18, $7D, $02, $03, $9D, $02, $03, $B9, $A8, $D9, $48, $18, $7D ; CPU:$D8BB PRG:58BB A7 D9 48 18 7D 02 03 9D 02 03 B9 A8 D9 48 18 7D + .byte $03, $03, $9D, $03, $03, $20, $DC, $DC, $68, $49, $FF, $38, $7D, $03, $03, $9D ; CPU:$D8CB PRG:58CB 03 03 9D 03 03 20 DC DC 68 49 FF 38 7D 03 03 9D + .byte $03, $03, $68, $49, $FF ; CPU:$D8DB PRG:58DB 03 03 68 49 FF ; ----------------------------------------------------------------------------- ; Routine: Sub_D8E0 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7728,7 +8327,7 @@ Sub_D8E0: adc $0302,x ; CPU:$D8E1 PRG:58E1 7D 02 03 sta $0302,x ; CPU:$D8E4 PRG:58E4 9D 02 03 lda $0306,x ; CPU:$D8E7 PRG:58E7 BD 06 03 - beq Sub_D8F2 ; CPU:$D8EA PRG:58EA F0 06 + beq Sub_D8F2 ; CPU:$D8EA PRG:58EA F0 06 lda #$10 ; CPU:$D8EC PRG:58EC A9 10 sta $0300,x ; CPU:$D8EE PRG:58EE 9D 00 03 rts ; CPU:$D8F1 PRG:58F1 60 @@ -7742,11 +8341,11 @@ Sub_D8E0: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D8F2: - jsr DispatchLdaBne2 ; CPU:$D8F2 PRG:58F2 20 DC DC + jsr DispatchLdaBne2 ; CPU:$D8F2 PRG:58F2 20 DC DC lda $0306,x ; CPU:$D8F5 PRG:58F5 BD 06 03 - beq Sub_D8FF ; CPU:$D8F8 PRG:58F8 F0 05 + beq Sub_D8FF ; CPU:$D8F8 PRG:58F8 F0 05 inc Zp58 ; CPU:$D8FA PRG:58FA E6 58 - jmp DispatchStoreStoreLdaJsrRts ; CPU:$D8FC PRG:58FC 4C EC D9 + jmp DispatchStoreStoreLdaJsrRts; CPU:$D8FC PRG:58FC 4C EC D9 ; ----------------------------------------------------------------------------- ; Routine: Sub_D8FF ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7759,7 +8358,7 @@ Sub_D8F2: Sub_D8FF: lda $0302,x ; CPU:$D8FF PRG:58FF BD 02 03 cmp Zp91 ; CPU:$D902 PRG:5902 C5 91 - bcs Sub_D92B ; CPU:$D904 PRG:5904 B0 25 + bcs Sub_D92B ; CPU:$D904 PRG:5904 B0 25 lda $0307,x ; CPU:$D906 PRG:5906 BD 07 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_D909 @@ -7771,8 +8370,8 @@ Sub_D8FF: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_D909: - bne Sub_D916 ; CPU:$D909 PRG:5909 D0 0B - jsr DispatchLdaEorEorAslAslRol ; CPU:$D90B PRG:590B 20 5C F5 + bne Sub_D916 ; CPU:$D909 PRG:5909 D0 0B + jsr DispatchLdaEorEorAslAslRol ; CPU:$D90B PRG:590B 20 5C F5 and Zp94 ; CPU:$D90E PRG:590E 25 94 clc ; CPU:$D910 PRG:5910 18 adc #$40 ; CPU:$D911 PRG:5911 69 40 @@ -7789,9 +8388,9 @@ Sub_D909: Sub_D916: lda $0300,x ; CPU:$D916 PRG:5916 BD 00 03 cmp #$40 ; CPU:$D919 PRG:5919 C9 40 - bcs Sub_D92B ; CPU:$D91B PRG:591B B0 0E + bcs Sub_D92B ; CPU:$D91B PRG:591B B0 0E dec $0307,x ; CPU:$D91D PRG:591D DE 07 03 - bne Sub_D92B ; CPU:$D920 PRG:5920 D0 09 + bne Sub_D92B ; CPU:$D920 PRG:5920 D0 09 lda $0300,x ; CPU:$D922 PRG:5922 BD 00 03 clc ; CPU:$D925 PRG:5925 18 adc #$16 ; CPU:$D926 PRG:5926 69 16 @@ -7826,10 +8425,10 @@ Sub_D92B: Sub_D987: lda $0302,x ; CPU:$D987 PRG:5987 BD 02 03 cmp Zp91 ; CPU:$D98A PRG:598A C5 91 - bcs Sub_D9A6 ; CPU:$D98C PRG:598C B0 18 + bcs Sub_D9A6 ; CPU:$D98C PRG:598C B0 18 lda $0307,x ; CPU:$D98E PRG:598E BD 07 03 - bne Sub_D99E ; CPU:$D991 PRG:5991 D0 0B - jsr DispatchLdaEorEorAslAslRol ; CPU:$D993 PRG:5993 20 5C F5 + bne Sub_D99E ; CPU:$D991 PRG:5991 D0 0B + jsr DispatchLdaEorEorAslAslRol ; CPU:$D993 PRG:5993 20 5C F5 and Zp92 ; CPU:$D996 PRG:5996 25 92 clc ; CPU:$D998 PRG:5998 18 adc #$40 ; CPU:$D999 PRG:5999 69 40 @@ -7845,8 +8444,8 @@ Sub_D987: ; ----------------------------------------------------------------------------- Sub_D99E: dec $0307,x ; CPU:$D99E PRG:599E DE 07 03 - bne Sub_D9A6 ; CPU:$D9A1 PRG:59A1 D0 03 - jsr DispatchJsrStoreLdaClc3 ; CPU:$D9A3 PRG:59A3 20 9B CF + bne Sub_D9A6 ; CPU:$D9A1 PRG:59A1 D0 03 + jsr DispatchJsrStoreLdaClc3 ; CPU:$D9A3 PRG:59A3 20 9B CF ; ----------------------------------------------------------------------------- ; Routine: Sub_D9A6 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7858,12 +8457,46 @@ Sub_D99E: ; ----------------------------------------------------------------------------- Sub_D9A6: rts ; CPU:$D9A6 PRG:59A6 60 -; ---- data $D9A7-$D9EB (69 bytes) ---- +; ---- data $D9A7-$D9C2 (28 bytes) ---- .byte $F0, $00, $00, $10, $00, $F0, $10, $00, $04, $3E, $01, $04, $10, $3C, $00, $06 ; CPU:$D9A7 PRG:59A7 F0 00 00 10 00 F0 10 00 04 3E 01 04 10 3C 00 06 - .byte $06, $3D, $40, $F8, $06, $3D, $00, $10, $F8, $3C, $80, $06, $20, $DC, $DC, $BD ; CPU:$D9B7 PRG:59B7 06 3D 40 F8 06 3D 00 10 F8 3C 80 06 20 DC DC BD - .byte $01, $03, $D0, $1C, $BD, $02, $03, $C5, $91, $B0, $15, $BD, $07, $03, $D0, $0B ; CPU:$D9C7 PRG:59C7 01 03 D0 1C BD 02 03 C5 91 B0 15 BD 07 03 D0 0B - .byte $20, $5C, $F5, $25, $94, $18, $69, $60, $9D, $07, $03, $DE, $07, $03, $F0, $10 ; CPU:$D9D7 PRG:59D7 20 5C F5 25 94 18 69 60 9D 07 03 DE 07 03 F0 10 - .byte $BD, $06, $03, $F0, $0A ; CPU:$D9E7 PRG:59E7 BD 06 03 F0 0A + .byte $06, $3D, $40, $F8, $06, $3D, $00, $10, $F8, $3C, $80, $06 ; CPU:$D9B7 PRG:59B7 06 3D 40 F8 06 3D 00 10 F8 3C 80 06 + jsr DispatchLdaBne2 ; CPU:$D9C3 PRG:59C3 20 DC DC + lda $0301,x ; CPU:$D9C6 PRG:59C6 BD 01 03 + bne Sub_D9E7 ; CPU:$D9C9 PRG:59C9 D0 1C + lda $0302,x ; CPU:$D9CB PRG:59CB BD 02 03 + cmp Zp91 ; CPU:$D9CE PRG:59CE C5 91 + bcs Sub_D9E7 ; CPU:$D9D0 PRG:59D0 B0 15 + lda $0307,x ; CPU:$D9D2 PRG:59D2 BD 07 03 + bne Sub_D9E2 ; CPU:$D9D5 PRG:59D5 D0 0B + jsr DispatchLdaEorEorAslAslRol ; CPU:$D9D7 PRG:59D7 20 5C F5 + and Zp94 ; CPU:$D9DA PRG:59DA 25 94 + clc ; CPU:$D9DC PRG:59DC 18 + adc #$60 ; CPU:$D9DD PRG:59DD 69 60 + sta $0307,x ; CPU:$D9DF PRG:59DF 9D 07 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_D9E2 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D9E2: + dec $0307,x ; CPU:$D9E2 PRG:59E2 DE 07 03 + beq Sub_D9F7 ; CPU:$D9E5 PRG:59E5 F0 10 +; ----------------------------------------------------------------------------- +; Routine: Sub_D9E7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D9E7: + lda $0306,x ; CPU:$D9E7 PRG:59E7 BD 06 03 + beq Sub_D9F6 ; CPU:$D9EA PRG:59EA F0 0A ; ----------------------------------------------------------------------------- ; Routine: DispatchStoreStoreLdaJsrRts ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7877,14 +8510,46 @@ DispatchStoreStoreLdaJsrRts: lda #$10 ; CPU:$D9EC PRG:59EC A9 10 sta $0300,x ; CPU:$D9EE PRG:59EE 9D 00 03 lda #$03 ; CPU:$D9F1 PRG:59F1 A9 03 - jsr ObjSpritesInit5 ; CPU:$D9F3 PRG:59F3 20 54 BF + jsr ObjSpritesInit5 ; CPU:$D9F3 PRG:59F3 20 54 BF +Sub_D9F6: rts ; CPU:$D9F6 PRG:59F6 60 -; ---- data $D9F7-$DA2C (54 bytes) ---- ; referenced by `and $DA00` at $D646 (operand $DA00 falls inside this region) - .byte $A9, $34, $9D, $00, $03, $20, $DC, $DC, $BD, $06, $03, $D0, $E8, $BD, $07, $03 ; CPU:$D9F7 PRG:59F7 A9 34 9D 00 03 20 DC DC BD 06 03 D0 E8 BD 07 03 - .byte $FE, $07, $03, $4A, $4A, $4A, $C9, $02, $F0, $2D, $C9, $06, $F0, $58, $A8, $B9 ; CPU:$DA07 PRG:5A07 FE 07 03 4A 4A 4A C9 02 F0 2D C9 06 F0 58 A8 B9 - .byte $73, $DA, $A4, $2D, $F0, $20, $99, $01, $07, $BD, $02, $03, $18, $69, $04, $99 ; CPU:$DA17 PRG:5A17 73 DA A4 2D F0 20 99 01 07 BD 02 03 18 69 04 99 - .byte $00, $07, $C8, $C8, $A9, $00 ; CPU:$DA27 PRG:5A27 00 07 C8 C8 A9 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_D9F7 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_D9F7: + lda #$34 ; CPU:$D9F7 PRG:59F7 A9 34 + sta $0300,x ; CPU:$D9F9 PRG:59F9 9D 00 03 + jsr DispatchLdaBne2 ; CPU:$D9FC PRG:59FC 20 DC DC + lda $0306,x ; CPU:$D9FF PRG:59FF BD 06 03 + bne DispatchStoreStoreLdaJsrRts; CPU:$DA02 PRG:5A02 D0 E8 + lda $0307,x ; CPU:$DA04 PRG:5A04 BD 07 03 + inc $0307,x ; CPU:$DA07 PRG:5A07 FE 07 03 + lsr a ; CPU:$DA0A PRG:5A0A 4A + lsr a ; CPU:$DA0B PRG:5A0B 4A + lsr a ; CPU:$DA0C PRG:5A0C 4A + cmp #$02 ; CPU:$DA0D PRG:5A0D C9 02 + beq Sub_DA3E ; CPU:$DA0F PRG:5A0F F0 2D + cmp #$06 ; CPU:$DA11 PRG:5A11 C9 06 + beq Sub_DA6D ; CPU:$DA13 PRG:5A13 F0 58 + tay ; CPU:$DA15 PRG:5A15 A8 + lda $DA73,y ; CPU:$DA16 PRG:5A16 B9 73 DA + ldy ObjectDeltaX ; CPU:$DA19 PRG:5A19 A4 2D + beq Sub_DA3D ; CPU:$DA1B PRG:5A1B F0 20 + sta $0701,y ; CPU:$DA1D PRG:5A1D 99 01 07 + lda $0302,x ; CPU:$DA20 PRG:5A20 BD 02 03 + clc ; CPU:$DA23 PRG:5A23 18 + adc #$04 ; CPU:$DA24 PRG:5A24 69 04 + sta $0700,y ; CPU:$DA26 PRG:5A26 99 00 07 + iny ; CPU:$DA29 PRG:5A29 C8 + iny ; CPU:$DA2A PRG:5A2A C8 + lda #$00 ; CPU:$DA2B PRG:5A2B A9 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_DA2D ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7902,11 +8567,33 @@ Sub_DA2D: adc #$04 ; CPU:$DA35 PRG:5A35 69 04 sta $0700,y ; CPU:$DA37 PRG:5A37 99 00 07 iny ; CPU:$DA3A PRG:5A3A C8 - sty ObjectDeltaX ; CPU:$DA3B PRG:5A3B 84 2D + sty ObjectDeltaX ; CPU:$DA3B PRG:5A3B 84 2D +Sub_DA3D: rts ; CPU:$DA3D PRG:5A3D 60 -; ---- data $DA3E-$DA5B (30 bytes) ---- - .byte $A9, $20, $9D, $07, $03, $20, $9B, $CF, $A4, $2D, $F0, $F3, $BD, $02, $03, $18 ; CPU:$DA3E PRG:5A3E A9 20 9D 07 03 20 9B CF A4 2D F0 F3 BD 02 03 18 - .byte $69, $04, $99, $00, $07, $C8, $A9, $3B, $99, $00, $07, $C8, $A9, $00 ; CPU:$DA4E PRG:5A4E 69 04 99 00 07 C8 A9 3B 99 00 07 C8 A9 00 +; ----------------------------------------------------------------------------- +; Routine: Sub_DA3E +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_DA3E: + lda #$20 ; CPU:$DA3E PRG:5A3E A9 20 + sta $0307,x ; CPU:$DA40 PRG:5A40 9D 07 03 + jsr DispatchJsrStoreLdaClc3 ; CPU:$DA43 PRG:5A43 20 9B CF + ldy ObjectDeltaX ; CPU:$DA46 PRG:5A46 A4 2D + beq Sub_DA3D ; CPU:$DA48 PRG:5A48 F0 F3 + lda $0302,x ; CPU:$DA4A PRG:5A4A BD 02 03 + clc ; CPU:$DA4D PRG:5A4D 18 + adc #$04 ; CPU:$DA4E PRG:5A4E 69 04 + sta $0700,y ; CPU:$DA50 PRG:5A50 99 00 07 + iny ; CPU:$DA53 PRG:5A53 C8 + lda #$3B ; CPU:$DA54 PRG:5A54 A9 3B + sta $0700,y ; CPU:$DA56 PRG:5A56 99 00 07 + iny ; CPU:$DA59 PRG:5A59 C8 + lda #$00 ; CPU:$DA5A PRG:5A5A A9 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_DA5C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7924,12 +8611,24 @@ Sub_DA5C: adc #$04 ; CPU:$DA64 PRG:5A64 69 04 sta $0700,y ; CPU:$DA66 PRG:5A66 99 00 07 iny ; CPU:$DA69 PRG:5A69 C8 - sty ObjectDeltaX ; CPU:$DA6A PRG:5A6A 84 2D + sty ObjectDeltaX ; CPU:$DA6A PRG:5A6A 84 2D rts ; CPU:$DA6C PRG:5A6C 60 -; ---- data $DA6D-$DA90 (36 bytes) ---- - .byte $A9, $02, $9D, $00, $03, $60, $D2, $3F, $3F, $3F, $3F, $D2, $24, $A9, $8D, $20 ; CPU:$DA6D PRG:5A6D A9 02 9D 00 03 60 D2 3F 3F 3F 3F D2 24 A9 8D 20 - .byte $78, $DC, $20, $DC, $DC, $BD, $06, $03, $F0, $0A, $A9, $10, $9D, $00, $03, $A9 ; CPU:$DA7D PRG:5A7D 78 DC 20 DC DC BD 06 03 F0 0A A9 10 9D 00 03 A9 - .byte $01, $4C, $5B, $BF ; CPU:$DA8D PRG:5A8D 01 4C 5B BF +; ----------------------------------------------------------------------------- +; Routine: Sub_DA6D +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_DA6D: + lda #$02 ; CPU:$DA6D PRG:5A6D A9 02 + sta $0300,x ; CPU:$DA6F PRG:5A6F 9D 00 03 + rts ; CPU:$DA72 PRG:5A72 60 +; ---- data $DA73-$DA90 (30 bytes) ---- + .byte $D2, $3F, $3F, $3F, $3F, $D2, $24, $A9, $8D, $20, $78, $DC, $20, $DC, $DC, $BD ; CPU:$DA73 PRG:5A73 D2 3F 3F 3F 3F D2 24 A9 8D 20 78 DC 20 DC DC BD + .byte $06, $03, $F0, $0A, $A9, $10, $9D, $00, $03, $A9, $01, $4C, $5B, $BF ; CPU:$DA83 PRG:5A83 06 03 F0 0A A9 10 9D 00 03 A9 01 4C 5B BF ; ----------------------------------------------------------------------------- ; Routine: Sub_DA91 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7942,10 +8641,10 @@ Sub_DA5C: Sub_DA91: lda $0302,x ; CPU:$DA91 PRG:5A91 BD 02 03 cmp Zp91 ; CPU:$DA94 PRG:5A94 C5 91 - bcs Sub_DAB0 ; CPU:$DA96 PRG:5A96 B0 18 + bcs Sub_DAB0 ; CPU:$DA96 PRG:5A96 B0 18 lda $0307,x ; CPU:$DA98 PRG:5A98 BD 07 03 - bne Sub_DAA8 ; CPU:$DA9B PRG:5A9B D0 0B - jsr DispatchLdaEorEorAslAslRol ; CPU:$DA9D PRG:5A9D 20 5C F5 + bne Sub_DAA8 ; CPU:$DA9B PRG:5A9B D0 0B + jsr DispatchLdaEorEorAslAslRol ; CPU:$DA9D PRG:5A9D 20 5C F5 and Zp92 ; CPU:$DAA0 PRG:5AA0 25 92 clc ; CPU:$DAA2 PRG:5AA2 18 adc #$18 ; CPU:$DAA3 PRG:5AA3 69 18 @@ -7961,8 +8660,8 @@ Sub_DA91: ; ----------------------------------------------------------------------------- Sub_DAA8: dec $0307,x ; CPU:$DAA8 PRG:5AA8 DE 07 03 - bne Sub_DAB0 ; CPU:$DAAB PRG:5AAB D0 03 - jsr DispatchJsrStoreLdaClc3 ; CPU:$DAAD PRG:5AAD 20 9B CF + bne Sub_DAB0 ; CPU:$DAAB PRG:5AAB D0 03 + jsr DispatchJsrStoreLdaClc3 ; CPU:$DAAD PRG:5AAD 20 9B CF ; ----------------------------------------------------------------------------- ; Routine: Sub_DAB0 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7974,14 +8673,39 @@ Sub_DAA8: ; ----------------------------------------------------------------------------- Sub_DAB0: rts ; CPU:$DAB0 PRG:5AB0 60 -; ---- data $DAB1-$DB19 (105 bytes) ---- - .byte $20, $DC, $DC, $BD, $06, $03, $F0, $F7, $A9, $10, $9D, $00, $03, $A9, $01, $4C ; CPU:$DAB1 PRG:5AB1 20 DC DC BD 06 03 F0 F7 A9 10 9D 00 03 A9 01 4C - .byte $54, $BF, $A9, $8E, $20, $78, $DC, $20, $DC, $DC, $BD, $06, $03, $F0, $0D, $A9 ; CPU:$DAC1 PRG:5AC1 54 BF A9 8E 20 78 DC 20 DC DC BD 06 03 F0 0D A9 - .byte $10, $9D, $00, $03, $20, $22, $C0, $A9, $02, $20, $54, $BF, $60, $20, $DC, $DC ; CPU:$DAD1 PRG:5AD1 10 9D 00 03 20 22 C0 A9 02 20 54 BF 60 20 DC DC - .byte $BD, $06, $03, $F0, $0F, $A9, $12, $9D, $00, $03, $A9, $26, $9D, $07, $03, $A9 ; CPU:$DAE1 PRG:5AE1 BD 06 03 F0 0F A9 12 9D 00 03 A9 26 9D 07 03 A9 - .byte $03, $20, $54, $BF, $60, $A9, $8C, $20, $78, $DC, $20, $DC, $DC, $BD, $06, $03 ; CPU:$DAF1 PRG:5AF1 03 20 54 BF 60 A9 8C 20 78 DC 20 DC DC BD 06 03 - .byte $F0, $10, $A9, $14, $9D, $00, $03, $A9, $A8, $9D, $07, $03, $A9, $02, $20, $5B ; CPU:$DB01 PRG:5B01 F0 10 A9 14 9D 00 03 A9 A8 9D 07 03 A9 02 20 5B - .byte $BF, $60, $BD, $02, $03, $C5, $91, $B0, $23 ; CPU:$DB11 PRG:5B11 BF 60 BD 02 03 C5 91 B0 23 + jsr DispatchLdaBne2 ; CPU:$DAB1 PRG:5AB1 20 DC DC + lda $0306,x ; CPU:$DAB4 PRG:5AB4 BD 06 03 + beq Sub_DAB0 ; CPU:$DAB7 PRG:5AB7 F0 F7 + lda #$10 ; CPU:$DAB9 PRG:5AB9 A9 10 + sta $0300,x ; CPU:$DABB PRG:5ABB 9D 00 03 + lda #$01 ; CPU:$DABE PRG:5ABE A9 01 + jmp ObjSpritesInit5 ; CPU:$DAC0 PRG:5AC0 4C 54 BF + lda #$8E ; CPU:$DAC3 PRG:5AC3 A9 8E + jsr Sub_DC78 ; CPU:$DAC5 PRG:5AC5 20 78 DC + jsr DispatchLdaBne2 ; CPU:$DAC8 PRG:5AC8 20 DC DC + lda $0306,x ; CPU:$DACB PRG:5ACB BD 06 03 + beq Sub_DADD ; CPU:$DACE PRG:5ACE F0 0D + lda #$10 ; CPU:$DAD0 PRG:5AD0 A9 10 + sta $0300,x ; CPU:$DAD2 PRG:5AD2 9D 00 03 + jsr Sub_C022 ; CPU:$DAD5 PRG:5AD5 20 22 C0 + lda #$02 ; CPU:$DAD8 PRG:5AD8 A9 02 + jsr ObjSpritesInit5 ; CPU:$DADA PRG:5ADA 20 54 BF +; ----------------------------------------------------------------------------- +; Routine: Sub_DADD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_DADD: + rts ; CPU:$DADD PRG:5ADD 60 +; ---- data $DADE-$DB19 (60 bytes) ---- + .byte $20, $DC, $DC, $BD, $06, $03, $F0, $0F, $A9, $12, $9D, $00, $03, $A9, $26, $9D ; CPU:$DADE PRG:5ADE 20 DC DC BD 06 03 F0 0F A9 12 9D 00 03 A9 26 9D + .byte $07, $03, $A9, $03, $20, $54, $BF, $60, $A9, $8C, $20, $78, $DC, $20, $DC, $DC ; CPU:$DAEE PRG:5AEE 07 03 A9 03 20 54 BF 60 A9 8C 20 78 DC 20 DC DC + .byte $BD, $06, $03, $F0, $10, $A9, $14, $9D, $00, $03, $A9, $A8, $9D, $07, $03, $A9 ; CPU:$DAFE PRG:5AFE BD 06 03 F0 10 A9 14 9D 00 03 A9 A8 9D 07 03 A9 + .byte $02, $20, $5B, $BF, $60, $BD, $02, $03, $C5, $91, $B0, $23 ; CPU:$DB0E PRG:5B0E 02 20 5B BF 60 BD 02 03 C5 91 B0 23 ; ----------------------------------------------------------------------------- ; Routine: Sub_DB1A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -7993,8 +8717,8 @@ Sub_DAB0: ; ----------------------------------------------------------------------------- Sub_DB1A: lda $0307,x ; CPU:$DB1A PRG:5B1A BD 07 03 - bne Sub_DB2A ; CPU:$DB1D PRG:5B1D D0 0B - jsr DispatchLdaEorEorAslAslRol ; CPU:$DB1F PRG:5B1F 20 5C F5 + bne Sub_DB2A ; CPU:$DB1D PRG:5B1D D0 0B + jsr DispatchLdaEorEorAslAslRol ; CPU:$DB1F PRG:5B1F 20 5C F5 and Zp92 ; CPU:$DB22 PRG:5B22 25 92 clc ; CPU:$DB24 PRG:5B24 18 adc #$10 ; CPU:$DB25 PRG:5B25 69 10 @@ -8010,9 +8734,9 @@ Sub_DB1A: ; ----------------------------------------------------------------------------- Sub_DB2A: dec $0307,x ; CPU:$DB2A PRG:5B2A DE 07 03 - bne Sub_DB3D ; CPU:$DB2D PRG:5B2D D0 0E - jsr DispatchJsrStoreLdaClc3 ; CPU:$DB2F PRG:5B2F 20 9B CF - jsr DispatchLdaEorEorAslAslRol ; CPU:$DB32 PRG:5B32 20 5C F5 + bne Sub_DB3D ; CPU:$DB2D PRG:5B2D D0 0E + jsr DispatchJsrStoreLdaClc3 ; CPU:$DB2F PRG:5B2F 20 9B CF + jsr DispatchLdaEorEorAslAslRol ; CPU:$DB32 PRG:5B32 20 5C F5 and Zp92 ; CPU:$DB35 PRG:5B35 25 92 clc ; CPU:$DB37 PRG:5B37 18 adc #$08 ; CPU:$DB38 PRG:5B38 69 08 @@ -8028,9 +8752,20 @@ Sub_DB2A: ; ----------------------------------------------------------------------------- Sub_DB3D: rts ; CPU:$DB3D PRG:5B3D 60 -; ---- data $DB3E-$DB59 (28 bytes) ---- - .byte $A4, $2D, $F0, $28, $BD, $02, $03, $18, $69, $04, $99, $00, $07, $C8, $A9, $EE ; CPU:$DB3E PRG:5B3E A4 2D F0 28 BD 02 03 18 69 04 99 00 07 C8 A9 EE - .byte $99, $00, $07, $C8, $A5, $1B, $29, $04, $F0, $02, $A9, $03 ; CPU:$DB4E PRG:5B4E 99 00 07 C8 A5 1B 29 04 F0 02 A9 03 + ldy ObjectDeltaX ; CPU:$DB3E PRG:5B3E A4 2D + beq Sub_DB6A ; CPU:$DB40 PRG:5B40 F0 28 + lda $0302,x ; CPU:$DB42 PRG:5B42 BD 02 03 + clc ; CPU:$DB45 PRG:5B45 18 + adc #$04 ; CPU:$DB46 PRG:5B46 69 04 + sta $0700,y ; CPU:$DB48 PRG:5B48 99 00 07 + iny ; CPU:$DB4B PRG:5B4B C8 + lda #$EE ; CPU:$DB4C PRG:5B4C A9 EE + sta $0700,y ; CPU:$DB4E PRG:5B4E 99 00 07 + iny ; CPU:$DB51 PRG:5B51 C8 + lda GameSubMode ; CPU:$DB52 PRG:5B52 A5 1B + and #$04 ; CPU:$DB54 PRG:5B54 29 04 + beq Sub_DB5A ; CPU:$DB56 PRG:5B56 F0 02 + lda #$03 ; CPU:$DB58 PRG:5B58 A9 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_DB5A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8048,12 +8783,18 @@ Sub_DB5A: adc #$04 ; CPU:$DB62 PRG:5B62 69 04 sta $0700,y ; CPU:$DB64 PRG:5B64 99 00 07 iny ; CPU:$DB67 PRG:5B67 C8 - sty ObjectDeltaX ; CPU:$DB68 PRG:5B68 84 2D + sty ObjectDeltaX ; CPU:$DB68 PRG:5B68 84 2D +Sub_DB6A: rts ; CPU:$DB6A PRG:5B6A 60 -; ---- data $DB6B-$DB8B (33 bytes) ---- - .byte $DE, $06, $03, $D0, $6C, $A9, $06, $9D, $06, $03, $A9, $22, $9D, $00, $03, $4C ; CPU:$DB6B PRG:5B6B DE 06 03 D0 6C A9 06 9D 06 03 A9 22 9D 00 03 4C - .byte $DC, $DB, $DE, $06, $03, $D0, $0A, $A9, $04, $9D, $06, $03, $A9, $18, $9D, $00 ; CPU:$DB7B PRG:5B7B DC DB DE 06 03 D0 0A A9 04 9D 06 03 A9 18 9D 00 - .byte $03 ; CPU:$DB8B PRG:5B8B 03 + dec $0306,x ; CPU:$DB6B PRG:5B6B DE 06 03 + bne Sub_DBDC ; CPU:$DB6E PRG:5B6E D0 6C + lda #$06 ; CPU:$DB70 PRG:5B70 A9 06 + sta $0306,x ; CPU:$DB72 PRG:5B72 9D 06 03 + lda #$22 ; CPU:$DB75 PRG:5B75 A9 22 + sta $0300,x ; CPU:$DB77 PRG:5B77 9D 00 03 + jmp Sub_DBDC ; CPU:$DB7A PRG:5B7A 4C DC DB +; ---- data $DB7D-$DB8B (15 bytes) ---- + .byte $DE, $06, $03, $D0, $0A, $A9, $04, $9D, $06, $03, $A9, $18, $9D, $00, $03 ; CPU:$DB7D PRG:5B7D DE 06 03 D0 0A A9 04 9D 06 03 A9 18 9D 00 03 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdyBeqLdaAdd3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8064,8 +8805,8 @@ Sub_DB5A: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchLdyBeqLdaAdd3: - ldy ObjectDeltaX ; CPU:$DB8C PRG:5B8C A4 2D - beq Sub_DBB2 ; CPU:$DB8E PRG:5B8E F0 22 + ldy ObjectDeltaX ; CPU:$DB8C PRG:5B8C A4 2D + beq Sub_DBB2 ; CPU:$DB8E PRG:5B8E F0 22 lda $0302,x ; CPU:$DB90 PRG:5B90 BD 02 03 clc ; CPU:$DB93 PRG:5B93 18 adc #$04 ; CPU:$DB94 PRG:5B94 69 04 @@ -8092,7 +8833,7 @@ Sub_DBA2: adc #$04 ; CPU:$DBAA PRG:5BAA 69 04 sta $0700,y ; CPU:$DBAC PRG:5BAC 99 00 07 iny ; CPU:$DBAF PRG:5BAF C8 - sty ObjectDeltaX ; CPU:$DBB0 PRG:5BB0 84 2D + sty ObjectDeltaX ; CPU:$DBB0 PRG:5BB0 84 2D ; ----------------------------------------------------------------------------- ; Routine: Sub_DBB2 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8115,11 +8856,11 @@ Sub_DBB2: ; ----------------------------------------------------------------------------- Sub_DBB3: dec $0306,x ; CPU:$DBB3 PRG:5BB3 DE 06 03 - bne DispatchLdyBeqLdaAdd3 ; CPU:$DBB6 PRG:5BB6 D0 D4 + bne DispatchLdyBeqLdaAdd3 ; CPU:$DBB6 PRG:5BB6 D0 D4 lda $0307,x ; CPU:$DBB8 PRG:5BB8 BD 07 03 - bpl Sub_DBC7 ; CPU:$DBBB PRG:5BBB 10 0A + bpl Sub_DBC7 ; CPU:$DBBB PRG:5BBB 10 0A and #$7F ; CPU:$DBBD PRG:5BBD 29 7F - beq Sub_DBC7 ; CPU:$DBBF PRG:5BBF F0 06 + beq Sub_DBC7 ; CPU:$DBBF PRG:5BBF F0 06 sta $0300,x ; CPU:$DBC1 PRG:5BC1 9D 00 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_DBC4 @@ -8131,7 +8872,7 @@ Sub_DBB3: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_DBC4: - jmp DispatchLdaLdy ; CPU:$DBC4 PRG:5BC4 4C 76 DC + jmp DispatchLdaLdy ; CPU:$DBC4 PRG:5BC4 4C 76 DC ; ----------------------------------------------------------------------------- ; Routine: Sub_DBC7 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8143,11 +8884,30 @@ Sub_DBC4: ; ----------------------------------------------------------------------------- Sub_DBC7: sta $0300,x ; CPU:$DBC7 PRG:5BC7 9D 00 03 - jmp DispatchLdyBeqLdaAdd3 ; CPU:$DBCA PRG:5BCA 4C 8C DB -; ---- data $DBCD-$DBF1 (37 bytes) ---- - .byte $DE, $06, $03, $D0, $0A, $A9, $06, $9D, $06, $03, $A9, $1A, $9D, $00, $03, $A4 ; CPU:$DBCD PRG:5BCD DE 06 03 D0 0A A9 06 9D 06 03 A9 1A 9D 00 03 A4 - .byte $2D, $F0, $D2, $BD, $02, $03, $18, $69, $04, $99, $00, $07, $C8, $A9, $EC, $99 ; CPU:$DBDD PRG:5BDD 2D F0 D2 BD 02 03 18 69 04 99 00 07 C8 A9 EC 99 - .byte $00, $07, $C8, $A9, $03 ; CPU:$DBED PRG:5BED 00 07 C8 A9 03 + jmp DispatchLdyBeqLdaAdd3 ; CPU:$DBCA PRG:5BCA 4C 8C DB +; ---- data $DBCD-$DBDB (15 bytes) ---- + .byte $DE, $06, $03, $D0, $0A, $A9, $06, $9D, $06, $03, $A9, $1A, $9D, $00, $03 ; CPU:$DBCD PRG:5BCD DE 06 03 D0 0A A9 06 9D 06 03 A9 1A 9D 00 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_DBDC +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_DBDC: + ldy ObjectDeltaX ; CPU:$DBDC PRG:5BDC A4 2D + beq Sub_DBB2 ; CPU:$DBDE PRG:5BDE F0 D2 + lda $0302,x ; CPU:$DBE0 PRG:5BE0 BD 02 03 + clc ; CPU:$DBE3 PRG:5BE3 18 + adc #$04 ; CPU:$DBE4 PRG:5BE4 69 04 + sta $0700,y ; CPU:$DBE6 PRG:5BE6 99 00 07 + iny ; CPU:$DBE9 PRG:5BE9 C8 + lda #$EC ; CPU:$DBEA PRG:5BEA A9 EC + sta $0700,y ; CPU:$DBEC PRG:5BEC 99 00 07 + iny ; CPU:$DBEF PRG:5BEF C8 + lda #$03 ; CPU:$DBF0 PRG:5BF0 A9 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_DBF2 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8165,7 +8925,7 @@ Sub_DBF2: adc #$04 ; CPU:$DBFA PRG:5BFA 69 04 sta $0700,y ; CPU:$DBFC PRG:5BFC 99 00 07 iny ; CPU:$DBFF PRG:5BFF C8 - sty ObjectDeltaX ; CPU:$DC00 PRG:5C00 84 2D + sty ObjectDeltaX ; CPU:$DC00 PRG:5C00 84 2D rts ; CPU:$DC02 PRG:5C02 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchDecBneLdaStoreLda @@ -8178,7 +8938,7 @@ Sub_DBF2: ; ----------------------------------------------------------------------------- DispatchDecBneLdaStoreLda: dec $0306,x ; CPU:$DC03 PRG:5C03 DE 06 03 - bne Sub_DC12 ; CPU:$DC06 PRG:5C06 D0 0A + bne Sub_DC12 ; CPU:$DC06 PRG:5C06 D0 0A lda #$06 ; CPU:$DC08 PRG:5C08 A9 06 sta $0306,x ; CPU:$DC0A PRG:5C0A 9D 06 03 lda #$1C ; CPU:$DC0D PRG:5C0D A9 1C @@ -8193,25 +8953,13 @@ DispatchDecBneLdaStoreLda: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_DC12: - ldy ObjectDeltaX ; CPU:$DC12 PRG:5C12 A4 2D - beq Sub_DC1E ; CPU:$DC14 PRG:5C14 F0 08 + ldy ObjectDeltaX ; CPU:$DC12 PRG:5C12 A4 2D + beq Sub_DC1E ; CPU:$DC14 PRG:5C14 F0 08 tya ; CPU:$DC16 PRG:5C16 98 clc ; CPU:$DC17 PRG:5C17 18 -; ---- data $DC18-$DC18 (1 bytes) ---- - .byte $69 ; CPU:$DC18 PRG:5C18 69 -; ----------------------------------------------------------------------------- -; Routine: Sub_DC19 -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -Sub_DC19: - bpl Sub_DBC4 ; CPU:$DC19 PRG:5C19 10 A9 - inx ; CPU:$DC1B PRG:5C1B E8 - bcc Sub_DC1F ; CPU:$DC1C PRG:5C1C 90 01 + adc #$10 ; CPU:$DC18 PRG:5C18 69 10 + lda #$E8 ; CPU:$DC1A PRG:5C1A A9 E8 + bcc Sub_DC1F ; CPU:$DC1C PRG:5C1C 90 01 ; ----------------------------------------------------------------------------- ; Routine: Sub_DC1E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8258,12 +9006,40 @@ Sub_DC36: sta $0706,y ; CPU:$DC39 PRG:5C39 99 06 07 sta $070A,y ; CPU:$DC3C PRG:5C3C 99 0A 07 sta $070E,y ; CPU:$DC3F PRG:5C3F 99 0E 07 - jmp DispatchStoreStoreStore ; CPU:$DC42 PRG:5C42 4C B1 DC -; ---- data $DC45-$DC75 (49 bytes) ---- - .byte $DE, $06, $03, $D0, $0A, $A9, $06, $9D, $06, $03, $A9, $1E, $9D, $00, $03, $A4 ; CPU:$DC45 PRG:5C45 DE 06 03 D0 0A A9 06 9D 06 03 A9 1E 9D 00 03 A4 - .byte $2D, $98, $18, $69, $10, $A9, $E4, $90, $C1, $60, $DE, $06, $03, $D0, $AE, $A9 ; CPU:$DC55 PRG:5C55 2D 98 18 69 10 A9 E4 90 C1 60 DE 06 03 D0 AE A9 - .byte $06, $9D, $06, $03, $A9, $20, $9D, $00, $03, $4C, $12, $DC, $A9, $E2, $4C, $78 ; CPU:$DC65 PRG:5C65 06 9D 06 03 A9 20 9D 00 03 4C 12 DC A9 E2 4C 78 - .byte $DC ; CPU:$DC75 PRG:5C75 DC + jmp DispatchStoreStoreStore ; CPU:$DC42 PRG:5C42 4C B1 DC + dec $0306,x ; CPU:$DC45 PRG:5C45 DE 06 03 + bne Sub_DC54 ; CPU:$DC48 PRG:5C48 D0 0A + lda #$06 ; CPU:$DC4A PRG:5C4A A9 06 + sta $0306,x ; CPU:$DC4C PRG:5C4C 9D 06 03 + lda #$1E ; CPU:$DC4F PRG:5C4F A9 1E + sta $0300,x ; CPU:$DC51 PRG:5C51 9D 00 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_DC54 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_DC54: + ldy ObjectDeltaX ; CPU:$DC54 PRG:5C54 A4 2D + tya ; CPU:$DC56 PRG:5C56 98 + clc ; CPU:$DC57 PRG:5C57 18 + adc #$10 ; CPU:$DC58 PRG:5C58 69 10 + lda #$E4 ; CPU:$DC5A PRG:5C5A A9 E4 + bcc Sub_DC1F ; CPU:$DC5C PRG:5C5C 90 C1 +; ---- data $DC5E-$DC5E (1 bytes) ---- + .byte $60 ; CPU:$DC5E PRG:5C5E 60 + dec $0306,x ; CPU:$DC5F PRG:5C5F DE 06 03 + bne Sub_DC12 ; CPU:$DC62 PRG:5C62 D0 AE + lda #$06 ; CPU:$DC64 PRG:5C64 A9 06 + sta $0306,x ; CPU:$DC66 PRG:5C66 9D 06 03 + lda #$20 ; CPU:$DC69 PRG:5C69 A9 20 + sta $0300,x ; CPU:$DC6B PRG:5C6B 9D 00 03 + jmp Sub_DC12 ; CPU:$DC6E PRG:5C6E 4C 12 DC +; ---- data $DC71-$DC75 (5 bytes) ---- + .byte $A9, $E2, $4C, $78, $DC ; CPU:$DC71 PRG:5C71 A9 E2 4C 78 DC ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaLdy ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8275,33 +9051,24 @@ Sub_DC36: ; ----------------------------------------------------------------------------- DispatchLdaLdy: lda #$E1 ; CPU:$DC76 PRG:5C76 A9 E1 - ldy ObjectDeltaX ; CPU:$DC78 PRG:5C78 A4 2D -; ---- data $DC7A-$DC7A (1 bytes) ---- - .byte $F0 ; CPU:$DC7A PRG:5C7A F0 -; ----------------------------------------------------------------------------- -; Routine: Sub_DC7B -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -Sub_DC7B: - jsr $9848 ; CPU:$DC7B PRG:5C7B 20 48 98 +Sub_DC78: + ldy ObjectDeltaX ; CPU:$DC78 PRG:5C78 A4 2D + beq Sub_DC9C ; CPU:$DC7A PRG:5C7A F0 20 + pha ; CPU:$DC7C PRG:5C7C 48 + tya ; CPU:$DC7D PRG:5C7D 98 clc ; CPU:$DC7E PRG:5C7E 18 adc #$10 ; CPU:$DC7F PRG:5C7F 69 10 pla ; CPU:$DC81 PRG:5C81 68 - bcs Sub_DC9C ; CPU:$DC82 PRG:5C82 B0 18 + bcs Sub_DC9C ; CPU:$DC82 PRG:5C82 B0 18 sta $0701,y ; CPU:$DC84 PRG:5C84 99 01 07 sta $0705,y ; CPU:$DC87 PRG:5C87 99 05 07 sta $0709,y ; CPU:$DC8A PRG:5C8A 99 09 07 sta $070D,y ; CPU:$DC8D PRG:5C8D 99 0D 07 lda $0301,x ; CPU:$DC90 PRG:5C90 BD 01 03 - bne Sub_DC9C ; CPU:$DC93 PRG:5C93 D0 07 + bne Sub_DC9C ; CPU:$DC93 PRG:5C93 D0 07 lda $0302,x ; CPU:$DC95 PRG:5C95 BD 02 03 cmp #$F0 ; CPU:$DC98 PRG:5C98 C9 F0 - bcc Sub_DC9D ; CPU:$DC9A PRG:5C9A 90 01 + bcc Sub_DC9D ; CPU:$DC9A PRG:5C9A 90 01 ; ----------------------------------------------------------------------------- ; Routine: Sub_DC9C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8368,7 +9135,7 @@ Sub_DCBA: tya ; CPU:$DCD5 PRG:5CD5 98 clc ; CPU:$DCD6 PRG:5CD6 18 adc #$10 ; CPU:$DCD7 PRG:5CD7 69 10 - sta ObjectDeltaX ; CPU:$DCD9 PRG:5CD9 85 2D + sta ObjectDeltaX ; CPU:$DCD9 PRG:5CD9 85 2D rts ; CPU:$DCDB PRG:5CDB 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaBne2 @@ -8381,7 +9148,7 @@ Sub_DCBA: ; ----------------------------------------------------------------------------- DispatchLdaBne2: lda $0301,x ; CPU:$DCDC PRG:5CDC BD 01 03 - bne Sub_DD27 ; CPU:$DCDF PRG:5CDF D0 46 + bne Sub_DD27 ; CPU:$DCDF PRG:5CDF D0 46 ; ----------------------------------------------------------------------------- ; Routine: DispatchSubSecClcAdd ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8398,14 +9165,14 @@ DispatchSubSecClcAdd: clc ; CPU:$DCE7 PRG:5CE7 18 adc #$4B ; CPU:$DCE8 PRG:5CE8 69 4B cmp #$17 ; CPU:$DCEA PRG:5CEA C9 17 - bcs Sub_DCFF ; CPU:$DCEC PRG:5CEC B0 11 + bcs Sub_DCFF ; CPU:$DCEC PRG:5CEC B0 11 lda $0303,x ; CPU:$DCEE PRG:5CEE BD 03 03 sec ; CPU:$DCF1 PRG:5CF1 38 sbc Zp23 ; CPU:$DCF2 PRG:5CF2 E5 23 clc ; CPU:$DCF4 PRG:5CF4 18 adc #$0B ; CPU:$DCF5 PRG:5CF5 69 0B cmp #$17 ; CPU:$DCF7 PRG:5CF7 C9 17 - bcs Sub_DCFF ; CPU:$DCF9 PRG:5CF9 B0 04 + bcs Sub_DCFF ; CPU:$DCF9 PRG:5CF9 B0 04 lda #$01 ; CPU:$DCFB PRG:5CFB A9 01 sta Zp2E ; CPU:$DCFD PRG:5CFD 85 2E ; ----------------------------------------------------------------------------- @@ -8420,21 +9187,21 @@ DispatchSubSecClcAdd: Sub_DCFF: lda $02A0 ; CPU:$DCFF PRG:5CFF AD A0 02 cmp #$20 ; CPU:$DD02 PRG:5D02 C9 20 - bne Sub_DD27 ; CPU:$DD04 PRG:5D04 D0 21 + bne Sub_DD27 ; CPU:$DD04 PRG:5D04 D0 21 lda $0302,x ; CPU:$DD06 PRG:5D06 BD 02 03 sec ; CPU:$DD09 PRG:5D09 38 sbc $02A4 ; CPU:$DD0A PRG:5D0A ED A4 02 clc ; CPU:$DD0D PRG:5D0D 18 adc #$0C ; CPU:$DD0E PRG:5D0E 69 0C cmp #$17 ; CPU:$DD10 PRG:5D10 C9 17 - bcs Sub_DD27 ; CPU:$DD12 PRG:5D12 B0 13 + bcs Sub_DD27 ; CPU:$DD12 PRG:5D12 B0 13 lda $0303,x ; CPU:$DD14 PRG:5D14 BD 03 03 sec ; CPU:$DD17 PRG:5D17 38 sbc $02A3 ; CPU:$DD18 PRG:5D18 ED A3 02 clc ; CPU:$DD1B PRG:5D1B 18 adc #$0C ; CPU:$DD1C PRG:5D1C 69 0C cmp #$17 ; CPU:$DD1E PRG:5D1E C9 17 - bcs Sub_DD27 ; CPU:$DD20 PRG:5D20 B0 05 + bcs Sub_DD27 ; CPU:$DD20 PRG:5D20 B0 05 lda #$01 ; CPU:$DD22 PRG:5D22 A9 01 sta $0306,x ; CPU:$DD24 PRG:5D24 9D 06 03 ; ----------------------------------------------------------------------------- @@ -8458,7 +9225,7 @@ Sub_DD27: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_DD28: - ldy Joypad1Press2 ; CPU:$DD28 PRG:5D28 A4 1A + ldy Joypad1Press2 ; CPU:$DD28 PRG:5D28 A4 1A lda $0304,x ; CPU:$DD2A PRG:5D2A BD 04 03 sta $0208,y ; CPU:$DD2D PRG:5D2D 99 08 02 iny ; CPU:$DD30 PRG:5D30 C8 @@ -8481,7 +9248,7 @@ Sub_DD28: sec ; CPU:$DD54 PRG:5D54 38 sbc #$20 ; CPU:$DD55 PRG:5D55 E9 20 sta $0208,y ; CPU:$DD57 PRG:5D57 99 08 02 - bcs Sub_DD79 ; CPU:$DD5A PRG:5D5A B0 1D + bcs Sub_DD79 ; CPU:$DD5A PRG:5D5A B0 1D lda $0207,y ; CPU:$DD5C PRG:5D5C B9 07 02 sec ; CPU:$DD5F PRG:5D5F 38 sbc #$01 ; CPU:$DD60 PRG:5D60 E9 01 @@ -8490,7 +9257,7 @@ Sub_DD28: sta $0207,y ; CPU:$DD66 PRG:5D66 99 07 02 and #$03 ; CPU:$DD69 PRG:5D69 29 03 cmp #$03 ; CPU:$DD6B PRG:5D6B C9 03 - bne Sub_DD79 ; CPU:$DD6D PRG:5D6D D0 0A + bne Sub_DD79 ; CPU:$DD6D PRG:5D6D D0 0A lda $0208,y ; CPU:$DD6F PRG:5D6F B9 08 02 and #$1F ; CPU:$DD72 PRG:5D72 29 1F ora #$A0 ; CPU:$DD74 PRG:5D74 09 A0 @@ -8523,10 +9290,10 @@ Sub_DD79: sta $0307,x ; CPU:$DD98 PRG:5D98 9D 07 03 lda #$04 ; CPU:$DD9B PRG:5D9B A9 04 sta $0306,x ; CPU:$DD9D PRG:5D9D 9D 06 03 - sty Joypad1Press2 ; CPU:$DDA0 PRG:5DA0 84 1A + sty Joypad1Press2 ; CPU:$DDA0 PRG:5DA0 84 1A lda #$01 ; CPU:$DDA2 PRG:5DA2 A9 01 sta $0612 ; CPU:$DDA4 PRG:5DA4 8D 12 06 - jmp DispatchDecBneLdaStoreLda ; CPU:$DDA7 PRG:5DA7 4C 03 DC + jmp DispatchDecBneLdaStoreLda ; CPU:$DDA7 PRG:5DA7 4C 03 DC ; ---- data $DDAA-$DEDF (310 bytes) ---- .byte $A4, $1A, $BD, $04, $03, $99, $08, $02, $C8, $BD, $05, $03, $38, $E9, $1F, $99 ; CPU:$DDAA PRG:5DAA A4 1A BD 04 03 99 08 02 C8 BD 05 03 38 E9 1F 99 .byte $08, $02, $B0, $1D, $B9, $07, $02, $38, $E9, $01, $29, $0B, $09, $20, $99, $07 ; CPU:$DDBA PRG:5DBA 08 02 B0 1D B9 07 02 38 E9 01 29 0B 09 20 99 07 @@ -8560,7 +9327,7 @@ Sub_DD79: Sub_DEE0: lda #$00 ; CPU:$DEE0 PRG:5EE0 A9 00 sta $0208,y ; CPU:$DEE2 PRG:5EE2 99 08 02 - sty Joypad1Press2 ; CPU:$DEE5 PRG:5EE5 84 1A + sty Joypad1Press2 ; CPU:$DEE5 PRG:5EE5 84 1A rts ; CPU:$DEE7 PRG:5EE7 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_DEE8 @@ -8592,7 +9359,7 @@ Sub_DEEA: adc #$10 ; CPU:$DEF8 PRG:5EF8 69 10 tax ; CPU:$DEFA PRG:5EFA AA cpx #$80 ; CPU:$DEFB PRG:5EFB E0 80 - bne Sub_DEEA ; CPU:$DEFD PRG:5EFD D0 EB + bne Sub_DEEA ; CPU:$DEFD PRG:5EFD D0 EB ldx #$00 ; CPU:$DEFF PRG:5EFF A2 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_DF01 @@ -8610,7 +9377,7 @@ Sub_DF01: clc ; CPU:$DF07 PRG:5F07 18 adc #$10 ; CPU:$DF08 PRG:5F08 69 10 tax ; CPU:$DF0A PRG:5F0A AA - bne Sub_DF01 ; CPU:$DF0B PRG:5F0B D0 F4 + bne Sub_DF01 ; CPU:$DF0B PRG:5F0B D0 F4 rts ; CPU:$DF0D PRG:5F0D 60 ; ---- data $DF0E-$DF0F (2 bytes) ---- ; referenced by `lda $DF0E` at $DEEA (operand $DF0E falls inside this region) @@ -8646,20 +9413,20 @@ DispatchJsrTaxLsrs: lsr a ; CPU:$DF1C PRG:5F1C 4A tay ; CPU:$DF1D PRG:5F1D A8 asl a ; CPU:$DF1E PRG:5F1E 0A - eor GameSubMode ; CPU:$DF1F PRG:5F1F 45 1B + eor GameSubMode ; CPU:$DF1F PRG:5F1F 45 1B and #$0E ; CPU:$DF21 PRG:5F21 29 0E - bne DispatchJsrTaxLsrs ; CPU:$DF23 PRG:5F23 D0 F0 + bne DispatchJsrTaxLsrs ; CPU:$DF23 PRG:5F23 D0 F0 lda a:$00D8,y ; CPU:$DF25 PRG:5F25 B9 D8 00 - beq DispatchJsrTaxLsrs ; CPU:$DF28 PRG:5F28 F0 EB - bmi Sub_DF10 ; CPU:$DF2A PRG:5F2A 30 E4 + beq DispatchJsrTaxLsrs ; CPU:$DF28 PRG:5F28 F0 EB + bmi Sub_DF10 ; CPU:$DF2A PRG:5F2A 30 E4 lda a:$00D8,y ; CPU:$DF2C PRG:5F2C B9 D8 00 cmp #$2A ; CPU:$DF2F PRG:5F2F C9 2A - bcs Sub_DF10 ; CPU:$DF31 PRG:5F31 B0 DD + bcs Sub_DF10 ; CPU:$DF31 PRG:5F31 B0 DD ora #$80 ; CPU:$DF33 PRG:5F33 09 80 sta a:$00D8,y ; CPU:$DF35 PRG:5F35 99 D8 00 and #$7E ; CPU:$DF38 PRG:5F38 29 7E tay ; CPU:$DF3A PRG:5F3A A8 - lda Data_DF78,y ; CPU:$DF3B PRG:5F3B B9 78 DF + lda Data_DF78,y ; CPU:$DF3B PRG:5F3B B9 78 DF sta $0380,x ; CPU:$DF3E PRG:5F3E 9D 80 03 lda $DF79,y ; CPU:$DF41 PRG:5F41 B9 79 DF sta $0381,x ; CPU:$DF44 PRG:5F44 9D 81 03 @@ -8678,7 +9445,7 @@ DispatchJsrTaxLsrs: ; ----------------------------------------------------------------------------- ObjIterLoop: lda Zp32 ; CPU:$DF4D PRG:5F4D A5 32 - beq Sub_DEE8 ; CPU:$DF4F PRG:5F4F F0 97 + beq Sub_DEE8 ; CPU:$DF4F PRG:5F4F F0 97 ldx #$00 ; CPU:$DF51 PRG:5F51 A2 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_DF53 @@ -8690,7 +9457,7 @@ ObjIterLoop: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_DF53: - jsr PushXY ; CPU:$DF53 PRG:5F53 20 66 DF + jsr PushXY ; CPU:$DF53 PRG:5F53 20 66 DF txa ; CPU:$DF56 PRG:5F56 8A clc ; CPU:$DF57 PRG:5F57 18 adc #$10 ; CPU:$DF58 PRG:5F58 69 10 @@ -8700,7 +9467,7 @@ Sub_DF53: lsr a ; CPU:$DF5D PRG:5F5D 4A lsr a ; CPU:$DF5E PRG:5F5E 4A cmp #$08 ; CPU:$DF5F PRG:5F5F C9 08 - bne Sub_DF53 ; CPU:$DF61 PRG:5F61 D0 F0 + bne Sub_DF53 ; CPU:$DF61 PRG:5F61 D0 F0 jmp $CE04 ; CPU:$DF63 PRG:5F63 4C 04 CE ; ----------------------------------------------------------------------------- ; Routine: PushXY @@ -8732,15 +9499,27 @@ PopXY: pla ; CPU:$DF73 PRG:5F73 68 sta $0381,x ; CPU:$DF74 PRG:5F74 9D 81 03 rts ; CPU:$DF77 PRG:5F77 60 -; ---- data $DF78-$DFBA (67 bytes) ---- +ObjPtrTable: +; Object/enemy routine pointer table (16-bit entries read by lda $DF78,y/$DF79,y) ; referenced by `lda $DF78,y` at $DF3B (operand $DF78 falls inside this region) ; referenced by `lda $DF79,y` at $DF41 (operand $DF79 falls inside this region) Data_DF78: +; ---- data $DF78-$DFA1 (42 bytes) ---- .byte $A1, $DF, $A6, $DF, $83, $E0, $A2, $E0, $77, $E1, $DA, $E1, $2F, $E2, $1F, $E4 ; CPU:$DF78 PRG:5F78 A1 DF A6 DF 83 E0 A2 E0 77 E1 DA E1 2F E2 1F E4 .byte $B9, $E4, $00, $E5, $52, $E5, $7D, $E5, $88, $E0, $87, $E2, $31, $E3, $AE, $E5 ; CPU:$DF88 PRG:5F88 B9 E4 00 E5 52 E5 7D E5 88 E0 87 E2 31 E3 AE E5 - .byte $F3, $E5, $D6, $E8, $67, $E6, $88, $E6, $C2, $EA, $A9, $00, $4C, $A9, $DF, $A9 ; CPU:$DF98 PRG:5F98 F3 E5 D6 E8 67 E6 88 E6 C2 EA A9 00 4C A9 DF A9 - .byte $01, $9D, $8B, $03, $20, $51, $E1, $A9, $03, $20, $69, $EC, $A9, $02, $9D, $8A ; CPU:$DFA8 PRG:5FA8 01 9D 8B 03 20 51 E1 A9 03 20 69 EC A9 02 9D 8A - .byte $03, $A9, $10 ; CPU:$DFB8 PRG:5FB8 03 A9 10 + .byte $F3, $E5, $D6, $E8, $67, $E6, $88, $E6, $C2, $EA ; CPU:$DF98 PRG:5F98 F3 E5 D6 E8 67 E6 88 E6 C2 EA + lda #$00 ; CPU:$DFA2 PRG:5FA2 A9 00 + jmp Sub_DFA9 ; CPU:$DFA4 PRG:5FA4 4C A9 DF +; ---- data $DFA7-$DFA8 (2 bytes) ---- + .byte $A9, $01 ; CPU:$DFA7 PRG:5FA7 A9 01 +Sub_DFA9: + sta $038B,x ; CPU:$DFA9 PRG:5FA9 9D 8B 03 + jsr DispatchCmpLdaBccLda ; CPU:$DFAC PRG:5FAC 20 51 E1 + lda #$03 ; CPU:$DFAF PRG:5FAF A9 03 + jsr DispatchStoreJsrSubBcsEor ; CPU:$DFB1 PRG:5FB1 20 69 EC + lda #$02 ; CPU:$DFB4 PRG:5FB4 A9 02 + sta $038A,x ; CPU:$DFB6 PRG:5FB6 9D 8A 03 + lda #$10 ; CPU:$DFB9 PRG:5FB9 A9 10 ; ----------------------------------------------------------------------------- ; Routine: Sub_DFBB ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8763,9 +9542,9 @@ Sub_DFBB: ; ----------------------------------------------------------------------------- DispatchJsrJsrLdaBne: jsr PopXY ; CPU:$DFBE PRG:5FBE 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$DFC1 PRG:5FC1 20 3C EB + jsr DispatchAddStoreLda6 ; CPU:$DFC1 PRG:5FC1 20 3C EB lda $0386,x ; CPU:$DFC4 PRG:5FC4 BD 86 03 - bne DispatchJsrJsrLdaBne ; CPU:$DFC7 PRG:5FC7 D0 F5 + bne DispatchJsrJsrLdaBne ; CPU:$DFC7 PRG:5FC7 D0 F5 ; ----------------------------------------------------------------------------- ; Routine: Sub_DFC9 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8777,12 +9556,12 @@ DispatchJsrJsrLdaBne: ; ----------------------------------------------------------------------------- Sub_DFC9: jsr PopXY ; CPU:$DFC9 PRG:5FC9 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$DFCC PRG:5FCC 20 3C EB - jsr DispatchLdaI ; CPU:$DFCF PRG:5FCF 20 E5 EB - jsr DispatchLdyE ; CPU:$DFD2 PRG:5FD2 20 87 EB + jsr DispatchAddStoreLda6 ; CPU:$DFCC PRG:5FCC 20 3C EB + jsr DispatchLdaI ; CPU:$DFCF PRG:5FCF 20 E5 EB + jsr DispatchLdyE ; CPU:$DFD2 PRG:5FD2 20 87 EB lsr a ; CPU:$DFD5 PRG:5FD5 4A - bcc Sub_DFDB ; CPU:$DFD6 PRG:5FD6 90 03 - jmp DispatchLdaBeqLdaJsr ; CPU:$DFD8 PRG:5FD8 4C 6D E0 + bcc Sub_DFDB ; CPU:$DFD6 PRG:5FD6 90 03 + jmp DispatchLdaBeqLdaJsr ; CPU:$DFD8 PRG:5FD8 4C 6D E0 ; ----------------------------------------------------------------------------- ; Routine: Sub_DFDB ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8799,10 +9578,10 @@ Sub_DFDB: clc ; CPU:$DFE1 PRG:5FE1 18 adc #$14 ; CPU:$DFE2 PRG:5FE2 69 14 cmp #$29 ; CPU:$DFE4 PRG:5FE4 C9 29 - bcs Sub_DFC9 ; CPU:$DFE6 PRG:5FE6 B0 E1 + bcs Sub_DFC9 ; CPU:$DFE6 PRG:5FE6 B0 E1 lda $038B,x ; CPU:$DFE8 PRG:5FE8 BD 8B 03 - beq Sub_DFF0 ; CPU:$DFEB PRG:5FEB F0 03 - jsr DispatchJsrStoreLdaClc ; CPU:$DFED PRG:5FED 20 2F CF + beq Sub_DFF0 ; CPU:$DFEB PRG:5FEB F0 03 + jsr DispatchJsrStoreLdaClc ; CPU:$DFED PRG:5FED 20 2F CF ; ----------------------------------------------------------------------------- ; Routine: Sub_DFF0 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8817,7 +9596,7 @@ Sub_DFF0: lda $0384,x ; CPU:$DFF2 PRG:5FF2 BD 84 03 sec ; CPU:$DFF5 PRG:5FF5 38 sbc Zp23 ; CPU:$DFF6 PRG:5FF6 E5 23 - bcs Sub_DFFC ; CPU:$DFF8 PRG:5FF8 B0 02 + bcs Sub_DFFC ; CPU:$DFF8 PRG:5FF8 B0 02 ldy #$FF ; CPU:$DFFA PRG:5FFA A0 FF ; ----------------------------------------------------------------------------- ; Routine: Sub_DFFC @@ -8844,14 +9623,14 @@ Sub_DFFC: ; ----------------------------------------------------------------------------- DispatchJsrJsrJsrLsrsBcs: jsr PopXY ; CPU:$E006 PRG:6006 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$E009 PRG:6009 20 3C EB - jsr DispatchLdyE ; CPU:$E00C PRG:600C 20 87 EB + jsr DispatchAddStoreLda6 ; CPU:$E009 PRG:6009 20 3C EB + jsr DispatchLdyE ; CPU:$E00C PRG:600C 20 87 EB lsr a ; CPU:$E00F PRG:600F 4A - bcs DispatchLdaBeqLdaJsr ; CPU:$E010 PRG:6010 B0 5B - jsr DispatchLdaI ; CPU:$E012 PRG:6012 20 E5 EB - lda GameSubMode ; CPU:$E015 PRG:6015 A5 1B + bcs DispatchLdaBeqLdaJsr ; CPU:$E010 PRG:6010 B0 5B + jsr DispatchLdaI ; CPU:$E012 PRG:6012 20 E5 EB + lda GameSubMode ; CPU:$E015 PRG:6015 A5 1B and #$01 ; CPU:$E017 PRG:6017 29 01 - bne Sub_E032 ; CPU:$E019 PRG:6019 D0 17 + bne Sub_E032 ; CPU:$E019 PRG:6019 D0 17 lda $0389,x ; CPU:$E01B PRG:601B BD 89 03 clc ; CPU:$E01E PRG:601E 18 adc $038B,x ; CPU:$E01F PRG:601F 7D 8B 03 @@ -8872,11 +9651,11 @@ DispatchJsrJsrJsrLsrsBcs: ; ----------------------------------------------------------------------------- Sub_E032: lda $038B,x ; CPU:$E032 PRG:6032 BD 8B 03 - bmi Sub_E052 ; CPU:$E035 PRG:6035 30 1B + bmi Sub_E052 ; CPU:$E035 PRG:6035 30 1B lda $038C,x ; CPU:$E037 PRG:6037 BD 8C 03 - bmi Sub_E040 ; CPU:$E03A PRG:603A 30 04 + bmi Sub_E040 ; CPU:$E03A PRG:603A 30 04 cmp #$04 ; CPU:$E03C PRG:603C C9 04 - bcs DispatchJsrJsrJsrLsrsBcs ; CPU:$E03E PRG:603E B0 C6 + bcs DispatchJsrJsrJsrLsrsBcs ; CPU:$E03E PRG:603E B0 C6 ; ----------------------------------------------------------------------------- ; Routine: Sub_E040 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8891,9 +9670,9 @@ Sub_E040: clc ; CPU:$E043 PRG:6043 18 adc $0382,x ; CPU:$E044 PRG:6044 7D 82 03 sta $038D,x ; CPU:$E047 PRG:6047 9D 8D 03 - bcc DispatchJsrJsrJsrLsrsBcs ; CPU:$E04A PRG:604A 90 BA + bcc DispatchJsrJsrJsrLsrsBcs ; CPU:$E04A PRG:604A 90 BA inc $038C,x ; CPU:$E04C PRG:604C FE 8C 03 - jmp DispatchJsrJsrJsrLsrsBcs ; CPU:$E04F PRG:604F 4C 06 E0 + jmp DispatchJsrJsrJsrLsrsBcs ; CPU:$E04F PRG:604F 4C 06 E0 ; ----------------------------------------------------------------------------- ; Routine: Sub_E052 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8905,9 +9684,9 @@ Sub_E040: ; ----------------------------------------------------------------------------- Sub_E052: lda $038C,x ; CPU:$E052 PRG:6052 BD 8C 03 - bpl Sub_E05B ; CPU:$E055 PRG:6055 10 04 + bpl Sub_E05B ; CPU:$E055 PRG:6055 10 04 cmp #$FD ; CPU:$E057 PRG:6057 C9 FD - bcc DispatchJsrJsrJsrLsrsBcs ; CPU:$E059 PRG:6059 90 AB + bcc DispatchJsrJsrJsrLsrsBcs ; CPU:$E059 PRG:6059 90 AB ; ----------------------------------------------------------------------------- ; Routine: Sub_E05B ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8922,9 +9701,9 @@ Sub_E05B: sec ; CPU:$E05E PRG:605E 38 sbc $0382,x ; CPU:$E05F PRG:605F FD 82 03 sta $038D,x ; CPU:$E062 PRG:6062 9D 8D 03 - bcs DispatchJsrJsrJsrLsrsBcs ; CPU:$E065 PRG:6065 B0 9F + bcs DispatchJsrJsrJsrLsrsBcs ; CPU:$E065 PRG:6065 B0 9F dec $038C,x ; CPU:$E067 PRG:6067 DE 8C 03 - jmp DispatchJsrJsrJsrLsrsBcs ; CPU:$E06A PRG:606A 4C 06 E0 + jmp DispatchJsrJsrJsrLsrsBcs ; CPU:$E06A PRG:606A 4C 06 E0 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaBeqLdaJsr ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8937,10 +9716,10 @@ Sub_E05B: DispatchLdaBeqLdaJsr: lda $0382,x ; CPU:$E06D PRG:606D BD 82 03 cmp #$1C ; CPU:$E070 PRG:6070 C9 1C - beq Sub_E07C ; CPU:$E072 PRG:6072 F0 08 + beq Sub_E07C ; CPU:$E072 PRG:6072 F0 08 lda #$03 ; CPU:$E074 PRG:6074 A9 03 - jsr ObjSpritesInit6 ; CPU:$E076 PRG:6076 20 4D BF - jmp DispatchStoreStoreStoreLda ; CPU:$E079 PRG:6079 4C 5B E2 + jsr ObjSpritesInit6 ; CPU:$E076 PRG:6076 20 4D BF + jmp DispatchStoreStoreStoreLda ; CPU:$E079 PRG:6079 4C 5B E2 ; ----------------------------------------------------------------------------- ; Routine: Sub_E07C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8952,8 +9731,8 @@ DispatchLdaBeqLdaJsr: ; ----------------------------------------------------------------------------- Sub_E07C: lda #$0F ; CPU:$E07C PRG:607C A9 0F - jsr ObjSpritesInit6 ; CPU:$E07E PRG:607E 20 4D BF - jmp DispatchStoreStoreStoreLda ; CPU:$E081 PRG:6081 4C 5B E2 + jsr ObjSpritesInit6 ; CPU:$E07E PRG:607E 20 4D BF + jmp DispatchStoreStoreStoreLda ; CPU:$E081 PRG:6081 4C 5B E2 ; ----------------------------------------------------------------------------- ; Routine: Sub_E084 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -8965,7 +9744,7 @@ Sub_E07C: ; ----------------------------------------------------------------------------- Sub_E084: lda #$00 ; CPU:$E084 PRG:6084 A9 00 - jmp DispatchStoreJsrLdaJsrLda ; CPU:$E086 PRG:6086 4C 8B E0 + jmp DispatchStoreJsrLdaJsrLda ; CPU:$E086 PRG:6086 4C 8B E0 ; ---- data $E089-$E08A (2 bytes) ---- .byte $A9, $01 ; CPU:$E089 PRG:6089 A9 01 ; ----------------------------------------------------------------------------- @@ -8979,19 +9758,54 @@ Sub_E084: ; ----------------------------------------------------------------------------- DispatchStoreJsrLdaJsrLda: sta $038B,x ; CPU:$E08B PRG:608B 9D 8B 03 - jsr DispatchCmpLdaBccLda ; CPU:$E08E PRG:608E 20 51 E1 + jsr DispatchCmpLdaBccLda ; CPU:$E08E PRG:608E 20 51 E1 lda #$06 ; CPU:$E091 PRG:6091 A9 06 - jsr DispatchStoreJsrSubBcsEor ; CPU:$E093 PRG:6093 20 69 EC + jsr DispatchStoreJsrSubBcsEor ; CPU:$E093 PRG:6093 20 69 EC lda #$0A ; CPU:$E096 PRG:6096 A9 0A sta $038A,x ; CPU:$E098 PRG:6098 9D 8A 03 lda #$1C ; CPU:$E09B PRG:609B A9 1C sta $0382,x ; CPU:$E09D PRG:609D 9D 82 03 - jmp DispatchJsrJsrLdaBne ; CPU:$E0A0 PRG:60A0 4C BE DF -; ---- data $E0A3-$E0D4 (50 bytes) ---- - .byte $20, $51, $E1, $A9, $04, $20, $69, $EC, $A9, $0C, $9D, $8A, $03, $20, $6F, $DF ; CPU:$E0A3 PRG:60A3 20 51 E1 A9 04 20 69 EC A9 0C 9D 8A 03 20 6F DF - .byte $20, $3C, $EB, $BD, $86, $03, $30, $F5, $20, $5C, $F5, $29, $3F, $18, $69, $20 ; CPU:$E0B3 PRG:60B3 20 3C EB BD 86 03 30 F5 20 5C F5 29 3F 18 69 20 - .byte $9D, $89, $03, $20, $6F, $DF, $20, $3C, $EB, $20, $E5, $EB, $20, $87, $EB, $4A ; CPU:$E0C3 PRG:60C3 9D 89 03 20 6F DF 20 3C EB 20 E5 EB 20 87 EB 4A - .byte $90, $08 ; CPU:$E0D3 PRG:60D3 90 08 + jmp DispatchJsrJsrLdaBne ; CPU:$E0A0 PRG:60A0 4C BE DF + jsr DispatchCmpLdaBccLda ; CPU:$E0A3 PRG:60A3 20 51 E1 + lda #$04 ; CPU:$E0A6 PRG:60A6 A9 04 + jsr DispatchStoreJsrSubBcsEor ; CPU:$E0A8 PRG:60A8 20 69 EC + lda #$0C ; CPU:$E0AB PRG:60AB A9 0C + sta $038A,x ; CPU:$E0AD PRG:60AD 9D 8A 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_E0B0 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E0B0: + jsr PopXY ; CPU:$E0B0 PRG:60B0 20 6F DF + jsr DispatchAddStoreLda6 ; CPU:$E0B3 PRG:60B3 20 3C EB + lda $0386,x ; CPU:$E0B6 PRG:60B6 BD 86 03 + bmi Sub_E0B0 ; CPU:$E0B9 PRG:60B9 30 F5 + jsr DispatchLdaEorEorAslAslRol ; CPU:$E0BB PRG:60BB 20 5C F5 + and #$3F ; CPU:$E0BE PRG:60BE 29 3F + clc ; CPU:$E0C0 PRG:60C0 18 + adc #$20 ; CPU:$E0C1 PRG:60C1 69 20 + sta $0389,x ; CPU:$E0C3 PRG:60C3 9D 89 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_E0C6 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E0C6: + jsr PopXY ; CPU:$E0C6 PRG:60C6 20 6F DF + jsr DispatchAddStoreLda6 ; CPU:$E0C9 PRG:60C9 20 3C EB + jsr DispatchLdaI ; CPU:$E0CC PRG:60CC 20 E5 EB + jsr DispatchLdyE ; CPU:$E0CF PRG:60CF 20 87 EB + lsr a ; CPU:$E0D2 PRG:60D2 4A + bcc Sub_E0DD ; CPU:$E0D3 PRG:60D3 90 08 ; ----------------------------------------------------------------------------- ; Routine: Sub_E0D5 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9003,13 +9817,33 @@ DispatchStoreJsrLdaJsrLda: ; ----------------------------------------------------------------------------- Sub_E0D5: lda #$05 ; CPU:$E0D5 PRG:60D5 A9 05 - jsr ObjSpritesInit6 ; CPU:$E0D7 PRG:60D7 20 4D BF - jmp DispatchStoreStoreStoreLda ; CPU:$E0DA PRG:60DA 4C 5B E2 -; ---- data $E0DD-$E0FF (35 bytes) ---- + jsr ObjSpritesInit6 ; CPU:$E0D7 PRG:60D7 20 4D BF + jmp DispatchStoreStoreStoreLda ; CPU:$E0DA PRG:60DA 4C 5B E2 ; referenced by `jsr $E0FF` at $EAAD (operand $E0FF falls inside this region) - .byte $DE, $89, $03, $D0, $E4, $20, $2F, $CF, $A9, $08, $9D, $89, $03, $A9, $06, $20 ; CPU:$E0DD PRG:60DD DE 89 03 D0 E4 20 2F CF A9 08 9D 89 03 A9 06 20 - .byte $69, $EC, $A9, $00, $38, $FD, $8D, $03, $9D, $8D, $03, $A9, $00, $FD, $8C, $03 ; CPU:$E0ED PRG:60ED 69 EC A9 00 38 FD 8D 03 9D 8D 03 A9 00 FD 8C 03 - .byte $9D, $8C, $03 ; CPU:$E0FD PRG:60FD 9D 8C 03 +; ----------------------------------------------------------------------------- +; Routine: Sub_E0DD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_E0DD: + dec $0389,x ; CPU:$E0DD PRG:60DD DE 89 03 + bne Sub_E0C6 ; CPU:$E0E0 PRG:60E0 D0 E4 + jsr DispatchJsrStoreLdaClc ; CPU:$E0E2 PRG:60E2 20 2F CF + lda #$08 ; CPU:$E0E5 PRG:60E5 A9 08 + sta $0389,x ; CPU:$E0E7 PRG:60E7 9D 89 03 + lda #$06 ; CPU:$E0EA PRG:60EA A9 06 + jsr DispatchStoreJsrSubBcsEor ; CPU:$E0EC PRG:60EC 20 69 EC + lda #$00 ; CPU:$E0EF PRG:60EF A9 00 + sec ; CPU:$E0F1 PRG:60F1 38 + sbc $038D,x ; CPU:$E0F2 PRG:60F2 FD 8D 03 + sta $038D,x ; CPU:$E0F5 PRG:60F5 9D 8D 03 + lda #$00 ; CPU:$E0F8 PRG:60F8 A9 00 + sbc $038C,x ; CPU:$E0FA PRG:60FA FD 8C 03 + sta $038C,x ; CPU:$E0FD PRG:60FD 9D 8C 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_E100 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9038,19 +9872,19 @@ Sub_E100: ; ----------------------------------------------------------------------------- DispatchJsrJsrJsrLsrsBcs2: jsr PopXY ; CPU:$E111 PRG:6111 20 6F DF - jsr DispatchLdaI ; CPU:$E114 PRG:6114 20 E5 EB - jsr DispatchLdyE ; CPU:$E117 PRG:6117 20 87 EB + jsr DispatchLdaI ; CPU:$E114 PRG:6114 20 E5 EB + jsr DispatchLdyE ; CPU:$E117 PRG:6117 20 87 EB lsr a ; CPU:$E11A PRG:611A 4A - bcs Sub_E0D5 ; CPU:$E11B PRG:611B B0 B8 + bcs Sub_E0D5 ; CPU:$E11B PRG:611B B0 B8 dec $0389,x ; CPU:$E11D PRG:611D DE 89 03 - bne DispatchJsrJsrJsrLsrsBcs2 ; CPU:$E120 PRG:6120 D0 EF + bne DispatchJsrJsrJsrLsrsBcs2 ; CPU:$E120 PRG:6120 D0 EF lda #$08 ; CPU:$E122 PRG:6122 A9 08 sta $0389,x ; CPU:$E124 PRG:6124 9D 89 03 lda $038A,x ; CPU:$E127 PRG:6127 BD 8A 03 cmp #$0F ; CPU:$E12A PRG:612A C9 0F - beq DispatchJsrJsrJsrLsrsBcs3 ; CPU:$E12C PRG:612C F0 06 + beq DispatchJsrJsrJsrLsrsBcs3 ; CPU:$E12C PRG:612C F0 06 inc $038A,x ; CPU:$E12E PRG:612E FE 8A 03 - jmp DispatchJsrJsrJsrLsrsBcs2 ; CPU:$E131 PRG:6131 4C 11 E1 + jmp DispatchJsrJsrJsrLsrsBcs2 ; CPU:$E131 PRG:6131 4C 11 E1 ; ----------------------------------------------------------------------------- ; Routine: DispatchJsrJsrJsrLsrsBcs3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9062,12 +9896,12 @@ DispatchJsrJsrJsrLsrsBcs2: ; ----------------------------------------------------------------------------- DispatchJsrJsrJsrLsrsBcs3: jsr PopXY ; CPU:$E134 PRG:6134 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$E137 PRG:6137 20 3C EB - jsr DispatchLdyE ; CPU:$E13A PRG:613A 20 87 EB + jsr DispatchAddStoreLda6 ; CPU:$E137 PRG:6137 20 3C EB + jsr DispatchLdyE ; CPU:$E13A PRG:613A 20 87 EB lsr a ; CPU:$E13D PRG:613D 4A - bcs Sub_E0D5 ; CPU:$E13E PRG:613E B0 95 - jsr DispatchLdaI ; CPU:$E140 PRG:6140 20 E5 EB - jmp DispatchJsrJsrJsrLsrsBcs3 ; CPU:$E143 PRG:6143 4C 34 E1 + bcs Sub_E0D5 ; CPU:$E13E PRG:613E B0 95 + jsr DispatchLdaI ; CPU:$E140 PRG:6140 20 E5 EB + jmp DispatchJsrJsrJsrLsrsBcs3 ; CPU:$E143 PRG:6143 4C 34 E1 ; ---- data $E146-$E150 (11 bytes) ---- .byte $20, $5C, $F5, $29, $E0, $18, $69, $08, $4C, $65, $E1 ; CPU:$E146 PRG:6146 20 5C F5 29 E0 18 69 08 4C 65 E1 ; ----------------------------------------------------------------------------- @@ -9083,7 +9917,7 @@ DispatchCmpLdaBccLda: lda Zp23 ; CPU:$E151 PRG:6151 A5 23 cmp #$78 ; CPU:$E153 PRG:6153 C9 78 lda #$90 ; CPU:$E155 PRG:6155 A9 90 - bcc Sub_E15B ; CPU:$E157 PRG:6157 90 02 + bcc Sub_E15B ; CPU:$E157 PRG:6157 90 02 lda #$20 ; CPU:$E159 PRG:6159 A9 20 ; ----------------------------------------------------------------------------- ; Routine: Sub_E15B @@ -9095,11 +9929,11 @@ DispatchCmpLdaBccLda: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E15B: - sta ObjPtr ; CPU:$E15B PRG:615B 85 13 - jsr DispatchLdaEorEorAslAslRol ; CPU:$E15D PRG:615D 20 5C F5 + sta ObjPtr ; CPU:$E15B PRG:615B 85 13 + jsr DispatchLdaEorEorAslAslRol ; CPU:$E15D PRG:615D 20 5C F5 and #$3F ; CPU:$E160 PRG:6160 29 3F clc ; CPU:$E162 PRG:6162 18 - adc ObjPtr ; CPU:$E163 PRG:6163 65 13 + adc ObjPtr ; CPU:$E163 PRG:6163 65 13 sta $0384,x ; CPU:$E165 PRG:6165 9D 84 03 lda #$00 ; CPU:$E168 PRG:6168 A9 00 sta $0383,x ; CPU:$E16A PRG:616A 9D 83 03 @@ -9118,14 +9952,14 @@ Sub_E15B: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E178: - jsr DispatchCmpLdaBccLda ; CPU:$E178 PRG:6178 20 51 E1 + jsr DispatchCmpLdaBccLda ; CPU:$E178 PRG:6178 20 51 E1 lda #$E1 ; CPU:$E17B PRG:617B A9 E1 sta $0387,x ; CPU:$E17D PRG:617D 9D 87 03 lda #$03 ; CPU:$E180 PRG:6180 A9 03 - jsr DispatchStoreJsrSubBcsEor ; CPU:$E182 PRG:6182 20 69 EC + jsr DispatchStoreJsrSubBcsEor ; CPU:$E182 PRG:6182 20 69 EC lda #$10 ; CPU:$E185 PRG:6185 A9 10 sta $038A,x ; CPU:$E187 PRG:6187 9D 8A 03 - jsr DispatchLdaEorEorAslAslRol ; CPU:$E18A PRG:618A 20 5C F5 + jsr DispatchLdaEorEorAslAslRol ; CPU:$E18A PRG:618A 20 5C F5 and Zp95 ; CPU:$E18D PRG:618D 25 95 clc ; CPU:$E18F PRG:618F 18 adc #$30 ; CPU:$E190 PRG:6190 69 30 @@ -9141,9 +9975,9 @@ Sub_E178: ; ----------------------------------------------------------------------------- Sub_E195: jsr PopXY ; CPU:$E195 PRG:6195 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$E198 PRG:6198 20 3C EB + jsr DispatchAddStoreLda6 ; CPU:$E198 PRG:6198 20 3C EB lda $0386,x ; CPU:$E19B PRG:619B BD 86 03 - bmi Sub_E195 ; CPU:$E19E PRG:619E 30 F5 + bmi Sub_E195 ; CPU:$E19E PRG:619E 30 F5 ; ----------------------------------------------------------------------------- ; Routine: DispatchJsrJsrJsrJsrLsrs ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9155,25 +9989,25 @@ Sub_E195: ; ----------------------------------------------------------------------------- DispatchJsrJsrJsrJsrLsrs: jsr PopXY ; CPU:$E1A0 PRG:61A0 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$E1A3 PRG:61A3 20 3C EB - jsr DispatchLdaI ; CPU:$E1A6 PRG:61A6 20 E5 EB - jsr DispatchLdyE ; CPU:$E1A9 PRG:61A9 20 87 EB + jsr DispatchAddStoreLda6 ; CPU:$E1A3 PRG:61A3 20 3C EB + jsr DispatchLdaI ; CPU:$E1A6 PRG:61A6 20 E5 EB + jsr DispatchLdyE ; CPU:$E1A9 PRG:61A9 20 87 EB lsr a ; CPU:$E1AC PRG:61AC 4A - bcs Sub_E1D3 ; CPU:$E1AD PRG:61AD B0 24 - jsr DispatchAndBeqIncLda ; CPU:$E1AF PRG:61AF 20 40 E2 + bcs Sub_E1D3 ; CPU:$E1AD PRG:61AD B0 24 + jsr DispatchAndBeqIncLda ; CPU:$E1AF PRG:61AF 20 40 E2 dec $0389,x ; CPU:$E1B2 PRG:61B2 DE 89 03 - bne DispatchJsrJsrJsrJsrLsrs ; CPU:$E1B5 PRG:61B5 D0 E9 - jsr DispatchLdaEorEorAslAslRol ; CPU:$E1B7 PRG:61B7 20 5C F5 + bne DispatchJsrJsrJsrJsrLsrs ; CPU:$E1B5 PRG:61B5 D0 E9 + jsr DispatchLdaEorEorAslAslRol ; CPU:$E1B7 PRG:61B7 20 5C F5 sta $0382,x ; CPU:$E1BA PRG:61BA 9D 82 03 lda #$03 ; CPU:$E1BD PRG:61BD A9 03 jsr DispatchStoreLdaStoreStoreStore ; CPU:$E1BF PRG:61BF 20 E3 EC - jsr DispatchLdaEorEorAslAslRol ; CPU:$E1C2 PRG:61C2 20 5C F5 + jsr DispatchLdaEorEorAslAslRol ; CPU:$E1C2 PRG:61C2 20 5C F5 and Zp95 ; CPU:$E1C5 PRG:61C5 25 95 clc ; CPU:$E1C7 PRG:61C7 18 adc #$30 ; CPU:$E1C8 PRG:61C8 69 30 sta $0389,x ; CPU:$E1CA PRG:61CA 9D 89 03 - jsr DispatchJsrStoreLdaClc ; CPU:$E1CD PRG:61CD 20 2F CF - jmp DispatchJsrJsrJsrJsrLsrs ; CPU:$E1D0 PRG:61D0 4C A0 E1 + jsr DispatchJsrStoreLdaClc ; CPU:$E1CD PRG:61CD 20 2F CF + jmp DispatchJsrJsrJsrJsrLsrs ; CPU:$E1D0 PRG:61D0 4C A0 E1 ; ----------------------------------------------------------------------------- ; Routine: Sub_E1D3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9185,8 +10019,8 @@ DispatchJsrJsrJsrJsrLsrs: ; ----------------------------------------------------------------------------- Sub_E1D3: lda #$07 ; CPU:$E1D3 PRG:61D3 A9 07 - jsr ObjSpritesInit6 ; CPU:$E1D5 PRG:61D5 20 4D BF - jmp DispatchStoreStoreStoreLda ; CPU:$E1D8 PRG:61D8 4C 5B E2 + jsr ObjSpritesInit6 ; CPU:$E1D5 PRG:61D5 20 4D BF + jmp DispatchStoreStoreStoreLda ; CPU:$E1D8 PRG:61D8 4C 5B E2 ; ---- data $E1DB-$E23F (101 bytes) ---- .byte $20, $51, $E1, $A9, $E1, $9D, $87, $03, $A9, $03, $20, $69, $EC, $A9, $10, $9D ; CPU:$E1DB PRG:61DB 20 51 E1 A9 E1 9D 87 03 A9 03 20 69 EC A9 10 9D .byte $8A, $03, $20, $5C, $F5, $25, $95, $18, $69, $30, $9D, $89, $03, $20, $6F, $DF ; CPU:$E1EB PRG:61EB 8A 03 20 5C F5 25 95 18 69 30 9D 89 03 20 6F DF @@ -9205,13 +10039,13 @@ Sub_E1D3: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchAndBeqIncLda: - lda GameSubMode ; CPU:$E240 PRG:6240 A5 1B + lda GameSubMode ; CPU:$E240 PRG:6240 A5 1B and #$01 ; CPU:$E242 PRG:6242 29 01 - beq Sub_E255 ; CPU:$E244 PRG:6244 F0 0F + beq Sub_E255 ; CPU:$E244 PRG:6244 F0 0F inc $038A,x ; CPU:$E246 PRG:6246 FE 8A 03 lda $038A,x ; CPU:$E249 PRG:6249 BD 8A 03 cmp #$13 ; CPU:$E24C PRG:624C C9 13 - bne Sub_E255 ; CPU:$E24E PRG:624E D0 05 + bne Sub_E255 ; CPU:$E24E PRG:624E D0 05 lda #$10 ; CPU:$E250 PRG:6250 A9 10 sta $038A,x ; CPU:$E252 PRG:6252 9D 8A 03 ; ----------------------------------------------------------------------------- @@ -9254,16 +10088,16 @@ DispatchStoreStoreStoreLda: ; ----------------------------------------------------------------------------- Sub_E26B: jsr PopXY ; CPU:$E26B PRG:626B 20 6F DF - jsr DispatchLdaI ; CPU:$E26E PRG:626E 20 E5 EB + jsr DispatchLdaI ; CPU:$E26E PRG:626E 20 E5 EB dec $0389,x ; CPU:$E271 PRG:6271 DE 89 03 - bne Sub_E26B ; CPU:$E274 PRG:6274 D0 F5 + bne Sub_E26B ; CPU:$E274 PRG:6274 D0 F5 lda #$04 ; CPU:$E276 PRG:6276 A9 04 sta $0389,x ; CPU:$E278 PRG:6278 9D 89 03 inc $038A,x ; CPU:$E27B PRG:627B FE 8A 03 lda $038A,x ; CPU:$E27E PRG:627E BD 8A 03 cmp #$18 ; CPU:$E281 PRG:6281 C9 18 - bne Sub_E26B ; CPU:$E283 PRG:6283 D0 E6 - jmp DispatchJsrTaxLsrs ; CPU:$E285 PRG:6285 4C 15 DF + bne Sub_E26B ; CPU:$E283 PRG:6283 D0 E6 + jmp DispatchJsrTaxLsrs ; CPU:$E285 PRG:6285 4C 15 DF ; ---- data $E288-$E2CE (71 bytes) ---- .byte $20, $51, $E1, $A9, $04, $20, $69, $EC, $A9, $18, $9D, $8A, $03, $20, $5C, $F5 ; CPU:$E288 PRG:6288 20 51 E1 A9 04 20 69 EC A9 18 9D 8A 03 20 5C F5 .byte $29, $1F, $18, $69, $20, $9D, $89, $03, $A9, $00, $9D, $8B, $03, $20, $6F, $DF ; CPU:$E298 PRG:6298 29 1F 18 69 20 9D 89 03 A9 00 9D 8B 03 20 6F DF @@ -9282,8 +10116,8 @@ Sub_E26B: DispatchJsrLdaBneJsrAnd: jsr PopXY ; CPU:$E2CF PRG:62CF 20 6F DF lda $038B,x ; CPU:$E2D2 PRG:62D2 BD 8B 03 - bne Sub_E2E2 ; CPU:$E2D5 PRG:62D5 D0 0B - jsr DispatchLdaEorEorAslAslRol ; CPU:$E2D7 PRG:62D7 20 5C F5 + bne Sub_E2E2 ; CPU:$E2D5 PRG:62D5 D0 0B + jsr DispatchLdaEorEorAslAslRol ; CPU:$E2D7 PRG:62D7 20 5C F5 and Zp96 ; CPU:$E2DA PRG:62DA 25 96 clc ; CPU:$E2DC PRG:62DC 18 adc #$10 ; CPU:$E2DD PRG:62DD 69 10 @@ -9299,8 +10133,8 @@ DispatchJsrLdaBneJsrAnd: ; ----------------------------------------------------------------------------- Sub_E2E2: dec $038B,x ; CPU:$E2E2 PRG:62E2 DE 8B 03 - bne Sub_E2EA ; CPU:$E2E5 PRG:62E5 D0 03 - jsr DispatchJsrStoreLdaClc ; CPU:$E2E7 PRG:62E7 20 2F CF + bne Sub_E2EA ; CPU:$E2E5 PRG:62E5 D0 03 + jsr DispatchJsrStoreLdaClc ; CPU:$E2E7 PRG:62E7 20 2F CF ; ----------------------------------------------------------------------------- ; Routine: Sub_E2EA ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9312,9 +10146,9 @@ Sub_E2E2: ; ----------------------------------------------------------------------------- Sub_E2EA: lda $038E,x ; CPU:$E2EA PRG:62EA BD 8E 03 - bpl Sub_E2F3 ; CPU:$E2ED PRG:62ED 10 04 + bpl Sub_E2F3 ; CPU:$E2ED PRG:62ED 10 04 cmp #$FD ; CPU:$E2EF PRG:62EF C9 FD - bcc Sub_E301 ; CPU:$E2F1 PRG:62F1 90 0E + bcc Sub_E301 ; CPU:$E2F1 PRG:62F1 90 0E ; ----------------------------------------------------------------------------- ; Routine: Sub_E2F3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9329,7 +10163,7 @@ Sub_E2F3: sec ; CPU:$E2F6 PRG:62F6 38 sbc #$20 ; CPU:$E2F7 PRG:62F7 E9 20 sta $038F,x ; CPU:$E2F9 PRG:62F9 9D 8F 03 - bcs Sub_E301 ; CPU:$E2FC PRG:62FC B0 03 + bcs Sub_E301 ; CPU:$E2FC PRG:62FC B0 03 dec $038E,x ; CPU:$E2FE PRG:62FE DE 8E 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_E301 @@ -9341,8 +10175,8 @@ Sub_E2F3: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E301: - jsr DispatchAddStoreLda6 ; CPU:$E301 PRG:6301 20 3C EB - jsr DispatchLdyE ; CPU:$E304 PRG:6304 20 87 EB + jsr DispatchAddStoreLda6 ; CPU:$E301 PRG:6301 20 3C EB + jsr DispatchLdyE ; CPU:$E304 PRG:6304 20 87 EB lsr a ; CPU:$E307 PRG:6307 4A ; ----------------------------------------------------------------------------- ; Routine: Sub_E308 @@ -9354,10 +10188,10 @@ Sub_E301: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E308: - bcc Sub_E312 ; CPU:$E308 PRG:6308 90 08 + bcc Sub_E312 ; CPU:$E308 PRG:6308 90 08 lda #$03 ; CPU:$E30A PRG:630A A9 03 - jsr ObjSpritesInit5 ; CPU:$E30C PRG:630C 20 54 BF - jmp DispatchStoreStoreStoreLda ; CPU:$E30F PRG:630F 4C 5B E2 + jsr ObjSpritesInit5 ; CPU:$E30C PRG:630C 20 54 BF + jmp DispatchStoreStoreStoreLda ; CPU:$E30F PRG:630F 4C 5B E2 ; ----------------------------------------------------------------------------- ; Routine: Sub_E312 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9368,19 +10202,19 @@ Sub_E308: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E312: - jsr DispatchLdaI ; CPU:$E312 PRG:6312 20 E5 EB - jsr DispatchLdaEorEorAslAslRol ; CPU:$E315 PRG:6315 20 5C F5 + jsr DispatchLdaI ; CPU:$E312 PRG:6312 20 E5 EB + jsr DispatchLdaEorEorAslAslRol ; CPU:$E315 PRG:6315 20 5C F5 dec $0389,x ; CPU:$E318 PRG:6318 DE 89 03 - bne DispatchJsrLdaBneJsrAnd ; CPU:$E31B PRG:631B D0 B2 + bne DispatchJsrLdaBneJsrAnd ; CPU:$E31B PRG:631B D0 B2 lda #$08 ; CPU:$E31D PRG:631D A9 08 sta $0389,x ; CPU:$E31F PRG:631F 9D 89 03 lda $038A,x ; CPU:$E322 PRG:6322 BD 8A 03 clc ; CPU:$E325 PRG:6325 18 adc #$01 ; CPU:$E326 PRG:6326 69 01 cmp #$1C ; CPU:$E328 PRG:6328 C9 1C - beq DispatchJsrLdaBneJsrAnd ; CPU:$E32A PRG:632A F0 A3 + beq DispatchJsrLdaBneJsrAnd ; CPU:$E32A PRG:632A F0 A3 sta $038A,x ; CPU:$E32C PRG:632C 9D 8A 03 - jmp DispatchJsrLdaBneJsrAnd ; CPU:$E32F PRG:632F 4C CF E2 + jmp DispatchJsrLdaBneJsrAnd ; CPU:$E32F PRG:632F 4C CF E2 ; ----------------------------------------------------------------------------- ; Routine: Sub_E332 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9391,9 +10225,9 @@ Sub_E312: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E332: - jsr DispatchCmpLdaBccLda ; CPU:$E332 PRG:6332 20 51 E1 + jsr DispatchCmpLdaBccLda ; CPU:$E332 PRG:6332 20 51 E1 lda #$05 ; CPU:$E335 PRG:6335 A9 05 - jsr DispatchStoreJsrSubBcsEor ; CPU:$E337 PRG:6337 20 69 EC + jsr DispatchStoreJsrSubBcsEor ; CPU:$E337 PRG:6337 20 69 EC lda #$1C ; CPU:$E33A PRG:633A A9 1C sta $038A,x ; CPU:$E33C PRG:633C 9D 8A 03 lda #$00 ; CPU:$E33F PRG:633F A9 00 @@ -9419,9 +10253,9 @@ Sub_E341: ; ----------------------------------------------------------------------------- Sub_E344: jsr PopXY ; CPU:$E344 PRG:6344 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$E347 PRG:6347 20 3C EB + jsr DispatchAddStoreLda6 ; CPU:$E347 PRG:6347 20 3C EB lda $0386,x ; CPU:$E34A PRG:634A BD 86 03 - bmi Sub_E344 ; CPU:$E34D PRG:634D 30 F5 + bmi Sub_E344 ; CPU:$E34D PRG:634D 30 F5 ; ----------------------------------------------------------------------------- ; Routine: Sub_E34F ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9433,11 +10267,11 @@ Sub_E344: ; ----------------------------------------------------------------------------- Sub_E34F: jsr PopXY ; CPU:$E34F PRG:634F 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$E352 PRG:6352 20 3C EB - jsr DispatchLdyE ; CPU:$E355 PRG:6355 20 87 EB + jsr DispatchAddStoreLda6 ; CPU:$E352 PRG:6352 20 3C EB + jsr DispatchLdyE ; CPU:$E355 PRG:6355 20 87 EB lsr a ; CPU:$E358 PRG:6358 4A - bcc Sub_E35E ; CPU:$E359 PRG:6359 90 03 - jmp DispatchLdaJsrJmpF ; CPU:$E35B PRG:635B 4C FB E3 + bcc Sub_E35E ; CPU:$E359 PRG:6359 90 03 + jmp DispatchLdaJsrJmpF ; CPU:$E35B PRG:635B 4C FB E3 ; ----------------------------------------------------------------------------- ; Routine: Sub_E35E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9448,10 +10282,10 @@ Sub_E34F: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E35E: - jsr DispatchLdaI ; CPU:$E35E PRG:635E 20 E5 EB + jsr DispatchLdaI ; CPU:$E35E PRG:635E 20 E5 EB lda $038B,x ; CPU:$E361 PRG:6361 BD 8B 03 - bne Sub_E371 ; CPU:$E364 PRG:6364 D0 0B - jsr DispatchLdaEorEorAslAslRol ; CPU:$E366 PRG:6366 20 5C F5 + bne Sub_E371 ; CPU:$E364 PRG:6364 D0 0B + jsr DispatchLdaEorEorAslAslRol ; CPU:$E366 PRG:6366 20 5C F5 and Zp98 ; CPU:$E369 PRG:6369 25 98 clc ; CPU:$E36B PRG:636B 18 adc #$10 ; CPU:$E36C PRG:636C 69 10 @@ -9467,8 +10301,8 @@ Sub_E35E: ; ----------------------------------------------------------------------------- Sub_E371: dec $038B,x ; CPU:$E371 PRG:6371 DE 8B 03 - bne Sub_E379 ; CPU:$E374 PRG:6374 D0 03 - jsr DispatchJsrStoreLdaClc ; CPU:$E376 PRG:6376 20 2F CF + bne Sub_E379 ; CPU:$E374 PRG:6374 D0 03 + jsr DispatchJsrStoreLdaClc ; CPU:$E376 PRG:6376 20 2F CF ; ----------------------------------------------------------------------------- ; Routine: Sub_E379 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9485,14 +10319,14 @@ Sub_E379: clc ; CPU:$E37F PRG:637F 18 adc #$20 ; CPU:$E380 PRG:6380 69 20 cmp #$41 ; CPU:$E382 PRG:6382 C9 41 - bcs Sub_E34F ; CPU:$E384 PRG:6384 B0 C9 + bcs Sub_E34F ; CPU:$E384 PRG:6384 B0 C9 lda #$18 ; CPU:$E386 PRG:6386 A9 18 sta $0389,x ; CPU:$E388 PRG:6388 9D 89 03 ldy #$20 ; CPU:$E38B PRG:638B A0 20 lda $0384,x ; CPU:$E38D PRG:638D BD 84 03 sec ; CPU:$E390 PRG:6390 38 sbc Zp23 ; CPU:$E391 PRG:6391 E5 23 - bcs Sub_E397 ; CPU:$E393 PRG:6393 B0 02 + bcs Sub_E397 ; CPU:$E393 PRG:6393 B0 02 ldy #$E0 ; CPU:$E395 PRG:6395 A0 E0 ; ----------------------------------------------------------------------------- ; Routine: Sub_E397 @@ -9518,8 +10352,8 @@ Sub_E397: DispatchJsrLdaBneJsrAnd3: jsr PopXY ; CPU:$E39B PRG:639B 20 6F DF lda $038B,x ; CPU:$E39E PRG:639E BD 8B 03 - bne Sub_E3AE ; CPU:$E3A1 PRG:63A1 D0 0B - jsr DispatchLdaEorEorAslAslRol ; CPU:$E3A3 PRG:63A3 20 5C F5 + bne Sub_E3AE ; CPU:$E3A1 PRG:63A1 D0 0B + jsr DispatchLdaEorEorAslAslRol ; CPU:$E3A3 PRG:63A3 20 5C F5 and Zp98 ; CPU:$E3A6 PRG:63A6 25 98 clc ; CPU:$E3A8 PRG:63A8 18 adc #$10 ; CPU:$E3A9 PRG:63A9 69 10 @@ -9535,8 +10369,8 @@ DispatchJsrLdaBneJsrAnd3: ; ----------------------------------------------------------------------------- Sub_E3AE: dec $038B,x ; CPU:$E3AE PRG:63AE DE 8B 03 - bne Sub_E3B6 ; CPU:$E3B1 PRG:63B1 D0 03 - jsr DispatchJsrStoreLdaClc ; CPU:$E3B3 PRG:63B3 20 2F CF + bne Sub_E3B6 ; CPU:$E3B1 PRG:63B1 D0 03 + jsr DispatchJsrStoreLdaClc ; CPU:$E3B3 PRG:63B3 20 2F CF ; ----------------------------------------------------------------------------- ; Routine: Sub_E3B6 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9548,9 +10382,9 @@ Sub_E3AE: ; ----------------------------------------------------------------------------- Sub_E3B6: lda $038E,x ; CPU:$E3B6 PRG:63B6 BD 8E 03 - bpl Sub_E3BF ; CPU:$E3B9 PRG:63B9 10 04 + bpl Sub_E3BF ; CPU:$E3B9 PRG:63B9 10 04 cmp #$FD ; CPU:$E3BB PRG:63BB C9 FD - bcc Sub_E3CD ; CPU:$E3BD PRG:63BD 90 0E + bcc Sub_E3CD ; CPU:$E3BD PRG:63BD 90 0E ; ----------------------------------------------------------------------------- ; Routine: Sub_E3BF ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9565,7 +10399,7 @@ Sub_E3BF: sec ; CPU:$E3C2 PRG:63C2 38 sbc #$40 ; CPU:$E3C3 PRG:63C3 E9 40 sta $038F,x ; CPU:$E3C5 PRG:63C5 9D 8F 03 - bcs Sub_E3CD ; CPU:$E3C8 PRG:63C8 B0 03 + bcs Sub_E3CD ; CPU:$E3C8 PRG:63C8 B0 03 dec $038E,x ; CPU:$E3CA PRG:63CA DE 8E 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_E3CD @@ -9579,16 +10413,16 @@ Sub_E3BF: Sub_E3CD: lda $038C,x ; CPU:$E3CD PRG:63CD BD 8C 03 cmp #$04 ; CPU:$E3D0 PRG:63D0 C9 04 - beq Sub_E3F2 ; CPU:$E3D2 PRG:63D2 F0 1E + beq Sub_E3F2 ; CPU:$E3D2 PRG:63D2 F0 1E cmp #$FC ; CPU:$E3D4 PRG:63D4 C9 FC - beq Sub_E3F2 ; CPU:$E3D6 PRG:63D6 F0 1A + beq Sub_E3F2 ; CPU:$E3D6 PRG:63D6 F0 1A lda $038D,x ; CPU:$E3D8 PRG:63D8 BD 8D 03 clc ; CPU:$E3DB PRG:63DB 18 adc $0382,x ; CPU:$E3DC PRG:63DC 7D 82 03 sta $038D,x ; CPU:$E3DF PRG:63DF 9D 8D 03 ldy #$00 ; CPU:$E3E2 PRG:63E2 A0 00 lda $0382,x ; CPU:$E3E4 PRG:63E4 BD 82 03 - bpl Sub_E3EB ; CPU:$E3E7 PRG:63E7 10 02 + bpl Sub_E3EB ; CPU:$E3E7 PRG:63E7 10 02 ldy #$FF ; CPU:$E3E9 PRG:63E9 A0 FF ; ----------------------------------------------------------------------------- ; Routine: Sub_E3EB @@ -9613,10 +10447,10 @@ Sub_E3EB: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E3F2: - jsr DispatchAddStoreLda6 ; CPU:$E3F2 PRG:63F2 20 3C EB - jsr DispatchLdyE ; CPU:$E3F5 PRG:63F5 20 87 EB + jsr DispatchAddStoreLda6 ; CPU:$E3F2 PRG:63F2 20 3C EB + jsr DispatchLdyE ; CPU:$E3F5 PRG:63F5 20 87 EB lsr a ; CPU:$E3F8 PRG:63F8 4A - bcc Sub_E403 ; CPU:$E3F9 PRG:63F9 90 08 + bcc Sub_E403 ; CPU:$E3F9 PRG:63F9 90 08 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaJsrJmpF ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9628,8 +10462,8 @@ Sub_E3F2: ; ----------------------------------------------------------------------------- DispatchLdaJsrJmpF: lda #$07 ; CPU:$E3FB PRG:63FB A9 07 - jsr ObjSpritesInit5 ; CPU:$E3FD PRG:63FD 20 54 BF - jmp DispatchStoreStoreStoreLda ; CPU:$E400 PRG:6400 4C 5B E2 + jsr ObjSpritesInit5 ; CPU:$E3FD PRG:63FD 20 54 BF + jmp DispatchStoreStoreStoreLda ; CPU:$E400 PRG:6400 4C 5B E2 ; ----------------------------------------------------------------------------- ; Routine: Sub_E403 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9640,7 +10474,7 @@ DispatchLdaJsrJmpF: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E403: - jsr DispatchLdaI ; CPU:$E403 PRG:6403 20 E5 EB + jsr DispatchLdaI ; CPU:$E403 PRG:6403 20 E5 EB dec $0389,x ; CPU:$E406 PRG:6406 DE 89 03 ; ---- data $E409-$E409 (1 bytes) ---- .byte $D0 ; CPU:$E409 PRG:6409 D0 @@ -9661,9 +10495,9 @@ Sub_E40A: clc ; CPU:$E413 PRG:6413 18 adc #$01 ; CPU:$E414 PRG:6414 69 01 cmp #$20 ; CPU:$E416 PRG:6416 C9 20 - beq DispatchJsrLdaBneJsrAnd3 ; CPU:$E418 PRG:6418 F0 81 + beq DispatchJsrLdaBneJsrAnd3 ; CPU:$E418 PRG:6418 F0 81 sta $038A,x ; CPU:$E41A PRG:641A 9D 8A 03 - jmp DispatchJsrLdaBneJsrAnd3 ; CPU:$E41D PRG:641D 4C 9B E3 + jmp DispatchJsrLdaBneJsrAnd3 ; CPU:$E41D PRG:641D 4C 9B E3 ; ---- data $E420-$E44B (44 bytes) ---- .byte $20, $51, $E1, $A9, $08, $20, $69, $EC, $A9, $2C, $9D, $8A, $03, $BD, $82, $03 ; CPU:$E420 PRG:6420 20 51 E1 A9 08 20 69 EC A9 2C 9D 8A 03 BD 82 03 .byte $18, $69, $03, $29, $1F, $C9, $07, $90, $13, $BD, $82, $03, $C9, $10, $A9, $03 ; CPU:$E430 PRG:6430 18 69 03 29 1F C9 07 90 13 BD 82 03 C9 10 A9 03 @@ -9679,15 +10513,15 @@ Sub_E40A: ; ----------------------------------------------------------------------------- DispatchJsrJsrLdaBmiJsr: jsr PopXY ; CPU:$E44C PRG:644C 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$E44F PRG:644F 20 3C EB + jsr DispatchAddStoreLda6 ; CPU:$E44F PRG:644F 20 3C EB lda $0386,x ; CPU:$E452 PRG:6452 BD 86 03 - bmi DispatchJsrJsrLdaBmiJsr ; CPU:$E455 PRG:6455 30 F5 - jsr DispatchLdyD ; CPU:$E457 PRG:6457 20 CC E9 + bmi DispatchJsrJsrLdaBmiJsr ; CPU:$E455 PRG:6455 30 F5 + jsr DispatchLdyD ; CPU:$E457 PRG:6457 20 CC E9 lsr a ; CPU:$E45A PRG:645A 4A - bcc Sub_E465 ; CPU:$E45B PRG:645B 90 08 + bcc Sub_E465 ; CPU:$E45B PRG:645B 90 08 lda #$01 ; CPU:$E45D PRG:645D A9 01 - jsr ObjSpritesInit6 ; CPU:$E45F PRG:645F 20 4D BF - jmp DispatchStoreStoreStoreLda ; CPU:$E462 PRG:6462 4C 5B E2 + jsr ObjSpritesInit6 ; CPU:$E45F PRG:645F 20 4D BF + jmp DispatchStoreStoreStoreLda ; CPU:$E462 PRG:6462 4C 5B E2 ; ----------------------------------------------------------------------------- ; Routine: Sub_E465 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9698,17 +10532,17 @@ DispatchJsrJsrLdaBmiJsr: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E465: - jsr DispatchLdaI ; CPU:$E465 PRG:6465 20 E5 EB + jsr DispatchLdaI ; CPU:$E465 PRG:6465 20 E5 EB inc $0389,x ; CPU:$E468 PRG:6468 FE 89 03 lda $0389,x ; CPU:$E46B PRG:646B BD 89 03 and #$03 ; CPU:$E46E PRG:646E 29 03 - bne DispatchJsrJsrLdaBmiJsr ; CPU:$E470 PRG:6470 D0 DA + bne DispatchJsrJsrLdaBmiJsr ; CPU:$E470 PRG:6470 D0 DA inc $038A,x ; CPU:$E472 PRG:6472 FE 8A 03 lda $038A,x ; CPU:$E475 PRG:6475 BD 8A 03 and #$03 ; CPU:$E478 PRG:6478 29 03 ora #$2C ; CPU:$E47A PRG:647A 09 2C sta $038A,x ; CPU:$E47C PRG:647C 9D 8A 03 - jmp DispatchJsrJsrLdaBmiJsr ; CPU:$E47F PRG:647F 4C 4C E4 + jmp DispatchJsrJsrLdaBmiJsr ; CPU:$E47F PRG:647F 4C 4C E4 ; ---- data $E482-$E4E3 (98 bytes) ---- .byte $A9, $30, $9D, $8A, $03, $20, $5C, $F5, $29, $7F, $C9, $60, $B0, $04, $C9, $20 ; CPU:$E482 PRG:6482 A9 30 9D 8A 03 20 5C F5 29 7F C9 60 B0 04 C9 20 .byte $B0, $08, $20, $5C, $F5, $29, $3F, $18, $69, $20, $9D, $87, $03, $20, $5C, $F5 ; CPU:$E492 PRG:6492 B0 08 20 5C F5 29 3F 18 69 20 9D 87 03 20 5C F5 @@ -9739,12 +10573,12 @@ Sub_E4E4: ; ----------------------------------------------------------------------------- Sub_E4E7: jsr PopXY ; CPU:$E4E7 PRG:64E7 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$E4EA PRG:64EA 20 3C EB - jsr DispatchLdaI ; CPU:$E4ED PRG:64ED 20 E5 EB - jsr DispatchLdyD ; CPU:$E4F0 PRG:64F0 20 CC E9 + jsr DispatchAddStoreLda6 ; CPU:$E4EA PRG:64EA 20 3C EB + jsr DispatchLdaI ; CPU:$E4ED PRG:64ED 20 E5 EB + jsr DispatchLdyD ; CPU:$E4F0 PRG:64F0 20 CC E9 lsr a ; CPU:$E4F3 PRG:64F3 4A - bcc Sub_E4F9 ; CPU:$E4F4 PRG:64F4 90 03 - jmp DispatchLdaJsrJmpG ; CPU:$E4F6 PRG:64F6 4C 32 E5 + bcc Sub_E4F9 ; CPU:$E4F4 PRG:64F4 90 03 + jmp DispatchLdaJsrJmpG ; CPU:$E4F6 PRG:64F6 4C 32 E5 ; ----------------------------------------------------------------------------- ; Routine: Sub_E4F9 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9756,8 +10590,8 @@ Sub_E4E7: ; ----------------------------------------------------------------------------- Sub_E4F9: dec $0389,x ; CPU:$E4F9 PRG:64F9 DE 89 03 - bne Sub_E4E7 ; CPU:$E4FC PRG:64FC D0 E9 - jmp DispatchJsrJsrJmp3 ; CPU:$E4FE PRG:64FE 4C 48 E5 + bne Sub_E4E7 ; CPU:$E4FC PRG:64FC D0 E9 + jmp DispatchJsrJsrJmp3 ; CPU:$E4FE PRG:64FE 4C 48 E5 ; ---- data $E501-$E51F (31 bytes) ---- .byte $20, $82, $E4, $A9, $14, $9D, $8B, $03, $20, $6F, $DF, $20, $9E, $E5, $BD, $8A ; CPU:$E501 PRG:6501 20 82 E4 A9 14 9D 8B 03 20 6F DF 20 9E E5 BD 8A .byte $03, $C9, $3C, $D0, $F3, $EE, $0D, $06, $A9, $00, $9D, $82, $03, $A9, $03 ; CPU:$E511 PRG:6511 03 C9 3C D0 F3 EE 0D 06 A9 00 9D 82 03 A9 03 @@ -9783,11 +10617,11 @@ Sub_E520: ; ----------------------------------------------------------------------------- Sub_E523: jsr PopXY ; CPU:$E523 PRG:6523 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$E526 PRG:6526 20 3C EB - jsr DispatchLdaI ; CPU:$E529 PRG:6529 20 E5 EB - jsr DispatchLdyD ; CPU:$E52C PRG:652C 20 CC E9 + jsr DispatchAddStoreLda6 ; CPU:$E526 PRG:6526 20 3C EB + jsr DispatchLdaI ; CPU:$E529 PRG:6529 20 E5 EB + jsr DispatchLdyD ; CPU:$E52C PRG:652C 20 CC E9 lsr a ; CPU:$E52F PRG:652F 4A - bcc Sub_E53B ; CPU:$E530 PRG:6530 90 09 + bcc Sub_E53B ; CPU:$E530 PRG:6530 90 09 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaJsrJmpG ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9799,8 +10633,8 @@ Sub_E523: ; ----------------------------------------------------------------------------- DispatchLdaJsrJmpG: lda $038B,x ; CPU:$E532 PRG:6532 BD 8B 03 - jsr ObjSpritesInit6 ; CPU:$E535 PRG:6535 20 4D BF - jmp DispatchStoreStoreStoreLda ; CPU:$E538 PRG:6538 4C 5B E2 + jsr ObjSpritesInit6 ; CPU:$E535 PRG:6535 20 4D BF + jmp DispatchStoreStoreStoreLda ; CPU:$E538 PRG:6538 4C 5B E2 ; ----------------------------------------------------------------------------- ; Routine: Sub_E53B ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9817,7 +10651,7 @@ Sub_E53B: clc ; CPU:$E541 PRG:6541 18 adc #$15 ; CPU:$E542 PRG:6542 69 15 cmp #$33 ; CPU:$E544 PRG:6544 C9 33 - bcs Sub_E523 ; CPU:$E546 PRG:6546 B0 DB + bcs Sub_E523 ; CPU:$E546 PRG:6546 B0 DB ; ----------------------------------------------------------------------------- ; Routine: DispatchJsrJsrJmp3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9829,9 +10663,9 @@ Sub_E53B: ; ----------------------------------------------------------------------------- DispatchJsrJsrJmp3: lda #$01 ; CPU:$E548 PRG:6548 A9 01 - jsr DispatchStoreJsrSubBcsEor ; CPU:$E54A PRG:654A 20 69 EC - jsr DispatchLdaA ; CPU:$E54D PRG:654D 20 FB CE - jmp DispatchJsrLdaCmpBccLda ; CPU:$E550 PRG:6550 4C 3C E6 + jsr DispatchStoreJsrSubBcsEor ; CPU:$E54A PRG:654A 20 69 EC + jsr DispatchLdaA ; CPU:$E54D PRG:654D 20 FB CE + jmp DispatchJsrLdaCmpBccLda ; CPU:$E550 PRG:6550 4C 3C E6 ; ---- data $E553-$E599 (71 bytes) ---- .byte $20, $82, $E4, $A9, $0F, $9D, $8B, $03, $20, $6F, $DF, $20, $9E, $E5, $BD, $8A ; CPU:$E553 PRG:6553 20 82 E4 A9 0F 9D 8B 03 20 6F DF 20 9E E5 BD 8A .byte $03, $C9, $3C, $D0, $F3, $EE, $0D, $06, $20, $5C, $F5, $29, $3F, $18, $69, $10 ; CPU:$E563 PRG:6563 03 C9 3C D0 F3 EE 0D 06 20 5C F5 29 3F 18 69 10 @@ -9854,7 +10688,7 @@ Sub_E59A: inc $0389,x ; CPU:$E5A1 PRG:65A1 FE 89 03 lda $0389,x ; CPU:$E5A4 PRG:65A4 BD 89 03 and #$01 ; CPU:$E5A7 PRG:65A7 29 01 - bne Sub_E5AE ; CPU:$E5A9 PRG:65A9 D0 03 + bne Sub_E5AE ; CPU:$E5A9 PRG:65A9 D0 03 inc $038A,x ; CPU:$E5AB PRG:65AB FE 8A 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_E5AE @@ -9890,7 +10724,7 @@ DispatchJsrLdaCmpBccLda: jsr PopXY ; CPU:$E63C PRG:663C 20 6F DF lda $038A,x ; CPU:$E63F PRG:663F BD 8A 03 cmp #$3C ; CPU:$E642 PRG:6642 C9 3C - bcc Sub_E64B ; CPU:$E644 PRG:6644 90 05 + bcc Sub_E64B ; CPU:$E644 PRG:6644 90 05 lda #$3B ; CPU:$E646 PRG:6646 A9 3B ; ----------------------------------------------------------------------------- ; Routine: Sub_E648 @@ -9913,17 +10747,17 @@ Sub_E648: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E64B: - jsr DispatchLdaI ; CPU:$E64B PRG:664B 20 E5 EB + jsr DispatchLdaI ; CPU:$E64B PRG:664B 20 E5 EB jsr PopXY ; CPU:$E64E PRG:664E 20 6F DF dec $0389,x ; CPU:$E651 PRG:6651 DE 89 03 lda $0389,x ; CPU:$E654 PRG:6654 BD 89 03 and #$01 ; CPU:$E657 PRG:6657 29 01 - bne Sub_E64B ; CPU:$E659 PRG:6659 D0 F0 + bne Sub_E64B ; CPU:$E659 PRG:6659 D0 F0 dec $038A,x ; CPU:$E65B PRG:665B DE 8A 03 lda $038A,x ; CPU:$E65E PRG:665E BD 8A 03 cmp #$2F ; CPU:$E661 PRG:6661 C9 2F - bne Sub_E64B ; CPU:$E663 PRG:6663 D0 E6 - jmp DispatchJsrTaxLsrs ; CPU:$E665 PRG:6665 4C 15 DF + bne Sub_E64B ; CPU:$E663 PRG:6663 D0 E6 + jmp DispatchJsrTaxLsrs ; CPU:$E665 PRG:6665 4C 15 DF ; ---- data $E668-$E6B8 (81 bytes) ---- ; referenced by `lda $E680,y` at $E86D (operand $E680 falls inside this region) .byte $A9, $F0, $9D, $8B, $03, $A9, $E0, $9D, $84, $03, $20, $6F, $DF, $A5, $3A, $F0 ; CPU:$E668 PRG:6668 A9 F0 9D 8B 03 A9 E0 9D 84 03 20 6F DF A5 3A F0 @@ -9945,11 +10779,11 @@ DispatchJsrLdaOraBneLda: jsr PopXY ; CPU:$E6B9 PRG:66B9 20 6F DF lda $0386,x ; CPU:$E6BC PRG:66BC BD 86 03 ora $0383,x ; CPU:$E6BF PRG:66BF 1D 83 03 - bne Sub_E6CE ; CPU:$E6C2 PRG:66C2 D0 0A + bne Sub_E6CE ; CPU:$E6C2 PRG:66C2 D0 0A lda $0384,x ; CPU:$E6C4 PRG:66C4 BD 84 03 cmp #$F1 ; CPU:$E6C7 PRG:66C7 C9 F1 - bcs Sub_E6CE ; CPU:$E6C9 PRG:66C9 B0 03 - jsr DispatchLdaI ; CPU:$E6CB PRG:66CB 20 E5 EB + bcs Sub_E6CE ; CPU:$E6C9 PRG:66C9 B0 03 + jsr DispatchLdaI ; CPU:$E6CB PRG:66CB 20 E5 EB ; ----------------------------------------------------------------------------- ; Routine: Sub_E6CE ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -9966,23 +10800,23 @@ Sub_E6CE: sbc #$10 ; CPU:$E6D3 PRG:66D3 E9 10 sec ; CPU:$E6D5 PRG:66D5 38 sbc $0387,x ; CPU:$E6D6 PRG:66D6 FD 87 03 - sta ObjectXLo ; CPU:$E6D9 PRG:66D9 85 37 + sta ObjectXLo ; CPU:$E6D9 PRG:66D9 85 37 lda $0386,x ; CPU:$E6DB PRG:66DB BD 86 03 - bmi Sub_E6FD ; CPU:$E6DE PRG:66DE 30 1D - lda ObjectXLo ; CPU:$E6E0 PRG:66E0 A5 37 + bmi Sub_E6FD ; CPU:$E6DE PRG:66DE 30 1D + lda ObjectXLo ; CPU:$E6E0 PRG:66E0 A5 37 cmp #$03 ; CPU:$E6E2 PRG:66E2 C9 03 - bcc Sub_E744 ; CPU:$E6E4 PRG:66E4 90 5E + bcc Sub_E744 ; CPU:$E6E4 PRG:66E4 90 5E cmp #$FE ; CPU:$E6E6 PRG:66E6 C9 FE - bcs Sub_E744 ; CPU:$E6E8 PRG:66E8 B0 5A + bcs Sub_E744 ; CPU:$E6E8 PRG:66E8 B0 5A lda Zp24 ; CPU:$E6EA PRG:66EA A5 24 sec ; CPU:$E6EC PRG:66EC 38 sbc #$10 ; CPU:$E6ED PRG:66ED E9 10 sec ; CPU:$E6EF PRG:66EF 38 sbc $0387,x ; CPU:$E6F0 PRG:66F0 FD 87 03 - bcs Sub_E6FD ; CPU:$E6F3 PRG:66F3 B0 08 + bcs Sub_E6FD ; CPU:$E6F3 PRG:66F3 B0 08 eor #$FF ; CPU:$E6F5 PRG:66F5 49 FF - sta ObjectXLo ; CPU:$E6F7 PRG:66F7 85 37 - inc ObjectXLo ; CPU:$E6F9 PRG:66F9 E6 37 + sta ObjectXLo ; CPU:$E6F7 PRG:66F7 85 37 + inc ObjectXLo ; CPU:$E6F9 PRG:66F9 E6 37 ldy #$FF ; CPU:$E6FB PRG:66FB A0 FF ; ----------------------------------------------------------------------------- ; Routine: Sub_E6FD @@ -9998,9 +10832,9 @@ Sub_E6FD: clc ; CPU:$E6FE PRG:66FE 18 adc $0387,x ; CPU:$E6FF PRG:66FF 7D 87 03 sta $0387,x ; CPU:$E702 PRG:6702 9D 87 03 - bcc Sub_E70D ; CPU:$E705 PRG:6705 90 06 + bcc Sub_E70D ; CPU:$E705 PRG:6705 90 06 tya ; CPU:$E707 PRG:6707 98 - bmi Sub_E70D ; CPU:$E708 PRG:6708 30 03 + bmi Sub_E70D ; CPU:$E708 PRG:6708 30 03 inc $0386,x ; CPU:$E70A PRG:670A FE 86 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_E70D @@ -10012,7 +10846,7 @@ Sub_E6FD: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E70D: - jsr DispatchDecLdaBplIncInc ; CPU:$E70D PRG:670D 20 87 E8 + jsr DispatchDecLdaBplIncInc ; CPU:$E70D PRG:670D 20 87 E8 lda Zp23 ; CPU:$E710 PRG:6710 A5 23 clc ; CPU:$E712 PRG:6712 18 adc $038B,x ; CPU:$E713 PRG:6713 7D 8B 03 @@ -10027,7 +10861,7 @@ Sub_E70D: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E718: - bcc Sub_E722 ; CPU:$E718 PRG:6718 90 08 + bcc Sub_E722 ; CPU:$E718 PRG:6718 90 08 lda $038B,x ; CPU:$E71A PRG:671A BD 8B 03 eor #$FF ; CPU:$E71D PRG:671D 49 FF clc ; CPU:$E71F PRG:671F 18 @@ -10044,15 +10878,15 @@ Sub_E718: Sub_E722: sec ; CPU:$E722 PRG:6722 38 sbc $0384,x ; CPU:$E723 PRG:6723 FD 84 03 - beq DispatchJsrLdaOraBneLda ; CPU:$E726 PRG:6726 F0 91 - sta ObjectXHi ; CPU:$E728 PRG:6728 85 38 - bcs Sub_E73B ; CPU:$E72A PRG:672A B0 0F + beq DispatchJsrLdaOraBneLda ; CPU:$E726 PRG:6726 F0 91 + sta ObjectXHi ; CPU:$E728 PRG:6728 85 38 + bcs Sub_E73B ; CPU:$E72A PRG:672A B0 0F eor #$FF ; CPU:$E72C PRG:672C 49 FF - sta ObjectXHi ; CPU:$E72E PRG:672E 85 38 - inc ObjectXHi ; CPU:$E730 PRG:6730 E6 38 - jsr DispatchLdaStoreLdaStoreLdy ; CPU:$E732 PRG:6732 20 3F ED - jsr DispatchLdyB ; CPU:$E735 PRG:6735 20 A9 E8 - jmp DispatchJsrLdaOraBneLda ; CPU:$E738 PRG:6738 4C B9 E6 + sta ObjectXHi ; CPU:$E72E PRG:672E 85 38 + inc ObjectXHi ; CPU:$E730 PRG:6730 E6 38 + jsr DispatchLdaStoreLdaStoreLdy; CPU:$E732 PRG:6732 20 3F ED + jsr DispatchLdyB ; CPU:$E735 PRG:6735 20 A9 E8 + jmp DispatchJsrLdaOraBneLda ; CPU:$E738 PRG:6738 4C B9 E6 ; ----------------------------------------------------------------------------- ; Routine: Sub_E73B ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10063,9 +10897,9 @@ Sub_E722: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E73B: - jsr DispatchLdaStoreLdaStoreLdy ; CPU:$E73B PRG:673B 20 3F ED - jsr DispatchLdyC ; CPU:$E73E PRG:673E 20 C0 E8 - jmp DispatchJsrLdaOraBneLda ; CPU:$E741 PRG:6741 4C B9 E6 + jsr DispatchLdaStoreLdaStoreLdy; CPU:$E73B PRG:673B 20 3F ED + jsr DispatchLdyC ; CPU:$E73E PRG:673E 20 C0 E8 + jmp DispatchJsrLdaOraBneLda ; CPU:$E741 PRG:6741 4C B9 E6 ; ----------------------------------------------------------------------------- ; Routine: Sub_E744 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10091,8 +10925,8 @@ Sub_E749: jsr PopXY ; CPU:$E749 PRG:6749 20 6F DF lda $0384,x ; CPU:$E74C PRG:674C BD 84 03 cmp #$F1 ; CPU:$E74F PRG:674F C9 F1 - bcs Sub_E756 ; CPU:$E751 PRG:6751 B0 03 - jsr DispatchLdaI ; CPU:$E753 PRG:6753 20 E5 EB + bcs Sub_E756 ; CPU:$E751 PRG:6751 B0 03 + jsr DispatchLdaI ; CPU:$E753 PRG:6753 20 E5 EB ; ----------------------------------------------------------------------------- ; Routine: Sub_E756 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10111,12 +10945,12 @@ Sub_E756: sec ; CPU:$E761 PRG:6761 38 sbc #$10 ; CPU:$E762 PRG:6762 E9 10 sta $0387,x ; CPU:$E764 PRG:6764 9D 87 03 - jsr DispatchLdaCmpBcsCmpBcs ; CPU:$E767 PRG:6767 20 55 E8 + jsr DispatchLdaCmpBcsCmpBcs ; CPU:$E767 PRG:6767 20 55 E8 dec $0389,x ; CPU:$E76A PRG:676A DE 89 03 - bne Sub_E749 ; CPU:$E76D PRG:676D D0 DA + bne Sub_E749 ; CPU:$E76D PRG:676D D0 DA ldy #$28 ; CPU:$E76F PRG:676F A0 28 lda $038B,x ; CPU:$E771 PRG:6771 BD 8B 03 - bpl Sub_E778 ; CPU:$E774 PRG:6774 10 02 + bpl Sub_E778 ; CPU:$E774 PRG:6774 10 02 ldy #$24 ; CPU:$E776 PRG:6776 A0 24 ; ----------------------------------------------------------------------------- ; Routine: Sub_E778 @@ -10145,8 +10979,8 @@ Sub_E781: jsr PopXY ; CPU:$E781 PRG:6781 20 6F DF lda $0384,x ; CPU:$E784 PRG:6784 BD 84 03 cmp #$F1 ; CPU:$E787 PRG:6787 C9 F1 - bcs Sub_E78E ; CPU:$E789 PRG:6789 B0 03 - jsr DispatchLdaI ; CPU:$E78B PRG:678B 20 E5 EB + bcs Sub_E78E ; CPU:$E789 PRG:6789 B0 03 + jsr DispatchLdaI ; CPU:$E78B PRG:678B 20 E5 EB ; ----------------------------------------------------------------------------- ; Routine: Sub_E78E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10166,14 +11000,14 @@ Sub_E78E: sbc #$10 ; CPU:$E79A PRG:679A E9 10 sta $0387,x ; CPU:$E79C PRG:679C 9D 87 03 dec $0389,x ; CPU:$E79F PRG:679F DE 89 03 - bne Sub_E781 ; CPU:$E7A2 PRG:67A2 D0 DD + bne Sub_E781 ; CPU:$E7A2 PRG:67A2 D0 DD lda #$04 ; CPU:$E7A4 PRG:67A4 A9 04 sta $0389,x ; CPU:$E7A6 PRG:67A6 9D 89 03 inc $038A,x ; CPU:$E7A9 PRG:67A9 FE 8A 03 lda $038A,x ; CPU:$E7AC PRG:67AC BD 8A 03 and #$03 ; CPU:$E7AF PRG:67AF 29 03 cmp #$03 ; CPU:$E7B1 PRG:67B1 C9 03 - bne Sub_E781 ; CPU:$E7B3 PRG:67B3 D0 CC + bne Sub_E781 ; CPU:$E7B3 PRG:67B3 D0 CC lda $038B,x ; CPU:$E7B5 PRG:67B5 BD 8B 03 sta $0389,x ; CPU:$E7B8 PRG:67B8 9D 89 03 ; ----------------------------------------------------------------------------- @@ -10189,8 +11023,8 @@ Sub_E7BB: jsr PopXY ; CPU:$E7BB PRG:67BB 20 6F DF lda $0384,x ; CPU:$E7BE PRG:67BE BD 84 03 cmp #$F1 ; CPU:$E7C1 PRG:67C1 C9 F1 - bcs Sub_E7C8 ; CPU:$E7C3 PRG:67C3 B0 03 - jsr DispatchLdaI ; CPU:$E7C5 PRG:67C5 20 E5 EB + bcs Sub_E7C8 ; CPU:$E7C3 PRG:67C3 B0 03 + jsr DispatchLdaI ; CPU:$E7C5 PRG:67C5 20 E5 EB ; ----------------------------------------------------------------------------- ; Routine: Sub_E7C8 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10211,7 +11045,7 @@ Sub_E7C8: sta $0387,x ; CPU:$E7D6 PRG:67D6 9D 87 03 dec $0389,x ; CPU:$E7D9 PRG:67D9 DE 89 03 lda $038B,x ; CPU:$E7DC PRG:67DC BD 8B 03 - bpl Sub_E7E7 ; CPU:$E7DF PRG:67DF 10 06 + bpl Sub_E7E7 ; CPU:$E7DF PRG:67DF 10 06 inc $0389,x ; CPU:$E7E1 PRG:67E1 FE 89 03 inc $0389,x ; CPU:$E7E4 PRG:67E4 FE 89 03 ; ----------------------------------------------------------------------------- @@ -10226,7 +11060,7 @@ Sub_E7C8: Sub_E7E7: lda $0389,x ; CPU:$E7E7 PRG:67E7 BD 89 03 and #$07 ; CPU:$E7EA PRG:67EA 29 07 - bne Sub_E7BB ; CPU:$E7EC PRG:67EC D0 CD + bne Sub_E7BB ; CPU:$E7EC PRG:67EC D0 CD ; ----------------------------------------------------------------------------- ; Routine: Sub_E7EE ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10250,8 +11084,8 @@ Sub_E7EE: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E7F6: - bcs Sub_E7FB ; CPU:$E7F6 PRG:67F6 B0 03 - jsr DispatchLdaI ; CPU:$E7F8 PRG:67F8 20 E5 EB + bcs Sub_E7FB ; CPU:$E7F6 PRG:67F6 B0 03 + jsr DispatchLdaI ; CPU:$E7F8 PRG:67F8 20 E5 EB ; ----------------------------------------------------------------------------- ; Routine: Sub_E7FB ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10272,10 +11106,10 @@ Sub_E7FB: sbc #$10 ; CPU:$E809 PRG:6809 E9 10 sta $0387,x ; CPU:$E80B PRG:680B 9D 87 03 lda $038B,x ; CPU:$E80E PRG:680E BD 8B 03 - bpl Sub_E81B ; CPU:$E811 PRG:6811 10 08 + bpl Sub_E81B ; CPU:$E811 PRG:6811 10 08 inc $0389,x ; CPU:$E813 PRG:6813 FE 89 03 - bne Sub_E7EE ; CPU:$E816 PRG:6816 D0 D6 - jmp DispatchJsrTaxLsrs ; CPU:$E818 PRG:6818 4C 15 DF + bne Sub_E7EE ; CPU:$E816 PRG:6816 D0 D6 + jmp DispatchJsrTaxLsrs ; CPU:$E818 PRG:6818 4C 15 DF ; ----------------------------------------------------------------------------- ; Routine: Sub_E81B ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10287,7 +11121,7 @@ Sub_E7FB: ; ----------------------------------------------------------------------------- Sub_E81B: dec $0389,x ; CPU:$E81B PRG:681B DE 89 03 - bne Sub_E7EE ; CPU:$E81E PRG:681E D0 CE + bne Sub_E7EE ; CPU:$E81E PRG:681E D0 CE lda $0384,x ; CPU:$E820 PRG:6820 BD 84 03 sec ; CPU:$E823 PRG:6823 38 sbc #$08 ; CPU:$E824 PRG:6824 E9 08 @@ -10320,9 +11154,9 @@ DispatchJsrLdaSubStore: sec ; CPU:$E837 PRG:6837 38 sbc #$08 ; CPU:$E838 PRG:6838 E9 08 sta $0387,x ; CPU:$E83A PRG:683A 9D 87 03 - bcs Sub_E845 ; CPU:$E83D PRG:683D B0 06 + bcs Sub_E845 ; CPU:$E83D PRG:683D B0 06 dec $0386,x ; CPU:$E83F PRG:683F DE 86 03 - jmp DispatchJsrG ; CPU:$E842 PRG:6842 4C 4F E8 + jmp DispatchJsrG ; CPU:$E842 PRG:6842 4C 4F E8 ; ----------------------------------------------------------------------------- ; Routine: Sub_E845 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10335,8 +11169,8 @@ DispatchJsrLdaSubStore: Sub_E845: lda $0384,x ; CPU:$E845 PRG:6845 BD 84 03 cmp #$F1 ; CPU:$E848 PRG:6848 C9 F1 - bcc DispatchJsrG ; CPU:$E84A PRG:684A 90 03 - jmp DispatchJsrLdaSubStore ; CPU:$E84C PRG:684C 4C 31 E8 + bcc DispatchJsrG ; CPU:$E84A PRG:684A 90 03 + jmp DispatchJsrLdaSubStore ; CPU:$E84C PRG:684C 4C 31 E8 ; ----------------------------------------------------------------------------- ; Routine: DispatchJsrG ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10347,7 +11181,7 @@ Sub_E845: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchJsrG: - jsr DispatchLdaI ; CPU:$E84F PRG:684F 20 E5 EB + jsr DispatchLdaI ; CPU:$E84F PRG:684F 20 E5 EB ; ---- data $E852-$E852 (1 bytes) ---- .byte $4C ; CPU:$E852 PRG:6852 4C ; ----------------------------------------------------------------------------- @@ -10360,7 +11194,7 @@ DispatchJsrG: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E853: - and (SpriteAttr),y ; CPU:$E853 PRG:6853 31 E8 + and (SpriteAttr),y ; CPU:$E853 PRG:6853 31 E8 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaCmpBcsCmpBcs ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10373,19 +11207,19 @@ Sub_E853: DispatchLdaCmpBcsCmpBcs: lda $0389,x ; CPU:$E855 PRG:6855 BD 89 03 cmp #$78 ; CPU:$E858 PRG:6858 C9 78 - bcs DispatchDecLdaBplIncInc ; CPU:$E85A PRG:685A B0 2B + bcs DispatchDecLdaBplIncInc ; CPU:$E85A PRG:685A B0 2B cmp #$5A ; CPU:$E85C PRG:685C C9 5A - bcs Sub_E883 ; CPU:$E85E PRG:685E B0 23 + bcs Sub_E883 ; CPU:$E85E PRG:685E B0 23 cmp #$41 ; CPU:$E860 PRG:6860 C9 41 - bcs Sub_E87E ; CPU:$E862 PRG:6862 B0 1A + bcs Sub_E87E ; CPU:$E862 PRG:6862 B0 1A lsr a ; CPU:$E864 PRG:6864 4A lsr a ; CPU:$E865 PRG:6865 4A lsr a ; CPU:$E866 PRG:6866 4A tay ; CPU:$E867 PRG:6867 A8 lda $038B,x ; CPU:$E868 PRG:6868 BD 8B 03 - bpl Sub_E873 ; CPU:$E86B PRG:686B 10 06 + bpl Sub_E873 ; CPU:$E86B PRG:686B 10 06 lda $E680,y ; CPU:$E86D PRG:686D B9 80 E6 - jmp DispatchCmpBeqLda ; CPU:$E870 PRG:6870 4C 76 E8 + jmp DispatchCmpBeqLda ; CPU:$E870 PRG:6870 4C 76 E8 ; ----------------------------------------------------------------------------- ; Routine: Sub_E873 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10408,7 +11242,7 @@ Sub_E873: ; ----------------------------------------------------------------------------- DispatchCmpBeqLda: cmp $038A,x ; CPU:$E876 PRG:6876 DD 8A 03 - beq Sub_E89F ; CPU:$E879 PRG:6879 F0 24 + beq Sub_E89F ; CPU:$E879 PRG:6879 F0 24 lda $0389,x ; CPU:$E87B PRG:687B BD 89 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_E87E @@ -10421,7 +11255,7 @@ DispatchCmpBeqLda: ; ----------------------------------------------------------------------------- Sub_E87E: and #$03 ; CPU:$E87E PRG:687E 29 03 - beq DispatchDecLdaBplIncInc ; CPU:$E880 PRG:6880 F0 05 + beq DispatchDecLdaBplIncInc ; CPU:$E880 PRG:6880 F0 05 rts ; CPU:$E882 PRG:6882 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_E883 @@ -10434,7 +11268,7 @@ Sub_E87E: ; ----------------------------------------------------------------------------- Sub_E883: and #$01 ; CPU:$E883 PRG:6883 29 01 - bne Sub_E89F ; CPU:$E885 PRG:6885 D0 18 + bne Sub_E89F ; CPU:$E885 PRG:6885 D0 18 ; ----------------------------------------------------------------------------- ; Routine: DispatchDecLdaBplIncInc ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10447,7 +11281,7 @@ Sub_E883: DispatchDecLdaBplIncInc: dec $038A,x ; CPU:$E887 PRG:6887 DE 8A 03 lda $038B,x ; CPU:$E88A PRG:688A BD 8B 03 - bpl Sub_E895 ; CPU:$E88D PRG:688D 10 06 + bpl Sub_E895 ; CPU:$E88D PRG:688D 10 06 inc $038A,x ; CPU:$E88F PRG:688F FE 8A 03 inc $038A,x ; CPU:$E892 PRG:6892 FE 8A 03 ; ----------------------------------------------------------------------------- @@ -10501,13 +11335,13 @@ DispatchLdyB: Sub_E8AB: lda $0385,x ; CPU:$E8AB PRG:68AB BD 85 03 sec ; CPU:$E8AE PRG:68AE 38 - sbc ObjectYLo ; CPU:$E8AF PRG:68AF E5 35 + sbc ObjectYLo ; CPU:$E8AF PRG:68AF E5 35 sta $0385,x ; CPU:$E8B1 PRG:68B1 9D 85 03 lda $0384,x ; CPU:$E8B4 PRG:68B4 BD 84 03 - sbc ObjectYHi ; CPU:$E8B7 PRG:68B7 E5 36 + sbc ObjectYHi ; CPU:$E8B7 PRG:68B7 E5 36 sta $0384,x ; CPU:$E8B9 PRG:68B9 9D 84 03 dey ; CPU:$E8BC PRG:68BC 88 - bne Sub_E8AB ; CPU:$E8BD PRG:68BD D0 EC + bne Sub_E8AB ; CPU:$E8BD PRG:68BD D0 EC rts ; CPU:$E8BF PRG:68BF 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdyC @@ -10532,13 +11366,13 @@ DispatchLdyC: Sub_E8C2: lda $0385,x ; CPU:$E8C2 PRG:68C2 BD 85 03 clc ; CPU:$E8C5 PRG:68C5 18 - adc ObjectYLo ; CPU:$E8C6 PRG:68C6 65 35 + adc ObjectYLo ; CPU:$E8C6 PRG:68C6 65 35 sta $0385,x ; CPU:$E8C8 PRG:68C8 9D 85 03 lda $0384,x ; CPU:$E8CB PRG:68CB BD 84 03 - adc ObjectYHi ; CPU:$E8CE PRG:68CE 65 36 + adc ObjectYHi ; CPU:$E8CE PRG:68CE 65 36 sta $0384,x ; CPU:$E8D0 PRG:68D0 9D 84 03 dey ; CPU:$E8D3 PRG:68D3 88 - bne Sub_E8C2 ; CPU:$E8D4 PRG:68D4 D0 EC + bne Sub_E8C2 ; CPU:$E8D4 PRG:68D4 D0 EC rts ; CPU:$E8D6 PRG:68D6 60 ; ---- data $E8D7-$E982 (172 bytes) ---- .byte $20, $46, $E1, $A9, $00, $9D, $82, $03, $A9, $06, $20, $E3, $EC, $20, $5C, $F5 ; CPU:$E8D7 PRG:68D7 20 46 E1 A9 00 9D 82 03 A9 06 20 E3 EC 20 5C F5 @@ -10578,7 +11412,7 @@ Sub_E983: DispatchLdaOraBeq: lda $0386,x ; CPU:$E98B PRG:698B BD 86 03 ora $0383,x ; CPU:$E98E PRG:698E 1D 83 03 - beq Sub_E998 ; CPU:$E991 PRG:6991 F0 05 + beq Sub_E998 ; CPU:$E991 PRG:6991 F0 05 ; ----------------------------------------------------------------------------- ; Routine: Sub_E993 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10591,7 +11425,7 @@ DispatchLdaOraBeq: Sub_E993: pla ; CPU:$E993 PRG:6993 68 pla ; CPU:$E994 PRG:6994 68 - jmp DispatchJsrTaxLsrs ; CPU:$E995 PRG:6995 4C 15 DF + jmp DispatchJsrTaxLsrs ; CPU:$E995 PRG:6995 4C 15 DF ; ----------------------------------------------------------------------------- ; Routine: Sub_E998 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10604,10 +11438,10 @@ Sub_E993: Sub_E998: lda $0384,x ; CPU:$E998 PRG:6998 BD 84 03 cmp #$F8 ; CPU:$E99B PRG:699B C9 F8 - bcs Sub_E993 ; CPU:$E99D PRG:699D B0 F4 + bcs Sub_E993 ; CPU:$E99D PRG:699D B0 F4 lda $0387,x ; CPU:$E99F PRG:699F BD 87 03 - ldy ObjectDeltaX ; CPU:$E9A2 PRG:69A2 A4 2D - beq Sub_E9CB ; CPU:$E9A4 PRG:69A4 F0 25 + ldy ObjectDeltaX ; CPU:$E9A2 PRG:69A2 A4 2D + beq Sub_E9CB ; CPU:$E9A4 PRG:69A4 F0 25 sta $0700,y ; CPU:$E9A6 PRG:69A6 99 00 07 iny ; CPU:$E9A9 PRG:69A9 C8 lda #$DC ; CPU:$E9AA PRG:69AA A9 DC @@ -10623,10 +11457,10 @@ Sub_E998: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_E9B0: - lda GameSubMode ; CPU:$E9B0 PRG:69B0 A5 1B + lda GameSubMode ; CPU:$E9B0 PRG:69B0 A5 1B lsr a ; CPU:$E9B2 PRG:69B2 4A and #$08 ; CPU:$E9B3 PRG:69B3 29 08 - eor GameSubMode ; CPU:$E9B5 PRG:69B5 45 1B + eor GameSubMode ; CPU:$E9B5 PRG:69B5 45 1B asl a ; CPU:$E9B7 PRG:69B7 0A asl a ; CPU:$E9B8 PRG:69B8 0A asl a ; CPU:$E9B9 PRG:69B9 0A @@ -10637,7 +11471,7 @@ Sub_E9B0: lda $0384,x ; CPU:$E9C2 PRG:69C2 BD 84 03 sta $0700,y ; CPU:$E9C5 PRG:69C5 99 00 07 iny ; CPU:$E9C8 PRG:69C8 C8 - sty ObjectDeltaX ; CPU:$E9C9 PRG:69C9 84 2D + sty ObjectDeltaX ; CPU:$E9C9 PRG:69C9 84 2D ; ----------------------------------------------------------------------------- ; Routine: Sub_E9CB ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10671,14 +11505,14 @@ DispatchLdyD: ; ----------------------------------------------------------------------------- Sub_E9CE: lda $02A6,y ; CPU:$E9CE PRG:69CE B9 A6 02 - beq Sub_E9F5 ; CPU:$E9D1 PRG:69D1 F0 22 + beq Sub_E9F5 ; CPU:$E9D1 PRG:69D1 F0 22 lda $0384,x ; CPU:$E9D3 PRG:69D3 BD 84 03 sec ; CPU:$E9D6 PRG:69D6 38 sbc $02A7,y ; CPU:$E9D7 PRG:69D7 F9 A7 02 clc ; CPU:$E9DA PRG:69DA 18 adc #$06 ; CPU:$E9DB PRG:69DB 69 06 cmp #$15 ; CPU:$E9DD PRG:69DD C9 15 - bcs Sub_E9F5 ; CPU:$E9DF PRG:69DF B0 14 + bcs Sub_E9F5 ; CPU:$E9DF PRG:69DF B0 14 lda $0387,x ; CPU:$E9E1 PRG:69E1 BD 87 03 sec ; CPU:$E9E4 PRG:69E4 38 sbc $02A8,y ; CPU:$E9E5 PRG:69E5 F9 A8 02 @@ -10699,7 +11533,7 @@ Sub_E9CE: Sub_E9EE: asl ZpA9 ; CPU:$E9EE PRG:69EE 06 A9 ora (Zp99,x) ; CPU:$E9F0 PRG:69F0 01 99 - ldx ScrollX ; CPU:$E9F2 PRG:69F2 A6 02 + ldx ScrollX ; CPU:$E9F2 PRG:69F2 A6 02 rts ; CPU:$E9F4 PRG:69F4 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_E9F5 @@ -10715,23 +11549,23 @@ Sub_E9F5: iny ; CPU:$E9F6 PRG:69F6 C8 iny ; CPU:$E9F7 PRG:69F7 C8 cpy #$09 ; CPU:$E9F8 PRG:69F8 C0 09 - bne Sub_E9CE ; CPU:$E9FA PRG:69FA D0 D2 + bne Sub_E9CE ; CPU:$E9FA PRG:69FA D0 D2 lda Zp3B ; CPU:$E9FC PRG:69FC A5 3B - bne Sub_EA1F ; CPU:$E9FE PRG:69FE D0 1F + bne Sub_EA1F ; CPU:$E9FE PRG:69FE D0 1F lda $0384,x ; CPU:$EA00 PRG:6A00 BD 84 03 sec ; CPU:$EA03 PRG:6A03 38 sbc Zp23 ; CPU:$EA04 PRG:6A04 E5 23 clc ; CPU:$EA06 PRG:6A06 18 adc #$02 ; CPU:$EA07 PRG:6A07 69 02 cmp #$0D ; CPU:$EA09 PRG:6A09 C9 0D - bcs Sub_EA1F ; CPU:$EA0B PRG:6A0B B0 12 + bcs Sub_EA1F ; CPU:$EA0B PRG:6A0B B0 12 lda $0387,x ; CPU:$EA0D PRG:6A0D BD 87 03 sec ; CPU:$EA10 PRG:6A10 38 sbc Zp24 ; CPU:$EA11 PRG:6A11 E5 24 clc ; CPU:$EA13 PRG:6A13 18 adc #$02 ; CPU:$EA14 PRG:6A14 69 02 cmp #$0D ; CPU:$EA16 PRG:6A16 C9 0D - bcs Sub_EA1F ; CPU:$EA18 PRG:6A18 B0 05 + bcs Sub_EA1F ; CPU:$EA18 PRG:6A18 B0 05 inc $0611 ; CPU:$EA1A PRG:6A1A EE 11 06 inc Zp3B ; CPU:$EA1D PRG:6A1D E6 3B ; ----------------------------------------------------------------------------- @@ -10757,11 +11591,11 @@ Sub_EA1F: ; ----------------------------------------------------------------------------- DispatchJsrJsrJsrJsrLsrs4: jsr PopXY ; CPU:$EA22 PRG:6A22 20 6F DF - jsr DispatchAddStoreLda6 ; CPU:$EA25 PRG:6A25 20 3C EB - jsr DispatchLdaOraBeq ; CPU:$EA28 PRG:6A28 20 8B E9 - jsr DispatchLdyD ; CPU:$EA2B PRG:6A2B 20 CC E9 + jsr DispatchAddStoreLda6 ; CPU:$EA25 PRG:6A25 20 3C EB + jsr DispatchLdaOraBeq ; CPU:$EA28 PRG:6A28 20 8B E9 + jsr DispatchLdyD ; CPU:$EA2B PRG:6A2B 20 CC E9 lsr a ; CPU:$EA2E PRG:6A2E 4A - bcc Sub_EA3E ; CPU:$EA2F PRG:6A2F 90 0D + bcc Sub_EA3E ; CPU:$EA2F PRG:6A2F 90 0D lda #$01 ; CPU:$EA31 PRG:6A31 A9 01 sta $0609 ; CPU:$EA33 PRG:6A33 8D 09 06 sta $060A ; CPU:$EA36 PRG:6A36 8D 0A 06 @@ -10776,7 +11610,7 @@ DispatchJsrJsrJsrJsrLsrs4: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EA3B: - jsr ObjSpritesInit5 ; CPU:$EA3B PRG:6A3B 20 54 BF + jsr ObjSpritesInit5 ; CPU:$EA3B PRG:6A3B 20 54 BF ; ----------------------------------------------------------------------------- ; Routine: Sub_EA3E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10787,17 +11621,17 @@ Sub_EA3B: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EA3E: - jsr DispatchCheckLdaRts ; CPU:$EA3E PRG:6A3E 20 F8 D0 + jsr DispatchCheckLdaRts ; CPU:$EA3E PRG:6A3E 20 F8 D0 cmp $0384,x ; CPU:$EA41 PRG:6A41 DD 84 03 - beq DispatchJsrCmpBeqBcsLda2 ; CPU:$EA44 PRG:6A44 F0 21 - bcs Sub_EA59 ; CPU:$EA46 PRG:6A46 B0 11 + beq DispatchJsrCmpBeqBcsLda2 ; CPU:$EA44 PRG:6A44 F0 21 + bcs Sub_EA59 ; CPU:$EA46 PRG:6A46 B0 11 lda $038D,x ; CPU:$EA48 PRG:6A48 BD 8D 03 sec ; CPU:$EA4B PRG:6A4B 38 sbc #$20 ; CPU:$EA4C PRG:6A4C E9 20 sta $038D,x ; CPU:$EA4E PRG:6A4E 9D 8D 03 - bcs DispatchJsrCmpBeqBcsLda2 ; CPU:$EA51 PRG:6A51 B0 14 + bcs DispatchJsrCmpBeqBcsLda2 ; CPU:$EA51 PRG:6A51 B0 14 dec $038C,x ; CPU:$EA53 PRG:6A53 DE 8C 03 - jmp DispatchJsrCmpBeqBcsLda2 ; CPU:$EA56 PRG:6A56 4C 67 EA + jmp DispatchJsrCmpBeqBcsLda2 ; CPU:$EA56 PRG:6A56 4C 67 EA ; ----------------------------------------------------------------------------- ; Routine: Sub_EA59 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10812,7 +11646,7 @@ Sub_EA59: clc ; CPU:$EA5C PRG:6A5C 18 adc #$20 ; CPU:$EA5D PRG:6A5D 69 20 sta $038D,x ; CPU:$EA5F PRG:6A5F 9D 8D 03 - bcc DispatchJsrCmpBeqBcsLda2 ; CPU:$EA62 PRG:6A62 90 03 + bcc DispatchJsrCmpBeqBcsLda2 ; CPU:$EA62 PRG:6A62 90 03 inc $038C,x ; CPU:$EA64 PRG:6A64 FE 8C 03 ; ----------------------------------------------------------------------------- ; Routine: DispatchJsrCmpBeqBcsLda2 @@ -10824,17 +11658,17 @@ Sub_EA59: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchJsrCmpBeqBcsLda2: - jsr DispatchCheckLdaRts2 ; CPU:$EA67 PRG:6A67 20 02 D1 + jsr DispatchCheckLdaRts2 ; CPU:$EA67 PRG:6A67 20 02 D1 cmp $0387,x ; CPU:$EA6A PRG:6A6A DD 87 03 - beq DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA6D PRG:6A6D F0 B3 - bcs Sub_EA82 ; CPU:$EA6F PRG:6A6F B0 11 + beq DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA6D PRG:6A6D F0 B3 + bcs Sub_EA82 ; CPU:$EA6F PRG:6A6F B0 11 lda $038F,x ; CPU:$EA71 PRG:6A71 BD 8F 03 sec ; CPU:$EA74 PRG:6A74 38 sbc #$20 ; CPU:$EA75 PRG:6A75 E9 20 sta $038F,x ; CPU:$EA77 PRG:6A77 9D 8F 03 - bcs DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA7A PRG:6A7A B0 A6 + bcs DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA7A PRG:6A7A B0 A6 dec $038E,x ; CPU:$EA7C PRG:6A7C DE 8E 03 - jmp DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA7F PRG:6A7F 4C 22 EA + jmp DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA7F PRG:6A7F 4C 22 EA ; ----------------------------------------------------------------------------- ; Routine: Sub_EA82 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10849,9 +11683,9 @@ Sub_EA82: clc ; CPU:$EA85 PRG:6A85 18 adc #$20 ; CPU:$EA86 PRG:6A86 69 20 sta $038F,x ; CPU:$EA88 PRG:6A88 9D 8F 03 - bcc DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA8B PRG:6A8B 90 95 + bcc DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA8B PRG:6A8B 90 95 inc $038E,x ; CPU:$EA8D PRG:6A8D FE 8E 03 - jmp DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA90 PRG:6A90 4C 22 EA + jmp DispatchJsrJsrJsrJsrLsrs4 ; CPU:$EA90 PRG:6A90 4C 22 EA ; ---- data $EA93-$EA9E (12 bytes) ---- .byte $14, $DF, $00, $00, $00, $00, $14, $DF, $00, $00, $00, $00 ; CPU:$EA93 PRG:6A93 14 DF 00 00 00 00 14 DF 00 00 00 00 ; ----------------------------------------------------------------------------- @@ -10902,7 +11736,7 @@ Sub_EAE3: DispatchJsrIncBneInc: jsr PopXY ; CPU:$EAE9 PRG:6AE9 20 6F DF inc $0387,x ; CPU:$EAEC PRG:6AEC FE 87 03 - bne Sub_EAF4 ; CPU:$EAEF PRG:6AEF D0 03 + bne Sub_EAF4 ; CPU:$EAEF PRG:6AEF D0 03 inc $0386,x ; CPU:$EAF1 PRG:6AF1 FE 86 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_EAF4 @@ -10915,9 +11749,9 @@ DispatchJsrIncBneInc: ; ----------------------------------------------------------------------------- Sub_EAF4: lda $0386,x ; CPU:$EAF4 PRG:6AF4 BD 86 03 - beq Sub_EAFE ; CPU:$EAF7 PRG:6AF7 F0 05 - bmi DispatchJsrIncBneInc ; CPU:$EAF9 PRG:6AF9 30 EE - jmp DispatchJsrTaxLsrs ; CPU:$EAFB PRG:6AFB 4C 15 DF + beq Sub_EAFE ; CPU:$EAF7 PRG:6AF7 F0 05 + bmi DispatchJsrIncBneInc ; CPU:$EAF9 PRG:6AF9 30 EE + jmp DispatchJsrTaxLsrs ; CPU:$EAFB PRG:6AFB 4C 15 DF ; ----------------------------------------------------------------------------- ; Routine: Sub_EAFE ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -10928,9 +11762,9 @@ Sub_EAF4: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EAFE: - jsr DispatchLdyE ; CPU:$EAFE PRG:6AFE 20 87 EB + jsr DispatchLdyE ; CPU:$EAFE PRG:6AFE 20 87 EB lsr a ; CPU:$EB01 PRG:6B01 4A - bcc Sub_EB0C ; CPU:$EB02 PRG:6B02 90 08 + bcc Sub_EB0C ; CPU:$EB02 PRG:6B02 90 08 lda #$01 ; CPU:$EB04 PRG:6B04 A9 01 sta $0607 ; CPU:$EB06 PRG:6B06 8D 07 06 sta $0608 ; CPU:$EB09 PRG:6B09 8D 08 06 @@ -10948,9 +11782,9 @@ Sub_EB0C: clc ; CPU:$EB0F PRG:6B0F 18 adc #$08 ; CPU:$EB10 PRG:6B10 69 08 sta $0384,x ; CPU:$EB12 PRG:6B12 9D 84 03 - jsr DispatchLdyE ; CPU:$EB15 PRG:6B15 20 87 EB + jsr DispatchLdyE ; CPU:$EB15 PRG:6B15 20 87 EB lsr a ; CPU:$EB18 PRG:6B18 4A - bcc Sub_EB21 ; CPU:$EB19 PRG:6B19 90 06 + bcc Sub_EB21 ; CPU:$EB19 PRG:6B19 90 06 inc $0607 ; CPU:$EB1B PRG:6B1B EE 07 06 ; ----------------------------------------------------------------------------- ; Routine: Sub_EB1E @@ -10980,7 +11814,7 @@ Sub_EB21: txa ; CPU:$EB2A PRG:6B2A 8A lsr a ; CPU:$EB2B PRG:6B2B 4A clc ; CPU:$EB2C PRG:6B2C 18 - adc GameSubMode ; CPU:$EB2D PRG:6B2D 65 1B + adc GameSubMode ; CPU:$EB2D PRG:6B2D 65 1B lsr a ; CPU:$EB2F PRG:6B2F 4A ; ----------------------------------------------------------------------------- ; Routine: Sub_EB30 @@ -10996,8 +11830,8 @@ Sub_EB30: lsr a ; CPU:$EB31 PRG:6B31 4A and #$03 ; CPU:$EB32 PRG:6B32 29 03 ora #$04 ; CPU:$EB34 PRG:6B34 09 04 - jsr DispatchLsrsTayStoreLda ; CPU:$EB36 PRG:6B36 20 E8 EB - jmp DispatchJsrIncBneInc ; CPU:$EB39 PRG:6B39 4C E9 EA + jsr DispatchLsrsTayStoreLda ; CPU:$EB36 PRG:6B36 20 E8 EB + jmp DispatchJsrIncBneInc ; CPU:$EB39 PRG:6B39 4C E9 EA ; ----------------------------------------------------------------------------- ; Routine: DispatchAddStoreLda6 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11016,9 +11850,9 @@ DispatchAddStoreLda6: adc $0384,x ; CPU:$EB49 PRG:6B49 7D 84 03 sta $0384,x ; CPU:$EB4C PRG:6B4C 9D 84 03 lda $038C,x ; CPU:$EB4F PRG:6B4F BD 8C 03 - bpl Sub_EB59 ; CPU:$EB52 PRG:6B52 10 05 + bpl Sub_EB59 ; CPU:$EB52 PRG:6B52 10 05 lda #$FF ; CPU:$EB54 PRG:6B54 A9 FF - jmp DispatchAdcStoreLdaAdd2 ; CPU:$EB56 PRG:6B56 4C 5B EB + jmp DispatchAdcStoreLdaAdd2 ; CPU:$EB56 PRG:6B56 4C 5B EB ; ----------------------------------------------------------------------------- ; Routine: Sub_EB59 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11050,9 +11884,9 @@ DispatchAdcStoreLdaAdd2: adc $0387,x ; CPU:$EB6E PRG:6B6E 7D 87 03 sta $0387,x ; CPU:$EB71 PRG:6B71 9D 87 03 lda $038E,x ; CPU:$EB74 PRG:6B74 BD 8E 03 - bpl Sub_EB7E ; CPU:$EB77 PRG:6B77 10 05 + bpl Sub_EB7E ; CPU:$EB77 PRG:6B77 10 05 lda #$FF ; CPU:$EB79 PRG:6B79 A9 FF - jmp DispatchAdcStoreRts2 ; CPU:$EB7B PRG:6B7B 4C 80 EB + jmp DispatchAdcStoreRts2 ; CPU:$EB7B PRG:6B7B 4C 80 EB ; ----------------------------------------------------------------------------- ; Routine: Sub_EB7E ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11099,25 +11933,25 @@ DispatchLdyE: ; ----------------------------------------------------------------------------- Sub_EB89: lda $02A6,y ; CPU:$EB89 PRG:6B89 B9 A6 02 - beq Sub_EBB8 ; CPU:$EB8C PRG:6B8C F0 2A + beq Sub_EBB8 ; CPU:$EB8C PRG:6B8C F0 2A lda $0384,x ; CPU:$EB8E PRG:6B8E BD 84 03 sec ; CPU:$EB91 PRG:6B91 38 sbc $02A7,y ; CPU:$EB92 PRG:6B92 F9 A7 02 clc ; CPU:$EB95 PRG:6B95 18 adc #$0E ; CPU:$EB96 PRG:6B96 69 0E cmp #$1D ; CPU:$EB98 PRG:6B98 C9 1D - bcs Sub_EBB8 ; CPU:$EB9A PRG:6B9A B0 1C + bcs Sub_EBB8 ; CPU:$EB9A PRG:6B9A B0 1C lda $0387,x ; CPU:$EB9C PRG:6B9C BD 87 03 cmp #$F0 ; CPU:$EB9F PRG:6B9F C9 F0 - bcs Sub_EBB8 ; CPU:$EBA1 PRG:6BA1 B0 15 + bcs Sub_EBB8 ; CPU:$EBA1 PRG:6BA1 B0 15 cmp #$10 ; CPU:$EBA3 PRG:6BA3 C9 10 - bcc Sub_EBB8 ; CPU:$EBA5 PRG:6BA5 90 11 + bcc Sub_EBB8 ; CPU:$EBA5 PRG:6BA5 90 11 sec ; CPU:$EBA7 PRG:6BA7 38 sbc $02A8,y ; CPU:$EBA8 PRG:6BA8 F9 A8 02 clc ; CPU:$EBAB PRG:6BAB 18 adc #$0E ; CPU:$EBAC PRG:6BAC 69 0E cmp #$25 ; CPU:$EBAE PRG:6BAE C9 25 - bcs Sub_EBB8 ; CPU:$EBB0 PRG:6BB0 B0 06 + bcs Sub_EBB8 ; CPU:$EBB0 PRG:6BB0 B0 06 lda #$01 ; CPU:$EBB2 PRG:6BB2 A9 01 sta $02A6,y ; CPU:$EBB4 PRG:6BB4 99 A6 02 rts ; CPU:$EBB7 PRG:6BB7 60 @@ -11135,23 +11969,23 @@ Sub_EBB8: iny ; CPU:$EBB9 PRG:6BB9 C8 iny ; CPU:$EBBA PRG:6BBA C8 cpy #$09 ; CPU:$EBBB PRG:6BBB C0 09 - bne Sub_EB89 ; CPU:$EBBD PRG:6BBD D0 CA + bne Sub_EB89 ; CPU:$EBBD PRG:6BBD D0 CA lda Zp3B ; CPU:$EBBF PRG:6BBF A5 3B - bne Sub_EBE2 ; CPU:$EBC1 PRG:6BC1 D0 1F + bne Sub_EBE2 ; CPU:$EBC1 PRG:6BC1 D0 1F lda $0384,x ; CPU:$EBC3 PRG:6BC3 BD 84 03 sec ; CPU:$EBC6 PRG:6BC6 38 sbc Zp23 ; CPU:$EBC7 PRG:6BC7 E5 23 clc ; CPU:$EBC9 PRG:6BC9 18 adc #$0B ; CPU:$EBCA PRG:6BCA 69 0B cmp #$17 ; CPU:$EBCC PRG:6BCC C9 17 - bcs Sub_EBE2 ; CPU:$EBCE PRG:6BCE B0 12 + bcs Sub_EBE2 ; CPU:$EBCE PRG:6BCE B0 12 lda $0387,x ; CPU:$EBD0 PRG:6BD0 BD 87 03 sec ; CPU:$EBD3 PRG:6BD3 38 sbc Zp24 ; CPU:$EBD4 PRG:6BD4 E5 24 clc ; CPU:$EBD6 PRG:6BD6 18 adc #$0B ; CPU:$EBD7 PRG:6BD7 69 0B cmp #$17 ; CPU:$EBD9 PRG:6BD9 C9 17 - bcs Sub_EBE2 ; CPU:$EBDB PRG:6BDB B0 05 + bcs Sub_EBE2 ; CPU:$EBDB PRG:6BDB B0 05 inc $0611 ; CPU:$EBDD PRG:6BDD EE 11 06 inc Zp3B ; CPU:$EBE0 PRG:6BE0 E6 3B ; ----------------------------------------------------------------------------- @@ -11190,15 +12024,15 @@ DispatchLsrsTayStoreLda: asl a ; CPU:$EBE8 PRG:6BE8 0A tay ; CPU:$EBE9 PRG:6BE9 A8 lda $ED8C,y ; CPU:$EBEA PRG:6BEA B9 8C ED - sta VramPtrLo ; CPU:$EBED PRG:6BED 85 04 + sta VramPtrLo ; CPU:$EBED PRG:6BED 85 04 lda $ED8D,y ; CPU:$EBEF PRG:6BEF B9 8D ED - sta VramCopyCount ; CPU:$EBF2 PRG:6BF2 85 05 + sta VramCopyCount ; CPU:$EBF2 PRG:6BF2 85 05 lda $0386,x ; CPU:$EBF4 PRG:6BF4 BD 86 03 ora $0383,x ; CPU:$EBF7 PRG:6BF7 1D 83 03 - bne Sub_EC03 ; CPU:$EBFA PRG:6BFA D0 07 + bne Sub_EC03 ; CPU:$EBFA PRG:6BFA D0 07 lda $0384,x ; CPU:$EBFC PRG:6BFC BD 84 03 cmp #$F1 ; CPU:$EBFF PRG:6BFF C9 F1 - bcc Sub_EC08 ; CPU:$EC01 PRG:6C01 90 05 + bcc Sub_EC08 ; CPU:$EC01 PRG:6C01 90 05 ; ----------------------------------------------------------------------------- ; Routine: Sub_EC03 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11211,7 +12045,7 @@ DispatchLsrsTayStoreLda: Sub_EC03: pla ; CPU:$EC03 PRG:6C03 68 pla ; CPU:$EC04 PRG:6C04 68 - jmp DispatchJsrTaxLsrs ; CPU:$EC05 PRG:6C05 4C 15 DF + jmp DispatchJsrTaxLsrs ; CPU:$EC05 PRG:6C05 4C 15 DF ; ----------------------------------------------------------------------------- ; Routine: Sub_EC08 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11224,21 +12058,21 @@ Sub_EC03: Sub_EC08: lda $0387,x ; CPU:$EC08 PRG:6C08 BD 87 03 ldy #$00 ; CPU:$EC0B PRG:6C0B A0 00 - lda (VramPtrLo),y ; CPU:$EC0D PRG:6C0D B1 04 - sta ObjUpdateFlag ; CPU:$EC0F PRG:6C0F 85 0E + lda (VramPtrLo),y ; CPU:$EC0D PRG:6C0D B1 04 + sta ObjUpdateFlag ; CPU:$EC0F PRG:6C0F 85 0E lda $0384,x ; CPU:$EC11 PRG:6C11 BD 84 03 sta Zp33 ; CPU:$EC14 PRG:6C14 85 33 lda $0387,x ; CPU:$EC16 PRG:6C16 BD 87 03 sta Zp34 ; CPU:$EC19 PRG:6C19 85 34 - stx ObjPtr ; CPU:$EC1B PRG:6C1B 86 13 - ldx ObjectDeltaX ; CPU:$EC1D PRG:6C1D A6 2D - beq Sub_EC2A ; CPU:$EC1F PRG:6C1F F0 09 - lda ObjUpdateFlag ; CPU:$EC21 PRG:6C21 A5 0E + stx ObjPtr ; CPU:$EC1B PRG:6C1B 86 13 + ldx ObjectDeltaX ; CPU:$EC1D PRG:6C1D A6 2D + beq Sub_EC2A ; CPU:$EC1F PRG:6C1F F0 09 + lda ObjUpdateFlag ; CPU:$EC21 PRG:6C21 A5 0E asl a ; CPU:$EC23 PRG:6C23 0A asl a ; CPU:$EC24 PRG:6C24 0A clc ; CPU:$EC25 PRG:6C25 18 - adc ObjectDeltaX ; CPU:$EC26 PRG:6C26 65 2D - bcc Sub_EC34 ; CPU:$EC28 PRG:6C28 90 0A + adc ObjectDeltaX ; CPU:$EC26 PRG:6C26 65 2D + bcc Sub_EC34 ; CPU:$EC28 PRG:6C28 90 0A ; ----------------------------------------------------------------------------- ; Routine: Sub_EC2A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11249,7 +12083,7 @@ Sub_EC08: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EC2A: - ldx ObjPtr ; CPU:$EC2A PRG:6C2A A6 13 + ldx ObjPtr ; CPU:$EC2A PRG:6C2A A6 13 rts ; CPU:$EC2C PRG:6C2C 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_EC2D @@ -11264,8 +12098,8 @@ Sub_EC2D: iny ; CPU:$EC2D PRG:6C2D C8 iny ; CPU:$EC2E PRG:6C2E C8 iny ; CPU:$EC2F PRG:6C2F C8 - dec ObjUpdateFlag ; CPU:$EC30 PRG:6C30 C6 0E - beq Sub_EC64 ; CPU:$EC32 PRG:6C32 F0 30 + dec ObjUpdateFlag ; CPU:$EC30 PRG:6C30 C6 0E + beq Sub_EC64 ; CPU:$EC32 PRG:6C32 F0 30 ; ----------------------------------------------------------------------------- ; Routine: Sub_EC34 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11277,11 +12111,11 @@ Sub_EC2D: ; ----------------------------------------------------------------------------- Sub_EC34: iny ; CPU:$EC34 PRG:6C34 C8 - lda (VramPtrLo),y ; CPU:$EC35 PRG:6C35 B1 04 - bmi Sub_EC41 ; CPU:$EC37 PRG:6C37 30 08 + lda (VramPtrLo),y ; CPU:$EC35 PRG:6C35 B1 04 + bmi Sub_EC41 ; CPU:$EC37 PRG:6C37 30 08 clc ; CPU:$EC39 PRG:6C39 18 adc Zp34 ; CPU:$EC3A PRG:6C3A 65 34 - bcs Sub_EC2D ; CPU:$EC3C PRG:6C3C B0 EF + bcs Sub_EC2D ; CPU:$EC3C PRG:6C3C B0 EF jmp DispatchStoreIncIncLdaStoreInc ; CPU:$EC3E PRG:6C3E 4C 44 EC ; ----------------------------------------------------------------------------- ; Routine: Sub_EC41 @@ -11308,21 +12142,21 @@ DispatchStoreIncIncLdaStoreInc: sta $0700,x ; CPU:$EC44 PRG:6C44 9D 00 07 inx ; CPU:$EC47 PRG:6C47 E8 iny ; CPU:$EC48 PRG:6C48 C8 - lda (VramPtrLo),y ; CPU:$EC49 PRG:6C49 B1 04 + lda (VramPtrLo),y ; CPU:$EC49 PRG:6C49 B1 04 sta $0700,x ; CPU:$EC4B PRG:6C4B 9D 00 07 inx ; CPU:$EC4E PRG:6C4E E8 iny ; CPU:$EC4F PRG:6C4F C8 - lda (VramPtrLo),y ; CPU:$EC50 PRG:6C50 B1 04 + lda (VramPtrLo),y ; CPU:$EC50 PRG:6C50 B1 04 sta $0700,x ; CPU:$EC52 PRG:6C52 9D 00 07 inx ; CPU:$EC55 PRG:6C55 E8 iny ; CPU:$EC56 PRG:6C56 C8 - lda (VramPtrLo),y ; CPU:$EC57 PRG:6C57 B1 04 + lda (VramPtrLo),y ; CPU:$EC57 PRG:6C57 B1 04 clc ; CPU:$EC59 PRG:6C59 18 adc Zp33 ; CPU:$EC5A PRG:6C5A 65 33 sta $0700,x ; CPU:$EC5C PRG:6C5C 9D 00 07 inx ; CPU:$EC5F PRG:6C5F E8 - dec ObjUpdateFlag ; CPU:$EC60 PRG:6C60 C6 0E - bne Sub_EC34 ; CPU:$EC62 PRG:6C62 D0 D0 + dec ObjUpdateFlag ; CPU:$EC60 PRG:6C60 C6 0E + bne Sub_EC34 ; CPU:$EC62 PRG:6C62 D0 D0 ; ----------------------------------------------------------------------------- ; Routine: Sub_EC64 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11333,8 +12167,8 @@ DispatchStoreIncIncLdaStoreInc: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EC64: - stx ObjectDeltaX ; CPU:$EC64 PRG:6C64 86 2D - ldx ObjPtr ; CPU:$EC66 PRG:6C66 A6 13 + stx ObjectDeltaX ; CPU:$EC64 PRG:6C64 86 2D + ldx ObjPtr ; CPU:$EC66 PRG:6C66 A6 13 rts ; CPU:$EC68 PRG:6C68 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchStoreJsrSubBcsEor @@ -11347,26 +12181,26 @@ Sub_EC64: ; ----------------------------------------------------------------------------- DispatchStoreJsrSubBcsEor: sta Zp39 ; CPU:$EC69 PRG:6C69 85 39 - jsr DispatchCheckLdaRts ; CPU:$EC6B PRG:6C6B 20 F8 D0 + jsr DispatchCheckLdaRts ; CPU:$EC6B PRG:6C6B 20 F8 D0 sec ; CPU:$EC6E PRG:6C6E 38 sbc $0384,x ; CPU:$EC6F PRG:6C6F FD 84 03 - bcs Sub_ECA0 ; CPU:$EC72 PRG:6C72 B0 2C + bcs Sub_ECA0 ; CPU:$EC72 PRG:6C72 B0 2C eor #$FF ; CPU:$EC74 PRG:6C74 49 FF clc ; CPU:$EC76 PRG:6C76 18 adc #$01 ; CPU:$EC77 PRG:6C77 69 01 - sta ObjectXLo ; CPU:$EC79 PRG:6C79 85 37 - jsr DispatchCheckLdaRts2 ; CPU:$EC7B PRG:6C7B 20 02 D1 + sta ObjectXLo ; CPU:$EC79 PRG:6C79 85 37 + jsr DispatchCheckLdaRts2 ; CPU:$EC7B PRG:6C7B 20 02 D1 sec ; CPU:$EC7E PRG:6C7E 38 sbc $0387,x ; CPU:$EC7F PRG:6C7F FD 87 03 - bcs Sub_ECC3 ; CPU:$EC82 PRG:6C82 B0 3F + bcs Sub_ECC3 ; CPU:$EC82 PRG:6C82 B0 3F ldy $0386,x ; CPU:$EC84 PRG:6C84 BC 86 03 - bmi Sub_ECC3 ; CPU:$EC87 PRG:6C87 30 3A + bmi Sub_ECC3 ; CPU:$EC87 PRG:6C87 30 3A eor #$FF ; CPU:$EC89 PRG:6C89 49 FF clc ; CPU:$EC8B PRG:6C8B 18 adc #$01 ; CPU:$EC8C PRG:6C8C 69 01 - sta ObjectXHi ; CPU:$EC8E PRG:6C8E 85 38 - jsr DispatchJsrLdaCmpBccBneLda ; CPU:$EC90 PRG:6C90 20 5D ED - sta ObjPtr ; CPU:$EC93 PRG:6C93 85 13 + sta ObjectXHi ; CPU:$EC8E PRG:6C8E 85 38 + jsr DispatchJsrLdaCmpBccBneLda ; CPU:$EC90 PRG:6C90 20 5D ED + sta ObjPtr ; CPU:$EC93 PRG:6C93 85 13 ; ---- data $EC95-$EC95 (1 bytes) ---- .byte $A9 ; CPU:$EC95 PRG:6C95 A9 ; ----------------------------------------------------------------------------- @@ -11381,9 +12215,9 @@ DispatchStoreJsrSubBcsEor: Sub_EC96: clc ; CPU:$EC96 PRG:6C96 18 sec ; CPU:$EC97 PRG:6C97 38 - sbc ObjPtr ; CPU:$EC98 PRG:6C98 E5 13 + sbc ObjPtr ; CPU:$EC98 PRG:6C98 E5 13 sta $0382,x ; CPU:$EC9A PRG:6C9A 9D 82 03 - jmp $ECE5 ; CPU:$EC9D PRG:6C9D 4C E5 EC + jmp Sub_ECE5 ; CPU:$EC9D PRG:6C9D 4C E5 EC ; ----------------------------------------------------------------------------- ; Routine: Sub_ECA0 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11394,22 +12228,22 @@ Sub_EC96: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_ECA0: - sta ObjectXLo ; CPU:$ECA0 PRG:6CA0 85 37 - jsr DispatchCheckLdaRts2 ; CPU:$ECA2 PRG:6CA2 20 02 D1 + sta ObjectXLo ; CPU:$ECA0 PRG:6CA0 85 37 + jsr DispatchCheckLdaRts2 ; CPU:$ECA2 PRG:6CA2 20 02 D1 sec ; CPU:$ECA5 PRG:6CA5 38 sbc $0387,x ; CPU:$ECA6 PRG:6CA6 FD 87 03 - bcs Sub_ECD1 ; CPU:$ECA9 PRG:6CA9 B0 26 + bcs Sub_ECD1 ; CPU:$ECA9 PRG:6CA9 B0 26 ldy $0386,x ; CPU:$ECAB PRG:6CAB BC 86 03 - bmi Sub_ECD1 ; CPU:$ECAE PRG:6CAE 30 21 + bmi Sub_ECD1 ; CPU:$ECAE PRG:6CAE 30 21 eor #$FF ; CPU:$ECB0 PRG:6CB0 49 FF clc ; CPU:$ECB2 PRG:6CB2 18 adc #$01 ; CPU:$ECB3 PRG:6CB3 69 01 - sta ObjectXHi ; CPU:$ECB5 PRG:6CB5 85 38 - jsr DispatchJsrLdaCmpBccBneLda ; CPU:$ECB7 PRG:6CB7 20 5D ED + sta ObjectXHi ; CPU:$ECB5 PRG:6CB5 85 38 + jsr DispatchJsrLdaCmpBccBneLda ; CPU:$ECB7 PRG:6CB7 20 5D ED clc ; CPU:$ECBA PRG:6CBA 18 adc #$08 ; CPU:$ECBB PRG:6CBB 69 08 sta $0382,x ; CPU:$ECBD PRG:6CBD 9D 82 03 - jmp $ECE5 ; CPU:$ECC0 PRG:6CC0 4C E5 EC + jmp Sub_ECE5 ; CPU:$ECC0 PRG:6CC0 4C E5 EC ; ----------------------------------------------------------------------------- ; Routine: Sub_ECC3 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11420,12 +12254,12 @@ Sub_ECA0: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_ECC3: - sta ObjectXHi ; CPU:$ECC3 PRG:6CC3 85 38 - jsr DispatchJsrLdaCmpBccBneLda ; CPU:$ECC5 PRG:6CC5 20 5D ED + sta ObjectXHi ; CPU:$ECC3 PRG:6CC3 85 38 + jsr DispatchJsrLdaCmpBccBneLda ; CPU:$ECC5 PRG:6CC5 20 5D ED clc ; CPU:$ECC8 PRG:6CC8 18 adc #$18 ; CPU:$ECC9 PRG:6CC9 69 18 sta $0382,x ; CPU:$ECCB PRG:6CCB 9D 82 03 - jmp $ECE5 ; CPU:$ECCE PRG:6CCE 4C E5 EC + jmp Sub_ECE5 ; CPU:$ECCE PRG:6CCE 4C E5 EC ; ----------------------------------------------------------------------------- ; Routine: Sub_ECD1 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11436,26 +12270,14 @@ Sub_ECC3: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_ECD1: - sta ObjectXHi ; CPU:$ECD1 PRG:6CD1 85 38 - jsr DispatchJsrLdaCmpBccBneLda ; CPU:$ECD3 PRG:6CD3 20 5D ED - sta ObjPtr ; CPU:$ECD6 PRG:6CD6 85 13 -; ---- data $ECD8-$ECD8 (1 bytes) ---- - .byte $A9 ; CPU:$ECD8 PRG:6CD8 A9 -; ----------------------------------------------------------------------------- -; Routine: Sub_ECD9 -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -Sub_ECD9: - php ; CPU:$ECD9 PRG:6CD9 08 + sta ObjectXHi ; CPU:$ECD1 PRG:6CD1 85 38 + jsr DispatchJsrLdaCmpBccBneLda ; CPU:$ECD3 PRG:6CD3 20 5D ED + sta ObjPtr ; CPU:$ECD6 PRG:6CD6 85 13 + lda #$08 ; CPU:$ECD8 PRG:6CD8 A9 08 sec ; CPU:$ECDA PRG:6CDA 38 - sbc ObjPtr ; CPU:$ECDB PRG:6CDB E5 13 + sbc ObjPtr ; CPU:$ECDB PRG:6CDB E5 13 sta $0382,x ; CPU:$ECDD PRG:6CDD 9D 82 03 - jmp $ECE5 ; CPU:$ECE0 PRG:6CE0 4C E5 EC + jmp Sub_ECE5 ; CPU:$ECE0 PRG:6CE0 4C E5 EC ; ----------------------------------------------------------------------------- ; Routine: DispatchStoreLdaStoreStoreStore ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11467,13 +12289,14 @@ Sub_ECD9: ; ----------------------------------------------------------------------------- DispatchStoreLdaStoreStoreStore: sta Zp39 ; CPU:$ECE3 PRG:6CE3 85 39 +Sub_ECE5: lda #$00 ; CPU:$ECE5 PRG:6CE5 A9 00 sta $038C,x ; CPU:$ECE7 PRG:6CE7 9D 8C 03 sta $038D,x ; CPU:$ECEA PRG:6CEA 9D 8D 03 sta $038E,x ; CPU:$ECED PRG:6CED 9D 8E 03 sta $038F,x ; CPU:$ECF0 PRG:6CF0 9D 8F 03 lda Zp39 ; CPU:$ECF3 PRG:6CF3 A5 39 - bne Sub_ECF8 ; CPU:$ECF5 PRG:6CF5 D0 01 + bne Sub_ECF8 ; CPU:$ECF5 PRG:6CF5 D0 01 rts ; CPU:$ECF7 PRG:6CF7 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_ECF8 @@ -11525,7 +12348,7 @@ Sub_ED17: adc $038E,x ; CPU:$ED20 PRG:6D20 7D 8E 03 sta $038E,x ; CPU:$ED23 PRG:6D23 9D 8E 03 dec Zp39 ; CPU:$ED26 PRG:6D26 C6 39 - bne Sub_ED00 ; CPU:$ED28 PRG:6D28 D0 D6 + bne Sub_ED00 ; CPU:$ED28 PRG:6D28 D0 D6 lda $038C,x ; CPU:$ED2A PRG:6D2A BD 8C 03 asl a ; CPU:$ED2D PRG:6D2D 0A ror $038C,x ; CPU:$ED2E PRG:6D2E 7E 8C 03 @@ -11545,10 +12368,10 @@ Sub_ED17: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchLdaStoreLdaStoreLdy: - lda ObjectXHi ; CPU:$ED3F PRG:6D3F A5 38 - sta ObjectYHi ; CPU:$ED41 PRG:6D41 85 36 + lda ObjectXHi ; CPU:$ED3F PRG:6D3F A5 38 + sta ObjectYHi ; CPU:$ED41 PRG:6D41 85 36 lda #$00 ; CPU:$ED43 PRG:6D43 A9 00 - sta ObjectYLo ; CPU:$ED45 PRG:6D45 85 35 + sta ObjectYLo ; CPU:$ED45 PRG:6D45 85 35 ldy #$10 ; CPU:$ED47 PRG:6D47 A0 10 ; ----------------------------------------------------------------------------- ; Routine: Sub_ED49 @@ -11560,12 +12383,12 @@ DispatchLdaStoreLdaStoreLdy: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_ED49: - asl ObjectYLo ; CPU:$ED49 PRG:6D49 06 35 - rol ObjectYHi ; CPU:$ED4B PRG:6D4B 26 36 + asl ObjectYLo ; CPU:$ED49 PRG:6D49 06 35 + rol ObjectYHi ; CPU:$ED4B PRG:6D4B 26 36 rol a ; CPU:$ED4D PRG:6D4D 2A - bcs Sub_ED54 ; CPU:$ED4E PRG:6D4E B0 04 - cmp ObjectXLo ; CPU:$ED50 PRG:6D50 C5 37 - bcc Sub_ED59 ; CPU:$ED52 PRG:6D52 90 05 + bcs Sub_ED54 ; CPU:$ED4E PRG:6D4E B0 04 + cmp ObjectXLo ; CPU:$ED50 PRG:6D50 C5 37 + bcc Sub_ED59 ; CPU:$ED52 PRG:6D52 90 05 ; ----------------------------------------------------------------------------- ; Routine: Sub_ED54 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11577,8 +12400,8 @@ Sub_ED49: ; ----------------------------------------------------------------------------- Sub_ED54: sec ; CPU:$ED54 PRG:6D54 38 - sbc ObjectXLo ; CPU:$ED55 PRG:6D55 E5 37 - inc ObjectYLo ; CPU:$ED57 PRG:6D57 E6 35 + sbc ObjectXLo ; CPU:$ED55 PRG:6D55 E5 37 + inc ObjectYLo ; CPU:$ED57 PRG:6D57 E6 35 ; ----------------------------------------------------------------------------- ; Routine: Sub_ED59 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11590,7 +12413,7 @@ Sub_ED54: ; ----------------------------------------------------------------------------- Sub_ED59: dey ; CPU:$ED59 PRG:6D59 88 - bne Sub_ED49 ; CPU:$ED5A PRG:6D5A D0 ED + bne Sub_ED49 ; CPU:$ED5A PRG:6D5A D0 ED rts ; CPU:$ED5C PRG:6D5C 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchJsrLdaCmpBccBneLda @@ -11602,7 +12425,7 @@ Sub_ED59: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchJsrLdaCmpBccBneLda: - jsr DispatchLdaStoreLdaStoreLdy ; CPU:$ED5D PRG:6D5D 20 3F ED + jsr DispatchLdaStoreLdaStoreLdy; CPU:$ED5D PRG:6D5D 20 3F ED ; ----------------------------------------------------------------------------- ; Routine: Sub_ED60 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11614,12 +12437,12 @@ DispatchJsrLdaCmpBccBneLda: ; ----------------------------------------------------------------------------- Sub_ED60: lda $ED7D,y ; CPU:$ED60 PRG:6D60 B9 7D ED - cmp ObjectYHi ; CPU:$ED63 PRG:6D63 C5 36 - bcc Sub_ED73 ; CPU:$ED65 PRG:6D65 90 0C - bne Sub_ED70 ; CPU:$ED67 PRG:6D67 D0 07 + cmp ObjectYHi ; CPU:$ED63 PRG:6D63 C5 36 + bcc Sub_ED73 ; CPU:$ED65 PRG:6D65 90 0C + bne Sub_ED70 ; CPU:$ED67 PRG:6D67 D0 07 lda $ED7C,y ; CPU:$ED69 PRG:6D69 B9 7C ED - cmp ObjectYLo ; CPU:$ED6C PRG:6D6C C5 35 - bcc Sub_ED73 ; CPU:$ED6E PRG:6D6E 90 03 + cmp ObjectYLo ; CPU:$ED6C PRG:6D6C C5 35 + bcc Sub_ED73 ; CPU:$ED6E PRG:6D6E 90 03 ; ----------------------------------------------------------------------------- ; Routine: Sub_ED70 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -11646,9 +12469,11 @@ Sub_ED73: iny ; CPU:$ED73 PRG:6D73 C8 iny ; CPU:$ED74 PRG:6D74 C8 cpy #$10 ; CPU:$ED75 PRG:6D75 C0 10 - bne Sub_ED60 ; CPU:$ED77 PRG:6D77 D0 E7 + bne Sub_ED60 ; CPU:$ED77 PRG:6D77 D0 E7 lda #$08 ; CPU:$ED79 PRG:6D79 A9 08 rts ; CPU:$ED7B PRG:6D7B 60 +EnemyPtrTable: +; Enemy routine pointer table (16-bit entries mostly in $F0xx-$F1xx) ; ---- data $ED7C-$EE27 (172 bytes) ---- ; referenced by `lda $ED8C,y` at $EBEA (operand $ED8C falls inside this region) ; referenced by `lda $ED8D,y` at $EBEF (operand $ED8D falls inside this region) @@ -11676,8 +12501,8 @@ Sub_ED73: ; ----------------------------------------------------------------------------- Sub_EE28: cpy #$00 ; CPU:$EE28 PRG:6E28 C0 00 - ora (PPUCTRLShadow,x) ; CPU:$EE2A PRG:6E2A 01 00 - cmp PPUCTRLShadow,x ; CPU:$EE2C PRG:6E2C D5 00 + ora (PPUCTRLShadow,x) ; CPU:$EE2A PRG:6E2A 01 00 + cmp PPUCTRLShadow,x ; CPU:$EE2C PRG:6E2C D5 00 brk ; CPU:$EE2E PRG:6E2E 00 ; ---- data $EE2F-$EE3B (13 bytes) ---- .byte $01, $00, $D5, $40, $00, $01, $00, $D5, $80, $00, $01, $00, $D5 ; CPU:$EE2F PRG:6E2F 01 00 D5 40 00 01 00 D5 80 00 01 00 D5 @@ -11692,8 +12517,8 @@ Sub_EE28: ; ----------------------------------------------------------------------------- Sub_EE3C: cpy #$00 ; CPU:$EE3C PRG:6E3C C0 00 - ora (PPUCTRLShadow,x) ; CPU:$EE3E PRG:6E3E 01 00 - dec PPUCTRLShadow,x ; CPU:$EE40 PRG:6E40 D6 00 + ora (PPUCTRLShadow,x) ; CPU:$EE3E PRG:6E3E 01 00 + dec PPUCTRLShadow,x ; CPU:$EE40 PRG:6E40 D6 00 brk ; CPU:$EE42 PRG:6E42 00 ; ---- data $EE43-$EE4F (13 bytes) ---- .byte $01, $00, $D6, $40, $00, $01, $00, $D6, $80, $00, $01, $00, $D6 ; CPU:$EE43 PRG:6E43 01 00 D6 40 00 01 00 D6 80 00 01 00 D6 @@ -11708,7 +12533,7 @@ Sub_EE3C: ; ----------------------------------------------------------------------------- Sub_EE50: cpy #$00 ; CPU:$EE50 PRG:6E50 C0 00 - ora (PPUCTRLShadow,x) ; CPU:$EE52 PRG:6E52 01 00 + ora (PPUCTRLShadow,x) ; CPU:$EE52 PRG:6E52 01 00 cpx #$02 ; CPU:$EE54 PRG:6E54 E0 02 brk ; CPU:$EE56 PRG:6E56 00 ; ---- data $EE57-$EE6B (21 bytes) ---- @@ -11727,7 +12552,7 @@ Sub_EE6C: stx ZpC1,y ; CPU:$EE6C PRG:6E6C 96 C1 php ; CPU:$EE6E PRG:6E6E 08 php ; CPU:$EE6F PRG:6E6F 08 - stx PPUMASKShadow,y ; CPU:$EE70 PRG:6E70 96 01 + stx PPUMASKShadow,y ; CPU:$EE70 PRG:6E70 96 01 brk ; CPU:$EE72 PRG:6E72 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_EE73 @@ -11772,7 +12597,7 @@ Sub_EE7C: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EE8D: - lda (PPUMASKShadow),y ; CPU:$EE8D PRG:6E8D B1 01 + lda (PPUMASKShadow),y ; CPU:$EE8D PRG:6E8D B1 01 php ; CPU:$EE8F PRG:6E8F 08 php ; CPU:$EE90 PRG:6E90 08 lda (ZpC1),y ; CPU:$EE91 PRG:6E91 B1 C1 @@ -11789,10 +12614,10 @@ Sub_EE8D: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EE9E: - lda PPUMASKShadow,x ; CPU:$EE9E PRG:6E9E B5 01 + lda PPUMASKShadow,x ; CPU:$EE9E PRG:6E9E B5 01 php ; CPU:$EEA0 PRG:6EA0 08 php ; CPU:$EEA1 PRG:6EA1 08 - ldx PPUMASKShadow,y ; CPU:$EEA2 PRG:6EA2 B6 01 + ldx PPUMASKShadow,y ; CPU:$EEA2 PRG:6EA2 B6 01 brk ; CPU:$EEA4 PRG:6EA4 00 ; ---- data $EEA5-$EED0 (44 bytes) ---- .byte $08, $B7, $01, $08, $04, $00, $B8, $01, $00, $00, $B9, $01, $08, $08, $BA, $01 ; CPU:$EEA5 PRG:6EA5 08 B7 01 08 04 00 B8 01 00 00 B9 01 08 08 BA 01 @@ -11808,7 +12633,7 @@ Sub_EE9E: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EED1: - lda (PPUMASKShadow),y ; CPU:$EED1 PRG:6ED1 B1 01 + lda (PPUMASKShadow),y ; CPU:$EED1 PRG:6ED1 B1 01 php ; CPU:$EED3 PRG:6ED3 08 php ; CPU:$EED4 PRG:6ED4 08 lda (ZpC1),y ; CPU:$EED5 PRG:6ED5 B1 C1 @@ -11828,7 +12653,7 @@ Sub_EED1: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EF09: - lda (PPUMASKShadow),y ; CPU:$EF09 PRG:6F09 B1 01 + lda (PPUMASKShadow),y ; CPU:$EF09 PRG:6F09 B1 01 php ; CPU:$EF0B PRG:6F0B 08 php ; CPU:$EF0C PRG:6F0C 08 lda (ZpC1),y ; CPU:$EF0D PRG:6F0D B1 C1 @@ -11846,10 +12671,10 @@ Sub_EF09: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EF2B: - cmp PPUMASKShadow ; CPU:$EF2B PRG:6F2B C5 01 + cmp PPUMASKShadow ; CPU:$EF2B PRG:6F2B C5 01 php ; CPU:$EF2D PRG:6F2D 08 php ; CPU:$EF2E PRG:6F2E 08 - dec PPUMASKShadow ; CPU:$EF2F PRG:6F2F C6 01 + dec PPUMASKShadow ; CPU:$EF2F PRG:6F2F C6 01 brk ; CPU:$EF31 PRG:6F31 00 ; ---- data $EF32-$EF34 (3 bytes) ---- .byte $02, $00, $B1 ; CPU:$EF32 PRG:6F32 02 00 B1 @@ -11863,12 +12688,16 @@ Sub_EF2B: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EF35: - ora (PPUCTRLShadow,x) ; CPU:$EF35 PRG:6F35 01 00 + ora (PPUCTRLShadow,x) ; CPU:$EF35 PRG:6F35 01 00 php ; CPU:$EF37 PRG:6F37 08 lda (Zp81),y ; CPU:$EF38 PRG:6F38 B1 81 brk ; CPU:$EF3A PRG:6F3A 00 +SpriteLayoutData2: +; Sprite layout records: 4-byte entries (x offset, y offset, tile index, attribute), +; e.g. $04 $00 $7C $01 at $EF3B; the same record format as the table at $F9BD. +; No instruction reference is known: the only operand found, `and $EF3D` at $D63E, +; sits in a misdecoded data region (see the Pass 1 residue notes in README.md). ; ---- data $EF3B-$EFC5 (139 bytes) ---- -; referenced by `and $EF3D` at $D63E (operand $EF3D falls inside this region) .byte $04, $00, $7C, $01, $00, $00, $7D, $01, $08, $08, $7E, $01, $00, $08, $7F, $01 ; CPU:$EF3B PRG:6F3B 04 00 7C 01 00 00 7D 01 08 08 7E 01 00 08 7F 01 .byte $08, $03, $04, $80, $01, $00, $04, $81, $01, $08, $0C, $82, $01, $04, $02, $04 ; CPU:$EF4B PRG:6F4B 08 03 04 80 01 00 04 81 01 08 0C 82 01 04 02 04 .byte $84, $01, $00, $04, $85, $01, $08, $04, $00, $88, $01, $00, $00, $89, $01, $08 ; CPU:$EF5B PRG:6F5B 84 01 00 04 85 01 08 04 00 88 01 00 00 89 01 08 @@ -11878,21 +12707,8 @@ Sub_EF35: .byte $67, $01, $08, $04, $00, $69, $41, $00, $00, $69, $01, $08, $08, $6A, $01, $00 ; CPU:$EF9B PRG:6F9B 67 01 08 04 00 69 41 00 00 69 01 08 08 6A 01 00 .byte $08, $6B, $01, $08, $04, $00, $63, $01, $00, $00, $63, $41, $08, $08, $63, $81 ; CPU:$EFAB PRG:6FAB 08 6B 01 08 04 00 63 01 00 00 63 41 08 08 63 81 .byte $00, $08, $63, $C1, $08, $04, $00, $65, $01, $00, $00 ; CPU:$EFBB PRG:6FBB 00 08 63 C1 08 04 00 65 01 00 00 -; ----------------------------------------------------------------------------- -; Routine: Sub_EFC6 -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -Sub_EFC6: - adc Zp41 ; CPU:$EFC6 PRG:6FC6 65 41 - php ; CPU:$EFC8 PRG:6FC8 08 - php ; CPU:$EFC9 PRG:6FC9 08 - adc Zp81 ; CPU:$EFCA PRG:6FCA 65 81 - brk ; CPU:$EFCC PRG:6FCC 00 +; ---- data $EFC6-$EFCC (7 bytes) ---- + .byte $65, $41, $08, $08, $65, $81, $00 ; CPU:$EFC6 PRG:6FC6 65 41 08 08 65 81 00 ; ---- data $EFCD-$EFFD (49 bytes) ---- .byte $08, $65, $C1, $08, $04, $00, $77, $01, $00, $00, $77, $41, $08, $08, $77, $81 ; CPU:$EFCD PRG:6FCD 08 65 C1 08 04 00 77 01 00 00 77 41 08 08 77 81 .byte $00, $08, $77, $C1, $08, $01, $04, $7B, $01, $04, $04, $00, $50, $01, $00, $00 ; CPU:$EFDD PRG:6FDD 00 08 77 C1 08 01 04 7B 01 04 04 00 50 01 00 00 @@ -11908,10 +12724,10 @@ Sub_EFC6: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_EFFE: - eor PPUMASKShadow,x ; CPU:$EFFE PRG:6FFE 55 01 + eor PPUMASKShadow,x ; CPU:$EFFE PRG:6FFE 55 01 php ; CPU:$F000 PRG:7000 08 php ; CPU:$F001 PRG:7001 08 - lsr PPUMASKShadow,x ; CPU:$F002 PRG:7002 56 01 + lsr PPUMASKShadow,x ; CPU:$F002 PRG:7002 56 01 brk ; CPU:$F004 PRG:7004 00 ; ---- data $F005-$F017 (19 bytes) ---- .byte $08, $57, $01, $08, $04, $00, $58, $01, $00, $00, $59, $01, $08, $08, $5A, $01 ; CPU:$F005 PRG:7005 08 57 01 08 04 00 58 01 00 00 59 01 08 08 5A 01 @@ -11926,65 +12742,22 @@ Sub_EFFE: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F018: - ora (Joypad2Cur,x) ; CPU:$F018 PRG:7018 01 08 - ora PPUCTRLShadow ; CPU:$F01A PRG:701A 05 00 - sbc $FE01,x ; CPU:$F01C PRG:701C FD 01 FE - brk ; CPU:$F01F PRG:701F 00 + ora (Joypad2Cur,x) ; CPU:$F018 PRG:7018 01 08 +; ---- data $F01A-$F01F (6 bytes) ---- + .byte $05, $00, $FD, $01, $FE, $00 ; CPU:$F01A PRG:701A 05 00 FD 01 FE 00 ; ---- data $F020-$F029 (10 bytes) ---- .byte $40, $01, $06, $08, $FF, $01, $FE, $08, $42, $01 ; CPU:$F020 PRG:7020 40 01 06 08 FF 01 FE 08 42 01 -; ----------------------------------------------------------------------------- -; Routine: Sub_F02A -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -Sub_F02A: - asl ScrollY ; CPU:$F02A PRG:702A 06 03 - sec ; CPU:$F02C PRG:702C 38 - ora (Joypad1Prev,x) ; CPU:$F02D PRG:702D 01 07 - ora PPUCTRLShadow ; CPU:$F02F PRG:702F 05 00 - sbc $FE01,x ; CPU:$F031 PRG:7031 FD 01 FE - brk ; CPU:$F034 PRG:7034 00 +; ---- data $F02A-$F034 (11 bytes) ---- + .byte $06, $03, $38, $01, $07, $05, $00, $FD, $01, $FE, $00 ; CPU:$F02A PRG:702A 06 03 38 01 07 05 00 FD 01 FE 00 ; ---- data $F035-$F039 (5 bytes) ---- .byte $44, $01, $06, $08, $FF ; CPU:$F035 PRG:7035 44 01 06 08 FF -; ----------------------------------------------------------------------------- -; Routine: Sub_F03A -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -Sub_F03A: - ora (ZpFE,x) ; CPU:$F03A PRG:703A 01 FE - php ; CPU:$F03C PRG:703C 08 - lsr PPUMASKShadow ; CPU:$F03D PRG:703D 46 01 - asl ScrollY ; CPU:$F03F PRG:703F 06 03 - sec ; CPU:$F041 PRG:7041 38 - ora (Joypad1Prev,x) ; CPU:$F042 PRG:7042 01 07 - ora PPUCTRLShadow ; CPU:$F044 PRG:7044 05 00 - sbc $FE01,x ; CPU:$F046 PRG:7046 FD 01 FE - brk ; CPU:$F049 PRG:7049 00 +; ---- data $F03A-$F049 (16 bytes) ---- + .byte $01, $FE, $08, $46, $01, $06, $03, $38, $01, $07, $05, $00, $FD, $01, $FE, $00 ; CPU:$F03A PRG:703A 01 FE 08 46 01 06 03 38 01 07 05 00 FD 01 FE 00 ; ---- data $F04A-$F053 (10 bytes) ---- .byte $48, $01, $06, $08, $FF, $01, $FE, $08, $4A, $01 ; CPU:$F04A PRG:704A 48 01 06 08 FF 01 FE 08 4A 01 -; ----------------------------------------------------------------------------- -; Routine: Sub_F054 -; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. -; Local: Continues its parent routine along the condition or operation encoded in this label, -; then returns, branches again, or rejoins shared code as documented by the instructions. -; Parameters: Undetermined in Pass 1 unless implied by the caller. -; Returns: Undetermined in Pass 1; status flags and registers may carry results. -; Clobbers: Undetermined in Pass 1. -; ----------------------------------------------------------------------------- -Sub_F054: - asl ScrollY ; CPU:$F054 PRG:7054 06 03 - sec ; CPU:$F056 PRG:7056 38 - ora (Joypad1Prev,x) ; CPU:$F057 PRG:7057 01 07 - ora PPUCTRLShadow ; CPU:$F059 PRG:7059 05 00 +; ---- data $F054-$F058 (5 bytes) ---- + .byte $06, $03, $38, $01, $07 ; CPU:$F054 PRG:7054 06 03 38 01 07 + ora PPUCTRLShadow ; CPU:$F059 PRG:7059 05 00 sbc $FE01,x ; CPU:$F05B PRG:705B FD 01 FE brk ; CPU:$F05E PRG:705E 00 ; ---- data $F05F-$F0E1 (131 bytes) ---- @@ -12007,7 +12780,7 @@ Sub_F054: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F0E2: - bcc Sub_F0E4 ; CPU:$F0E2 PRG:70E2 90 00 + bcc Sub_F0E4 ; CPU:$F0E2 PRG:70E2 90 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_F0E4 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12021,7 +12794,8 @@ Sub_F0E4: php ; CPU:$F0E4 PRG:70E4 08 ora (Zp90,x) ; CPU:$F0E5 PRG:70E5 01 90 brk ; CPU:$F0E7 PRG:70E7 00 -; ---- data $F0E8-$F1DB (244 bytes) ---- +EnemySpawnTable: +; Enemy spawn parameter table (4-byte entries read by lda $F136..$F139,y) ; referenced by `lda $F136,y` at $D129 (operand $F136 falls inside this region) ; referenced by `lda $F137,y` at $D133 (operand $F137 falls inside this region) ; referenced by `lda $F138,y` at $D13C (operand $F138 falls inside this region) @@ -12029,6 +12803,7 @@ Sub_F0E4: ; referenced by `lda $F136,y` at $ED00 (operand $F136 falls inside this region) ; referenced by `lda $F137,y` at $ED0A (operand $F137 falls inside this region) ; ... and 4 further references from decoded code +; ---- data $F0E8-$F1D9 (242 bytes) ---- .byte $10, $06, $02, $95, $00, $00, $02, $8F, $00, $08, $02, $95, $40, $10, $0A, $97 ; CPU:$F0E8 PRG:70E8 10 06 02 95 00 00 02 8F 00 08 02 95 40 10 0A 97 .byte $00, $00, $0A, $97, $00, $08, $0A, $97, $00, $10, $02, $00, $38, $01, $01, $08 ; CPU:$F0F8 PRG:70F8 00 00 0A 97 00 08 0A 97 00 10 02 00 38 01 01 08 .byte $3A, $01, $01, $03, $00, $36, $81, $04, $08, $36, $01, $04, $04, $35, $01, $0B ; CPU:$F108 PRG:7108 3A 01 01 03 00 36 81 04 08 36 01 04 04 35 01 0B @@ -12044,7 +12819,8 @@ Sub_F0E4: .byte $B4, $00, $72, $FF, $D4, $00, $9E, $FF, $EC, $00, $CE, $FF, $FA, $00, $C5, $F1 ; CPU:$F1A8 PRG:71A8 B4 00 72 FF D4 00 9E FF EC 00 CE FF FA 00 C5 F1 .byte $CF, $F1, $D9, $F1, $E0, $F1, $E0, $F1, $ED, $F1, $ED, $F1, $ED, $F1, $20, $DA ; CPU:$F1B8 PRG:71B8 CF F1 D9 F1 E0 F1 E0 F1 ED F1 ED F1 ED F1 20 DA .byte $F1, $A9, $01, $A0, $00, $4C, $93, $F5, $20, $DA, $F1, $A9, $02, $A0, $00, $4C ; CPU:$F1C8 PRG:71C8 F1 A9 01 A0 00 4C 93 F5 20 DA F1 A9 02 A0 00 4C - .byte $93, $F5, $A2, $40 ; CPU:$F1D8 PRG:71D8 93 F5 A2 40 + .byte $93, $F5 ; CPU:$F1D8 PRG:71D8 93 F5 + ldx #$40 ; CPU:$F1DA PRG:71DA A2 40 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdyJmp ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12057,9 +12833,12 @@ Sub_F0E4: DispatchLdyJmp: ldy #$01 ; CPU:$F1DC PRG:71DC A0 01 jmp DispatchStoreLdaTayLdaStoreIny ; CPU:$F1DE PRG:71DE 4C 93 F5 -; ---- data $F1E1-$F1F4 (20 bytes) ---- - .byte $A5, $5B, $10, $08, $A9, $B4, $85, $5A, $A9, $02, $85, $5B, $60, $A9, $00, $85 ; CPU:$F1E1 PRG:71E1 A5 5B 10 08 A9 B4 85 5A A9 02 85 5B 60 A9 00 85 - .byte $10, $85, $42, $60 ; CPU:$F1F1 PRG:71F1 10 85 42 60 +; ---- data $F1E1-$F1ED (13 bytes) ---- + .byte $A5, $5B, $10, $08, $A9, $B4, $85, $5A, $A9, $02, $85, $5B, $60 ; CPU:$F1E1 PRG:71E1 A5 5B 10 08 A9 B4 85 5A A9 02 85 5B 60 + lda #$00 ; CPU:$F1EE PRG:71EE A9 00 + sta GameMode ; CPU:$F1F0 PRG:71F0 85 10 + sta Zp42 ; CPU:$F1F2 PRG:71F2 85 42 + rts ; CPU:$F1F4 PRG:71F4 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_F1F5 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12073,7 +12852,7 @@ Sub_F1F5: jsr DispatchLdaBneStoreStoreLdxLdy ; CPU:$F1F5 PRG:71F5 20 1D F6 lda Zp5B ; CPU:$F1F8 PRG:71F8 A5 5B dec Zp5A ; CPU:$F1FA PRG:71FA C6 5A - bne Sub_F201 ; CPU:$F1FC PRG:71FC D0 03 + bne Sub_F201 ; CPU:$F1FC PRG:71FC D0 03 clc ; CPU:$F1FE PRG:71FE 18 adc #$03 ; CPU:$F1FF PRG:71FF 69 03 ; ----------------------------------------------------------------------------- @@ -12123,11 +12902,11 @@ Sub_F20E: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- InputRead: - ldx GameMode ; CPU:$F21D PRG:721D A6 10 - beq Sub_F20E ; CPU:$F21F PRG:721F F0 ED + ldx GameMode ; CPU:$F21D PRG:721D A6 10 + beq Sub_F20E ; CPU:$F21F PRG:721F F0 ED dex ; CPU:$F221 PRG:7221 CA - beq Sub_F227 ; CPU:$F222 PRG:7222 F0 03 - jmp DispatchLdaBeqDecLdxStx ; CPU:$F224 PRG:7224 4C 4D F3 + beq Sub_F227 ; CPU:$F222 PRG:7222 F0 03 + jmp DispatchLdaBeqDecLdxStx ; CPU:$F224 PRG:7224 4C 4D F3 ; ----------------------------------------------------------------------------- ; Routine: Sub_F227 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12139,7 +12918,7 @@ InputRead: ; ----------------------------------------------------------------------------- Sub_F227: lda Zp5A ; CPU:$F227 PRG:7227 A5 5A - bne Sub_F1F5 ; CPU:$F229 PRG:7229 D0 CA + bne Sub_F1F5 ; CPU:$F229 PRG:7229 D0 CA sta PPUMASK ; CPU:$F22B PRG:722B 8D 01 20 ; ----------------------------------------------------------------------------- ; Routine: Sub_F22E @@ -12153,19 +12932,19 @@ Sub_F227: Sub_F22E: jsr DispatchLdaStoreStoreStoreDec ; CPU:$F22E PRG:722E 20 55 F2 lda Zp14 ; CPU:$F231 PRG:7231 A5 14 - beq Sub_F252 ; CPU:$F233 PRG:7233 F0 1D - jsr NmiOamDmaCopy ; CPU:$F235 PRG:7235 20 0A FE + beq Sub_F252 ; CPU:$F233 PRG:7233 F0 1D + jsr NmiOamDmaCopy ; CPU:$F235 PRG:7235 20 0A FE lda Zp14 ; CPU:$F238 PRG:7238 A5 14 cmp #$01 ; CPU:$F23A PRG:723A C9 01 - bne Sub_F22E ; CPU:$F23C PRG:723C D0 F0 + bne Sub_F22E ; CPU:$F23C PRG:723C D0 F0 lda Zp3B ; CPU:$F23E PRG:723E A5 3B - beq Sub_F251 ; CPU:$F240 PRG:7240 F0 0F - lda ResetHi ; CPU:$F242 PRG:7242 A5 3C + beq Sub_F251 ; CPU:$F240 PRG:7240 F0 0F + lda ResetHi ; CPU:$F242 PRG:7242 A5 3C and #$01 ; CPU:$F244 PRG:7244 29 01 eor #$01 ; CPU:$F246 PRG:7246 49 01 ldx ZpA7 ; CPU:$F248 PRG:7248 A6 A7 - beq Sub_F251 ; CPU:$F24A PRG:724A F0 05 - sta ResetHi ; CPU:$F24C PRG:724C 85 3C + beq Sub_F251 ; CPU:$F24A PRG:724A F0 05 + sta ResetHi ; CPU:$F24C PRG:724C 85 3C jsr DispatchLdxLdaTayLdaStoreTya ; CPU:$F24E PRG:724E 20 7F F8 ; ----------------------------------------------------------------------------- ; Routine: Sub_F251 @@ -12188,7 +12967,7 @@ Sub_F251: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F252: - jmp ObjSpawnInit ; CPU:$F252 PRG:7252 4C 10 C0 + jmp ObjSpawnInit ; CPU:$F252 PRG:7252 4C 10 C0 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaStoreStoreStoreDec ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12206,7 +12985,7 @@ DispatchLdaStoreStoreStoreDec: dec Zp14 ; CPU:$F260 PRG:7260 C6 14 bne DispatchLdyJsrLdxLdaStoreIny ; CPU:$F262 PRG:7262 D0 4B lda Zp60 ; CPU:$F264 PRG:7264 A5 60 - bne Sub_F26C ; CPU:$F266 PRG:7266 D0 04 + bne Sub_F26C ; CPU:$F266 PRG:7266 D0 04 lda #$D2 ; CPU:$F268 PRG:7268 A9 D2 sta Zp3D ; CPU:$F26A PRG:726A 85 3D ; ----------------------------------------------------------------------------- @@ -12220,10 +12999,10 @@ DispatchLdaStoreStoreStoreDec: ; ----------------------------------------------------------------------------- Sub_F26C: lda #$02 ; CPU:$F26C PRG:726C A9 02 - sta GameMode ; CPU:$F26E PRG:726E 85 10 + sta GameMode ; CPU:$F26E PRG:726E 85 10 lda Zp99 ; CPU:$F270 PRG:7270 A5 99 cmp #$40 ; CPU:$F272 PRG:7272 C9 40 - bcc Sub_F278 ; CPU:$F274 PRG:7274 90 02 + bcc Sub_F278 ; CPU:$F274 PRG:7274 90 02 dec Zp90 ; CPU:$F276 PRG:7276 C6 90 ; ----------------------------------------------------------------------------- ; Routine: Sub_F278 @@ -12241,11 +13020,11 @@ Sub_F278: sta Zp23 ; CPU:$F27E PRG:727E 85 23 lda #$D0 ; CPU:$F280 PRG:7280 A9 D0 sta Zp24 ; CPU:$F282 PRG:7282 85 24 - lda PPUCTRLShadow ; CPU:$F284 PRG:7284 A5 00 + lda PPUCTRLShadow ; CPU:$F284 PRG:7284 A5 00 eor #$FF ; CPU:$F286 PRG:7286 49 FF and #$10 ; CPU:$F288 PRG:7288 29 10 ora #$02 ; CPU:$F28A PRG:728A 09 02 - sta NmiToggle ; CPU:$F28C PRG:728C 85 0F + sta NmiToggle ; CPU:$F28C PRG:728C 85 0F ldx #$00 ; CPU:$F28E PRG:728E A2 00 lda #$00 ; CPU:$F290 PRG:7290 A9 00 sta Zp3F ; CPU:$F292 PRG:7292 85 3F @@ -12269,8 +13048,8 @@ Sub_F2A0: sta $0400,x ; CPU:$F2A3 PRG:72A3 9D 00 04 sta $0500,x ; CPU:$F2A6 PRG:72A6 9D 00 05 inx ; CPU:$F2A9 PRG:72A9 E8 - bne Sub_F2A0 ; CPU:$F2AA PRG:72AA D0 F4 - jmp ObjSpawnInit ; CPU:$F2AC PRG:72AC 4C 10 C0 + bne Sub_F2A0 ; CPU:$F2AA PRG:72AA D0 F4 + jmp ObjSpawnInit ; CPU:$F2AC PRG:72AC 4C 10 C0 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdyJsrLdxLdaStoreIny ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12281,8 +13060,8 @@ Sub_F2A0: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchLdyJsrLdxLdaStoreIny: - ldy Joypad1Press2 ; CPU:$F2AF PRG:72AF A4 1A - jsr DispatchDecLdaBplLdaStore ; CPU:$F2B1 PRG:72B1 20 00 F3 + ldy Joypad1Press2 ; CPU:$F2AF PRG:72AF A4 1A + jsr DispatchDecLdaBplLdaStore ; CPU:$F2B1 PRG:72B1 20 00 F3 ldx #$20 ; CPU:$F2B4 PRG:72B4 A2 20 lda #$20 ; CPU:$F2B6 PRG:72B6 A9 20 sta $0208,y ; CPU:$F2B8 PRG:72B8 99 08 02 @@ -12297,19 +13076,19 @@ DispatchLdyJsrLdxLdaStoreIny: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F2BC: - jsr DispatchLdaEorEorAslAslRol ; CPU:$F2BC PRG:72BC 20 5C F5 + jsr DispatchLdaEorEorAslAslRol ; CPU:$F2BC PRG:72BC 20 5C F5 and #$03 ; CPU:$F2BF PRG:72BF 29 03 ora #$54 ; CPU:$F2C1 PRG:72C1 09 54 sta $0208,y ; CPU:$F2C3 PRG:72C3 99 08 02 iny ; CPU:$F2C6 PRG:72C6 C8 dex ; CPU:$F2C7 PRG:72C7 CA - bne Sub_F2BC ; CPU:$F2C8 PRG:72C8 D0 F2 - jsr DispatchLdaCmpBmiClcAdd ; CPU:$F2CA PRG:72CA 20 31 F3 + bne Sub_F2BC ; CPU:$F2C8 PRG:72C8 D0 F2 + jsr DispatchLdaCmpBmiClcAdd ; CPU:$F2CA PRG:72CA 20 31 F3 lda Zp15 ; CPU:$F2CD PRG:72CD A5 15 lsr a ; CPU:$F2CF PRG:72CF 4A ldx #$F0 ; CPU:$F2D0 PRG:72D0 A2 F0 cmp #$0F ; CPU:$F2D2 PRG:72D2 C9 0F - bmi Sub_F2D9 ; CPU:$F2D4 PRG:72D4 30 03 + bmi Sub_F2D9 ; CPU:$F2D4 PRG:72D4 30 03 clc ; CPU:$F2D6 PRG:72D6 18 adc #$01 ; CPU:$F2D7 PRG:72D7 69 01 ; ----------------------------------------------------------------------------- @@ -12323,7 +13102,7 @@ Sub_F2BC: ; ----------------------------------------------------------------------------- Sub_F2D9: and #$01 ; CPU:$F2D9 PRG:72D9 29 01 - beq Sub_F2DF ; CPU:$F2DB PRG:72DB F0 02 + beq Sub_F2DF ; CPU:$F2DB PRG:72DB F0 02 ldx #$0F ; CPU:$F2DD PRG:72DD A2 0F ; ----------------------------------------------------------------------------- ; Routine: Sub_F2DF @@ -12335,7 +13114,7 @@ Sub_F2D9: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F2DF: - stx ObjectX ; CPU:$F2DF PRG:72DF 86 18 + stx ObjectX ; CPU:$F2DF PRG:72DF 86 18 lda #$08 ; CPU:$F2E1 PRG:72E1 A9 08 sta $0208,y ; CPU:$F2E3 PRG:72E3 99 08 02 iny ; CPU:$F2E6 PRG:72E6 C8 @@ -12351,14 +13130,14 @@ Sub_F2DF: ; ----------------------------------------------------------------------------- Sub_F2E9: lda $0200,x ; CPU:$F2E9 PRG:72E9 BD 00 02 - and ObjectX ; CPU:$F2EC PRG:72EC 25 18 + and ObjectX ; CPU:$F2EC PRG:72EC 25 18 sta $0208,y ; CPU:$F2EE PRG:72EE 99 08 02 sta $0200,x ; CPU:$F2F1 PRG:72F1 9D 00 02 iny ; CPU:$F2F4 PRG:72F4 C8 inx ; CPU:$F2F5 PRG:72F5 E8 cpx #$08 ; CPU:$F2F6 PRG:72F6 E0 08 - bne Sub_F2E9 ; CPU:$F2F8 PRG:72F8 D0 EF - sty Joypad1Press2 ; CPU:$F2FA PRG:72FA 84 1A + bne Sub_F2E9 ; CPU:$F2F8 PRG:72F8 D0 EF + sty Joypad1Press2 ; CPU:$F2FA PRG:72FA 84 1A sta $0208,y ; CPU:$F2FC PRG:72FC 99 08 02 rts ; CPU:$F2FF PRG:72FF 60 ; ----------------------------------------------------------------------------- @@ -12373,7 +13152,7 @@ Sub_F2E9: DispatchDecLdaBplLdaStore: dec Zp15 ; CPU:$F300 PRG:7300 C6 15 lda Zp15 ; CPU:$F302 PRG:7302 A5 15 - bpl Sub_F30A ; CPU:$F304 PRG:7304 10 04 + bpl Sub_F30A ; CPU:$F304 PRG:7304 10 04 lda #$3B ; CPU:$F306 PRG:7306 A9 3B sta Zp15 ; CPU:$F308 PRG:7308 85 15 ; ----------------------------------------------------------------------------- @@ -12387,7 +13166,7 @@ DispatchDecLdaBplLdaStore: ; ----------------------------------------------------------------------------- Sub_F30A: cmp #$1E ; CPU:$F30A PRG:730A C9 1E - bcc Sub_F311 ; CPU:$F30C PRG:730C 90 03 + bcc Sub_F311 ; CPU:$F30C PRG:730C 90 03 clc ; CPU:$F30E PRG:730E 18 adc #$22 ; CPU:$F30F PRG:730F 69 22 ; ----------------------------------------------------------------------------- @@ -12400,20 +13179,20 @@ Sub_F30A: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F311: - sta ObjectYLo ; CPU:$F311 PRG:7311 85 35 + sta ObjectYLo ; CPU:$F311 PRG:7311 85 35 lda #$00 ; CPU:$F313 PRG:7313 A9 00 - sta ObjectYHi ; CPU:$F315 PRG:7315 85 36 + sta ObjectYHi ; CPU:$F315 PRG:7315 85 36 sec ; CPU:$F317 PRG:7317 38 - ror ObjectYLo ; CPU:$F318 PRG:7318 66 35 - ror ObjectYHi ; CPU:$F31A PRG:731A 66 36 - lsr ObjectYLo ; CPU:$F31C PRG:731C 46 35 - ror ObjectYHi ; CPU:$F31E PRG:731E 66 36 - lsr ObjectYLo ; CPU:$F320 PRG:7320 46 35 - ror ObjectYHi ; CPU:$F322 PRG:7322 66 36 - lda ObjectYLo ; CPU:$F324 PRG:7324 A5 35 + ror ObjectYLo ; CPU:$F318 PRG:7318 66 35 + ror ObjectYHi ; CPU:$F31A PRG:731A 66 36 + lsr ObjectYLo ; CPU:$F31C PRG:731C 46 35 + ror ObjectYHi ; CPU:$F31E PRG:731E 66 36 + lsr ObjectYLo ; CPU:$F320 PRG:7320 46 35 + ror ObjectYHi ; CPU:$F322 PRG:7322 66 36 + lda ObjectYLo ; CPU:$F324 PRG:7324 A5 35 sta $0208,y ; CPU:$F326 PRG:7326 99 08 02 iny ; CPU:$F329 PRG:7329 C8 - lda ObjectYHi ; CPU:$F32A PRG:732A A5 36 + lda ObjectYHi ; CPU:$F32A PRG:732A A5 36 sta $0208,y ; CPU:$F32C PRG:732C 99 08 02 iny ; CPU:$F32F PRG:732F C8 rts ; CPU:$F330 PRG:7330 60 @@ -12429,7 +13208,7 @@ Sub_F311: DispatchLdaCmpBmiClcAdd: lda Zp15 ; CPU:$F331 PRG:7331 A5 15 cmp #$1E ; CPU:$F333 PRG:7333 C9 1E - bmi Sub_F33A ; CPU:$F335 PRG:7335 30 03 + bmi Sub_F33A ; CPU:$F335 PRG:7335 30 03 clc ; CPU:$F337 PRG:7337 18 adc #$02 ; CPU:$F338 PRG:7338 69 02 ; ----------------------------------------------------------------------------- @@ -12463,12 +13242,12 @@ Sub_F33A: ; ----------------------------------------------------------------------------- DispatchLdaBeqDecLdxStx: lda Zp3D ; CPU:$F34D PRG:734D A5 3D - beq Sub_F381 ; CPU:$F34F PRG:734F F0 30 + beq Sub_F381 ; CPU:$F34F PRG:734F F0 30 dec Zp3D ; CPU:$F351 PRG:7351 C6 3D ldx #$00 ; CPU:$F353 PRG:7353 A2 00 stx Zp32 ; CPU:$F355 PRG:7355 86 32 ldx #$80 ; CPU:$F357 PRG:7357 A2 80 - lda ResetHi ; CPU:$F359 PRG:7359 A5 3C + lda ResetHi ; CPU:$F359 PRG:7359 A5 3C and #$01 ; CPU:$F35B PRG:735B 29 01 clc ; CPU:$F35D PRG:735D 18 adc #$01 ; CPU:$F35E PRG:735E 69 01 @@ -12520,7 +13299,7 @@ DispatchLdaStoreLdaClcAddStore: lsr Zp25 ; CPU:$F397 PRG:7397 46 25 lsr Zp25 ; CPU:$F399 PRG:7399 46 25 lsr Zp25 ; CPU:$F39B PRG:739B 46 25 - bne Sub_F3A0 ; CPU:$F39D PRG:739D D0 01 + bne Sub_F3A0 ; CPU:$F39D PRG:739D D0 01 rts ; CPU:$F39F PRG:739F 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_F3A0 @@ -12532,13 +13311,13 @@ DispatchLdaStoreLdaClcAddStore: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F3A0: - lda ScrollY ; CPU:$F3A0 PRG:73A0 A5 03 + lda ScrollY ; CPU:$F3A0 PRG:73A0 A5 03 sec ; CPU:$F3A2 PRG:73A2 38 sbc Zp25 ; CPU:$F3A3 PRG:73A3 E5 25 cmp #$F0 ; CPU:$F3A5 PRG:73A5 C9 F0 - bcc Sub_F3B0 ; CPU:$F3A7 PRG:73A7 90 07 + bcc Sub_F3B0 ; CPU:$F3A7 PRG:73A7 90 07 ldx #$02 ; CPU:$F3A9 PRG:73A9 A2 02 - stx NmiToggle ; CPU:$F3AB PRG:73AB 86 0F + stx NmiToggle ; CPU:$F3AB PRG:73AB 86 0F sec ; CPU:$F3AD PRG:73AD 38 sbc #$10 ; CPU:$F3AE PRG:73AE E9 10 ; ----------------------------------------------------------------------------- @@ -12551,7 +13330,7 @@ Sub_F3A0: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F3B0: - sta ScrollY ; CPU:$F3B0 PRG:73B0 85 03 + sta ScrollY ; CPU:$F3B0 PRG:73B0 85 03 lda #$00 ; CPU:$F3B2 PRG:73B2 A9 00 sta Zp6E ; CPU:$F3B4 PRG:73B4 85 6E lda Zp29 ; CPU:$F3B6 PRG:73B6 A5 29 @@ -12560,7 +13339,8 @@ Sub_F3B0: sta Zp29 ; CPU:$F3BB PRG:73BB 85 29 sec ; CPU:$F3BD PRG:73BD 38 sbc #$08 ; CPU:$F3BE PRG:73BE E9 08 - bcs Sub_F3C7 ; CPU:$F3C0 PRG:73C0 B0 05 + bcs Sub_F3C7 ; CPU:$F3C0 PRG:73C0 B0 05 +Sub_F3C2: lda #$01 ; CPU:$F3C2 PRG:73C2 A9 01 sta Zp6E ; CPU:$F3C4 PRG:73C4 85 6E rts ; CPU:$F3C6 PRG:73C6 60 @@ -12576,9 +13356,9 @@ Sub_F3B0: Sub_F3C7: sta Zp29 ; CPU:$F3C7 PRG:73C7 85 29 lda Zp99 ; CPU:$F3C9 PRG:73C9 A5 99 - bne Sub_F3FA ; CPU:$F3CB PRG:73CB D0 2D + bne Sub_F3FA ; CPU:$F3CB PRG:73CB D0 2D lda Zp14 ; CPU:$F3CD PRG:73CD A5 14 - beq Sub_F3D6 ; CPU:$F3CF PRG:73CF F0 05 + beq Sub_F3D6 ; CPU:$F3CF PRG:73CF F0 05 dec Zp14 ; CPU:$F3D1 PRG:73D1 C6 14 jmp DispatchLdyJsrLdxLdaStoreIny ; CPU:$F3D3 PRG:73D3 4C AF F2 ; ----------------------------------------------------------------------------- @@ -12594,7 +13374,7 @@ Sub_F3D6: inc Zp90 ; CPU:$F3D6 PRG:73D6 E6 90 lda Zp90 ; CPU:$F3D8 PRG:73D8 A5 90 cmp #$10 ; CPU:$F3DA PRG:73DA C9 10 - bne Sub_F3E2 ; CPU:$F3DC PRG:73DC D0 04 + bne Sub_F3E2 ; CPU:$F3DC PRG:73DC D0 04 lda #$06 ; CPU:$F3DE PRG:73DE A9 06 sta Zp90 ; CPU:$F3E0 PRG:73E0 85 90 ; ----------------------------------------------------------------------------- @@ -12617,7 +13397,7 @@ Sub_F3E2: lda (Zp2A),y ; CPU:$F3F0 PRG:73F0 B1 2A sta Zp12 ; CPU:$F3F2 PRG:73F2 85 12 inc Zp2A ; CPU:$F3F4 PRG:73F4 E6 2A - bne Sub_F3FA ; CPU:$F3F6 PRG:73F6 D0 02 + bne Sub_F3FA ; CPU:$F3F6 PRG:73F6 D0 02 inc Zp2B ; CPU:$F3F8 PRG:73F8 E6 2B ; ----------------------------------------------------------------------------- ; Routine: Sub_F3FA @@ -12631,17 +13411,17 @@ Sub_F3E2: Sub_F3FA: lda #$04 ; CPU:$F3FA PRG:73FA A9 04 sta Zp14 ; CPU:$F3FC PRG:73FC 85 14 - ldy Joypad1Press2 ; CPU:$F3FE PRG:73FE A4 1A - jsr DispatchDecLdaBplLdaStore ; CPU:$F400 PRG:7400 20 00 F3 + ldy Joypad1Press2 ; CPU:$F3FE PRG:73FE A4 1A + jsr DispatchDecLdaBplLdaStore ; CPU:$F400 PRG:7400 20 00 F3 lda #$20 ; CPU:$F403 PRG:7403 A9 20 sta $0208,y ; CPU:$F405 PRG:7405 99 08 02 iny ; CPU:$F408 PRG:7408 C8 dec Zp99 ; CPU:$F409 PRG:7409 C6 99 lda Zp99 ; CPU:$F40B PRG:740B A5 99 and #$FE ; CPU:$F40D PRG:740D 29 FE - sta VramPtrLo ; CPU:$F40F PRG:740F 85 04 + sta VramPtrLo ; CPU:$F40F PRG:740F 85 04 lda #$04 ; CPU:$F411 PRG:7411 A9 04 - sta VramCopyCount ; CPU:$F413 PRG:7413 85 05 + sta VramCopyCount ; CPU:$F413 PRG:7413 85 05 ldx #$05 ; CPU:$F415 PRG:7415 A2 05 ; ----------------------------------------------------------------------------- ; Routine: Sub_F417 @@ -12653,18 +13433,18 @@ Sub_F3FA: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F417: - asl VramPtrLo ; CPU:$F417 PRG:7417 06 04 - rol VramCopyCount ; CPU:$F419 PRG:7419 26 05 + asl VramPtrLo ; CPU:$F417 PRG:7417 06 04 + rol VramCopyCount ; CPU:$F419 PRG:7419 26 05 dex ; CPU:$F41B PRG:741B CA - bne Sub_F417 ; CPU:$F41C PRG:741C D0 F9 - lda VramPtrLo ; CPU:$F41E PRG:741E A5 04 + bne Sub_F417 ; CPU:$F41C PRG:741C D0 F9 + lda VramPtrLo ; CPU:$F41E PRG:741E A5 04 adc Zp12 ; CPU:$F420 PRG:7420 65 12 - sta VramPtrLo ; CPU:$F422 PRG:7422 85 04 + sta VramPtrLo ; CPU:$F422 PRG:7422 85 04 lda Zp15 ; CPU:$F424 PRG:7424 A5 15 lsr a ; CPU:$F426 PRG:7426 4A ldx #$03 ; CPU:$F427 PRG:7427 A2 03 cmp #$0F ; CPU:$F429 PRG:7429 C9 0F - bmi Sub_F430 ; CPU:$F42B PRG:742B 30 03 + bmi Sub_F430 ; CPU:$F42B PRG:742B 30 03 clc ; CPU:$F42D PRG:742D 18 adc #$01 ; CPU:$F42E PRG:742E 69 01 ; ----------------------------------------------------------------------------- @@ -12678,7 +13458,7 @@ Sub_F417: ; ----------------------------------------------------------------------------- Sub_F430: and #$01 ; CPU:$F430 PRG:7430 29 01 - beq Sub_F436 ; CPU:$F432 PRG:7432 F0 02 + beq Sub_F436 ; CPU:$F432 PRG:7432 F0 02 ldx #$30 ; CPU:$F434 PRG:7434 A2 30 ; ----------------------------------------------------------------------------- ; Routine: Sub_F436 @@ -12691,15 +13471,15 @@ Sub_F430: ; ----------------------------------------------------------------------------- Sub_F436: txa ; CPU:$F436 PRG:7436 8A - sta ObjectX ; CPU:$F437 PRG:7437 85 18 + sta ObjectX ; CPU:$F437 PRG:7437 85 18 asl a ; CPU:$F439 PRG:7439 0A asl a ; CPU:$F43A PRG:743A 0A - sta ObjectY ; CPU:$F43B PRG:743B 85 19 + sta ObjectY ; CPU:$F43B PRG:743B 85 19 lda #$08 ; CPU:$F43D PRG:743D A9 08 - sta ObjUpdateFlag ; CPU:$F43F PRG:743F 85 0E + sta ObjUpdateFlag ; CPU:$F43F PRG:743F 85 0E lda Zp99 ; CPU:$F441 PRG:7441 A5 99 and #$01 ; CPU:$F443 PRG:7443 29 01 - beq Sub_F4AA ; CPU:$F445 PRG:7445 F0 63 + beq Sub_F4AA ; CPU:$F445 PRG:7445 F0 63 ; ----------------------------------------------------------------------------- ; Routine: Sub_F447 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12711,7 +13491,7 @@ Sub_F436: ; ----------------------------------------------------------------------------- Sub_F447: ldx #$00 ; CPU:$F447 PRG:7447 A2 00 - lda (VramPtrLo,x) ; CPU:$F449 PRG:7449 A1 04 + lda (VramPtrLo,x) ; CPU:$F449 PRG:7449 A1 04 tax ; CPU:$F44B PRG:744B AA lda $A1EE,x ; CPU:$F44C PRG:744C BD EE A1 sta $0208,y ; CPU:$F44F PRG:744F 99 08 02 @@ -12719,21 +13499,21 @@ Sub_F447: lda $A2E5,x ; CPU:$F453 PRG:7453 BD E5 A2 sta $0208,y ; CPU:$F456 PRG:7456 99 08 02 iny ; CPU:$F459 PRG:7459 C8 - jsr DispatchTaxLdxCmpBccInxInx ; CPU:$F45A PRG:745A 20 2B F5 - and ObjectX ; CPU:$F45D PRG:745D 25 18 - sta ObjPtr ; CPU:$F45F PRG:745F 85 13 + jsr DispatchTaxLdxCmpBccInxInx ; CPU:$F45A PRG:745A 20 2B F5 + and ObjectX ; CPU:$F45D PRG:745D 25 18 + sta ObjPtr ; CPU:$F45F PRG:745F 85 13 lda #$08 ; CPU:$F461 PRG:7461 A9 08 sec ; CPU:$F463 PRG:7463 38 - sbc ObjUpdateFlag ; CPU:$F464 PRG:7464 E5 0E + sbc ObjUpdateFlag ; CPU:$F464 PRG:7464 E5 0E tax ; CPU:$F466 PRG:7466 AA - lda ObjectX ; CPU:$F467 PRG:7467 A5 18 + lda ObjectX ; CPU:$F467 PRG:7467 A5 18 eor #$FF ; CPU:$F469 PRG:7469 49 FF and $0200,x ; CPU:$F46B PRG:746B 3D 00 02 - ora ObjPtr ; CPU:$F46E PRG:746E 05 13 + ora ObjPtr ; CPU:$F46E PRG:746E 05 13 sta $0200,x ; CPU:$F470 PRG:7470 9D 00 02 - inc VramPtrLo ; CPU:$F473 PRG:7473 E6 04 + inc VramPtrLo ; CPU:$F473 PRG:7473 E6 04 ldx #$00 ; CPU:$F475 PRG:7475 A2 00 - lda (VramPtrLo,x) ; CPU:$F477 PRG:7477 A1 04 + lda (VramPtrLo,x) ; CPU:$F477 PRG:7477 A1 04 tax ; CPU:$F479 PRG:7479 AA lda $A1EE,x ; CPU:$F47A PRG:747A BD EE A1 sta $0208,y ; CPU:$F47D PRG:747D 99 08 02 @@ -12741,22 +13521,22 @@ Sub_F447: lda $A2E5,x ; CPU:$F481 PRG:7481 BD E5 A2 sta $0208,y ; CPU:$F484 PRG:7484 99 08 02 iny ; CPU:$F487 PRG:7487 C8 - jsr DispatchTaxLdxCmpBccInxInx ; CPU:$F488 PRG:7488 20 2B F5 - and ObjectY ; CPU:$F48B PRG:748B 25 19 - sta ObjPtr ; CPU:$F48D PRG:748D 85 13 + jsr DispatchTaxLdxCmpBccInxInx ; CPU:$F488 PRG:7488 20 2B F5 + and ObjectY ; CPU:$F48B PRG:748B 25 19 + sta ObjPtr ; CPU:$F48D PRG:748D 85 13 lda #$08 ; CPU:$F48F PRG:748F A9 08 sec ; CPU:$F491 PRG:7491 38 - sbc ObjUpdateFlag ; CPU:$F492 PRG:7492 E5 0E + sbc ObjUpdateFlag ; CPU:$F492 PRG:7492 E5 0E tax ; CPU:$F494 PRG:7494 AA - lda ObjectY ; CPU:$F495 PRG:7495 A5 19 + lda ObjectY ; CPU:$F495 PRG:7495 A5 19 eor #$FF ; CPU:$F497 PRG:7497 49 FF and $0200,x ; CPU:$F499 PRG:7499 3D 00 02 - ora ObjPtr ; CPU:$F49C PRG:749C 05 13 + ora ObjPtr ; CPU:$F49C PRG:749C 05 13 sta $0200,x ; CPU:$F49E PRG:749E 9D 00 02 - inc VramPtrLo ; CPU:$F4A1 PRG:74A1 E6 04 - dec ObjUpdateFlag ; CPU:$F4A3 PRG:74A3 C6 0E - bne Sub_F447 ; CPU:$F4A5 PRG:74A5 D0 A0 - jmp DispatchJsrLdaStoreInyLdx ; CPU:$F4A7 PRG:74A7 4C 0A F5 + inc VramPtrLo ; CPU:$F4A1 PRG:74A1 E6 04 + dec ObjUpdateFlag ; CPU:$F4A3 PRG:74A3 C6 0E + bne Sub_F447 ; CPU:$F4A5 PRG:74A5 D0 A0 + jmp DispatchJsrLdaStoreInyLdx ; CPU:$F4A7 PRG:74A7 4C 0A F5 ; ----------------------------------------------------------------------------- ; Routine: Sub_F4AA ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12768,7 +13548,7 @@ Sub_F447: ; ----------------------------------------------------------------------------- Sub_F4AA: ldx #$00 ; CPU:$F4AA PRG:74AA A2 00 - lda (VramPtrLo,x) ; CPU:$F4AC PRG:74AC A1 04 + lda (VramPtrLo,x) ; CPU:$F4AC PRG:74AC A1 04 tax ; CPU:$F4AE PRG:74AE AA lda $A000,x ; CPU:$F4AF PRG:74AF BD 00 A0 sta $0208,y ; CPU:$F4B2 PRG:74B2 99 08 02 @@ -12776,21 +13556,21 @@ Sub_F4AA: lda $A0F7,x ; CPU:$F4B6 PRG:74B6 BD F7 A0 sta $0208,y ; CPU:$F4B9 PRG:74B9 99 08 02 iny ; CPU:$F4BC PRG:74BC C8 - jsr DispatchTaxLdxCmpBccInxInx ; CPU:$F4BD PRG:74BD 20 2B F5 - and ObjectX ; CPU:$F4C0 PRG:74C0 25 18 - sta ObjPtr ; CPU:$F4C2 PRG:74C2 85 13 + jsr DispatchTaxLdxCmpBccInxInx ; CPU:$F4BD PRG:74BD 20 2B F5 + and ObjectX ; CPU:$F4C0 PRG:74C0 25 18 + sta ObjPtr ; CPU:$F4C2 PRG:74C2 85 13 lda #$08 ; CPU:$F4C4 PRG:74C4 A9 08 sec ; CPU:$F4C6 PRG:74C6 38 - sbc ObjUpdateFlag ; CPU:$F4C7 PRG:74C7 E5 0E + sbc ObjUpdateFlag ; CPU:$F4C7 PRG:74C7 E5 0E tax ; CPU:$F4C9 PRG:74C9 AA - lda ObjectX ; CPU:$F4CA PRG:74CA A5 18 + lda ObjectX ; CPU:$F4CA PRG:74CA A5 18 eor #$FF ; CPU:$F4CC PRG:74CC 49 FF and $0200,x ; CPU:$F4CE PRG:74CE 3D 00 02 - ora ObjPtr ; CPU:$F4D1 PRG:74D1 05 13 + ora ObjPtr ; CPU:$F4D1 PRG:74D1 05 13 sta $0200,x ; CPU:$F4D3 PRG:74D3 9D 00 02 - inc VramPtrLo ; CPU:$F4D6 PRG:74D6 E6 04 + inc VramPtrLo ; CPU:$F4D6 PRG:74D6 E6 04 ldx #$00 ; CPU:$F4D8 PRG:74D8 A2 00 - lda (VramPtrLo,x) ; CPU:$F4DA PRG:74DA A1 04 + lda (VramPtrLo,x) ; CPU:$F4DA PRG:74DA A1 04 tax ; CPU:$F4DC PRG:74DC AA lda $A000,x ; CPU:$F4DD PRG:74DD BD 00 A0 sta $0208,y ; CPU:$F4E0 PRG:74E0 99 08 02 @@ -12798,21 +13578,21 @@ Sub_F4AA: lda $A0F7,x ; CPU:$F4E4 PRG:74E4 BD F7 A0 sta $0208,y ; CPU:$F4E7 PRG:74E7 99 08 02 iny ; CPU:$F4EA PRG:74EA C8 - jsr DispatchTaxLdxCmpBccInxInx ; CPU:$F4EB PRG:74EB 20 2B F5 - and ObjectY ; CPU:$F4EE PRG:74EE 25 19 - sta ObjPtr ; CPU:$F4F0 PRG:74F0 85 13 + jsr DispatchTaxLdxCmpBccInxInx ; CPU:$F4EB PRG:74EB 20 2B F5 + and ObjectY ; CPU:$F4EE PRG:74EE 25 19 + sta ObjPtr ; CPU:$F4F0 PRG:74F0 85 13 lda #$08 ; CPU:$F4F2 PRG:74F2 A9 08 sec ; CPU:$F4F4 PRG:74F4 38 - sbc ObjUpdateFlag ; CPU:$F4F5 PRG:74F5 E5 0E + sbc ObjUpdateFlag ; CPU:$F4F5 PRG:74F5 E5 0E tax ; CPU:$F4F7 PRG:74F7 AA - lda ObjectY ; CPU:$F4F8 PRG:74F8 A5 19 + lda ObjectY ; CPU:$F4F8 PRG:74F8 A5 19 eor #$FF ; CPU:$F4FA PRG:74FA 49 FF and $0200,x ; CPU:$F4FC PRG:74FC 3D 00 02 - ora ObjPtr ; CPU:$F4FF PRG:74FF 05 13 + ora ObjPtr ; CPU:$F4FF PRG:74FF 05 13 sta $0200,x ; CPU:$F501 PRG:7501 9D 00 02 - inc VramPtrLo ; CPU:$F504 PRG:7504 E6 04 - dec ObjUpdateFlag ; CPU:$F506 PRG:7506 C6 0E - bne Sub_F4AA ; CPU:$F508 PRG:7508 D0 A0 + inc VramPtrLo ; CPU:$F504 PRG:7504 E6 04 + dec ObjUpdateFlag ; CPU:$F506 PRG:7506 C6 0E + bne Sub_F4AA ; CPU:$F508 PRG:7508 D0 A0 ; ----------------------------------------------------------------------------- ; Routine: DispatchJsrLdaStoreInyLdx ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12823,7 +13603,7 @@ Sub_F4AA: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchJsrLdaStoreInyLdx: - jsr DispatchLdaCmpBmiClcAdd ; CPU:$F50A PRG:750A 20 31 F3 + jsr DispatchLdaCmpBmiClcAdd ; CPU:$F50A PRG:750A 20 31 F3 lda #$08 ; CPU:$F50D PRG:750D A9 08 sta $0208,y ; CPU:$F50F PRG:750F 99 08 02 iny ; CPU:$F512 PRG:7512 C8 @@ -12843,11 +13623,11 @@ Sub_F515: iny ; CPU:$F51B PRG:751B C8 inx ; CPU:$F51C PRG:751C E8 cpx #$08 ; CPU:$F51D PRG:751D E0 08 - bne Sub_F515 ; CPU:$F51F PRG:751F D0 F4 - sty Joypad1Press2 ; CPU:$F521 PRG:7521 84 1A + bne Sub_F515 ; CPU:$F51F PRG:751F D0 F4 + sty Joypad1Press2 ; CPU:$F521 PRG:7521 84 1A lda #$00 ; CPU:$F523 PRG:7523 A9 00 sta $0208,y ; CPU:$F525 PRG:7525 99 08 02 - jmp C9bcCheck ; CPU:$F528 PRG:7528 4C BC C9 + jmp C9bcCheck ; CPU:$F528 PRG:7528 4C BC C9 ; ----------------------------------------------------------------------------- ; Routine: DispatchTaxLdxCmpBccInxInx ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12871,10 +13651,10 @@ DispatchTaxLdxCmpBccInxInx: ; ----------------------------------------------------------------------------- DispatchCmpBccInxInxJmpLda: cmp $A3DC,x ; CPU:$F52E PRG:752E DD DC A3 - bcc Sub_F538 ; CPU:$F531 PRG:7531 90 05 + bcc Sub_F538 ; CPU:$F531 PRG:7531 90 05 inx ; CPU:$F533 PRG:7533 E8 inx ; CPU:$F534 PRG:7534 E8 - jmp DispatchCmpBccInxInxJmpLda ; CPU:$F535 PRG:7535 4C 2E F5 + jmp DispatchCmpBccInxInxJmpLda ; CPU:$F535 PRG:7535 4C 2E F5 ; ----------------------------------------------------------------------------- ; Routine: Sub_F538 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -12887,6 +13667,9 @@ DispatchCmpBccInxInxJmpLda: Sub_F538: lda $A3DD,x ; CPU:$F538 PRG:7538 BD DD A3 rts ; CPU:$F53B PRG:753B 60 +AttrAddrTable: +; 16 x 16-bit PPU attribute-table addresses ($23C0-$23F8 and $2BC0-$2BF8), read by +; lda $F53C,x / lda $F53D,x at $F345 / $F33E and stored into the $0208 buffer. ; ---- data $F53C-$F55B (32 bytes) ---- ; referenced by `lda $F53D,x` at $F33E (operand $F53D falls inside this region) ; referenced by `lda $F53C,x` at $F345 (operand $F53C falls inside this region) @@ -12942,7 +13725,7 @@ Sub_F576: sta $0714,x ; CPU:$F578 PRG:7578 9D 14 07 lda $0721,x ; CPU:$F57B PRG:757B BD 21 07 cmp #$24 ; CPU:$F57E PRG:757E C9 24 - bcs Sub_F587 ; CPU:$F580 PRG:7580 B0 05 + bcs Sub_F587 ; CPU:$F580 PRG:7580 B0 05 lda #$F0 ; CPU:$F582 PRG:7582 A9 F0 sta $0720,x ; CPU:$F584 PRG:7584 9D 20 07 ; ----------------------------------------------------------------------------- @@ -12960,7 +13743,7 @@ Sub_F587: inx ; CPU:$F589 PRG:7589 E8 inx ; CPU:$F58A PRG:758A E8 cpx #$0C ; CPU:$F58B PRG:758B E0 0C - bne Sub_F576 ; CPU:$F58D PRG:758D D0 E7 + bne Sub_F576 ; CPU:$F58D PRG:758D D0 E7 ldy #$06 ; CPU:$F58F PRG:758F A0 06 ldx #$00 ; CPU:$F591 PRG:7591 A2 00 ; ----------------------------------------------------------------------------- @@ -12973,14 +13756,14 @@ Sub_F587: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- DispatchStoreLdaTayLdaStoreIny: - sta ObjPtr ; CPU:$F593 PRG:7593 85 13 + sta ObjPtr ; CPU:$F593 PRG:7593 85 13 lda $F5D8,y ; CPU:$F595 PRG:7595 B9 D8 F5 tay ; CPU:$F598 PRG:7598 A8 lda $F5DF,y ; CPU:$F599 PRG:7599 B9 DF F5 - sta ObjectXHi ; CPU:$F59C PRG:759C 85 38 + sta ObjectXHi ; CPU:$F59C PRG:759C 85 38 iny ; CPU:$F59E PRG:759E C8 lda $F5DF,y ; CPU:$F59F PRG:759F B9 DF F5 - sta ObjectXLo ; CPU:$F5A2 PRG:75A2 85 37 + sta ObjectXLo ; CPU:$F5A2 PRG:75A2 85 37 iny ; CPU:$F5A4 PRG:75A4 C8 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaCmpBeqCmpBneRts @@ -12994,9 +13777,9 @@ DispatchStoreLdaTayLdaStoreIny: DispatchLdaCmpBeqCmpBneRts: lda $F5DF,y ; CPU:$F5A5 PRG:75A5 B9 DF F5 cmp #$24 ; CPU:$F5A8 PRG:75A8 C9 24 - beq Sub_F5CD ; CPU:$F5AA PRG:75AA F0 21 + beq Sub_F5CD ; CPU:$F5AA PRG:75AA F0 21 cmp #$FF ; CPU:$F5AC PRG:75AC C9 FF - bne Sub_F5B1 ; CPU:$F5AE PRG:75AE D0 01 + bne Sub_F5B1 ; CPU:$F5AE PRG:75AE D0 01 rts ; CPU:$F5B0 PRG:75B0 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_F5B1 @@ -13009,8 +13792,8 @@ DispatchLdaCmpBeqCmpBneRts: ; ----------------------------------------------------------------------------- Sub_F5B1: cmp #$FE ; CPU:$F5B1 PRG:75B1 C9 FE - bne Sub_F5B7 ; CPU:$F5B3 PRG:75B3 D0 02 - lda ObjPtr ; CPU:$F5B5 PRG:75B5 A5 13 + bne Sub_F5B7 ; CPU:$F5B3 PRG:75B3 D0 02 + lda ObjPtr ; CPU:$F5B5 PRG:75B5 A5 13 ; ----------------------------------------------------------------------------- ; Routine: Sub_F5B7 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13022,14 +13805,14 @@ Sub_F5B1: ; ----------------------------------------------------------------------------- Sub_F5B7: sta $0701,x ; CPU:$F5B7 PRG:75B7 9D 01 07 - lda ObjectXHi ; CPU:$F5BA PRG:75BA A5 38 + lda ObjectXHi ; CPU:$F5BA PRG:75BA A5 38 sta $0700,x ; CPU:$F5BC PRG:75BC 9D 00 07 inx ; CPU:$F5BF PRG:75BF E8 inx ; CPU:$F5C0 PRG:75C0 E8 lda #$00 ; CPU:$F5C1 PRG:75C1 A9 00 sta $0700,x ; CPU:$F5C3 PRG:75C3 9D 00 07 inx ; CPU:$F5C6 PRG:75C6 E8 - lda ObjectXLo ; CPU:$F5C7 PRG:75C7 A5 37 + lda ObjectXLo ; CPU:$F5C7 PRG:75C7 A5 37 sta $0700,x ; CPU:$F5C9 PRG:75C9 9D 00 07 inx ; CPU:$F5CC PRG:75CC E8 ; ----------------------------------------------------------------------------- @@ -13042,12 +13825,16 @@ Sub_F5B7: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F5CD: - lda ObjectXLo ; CPU:$F5CD PRG:75CD A5 37 + lda ObjectXLo ; CPU:$F5CD PRG:75CD A5 37 clc ; CPU:$F5CF PRG:75CF 18 adc #$08 ; CPU:$F5D0 PRG:75D0 69 08 - sta ObjectXLo ; CPU:$F5D2 PRG:75D2 85 37 + sta ObjectXLo ; CPU:$F5D2 PRG:75D2 85 37 iny ; CPU:$F5D4 PRG:75D4 C8 - jmp DispatchLdaCmpBeqCmpBneRts ; CPU:$F5D5 PRG:75D5 4C A5 F5 + jmp DispatchLdaCmpBeqCmpBneRts ; CPU:$F5D5 PRG:75D5 4C A5 F5 +TextTileData: +; Text strings as font tile indices (tile $0A = 'A', $0B = 'B', ... $24 = space). +; $FE/$FF and $5C/$6x/$7x/$8x/$9x/$A5 bytes are control codes. Decoded strings: +; "PLAYER", "GAME OVER", "READY", "SOLVALOU", "LEFT", "PAUSE". ; ---- data $F5D8-$F61C (69 bytes) ---- ; referenced by `lda $F5D8,y` at $F595 (operand $F5D8 falls inside this region) ; referenced by `lda $F5DF,y` at $F599 (operand $F5DF falls inside this region) @@ -13069,14 +13856,14 @@ Sub_F5CD: ; ----------------------------------------------------------------------------- DispatchLdaBneStoreStoreLdxLdy: lda Zp60 ; CPU:$F61D PRG:761D A5 60 - bne Sub_F634 ; CPU:$F61F PRG:761F D0 13 - sta ObjectXLo ; CPU:$F621 PRG:7621 85 37 - sta ObjectXHi ; CPU:$F623 PRG:7623 85 38 + bne Sub_F634 ; CPU:$F61F PRG:761F D0 13 + sta ObjectXLo ; CPU:$F621 PRG:7621 85 37 + sta ObjectXHi ; CPU:$F623 PRG:7623 85 38 ldx #$20 ; CPU:$F625 PRG:7625 A2 20 ldy #$22 ; CPU:$F627 PRG:7627 A0 22 - lda ResetHi ; CPU:$F629 PRG:7629 A5 3C + lda ResetHi ; CPU:$F629 PRG:7629 A5 3C and #$01 ; CPU:$F62B PRG:762B 29 01 - beq Sub_F631 ; CPU:$F62D PRG:762D F0 02 + beq Sub_F631 ; CPU:$F62D PRG:762D F0 02 ldy #$24 ; CPU:$F62F PRG:762F A0 24 ; ----------------------------------------------------------------------------- ; Routine: Sub_F631 @@ -13111,9 +13898,9 @@ Sub_F634: ; ----------------------------------------------------------------------------- ObjUpdateCall: ldx #$20 ; CPU:$F635 PRG:7635 A2 20 - lda GameSubMode ; CPU:$F637 PRG:7637 A5 1B + lda GameSubMode ; CPU:$F637 PRG:7637 A5 1B and #$10 ; CPU:$F639 PRG:7639 29 10 - bne Sub_F640 ; CPU:$F63B PRG:763B D0 03 + bne Sub_F640 ; CPU:$F63B PRG:763B D0 03 jsr DispatchLdaBneStoreStoreLdxLdy ; CPU:$F63D PRG:763D 20 1D F6 ; ----------------------------------------------------------------------------- ; Routine: Sub_F640 @@ -13126,10 +13913,10 @@ ObjUpdateCall: ; ----------------------------------------------------------------------------- Sub_F640: lda Zp3B ; CPU:$F640 PRG:7640 A5 3B - beq Sub_F650 ; CPU:$F642 PRG:7642 F0 0C + beq Sub_F650 ; CPU:$F642 PRG:7642 F0 0C lda ZpEE ; CPU:$F644 PRG:7644 A5 EE - beq Sub_F64E ; CPU:$F646 PRG:7646 F0 06 - jsr ObjSpawnInit ; CPU:$F648 PRG:7648 20 10 C0 + beq Sub_F64E ; CPU:$F646 PRG:7646 F0 06 + jsr ObjSpawnInit ; CPU:$F648 PRG:7648 20 10 C0 jmp DispatchJsrStxLdaStoreStoreLda2 ; CPU:$F64B PRG:764B 4C F8 F6 ; ----------------------------------------------------------------------------- ; Routine: Sub_F64E @@ -13152,14 +13939,14 @@ Sub_F64E: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_F650: - lda ResetHi ; CPU:$F650 PRG:7650 A5 3C + lda ResetHi ; CPU:$F650 PRG:7650 A5 3C and #$01 ; CPU:$F652 PRG:7652 29 01 asl a ; CPU:$F654 PRG:7654 0A asl a ; CPU:$F655 PRG:7655 0A tay ; CPU:$F656 PRG:7656 A8 lda a:$0006,y ; CPU:$F657 PRG:7657 B9 06 00 ldy Zp60 ; CPU:$F65A PRG:765A A4 60 - beq Sub_F6DC ; CPU:$F65C PRG:765C F0 7E + beq Sub_F6DC ; CPU:$F65C PRG:765C F0 7E ldy #$00 ; CPU:$F65E PRG:765E A0 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_F660 @@ -13172,9 +13959,9 @@ Sub_F650: ; ----------------------------------------------------------------------------- Sub_F660: lda $0300,y ; CPU:$F660 PRG:7660 B9 00 03 - beq Sub_F669 ; CPU:$F663 PRG:7663 F0 04 + beq Sub_F669 ; CPU:$F663 PRG:7663 F0 04 cmp #$24 ; CPU:$F665 PRG:7665 C9 24 - bne Sub_F694 ; CPU:$F667 PRG:7667 D0 2B + bne Sub_F694 ; CPU:$F667 PRG:7667 D0 2B ; ----------------------------------------------------------------------------- ; Routine: Sub_F669 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13190,16 +13977,16 @@ Sub_F669: adc #$08 ; CPU:$F66B PRG:766B 69 08 tay ; CPU:$F66D PRG:766D A8 cmp #$80 ; CPU:$F66E PRG:766E C9 80 - bne Sub_F660 ; CPU:$F670 PRG:7670 D0 EE - lda GameSubMode ; CPU:$F672 PRG:7672 A5 1B + bne Sub_F660 ; CPU:$F670 PRG:7670 D0 EE + lda GameSubMode ; CPU:$F672 PRG:7672 A5 1B and #$1F ; CPU:$F674 PRG:7674 29 1F - bne Sub_F6D8 ; CPU:$F676 PRG:7676 D0 60 + bne Sub_F6D8 ; CPU:$F676 PRG:7676 D0 60 lda Zp23 ; CPU:$F678 PRG:7678 A5 23 cmp #$30 ; CPU:$F67A PRG:767A C9 30 - bcc Sub_F68A ; CPU:$F67C PRG:767C 90 0C + bcc Sub_F68A ; CPU:$F67C PRG:767C 90 0C cmp #$C8 ; CPU:$F67E PRG:767E C9 C8 - bcs Sub_F68F ; CPU:$F680 PRG:7680 B0 0D - jsr DispatchLdaEorEorAslAslRol ; CPU:$F682 PRG:7682 20 5C F5 + bcs Sub_F68F ; CPU:$F680 PRG:7680 B0 0D + jsr DispatchLdaEorEorAslAslRol ; CPU:$F682 PRG:7682 20 5C F5 and #$F2 ; CPU:$F685 PRG:7685 29 F2 jmp DispatchStoreLdaOraStaJsrLda ; CPU:$F687 PRG:7687 4C D6 F6 ; ----------------------------------------------------------------------------- @@ -13239,16 +14026,16 @@ Sub_F694: lda #$03 ; CPU:$F694 PRG:7694 A9 03 sta Zp59 ; CPU:$F696 PRG:7696 85 59 lda $0301,y ; CPU:$F698 PRG:7698 B9 01 03 - bne Sub_F669 ; CPU:$F69B PRG:769B D0 CC + bne Sub_F669 ; CPU:$F69B PRG:769B D0 CC lda $0302,y ; CPU:$F69D PRG:769D B9 02 03 clc ; CPU:$F6A0 PRG:76A0 18 adc #$40 ; CPU:$F6A1 PRG:76A1 69 40 - bcs Sub_F6B7 ; CPU:$F6A3 PRG:76A3 B0 12 + bcs Sub_F6B7 ; CPU:$F6A3 PRG:76A3 B0 12 sec ; CPU:$F6A5 PRG:76A5 38 sbc Zp24 ; CPU:$F6A6 PRG:76A6 E5 24 - bcs Sub_F6B3 ; CPU:$F6A8 PRG:76A8 B0 09 + bcs Sub_F6B3 ; CPU:$F6A8 PRG:76A8 B0 09 cmp #$F8 ; CPU:$F6AA PRG:76AA C9 F8 - bcs Sub_F6BB ; CPU:$F6AC PRG:76AC B0 0D + bcs Sub_F6BB ; CPU:$F6AC PRG:76AC B0 0D lda #$10 ; CPU:$F6AE PRG:76AE A9 10 jmp DispatchStoreLdaSecSbcBcsCmp ; CPU:$F6B0 PRG:76B0 4C B9 F6 ; ----------------------------------------------------------------------------- @@ -13262,7 +14049,7 @@ Sub_F694: ; ----------------------------------------------------------------------------- Sub_F6B3: cmp #$08 ; CPU:$F6B3 PRG:76B3 C9 08 - bcc Sub_F6BB ; CPU:$F6B5 PRG:76B5 90 04 + bcc Sub_F6BB ; CPU:$F6B5 PRG:76B5 90 04 ; ----------------------------------------------------------------------------- ; Routine: Sub_F6B7 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13298,11 +14085,11 @@ Sub_F6BB: lda $0303,y ; CPU:$F6BB PRG:76BB B9 03 03 sec ; CPU:$F6BE PRG:76BE 38 sbc Zp23 ; CPU:$F6BF PRG:76BF E5 23 - bcs Sub_F6CC ; CPU:$F6C1 PRG:76C1 B0 09 + bcs Sub_F6CC ; CPU:$F6C1 PRG:76C1 B0 09 cmp #$F8 ; CPU:$F6C3 PRG:76C3 C9 F8 - bcs Sub_F6D8 ; CPU:$F6C5 PRG:76C5 B0 11 + bcs Sub_F6D8 ; CPU:$F6C5 PRG:76C5 B0 11 lda #$40 ; CPU:$F6C7 PRG:76C7 A9 40 - jmp DispatchOraAndStore ; CPU:$F6C9 PRG:76C9 4C D2 F6 + jmp DispatchOraAndStore ; CPU:$F6C9 PRG:76C9 4C D2 F6 ; ----------------------------------------------------------------------------- ; Routine: Sub_F6CC ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13314,7 +14101,7 @@ Sub_F6BB: ; ----------------------------------------------------------------------------- Sub_F6CC: cmp #$08 ; CPU:$F6CC PRG:76CC C9 08 - bcc Sub_F6D8 ; CPU:$F6CE PRG:76CE 90 08 + bcc Sub_F6D8 ; CPU:$F6CE PRG:76CE 90 08 lda #$80 ; CPU:$F6D0 PRG:76D0 A9 80 ; ----------------------------------------------------------------------------- ; Routine: DispatchOraAndStore @@ -13365,9 +14152,9 @@ Sub_F6DC: jsr DispatchLsrsLsrsLsrsAndTayLda ; CPU:$F6DE PRG:76DE 20 8F F8 lda #$07 ; CPU:$F6E1 PRG:76E1 A9 07 jsr DispatchAslTayLdaStoreLdaStore2 ; CPU:$F6E3 PRG:76E3 20 16 F9 - jsr DispatchLdaBneLdaRorBcsLda2 ; CPU:$F6E6 PRG:76E6 20 65 F7 + jsr DispatchLdaBneLdaRorBcsLda2; CPU:$F6E6 PRG:76E6 20 65 F7 jsr DispatchLdyLdaAndBneLdaStore ; CPU:$F6E9 PRG:76E9 20 F4 F7 - stx ObjectDeltaX ; CPU:$F6EC PRG:76EC 86 2D + stx ObjectDeltaX ; CPU:$F6EC PRG:76EC 86 2D rts ; CPU:$F6EE PRG:76EE 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_F6EF @@ -13380,7 +14167,7 @@ Sub_F6DC: ; ----------------------------------------------------------------------------- Sub_F6EF: lda #$00 ; CPU:$F6EF PRG:76EF A9 00 - sta GameMode ; CPU:$F6F1 PRG:76F1 85 10 + sta GameMode ; CPU:$F6F1 PRG:76F1 85 10 sta Zp42 ; CPU:$F6F3 PRG:76F3 85 42 sta Zp3B ; CPU:$F6F5 PRG:76F5 85 3B rts ; CPU:$F6F7 PRG:76F7 60 @@ -13395,7 +14182,7 @@ Sub_F6EF: ; ----------------------------------------------------------------------------- DispatchJsrStxLdaStoreStoreLda2: jsr DispatchLdaBneStoreStoreLdxLdy ; CPU:$F6F8 PRG:76F8 20 1D F6 - stx ObjectDeltaX ; CPU:$F6FB PRG:76FB 86 2D + stx ObjectDeltaX ; CPU:$F6FB PRG:76FB 86 2D lda #$00 ; CPU:$F6FD PRG:76FD A9 00 sta Zp30 ; CPU:$F6FF PRG:76FF 85 30 sta Zp59 ; CPU:$F701 PRG:7701 85 59 @@ -13404,25 +14191,25 @@ DispatchJsrStxLdaStoreStoreLda2: lsr a ; CPU:$F707 PRG:7707 4A lsr a ; CPU:$F708 PRG:7708 4A cmp #$07 ; CPU:$F709 PRG:7709 C9 07 - bcc Sub_F759 ; CPU:$F70B PRG:770B 90 4C + bcc Sub_F759 ; CPU:$F70B PRG:770B 90 4C cmp #$0F ; CPU:$F70D PRG:770D C9 0F - bcc Sub_F758 ; CPU:$F70F PRG:770F 90 47 - jsr ClearOamInit ; CPU:$F711 PRG:7711 20 D3 B8 + bcc Sub_F758 ; CPU:$F70F PRG:770F 90 47 + jsr ClearOamInit ; CPU:$F711 PRG:7711 20 D3 B8 lda Zp60 ; CPU:$F714 PRG:7714 A5 60 - bne Sub_F6EF ; CPU:$F716 PRG:7716 D0 D7 + bne Sub_F6EF ; CPU:$F716 PRG:7716 D0 D7 dec Zp3B ; CPU:$F718 PRG:7718 C6 3B lda Zp15 ; CPU:$F71A PRG:771A A5 15 and #$01 ; CPU:$F71C PRG:771C 29 01 - beq Sub_F758 ; CPU:$F71E PRG:771E F0 38 - lda ScrollY ; CPU:$F720 PRG:7720 A5 03 + beq Sub_F758 ; CPU:$F71E PRG:771E F0 38 + lda ScrollY ; CPU:$F720 PRG:7720 A5 03 sec ; CPU:$F722 PRG:7722 38 sbc #$01 ; CPU:$F723 PRG:7723 E9 01 and #$07 ; CPU:$F725 PRG:7725 29 07 - bne Sub_F758 ; CPU:$F727 PRG:7727 D0 2F + bne Sub_F758 ; CPU:$F727 PRG:7727 D0 2F lda Zp8F ; CPU:$F729 PRG:7729 A5 8F sec ; CPU:$F72B PRG:772B 38 sbc Zp66 ; CPU:$F72C PRG:772C E5 66 - bpl Sub_F732 ; CPU:$F72E PRG:772E 10 02 + bpl Sub_F732 ; CPU:$F72E PRG:772E 10 02 lda #$00 ; CPU:$F730 PRG:7730 A9 00 ; ----------------------------------------------------------------------------- ; Routine: Sub_F732 @@ -13439,14 +14226,14 @@ Sub_F732: sta Zp5A ; CPU:$F736 PRG:7736 85 5A inc Zp8E ; CPU:$F738 PRG:7738 E6 8E dec Zp8D ; CPU:$F73A PRG:773A C6 8D - bne Sub_F750 ; CPU:$F73C PRG:773C D0 12 + bne Sub_F750 ; CPU:$F73C PRG:773C D0 12 lda #$96 ; CPU:$F73E PRG:773E A9 96 sta Zp5A ; CPU:$F740 PRG:7740 85 5A - lda ResetHi ; CPU:$F742 PRG:7742 A5 3C + lda ResetHi ; CPU:$F742 PRG:7742 A5 3C and #$01 ; CPU:$F744 PRG:7744 29 01 sta Zp5B ; CPU:$F746 PRG:7746 85 5B lda ZpA7 ; CPU:$F748 PRG:7748 A5 A7 - bne Sub_F750 ; CPU:$F74A PRG:774A D0 04 + bne Sub_F750 ; CPU:$F74A PRG:774A D0 04 lda #$02 ; CPU:$F74C PRG:774C A9 02 sta Zp5B ; CPU:$F74E PRG:774E 85 5B ; ----------------------------------------------------------------------------- @@ -13462,7 +14249,7 @@ Sub_F750: lda #$1F ; CPU:$F750 PRG:7750 A9 1F sta Zp14 ; CPU:$F752 PRG:7752 85 14 lda #$01 ; CPU:$F754 PRG:7754 A9 01 - sta GameMode ; CPU:$F756 PRG:7756 85 10 + sta GameMode ; CPU:$F756 PRG:7756 85 10 ; ----------------------------------------------------------------------------- ; Routine: Sub_F758 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13485,9 +14272,9 @@ Sub_F758: ; ----------------------------------------------------------------------------- Sub_F759: jsr DispatchAslTayLdaStoreLdaStore2 ; CPU:$F759 PRG:7759 20 16 F9 - jsr DispatchLdaBneLdaRorBcsLda2 ; CPU:$F75C PRG:775C 20 65 F7 + jsr DispatchLdaBneLdaRorBcsLda2; CPU:$F75C PRG:775C 20 65 F7 jsr DispatchLdyLdaAndBneLdaStore ; CPU:$F75F PRG:775F 20 F4 F7 - stx ObjectDeltaX ; CPU:$F762 PRG:7762 86 2D + stx ObjectDeltaX ; CPU:$F762 PRG:7762 86 2D rts ; CPU:$F764 PRG:7764 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaBneLdaRorBcsLda2 @@ -13500,13 +14287,13 @@ Sub_F759: ; ----------------------------------------------------------------------------- DispatchLdaBneLdaRorBcsLda2: lda $02A0 ; CPU:$F765 PRG:7765 AD A0 02 - bne Sub_F79E ; CPU:$F768 PRG:7768 D0 34 + bne Sub_F79E ; CPU:$F768 PRG:7768 D0 34 lda Zp59 ; CPU:$F76A PRG:776A A5 59 ror a ; CPU:$F76C PRG:776C 6A - bcs Sub_F77F ; CPU:$F76D PRG:776D B0 10 + bcs Sub_F77F ; CPU:$F76D PRG:776D B0 10 lda Zp2E ; CPU:$F76F PRG:776F A5 2E - beq Sub_F779 ; CPU:$F771 PRG:7771 F0 06 - lda GameSubMode ; CPU:$F773 PRG:7773 A5 1B + beq Sub_F779 ; CPU:$F771 PRG:7771 F0 06 + lda GameSubMode ; CPU:$F773 PRG:7773 A5 1B lsr a ; CPU:$F775 PRG:7775 4A lsr a ; CPU:$F776 PRG:7776 4A and #$01 ; CPU:$F777 PRG:7777 29 01 @@ -13560,9 +14347,9 @@ Sub_F79E: jsr DispatchAslTayLdaStoreLdaStore2 ; CPU:$F7A0 PRG:77A0 20 16 F9 ldy #$16 ; CPU:$F7A3 PRG:77A3 A0 16 lda $02A3 ; CPU:$F7A5 PRG:77A5 AD A3 02 - sta ObjectXLo ; CPU:$F7A8 PRG:77A8 85 37 + sta ObjectXLo ; CPU:$F7A8 PRG:77A8 85 37 lda $02A4 ; CPU:$F7AA PRG:77AA AD A4 02 - sta ObjectXHi ; CPU:$F7AD PRG:77AD 85 38 + sta ObjectXHi ; CPU:$F7AD PRG:77AD 85 38 clc ; CPU:$F7AF PRG:77AF 18 adc Zp25 ; CPU:$F7B0 PRG:77B0 65 25 sta $02A4 ; CPU:$F7B2 PRG:77B2 8D A4 02 @@ -13579,7 +14366,7 @@ Sub_F79E: lda $F956,y ; CPU:$F7CC PRG:77CC B9 56 F9 sta $0700,x ; CPU:$F7CF PRG:77CF 9D 00 07 inx ; CPU:$F7D2 PRG:77D2 E8 - lda GameSubMode ; CPU:$F7D3 PRG:77D3 A5 1B + lda GameSubMode ; CPU:$F7D3 PRG:77D3 A5 1B and #$01 ; CPU:$F7D5 PRG:77D5 29 01 ora #$02 ; CPU:$F7D7 PRG:77D7 09 02 sta $0700,x ; CPU:$F7D9 PRG:77D9 9D 00 07 @@ -13590,7 +14377,7 @@ Sub_F79E: inc $02A0 ; CPU:$F7E4 PRG:77E4 EE A0 02 lda $02A0 ; CPU:$F7E7 PRG:77E7 AD A0 02 cmp #$21 ; CPU:$F7EA PRG:77EA C9 21 - bne Sub_F7F3 ; CPU:$F7EC PRG:77EC D0 05 + bne Sub_F7F3 ; CPU:$F7EC PRG:77EC D0 05 lda #$00 ; CPU:$F7EE PRG:77EE A9 00 sta $02A0 ; CPU:$F7F0 PRG:77F0 8D A0 02 ; ----------------------------------------------------------------------------- @@ -13617,10 +14404,10 @@ DispatchLdyLdaAndBneLdaStore: ldy #$00 ; CPU:$F7F4 PRG:77F4 A0 00 lda Zp59 ; CPU:$F7F6 PRG:77F6 A5 59 and #$02 ; CPU:$F7F8 PRG:77F8 29 02 - bne Sub_F804 ; CPU:$F7FA PRG:77FA D0 08 + bne Sub_F804 ; CPU:$F7FA PRG:77FA D0 08 lda #$FE ; CPU:$F7FC PRG:77FC A9 FE sta $02A5 ; CPU:$F7FE PRG:77FE 8D A5 02 - jmp DispatchLdyJsrLdyJsrLdyLda ; CPU:$F801 PRG:7801 4C 35 F8 + jmp DispatchLdyJsrLdyJsrLdyLda ; CPU:$F801 PRG:7801 4C 35 F8 ; ----------------------------------------------------------------------------- ; Routine: Sub_F804 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13632,7 +14419,7 @@ DispatchLdyLdaAndBneLdaStore: ; ----------------------------------------------------------------------------- Sub_F804: inc $02A5 ; CPU:$F804 PRG:7804 EE A5 02 - bne DispatchLdyJsrLdyJsrLdyLda ; CPU:$F807 PRG:7807 D0 2C + bne DispatchLdyJsrLdyJsrLdyLda ; CPU:$F807 PRG:7807 D0 2C lda #$F0 ; CPU:$F809 PRG:7809 A9 F0 clc ; CPU:$F80B PRG:780B 18 adc Zp60 ; CPU:$F80C PRG:780C 65 60 @@ -13648,13 +14435,13 @@ Sub_F804: ; ----------------------------------------------------------------------------- Sub_F811: lda $02A6,y ; CPU:$F811 PRG:7811 B9 A6 02 - beq Sub_F820 ; CPU:$F814 PRG:7814 F0 0A + beq Sub_F820 ; CPU:$F814 PRG:7814 F0 0A iny ; CPU:$F816 PRG:7816 C8 iny ; CPU:$F817 PRG:7817 C8 iny ; CPU:$F818 PRG:7818 C8 cpy #$09 ; CPU:$F819 PRG:7819 C0 09 - bne Sub_F811 ; CPU:$F81B PRG:781B D0 F4 - jmp DispatchLdyJsrLdyJsrLdyLda ; CPU:$F81D PRG:781D 4C 35 F8 + bne Sub_F811 ; CPU:$F81B PRG:781B D0 F4 + jmp DispatchLdyJsrLdyJsrLdyLda ; CPU:$F81D PRG:781D 4C 35 F8 ; ----------------------------------------------------------------------------- ; Routine: Sub_F820 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13700,14 +14487,14 @@ DispatchLdyJsrLdyJsrLdyLda: ; ----------------------------------------------------------------------------- DispatchLdaBmiBeqLdaStoreLda2: lda $02A6,y ; CPU:$F841 PRG:7841 B9 A6 02 - bmi Sub_F85D ; CPU:$F844 PRG:7844 30 17 - beq Sub_F85C ; CPU:$F846 PRG:7846 F0 14 + bmi Sub_F85D ; CPU:$F844 PRG:7844 30 17 + beq Sub_F85C ; CPU:$F846 PRG:7846 F0 14 lda #$00 ; CPU:$F848 PRG:7848 A9 00 sta $02A6,y ; CPU:$F84A PRG:784A 99 A6 02 lda $02A7,y ; CPU:$F84D PRG:784D B9 A7 02 - sta ObjectXLo ; CPU:$F850 PRG:7850 85 37 + sta ObjectXLo ; CPU:$F850 PRG:7850 85 37 lda $02A8,y ; CPU:$F852 PRG:7852 B9 A8 02 - sta ObjectXHi ; CPU:$F855 PRG:7855 85 38 + sta ObjectXHi ; CPU:$F855 PRG:7855 85 38 ldy #$20 ; CPU:$F857 PRG:7857 A0 20 jsr DispatchLdaStoreLdaStoreLdyLda ; CPU:$F859 PRG:7859 20 20 F9 ; ----------------------------------------------------------------------------- @@ -13732,12 +14519,12 @@ Sub_F85C: ; ----------------------------------------------------------------------------- Sub_F85D: lda $02A7,y ; CPU:$F85D PRG:785D B9 A7 02 - sta ObjectXLo ; CPU:$F860 PRG:7860 85 37 + sta ObjectXLo ; CPU:$F860 PRG:7860 85 37 lda $02A8,y ; CPU:$F862 PRG:7862 B9 A8 02 - sta ObjectXHi ; CPU:$F865 PRG:7865 85 38 + sta ObjectXHi ; CPU:$F865 PRG:7865 85 38 clc ; CPU:$F867 PRG:7867 18 adc Zp28 ; CPU:$F868 PRG:7868 65 28 - bcs Sub_F871 ; CPU:$F86A PRG:786A B0 05 + bcs Sub_F871 ; CPU:$F86A PRG:786A B0 05 lda #$00 ; CPU:$F86C PRG:786C A9 00 sta $02A6,y ; CPU:$F86E PRG:786E 99 A6 02 ; ----------------------------------------------------------------------------- @@ -13751,7 +14538,7 @@ Sub_F85D: ; ----------------------------------------------------------------------------- Sub_F871: sta $02A8,y ; CPU:$F871 PRG:7871 99 A8 02 - lda GameSubMode ; CPU:$F874 PRG:7874 A5 1B + lda GameSubMode ; CPU:$F874 PRG:7874 A5 1B and #$03 ; CPU:$F876 PRG:7876 29 03 ora #$0C ; CPU:$F878 PRG:7878 09 0C asl a ; CPU:$F87A PRG:787A 0A @@ -13785,7 +14572,7 @@ Sub_F881: tya ; CPU:$F888 PRG:7888 98 sta Zp9A,x ; CPU:$F889 PRG:7889 95 9A dex ; CPU:$F88B PRG:788B CA - bpl Sub_F881 ; CPU:$F88C PRG:788C 10 F3 + bpl Sub_F881 ; CPU:$F88C PRG:788C 10 F3 rts ; CPU:$F88E PRG:788E 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchLsrsLsrsLsrsAndTayLda @@ -13807,17 +14594,86 @@ DispatchLsrsLsrsLsrsAndTayLda: lda $F89E,y ; CPU:$F899 PRG:7899 B9 9E F8 pha ; CPU:$F89C PRG:789C 48 rts ; CPU:$F89D PRG:789D 60 -; ---- data $F89E-$F915 (120 bytes) ---- +HandlerPtrTable: +; 16 x 16-bit handler pointers called through pha/pha/rts; each stored value is the +; target address minus one, because RTS adds one to the popped address. ; referenced by `lda $F89F,y` at $F895 (operand $F89F falls inside this region) ; referenced by `lda $F89E,y` at $F899 (operand $F89E falls inside this region) +; ---- data $F89E-$F8BD (32 bytes) ---- .byte $DC, $F8, $C0, $F8, $D0, $F8, $DC, $F8, $DD, $F8, $BD, $F8, $E9, $F8, $DC, $F8 ; CPU:$F89E PRG:789E DC F8 C0 F8 D0 F8 DC F8 DD F8 BD F8 E9 F8 DC F8 .byte $F9, $F8, $05, $F9, $CD, $F8, $DC, $F8, $DC, $F8, $DC, $F8, $DC, $F8, $DC, $F8 ; CPU:$F8AE PRG:78AE F9 F8 05 F9 CD F8 DC F8 DC F8 DC F8 DC F8 DC F8 - .byte $20, $ED, $F8, $C6, $24, $A5, $24, $C9, $50, $B0, $14, $A9, $50, $85, $24, $60 ; CPU:$F8BE PRG:78BE 20 ED F8 C6 24 A5 24 C9 50 B0 14 A9 50 85 24 60 - .byte $20, $09, $F9, $E6, $24, $A5, $24, $C9, $D8, $90, $04, $A9, $D8, $85, $24, $60 ; CPU:$F8CE PRG:78CE 20 09 F9 E6 24 A5 24 C9 D8 90 04 A9 D8 85 24 60 - .byte $A5, $1B, $29, $01, $D0, $09, $20, $ED, $F8, $4C, $ED, $F8, $20, $D1, $F8, $C6 ; CPU:$F8DE PRG:78DE A5 1B 29 01 D0 09 20 ED F8 4C ED F8 20 D1 F8 C6 - .byte $23, $A5, $23, $C9, $04, $B0, $E8, $A9, $04, $85, $23, $60, $A5, $1B, $29, $01 ; CPU:$F8EE PRG:78EE 23 A5 23 C9 04 B0 E8 A9 04 85 23 60 A5 1B 29 01 - .byte $D0, $09, $20, $09, $F9, $4C, $09, $F9, $20, $C1, $F8, $E6, $23, $A5, $23, $C9 ; CPU:$F8FE PRG:78FE D0 09 20 09 F9 4C 09 F9 20 C1 F8 E6 23 A5 23 C9 - .byte $EC, $90, $CC, $A9, $EC, $85, $23, $60 ; CPU:$F90E PRG:790E EC 90 CC A9 EC 85 23 60 + jsr Sub_F8ED ; CPU:$F8BE PRG:78BE 20 ED F8 +Sub_F8C1: + dec Zp24 ; CPU:$F8C1 PRG:78C1 C6 24 + lda Zp24 ; CPU:$F8C3 PRG:78C3 A5 24 + cmp #$50 ; CPU:$F8C5 PRG:78C5 C9 50 + bcs Sub_F8DD ; CPU:$F8C7 PRG:78C7 B0 14 + lda #$50 ; CPU:$F8C9 PRG:78C9 A9 50 + sta Zp24 ; CPU:$F8CB PRG:78CB 85 24 + rts ; CPU:$F8CD PRG:78CD 60 + jsr Sub_F909 ; CPU:$F8CE PRG:78CE 20 09 F9 +Sub_F8D1: + inc Zp24 ; CPU:$F8D1 PRG:78D1 E6 24 + lda Zp24 ; CPU:$F8D3 PRG:78D3 A5 24 + cmp #$D8 ; CPU:$F8D5 PRG:78D5 C9 D8 + bcc Sub_F8DD ; CPU:$F8D7 PRG:78D7 90 04 + lda #$D8 ; CPU:$F8D9 PRG:78D9 A9 D8 + sta Zp24 ; CPU:$F8DB PRG:78DB 85 24 +; ----------------------------------------------------------------------------- +; Routine: Sub_F8DD +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_F8DD: + rts ; CPU:$F8DD PRG:78DD 60 + lda GameSubMode ; CPU:$F8DE PRG:78DE A5 1B + and #$01 ; CPU:$F8E0 PRG:78E0 29 01 + bne Sub_F8ED ; CPU:$F8E2 PRG:78E2 D0 09 + jsr Sub_F8ED ; CPU:$F8E4 PRG:78E4 20 ED F8 + jmp Sub_F8ED ; CPU:$F8E7 PRG:78E7 4C ED F8 + jsr Sub_F8D1 ; CPU:$F8EA PRG:78EA 20 D1 F8 +; ----------------------------------------------------------------------------- +; Routine: Sub_F8ED +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_F8ED: + dec Zp23 ; CPU:$F8ED PRG:78ED C6 23 + lda Zp23 ; CPU:$F8EF PRG:78EF A5 23 + cmp #$04 ; CPU:$F8F1 PRG:78F1 C9 04 + bcs Sub_F8DD ; CPU:$F8F3 PRG:78F3 B0 E8 +; ---- data $F8F5-$F8F9 (5 bytes) ---- + .byte $A9, $04, $85, $23, $60 ; CPU:$F8F5 PRG:78F5 A9 04 85 23 60 + lda GameSubMode ; CPU:$F8FA PRG:78FA A5 1B + and #$01 ; CPU:$F8FC PRG:78FC 29 01 + bne Sub_F909 ; CPU:$F8FE PRG:78FE D0 09 + jsr Sub_F909 ; CPU:$F900 PRG:7900 20 09 F9 + jmp Sub_F909 ; CPU:$F903 PRG:7903 4C 09 F9 + jsr Sub_F8C1 ; CPU:$F906 PRG:7906 20 C1 F8 +; ----------------------------------------------------------------------------- +; Routine: Sub_F909 +; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. +; Local: Continues its parent routine along the condition or operation encoded in this label, +; then returns, branches again, or rejoins shared code as documented by the instructions. +; Parameters: Undetermined in Pass 1 unless implied by the caller. +; Returns: Undetermined in Pass 1; status flags and registers may carry results. +; Clobbers: Undetermined in Pass 1. +; ----------------------------------------------------------------------------- +Sub_F909: + inc Zp23 ; CPU:$F909 PRG:7909 E6 23 + lda Zp23 ; CPU:$F90B PRG:790B A5 23 + cmp #$EC ; CPU:$F90D PRG:790D C9 EC + bcc Sub_F8DD ; CPU:$F90F PRG:790F 90 CC +; ---- data $F911-$F915 (5 bytes) ---- + .byte $A9, $EC, $85, $23, $60 ; CPU:$F911 PRG:7911 A9 EC 85 23 60 ; ----------------------------------------------------------------------------- ; Routine: DispatchAslTayLdaStoreLdaStore2 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13831,9 +14687,9 @@ DispatchAslTayLdaStoreLdaStore2: asl a ; CPU:$F916 PRG:7916 0A tay ; CPU:$F917 PRG:7917 A8 lda Zp23 ; CPU:$F918 PRG:7918 A5 23 - sta ObjectXLo ; CPU:$F91A PRG:791A 85 37 + sta ObjectXLo ; CPU:$F91A PRG:791A 85 37 lda Zp24 ; CPU:$F91C PRG:791C A5 24 - sta ObjectXHi ; CPU:$F91E PRG:791E 85 38 + sta ObjectXHi ; CPU:$F91E PRG:791E 85 38 ; ----------------------------------------------------------------------------- ; Routine: DispatchLdaStoreLdaStoreLdyLda ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13845,12 +14701,12 @@ DispatchAslTayLdaStoreLdaStore2: ; ----------------------------------------------------------------------------- DispatchLdaStoreLdaStoreLdyLda: lda $F997,y ; CPU:$F920 PRG:7920 B9 97 F9 - sta VramPtrLo ; CPU:$F923 PRG:7923 85 04 + sta VramPtrLo ; CPU:$F923 PRG:7923 85 04 lda $F998,y ; CPU:$F925 PRG:7925 B9 98 F9 - sta VramCopyCount ; CPU:$F928 PRG:7928 85 05 + sta VramCopyCount ; CPU:$F928 PRG:7928 85 05 ldy #$00 ; CPU:$F92A PRG:792A A0 00 - lda (VramPtrLo),y ; CPU:$F92C PRG:792C B1 04 - sta ObjUpdateFlag ; CPU:$F92E PRG:792E 85 0E + lda (VramPtrLo),y ; CPU:$F92C PRG:792C B1 04 + sta ObjUpdateFlag ; CPU:$F92E PRG:792E 85 0E ; ----------------------------------------------------------------------------- ; Routine: Sub_F930 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13862,58 +14718,73 @@ DispatchLdaStoreLdaStoreLdyLda: ; ----------------------------------------------------------------------------- Sub_F930: iny ; CPU:$F930 PRG:7930 C8 - lda (VramPtrLo),y ; CPU:$F931 PRG:7931 B1 04 + lda (VramPtrLo),y ; CPU:$F931 PRG:7931 B1 04 clc ; CPU:$F933 PRG:7933 18 - adc ObjectXHi ; CPU:$F934 PRG:7934 65 38 + adc ObjectXHi ; CPU:$F934 PRG:7934 65 38 sta $0700,x ; CPU:$F936 PRG:7936 9D 00 07 inx ; CPU:$F939 PRG:7939 E8 iny ; CPU:$F93A PRG:793A C8 - lda (VramPtrLo),y ; CPU:$F93B PRG:793B B1 04 + lda (VramPtrLo),y ; CPU:$F93B PRG:793B B1 04 sta $0700,x ; CPU:$F93D PRG:793D 9D 00 07 inx ; CPU:$F940 PRG:7940 E8 iny ; CPU:$F941 PRG:7941 C8 - lda (VramPtrLo),y ; CPU:$F942 PRG:7942 B1 04 + lda (VramPtrLo),y ; CPU:$F942 PRG:7942 B1 04 sta $0700,x ; CPU:$F944 PRG:7944 9D 00 07 inx ; CPU:$F947 PRG:7947 E8 iny ; CPU:$F948 PRG:7948 C8 - lda (VramPtrLo),y ; CPU:$F949 PRG:7949 B1 04 + lda (VramPtrLo),y ; CPU:$F949 PRG:7949 B1 04 clc ; CPU:$F94B PRG:794B 18 - adc ObjectXLo ; CPU:$F94C PRG:794C 65 37 + adc ObjectXLo ; CPU:$F94C PRG:794C 65 37 sta $0700,x ; CPU:$F94E PRG:794E 9D 00 07 inx ; CPU:$F951 PRG:7951 E8 - dec ObjUpdateFlag ; CPU:$F952 PRG:7952 C6 0E - bne Sub_F930 ; CPU:$F954 PRG:7954 D0 DA + dec ObjUpdateFlag ; CPU:$F952 PRG:7952 C6 0E + bne Sub_F930 ; CPU:$F954 PRG:7954 D0 DA rts ; CPU:$F956 PRG:7956 60 -; ---- data $F957-$FAF5 (415 bytes) ---- +; ---- data $F957-$F976 (32 bytes) ---- ; referenced by `sbc $F976,y` at $F7C5 (operand $F976 falls inside this region) -; referenced by `lda $F997,y` at $F920 (operand $F997 falls inside this region) -; referenced by `lda $F998,y` at $F925 (operand $F998 falls inside this region) +; 32 speed bytes indexed by object number through the base $F956 (index 1 -> $F957); +; read by lda $F956,y at $F7CC and stored to $0700,x. +ObjSpeedTable: .byte $D0, $D0, $D0, $D0, $D0, $D0, $D0, $D0, $D0, $D0, $D1, $D1, $D1, $D1, $D1, $D1 ; CPU:$F957 PRG:7957 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D1 D1 D1 D1 D1 D1 .byte $DF, $DF, $DF, $DF, $DF, $DE, $DE, $DE, $DE, $DE, $D3, $D3, $D3, $D3, $D2, $D2 ; CPU:$F967 PRG:7967 DF DF DF DF DF DE DE DE DE DE D3 D3 D3 D3 D2 D2 +; ---- data $F977-$F996 (32 bytes) ---- +; 32 speed bytes indexed through the base $F976 (index 1 -> $F977); subtracted +; from $02A2 by sbc $F976,y at $F7C5. +ObjSpeedTable2: .byte $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $02 ; CPU:$F977 PRG:7977 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 02 .byte $02, $02, $02, $02, $02, $02, $03, $03, $03, $03, $03, $03, $04, $04, $04, $04 ; CPU:$F987 PRG:7987 02 02 02 02 02 02 03 03 03 03 03 03 04 04 04 04 +; ---- data $F997-$F9BC (38 bytes) ---- +; referenced by `lda $F997,y` at $F920 (operand $F997 falls inside this region) +; referenced by `lda $F998,y` at $F925 (operand $F998 falls inside this region) +; 19 x 16-bit pointers to the records at $F9BD-$FAF5 (read by lda $F997,y / +; lda $F998,y at $F920 / $F925). +SpriteLayoutPtrTable: .byte $BD, $F9, $DE, $F9, $EF, $F9, $00, $FA, $29, $FA, $EF, $F9, $DE, $F9, $6A, $FA ; CPU:$F997 PRG:7997 BD F9 DE F9 EF F9 00 FA 29 FA EF F9 DE F9 6A FA .byte $7B, $FA, $8C, $FA, $9D, $FA, $A6, $FA, $AF, $FA, $B8, $FA, $C1, $FA, $CA, $FA ; CPU:$F9A7 PRG:79A7 7B FA 8C FA 9D FA A6 FA AF FA B8 FA C1 FA CA FA - .byte $D3, $FA, $DC, $FA, $E9, $FA, $08, $00, $37, $03, $00, $00, $39, $03, $08, $08 ; CPU:$F9B7 PRG:79B7 D3 FA DC FA E9 FA 08 00 37 03 00 00 39 03 08 08 - .byte $5E, $03, $00, $08, $3B, $03, $08, $00, $2A, $82, $00, $00, $2B, $82, $08, $08 ; CPU:$F9C7 PRG:79C7 5E 03 00 08 3B 03 08 00 2A 82 00 00 2B 82 08 08 - .byte $28, $82, $00, $08, $29, $82, $08, $04, $00, $39, $43, $00, $00, $37, $43, $08 ; CPU:$F9D7 PRG:79D7 28 82 00 08 29 82 08 04 00 39 43 00 00 37 43 08 - .byte $08, $3B, $43, $00, $08, $39, $83, $08, $04, $00, $68, $03, $00, $00, $3B, $83 ; CPU:$F9E7 PRG:79E7 08 3B 43 00 08 39 83 08 04 00 68 03 00 00 3B 83 - .byte $08, $08, $37, $83, $00, $08, $68, $C3, $08, $0A, $00, $FC, $03, $00, $F8, $C8 ; CPU:$F9F7 PRG:79F7 08 08 37 83 00 08 68 C3 08 0A 00 FC 03 00 F8 C8 - .byte $03, $08, $F8, $C9, $03, $10, $00, $CA, $03, $08, $00, $CB, $03, $10, $08, $CB ; CPU:$FA07 PRG:7A07 03 08 F8 C9 03 10 00 CA 03 08 00 CB 03 10 08 CB - .byte $C3, $F8, $08, $CA, $C3, $00, $08, $FC, $C3, $08, $10, $C9, $C3, $F8, $10, $C8 ; CPU:$FA17 PRG:7A17 C3 F8 08 CA C3 00 08 FC C3 08 10 C9 C3 F8 10 C8 - .byte $C3, $00, $10, $F8, $C9, $43, $F8, $F8, $C8, $43, $00, $F8, $C8, $03, $08, $F8 ; CPU:$FA27 PRG:7A27 C3 00 10 F8 C9 43 F8 F8 C8 43 00 F8 C8 03 08 F8 - .byte $C9, $03, $10, $00, $CB, $43, $F8, $00, $CA, $43, $00, $00, $CA, $03, $08, $00 ; CPU:$FA37 PRG:7A37 C9 03 10 00 CB 43 F8 00 CA 43 00 00 CA 03 08 00 - .byte $CB, $03, $10, $08, $CB, $C3, $F8, $08, $CA, $C3, $00, $08, $CA, $83, $08, $08 ; CPU:$FA47 PRG:7A47 CB 03 10 08 CB C3 F8 08 CA C3 00 08 CA 83 08 08 - .byte $CB, $83, $10, $10, $C9, $C3, $F8, $10, $C8, $C3, $00, $10, $C8, $83, $08, $10 ; CPU:$FA57 PRG:7A57 CB 83 10 10 C9 C3 F8 10 C8 C3 00 10 C8 83 08 10 - .byte $C9, $83, $10, $04, $00, $28, $02, $00, $00, $29, $02, $08, $08, $2A, $02, $00 ; CPU:$FA67 PRG:7A67 C9 83 10 04 00 28 02 00 00 29 02 08 08 2A 02 00 - .byte $08, $2B, $02, $08, $04, $C0, $2C, $02, $00, $C0, $2C, $42, $08, $C8, $2C, $82 ; CPU:$FA77 PRG:7A77 08 2B 02 08 04 C0 2C 02 00 C0 2C 42 08 C8 2C 82 - .byte $00, $C8, $2C, $C2, $08, $04, $C0, $2F, $02, $00, $C0, $2F, $42, $08, $C8, $2F ; CPU:$FA87 PRG:7A87 00 C8 2C C2 08 04 C0 2F 02 00 C0 2F 42 08 C8 2F - .byte $82, $00, $C8, $2F, $C2, $08, $02, $C1, $2D, $02, $01, $C7, $2D, $C2, $07, $02 ; CPU:$FA97 PRG:7A97 82 00 C8 2F C2 08 02 C1 2D 02 01 C7 2D C2 07 02 - .byte $00, $2E, $03, $00, $06, $2E, $C3, $06, $02, $00, $DE, $02, $00, $00, $DF, $03 ; CPU:$FAA7 PRG:7AA7 00 2E 03 00 06 2E C3 06 02 00 DE 02 00 00 DF 03 - .byte $08, $02, $00, $DE, $03, $00, $00, $DF, $02, $08, $02, $00, $DF, $02, $00, $00 ; CPU:$FAB7 PRG:7AB7 08 02 00 DE 03 00 00 DF 02 08 02 00 DF 02 00 00 - .byte $DE, $03, $08, $02, $00, $DF, $03, $00, $00, $DE, $02, $08, $02, $00, $7B, $01 ; CPU:$FAC7 PRG:7AC7 DE 03 08 02 00 DF 03 00 00 DE 02 08 02 00 7B 01 - .byte $00, $00, $7B, $01, $08, $03, $10, $01, $02, $18, $10, $1E, $02, $20, $10, $19 ; CPU:$FAD7 PRG:7AD7 00 00 7B 01 08 03 10 01 02 18 10 1E 02 20 10 19 - .byte $02, $28, $03, $10, $02, $02, $A8, $10, $1E, $02, $B0, $10, $19, $02, $B8 ; CPU:$FAE7 PRG:7AE7 02 28 03 10 02 02 A8 10 1E 02 B0 10 19 02 B8 + .byte $D3, $FA, $DC, $FA, $E9, $FA ; CPU:$F9B7 PRG:79B7 D3 FA DC FA E9 FA +; ---- data $F9BD-$FAF5 (313 bytes) ---- +; Sprite layout records: 4-byte entries (x offset, y offset, tile index, attribute). +SpriteLayoutData: + .byte $08, $00, $37, $03, $00, $00, $39, $03, $08, $08, $5E, $03, $00, $08, $3B, $03 ; CPU:$F9BD PRG:79BD 08 00 37 03 00 00 39 03 08 08 5E 03 00 08 3B 03 + .byte $08, $00, $2A, $82, $00, $00, $2B, $82, $08, $08, $28, $82, $00, $08, $29, $82 ; CPU:$F9CD PRG:79CD 08 00 2A 82 00 00 2B 82 08 08 28 82 00 08 29 82 + .byte $08, $04, $00, $39, $43, $00, $00, $37, $43, $08, $08, $3B, $43, $00, $08, $39 ; CPU:$F9DD PRG:79DD 08 04 00 39 43 00 00 37 43 08 08 3B 43 00 08 39 + .byte $83, $08, $04, $00, $68, $03, $00, $00, $3B, $83, $08, $08, $37, $83, $00, $08 ; CPU:$F9ED PRG:79ED 83 08 04 00 68 03 00 00 3B 83 08 08 37 83 00 08 + .byte $68, $C3, $08, $0A, $00, $FC, $03, $00, $F8, $C8, $03, $08, $F8, $C9, $03, $10 ; CPU:$F9FD PRG:79FD 68 C3 08 0A 00 FC 03 00 F8 C8 03 08 F8 C9 03 10 + .byte $00, $CA, $03, $08, $00, $CB, $03, $10, $08, $CB, $C3, $F8, $08, $CA, $C3, $00 ; CPU:$FA0D PRG:7A0D 00 CA 03 08 00 CB 03 10 08 CB C3 F8 08 CA C3 00 + .byte $08, $FC, $C3, $08, $10, $C9, $C3, $F8, $10, $C8, $C3, $00, $10, $F8, $C9, $43 ; CPU:$FA1D PRG:7A1D 08 FC C3 08 10 C9 C3 F8 10 C8 C3 00 10 F8 C9 43 + .byte $F8, $F8, $C8, $43, $00, $F8, $C8, $03, $08, $F8, $C9, $03, $10, $00, $CB, $43 ; CPU:$FA2D PRG:7A2D F8 F8 C8 43 00 F8 C8 03 08 F8 C9 03 10 00 CB 43 + .byte $F8, $00, $CA, $43, $00, $00, $CA, $03, $08, $00, $CB, $03, $10, $08, $CB, $C3 ; CPU:$FA3D PRG:7A3D F8 00 CA 43 00 00 CA 03 08 00 CB 03 10 08 CB C3 + .byte $F8, $08, $CA, $C3, $00, $08, $CA, $83, $08, $08, $CB, $83, $10, $10, $C9, $C3 ; CPU:$FA4D PRG:7A4D F8 08 CA C3 00 08 CA 83 08 08 CB 83 10 10 C9 C3 + .byte $F8, $10, $C8, $C3, $00, $10, $C8, $83, $08, $10, $C9, $83, $10, $04, $00, $28 ; CPU:$FA5D PRG:7A5D F8 10 C8 C3 00 10 C8 83 08 10 C9 83 10 04 00 28 + .byte $02, $00, $00, $29, $02, $08, $08, $2A, $02, $00, $08, $2B, $02, $08, $04, $C0 ; CPU:$FA6D PRG:7A6D 02 00 00 29 02 08 08 2A 02 00 08 2B 02 08 04 C0 + .byte $2C, $02, $00, $C0, $2C, $42, $08, $C8, $2C, $82, $00, $C8, $2C, $C2, $08, $04 ; CPU:$FA7D PRG:7A7D 2C 02 00 C0 2C 42 08 C8 2C 82 00 C8 2C C2 08 04 + .byte $C0, $2F, $02, $00, $C0, $2F, $42, $08, $C8, $2F, $82, $00, $C8, $2F, $C2, $08 ; CPU:$FA8D PRG:7A8D C0 2F 02 00 C0 2F 42 08 C8 2F 82 00 C8 2F C2 08 + .byte $02, $C1, $2D, $02, $01, $C7, $2D, $C2, $07, $02, $00, $2E, $03, $00, $06, $2E ; CPU:$FA9D PRG:7A9D 02 C1 2D 02 01 C7 2D C2 07 02 00 2E 03 00 06 2E + .byte $C3, $06, $02, $00, $DE, $02, $00, $00, $DF, $03, $08, $02, $00, $DE, $03, $00 ; CPU:$FAAD PRG:7AAD C3 06 02 00 DE 02 00 00 DF 03 08 02 00 DE 03 00 + .byte $00, $DF, $02, $08, $02, $00, $DF, $02, $00, $00, $DE, $03, $08, $02, $00, $DF ; CPU:$FABD PRG:7ABD 00 DF 02 08 02 00 DF 02 00 00 DE 03 08 02 00 DF + .byte $03, $00, $00, $DE, $02, $08, $02, $00, $7B, $01, $00, $00, $7B, $01, $08, $03 ; CPU:$FACD PRG:7ACD 03 00 00 DE 02 08 02 00 7B 01 00 00 7B 01 08 03 + .byte $10, $01, $02, $18, $10, $1E, $02, $20, $10, $19, $02, $28, $03, $10, $02, $02 ; CPU:$FADD PRG:7ADD 10 01 02 18 10 1E 02 20 10 19 02 28 03 10 02 02 + .byte $A8, $10, $1E, $02, $B0, $10, $19, $02, $B8 ; CPU:$FAED PRG:7AED A8 10 1E 02 B0 10 19 02 B8 ; ----------------------------------------------------------------------------- ; Routine: Reset ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13960,17 +14831,17 @@ CopyResetVars: lda Zp9A,x ; CPU:$FB11 PRG:7B11 B5 9A sta $0130,x ; CPU:$FB13 PRG:7B13 9D 30 01 dex ; CPU:$FB16 PRG:7B16 CA - bpl CopyResetVars ; CPU:$FB17 PRG:7B17 10 EE + bpl CopyResetVars ; CPU:$FB17 PRG:7B17 10 EE lda Zp5E ; CPU:$FB19 PRG:7B19 A5 5E sta $0140 ; CPU:$FB1B PRG:7B1B 8D 40 01 - lda ObjIndex ; CPU:$FB1E PRG:7B1E A5 63 + lda ObjIndex ; CPU:$FB1E PRG:7B1E A5 63 sta $0141 ; CPU:$FB20 PRG:7B20 8D 41 01 - lda ResetHi ; CPU:$FB23 PRG:7B23 A5 3C + lda ResetHi ; CPU:$FB23 PRG:7B23 A5 3C sta $0142 ; CPU:$FB25 PRG:7B25 8D 42 01 ldy #$07 ; CPU:$FB28 PRG:7B28 A0 07 - sty VramCopyCount ; CPU:$FB2A PRG:7B2A 84 05 + sty VramCopyCount ; CPU:$FB2A PRG:7B2A 84 05 ldy #$00 ; CPU:$FB2C PRG:7B2C A0 00 - sty VramPtrLo ; CPU:$FB2E PRG:7B2E 84 04 + sty VramPtrLo ; CPU:$FB2E PRG:7B2E 84 04 ; ----------------------------------------------------------------------------- ; Routine: ClearVramByte ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -13992,9 +14863,9 @@ ClearVramByte: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- ClearVramLoop: - sta (VramPtrLo),y ; CPU:$FB32 PRG:7B32 91 04 + sta (VramPtrLo),y ; CPU:$FB32 PRG:7B32 91 04 iny ; CPU:$FB34 PRG:7B34 C8 - bne ClearVramLoop ; CPU:$FB35 PRG:7B35 D0 FB + bne ClearVramLoop ; CPU:$FB35 PRG:7B35 D0 FB ; ----------------------------------------------------------------------------- ; Routine: VramClearLoop ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14005,25 +14876,25 @@ ClearVramLoop: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- VramClearLoop: - dec VramCopyCount ; CPU:$FB37 PRG:7B37 C6 05 - lda VramCopyCount ; CPU:$FB39 PRG:7B39 A5 05 + dec VramCopyCount ; CPU:$FB37 PRG:7B37 C6 05 + lda VramCopyCount ; CPU:$FB39 PRG:7B39 A5 05 cmp #$01 ; CPU:$FB3B PRG:7B3B C9 01 - beq VramClearLoop ; CPU:$FB3D PRG:7B3D F0 F8 - lda VramCopyCount ; CPU:$FB3F PRG:7B3F A5 05 - bpl ClearVramByte ; CPU:$FB41 PRG:7B41 10 ED - jsr SetOamPtrs ; CPU:$FB43 PRG:7B43 20 AB B8 + beq VramClearLoop ; CPU:$FB3D PRG:7B3D F0 F8 + lda VramCopyCount ; CPU:$FB3F PRG:7B3F A5 05 + bpl ClearVramByte ; CPU:$FB41 PRG:7B41 10 ED + jsr SetOamPtrs ; CPU:$FB43 PRG:7B43 20 AB B8 lda #$06 ; CPU:$FB46 PRG:7B46 A9 06 sta PPUMASK ; CPU:$FB48 PRG:7B48 8D 01 20 lda #$1E ; CPU:$FB4B PRG:7B4B A9 1E - sta PPUMASKShadow ; CPU:$FB4D PRG:7B4D 85 01 + sta PPUMASKShadow ; CPU:$FB4D PRG:7B4D 85 01 lda #$10 ; CPU:$FB4F PRG:7B4F A9 10 sta PPUCTRL ; CPU:$FB51 PRG:7B51 8D 00 20 - sta PPUCTRLShadow ; CPU:$FB54 PRG:7B54 85 00 + sta PPUCTRLShadow ; CPU:$FB54 PRG:7B54 85 00 lda #$00 ; CPU:$FB56 PRG:7B56 A9 00 sta PPUSCROLL ; CPU:$FB58 PRG:7B58 8D 05 20 - sta ScrollX ; CPU:$FB5B PRG:7B5B 85 02 + sta ScrollX ; CPU:$FB5B PRG:7B5B 85 02 sta PPUSCROLL ; CPU:$FB5D PRG:7B5D 8D 05 20 - sta ScrollY ; CPU:$FB60 PRG:7B60 85 03 + sta ScrollY ; CPU:$FB60 PRG:7B60 85 03 lda #$00 ; CPU:$FB62 PRG:7B62 A9 00 sta PPUMASK ; CPU:$FB64 PRG:7B64 8D 01 20 lda PPUSTATUS ; CPU:$FB67 PRG:7B67 AD 02 20 @@ -14042,17 +14913,17 @@ VramClearLoop: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- CopyPaletteToOam: - lda $FEE6,y ; CPU:$FB76 PRG:7B76 B9 E6 FE + lda PaletteData,y ; CPU:$FB76 PRG:7B76 B9 E6 FE sta $0280,y ; CPU:$FB79 PRG:7B79 99 80 02 sta PPUDATA ; CPU:$FB7C PRG:7B7C 8D 07 20 iny ; CPU:$FB7F PRG:7B7F C8 cpy #$20 ; CPU:$FB80 PRG:7B80 C0 20 - bne CopyPaletteToOam ; CPU:$FB82 PRG:7B82 D0 F2 + bne CopyPaletteToOam ; CPU:$FB82 PRG:7B82 D0 F2 lda #$F8 ; CPU:$FB84 PRG:7B84 A9 F8 sta Zp28 ; CPU:$FB86 PRG:7B86 85 28 lda #$08 ; CPU:$FB88 PRG:7B88 A9 08 sta Zp27 ; CPU:$FB8A PRG:7B8A 85 27 - sta SpriteAttr ; CPU:$FB8C PRG:7B8C 85 E8 + sta SpriteAttr ; CPU:$FB8C PRG:7B8C 85 E8 lda #$02 ; CPU:$FB8E PRG:7B8E A9 02 sta Zp4E ; CPU:$FB90 PRG:7B90 85 4E inc Zp5E ; CPU:$FB92 PRG:7B92 E6 5E @@ -14069,9 +14940,9 @@ CopyPaletteToOam: CompareResetVars: lda $0100,x ; CPU:$FB96 PRG:7B96 BD 00 01 cmp $FC45,x ; CPU:$FB99 PRG:7B99 DD 45 FC - bne CopyResetLoop ; CPU:$FB9C PRG:7B9C D0 26 + bne CopyResetLoop ; CPU:$FB9C PRG:7B9C D0 26 dex ; CPU:$FB9E PRG:7B9E CA - bpl CompareResetVars ; CPU:$FB9F PRG:7B9F 10 F5 + bpl CompareResetVars ; CPU:$FB9F PRG:7B9F 10 F5 ldx #$07 ; CPU:$FBA1 PRG:7BA1 A2 07 ; ----------------------------------------------------------------------------- ; Routine: CopyResetVars2 @@ -14090,13 +14961,13 @@ CopyResetVars2: lda $0130,x ; CPU:$FBAD PRG:7BAD BD 30 01 sta Zp9A,x ; CPU:$FBB0 PRG:7BB0 95 9A dex ; CPU:$FBB2 PRG:7BB2 CA - bpl CopyResetVars2 ; CPU:$FBB3 PRG:7BB3 10 EE + bpl CopyResetVars2 ; CPU:$FBB3 PRG:7BB3 10 EE lda $0140 ; CPU:$FBB5 PRG:7BB5 AD 40 01 sta Zp5E ; CPU:$FBB8 PRG:7BB8 85 5E lda $0141 ; CPU:$FBBA PRG:7BBA AD 41 01 - sta ObjIndex ; CPU:$FBBD PRG:7BBD 85 63 + sta ObjIndex ; CPU:$FBBD PRG:7BBD 85 63 lda $0142 ; CPU:$FBBF PRG:7BBF AD 42 01 - sta ResetHi ; CPU:$FBC2 PRG:7BC2 85 3C + sta ResetHi ; CPU:$FBC2 PRG:7BC2 85 3C ; ----------------------------------------------------------------------------- ; Routine: CopyResetLoop ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14121,12 +14992,12 @@ CopyResetByte: lda $FC45,x ; CPU:$FBC6 PRG:7BC6 BD 45 FC sta $0100,x ; CPU:$FBC9 PRG:7BC9 9D 00 01 dex ; CPU:$FBCC PRG:7BCC CA - bpl CopyResetByte ; CPU:$FBCD PRG:7BCD 10 F7 - lda ObjIndex ; CPU:$FBCF PRG:7BCF A5 63 + bpl CopyResetByte ; CPU:$FBCD PRG:7BCD 10 F7 + lda ObjIndex ; CPU:$FBCF PRG:7BCF A5 63 and #$80 ; CPU:$FBD1 PRG:7BD1 29 80 eor #$80 ; CPU:$FBD3 PRG:7BD3 49 80 sta ZpEE ; CPU:$FBD5 PRG:7BD5 85 EE - lda ObjIndex ; CPU:$FBD7 PRG:7BD7 A5 63 + lda ObjIndex ; CPU:$FBD7 PRG:7BD7 A5 63 lsr a ; CPU:$FBD9 PRG:7BD9 4A lsr a ; CPU:$FBDA PRG:7BDA 4A and #$1C ; CPU:$FBDB PRG:7BDB 29 1C @@ -14139,12 +15010,12 @@ CopyResetByte: sta Zp55 ; CPU:$FBEB PRG:7BEB 85 55 lda $FC28,x ; CPU:$FBED PRG:7BED BD 28 FC sta Zp56 ; CPU:$FBF0 PRG:7BF0 85 56 - lda ObjIndex ; CPU:$FBF2 PRG:7BF2 A5 63 + lda ObjIndex ; CPU:$FBF2 PRG:7BF2 A5 63 and #$03 ; CPU:$FBF4 PRG:7BF4 29 03 tax ; CPU:$FBF6 PRG:7BF6 AA lda $FC21,x ; CPU:$FBF7 PRG:7BF7 BD 21 FC sta Zp5F ; CPU:$FBFA PRG:7BFA 85 5F - lda ObjIndex ; CPU:$FBFC PRG:7BFC A5 63 + lda ObjIndex ; CPU:$FBFC PRG:7BFC A5 63 lsr a ; CPU:$FBFE PRG:7BFE 4A lsr a ; CPU:$FBFF PRG:7BFF 4A and #$03 ; CPU:$FC00 PRG:7C00 29 03 @@ -14153,9 +15024,9 @@ CopyResetByte: sta Zp40 ; CPU:$FC06 PRG:7C06 85 40 lda $FC1D,x ; CPU:$FC08 PRG:7C08 BD 1D FC sta Zp66 ; CPU:$FC0B PRG:7C0B 85 66 - lda PPUCTRLShadow ; CPU:$FC0D PRG:7C0D A5 00 + lda PPUCTRLShadow ; CPU:$FC0D PRG:7C0D A5 00 ora #$80 ; CPU:$FC0F PRG:7C0F 09 80 - sta PPUCTRLShadow ; CPU:$FC11 PRG:7C11 85 00 + sta PPUCTRLShadow ; CPU:$FC11 PRG:7C11 85 00 sta PPUCTRL ; CPU:$FC13 PRG:7C13 8D 00 20 ; ----------------------------------------------------------------------------- ; Routine: NmiSpinLoop @@ -14167,7 +15038,7 @@ CopyResetByte: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- NmiSpinLoop: - jmp NmiSpinLoop ; CPU:$FC16 PRG:7C16 4C 16 FC + jmp NmiSpinLoop ; CPU:$FC16 PRG:7C16 4C 16 FC ; ---- data $FC19-$FC4D (53 bytes) ---- ResetVarTable: ; referenced by `cmp $FC45,x` at $FB99 (operand $FC45 falls inside this region) @@ -14191,18 +15062,18 @@ ResetVarTable: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- NmiHandler: - lda PPUCTRLShadow ; CPU:$FC4E PRG:7C4E A5 00 - eor NmiToggle ; CPU:$FC50 PRG:7C50 45 0F + lda PPUCTRLShadow ; CPU:$FC4E PRG:7C4E A5 00 + eor NmiToggle ; CPU:$FC50 PRG:7C50 45 0F and #$7F ; CPU:$FC52 PRG:7C52 29 7F sta PPUCTRL ; CPU:$FC54 PRG:7C54 8D 00 20 - sta PPUCTRLShadow ; CPU:$FC57 PRG:7C57 85 00 + sta PPUCTRLShadow ; CPU:$FC57 PRG:7C57 85 00 lda #$00 ; CPU:$FC59 PRG:7C59 A9 00 sta OAMADDR ; CPU:$FC5B PRG:7C5B 8D 03 20 lda #$07 ; CPU:$FC5E PRG:7C5E A9 07 sta OAMDMA ; CPU:$FC60 PRG:7C60 8D 14 40 lda #$00 ; CPU:$FC63 PRG:7C63 A9 00 sta PPUMASK ; CPU:$FC65 PRG:7C65 8D 01 20 - jsr NmiOamDmaCopy ; CPU:$FC68 PRG:7C68 20 0A FE + jsr NmiOamDmaCopy ; CPU:$FC68 PRG:7C68 20 0A FE lda #$3F ; CPU:$FC6B PRG:7C6B A9 3F sta PPUADDR ; CPU:$FC6D PRG:7C6D 8D 06 20 lda #$00 ; CPU:$FC70 PRG:7C70 A9 00 @@ -14210,35 +15081,35 @@ NmiHandler: sta PPUADDR ; CPU:$FC75 PRG:7C75 8D 06 20 sta PPUADDR ; CPU:$FC78 PRG:7C78 8D 06 20 lda PPUSTATUS ; CPU:$FC7B PRG:7C7B AD 02 20 - lda ScrollX ; CPU:$FC7E PRG:7C7E A5 02 + lda ScrollX ; CPU:$FC7E PRG:7C7E A5 02 sta PPUSCROLL ; CPU:$FC80 PRG:7C80 8D 05 20 - lda ScrollY ; CPU:$FC83 PRG:7C83 A5 03 + lda ScrollY ; CPU:$FC83 PRG:7C83 A5 03 sta PPUSCROLL ; CPU:$FC85 PRG:7C85 8D 05 20 - lda PPUCTRLShadow ; CPU:$FC88 PRG:7C88 A5 00 + lda PPUCTRLShadow ; CPU:$FC88 PRG:7C88 A5 00 sta PPUCTRL ; CPU:$FC8A PRG:7C8A 8D 00 20 - lda PPUMASKShadow ; CPU:$FC8D PRG:7C8D A5 01 + lda PPUMASKShadow ; CPU:$FC8D PRG:7C8D A5 01 sta PPUMASK ; CPU:$FC8F PRG:7C8F 8D 01 20 lda #$00 ; CPU:$FC92 PRG:7C92 A9 00 sta Zp25 ; CPU:$FC94 PRG:7C94 85 25 - sta NmiToggle ; CPU:$FC96 PRG:7C96 85 0F - jsr ReadJoypad ; CPU:$FC98 PRG:7C98 20 37 FE - lda GameMode ; CPU:$FC9B PRG:7C9B A5 10 - bne Sub_FCCA ; CPU:$FC9D PRG:7C9D D0 2B - sta FrameToggle ; CPU:$FC9F PRG:7C9F 85 22 - lda Joypad2Cur2 ; CPU:$FCA1 PRG:7CA1 A5 0A + sta NmiToggle ; CPU:$FC96 PRG:7C96 85 0F + jsr ReadJoypad ; CPU:$FC98 PRG:7C98 20 37 FE + lda GameMode ; CPU:$FC9B PRG:7C9B A5 10 + bne Sub_FCCA ; CPU:$FC9D PRG:7C9D D0 2B + sta FrameToggle ; CPU:$FC9F PRG:7C9F 85 22 + lda Joypad2Cur2 ; CPU:$FCA1 PRG:7CA1 A5 0A and #$03 ; CPU:$FCA3 PRG:7CA3 29 03 - beq NmiClearOam ; CPU:$FCA5 PRG:7CA5 F0 67 - lda NmiFrameFlag ; CPU:$FCA7 PRG:7CA7 A5 0D - beq NmiClearOam ; CPU:$FCA9 PRG:7CA9 F0 63 - ldy NmiCounter ; CPU:$FCAB PRG:7CAB A4 ED + beq NmiClearOam ; CPU:$FCA5 PRG:7CA5 F0 67 + lda NmiFrameFlag ; CPU:$FCA7 PRG:7CA7 A5 0D + beq NmiClearOam ; CPU:$FCA9 PRG:7CA9 F0 63 + ldy NmiCounter ; CPU:$FCAB PRG:7CAB A4 ED lda $FF06,y ; CPU:$FCAD PRG:7CAD B9 06 FF - beq NmiClearOam ; CPU:$FCB0 PRG:7CB0 F0 5C - sta SpriteAttr ; CPU:$FCB2 PRG:7CB2 85 E8 - cmp NmiFrameFlag ; CPU:$FCB4 PRG:7CB4 C5 0D - beq Sub_FCBF ; CPU:$FCB6 PRG:7CB6 F0 07 + beq NmiClearOam ; CPU:$FCB0 PRG:7CB0 F0 5C + sta SpriteAttr ; CPU:$FCB2 PRG:7CB2 85 E8 + cmp NmiFrameFlag ; CPU:$FCB4 PRG:7CB4 C5 0D + beq Sub_FCBF ; CPU:$FCB6 PRG:7CB6 F0 07 lda #$00 ; CPU:$FCB8 PRG:7CB8 A9 00 - sta NmiCounter ; CPU:$FCBA PRG:7CBA 85 ED - jmp NmiClearOam ; CPU:$FCBC PRG:7CBC 4C 0E FD + sta NmiCounter ; CPU:$FCBA PRG:7CBA 85 ED + jmp NmiClearOam ; CPU:$FCBC PRG:7CBC 4C 0E FD ; ----------------------------------------------------------------------------- ; Routine: Sub_FCBF ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14249,11 +15120,11 @@ NmiHandler: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FCBF: - inc NmiCounter ; CPU:$FCBF PRG:7CBF E6 ED + inc NmiCounter ; CPU:$FCBF PRG:7CBF E6 ED iny ; CPU:$FCC1 PRG:7CC1 C8 lda $FF06,y ; CPU:$FCC2 PRG:7CC2 B9 06 FF - sta SpriteAttr ; CPU:$FCC5 PRG:7CC5 85 E8 - jmp NmiClearOam ; CPU:$FCC7 PRG:7CC7 4C 0E FD + sta SpriteAttr ; CPU:$FCC5 PRG:7CC5 85 E8 + jmp NmiClearOam ; CPU:$FCC7 PRG:7CC7 4C 0E FD ; ----------------------------------------------------------------------------- ; Routine: Sub_FCCA ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14265,12 +15136,12 @@ Sub_FCBF: ; ----------------------------------------------------------------------------- Sub_FCCA: lda Zp60 ; CPU:$FCCA PRG:7CCA A5 60 - beq Sub_FCDC ; CPU:$FCCC PRG:7CCC F0 0E - lda Joypad1Press ; CPU:$FCCE PRG:7CCE A5 09 + beq Sub_FCDC ; CPU:$FCCC PRG:7CCC F0 0E + lda Joypad1Press ; CPU:$FCCE PRG:7CCE A5 09 and #$0C ; CPU:$FCD0 PRG:7CD0 29 0C - beq Sub_FCDC ; CPU:$FCD2 PRG:7CD2 F0 08 + beq Sub_FCDC ; CPU:$FCD2 PRG:7CD2 F0 08 lda #$00 ; CPU:$FCD4 PRG:7CD4 A9 00 - sta GameMode ; CPU:$FCD6 PRG:7CD6 85 10 + sta GameMode ; CPU:$FCD6 PRG:7CD6 85 10 lda #$07 ; CPU:$FCD8 PRG:7CD8 A9 07 sta Zp42 ; CPU:$FCDA PRG:7CDA 85 42 ; ----------------------------------------------------------------------------- @@ -14286,18 +15157,18 @@ Sub_FCDC: lda Zp3D ; CPU:$FCDC PRG:7CDC A5 3D ora Zp5A ; CPU:$FCDE PRG:7CDE 05 5A ora Zp3B ; CPU:$FCE0 PRG:7CE0 05 3B - bne Sub_FD0A ; CPU:$FCE2 PRG:7CE2 D0 26 - lda GameMode ; CPU:$FCE4 PRG:7CE4 A5 10 + bne Sub_FD0A ; CPU:$FCE2 PRG:7CE2 D0 26 + lda GameMode ; CPU:$FCE4 PRG:7CE4 A5 10 cmp #$02 ; CPU:$FCE6 PRG:7CE6 C9 02 - bne Sub_FD0A ; CPU:$FCE8 PRG:7CE8 D0 20 - lda Joypad1Press ; CPU:$FCEA PRG:7CEA A5 09 + bne Sub_FD0A ; CPU:$FCE8 PRG:7CE8 D0 20 + lda Joypad1Press ; CPU:$FCEA PRG:7CEA A5 09 and #$08 ; CPU:$FCEC PRG:7CEC 29 08 - beq Sub_FCFF ; CPU:$FCEE PRG:7CEE F0 0F - inc FrameToggle ; CPU:$FCF0 PRG:7CF0 E6 22 - jsr ClearOamInit ; CPU:$FCF2 PRG:7CF2 20 D3 B8 - lda FrameToggle ; CPU:$FCF5 PRG:7CF5 A5 22 + beq Sub_FCFF ; CPU:$FCEE PRG:7CEE F0 0F + inc FrameToggle ; CPU:$FCF0 PRG:7CF0 E6 22 + jsr ClearOamInit ; CPU:$FCF2 PRG:7CF2 20 D3 B8 + lda FrameToggle ; CPU:$FCF5 PRG:7CF5 A5 22 ror a ; CPU:$FCF7 PRG:7CF7 6A - bcc Sub_FCFF ; CPU:$FCF8 PRG:7CF8 90 05 + bcc Sub_FCFF ; CPU:$FCF8 PRG:7CF8 90 05 lda #$01 ; CPU:$FCFA PRG:7CFA A9 01 sta $0613 ; CPU:$FCFC PRG:7CFC 8D 13 06 ; ----------------------------------------------------------------------------- @@ -14310,11 +15181,11 @@ Sub_FCDC: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FCFF: - lda FrameToggle ; CPU:$FCFF PRG:7CFF A5 22 + lda FrameToggle ; CPU:$FCFF PRG:7CFF A5 22 ror a ; CPU:$FD01 PRG:7D01 6A - bcc NmiClearOam ; CPU:$FD02 PRG:7D02 90 0A - jsr JoypadRts ; CPU:$FD04 PRG:7D04 20 B9 FE - jmp NmiGameModeCheck ; CPU:$FD07 PRG:7D07 4C 3E FD + bcc NmiClearOam ; CPU:$FD02 PRG:7D02 90 0A + jsr JoypadRts ; CPU:$FD04 PRG:7D04 20 B9 FE + jmp NmiGameModeCheck ; CPU:$FD07 PRG:7D07 4C 3E FD ; ----------------------------------------------------------------------------- ; Routine: Sub_FD0A ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14326,7 +15197,7 @@ Sub_FCFF: ; ----------------------------------------------------------------------------- Sub_FD0A: lda #$00 ; CPU:$FD0A PRG:7D0A A9 00 - sta FrameToggle ; CPU:$FD0C PRG:7D0C 85 22 + sta FrameToggle ; CPU:$FD0C PRG:7D0C 85 22 ; ----------------------------------------------------------------------------- ; Routine: NmiClearOam ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14354,16 +15225,16 @@ NmiClearOamLoop: inx ; CPU:$FD16 PRG:7D16 E8 inx ; CPU:$FD17 PRG:7D17 E8 inx ; CPU:$FD18 PRG:7D18 E8 - bne NmiClearOamLoop ; CPU:$FD19 PRG:7D19 D0 F7 - jsr InputRead ; CPU:$FD1B PRG:7D1B 20 1D F2 - lda GameMode ; CPU:$FD1E PRG:7D1E A5 10 + bne NmiClearOamLoop ; CPU:$FD19 PRG:7D19 D0 F7 + jsr InputRead ; CPU:$FD1B PRG:7D1B 20 1D F2 + lda GameMode ; CPU:$FD1E PRG:7D1E A5 10 cmp #$02 ; CPU:$FD20 PRG:7D20 C9 02 - beq NmiGameMode2Update ; CPU:$FD22 PRG:7D22 F0 0B + beq NmiGameMode2Update ; CPU:$FD22 PRG:7D22 F0 0B cmp #$01 ; CPU:$FD24 PRG:7D24 C9 01 - bne NmiGameModeCheck ; CPU:$FD26 PRG:7D26 D0 16 + bne NmiGameModeCheck ; CPU:$FD26 PRG:7D26 D0 16 lda #$80 ; CPU:$FD28 PRG:7D28 A9 80 - sta ObjectDeltaX ; CPU:$FD2A PRG:7D2A 85 2D - jmp NmiCallObjMove ; CPU:$FD2C PRG:7D2C 4C 3B FD + sta ObjectDeltaX ; CPU:$FD2A PRG:7D2A 85 2D + jmp NmiCallObjMove ; CPU:$FD2C PRG:7D2C 4C 3B FD ; ----------------------------------------------------------------------------- ; Routine: NmiGameMode2Update ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14374,10 +15245,10 @@ NmiClearOamLoop: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- NmiGameMode2Update: - jsr ObjUpdateCall ; CPU:$FD2F PRG:7D2F 20 35 F6 - jsr ObjInitCall ; CPU:$FD32 PRG:7D32 20 FE C1 - jsr ObjIterLoop ; CPU:$FD35 PRG:7D35 20 4D DF - jsr ObjDrawCall ; CPU:$FD38 PRG:7D38 20 C6 C3 + jsr ObjUpdateCall ; CPU:$FD2F PRG:7D2F 20 35 F6 + jsr ObjInitCall ; CPU:$FD32 PRG:7D32 20 FE C1 + jsr ObjIterLoop ; CPU:$FD35 PRG:7D35 20 4D DF + jsr ObjDrawCall ; CPU:$FD38 PRG:7D38 20 C6 C3 ; ----------------------------------------------------------------------------- ; Routine: NmiCallObjMove ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14388,7 +15259,7 @@ NmiGameMode2Update: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- NmiCallObjMove: - jsr ObjMoveCall ; CPU:$FD3B PRG:7D3B 20 67 D1 + jsr ObjMoveCall ; CPU:$FD3B PRG:7D3B 20 67 D1 ; ----------------------------------------------------------------------------- ; Routine: NmiGameModeCheck ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14399,9 +15270,9 @@ NmiCallObjMove: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- NmiGameModeCheck: - lda GameMode ; CPU:$FD3E PRG:7D3E A5 10 - beq Sub_FD87 ; CPU:$FD40 PRG:7D40 F0 45 - lda GameSubMode ; CPU:$FD42 PRG:7D42 A5 1B + lda GameMode ; CPU:$FD3E PRG:7D3E A5 10 + beq Sub_FD87 ; CPU:$FD40 PRG:7D40 F0 45 + lda GameSubMode ; CPU:$FD42 PRG:7D42 A5 1B lsr a ; CPU:$FD44 PRG:7D44 4A lsr a ; CPU:$FD45 PRG:7D45 4A and #$07 ; CPU:$FD46 PRG:7D46 29 07 @@ -14409,8 +15280,8 @@ NmiGameModeCheck: lda $FE02,x ; CPU:$FD49 PRG:7D49 BD 02 FE sta $0295 ; CPU:$FD4C PRG:7D4C 8D 95 02 lda Zp6E ; CPU:$FD4F PRG:7D4F A5 6E - beq Sub_FD7C ; CPU:$FD51 PRG:7D51 F0 29 - ldy Joypad1Press2 ; CPU:$FD53 PRG:7D53 A4 1A + beq Sub_FD7C ; CPU:$FD51 PRG:7D51 F0 29 + ldy Joypad1Press2 ; CPU:$FD53 PRG:7D53 A4 1A lda #$3F ; CPU:$FD55 PRG:7D55 A9 3F sta $0208,y ; CPU:$FD57 PRG:7D57 99 08 02 iny ; CPU:$FD5A PRG:7D5A C8 @@ -14436,10 +15307,10 @@ Sub_FD69: iny ; CPU:$FD6F PRG:7D6F C8 inx ; CPU:$FD70 PRG:7D70 E8 cpx #$20 ; CPU:$FD71 PRG:7D71 E0 20 - bne Sub_FD69 ; CPU:$FD73 PRG:7D73 D0 F4 + bne Sub_FD69 ; CPU:$FD73 PRG:7D73 D0 F4 lda #$00 ; CPU:$FD75 PRG:7D75 A9 00 sta $0208,y ; CPU:$FD77 PRG:7D77 99 08 02 - sty Joypad1Press2 ; CPU:$FD7A PRG:7D7A 84 1A + sty Joypad1Press2 ; CPU:$FD7A PRG:7D7A 84 1A ; ----------------------------------------------------------------------------- ; Routine: Sub_FD7C ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14450,10 +15321,10 @@ Sub_FD69: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FD7C: - jsr GameModeDispatch ; CPU:$FD7C PRG:7D7C 20 FB BE - lda FrameToggle ; CPU:$FD7F PRG:7D7F A5 22 + jsr GameModeDispatch ; CPU:$FD7C PRG:7D7C 20 FB BE + lda FrameToggle ; CPU:$FD7F PRG:7D7F A5 22 ror a ; CPU:$FD81 PRG:7D81 6A - bcc Sub_FD87 ; CPU:$FD82 PRG:7D82 90 03 + bcc Sub_FD87 ; CPU:$FD82 PRG:7D82 90 03 jsr DispatchLdxLdaStoreLdaCmpBcs ; CPU:$FD84 PRG:7D84 20 74 F5 ; ----------------------------------------------------------------------------- ; Routine: Sub_FD87 @@ -14465,10 +15336,10 @@ Sub_FD7C: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FD87: - inc GameSubMode ; CPU:$FD87 PRG:7D87 E6 1B + inc GameSubMode ; CPU:$FD87 PRG:7D87 E6 1B lda Zp60 ; CPU:$FD89 PRG:7D89 A5 60 - beq Sub_FD90 ; CPU:$FD8B PRG:7D8B F0 03 - jsr ClearOamInit ; CPU:$FD8D PRG:7D8D 20 D3 B8 + beq Sub_FD90 ; CPU:$FD8B PRG:7D8B F0 03 + jsr ClearOamInit ; CPU:$FD8D PRG:7D8D 20 D3 B8 ; ----------------------------------------------------------------------------- ; Routine: Sub_FD90 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14480,10 +15351,10 @@ Sub_FD87: ; ----------------------------------------------------------------------------- Sub_FD90: jsr DispatchLdaBneStoreLdaOraBeq ; CPU:$FD90 PRG:7D90 20 BD FD - jsr ClearZpVars ; CPU:$FD93 PRG:7D93 20 EF B8 - lda SpriteAttr ; CPU:$FD96 PRG:7D96 A5 E8 - bne Sub_FD9D ; CPU:$FD98 PRG:7D98 D0 03 - jsr ObjNullRoutine ; CPU:$FD9A PRG:7D9A 20 0F C0 + jsr ClearZpVars ; CPU:$FD93 PRG:7D93 20 EF B8 + lda SpriteAttr ; CPU:$FD96 PRG:7D96 A5 E8 + bne Sub_FD9D ; CPU:$FD98 PRG:7D98 D0 03 + jsr ObjNullRoutine ; CPU:$FD9A PRG:7D9A 20 0F C0 ; ----------------------------------------------------------------------------- ; Routine: Sub_FD9D ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14494,14 +15365,14 @@ Sub_FD90: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FD9D: - lda GameSubMode ; CPU:$FD9D PRG:7D9D A5 1B + lda GameSubMode ; CPU:$FD9D PRG:7D9D A5 1B lsr a ; CPU:$FD9F PRG:7D9F 4A ldx #$00 ; CPU:$FDA0 PRG:7DA0 A2 00 - bcc Sub_FDAE ; CPU:$FDA2 PRG:7DA2 90 0A + bcc Sub_FDAE ; CPU:$FDA2 PRG:7DA2 90 0A ldx #$80 ; CPU:$FDA4 PRG:7DA4 A2 80 lda Zp3D ; CPU:$FDA6 PRG:7DA6 A5 3D ora Zp5A ; CPU:$FDA8 PRG:7DA8 05 5A - bne Sub_FDAE ; CPU:$FDAA PRG:7DAA D0 02 + bne Sub_FDAE ; CPU:$FDAA PRG:7DAA D0 02 ldx #$20 ; CPU:$FDAC PRG:7DAC A2 20 ; ----------------------------------------------------------------------------- ; Routine: Sub_FDAE @@ -14514,10 +15385,10 @@ Sub_FD9D: ; ----------------------------------------------------------------------------- Sub_FDAE: stx Zp2F ; CPU:$FDAE PRG:7DAE 86 2F - jsr JoypadDone ; CPU:$FDB0 PRG:7DB0 20 7E FE - lda PPUCTRLShadow ; CPU:$FDB3 PRG:7DB3 A5 00 + jsr JoypadDone ; CPU:$FDB0 PRG:7DB0 20 7E FE + lda PPUCTRLShadow ; CPU:$FDB3 PRG:7DB3 A5 00 ora #$80 ; CPU:$FDB5 PRG:7DB5 09 80 - sta PPUCTRLShadow ; CPU:$FDB7 PRG:7DB7 85 00 + sta PPUCTRLShadow ; CPU:$FDB7 PRG:7DB7 85 00 sta PPUCTRL ; CPU:$FDB9 PRG:7DB9 8D 00 20 rti ; CPU:$FDBC PRG:7DBC 40 ; ----------------------------------------------------------------------------- @@ -14531,7 +15402,7 @@ Sub_FDAE: ; ----------------------------------------------------------------------------- DispatchLdaBneStoreLdaOraBeq: lda $060B ; CPU:$FDBD PRG:7DBD AD 0B 06 - bne Sub_FDC4 ; CPU:$FDC0 PRG:7DC0 D0 02 + bne Sub_FDC4 ; CPU:$FDC0 PRG:7DC0 D0 02 sta Zp61 ; CPU:$FDC2 PRG:7DC2 85 61 ; ----------------------------------------------------------------------------- ; Routine: Sub_FDC4 @@ -14545,7 +15416,7 @@ DispatchLdaBneStoreLdaOraBeq: Sub_FDC4: lda Zp3B ; CPU:$FDC4 PRG:7DC4 A5 3B ora Zp5A ; CPU:$FDC6 PRG:7DC6 05 5A - beq Sub_FDCE ; CPU:$FDC8 PRG:7DC8 F0 04 + beq Sub_FDCE ; CPU:$FDC8 PRG:7DC8 F0 04 lda #$00 ; CPU:$FDCA PRG:7DCA A9 00 sta Zp61 ; CPU:$FDCC PRG:7DCC 85 61 ; ----------------------------------------------------------------------------- @@ -14559,13 +15430,13 @@ Sub_FDC4: ; ----------------------------------------------------------------------------- Sub_FDCE: lda Zp61 ; CPU:$FDCE PRG:7DCE A5 61 - beq Sub_FDE0 ; CPU:$FDD0 PRG:7DD0 F0 0E - bpl Sub_FDEF ; CPU:$FDD2 PRG:7DD2 10 1B + beq Sub_FDE0 ; CPU:$FDD0 PRG:7DD0 F0 0E + bpl Sub_FDEF ; CPU:$FDD2 PRG:7DD2 10 1B dec Zp62 ; CPU:$FDD4 PRG:7DD4 C6 62 - bne Sub_FDDF ; CPU:$FDD6 PRG:7DD6 D0 07 + bne Sub_FDDF ; CPU:$FDD6 PRG:7DD6 D0 07 inc Zp61 ; CPU:$FDD8 PRG:7DD8 E6 61 - beq Sub_FDDF ; CPU:$FDDA PRG:7DDA F0 03 - jsr ObjSpawnInit ; CPU:$FDDC PRG:7DDC 20 10 C0 + beq Sub_FDDF ; CPU:$FDDA PRG:7DDA F0 03 + jsr ObjSpawnInit ; CPU:$FDDC PRG:7DDC 20 10 C0 ; ----------------------------------------------------------------------------- ; Routine: Sub_FDDF ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14589,10 +15460,10 @@ Sub_FDDF: Sub_FDE0: lda Zp27 ; CPU:$FDE0 PRG:7DE0 A5 27 cmp #$08 ; CPU:$FDE2 PRG:7DE2 C9 08 - beq Sub_FDDF ; CPU:$FDE4 PRG:7DE4 F0 F9 - lda GameSubMode ; CPU:$FDE6 PRG:7DE6 A5 1B + beq Sub_FDDF ; CPU:$FDE4 PRG:7DE4 F0 F9 + lda GameSubMode ; CPU:$FDE6 PRG:7DE6 A5 1B and #$07 ; CPU:$FDE8 PRG:7DE8 29 07 - bne Sub_FDDF ; CPU:$FDEA PRG:7DEA D0 F3 + bne Sub_FDDF ; CPU:$FDEA PRG:7DEA D0 F3 inc Zp27 ; CPU:$FDEC PRG:7DEC E6 27 rts ; CPU:$FDEE PRG:7DEE 60 ; ----------------------------------------------------------------------------- @@ -14605,16 +15476,18 @@ Sub_FDE0: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FDEF: - lda GameSubMode ; CPU:$FDEF PRG:7DEF A5 1B + lda GameSubMode ; CPU:$FDEF PRG:7DEF A5 1B and #$0F ; CPU:$FDF1 PRG:7DF1 29 0F - bne Sub_FDDF ; CPU:$FDF3 PRG:7DF3 D0 EA + bne Sub_FDDF ; CPU:$FDF3 PRG:7DF3 D0 EA dec Zp27 ; CPU:$FDF5 PRG:7DF5 C6 27 - bpl Sub_FDDF ; CPU:$FDF7 PRG:7DF7 10 E6 + bpl Sub_FDDF ; CPU:$FDF7 PRG:7DF7 10 E6 inc Zp27 ; CPU:$FDF9 PRG:7DF9 E6 27 lda #$FE ; CPU:$FDFB PRG:7DFB A9 FE sta Zp61 ; CPU:$FDFD PRG:7DFD 85 61 sta Zp62 ; CPU:$FDFF PRG:7DFF 85 62 rts ; CPU:$FE01 PRG:7E01 60 +OamIndexTable: +; OAM sprite index table (read by lda $FE02,x) ; ---- data $FE02-$FE09 (8 bytes) ---- ; referenced by `lda $FE02,x` at $FD49 (operand $FE02 falls inside this region) .byte $1F, $08, $07, $06, $16, $06, $07, $08 ; CPU:$FE02 PRG:7E02 1F 08 07 06 16 06 07 08 @@ -14641,7 +15514,7 @@ NmiOamDmaCopy: NmiOamAddrLoop: lda PPUSTATUS ; CPU:$FE0C PRG:7E0C AD 02 20 lda $0208,y ; CPU:$FE0F PRG:7E0F B9 08 02 - beq Sub_FE31 ; CPU:$FE12 PRG:7E12 F0 1D + beq Sub_FE31 ; CPU:$FE12 PRG:7E12 F0 1D sta PPUADDR ; CPU:$FE14 PRG:7E14 8D 06 20 iny ; CPU:$FE17 PRG:7E17 C8 lda $0208,y ; CPU:$FE18 PRG:7E18 B9 08 02 @@ -14664,8 +15537,8 @@ Sub_FE24: sta PPUDATA ; CPU:$FE27 PRG:7E27 8D 07 20 iny ; CPU:$FE2A PRG:7E2A C8 dex ; CPU:$FE2B PRG:7E2B CA - bne Sub_FE24 ; CPU:$FE2C PRG:7E2C D0 F6 - jmp NmiOamAddrLoop ; CPU:$FE2E PRG:7E2E 4C 0C FE + bne Sub_FE24 ; CPU:$FE2C PRG:7E2C D0 F6 + jmp NmiOamAddrLoop ; CPU:$FE2E PRG:7E2E 4C 0C FE ; ----------------------------------------------------------------------------- ; Routine: Sub_FE31 ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14676,7 +15549,7 @@ Sub_FE24: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FE31: - sta Joypad1Press2 ; CPU:$FE31 PRG:7E31 85 1A + sta Joypad1Press2 ; CPU:$FE31 PRG:7E31 85 1A sta $0208 ; CPU:$FE33 PRG:7E33 8D 08 02 rts ; CPU:$FE36 PRG:7E36 60 ; ----------------------------------------------------------------------------- @@ -14700,12 +15573,12 @@ ReadJoypad: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FE39: - lda Joypad1Cur,x ; CPU:$FE39 PRG:7E39 B5 06 - sta Joypad1Prev,x ; CPU:$FE3B PRG:7E3B 95 07 - lda Joypad2Cur2,x ; CPU:$FE3D PRG:7E3D B5 0A - sta Joypad2Prev,x ; CPU:$FE3F PRG:7E3F 95 0B + lda Joypad1Cur,x ; CPU:$FE39 PRG:7E39 B5 06 + sta Joypad1Prev,x ; CPU:$FE3B PRG:7E3B 95 07 + lda Joypad2Cur2,x ; CPU:$FE3D PRG:7E3D B5 0A + sta Joypad2Prev,x ; CPU:$FE3F PRG:7E3F 95 0B dex ; CPU:$FE41 PRG:7E41 CA - bpl Sub_FE39 ; CPU:$FE42 PRG:7E42 10 F5 + bpl Sub_FE39 ; CPU:$FE42 PRG:7E42 10 F5 lda #$01 ; CPU:$FE44 PRG:7E44 A9 01 sta JOY1 ; CPU:$FE46 PRG:7E46 8D 16 40 lda #$00 ; CPU:$FE49 PRG:7E49 A9 00 @@ -14723,7 +15596,7 @@ Sub_FE39: Sub_FE50: lda JOY1 ; CPU:$FE50 PRG:7E50 AD 16 40 ror a ; CPU:$FE53 PRG:7E53 6A - bcs Sub_FE57 ; CPU:$FE54 PRG:7E54 B0 01 + bcs Sub_FE57 ; CPU:$FE54 PRG:7E54 B0 01 ror a ; CPU:$FE56 PRG:7E56 6A ; ----------------------------------------------------------------------------- ; Routine: Sub_FE57 @@ -14735,10 +15608,10 @@ Sub_FE50: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FE57: - ror Joypad1Cur ; CPU:$FE57 PRG:7E57 66 06 + ror Joypad1Cur ; CPU:$FE57 PRG:7E57 66 06 lda $4017 ; CPU:$FE59 PRG:7E59 AD 17 40 ror a ; CPU:$FE5C PRG:7E5C 6A - bcs Sub_FE60 ; CPU:$FE5D PRG:7E5D B0 01 + bcs Sub_FE60 ; CPU:$FE5D PRG:7E5D B0 01 ror a ; CPU:$FE5F PRG:7E5F 6A ; ----------------------------------------------------------------------------- ; Routine: Sub_FE60 @@ -14750,21 +15623,21 @@ Sub_FE57: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FE60: - ror Joypad2Cur2 ; CPU:$FE60 PRG:7E60 66 0A + ror Joypad2Cur2 ; CPU:$FE60 PRG:7E60 66 0A dex ; CPU:$FE62 PRG:7E62 CA - bne Sub_FE50 ; CPU:$FE63 PRG:7E63 D0 EB - lda Joypad1Press ; CPU:$FE65 PRG:7E65 A5 09 - ora Joypad2Cur ; CPU:$FE67 PRG:7E67 05 08 + bne Sub_FE50 ; CPU:$FE63 PRG:7E63 D0 EB + lda Joypad1Press ; CPU:$FE65 PRG:7E65 A5 09 + ora Joypad2Cur ; CPU:$FE67 PRG:7E67 05 08 eor #$FF ; CPU:$FE69 PRG:7E69 49 FF - and Joypad1Prev ; CPU:$FE6B PRG:7E6B 25 07 - and Joypad1Cur ; CPU:$FE6D PRG:7E6D 25 06 - sta Joypad1Press ; CPU:$FE6F PRG:7E6F 85 09 - lda NmiFrameFlag ; CPU:$FE71 PRG:7E71 A5 0D - ora UnusedZp0C ; CPU:$FE73 PRG:7E73 05 0C + and Joypad1Prev ; CPU:$FE6B PRG:7E6B 25 07 + and Joypad1Cur ; CPU:$FE6D PRG:7E6D 25 06 + sta Joypad1Press ; CPU:$FE6F PRG:7E6F 85 09 + lda NmiFrameFlag ; CPU:$FE71 PRG:7E71 A5 0D + ora UnusedZp0C ; CPU:$FE73 PRG:7E73 05 0C eor #$FF ; CPU:$FE75 PRG:7E75 49 FF - and Joypad2Prev ; CPU:$FE77 PRG:7E77 25 0B - and Joypad2Cur2 ; CPU:$FE79 PRG:7E79 25 0A - sta NmiFrameFlag ; CPU:$FE7B PRG:7E7B 85 0D + and Joypad2Prev ; CPU:$FE77 PRG:7E77 25 0B + and Joypad2Cur2 ; CPU:$FE79 PRG:7E79 25 0A + sta NmiFrameFlag ; CPU:$FE7B PRG:7E7B 85 0D rts ; CPU:$FE7D PRG:7E7D 60 ; ----------------------------------------------------------------------------- ; Routine: JoypadDone @@ -14777,7 +15650,7 @@ Sub_FE60: ; ----------------------------------------------------------------------------- JoypadDone: lda Zp2F ; CPU:$FE7E PRG:7E7E A5 2F - bne Sub_FE83 ; CPU:$FE80 PRG:7E80 D0 01 + bne Sub_FE83 ; CPU:$FE80 PRG:7E80 D0 01 rts ; CPU:$FE82 PRG:7E82 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_FE83 @@ -14789,7 +15662,7 @@ JoypadDone: ; Clobbers: Undetermined in Pass 1. ; ----------------------------------------------------------------------------- Sub_FE83: - bmi Sub_FEA3 ; CPU:$FE83 PRG:7E83 30 1E + bmi Sub_FEA3 ; CPU:$FE83 PRG:7E83 30 1E tax ; CPU:$FE85 PRG:7E85 AA ; ----------------------------------------------------------------------------- ; Routine: Sub_FE86 @@ -14804,7 +15677,7 @@ Sub_FE86: lda $06FF,x ; CPU:$FE86 PRG:7E86 BD FF 06 pha ; CPU:$FE89 PRG:7E89 48 dex ; CPU:$FE8A PRG:7E8A CA - bne Sub_FE86 ; CPU:$FE8B PRG:7E8B D0 F9 + bne Sub_FE86 ; CPU:$FE8B PRG:7E8B D0 F9 ldy #$00 ; CPU:$FE8D PRG:7E8D A0 00 ldx Zp2F ; CPU:$FE8F PRG:7E8F A6 2F ; ----------------------------------------------------------------------------- @@ -14821,7 +15694,7 @@ Sub_FE91: sta $0700,y ; CPU:$FE94 PRG:7E94 99 00 07 iny ; CPU:$FE97 PRG:7E97 C8 inx ; CPU:$FE98 PRG:7E98 E8 - bne Sub_FE91 ; CPU:$FE99 PRG:7E99 D0 F6 + bne Sub_FE91 ; CPU:$FE99 PRG:7E99 D0 F6 ; ----------------------------------------------------------------------------- ; Routine: Sub_FE9B ; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage. @@ -14835,7 +15708,7 @@ Sub_FE9B: pla ; CPU:$FE9B PRG:7E9B 68 sta $0700,y ; CPU:$FE9C PRG:7E9C 99 00 07 iny ; CPU:$FE9F PRG:7E9F C8 - bne Sub_FE9B ; CPU:$FEA0 PRG:7EA0 D0 F9 + bne Sub_FE9B ; CPU:$FEA0 PRG:7EA0 D0 F9 rts ; CPU:$FEA2 PRG:7EA2 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_FEA3 @@ -14866,7 +15739,7 @@ Sub_FEA5: sta $0780,x ; CPU:$FEB0 PRG:7EB0 9D 80 07 inx ; CPU:$FEB3 PRG:7EB3 E8 cpx #$80 ; CPU:$FEB4 PRG:7EB4 E0 80 - bne Sub_FEA5 ; CPU:$FEB6 PRG:7EB6 D0 ED + bne Sub_FEA5 ; CPU:$FEB6 PRG:7EB6 D0 ED rts ; CPU:$FEB8 PRG:7EB8 60 ; ----------------------------------------------------------------------------- ; Routine: JoypadRts @@ -14879,8 +15752,8 @@ Sub_FEA5: ; ----------------------------------------------------------------------------- JoypadRts: lda Zp2F ; CPU:$FEB9 PRG:7EB9 A5 2F - bmi Sub_FEA3 ; CPU:$FEBB PRG:7EBB 30 E6 - bne Sub_FEC0 ; CPU:$FEBD PRG:7EBD D0 01 + bmi Sub_FEA3 ; CPU:$FEBB PRG:7EBB 30 E6 + bne Sub_FEC0 ; CPU:$FEBD PRG:7EBD D0 01 rts ; CPU:$FEBF PRG:7EBF 60 ; ----------------------------------------------------------------------------- ; Routine: Sub_FEC0 @@ -14908,7 +15781,7 @@ Sub_FEC3: pha ; CPU:$FEC6 PRG:7EC6 48 dex ; CPU:$FEC7 PRG:7EC7 CA dey ; CPU:$FEC8 PRG:7EC8 88 - bne Sub_FEC3 ; CPU:$FEC9 PRG:7EC9 D0 F8 + bne Sub_FEC3 ; CPU:$FEC9 PRG:7EC9 D0 F8 ldy #$FF ; CPU:$FECB PRG:7ECB A0 FF ; ----------------------------------------------------------------------------- ; Routine: Sub_FECD @@ -14925,7 +15798,7 @@ Sub_FECD: dex ; CPU:$FED3 PRG:7ED3 CA dey ; CPU:$FED4 PRG:7ED4 88 cpx #$FF ; CPU:$FED5 PRG:7ED5 E0 FF - bne Sub_FECD ; CPU:$FED7 PRG:7ED7 D0 F4 + bne Sub_FECD ; CPU:$FED7 PRG:7ED7 D0 F4 ldy #$00 ; CPU:$FED9 PRG:7ED9 A0 00 ldx Zp2F ; CPU:$FEDB PRG:7EDB A6 2F ; ----------------------------------------------------------------------------- @@ -14942,14 +15815,20 @@ Sub_FEDD: sta $0700,y ; CPU:$FEDE PRG:7EDE 99 00 07 iny ; CPU:$FEE1 PRG:7EE1 C8 dex ; CPU:$FEE2 PRG:7EE2 CA - bne Sub_FEDD ; CPU:$FEE3 PRG:7EE3 D0 F8 + bne Sub_FEDD ; CPU:$FEE3 PRG:7EE3 D0 F8 rts ; CPU:$FEE5 PRG:7EE5 60 -; ---- data $FEE6-$FF1C (55 bytes) ---- +; ---- data $FEE6-$FF05 (32 bytes) ---- ; referenced by `lda $FEE6,y` at $FB76 (operand $FEE6 falls inside this region) -; referenced by `lda $FF06,y` at $FCAD (operand $FF06 falls inside this region) -; referenced by `lda $FF06,y` at $FCC2 (operand $FF06 falls inside this region) +; 32 bytes of palette data copied to PPUDATA and the $0280 mirror by the routine +; that reads it with lda $FEE6,y at $FB76. +PaletteData: .byte $0F, $0A, $27, $1A, $0F, $0A, $1A, $11, $0F, $30, $00, $07, $0F, $30, $00, $11 ; CPU:$FEE6 PRG:7EE6 0F 0A 27 1A 0F 0A 1A 11 0F 30 00 07 0F 30 00 11 .byte $0F, $3F, $30, $00, $0F, $3F, $00, $10, $0F, $02, $16, $30, $0F, $16, $28, $30 ; CPU:$FEF6 PRG:7EF6 0F 3F 30 00 0F 3F 00 10 0F 02 16 30 0F 16 28 30 +; ---- data $FF06-$FF1C (23 bytes) ---- +; referenced by `lda $FF06,y` at $FCAD (operand $FF06 falls inside this region) +; referenced by `lda $FF06,y` at $FCC2 (operand $FF06 falls inside this region) +; OAM attribute bytes read with lda $FF06,y at $FCAD / $FCC2. +OamAttrTable: .byte $80, $80, $80, $80, $80, $80, $80, $80, $80, $10, $10, $40, $40, $20, $20, $20 ; CPU:$FF06 PRG:7F06 80 80 80 80 80 80 80 80 80 10 10 40 40 20 20 20 .byte $20, $20, $20, $20, $20, $20, $00 ; CPU:$FF16 PRG:7F16 20 20 20 20 20 20 00 ; ----------------------------------------------------------------------------- @@ -14973,9 +15852,7 @@ IrqHandler: .byte $3A, $20, $45, $56, $45, $5A, $4F, $4F, $20, $45, $4E, $44, $20, $26, $20, $48 ; CPU:$FF7E PRG:7F7E 3A 20 45 56 45 5A 4F 4F 20 45 4E 44 20 26 20 48 .byte $41, $4C, $20, $55, $44, $41, $47, $41, $57, $41, $0D, $54, $45, $53, $54, $45 ; CPU:$FF8E PRG:7F8E 41 4C 20 55 44 41 47 41 57 41 0D 54 45 53 54 45 .byte $52, $3A, $20, $53, $48, $49, $44, $41, $53, $48, $49, $20, $59, $41, $4D, $41 ; CPU:$FF9E PRG:7F9E 52 3A 20 53 48 49 44 41 53 48 49 20 59 41 4D 41 - .byte $4D, $4F, $0D, $0C, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFAE PRG:7FAE 4D 4F 0D 0C FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFBE PRG:7FBE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFCE PRG:7FCE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFDE PRG:7FDE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $4E, $FC, $F6, $FA ; CPU:$FFEE PRG:7FEE FF FF FF FF FF FF FF FF FF FF FF FF 4E FC F6 FA + .byte $4D, $4F, $0D, $0C ; CPU:$FFAE PRG:7FAE 4D 4F 0D 0C +.res $0048, $FF + .byte $4E, $FC, $F6, $FA ; CPU:$FFFA PRG:7FFA 4E FC F6 FA .byte $1D, $FF ; CPU:$FFFE PRG:7FFE 1D FF diff --git a/NROM/Xevious (U)/xevious_mesen.cdl b/NROM/Xevious (U)/xevious_mesen.cdl new file mode 100644 index 0000000..f7e20cc Binary files /dev/null and b/NROM/Xevious (U)/xevious_mesen.cdl differ diff --git a/PROMPTS.md b/PROMPTS.md index 2c0f6b2..f77576a 100644 --- a/PROMPTS.md +++ b/PROMPTS.md @@ -39,4 +39,25 @@ Before promotion, every branch (`beq`, `bne`, `bcc`, `bcs`, `bpl`, `bmi`, `bvc`, 5. `prg.s` has no generic placeholder names (`Actor`, `Object`, `Entity`, `DataTable1`, `Buffer`, `SubC` for anything with an identifiable role). 6. `locals.inc` documents every remaining `ZpXX` neutral slot with a recorded reason. 7. Project `README.md` contains a power-on flow analysis (RESET/NMI/main-loop walk) and a Pass 3 data-table inventory. -8. `apply_symbols.py` residue report shows no resolvable operand left numeric without justification. \ No newline at end of file +8. `apply_symbols.py` residue report shows no resolvable operand left numeric without justification. +9. `CHANGELOG.md` carries the project's Pass 1, Pass 2, Pass 3 and Promotion rows, with dates. + +### Pass 3: Changelog entry +`CHANGELOG.md` is the repository's running log, and it has two parts. + +**For every change, of any kind, to any project** - a disassembly, a rename, a +comment repair, a tool fix, a documentation fix - a line goes into the **Pending** +list at the top of the file, naming the project and saying what changed. The +list is what the **next git commit's message is written from**, so the message +and the log cannot drift apart. When the commit is made, the entries move to +**History** under the commit they went in with, and **Pending** starts empty +again. + +**For every milestone a project reaches**, the milestone also gets a row in the +milestone index at the end of the file, which carries one section per project +with a row for each of the four milestones - **Pass 1** (the code/data split), +**Pass 2** (the labels replaced by names), **Pass 3** (the semantic naming) and +**Promotion** (the move into the top-level mapper folder): +- The row carries the **date** of the milestone and a sentence saying what it produced. Use the numbers the project README and the root `README.md` already carry: the instruction count, the code coverage, the number of named labels, the number of semantic zero-page aliases and the number of named data tables. +- A milestone that has not happened gets a `-` in the date column and a note saying what is still open, so a reader can see at a glance which projects are done and which are not. +- The entry is added **in the same commit** as the milestone it records, so the changelog and the source never disagree. \ No newline at end of file diff --git a/README.md b/README.md index 2a870b6..62626df 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ This is a set of disassembled NES roms using AI to translate. -This is not for distribution. -This is not for you. +# This is not for distribution. +# This is not for you. > **Layout changed 2026-10-20:** projects moved into **mapper directories** > (`NROM/`, `AOROM/`, `CNROM/`, `MMC1/`, `MMC3/`, `MMC5/`, `UNROM/`), project @@ -16,7 +16,7 @@ This is not for you. # Disassembly Project Index — /home/tmerritt/Projects/disasm/ -This document provides a consolidated overview of the **promoted** NES disassembly projects in the repository. Projects are organized **by mapper** into a folder per project under `NROM/`, `AOROM/`, `CNROM/`, `MMC1/`, `MMC3/`, `MMC5/` or `UNROM/` — everything here so far is mapper 0, so all promoted projects live in `NROM/` except Zanac (U) which is in `UNROM/`. The pre-promotion tier mirrors the structure under `_wip///` and is documented separately in **`WIP.md`** (856 projects across 30 mapper folders). Each project folder is **flat**: the source (`prg.s`, plus `header.s`/`chr.s` where present), the build config (`linker.cfg`, `symbols.inc`, `locals.inc`, `Makefile`) and the ROM splits all sit directly in the folder. Each project carries its own `README.md` (the file was called `OVERVIEW.md` before 2026-10-20) with a detailed power-on execution flow analysis. +This document provides a consolidated overview of the **promoted** NES disassembly projects in the repository. Projects are organized **by mapper** into a folder per project under `NROM/`, `AOROM/`, `CNROM/`, `MMC1/`, `MMC3/`, `MMC5/`, `UNROM/` or `MAPPER8/` — 38 of the 41 promoted projects are mapper 0 and live in `NROM/`, with `World Class Track Meet (U)` in `CNROM/` (mapper 3), `Zanac (U)` in `UNROM/` (mapper 2) and `Mermaids of Atlantis (U)` in `MAPPER8/` (mapper 8). The pre-promotion tier mirrors the structure under `_wip///` and is documented separately in **`WIP.md`** (851 projects across 29 mapper folders). Each project folder is **flat**: the source (`prg.s`, plus `header.s`/`chr.s` where present), the build config (`linker.cfg`, `symbols.inc`, `locals.inc`, `Makefile`) and the ROM splits all sit directly in the folder. Each project carries its own `README.md` (the file was called `OVERVIEW.md` before 2026-10-20) with a detailed power-on execution flow analysis. The pass history of every project — Pass 1, Pass 2, Pass 3 and Promotion, with the date and what each milestone produced — is in **`CHANGELOG.md`**. --- @@ -53,7 +53,7 @@ This document provides a consolidated overview of the **promoted** NES disassemb | 25 | Millipede (U) | USA | 16 KB | 8 KB | Vertical | BYTE-IDENTICAL (Pass 2/3 complete, 74.6% code) | $C7F1 / $C735 / $FFF0 | | 26 | Popeye (JU) (PRG 0) | — | 16 KB | 8 KB | Vertical | BYTE-IDENTICAL (Pass 2/3 complete, 72.3% code) | $C701 / $C649 / $FFF0 | | 27 | Popeye (JU) (PRG 1) | — | 16 KB | 8 KB | Horizontal | BYTE-IDENTICAL (Pass 2/3 complete, 72.3% code; promoted from `_wip` 2026-10-20) | $C701 / $C649 / $FFF0 | -| 28 | Golf (JU) | Japan | 16 KB | 8 KB | Vertical | BYTE-IDENTICAL (Pass 1+ substantial; whole-ROM compare added 2026-10-20) | $C0A6 / $C000 / $C0C4 | +| 28 | Golf (JU) | Japan | 16 KB | 8 KB | Vertical | BYTE-IDENTICAL (Pass 1+2+3 complete; promoted from `_wip` 2026-10-21) | $C0A6 / $C000 / $C0C4 | | 29 | Hogan's Alley (JU) | Japan | 16 KB | 8 KB | Vertical | BYTE-IDENTICAL (Pass 2 complete, Pass 3 partial, 49.1% code; promoted 2026-10-20) | $C088 / $C000 / $C000 | | 30 | Mario Bros (JU) | Japan | 16 KB | 8 KB | Vertical | BYTE-IDENTICAL (Pass 2 complete, Pass 3 partial, 78.4% code; promoted 2026-10-20) | $C07D / $C000 / $C000 | | 31 | Pac-Man (Tengen) (U) | USA | 16 KB | 8 KB | Horizontal | BYTE-IDENTICAL (Pass 2 complete, Pass 3 partial, 20.0% code; promoted 2026-10-20) | $C0FA / $C033 / $C16A | @@ -62,25 +62,24 @@ This document provides a consolidated overview of the **promoted** NES disassemb | 34 | Raid on Bungeling Bay (U) | USA | 16 KB | 8 KB | Vertical | BYTE-IDENTICAL (Pass 2/3 partial, 64.6% code; promoted 2026-10-20) | $C04C / $C000 / $C2C0 | | 35 | Raid on Bungeling Bay (U) [a2] | — | 16 KB | 8 KB | Horizontal | BYTE-IDENTICAL (Pass 2 complete, Pass 3 partial, 64.3% code; promoted 2026-10-20) | $C04C / $C000 / $C2C0 | | 36 | Urban Champion (JU) | Japan | 16 KB | 8 KB | Vertical | BYTE-IDENTICAL (Pass 3 complete, 33.9% code) | $CA91 / $CA00 / $CA00 | -| 37 | Xevious (U) | USA | 32 KB | 8 KB | Horizontal | BYTE-IDENTICAL (Pass 3 complete, 34.5% code) | $FC4E / $FAF6 / $FF1D | +| 37 | Xevious (U) | USA | 32 KB | 8 KB | Horizontal | BYTE-IDENTICAL (Pass 3 complete, 38.0% code) | $FC4E / $FAF6 / $FF1D | | 38 | Zanac (U) | USA | 128 KB | none | Horizontal | BYTE-IDENTICAL (Pass 3 complete, 34.5% code) | $CE8D / $E7BF / $CEC4 | +| 39 | Volleyball (U) | Japan | 32 KB | 8 KB | Vertical | BYTE-IDENTICAL (Pass 3 complete, 73.0% code; promoted 2026-10-21) | $8053 / $8000 / $FFFF | +| 40 | Mermaids of Atlantis (U) | USA | 64 KB | 64 KB | Vertical | BYTE-IDENTICAL (Pass 3 complete, 12.3% code; promoted 2026-10-20, rebuilt 2026-10-21) | $808F / $FF00 / $8036 | +| 41 | World Class Track Meet (U) | USA | 32 KB | 32 KB | Horizontal | BYTE-IDENTICAL (Pass 1+2+3 complete, 55.0% code; promoted from `_wip` 2026-10-21) | $F803 / $F6FD / $C0C0 (dead) | -All 38 are mapper 0 / 16 KB PRG / 8 KB CHR, no trainer; Xevious (U) is mapper 0 / 32 KB PRG / 8 KB CHR, no trainer; Zanac (U) is mapper 2 / 128 KB PRG / 8 KB CHR, no trainer. +Thirty-six of the 41 rows are mapper 0 with a 16 KB PRG, 8 KB CHR and no trainer. +The exceptions: `Xevious (U)` and `Volleyball (U)` are mapper 0 with a 32 KB PRG; +`World Class Track Meet (U)` is mapper 3 (CNROM) with a 32 KB PRG and 32 KB CHR +(its header's CHR-size field overstates the CHR by 32 KB); `Zanac (U)` is mapper 2 +with a 128 KB PRG and no CHR; `Mermaids of Atlantis (U)` is mapper 8 with a 64 KB +PRG, 64 KB CHR and eight 8 KB banks. -Rows 1-27, row 29 (`Hogan's Alley (JU)`, promoted 2026-10-20), row 30 -(`Mario Bros (JU)`, promoted 2026-10-20), row 31 -(`Pac-Man (Tengen) (U)`, promoted 2026-10-20), row 32 -(`Pac-Man (U)`, promoted 2026-10-20), row 33 (`Pyramid (U)`, promoted -2026-10-20), row 34 (`Raid on Bungeling Bay (U)`, promoted 2026-10-20), row 35 -(`Raid on Bungeling Bay (U) [a2]`, promoted 2026-10-20), row 36 -(Urban Champion (JU)) and row 37 (Xevious (U)) are -promoted. Row 28 (`Golf (JU)`) is still in `_wip/` but now also verifies -**BYTE-IDENTICAL**: its whole-ROM compare was added 2026-10-20, so the header -and CHR are proven for it too. All 37 rows in this table are therefore -**BYTE-IDENTICAL** — `make` compares the whole reconstructed ROM against -`rom.nes` in the project folder. -(Urban Champion, row 36, kept its tail number so the tier split is no longer a -single contiguous range.) +All 41 rows are promoted and **BYTE-IDENTICAL** — `make` compares the whole +reconstructed ROM against `rom.nes` in the project folder. The last two to leave +`_wip/` were `Golf (JU)` (row 28) and `World Class Track Meet (U)` (row 41), both +promoted on 2026-10-21. (Urban Champion, row 36, kept its tail number, so the +promoted numbering is no longer a single contiguous range.) > **Still true after the 2026-10-20 reorganization.** The mapper reorganization moved > `Donkey Kong Jr. Math (U)` (row 19) into `_wip/NROM/` — it was fixed the same day (its four @@ -92,7 +91,7 @@ single contiguous range.) > was finished the same day: the byte-596 mismatch (`$0A` operands where the ROM > uses `$11`, now aliased `NmiMaskShadow`) is fixed, the 4,401 damaged audit > comments were re-anchored via `_tools/repair_audit_comments.py`, and 58 raw -> `jsr/jmp $XXXX` operands were substituted with labels/equates. **All 35 +> `jsr/jmp $XXXX` operands were substituted with labels/equates. **All 38 > projects under `NROM/` now verify byte-identical.** **How to read this table.** The vectors are the three little-endian words at the **end of the @@ -151,6 +150,31 @@ encode region, so CIRCUS — whose folder carries no suffix — is left as `—` `_tools/apply_symbols.py`). **16** operands are left numeric: `$13` used as a plain high-byte scratch beside `Temp12`, where none of its three aliases fits. Rebuild stays byte-identical. +- **Audit-trail repair (2026-10-21):** the per-instruction audit comments were **stale by + two bytes** from `ResetInitializationData` ($C085) onward — 5,944 of the 6,007 comments + named the wrong CPU address/PRG offset, because the 3-byte `.byte "HAL"` signature at + $C082–$C084 was counted as one byte when the trail was generated. The routine headers + and the linker labels were correct, so source and headers disagreed. + `_tools/repair_audit_comments.py` rebuilt the trail from the `ca65 -l` listing + (validated against `prg.bin`) and `_tools/align_audit_comments.py` restored the + canonical column-35 layout. Comment-and-whitespace only: the code text of all 8,544 + lines is unchanged and `make` still prints **Byte-identical ROM verified.** All 6,007 + comments now re-check against `prg.bin`, all 65 routine headers agree with the + instructions they describe, and every label agrees with `reconstructed.lbl`. A + related off-by-one in `align_audit_comments.py` was fixed (it tested the indented code + length against 31 instead of 35, so 28–31-character code texts were never padded into + the column). +- **Routine headers completed (2026-10-21):** all **63** routine headers now carry the + full template `AGENTS.md` describes — global, local, parameters, returns and + **clobbers**. The `; Clobbers:` blocks are derived, not written by hand: + `_tools/derive_clobbers.py` takes the opcode from the audit comment's byte list (so + the addressing mode is exact), resolves the operand through `locals.inc`/`symbols.inc` + to name what is written, follows the real control flow (a `jsr` to another named entry + is a call; a branch or a fall-through is not), and models register preservation — so + `NmiHandler` reports *no register* (it saves and restores A, X and Y) and + `FlushPpuCommandPreserved` reports only A (X and Y come back unchanged). The flags are + named individually. Comment-only change: the code text of all 8,538 lines is unchanged + and `make` still prints **Byte-identical ROM verified.** - **Details:** `Balloon Fight (JU)/README.md` ### 2. Baseball (UE) @@ -390,7 +414,7 @@ encode region, so CIRCUS — whose folder carries no suffix — is left as `—` - **Details:** `Mario Bros (JU)/README.md` ### 33. Pyramid (U) (Sachen) -- **Folder:** `NROM/Pyramid (U)/` (promoted out of `_wip/NROM/` 2026-10-20 by `git mv`) +- **Folder:** `NROM/Pyramid (U) (Sachen)/` (promoted out of `_wip/NROM/` 2026-10-20 by `git mv`; the folder was renamed from `NROM/Pyramid (U)` on 2026-10-21 to match the inventory row) - **ROM:** `Pyramid (U) (Sachen).nes` (24,592 bytes), reached through the `rom.nes` symlink - **Source:** `prg.s` (8,253 lines; 3,130 instruction lines covering 6,493 code bytes = 39.6%; 463 labels, **zero `Label_` residue**, zero raw `$XXXX` jsr/jmp/branch operands, 3,762 canonical audit comments, 0 byte mismatches against `prg.bin`) - **Linker:** HEADER at $0000 (16 bytes), PRG at $C000 (16 KB), CHR at $0000 (8 KB) @@ -401,7 +425,7 @@ encode region, so CIRCUS — whose folder carries no suffix — is left as `—` - **Pass 2 (2026-10-20):** a fresh map derived from this dump's own committed split: 431 routine entries and the 32 data blocks named, 428 `Label_XXXX` definitions gone, 320 raw `$XXXX` call operands resolved. The internal branch-target names are derived mechanically from the branch that reaches them by `_tools/derive_branch_names.py`. Recorded in `routinemap.tsv` - **Pass 3 (2026-10-20):** 24 semantic zero-page aliases, each applied only where its role is proven (`zp_aliases.inc`); the 57 slots that stay neutral are each listed with the reason. 32 data tables named — `TaskVectorTable1`/`TaskVectorTable2`, `LevelScriptData`, `MusicPeriodTable`, `SoundEnvelopeTable`, the actor tables — and recorded in `data_region_names.tsv`. `apply_symbols.py` reports **0 residue** - **Residue:** the zero page is reused heavily — 410 references still carry a neutral name, mostly the general-purpose scratch of the shift and arithmetic helpers. 482 absolute operands point at RAM and stay numeric. `sta $4100` stays a raw operand: it is outside the `$2000-$4017` range `PROMPTS.md` asks to be symbolic, and no hardware name would describe a mapper unlock -- **Details:** `Pyramid (U)/README.md` +- **Details:** `Pyramid (U) (Sachen)/README.md` ### 34. Raid on Bungeling Bay (U) @@ -438,19 +462,20 @@ encode region, so CIRCUS — whose folder carries no suffix — is left as `—` - **Pass 3 symbols (2026-10-19):** **70 operands substituted** (4 single-name + 66 hardware) from `symbols.inc`/`locals.inc` via `_tools/apply_symbols.py` — zero residue. Rebuild stays byte-identical. - **Details:** `Urban Champion (JU)/README.md` -### 38. Xevious (U) +### 37. Xevious (U) - **Folder:** `NROM/Xevious (U)/` (promoted out of `_wip/NROM/Xevious (U)/`) - **ROM:** `Xevious (U).nes` (32,768 bytes) -- **Source:** `prg.s` (Pass 3; 795 labels) +- **Source:** `prg.s` (Pass 3; 868 labels) - **Linker:** HEADER at $0000, PRG at $8000-$FFFF, CHR at $0000-$1FFF - **Vectors:** NMI → $FC4E (`NmiHandler`), RESET → $FAF6 (`Reset`), IRQ → $FF1D (`IrqHandler`) - **Key subsystems:** NMI-driven frame loop with OAM DMA, PPU scroll/control latch, controller reading with shift register on $4016/$4017; two computed-dispatch mechanisms: `jmp ($fe)` through a 16-entry table at $BA8B (sprite attribute dispatch), `jmp ($4)` through a 64-entry table at $CA0A (object update dispatch); game mode state machine (title/game/demo) driven by `GameMode` ($10) and `GameSubMode` ($1B); object iteration, movement and drawing; sprite attribute packing into OAM - **Build fix:** none at PRG level — it was PRG-identical in `_wip/` and stayed byte-identical through Pass 3. Promotion added `header.s`, `chr.s`, a HEADER/PRG/CHR `linker.cfg`, the `rom.nes` symlink and the whole-ROM `cmp` -- **Pass 1 correction:** static trace from vectors reached only 13.6% of PRG. Declaring both jump tables via `--table` plus 92 hand-seeded entry points recovered code behind computed dispatch, reaching 34.5% -- **Residue:** ~65.5% of PRG remains `.byte` data (pattern/graphics data at $8000-$A2BF, sprite attribute table at $BB55-$BEFA, 4 KB at $A6CE-$B8AA, and miscellaneous small regions). Six addresses contain undocumented/illegal opcodes not decoded by the tracer: $9848, $A2C3, $CD89, $E0FF, $E3B5, $F230 +- **Pass 1 correction:** static trace from vectors reached only 13.6% of PRG. Declaring both jump tables via `--table` plus 92 hand-seeded entry points recovered code behind computed dispatch, reaching 34.5%. On 2026-10-21 the split was redone from the project's Mesen CDL with `_tools/cdl_reclass.py`: 1,158 bytes data→code, 48 code→data, 42 labels emitted, giving 12,455 code bytes (38.0%) and 6,002 instructions; the 45 recovered entries are named `Sub_XXXX`, so no `Label_` remains +- **Pass 3 tables:** 32 named data tables, including the $A74B-$B8AA block split into `VramWritePtrTable`, `VramWriteData`, `DataStreamPtrTable`, `ObjTilePtrTable`, `ObjTileData` and `DataStreamData`; the 4-entry pointer table at $D833; `ObjSpeedTable`/`ObjSpeedTable2`/`SpriteLayoutPtrTable`/`SpriteLayoutData` at $F957-$FAF5; `PaletteData`/`OamAttrTable` at $FEE6-$FF1C; and `TextTileData` at $F5D8 (font tile indices decoding to PLAYER, GAME OVER, READY, SOLVALOU, LEFT, PAUSE) +- **Residue:** 20,313 bytes (62.0%) remain `.byte` data (pattern/graphics data at $8000-$A2BF, sprite attribute table at $BB55-$BEFA, streams at $ACFB-$B8AA, and miscellaneous small regions). Six CDL-silent raw call operands remain and five regions (`Sub_C626`, `$D24B`, `Sub_D61B`, `Sub_D63E`, `Sub_EA9F`) still decode as code although their bytes form tables; both are documented in the project README. Six addresses contain undocumented/illegal opcodes not decoded by the tracer: $9848, $A2C3, $CD89, $E0FF, $E3B5, $F230 - **Details:** `Xevious (U)/README.md` -### 39. Zanac (U) +### 38. Zanac (U) - **Folder:** `UNROM/Zanac (U)/` (promoted out of `_wip/UNROM/Zanac (U)/`) - **ROM:** `Zanac (U).nes` (131,072 bytes) - **Source:** `prg.s` + `prg.07.s` (Pass 3; bank 7 traced with 391 labels, banks 0-6 as raw data) @@ -461,56 +486,90 @@ encode region, so CIRCUS — whose folder carries no suffix — is left as `—` - **Pass 1 correction:** static trace from vectors reached only 37.9% of bank 7. Banks 0-6 remain as raw `.byte` data pending bank-switch analysis - **Residue:** ~65.5% of bank 7 remains `.byte` data. Seven addresses contain undocumented/illegal opcodes not decoded by the tracer: $D506, $D876, $E15B, $E44B, $E520, $E909, $F0FE - **Details:** `Zanac (U)/README.md` -Wait, I made an error. Xevious is already #37. Let me fix this. + +### 39. Volleyball (U) +- **Folder:** `NROM/Volleyball (U)/` (promoted out of `_wip/NROM/Volleyball (U)/`) +- **ROM:** `Volleyball (U).nes` (40,976 bytes) +- **Source:** `prg.s` (Pass 3; 1,989 labels, all semantic — 730 read out of the code by hand, 1,221 internal branch targets derived mechanically) +- **Linker:** HEADER at $0000, PRG at $8000-$FFFF, CHR at $0000-$1FFF +- **Vectors:** NMI → $8053 (`NmiHandler`), RESET → $8000 (`Reset`), IRQ → $FFFF (not a handler — the last byte of the PRG image; the APU frame counter is never IRQ-enabled) +- **Key subsystems:** the whole game runs from the NMI handler — the main loop at $81B5 only re-arms $DF and refreshes eight zero-page bytes. OAM shadow at $03FF uploaded by DMA, a VRAM update-script interpreter driven from a four-byte command block at $05C0-$05C3, controller reading with a shift register on $4016/$4017, a per-frame crowd animation, and an eleven-entry game-state dispatch table at $85E1 keyed by `GameState` ($2B) and `GameSubState` ($2C) +- **Build fix:** none — it was whole-ROM byte-identical in `_wip/` and stayed that way through Pass 3. Promotion was `git mv` plus the doc updates +- **Pass 1 correction:** the static trace reached only 66% of the PRG image. Declaring the game-state dispatch table (`--table 85E1:11`) plus a Mesen Code Data Logger capture taken while a random-input bot played the attract demo promoted 1,757 further bytes from data to code, reaching 73.0% (11,395 instructions / 23,926 code bytes, 8,842 data bytes, 0 unclassified) +- **Verification:** `_tools/cdl_check.py` cross-checks the finished `prg.s` against the CDL — 0 CDL-code bytes not covered by an instruction and 0 CDL-data bytes that start one. `apply_symbols.py --report` reports 0 residue; `align_audit_comments.py` reports no column drift +- **Residue:** the ten copies of the per-nation player-movement and ball routines are named by their position in the ROM, not mapped to the ten selectable nations — the copies differ only in a few constants, so the mapping would need a per-copy behavioural trace. `BallHitOffsetTable` and the speed tables hold values whose exact meaning is still inferred from the surrounding code +- **Details:** `Volleyball (U)/README.md` ## `_wip/` Projects -The pre-promotion tier is documented in **`WIP.md`**. It now holds **856 -projects** across **30 mapper folders**: +The pre-promotion tier is documented in **`WIP.md`**. It now holds **851 +projects** across **29 mapper folders**: | Folder | Mapper | Projects | |--------|--------|----------| -| `_wip/NROM/` | 0 | 38 | +| `_wip/NROM/` | 0 | 35 | | `_wip/MMC1/` | 1 | 221 | | `_wip/UNROM/` | 2 | 97 | -| `_wip/CNROM/` | 3 | 58 | +| `_wip/CNROM/` | 3 | 57 | | `_wip/MMC3/` | 4 | 239 | | `_wip/MMC5/` | 5 | 10 | -| `_wip/MAPPER7/` … `_wip/MAPPER232/` | 7-232 | 193 | +| `_wip/MAPPER7/` … `_wip/MAPPER232/` | 7-232 | 192 | -All 856 build **byte-identical for the whole ROM** — the tier was moved off +All 851 build **byte-identical for the whole ROM** — the tier was moved off the old PRG-level-only compare on 2026-10-20, so the header and CHR are now -proven for every project here, exactly as in the promoted tier. **856 of them -are Pass 0 skeletons**: the folder shape and the build are proven, but -`prg.s` is still a single `.incbin "prg.bin"`. Only `Golf (JU)` carries a -real disassembly (Pass 1 + Pass 2). +proven for every project here, exactly as in the promoted tier. **All 851 of +them are Pass 0 skeletons**: the folder shape and the build are proven, but +`prg.s` is still a single `.incbin "prg.bin"`. `Volleyball (U)` was the last +project to leave the tier with a full disassembly: Pass 1 + Pass 2 + Pass 3, +promoted to `NROM/Volleyball (U)` on 2026-10-21; `Golf (JU)` and `World Class +Track Meet (U)` followed on 2026-10-21, promoted to `NROM/Golf (JU)/` and +`CNROM/World Class Track Meet (U)/` respectively. Two things are worth knowing before touching a `_wip/` project: - **Most of the tier is a banked mapper with a PRG image larger than the - 6502's address space.** Only two projects have a 16 KB PRG; 151 have - 32 KB, 523 have 128 KB and one (`Action 52 (U) [!]`) has 1.5 MB. Those + 6502's address space.** Only two projects have a 16 KB PRG; 149 have + 32 KB, 522 have 128 KB and one (`Action 52 (U) [!]`) has 1.5 MB. Those projects link their MEMORY areas at *file offsets* rather than CPU addresses, which is both the only option and the honest model. See "Two linker layouts" in `WIP.md`. -- **227 projects have no CHR at all** — the mapper supplies CHR RAM. +- **226 projects have no CHR at all** — the mapper supplies CHR RAM. -The tier is deliberately **not** built by the root `Makefile` — `MAPPERS` -names only the promoted mapper folders. Build it explicitly: +The tier is deliberately **not** built by the root `Makefile`'s `all`/`clean`/ +`` targets — `MAPPERS` names only the promoted mapper folders. The +pre-promotion tier has its own explicit targets: ``` -for d in _wip/*/*/; do make -C "$d"; done +make wip # build + verify every _wip/// +make wipclean # clean the build artifacts in the tier ``` +Both are driven by `WIP := _wip` at the top of the root `Makefile`; without +that variable the loop expands to `for m in /*/`, which walks the filesystem +root instead of the tier. + +(The old manual loop, `for d in _wip/*/*/; do make -C "$d"; done`, still works +as an equivalent.) + Promotion is now just `git mv` plus the disassembly work: the whole-ROM build, the `header.s`/`chr.s` sources, the HEADER/PRG/CHR `linker.cfg` and the `rom.nes` copy are already in place. No `_tools` path change is needed, because both tiers sit two levels deep, so `../../_tools/` is correct either way. `Lunar Pool (U)`, `Donkey Kong (JU)`, `Popeye (JU) (PRG 1)`, `Raid on Bungeling Bay (U)`, `Pac-Man (U)`, `Raid on Bungeling Bay (U) [a2]`, -`Pac-Man (Tengen) (U)`, `Pyramid (U)`, `Hogan's Alley (JU)` and +`Pac-Man (Tengen) (U)`, `Pyramid (U) (Sachen)`, `Hogan's Alley (JU)` and `Mario Bros (JU)` (all 2026-10-20) went through exactly that and came out -whole-ROM byte-identical on the first promoted build. +whole-ROM byte-identical on the first promoted build. `Xevious (U)` and +`Zanac (U)` followed on 2026-10-20, `Mermaids of Atlantis (U)` on 2026-10-20, +and `Volleyball (U)` on 2026-10-21. + +**`git mv` only moves the tracked files**, so the old `_wip/` folder survives +with its untracked build artifacts (`*.o`, `reconstructed.nes`, +`reconstructed.lbl`, `reconstructed.map`) and sometimes with a stale +`README.md` left behind. Delete the leftover folder — otherwise it counts as +a project in every tier tally while having no source to build. `Xevious (U)` +and `Zanac (U)` both left one behind on 2026-10-20; both were cleaned up on +2026-10-21. Notable vector/header observations for Pass 1 work: - **Pac-Man (U)** RESET at `$FF00` — the vector-page tail, but **not** padding: `$FF00` holds real boot code (`sei`/`cld`, PPU off, double vblank wait, `jmp ColdStart` at `$C042`). The **Tengen variant** RESETs at `$C033` and has no boot code at `$FF00` at all (that region is `$FF` padding) — the same boot sequence is inline at `$C033`. The two PRGs differ in 56 bytes in 8 runs, all of them code-versus-licensee-text. @@ -520,8 +579,9 @@ Notable vector/header observations for Pass 1 work: - **Ice Climber (JE) vs (U)**: byte-identical PRG *and* header — only the CHR differs (~regional title graphic). - **Popeye (JU) PRG 0 vs PRG 1**: different PRG binaries (and mirroring); same vectors. - **Raid on Bungeling Bay (U) vs [a2]**: `[a2]` differs in mirroring only per header, but PRGs differ — separate builds. -- **Pyramid (U)** (Sachen) — *promoted 2026-10-20*: the unlicensed Sachen boot pokes a mapper unlock at `$4100`, checks the RAM bytes `$0120`/`$0121` against "A"/"V", and dispatches through two queued-event tables with `jmp ($0002)`. It also dispatches through `jmp` trampoline tables that live *inside* the data regions — 828 bytes of code that the tracer could not reach were recovered by hand. See `NROM/Pyramid (U)/README.md`. +- **Pyramid (U)** (Sachen) — *promoted 2026-10-20*: the unlicensed Sachen boot pokes a mapper unlock at `$4100`, checks the RAM bytes `$0120`/`$0121` against "A"/"V", and dispatches through two queued-event tables with `jmp ($0002)`. It also dispatches through `jmp` trampoline tables that live *inside* the data regions — 828 bytes of code that the tracer could not reach were recovered by hand. See `NROM/Pyramid (U) (Sachen)/README.md`. - **CIRCUS** — *at Pass 2/3*: full recursive disassembly complete. NMI-driven frame state machine (main loop is a spin loop at $C057). Menu text at $C763 ("CONTINUE", "STAGE", "SELECT", "PLAY"). Object state machine at $DC3F–$FE7B. Audio sequence data at $FABB–$FFFB. See `CIRCUS/README.md`. +- **Mermaids of Atlantis (U)** — *promoted 2026-10-20, rebuilt 2026-10-21*: mapper 8 (MMC3) with 64 KB of PRG, so the PRG is eight 8 KB banks and two of them can be visible at the same CPU address. The image carries the reset stub **and the vector table twice**: at file `$7FFA` (the fixed bank) the NMI vector is `$808F` — that is the live one, and `$808F` is the frame handler — while the copy at file `$FFFA` names `$8189`, which is a `BRK` in the first half of the image. The fixed bank is the *fourth* 8 KB bank (`$6000-$7FFF`), not the last one, which is why the game's text table lives at CPU `$F1D6`: that is the fixed window, and the code reads it there. Mesen maps the fixed bank the same way, and the dump's own code is what settles it. The disassembly therefore has one segment per bank (`PRG0`..`PRG7`), each with its own `.org` for the CPU window, and banks 4 to 7 carry a `Bank4_`..`Bank7_` label prefix. See `MAPPER8/Mermaids of Atlantis (U)/README.md`. - **Joypad Test Cartridge (U)** — *Pass 3 complete*: minimal code (23.4%), data-heavy test cartridge. Data region `$CF06–$FFFF` broken into 20 named sub-blocks; VRAM command stream opcode set decoded via `RetAddrUpdate` return-address modification trick at `$CDC8`. See `Joypad Test Cartridge (U)/README.md`. - **Wild Gunman (U)** — *Pass 1 redone, Pass 2/3 complete*: NMI-driven frame loop. Gates its code behind runtime computed-goto tables — see the `prg.s` header block and its `README.md`. - **Mario Bros (JU)** — *Pass 1 corrected, Pass 2/3 complete, promoted 2026-10-20*: the engine's handler tables sit **inline**, right after the `jsr` that reads them, so the static tracer could not follow them. A Mesen Code Data Logger capture showed 1,067 bytes the tracer had left as data were code, taking the split from 72.0% to 78.4%. Pass 2 named every label (zero `Label_`, zero `SubC`) and Pass 3 added 25 semantic zero-page aliases and named 35 data tables. Code is gated behind stack-based indirect dispatch at `$CD9E` and a 20-entry `JSR` thunk table at `$C5A3`. Audio routines in `$F8xx-$F9xx` clearly identifiable from APU register writes. See `NROM/Mario Bros (JU)/README.md`. @@ -578,12 +638,14 @@ cd /home/tmerritt/Projects/disasm make # all projects, all mappers make clean # clean them all make MMC3 # one mapper tier only +make wip # the pre-promotion tier under _wip/ ``` -The root `Makefile` covers the **promoted** tier only. The pre-promotion tier -under `_wip/` is built explicitly: +The root `Makefile` covers the **promoted** tier only — `make`, `make clean` +and `make ` never touch `_wip/`. The pre-promotion tier under `_wip/` +is built explicitly with `make wip` (and cleaned with `make wipclean`): ```bash -for d in _wip/*/*/; do make -C "$d"; done +for d in _wip/*/*/; do make -C "$d"; done # equivalent manual loop ``` See `WIP.md` for the `_wip/` tier's layout, its quirks and its open work. @@ -644,11 +706,12 @@ project fell through to whichever laxer spelling matched most lines. Fixed with over 9 projects, plus hand fixes to CIRCUS and Excitebike) closed it out, so the checker now reports **all canonical**. -Inside `_wip/`, only `Golf (JU)` has instructions to comment at all — it is -the one project in that tier with a real disassembly, and its comments use -the pre-canonical spelling (`; C007: AD 02 20`). The other 856 are Pass 0 -skeletons with no instructions, so the spelling does not apply to them. -Bringing `Golf (JU)` up to canonical is Pass 2 work, not a build problem. +Inside `_wip/`, none of the 851 projects have instructions to comment at all — +they are all Pass 0 skeletons. (`Golf (JU)` and `World Class Track Meet (U)` +used to be the two exceptions, but both were promoted on 2026-10-21 and their +comments are canonical.) +(`Xevious (U)`, which used to be the second project in the tier with +instructions, was promoted to `NROM/` on 2026-10-20.) The old claim that "Excitebike and Pac-Man carry no byte comments at all" is stale on both counts. Pac-Man (USA) (Namco) is complete (4,695/4,695 instructions @@ -680,23 +743,24 @@ at the stated offset — a wrong offset that still assembles is the failure mode ## Summary -Thirty-eight projects sit under `NROM/`, and all 38 rebuild **byte-identical** +Thirty-nine projects sit under `NROM/`, and all 39 rebuild **byte-identical** to their original ROMs (rows 1-27 below plus row 29 `Hogan's Alley (JU)`, row 30 `Mario Bros (JU)`, row 31 `Pac-Man (Tengen) (U)`, row 32 `Pac-Man (U)`, -row 33 `Pyramid (U)`, rows 34 and 35 `Raid on Bungeling Bay (U)` and +row 33 `Pyramid (U) (Sachen)`, rows 34 and 35 `Raid on Bungeling Bay (U)` and `Raid on Bungeling Bay (U) [a2]` — all promoted 2026-10-20 — and rows 36 and 37 (Urban Champion and Xevious (U)) which kept their tail numbers when they were promoted; row 7 `Excitebike (JU)` was fixed on 2026-10-20 — the byte-596 mismatch was two `$0A`/`$11` PPU-mask-shadow operands, see `NROM/Excitebike (JU)/README.md`). -The pre-promotion tier holds **856 projects** under `_wip/`, and as of -2026-10-20 all 856 verify **byte-identical for the whole ROM** as well. Row 28 -(`Golf (JU)`) is the only one listed in the table above, because it is the -only one with a real disassembly; the other 855 are Pass 0 skeletons, and the -whole tier — its layout, its quirks and its open work — is documented in -**`WIP.md`**. Folder -*locations* changed on 2026-10-20 (mapper directories, flat project folders), +The pre-promotion tier holds **851 projects** under `_wip/`, and as of +2026-10-21 all 851 verify **byte-identical for the whole ROM** as well +(`make wip` builds and verifies the whole tier: 851 of 851 passed, 0 +failures). None of the 851 carry a real disassembly — they are all Pass 0 +skeletons; `Golf (JU)` (row 28) and `World Class Track Meet (U)` (row 41) +were promoted from this tier on 2026-10-21. The whole tier — its layout, its +quirks and its open work — is documented in **`WIP.md`**. Folder *locations* +changed on 2026-10-20 (mapper directories, flat project folders), but each row's build-status claim in this table is the state at its own promotion; verify against the tree with `make` if in doubt. @@ -729,25 +793,26 @@ promotion; verify against the tree with `make` if in doubt. | 25 | Millipede (U) | BYTE-IDENTICAL | complete (Pass 2/3 complete, 74.6% code) | | 26 | Popeye (JU) (PRG 0) | BYTE-IDENTICAL | complete (Pass 2/3 complete, 72.3% code) | | 27 | Popeye (JU) (PRG 1) | BYTE-IDENTICAL | complete (Pass 2/3 complete, 72.3% code); promoted 2026-10-20 | +| 28 | Golf (JU) | BYTE-IDENTICAL | complete (Pass 1+2+3 complete; promoted from `_wip` 2026-10-21; 4,217 instructions / 13,541 lines; 0 residue) | | 31 | Pac-Man (Tengen) (U) | BYTE-IDENTICAL | partial (Pass 2 complete, Pass 3 partial — 30 zero-page aliases, 28 named data tables, 0 residue, 20.0% code); promoted 2026-10-20 | | 32 | Pac-Man (U) | BYTE-IDENTICAL | partial (Pass 2 complete, Pass 3 partial — 119 operands, 0 residue); promoted 2026-10-20 | | 34 | Raid on Bungeling Bay (U) | BYTE-IDENTICAL | partial (Pass 2/3 partial, 64.6% code); promoted 2026-10-20 | -| 33 | Pyramid (U) | BYTE-IDENTICAL | partial (Pass 2 complete, Pass 3 partial — 24 zero-page aliases, 32 named data tables, 0 residue, 39.6% code); promoted 2026-10-20 | +| 33 | Pyramid (U) (Sachen) | BYTE-IDENTICAL | partial (Pass 2 complete, Pass 3 partial — 24 zero-page aliases, 32 named data tables, 0 residue, 39.6% code); promoted 2026-10-20 | | 35 | Raid on Bungeling Bay (U) [a2] | BYTE-IDENTICAL | partial (Pass 2 complete, Pass 3 partial — 15 zero-page aliases, 0 residue, 64.3% code); promoted 2026-10-20 | | 30 | Mario Bros (JU) | BYTE-IDENTICAL | partial (Pass 2 complete, Pass 3 partial — 25 zero-page aliases, 35 named data tables, 0 residue, 78.4% code); promoted 2026-10-20 | | 29 | Hogan's Alley (JU) | BYTE-IDENTICAL | partial (Pass 2 complete, Pass 3 partial — 60 semantic zero-page aliases, 34 named data tables, 0 residue, 49.1% code); promoted 2026-10-20 | | 36 | Urban Champion (JU) | BYTE-IDENTICAL | complete; symbols applied 2026-10-19 (70 operands) | -| 37 | Xevious (U) | BYTE-IDENTICAL | complete (Pass 3 complete, 34.5% code; 143 semantic entry points, 4 named data tables, ~20 semantic ZP aliases) | +| 37 | Xevious (U) | BYTE-IDENTICAL | complete (Pass 3 complete, 38.0% code; 143 semantic entry points, 32 named data tables, ~20 semantic ZP aliases; split corrected from Mesen CDL 2026-10-21) | | 38 | Zanac (U) | BYTE-IDENTICAL | complete (Pass 3 complete, 34.5% code; 133 semantic entry points, 26 named data tables, 14 semantic ZP aliases) | -| 39 | Mermaids of Atlantis (U) | mapper 8 | 64 KB | — | Vertical | BYTE-IDENTICAL (Pass 2/3 complete) | $8189 / $FF00 / $8036 | +| 39 | Volleyball (U) | BYTE-IDENTICAL | complete (Pass 3 complete, 73.0% code; 1,989 semantic labels, 37 named data blocks, 0 residue; promoted 2026-10-21) | +| 40 | Mermaids of Atlantis (U) | BYTE-IDENTICAL | mapper 8; Pass 3 complete (12.3% code, 494 named routines, 13 semantic zero-page aliases; 8 banked segments; rebuilt 2026-10-21) | +| 41 | World Class Track Meet (U) | BYTE-IDENTICAL | complete (Pass 1+2+3 complete; promoted from `_wip` 2026-10-21; 8,400 instructions / 18,028 code bytes, 55.0% code; 24 semantic ZP aliases, 78 neutral ZpXX with reasons; 0 residue) | -Row 28 (`Golf (JU)`, still in `_wip/`) rebuilds cleanly at the whole-ROM -level as of 2026-10-20. It has Pass 1 done and is at substantial Pass 2. -Promotion into the numbered inventory, CDL-backed reclassification of the remaining -data, and a real power-on flow `README.md` per project are the open work for it; -the other 35 `_wip/` projects are Pass 0 skeletons and need Pass 1 from scratch. +Row 28 (`Golf (JU)`, now promoted to `NROM/Golf (JU)/`) rebuilds byte-identical +at the whole-ROM level. Row 41 (`World Class Track Meet (U)`, now promoted to +`CNROM/World Class Track Meet (U)/`) rebuilds byte-identical as well. The other +851 `_wip/` projects are Pass 0 skeletons and need Pass 1 from scratch. See **`WIP.md`**. - Use `_tools/verify_pass1.py` to re-check any of this at any time; it rebuilds each project and re-traces it, and reports `TRUNCATED` when a project's committed split claims less code than the tracer can reach. diff --git a/TODO.md b/TODO.md index 3a29d26..58934ec 100644 --- a/TODO.md +++ b/TODO.md @@ -4,6 +4,14 @@ Written so a fresh session can pick this up cold. Everything below was verified against the repo at commit `9e2b50a`; if a number here disagrees with the repo, the repo is right and this file is stale. +> **Counts refreshed 2026-10-21.** The repo now holds **41 promoted projects** +> (38 under `NROM/`, plus `CNROM/World Class Track Meet (U)`, +> `UNROM/Zanac (U)` and `MAPPER8/Mermaids of Atlantis (U)`) and **851 `_wip/` +> projects**. Both the last two disassembled `_wip` projects — `Golf (JU)` and +> `World Class Track Meet (U)` — were promoted on 2026-10-21, so **every** +> `_wip/` project is a Pass 0 skeleton. Many sentences below still describe the +> earlier 30/39-promoted state; treat the numbers in this note as current. + > **Note:** This file documents work completed up to 2026-10-20 (promotion of Ice Climber, > Lode Runner and Pinball; `_wip` evaluation). The actual repo state is always the source of truth. > @@ -29,7 +37,7 @@ A build that assembles but does not print that message is a failure. Requires Two tiers exist, and the difference is real: - **Top level — promoted projects under their mapper dir (`NROM/` etc.) — `make` compares the whole ROM against `rom.nes` in the project folder. -- **`_wip//` (856 projects)** — as of 2026-10-20 these also compare the +- **`_wip//` (851 projects)** — as of 2026-10-20 these also compare the whole ROM against a `rom.nes` copy in the project folder, so the header and CHR **are** proven. The tier was moved off the old `cmp reconstructed_prg.bin prg.bin` form; promotion is now `git mv` plus the @@ -40,17 +48,20 @@ Two tiers exist, and the difference is real: ## Current state -- 35 promoted projects under `NROM/`, all whole-ROM byte-identical (Lunar Pool promoted 2026-10-18, - Donkey Kong (JU) promoted 2026-10-19 after Pass 3, **Donkey Kong Jr. Math (U) promoted 2026-10-19 after Pass 3 — re-promoted into `NROM/` 2026-10-20** after the 2026-10-20 mapper-folder reorganization initially parked it in `_wip/NROM/` over a `jsr $F218`-mislabeled-as-`SubCF218_Block` mismatch; the fix repointed four `prg.s` call sites to the true `SubCF218` entry, see `NROM/Donkey Kong Jr. Math (U)/README.md`), **Duck Hunt (JUE) promoted 2026-10-19 after Pass 3**, **Ice Climber (JE) and (U) promoted 2026-10-20 after Pass 3**, **Lode Runner (U) promoted 2026-10-20 after Pass 2/3**, **Pinball (JU) promoted 2026-10-20 after Pass 2/3**, **Popeye (JU) (PRG 1) promoted 2026-10-20 after Pass 2/3** (`header.s`/`chr.s` + HEADER `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build; SHA-256 `00160651…78bd8b4`; see `NROM/Popeye (JU) (PRG 1)/README.md`), **`Excitebike (JU)` promoted 2026-10-20** — the byte-596 mismatch was two `PpuMaskShadow` (`$0A`) operands where the ROM uses `$11` (NMI's second mask shadow, aliased as `NmiMaskShadow` in `locals.inc`); the 4,401 damaged audit comments (doubled `??` forms plus 6,339 comments shifted against their mnemonics) were re-anchored from the ca65 listing via the new `_tools/repair_audit_comments.py`, and all 58 raw `jsr/jmp $XXXX` operands were substituted with routine labels/equates. See `NROM/Excitebike (JU)/README.md`. **`Raid on Bungeling Bay (U)` promoted 2026-10-20** — `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `77285503…885000ac`); one leftover neutral indirect operand `jmp (Zp01)` at $E2EC became `jmp (IndDispatch01)` (alias already present in `locals.inc`); `apply_symbols.py` reports 0 substitutions pending. **`Pac-Man (U)` promoted 2026-10-20** — Pass 2 completed first (all 194 `Label_XXXX` definitions renamed from a fresh map derived from the committed split, not from a drafted map; all 49 `jsr`/`jmp` call sites resolved; zero `Label_` and zero raw `$XXXX` call operands left), then Pass 3: **119 operands substituted** (101 hardware + 11 single-name + 7 multi-alias resolved per site through a new `sites.tsv`), `apply_symbols.py` now reports **0 residue**. The 7 site resolutions are all proven from context, not guessed — four `jmp ($0010)` immediately preceded by `sta DispatchPtrLo`/`sta DispatchPtrHi`, one `jmp ($00FE)` preceded by `sta AudioHandlerPtrLo`/`sta AudioHandlerPtrHi`, and two `sta a:$0000,y` zero-page clears that take the neutral `Zp00`. `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `a69d310f8cae9397fbd39f204672b5c7`); see `NROM/Pac-Man (U)/README.md`. **`Pac-Man (Tengen) (U)` promoted 2026-10-20** — a *different build* of the same game as the row-32 dump: the PRGs differ in 56 bytes in 8 runs, all of them code-versus-licensee-text ($C3E3-$C408 is 26 spaces here against `LICENSED BY NAMCO AMERICA INC` there; $FF00-$FF16 is `$FF` padding here against the boot code there), and the RESET vector follows ($C033 against $FF00) — the same boot sequence, inline. Disassembled **from scratch**: the map was derived from this dump's own committed split, with no name, map or file carried over from the row-32 dump. Pass 2 named all 194 `Label_XXXX` definitions and resolved all 48 raw `$XXXX` call operands (map in `routinemap.tsv`); Pass 3 added 30 semantic zero-page aliases applied only at the proven sites (`sites.tsv`) and named 28 data tables, including `CharacterDataTable` ($C66A) / `CharacterNameStrings` ($C67E), where the ROM itself names Blinky, Pinky, Inky and Clyde. **A Pass 1 correction came with it:** six command handlers were recovered — `ScriptCommandTable` ($EFDD) is read by the traced instruction at $EFCC and six of its entries point at $F00A, $F022, $F03A, $F052, $F062 and $F072, all of which the tracer had left as data, two of them mis-split across the `jmp $EF61` at $F01F and $F04F. Those 120 bytes are code here. **The same gap exists in the promoted row-32 dump, which has not been corrected.** `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `d34e7a74…28ad0`); see `NROM/Pac-Man (Tengen) (U)/README.md`. ****`Pyramid (U)` (Sachen) promoted 2026-10-20** — an unlicensed Sachen release with a mapper-0 header whose boot code pokes a mapper unlock at `$4100` and checks the RAM bytes `$0120`/`$0121` against "A"/"V". **A Pass 1 correction came with it:** the committed split was a strict subset of the correct one — **828 bytes** of code were still marked as data, because the tracer cannot follow a `jmp` that sits inside a data region, and this game dispatches through four such tables ($C01E, $C02A, $C042, $C054) plus ten more at $C000-$C01B. Re-tracing with those sixteen targets, the `$C800` boot mainline and six further code starts seeded by hand recovers them (and a five-byte stub at $DF89 in a hole between two routines); the re-trace loses **no** committed code byte and takes the split from 34.5% to 39.6%. `make regen` reproduces it, so the split stays verifiable. Pass 2 named 431 routine entries and the 32 data blocks from this dump's own code (428 `Label_XXXX` gone, 320 raw `$XXXX` call operands resolved; the internal branch-target names are derived mechanically by the new `_tools/derive_branch_names.py`); Pass 3 added 24 semantic zero-page aliases, applied only where their role is proven, and named 32 data tables. `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `aa285ff1…6c59e2`); see `NROM/Pyramid (U)/README.md`. **`Raid on Bungeling Bay (U) [a2]` promoted 2026-10-20** — a *different build* of the same game as the row-34 dump: 150 of the 16,384 PRG bytes differ in 7 runs, all of them code-versus-copyright-text at $C67D-$C6D8 and $C73B-$C779, the CHR differs too, and header byte 6 is $00 (Horizontal) against $01 (Vertical). Its Pass 3 added **15 semantic zero-page aliases** (every one applied only at the sites where its role is proven), and finishing it **corrected a naming error in the already-promoted sibling**: `$EA` had been named `VBlankWaitCounter`, but the routine at $C412 is the game's PRNG (the classic `eor`/`asl`/`php`/`lsr`/`plp`/`rol` scrambler, called from thirteen gameplay sites and twice in a row at $CDF4/$CDF9 with the second result masked `#$07`), so `$EA` is the scrambler's phase counter — renamed `PrngPeriodCounter` in **both** dumps, and `$EB`/`$EC` were named `PrngSeedB`/`PrngState` in both. The sibling's two `sta a:IndDispatch17,y` operands were also corrected: they are absolute stores to RAM $0017, not the dispatch pointer. `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `659d340a1e9d420eee28df13319b0094`); see `NROM/Raid on Bungeling Bay (U) [a2]/README.md`. **`Mario Bros (JU)` promoted 2026-10-20** — a two-player light-gun-less platformer whose handler tables are **inline**: the pointers sit in the middle of the code stream, right after the `jsr` that reads them, so the static tracer could never follow them. **A Pass 1 correction came with it:** a Mesen Code Data Logger capture of this ROM (10,915 code bytes) showed **1,010 bytes** the tracer had left as data were code; two branch targets the capture never reached (`$E4CB` and `$E639`) were forced with `--override` for 57 more, so **1,067 bytes** moved from data to code and 22 moved the other way, taking the split from 72.0% to 78.4%. Pass 2 named every label — **zero `Label_` and zero `SubC` residue**: the 185 entries a previous session had left as address-derived residue were all named from the code. Pass 3 added 25 semantic zero-page aliases, applied only where the role is proven, and named 35 data tables. `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build; see `NROM/Mario Bros (JU)/README.md`. +- 38 promoted projects under `NROM/` (41 promoted in all, with `World Class Track Meet (U)` under `CNROM/`, `Zanac (U)` under `UNROM/` and `Mermaids of Atlantis (U)` under `MAPPER8/`), all whole-ROM byte-identical (Lunar Pool promoted 2026-10-18, + Donkey Kong (JU) promoted 2026-10-19 after Pass 3, **Donkey Kong Jr. Math (U) promoted 2026-10-19 after Pass 3 — re-promoted into `NROM/` 2026-10-20** after the 2026-10-20 mapper-folder reorganization initially parked it in `_wip/NROM/` over a `jsr $F218`-mislabeled-as-`SubCF218_Block` mismatch; the fix repointed four `prg.s` call sites to the true `SubCF218` entry, see `NROM/Donkey Kong Jr. Math (U)/README.md`), **Duck Hunt (JUE) promoted 2026-10-19 after Pass 3**, **Ice Climber (JE) and (U) promoted 2026-10-20 after Pass 3**, **Lode Runner (U) promoted 2026-10-20 after Pass 2/3**, **Pinball (JU) promoted 2026-10-20 after Pass 2/3**, **Popeye (JU) (PRG 1) promoted 2026-10-20 after Pass 2/3** (`header.s`/`chr.s` + HEADER `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build; SHA-256 `00160651…78bd8b4`; see `NROM/Popeye (JU) (PRG 1)/README.md`), **`Excitebike (JU)` promoted 2026-10-20** — the byte-596 mismatch was two `PpuMaskShadow` (`$0A`) operands where the ROM uses `$11` (NMI's second mask shadow, aliased as `NmiMaskShadow` in `locals.inc`); the 4,401 damaged audit comments (doubled `??` forms plus 6,339 comments shifted against their mnemonics) were re-anchored from the ca65 listing via the new `_tools/repair_audit_comments.py`, and all 58 raw `jsr/jmp $XXXX` operands were substituted with routine labels/equates. See `NROM/Excitebike (JU)/README.md`. **`Raid on Bungeling Bay (U)` promoted 2026-10-20** — `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `77285503…885000ac`); one leftover neutral indirect operand `jmp (Zp01)` at $E2EC became `jmp (IndDispatch01)` (alias already present in `locals.inc`); `apply_symbols.py` reports 0 substitutions pending. **`Pac-Man (U)` promoted 2026-10-20** — Pass 2 completed first (all 194 `Label_XXXX` definitions renamed from a fresh map derived from the committed split, not from a drafted map; all 49 `jsr`/`jmp` call sites resolved; zero `Label_` and zero raw `$XXXX` call operands left), then Pass 3: **119 operands substituted** (101 hardware + 11 single-name + 7 multi-alias resolved per site through a new `sites.tsv`), `apply_symbols.py` now reports **0 residue**. The 7 site resolutions are all proven from context, not guessed — four `jmp ($0010)` immediately preceded by `sta DispatchPtrLo`/`sta DispatchPtrHi`, one `jmp ($00FE)` preceded by `sta AudioHandlerPtrLo`/`sta AudioHandlerPtrHi`, and two `sta a:$0000,y` zero-page clears that take the neutral `Zp00`. `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `a69d310f8cae9397fbd39f204672b5c7`); see `NROM/Pac-Man (U)/README.md`. **`Pac-Man (Tengen) (U)` promoted 2026-10-20** — a *different build* of the same game as the row-32 dump: the PRGs differ in 56 bytes in 8 runs, all of them code-versus-licensee-text ($C3E3-$C408 is 26 spaces here against `LICENSED BY NAMCO AMERICA INC` there; $FF00-$FF16 is `$FF` padding here against the boot code there), and the RESET vector follows ($C033 against $FF00) — the same boot sequence, inline. Disassembled **from scratch**: the map was derived from this dump's own committed split, with no name, map or file carried over from the row-32 dump. Pass 2 named all 194 `Label_XXXX` definitions and resolved all 48 raw `$XXXX` call operands (map in `routinemap.tsv`); Pass 3 added 30 semantic zero-page aliases applied only at the proven sites (`sites.tsv`) and named 28 data tables, including `CharacterDataTable` ($C66A) / `CharacterNameStrings` ($C67E), where the ROM itself names Blinky, Pinky, Inky and Clyde. **A Pass 1 correction came with it:** six command handlers were recovered — `ScriptCommandTable` ($EFDD) is read by the traced instruction at $EFCC and six of its entries point at $F00A, $F022, $F03A, $F052, $F062 and $F072, all of which the tracer had left as data, two of them mis-split across the `jmp $EF61` at $F01F and $F04F. Those 120 bytes are code here. **The same gap exists in the promoted row-32 dump, which has not been corrected.** `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `d34e7a74…28ad0`); see `NROM/Pac-Man (Tengen) (U)/README.md`. ****`Pyramid (U) (Sachen)` promoted 2026-10-20** — an unlicensed Sachen release with a mapper-0 header whose boot code pokes a mapper unlock at `$4100` and checks the RAM bytes `$0120`/`$0121` against "A"/"V". **A Pass 1 correction came with it:** the committed split was a strict subset of the correct one — **828 bytes** of code were still marked as data, because the tracer cannot follow a `jmp` that sits inside a data region, and this game dispatches through four such tables ($C01E, $C02A, $C042, $C054) plus ten more at $C000-$C01B. Re-tracing with those sixteen targets, the `$C800` boot mainline and six further code starts seeded by hand recovers them (and a five-byte stub at $DF89 in a hole between two routines); the re-trace loses **no** committed code byte and takes the split from 34.5% to 39.6%. `make regen` reproduces it, so the split stays verifiable. Pass 2 named 431 routine entries and the 32 data blocks from this dump's own code (428 `Label_XXXX` gone, 320 raw `$XXXX` call operands resolved; the internal branch-target names are derived mechanically by the new `_tools/derive_branch_names.py`); Pass 3 added 24 semantic zero-page aliases, applied only where their role is proven, and named 32 data tables. `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `aa285ff1…6c59e2`); see `NROM/Pyramid (U) (Sachen)/README.md`. **`Raid on Bungeling Bay (U) [a2]` promoted 2026-10-20** — a *different build* of the same game as the row-34 dump: 150 of the 16,384 PRG bytes differ in 7 runs, all of them code-versus-copyright-text at $C67D-$C6D8 and $C73B-$C779, the CHR differs too, and header byte 6 is $00 (Horizontal) against $01 (Vertical). Its Pass 3 added **15 semantic zero-page aliases** (every one applied only at the sites where its role is proven), and finishing it **corrected a naming error in the already-promoted sibling**: `$EA` had been named `VBlankWaitCounter`, but the routine at $C412 is the game's PRNG (the classic `eor`/`asl`/`php`/`lsr`/`plp`/`rol` scrambler, called from thirteen gameplay sites and twice in a row at $CDF4/$CDF9 with the second result masked `#$07`), so `$EA` is the scrambler's phase counter — renamed `PrngPeriodCounter` in **both** dumps, and `$EB`/`$EC` were named `PrngSeedB`/`PrngState` in both. The sibling's two `sta a:IndDispatch17,y` operands were also corrected: they are absolute stores to RAM $0017, not the dispatch pointer. `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build (MD5 `659d340a1e9d420eee28df13319b0094`); see `NROM/Raid on Bungeling Bay (U) [a2]/README.md`. **`Mario Bros (JU)` promoted 2026-10-20** — a two-player light-gun-less platformer whose handler tables are **inline**: the pointers sit in the middle of the code stream, right after the `jsr` that reads them, so the static tracer could never follow them. **A Pass 1 correction came with it:** a Mesen Code Data Logger capture of this ROM (10,915 code bytes) showed **1,010 bytes** the tracer had left as data were code; two branch targets the capture never reached (`$E4CB` and `$E639`) were forced with `--override` for 57 more, so **1,067 bytes** moved from data to code and 22 moved the other way, taking the split from 72.0% to 78.4%. Pass 2 named every label — **zero `Label_` and zero `SubC` residue**: the 185 entries a previous session had left as address-derived residue were all named from the code. Pass 3 added 25 semantic zero-page aliases, applied only where the role is proven, and named 35 data tables. `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build; see `NROM/Mario Bros (JU)/README.md`. **`Hogan's Alley (JU)` promoted 2026-10-20** — a light-gun game whose engine dispatches through **inline** tables: `IndirectCall` at $C34D pops the return address of the `jsr` that called it and reads a 16-bit handler pointer from the word that follows, so all six handler tables ($C124 19 entries, $C219 4, $C89C 14, $CDD1 1, $D234 2, $D3D6 14) live *inside* the code stream and the static tracer cannot follow them. **A Pass 1 correction came with it:** the committed split was a strict subset of the correct one — a merged Mesen Code Data Logger capture (five captures OR-ed, 6,544 code bytes) showed **1,216 bytes** that the tracer had left as data were code, taking the split from 41.8% to 49.1%; five bytes moved the other way. The four branch targets the reclassifier could not prove were turned into labels by the new `_tools/resolve_raw_branches.py`. Pass 2 named 206 routine entries and derived 413 internal branch targets from this dump's own code (630 `Label_XXXX` gone, 484 raw `$XXXX` call operands resolved, 15 unlabelled call targets given a label); Pass 3 added 60 semantic zero-page aliases, applied only where the role is proven, and named all 34 data tables. `apply_symbols.py` reports 1 residue (`sta a:$00B4,y` at $C203 — the same address as `Zp40`/`ActorPalette` but forced to absolute addressing, so it must stay numeric). `header.s`/`chr.s` + HEADER/PRG/CHR `linker.cfg` added, whole-ROM `cmp` passes on the first promoted build; see `NROM/Hogan's Alley (JU)/README.md`. -- 856 projects under `_wip/` (38 in `_wip/NROM/`, 221 in `_wip/MMC1/`, 239 in - `_wip/MMC3/`, 98 in `_wip/UNROM/`, 58 in `_wip/CNROM/`, 10 in `_wip/MMC5/` - and 193 across 24 more mapper folders): all whole-ROM byte-identical. - **856 of them are Pass 0 skeletons** — the folder shape and the build are +- 851 projects under `_wip/` (35 in `_wip/NROM/`, 221 in `_wip/MMC1/`, 239 in + `_wip/MMC3/`, 97 in `_wip/UNROM/`, 57 in `_wip/CNROM/`, 10 in `_wip/MMC5/` + and 192 across 23 more mapper folders): all whole-ROM byte-identical. + **All 851 of them are Pass 0 skeletons** — the folder shape and the build are proven, but `prg.s` is still a single `.incbin "prg.bin"`, so they owe - Pass 1 from scratch. Only `Golf (JU)` has a real disassembly (Pass 1 + - substantial Pass 2, and it still carries hundreds of internal `Label_` - branch targets plus pre-canonical audit comments). + Pass 1 from scratch. Exactly one carries a real disassembly: `Golf (JU)` + (Pass 1 + substantial Pass 2, still carrying 349 internal `Label_` branch + targets plus pre-canonical audit comments). `Volleyball (U)` was the last + project to leave the tier with a disassembly (Pass 1 + Pass 2 + Pass 3, + promoted to `NROM/` on 2026-10-21 — 11,395 instructions / 23,926 code + bytes, split with a Mesen CDL capture, all 1,989 labels named). Hogan's Alley (JU), Mario Bros (JU), Pinball (JU), Lode Runner (U), Popeye (JU) (PRG 1), Excitebike (JU), Raid on Bungeling Bay (U), Raid on Bungeling Bay (U) [a2] and Pac-Man (U) were promoted after @@ -59,7 +70,7 @@ Two tiers exist, and the difference is real: - `_tools/verify_pass1.py` covers the **promoted projects** (it selects project folders under the mapper dirs carrying a `Makefile` + `prg.bin`/`rom.nes`; after the 2026-10-20 promotions this includes all 35 of `NROM/` — all canonical, - OK verdict), not the `_wip/` tier, which is checked by plain `make`. + OK verdict), not the `_wip/` tier, which is checked by `make wip`. Current run (2026-10-20): every one builds, all canonical, **no truncated or unfaithful Pass 1**. The earlier-reported re-trace crash on `MUSCLE (U)` / `Donkey Kong Jr. (JU)` was a false alarm — `nesdis.operand_value()` already handles @@ -314,6 +325,41 @@ and listing offsets index `prg.bin` directly. message **and** every comment's byte list must match `prg.bin` at the stated offset. A wrong offset that still assembles is the failure mode to watch. +### 3a. Audit comments for Balloon Fight (JU) — **COMPLETE** (2026-10-21) + +The trail was *spelled* canonically but was **wrong by two bytes** from +`ResetInitializationData` ($C085) onward: **5,944 of the 6,007** comments named a +CPU address / PRG offset two bytes below the truth, because the 3-byte +`.byte "HAL"` signature at $C082–$C084 was counted as one byte when the +comments were first generated. The routine headers (`; PRG offsets:` / +`; CPU range:`) and the linker labels were right, so the source and its own +headers disagreed — a good way to spot this class of damage. + +- Fixed with `_tools/repair_audit_comments.py` (ca65 listing as ground truth, + validated against `prg.bin`) followed by `_tools/align_audit_comments.py` + for the canonical column-35 layout. Comment-and-whitespace only: all 8,544 + lines of code text unchanged, `make` still byte-identical. +- **Off-by-one fixed in `_tools/align_audit_comments.py`:** it tested the + *indented* code length against 31 instead of against 35, so code texts of + 28–31 characters were never padded into the column. That is the difference + between the emitter's `f" {text:<31}; …"` and the tool's behaviour; short + lines were left ragged at column 34/36/37. +- **Routine headers completed (2026-10-21):** the 61 routine headers that had + no `; Clobbers:` line now have one, so all 63 carry the full template + (global + local description, parameters, returns, clobbers). The blocks are + derived by `_tools/derive_clobbers.py`, never guessed: the opcode comes from + the audit comment's byte list, the operand is resolved through + `locals.inc`/`symbols.inc` so a clobber can be named, the control flow is + followed (a `jsr` to another named entry is a call, a branch or a + fall-through is not), and register preservation is modelled — so `NmiHandler` + reports *no register* and `FlushPpuCommandPreserved` reports only A. +- **Still open:** 20 of the 63 routine headers still carry the Pass-1 + placeholder text ("Reachable game-engine routine identified during recursive + Pass-1 tracing", "Caller-defined register and global RAM state", …) in + their `Global:` / `Local:` / `Parameters:` / `Returns:` fields. The other 43 + have been written. This is Pass 3 work on the *meaning* of the routines, not + on their mechanics, and it is not derivable from the code alone. + ### 4. `Label_` residue — promoted tier closed 2026-10-19; `_wip` tier open | Project | `Label_` definitions | refs in code | Note | @@ -324,7 +370,7 @@ and listing offsets index `prg.bin` directly. | Donkey Kong (JU) | 0 | 0 | Pass 2 complete (2026-10-19); Pass 3 complete; promoted 2026-10-19 | | Pac-Man (U) | 0 | 0 | Pass 2 complete (2026-10-20); Pass 3 partial — 119 operands, 0 residue; promoted 2026-10-20 | | Pac-Man (Tengen) (U) | 0 | 0 | Pass 2 complete (2026-10-20); Pass 3 partial — 30 zero-page aliases, 28 named tables, 0 residue; promoted 2026-10-20 | -| Pyramid (U) | 0 | 0 | Pass 2 complete (2026-10-20); Pass 3 partial — 24 zero-page aliases, 32 named tables, 0 residue; Pass 1 corrected (+828 bytes of code); promoted 2026-10-20 | +| Pyramid (U) (Sachen) | 0 | 0 | Pass 2 complete (2026-10-20); Pass 3 partial — 24 zero-page aliases, 32 named tables, 0 residue; Pass 1 corrected (+828 bytes of code); promoted 2026-10-20 | | Raid on Bungeling Bay (U) | 0 | 0 | Pass 2/3 partial (2026-10-20); promoted 2026-10-20 | | Raid on Bungeling Bay (U) [a2] | 0 | 0 | Pass 2 complete; Pass 3 partial — 15 zero-page aliases, 0 residue; promoted 2026-10-20 | | **All promoted** | **0** | **0** | **All Pass 3 complete, symbols applied** (DK Jr. Math re-promoted 2026-10-20; Popeye (JU) (PRG 1) promoted 2026-10-20; Pac-Man (U) promoted 2026-10-20) | @@ -342,26 +388,19 @@ plain high-byte scratch beside `Temp12`; its aliases (`ReverseRecordIndex`, numeric rather than guessed. A neutral `Temp13 = $13` in `locals.inc` would close them. Rebuild stays byte-identical. -**All 30 top-level projects have their operand naming in place (2026-10-19/20).** See the Current state section above for the per-project breakdown. Excitebike (JU)'s `apply_symbols.py` run was skipped due to inline `prg.s` definitions conflicting with `locals.inc` values — its 58 raw `jsr/jmp $XXXX` operands were substituted by hand on 2026-10-20 instead (routine labels + `locals.inc` sub-entry equates); its zero-page operands remain numeric as documented Pass 3 residue. +**The operand-naming sweep covered the then-30 top-level projects (2026-10-19/20).** The promoted tier is now 41 projects; its per-project state is in the Current state section above. Excitebike (JU)'s `apply_symbols.py` run was skipped due to inline `prg.s` definitions conflicting with `locals.inc` values — its 58 raw `jsr/jmp $XXXX` operands were substituted by hand on 2026-10-20 instead (routine labels + `locals.inc` sub-entry equates); its zero-page operands remain numeric as documented Pass 3 residue. The `_wip` tier is still open, but the shape of the work changed on -2026-10-20: 856 of its 856 projects are **Pass 0 skeletons** with no +2026-10-20: all 851 of its projects are **Pass 0 skeletons** with no disassembly at all, so they owe Pass 1 from scratch rather than a label -cleanup. Only `Golf (JU)` carries a real disassembly, and it holds the -address-based -`Label_` definitions (1,584 `Label_` across the 3, plus 1,306 `SubC` -occurrences — 331 distinct entry labels — in Golf (483/108) and Mario Bros -(823/223)) and none of the -Pass-1-only ones has -semantic zero-page aliases; Raid [a2] already carries the `SubC` entry-name -style (it is the -Pass-3-partial dump whose sibling `Raid on Bungeling Bay (U)` was promoted from -this tier on 2026-10-20 with 255 `SubC` entries, zero `Label_` and 11 semantic -zero-page aliases in `locals.inc`; the [a2] dump itself keeps every zero-page slot -neutral). `Pac-Man (U)` left the tier the same day after Pass 2 and a Pass 3 that -substituted 119 operands with 0 residue. Five project headers and five inventory rows used to read "Pass 2 +cleanup. The last two that carried real disassemblies — `Golf (JU)` and +`World Class Track Meet (U)` — were promoted on 2026-10-21. The earlier +Pass 2/3 audits of the projects that have since left the tier (`Golf (JU)`, +`Mario Bros (JU)`, `Raid on Bungeling Bay (U) [a2]`, `Pac-Man (U)`, +`Pac-Man (Tengen) (U)`, `Pyramid (U) (Sachen)`, `Hogan's Alley (JU)` and the +rest) are recorded in the project READMEs. Five project headers and five inventory rows used to read "Pass 2 complete"; they had counted their *draft map's rows* rather than names actually -present in `prg.s`, and were corrected 2026-10-19 (the `_wip` project READMEs have the +present in `prg.s`, and were corrected 2026-10-19 (the project READMEs have the per-project audits): | Project | named / total label defs | `Label_` left | drafted map (rows / applied / stale / **applicable**) | @@ -442,7 +481,7 @@ plateaus at **~41% of `$B0FB–$BEBF`** and will not go higher by cycling stages ### 6. Documentation follow-ups (2026-10-19 sweep) The sweep corrected the false aggregate claims — the `_wip` "Pass-0 skeleton" prose, -"`Pyramid (U)` is the only one with Pass 1", the Excitebike/Pac-Man audit-comment gap, +"`Pyramid (U) (Sachen)` is the only one with Pass 1", the Excitebike/Pac-Man audit-comment gap, and the "`verify_pass1.py` checks all 36" scope — and normalized every project's mirroring label to the header-byte convention. **All 30 top-level projects now also have Pass 3 symbols applied (2026-10-19/20).** What the sweep did **not** do: @@ -460,9 +499,14 @@ have Pass 3 symbols applied (2026-10-19/20).** What the sweep did **not** do: - **`Donkey Kong 3 (JUE)` has no promoted-tier `README.md` at all** — **corrected 2026-10-20: it does have one** (`NROM/Donkey Kong 3 (JUE)/README.md`, 318 lines, "Game Flow from Power-On"). The claim was stale; the flow analysis exists. -- **`Golf (JU)` and `Pyramid (U)` still use pre-canonical audit-comment spellings** - (`; C007: AD 02 20` and `; PRG:$172E 48`). `audit_comment_tool.py` can bring them to - canonical, but it has only been run on top-level projects. +- **`Golf (JU)` still uses the pre-canonical audit-comment spelling** + (`; C007: AD 02 20` instead of `; CPU:$C007 PRG:0007 AD 02 20`). + `audit_comment_tool.py` can bring it to canonical, but it has only been run + on top-level projects. **As of 2026-10-21 `Golf (JU)` is the only project + left in the whole tree with pre-canonical comments** — 4,227 of them, 0 + canonical. `Pyramid (U) (Sachen)`, which used to be the second one, was fixed when + it was promoted. The gap is recorded in the project's own `README.md` and + in `WIP.md` §8. - **Hogan's Alley's Pass 1 seed list is suspect.** Its `prg.s` header lists 55 routine entries "recovered from table references"; `$E9F1` turned out to be a data-table *base* (`lda $E9F1,x`), not a dispatch entry, and was forced back to data — the sole @@ -600,9 +644,9 @@ These cost real time this session. All are recorded so they don't cost it twice. ## Where the detail lives -- Root `README.md` (the old root `OVERVIEW.md`) — inventory of the 35 promoted projects, mapper-folder layout, per-project detail, the Pass 1 +- Root `README.md` (the old root `OVERVIEW.md`) — inventory of the 41 promoted projects, mapper-folder layout, per-project detail, the Pass 1 methodology note, and the audit-comment TODO with its full analysis. -- **`WIP.md`** — the pre-promotion tier: the 856 `_wip/` projects, their layout, +- **`WIP.md`** — the pre-promotion tier: the 851 `_wip/` projects, their layout, the two linker layouts (CPU address vs .nes file offset), the banked-mapper / no-CHR / trailing-bytes / odd-header cases, the open Pass 1/2/3 work, the promotion procedure and the skeleton tooling. @@ -636,6 +680,21 @@ These cost real time this session. All are recorded so they don't cost it twice. cannot change. Dry run by default, `--write` applies. Data directives and lines whose code text exceeds 31 characters are left alone. Worked example: `NROM/Pac-Man (U)` (405 lines re-aligned after 119 substitutions). +- `_tools/derive_clobbers.py` — fills in the `; Clobbers:` block of every routine + header, so the headers carry the full template `AGENTS.md` describes (global + + local description, parameters, returns, clobbers). Everything is derived, + never guessed: the opcode comes from the audit comment's byte list, so the + addressing mode is exact and a data directive is never mistaken for an + instruction; the operand is resolved through `locals.inc`/`symbols.inc` and + the labels in `prg.s`, so a clobber can be named (where several names share + one address, the first name in `locals.inc` wins); the control flow is + followed, so a `jsr` to another named entry is a call (the callee's clobbers + count) while a branch or a fall-through is not; and register preservation is + modelled with a small abstract interpreter, so a routine that saves a + register on the stack and puts it back is not reported as clobbering it. + The flags are named individually. Dry run by default, `--write` applies, and + it is idempotent. Worked example: `NROM/Balloon Fight (JU)` (63 of 63 + headers). - `_tools/apply_pass2_map.py` — applies a Pass 2 name map (``) to a project's `prg.s`: it renames the `Label_` definitions and their references, and resolves a raw `$XXXX` operand on a `jsr`/`jmp` to the name of @@ -669,11 +728,11 @@ These cost real time this session. All are recorded so they don't cost it twice. backwards branch is a `Loop`. The owner is the routine the target belongs to, so the names read `ActorSearch_OnNonzero`. It merges the derived names into the hand-written routine names and is idempotent. Worked example: - `NROM/Pyramid (U)` (42 derived names on top of 388 hand-written ones). + `NROM/Pyramid (U) (Sachen)` (42 derived names on top of 388 hand-written ones). - `_tools/name_data_region.py` — gives a data block a name, splitting the `.byte` row when the name belongs in the middle of it (each half keeps its own audit comment and no byte changes). Worked example: - `NROM/Pyramid (U)` (32 tables). + `NROM/Pyramid (U) (Sachen)` (32 tables). - `_tools/apply_zp_aliases.py` — substitutes semantic zero-page aliases into `prg.s` at the *specific* use sites. `apply_symbols.py` only rewrites numeric operands, so it cannot rename an operand that is already written as a neutral diff --git a/UNROM/Zanac (U)/prg.s b/UNROM/Zanac (U)/prg.s index fdedd6d..30c8a2b 100644 --- a/UNROM/Zanac (U)/prg.s +++ b/UNROM/Zanac (U)/prg.s @@ -23,4117 +23,19 @@ ; ---- data $0000-$3FFF (16384 bytes) ---- ; Bank 0: switchable PRG bank at CPU $8000-$BFFF (raw data, Pass 1) - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0000 PRG:\$0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0010 PRG:\$0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0020 PRG:\$0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0030 PRG:\$0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0040 PRG:\$0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0050 PRG:\$0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0060 PRG:\$0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0070 PRG:\$0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0080 PRG:\$0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0090 PRG:\$0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$00A0 PRG:\$00A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$00B0 PRG:\$00B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$00C0 PRG:\$00C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$00D0 PRG:\$00D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$00E0 PRG:\$00E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$00F0 PRG:\$00F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0100 PRG:\$0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0110 PRG:\$0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0120 PRG:\$0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0130 PRG:\$0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0140 PRG:\$0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0150 PRG:\$0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0160 PRG:\$0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0170 PRG:\$0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0180 PRG:\$0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0190 PRG:\$0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$01A0 PRG:\$01A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$01B0 PRG:\$01B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$01C0 PRG:\$01C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$01D0 PRG:\$01D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$01E0 PRG:\$01E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$01F0 PRG:\$01F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0200 PRG:\$0200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0210 PRG:\$0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0220 PRG:\$0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0230 PRG:\$0230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0240 PRG:\$0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0250 PRG:\$0250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0260 PRG:\$0260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0270 PRG:\$0270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0280 PRG:\$0280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0290 PRG:\$0290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$02A0 PRG:\$02A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$02B0 PRG:\$02B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$02C0 PRG:\$02C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$02D0 PRG:\$02D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$02E0 PRG:\$02E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$02F0 PRG:\$02F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0300 PRG:\$0300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0310 PRG:\$0310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0320 PRG:\$0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0330 PRG:\$0330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0340 PRG:\$0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0350 PRG:\$0350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0360 PRG:\$0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0370 PRG:\$0370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0380 PRG:\$0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0390 PRG:\$0390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$03A0 PRG:\$03A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$03B0 PRG:\$03B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$03C0 PRG:\$03C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$03D0 PRG:\$03D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$03E0 PRG:\$03E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$03F0 PRG:\$03F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0400 PRG:\$0400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0410 PRG:\$0410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0420 PRG:\$0420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0430 PRG:\$0430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0440 PRG:\$0440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0450 PRG:\$0450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0460 PRG:\$0460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0470 PRG:\$0470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0480 PRG:\$0480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0490 PRG:\$0490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$04A0 PRG:\$04A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$04B0 PRG:\$04B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$04C0 PRG:\$04C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$04D0 PRG:\$04D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$04E0 PRG:\$04E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$04F0 PRG:\$04F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0500 PRG:\$0500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0510 PRG:\$0510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0520 PRG:\$0520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0530 PRG:\$0530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0540 PRG:\$0540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0550 PRG:\$0550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0560 PRG:\$0560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0570 PRG:\$0570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0580 PRG:\$0580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0590 PRG:\$0590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$05A0 PRG:\$05A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$05B0 PRG:\$05B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$05C0 PRG:\$05C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$05D0 PRG:\$05D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$05E0 PRG:\$05E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$05F0 PRG:\$05F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0600 PRG:\$0600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0610 PRG:\$0610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0620 PRG:\$0620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0630 PRG:\$0630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0640 PRG:\$0640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0650 PRG:\$0650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0660 PRG:\$0660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0670 PRG:\$0670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0680 PRG:\$0680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0690 PRG:\$0690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$06A0 PRG:\$06A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$06B0 PRG:\$06B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$06C0 PRG:\$06C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$06D0 PRG:\$06D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$06E0 PRG:\$06E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$06F0 PRG:\$06F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0700 PRG:\$0700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0710 PRG:\$0710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0720 PRG:\$0720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0730 PRG:\$0730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0740 PRG:\$0740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0750 PRG:\$0750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0760 PRG:\$0760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0770 PRG:\$0770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0780 PRG:\$0780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0790 PRG:\$0790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$07A0 PRG:\$07A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$07B0 PRG:\$07B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$07C0 PRG:\$07C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$07D0 PRG:\$07D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$07E0 PRG:\$07E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$07F0 PRG:\$07F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0800 PRG:\$0800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0810 PRG:\$0810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0820 PRG:\$0820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0830 PRG:\$0830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0840 PRG:\$0840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0850 PRG:\$0850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0860 PRG:\$0860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0870 PRG:\$0870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0880 PRG:\$0880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0890 PRG:\$0890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$08A0 PRG:\$08A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$08B0 PRG:\$08B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$08C0 PRG:\$08C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$08D0 PRG:\$08D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$08E0 PRG:\$08E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$08F0 PRG:\$08F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0900 PRG:\$0900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0910 PRG:\$0910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0920 PRG:\$0920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0930 PRG:\$0930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0940 PRG:\$0940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0950 PRG:\$0950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0960 PRG:\$0960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0970 PRG:\$0970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0980 PRG:\$0980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0990 PRG:\$0990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$09A0 PRG:\$09A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$09B0 PRG:\$09B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$09C0 PRG:\$09C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$09D0 PRG:\$09D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$09E0 PRG:\$09E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$09F0 PRG:\$09F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A00 PRG:\$0A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A10 PRG:\$0A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A20 PRG:\$0A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A30 PRG:\$0A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A40 PRG:\$0A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A50 PRG:\$0A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A60 PRG:\$0A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A70 PRG:\$0A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A80 PRG:\$0A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0A90 PRG:\$0A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0AA0 PRG:\$0AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0AB0 PRG:\$0AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0AC0 PRG:\$0AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0AD0 PRG:\$0AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0AE0 PRG:\$0AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0AF0 PRG:\$0AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B00 PRG:\$0B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B10 PRG:\$0B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B20 PRG:\$0B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B30 PRG:\$0B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B40 PRG:\$0B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B50 PRG:\$0B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B60 PRG:\$0B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B70 PRG:\$0B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B80 PRG:\$0B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0B90 PRG:\$0B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0BA0 PRG:\$0BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0BB0 PRG:\$0BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0BC0 PRG:\$0BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0BD0 PRG:\$0BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0BE0 PRG:\$0BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0BF0 PRG:\$0BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C00 PRG:\$0C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C10 PRG:\$0C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C20 PRG:\$0C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C30 PRG:\$0C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C40 PRG:\$0C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C50 PRG:\$0C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C60 PRG:\$0C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C70 PRG:\$0C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C80 PRG:\$0C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0C90 PRG:\$0C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0CA0 PRG:\$0CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0CB0 PRG:\$0CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0CC0 PRG:\$0CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0CD0 PRG:\$0CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0CE0 PRG:\$0CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0CF0 PRG:\$0CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D00 PRG:\$0D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D10 PRG:\$0D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D20 PRG:\$0D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D30 PRG:\$0D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D40 PRG:\$0D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D50 PRG:\$0D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D60 PRG:\$0D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D70 PRG:\$0D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D80 PRG:\$0D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0D90 PRG:\$0D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0DA0 PRG:\$0DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0DB0 PRG:\$0DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0DC0 PRG:\$0DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0DD0 PRG:\$0DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0DE0 PRG:\$0DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0DF0 PRG:\$0DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E00 PRG:\$0E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E10 PRG:\$0E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E20 PRG:\$0E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E30 PRG:\$0E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E40 PRG:\$0E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E50 PRG:\$0E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E60 PRG:\$0E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E70 PRG:\$0E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E80 PRG:\$0E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0E90 PRG:\$0E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0EA0 PRG:\$0EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0EB0 PRG:\$0EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0EC0 PRG:\$0EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0ED0 PRG:\$0ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0EE0 PRG:\$0EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0EF0 PRG:\$0EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F00 PRG:\$0F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F10 PRG:\$0F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F20 PRG:\$0F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F30 PRG:\$0F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F40 PRG:\$0F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F50 PRG:\$0F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F60 PRG:\$0F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F70 PRG:\$0F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F80 PRG:\$0F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0F90 PRG:\$0F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0FA0 PRG:\$0FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0FB0 PRG:\$0FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0FC0 PRG:\$0FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0FD0 PRG:\$0FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0FE0 PRG:\$0FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$0FF0 PRG:\$0FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1000 PRG:\$1000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1010 PRG:\$1010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1020 PRG:\$1020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1030 PRG:\$1030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1040 PRG:\$1040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1050 PRG:\$1050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1060 PRG:\$1060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1070 PRG:\$1070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1080 PRG:\$1080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1090 PRG:\$1090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$10A0 PRG:\$10A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$10B0 PRG:\$10B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$10C0 PRG:\$10C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$10D0 PRG:\$10D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$10E0 PRG:\$10E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$10F0 PRG:\$10F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1100 PRG:\$1100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1110 PRG:\$1110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1120 PRG:\$1120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1130 PRG:\$1130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1140 PRG:\$1140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1150 PRG:\$1150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1160 PRG:\$1160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1170 PRG:\$1170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1180 PRG:\$1180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1190 PRG:\$1190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$11A0 PRG:\$11A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$11B0 PRG:\$11B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$11C0 PRG:\$11C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$11D0 PRG:\$11D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$11E0 PRG:\$11E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$11F0 PRG:\$11F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1200 PRG:\$1200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1210 PRG:\$1210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1220 PRG:\$1220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1230 PRG:\$1230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1240 PRG:\$1240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1250 PRG:\$1250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1260 PRG:\$1260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1270 PRG:\$1270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1280 PRG:\$1280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1290 PRG:\$1290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$12A0 PRG:\$12A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$12B0 PRG:\$12B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$12C0 PRG:\$12C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$12D0 PRG:\$12D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$12E0 PRG:\$12E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$12F0 PRG:\$12F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1300 PRG:\$1300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1310 PRG:\$1310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1320 PRG:\$1320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1330 PRG:\$1330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1340 PRG:\$1340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1350 PRG:\$1350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1360 PRG:\$1360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1370 PRG:\$1370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1380 PRG:\$1380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1390 PRG:\$1390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$13A0 PRG:\$13A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$13B0 PRG:\$13B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$13C0 PRG:\$13C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$13D0 PRG:\$13D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$13E0 PRG:\$13E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$13F0 PRG:\$13F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1400 PRG:\$1400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1410 PRG:\$1410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1420 PRG:\$1420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1430 PRG:\$1430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1440 PRG:\$1440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1450 PRG:\$1450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1460 PRG:\$1460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1470 PRG:\$1470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1480 PRG:\$1480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1490 PRG:\$1490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$14A0 PRG:\$14A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$14B0 PRG:\$14B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$14C0 PRG:\$14C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$14D0 PRG:\$14D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$14E0 PRG:\$14E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$14F0 PRG:\$14F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1500 PRG:\$1500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1510 PRG:\$1510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1520 PRG:\$1520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1530 PRG:\$1530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1540 PRG:\$1540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1550 PRG:\$1550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1560 PRG:\$1560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1570 PRG:\$1570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1580 PRG:\$1580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1590 PRG:\$1590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$15A0 PRG:\$15A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$15B0 PRG:\$15B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$15C0 PRG:\$15C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$15D0 PRG:\$15D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$15E0 PRG:\$15E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$15F0 PRG:\$15F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1600 PRG:\$1600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1610 PRG:\$1610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1620 PRG:\$1620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1630 PRG:\$1630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1640 PRG:\$1640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1650 PRG:\$1650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1660 PRG:\$1660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1670 PRG:\$1670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1680 PRG:\$1680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1690 PRG:\$1690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$16A0 PRG:\$16A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$16B0 PRG:\$16B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$16C0 PRG:\$16C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$16D0 PRG:\$16D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$16E0 PRG:\$16E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$16F0 PRG:\$16F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1700 PRG:\$1700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1710 PRG:\$1710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1720 PRG:\$1720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1730 PRG:\$1730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1740 PRG:\$1740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1750 PRG:\$1750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1760 PRG:\$1760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1770 PRG:\$1770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1780 PRG:\$1780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1790 PRG:\$1790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$17A0 PRG:\$17A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$17B0 PRG:\$17B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$17C0 PRG:\$17C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$17D0 PRG:\$17D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$17E0 PRG:\$17E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$17F0 PRG:\$17F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1800 PRG:\$1800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1810 PRG:\$1810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1820 PRG:\$1820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1830 PRG:\$1830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1840 PRG:\$1840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1850 PRG:\$1850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1860 PRG:\$1860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1870 PRG:\$1870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1880 PRG:\$1880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1890 PRG:\$1890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$18A0 PRG:\$18A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$18B0 PRG:\$18B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$18C0 PRG:\$18C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$18D0 PRG:\$18D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$18E0 PRG:\$18E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$18F0 PRG:\$18F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1900 PRG:\$1900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1910 PRG:\$1910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1920 PRG:\$1920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1930 PRG:\$1930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1940 PRG:\$1940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1950 PRG:\$1950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1960 PRG:\$1960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1970 PRG:\$1970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1980 PRG:\$1980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1990 PRG:\$1990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$19A0 PRG:\$19A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$19B0 PRG:\$19B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$19C0 PRG:\$19C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$19D0 PRG:\$19D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$19E0 PRG:\$19E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$19F0 PRG:\$19F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A00 PRG:\$1A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A10 PRG:\$1A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A20 PRG:\$1A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A30 PRG:\$1A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A40 PRG:\$1A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A50 PRG:\$1A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A60 PRG:\$1A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A70 PRG:\$1A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A80 PRG:\$1A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1A90 PRG:\$1A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1AA0 PRG:\$1AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1AB0 PRG:\$1AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1AC0 PRG:\$1AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1AD0 PRG:\$1AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1AE0 PRG:\$1AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1AF0 PRG:\$1AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B00 PRG:\$1B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B10 PRG:\$1B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B20 PRG:\$1B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B30 PRG:\$1B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B40 PRG:\$1B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B50 PRG:\$1B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B60 PRG:\$1B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B70 PRG:\$1B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B80 PRG:\$1B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1B90 PRG:\$1B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1BA0 PRG:\$1BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1BB0 PRG:\$1BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1BC0 PRG:\$1BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1BD0 PRG:\$1BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1BE0 PRG:\$1BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1BF0 PRG:\$1BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C00 PRG:\$1C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C10 PRG:\$1C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C20 PRG:\$1C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C30 PRG:\$1C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C40 PRG:\$1C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C50 PRG:\$1C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C60 PRG:\$1C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C70 PRG:\$1C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C80 PRG:\$1C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1C90 PRG:\$1C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1CA0 PRG:\$1CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1CB0 PRG:\$1CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1CC0 PRG:\$1CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1CD0 PRG:\$1CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1CE0 PRG:\$1CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1CF0 PRG:\$1CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D00 PRG:\$1D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D10 PRG:\$1D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D20 PRG:\$1D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D30 PRG:\$1D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D40 PRG:\$1D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D50 PRG:\$1D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D60 PRG:\$1D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D70 PRG:\$1D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D80 PRG:\$1D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1D90 PRG:\$1D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1DA0 PRG:\$1DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1DB0 PRG:\$1DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1DC0 PRG:\$1DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1DD0 PRG:\$1DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1DE0 PRG:\$1DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1DF0 PRG:\$1DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E00 PRG:\$1E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E10 PRG:\$1E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E20 PRG:\$1E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E30 PRG:\$1E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E40 PRG:\$1E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E50 PRG:\$1E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E60 PRG:\$1E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E70 PRG:\$1E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E80 PRG:\$1E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1E90 PRG:\$1E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1EA0 PRG:\$1EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1EB0 PRG:\$1EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1EC0 PRG:\$1EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1ED0 PRG:\$1ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1EE0 PRG:\$1EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1EF0 PRG:\$1EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F00 PRG:\$1F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F10 PRG:\$1F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F20 PRG:\$1F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F30 PRG:\$1F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F40 PRG:\$1F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F50 PRG:\$1F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F60 PRG:\$1F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F70 PRG:\$1F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F80 PRG:\$1F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1F90 PRG:\$1F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1FA0 PRG:\$1FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1FB0 PRG:\$1FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1FC0 PRG:\$1FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1FD0 PRG:\$1FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1FE0 PRG:\$1FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$1FF0 PRG:\$1FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2000 PRG:\$2000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2010 PRG:\$2010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2020 PRG:\$2020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2030 PRG:\$2030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2040 PRG:\$2040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2050 PRG:\$2050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2060 PRG:\$2060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2070 PRG:\$2070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2080 PRG:\$2080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2090 PRG:\$2090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$20A0 PRG:\$20A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$20B0 PRG:\$20B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$20C0 PRG:\$20C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$20D0 PRG:\$20D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$20E0 PRG:\$20E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$20F0 PRG:\$20F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2100 PRG:\$2100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2110 PRG:\$2110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2120 PRG:\$2120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2130 PRG:\$2130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2140 PRG:\$2140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2150 PRG:\$2150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2160 PRG:\$2160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2170 PRG:\$2170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2180 PRG:\$2180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2190 PRG:\$2190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$21A0 PRG:\$21A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$21B0 PRG:\$21B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$21C0 PRG:\$21C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$21D0 PRG:\$21D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$21E0 PRG:\$21E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$21F0 PRG:\$21F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2200 PRG:\$2200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2210 PRG:\$2210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2220 PRG:\$2220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2230 PRG:\$2230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2240 PRG:\$2240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2250 PRG:\$2250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2260 PRG:\$2260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2270 PRG:\$2270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2280 PRG:\$2280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2290 PRG:\$2290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$22A0 PRG:\$22A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$22B0 PRG:\$22B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$22C0 PRG:\$22C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$22D0 PRG:\$22D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$22E0 PRG:\$22E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$22F0 PRG:\$22F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2300 PRG:\$2300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2310 PRG:\$2310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2320 PRG:\$2320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2330 PRG:\$2330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2340 PRG:\$2340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2350 PRG:\$2350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2360 PRG:\$2360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2370 PRG:\$2370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2380 PRG:\$2380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2390 PRG:\$2390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$23A0 PRG:\$23A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$23B0 PRG:\$23B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$23C0 PRG:\$23C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$23D0 PRG:\$23D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$23E0 PRG:\$23E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$23F0 PRG:\$23F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2400 PRG:\$2400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2410 PRG:\$2410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2420 PRG:\$2420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2430 PRG:\$2430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2440 PRG:\$2440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2450 PRG:\$2450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2460 PRG:\$2460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2470 PRG:\$2470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2480 PRG:\$2480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2490 PRG:\$2490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$24A0 PRG:\$24A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$24B0 PRG:\$24B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$24C0 PRG:\$24C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$24D0 PRG:\$24D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$24E0 PRG:\$24E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$24F0 PRG:\$24F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2500 PRG:\$2500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2510 PRG:\$2510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2520 PRG:\$2520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2530 PRG:\$2530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2540 PRG:\$2540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2550 PRG:\$2550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2560 PRG:\$2560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2570 PRG:\$2570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2580 PRG:\$2580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2590 PRG:\$2590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$25A0 PRG:\$25A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$25B0 PRG:\$25B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$25C0 PRG:\$25C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$25D0 PRG:\$25D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$25E0 PRG:\$25E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$25F0 PRG:\$25F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2600 PRG:\$2600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2610 PRG:\$2610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2620 PRG:\$2620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2630 PRG:\$2630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2640 PRG:\$2640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2650 PRG:\$2650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2660 PRG:\$2660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2670 PRG:\$2670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2680 PRG:\$2680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2690 PRG:\$2690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$26A0 PRG:\$26A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$26B0 PRG:\$26B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$26C0 PRG:\$26C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$26D0 PRG:\$26D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$26E0 PRG:\$26E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$26F0 PRG:\$26F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2700 PRG:\$2700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2710 PRG:\$2710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2720 PRG:\$2720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2730 PRG:\$2730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2740 PRG:\$2740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2750 PRG:\$2750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2760 PRG:\$2760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2770 PRG:\$2770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2780 PRG:\$2780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2790 PRG:\$2790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$27A0 PRG:\$27A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$27B0 PRG:\$27B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$27C0 PRG:\$27C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$27D0 PRG:\$27D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$27E0 PRG:\$27E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$27F0 PRG:\$27F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2800 PRG:\$2800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2810 PRG:\$2810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2820 PRG:\$2820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2830 PRG:\$2830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2840 PRG:\$2840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2850 PRG:\$2850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2860 PRG:\$2860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2870 PRG:\$2870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2880 PRG:\$2880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2890 PRG:\$2890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$28A0 PRG:\$28A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$28B0 PRG:\$28B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$28C0 PRG:\$28C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$28D0 PRG:\$28D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$28E0 PRG:\$28E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$28F0 PRG:\$28F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2900 PRG:\$2900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2910 PRG:\$2910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2920 PRG:\$2920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2930 PRG:\$2930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2940 PRG:\$2940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2950 PRG:\$2950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2960 PRG:\$2960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2970 PRG:\$2970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2980 PRG:\$2980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2990 PRG:\$2990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$29A0 PRG:\$29A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$29B0 PRG:\$29B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$29C0 PRG:\$29C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$29D0 PRG:\$29D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$29E0 PRG:\$29E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$29F0 PRG:\$29F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A00 PRG:\$2A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A10 PRG:\$2A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A20 PRG:\$2A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A30 PRG:\$2A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A40 PRG:\$2A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A50 PRG:\$2A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A60 PRG:\$2A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A70 PRG:\$2A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A80 PRG:\$2A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2A90 PRG:\$2A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2AA0 PRG:\$2AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2AB0 PRG:\$2AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2AC0 PRG:\$2AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2AD0 PRG:\$2AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2AE0 PRG:\$2AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2AF0 PRG:\$2AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B00 PRG:\$2B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B10 PRG:\$2B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B20 PRG:\$2B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B30 PRG:\$2B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B40 PRG:\$2B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B50 PRG:\$2B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B60 PRG:\$2B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B70 PRG:\$2B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B80 PRG:\$2B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2B90 PRG:\$2B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2BA0 PRG:\$2BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2BB0 PRG:\$2BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2BC0 PRG:\$2BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2BD0 PRG:\$2BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2BE0 PRG:\$2BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2BF0 PRG:\$2BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C00 PRG:\$2C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C10 PRG:\$2C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C20 PRG:\$2C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C30 PRG:\$2C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C40 PRG:\$2C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C50 PRG:\$2C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C60 PRG:\$2C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C70 PRG:\$2C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C80 PRG:\$2C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2C90 PRG:\$2C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2CA0 PRG:\$2CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2CB0 PRG:\$2CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2CC0 PRG:\$2CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2CD0 PRG:\$2CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2CE0 PRG:\$2CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2CF0 PRG:\$2CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D00 PRG:\$2D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D10 PRG:\$2D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D20 PRG:\$2D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D30 PRG:\$2D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D40 PRG:\$2D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D50 PRG:\$2D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D60 PRG:\$2D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D70 PRG:\$2D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D80 PRG:\$2D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2D90 PRG:\$2D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2DA0 PRG:\$2DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2DB0 PRG:\$2DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2DC0 PRG:\$2DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2DD0 PRG:\$2DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2DE0 PRG:\$2DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2DF0 PRG:\$2DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E00 PRG:\$2E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E10 PRG:\$2E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E20 PRG:\$2E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E30 PRG:\$2E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E40 PRG:\$2E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E50 PRG:\$2E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E60 PRG:\$2E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E70 PRG:\$2E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E80 PRG:\$2E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2E90 PRG:\$2E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2EA0 PRG:\$2EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2EB0 PRG:\$2EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2EC0 PRG:\$2EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2ED0 PRG:\$2ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2EE0 PRG:\$2EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2EF0 PRG:\$2EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F00 PRG:\$2F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F10 PRG:\$2F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F20 PRG:\$2F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F30 PRG:\$2F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F40 PRG:\$2F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F50 PRG:\$2F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F60 PRG:\$2F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F70 PRG:\$2F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F80 PRG:\$2F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2F90 PRG:\$2F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2FA0 PRG:\$2FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2FB0 PRG:\$2FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2FC0 PRG:\$2FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2FD0 PRG:\$2FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2FE0 PRG:\$2FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$2FF0 PRG:\$2FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3000 PRG:\$3000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3010 PRG:\$3010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3020 PRG:\$3020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3030 PRG:\$3030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3040 PRG:\$3040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3050 PRG:\$3050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3060 PRG:\$3060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3070 PRG:\$3070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3080 PRG:\$3080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3090 PRG:\$3090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$30A0 PRG:\$30A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$30B0 PRG:\$30B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$30C0 PRG:\$30C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$30D0 PRG:\$30D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$30E0 PRG:\$30E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$30F0 PRG:\$30F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3100 PRG:\$3100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3110 PRG:\$3110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3120 PRG:\$3120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3130 PRG:\$3130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3140 PRG:\$3140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3150 PRG:\$3150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3160 PRG:\$3160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3170 PRG:\$3170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3180 PRG:\$3180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3190 PRG:\$3190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$31A0 PRG:\$31A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$31B0 PRG:\$31B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$31C0 PRG:\$31C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$31D0 PRG:\$31D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$31E0 PRG:\$31E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$31F0 PRG:\$31F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3200 PRG:\$3200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3210 PRG:\$3210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3220 PRG:\$3220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3230 PRG:\$3230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3240 PRG:\$3240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3250 PRG:\$3250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3260 PRG:\$3260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3270 PRG:\$3270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3280 PRG:\$3280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3290 PRG:\$3290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$32A0 PRG:\$32A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$32B0 PRG:\$32B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$32C0 PRG:\$32C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$32D0 PRG:\$32D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$32E0 PRG:\$32E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$32F0 PRG:\$32F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3300 PRG:\$3300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3310 PRG:\$3310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3320 PRG:\$3320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3330 PRG:\$3330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3340 PRG:\$3340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3350 PRG:\$3350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3360 PRG:\$3360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3370 PRG:\$3370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3380 PRG:\$3380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3390 PRG:\$3390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$33A0 PRG:\$33A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$33B0 PRG:\$33B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$33C0 PRG:\$33C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$33D0 PRG:\$33D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$33E0 PRG:\$33E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$33F0 PRG:\$33F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3400 PRG:\$3400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3410 PRG:\$3410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3420 PRG:\$3420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3430 PRG:\$3430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3440 PRG:\$3440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3450 PRG:\$3450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3460 PRG:\$3460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3470 PRG:\$3470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3480 PRG:\$3480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3490 PRG:\$3490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$34A0 PRG:\$34A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$34B0 PRG:\$34B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$34C0 PRG:\$34C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$34D0 PRG:\$34D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$34E0 PRG:\$34E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$34F0 PRG:\$34F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3500 PRG:\$3500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3510 PRG:\$3510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3520 PRG:\$3520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3530 PRG:\$3530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3540 PRG:\$3540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3550 PRG:\$3550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3560 PRG:\$3560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3570 PRG:\$3570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3580 PRG:\$3580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3590 PRG:\$3590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$35A0 PRG:\$35A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$35B0 PRG:\$35B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$35C0 PRG:\$35C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$35D0 PRG:\$35D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$35E0 PRG:\$35E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$35F0 PRG:\$35F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3600 PRG:\$3600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3610 PRG:\$3610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3620 PRG:\$3620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3630 PRG:\$3630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3640 PRG:\$3640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3650 PRG:\$3650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3660 PRG:\$3660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3670 PRG:\$3670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3680 PRG:\$3680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3690 PRG:\$3690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$36A0 PRG:\$36A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$36B0 PRG:\$36B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$36C0 PRG:\$36C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$36D0 PRG:\$36D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$36E0 PRG:\$36E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$36F0 PRG:\$36F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3700 PRG:\$3700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3710 PRG:\$3710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3720 PRG:\$3720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3730 PRG:\$3730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3740 PRG:\$3740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3750 PRG:\$3750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3760 PRG:\$3760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3770 PRG:\$3770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3780 PRG:\$3780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3790 PRG:\$3790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$37A0 PRG:\$37A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$37B0 PRG:\$37B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$37C0 PRG:\$37C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$37D0 PRG:\$37D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$37E0 PRG:\$37E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$37F0 PRG:\$37F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3800 PRG:\$3800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3810 PRG:\$3810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3820 PRG:\$3820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3830 PRG:\$3830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3840 PRG:\$3840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3850 PRG:\$3850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3860 PRG:\$3860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3870 PRG:\$3870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3880 PRG:\$3880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3890 PRG:\$3890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$38A0 PRG:\$38A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$38B0 PRG:\$38B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$38C0 PRG:\$38C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$38D0 PRG:\$38D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$38E0 PRG:\$38E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$38F0 PRG:\$38F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3900 PRG:\$3900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3910 PRG:\$3910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3920 PRG:\$3920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3930 PRG:\$3930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3940 PRG:\$3940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3950 PRG:\$3950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3960 PRG:\$3960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3970 PRG:\$3970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3980 PRG:\$3980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3990 PRG:\$3990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$39A0 PRG:\$39A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$39B0 PRG:\$39B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$39C0 PRG:\$39C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$39D0 PRG:\$39D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$39E0 PRG:\$39E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$39F0 PRG:\$39F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A00 PRG:\$3A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A10 PRG:\$3A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A20 PRG:\$3A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A30 PRG:\$3A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A40 PRG:\$3A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A50 PRG:\$3A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A60 PRG:\$3A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A70 PRG:\$3A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A80 PRG:\$3A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3A90 PRG:\$3A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3AA0 PRG:\$3AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3AB0 PRG:\$3AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3AC0 PRG:\$3AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3AD0 PRG:\$3AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3AE0 PRG:\$3AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3AF0 PRG:\$3AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B00 PRG:\$3B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B10 PRG:\$3B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B20 PRG:\$3B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B30 PRG:\$3B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B40 PRG:\$3B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B50 PRG:\$3B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B60 PRG:\$3B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B70 PRG:\$3B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B80 PRG:\$3B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3B90 PRG:\$3B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3BA0 PRG:\$3BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3BB0 PRG:\$3BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3BC0 PRG:\$3BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3BD0 PRG:\$3BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3BE0 PRG:\$3BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3BF0 PRG:\$3BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C00 PRG:\$3C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C10 PRG:\$3C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C20 PRG:\$3C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C30 PRG:\$3C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C40 PRG:\$3C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C50 PRG:\$3C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C60 PRG:\$3C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C70 PRG:\$3C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C80 PRG:\$3C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3C90 PRG:\$3C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3CA0 PRG:\$3CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3CB0 PRG:\$3CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3CC0 PRG:\$3CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3CD0 PRG:\$3CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3CE0 PRG:\$3CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3CF0 PRG:\$3CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D00 PRG:\$3D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D10 PRG:\$3D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D20 PRG:\$3D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D30 PRG:\$3D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D40 PRG:\$3D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D50 PRG:\$3D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D60 PRG:\$3D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D70 PRG:\$3D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D80 PRG:\$3D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3D90 PRG:\$3D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3DA0 PRG:\$3DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3DB0 PRG:\$3DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3DC0 PRG:\$3DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3DD0 PRG:\$3DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3DE0 PRG:\$3DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3DF0 PRG:\$3DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E00 PRG:\$3E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E10 PRG:\$3E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E20 PRG:\$3E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E30 PRG:\$3E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E40 PRG:\$3E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E50 PRG:\$3E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E60 PRG:\$3E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E70 PRG:\$3E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E80 PRG:\$3E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3E90 PRG:\$3E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3EA0 PRG:\$3EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3EB0 PRG:\$3EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3EC0 PRG:\$3EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3ED0 PRG:\$3ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3EE0 PRG:\$3EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3EF0 PRG:\$3EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F00 PRG:\$3F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F10 PRG:\$3F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F20 PRG:\$3F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F30 PRG:\$3F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F40 PRG:\$3F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F50 PRG:\$3F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F60 PRG:\$3F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F70 PRG:\$3F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F80 PRG:\$3F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3F90 PRG:\$3F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3FA0 PRG:\$3FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3FB0 PRG:\$3FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3FC0 PRG:\$3FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3FD0 PRG:\$3FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3FE0 PRG:\$3FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$3FF0 PRG:\$3FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - +.res $4000, $00 ; ---- data $4000-$7FFF (16384 bytes) ---- ; Bank 1: switchable PRG bank at CPU $8000-$BFFF (raw data, Pass 1) - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4000 PRG:\$4000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4010 PRG:\$4010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4020 PRG:\$4020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4030 PRG:\$4030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4040 PRG:\$4040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4050 PRG:\$4050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4060 PRG:\$4060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4070 PRG:\$4070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4080 PRG:\$4080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4090 PRG:\$4090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$40A0 PRG:\$40A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$40B0 PRG:\$40B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$40C0 PRG:\$40C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$40D0 PRG:\$40D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$40E0 PRG:\$40E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$40F0 PRG:\$40F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4100 PRG:\$4100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4110 PRG:\$4110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4120 PRG:\$4120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4130 PRG:\$4130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4140 PRG:\$4140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4150 PRG:\$4150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4160 PRG:\$4160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4170 PRG:\$4170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4180 PRG:\$4180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4190 PRG:\$4190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$41A0 PRG:\$41A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$41B0 PRG:\$41B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$41C0 PRG:\$41C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$41D0 PRG:\$41D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$41E0 PRG:\$41E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$41F0 PRG:\$41F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4200 PRG:\$4200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4210 PRG:\$4210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4220 PRG:\$4220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4230 PRG:\$4230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4240 PRG:\$4240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4250 PRG:\$4250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4260 PRG:\$4260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4270 PRG:\$4270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4280 PRG:\$4280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4290 PRG:\$4290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$42A0 PRG:\$42A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$42B0 PRG:\$42B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$42C0 PRG:\$42C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$42D0 PRG:\$42D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$42E0 PRG:\$42E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$42F0 PRG:\$42F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4300 PRG:\$4300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4310 PRG:\$4310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4320 PRG:\$4320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4330 PRG:\$4330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4340 PRG:\$4340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4350 PRG:\$4350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4360 PRG:\$4360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4370 PRG:\$4370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4380 PRG:\$4380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4390 PRG:\$4390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$43A0 PRG:\$43A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$43B0 PRG:\$43B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$43C0 PRG:\$43C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$43D0 PRG:\$43D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$43E0 PRG:\$43E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$43F0 PRG:\$43F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4400 PRG:\$4400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4410 PRG:\$4410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4420 PRG:\$4420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4430 PRG:\$4430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4440 PRG:\$4440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4450 PRG:\$4450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4460 PRG:\$4460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4470 PRG:\$4470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4480 PRG:\$4480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4490 PRG:\$4490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$44A0 PRG:\$44A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$44B0 PRG:\$44B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$44C0 PRG:\$44C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$44D0 PRG:\$44D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$44E0 PRG:\$44E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$44F0 PRG:\$44F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4500 PRG:\$4500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4510 PRG:\$4510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4520 PRG:\$4520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4530 PRG:\$4530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4540 PRG:\$4540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4550 PRG:\$4550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4560 PRG:\$4560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4570 PRG:\$4570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4580 PRG:\$4580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4590 PRG:\$4590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$45A0 PRG:\$45A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$45B0 PRG:\$45B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$45C0 PRG:\$45C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$45D0 PRG:\$45D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$45E0 PRG:\$45E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$45F0 PRG:\$45F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4600 PRG:\$4600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4610 PRG:\$4610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4620 PRG:\$4620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4630 PRG:\$4630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4640 PRG:\$4640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4650 PRG:\$4650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4660 PRG:\$4660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4670 PRG:\$4670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4680 PRG:\$4680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4690 PRG:\$4690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$46A0 PRG:\$46A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$46B0 PRG:\$46B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$46C0 PRG:\$46C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$46D0 PRG:\$46D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$46E0 PRG:\$46E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$46F0 PRG:\$46F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4700 PRG:\$4700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4710 PRG:\$4710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4720 PRG:\$4720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4730 PRG:\$4730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4740 PRG:\$4740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4750 PRG:\$4750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4760 PRG:\$4760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4770 PRG:\$4770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4780 PRG:\$4780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4790 PRG:\$4790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$47A0 PRG:\$47A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$47B0 PRG:\$47B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$47C0 PRG:\$47C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$47D0 PRG:\$47D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$47E0 PRG:\$47E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$47F0 PRG:\$47F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4800 PRG:\$4800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4810 PRG:\$4810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4820 PRG:\$4820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4830 PRG:\$4830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4840 PRG:\$4840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4850 PRG:\$4850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4860 PRG:\$4860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4870 PRG:\$4870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4880 PRG:\$4880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4890 PRG:\$4890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$48A0 PRG:\$48A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$48B0 PRG:\$48B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$48C0 PRG:\$48C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$48D0 PRG:\$48D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$48E0 PRG:\$48E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$48F0 PRG:\$48F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4900 PRG:\$4900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4910 PRG:\$4910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4920 PRG:\$4920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4930 PRG:\$4930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4940 PRG:\$4940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4950 PRG:\$4950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4960 PRG:\$4960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4970 PRG:\$4970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4980 PRG:\$4980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4990 PRG:\$4990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$49A0 PRG:\$49A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$49B0 PRG:\$49B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$49C0 PRG:\$49C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$49D0 PRG:\$49D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$49E0 PRG:\$49E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$49F0 PRG:\$49F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A00 PRG:\$4A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A10 PRG:\$4A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A20 PRG:\$4A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A30 PRG:\$4A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A40 PRG:\$4A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A50 PRG:\$4A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A60 PRG:\$4A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A70 PRG:\$4A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A80 PRG:\$4A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4A90 PRG:\$4A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4AA0 PRG:\$4AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4AB0 PRG:\$4AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4AC0 PRG:\$4AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4AD0 PRG:\$4AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4AE0 PRG:\$4AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4AF0 PRG:\$4AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B00 PRG:\$4B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B10 PRG:\$4B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B20 PRG:\$4B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B30 PRG:\$4B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B40 PRG:\$4B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B50 PRG:\$4B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B60 PRG:\$4B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B70 PRG:\$4B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B80 PRG:\$4B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4B90 PRG:\$4B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4BA0 PRG:\$4BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4BB0 PRG:\$4BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4BC0 PRG:\$4BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4BD0 PRG:\$4BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4BE0 PRG:\$4BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4BF0 PRG:\$4BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C00 PRG:\$4C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C10 PRG:\$4C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C20 PRG:\$4C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C30 PRG:\$4C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C40 PRG:\$4C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C50 PRG:\$4C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C60 PRG:\$4C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C70 PRG:\$4C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C80 PRG:\$4C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4C90 PRG:\$4C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4CA0 PRG:\$4CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4CB0 PRG:\$4CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4CC0 PRG:\$4CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4CD0 PRG:\$4CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4CE0 PRG:\$4CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4CF0 PRG:\$4CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D00 PRG:\$4D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D10 PRG:\$4D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D20 PRG:\$4D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D30 PRG:\$4D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D40 PRG:\$4D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D50 PRG:\$4D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D60 PRG:\$4D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D70 PRG:\$4D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D80 PRG:\$4D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4D90 PRG:\$4D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4DA0 PRG:\$4DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4DB0 PRG:\$4DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4DC0 PRG:\$4DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4DD0 PRG:\$4DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4DE0 PRG:\$4DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4DF0 PRG:\$4DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E00 PRG:\$4E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E10 PRG:\$4E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E20 PRG:\$4E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E30 PRG:\$4E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E40 PRG:\$4E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E50 PRG:\$4E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E60 PRG:\$4E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E70 PRG:\$4E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E80 PRG:\$4E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4E90 PRG:\$4E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4EA0 PRG:\$4EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4EB0 PRG:\$4EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4EC0 PRG:\$4EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4ED0 PRG:\$4ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4EE0 PRG:\$4EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4EF0 PRG:\$4EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F00 PRG:\$4F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F10 PRG:\$4F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F20 PRG:\$4F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F30 PRG:\$4F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F40 PRG:\$4F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F50 PRG:\$4F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F60 PRG:\$4F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F70 PRG:\$4F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F80 PRG:\$4F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4F90 PRG:\$4F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4FA0 PRG:\$4FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4FB0 PRG:\$4FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4FC0 PRG:\$4FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4FD0 PRG:\$4FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4FE0 PRG:\$4FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$4FF0 PRG:\$4FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5000 PRG:\$5000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5010 PRG:\$5010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5020 PRG:\$5020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5030 PRG:\$5030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5040 PRG:\$5040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5050 PRG:\$5050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5060 PRG:\$5060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5070 PRG:\$5070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5080 PRG:\$5080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5090 PRG:\$5090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$50A0 PRG:\$50A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$50B0 PRG:\$50B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$50C0 PRG:\$50C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$50D0 PRG:\$50D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$50E0 PRG:\$50E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$50F0 PRG:\$50F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5100 PRG:\$5100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5110 PRG:\$5110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5120 PRG:\$5120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5130 PRG:\$5130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5140 PRG:\$5140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5150 PRG:\$5150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5160 PRG:\$5160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5170 PRG:\$5170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5180 PRG:\$5180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5190 PRG:\$5190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$51A0 PRG:\$51A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$51B0 PRG:\$51B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$51C0 PRG:\$51C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$51D0 PRG:\$51D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$51E0 PRG:\$51E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$51F0 PRG:\$51F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5200 PRG:\$5200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5210 PRG:\$5210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5220 PRG:\$5220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5230 PRG:\$5230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5240 PRG:\$5240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5250 PRG:\$5250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5260 PRG:\$5260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5270 PRG:\$5270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5280 PRG:\$5280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5290 PRG:\$5290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$52A0 PRG:\$52A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$52B0 PRG:\$52B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$52C0 PRG:\$52C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$52D0 PRG:\$52D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$52E0 PRG:\$52E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$52F0 PRG:\$52F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5300 PRG:\$5300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5310 PRG:\$5310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5320 PRG:\$5320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5330 PRG:\$5330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5340 PRG:\$5340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5350 PRG:\$5350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5360 PRG:\$5360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5370 PRG:\$5370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5380 PRG:\$5380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5390 PRG:\$5390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$53A0 PRG:\$53A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$53B0 PRG:\$53B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$53C0 PRG:\$53C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$53D0 PRG:\$53D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$53E0 PRG:\$53E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$53F0 PRG:\$53F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5400 PRG:\$5400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5410 PRG:\$5410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5420 PRG:\$5420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5430 PRG:\$5430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5440 PRG:\$5440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5450 PRG:\$5450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5460 PRG:\$5460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5470 PRG:\$5470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5480 PRG:\$5480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5490 PRG:\$5490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$54A0 PRG:\$54A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$54B0 PRG:\$54B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$54C0 PRG:\$54C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$54D0 PRG:\$54D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$54E0 PRG:\$54E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$54F0 PRG:\$54F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5500 PRG:\$5500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5510 PRG:\$5510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5520 PRG:\$5520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5530 PRG:\$5530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5540 PRG:\$5540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5550 PRG:\$5550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5560 PRG:\$5560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5570 PRG:\$5570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5580 PRG:\$5580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5590 PRG:\$5590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$55A0 PRG:\$55A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$55B0 PRG:\$55B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$55C0 PRG:\$55C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$55D0 PRG:\$55D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$55E0 PRG:\$55E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$55F0 PRG:\$55F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5600 PRG:\$5600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5610 PRG:\$5610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5620 PRG:\$5620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5630 PRG:\$5630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5640 PRG:\$5640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5650 PRG:\$5650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5660 PRG:\$5660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5670 PRG:\$5670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5680 PRG:\$5680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5690 PRG:\$5690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$56A0 PRG:\$56A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$56B0 PRG:\$56B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$56C0 PRG:\$56C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$56D0 PRG:\$56D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$56E0 PRG:\$56E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$56F0 PRG:\$56F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5700 PRG:\$5700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5710 PRG:\$5710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5720 PRG:\$5720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5730 PRG:\$5730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5740 PRG:\$5740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5750 PRG:\$5750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5760 PRG:\$5760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5770 PRG:\$5770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5780 PRG:\$5780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5790 PRG:\$5790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$57A0 PRG:\$57A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$57B0 PRG:\$57B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$57C0 PRG:\$57C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$57D0 PRG:\$57D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$57E0 PRG:\$57E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$57F0 PRG:\$57F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5800 PRG:\$5800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5810 PRG:\$5810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5820 PRG:\$5820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5830 PRG:\$5830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5840 PRG:\$5840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5850 PRG:\$5850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5860 PRG:\$5860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5870 PRG:\$5870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5880 PRG:\$5880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5890 PRG:\$5890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$58A0 PRG:\$58A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$58B0 PRG:\$58B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$58C0 PRG:\$58C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$58D0 PRG:\$58D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$58E0 PRG:\$58E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$58F0 PRG:\$58F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5900 PRG:\$5900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5910 PRG:\$5910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5920 PRG:\$5920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5930 PRG:\$5930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5940 PRG:\$5940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5950 PRG:\$5950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5960 PRG:\$5960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5970 PRG:\$5970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5980 PRG:\$5980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5990 PRG:\$5990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$59A0 PRG:\$59A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$59B0 PRG:\$59B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$59C0 PRG:\$59C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$59D0 PRG:\$59D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$59E0 PRG:\$59E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$59F0 PRG:\$59F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A00 PRG:\$5A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A10 PRG:\$5A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A20 PRG:\$5A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A30 PRG:\$5A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A40 PRG:\$5A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A50 PRG:\$5A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A60 PRG:\$5A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A70 PRG:\$5A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A80 PRG:\$5A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5A90 PRG:\$5A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5AA0 PRG:\$5AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5AB0 PRG:\$5AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5AC0 PRG:\$5AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5AD0 PRG:\$5AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5AE0 PRG:\$5AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5AF0 PRG:\$5AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B00 PRG:\$5B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B10 PRG:\$5B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B20 PRG:\$5B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B30 PRG:\$5B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B40 PRG:\$5B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B50 PRG:\$5B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B60 PRG:\$5B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B70 PRG:\$5B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B80 PRG:\$5B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5B90 PRG:\$5B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5BA0 PRG:\$5BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5BB0 PRG:\$5BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5BC0 PRG:\$5BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5BD0 PRG:\$5BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5BE0 PRG:\$5BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5BF0 PRG:\$5BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C00 PRG:\$5C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C10 PRG:\$5C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C20 PRG:\$5C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C30 PRG:\$5C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C40 PRG:\$5C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C50 PRG:\$5C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C60 PRG:\$5C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C70 PRG:\$5C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C80 PRG:\$5C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5C90 PRG:\$5C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5CA0 PRG:\$5CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5CB0 PRG:\$5CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5CC0 PRG:\$5CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5CD0 PRG:\$5CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5CE0 PRG:\$5CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5CF0 PRG:\$5CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D00 PRG:\$5D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D10 PRG:\$5D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D20 PRG:\$5D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D30 PRG:\$5D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D40 PRG:\$5D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D50 PRG:\$5D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D60 PRG:\$5D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D70 PRG:\$5D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D80 PRG:\$5D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5D90 PRG:\$5D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5DA0 PRG:\$5DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5DB0 PRG:\$5DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5DC0 PRG:\$5DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5DD0 PRG:\$5DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5DE0 PRG:\$5DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5DF0 PRG:\$5DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E00 PRG:\$5E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E10 PRG:\$5E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E20 PRG:\$5E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E30 PRG:\$5E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E40 PRG:\$5E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E50 PRG:\$5E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E60 PRG:\$5E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E70 PRG:\$5E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E80 PRG:\$5E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5E90 PRG:\$5E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5EA0 PRG:\$5EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5EB0 PRG:\$5EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5EC0 PRG:\$5EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5ED0 PRG:\$5ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5EE0 PRG:\$5EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5EF0 PRG:\$5EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F00 PRG:\$5F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F10 PRG:\$5F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F20 PRG:\$5F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F30 PRG:\$5F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F40 PRG:\$5F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F50 PRG:\$5F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F60 PRG:\$5F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F70 PRG:\$5F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F80 PRG:\$5F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5F90 PRG:\$5F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5FA0 PRG:\$5FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5FB0 PRG:\$5FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5FC0 PRG:\$5FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5FD0 PRG:\$5FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5FE0 PRG:\$5FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$5FF0 PRG:\$5FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6000 PRG:\$6000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6010 PRG:\$6010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6020 PRG:\$6020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6030 PRG:\$6030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6040 PRG:\$6040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6050 PRG:\$6050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6060 PRG:\$6060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6070 PRG:\$6070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6080 PRG:\$6080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6090 PRG:\$6090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$60A0 PRG:\$60A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$60B0 PRG:\$60B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$60C0 PRG:\$60C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$60D0 PRG:\$60D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$60E0 PRG:\$60E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$60F0 PRG:\$60F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6100 PRG:\$6100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6110 PRG:\$6110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6120 PRG:\$6120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6130 PRG:\$6130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6140 PRG:\$6140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6150 PRG:\$6150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6160 PRG:\$6160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6170 PRG:\$6170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6180 PRG:\$6180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6190 PRG:\$6190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$61A0 PRG:\$61A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$61B0 PRG:\$61B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$61C0 PRG:\$61C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$61D0 PRG:\$61D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$61E0 PRG:\$61E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$61F0 PRG:\$61F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6200 PRG:\$6200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6210 PRG:\$6210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6220 PRG:\$6220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6230 PRG:\$6230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6240 PRG:\$6240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6250 PRG:\$6250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6260 PRG:\$6260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6270 PRG:\$6270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6280 PRG:\$6280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6290 PRG:\$6290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$62A0 PRG:\$62A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$62B0 PRG:\$62B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$62C0 PRG:\$62C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$62D0 PRG:\$62D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$62E0 PRG:\$62E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$62F0 PRG:\$62F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6300 PRG:\$6300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6310 PRG:\$6310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6320 PRG:\$6320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6330 PRG:\$6330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6340 PRG:\$6340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6350 PRG:\$6350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6360 PRG:\$6360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6370 PRG:\$6370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6380 PRG:\$6380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6390 PRG:\$6390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$63A0 PRG:\$63A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$63B0 PRG:\$63B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$63C0 PRG:\$63C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$63D0 PRG:\$63D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$63E0 PRG:\$63E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$63F0 PRG:\$63F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6400 PRG:\$6400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6410 PRG:\$6410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6420 PRG:\$6420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6430 PRG:\$6430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6440 PRG:\$6440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6450 PRG:\$6450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6460 PRG:\$6460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6470 PRG:\$6470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6480 PRG:\$6480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6490 PRG:\$6490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$64A0 PRG:\$64A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$64B0 PRG:\$64B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$64C0 PRG:\$64C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$64D0 PRG:\$64D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$64E0 PRG:\$64E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$64F0 PRG:\$64F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6500 PRG:\$6500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6510 PRG:\$6510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6520 PRG:\$6520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6530 PRG:\$6530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6540 PRG:\$6540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6550 PRG:\$6550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6560 PRG:\$6560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6570 PRG:\$6570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6580 PRG:\$6580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6590 PRG:\$6590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$65A0 PRG:\$65A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$65B0 PRG:\$65B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$65C0 PRG:\$65C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$65D0 PRG:\$65D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$65E0 PRG:\$65E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$65F0 PRG:\$65F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6600 PRG:\$6600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6610 PRG:\$6610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6620 PRG:\$6620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6630 PRG:\$6630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6640 PRG:\$6640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6650 PRG:\$6650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6660 PRG:\$6660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6670 PRG:\$6670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6680 PRG:\$6680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6690 PRG:\$6690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$66A0 PRG:\$66A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$66B0 PRG:\$66B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$66C0 PRG:\$66C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$66D0 PRG:\$66D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$66E0 PRG:\$66E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$66F0 PRG:\$66F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6700 PRG:\$6700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6710 PRG:\$6710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6720 PRG:\$6720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6730 PRG:\$6730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6740 PRG:\$6740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6750 PRG:\$6750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6760 PRG:\$6760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6770 PRG:\$6770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6780 PRG:\$6780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6790 PRG:\$6790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$67A0 PRG:\$67A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$67B0 PRG:\$67B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$67C0 PRG:\$67C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$67D0 PRG:\$67D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$67E0 PRG:\$67E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$67F0 PRG:\$67F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6800 PRG:\$6800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6810 PRG:\$6810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6820 PRG:\$6820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6830 PRG:\$6830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6840 PRG:\$6840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6850 PRG:\$6850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6860 PRG:\$6860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6870 PRG:\$6870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6880 PRG:\$6880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6890 PRG:\$6890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$68A0 PRG:\$68A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$68B0 PRG:\$68B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$68C0 PRG:\$68C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$68D0 PRG:\$68D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$68E0 PRG:\$68E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$68F0 PRG:\$68F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6900 PRG:\$6900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6910 PRG:\$6910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6920 PRG:\$6920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6930 PRG:\$6930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6940 PRG:\$6940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6950 PRG:\$6950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6960 PRG:\$6960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6970 PRG:\$6970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6980 PRG:\$6980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6990 PRG:\$6990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$69A0 PRG:\$69A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$69B0 PRG:\$69B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$69C0 PRG:\$69C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$69D0 PRG:\$69D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$69E0 PRG:\$69E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$69F0 PRG:\$69F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A00 PRG:\$6A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A10 PRG:\$6A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A20 PRG:\$6A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A30 PRG:\$6A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A40 PRG:\$6A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A50 PRG:\$6A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A60 PRG:\$6A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A70 PRG:\$6A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A80 PRG:\$6A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6A90 PRG:\$6A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6AA0 PRG:\$6AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6AB0 PRG:\$6AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6AC0 PRG:\$6AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6AD0 PRG:\$6AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6AE0 PRG:\$6AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6AF0 PRG:\$6AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B00 PRG:\$6B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B10 PRG:\$6B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B20 PRG:\$6B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B30 PRG:\$6B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B40 PRG:\$6B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B50 PRG:\$6B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B60 PRG:\$6B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B70 PRG:\$6B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B80 PRG:\$6B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6B90 PRG:\$6B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6BA0 PRG:\$6BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6BB0 PRG:\$6BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6BC0 PRG:\$6BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6BD0 PRG:\$6BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6BE0 PRG:\$6BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6BF0 PRG:\$6BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C00 PRG:\$6C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C10 PRG:\$6C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C20 PRG:\$6C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C30 PRG:\$6C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C40 PRG:\$6C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C50 PRG:\$6C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C60 PRG:\$6C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C70 PRG:\$6C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C80 PRG:\$6C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6C90 PRG:\$6C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6CA0 PRG:\$6CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6CB0 PRG:\$6CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6CC0 PRG:\$6CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6CD0 PRG:\$6CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6CE0 PRG:\$6CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6CF0 PRG:\$6CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D00 PRG:\$6D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D10 PRG:\$6D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D20 PRG:\$6D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D30 PRG:\$6D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D40 PRG:\$6D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D50 PRG:\$6D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D60 PRG:\$6D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D70 PRG:\$6D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D80 PRG:\$6D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6D90 PRG:\$6D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6DA0 PRG:\$6DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6DB0 PRG:\$6DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6DC0 PRG:\$6DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6DD0 PRG:\$6DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6DE0 PRG:\$6DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6DF0 PRG:\$6DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E00 PRG:\$6E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E10 PRG:\$6E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E20 PRG:\$6E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E30 PRG:\$6E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E40 PRG:\$6E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E50 PRG:\$6E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E60 PRG:\$6E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E70 PRG:\$6E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E80 PRG:\$6E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6E90 PRG:\$6E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6EA0 PRG:\$6EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6EB0 PRG:\$6EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6EC0 PRG:\$6EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6ED0 PRG:\$6ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6EE0 PRG:\$6EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6EF0 PRG:\$6EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F00 PRG:\$6F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F10 PRG:\$6F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F20 PRG:\$6F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F30 PRG:\$6F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F40 PRG:\$6F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F50 PRG:\$6F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F60 PRG:\$6F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F70 PRG:\$6F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F80 PRG:\$6F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6F90 PRG:\$6F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6FA0 PRG:\$6FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6FB0 PRG:\$6FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6FC0 PRG:\$6FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6FD0 PRG:\$6FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6FE0 PRG:\$6FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$6FF0 PRG:\$6FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7000 PRG:\$7000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7010 PRG:\$7010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7020 PRG:\$7020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7030 PRG:\$7030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7040 PRG:\$7040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7050 PRG:\$7050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7060 PRG:\$7060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7070 PRG:\$7070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7080 PRG:\$7080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7090 PRG:\$7090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$70A0 PRG:\$70A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$70B0 PRG:\$70B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$70C0 PRG:\$70C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$70D0 PRG:\$70D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$70E0 PRG:\$70E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$70F0 PRG:\$70F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7100 PRG:\$7100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7110 PRG:\$7110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7120 PRG:\$7120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7130 PRG:\$7130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7140 PRG:\$7140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7150 PRG:\$7150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7160 PRG:\$7160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7170 PRG:\$7170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7180 PRG:\$7180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7190 PRG:\$7190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$71A0 PRG:\$71A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$71B0 PRG:\$71B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$71C0 PRG:\$71C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$71D0 PRG:\$71D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$71E0 PRG:\$71E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$71F0 PRG:\$71F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7200 PRG:\$7200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7210 PRG:\$7210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7220 PRG:\$7220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7230 PRG:\$7230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7240 PRG:\$7240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7250 PRG:\$7250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7260 PRG:\$7260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7270 PRG:\$7270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7280 PRG:\$7280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7290 PRG:\$7290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$72A0 PRG:\$72A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$72B0 PRG:\$72B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$72C0 PRG:\$72C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$72D0 PRG:\$72D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$72E0 PRG:\$72E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$72F0 PRG:\$72F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7300 PRG:\$7300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7310 PRG:\$7310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7320 PRG:\$7320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7330 PRG:\$7330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7340 PRG:\$7340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7350 PRG:\$7350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7360 PRG:\$7360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7370 PRG:\$7370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7380 PRG:\$7380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7390 PRG:\$7390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$73A0 PRG:\$73A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$73B0 PRG:\$73B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$73C0 PRG:\$73C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$73D0 PRG:\$73D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$73E0 PRG:\$73E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$73F0 PRG:\$73F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7400 PRG:\$7400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7410 PRG:\$7410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7420 PRG:\$7420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7430 PRG:\$7430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7440 PRG:\$7440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7450 PRG:\$7450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7460 PRG:\$7460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7470 PRG:\$7470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7480 PRG:\$7480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7490 PRG:\$7490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$74A0 PRG:\$74A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$74B0 PRG:\$74B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$74C0 PRG:\$74C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$74D0 PRG:\$74D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$74E0 PRG:\$74E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$74F0 PRG:\$74F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7500 PRG:\$7500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7510 PRG:\$7510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7520 PRG:\$7520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7530 PRG:\$7530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7540 PRG:\$7540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7550 PRG:\$7550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7560 PRG:\$7560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7570 PRG:\$7570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7580 PRG:\$7580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7590 PRG:\$7590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$75A0 PRG:\$75A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$75B0 PRG:\$75B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$75C0 PRG:\$75C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$75D0 PRG:\$75D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$75E0 PRG:\$75E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$75F0 PRG:\$75F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7600 PRG:\$7600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7610 PRG:\$7610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7620 PRG:\$7620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7630 PRG:\$7630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7640 PRG:\$7640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7650 PRG:\$7650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7660 PRG:\$7660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7670 PRG:\$7670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7680 PRG:\$7680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7690 PRG:\$7690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$76A0 PRG:\$76A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$76B0 PRG:\$76B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$76C0 PRG:\$76C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$76D0 PRG:\$76D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$76E0 PRG:\$76E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$76F0 PRG:\$76F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7700 PRG:\$7700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7710 PRG:\$7710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7720 PRG:\$7720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7730 PRG:\$7730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7740 PRG:\$7740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7750 PRG:\$7750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7760 PRG:\$7760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7770 PRG:\$7770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7780 PRG:\$7780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7790 PRG:\$7790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$77A0 PRG:\$77A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$77B0 PRG:\$77B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$77C0 PRG:\$77C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$77D0 PRG:\$77D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$77E0 PRG:\$77E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$77F0 PRG:\$77F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7800 PRG:\$7800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7810 PRG:\$7810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7820 PRG:\$7820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7830 PRG:\$7830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7840 PRG:\$7840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7850 PRG:\$7850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7860 PRG:\$7860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7870 PRG:\$7870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7880 PRG:\$7880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7890 PRG:\$7890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$78A0 PRG:\$78A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$78B0 PRG:\$78B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$78C0 PRG:\$78C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$78D0 PRG:\$78D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$78E0 PRG:\$78E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$78F0 PRG:\$78F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7900 PRG:\$7900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7910 PRG:\$7910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7920 PRG:\$7920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7930 PRG:\$7930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7940 PRG:\$7940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7950 PRG:\$7950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7960 PRG:\$7960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7970 PRG:\$7970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7980 PRG:\$7980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7990 PRG:\$7990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$79A0 PRG:\$79A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$79B0 PRG:\$79B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$79C0 PRG:\$79C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$79D0 PRG:\$79D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$79E0 PRG:\$79E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$79F0 PRG:\$79F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A00 PRG:\$7A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A10 PRG:\$7A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A20 PRG:\$7A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A30 PRG:\$7A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A40 PRG:\$7A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A50 PRG:\$7A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A60 PRG:\$7A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A70 PRG:\$7A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A80 PRG:\$7A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7A90 PRG:\$7A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7AA0 PRG:\$7AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7AB0 PRG:\$7AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7AC0 PRG:\$7AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7AD0 PRG:\$7AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7AE0 PRG:\$7AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7AF0 PRG:\$7AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B00 PRG:\$7B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B10 PRG:\$7B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B20 PRG:\$7B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B30 PRG:\$7B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B40 PRG:\$7B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B50 PRG:\$7B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B60 PRG:\$7B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B70 PRG:\$7B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B80 PRG:\$7B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7B90 PRG:\$7B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7BA0 PRG:\$7BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7BB0 PRG:\$7BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7BC0 PRG:\$7BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7BD0 PRG:\$7BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7BE0 PRG:\$7BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7BF0 PRG:\$7BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C00 PRG:\$7C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C10 PRG:\$7C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C20 PRG:\$7C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C30 PRG:\$7C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C40 PRG:\$7C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C50 PRG:\$7C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C60 PRG:\$7C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C70 PRG:\$7C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C80 PRG:\$7C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7C90 PRG:\$7C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7CA0 PRG:\$7CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7CB0 PRG:\$7CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7CC0 PRG:\$7CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7CD0 PRG:\$7CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7CE0 PRG:\$7CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7CF0 PRG:\$7CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D00 PRG:\$7D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D10 PRG:\$7D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D20 PRG:\$7D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D30 PRG:\$7D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D40 PRG:\$7D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D50 PRG:\$7D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D60 PRG:\$7D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D70 PRG:\$7D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D80 PRG:\$7D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7D90 PRG:\$7D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7DA0 PRG:\$7DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7DB0 PRG:\$7DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7DC0 PRG:\$7DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7DD0 PRG:\$7DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7DE0 PRG:\$7DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7DF0 PRG:\$7DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E00 PRG:\$7E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E10 PRG:\$7E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E20 PRG:\$7E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E30 PRG:\$7E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E40 PRG:\$7E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E50 PRG:\$7E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E60 PRG:\$7E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E70 PRG:\$7E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E80 PRG:\$7E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7E90 PRG:\$7E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7EA0 PRG:\$7EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7EB0 PRG:\$7EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7EC0 PRG:\$7EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7ED0 PRG:\$7ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7EE0 PRG:\$7EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7EF0 PRG:\$7EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F00 PRG:\$7F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F10 PRG:\$7F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F20 PRG:\$7F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F30 PRG:\$7F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F40 PRG:\$7F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F50 PRG:\$7F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F60 PRG:\$7F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F70 PRG:\$7F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F80 PRG:\$7F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7F90 PRG:\$7F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7FA0 PRG:\$7FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7FB0 PRG:\$7FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7FC0 PRG:\$7FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7FD0 PRG:\$7FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7FE0 PRG:\$7FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$7FF0 PRG:\$7FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - +.res $4000, $00 ; ---- data $8000-$BFFF (16384 bytes) ---- ; Bank 2: switchable PRG bank at CPU $8000-$BFFF (raw data, Pass 1) - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8000 PRG:\$8000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8010 PRG:\$8010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8020 PRG:\$8020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8030 PRG:\$8030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8040 PRG:\$8040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8050 PRG:\$8050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8060 PRG:\$8060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8070 PRG:\$8070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8080 PRG:\$8080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8090 PRG:\$8090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$80A0 PRG:\$80A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$80B0 PRG:\$80B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$80C0 PRG:\$80C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$80D0 PRG:\$80D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$80E0 PRG:\$80E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$80F0 PRG:\$80F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8100 PRG:\$8100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8110 PRG:\$8110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8120 PRG:\$8120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8130 PRG:\$8130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8140 PRG:\$8140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8150 PRG:\$8150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8160 PRG:\$8160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8170 PRG:\$8170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8180 PRG:\$8180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8190 PRG:\$8190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$81A0 PRG:\$81A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$81B0 PRG:\$81B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$81C0 PRG:\$81C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$81D0 PRG:\$81D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$81E0 PRG:\$81E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$81F0 PRG:\$81F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8200 PRG:\$8200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8210 PRG:\$8210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8220 PRG:\$8220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8230 PRG:\$8230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8240 PRG:\$8240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8250 PRG:\$8250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8260 PRG:\$8260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8270 PRG:\$8270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8280 PRG:\$8280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8290 PRG:\$8290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$82A0 PRG:\$82A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$82B0 PRG:\$82B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$82C0 PRG:\$82C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$82D0 PRG:\$82D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$82E0 PRG:\$82E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$82F0 PRG:\$82F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8300 PRG:\$8300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8310 PRG:\$8310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8320 PRG:\$8320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8330 PRG:\$8330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8340 PRG:\$8340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8350 PRG:\$8350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8360 PRG:\$8360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8370 PRG:\$8370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8380 PRG:\$8380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8390 PRG:\$8390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$83A0 PRG:\$83A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$83B0 PRG:\$83B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$83C0 PRG:\$83C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$83D0 PRG:\$83D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$83E0 PRG:\$83E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$83F0 PRG:\$83F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8400 PRG:\$8400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8410 PRG:\$8410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8420 PRG:\$8420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8430 PRG:\$8430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8440 PRG:\$8440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8450 PRG:\$8450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8460 PRG:\$8460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8470 PRG:\$8470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8480 PRG:\$8480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8490 PRG:\$8490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$84A0 PRG:\$84A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$84B0 PRG:\$84B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$84C0 PRG:\$84C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$84D0 PRG:\$84D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$84E0 PRG:\$84E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$84F0 PRG:\$84F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8500 PRG:\$8500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8510 PRG:\$8510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8520 PRG:\$8520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8530 PRG:\$8530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8540 PRG:\$8540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8550 PRG:\$8550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8560 PRG:\$8560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8570 PRG:\$8570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8580 PRG:\$8580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8590 PRG:\$8590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$85A0 PRG:\$85A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$85B0 PRG:\$85B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$85C0 PRG:\$85C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$85D0 PRG:\$85D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$85E0 PRG:\$85E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$85F0 PRG:\$85F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8600 PRG:\$8600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8610 PRG:\$8610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8620 PRG:\$8620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8630 PRG:\$8630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8640 PRG:\$8640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8650 PRG:\$8650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8660 PRG:\$8660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8670 PRG:\$8670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8680 PRG:\$8680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8690 PRG:\$8690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$86A0 PRG:\$86A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$86B0 PRG:\$86B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$86C0 PRG:\$86C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$86D0 PRG:\$86D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$86E0 PRG:\$86E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$86F0 PRG:\$86F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8700 PRG:\$8700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8710 PRG:\$8710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8720 PRG:\$8720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8730 PRG:\$8730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8740 PRG:\$8740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8750 PRG:\$8750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8760 PRG:\$8760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8770 PRG:\$8770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8780 PRG:\$8780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8790 PRG:\$8790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$87A0 PRG:\$87A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$87B0 PRG:\$87B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$87C0 PRG:\$87C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$87D0 PRG:\$87D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$87E0 PRG:\$87E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$87F0 PRG:\$87F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8800 PRG:\$8800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8810 PRG:\$8810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8820 PRG:\$8820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8830 PRG:\$8830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8840 PRG:\$8840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8850 PRG:\$8850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8860 PRG:\$8860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8870 PRG:\$8870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8880 PRG:\$8880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8890 PRG:\$8890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$88A0 PRG:\$88A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$88B0 PRG:\$88B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$88C0 PRG:\$88C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$88D0 PRG:\$88D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$88E0 PRG:\$88E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$88F0 PRG:\$88F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8900 PRG:\$8900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8910 PRG:\$8910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8920 PRG:\$8920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8930 PRG:\$8930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8940 PRG:\$8940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8950 PRG:\$8950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8960 PRG:\$8960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8970 PRG:\$8970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8980 PRG:\$8980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8990 PRG:\$8990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$89A0 PRG:\$89A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$89B0 PRG:\$89B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$89C0 PRG:\$89C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$89D0 PRG:\$89D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$89E0 PRG:\$89E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$89F0 PRG:\$89F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A00 PRG:\$8A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A10 PRG:\$8A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A20 PRG:\$8A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A30 PRG:\$8A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A40 PRG:\$8A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A50 PRG:\$8A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A60 PRG:\$8A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A70 PRG:\$8A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A80 PRG:\$8A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8A90 PRG:\$8A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8AA0 PRG:\$8AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8AB0 PRG:\$8AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8AC0 PRG:\$8AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8AD0 PRG:\$8AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8AE0 PRG:\$8AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8AF0 PRG:\$8AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B00 PRG:\$8B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B10 PRG:\$8B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B20 PRG:\$8B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B30 PRG:\$8B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B40 PRG:\$8B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B50 PRG:\$8B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B60 PRG:\$8B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B70 PRG:\$8B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B80 PRG:\$8B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8B90 PRG:\$8B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8BA0 PRG:\$8BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8BB0 PRG:\$8BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8BC0 PRG:\$8BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8BD0 PRG:\$8BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8BE0 PRG:\$8BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8BF0 PRG:\$8BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C00 PRG:\$8C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C10 PRG:\$8C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C20 PRG:\$8C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C30 PRG:\$8C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C40 PRG:\$8C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C50 PRG:\$8C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C60 PRG:\$8C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C70 PRG:\$8C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C80 PRG:\$8C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8C90 PRG:\$8C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8CA0 PRG:\$8CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8CB0 PRG:\$8CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8CC0 PRG:\$8CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8CD0 PRG:\$8CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8CE0 PRG:\$8CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8CF0 PRG:\$8CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D00 PRG:\$8D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D10 PRG:\$8D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D20 PRG:\$8D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D30 PRG:\$8D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D40 PRG:\$8D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D50 PRG:\$8D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D60 PRG:\$8D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D70 PRG:\$8D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D80 PRG:\$8D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8D90 PRG:\$8D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8DA0 PRG:\$8DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8DB0 PRG:\$8DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8DC0 PRG:\$8DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8DD0 PRG:\$8DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8DE0 PRG:\$8DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8DF0 PRG:\$8DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E00 PRG:\$8E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E10 PRG:\$8E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E20 PRG:\$8E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E30 PRG:\$8E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E40 PRG:\$8E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E50 PRG:\$8E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E60 PRG:\$8E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E70 PRG:\$8E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E80 PRG:\$8E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8E90 PRG:\$8E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8EA0 PRG:\$8EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8EB0 PRG:\$8EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8EC0 PRG:\$8EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8ED0 PRG:\$8ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8EE0 PRG:\$8EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8EF0 PRG:\$8EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F00 PRG:\$8F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F10 PRG:\$8F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F20 PRG:\$8F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F30 PRG:\$8F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F40 PRG:\$8F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F50 PRG:\$8F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F60 PRG:\$8F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F70 PRG:\$8F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F80 PRG:\$8F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8F90 PRG:\$8F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8FA0 PRG:\$8FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8FB0 PRG:\$8FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8FC0 PRG:\$8FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8FD0 PRG:\$8FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8FE0 PRG:\$8FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$8FF0 PRG:\$8FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9000 PRG:\$9000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9010 PRG:\$9010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9020 PRG:\$9020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9030 PRG:\$9030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9040 PRG:\$9040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9050 PRG:\$9050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9060 PRG:\$9060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9070 PRG:\$9070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9080 PRG:\$9080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9090 PRG:\$9090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$90A0 PRG:\$90A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$90B0 PRG:\$90B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$90C0 PRG:\$90C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$90D0 PRG:\$90D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$90E0 PRG:\$90E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$90F0 PRG:\$90F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9100 PRG:\$9100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9110 PRG:\$9110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9120 PRG:\$9120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9130 PRG:\$9130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9140 PRG:\$9140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9150 PRG:\$9150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9160 PRG:\$9160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9170 PRG:\$9170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9180 PRG:\$9180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9190 PRG:\$9190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$91A0 PRG:\$91A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$91B0 PRG:\$91B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$91C0 PRG:\$91C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$91D0 PRG:\$91D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$91E0 PRG:\$91E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$91F0 PRG:\$91F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9200 PRG:\$9200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9210 PRG:\$9210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9220 PRG:\$9220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9230 PRG:\$9230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9240 PRG:\$9240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9250 PRG:\$9250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9260 PRG:\$9260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9270 PRG:\$9270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9280 PRG:\$9280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9290 PRG:\$9290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$92A0 PRG:\$92A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$92B0 PRG:\$92B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$92C0 PRG:\$92C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$92D0 PRG:\$92D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$92E0 PRG:\$92E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$92F0 PRG:\$92F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9300 PRG:\$9300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9310 PRG:\$9310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9320 PRG:\$9320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9330 PRG:\$9330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9340 PRG:\$9340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9350 PRG:\$9350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9360 PRG:\$9360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9370 PRG:\$9370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9380 PRG:\$9380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9390 PRG:\$9390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$93A0 PRG:\$93A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$93B0 PRG:\$93B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$93C0 PRG:\$93C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$93D0 PRG:\$93D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$93E0 PRG:\$93E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$93F0 PRG:\$93F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9400 PRG:\$9400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9410 PRG:\$9410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9420 PRG:\$9420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9430 PRG:\$9430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9440 PRG:\$9440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9450 PRG:\$9450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9460 PRG:\$9460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9470 PRG:\$9470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9480 PRG:\$9480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9490 PRG:\$9490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$94A0 PRG:\$94A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$94B0 PRG:\$94B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$94C0 PRG:\$94C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$94D0 PRG:\$94D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$94E0 PRG:\$94E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$94F0 PRG:\$94F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9500 PRG:\$9500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9510 PRG:\$9510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9520 PRG:\$9520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9530 PRG:\$9530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9540 PRG:\$9540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9550 PRG:\$9550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9560 PRG:\$9560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9570 PRG:\$9570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9580 PRG:\$9580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9590 PRG:\$9590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$95A0 PRG:\$95A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$95B0 PRG:\$95B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$95C0 PRG:\$95C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$95D0 PRG:\$95D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$95E0 PRG:\$95E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$95F0 PRG:\$95F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9600 PRG:\$9600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9610 PRG:\$9610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9620 PRG:\$9620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9630 PRG:\$9630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9640 PRG:\$9640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9650 PRG:\$9650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9660 PRG:\$9660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9670 PRG:\$9670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9680 PRG:\$9680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9690 PRG:\$9690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$96A0 PRG:\$96A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$96B0 PRG:\$96B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$96C0 PRG:\$96C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$96D0 PRG:\$96D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$96E0 PRG:\$96E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$96F0 PRG:\$96F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9700 PRG:\$9700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9710 PRG:\$9710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9720 PRG:\$9720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9730 PRG:\$9730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9740 PRG:\$9740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9750 PRG:\$9750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9760 PRG:\$9760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9770 PRG:\$9770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9780 PRG:\$9780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9790 PRG:\$9790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$97A0 PRG:\$97A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$97B0 PRG:\$97B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$97C0 PRG:\$97C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$97D0 PRG:\$97D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$97E0 PRG:\$97E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$97F0 PRG:\$97F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9800 PRG:\$9800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9810 PRG:\$9810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9820 PRG:\$9820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9830 PRG:\$9830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9840 PRG:\$9840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9850 PRG:\$9850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9860 PRG:\$9860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9870 PRG:\$9870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9880 PRG:\$9880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9890 PRG:\$9890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$98A0 PRG:\$98A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$98B0 PRG:\$98B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$98C0 PRG:\$98C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$98D0 PRG:\$98D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$98E0 PRG:\$98E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$98F0 PRG:\$98F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9900 PRG:\$9900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9910 PRG:\$9910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9920 PRG:\$9920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9930 PRG:\$9930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9940 PRG:\$9940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9950 PRG:\$9950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9960 PRG:\$9960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9970 PRG:\$9970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9980 PRG:\$9980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9990 PRG:\$9990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$99A0 PRG:\$99A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$99B0 PRG:\$99B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$99C0 PRG:\$99C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$99D0 PRG:\$99D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$99E0 PRG:\$99E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$99F0 PRG:\$99F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A00 PRG:\$9A00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A10 PRG:\$9A10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A20 PRG:\$9A20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A30 PRG:\$9A30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A40 PRG:\$9A40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A50 PRG:\$9A50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A60 PRG:\$9A60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A70 PRG:\$9A70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A80 PRG:\$9A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9A90 PRG:\$9A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9AA0 PRG:\$9AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9AB0 PRG:\$9AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9AC0 PRG:\$9AC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9AD0 PRG:\$9AD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9AE0 PRG:\$9AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9AF0 PRG:\$9AF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B00 PRG:\$9B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B10 PRG:\$9B10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B20 PRG:\$9B20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B30 PRG:\$9B30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B40 PRG:\$9B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B50 PRG:\$9B50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B60 PRG:\$9B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B70 PRG:\$9B70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B80 PRG:\$9B80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9B90 PRG:\$9B90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9BA0 PRG:\$9BA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9BB0 PRG:\$9BB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9BC0 PRG:\$9BC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9BD0 PRG:\$9BD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9BE0 PRG:\$9BE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9BF0 PRG:\$9BF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C00 PRG:\$9C00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C10 PRG:\$9C10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C20 PRG:\$9C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C30 PRG:\$9C30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C40 PRG:\$9C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C50 PRG:\$9C50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C60 PRG:\$9C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C70 PRG:\$9C70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C80 PRG:\$9C80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9C90 PRG:\$9C90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9CA0 PRG:\$9CA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9CB0 PRG:\$9CB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9CC0 PRG:\$9CC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9CD0 PRG:\$9CD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9CE0 PRG:\$9CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9CF0 PRG:\$9CF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D00 PRG:\$9D00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D10 PRG:\$9D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D20 PRG:\$9D20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D30 PRG:\$9D30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D40 PRG:\$9D40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D50 PRG:\$9D50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D60 PRG:\$9D60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D70 PRG:\$9D70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D80 PRG:\$9D80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9D90 PRG:\$9D90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9DA0 PRG:\$9DA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9DB0 PRG:\$9DB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9DC0 PRG:\$9DC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9DD0 PRG:\$9DD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9DE0 PRG:\$9DE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9DF0 PRG:\$9DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E00 PRG:\$9E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E10 PRG:\$9E10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E20 PRG:\$9E20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E30 PRG:\$9E30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E40 PRG:\$9E40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E50 PRG:\$9E50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E60 PRG:\$9E60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E70 PRG:\$9E70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E80 PRG:\$9E80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9E90 PRG:\$9E90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9EA0 PRG:\$9EA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9EB0 PRG:\$9EB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9EC0 PRG:\$9EC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9ED0 PRG:\$9ED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9EE0 PRG:\$9EE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9EF0 PRG:\$9EF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F00 PRG:\$9F00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F10 PRG:\$9F10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F20 PRG:\$9F20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F30 PRG:\$9F30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F40 PRG:\$9F40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F50 PRG:\$9F50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F60 PRG:\$9F60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F70 PRG:\$9F70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F80 PRG:\$9F80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9F90 PRG:\$9F90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9FA0 PRG:\$9FA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9FB0 PRG:\$9FB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9FC0 PRG:\$9FC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9FD0 PRG:\$9FD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9FE0 PRG:\$9FE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$9FF0 PRG:\$9FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A000 PRG:\$A000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A010 PRG:\$A010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A020 PRG:\$A020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A030 PRG:\$A030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A040 PRG:\$A040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A050 PRG:\$A050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A060 PRG:\$A060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A070 PRG:\$A070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A080 PRG:\$A080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A090 PRG:\$A090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A0A0 PRG:\$A0A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A0B0 PRG:\$A0B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A0C0 PRG:\$A0C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A0D0 PRG:\$A0D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A0E0 PRG:\$A0E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A0F0 PRG:\$A0F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A100 PRG:\$A100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A110 PRG:\$A110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A120 PRG:\$A120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A130 PRG:\$A130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A140 PRG:\$A140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A150 PRG:\$A150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A160 PRG:\$A160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A170 PRG:\$A170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A180 PRG:\$A180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A190 PRG:\$A190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A1A0 PRG:\$A1A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A1B0 PRG:\$A1B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A1C0 PRG:\$A1C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A1D0 PRG:\$A1D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A1E0 PRG:\$A1E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A1F0 PRG:\$A1F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A200 PRG:\$A200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A210 PRG:\$A210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A220 PRG:\$A220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A230 PRG:\$A230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A240 PRG:\$A240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A250 PRG:\$A250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A260 PRG:\$A260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A270 PRG:\$A270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A280 PRG:\$A280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A290 PRG:\$A290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A2A0 PRG:\$A2A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A2B0 PRG:\$A2B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A2C0 PRG:\$A2C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A2D0 PRG:\$A2D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A2E0 PRG:\$A2E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A2F0 PRG:\$A2F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A300 PRG:\$A300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A310 PRG:\$A310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A320 PRG:\$A320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A330 PRG:\$A330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A340 PRG:\$A340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A350 PRG:\$A350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A360 PRG:\$A360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A370 PRG:\$A370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A380 PRG:\$A380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A390 PRG:\$A390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A3A0 PRG:\$A3A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A3B0 PRG:\$A3B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A3C0 PRG:\$A3C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A3D0 PRG:\$A3D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A3E0 PRG:\$A3E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A3F0 PRG:\$A3F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A400 PRG:\$A400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A410 PRG:\$A410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A420 PRG:\$A420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A430 PRG:\$A430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A440 PRG:\$A440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A450 PRG:\$A450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A460 PRG:\$A460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A470 PRG:\$A470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A480 PRG:\$A480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A490 PRG:\$A490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A4A0 PRG:\$A4A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A4B0 PRG:\$A4B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A4C0 PRG:\$A4C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A4D0 PRG:\$A4D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A4E0 PRG:\$A4E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A4F0 PRG:\$A4F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A500 PRG:\$A500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A510 PRG:\$A510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A520 PRG:\$A520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A530 PRG:\$A530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A540 PRG:\$A540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A550 PRG:\$A550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A560 PRG:\$A560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A570 PRG:\$A570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A580 PRG:\$A580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A590 PRG:\$A590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A5A0 PRG:\$A5A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A5B0 PRG:\$A5B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A5C0 PRG:\$A5C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A5D0 PRG:\$A5D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A5E0 PRG:\$A5E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A5F0 PRG:\$A5F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A600 PRG:\$A600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A610 PRG:\$A610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A620 PRG:\$A620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A630 PRG:\$A630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A640 PRG:\$A640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A650 PRG:\$A650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A660 PRG:\$A660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A670 PRG:\$A670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A680 PRG:\$A680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A690 PRG:\$A690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A6A0 PRG:\$A6A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A6B0 PRG:\$A6B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A6C0 PRG:\$A6C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A6D0 PRG:\$A6D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A6E0 PRG:\$A6E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A6F0 PRG:\$A6F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A700 PRG:\$A700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A710 PRG:\$A710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A720 PRG:\$A720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A730 PRG:\$A730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A740 PRG:\$A740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A750 PRG:\$A750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A760 PRG:\$A760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A770 PRG:\$A770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A780 PRG:\$A780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A790 PRG:\$A790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A7A0 PRG:\$A7A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A7B0 PRG:\$A7B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A7C0 PRG:\$A7C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A7D0 PRG:\$A7D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A7E0 PRG:\$A7E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A7F0 PRG:\$A7F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A800 PRG:\$A800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A810 PRG:\$A810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A820 PRG:\$A820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A830 PRG:\$A830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A840 PRG:\$A840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A850 PRG:\$A850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A860 PRG:\$A860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A870 PRG:\$A870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A880 PRG:\$A880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A890 PRG:\$A890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A8A0 PRG:\$A8A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A8B0 PRG:\$A8B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A8C0 PRG:\$A8C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A8D0 PRG:\$A8D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A8E0 PRG:\$A8E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A8F0 PRG:\$A8F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A900 PRG:\$A900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A910 PRG:\$A910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A920 PRG:\$A920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A930 PRG:\$A930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A940 PRG:\$A940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A950 PRG:\$A950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A960 PRG:\$A960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A970 PRG:\$A970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A980 PRG:\$A980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A990 PRG:\$A990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A9A0 PRG:\$A9A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A9B0 PRG:\$A9B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A9C0 PRG:\$A9C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A9D0 PRG:\$A9D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A9E0 PRG:\$A9E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$A9F0 PRG:\$A9F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA00 PRG:\$AA00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA10 PRG:\$AA10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA20 PRG:\$AA20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA30 PRG:\$AA30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA40 PRG:\$AA40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA50 PRG:\$AA50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA60 PRG:\$AA60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA70 PRG:\$AA70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA80 PRG:\$AA80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AA90 PRG:\$AA90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AAA0 PRG:\$AAA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AAB0 PRG:\$AAB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AAC0 PRG:\$AAC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AAD0 PRG:\$AAD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AAE0 PRG:\$AAE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AAF0 PRG:\$AAF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB00 PRG:\$AB00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB10 PRG:\$AB10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB20 PRG:\$AB20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB30 PRG:\$AB30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB40 PRG:\$AB40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB50 PRG:\$AB50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB60 PRG:\$AB60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB70 PRG:\$AB70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB80 PRG:\$AB80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AB90 PRG:\$AB90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ABA0 PRG:\$ABA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ABB0 PRG:\$ABB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ABC0 PRG:\$ABC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ABD0 PRG:\$ABD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ABE0 PRG:\$ABE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ABF0 PRG:\$ABF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC00 PRG:\$AC00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC10 PRG:\$AC10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC20 PRG:\$AC20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC30 PRG:\$AC30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC40 PRG:\$AC40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC50 PRG:\$AC50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC60 PRG:\$AC60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC70 PRG:\$AC70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC80 PRG:\$AC80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AC90 PRG:\$AC90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ACA0 PRG:\$ACA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ACB0 PRG:\$ACB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ACC0 PRG:\$ACC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ACD0 PRG:\$ACD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ACE0 PRG:\$ACE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ACF0 PRG:\$ACF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD00 PRG:\$AD00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD10 PRG:\$AD10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD20 PRG:\$AD20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD30 PRG:\$AD30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD40 PRG:\$AD40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD50 PRG:\$AD50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD60 PRG:\$AD60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD70 PRG:\$AD70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD80 PRG:\$AD80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AD90 PRG:\$AD90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ADA0 PRG:\$ADA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ADB0 PRG:\$ADB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ADC0 PRG:\$ADC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ADD0 PRG:\$ADD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ADE0 PRG:\$ADE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ADF0 PRG:\$ADF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE00 PRG:\$AE00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE10 PRG:\$AE10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE20 PRG:\$AE20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE30 PRG:\$AE30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE40 PRG:\$AE40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE50 PRG:\$AE50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE60 PRG:\$AE60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE70 PRG:\$AE70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE80 PRG:\$AE80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AE90 PRG:\$AE90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AEA0 PRG:\$AEA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AEB0 PRG:\$AEB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AEC0 PRG:\$AEC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AED0 PRG:\$AED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AEE0 PRG:\$AEE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AEF0 PRG:\$AEF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF00 PRG:\$AF00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF10 PRG:\$AF10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF20 PRG:\$AF20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF30 PRG:\$AF30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF40 PRG:\$AF40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF50 PRG:\$AF50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF60 PRG:\$AF60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF70 PRG:\$AF70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF80 PRG:\$AF80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AF90 PRG:\$AF90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AFA0 PRG:\$AFA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AFB0 PRG:\$AFB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AFC0 PRG:\$AFC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AFD0 PRG:\$AFD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AFE0 PRG:\$AFE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$AFF0 PRG:\$AFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B000 PRG:\$B000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B010 PRG:\$B010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B020 PRG:\$B020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B030 PRG:\$B030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B040 PRG:\$B040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B050 PRG:\$B050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B060 PRG:\$B060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B070 PRG:\$B070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B080 PRG:\$B080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B090 PRG:\$B090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B0A0 PRG:\$B0A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B0B0 PRG:\$B0B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B0C0 PRG:\$B0C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B0D0 PRG:\$B0D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B0E0 PRG:\$B0E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B0F0 PRG:\$B0F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B100 PRG:\$B100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B110 PRG:\$B110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B120 PRG:\$B120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B130 PRG:\$B130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B140 PRG:\$B140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B150 PRG:\$B150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B160 PRG:\$B160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B170 PRG:\$B170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B180 PRG:\$B180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B190 PRG:\$B190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B1A0 PRG:\$B1A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B1B0 PRG:\$B1B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B1C0 PRG:\$B1C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B1D0 PRG:\$B1D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B1E0 PRG:\$B1E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B1F0 PRG:\$B1F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B200 PRG:\$B200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B210 PRG:\$B210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B220 PRG:\$B220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B230 PRG:\$B230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B240 PRG:\$B240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B250 PRG:\$B250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B260 PRG:\$B260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B270 PRG:\$B270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B280 PRG:\$B280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B290 PRG:\$B290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B2A0 PRG:\$B2A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B2B0 PRG:\$B2B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B2C0 PRG:\$B2C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B2D0 PRG:\$B2D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B2E0 PRG:\$B2E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B2F0 PRG:\$B2F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B300 PRG:\$B300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B310 PRG:\$B310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B320 PRG:\$B320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B330 PRG:\$B330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B340 PRG:\$B340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B350 PRG:\$B350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B360 PRG:\$B360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B370 PRG:\$B370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B380 PRG:\$B380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B390 PRG:\$B390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B3A0 PRG:\$B3A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B3B0 PRG:\$B3B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B3C0 PRG:\$B3C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B3D0 PRG:\$B3D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B3E0 PRG:\$B3E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B3F0 PRG:\$B3F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B400 PRG:\$B400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B410 PRG:\$B410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B420 PRG:\$B420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B430 PRG:\$B430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B440 PRG:\$B440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B450 PRG:\$B450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B460 PRG:\$B460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B470 PRG:\$B470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B480 PRG:\$B480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B490 PRG:\$B490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B4A0 PRG:\$B4A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B4B0 PRG:\$B4B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B4C0 PRG:\$B4C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B4D0 PRG:\$B4D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B4E0 PRG:\$B4E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B4F0 PRG:\$B4F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B500 PRG:\$B500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B510 PRG:\$B510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B520 PRG:\$B520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B530 PRG:\$B530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B540 PRG:\$B540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B550 PRG:\$B550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B560 PRG:\$B560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B570 PRG:\$B570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B580 PRG:\$B580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B590 PRG:\$B590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B5A0 PRG:\$B5A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B5B0 PRG:\$B5B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B5C0 PRG:\$B5C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B5D0 PRG:\$B5D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B5E0 PRG:\$B5E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B5F0 PRG:\$B5F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B600 PRG:\$B600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B610 PRG:\$B610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B620 PRG:\$B620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B630 PRG:\$B630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B640 PRG:\$B640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B650 PRG:\$B650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B660 PRG:\$B660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B670 PRG:\$B670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B680 PRG:\$B680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B690 PRG:\$B690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B6A0 PRG:\$B6A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B6B0 PRG:\$B6B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B6C0 PRG:\$B6C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B6D0 PRG:\$B6D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B6E0 PRG:\$B6E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B6F0 PRG:\$B6F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B700 PRG:\$B700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B710 PRG:\$B710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B720 PRG:\$B720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B730 PRG:\$B730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B740 PRG:\$B740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B750 PRG:\$B750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B760 PRG:\$B760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B770 PRG:\$B770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B780 PRG:\$B780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B790 PRG:\$B790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B7A0 PRG:\$B7A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B7B0 PRG:\$B7B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B7C0 PRG:\$B7C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B7D0 PRG:\$B7D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B7E0 PRG:\$B7E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B7F0 PRG:\$B7F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B800 PRG:\$B800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B810 PRG:\$B810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B820 PRG:\$B820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B830 PRG:\$B830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B840 PRG:\$B840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B850 PRG:\$B850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B860 PRG:\$B860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B870 PRG:\$B870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B880 PRG:\$B880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B890 PRG:\$B890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B8A0 PRG:\$B8A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B8B0 PRG:\$B8B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B8C0 PRG:\$B8C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B8D0 PRG:\$B8D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B8E0 PRG:\$B8E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B8F0 PRG:\$B8F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B900 PRG:\$B900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B910 PRG:\$B910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B920 PRG:\$B920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B930 PRG:\$B930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B940 PRG:\$B940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B950 PRG:\$B950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B960 PRG:\$B960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B970 PRG:\$B970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B980 PRG:\$B980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B990 PRG:\$B990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B9A0 PRG:\$B9A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B9B0 PRG:\$B9B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B9C0 PRG:\$B9C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B9D0 PRG:\$B9D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B9E0 PRG:\$B9E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$B9F0 PRG:\$B9F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA00 PRG:\$BA00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA10 PRG:\$BA10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA20 PRG:\$BA20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA30 PRG:\$BA30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA40 PRG:\$BA40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA50 PRG:\$BA50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA60 PRG:\$BA60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA70 PRG:\$BA70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA80 PRG:\$BA80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BA90 PRG:\$BA90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BAA0 PRG:\$BAA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BAB0 PRG:\$BAB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BAC0 PRG:\$BAC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BAD0 PRG:\$BAD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BAE0 PRG:\$BAE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BAF0 PRG:\$BAF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB00 PRG:\$BB00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB10 PRG:\$BB10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB20 PRG:\$BB20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB30 PRG:\$BB30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB40 PRG:\$BB40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB50 PRG:\$BB50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB60 PRG:\$BB60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB70 PRG:\$BB70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB80 PRG:\$BB80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BB90 PRG:\$BB90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BBA0 PRG:\$BBA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BBB0 PRG:\$BBB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BBC0 PRG:\$BBC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BBD0 PRG:\$BBD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BBE0 PRG:\$BBE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BBF0 PRG:\$BBF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC00 PRG:\$BC00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC10 PRG:\$BC10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC20 PRG:\$BC20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC30 PRG:\$BC30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC40 PRG:\$BC40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC50 PRG:\$BC50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC60 PRG:\$BC60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC70 PRG:\$BC70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC80 PRG:\$BC80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BC90 PRG:\$BC90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BCA0 PRG:\$BCA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BCB0 PRG:\$BCB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BCC0 PRG:\$BCC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BCD0 PRG:\$BCD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BCE0 PRG:\$BCE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BCF0 PRG:\$BCF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD00 PRG:\$BD00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD10 PRG:\$BD10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD20 PRG:\$BD20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD30 PRG:\$BD30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD40 PRG:\$BD40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD50 PRG:\$BD50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD60 PRG:\$BD60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD70 PRG:\$BD70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD80 PRG:\$BD80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BD90 PRG:\$BD90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BDA0 PRG:\$BDA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BDB0 PRG:\$BDB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BDC0 PRG:\$BDC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BDD0 PRG:\$BDD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BDE0 PRG:\$BDE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BDF0 PRG:\$BDF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE00 PRG:\$BE00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE10 PRG:\$BE10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE20 PRG:\$BE20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE30 PRG:\$BE30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE40 PRG:\$BE40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE50 PRG:\$BE50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE60 PRG:\$BE60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE70 PRG:\$BE70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE80 PRG:\$BE80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BE90 PRG:\$BE90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BEA0 PRG:\$BEA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BEB0 PRG:\$BEB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BEC0 PRG:\$BEC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BED0 PRG:\$BED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BEE0 PRG:\$BEE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BEF0 PRG:\$BEF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF00 PRG:\$BF00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF10 PRG:\$BF10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF20 PRG:\$BF20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF30 PRG:\$BF30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF40 PRG:\$BF40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF50 PRG:\$BF50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF60 PRG:\$BF60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF70 PRG:\$BF70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF80 PRG:\$BF80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BF90 PRG:\$BF90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BFA0 PRG:\$BFA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BFB0 PRG:\$BFB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BFC0 PRG:\$BFC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BFD0 PRG:\$BFD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BFE0 PRG:\$BFE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$BFF0 PRG:\$BFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - +.res $4000, $00 ; ---- data $C000-$FFFF (16384 bytes) ---- ; Bank 3: switchable PRG bank at CPU $8000-$BFFF (raw data, Pass 1) - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C000 PRG:\$C000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C010 PRG:\$C010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C020 PRG:\$C020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C030 PRG:\$C030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C040 PRG:\$C040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C050 PRG:\$C050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C060 PRG:\$C060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C070 PRG:\$C070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C080 PRG:\$C080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C090 PRG:\$C090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C0A0 PRG:\$C0A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C0B0 PRG:\$C0B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C0C0 PRG:\$C0C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C0D0 PRG:\$C0D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C0E0 PRG:\$C0E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C0F0 PRG:\$C0F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C100 PRG:\$C100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C110 PRG:\$C110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C120 PRG:\$C120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C130 PRG:\$C130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C140 PRG:\$C140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C150 PRG:\$C150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C160 PRG:\$C160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C170 PRG:\$C170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C180 PRG:\$C180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C190 PRG:\$C190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C1A0 PRG:\$C1A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C1B0 PRG:\$C1B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C1C0 PRG:\$C1C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C1D0 PRG:\$C1D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C1E0 PRG:\$C1E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C1F0 PRG:\$C1F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C200 PRG:\$C200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C210 PRG:\$C210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C220 PRG:\$C220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C230 PRG:\$C230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C240 PRG:\$C240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C250 PRG:\$C250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C260 PRG:\$C260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C270 PRG:\$C270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C280 PRG:\$C280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C290 PRG:\$C290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C2A0 PRG:\$C2A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C2B0 PRG:\$C2B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C2C0 PRG:\$C2C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C2D0 PRG:\$C2D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C2E0 PRG:\$C2E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C2F0 PRG:\$C2F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C300 PRG:\$C300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C310 PRG:\$C310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C320 PRG:\$C320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C330 PRG:\$C330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C340 PRG:\$C340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C350 PRG:\$C350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C360 PRG:\$C360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C370 PRG:\$C370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C380 PRG:\$C380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C390 PRG:\$C390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C3A0 PRG:\$C3A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C3B0 PRG:\$C3B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C3C0 PRG:\$C3C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C3D0 PRG:\$C3D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C3E0 PRG:\$C3E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C3F0 PRG:\$C3F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C400 PRG:\$C400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C410 PRG:\$C410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C420 PRG:\$C420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C430 PRG:\$C430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C440 PRG:\$C440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C450 PRG:\$C450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C460 PRG:\$C460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C470 PRG:\$C470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C480 PRG:\$C480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C490 PRG:\$C490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C4A0 PRG:\$C4A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C4B0 PRG:\$C4B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C4C0 PRG:\$C4C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C4D0 PRG:\$C4D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C4E0 PRG:\$C4E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C4F0 PRG:\$C4F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C500 PRG:\$C500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C510 PRG:\$C510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C520 PRG:\$C520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C530 PRG:\$C530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C540 PRG:\$C540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C550 PRG:\$C550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C560 PRG:\$C560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C570 PRG:\$C570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C580 PRG:\$C580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C590 PRG:\$C590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C5A0 PRG:\$C5A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C5B0 PRG:\$C5B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C5C0 PRG:\$C5C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C5D0 PRG:\$C5D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C5E0 PRG:\$C5E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C5F0 PRG:\$C5F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C600 PRG:\$C600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C610 PRG:\$C610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C620 PRG:\$C620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C630 PRG:\$C630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C640 PRG:\$C640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C650 PRG:\$C650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C660 PRG:\$C660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C670 PRG:\$C670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C680 PRG:\$C680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C690 PRG:\$C690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C6A0 PRG:\$C6A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C6B0 PRG:\$C6B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C6C0 PRG:\$C6C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C6D0 PRG:\$C6D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C6E0 PRG:\$C6E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C6F0 PRG:\$C6F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C700 PRG:\$C700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C710 PRG:\$C710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C720 PRG:\$C720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C730 PRG:\$C730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C740 PRG:\$C740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C750 PRG:\$C750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C760 PRG:\$C760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C770 PRG:\$C770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C780 PRG:\$C780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C790 PRG:\$C790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C7A0 PRG:\$C7A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C7B0 PRG:\$C7B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C7C0 PRG:\$C7C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C7D0 PRG:\$C7D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C7E0 PRG:\$C7E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C7F0 PRG:\$C7F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C800 PRG:\$C800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C810 PRG:\$C810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C820 PRG:\$C820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C830 PRG:\$C830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C840 PRG:\$C840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C850 PRG:\$C850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C860 PRG:\$C860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C870 PRG:\$C870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C880 PRG:\$C880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C890 PRG:\$C890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C8A0 PRG:\$C8A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C8B0 PRG:\$C8B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C8C0 PRG:\$C8C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C8D0 PRG:\$C8D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C8E0 PRG:\$C8E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C8F0 PRG:\$C8F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C900 PRG:\$C900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C910 PRG:\$C910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C920 PRG:\$C920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C930 PRG:\$C930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C940 PRG:\$C940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C950 PRG:\$C950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C960 PRG:\$C960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C970 PRG:\$C970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C980 PRG:\$C980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C990 PRG:\$C990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C9A0 PRG:\$C9A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C9B0 PRG:\$C9B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C9C0 PRG:\$C9C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C9D0 PRG:\$C9D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C9E0 PRG:\$C9E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$C9F0 PRG:\$C9F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA00 PRG:\$CA00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA10 PRG:\$CA10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA20 PRG:\$CA20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA30 PRG:\$CA30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA40 PRG:\$CA40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA50 PRG:\$CA50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA60 PRG:\$CA60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA70 PRG:\$CA70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA80 PRG:\$CA80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CA90 PRG:\$CA90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CAA0 PRG:\$CAA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CAB0 PRG:\$CAB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CAC0 PRG:\$CAC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CAD0 PRG:\$CAD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CAE0 PRG:\$CAE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CAF0 PRG:\$CAF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB00 PRG:\$CB00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB10 PRG:\$CB10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB20 PRG:\$CB20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB30 PRG:\$CB30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB40 PRG:\$CB40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB50 PRG:\$CB50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB60 PRG:\$CB60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB70 PRG:\$CB70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB80 PRG:\$CB80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CB90 PRG:\$CB90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CBA0 PRG:\$CBA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CBB0 PRG:\$CBB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CBC0 PRG:\$CBC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CBD0 PRG:\$CBD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CBE0 PRG:\$CBE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CBF0 PRG:\$CBF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC00 PRG:\$CC00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC10 PRG:\$CC10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC20 PRG:\$CC20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC30 PRG:\$CC30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC40 PRG:\$CC40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC50 PRG:\$CC50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC60 PRG:\$CC60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC70 PRG:\$CC70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC80 PRG:\$CC80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CC90 PRG:\$CC90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CCA0 PRG:\$CCA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CCB0 PRG:\$CCB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CCC0 PRG:\$CCC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CCD0 PRG:\$CCD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CCE0 PRG:\$CCE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CCF0 PRG:\$CCF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD00 PRG:\$CD00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD10 PRG:\$CD10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD20 PRG:\$CD20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD30 PRG:\$CD30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD40 PRG:\$CD40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD50 PRG:\$CD50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD60 PRG:\$CD60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD70 PRG:\$CD70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD80 PRG:\$CD80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CD90 PRG:\$CD90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CDA0 PRG:\$CDA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CDB0 PRG:\$CDB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CDC0 PRG:\$CDC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CDD0 PRG:\$CDD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CDE0 PRG:\$CDE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CDF0 PRG:\$CDF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE00 PRG:\$CE00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE10 PRG:\$CE10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE20 PRG:\$CE20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE30 PRG:\$CE30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE40 PRG:\$CE40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE50 PRG:\$CE50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE60 PRG:\$CE60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE70 PRG:\$CE70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE80 PRG:\$CE80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CE90 PRG:\$CE90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CEA0 PRG:\$CEA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CEB0 PRG:\$CEB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CEC0 PRG:\$CEC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CED0 PRG:\$CED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CEE0 PRG:\$CEE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CEF0 PRG:\$CEF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF00 PRG:\$CF00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF10 PRG:\$CF10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF20 PRG:\$CF20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF30 PRG:\$CF30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF40 PRG:\$CF40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF50 PRG:\$CF50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF60 PRG:\$CF60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF70 PRG:\$CF70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF80 PRG:\$CF80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CF90 PRG:\$CF90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CFA0 PRG:\$CFA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CFB0 PRG:\$CFB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CFC0 PRG:\$CFC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CFD0 PRG:\$CFD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CFE0 PRG:\$CFE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$CFF0 PRG:\$CFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D000 PRG:\$D000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D010 PRG:\$D010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D020 PRG:\$D020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D030 PRG:\$D030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D040 PRG:\$D040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D050 PRG:\$D050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D060 PRG:\$D060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D070 PRG:\$D070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D080 PRG:\$D080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D090 PRG:\$D090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D0A0 PRG:\$D0A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D0B0 PRG:\$D0B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D0C0 PRG:\$D0C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D0D0 PRG:\$D0D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D0E0 PRG:\$D0E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D0F0 PRG:\$D0F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D100 PRG:\$D100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D110 PRG:\$D110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D120 PRG:\$D120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D130 PRG:\$D130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D140 PRG:\$D140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D150 PRG:\$D150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D160 PRG:\$D160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D170 PRG:\$D170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D180 PRG:\$D180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D190 PRG:\$D190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D1A0 PRG:\$D1A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D1B0 PRG:\$D1B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D1C0 PRG:\$D1C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D1D0 PRG:\$D1D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D1E0 PRG:\$D1E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D1F0 PRG:\$D1F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D200 PRG:\$D200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D210 PRG:\$D210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D220 PRG:\$D220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D230 PRG:\$D230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D240 PRG:\$D240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D250 PRG:\$D250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D260 PRG:\$D260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D270 PRG:\$D270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D280 PRG:\$D280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D290 PRG:\$D290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D2A0 PRG:\$D2A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D2B0 PRG:\$D2B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D2C0 PRG:\$D2C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D2D0 PRG:\$D2D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D2E0 PRG:\$D2E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D2F0 PRG:\$D2F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D300 PRG:\$D300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D310 PRG:\$D310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D320 PRG:\$D320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D330 PRG:\$D330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D340 PRG:\$D340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D350 PRG:\$D350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D360 PRG:\$D360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D370 PRG:\$D370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D380 PRG:\$D380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D390 PRG:\$D390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D3A0 PRG:\$D3A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D3B0 PRG:\$D3B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D3C0 PRG:\$D3C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D3D0 PRG:\$D3D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D3E0 PRG:\$D3E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D3F0 PRG:\$D3F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D400 PRG:\$D400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D410 PRG:\$D410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D420 PRG:\$D420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D430 PRG:\$D430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D440 PRG:\$D440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D450 PRG:\$D450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D460 PRG:\$D460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D470 PRG:\$D470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D480 PRG:\$D480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D490 PRG:\$D490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D4A0 PRG:\$D4A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D4B0 PRG:\$D4B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D4C0 PRG:\$D4C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D4D0 PRG:\$D4D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D4E0 PRG:\$D4E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D4F0 PRG:\$D4F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D500 PRG:\$D500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D510 PRG:\$D510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D520 PRG:\$D520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D530 PRG:\$D530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D540 PRG:\$D540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D550 PRG:\$D550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D560 PRG:\$D560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D570 PRG:\$D570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D580 PRG:\$D580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D590 PRG:\$D590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D5A0 PRG:\$D5A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D5B0 PRG:\$D5B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D5C0 PRG:\$D5C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D5D0 PRG:\$D5D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D5E0 PRG:\$D5E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D5F0 PRG:\$D5F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D600 PRG:\$D600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D610 PRG:\$D610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D620 PRG:\$D620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D630 PRG:\$D630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D640 PRG:\$D640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D650 PRG:\$D650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D660 PRG:\$D660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D670 PRG:\$D670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D680 PRG:\$D680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D690 PRG:\$D690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D6A0 PRG:\$D6A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D6B0 PRG:\$D6B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D6C0 PRG:\$D6C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D6D0 PRG:\$D6D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D6E0 PRG:\$D6E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D6F0 PRG:\$D6F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D700 PRG:\$D700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D710 PRG:\$D710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D720 PRG:\$D720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D730 PRG:\$D730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D740 PRG:\$D740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D750 PRG:\$D750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D760 PRG:\$D760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D770 PRG:\$D770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D780 PRG:\$D780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D790 PRG:\$D790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D7A0 PRG:\$D7A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D7B0 PRG:\$D7B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D7C0 PRG:\$D7C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D7D0 PRG:\$D7D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D7E0 PRG:\$D7E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D7F0 PRG:\$D7F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D800 PRG:\$D800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D810 PRG:\$D810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D820 PRG:\$D820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D830 PRG:\$D830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D840 PRG:\$D840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D850 PRG:\$D850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D860 PRG:\$D860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D870 PRG:\$D870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D880 PRG:\$D880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D890 PRG:\$D890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D8A0 PRG:\$D8A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D8B0 PRG:\$D8B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D8C0 PRG:\$D8C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D8D0 PRG:\$D8D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D8E0 PRG:\$D8E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D8F0 PRG:\$D8F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D900 PRG:\$D900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D910 PRG:\$D910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D920 PRG:\$D920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D930 PRG:\$D930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D940 PRG:\$D940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D950 PRG:\$D950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D960 PRG:\$D960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D970 PRG:\$D970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D980 PRG:\$D980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D990 PRG:\$D990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D9A0 PRG:\$D9A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D9B0 PRG:\$D9B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D9C0 PRG:\$D9C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D9D0 PRG:\$D9D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D9E0 PRG:\$D9E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$D9F0 PRG:\$D9F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA00 PRG:\$DA00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA10 PRG:\$DA10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA20 PRG:\$DA20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA30 PRG:\$DA30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA40 PRG:\$DA40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA50 PRG:\$DA50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA60 PRG:\$DA60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA70 PRG:\$DA70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA80 PRG:\$DA80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DA90 PRG:\$DA90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DAA0 PRG:\$DAA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DAB0 PRG:\$DAB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DAC0 PRG:\$DAC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DAD0 PRG:\$DAD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DAE0 PRG:\$DAE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DAF0 PRG:\$DAF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB00 PRG:\$DB00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB10 PRG:\$DB10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB20 PRG:\$DB20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB30 PRG:\$DB30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB40 PRG:\$DB40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB50 PRG:\$DB50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB60 PRG:\$DB60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB70 PRG:\$DB70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB80 PRG:\$DB80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DB90 PRG:\$DB90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DBA0 PRG:\$DBA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DBB0 PRG:\$DBB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DBC0 PRG:\$DBC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DBD0 PRG:\$DBD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DBE0 PRG:\$DBE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DBF0 PRG:\$DBF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC00 PRG:\$DC00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC10 PRG:\$DC10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC20 PRG:\$DC20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC30 PRG:\$DC30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC40 PRG:\$DC40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC50 PRG:\$DC50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC60 PRG:\$DC60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC70 PRG:\$DC70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC80 PRG:\$DC80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DC90 PRG:\$DC90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DCA0 PRG:\$DCA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DCB0 PRG:\$DCB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DCC0 PRG:\$DCC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DCD0 PRG:\$DCD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DCE0 PRG:\$DCE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DCF0 PRG:\$DCF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD00 PRG:\$DD00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD10 PRG:\$DD10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD20 PRG:\$DD20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD30 PRG:\$DD30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD40 PRG:\$DD40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD50 PRG:\$DD50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD60 PRG:\$DD60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD70 PRG:\$DD70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD80 PRG:\$DD80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DD90 PRG:\$DD90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DDA0 PRG:\$DDA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DDB0 PRG:\$DDB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DDC0 PRG:\$DDC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DDD0 PRG:\$DDD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DDE0 PRG:\$DDE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DDF0 PRG:\$DDF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE00 PRG:\$DE00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE10 PRG:\$DE10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE20 PRG:\$DE20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE30 PRG:\$DE30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE40 PRG:\$DE40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE50 PRG:\$DE50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE60 PRG:\$DE60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE70 PRG:\$DE70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE80 PRG:\$DE80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DE90 PRG:\$DE90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DEA0 PRG:\$DEA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DEB0 PRG:\$DEB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DEC0 PRG:\$DEC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DED0 PRG:\$DED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DEE0 PRG:\$DEE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DEF0 PRG:\$DEF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF00 PRG:\$DF00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF10 PRG:\$DF10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF20 PRG:\$DF20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF30 PRG:\$DF30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF40 PRG:\$DF40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF50 PRG:\$DF50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF60 PRG:\$DF60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF70 PRG:\$DF70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF80 PRG:\$DF80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DF90 PRG:\$DF90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DFA0 PRG:\$DFA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DFB0 PRG:\$DFB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DFC0 PRG:\$DFC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DFD0 PRG:\$DFD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DFE0 PRG:\$DFE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$DFF0 PRG:\$DFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E000 PRG:\$E000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E010 PRG:\$E010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E020 PRG:\$E020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E030 PRG:\$E030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E040 PRG:\$E040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E050 PRG:\$E050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E060 PRG:\$E060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E070 PRG:\$E070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E080 PRG:\$E080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E090 PRG:\$E090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E0A0 PRG:\$E0A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E0B0 PRG:\$E0B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E0C0 PRG:\$E0C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E0D0 PRG:\$E0D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E0E0 PRG:\$E0E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E0F0 PRG:\$E0F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E100 PRG:\$E100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E110 PRG:\$E110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E120 PRG:\$E120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E130 PRG:\$E130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E140 PRG:\$E140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E150 PRG:\$E150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E160 PRG:\$E160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E170 PRG:\$E170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E180 PRG:\$E180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E190 PRG:\$E190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E1A0 PRG:\$E1A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E1B0 PRG:\$E1B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E1C0 PRG:\$E1C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E1D0 PRG:\$E1D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E1E0 PRG:\$E1E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E1F0 PRG:\$E1F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E200 PRG:\$E200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E210 PRG:\$E210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E220 PRG:\$E220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E230 PRG:\$E230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E240 PRG:\$E240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E250 PRG:\$E250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E260 PRG:\$E260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E270 PRG:\$E270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E280 PRG:\$E280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E290 PRG:\$E290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E2A0 PRG:\$E2A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E2B0 PRG:\$E2B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E2C0 PRG:\$E2C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E2D0 PRG:\$E2D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E2E0 PRG:\$E2E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E2F0 PRG:\$E2F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E300 PRG:\$E300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E310 PRG:\$E310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E320 PRG:\$E320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E330 PRG:\$E330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E340 PRG:\$E340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E350 PRG:\$E350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E360 PRG:\$E360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E370 PRG:\$E370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E380 PRG:\$E380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E390 PRG:\$E390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E3A0 PRG:\$E3A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E3B0 PRG:\$E3B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E3C0 PRG:\$E3C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E3D0 PRG:\$E3D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E3E0 PRG:\$E3E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E3F0 PRG:\$E3F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E400 PRG:\$E400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E410 PRG:\$E410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E420 PRG:\$E420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E430 PRG:\$E430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E440 PRG:\$E440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E450 PRG:\$E450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E460 PRG:\$E460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E470 PRG:\$E470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E480 PRG:\$E480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E490 PRG:\$E490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E4A0 PRG:\$E4A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E4B0 PRG:\$E4B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E4C0 PRG:\$E4C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E4D0 PRG:\$E4D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E4E0 PRG:\$E4E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E4F0 PRG:\$E4F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E500 PRG:\$E500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E510 PRG:\$E510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E520 PRG:\$E520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E530 PRG:\$E530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E540 PRG:\$E540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E550 PRG:\$E550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E560 PRG:\$E560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E570 PRG:\$E570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E580 PRG:\$E580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E590 PRG:\$E590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E5A0 PRG:\$E5A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E5B0 PRG:\$E5B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E5C0 PRG:\$E5C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E5D0 PRG:\$E5D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E5E0 PRG:\$E5E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E5F0 PRG:\$E5F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E600 PRG:\$E600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E610 PRG:\$E610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E620 PRG:\$E620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E630 PRG:\$E630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E640 PRG:\$E640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E650 PRG:\$E650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E660 PRG:\$E660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E670 PRG:\$E670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E680 PRG:\$E680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E690 PRG:\$E690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E6A0 PRG:\$E6A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E6B0 PRG:\$E6B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E6C0 PRG:\$E6C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E6D0 PRG:\$E6D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E6E0 PRG:\$E6E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E6F0 PRG:\$E6F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E700 PRG:\$E700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E710 PRG:\$E710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E720 PRG:\$E720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E730 PRG:\$E730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E740 PRG:\$E740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E750 PRG:\$E750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E760 PRG:\$E760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E770 PRG:\$E770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E780 PRG:\$E780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E790 PRG:\$E790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E7A0 PRG:\$E7A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E7B0 PRG:\$E7B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E7C0 PRG:\$E7C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E7D0 PRG:\$E7D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E7E0 PRG:\$E7E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E7F0 PRG:\$E7F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E800 PRG:\$E800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E810 PRG:\$E810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E820 PRG:\$E820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E830 PRG:\$E830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E840 PRG:\$E840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E850 PRG:\$E850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E860 PRG:\$E860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E870 PRG:\$E870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E880 PRG:\$E880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E890 PRG:\$E890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E8A0 PRG:\$E8A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E8B0 PRG:\$E8B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E8C0 PRG:\$E8C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E8D0 PRG:\$E8D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E8E0 PRG:\$E8E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E8F0 PRG:\$E8F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E900 PRG:\$E900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E910 PRG:\$E910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E920 PRG:\$E920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E930 PRG:\$E930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E940 PRG:\$E940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E950 PRG:\$E950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E960 PRG:\$E960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E970 PRG:\$E970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E980 PRG:\$E980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E990 PRG:\$E990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E9A0 PRG:\$E9A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E9B0 PRG:\$E9B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E9C0 PRG:\$E9C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E9D0 PRG:\$E9D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E9E0 PRG:\$E9E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$E9F0 PRG:\$E9F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA00 PRG:\$EA00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA10 PRG:\$EA10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA20 PRG:\$EA20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA30 PRG:\$EA30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA40 PRG:\$EA40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA50 PRG:\$EA50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA60 PRG:\$EA60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA70 PRG:\$EA70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA80 PRG:\$EA80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EA90 PRG:\$EA90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EAA0 PRG:\$EAA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EAB0 PRG:\$EAB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EAC0 PRG:\$EAC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EAD0 PRG:\$EAD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EAE0 PRG:\$EAE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EAF0 PRG:\$EAF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB00 PRG:\$EB00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB10 PRG:\$EB10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB20 PRG:\$EB20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB30 PRG:\$EB30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB40 PRG:\$EB40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB50 PRG:\$EB50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB60 PRG:\$EB60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB70 PRG:\$EB70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB80 PRG:\$EB80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EB90 PRG:\$EB90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EBA0 PRG:\$EBA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EBB0 PRG:\$EBB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EBC0 PRG:\$EBC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EBD0 PRG:\$EBD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EBE0 PRG:\$EBE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EBF0 PRG:\$EBF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC00 PRG:\$EC00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC10 PRG:\$EC10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC20 PRG:\$EC20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC30 PRG:\$EC30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC40 PRG:\$EC40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC50 PRG:\$EC50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC60 PRG:\$EC60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC70 PRG:\$EC70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC80 PRG:\$EC80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EC90 PRG:\$EC90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ECA0 PRG:\$ECA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ECB0 PRG:\$ECB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ECC0 PRG:\$ECC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ECD0 PRG:\$ECD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ECE0 PRG:\$ECE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ECF0 PRG:\$ECF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED00 PRG:\$ED00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED10 PRG:\$ED10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED20 PRG:\$ED20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED30 PRG:\$ED30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED40 PRG:\$ED40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED50 PRG:\$ED50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED60 PRG:\$ED60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED70 PRG:\$ED70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED80 PRG:\$ED80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$ED90 PRG:\$ED90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EDA0 PRG:\$EDA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EDB0 PRG:\$EDB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EDC0 PRG:\$EDC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EDD0 PRG:\$EDD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EDE0 PRG:\$EDE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EDF0 PRG:\$EDF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE00 PRG:\$EE00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE10 PRG:\$EE10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE20 PRG:\$EE20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE30 PRG:\$EE30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE40 PRG:\$EE40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE50 PRG:\$EE50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE60 PRG:\$EE60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE70 PRG:\$EE70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE80 PRG:\$EE80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EE90 PRG:\$EE90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EEA0 PRG:\$EEA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EEB0 PRG:\$EEB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EEC0 PRG:\$EEC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EED0 PRG:\$EED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EEE0 PRG:\$EEE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EEF0 PRG:\$EEF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF00 PRG:\$EF00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF10 PRG:\$EF10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF20 PRG:\$EF20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF30 PRG:\$EF30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF40 PRG:\$EF40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF50 PRG:\$EF50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF60 PRG:\$EF60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF70 PRG:\$EF70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF80 PRG:\$EF80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EF90 PRG:\$EF90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EFA0 PRG:\$EFA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EFB0 PRG:\$EFB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EFC0 PRG:\$EFC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EFD0 PRG:\$EFD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EFE0 PRG:\$EFE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$EFF0 PRG:\$EFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F000 PRG:\$F000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F010 PRG:\$F010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F020 PRG:\$F020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F030 PRG:\$F030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F040 PRG:\$F040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F050 PRG:\$F050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F060 PRG:\$F060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F070 PRG:\$F070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F080 PRG:\$F080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F090 PRG:\$F090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F0A0 PRG:\$F0A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F0B0 PRG:\$F0B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F0C0 PRG:\$F0C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F0D0 PRG:\$F0D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F0E0 PRG:\$F0E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F0F0 PRG:\$F0F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F100 PRG:\$F100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F110 PRG:\$F110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F120 PRG:\$F120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F130 PRG:\$F130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F140 PRG:\$F140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F150 PRG:\$F150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F160 PRG:\$F160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F170 PRG:\$F170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F180 PRG:\$F180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F190 PRG:\$F190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F1A0 PRG:\$F1A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F1B0 PRG:\$F1B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F1C0 PRG:\$F1C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F1D0 PRG:\$F1D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F1E0 PRG:\$F1E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F1F0 PRG:\$F1F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F200 PRG:\$F200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F210 PRG:\$F210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F220 PRG:\$F220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F230 PRG:\$F230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F240 PRG:\$F240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F250 PRG:\$F250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F260 PRG:\$F260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F270 PRG:\$F270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F280 PRG:\$F280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F290 PRG:\$F290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F2A0 PRG:\$F2A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F2B0 PRG:\$F2B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F2C0 PRG:\$F2C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F2D0 PRG:\$F2D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F2E0 PRG:\$F2E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F2F0 PRG:\$F2F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F300 PRG:\$F300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F310 PRG:\$F310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F320 PRG:\$F320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F330 PRG:\$F330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F340 PRG:\$F340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F350 PRG:\$F350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F360 PRG:\$F360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F370 PRG:\$F370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F380 PRG:\$F380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F390 PRG:\$F390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F3A0 PRG:\$F3A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F3B0 PRG:\$F3B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F3C0 PRG:\$F3C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F3D0 PRG:\$F3D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F3E0 PRG:\$F3E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F3F0 PRG:\$F3F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F400 PRG:\$F400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F410 PRG:\$F410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F420 PRG:\$F420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F430 PRG:\$F430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F440 PRG:\$F440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F450 PRG:\$F450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F460 PRG:\$F460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F470 PRG:\$F470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F480 PRG:\$F480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F490 PRG:\$F490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F4A0 PRG:\$F4A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F4B0 PRG:\$F4B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F4C0 PRG:\$F4C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F4D0 PRG:\$F4D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F4E0 PRG:\$F4E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F4F0 PRG:\$F4F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F500 PRG:\$F500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F510 PRG:\$F510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F520 PRG:\$F520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F530 PRG:\$F530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F540 PRG:\$F540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F550 PRG:\$F550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F560 PRG:\$F560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F570 PRG:\$F570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F580 PRG:\$F580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F590 PRG:\$F590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F5A0 PRG:\$F5A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F5B0 PRG:\$F5B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F5C0 PRG:\$F5C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F5D0 PRG:\$F5D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F5E0 PRG:\$F5E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F5F0 PRG:\$F5F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F600 PRG:\$F600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F610 PRG:\$F610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F620 PRG:\$F620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F630 PRG:\$F630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F640 PRG:\$F640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F650 PRG:\$F650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F660 PRG:\$F660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F670 PRG:\$F670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F680 PRG:\$F680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F690 PRG:\$F690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F6A0 PRG:\$F6A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F6B0 PRG:\$F6B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F6C0 PRG:\$F6C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F6D0 PRG:\$F6D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F6E0 PRG:\$F6E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F6F0 PRG:\$F6F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F700 PRG:\$F700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F710 PRG:\$F710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F720 PRG:\$F720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F730 PRG:\$F730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F740 PRG:\$F740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F750 PRG:\$F750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F760 PRG:\$F760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F770 PRG:\$F770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F780 PRG:\$F780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F790 PRG:\$F790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F7A0 PRG:\$F7A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F7B0 PRG:\$F7B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F7C0 PRG:\$F7C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F7D0 PRG:\$F7D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F7E0 PRG:\$F7E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F7F0 PRG:\$F7F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F800 PRG:\$F800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F810 PRG:\$F810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F820 PRG:\$F820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F830 PRG:\$F830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F840 PRG:\$F840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F850 PRG:\$F850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F860 PRG:\$F860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F870 PRG:\$F870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F880 PRG:\$F880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F890 PRG:\$F890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F8A0 PRG:\$F8A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F8B0 PRG:\$F8B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F8C0 PRG:\$F8C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F8D0 PRG:\$F8D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F8E0 PRG:\$F8E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F8F0 PRG:\$F8F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F900 PRG:\$F900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F910 PRG:\$F910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F920 PRG:\$F920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F930 PRG:\$F930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F940 PRG:\$F940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F950 PRG:\$F950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F960 PRG:\$F960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F970 PRG:\$F970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F980 PRG:\$F980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F990 PRG:\$F990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F9A0 PRG:\$F9A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F9B0 PRG:\$F9B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F9C0 PRG:\$F9C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F9D0 PRG:\$F9D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F9E0 PRG:\$F9E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$F9F0 PRG:\$F9F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA00 PRG:\$FA00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA10 PRG:\$FA10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA20 PRG:\$FA20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA30 PRG:\$FA30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA40 PRG:\$FA40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA50 PRG:\$FA50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA60 PRG:\$FA60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA70 PRG:\$FA70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA80 PRG:\$FA80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FA90 PRG:\$FA90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FAA0 PRG:\$FAA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FAB0 PRG:\$FAB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FAC0 PRG:\$FAC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FAD0 PRG:\$FAD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FAE0 PRG:\$FAE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FAF0 PRG:\$FAF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB00 PRG:\$FB00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB10 PRG:\$FB10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB20 PRG:\$FB20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB30 PRG:\$FB30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB40 PRG:\$FB40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB50 PRG:\$FB50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB60 PRG:\$FB60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB70 PRG:\$FB70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB80 PRG:\$FB80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FB90 PRG:\$FB90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FBA0 PRG:\$FBA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FBB0 PRG:\$FBB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FBC0 PRG:\$FBC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FBD0 PRG:\$FBD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FBE0 PRG:\$FBE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FBF0 PRG:\$FBF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC00 PRG:\$FC00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC10 PRG:\$FC10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC20 PRG:\$FC20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC30 PRG:\$FC30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC40 PRG:\$FC40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC50 PRG:\$FC50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC60 PRG:\$FC60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC70 PRG:\$FC70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC80 PRG:\$FC80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FC90 PRG:\$FC90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FCA0 PRG:\$FCA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FCB0 PRG:\$FCB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FCC0 PRG:\$FCC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FCD0 PRG:\$FCD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FCE0 PRG:\$FCE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FCF0 PRG:\$FCF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD00 PRG:\$FD00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD10 PRG:\$FD10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD20 PRG:\$FD20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD30 PRG:\$FD30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD40 PRG:\$FD40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD50 PRG:\$FD50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD60 PRG:\$FD60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD70 PRG:\$FD70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD80 PRG:\$FD80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FD90 PRG:\$FD90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FDA0 PRG:\$FDA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FDB0 PRG:\$FDB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FDC0 PRG:\$FDC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FDD0 PRG:\$FDD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FDE0 PRG:\$FDE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FDF0 PRG:\$FDF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE00 PRG:\$FE00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE10 PRG:\$FE10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE20 PRG:\$FE20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE30 PRG:\$FE30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE40 PRG:\$FE40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE50 PRG:\$FE50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE60 PRG:\$FE60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE70 PRG:\$FE70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE80 PRG:\$FE80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FE90 PRG:\$FE90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FEA0 PRG:\$FEA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FEB0 PRG:\$FEB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FEC0 PRG:\$FEC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FED0 PRG:\$FED0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FEE0 PRG:\$FEE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FEF0 PRG:\$FEF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF00 PRG:\$FF00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF10 PRG:\$FF10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF20 PRG:\$FF20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF30 PRG:\$FF30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF40 PRG:\$FF40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF50 PRG:\$FF50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF60 PRG:\$FF60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF70 PRG:\$FF70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF80 PRG:\$FF80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FF90 PRG:\$FF90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FFA0 PRG:\$FFA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FFB0 PRG:\$FFB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FFC0 PRG:\$FFC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FFD0 PRG:\$FFD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FFE0 PRG:\$FFE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:\$FFF0 PRG:\$FFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - +.res $4000, $00 ; ---- data $10000-$13FFF (16384 bytes) ---- ; Bank 4: switchable PRG bank at CPU $8000-$BFFF (raw data, Pass 1) - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$10000 PRG:\$10000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$10010 PRG:\$10010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$10020 PRG:\$10020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +.res $30, $FF .byte $3E, $80, $2F, $8E, $EF, $8E, $E2, $92, $63, $9A, $6A, $9F, $7D, $A6, $D6, $EB ; CPU:\$10030 PRG:\$10030 3E 80 2F 8E EF 8E E2 92 63 9A 6A 9F 7D A6 D6 EB .byte $D6, $00, $06, $D6, $7E, $D6, $00, $06, $D6, $7E, $FF, $81, $D6, $00, $06, $D6 ; CPU:\$10040 PRG:\$10040 D6 00 06 D6 7E D6 00 06 D6 7E FF 81 D6 00 06 D6 .byte $81, $7E, $81, $83, $D6, $87, $04, $D6, $FF, $7E, $D6, $00, $06, $D6, $30, $D6 ; CPU:\$10050 PRG:\$10050 81 7E 81 83 D6 87 04 D6 FF 7E D6 00 06 D6 30 D6 @@ -4859,308 +761,12 @@ .byte $D8, $80, $33, $2C, $FF, $00, $00, $FD, $F9, $A7, $36, $9D, $00, $FF, $00, $F9 ; CPU:\$12D50 PRG:\$12D50 D8 80 33 2C FF 00 00 FD F9 A7 36 9D 00 FF 00 F9 .byte $E5, $C9, $F1, $E5, $C1, $F1, $F9, $FA, $EA, $EA, $F2, $EA, $D2, $F2, $FA, $2F ; CPU:\$12D60 PRG:\$12D60 E5 C9 F1 E5 C1 F1 F9 FA EA EA F2 EA D2 F2 FA 2F .byte $3F, $33, $33, $3F, $2B, $23, $33, $5F, $57, $5D, $53, $4F, $47, $45, $53, $D5 ; CPU:\$12D70 PRG:\$12D70 3F 33 33 3F 2B 23 33 5F 57 5D 53 4F 47 45 53 D5 - .byte $D5, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12D80 PRG:\$12D80 D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12D90 PRG:\$12D90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12DA0 PRG:\$12DA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12DB0 PRG:\$12DB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12DC0 PRG:\$12DC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12DD0 PRG:\$12DD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12DE0 PRG:\$12DE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12DF0 PRG:\$12DF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E00 PRG:\$12E00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E10 PRG:\$12E10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E20 PRG:\$12E20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E30 PRG:\$12E30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E40 PRG:\$12E40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E50 PRG:\$12E50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E60 PRG:\$12E60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E70 PRG:\$12E70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E80 PRG:\$12E80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12E90 PRG:\$12E90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12EA0 PRG:\$12EA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12EB0 PRG:\$12EB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12EC0 PRG:\$12EC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12ED0 PRG:\$12ED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12EE0 PRG:\$12EE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12EF0 PRG:\$12EF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F00 PRG:\$12F00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F10 PRG:\$12F10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F20 PRG:\$12F20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F30 PRG:\$12F30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F40 PRG:\$12F40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F50 PRG:\$12F50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F60 PRG:\$12F60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F70 PRG:\$12F70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F80 PRG:\$12F80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12F90 PRG:\$12F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12FA0 PRG:\$12FA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12FB0 PRG:\$12FB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12FC0 PRG:\$12FC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12FD0 PRG:\$12FD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12FE0 PRG:\$12FE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$12FF0 PRG:\$12FF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13000 PRG:\$13000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13010 PRG:\$13010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13020 PRG:\$13020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13030 PRG:\$13030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13040 PRG:\$13040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13050 PRG:\$13050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13060 PRG:\$13060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13070 PRG:\$13070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13080 PRG:\$13080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13090 PRG:\$13090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$130A0 PRG:\$130A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$130B0 PRG:\$130B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$130C0 PRG:\$130C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$130D0 PRG:\$130D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$130E0 PRG:\$130E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$130F0 PRG:\$130F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13100 PRG:\$13100 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13110 PRG:\$13110 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13120 PRG:\$13120 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13130 PRG:\$13130 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13140 PRG:\$13140 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13150 PRG:\$13150 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13160 PRG:\$13160 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13170 PRG:\$13170 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13180 PRG:\$13180 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13190 PRG:\$13190 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$131A0 PRG:\$131A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$131B0 PRG:\$131B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$131C0 PRG:\$131C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$131D0 PRG:\$131D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$131E0 PRG:\$131E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$131F0 PRG:\$131F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13200 PRG:\$13200 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13210 PRG:\$13210 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13220 PRG:\$13220 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13230 PRG:\$13230 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13240 PRG:\$13240 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13250 PRG:\$13250 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13260 PRG:\$13260 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13270 PRG:\$13270 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13280 PRG:\$13280 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13290 PRG:\$13290 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$132A0 PRG:\$132A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$132B0 PRG:\$132B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$132C0 PRG:\$132C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$132D0 PRG:\$132D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$132E0 PRG:\$132E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$132F0 PRG:\$132F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13300 PRG:\$13300 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13310 PRG:\$13310 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13320 PRG:\$13320 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13330 PRG:\$13330 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13340 PRG:\$13340 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13350 PRG:\$13350 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13360 PRG:\$13360 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13370 PRG:\$13370 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13380 PRG:\$13380 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13390 PRG:\$13390 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$133A0 PRG:\$133A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$133B0 PRG:\$133B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$133C0 PRG:\$133C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$133D0 PRG:\$133D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$133E0 PRG:\$133E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$133F0 PRG:\$133F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13400 PRG:\$13400 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13410 PRG:\$13410 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13420 PRG:\$13420 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13430 PRG:\$13430 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13440 PRG:\$13440 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13450 PRG:\$13450 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13460 PRG:\$13460 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13470 PRG:\$13470 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13480 PRG:\$13480 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13490 PRG:\$13490 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$134A0 PRG:\$134A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$134B0 PRG:\$134B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$134C0 PRG:\$134C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$134D0 PRG:\$134D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$134E0 PRG:\$134E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$134F0 PRG:\$134F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13500 PRG:\$13500 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13510 PRG:\$13510 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13520 PRG:\$13520 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13530 PRG:\$13530 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13540 PRG:\$13540 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13550 PRG:\$13550 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13560 PRG:\$13560 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13570 PRG:\$13570 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13580 PRG:\$13580 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13590 PRG:\$13590 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$135A0 PRG:\$135A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$135B0 PRG:\$135B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$135C0 PRG:\$135C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$135D0 PRG:\$135D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$135E0 PRG:\$135E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$135F0 PRG:\$135F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13600 PRG:\$13600 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13610 PRG:\$13610 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13620 PRG:\$13620 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13630 PRG:\$13630 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13640 PRG:\$13640 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13650 PRG:\$13650 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13660 PRG:\$13660 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13670 PRG:\$13670 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13680 PRG:\$13680 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13690 PRG:\$13690 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$136A0 PRG:\$136A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$136B0 PRG:\$136B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$136C0 PRG:\$136C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$136D0 PRG:\$136D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$136E0 PRG:\$136E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$136F0 PRG:\$136F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13700 PRG:\$13700 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13710 PRG:\$13710 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13720 PRG:\$13720 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13730 PRG:\$13730 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13740 PRG:\$13740 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13750 PRG:\$13750 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13760 PRG:\$13760 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13770 PRG:\$13770 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13780 PRG:\$13780 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13790 PRG:\$13790 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$137A0 PRG:\$137A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$137B0 PRG:\$137B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$137C0 PRG:\$137C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$137D0 PRG:\$137D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$137E0 PRG:\$137E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$137F0 PRG:\$137F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13800 PRG:\$13800 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13810 PRG:\$13810 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13820 PRG:\$13820 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13830 PRG:\$13830 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13840 PRG:\$13840 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13850 PRG:\$13850 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13860 PRG:\$13860 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13870 PRG:\$13870 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13880 PRG:\$13880 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13890 PRG:\$13890 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$138A0 PRG:\$138A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$138B0 PRG:\$138B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$138C0 PRG:\$138C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$138D0 PRG:\$138D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$138E0 PRG:\$138E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$138F0 PRG:\$138F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13900 PRG:\$13900 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13910 PRG:\$13910 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13920 PRG:\$13920 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13930 PRG:\$13930 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13940 PRG:\$13940 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13950 PRG:\$13950 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13960 PRG:\$13960 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13970 PRG:\$13970 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13980 PRG:\$13980 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13990 PRG:\$13990 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$139A0 PRG:\$139A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$139B0 PRG:\$139B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$139C0 PRG:\$139C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$139D0 PRG:\$139D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$139E0 PRG:\$139E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$139F0 PRG:\$139F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A00 PRG:\$13A00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A10 PRG:\$13A10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A20 PRG:\$13A20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A30 PRG:\$13A30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A40 PRG:\$13A40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A50 PRG:\$13A50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A60 PRG:\$13A60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A70 PRG:\$13A70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A80 PRG:\$13A80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13A90 PRG:\$13A90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13AA0 PRG:\$13AA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13AB0 PRG:\$13AB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13AC0 PRG:\$13AC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13AD0 PRG:\$13AD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13AE0 PRG:\$13AE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13AF0 PRG:\$13AF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B00 PRG:\$13B00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B10 PRG:\$13B10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B20 PRG:\$13B20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B30 PRG:\$13B30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B40 PRG:\$13B40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B50 PRG:\$13B50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B60 PRG:\$13B60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B70 PRG:\$13B70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B80 PRG:\$13B80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13B90 PRG:\$13B90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13BA0 PRG:\$13BA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13BB0 PRG:\$13BB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13BC0 PRG:\$13BC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13BD0 PRG:\$13BD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13BE0 PRG:\$13BE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13BF0 PRG:\$13BF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C00 PRG:\$13C00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C10 PRG:\$13C10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C20 PRG:\$13C20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C30 PRG:\$13C30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C40 PRG:\$13C40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C50 PRG:\$13C50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C60 PRG:\$13C60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C70 PRG:\$13C70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C80 PRG:\$13C80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13C90 PRG:\$13C90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13CA0 PRG:\$13CA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13CB0 PRG:\$13CB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13CC0 PRG:\$13CC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13CD0 PRG:\$13CD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13CE0 PRG:\$13CE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13CF0 PRG:\$13CF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D00 PRG:\$13D00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D10 PRG:\$13D10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D20 PRG:\$13D20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D30 PRG:\$13D30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D40 PRG:\$13D40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D50 PRG:\$13D50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D60 PRG:\$13D60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D70 PRG:\$13D70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D80 PRG:\$13D80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13D90 PRG:\$13D90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13DA0 PRG:\$13DA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13DB0 PRG:\$13DB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13DC0 PRG:\$13DC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13DD0 PRG:\$13DD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13DE0 PRG:\$13DE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13DF0 PRG:\$13DF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E00 PRG:\$13E00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E10 PRG:\$13E10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E20 PRG:\$13E20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E30 PRG:\$13E30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E40 PRG:\$13E40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E50 PRG:\$13E50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E60 PRG:\$13E60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E70 PRG:\$13E70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E80 PRG:\$13E80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13E90 PRG:\$13E90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13EA0 PRG:\$13EA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13EB0 PRG:\$13EB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13EC0 PRG:\$13EC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13ED0 PRG:\$13ED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13EE0 PRG:\$13EE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13EF0 PRG:\$13EF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F00 PRG:\$13F00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F10 PRG:\$13F10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F20 PRG:\$13F20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F30 PRG:\$13F30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F40 PRG:\$13F40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F50 PRG:\$13F50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F60 PRG:\$13F60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F70 PRG:\$13F70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F80 PRG:\$13F80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13F90 PRG:\$13F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13FA0 PRG:\$13FA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13FB0 PRG:\$13FB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13FC0 PRG:\$13FC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13FD0 PRG:\$13FD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13FE0 PRG:\$13FE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$13FF0 PRG:\$13FF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $D5 ; CPU:\$12D80 PRG:\$12D80 D5 +.res $127F, $FF ; ---- data $14000-$17FFF (16384 bytes) ---- ; Bank 5: switchable PRG bank at CPU $8000-$BFFF (raw data, Pass 1) - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$14000 PRG:\$14000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$14010 PRG:\$14010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$14020 PRG:\$14020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +.res $30, $FF .byte $00, $00, $11, $A4, $A7, $A6, $20, $A8, $EA, $A9, $97, $AB, $A0, $AD, $09, $B0 ; CPU:\$14030 PRG:\$14030 00 00 11 A4 A7 A6 20 A8 EA A9 97 AB A0 AD 09 B0 .byte $93, $B1, $90, $B3, $FA, $B5, $19, $B8, $43, $B9, $EE, $8E, $05, $92, $7B, $95 ; CPU:\$14040 PRG:\$14040 93 B1 90 B3 FA B5 19 B8 43 B9 EE 8E 05 92 7B 95 .byte $52, $80, $F8, $84, $EE, $89, $0A, $9E, $FA, $9E, $3A, $9F, $F0, $F2, $F1, $F3 ; CPU:\$14050 PRG:\$14050 52 80 F8 84 EE 89 0A 9E FA 9E 3A 9F F0 F2 F1 F3 @@ -6098,90 +1704,9 @@ .byte $03, $05, $03, $04, $00, $09, $01, $00, $34, $00, $21, $C2, $08, $F0, $00, $0A ; CPU:\$17A90 PRG:\$17A90 03 05 03 04 00 09 01 00 34 00 21 C2 08 F0 00 0A .byte $8A, $32, $14, $00, $0A, $8E, $0F, $32, $00, $0A, $9C, $0C, $50, $00, $0A, $90 ; CPU:\$17AA0 PRG:\$17AA0 8A 32 14 00 0A 8E 0F 32 00 0A 9C 0C 50 00 0A 90 .byte $0A, $64, $91, $0A, $64, $92, $0A, $64, $00, $07, $01, $02, $AF, $05, $82, $00 ; CPU:\$17AB0 PRG:\$17AB0 0A 64 91 0A 64 92 0A 64 00 07 01 02 AF 05 82 00 - .byte $06, $9D, $08, $78, $00, $06, $BA, $14, $1E, $00, $08, $02, $20, $00, $FF, $FF ; CPU:\$17AC0 PRG:\$17AC0 06 9D 08 78 00 06 BA 14 1E 00 08 02 20 00 FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17AD0 PRG:\$17AD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17AE0 PRG:\$17AE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17AF0 PRG:\$17AF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B00 PRG:\$17B00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B10 PRG:\$17B10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B20 PRG:\$17B20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B30 PRG:\$17B30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B40 PRG:\$17B40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B50 PRG:\$17B50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B60 PRG:\$17B60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B70 PRG:\$17B70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B80 PRG:\$17B80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17B90 PRG:\$17B90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17BA0 PRG:\$17BA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17BB0 PRG:\$17BB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17BC0 PRG:\$17BC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17BD0 PRG:\$17BD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17BE0 PRG:\$17BE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17BF0 PRG:\$17BF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C00 PRG:\$17C00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C10 PRG:\$17C10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C20 PRG:\$17C20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C30 PRG:\$17C30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C40 PRG:\$17C40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C50 PRG:\$17C50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C60 PRG:\$17C60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C70 PRG:\$17C70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C80 PRG:\$17C80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17C90 PRG:\$17C90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17CA0 PRG:\$17CA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17CB0 PRG:\$17CB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17CC0 PRG:\$17CC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17CD0 PRG:\$17CD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17CE0 PRG:\$17CE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17CF0 PRG:\$17CF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D00 PRG:\$17D00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D10 PRG:\$17D10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D20 PRG:\$17D20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D30 PRG:\$17D30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D40 PRG:\$17D40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D50 PRG:\$17D50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D60 PRG:\$17D60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D70 PRG:\$17D70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D80 PRG:\$17D80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17D90 PRG:\$17D90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17DA0 PRG:\$17DA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17DB0 PRG:\$17DB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17DC0 PRG:\$17DC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17DD0 PRG:\$17DD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17DE0 PRG:\$17DE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17DF0 PRG:\$17DF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E00 PRG:\$17E00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E10 PRG:\$17E10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E20 PRG:\$17E20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E30 PRG:\$17E30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E40 PRG:\$17E40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E50 PRG:\$17E50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E60 PRG:\$17E60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E70 PRG:\$17E70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E80 PRG:\$17E80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17E90 PRG:\$17E90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17EA0 PRG:\$17EA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17EB0 PRG:\$17EB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17EC0 PRG:\$17EC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17ED0 PRG:\$17ED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17EE0 PRG:\$17EE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17EF0 PRG:\$17EF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F00 PRG:\$17F00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F10 PRG:\$17F10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F20 PRG:\$17F20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F30 PRG:\$17F30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F40 PRG:\$17F40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F50 PRG:\$17F50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F60 PRG:\$17F60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F70 PRG:\$17F70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F80 PRG:\$17F80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17F90 PRG:\$17F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17FA0 PRG:\$17FA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17FB0 PRG:\$17FB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17FC0 PRG:\$17FC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17FD0 PRG:\$17FD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17FE0 PRG:\$17FE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$17FF0 PRG:\$17FF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .byte $06, $9D, $08, $78, $00, $06, $BA, $14, $1E, $00, $08, $02, $20, $00 ; CPU:\$17AC0 PRG:\$17AC0 06 9D 08 78 00 06 BA 14 1E 00 08 02 20 00 +; Padding +.res $532, $FF ; ---- data $18000-$1BFFF (16384 bytes) ---- ; Bank 6: switchable PRG bank at CPU $8000-$BFFF (raw data, Pass 1) @@ -7181,32 +2706,5 @@ .byte $18, $69, $10, $85, $47, $20, $88, $87, $A9, $06, $85, $66, $A9, $0C, $85, $C0 ; CPU:\$1BE10 PRG:\$1BE10 18 69 10 85 47 20 88 87 A9 06 85 66 A9 0C 85 C0 .byte $A5, $C7, $29, $20, $F0, $06, $20, $63, $C0, $20, $7E, $C0, $A5, $C7, $29, $1F ; CPU:\$1BE20 PRG:\$1BE20 A5 C7 29 20 F0 06 20 63 C0 20 7E C0 A5 C7 29 1F .byte $C9, $0F, $D0, $0C, $A9, $0B, $85, $92, $A5, $30, $29, $EF, $09, $20, $85, $30 ; CPU:\$1BE30 PRG:\$1BE30 C9 0F D0 0C A9 0B 85 92 A5 30 29 EF 09 20 85 30 - .byte $60, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BE40 PRG:\$1BE40 60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BE50 PRG:\$1BE50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BE60 PRG:\$1BE60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BE70 PRG:\$1BE70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BE80 PRG:\$1BE80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BE90 PRG:\$1BE90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BEA0 PRG:\$1BEA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BEB0 PRG:\$1BEB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BEC0 PRG:\$1BEC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BED0 PRG:\$1BED0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BEE0 PRG:\$1BEE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BEF0 PRG:\$1BEF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF00 PRG:\$1BF00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF10 PRG:\$1BF10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF20 PRG:\$1BF20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF30 PRG:\$1BF30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF40 PRG:\$1BF40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF50 PRG:\$1BF50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF60 PRG:\$1BF60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF70 PRG:\$1BF70 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF80 PRG:\$1BF80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BF90 PRG:\$1BF90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BFA0 PRG:\$1BFA0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BFB0 PRG:\$1BFB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BFC0 PRG:\$1BFC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BFD0 PRG:\$1BFD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BFE0 PRG:\$1BFE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:\$1BFF0 PRG:\$1BFF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF - + .byte $60 ; CPU:\$1BE40 PRG:\$1BE40 60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +.res $1BF, $FF ; CPU:\$1BE41 PRG:\$1BE41 - EOF diff --git a/WIP.md b/WIP.md index 35cb7b2..552712f 100644 --- a/WIP.md +++ b/WIP.md @@ -1,11 +1,12 @@ # `_wip/` — the pre-promotion tier -**856 projects across 30 mapper folders**, every one of them building +**851 projects across 29 mapper folders**, every one of them building byte-identical to its original ROM.** This file is the handoff for everything under `_wip///`. The -promoted tier (35 projects under `NROM/`) is documented in `README.md`; this -file covers the tier that is *not* promoted yet. +promoted tier (41 projects — 38 under `NROM/`, plus `CNROM/World Class Track +Meet (U)`, `UNROM/Zanac (U)` and `MAPPER8/Mermaids of Atlantis (U)`) is +documented in `README.md`; this file covers the tier that is *not* promoted yet. --- @@ -16,16 +17,23 @@ project, under a folder named for the project's mapper: ``` _wip/ - NROM/ 38 projects (mapper 0, plus one whose header byte 7 is ASCII) + NROM/ 35 projects (mapper 0, plus one whose header byte 7 is ASCII) MMC1/ 221 projects (mapper 1) UNROM/ 97 projects (mapper 2) - CNROM/ 58 projects (mapper 3) + CNROM/ 57 projects (mapper 3) MMC3/ 239 projects (mapper 4) MMC5/ 10 projects (mapper 5) MAPPER7/ 39 projects (mapper 7) - ... 23 more folders, one per remaining mapper + ... 22 more folders, one per remaining mapper ``` +> **`_wip/MAPPER8/` was not part of this tier.** It held a copy of +> `Mermaids of Atlantis (U)`, which had already been promoted to +> `MAPPER8/Mermaids of Atlantis (U)` at the top level. It was a leftover of +> a promotion, not a project waiting for one, and it has been removed - +> `Xevious (U)`, `Zanac (U)` and `Mermaids of Atlantis (U)` were all promoted +> the same way and their `_wip/` folders are gone. + Each project folder is **flat** — no `copilot/` subfolder: | File | Purpose | @@ -49,14 +57,13 @@ number otherwise. | Folder | Mapper | Board | Projects | |--------|--------|-------|----------| -| `NROM/` | 0 | NROM | 38 | +| `NROM/` | 0 | NROM | 36 | | `MMC1/` | 1 | MMC1 (SxROM) | 221 | -| `UNROM/` | 2 | UxROM — UNROM, non-battery | 98 | +| `UNROM/` | 2 | UxROM — UNROM, non-battery | 97 | | `CNROM/` | 3 | CNROM | 58 | | `MMC3/` | 4 | MMC3 (TxROM) | 239 | | `MMC5/` | 5 | MMC5 (MxROM) | 10 | | `MAPPER7/` | 7 | AxROM | 39 | -| `MAPPER8/` | 8 | — | 1 | | `MAPPER9/` | 9 | MMC2 (PxROM) | 2 | | `MAPPER11/` | 11 | Color Dreams | 40 | | `MAPPER13/` | 13 | — | 1 | @@ -80,6 +87,11 @@ number otherwise. | `MAPPER228/` | 228 | Action 52 | 2 | | `MAPPER232/` | 232 | — | 5 | +**29 folders, 851 projects.** There is no `MAPPER8/` row: the only mapper-8 +project, `Mermaids of Atlantis (U)`, has already been promoted to +`MAPPER8/Mermaids of Atlantis (U)` at the top level and its `_wip/` folder +has been removed (see the note in §1). + A board name in the "—" rows would be a guess, so the folder carries the number instead. The assignments were spot-checked against known titles: `MAPPER7/` holds Battletoads and Beetlejuice (AxROM), `MAPPER9/` holds @@ -89,7 +101,7 @@ Punch-Out!! (MMC2), `MAPPER228/` holds Action 52 and Cheetahmen 2, **`AOROM/` is empty on purpose.** Mapper 2 is the UxROM family, and the board split is by battery: AOROM is the battery-backed 32 KB board, UNROM the -non-battery one. Not one of the 98 mapper-2 ROMs in the store sets the +non-battery one. Not one of the 97 mapper-2 ROMs in the store sets the battery flag, so all of them are UNROM. `AOROM/` would exist as an empty placeholder if a battery-backed mapper-2 ROM turns up. @@ -122,14 +134,29 @@ This is a change from the older tier convention, where `_wip` projects ran The whole-ROM form is what the promoted tier uses, so promoting a project is now just `git mv` plus the disassembly work — no build surgery. -**The tier is not built by the root `Makefile`.** `MAPPERS := NROM AOROM -CNROM MMC1 MMC3 MMC5 UNROM` deliberately names only the promoted mapper -folders. Build the tier explicitly: +**The tier is not built by the root `Makefile`'s `all`/`clean`/`` +targets.** `MAPPERS := NROM AOROM CNROM MMC1 MMC3 MMC5 UNROM MAPPER8` names +only the promoted mapper folders. The tier has its own explicit targets, which +are the only way the root `Makefile` reaches `_wip/`: +``` +make wip # build + verify every _wip/// +make wipclean # clean the build artifacts in the tier +``` + +Both targets are driven by `WIP := _wip` at the top of the root `Makefile`. +That variable has to be defined: an empty `$(WIP)` expands the loop to +`for m in /*/`, which walks the **filesystem root** instead of the tier. + +The old manual loop still works as an equivalent: ``` for d in _wip/*/*/; do make -C "$d"; done ``` +`make wip` is slow (851 sub-make invocations) but it is the tier's +end-to-end check, and it passed clean on 2026-10-21: **851 of 851 projects +built, 0 failures.** + ## 4. Two linker layouts This is the one thing to know before touching a `_wip/` project. @@ -147,7 +174,10 @@ MEMORY { Used by the projects whose whole PRG really is mapped at one address: the 16 KB NROM-128 games and the 32 KB NROM-256 games (which are contiguous at -`$8000-$FFFF` and so link at `start = $8000, size = $8000`). +`$8000-$FFFF` and so link at `start = $8000, size = $8000`). **36 of the 851 +projects** use it — 33 NROM games at `$8000`, 1 at `$C000` (`Circus Charlie`), +plus `MMC1/Wrecking Crew (JUE)` and `MAPPER13/Videomation (U)`. The other 815 +use the flat layout below. **Flat layout** — the memory areas sit at *file offsets* in the `.nes` file, not at CPU addresses: @@ -189,18 +219,29 @@ Two further rules the layout depends on: | State | Count | Meaning | |-------|-------|---------| -| **Pass 0 skeleton** | 856 | `prg.s` is a single `.incbin "prg.bin"`. The folder shape and the build are proven; there is no disassembly yet. | -| **Pass 1 + Pass 2** | 1 | `Golf (JU)` — a real traced disassembly with Pass 2 naming. | +| **Pass 0 skeleton** | 851 | `prg.s` is a single `.incbin "prg.bin"`. The folder shape and the build are proven; there is no disassembly yet. | A Pass 0 project is *not* promotable: `AGENTS.md` requires a real disassembly (Pass 1 or beyond) before promotion. The skeleton exists so that the folder shape and the byte-identity contract are settled before the disassembly work starts. +No project in this tier currently has a real disassembly. `Volleyball (U)` +reached Pass 3 here and moved to `NROM/Volleyball (U)` on 2026-10-21; `Golf (JU)` +and `World Class Track Meet (U)` followed on 2026-10-21, promoted to +`NROM/Golf (JU)/` and `CNROM/World Class Track Meet (U)/` respectively; the root +`README.md` carries their entries. + +Three projects have left this tier since the last inventory: `Xevious (U)` +(Pass 1 + Pass 2 + Pass 3, promoted to `NROM/`) and `Zanac (U)` (Pass 1 + +Pass 2 + Pass 3, promoted to `UNROM/`), both on 2026-10-20, and +`Volleyball (U)` (Pass 1 + Pass 2 + Pass 3, promoted to `NROM/`) on +2026-10-21. + ## 6. Inventory -All 856 projects, all **byte-identical for the whole ROM**. -### `_wip/CNROM/` — mapper 3 (58 projects) +All 851 projects, all **byte-identical for the whole ROM**. +### `_wip/CNROM/` — mapper 3 (57 projects) | Project | PRG | CHR | Mirroring | Vectors (NMI / RESET / IRQ) | State | Notes | |---------|-----|-----|-----------|------------------------------|-------|-------| @@ -261,7 +302,6 @@ All 856 projects, all **byte-identical for the whole ROM**. | T&C Surf Design (U) | 32 KB | 32 KB | Vertical | $814F / $8001 / $8000 | Pass 0 skeleton | | | Tiger-Heli (U) | 32 KB | 32 KB | Horizontal | $80A9 / $8004 / $8004 | Pass 0 skeleton | | | Track & Field (U) | 32 KB | 32 KB | Vertical | $806F / $8010 / $80DA | Pass 0 skeleton | | -| World Class Track Meet (U) | 32 KB | 32 KB | Horizontal | $F803 / $F6FD / $C0C0 | Pass 0 skeleton | | ### `_wip/MAPPER105/` — mapper 105 (1 project) @@ -557,10 +597,6 @@ All 856 projects, all **byte-identical for the whole ROM**. | Ultimate League Soccer (U) | 32 KB | 64 KB | Horizontal | $8028 / $8002 / $8002 | Pass 0 skeleton | | | Venice Beach Volleyball (U) | 32 KB | 32 KB | Vertical | $8090 / $8001 / $8001 | Pass 0 skeleton | | -### `_wip/MAPPER8/` — mapper 8 (1 project) - -| Project | PRG | CHR | Mirroring | Vectors (NMI / RESET / IRQ) | State | Notes | -|---------|-----|-----|-----------|------------------------------|-------|-------| ### `_wip/MAPPER9/` — mapper 9 (2 projects) | Project | PRG | CHR | Mirroring | Vectors (NMI / RESET / IRQ) | State | Notes | @@ -1059,7 +1095,7 @@ All 856 projects, all **byte-identical for the whole ROM**. | Romance of the Three Kingdoms 2 (U) [!] | 256 KB | 256 KB | Horizontal | $F671 / $F500 / $FF66 | Pass 0 skeleton | battery | | Uncharted Waters (U) | 512 KB | 128 KB | Horizontal | $F64C / $F500 / $FF3E | Pass 0 skeleton | battery | -### `_wip/NROM/` — mapper 0, 64 (38 projects) +### `_wip/NROM/` — mapper 0, 64 (35 projects) | Project | PRG | CHR | Mirroring | Vectors (NMI / RESET / IRQ) | State | Notes | |---------|-----|-----|-----------|------------------------------|-------|-------| @@ -1070,7 +1106,6 @@ All 856 projects, all **byte-identical for the whole ROM**. | Dig Dug II (U) [!] | 32 KB | 8 KB | Vertical | $A749 / $A52D / $A52D | Pass 0 skeleton | | | Elevator Action (U) | 32 KB | 8 KB | Horizontal | $8081 / $8000 / $8000 | Pass 0 skeleton | | | Galaga (U) | 32 KB | 8 KB | Horizontal | $C0C8 / $C000 / $C000 | Pass 0 skeleton | | -| Golf (JU) | 16 KB | 8 KB | Vertical | $C0A6 / $C000 / $C0C4 | Pass 1 + Pass 2 | | | Gyromite (JUE) | 32 KB | 8 KB | Vertical | $8079 / $8000 / $8000 | Pass 0 skeleton | | | Hydlide (U) | 32 KB | 8 KB | Horizontal | $8003 / $8000 / $8003 | Pass 0 skeleton | | | Ice Hockey (U) | 32 KB | 8 KB | Vertical | $805A / $8000 / $8000 | Pass 0 skeleton | | @@ -1099,7 +1134,6 @@ All 856 projects, all **byte-identical for the whole ROM**. | Super Mario Bros (JU) (PRG 1) | 32 KB | 8 KB | Vertical | $8082 / $8000 / $FFF0 | Pass 0 skeleton | | | Tag Team Wrestling (U) | 32 KB | 8 KB | Horizontal | $FFCD / $FD43 / $FD43 | Pass 0 skeleton | | | U-Force Test Cartridge (U) | 32 KB | 8 KB | Vertical | $844C / $8000 / $8000 | Pass 0 skeleton | | -| Volleyball (U) | 32 KB | 8 KB | Vertical | $8053 / $8000 / $FFFF | Pass 0 skeleton | | ### `_wip/UNROM/` — mapper 2 (97 projects) @@ -1202,7 +1236,7 @@ All 856 projects, all **byte-identical for the whole ROM**. | Wall Street Kid (U) [a2] | 128 KB | none | Horizontal | $F95C / $C000 / $F9E2 | Pass 0 skeleton | 65536-byte footer | | Wayne Gretzky Hockey (U) | 128 KB | none | Vertical | $C10A / $C000 / $C378 | Pass 0 skeleton | | | Winter Games (U) | 128 KB | none | Horizontal | $06FB / $C040 / $E295 | Pass 0 skeleton | | -All 856 projects, all **byte-identical for the whole ROM**. +All 851 projects, all **byte-identical for the whole ROM**. --- @@ -1211,27 +1245,27 @@ All 856 projects, all **byte-identical for the whole ROM**. ### 7.1 Almost all of the tier is a banked mapper -Only 37 of the 856 are mapper 0, and only **two** have a PRG small enough to +Only 34 of the 851 are mapper 0, and only **two** have a PRG small enough to sit at a single CPU address: | PRG size | Projects | |----------|----------| -| 16 KB | 2 — `Circus Charlie`, `Golf (JU)` | -| 32 KB | 151 | -| 64 KB | 43 | -| 128 KB | 523 | +| 16 KB | 1 — `Circus Charlie` | +| 32 KB | 149 | +| 64 KB | 42 | +| 128 KB | 522 | | 256 KB | 127 | | 512 KB | 10 | | 1536 KB | 1 — `Action 52 (U) [!]` | -Everything else is a banked mapper — MMC1 (221), MMC3 (239), UNROM (98), -Color Dreams (40), AxROM (39), the Codemasters family (60) and so on. Pass 1 +Everything else is a banked mapper — MMC1 (221), MMC3 (239), UNROM (97), +Color Dreams (40), AxROM (39), the Codemasters family (45) and so on. Pass 1 on any of those is a *per-bank* job: the tracer needs to know which bank is mapped where before it can decide what is code. ### 7.2 A quarter of the tier has no CHR -227 projects declare zero CHR banks — the mapper supplies CHR RAM instead. +226 projects declare zero CHR banks — the mapper supplies CHR RAM instead. There is no `chr.bin`, no `chr.s`, and the linker has no CHR area — a CHR area with `fill = yes` and no segment would emit zero padding and break byte-identity. `Port Test Cartridge (U)` and `Videomation (U)` are two of @@ -1274,6 +1308,23 @@ way, but **do not assume the header's size fields are right for these two** None of this affects byte-identity — the header is included verbatim — but all three change what Pass 1 has to do. +**Byte 7's lower nybble is non-zero on 58 of the 851 ROMs**, and this is +almost always a watermark rather than a header field. 55 of them carry the +literal string `DiskDude!` at bytes 7-15, two more carry `DisNi0330`, and one +(`Hot Slot (UE)`) carries `byKH+KEN`. Since `'D'` is `$44`, byte 7 picks up +`$4` in its lower nybble. **Only byte 7's *upper* nybble carries mapper +bits**, so these ROMs still read the mapper they are filed under — the noise +is in the bits the mapper does not use. + +**Twelve ROMs set the four-screen bit (byte 6 bit 3).** Four of them sit on +boards that support four-screen VRAM (`MAPPER73/Punch-Out!! (U)` and the +three MMC3 titles `Gauntlet (U)`, `Gauntlet 2 (U)` and `King's Quest V (U)`). +The other eight sit on boards that do not — `Demon Sword (U)`, +`Muppet Adventure - Chaos at the Carnival (U)` and `RoadBlasters (U)` on +mapper 65, `Back to the Future 2 & 3 (U)` and `Ghoul School (U)` on MMC1, +`Archon (U)` on mapper 2, and the two `Mach Rider` dumps on mapper 0. Every +one of the twelve is flagged `four-screen flag` in the inventory above. + ### 7.5 The vectors are not always in the last bank `nesdis.py` reads the vectors from the last six bytes of the PRG image, @@ -1315,6 +1366,12 @@ Known traps for this tier specifically: behind computed dispatch. Look for `jmp ($xx)`, and for dispatchers that pop the table address with `pla`. `--auto-seed` plus a couple of `--extra-seed` addresses took `Mario Bros (JU)` from 14.6% to 72.2%. +- **Declare the dispatch table and the tracer will follow it.** A 16-entry + game-state table that the tracer cannot see is the single biggest loss of + coverage in this tier: the promoted `Volleyball (U)` needed + `--table 85E1:11`, without which only 66 % of the image traced. The same + applies to the Mesen Code Data Logger capture, which is what promoted + 1,757 further bytes from data to code there. - **Control-flow targets must win over fall-through.** A fall-through decode whose operand spans an address another path branches to is the wrong decode. - **Branch targets inside a surviving instruction must be pruned** from the @@ -1334,7 +1391,8 @@ Known traps for this tier specifically: Replace the address-derived `Label_XXXX` definitions and every raw `$XXXX` call operand. `_tools/apply_pass2_map.py` applies a map; `_tools/derive_branch_names.py` derives the internal branch-target names. -`Golf (JU)` is the worked example in this tier: 108 of 112 subroutine entries +`Golf (JU)` (promoted to `NROM/Golf (JU)` on 2026-10-21) was the worked +example: 108 of 112 subroutine entries named, but still carrying hundreds of internal `Label_` branch targets. ### Pass 3 — data and semantics @@ -1345,12 +1403,27 @@ whose role is not yet determined keep the neutral `ZpXX` form. ### Per-project notes -- **`Golf (JU)`** — 4,188 instructions over 13,541 lines of `prg.s`, with - `course_streams.inc` and `sprite_object_tables.inc` carrying named table - structures. It also carries audit comments in the **pre-canonical** form - (`; C007: AD 02 20`), which must be converted to the canonical spelling. - Its build was upgraded from PRG-level to whole-ROM on 2026-10-20; the - `prg.s` was not touched. +- **`Golf (JU)`** — promoted to `NROM/Golf (JU)` on 2026-10-21: 4,217 + instructions over 13,541 lines of `prg.s`, all 349 internal branch targets + named (339 derived + 10 fall-through-only), audit comments converted to the + canonical `; CPU:$XXXX PRG:XXXX AA BB` form at column 35, and the project + `README.md` rewritten. Its whole-ROM compare verifies byte-identical. +- **`Volleyball (U)`** — promoted to `NROM/Volleyball (U)` on 2026-10-21. + Pass 1, Pass 2 and Pass 3 were complete on 2026-10-20: 11,395 instructions / + 23,926 code bytes (73.0 %), 8,842 data bytes, **0 unclassified**. The split + needed the game state dispatch table at `$85E1` declared to the tracer + (`--table 85E1:11`) — without it only 66 % of the image is traced — and a + Mesen Code Data Logger capture taken while a random-input bot played the + attract demo, which promoted 1,757 bytes from data to code. Pass 2 named + all 1,989 labels: 730 read out of the code by hand, 1,221 internal branch + targets derived mechanically, leaving zero `Label_XXXX` and zero raw `$XXXX` + call or branch operands. Pass 3 named the zero page, the `$0500` ball + structure and all 37 data blocks, and `apply_symbols.py --report` reports + zero multi-alias residue. The project `README.md` has the power-on flow + analysis (the whole game runs from the NMI handler) and the Pass 3 + data-table inventory. The only residue is the mapping of the ten + near-identical per-nation copies of the player movement and ball routines + onto the ten selectable nations. - Every other project starts from zero. ## 9. Promoting a project @@ -1362,6 +1435,13 @@ whose role is not yet determined keep the neutral `ZpXX` form. `README.md`), `TODO.md` and `AGENTS.md`. 4. No `_tools` path change is needed: both tiers sit two levels deep, so `../../_tools/` is correct either way. +5. **Remove the `_wip/` folder afterwards.** `git mv` only moves the *tracked* + files, so the old folder survives with its untracked build artifacts + (`*.o`, `reconstructed.nes`, `reconstructed.lbl`, `reconstructed.map`) and + sometimes with a stale `README.md` left behind. A leftover folder counts + as a project in every "how many projects are in this tier" tally while + having no source to build — `Xevious (U)` and `Zanac (U)` both left one + behind on 2026-10-20, and both were cleaned up on 2026-10-21. ## 10. Tooling @@ -1379,6 +1459,16 @@ symbols/locals includes and the project README, and copies the ROM to given — that guard is what stopped it from flattening `Golf (JU)`'s real disassembly. +**The generator's mirroring value was wrong until 2026-10-21.** It masked +header byte 6 with `0x03`, so the *battery* bit (bit 1) leaked into the +mirroring value and every battery-backed ROM's README claimed +`Mirroring | Four-screen` while its own `Four-screen VRAM` row said `no`. +The mask is now `0x01`, and the 56 affected per-project READMEs were +corrected in place. The rule the repo follows is the one `AGENTS.md` fixes: +**mirroring is byte 6 bit 0** (`0` = Horizontal, `1` = Vertical), the +four-screen fact is byte 6 bit 3 and has its own row, and the battery flag +is byte 6 bit 1. + `--layout` picks the linker layout: `flat` (the default, and what this tier uses) places the memory areas at `.nes` file offsets and works for any ROM size; `cpu` places the PRG area at the CPU address it is mapped at, which is diff --git a/_tools/align_audit_comments.py b/_tools/align_audit_comments.py index bd8b683..4356b86 100644 --- a/_tools/align_audit_comments.py +++ b/_tools/align_audit_comments.py @@ -39,6 +39,12 @@ DATA_RE = re.compile(r"^ \.(byte|word|dword|incbin|res)\b") CODE_WIDTH = 31 # f" {text:<31}" -> ';' lands at column 35 COMMENT_COL = 4 + CODE_WIDTH +# The emitter's field is 31 characters wide *for the code text alone*, so an +# indented code of up to 4 + 31 characters still fits the column. Testing the +# indented length against 31 (as this tool used to) left code texts of 28-31 +# characters un-padded, which is what produced the ragged column-34/36/37 +# comments in a hand-edited source. +MAX_CODE = 4 + CODE_WIDTH # longest indented code that still fits the column def align(text): @@ -49,7 +55,7 @@ def align(text): m = AUDIT_RE.match(line) if m and not DATA_RE.match(line): code, comment = m.group(1), m.group(2) - if len(code) <= CODE_WIDTH and line.index(";") != COMMENT_COL: + if len(code) <= MAX_CODE and line.index(";") != COMMENT_COL: new = code.ljust(COMMENT_COL) + comment if new != line: changed += 1 diff --git a/_tools/apply_pass2_map.py b/_tools/apply_pass2_map.py index a77096b..9ea4776 100644 --- a/_tools/apply_pass2_map.py +++ b/_tools/apply_pass2_map.py @@ -23,6 +23,24 @@ bytes cannot change - `make` still has to print BYTE-IDENTICAL. The tool refuses to write if any label in the map has no definition in the file, or if a rename would collide with an existing label. +Banked cartridges +----------------- +A banked PRG (MMC3 and friends) has several labels at the same CPU address: +one per bank. Those banks are told apart by a label prefix, and the map may +name them with a `:` key: + + 800F UpdateSprites + Bank4:800D Bank4_DrawTile + +`--bank-prefix` says which prefix belongs to which part of the file: + + --bank-prefix "0:,8000:Bank4_,A000:Bank5_" + +i.e. the labels from file offset $8000 on are the `Bank4_` ones. A +reference inside a file region is resolved against that region's bank, so +`Label_800F` means bank 0's label in the lower half and bank 4's label in +the upper half. + Usage: python3 _tools/apply_pass2_map.py [--write] """ @@ -35,10 +53,14 @@ from pathlib import Path LABEL_RE = re.compile(r"^([A-Za-z_][A-Za-z0-9_]*):\s*$") ADDR_LABEL_RE = re.compile(r"^Label_([0-9A-F]{4})$") CALL_RE = re.compile(r"^(\s*(?:jsr|jmp)\s+)\$([0-9A-F]{4})(\s*)$") -ADDR_RE = re.compile(r"; CPU:\$([0-9A-F]{4}) PRG:") +ADDR_RE = re.compile(r"; CPU:\$([0-9A-F]{4}) PRG:([0-9A-F]{4})") +# a label that belongs to a bank: optional prefix plus the address +BANKED_LABEL_RE = re.compile(r"^(?:(?P
[A-Za-z][A-Za-z0-9]*)_)?Label_(?P[0-9A-F]{4})$")
 
 
 def read_map(path):
+    """Return {(prefix, address): name}.  A bare address means the default
+    (unprefixed) bank; `:` names a label in a prefixed bank."""
     out = {}
     for raw in Path(path).read_text().splitlines():
         line = raw.split("#", 1)[0].strip()
@@ -47,21 +69,51 @@ def read_map(path):
         parts = line.split("\t")
         if len(parts) < 2:
             parts = line.split(None, 1)
-        addr = int(parts[0].strip().lstrip("$"), 16)
+        key = parts[0].strip()
         name = parts[1].strip()
+        prefix = ""
+        if ":" in key:
+            prefix, _, key = key.partition(":")
+            prefix = prefix.strip()
+        addr = int(key.strip().lstrip("$"), 16)
         if not re.fullmatch(r"[A-Za-z_][A-Za-z0-9_]*", name):
             raise SystemExit(f"error: bad name {name!r} for ${addr:04X}")
-        if addr in out and out[addr] != name:
+        if (prefix, addr) in out and out[(prefix, addr)] != name:
             raise SystemExit(f"error: ${addr:04X} mapped twice "
-                             f"({out[addr]} and {name})")
-        out[addr] = name
+                             f"({out[(prefix, addr)]} and {name})")
+        out[(prefix, addr)] = name
     return out
 
 
+def read_bank_prefixes(spec):
+    """[(file offset, prefix)] sorted by offset."""
+    out = []
+    for tok in spec.split(","):
+        tok = tok.strip()
+        if not tok:
+            continue
+        off, _, pre = tok.partition(":")
+        out.append((int(off, 16), pre.strip()))
+    return sorted(out)
+
+
+def prefix_at(bank_prefixes, file_offset):
+    pre = ""
+    for off, p in bank_prefixes:
+        if file_offset >= off:
+            pre = p
+        else:
+            break
+    return pre
+
+
 def main():
     ap = argparse.ArgumentParser(description=__doc__.splitlines()[0])
     ap.add_argument("dir", help="project directory")
     ap.add_argument("map", help="address -> name TSV")
+    ap.add_argument("--bank-prefix", default="",
+                    help="comma list of FILEOFF:PREFIX, telling which labels "
+                         "belong to which bank")
     ap.add_argument("--write", action="store_true", help="apply (default: dry run)")
     args = ap.parse_args()
 
@@ -70,6 +122,7 @@ def main():
         raise SystemExit(f"error: {prg} not found")
 
     names = read_map(args.map)
+    bank_prefixes = read_bank_prefixes(args.bank_prefix)
     lines = prg.read_text().split("\n")
 
     # Which addresses actually carry a label definition?
@@ -88,15 +141,7 @@ def main():
         if am:
             insn_addrs.add(int(am.group(1), 16))
 
-    missing = [a for a in names
-               if f"Label_{a:04X}" not in defined and names[a] not in defined
-               and a not in insn_addrs]
-    if missing:
-        raise SystemExit("error: map names an address with no label "
-                         "definition: " + ", ".join(f"${a:04X}" for a in missing))
-
-    # Address -> label.  A label definition carries no audit comment of its
-    # own, so its address is the address of the next audited line.
+    # (prefix, address) -> label name, for every label in the file.
     addr_of = {}
     cur = None
     for line in lines:
@@ -106,14 +151,32 @@ def main():
             continue
         am = ADDR_RE.search(line)
         if am and cur:
-            addr_of.setdefault(int(am.group(1), 16), cur)
+            lm = BANKED_LABEL_RE.match(cur)
+            if lm:
+                key = (lm.group("pre") or "", int(lm.group("addr"), 16))
+            else:
+                key = ("", int(am.group(1), 16))
+            addr_of.setdefault(key, cur)
             cur = None
 
+    missing = []
+    for (prefix, addr) in names:
+        if (prefix, addr) in addr_of:
+            continue
+        if names[(prefix, addr)] in defined:
+            continue
+        if prefix == "" and addr in insn_addrs:
+            continue
+        missing.append((prefix, addr))
+    if missing:
+        raise SystemExit("error: map names an address with no label "
+                         "definition: " + ", ".join(
+                             f"{p or ''}${a:04X}" for p, a in missing))
+
     # The new names must not collide with a label that is not being renamed.
-    # A label that keeps the name it already has (the vectors, say) is fine.
-    being_renamed = {addr_of.get(a) for a in names}
+    being_renamed = set(addr_of.get(k) for k in names)
     existing = {n for n in defined if n not in being_renamed}
-    clash = [names[a] for a in names if names[a] in existing]
+    clash = [names[k] for k in names if names[k] in existing]
     if clash:
         raise SystemExit("error: renamed label would collide: "
                          + ", ".join(sorted(set(clash))))
@@ -125,9 +188,9 @@ def main():
     # One combined pattern, so a 15,000-line file does not need 15,000
     # separate substitutions per label.
     renamed_labels = {}
-    for a, old_name in addr_of.items():
-        if a in names and names[a] != old_name:
-            renamed_labels[old_name] = names[a]
+    for key, old_name in addr_of.items():
+        if key in names and names[key] != old_name:
+            renamed_labels[old_name] = names[key]
     renamed_re = None
     if renamed_labels:
         pattern = "|".join(re.escape(n) for n in sorted(renamed_labels,
@@ -141,30 +204,42 @@ def main():
     renamed_headers = 0
     created_defs = 0
     cur = None
+    cur_prefix = ""
     for line in lines:
         m = LABEL_RE.match(line)
         if m:
             old = m.group(1)
-            a = next((addr for addr, lab in addr_of.items() if lab == old), None)
-            if a is not None and a in names and names[a] != old:
-                out.append(names[a] + ":")
+            lm = BANKED_LABEL_RE.match(old)
+            key = None
+            if lm:
+                cand = (lm.group("pre") or "", int(lm.group("addr"), 16))
+                if cand in addr_of and addr_of[cand] == old:
+                    key = cand
+            if key is not None and key in names and names[key] != old:
+                out.append(names[key] + ":")
                 renamed_defs += 1
                 defined.discard(old)
-                defined.add(names[a])
-                cur = names[a]
+                defined.add(names[key])
+                cur = names[key]
+                cur_prefix = key[0]
                 continue
             out.append(line)
             cur = old
+            cur_prefix = lm.group("pre") or "" if lm else cur_prefix
             continue
 
+        am = ADDR_RE.search(line)
+        line_prefix = cur_prefix
+        if am:
+            line_prefix = prefix_at(bank_prefixes, int(am.group(2), 16))
+
         # A call target that carries no label at all - the reclass can
         # leave a freshly decoded entry unlabelled - gets one from the map.
-        am = ADDR_RE.search(line)
         if am:
             a = int(am.group(1), 16)
-            if a in names and a not in addr_with_label:
-                out.append(f"{names[a]}:")
-                addr_with_label.add(a)
+            if ("", a) in names and ("", a) not in addr_with_label:
+                out.append(f"{names[('', a)]}:")
+                addr_with_label.add(("", a))
                 created_defs += 1
 
         # The operand token lives in the code part; the trailing audit
@@ -174,23 +249,23 @@ def main():
         # The routine header block names the routine it introduces; it has
         # to follow the rename or the header would point at a label that
         # no longer exists.
-        hm = re.match(r"^(\s*Routine:\s*)(Label_[0-9A-F]{4}|"
-                      r"[A-Za-z_][A-Za-z0-9_]*)(\s*)$", comment)
+        hm = re.match(r"^(\s*Routine:\s*)(\S+)(\s*)$", comment)
         if hm:
             old = hm.group(2)
-            m2 = ADDR_LABEL_RE.match(old)
-            if m2:
-                a = int(m2.group(1), 16)
-                if a in names:
-                    comment = hm.group(1) + names[a] + hm.group(3)
+            lm = BANKED_LABEL_RE.match(old)
+            if lm:
+                cand = (lm.group("pre") or "", int(lm.group("addr"), 16))
+                if cand in names:
+                    comment = hm.group(1) + names[cand] + hm.group(3)
                     renamed_headers += 1
 
         def repl(mo):
             nonlocal renamed_refs
             a = int(mo.group(1), 16)
-            if a in names:
+            cand = (line_prefix, a)
+            if cand in names:
                 renamed_refs += 1
-                return names[a]
+                return names[cand]
             return mo.group(0)
         code = re.sub(r"\bLabel_([0-9A-F]{4})\b", repl, code)
 
@@ -203,8 +278,13 @@ def main():
         cm = CALL_RE.match(code)
         if cm:
             a = int(cm.group(2), 16)
-            if a in names:
-                code = f"{cm.group(1)}{names[a]}{cm.group(3)}"
+            # A call into $E000-$FFFF always lands in the fixed bank,
+            # whichever bank the caller runs in.
+            cand = ("", a) if 0xE000 <= a <= 0xFFFF else (line_prefix, a)
+            if cand not in names and ("", a) in names and line_prefix:
+                cand = ("", a)
+            if cand in names:
+                code = f"{cm.group(1)}{names[cand]}{cm.group(3)}"
                 renamed_calls += 1
         out.append(code + sep + comment)
 
diff --git a/_tools/banked_dis.py b/_tools/banked_dis.py
new file mode 100644
index 0000000..6ee4622
--- /dev/null
+++ b/_tools/banked_dis.py
@@ -0,0 +1,355 @@
+#!/usr/bin/env python3
+"""Pass 1 tracer for a banked PRG image (MMC3 and friends), seeded from a Mesen CDL.
+
+Why this exists
+---------------
+`nesdis.py` traces one flat CPU window.  That is fine for NROM and for the
+32 KB window of a simple UxROM game, but it is wrong for a cartridge whose PRG
+is larger than the 6502 can address: the same CPU address holds different
+bytes depending on which bank the mapper has selected, so a flat trace both
+loses code and invents addresses.
+
+This tool runs the same recursive tracer per *bank* of the cartridge, giving
+each bank the CPU window it is actually visible at, and it seeds every bank
+from a Mesen Code Data Logger file so that code the static flow analysis
+cannot reach (computed dispatch, banked calls) is still disassembled.
+
+The CDL is the oracle for *where* code is; the tracer is the oracle for
+*instruction boundaries and control flow*.  Both are needed: the CDL alone
+does not say where an instruction starts, and the tracer alone cannot see
+through a bank switch.
+
+Inputs
+------
+    --prg FILE      the PRG image (file order)
+    --cdl FILE      a Mesen CDL file (CDLv2) or a raw PRG-sized CDL image
+    --project NAME  name used in the file header
+    --out FILE      the ca65 source to write
+    --banks SPEC    comma list of FILEOFF:CPUBASE, one per bank, in file
+                    order.  e.g. 0:8000,2000:A000,4000:C000
+    --prefix SPEC   comma list of FILEOFF:PREFIX; PREFIX is prepended to
+                    every label the bank emits.  Use it when two banks share
+                    a CPU window: without it the labels collide.
+    --symbols FILE  symbols.inc-style hardware register names
+
+Output
+------
+A single `.segment "PRG"` source holding the whole PRG image in file order,
+with one section per bank.  Code is emitted as instructions with the repo's
+audit comment (`; CPU:$AAAA PRG:BBBB  BB BB`), everything else as `.byte`
+blocks that keep their ROM provenance.  The file assembles back to the exact
+bytes of `prg.bin`.
+"""
+
+import argparse
+import re
+import sys
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parent))
+
+import nesdis  # noqa: E402
+
+
+def load_cdl(path):
+    """Return a PRG-sized CDL image (one byte per PRG byte)."""
+    raw = Path(path).read_bytes()
+    if raw[:5] == b"CDLv2":
+        # 9-byte header, then one byte per PRG byte (and one per CHR byte).
+        return bytearray(raw[9:9 + 65536])
+    if len(raw) == 65536:
+        return bytearray(raw)
+    raise SystemExit(f"error: {path} is neither a CDLv2 file nor a 64 KB image")
+
+
+def cdl_runs(cdl, start, length):
+    """Contiguous runs of CDL 'code' bytes inside [start, start+length)."""
+    runs = []
+    i = start
+    end = start + length
+    while i < end:
+        if cdl[i] & 1:
+            j = i
+            while j < end and cdl[j] & 1:
+                j += 1
+            runs.append((i, j - i))
+            i = j
+        else:
+            i += 1
+    return runs
+
+
+def trace_bank(img, cdl, off, base, rounds=12):
+    """Trace one bank, seeded from the CDL, and keep seeding until every byte
+    the CDL saw as code is covered.
+
+    A CDL run can hold several routines: the tracer follows the flow from the
+    run's first byte and may stop long before the run's end, because the rest
+    is reached through a jump table or an indirect call.  Every uncovered
+    stretch of a CDL run therefore becomes a new seed and the trace is redone,
+    until nothing is left uncovered.
+
+    The CDL seeds are queued *first*, because they are the authority on where
+    an instruction starts: a fall-through decode that spans a byte the CPU
+    really fetched an opcode at is the wrong decode, and the tracer has to be
+    allowed to overwrite it.  `nesdis.emit_code` drops such a spanning decode
+    afterwards.
+    """
+    size = len(img)
+    runs = cdl_runs(cdl, off, size)
+    seeds = [base + (a - off) for a, _ in runs]
+    # Mesen also marks the first byte of every called routine (bit 3), but only
+    # where the byte is code: a byte the CPU read as data is not an entry.
+    for i in range(size):
+        if (cdl[off + i] & 0x09) == 0x09:
+            addr = base + i
+            if addr not in seeds:
+                seeds.append(addr)
+    result = None
+    blocked = set()
+    branch_targets = set()
+    for _ in range(rounds):
+        # A branch target is always code, so it can never be blocked.
+        blocked -= branch_targets
+        insns, invalid, indirect, targets, overlap = nesdis.trace(
+            img, base, seeds, blocked)
+        # The CDL is the authority: a decode the CPU never fetched is wrong.
+        for k in list(insns):
+            if cdl_contradicts(cdl, off, k):
+                blocked.add(k)
+        # A call into a routine that never returns leaves data behind it.
+        for d in dead_fallthroughs(insns, base):
+            blocked.add(d)
+        branch_targets = set()
+        for ins in insns.values():
+            if ins.mnemonic in nesdis.BRANCHES and ins.target is not None:
+                branch_targets.add(ins.target - base)
+            if ins.mnemonic in ("jsr", "jmp") and ins.jsr_target is not None:
+                branch_targets.add(ins.jsr_target - base)
+        covered = set()
+        for k, ins in insns.items():
+            for j in range(k, k + ins.length):
+                covered.add(off + j)
+        extra = []
+        for a, length in runs:
+            i = a
+            while i < a + length:
+                if i in covered:
+                    i += 1
+                    continue
+                addr = base + (i - off)
+                if addr not in seeds:
+                    extra.append(addr)
+                while i < a + length and i not in covered:
+                    i += 1
+        if not extra:
+            result = (insns, invalid, indirect, targets, overlap, runs, seeds)
+            break
+        seeds.extend(extra)
+    if result is None:
+        result = (insns, invalid, indirect, targets, overlap, runs, seeds)
+    return result
+
+
+def cdl_contradicts(cdl, off, offset):
+    """True when the CDL says the byte at this offset was read as data.
+
+    The tracer follows a `jsr` into the table that follows it, because the
+    routine it called may be a dispatcher that jumps elsewhere and never
+    returns.  The CPU never fetched those bytes as opcodes, and the CDL says
+    so: the byte carries the data bit and not the code bit.  Such a decode is
+    wrong and has to go.
+    """
+    b = cdl[off + offset]
+    return bool(b & 0x02) and not (b & 0x01)
+
+
+def dead_fallthroughs(insns, base):
+    """Offsets of instructions that sit behind a `jsr` whose target never
+    returns to them.
+
+    A `jsr` pushes the address of the next instruction, but the routine it
+    calls may end in a `jmp` (a shared exit) or in a dispatcher that jumps
+    somewhere else entirely - the game uses that trick a lot, with a jump
+    table right behind the call.  The fall-through decode is then a decode of
+    data, and the repo's rule is not to seed past a `rts`/`jmp`/`brk`.
+    """
+    dead = []
+    for off, insn in insns.items():
+        if insn.mnemonic != "jsr":
+            continue
+        target = insn.jsr_target
+        if target is None:
+            continue
+        cur = target - base
+        seen = set()
+        term = None
+        while cur in insns and cur not in seen:
+            seen.add(cur)
+            inner = insns[cur]
+            if inner.mnemonic in ("jmp", "rti", "brk", "rts"):
+                term = inner.mnemonic
+                break
+            cur += inner.length
+        if term in ("jmp", "rti", "brk"):
+            dead.append(off + insn.length)
+    return dead
+
+
+
+def main():
+    ap = argparse.ArgumentParser(description=__doc__.splitlines()[0])
+    ap.add_argument("--prg", required=True)
+    ap.add_argument("--cdl", required=True)
+    ap.add_argument("--project", required=True)
+    ap.add_argument("--out", required=True)
+    ap.add_argument("--banks", required=True,
+                    help="comma list of FILEOFF:CPUBASE, in file order")
+    ap.add_argument("--prefix", default="",
+                    help="comma list of FILEOFF:LABELPREFIX")
+    ap.add_argument("--symbols", default=None)
+    ap.add_argument("--label", action="append", default=[],
+                    metavar="FILEOFF:CPUADDR",
+                    help="force a label to be emitted at CPUADDR in the bank that "
+                         "starts at FILEOFF; used for a branch target that lives in "
+                         "another bank")
+    ap.add_argument("--undocumented", action="store_true")
+    args = ap.parse_args()
+
+    prg = Path(args.prg).read_bytes()
+    cdl = load_cdl(args.cdl)
+
+    banks = []
+    for tok in args.banks.split(","):
+        tok = tok.strip()
+        if not tok:
+            continue
+        off, _, base = tok.partition(":")
+        banks.append((int(off, 16), int(base, 16)))
+    if not banks:
+        raise SystemExit("error: --banks is empty")
+
+    prefixes = {}
+    for tok in args.prefix.split(","):
+        tok = tok.strip()
+        if not tok:
+            continue
+        off, _, pre = tok.partition(":")
+        prefixes[int(off, 16)] = pre
+
+    forced_labels = {}
+    for spec in args.label:
+        off, _, addr = spec.partition(":")
+        forced_labels.setdefault(int(off, 16), set()).add(int(addr, 16))
+
+    if args.symbols and Path(args.symbols).is_file():
+        n = nesdis.set_hardware(args.symbols)
+        print(f"symbols   : {n} hardware register names from {args.symbols}")
+    nesdis.set_undocumented(args.undocumented)
+
+    header = []
+    header.append(f"; {args.project} NES disassembly - Pass 1")
+    header.append("; Byte-oriented ca65 source generated from the supplied PRG image.")
+    header.append("; Recursively reachable instructions are emitted explicitly with address/byte comments.")
+    header.append("; Unreached bytes remain explicit .byte blocks; no ROM byte is deleted or reformatted.")
+    header.append("; Pass 2 replaces address-derived labels, RAM aliases, and table names while")
+    header.append("; preserving byte identity.")
+    header.append(";")
+    header.append("; The PRG image is bank switched, so every bank is traced separately and is")
+    header.append("; given the CPU window it is visible at.  Labels carry a bank prefix when two")
+    header.append("; banks share a window.")
+    header.append(";")
+    header.append("; Pass 1 trace provenance:")
+    header.append(";   Code/data split taken from a Mesen Code Data Logger capture; the")
+    header.append(";   instruction boundaries and control flow come from the recursive tracer,")
+    header.append(";   seeded at every entry the CDL observed.")
+
+    body = []
+    total_code = 0
+    label_list = []
+    for index, (off, base) in enumerate(banks):
+        size = min(0x2000, len(prg) - off)
+        img = prg[off:off + size]
+        (insns, invalid, indirect, targets, overlap,
+         runs, seeds) = trace_bank(img, cdl, off, base)
+        # A branch in another bank can target an address in this one.  The
+        # reference is already spelled `Label_XXXX`; the definition has to
+        # exist here or the file will not assemble.
+        targets |= forced_labels.get(off, set())
+
+        covered = set()
+        for k, ins in insns.items():
+            for j in range(k, k + ins.length):
+                covered.add(off + j)
+        missed = []
+        for a, length in runs:
+            for j in range(a, a + length):
+                if j not in covered:
+                    missed.append(a)
+                    break
+
+        code_bytes = sum(i.length for i in insns.values())
+        total_code += code_bytes
+        pre = prefixes.get(off, "")
+        header.append(";")
+        header.append(f"; ---- bank at file ${off:04X}-${off + size - 1:04X}, "
+                      f"CPU ${base:04X}-${base + size - 1:04X}"
+                      + (f", label prefix '{pre}'" if pre else "") + " ----")
+        header.append(f";   {len(seeds)} CDL code runs, {code_bytes} bytes of code, "
+                      f"{len(insns)} instructions")
+        if missed:
+            header.append(f";   {len(missed)} CDL code runs not reached by the tracer "
+                          "(left as data): "
+                          + ", ".join(f"${m:04X}" for m in missed[:12]))
+        if indirect:
+            header.append(";   indirect dispatch through zero page (not followed statically):")
+            for addr, ptr in indirect:
+                header.append(f";     jmp (${ptr:04X}) at ${addr:04X}")
+
+        sub = []
+        nesdis.emit_code(img, base, insns, targets, sub, args.project, {},
+                         nesdis.build_refs(img, base, insns,
+                                           nesdis.scan_orphans(img, base, insns, 1)),
+                         {}, {})
+
+        # Every bank gets its own segment, and the segment is addressed at the
+        # CPU window the bank is visible at.  The linker puts the bytes at the
+        # bank's file offset, so the file image is byte identical while the
+        # assembler still knows the CPU address of every label - which is what
+        # makes `jsr SomeRoutine` assemble to the right bytes.
+        body.append(f'.segment "PRG{index}"')
+        body.append(f".org ${base:04X}")
+        body.append("")
+
+        # The emitter numbers PRG offsets from the start of the slice it was
+        # given; re-base them onto the file.
+        for line in sub:
+            line = re.sub(r"PRG:([0-9A-F]{4})",
+                          lambda m: f"PRG:{int(m.group(1), 16) + off:04X}", line)
+            if pre:
+                line = re.sub(r"\bLabel_([0-9A-F]{4})\b",
+                              lambda m: f"{pre}_Label_{m.group(1)}", line)
+            body.append(line)
+
+        for t in sorted(targets):
+            label_list.append((off, base, t, pre))
+
+    out = header + [
+        "",
+        '.setcpu "6502"',
+        "",
+        '.include "symbols.inc"',
+        '.include "locals.inc"',
+        "",
+    ] + body
+    Path(args.out).write_text("\n".join(out) + "\n")
+
+    print(f"PRG       : {len(prg)} bytes in {len(banks)} banks")
+    print(f"code      : {total_code} bytes ({total_code * 100.0 / len(prg):.1f}%)")
+    print(f"labels    : {len(label_list)}")
+    for off, base, t, pre in label_list:
+        print(f"   ${off:04X} CPU:${t:04X} {pre + '_' if pre else ''}Label_{t:04X}")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/_tools/cdl_check.py b/_tools/cdl_check.py
new file mode 100644
index 0000000..6a2222d
--- /dev/null
+++ b/_tools/cdl_check.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+"""Cross-check a project's prg.s instruction boundaries against a Mesen CDL file.
+
+The CDL is the oracle.  Mesen marks every byte the CPU touched as part of the
+instruction stream (opcode *and* its inline operand bytes) with the Code bit,
+and every byte the CPU read or wrote as data with the Data bit.  So:
+
+  * a byte the CDL calls Data must not start an instruction in prg.s;
+  * a byte the CDL calls Code must be covered by some instruction in prg.s --
+    either its opcode or one of its inline operand bytes;
+  * bytes the CDL never observed are free (unexecuted code or plain data).
+
+Usage: cdl_check.py   [base]
+"""
+import re
+import sys
+from pathlib import Path
+
+AUDIT = re.compile(r";\s*CPU:\$([0-9A-Fa-f]{4})\s+PRG:([0-9A-Fa-f]{4})\s+((?:[0-9A-Fa-f]{2} )*[0-9A-Fa-f]{2})")
+DATAOP = re.compile(r"^\s*\.(byte|word|incbin|res|fill)")
+
+
+def main():
+    src = Path(sys.argv[1]).read_text().splitlines()
+    cdl = Path(sys.argv[2]).read_bytes()
+    base = int(sys.argv[3], 16) if len(sys.argv) > 3 else 0x8000
+
+    n = 32768
+    body = cdl[9:9 + n] if cdl[:5] == b"CDLv2" else cdl[-n:]
+
+    starts = set()
+    covered = set()
+    for ln in src:
+        m = AUDIT.search(ln)
+        if not m:
+            continue
+        cpu = int(m.group(1), 16)
+        raw = bytes.fromhex(m.group(3).replace(" ", ""))
+        if DATAOP.match(ln):
+            for k in range(len(raw)):
+                covered.add(cpu + k)
+        else:
+            starts.add(cpu)
+            for k in range(len(raw)):
+                covered.add(cpu + k)
+
+    bad_code = []
+    bad_data = []
+    code_bytes = data_bytes = 0
+    for off in range(n):
+        b = body[off]
+        cpu = base + off
+        if b & 1:
+            code_bytes += 1
+            if cpu not in covered:
+                bad_code.append(cpu)
+        elif b & 2:
+            data_bytes += 1
+            if cpu in starts:
+                bad_data.append(cpu)
+
+    print(f"CDL: code={code_bytes} data={data_bytes} unknown={n - code_bytes - data_bytes}")
+    print(f"prg.s: {len(starts)} instruction starts, {len(covered)} bytes covered")
+    print(f"CDL-Code bytes not covered by prg.s: {len(bad_code)}")
+    for a in bad_code[:40]:
+        print(f"   ${a:04X}")
+    if len(bad_code) > 40:
+        print(f"   ... and {len(bad_code) - 40} more")
+    print(f"CDL-Data bytes that start an instruction in prg.s: {len(bad_data)}")
+    for a in bad_data[:40]:
+        print(f"   ${a:04X}")
+    if len(bad_data) > 40:
+        print(f"   ... and {len(bad_data) - 40} more")
+    return 0 if not bad_code and not bad_data else 1
+
+
+if __name__ == "__main__":
+    sys.exit(main())
diff --git a/_tools/cdl_reclass.py b/_tools/cdl_reclass.py
index 1377bf1..f58db7c 100644
--- a/_tools/cdl_reclass.py
+++ b/_tools/cdl_reclass.py
@@ -371,7 +371,7 @@ def main():
             warnings.append(f'branch target ${c:04X} is not an instruction boundary; '
                             f'emitted as a raw relative offset')
     dropped = sorted(label_at[t] for s, e in regions for t in range(s, e + 1)
-                     if t in label_at and BASE + t not in need)
+                     if t in label_at and BASE + t not in need and tgt[t] == 'C')
 
     # ---- generation ----
     TEMPLATE = None
@@ -470,7 +470,43 @@ def main():
                 lo -= 1
         elif LINES[lo - 1].startswith('; ---- data '):
             lo -= 1
+        # A region that starts where an existing data block starts replaces
+        # that block, so the block's own header has to go with it -- gen()
+        # emits a header per sub-block, and leaving the old one behind puts
+        # two headers on overlapping spans.  The block's descriptive comment
+        # lines ("referenced by ...") still apply to the references they name,
+        # so they are kept and re-emitted above the replacement.
+        keep = []
+        for bs, be in blocks:
+            if bs != s:
+                continue
+            # The block's header sits above its first row.  Look upward from
+            # there and take the *nearest* data header; only use it when it
+            # is the header of the block being replaced, or an earlier one
+            # would be swallowed and its code with it.
+            for i in range(first - 1, cursor - 1, -1):
+                mh = re.match(r'^; ---- data \$([0-9A-F]{4})-\$[0-9A-F]{4} ', LINES[i])
+                if mh:
+                    if int(mh.group(1), 16) == BASE + s:
+                        lo = i
+                        j = i + 1
+                        # Keep the descriptive comments *and*, when the block is
+                        # still data, the data label(s) that sit between the
+                        # header and its first row.  Those labels are often the
+                        # operands of code outside the region (e.g. `Data_XXXX`
+                        # named by an unchanged instruction), so dropping them
+                        # leaves the file with an undefined symbol.
+                        keep_labels = tgt[s] == 'D'
+                        while j < first and (
+                                LINES[j].startswith('; ')
+                                or (keep_labels
+                                    and re.match(r'^[A-Za-z_][A-Za-z0-9_]*:$', LINES[j]))):
+                            keep.append(LINES[j])
+                            j += 1
+                    break
+            break
         new_lines.extend(LINES[cursor:lo])
+        new_lines.extend(keep)
         genl = gen(s, e)
         new_lines.extend(genl)
         cursor = hi + 1
diff --git a/_tools/derive_branch_names.py b/_tools/derive_branch_names.py
index 674bff1..dfc46d8 100644
--- a/_tools/derive_branch_names.py
+++ b/_tools/derive_branch_names.py
@@ -15,6 +15,10 @@ taken, and the owner is the routine the target belongs to.
 Names are made unique inside their owner by appending 2, 3, ... in address
 order, so the map is deterministic.
 
+A banked cartridge (MMC3 and friends) has one copy of every label per bank,
+so the map may name a bank's label with a `:` key and
+`--bank-prefix` says which prefix belongs to which part of the file.
+
 Usage:
     python3 _tools/derive_branch_names.py  
 """
@@ -32,26 +36,74 @@ ROLE = {
 }
 
 LABEL_RE = re.compile(r"^([A-Za-z_][A-Za-z0-9_]*):\s*$")
-CPU_RE = re.compile(r"; CPU:\$([0-9A-F]{4}) PRG:")
+CPU_RE = re.compile(r"; CPU:\$([0-9A-F]{4}) PRG:([0-9A-F]{4})")
+BANKED_LABEL_RE = re.compile(r"^(?:(?P
[A-Za-z][A-Za-z0-9]*)_)?Label_(?P[0-9A-F]{4})$")
+
+
+def read_map(lines):
+    """{(prefix, address): name}"""
+    names = {}
+    for raw in lines:
+        line = raw.split("#", 1)[0].strip()
+        if not line:
+            continue
+        parts = line.split("\t") if "\t" in line else line.split(None, 1)
+        key = parts[0].strip()
+        prefix = ""
+        if ":" in key:
+            prefix, _, key = key.partition(":")
+            prefix = prefix.strip()
+        names[(prefix, int(key.strip().lstrip("$"), 16))] = parts[1].strip()
+    return names
+
+
+def read_bank_prefixes(spec):
+    out = []
+    for tok in spec.split(","):
+        tok = tok.strip()
+        if not tok:
+            continue
+        off, _, pre = tok.partition(":")
+        out.append((int(off, 16), pre.strip()))
+    return sorted(out)
+
+
+def prefix_at(bank_prefixes, file_offset):
+    pre = ""
+    for off, p in bank_prefixes:
+        if file_offset >= off:
+            pre = p
+        else:
+            break
+    return pre
 
 
 def main():
     proj = Path(sys.argv[1])
     mapfile = Path(sys.argv[2])
+    bank_prefixes = read_bank_prefixes(sys.argv[3] if len(sys.argv) > 3 else "")
+    outfile = Path(sys.argv[4]) if len(sys.argv) > 4 else mapfile
+
+    # The file holds the hand-written routine names and, below a marker, the
+    # names this tool derived.  Only the hand-written part is input: reading
+    # the derived part back would make the tool accumulate names over
+    # repeated runs.
+    raw_lines = mapfile.read_text().splitlines()
+    marker = "# ---- derived internal branch-target names ----"
+    hand = []
+    for line in raw_lines:
+        if line.startswith(marker):
+            break
+        hand.append(line)
 
     # the hand-written routine names
-    names = {}
-    for raw in mapfile.read_text().splitlines():
-        line = raw.split("#", 1)[0].strip()
-        if not line:
-            continue
-        parts = line.split("\t") if "\t" in line else line.split(None, 1)
-        names[int(parts[0].lstrip("$"), 16)] = parts[1].strip()
+    names = read_map(hand)
 
     lines = (proj / "prg.s").read_text().split("\n")
 
     # every label and its address
     labels = {}
+    addr_of = {}
     cur = None
     for i, line in enumerate(lines):
         m = LABEL_RE.match(line)
@@ -60,29 +112,62 @@ def main():
             continue
         m2 = CPU_RE.search(line)
         if m2 and cur:
-            labels[cur] = int(m2.group(1), 16)
+            lm = BANKED_LABEL_RE.match(cur)
+            if lm:
+                key = (lm.group("pre") or "", int(lm.group("addr"), 16))
+            else:
+                key = ("", int(m2.group(1), 16))
+            labels[key] = int(m2.group(1), 16)
+            addr_of[key] = cur
             cur = None
-    addr_of = {a: n for n, a in labels.items()}
 
     # the branches that reach each label
     incoming = defaultdict(list)
+    # the calls that reach each label: a `jsr`/`jmp` target that no hand
+    # written name covers keeps the address-derived form the repo accepts
+    # (`Sub_XXXX`).
+    called = set()
     for i, line in enumerate(lines):
         m = re.match(r"^\s*(b[a-z]{2})\s+(\S+)\s*;", line)
-        if not m:
+        if m:
+            op, tgt = m.group(1), m.group(2)
+            lm = BANKED_LABEL_RE.match(tgt)
+            if not lm:
+                continue
+            am = CPU_RE.search(line)
+            if not am:
+                continue
+            prefix = prefix_at(bank_prefixes, int(am.group(2), 16))
+            incoming[(prefix, int(lm.group("addr"), 16))].append(
+                (op, int(am.group(1), 16)))
             continue
-        op, tgt = m.group(1), m.group(2)
-        if not tgt.startswith("Label_"):
-            continue
-        am = CPU_RE.search(line)
-        if not am:
-            continue
-        incoming[tgt].append((op, int(am.group(1), 16)))
+        m = re.match(r"^\s*(jsr|jmp)\s+(\S+)\s*;", line)
+        if m:
+            lm = BANKED_LABEL_RE.match(m.group(2))
+            if lm:
+                called.add((lm.group("pre") or "", int(lm.group("addr"), 16)))
+                continue
+            am = CPU_RE.search(line)
+            rm = re.match(r"^\$([0-9A-F]{4})$", m.group(2))
+            if rm and am:
+                prefix = prefix_at(bank_prefixes, int(am.group(2), 16))
+                addr = int(rm.group(1), 16)
+                # A call into $E000-$FFFF always lands in the fixed bank,
+                # whichever bank the caller runs in.
+                if 0xE000 <= addr <= 0xFFFF:
+                    prefix = ""
+                called.add((prefix, addr))
 
     # the owner of each address: the nearest routine entry below it
-    entries = sorted(a for a in names)
-    def owner_of(addr):
+    entries = defaultdict(list)
+    for (prefix, a) in names:
+        entries[prefix].append(a)
+    for prefix in entries:
+        entries[prefix].sort()
+
+    def owner_of(prefix, addr):
         best = None
-        for e in entries:
+        for e in entries.get(prefix, []):
             if e <= addr:
                 best = e
             else:
@@ -91,16 +176,16 @@ def main():
 
     # name the internal targets
     internal = defaultdict(list)
-    for lab, brs in incoming.items():
-        a = labels.get(lab)
-        if a is None or a in names:
+    for key, brs in incoming.items():
+        if key in names:
             continue
-        internal[a] = brs
+        internal[key] = brs
 
     used = defaultdict(set)
     out = {}
-    for a in sorted(internal):
-        brs = internal[a]
+    for key in sorted(internal):
+        prefix, a = key
+        brs = internal[key]
         roles = []
         for op, baddr in brs:
             if a <= baddr:
@@ -108,15 +193,28 @@ def main():
             else:
                 roles.append("Loop")
         role = sorted(roles, key=lambda r: (roles.count(r), r))[-1]
-        own = owner_of(a)
-        base = f"{names.get(own, 'Sub')}_{role}"
+        own = owner_of(prefix, a)
+        base = f"{prefix + '_' if prefix else ''}{names.get((prefix, own), 'Sub')}_{role}"
         n = 2
         cand = base
-        while cand in used[own]:
+        while cand in used[prefix]:
             cand = f"{base}{n}"
             n += 1
-        used[own].add(cand)
-        out[a] = cand
+        used[prefix].add(cand)
+        out[key] = cand
+
+    # A `jsr`/`jmp` target that no hand-written name covers keeps the
+    # address-derived form: the repo accepts `Sub_XXXX` for an entry point
+    # whose role the dump does not reveal.
+    for key in sorted(called):
+        if key in names or key in out:
+            continue
+        prefix, a = key
+        name = f"{prefix + '_' if prefix else ''}Sub_{a:04X}"
+        if name in used[prefix]:
+            continue
+        used[prefix].add(name)
+        out[key] = name
 
     # merge: the hand-written routine names plus the derived ones
     merged = dict(names)
@@ -124,23 +222,19 @@ def main():
 
     # keep the header the hand-written map already carries, so the file
     # documents itself in the project's own terms
-    header = []
-    for raw in mapfile.read_text().splitlines():
-        if raw.startswith("#"):
-            header.append(raw)
-        elif raw.strip():
-            break
+    header = [l for l in hand if l.startswith("#")]
 
-    with mapfile.open("w") as f:
-        for line in header:
-            f.write(line + "\n")
-        if header and not header[-1].endswith("name map"):
-            f.write("\n")
-        f.write("# ---- derived internal branch-target names ----\n")
-        for a in sorted(merged):
-            f.write(f"{a:04X}\t{merged[a]}\n")
+    with outfile.open("w") as f:
+        for line in hand:
+            if not line.startswith("#"):
+                f.write(line + "\n")
+        f.write("\n")
+        f.write(marker + "\n")
+        for key in sorted(merged):
+            prefix, a = key
+            f.write(f"{prefix + ':' if prefix else ''}{a:04X}\t{merged[key]}\n")
     print(f"{len(names)} routine names + {len(out)} derived branch names "
-          f"= {len(merged)} entries")
+          f"= {len(merged)} entries -> {outfile}")
 
 
 if __name__ == "__main__":
diff --git a/_tools/derive_clobbers.py b/_tools/derive_clobbers.py
new file mode 100644
index 0000000..20741de
--- /dev/null
+++ b/_tools/derive_clobbers.py
@@ -0,0 +1,598 @@
+#!/usr/bin/env python3
+"""Derive the `; Clobbers:` line of every routine header in a project's prg.s.
+
+The repo's routine-header template (AGENTS.md) is "global + local description,
+parameters, returns, clobbers".  A routine's *clobbers* are what the caller
+loses across the call: the registers the routine writes, the processor flags
+it changes, and the memory it writes - plus the same for the routines it
+calls, because a callee's damage survives the return.
+
+Everything here is derived from the source itself, not guessed:
+
+  * the opcode comes from the audit comment's byte list, so the addressing
+    mode is exact (`sta $0400,x` is ABSX, `sta Zp00` is ZP) and a data
+    directive is never mistaken for an instruction;
+  * the operand text is resolved through `locals.inc`, `symbols.inc` and the
+    labels defined in `prg.s`, so a clobber can be named;
+  * the control flow comes from the instructions themselves.  A *unit* is a
+    named entry point in the source (a label that is followed by code); the
+    code a unit reaches - the shared tails it branches into, the block it
+    falls through into - is its own, while a `jsr`/`jmp` to another unit is a
+    call, so the callee's clobbers count but its code is not merged in.
+
+Register *preservation* is modelled too, so a routine that saves a register on
+the stack and puts it back before returning (`tya`/`pha` ... `pla`/`tay`) is
+not reported as clobbering it.  A small abstract interpreter carries the value
+of A, X, Y and of each processor flag through the unit: a register survives
+when its value at the end is the value it had at the entry, and a flag
+survives when a `php`/`plp` pair puts it back.
+
+A call into code the project has not decoded (a forward reference in
+`locals.inc` that lands in a data region) can damage anything, so it is
+reported as a clobber of every register and every flag.
+
+Usage:
+    python3 _tools/derive_clobbers.py "NROM/Balloon Fight (JU)"            # report
+    python3 _tools/derive_clobbers.py "NROM/Balloon Fight (JU)" --write    # apply
+"""
+
+import argparse
+import os
+import re
+import sys
+from pathlib import Path
+
+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
+import nesdis  # noqa: E402
+
+# Registers written by each mnemonic.
+REG_WRITE = {
+    "lda": "A", "pla": "A", "txa": "A", "tya": "A", "lax": "A",
+    "ldx": "X", "inx": "X", "dex": "X", "tax": "X", "txs": "X",
+    "ldy": "Y", "iny": "Y", "dey": "Y", "tay": "Y",
+}
+
+# Which processor flags each mnemonic sets or clears.
+FLAG_BITS = {
+    "N": ("lda", "ldx", "ldy", "tax", "tay", "txa", "tya", "tsx", "cmp",
+          "cpx", "cpy", "adc", "and", "asl", "bit", "dec", "dex", "dey",
+          "eor", "inc", "inx", "iny", "lsr", "ora", "rol", "ror", "sbc"),
+    "Z": ("lda", "ldx", "ldy", "tax", "tay", "txa", "tya", "tsx", "cmp",
+          "cpx", "cpy", "adc", "and", "asl", "bit", "dec", "dex", "dey",
+          "eor", "inc", "inx", "iny", "lsr", "ora", "rol", "ror", "sbc"),
+    "C": ("adc", "cmp", "cpx", "cpy", "sbc", "sec", "asl", "lsr", "rol", "ror"),
+    "D": ("cld", "sed"),
+    "I": ("cli", "sei", "plp", "brk"),
+    "V": ("adc", "sbc", "bit", "plp"),
+}
+FLAGS = list(FLAG_BITS)
+
+# Mnemonics that write their operand.
+MEM_WRITE = {"sta", "stx", "sty", "inc", "dec", "asl", "lsr", "rol", "ror"}
+
+# Mnemonics that only move a register around.
+COPY = {"txa": ("X", "A"), "tya": ("Y", "A"), "tax": ("A", "X"),
+        "tay": ("A", "Y")}
+
+# Instructions that end the routine.
+TERMINATORS = {"rts", "rti", "brk"}
+
+AUDIT_RE = re.compile(
+    r"^    ([A-Za-z@][A-Za-z0-9_]*)\s*(.*?)\s*; CPU:\$([0-9A-F]{4}) "
+    r"PRG:([0-9A-F]{4})  ((?:[0-9A-F]{2} ?)+)$")
+LABEL_RE = re.compile(r"^([A-Za-z_@][A-Za-z0-9_]*):\s*(.*)$")
+
+ENTRY = {r: ("entry", r) for r in ("A", "X", "Y")}
+
+# Memory regions, named rather than listed address by address.
+REGIONS = (
+    (0x0200, 0x02FF, "the OAM shadow"),
+    (0x4000, 0x4017, "the APU registers"),
+)
+
+
+class Insn:
+    __slots__ = ("addr", "length", "mn", "operand", "mode", "opcode", "bytes",
+                 "succ", "calls", "unknown_call")
+
+    def __init__(self, addr, length, mn, operand, mode, opcode, raw):
+        self.addr = addr
+        self.length = length
+        self.mn = mn
+        self.operand = operand
+        self.mode = mode
+        self.opcode = opcode
+        self.bytes = raw
+        self.succ = []          # (kind, instruction index); kind "fall"/"branch"
+        self.calls = []         # instruction index of a called unit's entry
+        self.unknown_call = False
+
+
+class Unit:
+    """A named entry point in the source and the code it reaches."""
+
+    def __init__(self, name, entry, addr):
+        self.name = name
+        self.entry = entry
+        self.addr = addr
+        self.reach = set()
+        self.calls = set()         # units called
+        self.unknown_call = False
+        self.touched = set()
+        self.restored = set()
+        self.flag_written = set()
+        self.flag_restored = set()
+        self.mem = []
+        # transitive results
+        self.eff_regs = set()
+        self.eff_flags = set()
+        self.eff_mem = set()
+        self.eff_calls = set()
+
+
+class Block:
+    """A routine header in prg.s."""
+
+    def __init__(self, name, hdr_lines, entry_addr):
+        self.name = name
+        self.hdr_lines = hdr_lines
+        self.entry_addr = entry_addr
+        self.unit = None
+
+
+def load_symbols(proj):
+    """Return (name -> address, address -> [names in file order])."""
+    syms = {}
+    order = {}
+    for fname in ("locals.inc", "symbols.inc"):
+        p = proj / fname
+        if not p.is_file():
+            continue
+        for raw in p.read_text().split("\n"):
+            line = raw.split(";", 1)[0].strip()
+            if "=" not in line:
+                continue
+            name, _, val = line.partition("=")
+            name = name.strip()
+            val = val.strip()
+            if not val.startswith("$"):
+                continue
+            try:
+                addr = int(val[1:], 16)
+            except ValueError:
+                continue
+            syms.setdefault(name, addr)
+            order.setdefault(addr, []).append(name)
+    return syms, order
+
+
+class Project:
+    def __init__(self, proj):
+        self.dir = Path(proj)
+        self.src = (self.dir / "prg.s").read_text().split("\n")
+        self.syms, self.alias_order = load_symbols(self.dir)
+        self.insns = []
+        self.by_addr = {}
+        self.labels = {}
+        self.units = {}          # cpu address -> Unit
+        self.blocks = []
+        self._parse()
+
+    def _parse(self):
+        for line in self.src:
+            m = AUDIT_RE.match(line)
+            if not m:
+                continue
+            mn = m.group(1).lower()
+            operand = m.group(2).strip()
+            by = m.group(5).split()
+            opcode = int(by[0], 16)
+            entry = nesdis.OPCODES.get(opcode) or nesdis.UNDOC_OPCODES.get(opcode)
+            mode = entry[1] if entry else nesdis.IMP
+            addr = int(m.group(3), 16)
+            ins = Insn(addr, len(by), mn, operand, mode, opcode, by)
+            self.by_addr[addr] = len(self.insns)
+            self.insns.append(ins)
+        # labels: the address of the next instruction after the label
+        for i, line in enumerate(self.src):
+            m = LABEL_RE.match(line)
+            if not m:
+                continue
+            for j in range(i, min(i + 4, len(self.src))):
+                a = AUDIT_RE.match(self.src[j])
+                if a:
+                    self.labels.setdefault(m.group(1), int(a.group(3), 16))
+                    break
+        # a unit for every label that is followed by code
+        for name, addr in self.labels.items():
+            if addr in self.by_addr and addr not in self.units:
+                self.units[addr] = Unit(name, self.by_addr[addr], addr)
+        # header blocks
+        sep = [i for i, l in enumerate(self.src) if l.startswith(";=====")]
+        for k in range(len(sep) - 1):
+            o, c = sep[k], sep[k + 1]
+            body = self.src[o + 1:c]
+            if not any(l.startswith("; Global:") for l in body):
+                continue
+            name = None
+            for h in body:
+                if h.startswith("; ") and not h.startswith(";  "):
+                    t = h[2:].strip()
+                    if t and not t.endswith(":") and ":" not in t:
+                        name = t
+                        break
+            entry = self._entry_after(c)
+            blk = Block(name, (o, c), entry)
+            if entry is not None and entry not in self.units:
+                self.units[entry] = Unit(name, entry, entry)
+            blk.unit = self.units.get(entry)
+            self.blocks.append(blk)
+
+    def _entry_after(self, line):
+        for j in range(line, len(self.src)):
+            m = AUDIT_RE.match(self.src[j])
+            if m:
+                addr = int(m.group(3), 16)
+                return addr if addr in self.by_addr else None
+        return None
+
+    def resolve(self, operand):
+        """(cpu address, name) of a branch/call operand, or (None, None)."""
+        op = operand.strip()
+        if op.startswith("("):
+            return None, None
+        if op.startswith("$"):
+            try:
+                return int(op[1:], 16), op
+            except ValueError:
+                return None, None
+        if op in self.labels:
+            return self.labels[op], op
+        if op in self.syms:
+            return self.syms[op], op
+        return None, None
+
+
+def build_cfg(pj):
+    """Wire up the control flow of every instruction."""
+    for ins in pj.insns:
+        mn = ins.mn
+        nxt = pj.by_addr.get(ins.addr + ins.length)
+        if mn in TERMINATORS:
+            continue
+        if mn == "jmp":
+            if ins.operand.strip().startswith("("):
+                continue                        # indirect dispatch
+            addr, _name = pj.resolve(ins.operand)
+            tgt = pj.by_addr.get(addr) if addr is not None else None
+            if tgt is None:
+                ins.unknown_call = True
+            elif addr in pj.units:
+                ins.calls.append(tgt)            # a tail call to another unit
+            else:
+                ins.succ.append(("branch", tgt))  # a jump into a shared tail
+            continue
+        if mn == "jsr":
+            addr, _name = pj.resolve(ins.operand)
+            tgt = pj.by_addr.get(addr) if addr is not None else None
+            if tgt is None:
+                ins.unknown_call = True
+            elif addr in pj.units:
+                ins.calls.append(tgt)            # a call to another unit
+            else:
+                ins.succ.append(("branch", tgt))  # a call into a shared tail
+            if nxt is not None:
+                ins.succ.append(("fall", nxt))
+            continue
+        if ins.mode == nesdis.REL:
+            rel = int(ins.bytes[1], 16)
+            if rel > 0x7F:
+                rel -= 0x100
+            tgt = pj.by_addr.get(ins.addr + 2 + rel)
+            if tgt is None:
+                ins.unknown_call = True
+            else:
+                ins.succ.append(("branch", tgt))
+            if nxt is not None:
+                ins.succ.append(("fall", nxt))
+            continue
+        if nxt is not None:
+            ins.succ.append(("fall", nxt))
+
+
+def analyse(pj):
+    """Fill in the per-unit clobber data."""
+    build_cfg(pj)
+    for unit in pj.units.values():
+        seen, stack = set(), [unit.entry]
+        while stack:
+            i = stack.pop()
+            if i in seen:
+                continue
+            seen.add(i)
+            ins = pj.insns[i]
+            for c in ins.calls:
+                called = pj.units.get(pj.insns[c].addr)
+                if called is not None and called is not unit:
+                    unit.calls.add(called)
+            if ins.unknown_call:
+                unit.unknown_call = True
+            for _kind, s in ins.succ:
+                if s not in seen:
+                    stack.append(s)
+        unit.reach = seen
+        unit.touched = set()
+        unit.flag_written = set()
+        unit.mem = []
+        for i in sorted(seen):
+            ins = pj.insns[i]
+            mn = ins.mn
+            if mn in REG_WRITE:
+                unit.touched.add(REG_WRITE[mn])
+            for bit, mns in FLAG_BITS.items():
+                if mn in mns:
+                    unit.flag_written.add(bit)
+            if mn in MEM_WRITE:
+                mem = mem_target(pj, ins)
+                if mem:
+                    unit.mem.append(mem)
+        # register / flag preservation, over the reached code in address order
+        val = {"A": ENTRY["A"], "X": ENTRY["X"], "Y": ENTRY["Y"]}
+        flags = {f: ENTRY for f in FLAGS}
+        stack = []
+        for i in sorted(seen):
+            mn = pj.insns[i].mn
+            if mn == "pha":
+                stack.append(("A", val["A"]))
+            elif mn == "php":
+                stack.append(("P", dict(flags)))
+            elif mn == "pla":
+                v = stack.pop() if stack else None
+                val["A"] = v[1] if v and v[0] == "A" else ("?",)
+            elif mn == "plp":
+                v = stack.pop() if stack else None
+                flags = (dict(v[1]) if v and v[0] == "P"
+                         else {f: ("?",) for f in FLAGS})
+            elif mn in COPY:
+                s, d = COPY[mn]
+                val[d] = val[s]
+            else:
+                if mn in REG_WRITE:
+                    val[REG_WRITE[mn]] = ("?",)
+                for bit, mns in FLAG_BITS.items():
+                    if mn in mns:
+                        flags[bit] = ("?",)
+                if mn in ("jsr", "jmp"):
+                    val = {"A": ("?",), "X": ("?",), "Y": ("?",)}
+                    flags = {f: ("?",) for f in FLAGS}
+        unit.restored = {k for k, v in val.items() if v == ENTRY[k]}
+        unit.flag_restored = {f for f, v in flags.items() if v == ENTRY}
+
+
+def mem_target(pj, ins):
+    """(name, address) of the location an instruction writes."""
+    base = ins.operand.strip()
+    if base.startswith("("):
+        base = base.strip("()").split(",")[0].strip()
+    base = re.sub(r",[xy]$", "", base).strip()
+    if base in ("a", "A"):
+        return None
+    if base.startswith("$"):
+        try:
+            addr = int(base[1:], 16)
+        except ValueError:
+            return None
+        return (base, addr)
+    addr = pj.syms.get(base, pj.labels.get(base))
+    if addr is None:
+        return None
+    return (base, addr)
+
+
+def closure(pj):
+    """Fold each unit's callees' clobbers into the caller's."""
+    state = {}
+
+    def reach(u, seen):
+        if id(u) in state:
+            return state[id(u)]
+        if id(u) in seen:
+            return (set(), set(), set(), set())
+        regs = set(u.touched) - set(u.restored)
+        flags = set(u.flag_written) - set(u.flag_restored)
+        mem = set(u.mem)
+        calls = set()
+        for other in u.calls:
+            cr, cf, cm, cc = reach(other, seen | {id(u)})
+            regs |= cr
+            flags |= cf
+            mem |= cm
+            calls |= cc
+            calls.add(other.name)
+        if u.unknown_call:
+            # code this project has not decoded can damage anything
+            regs |= {"A", "X", "Y"}
+            flags |= set(FLAGS)
+        regs -= set(u.restored)
+        flags -= set(u.flag_restored)
+        state[id(u)] = (regs, flags, mem, calls)
+        return state[id(u)]
+
+    for u in pj.units.values():
+        (u.eff_regs, u.eff_flags, u.eff_mem,
+         u.eff_calls) = reach(u, frozenset())
+
+
+def mem_name(name, addr):
+    if name and not name.startswith("$"):
+        return name
+    for lo, hi, label in REGIONS:
+        if lo <= addr <= hi:
+            return label
+    return name or f"${addr:04X}"
+
+
+def fmt_regs(regs):
+    order = [x for x in ("A", "X", "Y") if x in regs]
+    if not order:
+        return "no register"
+    if len(order) == 1:
+        return order[0]
+    return ", ".join(order[:-1]) + " and " + order[-1]
+
+
+def fmt_flags(flags):
+    if not flags:
+        return None
+    order = [f for f in FLAGS if f in flags]
+    if len(order) == len(FLAGS):
+        return "all the processor flags"
+    if len(order) == 1:
+        return f"the {order[0]} flag"
+    return "the " + ", ".join(order[:-1]) + " and " + order[-1] + " flags"
+
+
+def memory_summary(pj, u, limit):
+    """A list of the memory the unit writes, or a summary when it is long.
+
+    Several names can share one address (`Temp12` and `RecordIndex` are both
+    $12), so the entries are folded per address and the first name in
+    `locals.inc` is used - the file lists the primary name first.
+    """
+    by_addr = {}
+    for name, addr in u.eff_mem:
+        if addr not in by_addr:
+            by_addr[addr] = name
+    entries = []
+    for addr in sorted(by_addr):
+        name = by_addr[addr]
+        aliases = pj.alias_order.get(addr, [])
+        if name in aliases:
+            name = aliases[0]
+        n = mem_name(name, addr)
+        if n not in entries:
+            entries.append(n)
+    if not entries:
+        return None
+    if len(entries) <= limit:
+        return ", ".join(entries)
+    regions, rest = [], []
+    for n in entries:
+        (regions if n.startswith("the ") else rest).append(n)
+    parts = list(dict.fromkeys(regions))
+    if rest:
+        parts.append("the RAM fields it writes")
+    return " and ".join(parts)
+
+
+def clobber_text(pj, u, limit=6):
+    parts = [fmt_regs(u.eff_regs)]
+    fl = fmt_flags(u.eff_flags)
+    if fl:
+        parts.append(fl)
+    mem = memory_summary(pj, u, limit)
+    if mem:
+        parts.append(mem)
+    if len(parts) == 1 and parts[0] == "no register":
+        return "nothing"
+    return ", ".join(parts)
+
+
+def wrap(text, width=76, indent=";   "):
+    """Wrap a sentence into the ';   ' comment lines of a header block."""
+    words = text.split()
+    lines, cur = [], ""
+    for w in words:
+        cand = (cur + " " + w) if cur else w
+        if cur and len(indent) + len(cand) + 1 > width:
+            lines.append(indent + cur)
+            cur = w
+        else:
+            cur = cand
+    if cur:
+        lines.append(indent + cur)
+    return lines
+
+
+CLOBBER_HEAD = "; Clobbers:"
+
+
+def clobber_block(pj, u, limit=6):
+    text = clobber_text(pj, u, limit)
+    if not text.endswith("."):
+        text += "."
+    return [CLOBBER_HEAD] + wrap(text)
+
+
+def is_blank(line):
+    """A header line that carries no text: empty, or just the ';' separator."""
+    s = line.strip()
+    return s == "" or s == ";"
+
+
+def insert_clobbers(pj, limit=6):
+    """Return the source with a Clobbers block in every routine header."""
+    plan = []
+    for b in pj.blocks:
+        o, c = b.hdr_lines
+        at = c
+        for i in range(o + 1, c):
+            if pj.src[i].startswith("; PRG offset"):
+                at = i
+                break
+        plan.append((b, at))
+    out, pos = [], 0
+    for b, at in plan:
+        out.extend(pj.src[pos:at])
+        # drop every Clobbers block already in the header (its head, its text
+        # and the blank ';' line that follows it) so the new one replaces them
+        while True:
+            j = len(out)
+            while j > 0 and is_blank(out[j - 1]):
+                j -= 1
+            if j > 0 and out[j - 1].startswith(";   "):
+                k = j
+                while k > 0 and out[k - 1].startswith(";   "):
+                    k -= 1
+                if k > 0 and out[k - 1] == CLOBBER_HEAD:
+                    out = out[:k - 1]
+                    continue
+            elif j > 0 and out[j - 1] == CLOBBER_HEAD:
+                out = out[:j - 1]
+                continue
+            break
+        out.extend(clobber_block(pj, b.unit, limit))
+        out.append(";")
+        pos = at
+    out.extend(pj.src[pos:])
+    return out
+
+
+def main():
+    ap = argparse.ArgumentParser()
+    ap.add_argument("project")
+    ap.add_argument("--write", action="store_true")
+    ap.add_argument("--limit", type=int, default=6)
+    args = ap.parse_args()
+    pj = Project(args.project)
+    analyse(pj)
+    closure(pj)
+
+    if args.write:
+        out = insert_clobbers(pj, args.limit)
+        (pj.dir / "prg.s").write_text("\n".join(out))
+        print(f"{len(pj.blocks)} routine headers given a Clobbers block")
+        return
+
+    print(f"{len(pj.blocks)} routine headers, {len(pj.units)} units")
+    for b in pj.blocks:
+        u = b.unit
+        print(f"--- {b.name}  (hdr {b.hdr_lines[0]+1}-{b.hdr_lines[1]+1}, "
+              f"{len(u.reach) if u else 0} insns reached)")
+        print(f"    clobbers: {clobber_text(pj, u, args.limit) if u else '-'}")
+        print(f"    calls   : {', '.join(sorted(x for x in u.eff_calls if x)) or '-'}"
+              f"{'  [undecoded callee]' if u and u.unknown_call else ''}")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/_tools/describe_routines.py b/_tools/describe_routines.py
new file mode 100644
index 0000000..b5b334b
--- /dev/null
+++ b/_tools/describe_routines.py
@@ -0,0 +1,113 @@
+#!/usr/bin/env python3
+"""Fill in the routine header blocks of prg.s.
+
+`nesdis.py` emits a placeholder header for every routine it finds.  This
+tool replaces the placeholder with a description of what the routine does,
+built from the routine's name and from a table of the hand-written
+descriptions in the project (`routinedesc.tsv`: name  description).
+
+A routine the table does not mention gets a description built from its
+name: the part before the last underscore is the routine it belongs to and
+the part after it is the role the branch plays (OnZero, OnNonzero, Loop, ...).
+
+The header keeps the repo's template:
+
+    ; Global:  what the routine is for
+    ; Local:   how it relates to the routine it belongs to
+    ; Parameters: what the caller passes in
+    ; Returns: what the caller gets back
+    ; Clobbers: what the routine damages
+"""
+import re
+import sys
+from pathlib import Path
+
+prg = Path(sys.argv[1])
+descfile = Path(sys.argv[2]) if len(sys.argv) > 2 else None
+
+descriptions = {}
+if descfile and descfile.is_file():
+    for raw in descfile.read_text().splitlines():
+        line = raw.split("#", 1)[0].strip()
+        if not line or "\t" not in line:
+            continue
+        name, _, text = line.partition("\t")
+        descriptions[name.strip()] = text.strip()
+
+HEADER_RE = re.compile(
+    r"^; -{70,}\n"
+    r"; Routine: (?P\S+)\n"
+    r"; Global: (?P.*)\n"
+    r"; Local: (?P.*)\n"
+    r";        (?P.*)\n"
+    r"; Parameters: (?P.*)\n"
+    r"; Returns: (?P.*)\n"
+    r"; Clobbers: (?P.*)\n"
+    r"; -{70,}$")
+
+ROLE = {
+    "OnZero": "the tested value is zero",
+    "OnNonzero": "the tested value is not zero",
+    "OnCarryClear": "the addition or subtraction did not carry",
+    "OnCarrySet": "the addition or subtraction carried",
+    "OnNegative": "the tested value is negative",
+    "OnNonnegative": "the tested value is not negative",
+    "OnOverflowClear": "the addition did not overflow",
+    "OnOverflowSet": "the addition overflowed",
+    "Loop": "the loop repeats",
+}
+
+
+def describe(name):
+    """Return (global, local) for a routine name."""
+    if name in descriptions:
+        return descriptions[name], ("Called from the routine that owns it; "
+                                   "its state lives in the zero page.")
+    if "_" in name:
+        owner, _, role = name.rpartition("_")
+        meaning = ROLE.get(role, role)
+        return (f"Branch target inside {owner}: taken when {meaning}.",
+                f"Part of {owner}.")
+    if name.startswith("Sub_"):
+        addr = name[4:]
+        return (f"Routine at ${addr}; the dump does not reveal what it does.",
+                "Reached from the code around it.")
+    return (f"Routine {name}.", "Part of the routine it belongs to.")
+
+
+def main():
+    text = prg.read_text()
+    lines = text.split("\n")
+    out = []
+    i = 0
+    changed = 0
+    while i < len(lines):
+        m = HEADER_RE.match("\n".join(lines[i:i + 9]))
+        if not m:
+            out.append(lines[i])
+            i += 1
+            continue
+        name = m.group("name")
+        glob, loc = describe(name)
+        block = [
+            "; " + "-" * 77,
+            f"; Routine: {name}",
+            f"; Global: {glob}",
+        ]
+        if loc:
+            block.append(f"; Local: {loc}")
+        block += [
+            "; Parameters: none - the routine reads its state from the zero page.",
+            "; Returns: none - the result is left in the registers the caller reads.",
+            "; Clobbers: A, X, Y and the zero-page scratch it uses.",
+            "; " + "-" * 77,
+        ]
+        out.extend(block)
+        changed += 1
+        i += 9
+    prg.write_text("\n".join(out))
+    print(f"{changed} routine headers rewritten")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/_tools/make_skeleton.py b/_tools/make_skeleton.py
index 25633e1..09a964d 100644
--- a/_tools/make_skeleton.py
+++ b/_tools/make_skeleton.py
@@ -56,7 +56,10 @@ REPO = Path(__file__).resolve().parent.parent
 # promoted tier uses this exact file in 25 of its 35 projects.
 SYMBOLS_SRC = REPO / "NROM/Bomberman (U)/symbols.inc"
 
-MIRRORING = {0: "Horizontal", 1: "Vertical", 2: "Four-screen", 3: "Four-screen"}
+# Mirroring is header byte 6 bit 0 only.  Bit 1 is the battery flag and bit 3
+# is four-screen VRAM, so neither may be folded into this value: the README
+# carries the arrangement here and the four-screen fact in its own row.
+MIRRORING = {0: "Horizontal", 1: "Vertical"}
 
 # Mapper number -> board name, for the mappers the repository has a folder
 # for.  Anything else is named after its number (`MAPPER`), which is
@@ -117,7 +120,7 @@ def parse_ines(data):
         "prg_banks": prg_banks,
         "chr_banks": chr_banks,
         "mapper": mapper,
-        "mirroring": f6 & 0x03,
+        "mirroring": f6 & 0x01,
         "four_screen": bool(f6 & 0x08),
         "battery": bool(f6 & 0x02),
         "trainer_flag": bool(f6 & 0x04),
diff --git a/_tools/nesdis.py b/_tools/nesdis.py
index be87490..15cf24f 100644
--- a/_tools/nesdis.py
+++ b/_tools/nesdis.py
@@ -294,14 +294,20 @@ def render(prg, base, opcode, pc):
     return insn
 
 
-def trace(prg, base, seeds):
-    """Recursive descent from seeds. Returns (insns, invalid, indirect, targets, overlap)."""
+def trace(prg, base, seeds, blocked=None):
+    """Recursive descent from seeds. Returns (insns, invalid, indirect, targets, overlap).
+
+    `blocked` is an optional set of offsets the fall-through must stop at.
+    It is used for a `jsr` whose target never returns: the bytes behind the
+    call are a table, not code, and decoding them would put labels on data.
+    """
     insns = {}
     targets = set(seeds)
     invalid = []
     indirect = []
     overlap = []
     queue = list(seeds)
+    blocked = blocked or set()
 
     while queue:
         addr = queue.pop(0)
@@ -316,6 +322,8 @@ def trace(prg, base, seeds):
                 break
             if cur < 0 or cur >= len(prg):
                 break
+            if cur in blocked:
+                break
             insn = render(prg, base, prg[cur], cur)
             if insn is None:
                 invalid.append(base + cur)
@@ -682,11 +690,14 @@ def emit_code(prg, base, insns, targets, out, project, semantic, refs=None,
                 text = f"{insn.mnemonic} " + (
                     name_of.get(insn.target) or f"Label_{insn.target:04X}")
             raw = " ".join(f"{b:02X}" for b in prg[i:i + insn.length])
-            # `nop` is only a problem in its multi-byte padding forms; the
-            # official 0xEA implied NOP encodes fine.
+            # ca65 can only encode the *official* implied NOP, $EA.  Every
+            # other NOP-shaped opcode -- the undocumented $1A/$3A/$5A/$7A/
+            # $DA/$FA and the multi-byte padding forms -- must be written as
+            # explicit bytes: ca65 would silently assemble them as $EA and
+            # the rebuild would stop being byte-identical.
             unencodable = (insn.mnemonic in CA65_UNSUPPORTED
                            or (insn.mnemonic in CA65_UNSUPPORTED_MODE
-                               and insn.mode != IMP))
+                               and (insn.mode != IMP or insn.opcode != 0xEA)))
             if unencodable:
                 # ca65 (V2.19) implements no undocumented opcodes, so these cannot be
                 # written as mnemonics. Keep them in the code region as explicit bytes
@@ -783,6 +794,9 @@ def main():
                          "SLO/RLA/SRE/RRA/SAX/LAX/DCP/ISC and friends). Games use these as "
                          "padding, and a tracer that halts on them loses most of the code. "
                          "Default off so existing regen pipelines stay byte-stable.")
+    ap.add_argument("--mapping-note", default="",
+                    help="how the PRG is mapped, for the header's 'PRG mapped at' line "
+                         "(default: 'NROM, mirrored to the upper half')")
     args = ap.parse_args()
 
     # Apply the hardware register names at Pass 1, so the source never shows a
@@ -881,7 +895,8 @@ def main():
     out.append("; preserving byte identity.")
     out.append(";")
     out.append(f"; Vectors: NMI=${nmi:04X}  RESET=${rst:04X}  IRQ=${irq:04X}")
-    out.append(f"; PRG mapped at ${base:04X}-${base + len(prg) - 1:04X} (NROM, mirrored to the upper half)")
+    mapping = args.mapping_note or "NROM, mirrored to the upper half"
+    out.append(f"; PRG mapped at ${base:04X}-${base + len(prg) - 1:04X} ({mapping})")
     out.append(";")
     out.append("; Pass 1 trace provenance (the audit trail behind every classification below):")
     if tables:
diff --git a/_tools/resolve_raw_branches.py b/_tools/resolve_raw_branches.py
index 7d38d18..e99e523 100644
--- a/_tools/resolve_raw_branches.py
+++ b/_tools/resolve_raw_branches.py
@@ -22,7 +22,7 @@ import re
 import sys
 from pathlib import Path
 
-RAW_RE = re.compile(r"^(\s*(?:b[a-z]{2}|bra)\s+)\*\+?\$([0-9A-Fa-f]{1,4})\s*$")
+RAW_RE = re.compile(r"^(\s*(?:b[a-z]{2}|bra)\s+)\*([+-]?)\$([0-9A-Fa-f]{1,4})\s*$")
 CPU_RE = re.compile(r"; CPU:\$([0-9A-Fa-f]{4}) PRG:")
 LABEL_RE = re.compile(r"^([A-Za-z_][A-Za-z0-9_]*):\s*$")
 
@@ -65,8 +65,8 @@ def main():
         addr = addr_of_line.get(i)
         if addr is None:
             continue
-        delta = int(m.group(2), 16)
-        target = addr + delta
+        delta = int(m.group(3), 16)
+        target = addr - delta if m.group(2) == '-' else addr + delta
         fixes.append((i, addr, m.group(0).strip(), target))
 
     if not fixes:
diff --git a/_wip/CNROM/World Class Track Meet (U)/README.md b/_wip/CNROM/World Class Track Meet (U)/README.md
deleted file mode 100644
index 17e6762..0000000
--- a/_wip/CNROM/World Class Track Meet (U)/README.md	
+++ /dev/null
@@ -1,66 +0,0 @@
-# World Class Track Meet (U)
-
-## Status
-
-**Pass 0 skeleton.** The project builds and verifies byte-identical to the
-original ROM, but no disassembly exists yet: `prg.s` is a single
-`.incbin "prg.bin"` of the PRG image.
-
-`make` assembles `header.s`, `prg.s`, `chr.s`, links them with `ld65` and compares the
-result against `rom.nes`:
-
-```
-Byte-identical ROM verified.
-```
-
-## ROM
-
-| Property | Value |
-|----------|-------|
-| Format | iNES |
-| Mapper | 3 |
-| Board | CNROM |
-| Mirroring | Horizontal |
-| Four-screen VRAM | no |
-| Battery | no |
-| PRG | 32 KB (2 x 16 KB), at file offset $0010 |
-| CHR | 32 KB (4 x 8 KB) |
-| Trainer | none |
-| Footer | none |
-| NMI vector | $F803 |
-| RESET vector | $F6FD |
-| IRQ vector | $C0C0 |
-| ROM file | `World Class Track Meet (U).nes` |
-| SHA-256 | `d592d60690234cd9fb6b24a2c566740523bee90bbe7ac1171df3dfbde3ab4e39` |
-
-### Header notes
-
-- none
-
-## Open work
-
-- **Pass 1** - run `nesdis.py` over `prg.bin` to produce the code/data
-  split. The tracer reads the vectors from the last six bytes of the PRG
-  image, so the split seeds correctly.
-- **Pass 1** must emit the canonical audit comment
-  `; CPU:$C123 PRG:0123  AD 21 03` at column 35 for every instruction.
-- **Pass 2** - replace the address-derived `Label_XXXX` names and the raw
-  `$XXXX` call operands.
-- **Pass 3** - semantic zero-page aliases (applied only at the sites where
-  their role is proven) and named data tables.
-- **Promotion** to `NROM//` once Pass 3 is done, as `git mv`.
-
-## Files
-
-| File | Purpose |
-|------|---------|
-| `prg.s` | Pass 0 PRG include (replaced by the Pass 1 disassembly) |
-| `header.s` | iNES header include |
-| `chr.s` | CHR include |
-| `prg.bin` | 32768 bytes (32 KB) PRG image |
-| `chr.bin` | 32768 bytes (32 KB) CHR image |
-| `rom.nes` | byte-identical copy of the original ROM |
-| `linker.cfg` | HEADER / PRG / CHR memory areas |
-| `symbols.inc` | NES hardware register names |
-| `locals.inc` | zero-page aliases (empty at Pass 0) |
-| `Makefile` | build and byte-identity check |
diff --git a/_wip/CNROM/World Class Track Meet (U)/locals.inc b/_wip/CNROM/World Class Track Meet (U)/locals.inc
deleted file mode 100644
index 784d174..0000000
--- a/_wip/CNROM/World Class Track Meet (U)/locals.inc	
+++ /dev/null
@@ -1,4 +0,0 @@
-; Zero-page aliases for this project.
-; Empty at Pass 0.  Pass 1+ adds proven semantic names here;
-; addresses whose role is not yet determined keep the neutral ZpXX
-; form.
diff --git a/_wip/CNROM/World Class Track Meet (U)/prg.s b/_wip/CNROM/World Class Track Meet (U)/prg.s
deleted file mode 100644
index 771e407..0000000
--- a/_wip/CNROM/World Class Track Meet (U)/prg.s	
+++ /dev/null
@@ -1,18 +0,0 @@
-; World Class Track Meet (U) NES disassembly - Pass 0 (build skeleton)
-;
-; The PRG image is included verbatim, so the project rebuilds
-; byte-identical to the original ROM from the first commit.  Pass 1
-; replaces this block with the traced disassembly; no ROM byte is
-; ever deleted or reformatted, only re-classified as code or data.
-;
-; Board:    CNROM
-; PRG:      32 KB at file offset $0010 (the image is bank-switched; it does not fit the 6502 address space as one window)
-; Vectors:  NMI=$F803  RESET=$F6FD  IRQ=$C0C0
-
-.setcpu "6502"
-
-.include "symbols.inc"
-.include "locals.inc"
-
-.segment "PRG"
-    .incbin "prg.bin"
diff --git a/_wip/MAPPER105/Nintendo World Championships 1990 (U) [!]/README.md b/_wip/MAPPER105/Nintendo World Championships 1990 (U) [!]/README.md
index 1f7adca..e832d21 100644
--- a/_wip/MAPPER105/Nintendo World Championships 1990 (U) [!]/README.md	
+++ b/_wip/MAPPER105/Nintendo World Championships 1990 (U) [!]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 105 |
 | Board | MAPPER105 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MAPPER65/Willow (U)/README.md b/_wip/MAPPER65/Willow (U)/README.md
index 1aa357e..b86022f 100644
--- a/_wip/MAPPER65/Willow (U)/README.md	
+++ b/_wip/MAPPER65/Willow (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 65 |
 | Board | MAPPER65 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MAPPER66/Side Pocket (U)/README.md b/_wip/MAPPER66/Side Pocket (U)/README.md
index bd15a4d..ea82d12 100644
--- a/_wip/MAPPER66/Side Pocket (U)/README.md	
+++ b/_wip/MAPPER66/Side Pocket (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 66 |
 | Board | MAPPER66 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MAPPER68/Crystalis (U) [a2]/README.md b/_wip/MAPPER68/Crystalis (U) [a2]/README.md
index ceef39d..1abe56a 100644
--- a/_wip/MAPPER68/Crystalis (U) [a2]/README.md	
+++ b/_wip/MAPPER68/Crystalis (U) [a2]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 68 |
 | Board | MAPPER68 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MAPPER68/Shadowgate (U)/README.md b/_wip/MAPPER68/Shadowgate (U)/README.md
index 0958a09..7d86053 100644
--- a/_wip/MAPPER68/Shadowgate (U)/README.md	
+++ b/_wip/MAPPER68/Shadowgate (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 68 |
 | Board | MAPPER68 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/Makefile b/_wip/MAPPER8/Mermaids of Atlantis (U)/Makefile
deleted file mode 100644
index b254894..0000000
--- a/_wip/MAPPER8/Mermaids of Atlantis (U)/Makefile	
+++ /dev/null
@@ -1,25 +0,0 @@
-CA65 ?= ca65
-LD65 ?= ld65
-
-all: reconstructed.nes verify
-
-prg.o: prg.s symbols.inc locals.inc prg.bin
-	$(CA65) -g -o $@ $<
-
-header.o: header.s header.bin
-	$(CA65) -g -o $@ $<
-
-chr.o: chr.s chr.bin
-	$(CA65) -g -o $@ $<
-
-reconstructed.nes: header.o prg.o chr.o linker.cfg
-	$(LD65) -C linker.cfg -m reconstructed.map -Ln reconstructed.lbl -o $@ header.o prg.o chr.o
-
-verify: reconstructed.nes rom.nes
-	cmp reconstructed.nes rom.nes
-	@echo "Byte-identical ROM verified."
-
-clean:
-	rm -f *.o reconstructed.nes reconstructed_prg.bin reconstructed.map reconstructed.lbl
-
-.PHONY: all verify clean
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/Mermaids of Atlantis (U).nes b/_wip/MAPPER8/Mermaids of Atlantis (U)/Mermaids of Atlantis (U).nes
deleted file mode 100644
index 9f7be3d..0000000
Binary files a/_wip/MAPPER8/Mermaids of Atlantis (U)/Mermaids of Atlantis (U).nes and /dev/null differ
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/README.md b/_wip/MAPPER8/Mermaids of Atlantis (U)/README.md
deleted file mode 100644
index 7513052..0000000
--- a/_wip/MAPPER8/Mermaids of Atlantis (U)/README.md	
+++ /dev/null
@@ -1,61 +0,0 @@
-# Mermaids of Atlantis (U)
-
-## Status
-
-**Pass 1 complete.** The code/data split has been produced by `nesdis.py` and
-the project builds byte-identical to the original ROM. `prg.s` now contains
-traced code with audit comments and `.byte` data blocks for unreached bytes.
-
-`make` assembles `header.s`, `prg.s`, `chr.s`, links them with `ld65` and compares the
-result against `rom.nes`:
-
-```
-Byte-identical ROM verified.
-```
-
-## ROM
-
-| Property | Value |
-|----------|-------|
-| Format | iNES |
-| Mapper | 8 |
-| Board | MAPPER8 |
-| Mirroring | Vertical |
-| Four-screen VRAM | no |
-| Battery | no |
-| PRG | 64 KB (4 x 16 KB), at file offset $0010 |
-| CHR | 64 KB (8 x 8 KB) |
-| Trainer | none |
-| Footer | none |
-| NMI vector | $8189 |
-| RESET vector | $FF00 |
-| IRQ vector | $8036 |
-| ROM file | `Mermaids of Atlantis (U).nes` |
-| SHA-256 | `53f5d22650063aba89b91762f133d1b6b2680c505b193d88a472580d09701122` |
-
-### Header notes
-
-- none
-
-## Open work
-
-- **Pass 2** - replace the address-derived `Label_XXXX` names and the raw
-  `$XXXX` call operands.
-- **Pass 3** - semantic zero-page aliases (applied only at the sites where
-  their role is proven) and named data tables.
-- **Promotion** to `NROM//` once Pass 3 is done, as `git mv`.
-
-## Files
-
-| File | Purpose |
-|------|---------|
-| `prg.s` | Pass 1 PRG disassembly (traced code + data blocks) |
-| `header.s` | iNES header include |
-| `chr.s` | CHR include |
-| `prg.bin` | 65536 bytes (64 KB) PRG image |
-| `chr.bin` | 65536 bytes (64 KB) CHR image |
-| `rom.nes` | byte-identical copy of the original ROM |
-| `linker.cfg` | HEADER / PRG / CHR memory areas |
-| `symbols.inc` | NES hardware register names |
-| `locals.inc` | zero-page aliases (5 ZpXX aliases at Pass 1) |
-| `Makefile` | build and byte-identity check |
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/chr.bin b/_wip/MAPPER8/Mermaids of Atlantis (U)/chr.bin
deleted file mode 100644
index 5b56b57..0000000
Binary files a/_wip/MAPPER8/Mermaids of Atlantis (U)/chr.bin and /dev/null differ
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/derived_names.tsv b/_wip/MAPPER8/Mermaids of Atlantis (U)/derived_names.tsv
deleted file mode 100644
index b3bef9d..0000000
--- a/_wip/MAPPER8/Mermaids of Atlantis (U)/derived_names.tsv	
+++ /dev/null
@@ -1,17 +0,0 @@
-label	Label_801B	Sub_801B_Entry_801B
-label	Label_8036	Sub_8036_Entry_8036
-label	Label_8038	Sub_8036_OnNonnegative_8038
-label	Label_8057	Sub_8036_JoinBranchPaths_8057
-label	Label_8062	Sub_8036_OnNonzero_8062
-label	Label_806B	Sub_8036_OnCarrySet_806B
-label	Label_8083	Sub_8083_StoreAndContinue_8083
-label	Label_8189	Sub_8083_Entry_8189
-label	Label_FF2F	Sub_8764_OnCarryClear_FF2F
-label	Label_FF3E	Sub_FF3E_CallNext_FF3E
-label	Label_FF49	Sub_FF49_JumpNext_FF49
-label	Label_FF4C	Sub_FF4C_StoreAndContinue_FF4C
-label	Label_FF4E	Sub_FF4C_OnNonzero_FF4E
-label	Label_FF50	Sub_FF4C_OnNonzero_FF50
-label	Label_FF57	Sub_FF57_Return_FF57
-label	Label_FF60	Sub_FF57_OnNonzero_FF60
-label	Label_FF62	Sub_FF62_Return_FF62
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/derived_names2.tsv b/_wip/MAPPER8/Mermaids of Atlantis (U)/derived_names2.tsv
deleted file mode 100644
index 8b13789..0000000
--- a/_wip/MAPPER8/Mermaids of Atlantis (U)/derived_names2.tsv	
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/header.bin b/_wip/MAPPER8/Mermaids of Atlantis (U)/header.bin
deleted file mode 100644
index bb66fe1..0000000
Binary files a/_wip/MAPPER8/Mermaids of Atlantis (U)/header.bin and /dev/null differ
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/label_map.tsv b/_wip/MAPPER8/Mermaids of Atlantis (U)/label_map.tsv
deleted file mode 100644
index 9cbe3ab..0000000
--- a/_wip/MAPPER8/Mermaids of Atlantis (U)/label_map.tsv	
+++ /dev/null
@@ -1,17 +0,0 @@
-label	Label_801B	Sub_801B_Entry_801B
-label	Label_8036	Sub_8036_Entry_8036
-label	Label_8038	Sub_8036_OnNonnegative_8038
-label	Label_8057	Sub_8036_JoinBranchPaths_8057
-label	Label_8062	Sub_8036_OnNonzero_8062
-label	Label_806B	Sub_8036_OnCarrySet_806B
-label	Label_8083	Sub_8083_StoreAndContinue_8083
-label	Label_8189	Sub_8083_Entry_8189
-label	Label_FF2F	Sub_8764_OnCarryClear_FF2F
-label	Label_FF3E	Sub_FF3E_CallNext_FF3E
-label	Label_FF49	Sub_FF49_JumpNext_FF49
-label	Label_FF4C	Sub_FF4C_StoreAndContinue_FF4C
-label	Label_FF4E	Sub_FF4C_OnNonzero_FF4E
-label	Label_FF50	Sub_FF4C_OnNonzero_FF50
-label	Label_FF57	Sub_FF57_Return_FF57
-label	Label_FF60	Sub_FF57_OnNonzero_FF60
-label	Label_FF62	Sub_FF62_Return_FF62
\ No newline at end of file
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/linker.cfg b/_wip/MAPPER8/Mermaids of Atlantis (U)/linker.cfg
deleted file mode 100644
index 50fc807..0000000
--- a/_wip/MAPPER8/Mermaids of Atlantis (U)/linker.cfg	
+++ /dev/null
@@ -1,10 +0,0 @@
-MEMORY {
-  HEADER: start = $0000, size = $0010, fill = yes;
-  PRG:    start = $0010, size = $10000, fill = yes;
-  CHR:    start = $10010, size = $10000, fill = yes;
-}
-SEGMENTS {
-  HEADER: load = HEADER, type = ro;
-  PRG:    load = PRG,    type = ro;
-  CHR:    load = CHR,    type = ro;
-}
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/locals.inc b/_wip/MAPPER8/Mermaids of Atlantis (U)/locals.inc
deleted file mode 100644
index 8fe924b..0000000
--- a/_wip/MAPPER8/Mermaids of Atlantis (U)/locals.inc	
+++ /dev/null
@@ -1,37 +0,0 @@
-; Zero-page aliases for this project.
-; Pass 1+ adds proven semantic names here;
-; addresses whose role is not yet determined keep the neutral ZpXX
-; form.
-
-Zp00    = $00
-Zp01    = $01
-Zp02    = $02
-Zp2F    = $2F
-Zp6A    = $6A
-
-; ---------------------------------------------------------------------------
-; Semantic zero-page aliases (Pass 3)
-;
-; Every alias below was read out of this dump's own code.  An address whose
-; role is the same at every reference is renamed everywhere; an address that
-; is reused for several roles keeps the neutral ZpXX name outside the
-; routines where the role is proven, and the per-site choice is recorded in
-; sites.tsv.
-; ---------------------------------------------------------------------------
-
-TempVar0        = $00 ; semantic alias for Zp00 (general-purpose zero-page temp, used at $804D,$8057,$806B)
-TempVar1        = $01 ; semantic alias for Zp01 (general-purpose zero-page temp, used at $804F,$8062,$8066,$806D,$807D)
-TempVar2        = $02 ; semantic alias for Zp02 (general-purpose zero-page temp, used at $8076)
-LoopCounter     = $2F ; semantic alias for Zp2F (incremented at $8083, likely frame/loop counter)
-StatusByte      = $6A ; semantic alias for Zp6A (stored at $8081, likely status/flags register)
-
-; Clean marker section placeholder - will be filled by tools if needed
-; ---------------------------------------------------------------------------
-; Semantic zero-page aliases (Pass 3)
-;
-; Every alias below was read out of this dump's own code.  An address whose
-; role is the same at every reference is renamed everywhere; an address that
-; is reused for several roles keeps the neutral ZpXX name outside the
-; routines where the role is proven, and the per-site choice is recorded in
-; sites.tsv.
-; ---------------------------------------------------------------------------
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/prg.bin b/_wip/MAPPER8/Mermaids of Atlantis (U)/prg.bin
deleted file mode 100644
index 165e616..0000000
Binary files a/_wip/MAPPER8/Mermaids of Atlantis (U)/prg.bin and /dev/null differ
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/prg.s b/_wip/MAPPER8/Mermaids of Atlantis (U)/prg.s
deleted file mode 100644
index 29820ee..0000000
--- a/_wip/MAPPER8/Mermaids of Atlantis (U)/prg.s	
+++ /dev/null
@@ -1,4401 +0,0 @@
-; Mermaids of Atlantis (U) NES disassembly - Pass 1
-;
-; The PRG image is bank-switched (mapper 8):
-;   Banks 0-2 switchable at CPU $8000-$BFFF
-;   Bank 3 fixed at CPU $C000-$FFFF
-; Vectors: NMI=$8189  RESET=$FF00  IRQ=$8036
-;
-; Pass 1 trace provenance:
-;   Bank 3 (fixed at $C000-$FFFF): vectors at end of PRG image
-;   Bank 0 (at $8000-$BFFF): seeded at $8036 (RESET), $8189 (NMI)
-;   Banks 1-2: no traced code reachable from entry points, treated as data
-;
-
-.setcpu "6502"
-
-.include "symbols.inc"
-.include "locals.inc"
-
-.segment "PRG"
-
-
-vector_setup:
-; ---- data $8000-$801A (27 bytes) ----
-    .byte $EA, $EA, $86, $2C, $85, $2D, $A5, $2C, $09, $08, $20, $1B, $80, $20, $25, $80  ; CPU:$8000 PRG:0000  EA EA 86 2C 85 2D A5 2C 09 08 20 1B 80 20 25 80
-    .byte $A5, $2C, $09, $08, $4C, $1B, $80, $85, $2C, $09, $00  ; CPU:$8010 PRG:0010  A5 2C 09 08 4C 1B 80 85 2C 09 00
-; -----------------------------------------------------------------------------
-; Routine: Sub_801B_Entry_801B
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_801B_Entry_801B:
-    tax                            ; CPU:$801B PRG:001B  AA
-    jsr $FF70                      ; CPU:$801C PRG:001C  20 70 FF
-    lda $8026,x                    ; CPU:$801F PRG:001F  BD 26 80
-    sta $8026,x                    ; CPU:$8022 PRG:0022  9D 26 80
-    rts                            ; CPU:$8025 PRG:0025  60
-index_table:
-; ---- data $8026-$8035 (16 bytes) ----
-;   referenced by `lda $8026,x` at $801F (operand $8026 falls inside this region)
-;   referenced by `sta $8026,x` at $8022 (operand $8026 falls inside this region)
-    .byte $00, $01, $02, $03, $04, $05, $06, $07, $10, $11, $12, $13, $14, $15, $16, $17  ; CPU:$8026 PRG:0026  00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17
-; -----------------------------------------------------------------------------
-; Routine: Sub_8036_Entry_8036
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_8036_Entry_8036:
-    sei                            ; CPU:$8036 PRG:0036  78
-    cld                            ; CPU:$8037 PRG:0037  D8
-; -----------------------------------------------------------------------------
-; Routine: Sub_8036_OnNonnegative_8038
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_8036_OnNonnegative_8038:
-    lda $2002                      ; CPU:$8038 PRG:0038  AD 02 20
-    bpl Sub_8036_OnNonnegative_8038                 ; CPU:$803B PRG:003B  10 FB
-    lda #$00                       ; CPU:$803D PRG:003D  A9 00
-    sta $2000                      ; CPU:$803F PRG:003F  8D 00 20
-    sta $2001                      ; CPU:$8042 PRG:0042  8D 01 20
-    ldx #$FF                       ; CPU:$8045 PRG:0045  A2 FF
-    txs                            ; CPU:$8047 PRG:0047  9A
-    lda #$00                       ; CPU:$8048 PRG:0048  A9 00
-    jsr $801B                      ; CPU:$804A PRG:004A  20 1B 80
-    lda #$00                       ; CPU:$804D PRG:004D  A9 00
-    sta Zp00                       ; CPU:$804F PRG:004F  85 00
-    sta Zp01                       ; CPU:$8051 PRG:0051  85 01
-    ldy #$02                       ; CPU:$8053 PRG:0053  A0 02
-    ldx #$06                       ; CPU:$8055 PRG:0055  A2 06
-; -----------------------------------------------------------------------------
-; Routine: Sub_8036_JoinBranchPaths_8057
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_8036_JoinBranchPaths_8057:
-    sta (Zp00),y                   ; CPU:$8057 PRG:0057  91 00
-    iny                            ; CPU:$8059 PRG:0059  C8
-    cpx #$00                       ; CPU:$805A PRG:005A  E0 00
-    bne Sub_8036_OnNonzero_8062                 ; CPU:$805C PRG:005C  D0 04
-    cpy #$E0                       ; CPU:$805E PRG:005E  C0 E0
-    bcs Sub_8036_OnCarrySet_806B                 ; CPU:$8060 PRG:0060  B0 09
-; -----------------------------------------------------------------------------
-; Routine: Sub_8036_OnNonzero_8062
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_8036_OnNonzero_8062:
-    cpy #$00                       ; CPU:$8062 PRG:0062  C0 00
-    bne Sub_8036_JoinBranchPaths_8057                 ; CPU:$8064 PRG:0064  D0 F1
-    inc Zp01                       ; CPU:$8066 PRG:0066  E6 01
-    dex                            ; CPU:$8068 PRG:0068  CA
-    bpl Sub_8036_JoinBranchPaths_8057                 ; CPU:$8069 PRG:0069  10 EC
-; -----------------------------------------------------------------------------
-; Routine: Sub_8036_OnCarrySet_806B
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_8036_OnCarrySet_806B:
-    sta Zp00                       ; CPU:$806B PRG:006B  85 00
-    sta Zp01                       ; CPU:$806D PRG:006D  85 01
-    lda #$00                       ; CPU:$806F PRG:006F  A9 00
-    sta $4015                      ; CPU:$8071 PRG:0071  8D 15 40
-    lda #$1E                       ; CPU:$8074 PRG:0074  A9 1E
-    sta Zp02                       ; CPU:$8076 PRG:0076  85 02
-    lda #$88                       ; CPU:$8078 PRG:0078  A9 88
-    sta $2000                      ; CPU:$807A PRG:007A  8D 00 20
-    sta Zp01                       ; CPU:$807D PRG:007D  85 01
-    lda #$01                       ; CPU:$807F PRG:007F  A9 01
-    sta Zp6A                       ; CPU:$8081 PRG:0081  85 6A
-; -----------------------------------------------------------------------------
-; Routine: Sub_8083_StoreAndContinue_8083
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_8083_StoreAndContinue_8083:
-    inc Zp2F                       ; CPU:$8083 PRG:0083  E6 2F
-    jmp $8083                      ; CPU:$8085 PRG:0085  4C 83 80
-game_data:
-; ---- data $8088-$8188 (257 bytes) ----
-    .byte $08, $09, $0A, $0B, $0C, $0D, $0E, $AD, $B8, $03, $F0, $03, $20, $9D, $84, $AD  ; CPU:$8088 PRG:0088  08 09 0A 0B 0C 0D 0E AD B8 03 F0 03 20 9D 84 AD
-    .byte $00, $03, $F0, $0A, $A0, $00, $A2, $00, $20, $70, $82, $4C, $C4, $80, $A9, $00  ; CPU:$8098 PRG:0098  00 03 F0 0A A0 00 A2 00 20 70 82 4C C4 80 A9 00
-    .byte $8D, $03, $20, $A9, $02, $8D, $14, $40, $AD, $38, $03, $F0, $07, $A2, $00, $A0  ; CPU:$80A8 PRG:00A8  8D 03 20 A9 02 8D 14 40 AD 38 03 F0 07 A2 00 A0
-    .byte $00, $20, $C8, $82, $AD, $B0, $01, $F0, $03, $20, $B1, $81, $A9, $08, $20, $04  ; CPU:$80B8 PRG:00B8  00 20 C8 82 AD B0 01 F0 03 20 B1 81 A9 08 20 04
-    .byte $80, $A5, $01, $29, $7F, $8D, $00, $20, $A5, $03, $8D, $05, $20, $A5, $04, $8D  ; CPU:$80C8 PRG:00C8  80 A5 01 29 7F 8D 00 20 A5 03 8D 05 20 A5 04 8D
-    .byte $05, $20, $A5, $02, $8D, $01, $20, $20, $3F, $81, $AD, $E5, $05, $F0, $0E, $A5  ; CPU:$80D8 PRG:00D8  05 20 A5 02 8D 01 20 20 3F 81 AD E5 05 F0 0E A5
-    .byte $31, $29, $3F, $D0, $08, $AD, $E6, $05, $F0, $03, $CE, $E6, $05, $A9, $00, $8D  ; CPU:$80E8 PRG:00E8  31 29 3F D0 08 AD E6 05 F0 03 CE E6 05 A9 00 8D
-    .byte $00, $03, $85, $36, $A5, $6A, $F0, $06, $20, $DD, $85, $4C, $1F, $81, $20, $88  ; CPU:$80F8 PRG:00F8  00 03 85 36 A5 6A F0 06 20 DD 85 4C 1F 81 20 88
-    .byte $81, $AD, $E5, $05, $F0, $0E, $A9, $00, $85, $26, $85, $27, $85, $2B, $A5, $2A  ; CPU:$8108 PRG:0108  81 AD E5 05 F0 0E A9 00 85 26 85 27 85 2B A5 2A
-    .byte $29, $10, $85, $2A, $20, $86, $97, $20, $C3, $83, $20, $E9, $82, $A9, $02, $20  ; CPU:$8118 PRG:0118  29 10 85 2A 20 86 97 20 C3 83 20 E9 82 A9 02 20
-    .byte $04, $80, $AD, $02, $20, $AD, $DE, $03, $D0, $02, $A5, $01, $8D, $00, $20, $A9  ; CPU:$8128 PRG:0128  04 80 AD 02 20 AD DE 03 D0 02 A5 01 8D 00 20 A9
-    .byte $00, $8D, $DE, $03, $E6, $31, $40, $A9, $01, $8D, $16, $40, $4A, $AA, $8D, $16  ; CPU:$8138 PRG:0138  00 8D DE 03 E6 31 40 A9 01 8D 16 40 4A AA 8D 16
-    .byte $40, $20, $4D, $81, $E8, $A9, $00, $85, $05, $A0, $08, $48, $BD, $16, $40, $85  ; CPU:$8148 PRG:0148  40 20 4D 81 E8 A9 00 85 05 A0 08 48 BD 16 40 85
-    .byte $07, $4A, $4A, $26, $05, $46, $07, $68, $2A, $88, $D0, $EF, $05, $05, $95, $26  ; CPU:$8158 PRG:0158  07 4A 4A 26 05 46 07 68 2A 88 D0 EF 05 05 95 26
-    .byte $55, $28, $35, $26, $95, $2A, $B5, $26, $95, $28, $60, $0A, $A8, $68, $85, $13  ; CPU:$8168 PRG:0168  55 28 35 26 95 2A B5 26 95 28 60 0A A8 68 85 13
-    .byte $68, $85, $14, $C8, $B1, $13, $85, $11, $C8, $B1, $13, $85, $12, $6C, $11, $00  ; CPU:$8178 PRG:0178  68 85 14 C8 B1 13 85 11 C8 B1 13 85 12 6C 11 00
-    .byte $A0  ; CPU:$8188 PRG:0188  A0
-; -----------------------------------------------------------------------------
-; Routine: Sub_8083_Entry_8189
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_8083_Entry_8189:
-    brk                            ; CPU:$8189 PRG:0189  00
-nmi_data:
-; ---- data $818A-$BFFF (15990 bytes) ----
-    .byte $A9, $F8, $99, $00, $02, $C8, $C8, $C8, $C8, $D0, $F7, $60, $0A, $0A, $18, $69  ; CPU:$818A PRG:018A  A9 F8 99 00 02 C8 C8 C8 C8 D0 F7 60 0A 0A 18 69
-    .byte $20, $A2, $00, $8D, $06, $20, $8E, $06, $20, $A0, $03, $A9, $FF, $8D, $07, $20  ; CPU:$819A PRG:019A  20 A2 00 8D 06 20 8E 06 20 A0 03 A9 FF 8D 07 20
-    .byte $CA, $D0, $FA, $88, $10, $F7, $60, $A2, $00, $BD, $B0, $01, $F0, $5C, $85, $12  ; CPU:$81AA PRG:01AA  CA D0 FA 88 10 F7 60 A2 00 BD B0 01 F0 5C 85 12
-    .byte $BD, $B1, $01, $85, $11, $BD, $B2, $01, $85, $20, $85, $21, $BD, $B3, $01, $85  ; CPU:$81BA PRG:01BA  BD B1 01 85 11 BD B2 01 85 20 85 21 BD B3 01 85
-    .byte $22, $BD, $B4, $01, $85, $05, $BD, $B5, $01, $85, $06, $A0, $00, $AD, $02, $20  ; CPU:$81CA PRG:01CA  22 BD B4 01 85 05 BD B5 01 85 06 A0 00 AD 02 20
-    .byte $A5, $12, $8D, $06, $20, $A5, $11, $8D, $06, $20, $B1, $05, $8D, $07, $20, $C8  ; CPU:$81DA PRG:01DA  A5 12 8D 06 20 A5 11 8D 06 20 B1 05 8D 07 20 C8
-    .byte $C6, $20, $D0, $F6, $C6, $22, $F0, $12, $A5, $21, $85, $20, $A5, $11, $18, $69  ; CPU:$81EA PRG:01EA  C6 20 D0 F6 C6 22 F0 12 A5 21 85 20 A5 11 18 69
-    .byte $20, $85, $11, $90, $D8, $E6, $12, $4C, $D7, $81, $E0, $06, $B0, $07, $A2, $06  ; CPU:$81FA PRG:01FA  20 85 11 90 D8 E6 12 4C D7 81 E0 06 B0 07 A2 06
-    .byte $BD, $B0, $01, $D0, $A9, $A9, $00, $8D, $B0, $01, $60, $85, $11, $BD, $01, $03  ; CPU:$820A PRG:020A  BD B0 01 D0 A9 A9 00 8D B0 01 60 85 11 BD 01 03
-    .byte $85, $12, $BD, $02, $03, $85, $13, $BD, $03, $03, $85, $14, $E8, $E8, $E8, $E8  ; CPU:$821A PRG:021A  85 12 BD 02 03 85 13 BD 03 03 85 14 E8 E8 E8 E8
-    .byte $A5, $12, $C9, $24, $F0, $40, $A0, $02, $AD, $02, $20, $A5, $12, $8D, $06, $20  ; CPU:$822A PRG:022A  A5 12 C9 24 F0 40 A0 02 AD 02 20 A5 12 8D 06 20
-    .byte $A5, $11, $8D, $06, $20, $B1, $13, $8D, $07, $20, $C8, $B1, $13, $8D, $07, $20  ; CPU:$823A PRG:023A  A5 11 8D 06 20 B1 13 8D 07 20 C8 B1 13 8D 07 20
-    .byte $C8, $A9, $20, $18, $65, $11, $85, $11, $A5, $12, $69, $00, $85, $12, $AD, $02  ; CPU:$824A PRG:024A  C8 A9 20 18 65 11 85 11 A5 12 69 00 85 12 AD 02
-    .byte $20, $A5, $12, $8D, $06, $20, $A5, $11, $8D, $06, $20, $B1, $13, $8D, $07, $20  ; CPU:$825A PRG:025A  20 A5 12 8D 06 20 A5 11 8D 06 20 B1 13 8D 07 20
-    .byte $C8, $B1, $13, $8D, $07, $20, $BD, $00, $03, $D0, $A0, $60, $85, $11, $BD, $39  ; CPU:$826A PRG:026A  C8 B1 13 8D 07 20 BD 00 03 D0 A0 60 85 11 BD 39
-    .byte $03, $85, $12, $BD, $3A, $03, $85, $13, $BD, $3B, $03, $85, $14, $8A, $18, $69  ; CPU:$827A PRG:027A  03 85 12 BD 3A 03 85 13 BD 3B 03 85 14 8A 18 69
-    .byte $04, $85, $22, $A0, $00, $B1, $13, $85, $21, $85, $1F, $C8, $B1, $13, $85, $25  ; CPU:$828A PRG:028A  04 85 22 A0 00 B1 13 85 21 85 1F C8 B1 13 85 25
-    .byte $AE, $02, $20, $A5, $12, $8D, $06, $20, $A5, $11, $8D, $06, $20, $C8, $B1, $13  ; CPU:$829A PRG:029A  AE 02 20 A5 12 8D 06 20 A5 11 8D 06 20 C8 B1 13
-    .byte $8D, $07, $20, $C6, $1F, $D0, $F6, $A9, $20, $18, $65, $11, $85, $11, $A5, $12  ; CPU:$82AA PRG:02AA  8D 07 20 C6 1F D0 F6 A9 20 18 65 11 85 11 A5 12
-    .byte $69, $00, $85, $12, $A5, $21, $85, $1F, $C6, $25, $D0, $D4, $A6, $22, $BD, $38  ; CPU:$82BA PRG:02BA  69 00 85 12 A5 21 85 1F C6 25 D0 D4 A6 22 BD 38
-    .byte $03, $D0, $A9, $A9, $00, $85, $37, $8D, $38, $03, $60, $A9, $00, $A2, $08, $46  ; CPU:$82CA PRG:02CA  03 D0 A9 A9 00 85 37 8D 38 03 60 A9 00 A2 08 46
-    .byte $13, $90, $03, $18, $65, $15, $4A, $66, $17, $CA, $D0, $F3, $85, $18, $60, $A2  ; CPU:$82DA PRG:02DA  13 90 03 18 65 15 4A 66 17 CA D0 F3 85 18 60 A2
-    .byte $00, $86, $1F, $A5, $31, $29, $01, $D0, $04, $A9, $63, $D0, $02, $A9, $01, $85  ; CPU:$82EA PRG:02EA  00 86 1F A5 31 29 01 D0 04 A9 63 D0 02 A9 01 85
-    .byte $1E, $BD, $58, $03, $F0, $03, $20, $0C, $83, $E6, $1F, $A6, $1F, $E0, $10, $90  ; CPU:$82FA PRG:02FA  1E BD 58 03 F0 03 20 0C 83 E6 1F A6 1F E0 10 90
-    .byte $F0, $60, $BD, $A8, $03, $85, $30, $A5, $1F, $A8, $0A, $AA, $BD, $68, $03, $85  ; CPU:$830A PRG:030A  F0 60 BD A8 03 85 30 A5 1F A8 0A AA BD 68 03 85
-    .byte $11, $BD, $69, $03, $85, $12, $B9, $88, $03, $85, $05, $85, $09, $B9, $98, $03  ; CPU:$831A PRG:031A  11 BD 69 03 85 12 B9 88 03 85 05 85 09 B9 98 03
-    .byte $85, $07, $A0, $00, $B1, $11, $85, $13, $C8, $B1, $11, $85, $14, $A0, $00, $B1  ; CPU:$832A PRG:032A  85 07 A0 00 B1 11 85 13 C8 B1 11 85 14 A0 00 B1
-    .byte $13, $85, $1B, $85, $1C, $C8, $B1, $13, $85, $1D, $C8, $84, $20, $84, $22, $A5  ; CPU:$833A PRG:033A  13 85 1B 85 1C C8 B1 13 85 1D C8 84 20 84 22 A5
-    .byte $1E, $0A, $0A, $AA, $A5, $07, $9D, $00, $02, $A5, $09, $9D, $03, $02, $A5, $30  ; CPU:$834A PRG:034A  1E 0A 0A AA A5 07 9D 00 02 A5 09 9D 03 02 A5 30
-    .byte $9D, $02, $02, $A5, $30, $29, $40, $F0, $18, $A5, $20, $18, $65, $1C, $A8, $88  ; CPU:$835A PRG:035A  9D 02 02 A5 30 29 40 F0 18 A5 20 18 65 1C A8 88
-    .byte $B1, $13, $9D, $01, $02, $C9, $FF, $D0, $05, $A9, $F8, $9D, $00, $02, $4C, $8D  ; CPU:$836A PRG:036A  B1 13 9D 01 02 C9 FF D0 05 A9 F8 9D 00 02 4C 8D
-    .byte $83, $A4, $22, $B1, $13, $9D, $01, $02, $C9, $FF, $D0, $05, $A9, $F8, $9D, $00  ; CPU:$837A PRG:037A  83 A4 22 B1 13 9D 01 02 C9 FF D0 05 A9 F8 9D 00
-    .byte $02, $E6, $22, $A5, $09, $18, $69, $08, $85, $09, $A5, $31, $29, $01, $D0, $05  ; CPU:$838A PRG:038A  02 E6 22 A5 09 18 69 08 85 09 A5 31 29 01 D0 05
-    .byte $C6, $1E, $4C, $A1, $83, $E6, $1E, $C6, $1C, $D0, $A4, $C6, $1D, $F0, $19, $A5  ; CPU:$839A PRG:039A  C6 1E 4C A1 83 E6 1E C6 1C D0 A4 C6 1D F0 19 A5
-    .byte $1B, $85, $1C, $18, $65, $20, $85, $20, $85, $22, $A5, $07, $18, $69, $08, $85  ; CPU:$83AA PRG:03AA  1B 85 1C 18 65 20 85 20 85 22 A5 07 18 69 08 85
-    .byte $07, $A5, $05, $85, $09, $4C, $49, $83, $60, $A2, $00, $86, $1B, $BD, $58, $03  ; CPU:$83BA PRG:03BA  07 A5 05 85 09 4C 49 83 60 A2 00 86 1B BD 58 03
-    .byte $F0, $03, $20, $0C, $84, $E6, $1B, $A6, $1B, $E0, $10, $90, $F0, $60, $A5, $31  ; CPU:$83CA PRG:03CA  F0 03 20 0C 84 E6 1B A6 1B E0 10 90 F0 60 A5 31
-    .byte $29, $3F, $D0, $2D, $BD, $68, $03, $85, $11, $BD, $69, $03, $85, $12, $A0, $02  ; CPU:$83DA PRG:03DA  29 3F D0 2D BD 68 03 85 11 BD 69 03 85 12 A0 02
-    .byte $B1, $11, $C9, $FF, $D0, $09, $C8, $B1, $11, $C8, $C9, $FF, $D0, $01, $60, $A5  ; CPU:$83EA PRG:03EA  B1 11 C9 FF D0 09 C8 B1 11 C8 C9 FF D0 01 60 A5
-    .byte $1B, $0A, $AA, $BD, $68, $03, $18, $69, $02, $9D, $68, $03, $90, $03, $FE, $69  ; CPU:$83FA PRG:03FA  1B 0A AA BD 68 03 18 69 02 9D 68 03 90 03 FE 69
-    .byte $03, $60, $A5, $31, $29, $0F, $D0, $F9, $A5, $1B, $0A, $AA, $BD, $68, $03, $18  ; CPU:$840A PRG:040A  03 60 A5 31 29 0F D0 F9 A5 1B 0A AA BD 68 03 18
-    .byte $69, $02, $9D, $68, $03, $90, $03, $FE, $69, $03, $BD, $68, $03, $85, $11, $BD  ; CPU:$841A PRG:041A  69 02 9D 68 03 90 03 FE 69 03 BD 68 03 85 11 BD
-    .byte $69, $03, $85, $12, $A0, $00, $B1, $11, $C9, $FF, $D0, $1B, $C8, $B1, $11, $C8  ; CPU:$842A PRG:042A  69 03 85 12 A0 00 B1 11 C9 FF D0 1B C8 B1 11 C8
-    .byte $C9, $FF, $D0, $13, $A4, $1B, $B9, $58, $03, $0A, $A8, $B9, $16, $F2, $9D, $68  ; CPU:$843A PRG:043A  C9 FF D0 13 A4 1B B9 58 03 0A A8 B9 16 F2 9D 68
-    .byte $03, $B9, $17, $F2, $9D, $69, $03, $60, $A2, $00, $BD, $58, $03, $F0, $06, $E8  ; CPU:$844A PRG:044A  03 B9 17 F2 9D 69 03 60 A2 00 BD 58 03 F0 06 E8
-    .byte $E0, $10, $90, $F6, $60, $A4, $11, $B9, $06, $F2, $9D, $A8, $03, $A5, $11, $9D  ; CPU:$845A PRG:045A  E0 10 90 F6 60 A4 11 B9 06 F2 9D A8 03 A5 11 9D
-    .byte $58, $03, $86, $1B, $0A, $A8, $B9, $36, $F2, $9D, $88, $03, $B9, $37, $F2, $9D  ; CPU:$846A PRG:046A  58 03 86 1B 0A A8 B9 36 F2 9D 88 03 B9 37 F2 9D
-    .byte $98, $03, $8A, $0A, $AA, $B9, $16, $F2, $9D, $68, $03, $B9, $17, $F2, $9D, $69  ; CPU:$847A PRG:047A  98 03 8A 0A AA B9 16 F2 9D 68 03 B9 17 F2 9D 69
-    .byte $03, $60, $A9, $40, $85, $1F, $A0, $00, $B1, $11, $99, $E2, $04, $C8, $C6, $1F  ; CPU:$848A PRG:048A  03 60 A9 40 85 1F A0 00 B1 11 99 E2 04 C8 C6 1F
-    .byte $D0, $F6, $60, $AC, $02, $20, $A0, $23, $A2, $00, $8C, $06, $20, $8D, $06, $20  ; CPU:$849A PRG:049A  D0 F6 60 AC 02 20 A0 23 A2 00 8C 06 20 8D 06 20
-    .byte $E8, $BD, $B8, $03, $8D, $07, $20, $E8, $BD, $B8, $03, $D0, $ED, $A9, $00, $8D  ; CPU:$84AA PRG:04AA  E8 BD B8 03 8D 07 20 E8 BD B8 03 D0 ED A9 00 8D
-    .byte $B8, $03, $85, $38, $60, $85, $20, $0A, $AA, $BD, $2B, $F7, $85, $19, $BD, $2C  ; CPU:$84BA PRG:04BA  B8 03 85 38 60 85 20 0A AA BD 2B F7 85 19 BD 2C
-    .byte $F7, $85, $1A, $A5, $6F, $D0, $01, $60, $A5, $34, $D0, $05, $C6, $19, $C6, $19  ; CPU:$84CA PRG:04CA  F7 85 1A A5 6F D0 01 60 A5 34 D0 05 C6 19 C6 19
-    .byte $60, $A5, $19, $18, $69, $0E, $85, $19, $60, $A5, $19, $0A, $A5, $1A, $2A, $2A  ; CPU:$84DA PRG:04DA  60 A5 19 18 69 0E 85 19 60 A5 19 0A A5 1A 2A 2A
-    .byte $2A, $2A, $29, $38, $85, $20, $A5, $19, $6A, $6A, $29, $07, $05, $20, $A8, $18  ; CPU:$84EA PRG:04EA  2A 2A 29 38 85 20 A5 19 6A 6A 29 07 05 20 A8 18
-    .byte $69, $C0, $A6, $38, $9D, $B8, $03, $E6, $38, $A5, $19, $29, $42, $6A, $6A, $6A  ; CPU:$84FA PRG:04FA  69 C0 A6 38 9D B8 03 E6 38 A5 19 29 42 6A 6A 6A
-    .byte $6A, $6A, $85, $20, $A5, $19, $6A, $29, $01, $05, $20, $29, $03, $AA, $A5, $1B  ; CPU:$850A PRG:050A  6A 6A 85 20 A5 19 6A 29 01 05 20 29 03 AA A5 1B
-    .byte $C9, $03, $90, $16, $B9, $E2, $04, $1D, $4E, $85, $99, $E2, $04, $A6, $38, $9D  ; CPU:$851A PRG:051A  C9 03 90 16 B9 E2 04 1D 4E 85 99 E2 04 A6 38 9D
-    .byte $B8, $03, $A9, $00, $9D, $B9, $03, $E6, $38, $60, $B9, $E2, $04, $3D, $4A, $85  ; CPU:$852A PRG:052A  B8 03 A9 00 9D B9 03 E6 38 60 B9 E2 04 3D 4A 85
-    .byte $99, $E2, $04, $A6, $38, $9D, $B8, $03, $A9, $00, $9D, $B9, $03, $E6, $38, $60  ; CPU:$853A PRG:053A  99 E2 04 A6 38 9D B8 03 A9 00 9D B9 03 E6 38 60
-    .byte $FC, $F3, $CF, $3F, $03, $0C, $30, $C0, $A5, $31, $65, $2F, $65, $3D, $29, $3F  ; CPU:$854A PRG:054A  FC F3 CF 3F 03 0C 30 C0 A5 31 65 2F 65 3D 29 3F
-    .byte $85, $3D, $60, $A5, $11, $A8, $A6, $12, $9D, $58, $03, $B9, $06, $F2, $9D, $A8  ; CPU:$855A PRG:055A  85 3D 60 A5 11 A8 A6 12 9D 58 03 B9 06 F2 9D A8
-    .byte $03, $98, $0A, $A8, $B9, $36, $F2, $9D, $88, $03, $B9, $37, $F2, $9D, $98, $03  ; CPU:$856A PRG:056A  03 98 0A A8 B9 36 F2 9D 88 03 B9 37 F2 9D 98 03
-    .byte $8A, $0A, $AA, $B9, $16, $F2, $9D, $68, $03, $B9, $17, $F2, $9D, $69, $03, $60  ; CPU:$857A PRG:057A  8A 0A AA B9 16 F2 9D 68 03 B9 17 F2 9D 69 03 60
-    .byte $A6, $36, $A5, $19, $9D, $00, $03, $E8, $A5, $1A, $9D, $00, $03, $E8, $A5, $17  ; CPU:$858A PRG:058A  A6 36 A5 19 9D 00 03 E8 A5 1A 9D 00 03 E8 A5 17
-    .byte $9D, $00, $03, $E8, $A5, $18, $9D, $00, $03, $E8, $86, $36, $60, $A6, $37, $A5  ; CPU:$859A PRG:059A  9D 00 03 E8 A5 18 9D 00 03 E8 86 36 60 A6 37 A5
-    .byte $19, $9D, $38, $03, $E8, $A5, $1A, $9D, $38, $03, $E8, $A5, $17, $9D, $38, $03  ; CPU:$85AA PRG:05AA  19 9D 38 03 E8 A5 1A 9D 38 03 E8 A5 17 9D 38 03
-    .byte $E8, $A5, $18, $9D, $38, $03, $E8, $86, $37, $60, $AD, $02, $20, $A9, $3F, $8D  ; CPU:$85BA PRG:05BA  E8 A5 18 9D 38 03 E8 86 37 60 AD 02 20 A9 3F 8D
-    .byte $06, $20, $A9, $00, $8D, $06, $20, $A8, $B1, $11, $8D, $07, $20, $C8, $C0, $20  ; CPU:$85CA PRG:05CA  06 20 A9 00 8D 06 20 A8 B1 11 8D 07 20 C8 C0 20
-    .byte $90, $F6, $60, $E6, $75, $A5, $6A, $D0, $01, $60, $20, $E9, $82, $A5, $6A, $20  ; CPU:$85DA PRG:05DA  90 F6 60 E6 75 A5 6A D0 01 60 20 E9 82 A5 6A 20
-    .byte $73, $81, $E3, $85, $06, $86, $5F, $8A, $2A, $C6, $A7, $C2, $D8, $C6, $AF, $8B  ; CPU:$85EA PRG:05EA  73 81 E3 85 06 86 5F 8A 2A C6 A7 C2 D8 C6 AF 8B
-    .byte $55, $8F, $42, $98, $B9, $94, $21, $96, $2E, $96, $1B, $97, $A5, $6C, $D0, $6C  ; CPU:$85FA PRG:05FA  55 8F 42 98 B9 94 21 96 2E 96 1B 97 A5 6C D0 6C
-    .byte $A9, $00, $8D, $E7, $05, $8D, $E8, $05, $8D, $E9, $05, $A9, $02, $20, $88, $81  ; CPU:$860A PRG:060A  A9 00 8D E7 05 8D E8 05 8D E9 05 A9 02 20 88 81
-    .byte $E6, $6C, $A9, $00, $85, $75, $85, $76, $85, $2E, $A9, $00, $20, $04, $80, $A9  ; CPU:$861A PRG:061A  E6 6C A9 00 85 75 85 76 85 2E A9 00 20 04 80 A9
-    .byte $00, $8D, $01, $02, $A9, $C0, $8D, $03, $02, $A9, $45, $8D, $00, $02, $A9, $E0  ; CPU:$862A PRG:062A  00 8D 01 02 A9 C0 8D 03 02 A9 45 8D 00 02 A9 E0
-    .byte $8D, $02, $02, $A9, $0F, $8D, $E6, $05, $8D, $E5, $05, $A5, $00, $D0, $07, $20  ; CPU:$863A PRG:063A  8D 02 02 A9 0F 8D E6 05 8D E5 05 A5 00 D0 07 20
-    .byte $34, $8E, $A9, $01, $85, $00, $A2, $00, $20, $84, $90, $A9, $20, $85, $78, $A5  ; CPU:$864A PRG:064A  34 8E A9 01 85 00 A2 00 20 84 90 A9 20 85 78 A5
-    .byte $01, $29, $88, $09, $88, $85, $01, $A9, $03, $8D, $DE, $00, $A9, $01, $8D, $DD  ; CPU:$865A PRG:065A  01 29 88 09 88 85 01 A9 03 8D DE 00 A9 01 8D DD
-    .byte $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $60, $AD, $02, $20, $29  ; CPU:$866A PRG:066A  00 A9 05 20 04 80 A9 00 8D DD 00 60 AD 02 20 29
-    .byte $40, $D0, $F9, $AD, $02, $20, $29, $40, $F0, $F9, $A0, $18, $88, $D0, $FD, $AD  ; CPU:$867A PRG:067A  40 D0 F9 AD 02 20 29 40 F0 F9 A0 18 88 D0 FD AD
-    .byte $02, $20, $A9, $98, $8D, $DE, $03, $8D, $00, $20, $AD, $E6, $05, $D0, $38, $A9  ; CPU:$868A PRG:068A  02 20 A9 98 8D DE 03 8D 00 20 AD E6 05 D0 38 A9
-    .byte $00, $85, $6C, $A9, $03, $85, $6A, $A9, $02, $85, $5B, $85, $5D, $85, $5A, $85  ; CPU:$869A PRG:069A  00 85 6C A9 03 85 6A A9 02 85 5B 85 5D 85 5A 85
-    .byte $5C, $A9, $5A, $8D, $E6, $05, $A9, $00, $8D, $E2, $05, $8D, $E1, $05, $8D, $E4  ; CPU:$86AA PRG:06AA  5C A9 5A 8D E6 05 A9 00 8D E2 05 8D E1 05 8D E4
-    .byte $05, $8D, $E3, $05, $A9, $00, $85, $95, $AD, $EF, $06, $29, $01, $85, $6F, $49  ; CPU:$86BA PRG:06BA  05 8D E3 05 A9 00 85 95 AD EF 06 29 01 85 6F 49
-    .byte $01, $85, $96, $EE, $EF, $06, $60, $20, $FC, $89, $AD, $E9, $05, $D0, $53, $AD  ; CPU:$86CA PRG:06CA  01 85 96 EE EF 06 60 20 FC 89 AD E9 05 D0 53 AD
-    .byte $E8, $05, $D0, $12, $A5, $2A, $C9, $20, $D0, $48, $A9, $01, $8D, $E8, $05, $A9  ; CPU:$86DA PRG:06DA  E8 05 D0 12 A5 2A C9 20 D0 48 A9 01 8D E8 05 A9
-    .byte $00, $85, $2A, $8D, $E7, $05, $AD, $E8, $05, $F0, $37, $AE, $E7, $05, $A5, $2A  ; CPU:$86EA PRG:06EA  00 85 2A 8D E7 05 AD E8 05 F0 37 AE E7 05 A5 2A
-    .byte $F0, $30, $DD, $6E, $87, $F0, $08, $A9, $01, $8D, $E9, $05, $4C, $2C, $87, $EE  ; CPU:$86FA PRG:06FA  F0 30 DD 6E 87 F0 08 A9 01 8D E9 05 4C 2C 87 EE
-    .byte $E7, $05, $AD, $E7, $05, $C9, $0C, $90, $19, $A9, $01, $85, $99, $A9, $00, $85  ; CPU:$870A PRG:070A  E7 05 AD E7 05 C9 0C 90 19 A9 01 85 99 A9 00 85
-    .byte $91, $85, $97, $85, $6C, $8D, $E5, $05, $A9, $08, $85, $6A, $A9, $04, $20, $63  ; CPU:$871A PRG:071A  91 85 97 85 6C 8D E5 05 A9 08 85 6A A9 04 20 63
-    .byte $86, $60, $A5, $2A, $29, $10, $F0, $1C, $E6, $6A, $A9, $00, $85, $6C, $8D, $B0  ; CPU:$872A PRG:072A  86 60 A5 2A 29 10 F0 1C E6 6A A9 00 85 6C 8D B0
-    .byte $01, $A0, $00, $8C, $E5, $05, $8C, $E6, $05, $A9, $F8, $99, $00, $02, $C8, $C8  ; CPU:$873A PRG:073A  01 A0 00 8C E5 05 8C E6 05 A9 F8 99 00 02 C8 C8
-    .byte $C8, $C8, $D0, $F7, $60, $01, $A5, $2A, $29, $10, $F0, $17, $A9, $00, $85, $6C  ; CPU:$874A PRG:074A  C8 C8 D0 F7 60 01 A5 2A 29 10 F0 17 A9 00 85 6C
-    .byte $85, $6A, $8D, $B0, $01, $8D, $00, $20, $8D, $01, $20, $A5, $01, $29, $88, $09  ; CPU:$875A PRG:075A  85 6A 8D B0 01 8D 00 20 8D 01 20 A5 01 29 88 09
-    .byte $88, $85, $01, $60, $08, $08, $04, $04, $02, $02, $01, $01, $80, $80, $40, $40  ; CPU:$876A PRG:076A  88 85 01 60 08 08 04 04 02 02 01 01 80 80 40 40
-    .byte $A2, $00, $A0, $00, $BD, $EC, $87, $99, $00, $02, $99, $F8, $02, $C8, $E8, $E0  ; CPU:$877A PRG:077A  A2 00 A0 00 BD EC 87 99 00 02 99 F8 02 C8 E8 E0
-    .byte $08, $90, $F1, $A9, $21, $8D, $FA, $02, $A9, $22, $8D, $FE, $02, $A0, $00, $A5  ; CPU:$878A PRG:078A  08 90 F1 A9 21 8D FA 02 A9 22 8D FE 02 A0 00 A5
-    .byte $77, $C9, $40, $B0, $02, $A0, $F8, $0A, $AA, $BD, $F4, $87, $18, $69, $7A, $99  ; CPU:$879A PRG:079A  77 C9 40 B0 02 A0 F8 0A AA BD F4 87 18 69 7A 99
-    .byte $03, $02, $BD, $F5, $87, $18, $69, $60, $99, $00, $02, $E6, $77, $A5, $77, $C9  ; CPU:$87AA PRG:07AA  03 02 BD F5 87 18 69 60 99 00 02 E6 77 A5 77 C9
-    .byte $80, $90, $04, $A9, $00, $85, $77, $A0, $FC, $A5, $78, $C9, $40, $B0, $02, $A0  ; CPU:$87BA PRG:07BA  80 90 04 A9 00 85 77 A0 FC A5 78 C9 40 B0 02 A0
-    .byte $04, $0A, $AA, $BD, $F4, $88, $18, $69, $7A, $99, $03, $02, $BD, $F5, $88, $18  ; CPU:$87CA PRG:07CA  04 0A AA BD F4 88 18 69 7A 99 03 02 BD F5 88 18
-    .byte $69, $60, $99, $00, $02, $C6, $78, $A5, $78, $C9, $81, $90, $04, $A9, $7F, $85  ; CPU:$87DA PRG:07DA  69 60 99 00 02 C6 78 A5 78 C9 81 90 04 A9 7F 85
-    .byte $78, $60, $F8, $BF, $01, $00, $F8, $BF, $02, $00, $45, $29, $44, $2A, $43, $2B  ; CPU:$87EA PRG:07EA  78 60 F8 BF 01 00 F8 BF 02 00 45 29 44 2A 43 2B
-    .byte $42, $2B, $41, $2C, $3F, $2D, $3E, $2D, $3C, $2E, $3A, $2E, $38, $2E, $36, $2E  ; CPU:$87FA PRG:07FA  42 2B 41 2C 3F 2D 3E 2D 3C 2E 3A 2E 38 2E 36 2E
-    .byte $33, $2E, $31, $2E, $2E, $2E, $2C, $2D, $29, $2D, $26, $2C, $23, $2C, $20, $2B  ; CPU:$880A PRG:080A  33 2E 31 2E 2E 2E 2C 2D 29 2D 26 2C 23 2C 20 2B
-    .byte $1D, $2A, $1A, $29, $17, $28, $13, $27, $10, $25, $0C, $24, $09, $22, $06, $21  ; CPU:$881A PRG:081A  1D 2A 1A 29 17 28 13 27 10 25 0C 24 09 22 06 21
-    .byte $02, $1F, $FF, $1E, $FB, $1C, $F8, $1A, $F4, $18, $F1, $16, $EE, $14, $EA, $12  ; CPU:$882A PRG:082A  02 1F FF 1E FB 1C F8 1A F4 18 F1 16 EE 14 EA 12
-    .byte $E7, $10, $E4, $0E, $E1, $0C, $DE, $09, $DB, $07, $D8, $05, $D5, $03, $D2, $00  ; CPU:$883A PRG:083A  E7 10 E4 0E E1 0C DE 09 DB 07 D8 05 D5 03 D2 00
-    .byte $D0, $FE, $CD, $FC, $CB, $FA, $C9, $F7, $C7, $F5, $C5, $F3, $C3, $F1, $C1, $EF  ; CPU:$884A PRG:084A  D0 FE CD FC CB FA C9 F7 C7 F5 C5 F3 C3 F1 C1 EF
-    .byte $C0, $ED, $BE, $EB, $BD, $E9, $BC, $E7, $BB, $E5, $BB, $E3, $BA, $E1, $BA, $E0  ; CPU:$885A PRG:085A  C0 ED BE EB BD E9 BC E7 BB E5 BB E3 BA E1 BA E0
-    .byte $B9, $DE, $B9, $DD, $BA, $DB, $BA, $DA, $BA, $D9, $BB, $D7, $BC, $D6, $BD, $D5  ; CPU:$886A PRG:086A  B9 DE B9 DD BA DB BA DA BA D9 BB D7 BC D6 BD D5
-    .byte $BE, $D5, $BF, $D4, $C1, $D3, $C2, $D3, $C4, $D2, $C6, $D2, $C8, $D2, $CA, $D2  ; CPU:$887A PRG:087A  BE D5 BF D4 C1 D3 C2 D3 C4 D2 C6 D2 C8 D2 CA D2
-    .byte $CD, $D2, $CF, $D2, $D2, $D2, $D4, $D3, $D7, $D3, $DA, $D4, $DD, $D4, $E0, $D5  ; CPU:$888A PRG:088A  CD D2 CF D2 D2 D2 D4 D3 D7 D3 DA D4 DD D4 E0 D5
-    .byte $E3, $D6, $E6, $D7, $E9, $D8, $ED, $D9, $F0, $DB, $F4, $DC, $F7, $DE, $FA, $DF  ; CPU:$889A PRG:089A  E3 D6 E6 D7 E9 D8 ED D9 F0 DB F4 DC F7 DE FA DF
-    .byte $FE, $E1, $01, $E2, $05, $E4, $08, $E6, $0C, $E8, $0F, $EA, $12, $EC, $16, $EE  ; CPU:$88AA PRG:08AA  FE E1 01 E2 05 E4 08 E6 0C E8 0F EA 12 EC 16 EE
-    .byte $19, $F0, $1C, $F2, $1F, $F4, $22, $F7, $25, $F9, $28, $FB, $2B, $FD, $2E, $00  ; CPU:$88BA PRG:08BA  19 F0 1C F2 1F F4 22 F7 25 F9 28 FB 2B FD 2E 00
-    .byte $30, $02, $33, $04, $35, $06, $37, $09, $39, $0B, $3B, $0D, $3D, $0F, $3F, $11  ; CPU:$88CA PRG:08CA  30 02 33 04 35 06 37 09 39 0B 3B 0D 3D 0F 3F 11
-    .byte $40, $13, $42, $15, $43, $17, $44, $19, $45, $1B, $45, $1D, $46, $1F, $46, $20  ; CPU:$88DA PRG:08DA  40 13 42 15 43 17 44 19 45 1B 45 1D 46 1F 46 20
-    .byte $47, $22, $47, $23, $46, $25, $46, $26, $46, $27, $BA, $27, $BA, $26, $BA, $25  ; CPU:$88EA PRG:08EA  47 22 47 23 46 25 46 26 46 27 BA 27 BA 26 BA 25
-    .byte $B9, $23, $B9, $22, $BA, $20, $BA, $1F, $BB, $1D, $BB, $1B, $BC, $19, $BD, $17  ; CPU:$88FA PRG:08FA  B9 23 B9 22 BA 20 BA 1F BB 1D BB 1B BC 19 BD 17
-    .byte $BE, $15, $C0, $13, $C1, $11, $C3, $0F, $C5, $0D, $C7, $0B, $C9, $09, $CB, $06  ; CPU:$890A PRG:090A  BE 15 C0 13 C1 11 C3 0F C5 0D C7 0B C9 09 CB 06
-    .byte $CD, $04, $D0, $02, $D2, $00, $D5, $FD, $D8, $FB, $DB, $F9, $DE, $F7, $E1, $F4  ; CPU:$891A PRG:091A  CD 04 D0 02 D2 00 D5 FD D8 FB DB F9 DE F7 E1 F4
-    .byte $E4, $F2, $E7, $F0, $EA, $EE, $EE, $EC, $F1, $EA, $F4, $E8, $F8, $E6, $FB, $E4  ; CPU:$892A PRG:092A  E4 F2 E7 F0 EA EE EE EC F1 EA F4 E8 F8 E6 FB E4
-    .byte $FF, $E2, $02, $E1, $06, $DF, $09, $DE, $0C, $DC, $10, $DB, $13, $D9, $17, $D8  ; CPU:$893A PRG:093A  FF E2 02 E1 06 DF 09 DE 0C DC 10 DB 13 D9 17 D8
-    .byte $1A, $D7, $1D, $D6, $20, $D5, $23, $D4, $26, $D4, $29, $D3, $2C, $D3, $2E, $D2  ; CPU:$894A PRG:094A  1A D7 1D D6 20 D5 23 D4 26 D4 29 D3 2C D3 2E D2
-    .byte $31, $D2, $33, $D2, $36, $D2, $38, $D2, $3A, $D2, $3C, $D2, $3E, $D3, $3F, $D3  ; CPU:$895A PRG:095A  31 D2 33 D2 36 D2 38 D2 3A D2 3C D2 3E D3 3F D3
-    .byte $41, $D4, $42, $D5, $43, $D5, $44, $D6, $45, $D7, $46, $D9, $46, $DA, $46, $DB  ; CPU:$896A PRG:096A  41 D4 42 D5 43 D5 44 D6 45 D7 46 D9 46 DA 46 DB
-    .byte $47, $DD, $47, $DE, $46, $E0, $46, $E1, $45, $E3, $45, $E5, $44, $E7, $43, $E9  ; CPU:$897A PRG:097A  47 DD 47 DE 46 E0 46 E1 45 E3 45 E5 44 E7 43 E9
-    .byte $42, $EB, $40, $ED, $3F, $EF, $3D, $F1, $3B, $F3, $39, $F5, $37, $F7, $35, $FA  ; CPU:$898A PRG:098A  42 EB 40 ED 3F EF 3D F1 3B F3 39 F5 37 F7 35 FA
-    .byte $33, $FC, $30, $FE, $2E, $00, $2B, $03, $28, $05, $25, $07, $22, $09, $1F, $0C  ; CPU:$899A PRG:099A  33 FC 30 FE 2E 00 2B 03 28 05 25 07 22 09 1F 0C
-    .byte $1C, $0E, $19, $10, $16, $12, $12, $14, $0F, $16, $0C, $18, $08, $1A, $05, $1C  ; CPU:$89AA PRG:09AA  1C 0E 19 10 16 12 12 14 0F 16 0C 18 08 1A 05 1C
-    .byte $01, $1E, $FE, $1F, $FA, $21, $F7, $22, $F4, $24, $F0, $25, $ED, $27, $E9, $28  ; CPU:$89BA PRG:09BA  01 1E FE 1F FA 21 F7 22 F4 24 F0 25 ED 27 E9 28
-    .byte $E6, $29, $E3, $2A, $E0, $2B, $DD, $2C, $DA, $2C, $D7, $2D, $D4, $2D, $D2, $2E  ; CPU:$89CA PRG:09CA  E6 29 E3 2A E0 2B DD 2C DA 2C D7 2D D4 2D D2 2E
-    .byte $CF, $2E, $CD, $2E, $CA, $2E, $C8, $2E, $C6, $2E, $C4, $2E, $C2, $2D, $C1, $2D  ; CPU:$89DA PRG:09DA  CF 2E CD 2E CA 2E C8 2E C6 2E C4 2E C2 2D C1 2D
-    .byte $BF, $2C, $BE, $2B, $BD, $2B, $BC, $2A, $BB, $29, $0F, $A7, $2F, $A7, $4F, $A7  ; CPU:$89EA PRG:09EA  BF 2C BE 2B BD 2B BC 2A BB 29 0F A7 2F A7 4F A7
-    .byte $6F, $A7, $A5, $75, $29, $07, $D0, $33, $A5, $76, $C9, $04, $B0, $2D, $A9, $3F  ; CPU:$89FA PRG:09FA  6F A7 A5 75 29 07 D0 33 A5 76 C9 04 B0 2D A9 3F
-    .byte $8D, $B0, $01, $A9, $00, $8D, $B1, $01, $A9, $10, $8D, $B2, $01, $A9, $01, $8D  ; CPU:$8A0A PRG:0A0A  8D B0 01 A9 00 8D B1 01 A9 10 8D B2 01 A9 01 8D
-    .byte $B3, $01, $A5, $76, $0A, $AA, $BD, $F4, $89, $8D, $B4, $01, $BD, $F5, $89, $8D  ; CPU:$8A1A PRG:0A1A  B3 01 A5 76 0A AA BD F4 89 8D B4 01 BD F5 89 8D
-    .byte $B5, $01, $A9, $00, $8D, $B6, $01, $85, $75, $E6, $76, $60, $A5, $75, $C9, $20  ; CPU:$8A2A PRG:0A2A  B5 01 A9 00 8D B6 01 85 75 E6 76 60 A5 75 C9 20
-    .byte $90, $15, $A5, $76, $C9, $05, $B0, $0F, $E6, $76, $A2, $00, $BD, $52, $8A, $9D  ; CPU:$8A3A PRG:0A3A  90 15 A5 76 C9 05 B0 0F E6 76 A2 00 BD 52 8A 9D
-    .byte $B0, $01, $E8, $E0, $0D, $90, $F5, $60, $23, $4A, $0F, $01, $A0, $94, $23, $26  ; CPU:$8A4A PRG:0A4A  B0 01 E8 E0 0D 90 F5 60 23 4A 0F 01 A0 94 23 26
-    .byte $03, $03, $AF, $94, $00, $A5, $6C, $F0, $03, $4C, $E1, $8A, $85, $95, $85, $96  ; CPU:$8A5A PRG:0A5A  03 03 AF 94 00 A5 6C F0 03 4C E1 8A 85 95 85 96
-    .byte $8D, $E5, $05, $8D, $E6, $05, $85, $91, $AA, $A0, $14, $9D, $AC, $05, $E8, $88  ; CPU:$8A6A PRG:0A6A  8D E5 05 8D E6 05 85 91 AA A0 14 9D AC 05 E8 88
-    .byte $D0, $F9, $20, $28, $92, $20, $88, $81, $20, $61, $C0, $20, $C7, $AE, $E6, $6C  ; CPU:$8A7A PRG:0A7A  D0 F9 20 28 92 20 88 81 20 61 C0 20 C7 AE E6 6C
-    .byte $A9, $02, $20, $88, $81, $A2, $00, $A9, $03, $9D, $02, $02, $E8, $E8, $E8, $E8  ; CPU:$8A8A PRG:0A8A  A9 02 20 88 81 A2 00 A9 03 9D 02 02 E8 E8 E8 E8
-    .byte $D0, $F7, $A2, $00, $20, $84, $90, $A9, $01, $85, $2E, $A9, $00, $20, $04, $80  ; CPU:$8A9A PRG:0A9A  D0 F7 A2 00 20 84 90 A9 01 85 2E A9 00 20 04 80
-    .byte $A9, $00, $AA, $9D, $00, $06, $E8, $D0, $FA, $A2, $00, $BD, $22, $93, $9D, $00  ; CPU:$8AAA PRG:0AAA  A9 00 AA 9D 00 06 E8 D0 FA A2 00 BD 22 93 9D 00
-    .byte $02, $E8, $E0, $14, $90, $F5, $A9, $00, $85, $03, $A9, $EF, $85, $04, $A5, $01  ; CPU:$8ABA PRG:0ABA  02 E8 E0 14 90 F5 A9 00 85 03 A9 EF 85 04 A5 01
-    .byte $29, $E7, $09, $01, $85, $01, $A9, $03, $85, $9A, $A9, $00, $85, $5A, $A2, $00  ; CPU:$8ACA PRG:0ACA  29 E7 09 01 85 01 A9 03 85 9A A9 00 85 5A A2 00
-    .byte $86, $5B, $A9, $05, $4C, $63, $86, $20, $A9, $90, $20, $FC, $90, $20, $AC, $91  ; CPU:$8ADA PRG:0ADA  86 5B A9 05 4C 63 86 20 A9 90 20 FC 90 20 AC 91
-    .byte $A5, $2A, $29, $10, $F0, $1E, $E6, $6A, $A9, $00, $85, $6C, $A5, $70, $85, $5A  ; CPU:$8AEA PRG:0AEA  A5 2A 29 10 F0 1E E6 6A A9 00 85 6C A5 70 85 5A
-    .byte $85, $5C, $A5, $72, $85, $5B, $85, $5D, $20, $B7, $C6, $20, $4F, $BB, $20, $03  ; CPU:$8AFA PRG:0AFA  85 5C A5 72 85 5B 85 5D 20 B7 C6 20 4F BB 20 03
-    .byte $97, $20, $0F, $97, $60, $81, $99, $81, $99, $81, $99, $81, $99, $81, $99, $81  ; CPU:$8B0A PRG:0B0A  97 20 0F 97 60 81 99 81 99 81 99 81 99 81 99 81
-    .byte $99, $A5, $6C, $D0, $3D, $85, $75, $85, $92, $E6, $6C, $20, $88, $81, $A5, $91  ; CPU:$8B1A PRG:0B1A  99 A5 6C D0 3D 85 75 85 92 E6 6C 20 88 81 A5 91
-    .byte $18, $69, $04, $85, $2E, $A9, $00, $20, $04, $80, $A5, $91, $4A, $18, $69, $02  ; CPU:$8B2A PRG:0B2A  18 69 04 85 2E A9 00 20 04 80 A5 91 4A 18 69 02
-    .byte $AA, $20, $84, $90, $20, $28, $92, $A6, $91, $A5, $01, $29, $E6, $1D, $0F, $8B  ; CPU:$8B3A PRG:0B3A  AA 20 84 90 20 28 92 A6 91 A5 01 29 E6 1D 0F 8B
-    .byte $85, $01, $A9, $00, $85, $03, $85, $04, $A5, $99, $D0, $05, $A9, $04, $20, $63  ; CPU:$8B4A PRG:0B4A  85 01 A9 00 85 03 85 04 A5 99 D0 05 A9 04 20 63
-    .byte $86, $60, $A9, $01, $20, $04, $80, $A5, $99, $D0, $2F, $A5, $2A, $29, $C0, $D0  ; CPU:$8B5A PRG:0B5A  86 60 A9 01 20 04 80 A5 99 D0 2F A5 2A 29 C0 D0
-    .byte $06, $A5, $2B, $29, $C0, $F0, $22, $A9, $00, $85, $6C, $8D, $B0, $01, $A9, $04  ; CPU:$8B6A PRG:0B6A  06 A5 2B 29 C0 F0 22 A9 00 85 6C 8D B0 01 A9 04
-    .byte $85, $6A, $E6, $91, $A5, $91, $C9, $0C, $D0, $07, $E6, $99, $A9, $06, $85, $6A  ; CPU:$8B7A PRG:0B7A  85 6A E6 91 A5 91 C9 0C D0 07 E6 99 A9 06 85 6A
-    .byte $60, $A5, $01, $29, $88, $09, $88, $85, $01, $60, $E6, $97, $D0, $16, $A9, $00  ; CPU:$8B8A PRG:0B8A  60 A5 01 29 88 09 88 85 01 60 E6 97 D0 16 A9 00
-    .byte $85, $6C, $E6, $91, $A5, $91, $C9, $0C, $90, $0A, $A9, $07, $85, $6A, $A9, $00  ; CPU:$8B9A PRG:0B9A  85 6C E6 91 A5 91 C9 0C 90 0A A9 07 85 6A A9 00
-    .byte $85, $6C, $85, $99, $60, $A5, $6C, $D0, $67, $A5, $99, $D0, $09, $E6, $97, $A5  ; CPU:$8BAA PRG:0BAA  85 6C 85 99 60 A5 6C D0 67 A5 99 D0 09 E6 97 A5
-    .byte $97, $C9, $70, $B0, $01, $60, $A9, $00, $85, $97, $E6, $6C, $20, $88, $81, $20  ; CPU:$8BBA PRG:0BBA  97 C9 70 B0 01 60 A9 00 85 97 E6 6C 20 88 81 20
-    .byte $28, $92, $A2, $00, $20, $84, $90, $A9, $02, $85, $2E, $A9, $00, $20, $04, $80  ; CPU:$8BCA PRG:0BCA  28 92 A2 00 20 84 90 A9 02 85 2E A9 00 20 04 80
-    .byte $A5, $01, $29, $E6, $09, $01, $85, $01, $A9, $00, $85, $03, $85, $04, $20, $4C  ; CPU:$8BDA PRG:0BDA  A5 01 29 E6 09 01 85 01 A9 00 85 03 85 04 20 4C
-    .byte $8C, $A9, $00, $AA, $85, $79, $85, $7A, $85, $8C, $85, $8D, $85, $8E, $85, $8F  ; CPU:$8BEA PRG:0BEA  8C A9 00 AA 85 79 85 7A 85 8C 85 8D 85 8E 85 8F
-    .byte $85, $87, $BD, $2F, $8E, $95, $7D, $95, $83, $E8, $E0, $04, $90, $F4, $A5, $7F  ; CPU:$8BFA PRG:0BFA  85 87 BD 2F 8E 95 7D 95 83 E8 E0 04 90 F4 A5 7F
-    .byte $85, $88, $85, $89, $A5, $80, $85, $8A, $85, $8B, $A9, $03, $20, $63, $86, $60  ; CPU:$8C0A PRG:0C0A  85 88 85 89 A5 80 85 8A 85 8B A9 03 20 63 86 60
-    .byte $20, $42, $8E, $A5, $2A, $29, $10, $F0, $19, $A9, $02, $85, $6A, $A9, $00, $85  ; CPU:$8C1A PRG:0C1A  20 42 8E A5 2A 29 10 F0 19 A9 02 85 6A A9 00 85
-    .byte $6C, $A5, $99, $F0, $0D, $A9, $08, $85, $6A, $A9, $00, $85, $91, $A9, $04, $20  ; CPU:$8C2A PRG:0C2A  6C A5 99 F0 0D A9 08 85 6A A9 00 85 91 A9 04 20
-    .byte $63, $86, $60, $A0, $00, $BD, $AC, $05, $99, $90, $01, $E8, $C8, $C0, $0A, $90  ; CPU:$8C3A PRG:0C3A  63 86 60 A0 00 BD AC 05 99 90 01 E8 C8 C0 0A 90
-    .byte $F4, $60, $A2, $0A, $86, $90, $20, $3D, $8C, $20, $7F, $8C, $A2, $00, $86, $90  ; CPU:$8C4A PRG:0C4A  F4 60 A2 0A 86 90 20 3D 8C 20 7F 8C A2 00 86 90
-    .byte $20, $3D, $8C, $20, $7F, $8C, $A5, $1D, $C5, $1C, $90, $18, $E6, $1D, $A5, $82  ; CPU:$8C5A PRG:0C5A  20 3D 8C 20 7F 8C A5 1D C5 1C 90 18 E6 1D A5 82
-    .byte $18, $69, $40, $85, $82, $A5, $81, $69, $00, $85, $81, $A9, $0D, $18, $6D, $E0  ; CPU:$8C6A PRG:0C6A  18 69 40 85 82 A5 81 69 00 85 81 A9 0D 18 6D E0
-    .byte $05, $8D, $E0, $05, $60, $A0, $00, $84, $11, $A2, $00, $BD, $94, $01, $F0, $18  ; CPU:$8C7A PRG:0C7A  05 8D E0 05 60 A0 00 84 11 A2 00 BD 94 01 F0 18
-    .byte $B9, $07, $01, $30, $0D, $BD, $94, $01, $18, $69, $30, $D9, $07, $01, $F0, $11  ; CPU:$8C8A PRG:0C8A  B9 07 01 30 0D BD 94 01 18 69 30 D9 07 01 F0 11
-    .byte $90, $15, $20, $84, $8D, $4C, $D4, $8C, $B9, $07, $01, $30, $04, $C9, $31, $B0  ; CPU:$8C9A PRG:0C9A  90 15 20 84 8D 4C D4 8C B9 07 01 30 04 C9 31 B0
-    .byte $06, $E8, $C8, $E0, $06, $90, $D4, $E6, $11, $A5, $11, $C9, $0A, $B0, $10, $A5  ; CPU:$8CAA PRG:0CAA  06 E8 C8 E0 06 90 D4 E6 11 A5 11 C9 0A B0 10 A5
-    .byte $11, $85, $13, $A9, $0D, $85, $15, $20, $D5, $82, $A4, $17, $4C, $83, $8C, $A6  ; CPU:$8CBA PRG:0CBA  11 85 13 A9 0D 85 15 20 D5 82 A4 17 4C 83 8C A6
-    .byte $90, $F0, $05, $85, $1D, $4C, $D4, $8C, $85, $1C, $A0, $00, $84, $25, $A2, $00  ; CPU:$8CCA PRG:0CCA  90 F0 05 85 1D 4C D4 8C 85 1C A0 00 84 25 A2 00
-    .byte $86, $24, $8A, $0A, $AA, $BD, $78, $8D, $85, $07, $BD, $79, $8D, $85, $08, $A5  ; CPU:$8CDA PRG:0CDA  86 24 8A 0A AA BD 78 8D 85 07 BD 79 8D 85 08 A5
-    .byte $25, $85, $13, $A9, $40, $85, $15, $20, $D5, $82, $A5, $07, $18, $65, $17, $8D  ; CPU:$8CEA PRG:0CEA  25 85 13 A9 40 85 15 20 D5 82 A5 07 18 65 17 8D
-    .byte $B1, $01, $A5, $08, $65, $18, $8D, $B0, $01, $A5, $90, $F0, $08, $A4, $25, $C4  ; CPU:$8CFA PRG:0CFA  B1 01 A5 08 65 18 8D B0 01 A5 90 F0 08 A4 25 C4
-    .byte $1D, $D0, $20, $F0, $06, $A4, $25, $C4, $1C, $D0, $18, $A6, $24, $D0, $14, $A5  ; CPU:$8D0A PRG:0D0A  1D D0 20 F0 06 A4 25 C4 1C D0 18 A6 24 D0 14 A5
-    .byte $90, $D0, $04, $A2, $00, $F0, $02, $A2, $06, $AD, $B0, $01, $95, $7B, $AD, $B1  ; CPU:$8D1A PRG:0D1A  90 D0 04 A2 00 F0 02 A2 06 AD B0 01 95 7B AD B1
-    .byte $01, $95, $7C, $A6, $24, $BD, $7E, $8D, $85, $1B, $BD, $81, $8D, $8D, $B2, $01  ; CPU:$8D2A PRG:0D2A  01 95 7C A6 24 BD 7E 8D 85 1B BD 81 8D 8D B2 01
-    .byte $A9, $01, $8D, $B3, $01, $A5, $25, $85, $13, $A9, $0D, $85, $15, $20, $D5, $82  ; CPU:$8D3A PRG:0D3A  A9 01 8D B3 01 A5 25 85 13 A9 0D 85 15 20 D5 82
-    .byte $A9, $00, $18, $65, $17, $65, $1B, $8D, $B4, $01, $A9, $01, $8D, $B5, $01, $A9  ; CPU:$8D4A PRG:0D4A  A9 00 18 65 17 65 1B 8D B4 01 A9 01 8D B5 01 A9
-    .byte $00, $8D, $B6, $01, $20, $B1, $81, $E6, $24, $A6, $24, $E0, $03, $B0, $03, $4C  ; CPU:$8D5A PRG:0D5A  00 8D B6 01 20 B1 81 E6 24 A6 24 E0 03 B0 03 4C
-    .byte $DC, $8C, $E6, $25, $A5, $25, $C9, $0A, $B0, $03, $4C, $D8, $8C, $60, $27, $25  ; CPU:$8D6A PRG:0D6A  DC 8C E6 25 A5 25 C9 0A B0 03 4C D8 8C 60 27 25
-    .byte $2E, $25, $35, $25, $00, $03, $07, $03, $04, $06, $A6, $90, $F0, $07, $A5, $11  ; CPU:$8D7A PRG:0D7A  2E 25 35 25 00 03 07 03 04 06 A6 90 F0 07 A5 11
-    .byte $85, $1D, $4C, $93, $8D, $A5, $11, $85, $1C, $85, $1E, $85, $13, $A9, $0D, $85  ; CPU:$8D8A PRG:0D8A  85 1D 4C 93 8D A5 11 85 1C 85 1E 85 13 A9 0D 85
-    .byte $15, $20, $D5, $82, $A5, $17, $85, $22, $A6, $22, $E0, $75, $B0, $27, $A2, $08  ; CPU:$8D9A PRG:0D9A  15 20 D5 82 A5 17 85 22 A6 22 E0 75 B0 27 A2 08
-    .byte $86, $11, $A5, $11, $85, $13, $A9, $0D, $85, $15, $20, $D5, $82, $A6, $17, $E4  ; CPU:$8DAA PRG:0DAA  86 11 A5 11 85 13 A9 0D 85 15 20 D5 82 A6 17 E4
-    .byte $22, $90, $12, $A0, $00, $BD, $00, $01, $9D, $0D, $01, $E8, $C8, $C0, $0D, $90  ; CPU:$8DBA PRG:0DBA  22 90 12 A0 00 BD 00 01 9D 0D 01 E8 C8 C0 0D 90
-    .byte $F4, $C6, $11, $10, $DD, $A2, $00, $A5, $90, $F0, $01, $E8, $A5, $22, $9D, $DF  ; CPU:$8DCA PRG:0DCA  F4 C6 11 10 DD A2 00 A5 90 F0 01 E8 A5 22 9D DF
-    .byte $05, $AA, $A9, $FF, $9D, $00, $01, $E8, $9D, $00, $01, $E8, $9D, $00, $01, $E8  ; CPU:$8DDA PRG:0DDA  05 AA A9 FF 9D 00 01 E8 9D 00 01 E8 9D 00 01 E8
-    .byte $A0, $00, $84, $1E, $B9, $90, $01, $D0, $08, $A5, $1E, $D0, $04, $A9, $FF, $D0  ; CPU:$8DEA PRG:0DEA  A0 00 84 1E B9 90 01 D0 08 A5 1E D0 04 A9 FF D0
-    .byte $08, $E6, $1E, $B9, $90, $01, $18, $69, $30, $9D, $00, $01, $E8, $C8, $C0, $04  ; CPU:$8DFA PRG:0DFA  08 E6 1E B9 90 01 18 69 30 9D 00 01 E8 C8 C0 04
-    .byte $90, $E2, $A0, $00, $84, $1E, $B9, $94, $01, $D0, $08, $A5, $1E, $D0, $04, $A9  ; CPU:$8E0A PRG:0E0A  90 E2 A0 00 84 1E B9 94 01 D0 08 A5 1E D0 04 A9
-    .byte $FF, $D0, $08, $E6, $1E, $B9, $94, $01, $18, $69, $30, $9D, $00, $01, $E8, $C8  ; CPU:$8E1A PRG:0E1A  FF D0 08 E6 1E B9 94 01 18 69 30 9D 00 01 E8 C8
-    .byte $C0, $06, $90, $E2, $60, $01, $01, $85, $94, $FF, $A2, $00, $BD, $03, $94, $9D  ; CPU:$8E2A PRG:0E2A  C0 06 90 E2 60 01 01 85 94 FF A2 00 BD 03 94 9D
-    .byte $00, $01, $E8, $E0, $82, $90, $F5, $60, $A5, $6F, $F0, $09, $A0, $06, $85, $90  ; CPU:$8E3A PRG:0E3A  00 01 E8 E0 82 90 F5 60 A5 6F F0 09 A0 06 85 90
-    .byte $A2, $01, $20, $55, $8E, $A2, $00, $A0, $00, $85, $90, $B5, $1C, $C9, $0A, $B0  ; CPU:$8E4A PRG:0E4A  A2 01 20 55 8E A2 00 A0 00 85 90 B5 1C C9 0A B0
-    .byte $E6, $B5, $79, $C9, $03, $B0, $E0, $B5, $8E, $F0, $0D, $B9, $7C, $00, $18, $69  ; CPU:$8E5A PRG:0E5A  E6 B5 79 C9 03 B0 E0 B5 8E F0 0D B9 7C 00 18 69
-    .byte $01, $99, $7C, $00, $A9, $00, $95, $8E, $A5, $75, $29, $07, $D0, $1D, $A5, $75  ; CPU:$8E6A PRG:0E6A  01 99 7C 00 A9 00 95 8E A5 75 29 07 D0 1D A5 75
-    .byte $29, $08, $F0, $0D, $A9, $33, $99, $7F, $00, $A9, $8E, $99, $80, $00, $4C, $95  ; CPU:$8E7A PRG:0E7A  29 08 F0 0D A9 33 99 7F 00 A9 8E 99 80 00 4C 95
-    .byte $8E, $B5, $88, $99, $7F, $00, $B5, $8A, $99, $80, $00, $B5, $2A, $29, $80, $F0  ; CPU:$8E8A PRG:0E8A  8E B5 88 99 7F 00 B5 8A 99 80 00 B5 2A 29 80 F0
-    .byte $3B, $F6, $79, $F6, $8E, $B5, $88, $99, $7F, $00, $B5, $8A, $99, $80, $00, $A9  ; CPU:$8E9A PRG:0E9A  3B F6 79 F6 8E B5 88 99 7F 00 B5 8A 99 80 00 A9
-    .byte $85, $95, $88, $A9, $94, $95, $8A, $98, $48, $BD, $DF, $05, $18, $75, $79, $A8  ; CPU:$8EAA PRG:0EAA  85 95 88 A9 94 95 8A 98 48 BD DF 05 18 75 79 A8
-    .byte $88, $B5, $8C, $18, $69, $41, $C9, $5B, $D0, $02, $A9, $40, $99, $00, $01, $68  ; CPU:$8EBA PRG:0EBA  88 B5 8C 18 69 41 C9 5B D0 02 A9 40 99 00 01 68
-    .byte $A8, $A9, $00, $95, $8C, $A9, $05, $85, $75, $4C, $2E, $8F, $B5, $2A, $29, $01  ; CPU:$8ECA PRG:0ECA  A8 A9 00 95 8C A9 05 85 75 4C 2E 8F B5 2A 29 01
-    .byte $F0, $1D, $F6, $88, $D0, $02, $F6, $8A, $F6, $8C, $B5, $8C, $C9, $1B, $90, $38  ; CPU:$8EDA PRG:0EDA  F0 1D F6 88 D0 02 F6 8A F6 8C B5 8C C9 1B 90 38
-    .byte $A9, $85, $95, $88, $A9, $94, $95, $8A, $A9, $00, $95, $8C, $4C, $22, $8F, $B5  ; CPU:$8EEA PRG:0EEA  A9 85 95 88 A9 94 95 8A A9 00 95 8C 4C 22 8F B5
-    .byte $2A, $29, $02, $F0, $23, $B5, $88, $38, $E9, $01, $95, $88, $B0, $02, $D6, $8A  ; CPU:$8EFA PRG:0EFA  2A 29 02 F0 23 B5 88 38 E9 01 95 88 B0 02 D6 8A
-    .byte $D6, $8C, $10, $14, $A9, $1A, $95, $8C, $A9, $85, $18, $69, $1A, $95, $88, $A9  ; CPU:$8F0A PRG:0F0A  D6 8C 10 14 A9 1A 95 8C A9 85 18 69 1A 95 88 A9
-    .byte $94, $69, $00, $95, $8A, $4C, $22, $8F, $B5, $79, $C9, $03, $90, $06, $A9, $00  ; CPU:$8F1A PRG:0F1A  94 69 00 95 8A 4C 22 8F B5 79 C9 03 90 06 A9 00
-    .byte $8D, $B0, $01, $60, $A2, $00, $A5, $1C, $C9, $0A, $B0, $0B, $B5, $7B, $9D, $B0  ; CPU:$8F2A PRG:0F2A  8D B0 01 60 A2 00 A5 1C C9 0A B0 0B B5 7B 9D B0
-    .byte $01, $E8, $E0, $0C, $90, $F6, $60, $A0, $06, $B9, $7B, $00, $9D, $B0, $01, $C8  ; CPU:$8F3A PRG:0F3A  01 E8 E0 0C 90 F6 60 A0 06 B9 7B 00 9D B0 01 C8
-    .byte $E8, $E0, $06, $90, $F4, $A9, $00, $9D, $B0, $01, $60, $A5, $6C, $D0, $36, $E6  ; CPU:$8F4A PRG:0F4A  E8 E0 06 90 F4 A9 00 9D B0 01 60 A5 6C D0 36 E6
-    .byte $6C, $A9, $02, $20, $88, $81, $20, $28, $92, $A2, $00, $20, $84, $90, $A9, $03  ; CPU:$8F5A PRG:0F5A  6C A9 02 20 88 81 20 28 92 A2 00 20 84 90 A9 03
-    .byte $85, $2E, $A9, $00, $20, $04, $80, $A9, $12, $85, $2E, $A9, $00, $20, $04, $80  ; CPU:$8F6A PRG:0F6A  85 2E A9 00 20 04 80 A9 12 85 2E A9 00 20 04 80
-    .byte $A5, $01, $29, $E4, $09, $00, $85, $01, $A9, $00, $85, $76, $8D, $DB, $03, $A9  ; CPU:$8F7A PRG:0F7A  A5 01 29 E4 09 00 85 01 A9 00 85 76 8D DB 03 A9
-    .byte $05, $20, $63, $86, $60, $A5, $6C, $C9, $01, $D0, $12, $A5, $31, $29, $07, $D0  ; CPU:$8F8A PRG:0F8A  05 20 63 86 60 A5 6C C9 01 D0 12 A5 31 29 07 D0
-    .byte $0B, $20, $09, $90, $A5, $76, $C9, $05, $90, $02, $E6, $6C, $60, $A5, $6C, $C9  ; CPU:$8F9A PRG:0F9A  0B 20 09 90 A5 76 C9 05 90 02 E6 6C 60 A5 6C C9
-    .byte $02, $D0, $18, $A5, $31, $29, $3F, $D0, $11, $E6, $76, $A5, $76, $C9, $0A, $90  ; CPU:$8FAA PRG:0FAA  02 D0 18 A5 31 29 3F D0 11 E6 76 A5 76 C9 0A 90
-    .byte $09, $E6, $6C, $A9, $03, $8D, $DB, $03, $85, $76, $60, $C9, $03, $D0, $20, $A5  ; CPU:$8FBA PRG:0FBA  09 E6 6C A9 03 8D DB 03 85 76 60 C9 03 D0 20 A5
-    .byte $31, $29, $07, $D0, $19, $20, $09, $90, $A5, $76, $10, $12, $E6, $6C, $A9, $00  ; CPU:$8FCA PRG:0FCA  31 29 07 D0 19 20 09 90 A5 76 10 12 E6 6C A9 00
-    .byte $8D, $DB, $03, $85, $76, $A5, $01, $09, $01, $85, $01, $8D, $DE, $03, $60, $C9  ; CPU:$8FDA PRG:0FDA  8D DB 03 85 76 A5 01 09 01 85 01 8D DE 03 60 C9
-    .byte $04, $D0, $12, $A5, $31, $29, $07, $D0, $0B, $20, $09, $90, $A5, $76, $C9, $05  ; CPU:$8FEA PRG:0FEA  04 D0 12 A5 31 29 07 D0 0B 20 09 90 A5 76 C9 05
-    .byte $90, $02, $E6, $6C, $60, $A5, $2A, $29, $10, $F0, $03, $4C, $36, $80, $60, $A2  ; CPU:$8FFA PRG:0FFA  90 02 E6 6C 60 A5 2A 29 10 F0 03 4C 36 80 60 A2
-    .byte $00, $BD, $36, $90, $9D, $B0, $01, $E8, $E0, $04, $90, $F5, $A5, $76, $0A, $A8  ; CPU:$900A PRG:100A  00 BD 36 90 9D B0 01 E8 E0 04 90 F5 A5 76 0A A8
-    .byte $B9, $3A, $90, $9D, $B0, $01, $B9, $3B, $90, $9D, $B1, $01, $A9, $00, $9D, $B2  ; CPU:$901A PRG:101A  B9 3A 90 9D B0 01 B9 3B 90 9D B1 01 A9 00 9D B2
-    .byte $01, $AD, $DB, $03, $D0, $03, $E6, $76, $60, $C6, $76, $60, $3F, $00, $10, $01  ; CPU:$902A PRG:102A  01 AD DB 03 D0 03 E6 76 60 C6 76 60 3F 00 10 01
-    .byte $0F, $A7, $44, $90, $54, $90, $64, $90, $74, $90, $FF, $00, $00, $00, $FF, $00  ; CPU:$903A PRG:103A  0F A7 44 90 54 90 64 90 74 90 FF 00 00 00 FF 00
-    .byte $00, $00, $FF, $00, $00, $00, $FF, $00, $00, $00, $FF, $10, $10, $10, $FF, $10  ; CPU:$904A PRG:104A  00 00 FF 00 00 00 FF 00 00 00 FF 10 10 10 FF 10
-    .byte $10, $10, $FF, $10, $10, $10, $FF, $10, $10, $10, $FF, $20, $20, $20, $FF, $20  ; CPU:$905A PRG:105A  10 10 FF 10 10 10 FF 10 10 10 FF 20 20 20 FF 20
-    .byte $20, $20, $FF, $20, $20, $20, $FF, $20, $20, $20, $FF, $30, $30, $30, $FF, $30  ; CPU:$906A PRG:106A  20 20 FF 20 20 20 FF 20 20 20 FF 30 30 30 FF 30
-    .byte $30, $30, $FF, $30, $30, $30, $FF, $30, $30, $30, $20, $80, $FF, $BD, $90, $90  ; CPU:$907A PRG:107A  30 30 FF 30 30 30 FF 30 30 30 20 80 FF BD 90 90
-    .byte $9D, $90, $90, $85, $2C, $60, $00, $01, $02, $03, $04, $05, $06, $07, $A2, $00  ; CPU:$908A PRG:108A  9D 90 90 85 2C 60 00 01 02 03 04 05 06 07 A2 00
-    .byte $BD, $36, $93, $C9, $FF, $F0, $07, $9D, $08, $02, $E8, $4C, $9A, $90, $60, $A5  ; CPU:$909A PRG:109A  BD 36 93 C9 FF F0 07 9D 08 02 E8 4C 9A 90 60 A5
-    .byte $2A, $29, $84, $F0, $0C, $E6, $74, $A5, $74, $C9, $05, $90, $04, $A9, $00, $85  ; CPU:$90AA PRG:10AA  2A 29 84 F0 0C E6 74 A5 74 C9 05 90 04 A9 00 85
-    .byte $74, $A5, $2A, $29, $48, $F0, $08, $C6, $74, $10, $04, $A9, $04, $85, $74, $A5  ; CPU:$90BA PRG:10BA  74 A5 2A 29 48 F0 08 C6 74 10 04 A9 04 85 74 A5
-    .byte $71, $C9, $02, $D0, $0A, $A9, $00, $85, $72, $A6, $74, $E0, $03, $F0, $1D, $A6  ; CPU:$90CA PRG:10CA  71 C9 02 D0 0A A9 00 85 72 A6 74 E0 03 F0 1D A6
-    .byte $74, $A5, $2A, $29, $01, $F0, $09, $B5, $6F, $DD, $F7, $90, $B0, $02, $F6, $6F  ; CPU:$90DA PRG:10DA  74 A5 2A 29 01 F0 09 B5 6F DD F7 90 B0 02 F6 6F
-    .byte $A5, $2A, $29, $02, $F0, $06, $B5, $6F, $F0, $02, $D6, $6F, $60, $01, $03, $02  ; CPU:$90EA PRG:10EA  A5 2A 29 02 F0 06 B5 6F F0 02 D6 6F 60 01 03 02
-    .byte $04, $02, $A0, $00, $A5, $6F, $0A, $AA, $BD, $3A, $92, $85, $11, $BD, $3B, $92  ; CPU:$90FA PRG:10FA  04 02 A0 00 A5 6F 0A AA BD 3A 92 85 11 BD 3B 92
-    .byte $85, $12, $BD, $9A, $92, $99, $E2, $04, $C8, $BD, $9B, $92, $99, $E2, $04, $C8  ; CPU:$910A PRG:110A  85 12 BD 9A 92 99 E2 04 C8 BD 9B 92 99 E2 04 C8
-    .byte $A5, $70, $0A, $AA, $BD, $3E, $92, $85, $13, $BD, $3F, $92, $85, $14, $BD, $9E  ; CPU:$911A PRG:111A  A5 70 0A AA BD 3E 92 85 13 BD 3F 92 85 14 BD 9E
-    .byte $92, $99, $E2, $04, $C8, $BD, $9F, $92, $99, $E2, $04, $C8, $A5, $71, $0A, $AA  ; CPU:$912A PRG:112A  92 99 E2 04 C8 BD 9F 92 99 E2 04 C8 A5 71 0A AA
-    .byte $BD, $46, $92, $85, $15, $BD, $47, $92, $85, $16, $BD, $A6, $92, $99, $E2, $04  ; CPU:$913A PRG:113A  BD 46 92 85 15 BD 47 92 85 16 BD A6 92 99 E2 04
-    .byte $C8, $BD, $A7, $92, $99, $E2, $04, $C8, $A2, $00, $BD, $4C, $92, $85, $17, $BD  ; CPU:$914A PRG:114A  C8 BD A7 92 99 E2 04 C8 A2 00 BD 4C 92 85 17 BD
-    .byte $4D, $92, $85, $18, $A5, $17, $18, $65, $72, $85, $17, $A5, $18, $69, $00, $85  ; CPU:$915A PRG:115A  4D 92 85 18 A5 17 18 65 72 85 17 A5 18 69 00 85
-    .byte $18, $A5, $72, $0A, $85, $21, $BD, $B2, $92, $99, $E2, $04, $BD, $B3, $92, $99  ; CPU:$916A PRG:116A  18 A5 72 0A 85 21 BD B2 92 99 E2 04 BD B3 92 99
-    .byte $E3, $04, $B9, $E2, $04, $18, $65, $21, $99, $E2, $04, $B9, $E3, $04, $69, $00  ; CPU:$917A PRG:117A  E3 04 B9 E2 04 18 65 21 99 E2 04 B9 E3 04 69 00
-    .byte $99, $E3, $04, $C8, $C8, $A5, $73, $0A, $AA, $BD, $4E, $92, $85, $19, $BD, $4F  ; CPU:$918A PRG:118A  99 E3 04 C8 C8 A5 73 0A AA BD 4E 92 85 19 BD 4F
-    .byte $92, $85, $1A, $BD, $AC, $92, $99, $E2, $04, $C8, $BD, $AD, $92, $99, $E2, $04  ; CPU:$919A PRG:119A  92 85 1A BD AC 92 99 E2 04 C8 BD AD 92 99 E2 04
-    .byte $C8, $60, $A9, $00, $85, $21, $A9, $14, $85, $1B, $A6, $21, $BD, $34, $92, $85  ; CPU:$91AA PRG:11AA  C8 60 A9 00 85 21 A9 14 85 1B A6 21 BD 34 92 85
-    .byte $20, $85, $23, $8A, $0A, $AA, $B5, $11, $85, $05, $B5, $12, $85, $06, $BD, $E2  ; CPU:$91BA PRG:11BA  20 85 23 8A 0A AA B5 11 85 05 B5 12 85 06 BD E2
-    .byte $04, $85, $07, $BD, $E3, $04, $85, $08, $A5, $1B, $48, $A0, $00, $A6, $1B, $B1  ; CPU:$91CA PRG:11CA  04 85 07 BD E3 04 85 08 A5 1B 48 A0 00 A6 1B B1
-    .byte $05, $9D, $01, $02, $E6, $1B, $E6, $1B, $E6, $1B, $E6, $1B, $C8, $C6, $20, $D0  ; CPU:$91DA PRG:11DA  05 9D 01 02 E6 1B E6 1B E6 1B E6 1B C8 C6 20 D0
-    .byte $EC, $68, $85, $1B, $A0, $00, $A6, $1B, $B1, $07, $9D, $00, $02, $C8, $B1, $07  ; CPU:$91EA PRG:11EA  EC 68 85 1B A0 00 A6 1B B1 07 9D 00 02 C8 B1 07
-    .byte $9D, $03, $02, $A5, $74, $C5, $21, $D0, $0A, $A5, $75, $29, $04, $D0, $04, $A9  ; CPU:$91FA PRG:11FA  9D 03 02 A5 74 C5 21 D0 0A A5 75 29 04 D0 04 A9
-    .byte $00, $F0, $02, $A9, $03, $9D, $02, $02, $E6, $1B, $E6, $1B, $E6, $1B, $E6, $1B  ; CPU:$920A PRG:120A  00 F0 02 A9 03 9D 02 02 E6 1B E6 1B E6 1B E6 1B
-    .byte $C8, $C6, $23, $D0, $D1, $E6, $21, $A6, $21, $E0, $05, $90, $8D, $60, $A2, $00  ; CPU:$921A PRG:121A  C8 C6 23 D0 D1 E6 21 A6 21 E0 05 90 8D 60 A2 00
-    .byte $8A, $9D, $58, $03, $E8, $E0, $10, $D0, $F8, $60, $08, $01, $07, $01, $05, $05  ; CPU:$922A PRG:122A  8A 9D 58 03 E8 E0 10 D0 F8 60 08 01 07 01 05 05
-    .byte $54, $92, $5C, $92, $64, $92, $65, $92, $66, $92, $67, $92, $68, $92, $6F, $92  ; CPU:$923A PRG:123A  54 92 5C 92 64 92 65 92 66 92 67 92 68 92 6F 92
-    .byte $76, $92, $7D, $92, $86, $92, $8B, $92, $90, $92, $31, $50, $4C, $41, $59, $45  ; CPU:$924A PRG:124A  76 92 7D 92 86 92 8B 92 90 92 31 50 4C 41 59 45
-    .byte $52, $FF, $32, $50, $4C, $41, $59, $45, $52, $53, $31, $32, $33, $34, $45, $41  ; CPU:$925A PRG:125A  52 FF 32 50 4C 41 59 45 52 53 31 32 33 34 45 41
-    .byte $53, $59, $FF, $FF, $FF, $48, $41, $52, $44, $FF, $FF, $FF, $53, $54, $41, $43  ; CPU:$926A PRG:126A  53 59 FF FF FF 48 41 52 44 FF FF FF 53 54 41 43
-    .byte $4B, $45, $44, $31, $32, $33, $34, $35, $36, $37, $38, $39, $54, $55, $4E, $45  ; CPU:$927A PRG:127A  4B 45 44 31 32 33 34 35 36 37 38 39 54 55 4E 45
-    .byte $31, $54, $55, $4E, $45, $32, $54, $55, $4E, $45, $33, $53, $54, $41, $52, $54  ; CPU:$928A PRG:128A  31 54 55 4E 45 32 54 55 4E 45 33 53 54 41 52 54
-    .byte $B4, $92, $C4, $92, $D4, $92, $D6, $92, $D8, $92, $DA, $92, $DC, $92, $E4, $92  ; CPU:$929A PRG:129A  B4 92 C4 92 D4 92 D6 92 D8 92 DA 92 DC 92 E4 92
-    .byte $EC, $92, $04, $93, $0E, $93, $18, $93, $FA, $92, $38, $30, $38, $40, $38, $48  ; CPU:$92AA PRG:12AA  EC 92 04 93 0E 93 18 93 FA 92 38 30 38 40 38 48
-    .byte $38, $50, $38, $58, $38, $60, $38, $68, $38, $70, $38, $88, $38, $98, $38, $A0  ; CPU:$92BA PRG:12BA  38 50 38 58 38 60 38 68 38 70 38 88 38 98 38 A0
-    .byte $38, $A8, $38, $B0, $38, $B8, $38, $C0, $38, $C8, $58, $70, $58, $80, $58, $90  ; CPU:$92CA PRG:12CA  38 A8 38 B0 38 B8 38 C0 38 C8 58 70 58 80 58 90
-    .byte $58, $A0, $78, $30, $78, $38, $78, $40, $78, $48, $78, $68, $78, $70, $78, $78  ; CPU:$92DA PRG:12DA  58 A0 78 30 78 38 78 40 78 48 78 68 78 70 78 78
-    .byte $78, $80, $78, $98, $78, $A0, $78, $A8, $78, $B0, $78, $B8, $78, $C0, $78, $C8  ; CPU:$92EA PRG:12EA  78 80 78 98 78 A0 78 A8 78 B0 78 B8 78 C0 78 C8
-    .byte $98, $70, $98, $80, $98, $90, $98, $A0, $98, $B0, $B8, $30, $B8, $38, $B8, $40  ; CPU:$92FA PRG:12FA  98 70 98 80 98 90 98 A0 98 B0 B8 30 B8 38 B8 40
-    .byte $B8, $48, $B8, $50, $B8, $70, $B8, $78, $B8, $80, $B8, $88, $B8, $90, $B8, $B0  ; CPU:$930A PRG:130A  B8 48 B8 50 B8 70 B8 78 B8 80 B8 88 B8 90 B8 B0
-    .byte $B8, $B8, $B8, $C0, $B8, $C8, $B8, $D0, $D8, $53, $03, $6C, $D8, $54, $03, $74  ; CPU:$931A PRG:131A  B8 B8 B8 C0 B8 C8 B8 D0 D8 53 03 6C D8 54 03 74
-    .byte $D8, $41, $03, $7C, $D8, $52, $03, $84, $D8, $54, $03, $8C, $46, $8D, $23, $40  ; CPU:$932A PRG:132A  D8 41 03 7C D8 52 03 84 D8 54 03 8C 46 8D 23 40
-    .byte $4E, $BE, $23, $40, $56, $B3, $23, $40, $5E, $B4, $03, $40, $66, $B5, $03, $40  ; CPU:$933A PRG:133A  4E BE 23 40 56 B3 23 40 5E B4 03 40 66 B5 03 40
-    .byte $6E, $90, $03, $40, $76, $91, $03, $40, $7E, $94, $03, $40, $36, $8C, $23, $48  ; CPU:$934A PRG:134A  6E 90 03 40 76 91 03 40 7E 94 03 40 36 8C 23 48
-    .byte $3E, $95, $23, $48, $46, $96, $23, $48, $4E, $92, $03, $48, $56, $93, $03, $48  ; CPU:$935A PRG:135A  3E 95 23 48 46 96 23 48 4E 92 03 48 56 93 03 48
-    .byte $5E, $97, $03, $48, $66, $99, $03, $48, $6E, $9A, $03, $48, $76, $9C, $03, $48  ; CPU:$936A PRG:136A  5E 97 03 48 66 99 03 48 6E 9A 03 48 76 9C 03 48
-    .byte $7E, $9D, $03, $48, $86, $98, $03, $48, $2E, $8B, $23, $50, $36, $9B, $23, $50  ; CPU:$937A PRG:137A  7E 9D 03 48 86 98 03 48 2E 8B 23 50 36 9B 23 50
-    .byte $3E, $9E, $23, $50, $46, $9F, $03, $50, $76, $A0, $03, $50, $7E, $A1, $03, $50  ; CPU:$938A PRG:138A  3E 9E 23 50 46 9F 03 50 76 A0 03 50 7E A1 03 50
-    .byte $86, $A2, $03, $50, $8E, $A3, $03, $50, $F8, $8E, $03, $58, $2E, $A4, $23, $58  ; CPU:$939A PRG:139A  86 A2 03 50 8E A3 03 50 F8 8E 03 58 2E A4 23 58
-    .byte $7E, $A5, $03, $58, $86, $A6, $03, $58, $8E, $A8, $03, $58, $96, $A9, $03, $58  ; CPU:$93AA PRG:13AA  7E A5 03 58 86 A6 03 58 8E A8 03 58 96 A9 03 58
-    .byte $8E, $AA, $03, $60, $97, $AB, $03, $60, $9E, $AC, $03, $60, $96, $AE, $03, $68  ; CPU:$93BA PRG:13BA  8E AA 03 60 97 AB 03 60 9E AC 03 60 96 AE 03 68
-    .byte $9E, $AD, $03, $68, $9E, $AF, $03, $70, $4E, $B0, $03, $AA, $56, $B1, $03, $AA  ; CPU:$93CA PRG:13CA  9E AD 03 68 9E AF 03 70 4E B0 03 AA 56 B1 03 AA
-    .byte $5E, $A7, $03, $AA, $66, $B2, $03, $AA, $6E, $B6, $03, $AA, $76, $B7, $03, $AA  ; CPU:$93DA PRG:13DA  5E A7 03 AA 66 B2 03 AA 6E B6 03 AA 76 B7 03 AA
-    .byte $7E, $B8, $03, $AA, $56, $BD, $03, $B2, $5E, $B9, $03, $B2, $66, $BA, $03, $B2  ; CPU:$93EA PRG:13EA  7E B8 03 AA 56 BD 03 B2 5E B9 03 B2 66 BA 03 B2
-    .byte $6E, $BB, $03, $B2, $76, $BC, $03, $B2, $FF, $54, $4F, $4D, $31, $30, $30, $30  ; CPU:$93FA PRG:13FA  6E BB 03 B2 76 BC 03 B2 FF 54 4F 4D 31 30 30 30
-    .byte $FF, $32, $30, $30, $30, $30, $4A, $4F, $45, $FF, $35, $30, $30, $FF, $31, $30  ; CPU:$940A PRG:140A  FF 32 30 30 30 30 4A 4F 45 FF 35 30 30 FF 31 30
-    .byte $30, $30, $30, $54, $52, $49, $FF, $34, $35, $30, $FF, $FF, $39, $30, $30, $30  ; CPU:$941A PRG:141A  30 30 30 54 52 49 FF 34 35 30 FF FF 39 30 30 30
-    .byte $48, $40, $59, $FF, $34, $30, $30, $FF, $FF, $38, $30, $30, $30, $4A, $55, $4E  ; CPU:$942A PRG:142A  48 40 59 FF 34 30 30 FF FF 38 30 30 30 4A 55 4E
-    .byte $FF, $33, $35, $30, $FF, $FF, $37, $30, $30, $30, $4A, $41, $43, $FF, $33, $30  ; CPU:$943A PRG:143A  FF 33 35 30 FF FF 37 30 30 30 4A 41 43 FF 33 30
-    .byte $30, $FF, $FF, $36, $30, $30, $30, $44, $40, $48, $FF, $32, $35, $30, $FF, $FF  ; CPU:$944A PRG:144A  30 FF FF 36 30 30 30 44 40 48 FF 32 35 30 FF FF
-    .byte $35, $30, $30, $30, $4A, $49, $4E, $FF, $32, $30, $30, $FF, $FF, $34, $30, $30  ; CPU:$945A PRG:145A  35 30 30 30 4A 49 4E FF 32 30 30 FF FF 34 30 30
-    .byte $30, $42, $4F, $42, $FF, $31, $35, $30, $FF, $FF, $33, $30, $30, $30, $4B, $41  ; CPU:$946A PRG:146A  30 42 4F 42 FF 31 35 30 FF FF 33 30 30 30 4B 41
-    .byte $54, $FF, $31, $30, $30, $FF, $FF, $32, $30, $30, $30, $41, $42, $43, $44, $45  ; CPU:$947A PRG:147A  54 FF 31 30 30 FF FF 32 30 30 30 41 42 43 44 45
-    .byte $46, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53, $54, $55  ; CPU:$948A PRG:148A  46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55
-    .byte $56, $57, $58, $59, $5A, $40, $EF, $FF, $F1, $F2, $F2, $F1, $FF, $D7, $DF, $DC  ; CPU:$949A PRG:149A  56 57 58 59 5A 40 EF FF F1 F2 F2 F1 FF D7 DF DC
-    .byte $FF, $E8, $E2, $D7, $DE, $E0, $E1, $E3, $DB, $E7, $E5, $EA, $DD, $E6, $00, $A5  ; CPU:$94AA PRG:14AA  FF E8 E2 D7 DE E0 E1 E3 DB E7 E5 EA DD E6 00 A5
-    .byte $6C, $20, $73, $81, $CA, $94, $0E, $95, $1D, $95, $2C, $95, $64, $95, $81, $95  ; CPU:$94BA PRG:14BA  6C 20 73 81 CA 94 0E 95 1D 95 2C 95 64 95 81 95
-    .byte $E6, $97, $A5, $97, $C9, $80, $90, $3B, $A9, $03, $20, $04, $80, $A9, $01, $8D  ; CPU:$94CA PRG:14CA  E6 97 A5 97 C9 80 90 3B A9 03 20 04 80 A9 01 8D
-    .byte $DD, $00, $A9, $07, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD  ; CPU:$94DA PRG:14DA  DD 00 A9 07 8D DE 00 A9 05 20 04 80 A9 00 8D DD
-    .byte $00, $85, $97, $A5, $95, $D0, $03, $20, $4E, $C0, $A5, $96, $D0, $03, $20, $B4  ; CPU:$94EA PRG:14EA  00 85 97 A5 95 D0 03 20 4E C0 A5 96 D0 03 20 B4
-    .byte $AE, $20, $88, $81, $20, $28, $92, $E6, $6C, $A5, $71, $C9, $01, $D0, $04, $A9  ; CPU:$94FA PRG:14FA  AE 20 88 81 20 28 92 E6 6C A5 71 C9 01 D0 04 A9
-    .byte $04, $85, $6C, $60, $A5, $95, $F0, $03, $E6, $6C, $60, $A9, $00, $85, $34, $20  ; CPU:$950A PRG:150A  04 85 6C 60 A5 95 F0 03 E6 6C 60 A9 00 85 34 20
-    .byte $57, $C0, $60, $A5, $96, $F0, $03, $E6, $6C, $60, $A9, $01, $85, $34, $20, $BD  ; CPU:$951A PRG:151A  57 C0 60 A5 96 F0 03 E6 6C 60 A9 01 85 34 20 BD
-    .byte $AE, $60, $A2, $00, $A0, $00, $A5, $98, $F0, $02, $A2, $08, $BD, $54, $95, $99  ; CPU:$952A PRG:152A  AE 60 A2 00 A0 00 A5 98 F0 02 A2 08 BD 54 95 99
-    .byte $38, $03, $E8, $C8, $C0, $08, $90, $F4, $A9, $00, $99, $38, $03, $A5, $6F, $D0  ; CPU:$953A PRG:153A  38 03 E8 C8 C0 08 90 F4 A9 00 99 38 03 A5 6F D0
-    .byte $06, $EE, $38, $03, $EE, $38, $03, $E6, $6C, $60, $87, $21, $0B, $F8, $D9, $23  ; CPU:$954A PRG:154A  06 EE 38 03 EE 38 03 E6 6C 60 87 21 0B F8 D9 23
-    .byte $1B, $F8, $97, $21, $0B, $F8, $DD, $23, $1B, $F8, $E6, $97, $A5, $97, $C9, $F0  ; CPU:$955A PRG:155A  1B F8 97 21 0B F8 DD 23 1B F8 E6 97 A5 97 C9 F0
-    .byte $90, $14, $A9, $00, $85, $97, $E6, $6C, $A5, $95, $D0, $03, $20, $61, $C0, $A5  ; CPU:$956A PRG:156A  90 14 A9 00 85 97 E6 6C A5 95 D0 03 20 61 C0 A5
-    .byte $96, $D0, $03, $20, $C7, $AE, $60, $E6, $5B, $E6, $5D, $A5, $5B, $A4, $98, $F0  ; CPU:$957A PRG:157A  96 D0 03 20 C7 AE 60 E6 5B E6 5D A5 5B A4 98 F0
-    .byte $02, $A5, $5D, $4A, $B0, $0F, $A9, $04, $85, $6A, $A9, $00, $85, $6C, $20, $D2  ; CPU:$958A PRG:158A  02 A5 5D 4A B0 0F A9 04 85 6A A9 00 85 6C 20 D2
-    .byte $95, $20, $EE, $95, $60, $85, $20, $A5, $98, $D0, $06, $20, $0B, $96, $4C, $AE  ; CPU:$959A PRG:159A  95 20 EE 95 60 85 20 A5 98 D0 06 20 0B 96 4C AE
-    .byte $95, $20, $16, $96, $C5, $91, $90, $11, $85, $91, $20, $D2, $95, $20, $EE, $95  ; CPU:$95AA PRG:15AA  95 20 16 96 C5 91 90 11 85 91 20 D2 95 20 EE 95
-    .byte $A9, $00, $85, $6C, $A9, $08, $85, $6A, $60, $20, $D2, $95, $20, $EE, $95, $A9  ; CPU:$95BA PRG:15BA  A9 00 85 6C A9 08 85 6A 60 20 D2 95 20 EE 95 A9
-    .byte $04, $85, $6A, $A9, $00, $85, $6C, $60, $A6, $5B, $E0, $05, $90, $10, $E6, $5A  ; CPU:$95CA PRG:15CA  04 85 6A A9 00 85 6C 60 A6 5B E0 05 90 10 E6 5A
-    .byte $A5, $5A, $C9, $04, $90, $04, $A9, $00, $85, $5A, $A2, $00, $86, $5B, $BD, $75  ; CPU:$95DA PRG:15DA  A5 5A C9 04 90 04 A9 00 85 5A A2 00 86 5B BD 75
-    .byte $F8, $85, $35, $60, $A6, $5D, $E0, $05, $90, $10, $E6, $5C, $A5, $5C, $C9, $04  ; CPU:$95EA PRG:15EA  F8 85 35 60 A6 5D E0 05 90 10 E6 5C A5 5C C9 04
-    .byte $90, $04, $A9, $00, $85, $5C, $A2, $00, $86, $5D, $BD, $75, $F8, $8D, $CB, $00  ; CPU:$95FA PRG:15FA  90 04 A9 00 85 5C A2 00 86 5D BD 75 F8 8D CB 00
-    .byte $60, $A5, $5A, $0A, $18, $65, $5A, $65, $20, $29, $0F, $60, $A5, $5C, $0A, $18  ; CPU:$960A PRG:160A  60 A5 5A 0A 18 65 5A 65 20 29 0F 60 A5 5C 0A 18
-    .byte $65, $5C, $65, $20, $29, $0F, $60, $E6, $6C, $C9, $80, $90, $06, $A9, $00, $85  ; CPU:$961A PRG:161A  65 5C 65 20 29 0F 60 E6 6C C9 80 90 06 A9 00 85
-    .byte $6C, $85, $6A, $60, $A5, $6C, $D0, $4A, $A2, $00, $BD, $47, $F8, $9D, $38, $03  ; CPU:$962A PRG:162A  6C 85 6A 60 A5 6C D0 4A A2 00 BD 47 F8 9D 38 03
-    .byte $E8, $E0, $08, $90, $F5, $A9, $00, $9D, $38, $03, $A5, $6F, $F0, $06, $CE, $38  ; CPU:$963A PRG:163A  E8 E0 08 90 F5 A9 00 9D 38 03 A5 6F F0 06 CE 38
-    .byte $03, $CE, $38, $03, $A2, $00, $BD, $74, $96, $9D, $04, $02, $E8, $E0, $08, $D0  ; CPU:$964A PRG:164A  03 CE 38 03 A2 00 BD 74 96 9D 04 02 E8 E0 08 D0
-    .byte $F5, $A5, $9A, $18, $69, $30, $8D, $05, $02, $A5, $6F, $F0, $0A, $A9, $5C, $8D  ; CPU:$965A PRG:165A  F5 A5 9A 18 69 30 8D 05 02 A5 6F F0 0A A9 5C 8D
-    .byte $07, $02, $A9, $18, $8D, $0B, $02, $E6, $6C, $60, $90, $30, $21, $78, $80, $AE  ; CPU:$966A PRG:166A  07 02 A9 18 8D 0B 02 E6 6C 60 90 30 21 78 80 AE
-    .byte $23, $34, $A5, $2A, $29, $08, $F0, $05, $A9, $80, $8D, $08, $02, $A5, $2A, $29  ; CPU:$967A PRG:167A  23 34 A5 2A 29 08 F0 05 A9 80 8D 08 02 A5 2A 29
-    .byte $04, $F0, $05, $A9, $88, $8D, $08, $02, $A2, $AE, $A5, $31, $29, $10, $D0, $02  ; CPU:$968A PRG:168A  04 F0 05 A9 88 8D 08 02 A2 AE A5 31 29 10 D0 02
-    .byte $A2, $FF, $8E, $09, $02, $A5, $2A, $29, $80, $D0, $01, $60, $C6, $9A, $CE, $05  ; CPU:$969A PRG:169A  A2 FF 8E 09 02 A5 2A 29 80 D0 01 60 C6 9A CE 05
-    .byte $02, $A2, $00, $BD, $69, $F8, $9D, $38, $03, $E8, $E0, $0C, $90, $F5, $A5, $6F  ; CPU:$96AA PRG:16AA  02 A2 00 BD 69 F8 9D 38 03 E8 E0 0C 90 F5 A5 6F
-    .byte $F0, $0C, $CE, $38, $03, $CE, $38, $03, $CE, $3C, $03, $CE, $3C, $03, $AD, $08  ; CPU:$96BA PRG:16BA  F0 0C CE 38 03 CE 38 03 CE 3C 03 CE 3C 03 AD 08
-    .byte $02, $C9, $88, $F0, $0A, $A9, $06, $85, $6A, $A9, $00, $85, $6C, $F0, $06, $20  ; CPU:$96CA PRG:16CA  02 C9 88 F0 0A A9 06 85 6A A9 00 85 6C F0 06 20
-    .byte $E3, $96, $20, $F3, $96, $20, $88, $81, $60, $20, $03, $97, $A9, $00, $85, $95  ; CPU:$96DA PRG:16DA  E3 96 20 F3 96 20 88 81 60 20 03 97 A9 00 85 95
-    .byte $85, $6C, $A9, $03, $85, $6A, $4C, $61, $C0, $20, $0F, $97, $A9, $00, $85, $96  ; CPU:$96EA PRG:16EA  85 6C A9 03 85 6A 4C 61 C0 20 0F 97 A9 00 85 96
-    .byte $85, $6C, $A9, $03, $85, $6A, $4C, $C7, $AE, $A9, $00, $AA, $9D, $AC, $05, $E8  ; CPU:$96FA PRG:16FA  85 6C A9 03 85 6A 4C C7 AE A9 00 AA 9D AC 05 E8
-    .byte $E0, $0A, $90, $F8, $60, $A9, $00, $AA, $9D, $B6, $05, $E8, $E0, $0A, $90, $F8  ; CPU:$970A PRG:170A  E0 0A 90 F8 60 A9 00 AA 9D B6 05 E8 E0 0A 90 F8
-    .byte $60, $A5, $26, $C9, $C0, $D0, $28, $A9, $00, $85, $95, $85, $6A, $A9, $05, $85  ; CPU:$971A PRG:171A  60 A5 26 C9 C0 D0 28 A9 00 85 95 85 6A A9 05 85
-    .byte $61, $A9, $08, $85, $60, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A5  ; CPU:$972A PRG:172A  61 A9 08 85 60 A9 03 20 04 80 A9 01 8D DD 00 A5
-    .byte $73, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $60, $A5  ; CPU:$973A PRG:173A  73 8D DE 00 A9 05 20 04 80 A9 00 8D DD 00 60 A5
-    .byte $27, $C9, $C0, $D0, $22, $A9, $00, $85, $96, $85, $6A, $A9, $03, $20, $04, $80  ; CPU:$974A PRG:174A  27 C9 C0 D0 22 A9 00 85 96 85 6A A9 03 20 04 80
-    .byte $A9, $01, $8D, $DD, $00, $A5, $73, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9  ; CPU:$975A PRG:175A  A9 01 8D DD 00 A5 73 8D DE 00 A9 05 20 04 80 A9
-    .byte $00, $8D, $DD, $00, $4C, $AA, $AA, $A5, $31, $29, $3F, $D0, $0C, $C6, $6E, $D0  ; CPU:$976A PRG:176A  00 8D DD 00 4C AA AA A5 31 29 3F D0 0C C6 6E D0
-    .byte $08, $A9, $00, $85, $6C, $A9, $06, $85, $6A, $60, $10, $11, $AD, $E5, $05, $F0  ; CPU:$977A PRG:177A  08 A9 00 85 6C A9 06 85 6A 60 10 11 AD E5 05 F0
-    .byte $23, $A5, $2A, $29, $10, $F0, $15, $AD, $02, $20, $A5, $02, $29, $E7, $8D, $01  ; CPU:$978A PRG:178A  23 A5 2A 29 10 F0 15 AD 02 20 A5 02 29 E7 8D 01
-    .byte $20, $A9, $00, $85, $6C, $85, $6F, $A9, $02, $85, $6A, $60, $AD, $E6, $05, $D0  ; CPU:$979A PRG:179A  20 A9 00 85 6C 85 6F A9 02 85 6A 60 AD E6 05 D0
-    .byte $03, $4C, $36, $80, $A5, $2A, $29, $10, $D0, $06, $A5, $2B, $29, $10, $F0, $09  ; CPU:$97AA PRG:17AA  03 4C 36 80 A5 2A 29 10 D0 06 A5 2B 29 10 F0 09
-    .byte $A5, $3E, $49, $01, $85, $3E, $20, $1B, $98, $A5, $3E, $F0, $01, $60, $A5, $6F  ; CPU:$97BA PRG:17BA  A5 3E 49 01 85 3E 20 1B 98 A5 3E F0 01 60 A5 6F
-    .byte $D0, $27, $A5, $95, $D0, $0F, $A9, $00, $85, $34, $20, $C4, $CB, $A5, $37, $D0  ; CPU:$97CA PRG:17CA  D0 27 A5 95 D0 0F A9 00 85 34 20 C4 CB A5 37 D0
-    .byte $03, $20, $68, $BB, $60, $A9, $03, $20, $04, $80, $A2, $0B, $A5, $9A, $D0, $02  ; CPU:$97DA PRG:17DA  03 20 68 BB 60 A9 03 20 04 80 A2 0B A5 9A D0 02
-    .byte $A2, $06, $86, $6A, $A9, $00, $85, $6C, $60, $A9, $00, $85, $34, $20, $C4, $CB  ; CPU:$97EA PRG:17EA  A2 06 86 6A A9 00 85 6C 60 A9 00 85 34 20 C4 CB
-    .byte $A9, $01, $85, $34, $20, $8F, $A7, $A5, $95, $F0, $15, $C5, $96, $D0, $11, $A9  ; CPU:$97FA PRG:17FA  A9 01 85 34 20 8F A7 A5 95 F0 15 C5 96 D0 11 A9
-    .byte $03, $20, $04, $80, $A9, $0C, $85, $6A, $A9, $00, $85, $6C, $A9, $05, $85, $6E  ; CPU:$980A PRG:180A  03 20 04 80 A9 0C 85 6A A9 00 85 6C A9 05 85 6E
-    .byte $60, $A9, $0C, $85, $11, $A9, $0A, $85, $12, $A5, $3E, $D0, $02, $85, $11, $20  ; CPU:$981A PRG:181A  60 A9 0C 85 11 A9 0A 85 12 A5 3E D0 02 85 11 20
-    .byte $5D, $85, $A9, $F8, $A2, $02, $9D, $98, $03, $E8, $E0, $0A, $90, $F8, $A5, $6F  ; CPU:$982A PRG:182A  5D 85 A9 F8 A2 02 9D 98 03 E8 E0 0A 90 F8 A5 6F
-    .byte $F0, $05, $A9, $28, $8D, $92, $03, $60, $A5, $91, $4A, $18, $69, $02, $AA, $20  ; CPU:$983A PRG:183A  F0 05 A9 28 8D 92 03 60 A5 91 4A 18 69 02 AA 20
-    .byte $84, $90, $A9, $99, $8D, $DE, $03, $A5, $6C, $F0, $03, $4C, $EC, $98, $E6, $6C  ; CPU:$984A PRG:184A  84 90 A9 99 8D DE 03 A5 6C F0 03 4C EC 98 E6 6C
-    .byte $20, $88, $81, $A5, $91, $18, $69, $04, $85, $2E, $A9, $00, $20, $04, $80, $20  ; CPU:$985A PRG:185A  20 88 81 A5 91 18 69 04 85 2E A9 00 20 04 80 20
-    .byte $28, $92, $A5, $91, $D0, $21, $A9, $0D, $85, $11, $A9, $00, $85, $12, $20, $5D  ; CPU:$986A PRG:186A  28 92 A5 91 D0 21 A9 0D 85 11 A9 00 85 12 20 5D
-    .byte $85, $A9, $0E, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $A9, $0F, $85, $11  ; CPU:$987A PRG:187A  85 A9 0E 85 11 A9 01 85 12 20 5D 85 A9 0F 85 11
-    .byte $A9, $02, $85, $12, $20, $5D, $85, $A2, $81, $A5, $91, $6A, $90, $02, $A2, $91  ; CPU:$988A PRG:188A  A9 02 85 12 20 5D 85 A2 81 A5 91 6A 90 02 A2 91
-    .byte $86, $01, $A9, $00, $8D, $01, $02, $A9, $80, $8D, $03, $02, $A9, $A6, $8D, $00  ; CPU:$989A PRG:189A  86 01 A9 00 8D 01 02 A9 80 8D 03 02 A9 A6 8D 00
-    .byte $02, $A9, $E3, $8D, $02, $02, $A9, $00, $8D, $DB, $03, $8D, $DC, $03, $8D, $DD  ; CPU:$98AA PRG:18AA  02 A9 E3 8D 02 02 A9 00 8D DB 03 8D DC 03 8D DD
-    .byte $03, $A5, $91, $0A, $AA, $BD, $55, $9A, $85, $9B, $BD, $56, $9A, $85, $9C, $A9  ; CPU:$98BA PRG:18BA  03 A5 91 0A AA BD 55 9A 85 9B BD 56 9A 85 9C A9
-    .byte $26, $8D, $D9, $03, $A9, $C4, $8D, $DA, $03, $A9, $00, $85, $03, $85, $04, $A5  ; CPU:$98CA PRG:18CA  26 8D D9 03 A9 C4 8D DA 03 A9 00 85 03 85 04 A5
-    .byte $99, $D0, $0E, $A2, $04, $A5, $91, $C9, $0B, $D0, $02, $A2, $08, $8A, $20, $63  ; CPU:$98DA PRG:18DA  99 D0 0E A2 04 A5 91 C9 0B D0 02 A2 08 8A 20 63
-    .byte $86, $60, $A5, $6C, $C9, $01, $D0, $14, $20, $2B, $9A, $AD, $DD, $03, $C9, $04  ; CPU:$98EA PRG:18EA  86 60 A5 6C C9 01 D0 14 20 2B 9A AD DD 03 C9 04
-    .byte $B0, $06, $20, $62, $99, $4C, $05, $99, $20, $F9, $99, $60, $A5, $99, $D0, $3B  ; CPU:$98FA PRG:18FA  B0 06 20 62 99 4C 05 99 20 F9 99 60 A5 99 D0 3B
-    .byte $A5, $2A, $29, $C0, $D0, $06, $A5, $2B, $29, $C0, $F0, $2C, $A9, $00, $85, $6C  ; CPU:$990A PRG:190A  A5 2A 29 C0 D0 06 A5 2B 29 C0 F0 2C A9 00 85 6C
-    .byte $8D, $B0, $01, $A9, $04, $85, $6A, $A5, $91, $D0, $06, $20, $88, $81, $20, $28  ; CPU:$991A PRG:191A  8D B0 01 A9 04 85 6A A5 91 D0 06 20 88 81 20 28
-    .byte $92, $E6, $91, $A5, $91, $C9, $0C, $D0, $07, $E6, $99, $A9, $06, $85, $6A, $60  ; CPU:$992A PRG:192A  92 E6 91 A5 91 C9 0C D0 07 E6 99 A9 06 85 6A 60
-    .byte $A5, $01, $29, $88, $09, $88, $85, $01, $4C, $2B, $9A, $E6, $97, $D0, $16, $A9  ; CPU:$993A PRG:193A  A5 01 29 88 09 88 85 01 4C 2B 9A E6 97 D0 16 A9
-    .byte $00, $85, $6C, $E6, $91, $A5, $91, $C9, $0C, $90, $0A, $A9, $07, $85, $6A, $A9  ; CPU:$994A PRG:194A  00 85 6C E6 91 A5 91 C9 0C 90 0A A9 07 85 6A A9
-    .byte $00, $85, $6C, $85, $99, $4C, $2B, $9A, $A5, $31, $29, $03, $F0, $01, $60, $A2  ; CPU:$995A PRG:195A  00 85 6C 85 99 4C 2B 9A A5 31 29 03 F0 01 60 A2
-    .byte $00, $BD, $4A, $9A, $9D, $3A, $03, $E8, $E0, $03, $90, $F5, $A9, $02, $8D, $DF  ; CPU:$996A PRG:196A  00 BD 4A 9A 9D 3A 03 E8 E0 03 90 F5 A9 02 8D DF
-    .byte $03, $A9, $01, $8D, $E0, $03, $AD, $DA, $03, $8D, $38, $03, $AD, $D9, $03, $8D  ; CPU:$997A PRG:197A  03 A9 01 8D E0 03 AD DA 03 8D 38 03 AD D9 03 8D
-    .byte $39, $03, $EE, $DA, $03, $AC, $DC, $03, $C0, $FF, $D0, $0F, $98, $18, $65, $9B  ; CPU:$998A PRG:198A  39 03 EE DA 03 AC DC 03 C0 FF D0 0F 98 18 65 9B
-    .byte $85, $9B, $90, $02, $E6, $9C, $A0, $00, $8C, $DC, $03, $EE, $DC, $03, $B1, $9B  ; CPU:$999A PRG:199A  85 9B 90 02 E6 9C A0 00 8C DC 03 EE DC 03 B1 9B
-    .byte $C9, $FF, $F0, $0C, $18, $69, $83, $8D, $E1, $03, $A9, $E0, $8D, $E2, $03, $60  ; CPU:$99AA PRG:19AA  C9 FF F0 0C 18 69 83 8D E1 03 A9 E0 8D E2 03 60
-    .byte $8D, $E1, $03, $8D, $E2, $03, $A9, $01, $8D, $DF, $03, $8D, $E0, $03, $EE, $DB  ; CPU:$99BA PRG:19BA  8D E1 03 8D E2 03 A9 01 8D DF 03 8D E0 03 EE DB
-    .byte $03, $A6, $91, $AD, $DB, $03, $DD, $6D, $9A, $90, $03, $E6, $6C, $60, $EE, $DD  ; CPU:$99CA PRG:19CA  03 A6 91 AD DB 03 DD 6D 9A 90 03 E6 6C 60 EE DD
-    .byte $03, $AD, $DD, $03, $0A, $AA, $BD, $4D, $9A, $8D, $D9, $03, $BD, $4E, $9A, $8D  ; CPU:$99DA PRG:19DA  03 AD DD 03 0A AA BD 4D 9A 8D D9 03 BD 4E 9A 8D
-    .byte $DA, $03, $AD, $DD, $03, $C9, $04, $90, $05, $A9, $B4, $8D, $E3, $03, $60, $CE  ; CPU:$99EA PRG:19EA  DA 03 AD DD 03 C9 04 90 05 A9 B4 8D E3 03 60 CE
-    .byte $E3, $03, $D0, $2C, $AD, $02, $20, $A5, $02, $29, $E7, $8D, $01, $20, $AD, $02  ; CPU:$99FA PRG:19FA  E3 03 D0 2C AD 02 20 A5 02 29 E7 8D 01 20 AD 02
-    .byte $20, $A9, $26, $8D, $06, $20, $8D, $D9, $03, $A9, $C4, $8D, $06, $20, $8D, $DA  ; CPU:$9A0A PRG:1A0A  20 A9 26 8D 06 20 8D D9 03 A9 C4 8D 06 20 8D DA
-    .byte $03, $A2, $F0, $A9, $FF, $8D, $07, $20, $CA, $D0, $FA, $A9, $00, $8D, $DD, $03  ; CPU:$9A1A PRG:1A1A  03 A2 F0 A9 FF 8D 07 20 CA D0 FA A9 00 8D DD 03
-    .byte $60, $AD, $02, $20, $29, $40, $D0, $F9, $AD, $02, $20, $29, $40, $F0, $F9, $A2  ; CPU:$9A2A PRG:1A2A  60 AD 02 20 29 40 D0 F9 AD 02 20 29 40 F0 F9 A2
-    .byte $06, $20, $84, $90, $AD, $02, $20, $A9, $99, $8D, $DE, $03, $8D, $00, $20, $60  ; CPU:$9A3A PRG:1A3A  06 20 84 90 AD 02 20 A9 99 8D DE 03 8D 00 20 60
-    .byte $DF, $03, $00, $26, $C4, $27, $04, $27, $44, $27, $84, $79, $9A, $44, $9B, $42  ; CPU:$9A4A PRG:1A4A  DF 03 00 26 C4 27 04 27 44 27 84 79 9A 44 9B 42
-    .byte $9C, $8D, $9D, $A4, $9E, $BB, $9F, $1E, $A1, $1C, $A2, $FF, $A2, $CA, $A3, $61  ; CPU:$9A5A PRG:1A5A  9C 8D 9D A4 9E BB 9F 1E A1 1C A2 FF A2 CA A3 61
-    .byte $A4, $44, $A5, $0B, $0E, $13, $0F, $0F, $13, $0E, $0B, $0B, $07, $0B, $1B, $20  ; CPU:$9A6A PRG:1A6A  A4 44 A5 0B 0E 13 0F 0F 13 0E 0B 0B 07 0B 1B 20
-    .byte $20, $4F, $4E, $43, $45, $20, $55, $50, $4F, $4E, $20, $41, $20, $54, $49, $4D  ; CPU:$9A7A PRG:1A7A  20 4F 4E 43 45 20 55 50 4F 4E 20 41 20 54 49 4D
-    .byte $45, $20, $49, $4E, $20, $20, $20, $FF, $20, $41, $20, $48, $49, $44, $44, $45  ; CPU:$9A8A PRG:1A8A  45 20 49 4E 20 20 20 FF 20 41 20 48 49 44 44 45
-    .byte $4E, $20, $4C, $49, $51, $55, $49, $44, $20, $57, $4F, $52, $4C, $44, $20, $20  ; CPU:$9A9A PRG:1A9A  4E 20 4C 49 51 55 49 44 20 57 4F 52 4C 44 20 20
-    .byte $FF, $20, $20, $44, $45, $45, $50, $20, $42, $45, $4E, $45, $41, $54, $48, $20  ; CPU:$9AAA PRG:1AAA  FF 20 20 44 45 45 50 20 42 45 4E 45 41 54 48 20
-    .byte $54, $48, $45, $20, $53, $45, $41, $20, $20, $FF, $FF, $FF, $20, $20, $54, $48  ; CPU:$9ABA PRG:1ABA  54 48 45 20 53 45 41 20 20 FF FF FF 20 20 54 48
-    .byte $45, $52, $45, $20, $57, $41, $53, $20, $54, $48, $45, $20, $4D, $41, $47, $49  ; CPU:$9ACA PRG:1ACA  45 52 45 20 57 41 53 20 54 48 45 20 4D 41 47 49
-    .byte $43, $20, $20, $20, $FF, $20, $20, $20, $43, $49, $54, $59, $20, $4F, $46, $20  ; CPU:$9ADA PRG:1ADA  43 20 20 20 FF 20 20 20 43 49 54 59 20 4F 46 20
-    .byte $41, $54, $4C, $41, $4E, $54, $49, $53, $2C, $20, $20, $20, $20, $FF, $FF, $20  ; CPU:$9AEA PRG:1AEA  41 54 4C 41 4E 54 49 53 2C 20 20 20 20 FF FF 20
-    .byte $20, $57, $48, $45, $52, $45, $20, $54, $48, $45, $20, $4C, $45, $47, $45, $4E  ; CPU:$9AFA PRG:1AFA  20 57 48 45 52 45 20 54 48 45 20 4C 45 47 45 4E
-    .byte $44, $41, $52, $59, $20, $20, $20, $FF, $20, $48, $41, $4C, $46, $20, $46, $49  ; CPU:$9B0A PRG:1B0A  44 41 52 59 20 20 20 FF 20 48 41 4C 46 20 46 49
-    .byte $53, $48, $2C, $20, $48, $41, $4C, $46, $20, $48, $55, $4D, $41, $4E, $2C, $20  ; CPU:$9B1A PRG:1B1A  53 48 2C 20 48 41 4C 46 20 48 55 4D 41 4E 2C 20
-    .byte $FF, $20, $20, $20, $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $4C  ; CPU:$9B2A PRG:1B2A  FF 20 20 20 20 4D 45 52 50 45 4F 50 4C 45 20 4C
-    .byte $49, $56, $45, $44, $2E, $20, $20, $20, $20, $FF, $20, $4E, $41, $4D, $4F, $52  ; CPU:$9B3A PRG:1B3A  49 56 45 44 2E 20 20 20 20 FF 20 4E 41 4D 4F 52
-    .byte $41, $20, $57, $41, $53, $20, $41, $20, $42, $45, $41, $55, $54, $49, $46, $55  ; CPU:$9B4A PRG:1B4A  41 20 57 41 53 20 41 20 42 45 41 55 54 49 46 55
-    .byte $4C, $20, $FF, $20, $4D, $45, $52, $4D, $41, $49, $44, $20, $57, $48, $4F, $20  ; CPU:$9B5A PRG:1B5A  4C 20 FF 20 4D 45 52 4D 41 49 44 20 57 48 4F 20
-    .byte $4C, $49, $56, $45, $44, $20, $44, $45, $45, $50, $20, $FF, $20, $20, $20, $55  ; CPU:$9B6A PRG:1B6A  4C 49 56 45 44 20 44 45 45 50 20 FF 20 20 20 55
-    .byte $4E, $44, $45, $52, $20, $54, $48, $45, $20, $44, $41, $52, $4B, $20, $53, $45  ; CPU:$9B7A PRG:1B7A  4E 44 45 52 20 54 48 45 20 44 41 52 4B 20 53 45
-    .byte $41, $20, $20, $20, $FF, $FF, $20, $20, $57, $48, $45, $52, $45, $20, $54, $48  ; CPU:$9B8A PRG:1B8A  41 20 20 20 FF FF 20 20 57 48 45 52 45 20 54 48
-    .byte $45, $20, $53, $55, $4E, $20, $4C, $4F, $4F, $4B, $45, $44, $20, $20, $FF, $20  ; CPU:$9B9A PRG:1B9A  45 20 53 55 4E 20 4C 4F 4F 4B 45 44 20 20 FF 20
-    .byte $20, $20, $20, $20, $20, $4C, $49, $4B, $45, $20, $41, $20, $4D, $55, $52, $4B  ; CPU:$9BAA PRG:1BAA  20 20 20 20 20 4C 49 4B 45 20 41 20 4D 55 52 4B
-    .byte $59, $20, $20, $20, $20, $20, $20, $FF, $20, $20, $47, $52, $45, $45, $4E, $20  ; CPU:$9BBA PRG:1BBA  59 20 20 20 20 20 20 FF 20 20 47 52 45 45 4E 20
-    .byte $42, $41, $4C, $4C, $2E, $20, $54, $48, $45, $20, $4C, $41, $4E, $44, $20, $20  ; CPU:$9BCA PRG:1BCA  42 41 4C 4C 2E 20 54 48 45 20 4C 41 4E 44 20 20
-    .byte $FF, $FF, $20, $20, $57, $41, $53, $20, $49, $4C, $4C, $55, $4D, $49, $4E, $41  ; CPU:$9BDA PRG:1BDA  FF FF 20 20 57 41 53 20 49 4C 4C 55 4D 49 4E 41
-    .byte $54, $45, $44, $20, $44, $41, $59, $20, $20, $20, $FF, $20, $41, $4E, $44, $20  ; CPU:$9BEA PRG:1BEA  54 45 44 20 44 41 59 20 20 20 FF 20 41 4E 44 20
-    .byte $4E, $49, $47, $48, $54, $20, $42, $59, $20, $55, $4E, $44, $45, $52, $53, $45  ; CPU:$9BFA PRG:1BFA  4E 49 47 48 54 20 42 59 20 55 4E 44 45 52 53 45
-    .byte $41, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $20, $20, $56, $4F, $4C, $43  ; CPU:$9C0A PRG:1C0A  41 20 20 FF 20 20 20 20 20 20 20 20 56 4F 4C 43
-    .byte $41, $4E, $4F, $53, $20, $20, $20, $20, $20, $20, $20, $20, $FF, $FF, $FF, $20  ; CPU:$9C1A PRG:1C1A  41 4E 4F 53 20 20 20 20 20 20 20 20 FF FF FF 20
-    .byte $20, $20, $20, $41, $4E, $44, $20, $47, $4C, $4F, $57, $20, $57, $4F, $52, $4D  ; CPU:$9C2A PRG:1C2A  20 20 20 41 4E 44 20 47 4C 4F 57 20 57 4F 52 4D
-    .byte $53, $2E, $20, $20, $20, $20, $20, $FF, $20, $20, $20, $4E, $41, $4D, $4F, $52  ; CPU:$9C3A PRG:1C3A  53 2E 20 20 20 20 20 FF 20 20 20 4E 41 4D 4F 52
-    .byte $41, $20, $4C, $49, $56, $45, $44, $20, $49, $4E, $20, $41, $20, $20, $20, $20  ; CPU:$9C4A PRG:1C4A  41 20 4C 49 56 45 44 20 49 4E 20 41 20 20 20 20
-    .byte $FF, $20, $47, $4C, $4F, $57, $49, $4E, $47, $20, $42, $4C, $55, $45, $20, $53  ; CPU:$9C5A PRG:1C5A  FF 20 47 4C 4F 57 49 4E 47 20 42 4C 55 45 20 53
-    .byte $45, $41, $53, $48, $45, $4C, $4C, $20, $20, $FF, $20, $57, $49, $54, $48, $20  ; CPU:$9C6A PRG:1C6A  45 41 53 48 45 4C 4C 20 20 FF 20 57 49 54 48 20
-    .byte $48, $45, $52, $20, $4D, $4F, $4D, $2C, $20, $44, $41, $44, $20, $41, $4E, $44  ; CPU:$9C7A PRG:1C7A  48 45 52 20 4D 4F 4D 2C 20 44 41 44 20 41 4E 44
-    .byte $20, $20, $FF, $FF, $20, $4C, $49, $54, $54, $4C, $45, $20, $42, $52, $4F, $54  ; CPU:$9C8A PRG:1C8A  20 20 FF FF 20 4C 49 54 54 4C 45 20 42 52 4F 54
-    .byte $48, $45, $52, $20, $4D, $49, $4B, $45, $59, $2E, $20, $20, $FF, $20, $20, $20  ; CPU:$9C9A PRG:1C9A  48 45 52 20 4D 49 4B 45 59 2E 20 20 FF 20 20 20
-    .byte $53, $48, $45, $20, $57, $4F, $55, $4C, $44, $20, $52, $49, $44, $45, $20, $48  ; CPU:$9CAA PRG:1CAA  53 48 45 20 57 4F 55 4C 44 20 52 49 44 45 20 48
-    .byte $45, $52, $20, $20, $20, $FF, $20, $4C, $49, $51, $55, $49, $43, $59, $43, $4C  ; CPU:$9CBA PRG:1CBA  45 52 20 20 20 FF 20 4C 49 51 55 49 43 59 43 4C
-    .byte $45, $20, $54, $4F, $20, $53, $43, $48, $4F, $4F, $4C, $2C, $20, $20, $FF, $FF  ; CPU:$9CCA PRG:1CCA  45 20 54 4F 20 53 43 48 4F 4F 4C 2C 20 20 FF FF
-    .byte $20, $20, $50, $4C, $41, $59, $20, $43, $41, $54, $43, $48, $20, $57, $49, $54  ; CPU:$9CDA PRG:1CDA  20 20 50 4C 41 59 20 43 41 54 43 48 20 57 49 54
-    .byte $48, $20, $48, $45, $52, $20, $20, $20, $FF, $20, $20, $50, $45, $54, $20, $53  ; CPU:$9CEA PRG:1CEA  48 20 48 45 52 20 20 20 FF 20 20 50 45 54 20 53
-    .byte $51, $55, $49, $44, $20, $57, $41, $4C, $44, $4F, $20, $41, $4E, $44, $20, $20  ; CPU:$9CFA PRG:1CFA  51 55 49 44 20 57 41 4C 44 4F 20 41 4E 44 20 20
-    .byte $20, $FF, $44, $4F, $20, $41, $20, $4C, $4F, $54, $20, $4F, $46, $20, $54, $48  ; CPU:$9D0A PRG:1D0A  20 FF 44 4F 20 41 20 4C 4F 54 20 4F 46 20 54 48
-    .byte $49, $4E, $47, $53, $20, $54, $48, $41, $54, $20, $FF, $FF, $FF, $20, $20, $20  ; CPU:$9D1A PRG:1D1A  49 4E 47 53 20 54 48 41 54 20 FF FF FF 20 20 20
-    .byte $53, $55, $52, $46, $41, $43, $45, $20, $50, $45, $4F, $50, $4C, $45, $20, $44  ; CPU:$9D2A PRG:1D2A  53 55 52 46 41 43 45 20 50 45 4F 50 4C 45 20 44
-    .byte $4F, $2E, $20, $20, $20, $FF, $20, $20, $20, $49, $4E, $20, $46, $41, $43, $54  ; CPU:$9D3A PRG:1D3A  4F 2E 20 20 20 FF 20 20 20 49 4E 20 46 41 43 54
-    .byte $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $20, $20, $20, $FF, $FF  ; CPU:$9D4A PRG:1D4A  20 4D 45 52 50 45 4F 50 4C 45 20 20 20 20 FF FF
-    .byte $FF, $20, $20, $20, $41, $52, $45, $20, $41, $20, $4C, $4F, $54, $20, $4C, $49  ; CPU:$9D5A PRG:1D5A  FF 20 20 20 41 52 45 20 41 20 4C 4F 54 20 4C 49
-    .byte $4B, $45, $20, $59, $4F, $55, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20  ; CPU:$9D6A PRG:1D6A  4B 45 20 59 4F 55 20 20 20 FF 20 20 20 20 20 20
-    .byte $20, $20, $41, $4E, $44, $20, $4D, $45, $2E, $20, $20, $20, $20, $20, $20, $20  ; CPU:$9D7A PRG:1D7A  20 20 41 4E 44 20 4D 45 2E 20 20 20 20 20 20 20
-    .byte $20, $20, $FF, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $4C, $4F, $56  ; CPU:$9D8A PRG:1D8A  20 20 FF 4D 45 52 50 45 4F 50 4C 45 20 4C 4F 56
-    .byte $45, $44, $20, $54, $4F, $20, $50, $4C, $41, $59, $20, $FF, $20, $20, $20, $20  ; CPU:$9D9A PRG:1D9A  45 44 20 54 4F 20 50 4C 41 59 20 FF 20 20 20 20
-    .byte $47, $41, $4D, $45, $53, $2E, $20, $54, $48, $45, $59, $20, $48, $41, $44, $20  ; CPU:$9DAA PRG:1DAA  47 41 4D 45 53 2E 20 54 48 45 59 20 48 41 44 20
-    .byte $20, $20, $20, $20, $FF, $20, $54, $48, $45, $20, $42, $45, $53, $54, $20, $47  ; CPU:$9DBA PRG:1DBA  20 20 20 20 FF 20 54 48 45 20 42 45 53 54 20 47
-    .byte $41, $4D, $45, $53, $20, $49, $4E, $20, $54, $48, $45, $20, $20, $FF, $FF, $FF  ; CPU:$9DCA PRG:1DCA  41 4D 45 53 20 49 4E 20 54 48 45 20 20 FF FF FF
-    .byte $20, $57, $4F, $52, $4C, $44, $2C, $20, $42, $45, $43, $41, $55, $53, $45, $20  ; CPU:$9DDA PRG:1DDA  20 57 4F 52 4C 44 2C 20 42 45 43 41 55 53 45 20
-    .byte $54, $48, $45, $59, $20, $48, $41, $44, $FF, $20, $20, $54, $48, $45, $20, $42  ; CPU:$9DEA PRG:1DEA  54 48 45 59 20 48 41 44 FF 20 20 54 48 45 20 42
-    .byte $45, $53, $54, $20, $47, $41, $4D, $45, $4D, $41, $4B, $45, $52, $53, $2E, $20  ; CPU:$9DFA PRG:1DFA  45 53 54 20 47 41 4D 45 4D 41 4B 45 52 53 2E 20
-    .byte $20, $FF, $FF, $20, $20, $54, $48, $45, $20, $4D, $45, $52, $50, $45, $4F, $50  ; CPU:$9E0A PRG:1E0A  20 FF FF 20 20 54 48 45 20 4D 45 52 50 45 4F 50
-    .byte $4C, $45, $20, $57, $4F, $55, $4C, $44, $20, $20, $20, $FF, $43, $4F, $4C, $4C  ; CPU:$9E1A PRG:1E1A  4C 45 20 57 4F 55 4C 44 20 20 20 FF 43 4F 4C 4C
-    .byte $45, $43, $54, $20, $50, $45, $41, $52, $4C, $53, $20, $41, $4E, $44, $20, $54  ; CPU:$9E2A PRG:1E2A  45 43 54 20 50 45 41 52 4C 53 20 41 4E 44 20 54
-    .byte $52, $41, $44, $45, $FF, $57, $49, $54, $48, $20, $54, $48, $45, $20, $47, $41  ; CPU:$9E3A PRG:1E3A  52 41 44 45 FF 57 49 54 48 20 54 48 45 20 47 41
-    .byte $4D, $45, $4D, $41, $4B, $45, $52, $53, $20, $46, $4F, $52, $20, $FF, $FF, $20  ; CPU:$9E4A PRG:1E4A  4D 45 4D 41 4B 45 52 53 20 46 4F 52 20 FF FF 20
-    .byte $20, $4E, $45, $57, $20, $47, $41, $4D, $45, $53, $20, $45, $56, $45, $52, $59  ; CPU:$9E5A PRG:1E5A  20 4E 45 57 20 47 41 4D 45 53 20 45 56 45 52 59
-    .byte $44, $41, $59, $2E, $20, $20, $20, $FF, $20, $20, $4C, $49, $56, $49, $4E, $47  ; CPU:$9E6A PRG:1E6A  44 41 59 2E 20 20 20 FF 20 20 4C 49 56 49 4E 47
-    .byte $20, $55, $4E, $44, $45, $52, $20, $54, $48, $45, $20, $53, $45, $41, $20, $20  ; CPU:$9E7A PRG:1E7A  20 55 4E 44 45 52 20 54 48 45 20 53 45 41 20 20
-    .byte $FF, $20, $20, $20, $57, $41, $53, $20, $41, $20, $4C, $4F, $54, $20, $4F, $46  ; CPU:$9E8A PRG:1E8A  FF 20 20 20 57 41 53 20 41 20 4C 4F 54 20 4F 46
-    .byte $20, $46, $55, $4E, $2E, $20, $20, $20, $20, $FF, $20, $20, $42, $55, $54, $20  ; CPU:$9E9A PRG:1E9A  20 46 55 4E 2E 20 20 20 20 FF 20 20 42 55 54 20
-    .byte $41, $4C, $41, $53, $2C, $20, $54, $48, $45, $52, $45, $20, $4C, $49, $56, $45  ; CPU:$9EAA PRG:1EAA  41 4C 41 53 2C 20 54 48 45 52 45 20 4C 49 56 45
-    .byte $44, $20, $FF, $20, $20, $20, $41, $4E, $20, $45, $56, $49, $4C, $20, $4D, $41  ; CPU:$9EBA PRG:1EBA  44 20 FF 20 20 20 41 4E 20 45 56 49 4C 20 4D 41
-    .byte $4E, $20, $43, $41, $4C, $4C, $45, $44, $20, $20, $20, $FF, $20, $20, $20, $20  ; CPU:$9ECA PRG:1ECA  4E 20 43 41 4C 4C 45 44 20 20 20 FF 20 20 20 20
-    .byte $45, $4D, $50, $45, $52, $4F, $52, $20, $4F, $2D, $44, $49, $4E, $54, $4F, $4E  ; CPU:$9EDA PRG:1EDA  45 4D 50 45 52 4F 52 20 4F 2D 44 49 4E 54 4F 4E
-    .byte $2E, $20, $20, $20, $FF, $FF, $48, $45, $20, $57, $41, $53, $20, $41, $20, $53  ; CPU:$9EEA PRG:1EEA  2E 20 20 20 FF FF 48 45 20 57 41 53 20 41 20 53
-    .byte $55, $52, $46, $41, $43, $45, $20, $44, $57, $45, $4C, $4C, $45, $52, $FF, $20  ; CPU:$9EFA PRG:1EFA  55 52 46 41 43 45 20 44 57 45 4C 4C 45 52 FF 20
-    .byte $57, $48, $4F, $20, $4D, $41, $44, $45, $20, $48, $49, $53, $20, $52, $49, $43  ; CPU:$9F0A PRG:1F0A  57 48 4F 20 4D 41 44 45 20 48 49 53 20 52 49 43
-    .byte $48, $45, $53, $20, $42, $59, $20, $FF, $20, $53, $45, $4C, $4C, $49, $4E, $47  ; CPU:$9F1A PRG:1F1A  48 45 53 20 42 59 20 FF 20 53 45 4C 4C 49 4E 47
-    .byte $20, $53, $41, $4C, $54, $20, $57, $41, $54, $45, $52, $20, $41, $4E, $44, $20  ; CPU:$9F2A PRG:1F2A  20 53 41 4C 54 20 57 41 54 45 52 20 41 4E 44 20
-    .byte $FF, $FF, $20, $20, $20, $53, $45, $41, $20, $53, $48, $45, $4C, $4C, $53, $2E  ; CPU:$9F3A PRG:1F3A  FF FF 20 20 20 53 45 41 20 53 48 45 4C 4C 53 2E
-    .byte $20, $41, $46, $54, $45, $52, $20, $20, $20, $20, $FF, $20, $20, $20, $59, $45  ; CPU:$9F4A PRG:1F4A  20 41 46 54 45 52 20 20 20 20 FF 20 20 20 59 45
-    .byte $41, $52, $53, $20, $4F, $46, $20, $50, $4C, $41, $4E, $4E, $49, $4E, $47, $20  ; CPU:$9F5A PRG:1F5A  41 52 53 20 4F 46 20 50 4C 41 4E 4E 49 4E 47 20
-    .byte $20, $20, $20, $FF, $20, $20, $20, $20, $48, $45, $20, $48, $41, $44, $20, $43  ; CPU:$9F6A PRG:1F6A  20 20 20 FF 20 20 20 20 48 45 20 48 41 44 20 43
-    .byte $4F, $4D, $45, $20, $55, $50, $20, $20, $20, $20, $20, $20, $FF, $FF, $FF, $20  ; CPU:$9F7A PRG:1F7A  4F 4D 45 20 55 50 20 20 20 20 20 20 FF FF FF 20
-    .byte $20, $20, $57, $49, $54, $48, $20, $54, $48, $45, $20, $55, $4C, $54, $49, $4D  ; CPU:$9F8A PRG:1F8A  20 20 57 49 54 48 20 54 48 45 20 55 4C 54 49 4D
-    .byte $41, $54, $45, $20, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $20, $20  ; CPU:$9F9A PRG:1F9A  41 54 45 20 20 20 20 FF 20 20 20 20 20 20 20 20
-    .byte $53, $43, $48, $45, $4D, $45, $2E, $20, $20, $20, $20, $20, $20, $20, $20, $20  ; CPU:$9FAA PRG:1FAA  53 43 48 45 4D 45 2E 20 20 20 20 20 20 20 20 20
-    .byte $FF, $20, $20, $45, $4D, $50, $45, $52, $4F, $52, $20, $4F, $2D, $44, $49, $4E  ; CPU:$9FBA PRG:1FBA  FF 20 20 45 4D 50 45 52 4F 52 20 4F 2D 44 49 4E
-    .byte $54, $4F, $4E, $20, $48, $41, $44, $20, $20, $FF, $20, $20, $43, $4F, $4D, $42  ; CPU:$9FCA PRG:1FCA  54 4F 4E 20 48 41 44 20 20 FF 20 20 43 4F 4D 42
-    .byte $49, $4E, $45, $44, $20, $53, $43, $49, $45, $4E, $43, $45, $20, $41, $4E, $44  ; CPU:$9FDA PRG:1FDA  49 4E 45 44 20 53 43 49 45 4E 43 45 20 41 4E 44
-    .byte $20, $20, $FF, $20, $20, $4D, $41, $47, $49, $43, $20, $54, $4F, $20, $43, $52  ; CPU:$9FEA PRG:1FEA  20 20 FF 20 20 4D 41 47 49 43 20 54 4F 20 43 52
-    .byte $45, $41, $54, $45, $20, $54, $48, $45, $20, $20, $20, $FF, $FF, $20, $20, $44  ; CPU:$9FFA PRG:1FFA  45 41 54 45 20 54 48 45 20 20 20 FF FF 20 20 44
-    .byte $55, $52, $41, $42, $55, $42, $42, $4C, $45, $28, $54, $4D, $29, $2E, $20, $49  ; CPU:$A00A PRG:200A  55 52 41 42 55 42 42 4C 45 28 54 4D 29 2E 20 49
-    .byte $54, $53, $20, $20, $20, $FF, $20, $20, $4D, $4F, $4C, $45, $43, $55, $4C, $41  ; CPU:$A01A PRG:201A  54 53 20 20 20 FF 20 20 4D 4F 4C 45 43 55 4C 41
-    .byte $52, $20, $53, $54, $52, $55, $43, $54, $55, $52, $45, $20, $20, $20, $FF, $20  ; CPU:$A02A PRG:202A  52 20 53 54 52 55 43 54 55 52 45 20 20 20 FF 20
-    .byte $41, $4C, $54, $48, $4F, $55, $47, $48, $20, $46, $4C, $45, $58, $49, $42, $4C  ; CPU:$A03A PRG:203A  41 4C 54 48 4F 55 47 48 20 46 4C 45 58 49 42 4C
-    .byte $45, $20, $4C, $49, $4B, $45, $20, $FF, $FF, $20, $20, $20, $20, $20, $52, $55  ; CPU:$A04A PRG:204A  45 20 4C 49 4B 45 20 FF FF 20 20 20 20 20 52 55
-    .byte $42, $42, $45, $52, $20, $57, $41, $53, $20, $41, $53, $20, $20, $20, $20, $20  ; CPU:$A05A PRG:205A  42 42 45 52 20 57 41 53 20 41 53 20 20 20 20 20
-    .byte $20, $FF, $20, $20, $20, $20, $55, $4E, $42, $52, $45, $41, $4B, $41, $42, $4C  ; CPU:$A06A PRG:206A  20 FF 20 20 20 20 55 4E 42 52 45 41 4B 41 42 4C
-    .byte $45, $20, $41, $53, $20, $41, $20, $20, $20, $20, $FF, $20, $20, $20, $20, $44  ; CPU:$A07A PRG:207A  45 20 41 53 20 41 20 20 20 20 FF 20 20 20 20 44
-    .byte $49, $41, $4D, $4F, $4E, $44, $2E, $20, $4F, $4E, $43, $45, $20, $48, $45, $20  ; CPU:$A08A PRG:208A  49 41 4D 4F 4E 44 2E 20 4F 4E 43 45 20 48 45 20
-    .byte $20, $20, $20, $FF, $FF, $20, $20, $45, $4E, $43, $41, $53, $45, $44, $20, $53  ; CPU:$A09A PRG:209A  20 20 20 FF FF 20 20 45 4E 43 41 53 45 44 20 53
-    .byte $4F, $4D, $45, $54, $48, $49, $4E, $47, $20, $49, $4E, $20, $20, $FF, $20, $48  ; CPU:$A0AA PRG:20AA  4F 4D 45 54 48 49 4E 47 20 49 4E 20 20 FF 20 48
-    .byte $49, $53, $20, $44, $55, $52, $41, $42, $55, $42, $42, $4C, $45, $28, $54, $4D  ; CPU:$A0BA PRG:20BA  49 53 20 44 55 52 41 42 55 42 42 4C 45 28 54 4D
-    .byte $29, $20, $4E, $4F, $20, $20, $FF, $20, $4F, $4E, $45, $20, $43, $4F, $55, $4C  ; CPU:$A0CA PRG:20CA  29 20 4E 4F 20 20 FF 20 4F 4E 45 20 43 4F 55 4C
-    .byte $44, $20, $52, $45, $4C, $45, $41, $53, $45, $20, $49, $54, $2E, $20, $20, $FF  ; CPU:$A0DA PRG:20DA  44 20 52 45 4C 45 41 53 45 20 49 54 2E 20 20 FF
-    .byte $FF, $FF, $20, $20, $20, $20, $45, $58, $43, $45, $50, $54, $20, $4F, $46, $20  ; CPU:$A0EA PRG:20EA  FF FF 20 20 20 20 45 58 43 45 50 54 20 4F 46 20
-    .byte $43, $4F, $55, $52, $53, $45, $20, $20, $20, $20, $FF, $20, $20, $20, $45, $4D  ; CPU:$A0FA PRG:20FA  43 4F 55 52 53 45 20 20 20 20 FF 20 20 20 45 4D
-    .byte $50, $45, $52, $4F, $52, $20, $4F, $2D, $44, $49, $4E, $54, $4F, $4E, $2E, $20  ; CPU:$A10A PRG:210A  50 45 52 4F 52 20 4F 2D 44 49 4E 54 4F 4E 2E 20
-    .byte $20, $20, $20, $FF, $20, $4E, $41, $4D, $4F, $52, $41, $20, $41, $4E, $44, $20  ; CPU:$A11A PRG:211A  20 20 20 FF 20 4E 41 4D 4F 52 41 20 41 4E 44 20
-    .byte $48, $45, $52, $20, $46, $52, $49, $45, $4E, $44, $53, $20, $FF, $57, $45, $52  ; CPU:$A12A PRG:212A  48 45 52 20 46 52 49 45 4E 44 53 20 FF 57 45 52
-    .byte $45, $20, $50, $4C, $41, $59, $49, $4E, $47, $20, $57, $49, $54, $48, $20, $54  ; CPU:$A13A PRG:213A  45 20 50 4C 41 59 49 4E 47 20 57 49 54 48 20 54
-    .byte $48, $45, $49, $52, $20, $FF, $20, $20, $4E, $45, $57, $20, $47, $41, $4D, $45  ; CPU:$A14A PRG:214A  48 45 49 52 20 FF 20 20 4E 45 57 20 47 41 4D 45
-    .byte $53, $20, $57, $48, $45, $4E, $20, $54, $48, $45, $59, $20, $20, $20, $FF, $FF  ; CPU:$A15A PRG:215A  53 20 57 48 45 4E 20 54 48 45 59 20 20 20 FF FF
-    .byte $53, $41, $57, $20, $54, $48, $45, $20, $42, $55, $42, $42, $4C, $45, $53, $20  ; CPU:$A16A PRG:216A  53 41 57 20 54 48 45 20 42 55 42 42 4C 45 53 20
-    .byte $43, $4F, $4D, $49, $4E, $47, $2E, $20, $FF, $20, $20, $54, $48, $45, $59, $20  ; CPU:$A17A PRG:217A  43 4F 4D 49 4E 47 2E 20 FF 20 20 54 48 45 59 20
-    .byte $4B, $4E, $45, $57, $20, $54, $48, $45, $52, $45, $20, $57, $41, $53, $20, $20  ; CPU:$A18A PRG:218A  4B 4E 45 57 20 54 48 45 52 45 20 57 41 53 20 20
-    .byte $20, $FF, $53, $4F, $4D, $45, $54, $48, $49, $4E, $47, $20, $57, $52, $4F, $4E  ; CPU:$A19A PRG:219A  20 FF 53 4F 4D 45 54 48 49 4E 47 20 57 52 4F 4E
-    .byte $47, $20, $42, $45, $43, $41, $55, $53, $45, $20, $FF, $FF, $20, $20, $49, $4E  ; CPU:$A1AA PRG:21AA  47 20 42 45 43 41 55 53 45 20 FF FF 20 20 49 4E
-    .byte $53, $54, $45, $41, $44, $20, $4F, $46, $20, $46, $4C, $4F, $41, $54, $49, $4E  ; CPU:$A1BA PRG:21BA  53 54 45 41 44 20 4F 46 20 46 4C 4F 41 54 49 4E
-    .byte $47, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $20, $55, $50, $57, $41  ; CPU:$A1CA PRG:21CA  47 20 20 20 FF 20 20 20 20 20 20 20 55 50 57 41
-    .byte $52, $44, $20, $54, $48, $45, $20, $20, $20, $20, $20, $20, $20, $FF, $20, $20  ; CPU:$A1DA PRG:21DA  52 44 20 54 48 45 20 20 20 20 20 20 20 FF 20 20
-    .byte $42, $55, $42, $42, $4C, $45, $53, $20, $57, $45, $52, $45, $20, $53, $49, $4E  ; CPU:$A1EA PRG:21EA  42 55 42 42 4C 45 53 20 57 45 52 45 20 53 49 4E
-    .byte $4B, $49, $4E, $47, $20, $20, $FF, $FF, $FF, $20, $20, $20, $44, $4F, $57, $4E  ; CPU:$A1FA PRG:21FA  4B 49 4E 47 20 20 FF FF FF 20 20 20 44 4F 57 4E
-    .byte $20, $54, $4F, $57, $41, $52, $44, $53, $20, $54, $48, $45, $4D, $2E, $20, $20  ; CPU:$A20A PRG:220A  20 54 4F 57 41 52 44 53 20 54 48 45 4D 2E 20 20
-    .byte $20, $FF, $20, $54, $48, $45, $20, $42, $55, $42, $42, $4C, $45, $53, $20, $45  ; CPU:$A21A PRG:221A  20 FF 20 54 48 45 20 42 55 42 42 4C 45 53 20 45
-    .byte $4E, $56, $45, $4C, $4F, $50, $45, $44, $20, $20, $FF, $20, $54, $48, $45, $20  ; CPU:$A22A PRG:222A  4E 56 45 4C 4F 50 45 44 20 20 FF 20 54 48 45 20
-    .byte $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $27, $53, $20, $47, $41, $4D, $45  ; CPU:$A23A PRG:223A  4D 45 52 50 45 4F 50 4C 45 27 53 20 47 41 4D 45
-    .byte $53, $2E, $20, $FF, $20, $20, $20, $20, $49, $54, $20, $57, $41, $53, $20, $54  ; CPU:$A24A PRG:224A  53 2E 20 FF 20 20 20 20 49 54 20 57 41 53 20 54
-    .byte $48, $45, $20, $53, $41, $4D, $45, $20, $20, $20, $20, $20, $FF, $FF, $20, $20  ; CPU:$A25A PRG:225A  48 45 20 53 41 4D 45 20 20 20 20 20 FF FF 20 20
-    .byte $45, $56, $45, $52, $59, $57, $48, $45, $52, $45, $2E, $20, $41, $4C, $4C, $20  ; CPU:$A26A PRG:226A  45 56 45 52 59 57 48 45 52 45 2E 20 41 4C 4C 20
-    .byte $54, $48, $45, $20, $20, $20, $FF, $20, $20, $20, $20, $47, $41, $4D, $45, $53  ; CPU:$A27A PRG:227A  54 48 45 20 20 20 FF 20 20 20 20 47 41 4D 45 53
-    .byte $20, $55, $4E, $44, $45, $52, $20, $54, $48, $45, $20, $20, $20, $20, $20, $FF  ; CPU:$A28A PRG:228A  20 55 4E 44 45 52 20 54 48 45 20 20 20 20 20 FF
-    .byte $20, $20, $53, $45, $41, $20, $57, $45, $52, $45, $20, $45, $4E, $43, $41, $53  ; CPU:$A29A PRG:229A  20 20 53 45 41 20 57 45 52 45 20 45 4E 43 41 53
-    .byte $45, $44, $20, $49, $4E, $20, $20, $20, $FF, $FF, $20, $20, $20, $42, $55, $42  ; CPU:$A2AA PRG:22AA  45 44 20 49 4E 20 20 20 FF FF 20 20 20 42 55 42
-    .byte $42, $4C, $45, $53, $20, $53, $4F, $20, $4E, $4F, $20, $4F, $4E, $45, $20, $20  ; CPU:$A2BA PRG:22BA  42 4C 45 53 20 53 4F 20 4E 4F 20 4F 4E 45 20 20
-    .byte $20, $20, $FF, $20, $20, $43, $4F, $55, $4C, $44, $20, $50, $4C, $41, $59, $20  ; CPU:$A2CA PRG:22CA  20 20 FF 20 20 43 4F 55 4C 44 20 50 4C 41 59 20
-    .byte $54, $48, $45, $4D, $20, $41, $4E, $44, $20, $20, $20, $FF, $20, $20, $20, $20  ; CPU:$A2DA PRG:22DA  54 48 45 4D 20 41 4E 44 20 20 20 FF 20 20 20 20
-    .byte $20, $20, $20, $48, $41, $56, $45, $20, $46, $55, $4E, $2E, $20, $20, $20, $20  ; CPU:$A2EA PRG:22EA  20 20 20 48 41 56 45 20 46 55 4E 2E 20 20 20 20
-    .byte $20, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $54, $48, $45, $4E, $20  ; CPU:$A2FA PRG:22FA  20 20 20 20 FF 20 20 20 20 20 20 54 48 45 4E 20
-    .byte $45, $4D, $50, $45, $52, $4F, $52, $20, $20, $20, $20, $20, $20, $FF, $20, $20  ; CPU:$A30A PRG:230A  45 4D 50 45 52 4F 52 20 20 20 20 20 20 FF 20 20
-    .byte $20, $4F, $2D, $44, $49, $4E, $54, $4F, $4E, $20, $43, $41, $4D, $45, $20, $44  ; CPU:$A31A PRG:231A  20 4F 2D 44 49 4E 54 4F 4E 20 43 41 4D 45 20 44
-    .byte $4F, $57, $4E, $20, $20, $20, $FF, $20, $41, $4E, $44, $20, $41, $4E, $4E, $4F  ; CPU:$A32A PRG:232A  4F 57 4E 20 20 20 FF 20 41 4E 44 20 41 4E 4E 4F
-    .byte $55, $4E, $43, $45, $44, $20, $54, $48, $41, $54, $20, $54, $48, $45, $20, $FF  ; CPU:$A33A PRG:233A  55 4E 43 45 44 20 54 48 41 54 20 54 48 45 20 FF
-    .byte $FF, $20, $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20, $57, $4F, $55  ; CPU:$A34A PRG:234A  FF 20 20 4D 45 52 50 45 4F 50 4C 45 20 57 4F 55
-    .byte $4C, $44, $20, $48, $41, $56, $45, $20, $20, $FF, $20, $54, $4F, $20, $50, $41  ; CPU:$A35A PRG:235A  4C 44 20 48 41 56 45 20 20 FF 20 54 4F 20 50 41
-    .byte $59, $20, $48, $49, $4D, $20, $41, $20, $50, $45, $41, $52, $4C, $20, $54, $4F  ; CPU:$A36A PRG:236A  59 20 48 49 4D 20 41 20 50 45 41 52 4C 20 54 4F
-    .byte $20, $20, $FF, $42, $55, $52, $53, $54, $20, $54, $48, $45, $20, $42, $55, $42  ; CPU:$A37A PRG:237A  20 20 FF 42 55 52 53 54 20 54 48 45 20 42 55 42
-    .byte $42, $4C, $45, $20, $41, $52, $4F, $55, $4E, $44, $20, $FF, $FF, $FF, $20, $20  ; CPU:$A38A PRG:238A  42 4C 45 20 41 52 4F 55 4E 44 20 FF FF FF 20 20
-    .byte $41, $4E, $59, $20, $47, $41, $4D, $45, $2E, $20, $4F, $4E, $4C, $59, $20, $54  ; CPU:$A39A PRG:239A  41 4E 59 20 47 41 4D 45 2E 20 4F 4E 4C 59 20 54
-    .byte $48, $45, $4E, $20, $20, $20, $FF, $20, $20, $20, $43, $4F, $55, $4C, $44, $20  ; CPU:$A3AA PRG:23AA  48 45 4E 20 20 20 FF 20 20 20 43 4F 55 4C 44 20
-    .byte $54, $48, $45, $59, $20, $50, $4C, $41, $59, $2E, $20, $20, $20, $20, $20, $FF  ; CPU:$A3BA PRG:23BA  54 48 45 59 20 50 4C 41 59 2E 20 20 20 20 20 FF
-    .byte $20, $20, $20, $20, $53, $4F, $20, $54, $48, $45, $59, $20, $50, $41, $49, $44  ; CPU:$A3CA PRG:23CA  20 20 20 20 53 4F 20 54 48 45 59 20 50 41 49 44
-    .byte $20, $54, $48, $45, $20, $20, $20, $20, $FF, $20, $20, $45, $56, $49, $4C, $20  ; CPU:$A3DA PRG:23DA  20 54 48 45 20 20 20 20 FF 20 20 45 56 49 4C 20
-    .byte $45, $4D, $50, $45, $52, $4F, $52, $20, $48, $49, $53, $20, $54, $41, $58, $20  ; CPU:$A3EA PRG:23EA  45 4D 50 45 52 4F 52 20 48 49 53 20 54 41 58 20
-    .byte $20, $FF, $20, $20, $20, $20, $20, $20, $20, $20, $4F, $4E, $20, $46, $55, $4E  ; CPU:$A3FA PRG:23FA  20 FF 20 20 20 20 20 20 20 20 4F 4E 20 46 55 4E
-    .byte $2E, $20, $20, $20, $20, $20, $20, $20, $20, $20, $FF, $FF, $20, $20, $20, $4E  ; CPU:$A40A PRG:240A  2E 20 20 20 20 20 20 20 20 20 FF FF 20 20 20 4E
-    .byte $4F, $57, $20, $49, $54, $20, $53, $45, $45, $4D, $45, $44, $20, $54, $48, $45  ; CPU:$A41A PRG:241A  4F 57 20 49 54 20 53 45 45 4D 45 44 20 54 48 45
-    .byte $20, $20, $20, $20, $FF, $20, $47, $41, $4D, $45, $53, $20, $57, $45, $52, $45  ; CPU:$A42A PRG:242A  20 20 20 20 FF 20 47 41 4D 45 53 20 57 45 52 45
-    .byte $4E, $27, $54, $20, $41, $53, $20, $4D, $55, $43, $48, $20, $20, $FF, $20, $46  ; CPU:$A43A PRG:243A  4E 27 54 20 41 53 20 4D 55 43 48 20 20 FF 20 46
-    .byte $55, $4E, $20, $54, $4F, $20, $50, $4C, $41, $59, $20, $41, $53, $20, $42, $45  ; CPU:$A44A PRG:244A  55 4E 20 54 4F 20 50 4C 41 59 20 41 53 20 42 45
-    .byte $46, $4F, $52, $45, $2E, $20, $FF, $20, $20, $4F, $4E, $45, $20, $44, $41, $59  ; CPU:$A45A PRG:245A  46 4F 52 45 2E 20 FF 20 20 4F 4E 45 20 44 41 59
-    .byte $20, $4E, $41, $4D, $4F, $52, $41, $20, $46, $4F, $55, $4E, $44, $20, $20, $FF  ; CPU:$A46A PRG:246A  20 4E 41 4D 4F 52 41 20 46 4F 55 4E 44 20 20 FF
-    .byte $20, $54, $48, $41, $54, $20, $42, $59, $20, $53, $54, $41, $43, $4B, $49, $4E  ; CPU:$A47A PRG:247A  20 54 48 41 54 20 42 59 20 53 54 41 43 4B 49 4E
-    .byte $47, $20, $46, $4F, $55, $52, $20, $20, $FF, $20, $20, $20, $20, $4F, $52, $20  ; CPU:$A48A PRG:248A  47 20 46 4F 55 52 20 20 FF 20 20 20 20 4F 52 20
-    .byte $4D, $4F, $52, $45, $20, $42, $55, $42, $42, $4C, $45, $53, $20, $20, $20, $20  ; CPU:$A49A PRG:249A  4D 4F 52 45 20 42 55 42 42 4C 45 53 20 20 20 20
-    .byte $20, $FF, $FF, $20, $20, $54, $4F, $47, $45, $54, $48, $45, $52, $20, $49, $4E  ; CPU:$A4AA PRG:24AA  20 FF FF 20 20 54 4F 47 45 54 48 45 52 20 49 4E
-    .byte $20, $4A, $55, $53, $54, $20, $54, $48, $45, $20, $20, $FF, $20, $20, $52, $49  ; CPU:$A4BA PRG:24BA  20 4A 55 53 54 20 54 48 45 20 20 FF 20 20 52 49
-    .byte $47, $48, $54, $20, $57, $41, $59, $20, $54, $48, $45, $59, $20, $57, $4F, $55  ; CPU:$A4CA PRG:24CA  47 48 54 20 57 41 59 20 54 48 45 59 20 57 4F 55
-    .byte $4C, $44, $20, $20, $FF, $20, $20, $20, $41, $4C, $4C, $20, $50, $4F, $50, $20  ; CPU:$A4DA PRG:24DA  4C 44 20 20 FF 20 20 20 41 4C 4C 20 50 4F 50 20
-    .byte $4C, $49, $4B, $45, $20, $41, $20, $42, $49, $47, $20, $20, $20, $FF, $FF, $20  ; CPU:$A4EA PRG:24EA  4C 49 4B 45 20 41 20 42 49 47 20 20 20 FF FF 20
-    .byte $20, $42, $41, $4C, $4C, $4F, $4F, $4E, $2E, $20, $4E, $4F, $57, $20, $4E, $4F  ; CPU:$A4FA PRG:24FA  20 42 41 4C 4C 4F 4F 4E 2E 20 4E 4F 57 20 4E 4F
-    .byte $20, $4F, $4E, $45, $20, $20, $20, $FF, $20, $48, $41, $44, $20, $54, $4F, $20  ; CPU:$A50A PRG:250A  20 4F 4E 45 20 20 20 FF 20 48 41 44 20 54 4F 20
-    .byte $50, $41, $59, $20, $54, $48, $45, $20, $45, $4D, $50, $45, $52, $4F, $52, $20  ; CPU:$A51A PRG:251A  50 41 59 20 54 48 45 20 45 4D 50 45 52 4F 52 20
-    .byte $FF, $20, $20, $20, $20, $48, $49, $53, $20, $54, $41, $58, $20, $4F, $4E, $20  ; CPU:$A52A PRG:252A  FF 20 20 20 20 48 49 53 20 54 41 58 20 4F 4E 20
-    .byte $46, $55, $4E, $21, $20, $20, $20, $20, $20, $FF, $FF, $20, $20, $20, $20, $57  ; CPU:$A53A PRG:253A  46 55 4E 21 20 20 20 20 20 FF FF 20 20 20 20 57
-    .byte $49, $54, $48, $49, $4E, $20, $44, $41, $59, $53, $20, $54, $48, $45, $20, $20  ; CPU:$A54A PRG:254A  49 54 48 49 4E 20 44 41 59 53 20 54 48 45 20 20
-    .byte $20, $20, $20, $FF, $20, $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45, $20  ; CPU:$A55A PRG:255A  20 20 20 FF 20 20 4D 45 52 50 45 4F 50 4C 45 20
-    .byte $48, $41, $44, $20, $50, $4F, $50, $50, $45, $44, $20, $20, $FF, $FF, $FF, $20  ; CPU:$A56A PRG:256A  48 41 44 20 50 4F 50 50 45 44 20 20 FF FF FF 20
-    .byte $20, $20, $41, $4C, $4C, $20, $54, $48, $45, $20, $42, $55, $42, $42, $4C, $45  ; CPU:$A57A PRG:257A  20 20 41 4C 4C 20 54 48 45 20 42 55 42 42 4C 45
-    .byte $53, $20, $4F, $4E, $20, $20, $20, $FF, $20, $20, $20, $20, $20, $20, $45, $56  ; CPU:$A58A PRG:258A  53 20 4F 4E 20 20 20 FF 20 20 20 20 20 20 45 56
-    .byte $45, $52, $59, $20, $47, $41, $4D, $45, $2E, $20, $20, $20, $20, $20, $20, $20  ; CPU:$A59A PRG:259A  45 52 59 20 47 41 4D 45 2E 20 20 20 20 20 20 20
-    .byte $FF, $FF, $20, $20, $54, $48, $45, $20, $45, $4D, $50, $45, $52, $4F, $52, $20  ; CPU:$A5AA PRG:25AA  FF FF 20 20 54 48 45 20 45 4D 50 45 52 4F 52 20
-    .byte $57, $41, $53, $20, $56, $45, $52, $59, $20, $20, $FF, $20, $20, $41, $4E, $47  ; CPU:$A5BA PRG:25BA  57 41 53 20 56 45 52 59 20 20 FF 20 20 41 4E 47
-    .byte $52, $59, $20, $41, $4E, $44, $20, $53, $57, $41, $4D, $20, $42, $41, $43, $4B  ; CPU:$A5CA PRG:25CA  52 59 20 41 4E 44 20 53 57 41 4D 20 42 41 43 4B
-    .byte $20, $20, $20, $FF, $20, $20, $20, $41, $43, $52, $4F, $53, $53, $20, $54, $48  ; CPU:$A5DA PRG:25DA  20 20 20 FF 20 20 20 41 43 52 4F 53 53 20 54 48
-    .byte $45, $20, $4F, $43, $45, $41, $4E, $2E, $20, $20, $20, $20, $FF, $FF, $20, $20  ; CPU:$A5EA PRG:25EA  45 20 4F 43 45 41 4E 2E 20 20 20 20 FF FF 20 20
-    .byte $20, $20, $20, $54, $48, $45, $20, $4D, $45, $52, $50, $45, $4F, $50, $4C, $45  ; CPU:$A5FA PRG:25FA  20 20 20 54 48 45 20 4D 45 52 50 45 4F 50 4C 45
-    .byte $20, $20, $20, $20, $20, $20, $FF, $20, $50, $4C, $41, $59, $45, $44, $20, $41  ; CPU:$A60A PRG:260A  20 20 20 20 20 20 FF 20 50 4C 41 59 45 44 20 41
-    .byte $4C, $4C, $20, $54, $48, $45, $20, $47, $41, $4D, $45, $53, $20, $20, $20, $FF  ; CPU:$A61A PRG:261A  4C 4C 20 54 48 45 20 47 41 4D 45 53 20 20 20 FF
-    .byte $20, $20, $54, $48, $45, $59, $20, $4C, $4F, $56, $45, $44, $20, $53, $4F, $20  ; CPU:$A62A PRG:262A  20 20 54 48 45 59 20 4C 4F 56 45 44 20 53 4F 20
-    .byte $4D, $55, $43, $48, $2E, $20, $20, $20, $FF, $FF, $20, $20, $20, $41, $4E, $44  ; CPU:$A63A PRG:263A  4D 55 43 48 2E 20 20 20 FF FF 20 20 20 41 4E 44
-    .byte $20, $59, $4F, $55, $20, $4B, $4E, $4F, $57, $20, $57, $48, $41, $54, $3F, $20  ; CPU:$A64A PRG:264A  20 59 4F 55 20 4B 4E 4F 57 20 57 48 41 54 3F 20
-    .byte $20, $20, $FF, $20, $20, $20, $45, $56, $45, $52, $59, $20, $47, $41, $4D, $45  ; CPU:$A65A PRG:265A  20 20 FF 20 20 20 45 56 45 52 59 20 47 41 4D 45
-    .byte $20, $53, $45, $45, $4D, $45, $44, $20, $20, $20, $20, $FF, $20, $20, $20, $20  ; CPU:$A66A PRG:266A  20 53 45 45 4D 45 44 20 20 20 20 FF 20 20 20 20
-    .byte $20, $20, $53, $4F, $4D, $45, $48, $4F, $57, $20, $4A, $55, $53, $54, $20, $20  ; CPU:$A67A PRG:267A  20 20 53 4F 4D 45 48 4F 57 20 4A 55 53 54 20 20
-    .byte $20, $20, $20, $20, $FF, $FF, $FF, $20, $41, $20, $4C, $49, $54, $54, $4C, $45  ; CPU:$A68A PRG:268A  20 20 20 20 FF FF FF 20 41 20 4C 49 54 54 4C 45
-    .byte $20, $42, $49, $54, $20, $4D, $4F, $52, $45, $20, $46, $55, $4E, $20, $20, $FF  ; CPU:$A69A PRG:269A  20 42 49 54 20 4D 4F 52 45 20 46 55 4E 20 20 FF
-    .byte $20, $20, $20, $20, $20, $20, $54, $48, $41, $4E, $20, $42, $45, $46, $4F, $52  ; CPU:$A6AA PRG:26AA  20 20 20 20 20 20 54 48 41 4E 20 42 45 46 4F 52
-    .byte $45, $2E, $20, $20, $20, $20, $20, $20, $FF, $FF, $20, $20, $20, $20, $20, $20  ; CPU:$A6BA PRG:26BA  45 2E 20 20 20 20 20 20 FF FF 20 20 20 20 20 20
-    .byte $41, $4E, $44, $20, $54, $48, $45, $59, $20, $41, $4C, $4C, $20, $20, $20, $20  ; CPU:$A6CA PRG:26CA  41 4E 44 20 54 48 45 59 20 41 4C 4C 20 20 20 20
-    .byte $20, $20, $FF, $20, $20, $20, $20, $20, $4C, $49, $56, $45, $44, $20, $48, $41  ; CPU:$A6DA PRG:26DA  20 20 FF 20 20 20 20 20 4C 49 56 45 44 20 48 41
-    .byte $50, $50, $49, $4C, $59, $20, $20, $20, $20, $20, $20, $FF, $20, $20, $20, $20  ; CPU:$A6EA PRG:26EA  50 50 49 4C 59 20 20 20 20 20 20 FF 20 20 20 20
-    .byte $20, $20, $45, $56, $45, $52, $20, $41, $46, $54, $45, $52, $2E, $20, $20, $20  ; CPU:$A6FA PRG:26FA  20 20 45 56 45 52 20 41 46 54 45 52 2E 20 20 20
-    .byte $20, $20, $20, $20, $FF, $0E, $0E, $05, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E  ; CPU:$A70A PRG:270A  20 20 20 20 FF 0E 0E 05 0E 0E 0E 0E 0E 0E 0E 0E
-    .byte $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25  ; CPU:$A71A PRG:271A  0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 25 13 1A 0E 21 25
-    .byte $1A, $0E, $21, $13, $30, $0E, $01, $15, $06, $0E, $05, $0E, $0E, $0E, $01, $05  ; CPU:$A72A PRG:272A  1A 0E 21 13 30 0E 01 15 06 0E 05 0E 0E 0E 01 05
-    .byte $0E, $0E, $01, $0E, $10, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25  ; CPU:$A73A PRG:273A  0E 0E 01 0E 10 0E 0E 0E 0E 0E 25 13 1A 0E 21 25
-    .byte $1A, $0E, $21, $13, $30, $0E, $11, $25, $16, $0E, $15, $03, $0A, $0E, $11, $15  ; CPU:$A74A PRG:274A  1A 0E 21 13 30 0E 11 25 16 0E 15 03 0A 0E 11 15
-    .byte $0A, $0E, $11, $03, $20, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25  ; CPU:$A75A PRG:275A  0A 0E 11 03 20 0E 0E 0E 0E 0E 25 13 1A 0E 21 25
-    .byte $1A, $0E, $21, $13, $30, $0E, $21, $36, $26, $0E, $25, $13, $1A, $0E, $21, $25  ; CPU:$A76A PRG:276A  1A 0E 21 13 30 0E 21 36 26 0E 25 13 1A 0E 21 25
-    .byte $1A, $0E, $21, $13, $30, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21, $25  ; CPU:$A77A PRG:277A  1A 0E 21 13 30 0E 0E 0E 0E 0E 25 13 1A 0E 21 25
-    .byte $1A, $0E, $21, $13, $30, $A5, $B9, $8D, $E8, $05, $A5, $C2, $F0, $0C, $A5, $B9  ; CPU:$A78A PRG:278A  1A 0E 21 13 30 A5 B9 8D E8 05 A5 C2 F0 0C A5 B9
-    .byte $D0, $08, $20, $21, $B8, $A9, $00, $85, $B9, $60, $A5, $71, $C9, $02, $F0, $09  ; CPU:$A79A PRG:279A  D0 08 20 21 B8 A9 00 85 B9 60 A5 71 C9 02 F0 09
-    .byte $A5, $B9, $C9, $07, $B0, $03, $20, $D0, $B7, $A5, $BE, $30, $0C, $A5, $71, $C9  ; CPU:$A7AA PRG:27AA  A5 B9 C9 07 B0 03 20 D0 B7 A5 BE 30 0C A5 71 C9
-    .byte $02, $F0, $06, $A5, $31, $D0, $02, $E6, $C0, $A5, $B9, $20, $73, $81, $DC, $A7  ; CPU:$A7BA PRG:27BA  02 F0 06 A5 31 D0 02 E6 C0 A5 B9 20 73 81 DC A7
-    .byte $05, $A8, $6C, $A8, $88, $AD, $CE, $AF, $AE, $A8, $1B, $AA, $91, $AA, $0B, $AE  ; CPU:$A7CA PRG:27CA  05 A8 6C A8 88 AD CE AF AE A8 1B AA 91 AA 0B AE
-    .byte $21, $BA, $A9, $A4, $85, $A6, $A9, $CE, $85, $A7, $A9, $2B, $85, $AA, $E6, $B9  ; CPU:$A7DA PRG:27DA  21 BA A9 A4 85 A6 A9 CE 85 A7 A9 2B 85 AA E6 B9
-    .byte $A9, $00, $85, $B3, $85, $A5, $85, $37, $85, $36, $A9, $08, $85, $9D, $20, $EF  ; CPU:$A7EA PRG:27EA  A9 00 85 B3 85 A5 85 37 85 36 A9 08 85 9D 20 EF
-    .byte $A8, $A5, $BF, $C9, $05, $D0, $03, $20, $9F, $AF, $60, $20, $B3, $AA, $A5, $2B  ; CPU:$A7FA PRG:27FA  A8 A5 BF C9 05 D0 03 20 9F AF 60 20 B3 AA A5 2B
-    .byte $29, $C0, $F0, $1A, $A9, $01, $8D, $E3, $00, $A9, $03, $8D, $E2, $00, $A5, $2B  ; CPU:$A80A PRG:280A  29 C0 F0 1A A9 01 8D E3 00 A9 03 8D E2 00 A5 2B
-    .byte $29, $80, $F0, $05, $A9, $02, $8D, $E2, $00, $A9, $04, $20, $04, $80, $AD, $DD  ; CPU:$A81A PRG:281A  29 80 F0 05 A9 02 8D E2 00 A9 04 20 04 80 AD DD
-    .byte $06, $F0, $03, $20, $A1, $A9, $A6, $BD, $F0, $25, $AD, $59, $03, $C9, $07, $90  ; CPU:$A82A PRG:282A  06 F0 03 20 A1 A9 A6 BD F0 25 AD 59 03 C9 07 90
-    .byte $1F, $BD, $8D, $03, $8D, $89, $03, $BD, $9D, $03, $8D, $99, $03, $A9, $04, $18  ; CPU:$A83A PRG:283A  1F BD 8D 03 8D 89 03 BD 9D 03 8D 99 03 A9 04 18
-    .byte $6D, $89, $03, $8D, $89, $03, $A9, $04, $18, $6D, $99, $03, $8D, $99, $03, $60  ; CPU:$A84A PRG:284A  6D 89 03 8D 89 03 A9 04 18 6D 99 03 8D 99 03 60
-    .byte $A5, $31, $6A, $29, $03, $85, $20, $AD, $AF, $03, $29, $FC, $05, $20, $8D, $AF  ; CPU:$A85A PRG:285A  A5 31 6A 29 03 85 20 AD AF 03 29 FC 05 20 8D AF
-    .byte $03, $60, $A5, $31, $6A, $90, $01, $60, $20, $55, $AD, $20, $7F, $A9, $A5, $BD  ; CPU:$A86A PRG:286A  03 60 A5 31 6A 90 01 60 20 55 AD 20 7F A9 A5 BD
-    .byte $F0, $1C, $AD, $59, $03, $C9, $07, $90, $15, $A6, $BD, $B5, $AA, $85, $BE, $AA  ; CPU:$A87A PRG:287A  F0 1C AD 59 03 C9 07 90 15 A6 BD B5 AA 85 BE AA
-    .byte $BD, $EA, $05, $09, $40, $9D, $EA, $05, $A9, $00, $85, $BD, $85, $C0, $E6, $B9  ; CPU:$A88A PRG:288A  BD EA 05 09 40 9D EA 05 A9 00 85 BD 85 C0 E6 B9
-    .byte $A9, $01, $8D, $E3, $00, $A9, $00, $8D, $E2, $00, $A9, $04, $20, $04, $80, $A9  ; CPU:$A89A PRG:289A  A9 01 8D E3 00 A9 00 8D E2 00 A9 04 20 04 80 A9
-    .byte $00, $85, $BA, $60, $20, $08, $B1, $60, $A6, $C3, $A9, $04, $85, $1F, $A5, $A5  ; CPU:$A8AA PRG:28AA  00 85 BA 60 20 08 B1 60 A6 C3 A9 04 85 1F A5 A5
-    .byte $0A, $0A, $A8, $B1, $A3, $85, $1B, $29, $F0, $85, $1C, $18, $65, $A6, $9D, $88  ; CPU:$A8BA PRG:28BA  0A 0A A8 B1 A3 85 1B 29 F0 85 1C 18 65 A6 9D 88
-    .byte $03, $A5, $1B, $29, $0F, $0A, $0A, $0A, $0A, $18, $65, $A7, $9D, $98, $03, $A9  ; CPU:$A8CA PRG:28CA  03 A5 1B 29 0F 0A 0A 0A 0A 18 65 A7 9D 98 03 A9
-    .byte $10, $25, $1C, $F0, $09, $BD, $98, $03, $18, $69, $08, $9D, $98, $03, $E8, $C8  ; CPU:$A8DA PRG:28DA  10 25 1C F0 09 BD 98 03 18 69 08 9D 98 03 E8 C8
-    .byte $C6, $1F, $D0, $CF, $60, $EE, $E3, $05, $AD, $E3, $05, $6A, $AC, $E5, $05, $D0  ; CPU:$A8EA PRG:28EA  C6 1F D0 CF 60 EE E3 05 AD E3 05 6A AC E5 05 D0
-    .byte $05, $20, $52, $85, $A5, $3D, $29, $07, $85, $1D, $AD, $E3, $05, $6A, $AC, $E5  ; CPU:$A8FA PRG:28FA  05 20 52 85 A5 3D 29 07 85 1D AD E3 05 6A AC E5
-    .byte $05, $D0, $05, $20, $52, $85, $A5, $3D, $29, $7F, $A8, $B1, $3B, $85, $1B, $6A  ; CPU:$A90A PRG:290A  05 D0 05 20 52 85 A5 3D 29 7F A8 B1 3B 85 1B 6A
-    .byte $6A, $6A, $29, $0E, $85, $9E, $AA, $BD, $13, $F3, $85, $A3, $BD, $14, $F3, $85  ; CPU:$A91A PRG:291A  6A 6A 29 0E 85 9E AA BD 13 F3 85 A3 BD 14 F3 85
-    .byte $A4, $BD, $8E, $F3, $85, $19, $BD, $8F, $F3, $85, $1A, $A5, $1B, $29, $0F, $0A  ; CPU:$A92A PRG:292A  A4 BD 8E F3 85 19 BD 8F F3 85 1A A5 1B 29 0F 0A
-    .byte $0A, $A8, $A2, $00, $86, $21, $B1, $19, $18, $65, $1D, $AA, $BD, $81, $F3, $A6  ; CPU:$A93A PRG:293A  0A A8 A2 00 86 21 B1 19 18 65 1D AA BD 81 F3 A6
-    .byte $21, $95, $AF, $C8, $E8, $E0, $04, $90, $EB, $A2, $00, $A9, $06, $85, $12, $86  ; CPU:$A94A PRG:294A  21 95 AF C8 E8 E0 04 90 EB A2 00 A9 06 85 12 86
-    .byte $21, $B5, $AF, $85, $11, $20, $5D, $85, $E6, $12, $A6, $21, $E8, $E0, $04, $90  ; CPU:$A95A PRG:295A  21 B5 AF 85 11 20 5D 85 E6 12 A6 21 E8 E0 04 90
-    .byte $EE, $A9, $06, $85, $C3, $A0, $00, $B1, $A3, $18, $65, $AA, $99, $AB, $00, $C8  ; CPU:$A96A PRG:296A  EE A9 06 85 C3 A0 00 B1 A3 18 65 AA 99 AB 00 C8
-    .byte $C0, $04, $90, $F3, $60, $A9, $00, $85, $11, $A9, $06, $85, $12, $20, $5D, $85  ; CPU:$A97A PRG:297A  C0 04 90 F3 60 A9 00 85 11 A9 06 85 12 20 5D 85
-    .byte $E6, $12, $AD, $5F, $03, $C9, $05, $D0, $02, $E6, $12, $20, $5D, $85, $E6, $12  ; CPU:$A98A PRG:298A  E6 12 AD 5F 03 C9 05 D0 02 E6 12 20 5D 85 E6 12
-    .byte $A5, $12, $C9, $0A, $90, $F5, $60, $A5, $31, $6A, $90, $01, $60, $AD, $DD, $06  ; CPU:$A99A PRG:299A  A5 12 C9 0A 90 F5 60 A5 31 6A 90 01 60 AD DD 06
-    .byte $AA, $29, $0F, $18, $6D, $BF, $05, $8D, $BF, $05, $8A, $6A, $6A, $6A, $6A, $29  ; CPU:$A9AA PRG:29AA  AA 29 0F 18 6D BF 05 8D BF 05 8A 6A 6A 6A 6A 29
-    .byte $0F, $18, $6D, $BE, $05, $8D, $BE, $05, $A2, $05, $BD, $BA, $05, $C9, $0A, $90  ; CPU:$A9BA PRG:29BA  0F 18 6D BE 05 8D BE 05 A2 05 BD BA 05 C9 0A 90
-    .byte $0B, $FE, $B9, $05, $18, $69, $06, $29, $0F, $9D, $BA, $05, $CA, $D0, $EB, $A9  ; CPU:$A9CA PRG:29CA  0B FE B9 05 18 69 06 29 0F 9D BA 05 CA D0 EB A9
-    .byte $06, $8D, $F1, $06, $A9, $01, $8D, $F2, $06, $A2, $00, $BD, $BA, $05, $A8, $B9  ; CPU:$A9DA PRG:29DA  06 8D F1 06 A9 01 8D F2 06 A2 00 BD BA 05 A8 B9
-    .byte $D6, $F1, $9D, $F3, $06, $E8, $E0, $06, $90, $F1, $A6, $37, $A9, $3A, $9D, $38  ; CPU:$A9EA PRG:29EA  D6 F1 9D F3 06 E8 E0 06 90 F1 A6 37 A9 3A 9D 38
-    .byte $03, $A9, $23, $9D, $39, $03, $AD, $0A, $B7, $9D, $3A, $03, $AD, $0B, $B7, $9D  ; CPU:$A9FA PRG:29FA  03 A9 23 9D 39 03 AD 0A B7 9D 3A 03 AD 0B B7 9D
-    .byte $3B, $03, $A9, $00, $9D, $3C, $03, $8D, $DD, $06, $8A, $18, $69, $04, $85, $37  ; CPU:$AA0A PRG:2A0A  3B 03 A9 00 9D 3C 03 8D DD 06 8A 18 69 04 85 37
-    .byte $60, $A5, $C0, $C9, $08, $90, $15, $A6, $BE, $BD, $EA, $05, $29, $BF, $9D, $EA  ; CPU:$AA1A PRG:2A1A  60 A5 C0 C9 08 90 15 A6 BE BD EA 05 29 BF 9D EA
-    .byte $05, $A9, $00, $85, $C0, $8D, $59, $03, $A9, $FF, $85, $BE, $A2, $0B, $BD, $EA  ; CPU:$AA2A PRG:2A2A  05 A9 00 85 C0 8D 59 03 A9 FF 85 BE A2 0B BD EA
-    .byte $05, $F0, $09, $E6, $B9, $E6, $B9, $A9, $00, $85, $BA, $60, $8A, $18, $69, $10  ; CPU:$AA3A PRG:2A3A  05 F0 09 E6 B9 E6 B9 A9 00 85 BA 60 8A 18 69 10
-    .byte $AA, $C9, $70, $90, $E9, $A9, $00, $85, $B9, $A5, $71, $C9, $02, $F0, $2C, $A5  ; CPU:$AA4A PRG:2A4A  AA C9 70 90 E9 A9 00 85 B9 A5 71 C9 02 F0 2C A5
-    .byte $C2, $D0, $27, $A5, $BC, $C9, $1E, $90, $0F, $A9, $00, $85, $BC, $E6, $BF, $A5  ; CPU:$AA5A PRG:2A5A  C2 D0 27 A5 BC C9 1E 90 0F A9 00 85 BC E6 BF A5
-    .byte $BF, $C9, $05, $F0, $03, $20, $5A, $AF, $A5, $BB, $C9, $C8, $90, $0C, $A9, $07  ; CPU:$AA6A PRG:2A6A  BF C9 05 F0 03 20 5A AF A5 BB C9 C8 90 0C A9 07
-    .byte $85, $B9, $A9, $00, $85, $BA, $A9, $32, $85, $B3, $60, $A6, $BE, $BD, $EA, $05  ; CPU:$AA7A PRG:2A7A  85 B9 A9 00 85 BA A9 32 85 B3 60 A6 BE BD EA 05
-    .byte $29, $40, $D0, $F6, $4C, $78, $AA, $A9, $01, $85, $98, $A5, $95, $D0, $08, $AD  ; CPU:$AA8A PRG:2A8A  29 40 D0 F6 4C 78 AA A9 01 85 98 A5 95 D0 08 AD
-    .byte $E9, $05, $C9, $05, $D0, $01, $60, $A9, $09, $85, $6A, $A9, $00, $85, $6C, $60  ; CPU:$AA9A PRG:2A9A  E9 05 C9 05 D0 01 60 A9 09 85 6A A9 00 85 6C 60
-    .byte $A9, $05, $85, $BA, $A9, $08, $85, $B9, $60, $A5, $B3, $F0, $1E, $A5, $9C, $29  ; CPU:$AAAA PRG:2AAA  A9 05 85 BA A9 08 85 B9 60 A5 B3 F0 1E A5 9C 29
-    .byte $01, $F0, $05, $E6, $A6, $4C, $CA, $AA, $A5, $9C, $29, $02, $F0, $02, $C6, $A6  ; CPU:$AABA PRG:2ABA  01 F0 05 E6 A6 4C CA AA A5 9C 29 02 F0 02 C6 A6
-    .byte $C6, $B3, $D0, $04, $A9, $00, $85, $9C, $4C, $DF, $AB, $AD, $E5, $05, $F0, $17  ; CPU:$AACA PRG:2ACA  C6 B3 D0 04 A9 00 85 9C 4C DF AB AD E5 05 F0 17
-    .byte $AE, $E4, $05, $BD, $BE, $AC, $C5, $AA, $D0, $0D, $BD, $BF, $AC, $85, $27, $85  ; CPU:$AADA PRG:2ADA  AE E4 05 BD BE AC C5 AA D0 0D BD BF AC 85 27 85
-    .byte $2B, $EE, $E4, $05, $EE, $E4, $05, $A5, $27, $29, $08, $D0, $06, $A9, $00, $85  ; CPU:$AAEA PRG:2AEA  2B EE E4 05 EE E4 05 A5 27 29 08 D0 06 A9 00 85
-    .byte $C5, $F0, $16, $E6, $C5, $A5, $C5, $C9, $08, $90, $0A, $A9, $00, $85, $C5, $EE  ; CPU:$AAFA PRG:2AFA  C5 F0 16 E6 C5 A5 C5 C9 08 90 0A A9 00 85 C5 EE
-    .byte $DD, $06, $EE, $DD, $06, $A9, $00, $85, $C6, $A5, $C6, $D0, $0A, $A5, $CB, $85  ; CPU:$AB0A PRG:2B0A  DD 06 EE DD 06 A9 00 85 C6 A5 C6 D0 0A A5 CB 85
-    .byte $C6, $C6, $9D, $C6, $A7, $C6, $A7, $C6, $C6, $A5, $9D, $D0, $16, $A9, $08, $85  ; CPU:$AB1A PRG:2B1A  C6 C6 9D C6 A7 C6 A7 C6 C6 A5 9D D0 16 A9 08 85
-    .byte $9D, $A5, $AA, $85, $20, $C6, $20, $A5, $A5, $85, $23, $20, $29, $AC, $F0, $03  ; CPU:$AB2A PRG:2B2A  9D A5 AA 85 20 C6 20 A5 A5 85 23 20 29 AC F0 03
-    .byte $E6, $B9, $60, $A5, $27, $29, $03, $D0, $03, $4C, $DF, $AB, $C9, $03, $D0, $07  ; CPU:$AB3A PRG:2B3A  E6 B9 60 A5 27 29 03 D0 03 4C DF AB C9 03 D0 07
-    .byte $A9, $00, $85, $9C, $4C, $DF, $AB, $85, $9C, $A5, $27, $29, $01, $F0, $09, $A5  ; CPU:$AB4A PRG:2B4A  A9 00 85 9C 4C DF AB 85 9C A5 27 29 01 F0 09 A5
-    .byte $AA, $18, $69, $10, $29, $F0, $85, $20, $A5, $27, $29, $02, $F0, $09, $A5, $AA  ; CPU:$AB5A PRG:2B5A  AA 18 69 10 29 F0 85 20 A5 27 29 02 F0 09 A5 AA
-    .byte $38, $E9, $10, $29, $F0, $85, $20, $A5, $AA, $29, $0F, $05, $20, $85, $20, $A5  ; CPU:$AB6A PRG:2B6A  38 E9 10 29 F0 85 20 A5 AA 29 0F 05 20 85 20 A5
-    .byte $9D, $C9, $05, $90, $1B, $A5, $AA, $85, $1C, $29, $0F, $C9, $0E, $90, $06, $A5  ; CPU:$AB7A PRG:2B7A  9D C9 05 90 1B A5 AA 85 1C 29 0F C9 0E 90 06 A5
-    .byte $AA, $49, $10, $85, $1C, $A5, $1C, $29, $10, $F0, $1D, $E6, $20, $4C, $B2, $AB  ; CPU:$AB8A PRG:2B8A  AA 49 10 85 1C A5 1C 29 10 F0 1D E6 20 4C B2 AB
-    .byte $A5, $AA, $85, $1C, $29, $0F, $C9, $0E, $90, $06, $A5, $AA, $49, $10, $85, $1C  ; CPU:$AB9A PRG:2B9A  A5 AA 85 1C 29 0F C9 0E 90 06 A5 AA 49 10 85 1C
-    .byte $A5, $1C, $29, $10, $D0, $02, $C6, $20, $A5, $A5, $85, $23, $20, $29, $AC, $F0  ; CPU:$ABAA PRG:2BAA  A5 1C 29 10 D0 02 C6 20 A5 A5 85 23 20 29 AC F0
-    .byte $09, $A9, $00, $85, $9C, $85, $B3, $4C, $DF, $AB, $A9, $00, $85, $C6, $A9, $10  ; CPU:$ABBA PRG:2BBA  09 A9 00 85 9C 85 B3 4C DF AB A9 00 85 C6 A9 10
-    .byte $85, $B3, $A5, $9D, $C9, $05, $90, $08, $38, $E9, $04, $85, $9D, $4C, $DF, $AB  ; CPU:$ABCA PRG:2BCA  85 B3 A5 9D C9 05 90 08 38 E9 04 85 9D 4C DF AB
-    .byte $18, $69, $04, $85, $9D, $A5, $A5, $85, $23, $29, $01, $F0, $21, $A5, $2B, $29  ; CPU:$ABDA PRG:2BDA  18 69 04 85 9D A5 A5 85 23 29 01 F0 21 A5 2B 29
-    .byte $80, $F0, $02, $C6, $23, $A5, $2B, $29, $40, $F0, $02, $E6, $23, $A5, $23, $29  ; CPU:$ABEA PRG:2BEA  80 F0 02 C6 23 A5 2B 29 40 F0 02 E6 23 A5 23 29
-    .byte $03, $85, $23, $A5, $AA, $85, $20, $20, $29, $AC, $20, $B2, $A8, $60, $A5, $2B  ; CPU:$ABFA PRG:2BFA  03 85 23 A5 AA 85 20 20 29 AC 20 B2 A8 60 A5 2B
-    .byte $29, $80, $F0, $02, $E6, $23, $A5, $2B, $29, $40, $F0, $02, $C6, $23, $A5, $23  ; CPU:$AC0A PRG:2C0A  29 80 F0 02 E6 23 A5 2B 29 40 F0 02 C6 23 A5 23
-    .byte $29, $03, $85, $23, $A5, $AA, $85, $20, $20, $29, $AC, $20, $B2, $A8, $60, $A5  ; CPU:$AC1A PRG:2C1A  29 03 85 23 A5 AA 85 20 20 29 AC 20 B2 A8 60 A5
-    .byte $20, $29, $F0, $85, $21, $A5, $20, $29, $0F, $85, $22, $A9, $04, $85, $1F, $A2  ; CPU:$AC2A PRG:2C2A  20 29 F0 85 21 A5 20 29 0F 85 22 A9 04 85 1F A2
-    .byte $00, $A5, $23, $0A, $0A, $85, $25, $A4, $25, $B1, $A3, $85, $1E, $A5, $21, $85  ; CPU:$AC3A PRG:2C3A  00 A5 23 0A 0A 85 25 A4 25 B1 A3 85 1E A5 21 85
-    .byte $1C, $A5, $22, $C9, $0E, $90, $07, $A5, $21, $18, $69, $10, $85, $1C, $A5, $1C  ; CPU:$AC4A PRG:2C4A  1C A5 22 C9 0E 90 07 A5 21 18 69 10 85 1C A5 1C
-    .byte $29, $10, $F0, $08, $A5, $1E, $29, $10, $F0, $02, $E6, $1E, $A5, $1E, $29, $F0  ; CPU:$AC5A PRG:2C5A  29 10 F0 08 A5 1E 29 10 F0 02 E6 1E A5 1E 29 F0
-    .byte $18, $65, $21, $85, $1D, $C9, $70, $D0, $03, $A9, $FF, $60, $A5, $1E, $29, $0F  ; CPU:$AC6A PRG:2C6A  18 65 21 85 1D C9 70 D0 03 A9 FF 60 A5 1E 29 0F
-    .byte $18, $65, $22, $85, $1C, $29, $0F, $C9, $0E, $90, $03, $A9, $FF, $60, $A5, $1C  ; CPU:$AC7A PRG:2C7A  18 65 22 85 1C 29 0F C9 0E 90 03 A9 FF 60 A5 1C
-    .byte $18, $65, $1D, $C9, $70, $B0, $F4, $A8, $B9, $EA, $05, $29, $7F, $F0, $01, $60  ; CPU:$AC8A PRG:2C8A  18 65 1D C9 70 B0 F4 A8 B9 EA 05 29 7F F0 01 60
-    .byte $98, $95, $C7, $E8, $E6, $25, $C6, $1F, $D0, $9D, $A9, $04, $85, $1F, $A2, $00  ; CPU:$AC9A PRG:2C9A  98 95 C7 E8 E6 25 C6 1F D0 9D A9 04 85 1F A2 00
-    .byte $B5, $C7, $95, $AB, $E8, $C6, $1F, $D0, $F7, $A5, $20, $85, $AA, $A5, $23, $85  ; CPU:$ACAA PRG:2CAA  B5 C7 95 AB E8 C6 1F D0 F7 A5 20 85 AA A5 23 85
-    .byte $A5, $A9, $00, $60, $28, $80, $24, $02, $28, $01, $32, $02, $29, $01, $35, $40  ; CPU:$ACBA PRG:2CBA  A5 A9 00 60 28 80 24 02 28 01 32 02 29 01 35 40
-    .byte $29, $80, $24, $01, $2A, $01, $35, $01, $28, $80, $24, $40, $28, $01, $34, $02  ; CPU:$ACCA PRG:2CCA  29 80 24 01 2A 01 35 01 28 80 24 40 28 01 34 02
-    .byte $28, $40, $25, $40, $2A, $02, $17, $02, $05, $80, $28, $40, $23, $80, $28, $01  ; CPU:$ACDA PRG:2CDA  28 40 25 40 2A 02 17 02 05 80 28 40 23 80 28 01
-    .byte $34, $40, $32, $01, $29, $01, $35, $40, $33, $01, $29, $80, $25, $01, $32, $01  ; CPU:$ACEA PRG:2CEA  34 40 32 01 29 01 35 40 33 01 29 80 25 01 32 01
-    .byte $27, $02, $12, $40, $27, $40, $24, $02, $29, $80, $23, $80, $29, $01, $32, $02  ; CPU:$ACFA PRG:2CFA  27 02 12 40 27 40 24 02 29 80 23 80 29 01 32 02
-    .byte $21, $02, $26, $40, $22, $02, $10, $01, $25, $02, $29, $80, $26, $40, $28, $40  ; CPU:$AD0A PRG:2D0A  21 02 26 40 22 02 10 01 25 02 29 80 26 40 28 40
-    .byte $25, $80, $23, $40, $29, $80, $26, $01, $34, $01, $28, $80, $22, $01, $29, $01  ; CPU:$AD1A PRG:2D1A  25 80 23 40 29 80 26 01 34 01 28 80 22 01 29 01
-    .byte $36, $01, $43, $01, $28, $40, $25, $80, $23, $01, $29, $01, $36, $01, $29, $01  ; CPU:$AD2A PRG:2D2A  36 01 43 01 28 40 25 80 23 01 29 01 36 01 29 01
-    .byte $36, $01, $29, $80, $25, $80, $28, $80, $2A, $02, $18, $02, $06, $40, $04, $01  ; CPU:$AD3A PRG:2D3A  36 01 29 80 25 80 28 80 2A 02 18 02 06 40 04 01
-    .byte $28, $40, $28, $80, $25, $80, $29, $02, $29, $01, $37, $A2, $00, $86, $21, $B4  ; CPU:$AD4A PRG:2D4A  28 40 28 80 25 80 29 02 29 01 37 A2 00 86 21 B4
-    .byte $AB, $B5, $AF, $85, $1B, $99, $EA, $05, $E6, $21, $0A, $AA, $BD, $9E, $F2, $85  ; CPU:$AD5A PRG:2D5A  AB B5 AF 85 1B 99 EA 05 E6 21 0A AA BD 9E F2 85
-    .byte $17, $BD, $9F, $F2, $85, $18, $98, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84  ; CPU:$AD6A PRG:2D6A  17 BD 9F F2 85 18 98 20 BF 84 20 8A 85 20 E3 84
-    .byte $A6, $21, $E0, $04, $90, $D9, $A6, $36, $A9, $00, $9D, $00, $03, $60, $A5, $BA  ; CPU:$AD7A PRG:2D7A  A6 21 E0 04 90 D9 A6 36 A9 00 9D 00 03 60 A5 BA
-    .byte $C9, $00, $D0, $36, $A2, $00, $86, $B5, $86, $21, $B5, $AB, $85, $20, $C6, $20  ; CPU:$AD8A PRG:2D8A  C9 00 D0 36 A2 00 86 B5 86 21 B5 AB 85 20 C6 20
-    .byte $A5, $20, $29, $0F, $C9, $0E, $B0, $18, $A4, $20, $B9, $EA, $05, $D0, $11, $A9  ; CPU:$AD9A PRG:2D9A  A5 20 29 0F C9 0E B0 18 A4 20 B9 EA 05 D0 11 A9
-    .byte $80, $99, $EA, $05, $98, $A6, $B5, $9D, $A1, $06, $E6, $B5, $C6, $20, $10, $E0  ; CPU:$ADAA PRG:2DAA  80 99 EA 05 98 A6 B5 9D A1 06 E6 B5 C6 20 10 E0
-    .byte $A6, $21, $E8, $E0, $04, $90, $D1, $E6, $BA, $60, $A5, $31, $6A, $90, $01, $60  ; CPU:$ADBA PRG:2DBA  A6 21 E8 E0 04 90 D1 E6 BA 60 A5 31 6A 90 01 60
-    .byte $A9, $0D, $85, $17, $A9, $F3, $85, $18, $A9, $0C, $85, $1F, $A0, $00, $C6, $B5  ; CPU:$ADCA PRG:2DCA  A9 0D 85 17 A9 F3 85 18 A9 0C 85 1F A0 00 C6 B5
-    .byte $10, $18, $E6, $B9, $A5, $BD, $D0, $02, $E6, $B9, $A9, $00, $A4, $36, $85, $BA  ; CPU:$ADDA PRG:2DDA  10 18 E6 B9 A5 BD D0 02 E6 B9 A9 00 A4 36 85 BA
-    .byte $99, $00, $03, $85, $9C, $A9, $03, $85, $B3, $60, $A6, $B5, $BD, $A1, $06, $20  ; CPU:$ADEA PRG:2DEA  99 00 03 85 9C A9 03 85 B3 60 A6 B5 BD A1 06 20
-    .byte $BF, $84, $20, $8A, $85, $C6, $1F, $10, $D5, $A4, $36, $A9, $00, $99, $00, $03  ; CPU:$ADFA PRG:2DFA  BF 84 20 8A 85 C6 1F 10 D5 A4 36 A9 00 99 00 03
-    .byte $60, $A5, $BA, $20, $73, $81, $20, $AE, $2B, $AE, $47, $AE, $80, $AE, $D6, $AE  ; CPU:$AE0A PRG:2E0A  60 A5 BA 20 73 81 20 AE 2B AE 47 AE 80 AE D6 AE
-    .byte $E3, $AE, $0A, $AF, $23, $AF, $A9, $0A, $85, $6A, $A9, $00, $85, $6C, $E6, $BA  ; CPU:$AE1A PRG:2E1A  E3 AE 0A AF 23 AF A9 0A 85 6A A9 00 85 6C E6 BA
-    .byte $60, $A9, $00, $8D, $59, $03, $8D, $5E, $03, $8D, $5F, $03, $8D, $60, $03, $8D  ; CPU:$AE2A PRG:2E2A  60 A9 00 8D 59 03 8D 5E 03 8D 5F 03 8D 60 03 8D
-    .byte $61, $03, $A9, $0A, $85, $B5, $E6, $BA, $A9, $07, $4C, $04, $80, $A5, $31, $6A  ; CPU:$AE3A PRG:2E3A  61 03 A9 0A 85 B5 E6 BA A9 07 4C 04 80 A5 31 6A
-    .byte $90, $01, $60, $A9, $A8, $85, $17, $A9, $F2, $85, $18, $A5, $B5, $85, $B3, $20  ; CPU:$AE4A PRG:2E4A  90 01 60 A9 A8 85 17 A9 F2 85 18 A5 B5 85 B3 20
-    .byte $BF, $84, $20, $8A, $85, $A5, $B3, $18, $69, $10, $C9, $70, $90, $EF, $A9, $00  ; CPU:$AE5A PRG:2E5A  BF 84 20 8A 85 A5 B3 18 69 10 C9 70 90 EF A9 00
-    .byte $9D, $00, $03, $C6, $B5, $10, $0E, $E6, $BA, $A0, $00, $A9, $00, $99, $EA, $05  ; CPU:$AE6A PRG:2E6A  9D 00 03 C6 B5 10 0E E6 BA A0 00 A9 00 99 EA 05
-    .byte $C8, $C0, $70, $90, $F8, $60, $A5, $31, $6A, $90, $01, $60, $A6, $37, $A0, $00  ; CPU:$AE7A PRG:2E7A  C8 C0 70 90 F8 60 A5 31 6A 90 01 60 A6 37 A0 00
-    .byte $B9, $AC, $AE, $9D, $38, $03, $E8, $C8, $C0, $08, $90, $F4, $A9, $00, $9D, $38  ; CPU:$AE8A PRG:2E8A  B9 AC AE 9D 38 03 E8 C8 C0 08 90 F4 A9 00 9D 38
-    .byte $03, $86, $37, $A9, $01, $85, $96, $A9, $00, $85, $B8, $85, $B7, $85, $91, $E6  ; CPU:$AE9A PRG:2E9A  03 86 37 A9 01 85 96 A9 00 85 B8 85 B7 85 91 E6
-    .byte $BA, $60, $B7, $21, $11, $F8, $DD, $23, $1B, $F8, $A9, $00, $85, $BA, $A9, $0A  ; CPU:$AEAA PRG:2EAA  BA 60 B7 21 11 F8 DD 23 1B F8 A9 00 85 BA A9 0A
-    .byte $85, $B5, $60, $20, $4D, $AE, $A5, $BA, $F0, $02, $E6, $6C, $60, $A9, $00, $AA  ; CPU:$AEBA PRG:2EBA  85 B5 60 20 4D AE A5 BA F0 02 E6 6C 60 A9 00 AA
-    .byte $95, $B9, $E8, $E0, $0A, $90, $F9, $A9, $FF, $85, $BE, $60, $A5, $27, $C9, $C0  ; CPU:$AECA PRG:2ECA  95 B9 E8 E0 0A 90 F9 A9 FF 85 BE 60 A5 27 C9 C0
-    .byte $D0, $06, $E6, $BA, $A9, $00, $85, $96, $60, $A5, $31, $6A, $90, $01, $60, $A2  ; CPU:$AEDA PRG:2EDA  D0 06 E6 BA A9 00 85 96 60 A5 31 6A 90 01 60 A2
-    .byte $00, $BD, $FE, $AE, $9D, $38, $03, $E8, $E0, $0C, $90, $F5, $A9, $00, $9D, $38  ; CPU:$AEEA PRG:2EEA  00 BD FE AE 9D 38 03 E8 E0 0C 90 F5 A9 00 9D 38
-    .byte $03, $E6, $BA, $60, $75, $21, $25, $F8, $B5, $21, $25, $F8, $DD, $23, $20, $F8  ; CPU:$AEFA PRG:2EFA  03 E6 BA 60 75 21 25 F8 B5 21 25 F8 DD 23 20 F8
-    .byte $A5, $31, $6A, $90, $01, $60, $A0, $00, $A6, $37, $B9, $48, $AF, $9D, $38, $03  ; CPU:$AF0A PRG:2F0A  A5 31 6A 90 01 60 A0 00 A6 37 B9 48 AF 9D 38 03
-    .byte $E8, $C8, $C0, $0D, $90, $F4, $E6, $BA, $60, $A5, $31, $6A, $90, $01, $60, $A0  ; CPU:$AF1A PRG:2F1A  E8 C8 C0 0D 90 F4 E6 BA 60 A5 31 6A 90 01 60 A0
-    .byte $00, $A6, $37, $B9, $55, $AF, $9D, $38, $03, $E8, $C8, $C0, $05, $90, $F4, $20  ; CPU:$AF2A PRG:2F2A  00 A6 37 B9 55 AF 9D 38 03 E8 C8 C0 05 90 F4 20
-    .byte $C7, $AE, $20, $0F, $97, $A9, $09, $85, $B9, $A9, $00, $85, $BA, $60, $32, $23  ; CPU:$AF3A PRG:2F3A  C7 AE 20 0F 97 A9 09 85 B9 A9 00 85 BA 60 32 23
-    .byte $A1, $FB, $52, $23, $A1, $FB, $3A, $23, $A7, $FB, $00, $56, $23, $AF, $FB, $00  ; CPU:$AF4A PRG:2F4A  A1 FB 52 23 A1 FB 3A 23 A7 FB 00 56 23 AF FB 00
-    .byte $A5, $B7, $D0, $18, $20, $52, $85, $A5, $3D, $29, $03, $A8, $A2, $00, $B9, $37  ; CPU:$AF5A PRG:2F5A  A5 B7 D0 18 20 52 85 A5 3D 29 03 A8 A2 00 B9 37
-    .byte $C1, $9D, $F9, $06, $C8, $E8, $E0, $05, $90, $F4, $86, $B7, $A6, $B7, $BD, $F8  ; CPU:$AF6A PRG:2F6A  C1 9D F9 06 C8 E8 E0 05 90 F4 86 B7 A6 B7 BD F8
-    .byte $06, $18, $69, $07, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $20, $52, $85  ; CPU:$AF7A PRG:2F7A  06 18 69 07 85 11 A9 01 85 12 20 5D 85 20 52 85
-    .byte $A5, $3D, $29, $03, $85, $BD, $E6, $BD, $A6, $BE, $30, $08, $BD, $EA, $05, $29  ; CPU:$AF8A PRG:2F8A  A5 3D 29 03 85 BD E6 BD A6 BE 30 08 BD EA 05 29
-    .byte $BF, $9D, $EA, $05, $60, $A9, $02, $85, $BD, $A9, $05, $85, $11, $A9, $07, $85  ; CPU:$AF9A PRG:2F9A  BF 9D EA 05 60 A9 02 85 BD A9 05 85 11 A9 07 85
-    .byte $12, $20, $5D, $85, $A9, $00, $85, $BC, $A6, $BE, $30, $17, $BD, $EA, $05, $29  ; CPU:$AFAA PRG:2FAA  12 20 5D 85 A9 00 85 BC A6 BE 30 17 BD EA 05 29
-    .byte $BF, $9D, $EA, $05, $A9, $FF, $85, $BE, $A9, $00, $85, $11, $A9, $01, $85, $12  ; CPU:$AFBA PRG:2FBA  BF 9D EA 05 A9 FF 85 BE A9 00 85 11 A9 01 85 12
-    .byte $20, $5D, $85, $60, $A5, $31, $6A, $90, $01, $60, $A5, $BA, $D0, $11, $E6, $BA  ; CPU:$AFCA PRG:2FCA  20 5D 85 60 A5 31 6A 90 01 60 A5 BA D0 11 E6 BA
-    .byte $A9, $01, $8D, $E3, $00, $A9, $05, $8D, $E2, $00, $A9, $04, $4C, $04, $80, $C9  ; CPU:$AFDA PRG:2FDA  A9 01 8D E3 00 A9 05 8D E2 00 A9 04 4C 04 80 C9
-    .byte $01, $D0, $4A, $A9, $05, $85, $11, $A9, $08, $85, $12, $20, $5D, $85, $A5, $9C  ; CPU:$AFEA PRG:2FEA  01 D0 4A A9 05 85 11 A9 08 85 12 20 5D 85 A5 9C
-    .byte $0A, $AA, $BD, $87, $F8, $18, $6D, $8F, $03, $8D, $90, $03, $BD, $88, $F8, $18  ; CPU:$AFFA PRG:2FFA  0A AA BD 87 F8 18 6D 8F 03 8D 90 03 BD 88 F8 18
-    .byte $6D, $9F, $03, $8D, $A0, $03, $A5, $31, $6A, $29, $03, $85, $20, $AD, $AF, $03  ; CPU:$B00A PRG:300A  6D 9F 03 8D A0 03 A5 31 6A 29 03 85 20 AD AF 03
-    .byte $29, $FC, $05, $20, $8D, $AF, $03, $8D, $B0, $03, $E6, $9C, $A5, $9C, $C9, $18  ; CPU:$B01A PRG:301A  29 FC 05 20 8D AF 03 8D B0 03 E6 9C A5 9C C9 18
-    .byte $D0, $0A, $A9, $00, $85, $9C, $C6, $B3, $D0, $02, $E6, $BA, $60, $C9, $02, $D0  ; CPU:$B02A PRG:302A  D0 0A A9 00 85 9C C6 B3 D0 02 E6 BA 60 C9 02 D0
-    .byte $6F, $A5, $AC, $8D, $5B, $06, $AA, $20, $52, $85, $A5, $3D, $29, $03, $85, $BD  ; CPU:$B03A PRG:303A  6F A5 AC 8D 5B 06 AA 20 52 85 A5 3D 29 03 85 BD
-    .byte $E6, $BD, $A5, $BD, $9D, $EA, $05, $A0, $01, $84, $25, $AD, $5B, $06, $29, $10  ; CPU:$B04A PRG:304A  E6 BD A5 BD 9D EA 05 A0 01 84 25 AD 5B 06 29 10
-    .byte $F0, $06, $98, $18, $69, $06, $85, $25, $A9, $01, $85, $21, $A9, $06, $85, $1F  ; CPU:$B05A PRG:305A  F0 06 98 18 69 06 85 25 A9 01 85 21 A9 06 85 1F
-    .byte $A4, $25, $B9, $7A, $F8, $E6, $25, $18, $6D, $5B, $06, $AA, $29, $0F, $C9, $0D  ; CPU:$B06A PRG:306A  A4 25 B9 7A F8 E6 25 18 6D 5B 06 AA 29 0F C9 0D
-    .byte $B0, $20, $8A, $29, $F0, $C9, $70, $B0, $19, $BD, $EA, $05, $29, $07, $D0, $05  ; CPU:$B07A PRG:307A  B0 20 8A 29 F0 C9 70 B0 19 BD EA 05 29 07 D0 05
-    .byte $9D, $EA, $05, $F0, $05, $A5, $BD, $9D, $EA, $05, $8A, $A6, $21, $9D, $5B, $06  ; CPU:$B08A PRG:308A  9D EA 05 F0 05 A5 BD 9D EA 05 8A A6 21 9D 5B 06
-    .byte $E6, $21, $C6, $1F, $D0, $CA, $A6, $21, $A9, $FF, $9D, $5B, $06, $E6, $BA, $60  ; CPU:$B09A PRG:309A  E6 21 C6 1F D0 CA A6 21 A9 FF 9D 5B 06 E6 BA 60
-    .byte $C9, $03, $D0, $47, $A0, $00, $84, $22, $A4, $22, $B9, $5B, $06, $30, $22, $85  ; CPU:$B0AA PRG:30AA  C9 03 D0 47 A0 00 84 22 A4 22 B9 5B 06 30 22 85
-    .byte $21, $20, $BF, $84, $A6, $21, $BD, $EA, $05, $85, $1B, $0A, $AA, $BD, $9E, $F2  ; CPU:$B0BA PRG:30BA  21 20 BF 84 A6 21 BD EA 05 85 1B 0A AA BD 9E F2
-    .byte $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3, $84, $E6, $22, $10  ; CPU:$B0CA PRG:30CA  85 17 BD 9F F2 85 18 20 8A 85 20 E3 84 E6 22 10
-    .byte $D7, $A6, $36, $A9, $00, $9D, $00, $03, $A9, $00, $85, $11, $A9, $07, $85, $12  ; CPU:$B0DA PRG:30DA  D7 A6 36 A9 00 9D 00 03 A9 00 85 11 A9 07 85 12
-    .byte $20, $5D, $85, $E6, $12, $20, $5D, $85, $E6, $BA, $60, $E6, $BA, $A5, $BA, $C9  ; CPU:$B0EA PRG:30EA  20 5D 85 E6 12 20 5D 85 E6 BA 60 E6 BA A5 BA C9
-    .byte $0F, $90, $0A, $A9, $00, $85, $BA, $85, $BF, $85, $BD, $E6, $B9, $60, $A5, $BA  ; CPU:$B0FA PRG:30FA  0F 90 0A A9 00 85 BA 85 BF 85 BD E6 B9 60 A5 BA
-    .byte $20, $73, $81, $21, $B1, $F2, $B5, $29, $B2, $21, $B4, $51, $B1, $0C, $B7, $E3  ; CPU:$B10A PRG:310A  20 73 81 21 B1 F2 B5 29 B2 21 B4 51 B1 0C B7 E3
-    .byte $B1, $E2, $B4, $4C, $B5, $7D, $B1, $A9, $00, $85, $B5, $A9, $04, $85, $1E, $A5  ; CPU:$B11A PRG:311A  B1 E2 B4 4C B5 7D B1 A9 00 85 B5 A9 04 85 1E A5
-    .byte $1E, $85, $20, $20, $37, $B3, $C6, $1E, $D0, $F5, $AD, $DF, $06, $D0, $0D, $85  ; CPU:$B12A PRG:312A  1E 85 20 20 37 B3 C6 1E D0 F5 AD DF 06 D0 0D 85
-    .byte $BA, $E6, $B9, $A5, $C1, $C9, $03, $90, $02, $E6, $C1, $60, $A9, $00, $85, $9C  ; CPU:$B13A PRG:313A  BA E6 B9 A5 C1 C9 03 90 02 E6 C1 60 A9 00 85 9C
-    .byte $85, $B3, $85, $B6, $E6, $BA, $60, $E6, $BA, $20, $A9, $B1, $20, $C3, $B1, $A6  ; CPU:$B14A PRG:314A  85 B3 85 B6 E6 BA 60 E6 BA 20 A9 B1 20 C3 B1 A6
-    .byte $BE, $30, $17, $BD, $EA, $05, $29, $40, $D0, $10, $A9, $00, $8D, $59, $03, $A5  ; CPU:$B15A PRG:315A  BE 30 17 BD EA 05 29 40 D0 10 A9 00 8D 59 03 A5
-    .byte $71, $C9, $02, $F0, $04, $A9, $FF, $85, $BE, $60, $A5, $B5, $D0, $02, $E6, $BA  ; CPU:$B16A PRG:316A  71 C9 02 F0 04 A9 FF 85 BE 60 A5 B5 D0 02 E6 BA
-    .byte $E6, $BA, $60, $A5, $31, $6A, $90, $01, $60, $A6, $37, $A9, $52, $9D, $38, $03  ; CPU:$B17A PRG:317A  E6 BA 60 A5 31 6A 90 01 60 A6 37 A9 52 9D 38 03
-    .byte $A9, $23, $9D, $39, $03, $A9, $E0, $9D, $3A, $03, $A9, $F1, $9D, $3B, $03, $A9  ; CPU:$B18A PRG:318A  A9 23 9D 39 03 A9 E0 9D 3A 03 A9 F1 9D 3B 03 A9
-    .byte $00, $9D, $3C, $03, $8A, $18, $69, $04, $85, $37, $A9, $00, $85, $BA, $60, $A2  ; CPU:$B19A PRG:319A  00 9D 3C 03 8A 18 69 04 85 37 A9 00 85 BA 60 A2
-    .byte $00, $A0, $00, $86, $24, $A6, $24, $BD, $A1, $06, $C9, $FF, $D0, $01, $60, $AA  ; CPU:$B1AA PRG:31AA  00 A0 00 86 24 A6 24 BD A1 06 C9 FF D0 01 60 AA
-    .byte $98, $9D, $EA, $05, $E6, $24, $D0, $ED, $60, $A0, $00, $A2, $6E, $CA, $BD, $EA  ; CPU:$B1BA PRG:31BA  98 9D EA 05 E6 24 D0 ED 60 A0 00 A2 6E CA BD EA
-    .byte $05, $F0, $07, $10, $0B, $8A, $99, $A1, $06, $C8, $CA, $10, $F1, $84, $B5, $60  ; CPU:$B1CA PRG:31CA  05 F0 07 10 0B 8A 99 A1 06 C8 CA 10 F1 84 B5 60
-    .byte $8A, $29, $F0, $AA, $D0, $E7, $84, $B5, $60, $A5, $31, $6A, $90, $01, $60, $A9  ; CPU:$B1DA PRG:31DA  8A 29 F0 AA D0 E7 84 B5 60 A5 31 6A 90 01 60 A9
-    .byte $A8, $85, $17, $A9, $F2, $85, $18, $A9, $0C, $85, $1F, $A0, $00, $C6, $B5, $10  ; CPU:$B1EA PRG:31EA  A8 85 17 A9 F2 85 18 A9 0C 85 1F A0 00 C6 B5 10
-    .byte $08, $E6, $BA, $A9, $00, $85, $B3, $F0, $1E, $A6, $B5, $BD, $A1, $06, $85, $24  ; CPU:$B1FA PRG:31FA  08 E6 BA A9 00 85 B3 F0 1E A6 B5 BD A1 06 85 24
-    .byte $20, $BF, $84, $A5, $1A, $C9, $24, $F0, $0A, $A6, $24, $A9, $00, $9D, $EA, $05  ; CPU:$B20A PRG:320A  20 BF 84 A5 1A C9 24 F0 0A A6 24 A9 00 9D EA 05
-    .byte $20, $8A, $85, $C6, $1F, $10, $D6, $A6, $36, $A9, $00, $9D, $00, $03, $60, $A9  ; CPU:$B21A PRG:321A  20 8A 85 C6 1F 10 D6 A6 36 A9 00 9D 00 03 60 A9
-    .byte $01, $8D, $E3, $00, $A9, $01, $8D, $E2, $00, $A9, $04, $20, $04, $80, $E6, $BA  ; CPU:$B22A PRG:322A  01 8D E3 00 A9 01 8D E2 00 A9 04 20 04 80 E6 BA
-    .byte $60, $A9, $FF, $85, $BE, $A5, $96, $F0, $07, $A9, $00, $85, $6C, $85, $6A, $60  ; CPU:$B23A PRG:323A  60 A9 FF 85 BE A5 96 F0 07 A9 00 85 6C 85 6A 60
-    .byte $20, $52, $85, $29, $06, $85, $20, $A5, $5D, $0A, $0A, $0A, $18, $65, $20, $AA  ; CPU:$B24A PRG:324A  20 52 85 29 06 85 20 A5 5D 0A 0A 0A 18 65 20 AA
-    .byte $BD, $BD, $F8, $85, $AB, $BD, $BE, $F8, $85, $AC, $A9, $00, $85, $B3, $85, $B5  ; CPU:$B25A PRG:325A  BD BD F8 85 AB BD BE F8 85 AC A9 00 85 B3 85 B5
-    .byte $E6, $6C, $A9, $01, $85, $34, $A2, $00, $8A, $9D, $F9, $06, $E8, $E0, $05, $90  ; CPU:$B26A PRG:326A  E6 6C A9 01 85 34 A2 00 8A 9D F9 06 E8 E0 05 90
-    .byte $F7, $60, $A5, $31, $6A, $90, $01, $60, $A6, $B3, $A4, $B5, $B1, $AB, $F0, $33  ; CPU:$B27A PRG:327A  F7 60 A5 31 6A 90 01 60 A6 B3 A4 B5 B1 AB F0 33
-    .byte $9D, $EA, $05, $85, $1B, $8A, $20, $BF, $84, $A5, $1B, $10, $0E, $A9, $0D, $85  ; CPU:$B28A PRG:328A  9D EA 05 85 1B 8A 20 BF 84 A5 1B 10 0E A9 0D 85
-    .byte $17, $A9, $F3, $85, $18, $A9, $01, $85, $1B, $D0, $0C, $0A, $AA, $BD, $9E, $F2  ; CPU:$B29A PRG:329A  17 A9 F3 85 18 A9 01 85 1B D0 0C 0A AA BD 9E F2
-    .byte $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3, $84, $E6, $B5, $E6  ; CPU:$B2AA PRG:32AA  85 17 BD 9F F2 85 18 20 8A 85 20 E3 84 E6 B5 E6
-    .byte $B3, $10, $C5, $A6, $36, $A9, $00, $9D, $00, $03, $E6, $B5, $A5, $B3, $29, $F0  ; CPU:$B2BA PRG:32BA  B3 10 C5 A6 36 A9 00 9D 00 03 E6 B5 A5 B3 29 F0
-    .byte $18, $69, $10, $85, $B3, $C9, $70, $90, $02, $E6, $6C, $60, $A5, $31, $6A, $90  ; CPU:$B2CA PRG:32CA  18 69 10 85 B3 C9 70 90 02 E6 6C 60 A5 31 6A 90
-    .byte $01, $60, $A5, $5D, $85, $B7, $A6, $5C, $86, $B8, $BD, $5A, $D4, $85, $1B, $20  ; CPU:$B2DA PRG:32DA  01 60 A5 5D 85 B7 A6 5C 86 B8 BD 5A D4 85 1B 20
-    .byte $78, $B7, $A6, $5D, $F0, $18, $86, $21, $20, $9B, $B7, $20, $8A, $85, $20, $E3  ; CPU:$B2EA PRG:32EA  78 B7 A6 5D F0 18 86 21 20 9B B7 20 8A 85 20 E3
-    .byte $84, $C6, $21, $A6, $21, $D0, $F1, $A6, $36, $A9, $00, $9D, $00, $03, $A5, $5D  ; CPU:$B2FA PRG:32FA  84 C6 21 A6 21 D0 F1 A6 36 A9 00 9D 00 03 A5 5D
-    .byte $18, $69, $07, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $A9, $B8, $8D, $89  ; CPU:$B30A PRG:330A  18 69 07 85 11 A9 01 85 12 20 5D 85 A9 B8 8D 89
-    .byte $03, $A9, $1C, $8D, $99, $03, $A2, $30, $BD, $EA, $05, $09, $40, $9D, $EA, $05  ; CPU:$B31A PRG:331A  03 A9 1C 8D 99 03 A2 30 BD EA 05 09 40 9D EA 05
-    .byte $86, $BE, $A9, $00, $85, $6C, $85, $6A, $85, $B5, $E6, $B7, $60, $A0, $00, $A2  ; CPU:$B32A PRG:332A  86 BE A9 00 85 6C 85 6A 85 B5 E6 B7 60 A0 00 A2
-    .byte $00, $BD, $EA, $05, $29, $87, $C5, $20, $F0, $04, $A9, $00, $F0, $07, $C8, $8A  ; CPU:$B33A PRG:333A  00 BD EA 05 29 87 C5 20 F0 04 A9 00 F0 07 C8 8A
-    .byte $99, $5B, $06, $A5, $20, $9D, $71, $04, $E8, $E0, $70, $90, $E4, $C0, $00, $D0  ; CPU:$B34A PRG:334A  99 5B 06 A5 20 9D 71 04 E8 E0 70 90 E4 C0 00 D0
-    .byte $01, $60, $BE, $5B, $06, $BD, $71, $04, $F0, $18, $84, $25, $A0, $00, $84, $21  ; CPU:$B35A PRG:335A  01 60 BE 5B 06 BD 71 04 F0 18 84 25 A0 00 84 21
-    .byte $98, $9D, $71, $04, $8A, $99, $79, $06, $86, $20, $C8, $84, $B6, $20, $80, $B3  ; CPU:$B36A PRG:336A  98 9D 71 04 8A 99 79 06 86 20 C8 84 B6 20 80 B3
-    .byte $A4, $25, $88, $D0, $DD, $60, $A0, $06, $84, $22, $A2, $00, $86, $24, $A4, $22  ; CPU:$B37A PRG:337A  A4 25 88 D0 DD 60 A0 06 84 22 A2 00 86 24 A4 22
-    .byte $A5, $20, $29, $10, $F0, $05, $98, $18, $69, $06, $A8, $B9, $7A, $F8, $18, $65  ; CPU:$B38A PRG:338A  A5 20 29 10 F0 05 98 18 69 06 A8 B9 7A F8 18 65
-    .byte $20, $AA, $29, $0F, $C9, $0E, $B0, $16, $8A, $29, $F0, $C9, $70, $B0, $0F, $BD  ; CPU:$B39A PRG:339A  20 AA 29 0F C9 0E B0 16 8A 29 F0 C9 70 B0 0F BD
-    .byte $71, $04, $F0, $0A, $86, $23, $E6, $24, $A6, $24, $E0, $02, $B0, $06, $C6, $22  ; CPU:$B3AA PRG:33AA  71 04 F0 0A 86 23 E6 24 A6 24 E0 02 B0 06 C6 22
-    .byte $D0, $CC, $F0, $09, $E6, $21, $A6, $21, $A5, $20, $9D, $92, $06, $A6, $24, $F0  ; CPU:$B3BA PRG:33BA  D0 CC F0 09 E6 21 A6 21 A5 20 9D 92 06 A6 24 F0
-    .byte $14, $A6, $23, $A9, $00, $9D, $71, $04, $A4, $B6, $8A, $99, $79, $06, $86, $20  ; CPU:$B3CA PRG:33CA  14 A6 23 A9 00 9D 71 04 A4 B6 8A 99 79 06 86 20
-    .byte $E6, $B6, $4C, $80, $B3, $A6, $21, $F0, $0A, $BD, $92, $06, $C6, $21, $85, $20  ; CPU:$B3DA PRG:33DA  E6 B6 4C 80 B3 A6 21 F0 0A BD 92 06 C6 21 85 20
-    .byte $4C, $80, $B3, $A4, $B6, $C0, $04, $90, $29, $98, $18, $6D, $DE, $06, $8D, $DE  ; CPU:$B3EA PRG:33EA  4C 80 B3 A4 B6 C0 04 90 29 98 18 6D DE 06 8D DE
-    .byte $06, $98, $38, $E9, $03, $0A, $0A, $18, $6D, $DF, $06, $8D, $DF, $06, $88, $A6  ; CPU:$B3FA PRG:33FA  06 98 38 E9 03 0A 0A 18 6D DF 06 8D DF 06 88 A6
-    .byte $B5, $B9, $79, $06, $9D, $A1, $06, $E8, $88, $10, $F6, $A9, $FF, $9D, $A1, $06  ; CPU:$B40A PRG:340A  B5 B9 79 06 9D A1 06 E8 88 10 F6 A9 FF 9D A1 06
-    .byte $86, $B5, $A9, $00, $85, $B6, $60, $A5, $31, $6A, $90, $01, $60, $E6, $B3, $A5  ; CPU:$B41A PRG:341A  86 B5 A9 00 85 B6 60 A5 31 6A 90 01 60 E6 B3 A5
-    .byte $B3, $C9, $04, $90, $11, $A9, $00, $85, $B3, $85, $B6, $E6, $9C, $A5, $9C, $C9  ; CPU:$B42A PRG:342A  B3 C9 04 90 11 A9 00 85 B3 85 B6 E6 9C A5 9C C9
-    .byte $08, $90, $03, $E6, $BA, $60, $A4, $B6, $B9, $A1, $06, $C9, $FF, $D0, $01, $60  ; CPU:$B43A PRG:343A  08 90 03 E6 BA 60 A4 B6 B9 A1 06 C9 FF D0 01 60
-    .byte $A2, $00, $9D, $79, $06, $E8, $C8, $B9, $A1, $06, $C9, $FF, $F0, $04, $E0, $0D  ; CPU:$B44A PRG:344A  A2 00 9D 79 06 E8 C8 B9 A1 06 C9 FF F0 04 E0 0D
-    .byte $90, $F0, $84, $B6, $86, $24, $86, $21, $A2, $00, $86, $36, $A6, $36, $BD, $79  ; CPU:$B45A PRG:345A  90 F0 84 B6 86 24 86 21 A2 00 86 36 A6 36 BD 79
-    .byte $06, $20, $BF, $84, $A5, $36, $0A, $0A, $A8, $A5, $19, $99, $00, $03, $A5, $1A  ; CPU:$B46A PRG:346A  06 20 BF 84 A5 36 0A 0A A8 A5 19 99 00 03 A5 1A
-    .byte $99, $01, $03, $E6, $36, $C6, $24, $D0, $E3, $A9, $00, $99, $04, $03, $A6, $9C  ; CPU:$B47A PRG:347A  99 01 03 E6 36 C6 24 D0 E3 A9 00 99 04 03 A6 9C
-    .byte $BD, $A8, $D1, $C9, $03, $90, $04, $20, $BB, $B4, $60, $20, $99, $B4, $60, $0A  ; CPU:$B48A PRG:348A  BD A8 D1 C9 03 90 04 20 BB B4 60 20 99 B4 60 0A
-    .byte $AA, $BD, $FB, $F2, $85, $19, $BD, $FC, $F2, $85, $1A, $A2, $00, $8A, $0A, $0A  ; CPU:$B49A PRG:349A  AA BD FB F2 85 19 BD FC F2 85 1A A2 00 8A 0A 0A
-    .byte $A8, $A5, $19, $99, $02, $03, $A5, $1A, $99, $03, $03, $E8, $C6, $21, $10, $ED  ; CPU:$B4AA PRG:34AA  A8 A5 19 99 02 03 A5 1A 99 03 03 E8 C6 21 10 ED
-    .byte $60, $A2, $00, $BD, $79, $06, $86, $24, $A8, $B9, $EA, $05, $29, $07, $0A, $A8  ; CPU:$B4BA PRG:34BA  60 A2 00 BD 79 06 86 24 A8 B9 EA 05 29 07 0A A8
-    .byte $8A, $0A, $0A, $AA, $B9, $9E, $F2, $9D, $02, $03, $B9, $9F, $F2, $9D, $03, $03  ; CPU:$B4CA PRG:34CA  8A 0A 0A AA B9 9E F2 9D 02 03 B9 9F F2 9D 03 03
-    .byte $A6, $24, $E8, $C6, $21, $10, $DC, $60, $A9, $00, $85, $22, $A9, $FF, $85, $24  ; CPU:$B4DA PRG:34DA  A6 24 E8 C6 21 10 DC 60 A9 00 85 22 A9 FF 85 24
-    .byte $A5, $22, $0A, $0A, $0A, $0A, $AA, $A9, $0E, $85, $1F, $BD, $EA, $05, $D0, $30  ; CPU:$B4EA PRG:34EA  A5 22 0A 0A 0A 0A AA A9 0E 85 1F BD EA 05 D0 30
-    .byte $86, $B5, $8A, $A4, $22, $99, $79, $06, $E8, $BD, $EA, $05, $F0, $10, $A4, $B5  ; CPU:$B4FA PRG:34FA  86 B5 8A A4 22 99 79 06 E8 BD EA 05 F0 10 A4 B5
-    .byte $99, $EA, $05, $E6, $B5, $A9, $00, $9D, $EA, $05, $86, $24, $E6, $24, $E8, $C6  ; CPU:$B50A PRG:350A  99 EA 05 E6 B5 A9 00 9D EA 05 86 24 E6 24 E8 C6
-    .byte $1F, $D0, $E6, $A4, $22, $A5, $24, $99, $5B, $06, $A9, $FF, $85, $24, $30, $0C  ; CPU:$B51A PRG:351A  1F D0 E6 A4 22 A5 24 99 5B 06 A9 FF 85 24 30 0C
-    .byte $E8, $C6, $1F, $D0, $C6, $A4, $22, $A9, $FF, $99, $5B, $06, $E6, $22, $A5, $22  ; CPU:$B52A PRG:352A  E8 C6 1F D0 C6 A4 22 A9 FF 99 5B 06 E6 22 A5 22
-    .byte $C9, $07, $90, $AC, $A9, $00, $85, $B5, $E6, $BA, $A5, $BE, $30, $03, $20, $50  ; CPU:$B53A PRG:353A  C9 07 90 AC A9 00 85 B5 E6 BA A5 BE 30 03 20 50
-    .byte $B7, $60, $A5, $31, $6A, $90, $01, $60, $A9, $00, $85, $36, $A9, $08, $85, $1F  ; CPU:$B54A PRG:354A  B7 60 A5 31 6A 90 01 60 A9 00 85 36 A9 08 85 1F
-    .byte $A4, $B5, $B9, $5B, $06, $10, $12, $E6, $B5, $A4, $B5, $C0, $07, $90, $F3, $A9  ; CPU:$B55A PRG:355A  A4 B5 B9 5B 06 10 12 E6 B5 A4 B5 C0 07 90 F3 A9
-    .byte $00, $A6, $36, $9D, $00, $03, $E6, $BA, $60, $85, $24, $B9, $79, $06, $85, $25  ; CPU:$B56A PRG:356A  00 A6 36 9D 00 03 E6 BA 60 85 24 B9 79 06 85 25
-    .byte $20, $BF, $84, $A6, $36, $A5, $19, $9D, $00, $03, $E8, $A5, $1A, $9D, $00, $03  ; CPU:$B57A PRG:357A  20 BF 84 A6 36 A5 19 9D 00 03 E8 A5 1A 9D 00 03
-    .byte $E8, $A5, $25, $29, $0F, $C9, $0B, $B0, $33, $A4, $25, $B9, $EA, $05, $29, $87  ; CPU:$B58A PRG:358A  E8 A5 25 29 0F C9 0B B0 33 A4 25 B9 EA 05 29 87
-    .byte $85, $1B, $30, $13, $0A, $A8, $B9, $9E, $F2, $9D, $00, $03, $E8, $B9, $9F, $F2  ; CPU:$B59A PRG:359A  85 1B 30 13 0A A8 B9 9E F2 9D 00 03 E8 B9 9F F2
-    .byte $9D, $00, $03, $A9, $00, $F0, $0B, $A9, $0D, $9D, $00, $03, $E8, $A9, $F3, $9D  ; CPU:$B5AA PRG:35AA  9D 00 03 A9 00 F0 0B A9 0D 9D 00 03 E8 A9 F3 9D
-    .byte $00, $03, $E8, $86, $36, $A5, $1B, $F0, $03, $20, $E3, $84, $C6, $1F, $F0, $17  ; CPU:$B5BA PRG:35BA  00 03 E8 86 36 A5 1B F0 03 20 E3 84 C6 1F F0 17
-    .byte $E6, $25, $A5, $25, $C5, $24, $B0, $8F, $A5, $19, $18, $69, $40, $85, $19, $90  ; CPU:$B5CA PRG:35CA  E6 25 A5 25 C5 24 B0 8F A5 19 18 69 40 85 19 90
-    .byte $02, $E6, $1A, $A9, $00, $F0, $9C, $E6, $25, $A4, $B5, $A5, $25, $99, $79, $06  ; CPU:$B5DA PRG:35DA  02 E6 1A A9 00 F0 9C E6 25 A4 B5 A5 25 99 79 06
-    .byte $A6, $36, $A9, $00, $9D, $00, $03, $60, $A5, $31, $6A, $90, $01, $60, $A9, $00  ; CPU:$B5EA PRG:35EA  A6 36 A9 00 9D 00 03 60 A5 31 6A 90 01 60 A9 00
-    .byte $85, $20, $AD, $DF, $06, $38, $E9, $0A, $90, $0A, $8D, $DF, $06, $E6, $20, $AD  ; CPU:$B5FA PRG:35FA  85 20 AD DF 06 38 E9 0A 90 0A 8D DF 06 E6 20 AD
-    .byte $DF, $06, $10, $F1, $AD, $DF, $06, $8D, $E3, $06, $A5, $20, $8D, $E2, $06, $A2  ; CPU:$B60A PRG:360A  DF 06 10 F1 AD DF 06 8D E3 06 A5 20 8D E2 06 A2
-    .byte $02, $BD, $E1, $06, $C9, $0A, $90, $0B, $FE, $E0, $06, $18, $69, $06, $29, $0F  ; CPU:$B61A PRG:361A  02 BD E1 06 C9 0A 90 0B FE E0 06 18 69 06 29 0F
-    .byte $9D, $E1, $06, $CA, $D0, $EB, $AD, $DE, $06, $AA, $18, $65, $BB, $85, $BB, $8A  ; CPU:$B62A PRG:362A  9D E1 06 CA D0 EB AD DE 06 AA 18 65 BB 85 BB 8A
-    .byte $18, $65, $BC, $85, $BC, $8A, $29, $0F, $18, $6D, $B9, $05, $8D, $B9, $05, $8A  ; CPU:$B63A PRG:363A  18 65 BC 85 BC 8A 29 0F 18 6D B9 05 8D B9 05 8A
-    .byte $6A, $6A, $6A, $6A, $29, $0F, $18, $6D, $B8, $05, $8D, $B8, $05, $A2, $03, $BD  ; CPU:$B64A PRG:364A  6A 6A 6A 6A 29 0F 18 6D B8 05 8D B8 05 A2 03 BD
-    .byte $B6, $05, $C9, $0A, $90, $0B, $FE, $B5, $05, $18, $69, $06, $29, $0F, $9D, $B6  ; CPU:$B65A PRG:365A  B6 05 C9 0A 90 0B FE B5 05 18 69 06 29 0F 9D B6
-    .byte $05, $CA, $D0, $EB, $A2, $02, $BD, $E1, $06, $18, $7D, $BC, $05, $9D, $BC, $05  ; CPU:$B66A PRG:366A  05 CA D0 EB A2 02 BD E1 06 18 7D BC 05 9D BC 05
-    .byte $CA, $10, $F3, $A2, $04, $BD, $BA, $05, $C9, $0A, $90, $0B, $FE, $B9, $05, $18  ; CPU:$B67A PRG:367A  CA 10 F3 A2 04 BD BA 05 C9 0A 90 0B FE B9 05 18
-    .byte $69, $06, $29, $0F, $9D, $BA, $05, $CA, $D0, $EB, $A9, $04, $8D, $E5, $06, $8D  ; CPU:$B68A PRG:368A  69 06 29 0F 9D BA 05 CA D0 EB A9 04 8D E5 06 8D
-    .byte $EB, $06, $A9, $01, $8D, $E6, $06, $8D, $EC, $06, $A2, $00, $BD, $B6, $05, $A8  ; CPU:$B69A PRG:369A  EB 06 A9 01 8D E6 06 8D EC 06 A2 00 BD B6 05 A8
-    .byte $B9, $D6, $F1, $9D, $E7, $06, $BD, $E1, $06, $A8, $B9, $D6, $F1, $9D, $ED, $06  ; CPU:$B6AA PRG:36AA  B9 D6 F1 9D E7 06 BD E1 06 A8 B9 D6 F1 9D ED 06
-    .byte $E8, $E0, $04, $90, $E7, $A9, $06, $8D, $F1, $06, $A9, $01, $8D, $F2, $06, $A2  ; CPU:$B6BA PRG:36BA  E8 E0 04 90 E7 A9 06 8D F1 06 A9 01 8D F2 06 A2
-    .byte $00, $BD, $BA, $05, $A8, $B9, $D6, $F1, $9D, $F3, $06, $E8, $E0, $06, $90, $F1  ; CPU:$B6CA PRG:36CA  00 BD BA 05 A8 B9 D6 F1 9D F3 06 E8 E0 06 90 F1
-    .byte $A6, $37, $A0, $00, $B9, $00, $B7, $9D, $38, $03, $E8, $C8, $C0, $0C, $90, $F4  ; CPU:$B6DA PRG:36DA  A6 37 A0 00 B9 00 B7 9D 38 03 E8 C8 C0 0C 90 F4
-    .byte $86, $37, $A9, $00, $9D, $38, $03, $8D, $DE, $06, $8D, $DD, $06, $8D, $DF, $06  ; CPU:$B6EA PRG:36EA  86 37 A9 00 9D 38 03 8D DE 06 8D DD 06 8D DF 06
-    .byte $8D, $E0, $06, $E6, $BA, $60, $32, $23, $E5, $06, $52, $23, $EB, $06, $3A, $23  ; CPU:$B6FA PRG:36FA  8D E0 06 E6 BA 60 32 23 E5 06 52 23 EB 06 3A 23
-    .byte $F1, $06, $A5, $31, $6A, $90, $01, $60, $A5, $71, $C9, $02, $F0, $09, $A5, $B7  ; CPU:$B70A PRG:370A  F1 06 A5 31 6A 90 01 60 A5 71 C9 02 F0 09 A5 B7
-    .byte $C9, $05, $D0, $03, $20, $78, $B7, $A5, $B8, $29, $03, $AA, $BD, $5A, $D4, $85  ; CPU:$B71A PRG:371A  C9 05 D0 03 20 78 B7 A5 B8 29 03 AA BD 5A D4 85
-    .byte $1B, $A6, $B7, $20, $9B, $B7, $20, $8A, $85, $A9, $00, $9D, $00, $03, $20, $E3  ; CPU:$B72A PRG:372A  1B A6 B7 20 9B B7 20 8A 85 A9 00 9D 00 03 20 E3
-    .byte $84, $A5, $71, $C9, $02, $F0, $06, $C6, $B7, $D0, $02, $E6, $B8, $A5, $B5, $D0  ; CPU:$B73A PRG:373A  84 A5 71 C9 02 F0 06 C6 B7 D0 02 E6 B8 A5 B5 D0
-    .byte $02, $E6, $BA, $E6, $BA, $60, $A5, $BE, $AA, $29, $0F, $A8, $BD, $EA, $05, $29  ; CPU:$B74A PRG:374A  02 E6 BA E6 BA 60 A5 BE AA 29 0F A8 BD EA 05 29
-    .byte $40, $D0, $05, $CA, $88, $10, $F5, $60, $8A, $C5, $BE, $F0, $10, $38, $E5, $BE  ; CPU:$B75A PRG:375A  40 D0 05 CA 88 10 F5 60 8A C5 BE F0 10 38 E5 BE
-    .byte $0A, $0A, $0A, $0A, $18, $6D, $99, $03, $8D, $99, $03, $86, $BE, $60, $A0, $05  ; CPU:$B76A PRG:376A  0A 0A 0A 0A 18 6D 99 03 8D 99 03 86 BE 60 A0 05
-    .byte $A9, $23, $85, $1A, $A9, $56, $85, $19, $A9, $A8, $85, $17, $A9, $F2, $85, $18  ; CPU:$B77A PRG:377A  A9 23 85 1A A9 56 85 19 A9 A8 85 17 A9 F2 85 18
-    .byte $20, $8A, $85, $E6, $19, $E6, $19, $88, $D0, $F6, $98, $9D, $00, $03, $86, $36  ; CPU:$B78A PRG:378A  20 8A 85 E6 19 E6 19 88 D0 F6 98 9D 00 03 86 36
-    .byte $60, $A9, $23, $85, $1A, $A9, $56, $85, $19, $BD, $F8, $06, $0A, $A8, $18, $65  ; CPU:$B79A PRG:379A  60 A9 23 85 1A A9 56 85 19 BD F8 06 0A A8 18 65
-    .byte $19, $85, $19, $98, $0A, $A8, $A6, $B8, $E8, $8A, $29, $02, $D0, $05, $98, $18  ; CPU:$B7AA PRG:37AA  19 85 19 98 0A A8 A6 B8 E8 8A 29 02 D0 05 98 18
-    .byte $69, $14, $A8, $A9, $D1, $85, $17, $A9, $F2, $85, $18, $98, $18, $65, $17, $85  ; CPU:$B7BA PRG:37BA  69 14 A8 A9 D1 85 17 A9 F2 85 18 98 18 65 17 85
-    .byte $17, $90, $02, $E6, $18, $60, $A5, $C2, $D0, $11, $A6, $B8, $CA, $30, $0C, $A5  ; CPU:$B7CA PRG:37CA  17 90 02 E6 18 60 A5 C2 D0 11 A6 B8 CA 30 0C A5
-    .byte $27, $A8, $C9, $84, $F0, $06, $98, $C9, $44, $F0, $01, $60, $A5, $BD, $F0, $09  ; CPU:$B7DA PRG:37DA  27 A8 C9 84 F0 06 98 C9 44 F0 01 60 A5 BD F0 09
-    .byte $AD, $59, $03, $F0, $14, $A9, $00, $85, $BD, $A6, $BE, $30, $0C, $BD, $EA, $05  ; CPU:$B7EA PRG:37EA  AD 59 03 F0 14 A9 00 85 BD A6 BE 30 0C BD EA 05
-    .byte $29, $BF, $9D, $EA, $05, $A9, $FF, $85, $BE, $A9, $01, $85, $C2, $A9, $00, $85  ; CPU:$B7FA PRG:37FA  29 BF 9D EA 05 A9 FF 85 BE A9 01 85 C2 A9 00 85
-    .byte $C1, $A9, $06, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $A9, $B0, $8D, $89  ; CPU:$B80A PRG:380A  C1 A9 06 85 11 A9 01 85 12 20 5D 85 A9 B0 8D 89
-    .byte $03, $A9, $98, $8D, $99, $03, $60, $A5, $31, $6A, $90, $01, $60, $A5, $C1, $20  ; CPU:$B81A PRG:381A  03 A9 98 8D 99 03 60 A5 31 6A 90 01 60 A5 C1 20
-    .byte $73, $81, $3A, $B8, $5C, $B8, $F5, $B8, $08, $B1, $59, $B9, $08, $B1, $BA, $B9  ; CPU:$B82A PRG:382A  73 81 3A B8 5C B8 F5 B8 08 B1 59 B9 08 B1 BA B9
-    .byte $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A9, $06, $8D, $DE, $00, $A9  ; CPU:$B83A PRG:383A  A9 03 20 04 80 A9 01 8D DD 00 A9 06 8D DE 00 A9
-    .byte $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $E6, $C1, $A9, $F0, $85, $B3, $60  ; CPU:$B84A PRG:384A  05 20 04 80 A9 00 8D DD 00 E6 C1 A9 F0 85 B3 60
-    .byte $A1, $06, $C6, $B3, $D0, $0A, $20, $99, $B8, $E6, $C1, $A9, $00, $85, $B3, $60  ; CPU:$B85A PRG:385A  A1 06 C6 B3 D0 0A 20 99 B8 E6 C1 A9 00 85 B3 60
-    .byte $A5, $31, $29, $04, $F0, $03, $4C, $99, $B8, $A9, $23, $85, $1A, $A9, $C4, $85  ; CPU:$B86A PRG:386A  A5 31 29 04 F0 03 4C 99 B8 A9 23 85 1A A9 C4 85
-    .byte $19, $A9, $B7, $85, $17, $A9, $F8, $85, $18, $20, $A7, $85, $A5, $19, $18, $69  ; CPU:$B87A PRG:387A  19 A9 B7 85 17 A9 F8 85 18 20 A7 85 A5 19 18 69
-    .byte $08, $85, $19, $C9, $F0, $90, $F2, $A6, $37, $A9, $00, $9D, $38, $03, $60, $AD  ; CPU:$B88A PRG:388A  08 85 19 C9 F0 90 F2 A6 37 A9 00 9D 38 03 60 AD
-    .byte $5A, $B8, $85, $17, $AD, $5B, $B8, $85, $18, $A9, $23, $85, $1A, $A9, $C4, $85  ; CPU:$B89A PRG:389A  5A B8 85 17 AD 5B B8 85 18 A9 23 85 1A A9 C4 85
-    .byte $19, $A9, $04, $85, $21, $A0, $00, $A9, $04, $99, $A1, $06, $A9, $01, $C8, $99  ; CPU:$B8AA PRG:38AA  19 A9 04 85 21 A0 00 A9 04 99 A1 06 A9 01 C8 99
-    .byte $A1, $06, $C8, $A9, $04, $85, $1F, $A6, $21, $BD, $E2, $04, $99, $A1, $06, $C8  ; CPU:$B8BA PRG:38BA  A1 06 C8 A9 04 85 1F A6 21 BD E2 04 99 A1 06 C8
-    .byte $E8, $C6, $1F, $D0, $F4, $20, $A7, $85, $A5, $17, $18, $69, $06, $85, $17, $90  ; CPU:$B8CA PRG:38CA  E8 C6 1F D0 F4 20 A7 85 A5 17 18 69 06 85 17 90
-    .byte $02, $E6, $18, $A5, $21, $18, $69, $08, $85, $21, $18, $69, $C0, $85, $19, $C9  ; CPU:$B8DA PRG:38DA  02 E6 18 A5 21 18 69 08 85 21 18 69 C0 85 19 C9
-    .byte $F0, $90, $C4, $A6, $37, $A9, $00, $9D, $38, $03, $60, $A5, $B3, $AA, $A8, $BD  ; CPU:$B8EA PRG:38EA  F0 90 C4 A6 37 A9 00 9D 38 03 60 A5 B3 AA A8 BD
-    .byte $EA, $05, $30, $04, $99, $EA, $05, $C8, $E8, $BD, $EA, $05, $D0, $F4, $86, $21  ; CPU:$B8FA PRG:38FA  EA 05 30 04 99 EA 05 C8 E8 BD EA 05 D0 F4 86 21
-    .byte $A9, $00, $99, $EA, $05, $C8, $C4, $21, $90, $F8, $A6, $B3, $86, $24, $A6, $24  ; CPU:$B90A PRG:390A  A9 00 99 EA 05 C8 C4 21 90 F8 A6 B3 86 24 A6 24
-    .byte $BD, $EA, $05, $29, $07, $85, $1B, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F  ; CPU:$B91A PRG:391A  BD EA 05 29 07 85 1B 0A AA BD 9E F2 85 17 BD 9F
-    .byte $F2, $85, $18, $A5, $24, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84, $E6, $24  ; CPU:$B92A PRG:392A  F2 85 18 A5 24 20 BF 84 20 8A 85 20 E3 84 E6 24
-    .byte $A6, $24, $E4, $21, $90, $DA, $A6, $36, $A9, $00, $9D, $00, $03, $A5, $B3, $18  ; CPU:$B93A PRG:393A  A6 24 E4 21 90 DA A6 36 A9 00 9D 00 03 A5 B3 18
-    .byte $69, $10, $85, $B3, $C9, $70, $90, $06, $E6, $C1, $A9, $00, $85, $BA, $60, $A9  ; CPU:$B94A PRG:394A  69 10 85 B3 C9 70 90 06 E6 C1 A9 00 85 BA 60 A9
-    .byte $08, $85, $1F, $20, $52, $85, $A5, $3D, $2A, $2A, $29, $7F, $C9, $70, $B0, $30  ; CPU:$B95A PRG:395A  08 85 1F 20 52 85 A5 3D 2A 2A 29 7F C9 70 B0 30
-    .byte $AA, $BD, $EA, $05, $29, $07, $F0, $28, $86, $21, $20, $52, $85, $A5, $3D, $29  ; CPU:$B96A PRG:396A  AA BD EA 05 29 07 F0 28 86 21 20 52 85 A5 3D 29
-    .byte $03, $A8, $C8, $84, $1B, $98, $9D, $EA, $05, $0A, $AA, $BD, $9E, $F2, $85, $17  ; CPU:$B97A PRG:397A  03 A8 C8 84 1B 98 9D EA 05 0A AA BD 9E F2 85 17
-    .byte $BD, $9F, $F2, $85, $18, $A5, $21, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84  ; CPU:$B98A PRG:398A  BD 9F F2 85 18 A5 21 20 BF 84 20 8A 85 20 E3 84
-    .byte $C6, $1F, $D0, $BF, $A6, $36, $A9, $00, $9D, $00, $03, $CE, $99, $03, $CE, $99  ; CPU:$B99A PRG:399A  C6 1F D0 BF A6 36 A9 00 9D 00 03 CE 99 03 CE 99
-    .byte $03, $AD, $99, $03, $C9, $F8, $90, $07, $E6, $C1, $A9, $00, $8D, $59, $03, $60  ; CPU:$B9AA PRG:39AA  03 AD 99 03 C9 F8 90 07 E6 C1 A9 00 8D 59 03 60
-    .byte $A9, $00, $85, $C2, $85, $C1, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00  ; CPU:$B9BA PRG:39BA  A9 00 85 C2 85 C1 A9 03 20 04 80 A9 01 8D DD 00
-    .byte $AD, $73, $00, $8D, $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00  ; CPU:$B9CA PRG:39CA  AD 73 00 8D DE 00 A9 05 20 04 80 A9 00 8D DD 00
-    .byte $C6, $B8, $D0, $0B, $A5, $B7, $D0, $07, $20, $78, $B7, $A9, $00, $F0, $2A, $A5  ; CPU:$B9DA PRG:39DA  C6 B8 D0 0B A5 B7 D0 07 20 78 B7 A9 00 F0 2A A5
-    .byte $B8, $29, $03, $AA, $A5, $B7, $D0, $03, $CA, $C6, $B8, $BD, $5A, $D4, $85, $1B  ; CPU:$B9EA PRG:39EA  B8 29 03 AA A5 B7 D0 03 CA C6 B8 BD 5A D4 85 1B
-    .byte $A9, $05, $85, $21, $A5, $B7, $C5, $21, $B0, $0F, $A6, $21, $20, $9B, $B7, $20  ; CPU:$B9FA PRG:39FA  A9 05 85 21 A5 B7 C5 21 B0 0F A6 21 20 9B B7 20
-    .byte $8A, $85, $20, $E3, $84, $C6, $21, $D0, $EB, $A6, $36, $A9, $00, $9D, $00, $03  ; CPU:$BA0A PRG:3A0A  8A 85 20 E3 84 C6 21 D0 EB A6 36 A9 00 9D 00 03
-    .byte $A5, $B7, $D0, $02, $E6, $B8, $60, $A5, $BA, $20, $73, $81, $30, $BA, $4C, $BA  ; CPU:$BA1A PRG:3A1A  A5 B7 D0 02 E6 B8 60 A5 BA 20 73 81 30 BA 4C BA
-    .byte $5C, $BA, $8C, $BA, $E6, $BA, $A9, $FF, $85, $BE, $A5, $5C, $0A, $AA, $BD, $5C  ; CPU:$BA2A PRG:3A2A  5C BA 8C BA E6 BA A9 FF 85 BE A5 5C 0A AA BD 5C
-    .byte $F4, $85, $3B, $BD, $5D, $F4, $85, $3C, $A6, $5D, $BD, $75, $F8, $85, $CB, $E6  ; CPU:$BA3A PRG:3A3A  F4 85 3B BD 5D F4 85 3C A6 5D BD 75 F8 85 CB E6
-    .byte $BA, $60, $A5, $71, $C9, $02, $F0, $07, $A9, $00, $85, $BA, $85, $B9, $60, $E6  ; CPU:$BA4A PRG:3A4A  BA 60 A5 71 C9 02 F0 07 A9 00 85 BA 85 B9 60 E6
-    .byte $BA, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5D, $0A, $0A, $0A, $18, $65  ; CPU:$BA5A PRG:3A5A  BA 60 20 52 85 29 06 85 20 A5 5D 0A 0A 0A 18 65
-    .byte $20, $AA, $BD, $BD, $F8, $85, $AB, $BD, $BE, $F8, $85, $AC, $A9, $00, $85, $B3  ; CPU:$BA6A PRG:3A6A  20 AA BD BD F8 85 AB BD BE F8 85 AC A9 00 85 B3
-    .byte $85, $B5, $E6, $BA, $A9, $01, $85, $34, $8A, $9D, $F9, $06, $E8, $E0, $05, $90  ; CPU:$BA7A PRG:3A7A  85 B5 E6 BA A9 01 85 34 8A 9D F9 06 E8 E0 05 90
-    .byte $F7, $60, $A5, $31, $6A, $90, $01, $60, $A6, $B3, $A4, $B5, $B1, $AB, $F0, $33  ; CPU:$BA8A PRG:3A8A  F7 60 A5 31 6A 90 01 60 A6 B3 A4 B5 B1 AB F0 33
-    .byte $9D, $EA, $05, $85, $1B, $8A, $20, $BF, $84, $A5, $1B, $10, $0E, $A9, $0D, $85  ; CPU:$BA9A PRG:3A9A  9D EA 05 85 1B 8A 20 BF 84 A5 1B 10 0E A9 0D 85
-    .byte $17, $A9, $F3, $85, $18, $A9, $01, $85, $1B, $D0, $0C, $0A, $AA, $BD, $9E, $F2  ; CPU:$BAAA PRG:3AAA  17 A9 F3 85 18 A9 01 85 1B D0 0C 0A AA BD 9E F2
-    .byte $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3, $84, $E6, $B5, $E6  ; CPU:$BABA PRG:3ABA  85 17 BD 9F F2 85 18 20 8A 85 20 E3 84 E6 B5 E6
-    .byte $B3, $10, $C5, $A6, $36, $A9, $00, $9D, $00, $03, $E6, $B5, $A5, $B3, $29, $F0  ; CPU:$BACA PRG:3ACA  B3 10 C5 A6 36 A9 00 9D 00 03 E6 B5 A5 B3 29 F0
-    .byte $18, $69, $10, $85, $B3, $C9, $70, $90, $02, $E6, $BA, $60, $A5, $31, $6A, $90  ; CPU:$BADA PRG:3ADA  18 69 10 85 B3 C9 70 90 02 E6 BA 60 A5 31 6A 90
-    .byte $01, $60, $A5, $5D, $85, $B7, $A6, $5C, $86, $B8, $BD, $5A, $D4, $85, $1B, $20  ; CPU:$BAEA PRG:3AEA  01 60 A5 5D 85 B7 A6 5C 86 B8 BD 5A D4 85 1B 20
-    .byte $78, $B7, $A6, $5D, $F0, $18, $86, $21, $20, $9B, $B7, $20, $8A, $85, $20, $E3  ; CPU:$BAFA PRG:3AFA  78 B7 A6 5D F0 18 86 21 20 9B B7 20 8A 85 20 E3
-    .byte $84, $C6, $21, $A6, $21, $D0, $F1, $A6, $36, $A9, $00, $9D, $00, $03, $20, $36  ; CPU:$BB0A PRG:3B0A  84 C6 21 A6 21 D0 F1 A6 36 A9 00 9D 00 03 20 36
-    .byte $BB, $A2, $30, $BD, $EA, $05, $09, $40, $9D, $EA, $05, $86, $BE, $E6, $6C, $E6  ; CPU:$BB1A PRG:3B1A  BB A2 30 BD EA 05 09 40 9D EA 05 86 BE E6 6C E6
-    .byte $B7, $A9, $00, $85, $BA, $85, $B5, $A9, $00, $85, $B9, $60, $A5, $5D, $18, $69  ; CPU:$BB2A PRG:3B2A  B7 A9 00 85 BA 85 B5 A9 00 85 B9 60 A5 5D 18 69
-    .byte $07, $85, $11, $A9, $01, $85, $12, $20, $5D, $85, $A9, $B8, $8D, $89, $03, $A9  ; CPU:$BB3A PRG:3B3A  07 85 11 A9 01 85 12 20 5D 85 A9 B8 8D 89 03 A9
-    .byte $1C, $8D, $99, $03, $60, $A9, $00, $AA, $95, $B7, $E8, $E0, $0C, $90, $F9, $A2  ; CPU:$BB4A PRG:3B4A  1C 8D 99 03 60 A9 00 AA 95 B7 E8 E0 0C 90 F9 A2
-    .byte $00, $9D, $EA, $05, $E8, $E0, $70, $90, $F8, $A9, $FF, $85, $BE, $60, $A5, $31  ; CPU:$BB5A PRG:3B5A  00 9D EA 05 E8 E0 70 90 F8 A9 FF 85 BE 60 A5 31
-    .byte $6A, $B0, $01, $60, $29, $1F, $D0, $0B, $AD, $D4, $00, $45, $33, $8D, $D4, $00  ; CPU:$BB6A PRG:3B6A  6A B0 01 60 29 1F D0 0B AD D4 00 45 33 8D D4 00
-    .byte $4C, $7E, $BB, $60, $A9, $00, $0A, $AA, $AD, $D4, $00, $F0, $0D, $BD, $DE, $BB  ; CPU:$BB7A PRG:3B7A  4C 7E BB 60 A9 00 0A AA AD D4 00 F0 0D BD DE BB
-    .byte $85, $19, $BD, $DF, $BB, $85, $1A, $4C, $9E, $BB, $BD, $C2, $BB, $85, $19, $BD  ; CPU:$BB8A PRG:3B8A  85 19 BD DF BB 85 1A 4C 9E BB BD C2 BB 85 19 BD
-    .byte $C3, $BB, $85, $1A, $A0, $00, $A6, $37, $A9, $04, $85, $1F, $B1, $19, $9D, $38  ; CPU:$BB9A PRG:3B9A  C3 BB 85 1A A0 00 A6 37 A9 04 85 1F B1 19 9D 38
-    .byte $03, $E8, $C8, $C6, $1F, $D0, $F5, $A5, $6F, $F0, $05, $A9, $45, $9D, $34, $03  ; CPU:$BBAA PRG:3BAA  03 E8 C8 C6 1F D0 F5 A5 6F F0 05 A9 45 9D 34 03
-    .byte $A9, $00, $9D, $38, $03, $86, $37, $60, $C4, $BB, $24, $23, $C8, $BB, $05, $04  ; CPU:$BBBA PRG:3BBA  A9 00 9D 38 03 86 37 60 C4 BB 24 23 C8 BB 05 04
-    .byte $23, $25, $26, $29, $61, $2B, $93, $2D, $3D, $74, $8D, $8E, $8F, $91, $7B, $C1  ; CPU:$BBCA PRG:3BCA  23 25 26 29 61 2B 93 2D 3D 74 8D 8E 8F 91 7B C1
-    .byte $3E, $2A, $97, $96, $E0, $BB, $24, $23, $E4, $BB, $05, $04, $C9, $CA, $FF, $CC  ; CPU:$BBDA PRG:3BDA  3E 2A 97 96 E0 BB 24 23 E4 BB 05 04 C9 CA FF CC
-    .byte $61, $C8, $C7, $C6, $C5, $74, $FF, $C3, $C4, $7A, $7B, $C1, $9F, $98, $97, $96  ; CPU:$BBEA PRG:3BEA  61 C8 C7 C6 C5 74 FF C3 C4 7A 7B C1 9F 98 97 96
-    .byte $A5, $56, $F0, $1E, $A5, $3F, $29, $01, $F0, $05, $E6, $49, $4C, $11, $BC, $A5  ; CPU:$BBFA PRG:3BFA  A5 56 F0 1E A5 3F 29 01 F0 05 E6 49 4C 11 BC A5
-    .byte $3F, $29, $02, $F0, $0A, $C6, $49, $C6, $56, $D0, $04, $A9, $00, $85, $3F, $4C  ; CPU:$BC0A PRG:3C0A  3F 29 02 F0 0A C6 49 C6 56 D0 04 A9 00 85 3F 4C
-    .byte $26, $BD, $AD, $E5, $05, $F0, $17, $AE, $E2, $05, $BD, $05, $BE, $C5, $4D, $D0  ; CPU:$BC1A PRG:3C1A  26 BD AD E5 05 F0 17 AE E2 05 BD 05 BE C5 4D D0
-    .byte $0D, $BD, $06, $BE, $85, $26, $85, $2A, $EE, $E2, $05, $EE, $E2, $05, $A5, $26  ; CPU:$BC2A PRG:3C2A  0D BD 06 BE 85 26 85 2A EE E2 05 EE E2 05 A5 26
-    .byte $29, $08, $D0, $06, $A9, $00, $85, $CE, $F0, $16, $E6, $CE, $A5, $CE, $C9, $08  ; CPU:$BC3A PRG:3C3A  29 08 D0 06 A9 00 85 CE F0 16 E6 CE A5 CE C9 08
-    .byte $90, $0A, $A9, $00, $85, $CE, $EE, $A4, $05, $EE, $A4, $05, $A9, $00, $85, $CF  ; CPU:$BC4A PRG:3C4A  90 0A A9 00 85 CE EE A4 05 EE A4 05 A9 00 85 CF
-    .byte $A5, $CF, $D0, $0A, $A5, $35, $85, $CF, $C6, $40, $C6, $4A, $C6, $4A, $C6, $CF  ; CPU:$BC5A PRG:3C5A  A5 CF D0 0A A5 35 85 CF C6 40 C6 4A C6 4A C6 CF
-    .byte $A5, $40, $D0, $16, $A9, $08, $85, $40, $A5, $4D, $85, $20, $C6, $20, $A5, $48  ; CPU:$BC6A PRG:3C6A  A5 40 D0 16 A9 08 85 40 A5 4D 85 20 C6 20 A5 48
-    .byte $85, $23, $20, $70, $BD, $F0, $03, $E6, $60, $60, $A5, $26, $29, $03, $D0, $03  ; CPU:$BC7A PRG:3C7A  85 23 20 70 BD F0 03 E6 60 60 A5 26 29 03 D0 03
-    .byte $4C, $26, $BD, $C9, $03, $D0, $07, $A9, $00, $85, $3F, $4C, $26, $BD, $85, $3F  ; CPU:$BC8A PRG:3C8A  4C 26 BD C9 03 D0 07 A9 00 85 3F 4C 26 BD 85 3F
-    .byte $A5, $26, $29, $01, $F0, $09, $A5, $4D, $18, $69, $10, $29, $F0, $85, $20, $A5  ; CPU:$BC9A PRG:3C9A  A5 26 29 01 F0 09 A5 4D 18 69 10 29 F0 85 20 A5
-    .byte $26, $29, $02, $F0, $09, $A5, $4D, $38, $E9, $10, $29, $F0, $85, $20, $A5, $4D  ; CPU:$BCAA PRG:3CAA  26 29 02 F0 09 A5 4D 38 E9 10 29 F0 85 20 A5 4D
-    .byte $29, $0F, $05, $20, $85, $20, $A5, $40, $C9, $05, $90, $1B, $A5, $4D, $85, $1C  ; CPU:$BCBA PRG:3CBA  29 0F 05 20 85 20 A5 40 C9 05 90 1B A5 4D 85 1C
-    .byte $29, $0F, $C9, $0E, $90, $06, $A5, $4D, $49, $10, $85, $1C, $A5, $1C, $29, $10  ; CPU:$BCCA PRG:3CCA  29 0F C9 0E 90 06 A5 4D 49 10 85 1C A5 1C 29 10
-    .byte $F0, $1D, $E6, $20, $4C, $F9, $BC, $A5, $4D, $85, $1C, $29, $0F, $C9, $0E, $90  ; CPU:$BCDA PRG:3CDA  F0 1D E6 20 4C F9 BC A5 4D 85 1C 29 0F C9 0E 90
-    .byte $06, $A5, $4D, $49, $10, $85, $1C, $A5, $1C, $29, $10, $D0, $02, $C6, $20, $A5  ; CPU:$BCEA PRG:3CEA  06 A5 4D 49 10 85 1C A5 1C 29 10 D0 02 C6 20 A5
-    .byte $48, $85, $23, $20, $70, $BD, $F0, $09, $A9, $00, $85, $3F, $85, $56, $4C, $26  ; CPU:$BCFA PRG:3CFA  48 85 23 20 70 BD F0 09 A9 00 85 3F 85 56 4C 26
-    .byte $BD, $A9, $00, $85, $CF, $A9, $10, $85, $56, $A5, $40, $C9, $05, $90, $08, $38  ; CPU:$BD0A PRG:3D0A  BD A9 00 85 CF A9 10 85 56 A5 40 C9 05 90 08 38
-    .byte $E9, $04, $85, $40, $4C, $26, $BD, $18, $69, $04, $85, $40, $A5, $48, $85, $23  ; CPU:$BD1A PRG:3D1A  E9 04 85 40 4C 26 BD 18 69 04 85 40 A5 48 85 23
-    .byte $29, $01, $F0, $21, $A5, $2A, $29, $80, $F0, $02, $C6, $23, $A5, $2A, $29, $40  ; CPU:$BD2A PRG:3D2A  29 01 F0 21 A5 2A 29 80 F0 02 C6 23 A5 2A 29 40
-    .byte $F0, $02, $E6, $23, $A5, $23, $29, $03, $85, $23, $A5, $4D, $85, $20, $20, $70  ; CPU:$BD3A PRG:3D3A  F0 02 E6 23 A5 23 29 03 85 23 A5 4D 85 20 20 70
-    .byte $BD, $20, $1C, $CD, $60, $A5, $2A, $29, $80, $F0, $02, $E6, $23, $A5, $2A, $29  ; CPU:$BD4A PRG:3D4A  BD 20 1C CD 60 A5 2A 29 80 F0 02 E6 23 A5 2A 29
-    .byte $40, $F0, $02, $C6, $23, $A5, $23, $29, $03, $85, $23, $A5, $4D, $85, $20, $20  ; CPU:$BD5A PRG:3D5A  40 F0 02 C6 23 A5 23 29 03 85 23 A5 4D 85 20 20
-    .byte $70, $BD, $20, $1C, $CD, $60, $A5, $20, $29, $F0, $85, $21, $A5, $20, $29, $0F  ; CPU:$BD6A PRG:3D6A  70 BD 20 1C CD 60 A5 20 29 F0 85 21 A5 20 29 0F
-    .byte $85, $22, $A9, $04, $85, $1F, $A2, $00, $A5, $23, $0A, $0A, $85, $25, $A4, $25  ; CPU:$BD7A PRG:3D7A  85 22 A9 04 85 1F A2 00 A5 23 0A 0A 85 25 A4 25
-    .byte $B1, $46, $85, $1E, $A5, $21, $85, $1C, $A5, $22, $C9, $0E, $90, $07, $A5, $21  ; CPU:$BD8A PRG:3D8A  B1 46 85 1E A5 21 85 1C A5 22 C9 0E 90 07 A5 21
-    .byte $18, $69, $10, $85, $1C, $A5, $1C, $29, $10, $F0, $08, $A5, $1E, $29, $10, $F0  ; CPU:$BD9A PRG:3D9A  18 69 10 85 1C A5 1C 29 10 F0 08 A5 1E 29 10 F0
-    .byte $02, $E6, $1E, $A5, $1E, $29, $F0, $18, $65, $21, $85, $1D, $C9, $70, $D0, $03  ; CPU:$BDAA PRG:3DAA  02 E6 1E A5 1E 29 F0 18 65 21 85 1D C9 70 D0 03
-    .byte $A9, $FF, $60, $A5, $1E, $29, $0F, $18, $65, $22, $85, $1C, $29, $0F, $C9, $0E  ; CPU:$BDBA PRG:3DBA  A9 FF 60 A5 1E 29 0F 18 65 22 85 1C 29 0F C9 0E
-    .byte $90, $03, $A9, $FF, $60, $A5, $1C, $18, $65, $1D, $C9, $70, $B0, $F4, $A8, $B9  ; CPU:$BDCA PRG:3DCA  90 03 A9 FF 60 A5 1C 18 65 1D C9 70 B0 F4 A8 B9
-    .byte $00, $04, $29, $7F, $F0, $01, $60, $98, $95, $D0, $E8, $E6, $25, $C6, $1F, $D0  ; CPU:$BDDA PRG:3DDA  00 04 29 7F F0 01 60 98 95 D0 E8 E6 25 C6 1F D0
-    .byte $9D, $A9, $04, $85, $1F, $A2, $00, $B5, $D0, $95, $4E, $E8, $C6, $1F, $D0, $F7  ; CPU:$BDEA PRG:3DEA  9D A9 04 85 1F A2 00 B5 D0 95 4E E8 C6 1F D0 F7
-    .byte $A5, $20, $85, $4D, $A5, $23, $85, $48, $A9, $00, $60, $27, $02, $15, $02, $03  ; CPU:$BDFA PRG:3DFA  A5 20 85 4D A5 23 85 48 A9 00 60 27 02 15 02 03
-    .byte $02, $28, $80, $24, $02, $26, $02, $13, $01, $29, $40, $27, $80, $25, $02, $13  ; CPU:$BE0A PRG:3E0A  02 28 80 24 02 26 02 13 01 29 40 27 80 25 02 13
-    .byte $40, $12, $02, $01, $80, $25, $01, $33, $01, $41, $40, $29, $40, $28, $01, $33  ; CPU:$BE1A PRG:3E1A  40 12 02 01 80 25 01 33 01 41 40 29 40 28 01 33
-    .byte $01, $29, $40, $26, $80, $24, $80, $29, $80, $25, $01, $32, $02, $26, $40, $21  ; CPU:$BE2A PRG:3E2A  01 29 40 26 80 24 80 29 80 25 01 32 02 26 40 21
-    .byte $02, $27, $80, $24, $02, $26, $01, $34, $01, $43, $80, $41, $40, $28, $01, $34  ; CPU:$BE3A PRG:3E3A  02 27 80 24 02 26 01 34 01 43 80 41 40 28 01 34
-    .byte $01, $28, $01, $29, $02, $15, $01, $23, $80, $26, $01, $32, $01, $27, $02, $12  ; CPU:$BE4A PRG:3E4A  01 28 01 29 02 15 01 23 80 26 01 32 01 27 02 12
-    .byte $02, $27, $01, $35, $01, $44, $80, $43, $40, $28, $40, $26, $80, $25, $02, $13  ; CPU:$BE5A PRG:3E5A  02 27 01 35 01 44 80 43 40 28 40 26 80 25 02 13
-    .byte $02, $25, $02, $27, $01, $34, $01, $28, $40, $25, $40, $24, $02, $12, $02, $26  ; CPU:$BE6A PRG:3E6A  02 25 02 27 01 34 01 28 40 25 40 24 02 12 02 26
-    .byte $80, $28, $80, $25, $02, $29, $40, $27, $80, $23, $02, $29, $01, $36, $01, $45  ; CPU:$BE7A PRG:3E7A  80 28 80 25 02 29 40 27 80 23 02 29 01 36 01 45
-    .byte $01, $29, $40, $28, $01, $36, $01, $44, $80, $28, $80, $26, $01, $34, $01, $43  ; CPU:$BE8A PRG:3E8A  01 29 40 28 01 36 01 44 80 28 80 26 01 34 01 43
-    .byte $40, $26, $40, $25, $01, $33, $80, $28, $40, $26, $02, $14, $02, $29, $40, $27  ; CPU:$BE9A PRG:3E9A  40 26 40 25 01 33 80 28 40 26 02 14 02 29 40 27
-    .byte $80, $28, $01, $35, $01, $29, $01, $36, $01, $45, $80, $29, $40, $27, $80, $29  ; CPU:$BEAA PRG:3EAA  80 28 01 35 01 29 01 36 01 45 80 29 40 27 80 29
-    .byte $02, $14, $01, $29, $02, $15, $02, $04, $02, $28, $01, $35, $01, $27, $80, $25  ; CPU:$BEBA PRG:3EBA  02 14 01 29 02 15 02 04 02 28 01 35 01 27 80 25
-    .byte $02, $27, $40, $24, $02, $28, $40, $25, $01, $28, $40, $25, $80, $22, $02, $29  ; CPU:$BECA PRG:3ECA  02 27 40 24 02 28 40 25 01 28 40 25 80 22 02 29
-    .byte $80, $27, $01, $35, $01, $45, $40, $44, $01, $27, $A2, $00, $86, $21, $B4, $4E  ; CPU:$BEDA PRG:3EDA  80 27 01 35 01 45 40 44 01 27 A2 00 86 21 B4 4E
-    .byte $B5, $52, $85, $1B, $99, $00, $04, $E6, $21, $0A, $AA, $BD, $9E, $F2, $85, $17  ; CPU:$BEEA PRG:3EEA  B5 52 85 1B 99 00 04 E6 21 0A AA BD 9E F2 85 17
-    .byte $BD, $9F, $F2, $85, $18, $98, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84, $A6  ; CPU:$BEFA PRG:3EFA  BD 9F F2 85 18 98 20 BF 84 20 8A 85 20 E3 84 A6
-    .byte $21, $E0, $04, $90, $D9, $A6, $36, $A9, $00, $9D, $00, $03, $60, $A5, $61, $C9  ; CPU:$BF0A PRG:3F0A  21 E0 04 90 D9 A6 36 A9 00 9D 00 03 60 A5 61 C9
-    .byte $00, $D0, $36, $A2, $00, $86, $58, $86, $21, $B5, $4E, $85, $20, $C6, $20, $A5  ; CPU:$BF1A PRG:3F1A  00 D0 36 A2 00 86 58 86 21 B5 4E 85 20 C6 20 A5
-    .byte $20, $29, $0F, $C9, $0E, $B0, $18, $A4, $20, $B9, $00, $04, $D0, $11, $A9, $80  ; CPU:$BF2A PRG:3F2A  20 29 0F C9 0E B0 18 A4 20 B9 00 04 D0 11 A9 80
-    .byte $99, $00, $04, $98, $A6, $58, $9D, $68, $05, $E6, $58, $C6, $20, $10, $E0, $A6  ; CPU:$BF3A PRG:3F3A  99 00 04 98 A6 58 9D 68 05 E6 58 C6 20 10 E0 A6
-    .byte $21, $E8, $E0, $04, $90, $D1, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A9  ; CPU:$BF4A PRG:3F4A  21 E8 E0 04 90 D1 E6 61 60 A5 31 6A B0 01 60 A9
-    .byte $0D, $85, $17, $A9, $F3, $85, $18, $A9, $0C, $85, $1F, $A0, $00, $C6, $58, $10  ; CPU:$BF5A PRG:3F5A  0D 85 17 A9 F3 85 18 A9 0C 85 1F A0 00 C6 58 10
-    .byte $18, $E6, $60, $A5, $64, $D0, $02, $E6, $60, $A9, $00, $A4, $36, $85, $61, $99  ; CPU:$BF6A PRG:3F6A  18 E6 60 A5 64 D0 02 E6 60 A9 00 A4 36 85 61 99
-    .byte $00, $03, $85, $3F, $A9, $03, $85, $56, $60, $A6, $58, $BD, $68, $05, $20, $BF  ; CPU:$BF7A PRG:3F7A  00 03 85 3F A9 03 85 56 60 A6 58 BD 68 05 20 BF
-    .byte $84, $20, $8A, $85, $C6, $1F, $10, $D5, $A4, $36, $A9, $00, $99, $00, $03, $60  ; CPU:$BF8A PRG:3F8A  84 20 8A 85 C6 1F 10 D5 A4 36 A9 00 99 00 03 60
-    .byte $A5, $61, $20, $73, $81, $AF, $BF, $BA, $BF, $D6, $BF, $0F, $C0, $70, $C0, $79  ; CPU:$BF9A PRG:3F9A  A5 61 20 73 81 AF BF BA BF D6 BF 0F C0 70 C0 79
-    .byte $C0, $9E, $C0, $B9, $C0, $A9, $0A, $85, $6A, $A9, $00, $85, $6C, $E6, $61, $60  ; CPU:$BFAA PRG:3FAA  C0 9E C0 B9 C0 A9 0A 85 6A A9 00 85 6C E6 61 60
-    .byte $A9, $00, $8D, $58, $03, $8D, $5A, $03, $8D, $5B, $03, $8D, $5C, $03, $8D, $5D  ; CPU:$BFBA PRG:3FBA  A9 00 8D 58 03 8D 5A 03 8D 5B 03 8D 5C 03 8D 5D
-    .byte $03, $A9, $0A, $85, $58, $E6, $61, $A9, $07, $20, $04, $80, $A5, $31, $6A, $B0  ; CPU:$BFCA PRG:3FCA  03 A9 0A 85 58 E6 61 A9 07 20 04 80 A5 31 6A B0
-    .byte $01, $60, $A9, $A8, $85, $17, $A9, $F2, $85, $18, $A5, $58, $85, $56, $20, $BF  ; CPU:$BFDA PRG:3FDA  01 60 A9 A8 85 17 A9 F2 85 18 A5 58 85 56 20 BF
-    .byte $84, $20, $8A, $85, $A5, $56, $18, $69, $10, $C9, $70, $90, $EF, $A9, $00, $9D  ; CPU:$BFEA PRG:3FEA  84 20 8A 85 A5 56 18 69 10 C9 70 90 EF A9 00 9D
-    .byte $00, $03, $C6, $58, $10, $0E  ; CPU:$BFFA PRG:3FFA  00 03 C6 58 10 0E
-
-
-    .byte $E6, $61, $A0, $00, $A9, $00, $99, $00, $04, $C8, $C0, $70, $90, $F8, $60, $A5  ; CPU:$8000 PRG:4000  E6 61 A0 00 A9 00 99 00 04 C8 C0 70 90 F8 60 A5
-    .byte $31, $6A, $B0, $01, $60, $A6, $37, $A0, $00, $B9, $46, $C0, $9D, $38, $03, $E8  ; CPU:$8010 PRG:4010  31 6A B0 01 60 A6 37 A0 00 B9 46 C0 9D 38 03 E8
-    .byte $C8, $C0, $08, $90, $F4, $A9, $00, $9D, $38, $03, $A5, $6F, $F0, $07, $A4, $37  ; CPU:$8020 PRG:4020  C8 C0 08 90 F4 A9 00 9D 38 03 A5 6F F0 07 A4 37
-    .byte $A9, $A7, $99, $38, $03, $86, $37, $A9, $01, $85, $95, $A9, $00, $85, $5F, $85  ; CPU:$8030 PRG:4030  A9 A7 99 38 03 86 37 A9 01 85 95 A9 00 85 5F 85
-    .byte $5E, $85, $91, $E6, $61, $60, $A9, $21, $11, $F8, $D9, $23, $1B, $F8, $A9, $00  ; CPU:$8040 PRG:4040  5E 85 91 E6 61 60 A9 21 11 F8 D9 23 1B F8 A9 00
-    .byte $85, $61, $A9, $0A, $85, $58, $60, $20, $DC, $BF, $A5, $61, $F0, $02, $E6, $6C  ; CPU:$8050 PRG:4050  85 61 A9 0A 85 58 60 20 DC BF A5 61 F0 02 E6 6C
-    .byte $60, $A9, $00, $AA, $95, $60, $E8, $E0, $0A, $90, $F9, $A9, $FF, $85, $65, $60  ; CPU:$8060 PRG:4060  60 A9 00 AA 95 60 E8 E0 0A 90 F9 A9 FF 85 65 60
-    .byte $A5, $26, $C9, $C0, $D0, $02, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A2  ; CPU:$8070 PRG:4070  A5 26 C9 C0 D0 02 E6 61 60 A5 31 6A B0 01 60 A2
-    .byte $00, $BD, $96, $C0, $9D, $38, $03, $E8, $E0, $08, $90, $F5, $A9, $00, $9D, $38  ; CPU:$8080 PRG:4080  00 BD 96 C0 9D 38 03 E8 E0 08 90 F5 A9 00 9D 38
-    .byte $03, $85, $95, $E6, $61, $60, $A7, $21, $25, $F8, $D9, $23, $20, $F8, $A5, $31  ; CPU:$8090 PRG:4090  03 85 95 E6 61 60 A7 21 25 F8 D9 23 20 F8 A5 31
-    .byte $6A, $B0, $01, $60, $A0, $00, $A6, $37, $B9, $E0, $C0, $9D, $38, $03, $E8, $C8  ; CPU:$80A0 PRG:40A0  6A B0 01 60 A0 00 A6 37 B9 E0 C0 9D 38 03 E8 C8
-    .byte $C0, $0D, $90, $F4, $86, $37, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A0  ; CPU:$80B0 PRG:40B0  C0 0D 90 F4 86 37 E6 61 60 A5 31 6A B0 01 60 A0
-    .byte $00, $A6, $37, $B9, $ED, $C0, $9D, $38, $03, $E8, $C8, $C0, $05, $90, $F4, $86  ; CPU:$80C0 PRG:40C0  00 A6 37 B9 ED C0 9D 38 03 E8 C8 C0 05 90 F4 86
-    .byte $37, $20, $61, $C0, $20, $03, $97, $A9, $09, $85, $60, $A9, $00, $85, $61, $60  ; CPU:$80D0 PRG:40D0  37 20 61 C0 20 03 97 A9 09 85 60 A9 00 85 61 60
-    .byte $22, $23, $A1, $FB, $42, $23, $A1, $FB, $2A, $23, $A7, $FB, $00, $46, $23, $AF  ; CPU:$80E0 PRG:40E0  22 23 A1 FB 42 23 A1 FB 2A 23 A7 FB 00 46 23 AF
-    .byte $FB, $00, $A5, $5E, $D0, $18, $20, $52, $85, $A5, $3D, $29, $03, $A8, $A2, $00  ; CPU:$80F0 PRG:40F0  FB 00 A5 5E D0 18 20 52 85 A5 3D 29 03 A8 A2 00
-    .byte $B9, $37, $C1, $9D, $DA, $05, $C8, $E8, $E0, $05, $90, $F4, $86, $5E, $A6, $5E  ; CPU:$8100 PRG:4100  B9 37 C1 9D DA 05 C8 E8 E0 05 90 F4 86 5E A6 5E
-    .byte $BD, $D9, $05, $18, $69, $07, $85, $11, $A9, $00, $85, $12, $20, $5D, $85, $20  ; CPU:$8110 PRG:4110  BD D9 05 18 69 07 85 11 A9 00 85 12 20 5D 85 20
-    .byte $52, $85, $A5, $3D, $29, $03, $85, $64, $E6, $64, $A6, $65, $30, $08, $BD, $00  ; CPU:$8120 PRG:4120  52 85 A5 3D 29 03 85 64 E6 64 A6 65 30 08 BD 00
-    .byte $04, $29, $BF, $9D, $00, $04, $60, $02, $00, $04, $03, $01, $02, $00, $04, $03  ; CPU:$8130 PRG:4130  04 29 BF 9D 00 04 60 02 00 04 03 01 02 00 04 03
-    .byte $A9, $02, $85, $64, $A9, $05, $85, $11, $A9, $02, $85, $12, $20, $5D, $85, $A9  ; CPU:$8140 PRG:4140  A9 02 85 64 A9 05 85 11 A9 02 85 12 20 5D 85 A9
-    .byte $00, $85, $63, $A6, $65, $30, $17, $BD, $00, $04, $29, $BF, $9D, $00, $04, $A9  ; CPU:$8150 PRG:4150  00 85 63 A6 65 30 17 BD 00 04 29 BF 9D 00 04 A9
-    .byte $FF, $85, $65, $A9, $00, $85, $11, $A9, $00, $85, $12, $20, $5D, $85, $60, $A5  ; CPU:$8160 PRG:4160  FF 85 65 A9 00 85 11 A9 00 85 12 20 5D 85 60 A5
-    .byte $31, $6A, $B0, $01, $60, $A5, $61, $D0, $11, $E6, $61, $A9, $01, $8D, $E3, $00  ; CPU:$8170 PRG:4170  31 6A B0 01 60 A5 61 D0 11 E6 61 A9 01 8D E3 00
-    .byte $A9, $05, $8D, $E2, $00, $A9, $04, $20, $04, $80, $C9, $01, $D0, $4A, $A9, $05  ; CPU:$8180 PRG:4180  A9 05 8D E2 00 A9 04 20 04 80 C9 01 D0 4A A9 05
-    .byte $85, $11, $A9, $03, $85, $12, $20, $5D, $85, $A5, $3F, $0A, $AA, $BD, $87, $F8  ; CPU:$8190 PRG:4190  85 11 A9 03 85 12 20 5D 85 A5 3F 0A AA BD 87 F8
-    .byte $18, $6D, $8A, $03, $8D, $8B, $03, $BD, $88, $F8, $18, $6D, $9A, $03, $8D, $9B  ; CPU:$81A0 PRG:41A0  18 6D 8A 03 8D 8B 03 BD 88 F8 18 6D 9A 03 8D 9B
-    .byte $03, $A5, $31, $6A, $29, $03, $85, $20, $AD, $AA, $03, $29, $FC, $05, $20, $8D  ; CPU:$81B0 PRG:41B0  03 A5 31 6A 29 03 85 20 AD AA 03 29 FC 05 20 8D
-    .byte $AA, $03, $8D, $AB, $03, $E6, $3F, $A5, $3F, $C9, $18, $D0, $0A, $A9, $00, $85  ; CPU:$81C0 PRG:41C0  AA 03 8D AB 03 E6 3F A5 3F C9 18 D0 0A A9 00 85
-    .byte $3F, $C6, $56, $D0, $02, $E6, $61, $60, $C9, $02, $D0, $6D, $A5, $4E, $8D, $22  ; CPU:$81D0 PRG:41D0  3F C6 56 D0 02 E6 61 60 C9 02 D0 6D A5 4E 8D 22
-    .byte $05, $AA, $20, $52, $85, $A5, $3D, $29, $03, $85, $64, $E6, $64, $A5, $64, $9D  ; CPU:$81E0 PRG:41E0  05 AA 20 52 85 A5 3D 29 03 85 64 E6 64 A5 64 9D
-    .byte $00, $04, $A0, $01, $84, $25, $AD, $22, $05, $29, $10, $F0, $04, $A9, $07, $85  ; CPU:$81F0 PRG:41F0  00 04 A0 01 84 25 AD 22 05 29 10 F0 04 A9 07 85
-    .byte $25, $A9, $01, $85, $21, $A9, $06, $85, $1F, $A4, $25, $B9, $7A, $F8, $E6, $25  ; CPU:$8200 PRG:4200  25 A9 01 85 21 A9 06 85 1F A4 25 B9 7A F8 E6 25
-    .byte $18, $6D, $22, $05, $AA, $29, $0F, $C9, $0D, $B0, $20, $8A, $29, $F0, $C9, $70  ; CPU:$8210 PRG:4210  18 6D 22 05 AA 29 0F C9 0D B0 20 8A 29 F0 C9 70
-    .byte $B0, $19, $BD, $00, $04, $29, $07, $D0, $05, $9D, $00, $04, $F0, $05, $A5, $64  ; CPU:$8220 PRG:4220  B0 19 BD 00 04 29 07 D0 05 9D 00 04 F0 05 A5 64
-    .byte $9D, $00, $04, $8A, $A6, $21, $9D, $22, $05, $E6, $21, $C6, $1F, $D0, $CA, $A6  ; CPU:$8230 PRG:4230  9D 00 04 8A A6 21 9D 22 05 E6 21 C6 1F D0 CA A6
-    .byte $21, $A9, $FF, $9D, $22, $05, $E6, $61, $60, $C9, $03, $D0, $47, $A0, $00, $84  ; CPU:$8240 PRG:4240  21 A9 FF 9D 22 05 E6 61 60 C9 03 D0 47 A0 00 84
-    .byte $22, $A4, $22, $B9, $22, $05, $30, $22, $85, $21, $20, $BF, $84, $A6, $21, $BD  ; CPU:$8250 PRG:4250  22 A4 22 B9 22 05 30 22 85 21 20 BF 84 A6 21 BD
-    .byte $00, $04, $85, $1B, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18  ; CPU:$8260 PRG:4260  00 04 85 1B 0A AA BD 9E F2 85 17 BD 9F F2 85 18
-    .byte $20, $8A, $85, $20, $E3, $84, $E6, $22, $10, $D7, $A6, $36, $A9, $00, $9D, $00  ; CPU:$8270 PRG:4270  20 8A 85 20 E3 84 E6 22 10 D7 A6 36 A9 00 9D 00
-    .byte $03, $A9, $00, $85, $11, $A9, $02, $85, $12, $20, $5D, $85, $E6, $12, $20, $5D  ; CPU:$8280 PRG:4280  03 A9 00 85 11 A9 02 85 12 20 5D 85 E6 12 20 5D
-    .byte $85, $E6, $61, $60, $E6, $61, $A5, $61, $C9, $0F, $90, $0A, $A9, $00, $85, $61  ; CPU:$8290 PRG:4290  85 E6 61 60 E6 61 A5 61 C9 0F 90 0A A9 00 85 61
-    .byte $85, $66, $85, $64, $E6, $60, $60, $A5, $6C, $20, $73, $81, $BF, $C2, $C8, $C3  ; CPU:$82A0 PRG:42A0  85 66 85 64 E6 60 60 A5 6C 20 73 81 BF C2 C8 C3
-    .byte $56, $C4, $69, $C4, $9D, $C4, $E7, $C4, $05, $C5, $24, $C7, $7E, $C7, $01, $A9  ; CPU:$82B0 PRG:42B0  56 C4 69 C4 9D C4 E7 C4 05 C5 24 C7 7E C7 01 A9
-    .byte $00, $8D, $00, $20, $8D, $01, $20, $A2, $00, $BD, $BE, $C2, $9D, $BE, $C2, $85  ; CPU:$82C0 PRG:42C0  00 8D 00 20 8D 01 20 A2 00 BD BE C2 9D BE C2 85
-    .byte $2C, $A9, $F1, $85, $12, $A9, $E6, $85, $11, $20, $C4, $85, $A5, $5A, $0A, $AA  ; CPU:$82D0 PRG:42D0  2C A9 F1 85 12 A9 E6 85 11 20 C4 85 A5 5A 0A AA
-    .byte $BD, $5C, $F4, $85, $39, $BD, $5D, $F4, $85, $3A, $A5, $5C, $0A, $AA, $BD, $5C  ; CPU:$82E0 PRG:42E0  BD 5C F4 85 39 BD 5D F4 85 3A A5 5C 0A AA BD 5C
-    .byte $F4, $85, $3B, $BD, $5D, $F4, $85, $3C, $A5, $6F, $D0, $42, $A0, $07, $A9, $22  ; CPU:$82F0 PRG:42F0  F4 85 3B BD 5D F4 85 3C A5 6F D0 42 A0 07 A9 22
-    .byte $85, $1A, $A9, $76, $85, $19, $A2, $06, $86, $21, $AD, $02, $20, $A5, $1A, $8D  ; CPU:$8300 PRG:4300  85 1A A9 76 85 19 A2 06 86 21 AD 02 20 A5 1A 8D
-    .byte $06, $20, $A5, $19, $8D, $06, $20, $A9, $FF, $8D, $07, $20, $C6, $21, $D0, $F9  ; CPU:$8310 PRG:4310  06 20 A5 19 8D 06 20 A9 FF 8D 07 20 C6 21 D0 F9
-    .byte $A5, $19, $18, $69, $20, $85, $19, $90, $02, $E6, $1A, $88, $D0, $DA, $A9, $3A  ; CPU:$8320 PRG:4320  A5 19 18 69 20 85 19 90 02 E6 1A 88 D0 DA A9 3A
-    .byte $85, $19, $A9, $21, $85, $1A, $20, $D2, $C5, $A9, $00, $9D, $38, $03, $A5, $6F  ; CPU:$8330 PRG:4330  85 19 A9 21 85 1A 20 D2 C5 A9 00 9D 38 03 A5 6F
-    .byte $F0, $3B, $AD, $02, $20, $A5, $01, $09, $04, $8D, $00, $20, $A9, $24, $8D, $06  ; CPU:$8340 PRG:4340  F0 3B AD 02 20 A5 01 09 04 8D 00 20 A9 24 8D 06
-    .byte $20, $A9, $00, $8D, $06, $20, $A8, $B9, $97, $C6, $8D, $07, $20, $C8, $C0, $1E  ; CPU:$8350 PRG:4350  20 A9 00 8D 06 20 A8 B9 97 C6 8D 07 20 C8 C0 1E
-    .byte $90, $F5, $A2, $C0, $A0, $55, $AD, $02, $20, $A9, $27, $8D, $06, $20, $8E, $06  ; CPU:$8360 PRG:4360  90 F5 A2 C0 A0 55 AD 02 20 A9 27 8D 06 20 8E 06
-    .byte $20, $8C, $07, $20, $8A, $18, $69, $08, $AA, $C9, $F8, $D0, $E9, $A9, $02, $20  ; CPU:$8370 PRG:4370  20 8C 07 20 8A 18 69 08 AA C9 F8 D0 E9 A9 02 20
-    .byte $28, $92, $20, $59, $CD, $E6, $6C, $AD, $E5, $05, $D0, $19, $A9, $03, $20, $04  ; CPU:$8380 PRG:4380  28 92 20 59 CD E6 6C AD E5 05 D0 19 A9 03 20 04
-    .byte $80, $A9, $01, $8D, $DD, $00, $A5, $73, $8D, $DE, $00, $A9, $05, $20, $04, $80  ; CPU:$8390 PRG:4390  80 A9 01 8D DD 00 A5 73 8D DE 00 A9 05 20 04 80
-    .byte $A9, $00, $8D, $DD, $00, $A9, $88, $85, $01, $A5, $02, $09, $18, $85, $02, $A5  ; CPU:$83A0 PRG:43A0  A9 00 8D DD 00 A9 88 85 01 A5 02 09 18 85 02 A5
-    .byte $6F, $F0, $04, $A9, $0C, $85, $03, $A5, $71, $C9, $01, $F0, $06, $AD, $E5, $05  ; CPU:$83B0 PRG:43B0  6F F0 04 A9 0C 85 03 A5 71 C9 01 F0 06 AD E5 05
-    .byte $D0, $01, $60, $A9, $06, $85, $6C, $60, $A9, $87, $85, $19, $A9, $21, $85, $1A  ; CPU:$83C0 PRG:43C0  D0 01 60 A9 06 85 6C 60 A9 87 85 19 A9 21 85 1A
-    .byte $AD, $D0, $C6, $85, $17, $AD, $D1, $C6, $85, $18, $A5, $6F, $F0, $04, $C6, $19  ; CPU:$83D0 PRG:43D0  AD D0 C6 85 17 AD D1 C6 85 18 A5 6F F0 04 C6 19
-    .byte $C6, $19, $20, $A7, $85, $A9, $D9, $85, $19, $A9, $23, $85, $1A, $AD, $D2, $C6  ; CPU:$83E0 PRG:43E0  C6 19 20 A7 85 A9 D9 85 19 A9 23 85 1A AD D2 C6
-    .byte $85, $17, $AD, $D3, $C6, $85, $18, $20, $A7, $85, $A9, $8C, $85, $19, $A9, $21  ; CPU:$83F0 PRG:43F0  85 17 AD D3 C6 85 18 20 A7 85 A9 8C 85 19 A9 21
-    .byte $85, $1A, $A5, $6F, $F0, $04, $C6, $19, $C6, $19, $20, $D2, $C5, $A5, $6F, $F0  ; CPU:$8400 PRG:4400  85 1A A5 6F F0 04 C6 19 C6 19 20 D2 C5 A5 6F F0
-    .byte $03, $20, $20, $C4, $A9, $00, $9D, $38, $03, $E6, $6C, $A9, $3C, $85, $56, $60  ; CPU:$8410 PRG:4410  03 20 20 C4 A9 00 9D 38 03 E6 6C A9 3C 85 56 60
-    .byte $A9, $95, $85, $19, $A9, $21, $85, $1A, $AD, $D0, $C6, $85, $17, $AD, $D1, $C6  ; CPU:$8420 PRG:4420  A9 95 85 19 A9 21 85 1A AD D0 C6 85 17 AD D1 C6
-    .byte $85, $18, $20, $A7, $85, $A9, $DD, $85, $19, $A9, $23, $85, $1A, $AD, $D2, $C6  ; CPU:$8430 PRG:4430  85 18 20 A7 85 A9 DD 85 19 A9 23 85 1A AD D2 C6
-    .byte $85, $17, $AD, $D3, $C6, $85, $18, $20, $A7, $85, $A9, $9A, $85, $19, $A9, $21  ; CPU:$8440 PRG:4440  85 17 AD D3 C6 85 18 20 A7 85 A9 9A 85 19 A9 21
-    .byte $85, $1A, $20, $FE, $C5, $60, $A5, $2A, $29, $10, $D0, $04, $C6, $56, $D0, $08  ; CPU:$8450 PRG:4450  85 1A 20 FE C5 60 A5 2A 29 10 D0 04 C6 56 D0 08
-    .byte $A9, $06, $85, $6C, $A9, $00, $85, $56, $60, $A5, $2A, $F0, $15, $A6, $58, $30  ; CPU:$8460 PRG:4460  A9 06 85 6C A9 00 85 56 60 A5 2A F0 15 A6 58 30
-    .byte $12, $BD, $99, $C4, $C5, $2A, $D0, $0B, $E6, $58, $A5, $58, $C9, $04, $90, $02  ; CPU:$8470 PRG:4470  12 BD 99 C4 C5 2A D0 0B E6 58 A5 58 C9 04 90 02
-    .byte $E6, $6C, $60, $A9, $FF, $85, $58, $A5, $2A, $29, $10, $F0, $F5, $A9, $00, $85  ; CPU:$8480 PRG:4480  E6 6C 60 A9 FF 85 58 A5 2A 29 10 F0 F5 A9 00 85
-    .byte $3E, $20, $1B, $98, $A9, $06, $85, $6C, $60, $08, $01, $04, $02, $A0, $05, $84  ; CPU:$8490 PRG:4490  3E 20 1B 98 A9 06 85 6C 60 08 01 04 02 A0 05 84
-    .byte $20, $A5, $2A, $29, $10, $F0, $03, $E6, $6C, $60, $A5, $2A, $29, $80, $F0, $0C  ; CPU:$84A0 PRG:44A0  20 A5 2A 29 10 F0 03 E6 6C 60 A5 2A 29 80 F0 0C
-    .byte $E6, $5B, $A5, $5B, $C5, $20, $90, $04, $A9, $00, $85, $5B, $A5, $2A, $29, $40  ; CPU:$84B0 PRG:44B0  E6 5B A5 5B C5 20 90 04 A9 00 85 5B A5 2A 29 40
-    .byte $F0, $0C, $E6, $5A, $A5, $5A, $C9, $04, $90, $04, $A9, $00, $85, $5A, $A9, $8C  ; CPU:$84C0 PRG:44C0  F0 0C E6 5A A5 5A C9 04 90 04 A9 00 85 5A A9 8C
-    .byte $85, $19, $A9, $21, $85, $1A, $A5, $6F, $F0, $04, $C6, $19, $C6, $19, $20, $D2  ; CPU:$84D0 PRG:44D0  85 19 A9 21 85 1A A5 6F F0 04 C6 19 C6 19 20 D2
-    .byte $C5, $A9, $00, $9D, $38, $03, $60, $A5, $2A, $29, $10, $F0, $17, $A9, $00, $85  ; CPU:$84E0 PRG:44E0  C5 A9 00 9D 38 03 60 A5 2A 29 10 F0 17 A9 00 85
-    .byte $3E, $20, $88, $81, $A5, $5A, $85, $5C, $A5, $5B, $85, $5D, $A9, $09, $85, $6A  ; CPU:$84F0 PRG:44F0  3E 20 88 81 A5 5A 85 5C A5 5B 85 5D A9 09 85 6A
-    .byte $A9, $05, $85, $6C, $60, $A5, $71, $C9, $01, $F0, $50, $A9, $08, $A4, $95, $F0  ; CPU:$8500 PRG:4500  A9 05 85 6C 60 A5 71 C9 01 F0 50 A9 08 A4 95 F0
-    .byte $02, $A9, $04, $85, $1F, $A2, $00, $A0, $00, $B9, $BA, $C5, $9D, $38, $03, $E8  ; CPU:$8510 PRG:4510  02 A9 04 85 1F A2 00 A0 00 B9 BA C5 9D 38 03 E8
-    .byte $C8, $C6, $1F, $D0, $F4, $86, $37, $A5, $6F, $F0, $06, $CE, $38, $03, $CE, $38  ; CPU:$8520 PRG:4520  C8 C6 1F D0 F4 86 37 A5 6F F0 06 CE 38 03 CE 38
-    .byte $03, $A5, $6F, $D0, $0F, $A9, $3A, $85, $19, $A9, $21, $85, $1A, $20, $D2, $C5  ; CPU:$8530 PRG:4530  03 A5 6F D0 0F A9 3A 85 19 A9 21 85 1A 20 D2 C5
-    .byte $A9, $01, $85, $96, $A5, $96, $D0, $0E, $A0, $08, $B9, $BA, $C5, $9D, $38, $03  ; CPU:$8540 PRG:4540  A9 01 85 96 A5 96 D0 0E A0 08 B9 BA C5 9D 38 03
-    .byte $E8, $C8, $C0, $10, $90, $F4, $A9, $00, $9D, $38, $03, $A5, $5A, $0A, $AA, $BD  ; CPU:$8550 PRG:4550  E8 C8 C0 10 90 F4 A9 00 9D 38 03 A5 5A 0A AA BD
-    .byte $5C, $F4, $85, $39, $BD, $5D, $F4, $85, $3A, $A5, $5C, $0A, $AA, $BD, $5C, $F4  ; CPU:$8560 PRG:4560  5C F4 85 39 BD 5D F4 85 3A A5 5C 0A AA BD 5C F4
-    .byte $85, $3B, $BD, $5D, $F4, $85, $3C, $A6, $5B, $BD, $75, $F8, $85, $35, $A6, $5D  ; CPU:$8570 PRG:4570  85 3B BD 5D F4 85 3C A6 5B BD 75 F8 85 35 A6 5D
-    .byte $BD, $75, $F8, $85, $CB, $A9, $00, $85, $6C, $A5, $71, $C9, $02, $F0, $10, $A9  ; CPU:$8580 PRG:4580  BD 75 F8 85 CB A9 00 85 6C A5 71 C9 02 F0 10 A9
-    .byte $00, $85, $6A, $AD, $E5, $05, $F0, $06, $20, $B7, $C6, $20, $4F, $BB, $60, $E6  ; CPU:$8590 PRG:4590  00 85 6A AD E5 05 F0 06 20 B7 C6 20 4F BB 60 E6
-    .byte $6A, $60, $A6, $37, $A0, $00, $B9, $CA, $C5, $9D, $38, $03, $E8, $C8, $C0, $08  ; CPU:$85A0 PRG:45A0  6A 60 A6 37 A0 00 B9 CA C5 9D 38 03 E8 C8 C0 08
-    .byte $90, $F4, $A9, $00, $9D, $38, $03, $86, $37, $60, $67, $21, $25, $F8, $D9, $23  ; CPU:$85B0 PRG:45B0  90 F4 A9 00 9D 38 03 86 37 60 67 21 25 F8 D9 23
-    .byte $20, $F8, $75, $21, $25, $F8, $DD, $23, $20, $F8, $55, $21, $25, $F8, $DD, $23  ; CPU:$85C0 PRG:45C0  20 F8 75 21 25 F8 DD 23 20 F8 55 21 25 F8 DD 23
-    .byte $20, $F8, $A9, $03, $8D, $C6, $05, $A9, $01, $8D, $C7, $05, $A4, $5A, $B9, $D7  ; CPU:$85D0 PRG:45D0  20 F8 A9 03 8D C6 05 A9 01 8D C7 05 A4 5A B9 D7
-    .byte $F1, $8D, $C8, $05, $A9, $D4, $8D, $C9, $05, $A4, $5B, $B9, $D7, $F1, $8D, $CA  ; CPU:$85E0 PRG:45E0  F1 8D C8 05 A9 D4 8D C9 05 A4 5B B9 D7 F1 8D CA
-    .byte $05, $AD, $D4, $C6, $85, $17, $AD, $D5, $C6, $85, $18, $4C, $A7, $85, $A9, $03  ; CPU:$85F0 PRG:45F0  05 AD D4 C6 85 17 AD D5 C6 85 18 4C A7 85 A9 03
-    .byte $8D, $CB, $05, $A9, $01, $8D, $CC, $05, $A4, $5C, $B9, $D7, $F1, $8D, $CD, $05  ; CPU:$8600 PRG:4600  8D CB 05 A9 01 8D CC 05 A4 5C B9 D7 F1 8D CD 05
-    .byte $A9, $D4, $8D, $CE, $05, $A4, $5D, $B9, $D7, $F1, $8D, $CF, $05, $AD, $D6, $C6  ; CPU:$8610 PRG:4610  A9 D4 8D CE 05 A4 5D B9 D7 F1 8D CF 05 AD D6 C6
-    .byte $85, $17, $AD, $D7, $C6, $85, $18, $4C, $A7, $85, $A9, $00, $8D, $00, $20, $A5  ; CPU:$8620 PRG:4620  85 17 AD D7 C6 85 18 4C A7 85 A9 00 8D 00 20 A5
-    .byte $02, $29, $E7, $8D, $01, $20, $85, $02, $20, $88, $81, $A6, $6F, $BD, $B5, $C6  ; CPU:$8630 PRG:4630  02 29 E7 8D 01 20 85 02 20 88 81 A6 6F BD B5 C6
-    .byte $85, $2E, $A9, $00, $20, $04, $80, $A5, $6F, $0A, $AA, $BD, $A7, $F6, $85, $11  ; CPU:$8640 PRG:4640  85 2E A9 00 20 04 80 A5 6F 0A AA BD A7 F6 85 11
-    .byte $BD, $A8, $F6, $85, $12, $20, $8C, $84, $A6, $72, $A5, $6F, $D0, $13, $AD, $02  ; CPU:$8650 PRG:4650  BD A8 F6 85 12 20 8C 84 A6 72 A5 6F D0 13 AD 02
-    .byte $20, $A9, $21, $8D, $06, $20, $A9, $3C, $8D, $06, $20, $BD, $D6, $F1, $8D, $07  ; CPU:$8660 PRG:4660  20 A9 21 8D 06 20 A9 3C 8D 06 20 BD D6 F1 8D 07
-    .byte $20, $BD, $75, $F8, $85, $35, $A6, $5D, $BD, $75, $F8, $85, $CB, $A9, $00, $85  ; CPU:$8670 PRG:4670  20 BD 75 F8 85 35 A6 5D BD 75 F8 85 CB A9 00 85
-    .byte $4B, $A9, $04, $85, $4C, $A5, $71, $F0, $0B, $A2, $00, $8A, $9D, $DA, $05, $E8  ; CPU:$8680 PRG:4680  4B A9 04 85 4C A5 71 F0 0B A2 00 8A 9D DA 05 E8
-    .byte $E0, $05, $90, $F7, $E6, $6A, $60, $FF, $24, $21, $22, $21, $22, $21, $22, $21  ; CPU:$8690 PRG:4690  E0 05 90 F7 E6 6A 60 FF 24 21 22 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21  ; CPU:$86A0 PRG:46A0  22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $10, $11, $A9, $00, $AA, $95, $5E, $E8, $E0, $0C, $90  ; CPU:$86B0 PRG:46B0  22 21 22 21 22 10 11 A9 00 AA 95 5E E8 E0 0C 90
-    .byte $F9, $A2, $00, $9D, $00, $04, $E8, $E0, $70, $90, $F8, $A9, $FF, $85, $65, $60  ; CPU:$86C0 PRG:46C0  F9 A2 00 9D 00 04 E8 E0 70 90 F8 A9 FF 85 65 60
-    .byte $37, $F8, $1B, $F8, $C6, $05, $CB, $05, $A5, $6C, $20, $73, $81, $E9, $C6, $24  ; CPU:$86D0 PRG:46D0  37 F8 1B F8 C6 05 CB 05 A5 6C 20 73 81 E9 C6 24
-    .byte $C7, $7E, $C7, $3B, $B2, $7C, $B2, $D6, $B2, $A5, $95, $F0, $05, $A9, $03, $85  ; CPU:$86E0 PRG:46E0  C7 7E C7 3B B2 7C B2 D6 B2 A5 95 F0 05 A9 03 85
-    .byte $6C, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5B, $0A, $0A, $0A, $18, $65  ; CPU:$86F0 PRG:46F0  6C 60 20 52 85 29 06 85 20 A5 5B 0A 0A 0A 18 65
-    .byte $20, $AA, $BD, $BD, $F8, $85, $4E, $BD, $BE, $F8, $85, $4F, $A9, $00, $85, $56  ; CPU:$8700 PRG:4700  20 AA BD BD F8 85 4E BD BE F8 85 4F A9 00 85 56
-    .byte $85, $58, $E6, $6C, $A9, $00, $85, $34, $A2, $00, $8A, $9D, $DA, $05, $E8, $E0  ; CPU:$8710 PRG:4710  85 58 E6 6C A9 00 85 34 A2 00 8A 9D DA 05 E8 E0
-    .byte $05, $90, $F7, $60, $A5, $31, $6A, $B0, $01, $60, $A6, $56, $A4, $58, $B1, $4E  ; CPU:$8720 PRG:4720  05 90 F7 60 A5 31 6A B0 01 60 A6 56 A4 58 B1 4E
-    .byte $F0, $33, $9D, $00, $04, $85, $1B, $8A, $20, $BF, $84, $A5, $1B, $10, $0E, $A9  ; CPU:$8730 PRG:4730  F0 33 9D 00 04 85 1B 8A 20 BF 84 A5 1B 10 0E A9
-    .byte $0D, $85, $17, $A9, $F3, $85, $18, $A9, $01, $85, $1B, $D0, $0C, $0A, $AA, $BD  ; CPU:$8740 PRG:4740  0D 85 17 A9 F3 85 18 A9 01 85 1B D0 0C 0A AA BD
-    .byte $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $20, $8A, $85, $20, $E3, $84, $E6  ; CPU:$8750 PRG:4750  9E F2 85 17 BD 9F F2 85 18 20 8A 85 20 E3 84 E6
-    .byte $58, $E6, $56, $10, $C5, $A6, $36, $A9, $00, $9D, $00, $03, $E6, $58, $A5, $56  ; CPU:$8760 PRG:4760  58 E6 56 10 C5 A6 36 A9 00 9D 00 03 E6 58 A5 56
-    .byte $29, $F0, $18, $69, $10, $85, $56, $C9, $70, $90, $02, $E6, $6C, $60, $A5, $31  ; CPU:$8770 PRG:4770  29 F0 18 69 10 85 56 C9 70 90 02 E6 6C 60 A5 31
-    .byte $6A, $B0, $01, $60, $A5, $5B, $85, $5E, $A6, $5A, $86, $5F, $BD, $5A, $D4, $85  ; CPU:$8780 PRG:4780  6A B0 01 60 A5 5B 85 5E A6 5A 86 5F BD 5A D4 85
-    .byte $1B, $20, $86, $D4, $A6, $5B, $F0, $18, $86, $21, $20, $AF, $D4, $20, $8A, $85  ; CPU:$8790 PRG:4790  1B 20 86 D4 A6 5B F0 18 86 21 20 AF D4 20 8A 85
-    .byte $20, $E3, $84, $C6, $21, $A6, $21, $D0, $F1, $A6, $36, $A9, $00, $9D, $00, $03  ; CPU:$87A0 PRG:47A0  20 E3 84 C6 21 A6 21 D0 F1 A6 36 A9 00 9D 00 03
-    .byte $A5, $5B, $18, $69, $07, $85, $11, $A9, $00, $85, $12, $20, $5D, $85, $A6, $6F  ; CPU:$87B0 PRG:47B0  A5 5B 18 69 07 85 11 A9 00 85 12 20 5D 85 A6 6F
-    .byte $BD, $E8, $C7, $8D, $88, $03, $A9, $1C, $8D, $98, $03, $A2, $30, $BD, $00, $04  ; CPU:$87C0 PRG:47C0  BD E8 C7 8D 88 03 A9 1C 8D 98 03 A2 30 BD 00 04
-    .byte $09, $40, $9D, $00, $04, $86, $65, $E6, $6C, $E6, $5E, $A5, $6F, $D0, $08, $A9  ; CPU:$87D0 PRG:47D0  09 40 9D 00 04 86 65 E6 6C E6 5E A5 6F D0 08 A9
-    .byte $00, $85, $6C, $85, $6A, $85, $58, $60, $54, $38, $A5, $69, $D0, $11, $A6, $5F  ; CPU:$87E0 PRG:47E0  00 85 6C 85 6A 85 58 60 54 38 A5 69 D0 11 A6 5F
-    .byte $CA, $30, $0C, $A5, $26, $A8, $C9, $84, $F0, $06, $98, $C9, $44, $F0, $01, $60  ; CPU:$87F0 PRG:47F0  CA 30 0C A5 26 A8 C9 84 F0 06 98 C9 44 F0 01 60
-    .byte $A5, $64, $F0, $09, $AD, $58, $03, $F0, $14, $A9, $00, $85, $64, $A6, $65, $30  ; CPU:$8800 PRG:4800  A5 64 F0 09 AD 58 03 F0 14 A9 00 85 64 A6 65 30
-    .byte $0C, $BD, $00, $04, $29, $BF, $9D, $00, $04, $A9, $FF, $85, $65, $A9, $01, $85  ; CPU:$8810 PRG:4810  0C BD 00 04 29 BF 9D 00 04 A9 FF 85 65 A9 01 85
-    .byte $69, $A9, $00, $85, $68, $A9, $06, $85, $11, $A9, $00, $85, $12, $20, $5D, $85  ; CPU:$8820 PRG:4820  69 A9 00 85 68 A9 06 85 11 A9 00 85 12 20 5D 85
-    .byte $A5, $6F, $F0, $05, $A9, $28, $8D, $88, $03, $60, $A5, $31, $6A, $B0, $01, $60  ; CPU:$8830 PRG:4830  A5 6F F0 05 A9 28 8D 88 03 60 A5 31 6A B0 01 60
-    .byte $A5, $68, $20, $73, $81, $53, $C8, $73, $C8, $16, $C9, $EE, $D4, $7A, $C9, $EE  ; CPU:$8840 PRG:4840  A5 68 20 73 81 53 C8 73 C8 16 C9 EE D4 7A C9 EE
-    .byte $D4, $DB, $C9, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A9, $06, $8D  ; CPU:$8850 PRG:4850  D4 DB C9 A9 03 20 04 80 A9 01 8D DD 00 A9 06 8D
-    .byte $DE, $00, $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $E6, $68, $A9, $F0  ; CPU:$8860 PRG:4860  DE 00 A9 05 20 04 80 A9 00 8D DD 00 E6 68 A9 F0
-    .byte $85, $56, $60, $C6, $56, $D0, $0A, $20, $B6, $C8, $E6, $68, $A9, $00, $85, $56  ; CPU:$8870 PRG:4870  85 56 60 C6 56 D0 0A 20 B6 C8 E6 68 A9 00 85 56
-    .byte $60, $A5, $31, $29, $04, $F0, $03, $4C, $B6, $C8, $A9, $23, $85, $1A, $A9, $C0  ; CPU:$8880 PRG:4880  60 A5 31 29 04 F0 03 4C B6 C8 A9 23 85 1A A9 C0
-    .byte $85, $19, $A5, $6F, $D0, $02, $E6, $19, $A9, $B7, $85, $17, $A9, $F8, $85, $18  ; CPU:$8890 PRG:4890  85 19 A5 6F D0 02 E6 19 A9 B7 85 17 A9 F8 85 18
-    .byte $20, $A7, $85, $A5, $19, $18, $69, $08, $85, $19, $C9, $F0, $90, $F2, $A6, $37  ; CPU:$88A0 PRG:48A0  20 A7 85 A5 19 18 69 08 85 19 C9 F0 90 F2 A6 37
-    .byte $A9, $00, $9D, $38, $03, $60, $A9, $68, $85, $17, $A9, $05, $85, $18, $A9, $23  ; CPU:$88B0 PRG:48B0  A9 00 9D 38 03 60 A9 68 85 17 A9 05 85 18 A9 23
-    .byte $85, $1A, $A9, $C0, $85, $19, $A0, $00, $84, $21, $A5, $6F, $D0, $04, $E6, $19  ; CPU:$88C0 PRG:48C0  85 1A A9 C0 85 19 A0 00 84 21 A5 6F D0 04 E6 19
-    .byte $E6, $21, $A9, $04, $99, $68, $05, $A9, $01, $C8, $99, $68, $05, $C8, $A9, $04  ; CPU:$88D0 PRG:48D0  E6 21 A9 04 99 68 05 A9 01 C8 99 68 05 C8 A9 04
-    .byte $85, $1F, $A6, $21, $BD, $E2, $04, $99, $68, $05, $C8, $E8, $C6, $1F, $D0, $F4  ; CPU:$88E0 PRG:48E0  85 1F A6 21 BD E2 04 99 68 05 C8 E8 C6 1F D0 F4
-    .byte $20, $A7, $85, $A5, $17, $18, $69, $06, $85, $17, $90, $02, $E6, $18, $A5, $21  ; CPU:$88F0 PRG:48F0  20 A7 85 A5 17 18 69 06 85 17 90 02 E6 18 A5 21
-    .byte $18, $69, $08, $85, $21, $18, $69, $C0, $85, $19, $C9, $F0, $90, $C4, $A6, $37  ; CPU:$8900 PRG:4900  18 69 08 85 21 18 69 C0 85 19 C9 F0 90 C4 A6 37
-    .byte $A9, $00, $9D, $38, $03, $60, $A5, $56, $AA, $A8, $BD, $00, $04, $30, $04, $99  ; CPU:$8910 PRG:4910  A9 00 9D 38 03 60 A5 56 AA A8 BD 00 04 30 04 99
-    .byte $00, $04, $C8, $E8, $BD, $00, $04, $D0, $F4, $86, $21, $A9, $00, $99, $00, $04  ; CPU:$8920 PRG:4920  00 04 C8 E8 BD 00 04 D0 F4 86 21 A9 00 99 00 04
-    .byte $C8, $C4, $21, $90, $F8, $A6, $56, $86, $24, $A6, $24, $BD, $00, $04, $29, $07  ; CPU:$8930 PRG:4930  C8 C4 21 90 F8 A6 56 86 24 A6 24 BD 00 04 29 07
-    .byte $85, $1B, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18, $A5, $24  ; CPU:$8940 PRG:4940  85 1B 0A AA BD 9E F2 85 17 BD 9F F2 85 18 A5 24
-    .byte $20, $BF, $84, $20, $8A, $85, $20, $E3, $84, $E6, $24, $A6, $24, $E4, $21, $90  ; CPU:$8950 PRG:4950  20 BF 84 20 8A 85 20 E3 84 E6 24 A6 24 E4 21 90
-    .byte $DA, $A6, $36, $A9, $00, $9D, $00, $03, $A5, $56, $18, $69, $10, $85, $56, $C9  ; CPU:$8960 PRG:4960  DA A6 36 A9 00 9D 00 03 A5 56 18 69 10 85 56 C9
-    .byte $70, $90, $06, $E6, $68, $A9, $00, $85, $61, $60, $A9, $08, $85, $1F, $20, $52  ; CPU:$8970 PRG:4970  70 90 06 E6 68 A9 00 85 61 60 A9 08 85 1F 20 52
-    .byte $85, $A5, $3D, $2A, $2A, $29, $7F, $C9, $70, $B0, $30, $AA, $BD, $00, $04, $29  ; CPU:$8980 PRG:4980  85 A5 3D 2A 2A 29 7F C9 70 B0 30 AA BD 00 04 29
-    .byte $07, $F0, $28, $86, $21, $20, $52, $85, $A5, $3D, $29, $03, $A8, $C8, $84, $1B  ; CPU:$8990 PRG:4990  07 F0 28 86 21 20 52 85 A5 3D 29 03 A8 C8 84 1B
-    .byte $98, $9D, $00, $04, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2, $85, $18  ; CPU:$89A0 PRG:49A0  98 9D 00 04 0A AA BD 9E F2 85 17 BD 9F F2 85 18
-    .byte $A5, $21, $20, $BF, $84, $20, $8A, $85, $20, $E3, $84, $C6, $1F, $D0, $BF, $A6  ; CPU:$89B0 PRG:49B0  A5 21 20 BF 84 20 8A 85 20 E3 84 C6 1F D0 BF A6
-    .byte $36, $A9, $00, $9D, $00, $03, $CE, $98, $03, $CE, $98, $03, $AD, $98, $03, $C9  ; CPU:$89C0 PRG:49C0  36 A9 00 9D 00 03 CE 98 03 CE 98 03 AD 98 03 C9
-    .byte $F8, $90, $07, $E6, $68, $A9, $00, $8D, $58, $03, $60, $A9, $00, $85, $69, $85  ; CPU:$89D0 PRG:49D0  F8 90 07 E6 68 A9 00 8D 58 03 60 A9 00 85 69 85
-    .byte $68, $A9, $03, $20, $04, $80, $A9, $01, $8D, $DD, $00, $A5, $73, $8D, $DE, $00  ; CPU:$89E0 PRG:49E0  68 A9 03 20 04 80 A9 01 8D DD 00 A5 73 8D DE 00
-    .byte $A9, $05, $20, $04, $80, $A9, $00, $8D, $DD, $00, $C6, $5F, $D0, $0B, $A5, $5E  ; CPU:$89F0 PRG:49F0  A9 05 20 04 80 A9 00 8D DD 00 C6 5F D0 0B A5 5E
-    .byte $D0, $07, $20, $86, $D4, $A9, $00, $F0, $2A, $A5, $5F, $29, $03, $AA, $A5, $5E  ; CPU:$8A00 PRG:4A00  D0 07 20 86 D4 A9 00 F0 2A A5 5F 29 03 AA A5 5E
-    .byte $D0, $03, $CA, $C6, $5F, $BD, $5A, $D4, $85, $1B, $A9, $05, $85, $21, $A5, $5E  ; CPU:$8A10 PRG:4A10  D0 03 CA C6 5F BD 5A D4 85 1B A9 05 85 21 A5 5E
-    .byte $C5, $21, $B0, $0F, $A6, $21, $20, $AF, $D4, $20, $8A, $85, $20, $E3, $84, $C6  ; CPU:$8A20 PRG:4A20  C5 21 B0 0F A6 21 20 AF D4 20 8A 85 20 E3 84 C6
-    .byte $21, $D0, $EB, $A6, $36, $A9, $00, $9D, $00, $03, $A5, $5E, $D0, $02, $E6, $5F  ; CPU:$8A30 PRG:4A30  21 D0 EB A6 36 A9 00 9D 00 03 A5 5E D0 02 E6 5F
-    .byte $60, $A5, $61, $20, $73, $81, $50, $CA, $76, $CA, $86, $CA, $AD, $CA, $07, $CB  ; CPU:$8A40 PRG:4A40  60 A5 61 20 73 81 50 CA 76 CA 86 CA AD CA 07 CB
-    .byte $A9, $FF, $85, $65, $A5, $6F, $D0, $03, $20, $57, $CB, $A5, $5A, $0A, $AA, $BD  ; CPU:$8A50 PRG:4A50  A9 FF 85 65 A5 6F D0 03 20 57 CB A5 5A 0A AA BD
-    .byte $5C, $F4, $85, $39, $BD, $5D, $F4, $85, $3A, $A6, $5B, $BD, $75, $F8, $85, $35  ; CPU:$8A60 PRG:4A60  5C F4 85 39 BD 5D F4 85 3A A6 5B BD 75 F8 85 35
-    .byte $20, $59, $CD, $E6, $61, $60, $A5, $71, $C9, $02, $F0, $07, $A9, $00, $85, $61  ; CPU:$8A70 PRG:4A70  20 59 CD E6 61 60 A5 71 C9 02 F0 07 A9 00 85 61
-    .byte $85, $60, $60, $E6, $61, $60, $20, $52, $85, $29, $06, $85, $20, $A5, $5B, $0A  ; CPU:$8A80 PRG:4A80  85 60 60 E6 61 60 20 52 85 29 06 85 20 A5 5B 0A
-    .byte $0A, $0A, $18, $65, $20, $AA, $BD, $BD, $F8, $85, $4E, $BD, $BE, $F8, $85, $4F  ; CPU:$8A90 PRG:4A90  0A 0A 18 65 20 AA BD BD F8 85 4E BD BE F8 85 4F
-    .byte $A9, $00, $85, $56, $85, $58, $E6, $61, $A9, $00, $85, $34, $60, $A5, $31, $6A  ; CPU:$8AA0 PRG:4AA0  A9 00 85 56 85 58 E6 61 A9 00 85 34 60 A5 31 6A
-    .byte $B0, $01, $60, $A6, $56, $A4, $58, $B1, $4E, $F0, $33, $9D, $00, $04, $85, $1B  ; CPU:$8AB0 PRG:4AB0  B0 01 60 A6 56 A4 58 B1 4E F0 33 9D 00 04 85 1B
-    .byte $8A, $20, $BF, $84, $A5, $1B, $10, $0E, $A9, $0D, $85, $17, $A9, $F3, $85, $18  ; CPU:$8AC0 PRG:4AC0  8A 20 BF 84 A5 1B 10 0E A9 0D 85 17 A9 F3 85 18
-    .byte $A9, $01, $85, $1B, $D0, $0C, $0A, $AA, $BD, $9E, $F2, $85, $17, $BD, $9F, $F2  ; CPU:$8AD0 PRG:4AD0  A9 01 85 1B D0 0C 0A AA BD 9E F2 85 17 BD 9F F2
-    .byte $85, $18, $20, $8A, $85, $20, $E3, $84, $E6, $58, $E6, $56, $10, $C5, $A6, $36  ; CPU:$8AE0 PRG:4AE0  85 18 20 8A 85 20 E3 84 E6 58 E6 56 10 C5 A6 36
-    .byte $A9, $00, $9D, $00, $03, $E6, $58, $A5, $56, $29, $F0, $18, $69, $10, $85, $56  ; CPU:$8AF0 PRG:4AF0  A9 00 9D 00 03 E6 58 A5 56 29 F0 18 69 10 85 56
-    .byte $C9, $70, $90, $02, $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A5, $5B, $85  ; CPU:$8B00 PRG:4B00  C9 70 90 02 E6 61 60 A5 31 6A B0 01 60 A5 5B 85
-    .byte $5E, $A6, $5A, $86, $5F, $BD, $5A, $D4, $85, $1B, $20, $86, $D4, $A6, $5B, $F0  ; CPU:$8B10 PRG:4B10  5E A6 5A 86 5F BD 5A D4 85 1B 20 86 D4 A6 5B F0
-    .byte $18, $86, $21, $20, $AF, $D4, $20, $8A, $85, $20, $E3, $84, $C6, $21, $A6, $21  ; CPU:$8B20 PRG:4B20  18 86 21 20 AF D4 20 8A 85 20 E3 84 C6 21 A6 21
-    .byte $D0, $F1, $A6, $36, $A9, $00, $9D, $00, $03, $20, $A8, $CB, $A2, $30, $BD, $00  ; CPU:$8B30 PRG:4B30  D0 F1 A6 36 A9 00 9D 00 03 20 A8 CB A2 30 BD 00
-    .byte $04, $09, $40, $9D, $00, $04, $86, $65, $E6, $6C, $E6, $5E, $A9, $00, $85, $61  ; CPU:$8B40 PRG:4B40  04 09 40 9D 00 04 86 65 E6 6C E6 5E A9 00 85 61
-    .byte $85, $58, $A9, $00, $85, $60, $60, $A9, $20, $85, $1F, $A0, $00, $A6, $36, $B9  ; CPU:$8B50 PRG:4B50  85 58 A9 00 85 60 60 A9 20 85 1F A0 00 A6 36 B9
-    .byte $85, $CB, $9D, $00, $03, $E8, $C8, $C6, $1F, $D0, $F4, $A9, $00, $9D, $00, $03  ; CPU:$8B60 PRG:4B60  85 CB 9D 00 03 E8 C8 C6 1F D0 F4 A9 00 9D 00 03
-    .byte $86, $36, $A0, $00, $A6, $38, $B9, $A5, $CB, $9D, $B8, $03, $E8, $C8, $C0, $03  ; CPU:$8B70 PRG:4B70  86 36 A0 00 A6 38 B9 A5 CB 9D B8 03 E8 C8 C0 03
-    .byte $90, $F4, $86, $38, $60, $7A, $22, $A8, $F2, $98, $22, $A8, $F2, $B6, $22, $A8  ; CPU:$8B80 PRG:4B80  90 F4 86 38 60 7A 22 A8 F2 98 22 A8 F2 B6 22 A8
-    .byte $F2, $BA, $22, $A8, $F2, $F6, $22, $A8, $F2, $D8, $22, $A8, $F2, $FA, $22, $A8  ; CPU:$8B90 PRG:4B90  F2 BA 22 A8 F2 F6 22 A8 F2 D8 22 A8 F2 FA 22 A8
-    .byte $F2, $18, $23, $A8, $F2, $E6, $55, $00, $A5, $5B, $18, $69, $07, $85, $11, $A9  ; CPU:$8BA0 PRG:4BA0  F2 18 23 A8 F2 E6 55 00 A5 5B 18 69 07 85 11 A9
-    .byte $00, $85, $12, $20, $5D, $85, $A6, $6F, $BD, $E8, $C7, $8D, $88, $03, $A9, $1C  ; CPU:$8BB0 PRG:4BB0  00 85 12 20 5D 85 A6 6F BD E8 C7 8D 88 03 A9 1C
-    .byte $8D, $98, $03, $60, $A5, $60, $8D, $E9, $05, $A5, $69, $F0, $0C, $A5, $60, $D0  ; CPU:$8BC0 PRG:4BC0  8D 98 03 60 A5 60 8D E9 05 A5 69 F0 0C A5 60 D0
-    .byte $08, $20, $3A, $C8, $A9, $00, $85, $60, $60, $A5, $71, $C9, $02, $F0, $09, $A5  ; CPU:$8BD0 PRG:4BD0  08 20 3A C8 A9 00 85 60 60 A5 71 C9 02 F0 09 A5
-    .byte $60, $C9, $07, $B0, $03, $20, $EA, $C7, $A5, $65, $30, $0C, $A5, $71, $C9, $02  ; CPU:$8BE0 PRG:4BE0  60 C9 07 B0 03 20 EA C7 A5 65 30 0C A5 71 C9 02
-    .byte $F0, $06, $A5, $31, $D0, $02, $E6, $67, $A5, $60, $20, $73, $81, $11, $CC, $56  ; CPU:$8BF0 PRG:4BF0  F0 06 A5 31 D0 02 E6 67 A5 60 20 73 81 11 CC 56
-    .byte $CC, $CF, $CC, $17, $BF, $6F, $C1, $18, $CD, $32, $CF, $A8, $CF, $9A, $BF, $41  ; CPU:$8C00 PRG:4C00  CC CF CC 17 BF 6F C1 18 CD 32 CF A8 CF 9A BF 41
-    .byte $CA, $A9, $01, $85, $33, $A2, $00, $A5, $6F, $F0, $02, $A2, $03, $BD, $50, $CC  ; CPU:$8C10 PRG:4C10  CA A9 01 85 33 A2 00 A5 6F F0 02 A2 03 BD 50 CC
-    .byte $85, $49, $BD, $51, $CC, $85, $4A, $BD, $52, $CC, $85, $4D, $E6, $60, $A9, $00  ; CPU:$8C20 PRG:4C20  85 49 BD 51 CC 85 4A BD 52 CC 85 4D E6 60 A9 00
-    .byte $85, $56, $85, $48, $85, $37, $85, $36, $A9, $08, $85, $40, $20, $B6, $CD, $A5  ; CPU:$8C30 PRG:4C30  85 56 85 48 85 37 85 36 A9 08 85 40 20 B6 CD A5
-    .byte $66, $C9, $05, $D0, $03, $20, $40, $C1, $20, $59, $CD, $A9, $88, $85, $01, $60  ; CPU:$8C40 PRG:4C40  66 C9 05 D0 03 20 40 C1 20 59 CD A9 88 85 01 60
-    .byte $40, $CE, $2B, $24, $CE, $2B, $A5, $6F, $D0, $0E, $A5, $CD, $F0, $0A, $A5, $4A  ; CPU:$8C50 PRG:4C50  40 CE 2B 24 CE 2B A5 6F D0 0E A5 CD F0 0A A5 4A
-    .byte $C9, $B0, $B0, $04, $20, $8B, $CE, $60, $20, $FA, $BB, $A5, $2A, $29, $C0, $F0  ; CPU:$8C60 PRG:4C60  C9 B0 B0 04 20 8B CE 60 20 FA BB A5 2A 29 C0 F0
-    .byte $1A, $A9, $01, $8D, $E3, $00, $A9, $03, $8D, $E2, $00, $A5, $2A, $29, $80, $F0  ; CPU:$8C70 PRG:4C70  1A A9 01 8D E3 00 A9 03 8D E2 00 A5 2A 29 80 F0
-    .byte $05, $A9, $02, $8D, $E2, $00, $A9, $04, $20, $04, $80, $AD, $A4, $05, $F0, $03  ; CPU:$8C80 PRG:4C80  05 A9 02 8D E2 00 A9 04 20 04 80 AD A4 05 F0 03
-    .byte $20, $0D, $CE, $A6, $64, $F0, $25, $AD, $58, $03, $C9, $07, $90, $1F, $BD, $89  ; CPU:$8C90 PRG:4C90  20 0D CE A6 64 F0 25 AD 58 03 C9 07 90 1F BD 89
-    .byte $03, $8D, $88, $03, $BD, $99, $03, $8D, $98, $03, $A9, $04, $18, $6D, $88, $03  ; CPU:$8CA0 PRG:4CA0  03 8D 88 03 BD 99 03 8D 98 03 A9 04 18 6D 88 03
-    .byte $8D, $88, $03, $A9, $04, $18, $6D, $98, $03, $8D, $98, $03, $60, $A5, $31, $6A  ; CPU:$8CB0 PRG:4CB0  8D 88 03 A9 04 18 6D 98 03 8D 98 03 60 A5 31 6A
-    .byte $29, $03, $85, $20, $AD, $AA, $03, $29, $FC, $05, $20, $8D, $AA, $03, $60, $A5  ; CPU:$8CC0 PRG:4CC0  29 03 85 20 AD AA 03 29 FC 05 20 8D AA 03 60 A5
-    .byte $31, $6A, $B0, $01, $60, $A5, $6F, $D0, $03, $20, $8B, $CE, $20, $E4, $BE, $20  ; CPU:$8CD0 PRG:4CD0  31 6A B0 01 60 A5 6F D0 03 20 8B CE 20 E4 BE 20
-    .byte $F0, $CD, $A5, $64, $F0, $1C, $AD, $58, $03, $C9, $07, $90, $15, $A6, $64, $B5  ; CPU:$8CE0 PRG:4CE0  F0 CD A5 64 F0 1C AD 58 03 C9 07 90 15 A6 64 B5
-    .byte $4D, $85, $65, $AA, $BD, $00, $04, $09, $40, $9D, $00, $04, $A9, $00, $85, $64  ; CPU:$8CF0 PRG:4CF0  4D 85 65 AA BD 00 04 09 40 9D 00 04 A9 00 85 64
-    .byte $85, $67, $E6, $60, $A9, $01, $8D, $E3, $00, $A9, $00, $8D, $E2, $00, $A9, $04  ; CPU:$8D00 PRG:4D00  85 67 E6 60 A9 01 8D E3 00 A9 00 8D E2 00 A9 04
-    .byte $20, $04, $80, $A9, $00, $85, $61, $60, $20, $EE, $D4, $60, $A6, $CC, $A9, $04  ; CPU:$8D10 PRG:4D10  20 04 80 A9 00 85 61 60 20 EE D4 60 A6 CC A9 04
-    .byte $85, $1F, $A5, $48, $0A, $0A, $A8, $B1, $46, $85, $1B, $29, $F0, $85, $1C, $18  ; CPU:$8D20 PRG:4D20  85 1F A5 48 0A 0A A8 B1 46 85 1B 29 F0 85 1C 18
-    .byte $65, $49, $9D, $88, $03, $A5, $1B, $29, $0F, $0A, $0A, $0A, $0A, $18, $65, $4A  ; CPU:$8D30 PRG:4D30  65 49 9D 88 03 A5 1B 29 0F 0A 0A 0A 0A 18 65 4A
-    .byte $9D, $98, $03, $A9, $10, $25, $1C, $F0, $09, $BD, $98, $03, $18, $69, $08, $9D  ; CPU:$8D40 PRG:4D40  9D 98 03 A9 10 25 1C F0 09 BD 98 03 18 69 08 9D
-    .byte $98, $03, $E8, $C8, $C6, $1F, $D0, $CF, $60, $A5, $41, $85, $CD, $EE, $E1, $05  ; CPU:$8D50 PRG:4D50  98 03 E8 C8 C6 1F D0 CF 60 A5 41 85 CD EE E1 05
-    .byte $AD, $E1, $05, $AC, $E5, $05, $D0, $05, $20, $52, $85, $A5, $3D, $29, $07, $85  ; CPU:$8D60 PRG:4D60  AD E1 05 AC E5 05 D0 05 20 52 85 A5 3D 29 07 85
-    .byte $1D, $AD, $E1, $05, $AC, $E5, $05, $D0, $05, $20, $52, $85, $A5, $3D, $29, $7F  ; CPU:$8D70 PRG:4D70  1D AD E1 05 AC E5 05 D0 05 20 52 85 A5 3D 29 7F
-    .byte $A8, $B1, $39, $85, $1B, $6A, $6A, $6A, $29, $0E, $85, $41, $AA, $BD, $8E, $F3  ; CPU:$8D80 PRG:4D80  A8 B1 39 85 1B 6A 6A 6A 29 0E 85 41 AA BD 8E F3
-    .byte $85, $19, $BD, $8F, $F3, $85, $1A, $A5, $1B, $29, $0F, $0A, $0A, $A8, $A2, $00  ; CPU:$8D90 PRG:4D90  85 19 BD 8F F3 85 1A A5 1B 29 0F 0A 0A A8 A2 00
-    .byte $86, $21, $B1, $19, $18, $65, $1D, $AA, $BD, $81, $F3, $A6, $21, $95, $42, $C8  ; CPU:$8DA0 PRG:4DA0  86 21 B1 19 18 65 1D AA BD 81 F3 A6 21 95 42 C8
-    .byte $E8, $E0, $04, $90, $EB, $60, $A6, $41, $BD, $13, $F3, $85, $46, $BD, $14, $F3  ; CPU:$8DB0 PRG:4DB0  E8 E0 04 90 EB 60 A6 41 BD 13 F3 85 46 BD 14 F3
-    .byte $85, $47, $A2, $00, $A9, $02, $85, $12, $86, $21, $B5, $42, $95, $52, $85, $11  ; CPU:$8DC0 PRG:4DC0  85 47 A2 00 A9 02 85 12 86 21 B5 42 95 52 85 11
-    .byte $20, $5D, $85, $E6, $12, $A6, $21, $E8, $E0, $04, $90, $EC, $A9, $02, $85, $CC  ; CPU:$8DD0 PRG:4DD0  20 5D 85 E6 12 A6 21 E8 E0 04 90 EC A9 02 85 CC
-    .byte $A0, $00, $B1, $46, $18, $65, $4D, $99, $4E, $00, $C8, $C0, $04, $90, $F3, $60  ; CPU:$8DE0 PRG:4DE0  A0 00 B1 46 18 65 4D 99 4E 00 C8 C0 04 90 F3 60
-    .byte $A9, $00, $85, $11, $A9, $02, $85, $12, $AD, $5A, $03, $C9, $05, $D0, $02, $E6  ; CPU:$8DF0 PRG:4DF0  A9 00 85 11 A9 02 85 12 AD 5A 03 C9 05 D0 02 E6
-    .byte $12, $20, $5D, $85, $E6, $12, $A5, $12, $C9, $06, $90, $F5, $60, $A5, $31, $6A  ; CPU:$8E00 PRG:4E00  12 20 5D 85 E6 12 A5 12 C9 06 90 F5 60 A5 31 6A
-    .byte $B0, $01, $60, $AD, $A4, $05, $AA, $29, $0F, $18, $6D, $B5, $05, $8D, $B5, $05  ; CPU:$8E10 PRG:4E10  B0 01 60 AD A4 05 AA 29 0F 18 6D B5 05 8D B5 05
-    .byte $8A, $6A, $6A, $6A, $6A, $29, $0F, $18, $6D, $B4, $05, $8D, $B4, $05, $A2, $05  ; CPU:$8E20 PRG:4E20  8A 6A 6A 6A 6A 29 0F 18 6D B4 05 8D B4 05 A2 05
-    .byte $BD, $B0, $05, $C9, $0A, $90, $0B, $FE, $AF, $05, $18, $69, $06, $29, $0F, $9D  ; CPU:$8E30 PRG:4E30  BD B0 05 C9 0A 90 0B FE AF 05 18 69 06 29 0F 9D
-    .byte $B0, $05, $CA, $D0, $EB, $A9, $06, $8D, $D2, $05, $A9, $01, $8D, $D3, $05, $A2  ; CPU:$8E40 PRG:4E40  B0 05 CA D0 EB A9 06 8D D2 05 A9 01 8D D3 05 A2
-    .byte $00, $BD, $B0, $05, $A8, $B9, $D6, $F1, $9D, $D4, $05, $E8, $E0, $06, $90, $F1  ; CPU:$8E50 PRG:4E50  00 BD B0 05 A8 B9 D6 F1 9D D4 05 E8 E0 06 90 F1
-    .byte $A5, $6F, $0A, $A8, $A6, $37, $B9, $12, $D4, $9D, $38, $03, $B9, $13, $D4, $9D  ; CPU:$8E60 PRG:4E60  A5 6F 0A A8 A6 37 B9 12 D4 9D 38 03 B9 13 D4 9D
-    .byte $39, $03, $A9, $D2, $9D, $3A, $03, $A9, $05, $9D, $3B, $03, $A9, $00, $9D, $3C  ; CPU:$8E70 PRG:4E70  39 03 A9 D2 9D 3A 03 A9 05 9D 3B 03 A9 00 9D 3C
-    .byte $03, $8D, $A4, $05, $8A, $18, $69, $04, $85, $37, $60, $A5, $31, $6A, $B0, $01  ; CPU:$8E80 PRG:4E80  03 8D A4 05 8A 18 69 04 85 37 60 A5 31 6A B0 01
-    .byte $60, $A0, $04, $84, $22, $A5, $CD, $0A, $0A, $A8, $B9, $C5, $CF, $85, $19, $C8  ; CPU:$8E90 PRG:4E90  60 A0 04 84 22 A5 CD 0A 0A A8 B9 C5 CF 85 19 C8
-    .byte $B9, $C5, $CF, $85, $1A, $C8, $A6, $36, $A5, $19, $9D, $00, $03, $E8, $A5, $1A  ; CPU:$8EA0 PRG:4EA0  B9 C5 CF 85 1A C8 A6 36 A5 19 9D 00 03 E8 A5 1A
-    .byte $9D, $00, $03, $E8, $A9, $A8, $9D, $00, $03, $E8, $A9, $F2, $9D, $00, $03, $E8  ; CPU:$8EB0 PRG:4EB0  9D 00 03 E8 A9 A8 9D 00 03 E8 A9 F2 9D 00 03 E8
-    .byte $86, $36, $C6, $22, $D0, $D4, $A6, $38, $A9, $E6, $9D, $B8, $03, $E8, $A9, $55  ; CPU:$8EC0 PRG:4EC0  86 36 C6 22 D0 D4 A6 38 A9 E6 9D B8 03 E8 A9 55
-    .byte $9D, $B8, $03, $E8, $86, $38, $A0, $00, $84, $22, $A5, $41, $0A, $0A, $85, $21  ; CPU:$8ED0 PRG:4ED0  9D B8 03 E8 86 38 A0 00 84 22 A5 41 0A 0A 85 21
-    .byte $A6, $21, $BD, $C5, $CF, $85, $19, $E8, $BD, $C5, $CF, $85, $1A, $E8, $86, $21  ; CPU:$8EE0 PRG:4EE0  A6 21 BD C5 CF 85 19 E8 BD C5 CF 85 1A E8 86 21
-    .byte $B9, $42, $00, $85, $1B, $E6, $22, $0A, $A8, $B9, $9E, $F2, $85, $17, $B9, $9F  ; CPU:$8EF0 PRG:4EF0  B9 42 00 85 1B E6 22 0A A8 B9 9E F2 85 17 B9 9F
-    .byte $F2, $85, $18, $A6, $36, $A5, $19, $9D, $00, $03, $E8, $A5, $1A, $9D, $00, $03  ; CPU:$8F00 PRG:4F00  F2 85 18 A6 36 A5 19 9D 00 03 E8 A5 1A 9D 00 03
-    .byte $E8, $A5, $17, $9D, $00, $03, $E8, $A5, $18, $9D, $00, $03, $E8, $86, $36, $20  ; CPU:$8F10 PRG:4F10  E8 A5 17 9D 00 03 E8 A5 18 9D 00 03 E8 86 36 20
-    .byte $E3, $84, $A4, $22, $C0, $04, $90, $B8, $A6, $36, $A9, $00, $9D, $00, $03, $85  ; CPU:$8F20 PRG:4F20  E3 84 A4 22 C0 04 90 B8 A6 36 A9 00 9D 00 03 85
-    .byte $CD, $60, $A5, $67, $C9, $08, $90, $15, $A6, $65, $BD, $00, $04, $29, $BF, $9D  ; CPU:$8F30 PRG:4F30  CD 60 A5 67 C9 08 90 15 A6 65 BD 00 04 29 BF 9D
-    .byte $00, $04, $A9, $00, $85, $67, $8D, $58, $03, $A9, $FF, $85, $65, $A2, $0B, $BD  ; CPU:$8F40 PRG:4F40  00 04 A9 00 85 67 8D 58 03 A9 FF 85 65 A2 0B BD
-    .byte $00, $04, $F0, $09, $E6, $60, $E6, $60, $A9, $00, $85, $61, $60, $8A, $18, $69  ; CPU:$8F50 PRG:4F50  00 04 F0 09 E6 60 E6 60 A9 00 85 61 60 8A 18 69
-    .byte $10, $AA, $C9, $70, $90, $E9, $A9, $00, $85, $60, $A5, $71, $C9, $02, $F0, $2C  ; CPU:$8F60 PRG:4F60  10 AA C9 70 90 E9 A9 00 85 60 A5 71 C9 02 F0 2C
-    .byte $A5, $69, $D0, $27, $A5, $63, $C9, $1E, $90, $0F, $A9, $00, $85, $63, $E6, $66  ; CPU:$8F70 PRG:4F70  A5 69 D0 27 A5 63 C9 1E 90 0F A9 00 85 63 E6 66
-    .byte $A5, $66, $C9, $05, $F0, $03, $20, $F2, $C0, $A5, $62, $C9, $C8, $90, $0C, $A9  ; CPU:$8F80 PRG:4F80  A5 66 C9 05 F0 03 20 F2 C0 A5 62 C9 C8 90 0C A9
-    .byte $07, $85, $60, $A9, $00, $85, $61, $A9, $32, $85, $56, $60, $A6, $65, $BD, $00  ; CPU:$8F90 PRG:4F90  07 85 60 A9 00 85 61 A9 32 85 56 60 A6 65 BD 00
-    .byte $04, $29, $40, $D0, $F6, $4C, $8F, $CF, $A9, $00, $85, $98, $A5, $6F, $F0, $0C  ; CPU:$8FA0 PRG:4FA0  04 29 40 D0 F6 4C 8F CF A9 00 85 98 A5 6F F0 0C
-    .byte $A5, $96, $D0, $08, $AD, $E8, $05, $C9, $05, $D0, $01, $60, $A9, $09, $85, $6A  ; CPU:$8FB0 PRG:4FB0  A5 96 D0 08 AD E8 05 C9 05 D0 01 60 A9 09 85 6A
-    .byte $A9, $00, $85, $6C, $60, $50, $24, $50, $24, $50, $24, $50, $24, $98, $22, $BA  ; CPU:$8FC0 PRG:4FC0  A9 00 85 6C 60 50 24 50 24 50 24 50 24 98 22 BA
-    .byte $22, $D8, $22, $FA, $22, $D6, $22, $B8, $22, $DA, $22, $F8, $22, $F6, $22, $98  ; CPU:$8FD0 PRG:4FD0  22 D8 22 FA 22 D6 22 B8 22 DA 22 F8 22 F6 22 98
-    .byte $22, $D8, $22, $18, $23, $B6, $22, $BA, $22, $D8, $22, $F6, $22, $98, $22, $7A  ; CPU:$8FE0 PRG:4FE0  22 D8 22 18 23 B6 22 BA 22 D8 22 F6 22 98 22 7A
-    .byte $22, $D8, $22, $18, $23, $B6, $22, $D8, $22, $BA, $22, $18, $23, $A0, $00, $A2  ; CPU:$8FF0 PRG:4FF0  22 D8 22 18 23 B6 22 D8 22 BA 22 18 23 A0 00 A2
-    .byte $00, $BD, $00, $04, $29, $87, $C5, $20, $F0, $04, $A9, $00, $F0, $07, $C8, $8A  ; CPU:$9000 PRG:5000  00 BD 00 04 29 87 C5 20 F0 04 A9 00 F0 07 C8 8A
-    .byte $99, $22, $05, $A5, $20, $9D, $71, $04, $E8, $E0, $70, $90, $E4, $C0, $00, $D0  ; CPU:$9010 PRG:5010  99 22 05 A5 20 9D 71 04 E8 E0 70 90 E4 C0 00 D0
-    .byte $01, $60, $BE, $22, $05, $BD, $71, $04, $F0, $18, $84, $25, $A0, $00, $84, $21  ; CPU:$9020 PRG:5020  01 60 BE 22 05 BD 71 04 F0 18 84 25 A0 00 84 21
-    .byte $98, $9D, $71, $04, $8A, $99, $40, $05, $86, $20, $C8, $84, $59, $20, $46, $D0  ; CPU:$9030 PRG:5030  98 9D 71 04 8A 99 40 05 86 20 C8 84 59 20 46 D0
-    .byte $A4, $25, $88, $D0, $DD, $60, $A0, $06, $84, $22, $A2, $00, $86, $24, $A4, $22  ; CPU:$9040 PRG:5040  A4 25 88 D0 DD 60 A0 06 84 22 A2 00 86 24 A4 22
-    .byte $A5, $20, $29, $10, $F0, $05, $98, $18, $69, $06, $A8, $B9, $7A, $F8, $18, $65  ; CPU:$9050 PRG:5050  A5 20 29 10 F0 05 98 18 69 06 A8 B9 7A F8 18 65
-    .byte $20, $AA, $29, $0F, $C9, $0E, $B0, $16, $8A, $29, $F0, $C9, $70, $B0, $0F, $BD  ; CPU:$9060 PRG:5060  20 AA 29 0F C9 0E B0 16 8A 29 F0 C9 70 B0 0F BD
-    .byte $71, $04, $F0, $0A, $86, $23, $E6, $24, $A6, $24, $E0, $02, $B0, $06, $C6, $22  ; CPU:$9070 PRG:5070  71 04 F0 0A 86 23 E6 24 A6 24 E0 02 B0 06 C6 22
-    .byte $D0, $CC, $F0, $09, $E6, $21, $A6, $21, $A5, $20, $9D, $59, $05, $A6, $24, $F0  ; CPU:$9080 PRG:5080  D0 CC F0 09 E6 21 A6 21 A5 20 9D 59 05 A6 24 F0
-    .byte $14, $A6, $23, $A9, $00, $9D, $71, $04, $A4, $59, $8A, $99, $40, $05, $86, $20  ; CPU:$9090 PRG:5090  14 A6 23 A9 00 9D 71 04 A4 59 8A 99 40 05 86 20
-    .byte $E6, $59, $4C, $46, $D0, $A6, $21, $F0, $0A, $BD, $59, $05, $C6, $21, $85, $20  ; CPU:$90A0 PRG:50A0  E6 59 4C 46 D0 A6 21 F0 0A BD 59 05 C6 21 85 20
-    .byte $4C, $46, $D0, $A4, $59, $C0, $04, $90, $29, $98, $18, $6D, $A5, $05, $8D, $A5  ; CPU:$90B0 PRG:50B0  4C 46 D0 A4 59 C0 04 90 29 98 18 6D A5 05 8D A5
-    .byte $05, $98, $38, $E9, $03, $0A, $0A, $18, $6D, $A6, $05, $8D, $A6, $05, $88, $A6  ; CPU:$90C0 PRG:50C0  05 98 38 E9 03 0A 0A 18 6D A6 05 8D A6 05 88 A6
-    .byte $58, $B9, $40, $05, $9D, $68, $05, $E8, $88, $10, $F6, $A9, $FF, $9D, $68, $05  ; CPU:$90D0 PRG:50D0  58 B9 40 05 9D 68 05 E8 88 10 F6 A9 FF 9D 68 05
-    .byte $86, $58, $A9, $00, $85, $59, $60, $A5, $31, $6A, $B0, $01, $60, $E6, $56, $A5  ; CPU:$90E0 PRG:50E0  86 58 A9 00 85 59 60 A5 31 6A B0 01 60 E6 56 A5
-    .byte $56, $C9, $04, $90, $11, $A9, $00, $85, $56, $85, $59, $E6, $3F, $A5, $3F, $C9  ; CPU:$90F0 PRG:50F0  56 C9 04 90 11 A9 00 85 56 85 59 E6 3F A5 3F C9
-    .byte $08, $90, $03, $E6, $61, $60, $A4, $59, $B9, $68, $05, $C9, $FF, $D0, $01, $60  ; CPU:$9100 PRG:5100  08 90 03 E6 61 60 A4 59 B9 68 05 C9 FF D0 01 60
-    .byte $A2, $00, $9D, $40, $05, $E8, $C8, $B9, $68, $05, $C9, $FF, $F0, $04, $E0, $0D  ; CPU:$9110 PRG:5110  A2 00 9D 40 05 E8 C8 B9 68 05 C9 FF F0 04 E0 0D
-    .byte $90, $F0, $84, $59, $86, $24, $86, $21, $A2, $00, $86, $36, $A6, $36, $BD, $40  ; CPU:$9120 PRG:5120  90 F0 84 59 86 24 86 21 A2 00 86 36 A6 36 BD 40
-    .byte $05, $20, $BF, $84, $A5, $36, $0A, $0A, $A8, $A5, $19, $99, $00, $03, $A5, $1A  ; CPU:$9130 PRG:5130  05 20 BF 84 A5 36 0A 0A A8 A5 19 99 00 03 A5 1A
-    .byte $99, $01, $03, $E6, $36, $C6, $24, $D0, $E3, $A9, $00, $99, $04, $03, $A6, $3F  ; CPU:$9140 PRG:5140  99 01 03 E6 36 C6 24 D0 E3 A9 00 99 04 03 A6 3F
-    .byte $BD, $A8, $D1, $C9, $03, $90, $04, $20, $81, $D1, $60, $20, $5F, $D1, $60, $0A  ; CPU:$9150 PRG:5150  BD A8 D1 C9 03 90 04 20 81 D1 60 20 5F D1 60 0A
-    .byte $AA, $BD, $FB, $F2, $85, $19, $BD, $FC, $F2, $85, $1A, $A2, $00, $8A, $0A, $0A  ; CPU:$9160 PRG:5160  AA BD FB F2 85 19 BD FC F2 85 1A A2 00 8A 0A 0A
-    .byte $A8, $A5, $19, $99, $02, $03, $A5, $1A, $99, $03, $03, $E8, $C6, $21, $10, $ED  ; CPU:$9170 PRG:5170  A8 A5 19 99 02 03 A5 1A 99 03 03 E8 C6 21 10 ED
-    .byte $60, $A2, $00, $BD, $40, $05, $86, $24, $A8, $B9, $00, $04, $29, $07, $0A, $A8  ; CPU:$9180 PRG:5180  60 A2 00 BD 40 05 86 24 A8 B9 00 04 29 07 0A A8
-    .byte $8A, $0A, $0A, $AA, $B9, $9E, $F2, $9D, $02, $03, $B9, $9F, $F2, $9D, $03, $03  ; CPU:$9190 PRG:5190  8A 0A 0A AA B9 9E F2 9D 02 03 B9 9F F2 9D 03 03
-    .byte $A6, $24, $E8, $C6, $21, $10, $DC, $60, $00, $03, $00, $03, $00, $01, $02, $00  ; CPU:$91A0 PRG:51A0  A6 24 E8 C6 21 10 DC 60 00 03 00 03 00 01 02 00
-    .byte $A9, $00, $85, $22, $A9, $FF, $85, $24, $A5, $22, $0A, $0A, $0A, $0A, $AA, $A9  ; CPU:$91B0 PRG:51B0  A9 00 85 22 A9 FF 85 24 A5 22 0A 0A 0A 0A AA A9
-    .byte $0E, $85, $1F, $BD, $00, $04, $D0, $30, $86, $58, $8A, $A4, $22, $99, $40, $05  ; CPU:$91C0 PRG:51C0  0E 85 1F BD 00 04 D0 30 86 58 8A A4 22 99 40 05
-    .byte $E8, $BD, $00, $04, $F0, $10, $A4, $58, $99, $00, $04, $E6, $58, $A9, $00, $9D  ; CPU:$91D0 PRG:51D0  E8 BD 00 04 F0 10 A4 58 99 00 04 E6 58 A9 00 9D
-    .byte $00, $04, $86, $24, $E6, $24, $E8, $C6, $1F, $D0, $E6, $A4, $22, $A5, $24, $99  ; CPU:$91E0 PRG:51E0  00 04 86 24 E6 24 E8 C6 1F D0 E6 A4 22 A5 24 99
-    .byte $22, $05, $A9, $FF, $85, $24, $30, $0C, $E8, $C6, $1F, $D0, $C6, $A4, $22, $A9  ; CPU:$91F0 PRG:51F0  22 05 A9 FF 85 24 30 0C E8 C6 1F D0 C6 A4 22 A9
-    .byte $FF, $99, $22, $05, $E6, $22, $A5, $22, $C9, $07, $90, $AC, $A9, $00, $85, $58  ; CPU:$9200 PRG:5200  FF 99 22 05 E6 22 A5 22 C9 07 90 AC A9 00 85 58
-    .byte $E6, $61, $A5, $65, $30, $03, $20, $5E, $D4, $60, $A5, $31, $6A, $B0, $01, $60  ; CPU:$9210 PRG:5210  E6 61 A5 65 30 03 20 5E D4 60 A5 31 6A B0 01 60
-    .byte $A9, $00, $85, $36, $A9, $08, $85, $1F, $A4, $58, $B9, $22, $05, $10, $12, $E6  ; CPU:$9220 PRG:5220  A9 00 85 36 A9 08 85 1F A4 58 B9 22 05 10 12 E6
-    .byte $58, $A4, $58, $C0, $07, $90, $F3, $A9, $00, $A6, $36, $9D, $00, $03, $E6, $61  ; CPU:$9230 PRG:5230  58 A4 58 C0 07 90 F3 A9 00 A6 36 9D 00 03 E6 61
-    .byte $60, $85, $24, $B9, $40, $05, $85, $25, $20, $BF, $84, $A6, $36, $A5, $19, $9D  ; CPU:$9240 PRG:5240  60 85 24 B9 40 05 85 25 20 BF 84 A6 36 A5 19 9D
-    .byte $00, $03, $E8, $A5, $1A, $9D, $00, $03, $E8, $A5, $25, $29, $0F, $C9, $0B, $B0  ; CPU:$9250 PRG:5250  00 03 E8 A5 1A 9D 00 03 E8 A5 25 29 0F C9 0B B0
-    .byte $33, $A4, $25, $B9, $00, $04, $29, $87, $85, $1B, $30, $13, $0A, $A8, $B9, $9E  ; CPU:$9260 PRG:5260  33 A4 25 B9 00 04 29 87 85 1B 30 13 0A A8 B9 9E
-    .byte $F2, $9D, $00, $03, $E8, $B9, $9F, $F2, $9D, $00, $03, $A9, $00, $F0, $0B, $A9  ; CPU:$9270 PRG:5270  F2 9D 00 03 E8 B9 9F F2 9D 00 03 A9 00 F0 0B A9
-    .byte $0D, $9D, $00, $03, $E8, $A9, $F3, $9D, $00, $03, $E8, $86, $36, $A5, $1B, $F0  ; CPU:$9280 PRG:5280  0D 9D 00 03 E8 A9 F3 9D 00 03 E8 86 36 A5 1B F0
-    .byte $03, $20, $E3, $84, $C6, $1F, $F0, $17, $E6, $25, $A5, $25, $C5, $24, $B0, $8F  ; CPU:$9290 PRG:5290  03 20 E3 84 C6 1F F0 17 E6 25 A5 25 C5 24 B0 8F
-    .byte $A5, $19, $18, $69, $40, $85, $19, $90, $02, $E6, $1A, $A9, $00, $F0, $9C, $E6  ; CPU:$92A0 PRG:52A0  A5 19 18 69 40 85 19 90 02 E6 1A A9 00 F0 9C E6
-    .byte $25, $A4, $58, $A5, $25, $99, $40, $05, $A6, $36, $A9, $00, $9D, $00, $03, $60  ; CPU:$92B0 PRG:52B0  25 A4 58 A5 25 99 40 05 A6 36 A9 00 9D 00 03 60
-    .byte $A5, $31, $6A, $B0, $01, $60, $A9, $00, $85, $20, $AD, $A6, $05, $38, $E9, $0A  ; CPU:$92C0 PRG:52C0  A5 31 6A B0 01 60 A9 00 85 20 AD A6 05 38 E9 0A
-    .byte $90, $0A, $8D, $A6, $05, $E6, $20, $AD, $A6, $05, $10, $F1, $AD, $A6, $05, $8D  ; CPU:$92D0 PRG:52D0  90 0A 8D A6 05 E6 20 AD A6 05 10 F1 AD A6 05 8D
-    .byte $AA, $05, $A5, $20, $8D, $A9, $05, $A2, $02, $BD, $A8, $05, $C9, $0A, $90, $0B  ; CPU:$92E0 PRG:52E0  AA 05 A5 20 8D A9 05 A2 02 BD A8 05 C9 0A 90 0B
-    .byte $FE, $A7, $05, $18, $69, $06, $29, $0F, $9D, $A8, $05, $CA, $D0, $EB, $AD, $A5  ; CPU:$92F0 PRG:52F0  FE A7 05 18 69 06 29 0F 9D A8 05 CA D0 EB AD A5
-    .byte $05, $AA, $18, $65, $62, $85, $62, $8A, $18, $65, $63, $85, $63, $8A, $29, $0F  ; CPU:$9300 PRG:5300  05 AA 18 65 62 85 62 8A 18 65 63 85 63 8A 29 0F
-    .byte $18, $6D, $AF, $05, $8D, $AF, $05, $8A, $6A, $6A, $6A, $6A, $29, $0F, $18, $6D  ; CPU:$9310 PRG:5310  18 6D AF 05 8D AF 05 8A 6A 6A 6A 6A 29 0F 18 6D
-    .byte $AE, $05, $8D, $AE, $05, $A2, $03, $BD, $AC, $05, $C9, $0A, $90, $0B, $FE, $AB  ; CPU:$9320 PRG:5320  AE 05 8D AE 05 A2 03 BD AC 05 C9 0A 90 0B FE AB
-    .byte $05, $18, $69, $06, $29, $0F, $9D, $AC, $05, $CA, $D0, $EB, $A2, $02, $BD, $A8  ; CPU:$9330 PRG:5330  05 18 69 06 29 0F 9D AC 05 CA D0 EB A2 02 BD A8
-    .byte $05, $18, $7D, $B2, $05, $9D, $B2, $05, $CA, $10, $F3, $A2, $04, $BD, $B0, $05  ; CPU:$9340 PRG:5340  05 18 7D B2 05 9D B2 05 CA 10 F3 A2 04 BD B0 05
-    .byte $C9, $0A, $90, $0B, $FE, $AF, $05, $18, $69, $06, $29, $0F, $9D, $B0, $05, $CA  ; CPU:$9350 PRG:5350  C9 0A 90 0B FE AF 05 18 69 06 29 0F 9D B0 05 CA
-    .byte $D0, $EB, $A9, $04, $8D, $C0, $05, $8D, $C6, $05, $A9, $01, $8D, $C1, $05, $8D  ; CPU:$9360 PRG:5360  D0 EB A9 04 8D C0 05 8D C6 05 A9 01 8D C1 05 8D
-    .byte $C7, $05, $A2, $00, $BD, $AC, $05, $A8, $B9, $D6, $F1, $9D, $C2, $05, $BD, $A8  ; CPU:$9370 PRG:5370  C7 05 A2 00 BD AC 05 A8 B9 D6 F1 9D C2 05 BD A8
-    .byte $05, $A8, $B9, $D6, $F1, $9D, $C8, $05, $E8, $E0, $04, $90, $E7, $A9, $06, $8D  ; CPU:$9380 PRG:5380  05 A8 B9 D6 F1 9D C8 05 E8 E0 04 90 E7 A9 06 8D
-    .byte $D2, $05, $A9, $01, $8D, $D3, $05, $A2, $00, $BD, $B0, $05, $A8, $B9, $D6, $F1  ; CPU:$9390 PRG:5390  D2 05 A9 01 8D D3 05 A2 00 BD B0 05 A8 B9 D6 F1
-    .byte $9D, $D4, $05, $E8, $E0, $06, $90, $F1, $A6, $37, $A5, $6F, $0A, $A8, $B9, $0A  ; CPU:$93A0 PRG:53A0  9D D4 05 E8 E0 06 90 F1 A6 37 A5 6F 0A A8 B9 0A
-    .byte $D4, $9D, $38, $03, $B9, $0B, $D4, $9D, $39, $03, $A9, $C0, $9D, $3A, $03, $A9  ; CPU:$93B0 PRG:53B0  D4 9D 38 03 B9 0B D4 9D 39 03 A9 C0 9D 3A 03 A9
-    .byte $05, $9D, $3B, $03, $B9, $0E, $D4, $9D, $3C, $03, $B9, $0F, $D4, $9D, $3D, $03  ; CPU:$93C0 PRG:53C0  05 9D 3B 03 B9 0E D4 9D 3C 03 B9 0F D4 9D 3D 03
-    .byte $A9, $C6, $9D, $3E, $03, $A9, $05, $9D, $3F, $03, $B9, $12, $D4, $9D, $40, $03  ; CPU:$93D0 PRG:53D0  A9 C6 9D 3E 03 A9 05 9D 3F 03 B9 12 D4 9D 40 03
-    .byte $B9, $13, $D4, $9D, $41, $03, $A9, $D2, $9D, $42, $03, $A9, $05, $9D, $43, $03  ; CPU:$93E0 PRG:53E0  B9 13 D4 9D 41 03 A9 D2 9D 42 03 A9 05 9D 43 03
-    .byte $A9, $00, $9D, $44, $03, $8D, $A5, $05, $8D, $A4, $05, $8D, $A6, $05, $8D, $A7  ; CPU:$93F0 PRG:53F0  A9 00 9D 44 03 8D A5 05 8D A4 05 8D A6 05 8D A7
-    .byte $05, $8A, $18, $69, $0C, $85, $37, $E6, $61, $60, $79, $21, $22, $23, $B9, $21  ; CPU:$9400 PRG:5400  05 8A 18 69 0C 85 37 E6 61 60 79 21 22 23 B9 21
-    .byte $42, $23, $F7, $21, $2A, $23, $A5, $31, $6A, $B0, $01, $60, $A5, $71, $C9, $02  ; CPU:$9410 PRG:5410  42 23 F7 21 2A 23 A5 31 6A B0 01 60 A5 71 C9 02
-    .byte $F0, $09, $A5, $5E, $C9, $05, $D0, $03, $20, $86, $D4, $A5, $5F, $29, $03, $AA  ; CPU:$9420 PRG:5420  F0 09 A5 5E C9 05 D0 03 20 86 D4 A5 5F 29 03 AA
-    .byte $BD, $5A, $D4, $85, $1B, $A6, $5E, $20, $AF, $D4, $20, $8A, $85, $A9, $00, $9D  ; CPU:$9430 PRG:5430  BD 5A D4 85 1B A6 5E 20 AF D4 20 8A 85 A9 00 9D
-    .byte $00, $03, $20, $E3, $84, $A5, $71, $C9, $02, $F0, $06, $C6, $5E, $D0, $02, $E6  ; CPU:$9440 PRG:5440  00 03 20 E3 84 A5 71 C9 02 F0 06 C6 5E D0 02 E6
-    .byte $5F, $A5, $58, $D0, $02, $E6, $61, $E6, $61, $60, $03, $04, $02, $01, $A5, $65  ; CPU:$9450 PRG:5450  5F A5 58 D0 02 E6 61 E6 61 60 03 04 02 01 A5 65
-    .byte $AA, $29, $0F, $A8, $BD, $00, $04, $29, $40, $D0, $05, $CA, $88, $10, $F5, $60  ; CPU:$9460 PRG:5460  AA 29 0F A8 BD 00 04 29 40 D0 05 CA 88 10 F5 60
-    .byte $8A, $C5, $65, $F0, $10, $38, $E5, $65, $0A, $0A, $0A, $0A, $18, $6D, $98, $03  ; CPU:$9470 PRG:5470  8A C5 65 F0 10 38 E5 65 0A 0A 0A 0A 18 6D 98 03
-    .byte $8D, $98, $03, $86, $65, $60, $A0, $05, $A5, $6F, $0A, $AA, $BD, $EA, $D4, $85  ; CPU:$9480 PRG:5480  8D 98 03 86 65 60 A0 05 A5 6F 0A AA BD EA D4 85
-    .byte $19, $BD, $EB, $D4, $85, $1A, $A9, $A8, $85, $17, $A9, $F2, $85, $18, $20, $8A  ; CPU:$9490 PRG:5490  19 BD EB D4 85 1A A9 A8 85 17 A9 F2 85 18 20 8A
-    .byte $85, $E6, $19, $E6, $19, $88, $D0, $F6, $98, $9D, $00, $03, $86, $36, $60, $A5  ; CPU:$94A0 PRG:54A0  85 E6 19 E6 19 88 D0 F6 98 9D 00 03 86 36 60 A5
-    .byte $6F, $0A, $A8, $B9, $EA, $D4, $85, $19, $B9, $EB, $D4, $85, $1A, $BD, $D9, $05  ; CPU:$94B0 PRG:54B0  6F 0A A8 B9 EA D4 85 19 B9 EB D4 85 1A BD D9 05
-    .byte $0A, $A8, $18, $65, $19, $85, $19, $98, $0A, $A8, $A6, $5F, $E8, $8A, $29, $02  ; CPU:$94C0 PRG:54C0  0A A8 18 65 19 85 19 98 0A A8 A6 5F E8 8A 29 02
-    .byte $D0, $05, $98, $18, $69, $14, $A8, $A9, $D1, $85, $17, $A9, $F2, $85, $18, $98  ; CPU:$94D0 PRG:54D0  D0 05 98 18 69 14 A8 A9 D1 85 17 A9 F2 85 18 98
-    .byte $18, $65, $17, $85, $17, $90, $02, $E6, $18, $60, $94, $20, $46, $23, $A5, $61  ; CPU:$94E0 PRG:54E0  18 65 17 85 17 90 02 E6 18 60 94 20 46 23 A5 61
-    .byte $20, $73, $81, $07, $D5, $C0, $D2, $15, $D6, $E7, $D0, $37, $D5, $16, $D4, $CF  ; CPU:$94F0 PRG:54F0  20 73 81 07 D5 C0 D2 15 D6 E7 D0 37 D5 16 D4 CF
-    .byte $D5, $B0, $D1, $1A, $D2, $63, $D5, $A9, $00, $85, $58, $A9, $04, $85, $1E, $A5  ; CPU:$9500 PRG:5500  D5 B0 D1 1A D2 63 D5 A9 00 85 58 A9 04 85 1E A5
-    .byte $1E, $85, $20, $20, $FD, $CF, $C6, $1E, $D0, $F5, $AD, $A6, $05, $D0, $0D, $85  ; CPU:$9510 PRG:5510  1E 85 20 20 FD CF C6 1E D0 F5 AD A6 05 D0 0D 85
-    .byte $61, $E6, $60, $A5, $68, $C9, $03, $90, $02, $E6, $68, $60, $A9, $00, $85, $3F  ; CPU:$9520 PRG:5520  61 E6 60 A5 68 C9 03 90 02 E6 68 60 A9 00 85 3F
-    .byte $85, $56, $85, $59, $E6, $61, $60, $E6, $61, $20, $95, $D5, $20, $AF, $D5, $A6  ; CPU:$9530 PRG:5530  85 56 85 59 E6 61 60 E6 61 20 95 D5 20 AF D5 A6
-    .byte $65, $30, $17, $BD, $00, $04, $29, $40, $D0, $10, $A9, $00, $8D, $58, $03, $A5  ; CPU:$9540 PRG:5540  65 30 17 BD 00 04 29 40 D0 10 A9 00 8D 58 03 A5
-    .byte $71, $C9, $02, $F0, $04, $A9, $FF, $85, $65, $60, $A5, $58, $D0, $02, $E6, $61  ; CPU:$9550 PRG:5550  71 C9 02 F0 04 A9 FF 85 65 60 A5 58 D0 02 E6 61
-    .byte $E6, $61, $60, $A5, $31, $6A, $B0, $01, $60, $A5, $6F, $0A, $A8, $A6, $37, $B9  ; CPU:$9560 PRG:5560  E6 61 60 A5 31 6A B0 01 60 A5 6F 0A A8 A6 37 B9
-    .byte $0E, $D4, $9D, $38, $03, $B9, $0F, $D4, $9D, $39, $03, $A9, $E0, $9D, $3A, $03  ; CPU:$9570 PRG:5570  0E D4 9D 38 03 B9 0F D4 9D 39 03 A9 E0 9D 3A 03
-    .byte $A9, $F1, $9D, $3B, $03, $A9, $00, $9D, $3C, $03, $8A, $18, $69, $04, $85, $37  ; CPU:$9580 PRG:5580  A9 F1 9D 3B 03 A9 00 9D 3C 03 8A 18 69 04 85 37
-    .byte $A9, $00, $85, $61, $60, $A2, $00, $A0, $00, $86, $24, $A6, $24, $BD, $68, $05  ; CPU:$9590 PRG:5590  A9 00 85 61 60 A2 00 A0 00 86 24 A6 24 BD 68 05
-    .byte $C9, $FF, $D0, $01, $60, $AA, $98, $9D, $00, $04, $E6, $24, $D0, $ED, $60, $A0  ; CPU:$95A0 PRG:55A0  C9 FF D0 01 60 AA 98 9D 00 04 E6 24 D0 ED 60 A0
-    .byte $00, $A2, $6E, $CA, $BD, $00, $04, $F0, $07, $10, $0B, $8A, $99, $68, $05, $C8  ; CPU:$95B0 PRG:55B0  00 A2 6E CA BD 00 04 F0 07 10 0B 8A 99 68 05 C8
-    .byte $CA, $10, $F1, $84, $58, $60, $8A, $29, $F0, $AA, $D0, $E7, $84, $58, $60, $A5  ; CPU:$95C0 PRG:55C0  CA 10 F1 84 58 60 8A 29 F0 AA D0 E7 84 58 60 A5
-    .byte $31, $6A, $B0, $01, $60, $A9, $A8, $85, $17, $A9, $F2, $85, $18, $A9, $0C, $85  ; CPU:$95D0 PRG:55D0  31 6A B0 01 60 A9 A8 85 17 A9 F2 85 18 A9 0C 85
-    .byte $1F, $A0, $00, $C6, $58, $10, $08, $E6, $61, $A9, $00, $85, $56, $F0, $1E, $A6  ; CPU:$95E0 PRG:55E0  1F A0 00 C6 58 10 08 E6 61 A9 00 85 56 F0 1E A6
-    .byte $58, $BD, $68, $05, $85, $24, $20, $BF, $84, $A5, $1A, $C9, $24, $F0, $0A, $A6  ; CPU:$95F0 PRG:55F0  58 BD 68 05 85 24 20 BF 84 A5 1A C9 24 F0 0A A6
-    .byte $24, $A9, $00, $9D, $00, $04, $20, $8A, $85, $C6, $1F, $10, $D6, $A6, $36, $A9  ; CPU:$9600 PRG:5600  24 A9 00 9D 00 04 20 8A 85 C6 1F 10 D6 A6 36 A9
-    .byte $00, $9D, $00, $03, $60, $A9, $01, $8D, $E3, $00, $A9, $01, $8D, $E2, $00, $A9  ; CPU:$9610 PRG:5610  00 9D 00 03 60 A9 01 8D E3 00 A9 01 8D E2 00 A9
-    .byte $04, $20, $04, $80, $E6, $61, $60, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9620 PRG:5620  04 20 04 80 E6 61 60 FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9630 PRG:5630  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9640 PRG:5640  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9650 PRG:5650  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9660 PRG:5660  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9670 PRG:5670  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9680 PRG:5680  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9690 PRG:5690  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$96A0 PRG:56A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$96B0 PRG:56B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$96C0 PRG:56C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$96D0 PRG:56D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$96E0 PRG:56E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$96F0 PRG:56F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9700 PRG:5700  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9710 PRG:5710  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9720 PRG:5720  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9730 PRG:5730  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9740 PRG:5740  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9750 PRG:5750  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9760 PRG:5760  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9770 PRG:5770  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9780 PRG:5780  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9790 PRG:5790  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$97A0 PRG:57A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$97B0 PRG:57B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$97C0 PRG:57C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$97D0 PRG:57D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$97E0 PRG:57E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$97F0 PRG:57F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9800 PRG:5800  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9810 PRG:5810  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9820 PRG:5820  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9830 PRG:5830  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9840 PRG:5840  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9850 PRG:5850  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9860 PRG:5860  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9870 PRG:5870  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9880 PRG:5880  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9890 PRG:5890  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$98A0 PRG:58A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$98B0 PRG:58B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$98C0 PRG:58C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$98D0 PRG:58D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$98E0 PRG:58E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$98F0 PRG:58F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9900 PRG:5900  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9910 PRG:5910  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9920 PRG:5920  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9930 PRG:5930  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9940 PRG:5940  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9950 PRG:5950  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9960 PRG:5960  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9970 PRG:5970  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9980 PRG:5980  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9990 PRG:5990  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$99A0 PRG:59A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$99B0 PRG:59B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$99C0 PRG:59C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$99D0 PRG:59D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$99E0 PRG:59E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$99F0 PRG:59F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A00 PRG:5A00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A10 PRG:5A10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A20 PRG:5A20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A30 PRG:5A30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A40 PRG:5A40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A50 PRG:5A50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A60 PRG:5A60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A70 PRG:5A70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A80 PRG:5A80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9A90 PRG:5A90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9AA0 PRG:5AA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9AB0 PRG:5AB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9AC0 PRG:5AC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9AD0 PRG:5AD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9AE0 PRG:5AE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9AF0 PRG:5AF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B00 PRG:5B00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B10 PRG:5B10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B20 PRG:5B20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B30 PRG:5B30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B40 PRG:5B40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B50 PRG:5B50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B60 PRG:5B60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B70 PRG:5B70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B80 PRG:5B80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9B90 PRG:5B90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9BA0 PRG:5BA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9BB0 PRG:5BB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9BC0 PRG:5BC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9BD0 PRG:5BD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9BE0 PRG:5BE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9BF0 PRG:5BF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C00 PRG:5C00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C10 PRG:5C10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C20 PRG:5C20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C30 PRG:5C30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C40 PRG:5C40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C50 PRG:5C50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C60 PRG:5C60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C70 PRG:5C70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C80 PRG:5C80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9C90 PRG:5C90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9CA0 PRG:5CA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9CB0 PRG:5CB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9CC0 PRG:5CC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9CD0 PRG:5CD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9CE0 PRG:5CE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9CF0 PRG:5CF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D00 PRG:5D00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D10 PRG:5D10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D20 PRG:5D20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D30 PRG:5D30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D40 PRG:5D40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D50 PRG:5D50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D60 PRG:5D60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D70 PRG:5D70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D80 PRG:5D80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9D90 PRG:5D90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9DA0 PRG:5DA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9DB0 PRG:5DB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9DC0 PRG:5DC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9DD0 PRG:5DD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9DE0 PRG:5DE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9DF0 PRG:5DF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E00 PRG:5E00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E10 PRG:5E10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E20 PRG:5E20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E30 PRG:5E30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E40 PRG:5E40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E50 PRG:5E50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E60 PRG:5E60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E70 PRG:5E70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E80 PRG:5E80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9E90 PRG:5E90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9EA0 PRG:5EA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9EB0 PRG:5EB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9EC0 PRG:5EC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9ED0 PRG:5ED0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9EE0 PRG:5EE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9EF0 PRG:5EF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F00 PRG:5F00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F10 PRG:5F10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F20 PRG:5F20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F30 PRG:5F30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F40 PRG:5F40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F50 PRG:5F50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F60 PRG:5F60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F70 PRG:5F70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F80 PRG:5F80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9F90 PRG:5F90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9FA0 PRG:5FA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9FB0 PRG:5FB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9FC0 PRG:5FC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9FD0 PRG:5FD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9FE0 PRG:5FE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$9FF0 PRG:5FF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A000 PRG:6000  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A010 PRG:6010  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A020 PRG:6020  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A030 PRG:6030  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A040 PRG:6040  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A050 PRG:6050  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A060 PRG:6060  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A070 PRG:6070  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A080 PRG:6080  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A090 PRG:6090  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A0A0 PRG:60A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A0B0 PRG:60B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A0C0 PRG:60C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A0D0 PRG:60D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A0E0 PRG:60E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A0F0 PRG:60F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A100 PRG:6100  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A110 PRG:6110  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A120 PRG:6120  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A130 PRG:6130  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A140 PRG:6140  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A150 PRG:6150  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A160 PRG:6160  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A170 PRG:6170  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A180 PRG:6180  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A190 PRG:6190  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A1A0 PRG:61A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A1B0 PRG:61B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A1C0 PRG:61C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A1D0 PRG:61D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A1E0 PRG:61E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A1F0 PRG:61F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A200 PRG:6200  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A210 PRG:6210  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A220 PRG:6220  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A230 PRG:6230  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A240 PRG:6240  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A250 PRG:6250  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A260 PRG:6260  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A270 PRG:6270  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A280 PRG:6280  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A290 PRG:6290  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A2A0 PRG:62A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A2B0 PRG:62B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A2C0 PRG:62C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A2D0 PRG:62D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A2E0 PRG:62E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A2F0 PRG:62F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A300 PRG:6300  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A310 PRG:6310  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A320 PRG:6320  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A330 PRG:6330  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A340 PRG:6340  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A350 PRG:6350  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A360 PRG:6360  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A370 PRG:6370  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A380 PRG:6380  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A390 PRG:6390  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A3A0 PRG:63A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A3B0 PRG:63B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A3C0 PRG:63C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A3D0 PRG:63D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A3E0 PRG:63E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A3F0 PRG:63F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A400 PRG:6400  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A410 PRG:6410  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A420 PRG:6420  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A430 PRG:6430  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A440 PRG:6440  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A450 PRG:6450  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A460 PRG:6460  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A470 PRG:6470  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A480 PRG:6480  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A490 PRG:6490  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A4A0 PRG:64A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A4B0 PRG:64B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A4C0 PRG:64C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A4D0 PRG:64D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A4E0 PRG:64E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A4F0 PRG:64F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A500 PRG:6500  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A510 PRG:6510  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A520 PRG:6520  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A530 PRG:6530  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A540 PRG:6540  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A550 PRG:6550  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A560 PRG:6560  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A570 PRG:6570  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A580 PRG:6580  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A590 PRG:6590  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A5A0 PRG:65A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A5B0 PRG:65B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A5C0 PRG:65C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A5D0 PRG:65D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A5E0 PRG:65E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A5F0 PRG:65F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A600 PRG:6600  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A610 PRG:6610  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A620 PRG:6620  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A630 PRG:6630  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A640 PRG:6640  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A650 PRG:6650  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A660 PRG:6660  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A670 PRG:6670  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A680 PRG:6680  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A690 PRG:6690  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A6A0 PRG:66A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A6B0 PRG:66B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A6C0 PRG:66C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A6D0 PRG:66D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A6E0 PRG:66E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A6F0 PRG:66F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A700 PRG:6700  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A710 PRG:6710  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A720 PRG:6720  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A730 PRG:6730  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A740 PRG:6740  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A750 PRG:6750  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A760 PRG:6760  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A770 PRG:6770  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A780 PRG:6780  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A790 PRG:6790  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A7A0 PRG:67A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A7B0 PRG:67B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A7C0 PRG:67C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A7D0 PRG:67D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A7E0 PRG:67E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A7F0 PRG:67F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A800 PRG:6800  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A810 PRG:6810  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A820 PRG:6820  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A830 PRG:6830  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A840 PRG:6840  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A850 PRG:6850  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A860 PRG:6860  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A870 PRG:6870  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A880 PRG:6880  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A890 PRG:6890  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A8A0 PRG:68A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A8B0 PRG:68B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A8C0 PRG:68C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A8D0 PRG:68D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A8E0 PRG:68E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A8F0 PRG:68F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A900 PRG:6900  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A910 PRG:6910  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A920 PRG:6920  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A930 PRG:6930  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A940 PRG:6940  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A950 PRG:6950  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A960 PRG:6960  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A970 PRG:6970  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A980 PRG:6980  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A990 PRG:6990  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A9A0 PRG:69A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A9B0 PRG:69B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A9C0 PRG:69C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A9D0 PRG:69D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A9E0 PRG:69E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$A9F0 PRG:69F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA00 PRG:6A00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA10 PRG:6A10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA20 PRG:6A20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA30 PRG:6A30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA40 PRG:6A40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA50 PRG:6A50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA60 PRG:6A60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA70 PRG:6A70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA80 PRG:6A80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AA90 PRG:6A90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AAA0 PRG:6AA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AAB0 PRG:6AB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AAC0 PRG:6AC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AAD0 PRG:6AD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AAE0 PRG:6AE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AAF0 PRG:6AF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB00 PRG:6B00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB10 PRG:6B10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB20 PRG:6B20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB30 PRG:6B30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB40 PRG:6B40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB50 PRG:6B50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB60 PRG:6B60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB70 PRG:6B70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB80 PRG:6B80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AB90 PRG:6B90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ABA0 PRG:6BA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ABB0 PRG:6BB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ABC0 PRG:6BC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ABD0 PRG:6BD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ABE0 PRG:6BE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ABF0 PRG:6BF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC00 PRG:6C00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC10 PRG:6C10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC20 PRG:6C20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC30 PRG:6C30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC40 PRG:6C40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC50 PRG:6C50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC60 PRG:6C60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC70 PRG:6C70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC80 PRG:6C80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AC90 PRG:6C90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ACA0 PRG:6CA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ACB0 PRG:6CB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ACC0 PRG:6CC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ACD0 PRG:6CD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ACE0 PRG:6CE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ACF0 PRG:6CF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD00 PRG:6D00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD10 PRG:6D10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD20 PRG:6D20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD30 PRG:6D30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD40 PRG:6D40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD50 PRG:6D50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD60 PRG:6D60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD70 PRG:6D70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD80 PRG:6D80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AD90 PRG:6D90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ADA0 PRG:6DA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ADB0 PRG:6DB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ADC0 PRG:6DC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ADD0 PRG:6DD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ADE0 PRG:6DE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ADF0 PRG:6DF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE00 PRG:6E00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE10 PRG:6E10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE20 PRG:6E20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE30 PRG:6E30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE40 PRG:6E40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE50 PRG:6E50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE60 PRG:6E60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE70 PRG:6E70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE80 PRG:6E80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AE90 PRG:6E90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AEA0 PRG:6EA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AEB0 PRG:6EB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AEC0 PRG:6EC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AED0 PRG:6ED0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AEE0 PRG:6EE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AEF0 PRG:6EF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF00 PRG:6F00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF10 PRG:6F10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF20 PRG:6F20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF30 PRG:6F30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF40 PRG:6F40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF50 PRG:6F50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF60 PRG:6F60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF70 PRG:6F70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF80 PRG:6F80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AF90 PRG:6F90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AFA0 PRG:6FA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AFB0 PRG:6FB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AFC0 PRG:6FC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AFD0 PRG:6FD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AFE0 PRG:6FE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$AFF0 PRG:6FF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B000 PRG:7000  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B010 PRG:7010  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B020 PRG:7020  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B030 PRG:7030  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B040 PRG:7040  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B050 PRG:7050  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B060 PRG:7060  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B070 PRG:7070  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B080 PRG:7080  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B090 PRG:7090  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B0A0 PRG:70A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B0B0 PRG:70B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B0C0 PRG:70C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B0D0 PRG:70D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B0E0 PRG:70E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B0F0 PRG:70F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B100 PRG:7100  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B110 PRG:7110  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B120 PRG:7120  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B130 PRG:7130  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B140 PRG:7140  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B150 PRG:7150  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B160 PRG:7160  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B170 PRG:7170  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B180 PRG:7180  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B190 PRG:7190  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B1A0 PRG:71A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B1B0 PRG:71B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B1C0 PRG:71C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39  ; CPU:$B1D0 PRG:71D0  FF FF FF FF FF FF 30 31 32 33 34 35 36 37 38 39
-    .byte $04, $01, $30, $30, $30, $30, $0E, $31, $2A, $28, $0E, $39, $27, $18, $0E, $36  ; CPU:$B1E0 PRG:71E0  04 01 30 30 30 30 0E 31 2A 28 0E 39 27 18 0E 36
-    .byte $31, $17, $0E, $31, $15, $22, $0E, $31, $2A, $28, $FF, $30, $25, $22, $FF, $2B  ; CPU:$B1F0 PRG:71F0  31 17 0E 31 15 22 0E 31 2A 28 FF 30 25 22 FF 2B
-    .byte $28, $30, $FF, $31, $15, $22, $00, $20, $20, $23, $23, $00, $21, $01, $01, $01  ; CPU:$B200 PRG:7200  28 30 FF 31 15 22 00 20 20 23 23 00 21 01 01 01
-    .byte $01, $01, $21, $01, $00, $01, $00, $00, $82, $F2, $88, $F2, $90, $F2, $98, $F2  ; CPU:$B210 PRG:7210  01 01 21 01 00 01 00 00 82 F2 88 F2 90 F2 98 F2
-    .byte $78, $F6, $91, $F6, $64, $F6, $68, $F6, $6C, $F6, $70, $F6, $74, $F6, $C6, $F2  ; CPU:$B220 PRG:7220  78 F6 91 F6 64 F6 68 F6 6C F6 70 F6 74 F6 C6 F2
-    .byte $56, $F2, $5A, $F2, $5E, $F2, $00, $00, $00, $F8, $00, $F8, $00, $F8, $00, $F8  ; CPU:$B230 PRG:7230  56 F2 5A F2 5E F2 00 00 00 F8 00 F8 00 F8 00 F8
-    .byte $00, $F8, $48, $98, $00, $F8, $00, $F8, $00, $F8, $00, $F8, $00, $F8, $44, $78  ; CPU:$B240 PRG:7240  00 F8 48 98 00 F8 00 F8 00 F8 00 F8 00 F8 44 78
-    .byte $A0, $6D, $A0, $85, $B0, $85, $62, $F2, $FF, $FF, $6A, $F2, $FF, $FF, $74, $F2  ; CPU:$B250 PRG:7250  A0 6D A0 85 B0 85 62 F2 FF FF 6A F2 FF FF 74 F2
-    .byte $FF, $FF, $02, $03, $25, $34, $4A, $90, $91, $92, $02, $04, $A3, $A4, $C1, $E4  ; CPU:$B260 PRG:7260  FF FF 02 03 25 34 4A 90 91 92 02 04 A3 A4 C1 E4
-    .byte $E6, $E7, $E9, $EA, $03, $04, $A5, $B3, $B4, $E5, $ED, $EE, $E8, $FF, $FF, $EB  ; CPU:$B270 PRG:7270  E6 E7 E9 EA 03 04 A5 B3 B4 E5 ED EE E8 FF FF EB
-    .byte $EC, $FF, $AE, $F2, $BA, $F2, $FF, $FF, $B4, $F2, $C0, $F2, $B4, $F2, $FF, $FF  ; CPU:$B280 PRG:7280  EC FF AE F2 BA F2 FF FF B4 F2 C0 F2 B4 F2 FF FF
-    .byte $BA, $F2, $AE, $F2, $AE, $F2, $FF, $FF, $C0, $F2, $B4, $F2, $FF, $FF, $A8, $F2  ; CPU:$B290 PRG:7290  BA F2 AE F2 AE F2 FF FF C0 F2 B4 F2 FF FF A8 F2
-    .byte $AE, $F2, $B4, $F2, $AE, $F2, $B4, $F2, $02, $02, $FF, $FF, $FF, $FF, $02, $02  ; CPU:$B2A0 PRG:72A0  AE F2 B4 F2 AE F2 B4 F2 02 02 FF FF FF FF 02 02
-    .byte $01, $02, $03, $04, $02, $02, $05, $06, $07, $08, $02, $02, $A6, $A7, $A8, $A9  ; CPU:$B2B0 PRG:72B0  01 02 03 04 02 02 05 06 07 08 02 02 A6 A7 A8 A9
-    .byte $02, $02, $AA, $AB, $AC, $AD, $CA, $F2, $FF, $FF, $05, $01, $94, $95, $A1, $9F  ; CPU:$B2C0 PRG:72C0  02 02 AA AB AC AD CA F2 FF FF 05 01 94 95 A1 9F
-    .byte $97, $00, $00, $77, $78, $7C, $82, $8B, $8C, $A3, $A4, $A5, $A6, $A7, $A8, $AD  ; CPU:$B2D0 PRG:72D0  97 00 00 77 78 7C 82 8B 8C A3 A4 A5 A6 A7 A8 AD
-    .byte $AE, $AF, $B0, $B5, $B6, $B7, $B8, $6D, $6E, $6F, $72, $84, $8A, $A1, $A2, $A9  ; CPU:$B2E0 PRG:72E0  AE AF B0 B5 B6 B7 B8 6D 6E 6F 72 84 8A A1 A2 A9
-    .byte $AA, $AB, $AC, $B1, $B2, $B3, $B4, $B9, $BA, $BB, $BC, $A8, $F2, $01, $F3, $07  ; CPU:$B2F0 PRG:72F0  AA AB AC B1 B2 B3 B4 B9 BA BB BC A8 F2 01 F3 07
-    .byte $F3, $02, $02, $E8, $E9, $EA, $EB, $02, $02, $EC, $ED, $EE, $EF, $02, $02, $BD  ; CPU:$B300 PRG:7300  F3 02 02 E8 E9 EA EB 02 02 EC ED EE EF 02 02 BD
-    .byte $BE, $BF, $C0, $00, $00, $21, $F3, $31, $F3, $41, $F3, $51, $F3, $61, $F3, $71  ; CPU:$B310 PRG:7310  BE BF C0 00 00 21 F3 31 F3 41 F3 51 F3 61 F3 71
-    .byte $F3, $01, $11, $02, $12, $02, $11, $01, $10, $11, $01, $10, $00, $10, $01, $11  ; CPU:$B320 PRG:7320  F3 01 11 02 12 02 11 01 10 11 01 10 00 10 01 11
-    .byte $02, $02, $11, $22, $12, $02, $12, $22, $11, $22, $12, $02, $11, $22, $11, $02  ; CPU:$B330 PRG:7330  02 02 11 22 12 02 12 22 11 22 12 02 11 22 11 02
-    .byte $12, $02, $10, $11, $12, $01, $12, $11, $10, $11, $03, $02, $01, $12, $01, $02  ; CPU:$B340 PRG:7340  12 02 10 11 12 01 12 11 10 11 03 02 01 12 01 02
-    .byte $03, $11, $31, $22, $12, $12, $32, $22, $11, $32, $12, $22, $31, $31, $11, $22  ; CPU:$B350 PRG:7350  03 11 31 22 12 12 32 22 11 32 12 22 31 31 11 22
-    .byte $32, $10, $20, $11, $12, $12, $23, $11, $10, $23, $13, $22, $21, $21, $10, $22  ; CPU:$B360 PRG:7360  32 10 20 11 12 12 23 11 10 23 13 22 21 21 10 22
-    .byte $23, $01, $11, $21, $12, $02, $11, $22, $10, $22, $11, $02, $10, $21, $11, $01  ; CPU:$B370 PRG:7370  23 01 11 21 12 02 11 22 10 22 11 02 10 21 11 01
-    .byte $12, $01, $01, $02, $03, $04, $01, $02, $03, $04, $01, $02, $03, $04, $00, $00  ; CPU:$B380 PRG:7380  12 01 01 02 03 04 01 02 03 04 01 02 03 04 00 00
-    .byte $9C, $F3, $BC, $F3, $DC, $F3, $FC, $F3, $1C, $F4, $3C, $F4, $01, $01, $01, $01  ; CPU:$B390 PRG:7390  9C F3 BC F3 DC F3 FC F3 1C F4 3C F4 01 01 01 01
-    .byte $02, $01, $01, $01, $01, $01, $02, $01, $01, $01, $02, $02, $01, $02, $02, $01  ; CPU:$B3A0 PRG:73A0  02 01 01 01 01 01 02 01 01 01 02 02 01 02 02 01
-    .byte $01, $02, $01, $03, $02, $01, $01, $03, $01, $03, $02, $04, $01, $01, $01, $01  ; CPU:$B3B0 PRG:73B0  01 02 01 03 02 01 01 03 01 03 02 04 01 01 01 01
-    .byte $01, $01, $01, $02, $01, $01, $02, $01, $02, $01, $02, $01, $02, $01, $01, $02  ; CPU:$B3C0 PRG:73C0  01 01 01 02 01 01 02 01 02 01 02 01 02 01 01 02
-    .byte $01, $01, $03, $02, $02, $01, $03, $01, $01, $02, $03, $04, $01, $01, $01, $01  ; CPU:$B3D0 PRG:73D0  01 01 03 02 02 01 03 01 01 02 03 04 01 01 01 01
-    .byte $02, $01, $01, $01, $01, $01, $02, $01, $02, $01, $01, $02, $01, $02, $01, $02  ; CPU:$B3E0 PRG:73E0  02 01 01 01 01 01 02 01 02 01 01 02 01 02 01 02
-    .byte $01, $02, $03, $01, $01, $01, $02, $03, $04, $01, $02, $03, $01, $01, $01, $01  ; CPU:$B3F0 PRG:73F0  01 02 03 01 01 01 02 03 04 01 02 03 01 01 01 01
-    .byte $01, $02, $01, $01, $01, $01, $02, $01, $02, $02, $01, $01, $02, $01, $02, $01  ; CPU:$B400 PRG:7400  01 02 01 01 01 01 02 01 02 02 01 01 02 01 02 01
-    .byte $01, $03, $02, $01, $02, $01, $01, $03, $01, $04, $02, $03, $01, $01, $01, $01  ; CPU:$B410 PRG:7410  01 03 02 01 02 01 01 03 01 04 02 03 01 01 01 01
-    .byte $01, $01, $01, $02, $01, $02, $01, $01, $01, $01, $02, $02, $02, $01, $01, $02  ; CPU:$B420 PRG:7420  01 01 01 02 01 02 01 01 01 01 02 02 02 01 01 02
-    .byte $01, $01, $02, $03, $02, $03, $01, $01, $02, $01, $03, $04, $01, $01, $01, $01  ; CPU:$B430 PRG:7430  01 01 02 03 02 03 01 01 02 01 03 04 01 01 01 01
-    .byte $01, $01, $02, $01, $01, $02, $01, $01, $02, $01, $02, $01, $01, $02, $02, $01  ; CPU:$B440 PRG:7440  01 01 02 01 01 02 01 01 02 01 02 01 01 02 02 01
-    .byte $03, $02, $01, $01, $01, $01, $03, $02, $03, $01, $04, $02, $64, $F4, $64, $F5  ; CPU:$B450 PRG:7450  03 02 01 01 01 01 03 02 03 01 04 02 64 F4 64 F5
-    .byte $E4, $F4, $E4, $F5, $24, $63, $14, $24, $55, $62, $14, $50, $60, $31, $56, $40  ; CPU:$B460 PRG:7460  E4 F4 E4 F5 24 63 14 24 55 62 14 50 60 31 56 40
-    .byte $61, $45, $11, $60, $10, $44, $32, $61, $13, $20, $43, $34, $15, $37, $63, $32  ; CPU:$B470 PRG:7470  61 45 11 60 10 44 32 61 13 20 43 34 15 37 63 32
-    .byte $33, $35, $12, $34, $25, $32, $10, $12, $34, $15, $62, $46, $23, $44, $13, $31  ; CPU:$B480 PRG:7480  33 35 12 34 25 32 10 12 34 15 62 46 23 44 13 31
-    .byte $17, $10, $22, $16, $51, $31, $41, $65, $10, $62, $11, $20, $30, $14, $34, $11  ; CPU:$B490 PRG:7490  17 10 22 16 51 31 41 65 10 62 11 20 30 14 34 11
-    .byte $34, $27, $13, $60, $37, $26, $33, $32, $32, $11, $53, $52, $61, $52, $12, $64  ; CPU:$B4A0 PRG:74A0  34 27 13 60 37 26 33 32 32 11 53 52 61 52 12 64
-    .byte $57, $67, $67, $64, $30, $31, $64, $30, $27, $10, $63, $40, $17, $31, $67, $60  ; CPU:$B4B0 PRG:74B0  57 67 67 64 30 31 64 30 27 10 63 40 17 31 67 60
-    .byte $13, $47, $10, $40, $13, $33, $60, $21, $33, $63, $60, $66, $64, $61, $35, $50  ; CPU:$B4C0 PRG:74C0  13 47 10 40 13 33 60 21 33 63 60 66 64 61 35 50
-    .byte $21, $12, $62, $53, $17, $41, $11, $42, $63, $65, $14, $54, $62, $30, $30, $12  ; CPU:$B4D0 PRG:74D0  21 12 62 53 17 41 11 42 63 65 14 54 62 30 30 12
-    .byte $33, $30, $36, $60, $14, $55, $11, $15, $64, $24, $33, $61, $10, $26, $13, $35  ; CPU:$B4E0 PRG:74E0  33 30 36 60 14 55 11 15 64 24 33 61 10 26 13 35
-    .byte $31, $62, $66, $37, $26, $12, $45, $54, $14, $35, $55, $16, $42, $34, $45, $15  ; CPU:$B4F0 PRG:74F0  31 62 66 37 26 12 45 54 14 35 55 16 42 34 45 15
-    .byte $54, $66, $35, $17, $25, $65, $43, $63, $46, $15, $32, $64, $32, $47, $33, $66  ; CPU:$B500 PRG:7500  54 66 35 17 25 65 43 63 46 15 32 64 32 47 33 66
-    .byte $46, $20, $56, $45, $66, $25, $21, $23, $13, $26, $45, $14, $51, $46, $17, $43  ; CPU:$B510 PRG:7510  46 20 56 45 66 25 21 23 13 26 45 14 51 46 17 43
-    .byte $56, $34, $16, $63, $55, $66, $25, $37, $15, $30, $36, $47, $15, $57, $41, $27  ; CPU:$B520 PRG:7520  56 34 16 63 55 66 25 37 15 30 36 47 15 57 41 27
-    .byte $25, $67, $24, $36, $13, $37, $54, $27, $21, $16, $44, $57, $36, $44, $50, $17  ; CPU:$B530 PRG:7530  25 67 24 36 13 37 54 27 21 16 44 57 36 44 50 17
-    .byte $33, $65, $41, $43, $12, $55, $46, $16, $45, $23, $65, $53, $47, $26, $51, $35  ; CPU:$B540 PRG:7540  33 65 41 43 12 55 46 16 45 23 65 53 47 26 51 35
-    .byte $46, $62, $57, $22, $27, $40, $67, $52, $67, $35, $36, $60, $24, $56, $65, $51  ; CPU:$B550 PRG:7550  46 62 57 22 27 40 67 52 67 35 36 60 24 56 65 51
-    .byte $44, $23, $25, $53, $64, $50, $17, $55, $46, $17, $40, $51, $34, $47, $53, $60  ; CPU:$B560 PRG:7560  44 23 25 53 64 50 17 55 46 17 40 51 34 47 53 60
-    .byte $54, $27, $63, $10, $37, $20, $17, $27, $14, $41, $30, $26, $35, $36, $20, $16  ; CPU:$B570 PRG:7570  54 27 63 10 37 20 17 27 14 41 30 26 35 36 20 16
-    .byte $55, $14, $40, $12, $24, $52, $17, $21, $37, $54, $21, $63, $14, $46, $30, $13  ; CPU:$B580 PRG:7580  55 14 40 12 24 52 17 21 37 54 21 63 14 46 30 13
-    .byte $34, $26, $44, $11, $36, $23, $65, $42, $64, $50, $25, $45, $16, $12, $41, $56  ; CPU:$B590 PRG:7590  34 26 44 11 36 23 65 42 64 50 25 45 16 12 41 56
-    .byte $31, $32, $47, $53, $35, $45, $30, $10, $27, $52, $24, $13, $36, $11, $57, $23  ; CPU:$B5A0 PRG:75A0  31 32 47 53 35 45 30 10 27 52 24 13 36 11 57 23
-    .byte $42, $21, $65, $25, $66, $16, $46, $31, $26, $62, $47, $22, $43, $67, $60, $37  ; CPU:$B5B0 PRG:75B0  42 21 65 25 66 16 46 31 26 62 47 22 43 67 60 37
-    .byte $55, $62, $33, $57, $44, $15, $62, $27, $65, $22, $61, $67, $25, $66, $51, $57  ; CPU:$B5C0 PRG:75C0  55 62 33 57 44 15 62 27 65 22 61 67 25 66 51 57
-    .byte $37, $57, $47, $15, $43, $37, $35, $45, $67, $56, $65, $15, $46, $56, $32, $43  ; CPU:$B5D0 PRG:75D0  37 57 47 15 43 37 35 45 67 56 65 15 46 56 32 43
-    .byte $61, $33, $66, $67, $44, $45, $22, $41, $16, $43, $21, $55, $14, $55, $23, $10  ; CPU:$B5E0 PRG:75E0  61 33 66 67 44 45 22 41 16 43 21 55 14 55 23 10
-    .byte $42, $13, $61, $56, $54, $37, $26, $66, $44, $67, $12, $17, $15, $65, $47, $65  ; CPU:$B5F0 PRG:75F0  42 13 61 56 54 37 26 66 44 67 12 17 15 65 47 65
-    .byte $65, $36, $66, $22, $37, $46, $33, $44, $65, $36, $11, $66, $63, $41, $43, $65  ; CPU:$B600 PRG:7600  65 36 66 22 37 46 33 44 65 36 11 66 63 41 43 65
-    .byte $17, $35, $31, $37, $56, $62, $45, $33, $15, $42, $14, $17, $56, $14, $54, $55  ; CPU:$B610 PRG:7610  17 35 31 37 56 62 45 33 15 42 14 17 56 14 54 55
-    .byte $64, $46, $27, $35, $16, $26, $53, $57, $45, $50, $15, $37, $32, $36, $11, $26  ; CPU:$B620 PRG:7620  64 46 27 35 16 26 53 57 45 50 15 37 32 36 11 26
-    .byte $17, $34, $56, $67, $35, $24, $36, $13, $63, $65, $16, $15, $34, $61, $40, $25  ; CPU:$B630 PRG:7630  17 34 56 67 35 24 36 13 63 65 16 15 34 61 40 25
-    .byte $53, $27, $46, $31, $13, $26, $55, $60, $26, $57, $66, $25, $25, $56, $47, $54  ; CPU:$B640 PRG:7640  53 27 46 31 13 26 55 60 26 57 66 25 25 56 47 54
-    .byte $16, $27, $64, $25, $45, $35, $23, $46, $27, $32, $36, $53, $25, $52, $35, $24  ; CPU:$B650 PRG:7650  16 27 64 25 45 35 23 46 27 32 36 53 25 52 35 24
-    .byte $66, $44, $55, $57, $7C, $F6, $FF, $FF, $7F, $F6, $FF, $FF, $82, $F6, $FF, $FF  ; CPU:$B660 PRG:7660  66 44 55 57 7C F6 FF FF 7F F6 FF FF 82 F6 FF FF
-    .byte $85, $F6, $FF, $FF, $88, $F6, $FF, $FF, $8B, $F6, $FF, $FF, $01, $01, $79, $01  ; CPU:$B670 PRG:7670  85 F6 FF FF 88 F6 FF FF 8B F6 FF FF 01 01 79 01
-    .byte $01, $7A, $01, $01, $7B, $01, $01, $7C, $01, $01, $7D, $02, $02, $7E, $7F, $80  ; CPU:$B680 PRG:7680  01 7A 01 01 7B 01 01 7C 01 01 7D 02 02 7E 7F 80
-    .byte $81, $95, $F6, $FF, $FF, $04, $04, $69, $6A, $6B, $6C, $6D, $6E, $6F, $70, $71  ; CPU:$B690 PRG:7690  81 95 F6 FF FF 04 04 69 6A 6B 6C 6D 6E 6F 70 71
-    .byte $72, $73, $74, $75, $76, $77, $78, $AB, $F6, $EB, $F6, $55, $C5, $C5, $C5, $45  ; CPU:$B6A0 PRG:76A0  72 73 74 75 76 77 78 AB F6 EB F6 55 C5 C5 C5 45
-    .byte $55, $55, $55, $55, $00, $00, $00, $44, $54, $54, $57, $55, $00, $00, $00, $44  ; CPU:$B6B0 PRG:76B0  55 55 55 55 00 00 00 44 54 54 57 55 00 00 00 44
-    .byte $55, $55, $55, $55, $00, $00, $00, $44, $55, $55, $55, $55, $00, $00, $00, $44  ; CPU:$B6C0 PRG:76C0  55 55 55 55 00 00 00 44 55 55 55 55 00 00 00 44
-    .byte $55, $55, $55, $55, $00, $00, $00, $44, $DD, $FF, $55, $55, $AA, $22, $00, $44  ; CPU:$B6D0 PRG:76D0  55 55 55 55 00 00 00 44 DD FF 55 55 AA 22 00 44
-    .byte $5D, $53, $55, $F5, $AA, $AA, $AA, $26, $F5, $F5, $F5, $D5, $F5, $F5, $F5, $D5  ; CPU:$B6E0 PRG:76E0  5D 53 55 F5 AA AA AA 26 F5 F5 F5 D5 F5 F5 F5 D5
-    .byte $F5, $F5, $F5, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD  ; CPU:$B6F0 PRG:76F0  F5 F5 F5 DD FF FF FF DD FF FF FF DD FF FF FF DD
-    .byte $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD  ; CPU:$B700 PRG:7700  FF FF FF DD FF FF FF DD FF FF FF DD FF FF FF DD
-    .byte $FF, $FF, $FF, $DD, $FF, $FF, $FF, $DD, $FF, $FF, $FF, $55, $55, $55, $55, $55  ; CPU:$B710 PRG:7710  FF FF FF DD FF FF FF DD FF FF FF 55 55 55 55 55
-    .byte $55, $55, $55, $55, $55, $55, $55, $55, $55, $55, $55, $44, $20, $84, $20, $C4  ; CPU:$B720 PRG:7720  55 55 55 55 55 55 55 55 55 55 55 44 20 84 20 C4
-    .byte $20, $04, $21, $44, $21, $84, $21, $C4, $21, $04, $22, $44, $22, $84, $22, $C4  ; CPU:$B730 PRG:7730  20 04 21 44 21 84 21 C4 21 04 22 44 22 84 22 C4
-    .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $66, $20, $A6, $20, $E6  ; CPU:$B740 PRG:7740  22 50 24 50 24 50 24 50 24 50 24 66 20 A6 20 E6
-    .byte $20, $26, $21, $66, $21, $A6, $21, $E6, $21, $26, $22, $66, $22, $A6, $22, $E6  ; CPU:$B750 PRG:7750  20 26 21 66 21 A6 21 E6 21 26 22 66 22 A6 22 E6
-    .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $48, $20, $88, $20, $C8  ; CPU:$B760 PRG:7760  22 50 24 50 24 50 24 50 24 50 24 48 20 88 20 C8
-    .byte $20, $08, $21, $48, $21, $88, $21, $C8, $21, $08, $22, $48, $22, $88, $22, $C8  ; CPU:$B770 PRG:7770  20 08 21 48 21 88 21 C8 21 08 22 48 22 88 22 C8
-    .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $6A, $20, $AA, $20, $EA  ; CPU:$B780 PRG:7780  22 50 24 50 24 50 24 50 24 50 24 6A 20 AA 20 EA
-    .byte $20, $2A, $21, $6A, $21, $AA, $21, $EA, $21, $2A, $22, $6A, $22, $AA, $22, $EA  ; CPU:$B790 PRG:7790  20 2A 21 6A 21 AA 21 EA 21 2A 22 6A 22 AA 22 EA
-    .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $4C, $20, $8C, $20, $CC  ; CPU:$B7A0 PRG:77A0  22 50 24 50 24 50 24 50 24 50 24 4C 20 8C 20 CC
-    .byte $20, $0C, $21, $4C, $21, $8C, $21, $CC, $21, $0C, $22, $4C, $22, $8C, $22, $CC  ; CPU:$B7B0 PRG:77B0  20 0C 21 4C 21 8C 21 CC 21 0C 22 4C 22 8C 22 CC
-    .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $6E, $20, $AE, $20, $EE  ; CPU:$B7C0 PRG:77C0  22 50 24 50 24 50 24 50 24 50 24 6E 20 AE 20 EE
-    .byte $20, $2E, $21, $6E, $21, $AE, $21, $EE, $21, $2E, $22, $6E, $22, $AE, $22, $EE  ; CPU:$B7D0 PRG:77D0  20 2E 21 6E 21 AE 21 EE 21 2E 22 6E 22 AE 22 EE
-    .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $50, $20, $90, $20, $D0  ; CPU:$B7E0 PRG:77E0  22 50 24 50 24 50 24 50 24 50 24 50 20 90 20 D0
-    .byte $20, $10, $21, $50, $21, $90, $21, $D0, $21, $10, $22, $50, $22, $90, $22, $D0  ; CPU:$B7F0 PRG:77F0  20 10 21 50 21 90 21 D0 21 10 22 50 22 90 22 D0
-    .byte $22, $50, $24, $50, $24, $50, $24, $50, $24, $50, $24, $04, $01, $F8, $4F, $4F  ; CPU:$B800 PRG:7800  22 50 24 50 24 50 24 50 24 50 24 04 01 F8 4F 4F
-    .byte $44, $04, $02, $F8, $41, $4D, $45, $4F, $F9, $45, $52, $03, $01, $55, $55, $55  ; CPU:$B810 PRG:7810  44 04 02 F8 41 4D 45 4F F9 45 52 03 01 55 55 55
-    .byte $03, $01, $FF, $FF, $FF, $08, $02, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$B820 PRG:7820  03 01 FF FF FF 08 02 FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $07, $01, $53, $54, $41, $F8, $45, $FF, $D4  ; CPU:$B830 PRG:7830  FF FF FF FF FF FF FF 07 01 53 54 41 F8 45 FF D4
-    .byte $05, $01, $3C, $41, $55, $53, $45, $08, $22, $4F, $F8, $E1, $23, $1B, $F8, $08  ; CPU:$B840 PRG:7840  05 01 3C 41 55 53 45 08 22 4F F8 E1 23 1B F8 08
-    .byte $03, $45, $D5, $44, $FF, $FF, $FF, $FF, $FF, $43, $4F, $D5, $54, $49, $D5, $55  ; CPU:$B850 PRG:7850  03 45 D5 44 FF FF FF FF FF 43 4F D5 54 49 D5 55
-    .byte $45, $43, $52, $45, $44, $49, $54, $FF, $FF, $08, $22, $25, $F8, $28, $22, $25  ; CPU:$B860 PRG:7860  45 43 52 45 44 49 54 FF FF 08 22 25 F8 28 22 25
-    .byte $F8, $E1, $23, $20, $F8, $05, $04, $03, $02, $01, $00, $EF, $FF, $0F, $10, $01  ; CPU:$B870 PRG:7870  F8 E1 23 20 F8 05 04 03 02 01 00 EF FF 0F 10 01
-    .byte $F0, $F1, $FF, $11, $10, $01, $F0, $00, $F0, $04, $F2, $08, $F4, $0C, $F6, $10  ; CPU:$B880 PRG:7880  F0 F1 FF 11 10 01 F0 00 F0 04 F2 08 F4 0C F6 10
-    .byte $F8, $10, $FC, $10, $00, $10, $04, $10, $08, $0C, $0A, $08, $0C, $04, $0E, $00  ; CPU:$B890 PRG:7890  F8 10 FC 10 00 10 04 10 08 0C 0A 08 0C 04 0E 00
-    .byte $10, $FC, $0E, $F8, $0C, $F4, $0A, $F0, $08, $F0, $04, $F0, $00, $F0, $FC, $F0  ; CPU:$B8A0 PRG:78A0  10 FC 0E F8 0C F4 0A F0 08 F0 04 F0 00 F0 FC F0
-    .byte $F8, $F4, $F6, $F8, $F4, $FC, $F2, $04, $01, $55, $55, $55, $55, $E5, $F8, $FA  ; CPU:$B8B0 PRG:78B0  F8 F4 F6 F8 F4 FC F2 04 01 55 55 55 55 E5 F8 FA
-    .byte $F8, $0F, $F9, $24, $F9, $39, $F9, $55, $F9, $71, $F9, $8D, $F9, $A9, $F9, $CC  ; CPU:$B8C0 PRG:78C0  F8 0F F9 24 F9 39 F9 55 F9 71 F9 8D F9 A9 F9 CC
-    .byte $F9, $EF, $F9, $12, $FA, $35, $FA, $5F, $FA, $89, $FA, $B3, $FA, $DD, $FA, $0E  ; CPU:$B8D0 PRG:78D0  F9 EF F9 12 FA 35 FA 5F FA 89 FA B3 FA DD FA 0E
-    .byte $FB, $3F, $FB, $70, $FB, $03, $01, $00, $02, $04, $00, $04, $03, $00, $01, $04  ; CPU:$B8E0 PRG:78E0  FB 3F FB 70 FB 03 01 00 02 04 00 04 03 00 01 04
-    .byte $00, $03, $02, $00, $04, $03, $00, $02, $01, $00, $04, $03, $00, $01, $02, $00  ; CPU:$B8F0 PRG:78F0  00 03 02 00 04 03 00 02 01 00 04 03 00 01 02 00
-    .byte $04, $03, $00, $02, $01, $00, $80, $03, $00, $01, $02, $00, $03, $04, $00, $02  ; CPU:$B900 PRG:7900  04 03 00 02 01 00 80 03 00 01 02 00 03 04 00 02
-    .byte $01, $00, $04, $03, $00, $80, $04, $00, $01, $02, $00, $04, $03, $00, $02, $01  ; CPU:$B910 PRG:7910  01 00 04 03 00 80 04 00 01 02 00 04 03 00 02 01
-    .byte $00, $04, $02, $00, $03, $02, $00, $04, $01, $00, $02, $03, $00, $04, $01, $00  ; CPU:$B920 PRG:7920  00 04 02 00 03 02 00 04 01 00 02 03 00 04 01 00
-    .byte $80, $02, $00, $03, $01, $00, $04, $02, $00, $02, $01, $03, $00, $04, $80, $02  ; CPU:$B930 PRG:7930  80 02 00 03 01 00 04 02 00 02 01 03 00 04 80 02
-    .byte $00, $02, $04, $01, $00, $03, $02, $03, $00, $80, $01, $04, $00, $04, $02, $03  ; CPU:$B940 PRG:7940  00 02 04 01 00 03 02 03 00 80 01 04 00 04 02 03
-    .byte $00, $03, $01, $04, $00, $02, $03, $01, $00, $01, $04, $02, $00, $02, $04, $01  ; CPU:$B950 PRG:7950  00 03 01 04 00 02 03 01 00 01 04 02 00 02 04 01
-    .byte $00, $03, $80, $02, $00, $02, $01, $03, $00, $03, $80, $02, $00, $02, $04, $01  ; CPU:$B960 PRG:7960  00 03 80 02 00 02 01 03 00 03 80 02 00 02 04 01
-    .byte $00, $02, $01, $04, $00, $04, $03, $01, $00, $80, $02, $04, $00, $01, $03, $01  ; CPU:$B970 PRG:7970  00 02 01 04 00 04 03 01 00 80 02 04 00 01 03 01
-    .byte $00, $02, $80, $04, $00, $04, $03, $01, $00, $01, $02, $04, $00, $02, $04, $03  ; CPU:$B980 PRG:7980  00 02 80 04 00 04 03 01 00 01 02 04 00 02 04 03
-    .byte $00, $01, $80, $01, $00, $04, $03, $02, $00, $02, $80, $04, $00, $01, $03, $02  ; CPU:$B990 PRG:7990  00 01 80 01 00 04 03 02 00 02 80 04 00 01 03 02
-    .byte $00, $03, $04, $01, $00, $02, $01, $03, $00, $04, $04, $03, $02, $00, $01, $80  ; CPU:$B9A0 PRG:79A0  00 03 04 01 00 02 01 03 00 04 04 03 02 00 01 80
-    .byte $02, $04, $00, $04, $03, $01, $02, $00, $02, $80, $04, $03, $00, $03, $01, $02  ; CPU:$B9B0 PRG:79B0  02 04 00 04 03 01 02 00 02 80 04 03 00 03 01 02
-    .byte $04, $00, $04, $04, $03, $01, $00, $01, $80, $04, $02, $00, $03, $04, $03, $02  ; CPU:$B9C0 PRG:79C0  04 00 04 04 03 01 00 01 80 04 02 00 03 04 03 02
-    .byte $00, $02, $01, $80, $04, $00, $01, $80, $03, $02, $00, $03, $02, $01, $04, $00  ; CPU:$B9D0 PRG:79D0  00 02 01 80 04 00 01 80 03 02 00 03 02 01 04 00
-    .byte $04, $01, $03, $02, $00, $80, $02, $04, $01, $00, $03, $01, $03, $02, $00, $01  ; CPU:$B9E0 PRG:79E0  04 01 03 02 00 80 02 04 01 00 03 01 03 02 00 01
-    .byte $02, $04, $03, $00, $03, $04, $01, $02, $00, $80, $80, $03, $04, $00, $04, $01  ; CPU:$B9F0 PRG:79F0  02 04 03 00 03 04 01 02 00 80 80 03 04 00 04 01
-    .byte $02, $01, $00, $03, $01, $80, $03, $00, $03, $02, $01, $04, $00, $01, $04, $02  ; CPU:$BA00 PRG:7A00  02 01 00 03 01 80 03 00 03 02 01 04 00 01 04 02
-    .byte $03, $00, $01, $01, $02, $04, $00, $04, $03, $01, $03, $00, $03, $02, $04, $02  ; CPU:$BA10 PRG:7A10  03 00 01 01 02 04 00 04 03 01 03 00 03 02 04 02
-    .byte $00, $01, $80, $03, $01, $00, $02, $80, $02, $04, $00, $04, $01, $03, $04, $00  ; CPU:$BA20 PRG:7A20  00 01 80 03 01 00 02 80 02 04 00 04 01 03 04 00
-    .byte $03, $02, $80, $02, $00, $04, $02, $01, $02, $03, $00, $03, $80, $04, $04, $01  ; CPU:$BA30 PRG:7A30  03 02 80 02 00 04 02 01 02 03 00 03 80 04 04 01
-    .byte $00, $04, $02, $03, $80, $02, $00, $03, $01, $04, $01, $03, $00, $02, $80, $80  ; CPU:$BA40 PRG:7A40  00 04 02 03 80 02 00 03 01 04 01 03 00 02 80 80
-    .byte $02, $04, $00, $01, $04, $02, $03, $02, $00, $03, $80, $01, $01, $04, $00, $04  ; CPU:$BA50 PRG:7A50  02 04 00 01 04 02 03 02 00 03 80 01 01 04 00 04
-    .byte $01, $02, $03, $01, $00, $02, $03, $01, $80, $02, $00, $01, $80, $04, $03, $04  ; CPU:$BA60 PRG:7A60  01 02 03 01 00 02 03 01 80 02 00 01 80 04 03 04
-    .byte $00, $04, $02, $01, $80, $02, $00, $03, $01, $03, $04, $01, $00, $04, $02, $80  ; CPU:$BA70 PRG:7A70  00 04 02 01 80 02 00 03 01 03 04 01 00 04 02 80
-    .byte $02, $03, $00, $01, $03, $80, $04, $02, $00, $02, $01, $03, $04, $01, $00, $03  ; CPU:$BA80 PRG:7A80  02 03 00 01 03 80 04 02 00 02 01 03 04 01 00 03
-    .byte $80, $04, $02, $03, $00, $02, $02, $03, $01, $04, $00, $01, $04, $80, $02, $03  ; CPU:$BA90 PRG:7A90  80 04 02 03 00 02 02 03 01 04 00 01 04 80 02 03
-    .byte $00, $02, $80, $03, $04, $01, $00, $03, $01, $02, $80, $02, $00, $02, $04, $03  ; CPU:$BAA0 PRG:7AA0  00 02 80 03 04 01 00 03 01 02 80 02 00 02 04 03
-    .byte $01, $03, $00, $04, $04, $01, $02, $03, $00, $02, $03, $80, $01, $04, $00, $01  ; CPU:$BAB0 PRG:7AB0  01 03 00 04 04 01 02 03 00 02 03 80 01 04 00 01
-    .byte $01, $02, $03, $02, $00, $04, $03, $80, $01, $03, $00, $01, $80, $02, $04, $02  ; CPU:$BAC0 PRG:7AC0  01 02 03 02 00 04 03 80 01 03 00 01 80 02 04 02
-    .byte $00, $03, $02, $01, $80, $01, $00, $04, $01, $03, $02, $04, $00, $01, $02, $03  ; CPU:$BAD0 PRG:7AD0  00 03 02 01 80 01 00 04 01 03 02 04 00 01 02 03
-    .byte $04, $03, $02, $00, $03, $80, $04, $01, $03, $04, $00, $01, $01, $03, $04, $80  ; CPU:$BAE0 PRG:7AE0  04 03 02 00 03 80 04 01 03 04 00 01 01 03 04 80
-    .byte $01, $00, $02, $04, $80, $01, $03, $04, $00, $03, $01, $02, $80, $04, $01, $00  ; CPU:$BAF0 PRG:7AF0  01 00 02 04 80 01 03 04 00 03 01 02 80 04 01 00
-    .byte $02, $04, $03, $01, $02, $03, $00, $03, $01, $80, $03, $04, $01, $00, $04, $02  ; CPU:$BB00 PRG:7B00  02 04 03 01 02 03 00 03 01 80 03 04 01 00 04 02
-    .byte $01, $03, $04, $04, $00, $01, $03, $04, $80, $02, $03, $00, $04, $02, $01, $80  ; CPU:$BB10 PRG:7B10  01 03 04 04 00 01 03 04 80 02 03 00 04 02 01 80
-    .byte $03, $01, $00, $01, $04, $02, $80, $02, $01, $00, $04, $03, $01, $80, $03, $04  ; CPU:$BB20 PRG:7B20  03 01 00 01 04 02 80 02 01 00 04 03 01 80 03 04
-    .byte $00, $01, $02, $03, $80, $02, $01, $00, $02, $04, $01, $04, $03, $04, $00, $03  ; CPU:$BB30 PRG:7B30  00 01 02 03 80 02 01 00 02 04 01 04 03 04 00 03
-    .byte $01, $80, $01, $04, $03, $00, $02, $80, $04, $03, $02, $01, $00, $02, $04, $02  ; CPU:$BB40 PRG:7B40  01 80 01 04 03 00 02 80 04 03 02 01 00 02 04 02
-    .byte $01, $04, $02, $00, $03, $01, $03, $02, $03, $01, $00, $02, $80, $04, $80, $04  ; CPU:$BB50 PRG:7B50  01 04 02 00 03 01 03 02 03 01 00 02 80 04 80 04
-    .byte $02, $00, $03, $01, $02, $80, $03, $01, $00, $02, $03, $04, $02, $04, $03, $00  ; CPU:$BB60 PRG:7B60  02 00 03 01 02 80 03 01 00 02 03 04 02 04 03 00
-    .byte $03, $01, $02, $04, $01, $04, $00, $02, $04, $01, $03, $02, $03, $00, $03, $03  ; CPU:$BB70 PRG:7B70  03 01 02 04 01 04 00 02 04 01 03 02 03 00 03 03
-    .byte $02, $01, $04, $01, $00, $01, $80, $04, $03, $02, $03, $00, $80, $80, $02, $01  ; CPU:$BB80 PRG:7B80  02 01 04 01 00 01 80 04 03 02 03 00 80 80 02 01
-    .byte $04, $02, $00, $02, $04, $03, $80, $80, $01, $00, $03, $01, $02, $01, $04, $03  ; CPU:$BB90 PRG:7B90  04 02 00 02 04 03 80 80 01 00 03 01 02 01 04 03
-    .byte $00, $04, $01, $30, $30, $30, $30, $06, $01, $30, $30, $30, $30, $30, $30, $0A  ; CPU:$BBA0 PRG:7BA0  00 04 01 30 30 30 30 06 01 30 30 30 30 30 30 0A
-    .byte $02, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BBB0 PRG:7BB0  02 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BBC0 PRG:7BC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BBD0 PRG:7BD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BBE0 PRG:7BE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BBF0 PRG:7BF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC00 PRG:7C00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC10 PRG:7C10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC20 PRG:7C20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC30 PRG:7C30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC40 PRG:7C40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC50 PRG:7C50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC60 PRG:7C60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC70 PRG:7C70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC80 PRG:7C80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BC90 PRG:7C90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BCA0 PRG:7CA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BCB0 PRG:7CB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BCC0 PRG:7CC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BCD0 PRG:7CD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BCE0 PRG:7CE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BCF0 PRG:7CF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD00 PRG:7D00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD10 PRG:7D10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD20 PRG:7D20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD30 PRG:7D30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD40 PRG:7D40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD50 PRG:7D50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD60 PRG:7D60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD70 PRG:7D70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD80 PRG:7D80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BD90 PRG:7D90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BDA0 PRG:7DA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BDB0 PRG:7DB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BDC0 PRG:7DC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BDD0 PRG:7DD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BDE0 PRG:7DE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BDF0 PRG:7DF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE00 PRG:7E00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE10 PRG:7E10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE20 PRG:7E20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE30 PRG:7E30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE40 PRG:7E40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE50 PRG:7E50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE60 PRG:7E60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE70 PRG:7E70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE80 PRG:7E80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BE90 PRG:7E90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BEA0 PRG:7EA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BEB0 PRG:7EB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BEC0 PRG:7EC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BED0 PRG:7ED0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BEE0 PRG:7EE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BEF0 PRG:7EF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $A2, $FF, $9A, $78, $D8, $A9, $00, $8D, $00, $20, $8D, $01, $20, $A9, $30, $20  ; CPU:$BF00 PRG:7F00  A2 FF 9A 78 D8 A9 00 8D 00 20 8D 01 20 A9 30 20
-    .byte $49, $FF, $20, $57, $FF, $90, $18, $A9, $10, $20, $49, $FF, $A9, $30, $20, $49  ; CPU:$BF10 PRG:7F10  49 FF 20 57 FF 90 18 A9 10 20 49 FF A9 30 20 49
-    .byte $FF, $20, $4C, $FF, $20, $4C, $FF, $A9, $10, $20, $49, $FF, $4C, $3E, $FF, $A9  ; CPU:$BF20 PRG:7F20  FF 20 4C FF 20 4C FF A9 10 20 49 FF 4C 3E FF A9
-    .byte $20, $20, $49, $FF, $A9, $30, $20, $49, $FF, $A9, $20, $20, $49, $FF, $A9, $30  ; CPU:$BF30 PRG:7F30  20 20 49 FF A9 30 20 49 FF A9 20 20 49 FF A9 30
-    .byte $8D, $00, $41, $20, $62, $FF, $4C, $36, $80, $8D, $00, $41, $A0, $04, $A2, $CE  ; CPU:$BF40 PRG:7F40  8D 00 41 20 62 FF 4C 36 80 8D 00 41 A0 04 A2 CE
-    .byte $CA, $D0, $FD, $88, $D0, $F8, $60, $A9, $41, $CD, $F0, $07, $D0, $02, $38, $60  ; CPU:$BF50 PRG:7F50  CA D0 FD 88 D0 F8 60 A9 41 CD F0 07 D0 02 38 60
-    .byte $18, $60, $A9, $41, $8D, $F0, $07, $60, $A9, $5A, $8D, $F0, $07, $60, $FF, $FF  ; CPU:$BF60 PRG:7F60  18 60 A9 41 8D F0 07 60 A9 5A 8D F0 07 60 FF FF
-    .byte $09, $30, $8D, $00, $41, $60, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BF70 PRG:7F70  09 30 8D 00 41 60 FF FF FF FF FF FF FF FF FF FF
-    .byte $48, $8A, $09, $30, $8D, $00, $41, $68, $60, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BF80 PRG:7F80  48 8A 09 30 8D 00 41 68 60 FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BF90 PRG:7F90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BFA0 PRG:7FA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BFB0 PRG:7FB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BFC0 PRG:7FC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BFD0 PRG:7FD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$BFE0 PRG:7FE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $8F, $80, $00, $FF, $36, $80  ; CPU:$BFF0 PRG:7FF0  FF FF FF FF FF FF FF FF FF FF 8F 80 00 FF 36 80
-
-    .byte $EA, $EA, $86, $2C, $85, $2D, $A5, $2C, $29, $07, $20, $1B, $80, $20, $88, $80  ; CPU:$8000 PRG:8000  EA EA 86 2C 85 2D A5 2C 29 07 20 1B 80 20 88 80
-    .byte $A5, $2C, $29, $07, $4C, $1B, $80, $85, $2C, $09, $08, $AA, $20, $70, $FF, $BD  ; CPU:$8010 PRG:8010  A5 2C 29 07 4C 1B 80 85 2C 09 08 AA 20 70 FF BD
-    .byte $26, $80, $9D, $26, $80, $60, $00, $01, $02, $03, $04, $05, $06, $07, $10, $11  ; CPU:$8020 PRG:8020  26 80 9D 26 80 60 00 01 02 03 04 05 06 07 10 11
-    .byte $12, $13, $14, $15, $16, $17, $78, $D8, $AD, $02, $20, $10, $FB, $A9, $00, $8D  ; CPU:$8030 PRG:8030  12 13 14 15 16 17 78 D8 AD 02 20 10 FB A9 00 8D
-    .byte $00, $20, $8D, $01, $20, $A2, $FF, $9A, $A9, $00, $20, $1B, $80, $A9, $00, $85  ; CPU:$8040 PRG:8040  00 20 8D 01 20 A2 FF 9A A9 00 20 1B 80 A9 00 85
-    .byte $00, $85, $01, $A0, $02, $A2, $06, $91, $00, $C8, $E0, $00, $D0, $04, $C0, $E0  ; CPU:$8050 PRG:8050  00 85 01 A0 02 A2 06 91 00 C8 E0 00 D0 04 C0 E0
-    .byte $B0, $09, $C0, $00, $D0, $F1, $E6, $01, $CA, $10, $EC, $85, $00, $85, $01, $A9  ; CPU:$8060 PRG:8060  B0 09 C0 00 D0 F1 E6 01 CA 10 EC 85 00 85 01 A9
-    .byte $00, $8D, $15, $40, $A9, $1E, $85, $02, $A9, $88, $8D, $00, $20, $85, $01, $A9  ; CPU:$8070 PRG:8070  00 8D 15 40 A9 1E 85 02 A9 88 8D 00 20 85 01 A9
-    .byte $01, $85, $6A, $E6, $2F, $4C, $83, $80, $A5, $2D, $0A, $A8, $B9, $96, $80, $48  ; CPU:$8080 PRG:8080  01 85 6A E6 2F 4C 83 80 A5 2D 0A A8 B9 96 80 48
-    .byte $B9, $95, $80, $48, $60, $A6, $80, $30, $81, $83, $A7, $19, $A7, $F0, $AA, $25  ; CPU:$8090 PRG:8090  B9 95 80 48 60 A6 80 30 81 83 A7 19 A7 F0 AA 25
-    .byte $A7, $17, $81, $4F, $AB, $60, $81, $A5, $2E, $0A, $AA, $48, $BD, $9A, $83, $85  ; CPU:$80A0 PRG:80A0  A7 17 81 4F AB 60 81 A5 2E 0A AA 48 BD 9A 83 85
-    .byte $11, $BD, $9B, $83, $85, $12, $20, $C9, $80, $68, $AA, $BD, $C0, $83, $85, $11  ; CPU:$80B0 PRG:80B0  11 BD 9B 83 85 12 20 C9 80 68 AA BD C0 83 85 11
-    .byte $BD, $C1, $83, $85, $12, $20, $18, $81, $60, $A9, $00, $8D, $00, $20, $8D, $01  ; CPU:$80C0 PRG:80C0  BD C1 83 85 12 20 18 81 60 A9 00 8D 00 20 8D 01
-    .byte $20, $A0, $00, $AD, $02, $20, $B1, $11, $8D, $06, $20, $20, $11, $81, $B1, $11  ; CPU:$80D0 PRG:80D0  20 A0 00 AD 02 20 B1 11 8D 06 20 20 11 81 B1 11
-    .byte $8D, $06, $20, $20, $11, $81, $B1, $11, $10, $16, $C9, $FF, $F0, $22, $29, $7F  ; CPU:$80E0 PRG:80E0  8D 06 20 20 11 81 B1 11 10 16 C9 FF F0 22 29 7F
-    .byte $85, $07, $20, $11, $81, $B1, $11, $8D, $07, $20, $C6, $07, $D0, $F4, $F0, $E3  ; CPU:$80F0 PRG:80F0  85 07 20 11 81 B1 11 8D 07 20 C6 07 D0 F4 F0 E3
-    .byte $85, $07, $20, $11, $81, $B1, $11, $8D, $07, $20, $C6, $07, $D0, $F9, $F0, $D3  ; CPU:$8100 PRG:8100  85 07 20 11 81 B1 11 8D 07 20 C6 07 D0 F9 F0 D3
-    .byte $60, $E6, $11, $D0, $02, $E6, $12, $60, $AD, $02, $20, $A9, $3F, $8D, $06, $20  ; CPU:$8110 PRG:8110  60 E6 11 D0 02 E6 12 60 AD 02 20 A9 3F 8D 06 20
-    .byte $A9, $00, $8D, $06, $20, $A8, $B1, $11, $8D, $07, $20, $C8, $C0, $20, $90, $F6  ; CPU:$8120 PRG:8120  A9 00 8D 06 20 A8 B1 11 8D 07 20 C8 C0 20 90 F6
-    .byte $60, $A5, $91, $0A, $AA, $BD, $8A, $81, $85, $11, $BD, $8B, $81, $85, $12, $A4  ; CPU:$8130 PRG:8130  60 A5 91 0A AA BD 8A 81 85 11 BD 8B 81 85 12 A4
-    .byte $92, $B1, $11, $D0, $06, $A0, $00, $84, $92, $B1, $11, $C5, $75, $B0, $11, $A9  ; CPU:$8140 PRG:8140  92 B1 11 D0 06 A0 00 84 92 B1 11 C5 75 B0 11 A9
-    .byte $00, $85, $75, $C8, $B1, $11, $85, $93, $C8, $B1, $11, $85, $94, $C8, $84, $92  ; CPU:$8150 PRG:8150  00 85 75 C8 B1 11 85 93 C8 B1 11 85 94 C8 84 92
-    .byte $60, $A0, $00, $A5, $94, $F0, $1F, $B1, $93, $F0, $1B, $8D, $06, $20, $C8, $B1  ; CPU:$8160 PRG:8160  60 A0 00 A5 94 F0 1F B1 93 F0 1B 8D 06 20 C8 B1
-    .byte $93, $8D, $06, $20, $C8, $B1, $93, $85, $11, $C8, $B1, $93, $8D, $07, $20, $C8  ; CPU:$8170 PRG:8170  93 8D 06 20 C8 B1 93 85 11 C8 B1 93 8D 07 20 C8
-    .byte $C6, $11, $D0, $F6, $F0, $E1, $85, $94, $60, $40, $A2, $81, $ED, $81, $04, $82  ; CPU:$8180 PRG:8180  C6 11 D0 F6 F0 E1 85 94 60 40 A2 81 ED 81 04 82
-    .byte $37, $82, $5E, $82, $77, $82, $D6, $82, $E7, $82, $FE, $82, $23, $83, $38, $83  ; CPU:$8190 PRG:8190  37 82 5E 82 77 82 D6 82 E7 82 FE 82 23 83 38 83
-    .byte $87, $83, $18, $A9, $81, $18, $CB, $81, $00, $24, $E8, $02, $AF, $B0, $25, $4D  ; CPU:$81A0 PRG:81A0  87 83 18 A9 81 18 CB 81 00 24 E8 02 AF B0 25 4D
-    .byte $02, $FF, $FF, $25, $6D, $02, $FF, $FF, $25, $8D, $04, $FF, $B8, $B2, $B3, $25  ; CPU:$81B0 PRG:81B0  02 FF FF 25 6D 02 FF FF 25 8D 04 FF B8 B2 B3 25
-    .byte $AD, $03, $B6, $B9, $B4, $25, $CE, $02, $BA, $B5, $00, $24, $E8, $02, $37, $50  ; CPU:$81C0 PRG:81C0  AD 03 B6 B9 B4 25 CE 02 BA B5 00 24 E8 02 37 50
-    .byte $25, $4D, $02, $7F, $80, $25, $6D, $02, $7E, $81, $25, $8D, $04, $7D, $82, $FF  ; CPU:$81D0 PRG:81D0  25 4D 02 7F 80 25 6D 02 7E 81 25 8D 04 7D 82 FF
-    .byte $FF, $25, $AD, $03, $7C, $83, $FF, $25, $CE, $02, $84, $FF, $00, $18, $F4, $81  ; CPU:$81E0 PRG:81E0  FF 25 AD 03 7C 83 FF 25 CE 02 84 FF 00 18 F4 81
-    .byte $18, $FC, $81, $00, $26, $AB, $04, $66, $73, $7A, $86, $00, $26, $AB, $04, $D5  ; CPU:$81F0 PRG:81F0  18 FC 81 00 26 AB 04 66 73 7A 86 00 26 AB 04 D5
-    .byte $D6, $D7, $D8, $00, $18, $0B, $82, $18, $21, $82, $00, $25, $13, $02, $39, $3E  ; CPU:$8200 PRG:8200  D6 D7 D8 00 18 0B 82 18 21 82 00 25 13 02 39 3E
-    .byte $27, $16, $02, $D2, $D7, $27, $36, $03, $D3, $D6, $D8, $27, $56, $02, $D4, $D5  ; CPU:$8210 PRG:8210  27 16 02 D2 D7 27 36 03 D3 D6 D8 27 56 02 D4 D5
-    .byte $00, $25, $13, $02, $D0, $D1, $27, $16, $02, $72, $77, $27, $36, $03, $73, $76  ; CPU:$8220 PRG:8220  00 25 13 02 D0 D1 27 16 02 72 77 27 36 03 73 76
-    .byte $85, $27, $56, $02, $74, $75, $00, $18, $3E, $82, $18, $4E, $82, $00, $24, $ED  ; CPU:$8230 PRG:8230  85 27 56 02 74 75 00 18 3E 82 18 4E 82 00 24 ED
-    .byte $02, $B3, $B4, $25, $0D, $02, $B5, $B8, $25, $2D, $02, $B6, $B7, $00, $24, $ED  ; CPU:$8240 PRG:8240  02 B3 B4 25 0D 02 B5 B8 25 2D 02 B6 B7 00 24 ED
-    .byte $02, $86, $8E, $25, $0D, $02, $85, $8F, $25, $2D, $02, $84, $90, $00, $18, $65  ; CPU:$8250 PRG:8250  02 86 8E 25 0D 02 85 8F 25 2D 02 84 90 00 18 65
-    .byte $82, $18, $6E, $82, $00, $25, $E8, $01, $F7, $26, $07, $01, $F8, $00, $25, $E8  ; CPU:$8260 PRG:8260  82 18 6E 82 00 25 E8 01 F7 26 07 01 F8 00 25 E8
-    .byte $01, $81, $26, $07, $01, $5F, $00, $18, $7E, $82, $18, $AA, $82, $00, $24, $E9  ; CPU:$8270 PRG:8270  01 81 26 07 01 5F 00 18 7E 82 18 AA 82 00 24 E9
-    .byte $02, $F1, $EC, $26, $4B, $04, $E9, $E8, $E7, $E6, $26, $6B, $04, $E0, $E1, $E4  ; CPU:$8280 PRG:8280  02 F1 EC 26 4B 04 E9 E8 E7 E6 26 6B 04 E0 E1 E4
-    .byte $E5, $26, $8B, $04, $EB, $E2, $E3, $EA, $26, $AB, $03, $ED, $EE, $EF, $26, $CB  ; CPU:$8290 PRG:8290  E5 26 8B 04 EB E2 E3 EA 26 AB 03 ED EE EF 26 CB
-    .byte $03, $92, $92, $F2, $26, $EC, $02, $F0, $92, $00, $24, $E9, $02, $35, $53, $26  ; CPU:$82A0 PRG:82A0  03 92 92 F2 26 EC 02 F0 92 00 24 E9 02 35 53 26
-    .byte $4B, $04, $63, $FF, $FF, $FF, $26, $6B, $04, $64, $70, $7F, $87, $26, $8B, $04  ; CPU:$82B0 PRG:82B0  4B 04 63 FF FF FF 26 6B 04 64 70 7F 87 26 8B 04
-    .byte $65, $6F, $92, $9A, $26, $AB, $03, $66, $6E, $80, $26, $CB, $03, $67, $6D, $81  ; CPU:$82C0 PRG:82C0  65 6F 92 9A 26 AB 03 66 6E 80 26 CB 03 67 6D 81
-    .byte $26, $EC, $02, $6C, $82, $00, $18, $DD, $82, $18, $E2, $82, $00, $25, $26, $01  ; CPU:$82D0 PRG:82D0  26 EC 02 6C 82 00 18 DD 82 18 E2 82 00 25 26 01
-    .byte $EE, $00, $25, $26, $01, $0E, $00, $18, $EE, $82, $18, $F6, $82, $00, $25, $14  ; CPU:$82E0 PRG:82E0  EE 00 25 26 01 0E 00 18 EE 82 18 F6 82 00 25 14
-    .byte $04, $D5, $D6, $D7, $D8, $00, $25, $14, $04, $1E, $39, $3E, $5C, $00, $18, $05  ; CPU:$82F0 PRG:82F0  04 D5 D6 D7 D8 00 25 14 04 1E 39 3E 5C 00 18 05
-    .byte $83, $18, $14, $83, $00, $26, $17, $01, $B8, $26, $36, $02, $B7, $B9, $26, $57  ; CPU:$8300 PRG:8300  83 18 14 83 00 26 17 01 B8 26 36 02 B7 B9 26 57
-    .byte $02, $BA, $BB, $00, $26, $17, $01, $7C, $26, $36, $02, $72, $7D, $26, $57, $02  ; CPU:$8310 PRG:8310  02 BA BB 00 26 17 01 7C 26 36 02 72 7D 26 57 02
-    .byte $7E, $89, $00, $18, $2A, $83, $18, $31, $83, $00, $25, $15, $03, $F2, $F3, $F4  ; CPU:$8320 PRG:8320  7E 89 00 18 2A 83 18 31 83 00 25 15 03 F2 F3 F4
-    .byte $00, $25, $15, $03, $14, $15, $16, $00, $18, $3F, $83, $18, $63, $83, $00, $24  ; CPU:$8330 PRG:8330  00 25 15 03 14 15 16 00 18 3F 83 18 63 83 00 24
-    .byte $D5, $01, $CF, $25, $71, $02, $DC, $D7, $25, $91, $02, $D6, $D8, $25, $B1, $02  ; CPU:$8340 PRG:8340  D5 01 CF 25 71 02 DC D7 25 91 02 D6 D8 25 B1 02
-    .byte $D5, $D9, $25, $D1, $02, $D4, $DA, $25, $F0, $03, $D2, $D3, $DB, $26, $10, $02  ; CPU:$8350 PRG:8350  D5 D9 25 D1 02 D4 DA 25 F0 03 D2 D3 DB 26 10 02
-    .byte $D0, $D1, $00, $24, $D5, $01, $10, $25, $71, $02, $FF, $2C, $25, $91, $02, $33  ; CPU:$8360 PRG:8360  D0 D1 00 24 D5 01 10 25 71 02 FF 2C 25 91 02 33
-    .byte $34, $25, $B1, $02, $3B, $3C, $25, $D1, $02, $43, $44, $25, $F0, $03, $4A, $4B  ; CPU:$8370 PRG:8370  34 25 B1 02 3B 3C 25 D1 02 43 44 25 F0 03 4A 4B
-    .byte $4C, $26, $10, $02, $52, $53, $00, $18, $8E, $83, $18, $94, $83, $00, $25, $E8  ; CPU:$8380 PRG:8380  4C 26 10 02 52 53 00 18 8E 83 18 94 83 00 25 E8
-    .byte $02, $F9, $FA, $00, $25, $E8, $02, $81, $91, $00, $47, $85, $A1, $87, $8C, $8A  ; CPU:$8390 PRG:8390  02 F9 FA 00 25 E8 02 81 91 00 47 85 A1 87 8C 8A
-    .byte $B1, $8C, $B1, $8D, $51, $8F, $15, $91, $92, $92, $44, $94, $E6, $95, $81, $97  ; CPU:$83A0 PRG:83A0  B1 8C B1 8D 51 8F 15 91 92 92 44 94 E6 95 81 97
-    .byte $23, $99, $D3, $9A, $76, $9C, $DA, $9D, $79, $9F, $21, $A1, $E3, $A3, $92, $A5  ; CPU:$83B0 PRG:83B0  23 99 D3 9A 76 9C DA 9D 79 9F 21 A1 E3 A3 92 A5
-    .byte $E6, $83, $16, $84, $36, $84, $E6, $83, $56, $84, $76, $84, $86, $84, $96, $84  ; CPU:$83C0 PRG:83C0  E6 83 16 84 36 84 E6 83 56 84 76 84 86 84 96 84
-    .byte $A6, $84, $B6, $84, $C6, $84, $D6, $84, $E6, $84, $F6, $84, $06, $85, $16, $85  ; CPU:$83D0 PRG:83D0  A6 84 B6 84 C6 84 D6 84 E6 84 F6 84 06 85 16 85
-    .byte $27, $85, $27, $85, $E6, $83, $0E, $0E, $05, $0E, $0E, $0E, $0E, $0E, $0E, $0E  ; CPU:$83E0 PRG:83E0  27 85 27 85 E6 83 0E 0E 05 0E 0E 0E 0E 0E 0E 0E
-    .byte $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $0E, $25, $13, $1A, $0E, $21  ; CPU:$83F0 PRG:83F0  0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 25 13 1A 0E 21
-    .byte $25, $1A, $0E, $21, $13, $30, $0E, $3A, $2A, $1A, $0E, $32, $27, $07, $0E, $30  ; CPU:$8400 PRG:8400  25 1A 0E 21 13 30 0E 3A 2A 1A 0E 32 27 07 0E 30
-    .byte $28, $08, $0E, $32, $2C, $12, $0E, $31, $2A, $28, $0E, $30, $25, $22, $0E, $2B  ; CPU:$8410 PRG:8410  28 08 0E 32 2C 12 0E 31 2A 28 0E 30 25 22 0E 2B
-    .byte $28, $30, $0E, $31, $22, $13, $0E, $31, $2A, $28, $0E, $2A, $25, $22, $0E, $21  ; CPU:$8420 PRG:8420  28 30 0E 31 22 13 0E 31 2A 28 0E 2A 25 22 0E 21
-    .byte $28, $30, $0E, $27, $27, $17, $0E, $31, $2A, $28, $0E, $2A, $25, $22, $0E, $21  ; CPU:$8430 PRG:8430  28 30 0E 27 27 17 0E 31 2A 28 0E 2A 25 22 0E 21
-    .byte $28, $30, $0E, $30, $27, $17, $0E, $31, $2A, $28, $0E, $2A, $25, $22, $0E, $21  ; CPU:$8440 PRG:8440  28 30 0E 30 27 17 0E 31 2A 28 0E 2A 25 22 0E 21
-    .byte $28, $30, $0E, $30, $27, $17, $0E, $21, $13, $18, $0E, $27, $18, $1A, $0E, $18  ; CPU:$8450 PRG:8450  28 30 0E 30 27 17 0E 21 13 18 0E 27 18 1A 0E 18
-    .byte $2B, $1A, $0E, $21, $11, $30, $0E, $25, $1A, $0E, $0E, $36, $26, $0E, $0E, $18  ; CPU:$8460 PRG:8460  2B 1A 0E 21 11 30 0E 25 1A 0E 0E 36 26 0E 0E 18
-    .byte $2B, $1A, $0E, $21, $11, $30, $0E, $21, $36, $26, $0E, $25, $13, $1A, $0E, $21  ; CPU:$8470 PRG:8470  2B 1A 0E 21 11 30 0E 21 36 26 0E 25 13 1A 0E 21
-    .byte $25, $1A, $0E, $21, $13, $30, $0E, $21, $13, $1A, $0E, $21, $36, $27, $0E, $21  ; CPU:$8480 PRG:8480  25 1A 0E 21 13 30 0E 21 13 1A 0E 21 36 27 0E 21
-    .byte $01, $36, $0E, $21, $13, $30, $FF, $23, $37, $28, $FF, $23, $37, $2A, $FF, $23  ; CPU:$8490 PRG:8490  01 36 0E 21 13 30 FF 23 37 28 FF 23 37 2A FF 23
-    .byte $37, $30, $FF, $23, $25, $20, $FF, $23, $25, $30, $FF, $2A, $17, $38, $FF, $37  ; CPU:$84A0 PRG:84A0  37 30 FF 23 25 20 FF 23 25 30 FF 2A 17 38 FF 37
-    .byte $17, $30, $FF, $23, $13, $20, $0E, $14, $11, $30, $0E, $21, $25, $38, $0E, $37  ; CPU:$84B0 PRG:84B0  17 30 FF 23 13 20 0E 14 11 30 0E 21 25 38 0E 37
-    .byte $27, $11, $0E, $10, $11, $30, $0E, $21, $25, $1A, $0E, $21, $36, $27, $0E, $21  ; CPU:$84C0 PRG:84C0  27 11 0E 10 11 30 0E 21 25 1A 0E 21 36 27 0E 21
-    .byte $36, $26, $0E, $21, $13, $30, $0E, $21, $25, $1A, $0E, $21, $36, $27, $0E, $21  ; CPU:$84D0 PRG:84D0  36 26 0E 21 13 30 0E 21 25 1A 0E 21 36 27 0E 21
-    .byte $36, $26, $0E, $21, $03, $30, $FF, $21, $37, $30, $FF, $28, $37, $26, $FF, $28  ; CPU:$84E0 PRG:84E0  36 26 0E 21 03 30 FF 21 37 30 FF 28 37 26 FF 28
-    .byte $21, $30, $FF, $25, $21, $30, $0E, $37, $27, $30, $0E, $37, $27, $1B, $0E, $37  ; CPU:$84F0 PRG:84F0  21 30 FF 25 21 30 0E 37 27 30 0E 37 27 1B 0E 37
-    .byte $27, $17, $0E, $1B, $10, $30, $0E, $21, $36, $26, $0E, $21, $25, $2A, $0E, $21  ; CPU:$8500 PRG:8500  27 17 0E 1B 10 30 0E 21 36 26 0E 21 25 2A 0E 21
-    .byte $36, $27, $0E, $21, $13, $30, $FF, $23, $37, $28, $FF, $23, $37, $2A, $FF, $37  ; CPU:$8510 PRG:8510  36 27 0E 21 13 30 FF 23 37 28 FF 23 37 2A FF 37
-    .byte $26, $30, $FF, $23, $25, $20, $0E, $0E, $31, $2A, $28, $0E, $30, $2C, $1C, $0E  ; CPU:$8520 PRG:8520  26 30 FF 23 25 20 0E 0E 31 2A 28 0E 30 2C 1C 0E
-    .byte $36, $31, $17, $0E, $31, $15, $22, $0E, $31, $2A, $28, $FF, $30, $25, $22, $FF  ; CPU:$8530 PRG:8530  36 31 17 0E 31 15 22 0E 31 2A 28 FF 30 25 22 FF
-    .byte $2B, $28, $30, $FF, $31, $15, $22, $20, $00, $44, $FF, $83, $91, $92, $93, $04  ; CPU:$8540 PRG:8540  2B 28 30 FF 31 15 22 20 00 44 FF 83 91 92 93 04
-    .byte $FF, $83, $94, $95, $96, $02, $FF, $87, $97, $98, $99, $9A, $9B, $9C, $9D, $02  ; CPU:$8550 PRG:8550  FF 83 94 95 96 02 FF 87 97 98 99 9A 9B 9C 9D 02
-    .byte $FF, $82, $9E, $9F, $09, $FF, $98, $A0, $A1, $A2, $A3, $A4, $A5, $A6, $A7, $A8  ; CPU:$8560 PRG:8560  FF 82 9E 9F 09 FF 98 A0 A1 A2 A3 A4 A5 A6 A7 A8
-    .byte $A9, $AA, $AB, $AC, $AD, $AE, $AF, $B0, $B1, $B2, $B3, $B4, $B5, $B6, $B7, $08  ; CPU:$8570 PRG:8570  A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 08
-    .byte $FF, $98, $B8, $B9, $BA, $BB, $BC, $BD, $BE, $BF, $C0, $C1, $C2, $C3, $C4, $FF  ; CPU:$8580 PRG:8580  FF 98 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 FF
-    .byte $C5, $C6, $C7, $C8, $C9, $CA, $CB, $CC, $CD, $CE, $08, $FF, $98, $CF, $D0, $D1  ; CPU:$8590 PRG:8590  C5 C6 C7 C8 C9 CA CB CC CD CE 08 FF 98 CF D0 D1
-    .byte $D2, $D3, $D4, $D5, $D6, $D7, $D8, $D9, $DA, $DB, $DC, $DD, $DE, $DF, $E0, $E1  ; CPU:$85A0 PRG:85A0  D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1
-    .byte $E2, $E3, $E4, $E5, $E6, $2F, $FF, $86, $54, $48, $45, $FF, $52, $49, $02, $44  ; CPU:$85B0 PRG:85B0  E2 E3 E4 E5 E6 2F FF 86 54 48 45 FF 52 49 02 44
-    .byte $82, $4C, $45, $11, $FF, $8F, $4F, $46, $FF, $54, $48, $45, $FF, $4D, $41, $47  ; CPU:$85C0 PRG:85C0  82 4C 45 11 FF 8F 4F 46 FF 54 48 45 FF 4D 41 47
-    .byte $49, $43, $FF, $42, $55, $02, $42, $82, $4C, $45, $0C, $FF, $81, $BC, $12, $BE  ; CPU:$85D0 PRG:85D0  49 43 FF 42 55 02 42 82 4C 45 0C FF 81 BC 12 BE
-    .byte $81, $BF, $0C, $FF, $81, $BD, $05, $AF, $81, $E4, $04, $AF, $89, $B7, $B8, $B9  ; CPU:$85E0 PRG:85E0  81 BF 0C FF 81 BD 05 AF 81 E4 04 AF 89 B7 B8 B9
-    .byte $BA, $BB, $AF, $E4, $AF, $C0, $0C, $FF, $81, $BD, $02, $AF, $83, $E4, $AF, $E5  ; CPU:$85F0 PRG:85F0  BA BB AF E4 AF C0 0C FF 81 BD 02 AF 83 E4 AF E5
-    .byte $03, $AF, $88, $E4, $AF, $B6, $B5, $B4, $B3, $B2, $B1, $02, $AF, $81, $C0, $0C  ; CPU:$8600 PRG:8600  03 AF 88 E4 AF B6 B5 B4 B3 B2 B1 02 AF 81 C0 0C
-    .byte $FF, $81, $BD, $04, $AF, $81, $B0, $03, $AF, $88, $E5, $AE, $AD, $AC, $AB, $AA  ; CPU:$8610 PRG:8610  FF 81 BD 04 AF 81 B0 03 AF 88 E5 AE AD AC AB AA
-    .byte $A9, $A8, $02, $AF, $81, $C0, $0C, $FF, $86, $BD, $E3, $E2, $E1, $9E, $9F, $02  ; CPU:$8620 PRG:8620  A9 A8 02 AF 81 C0 0C FF 86 BD E3 E2 E1 9E 9F 02
-    .byte $AF, $81, $A0, $02, $AF, $89, $A1, $A2, $A3, $A4, $A5, $A6, $A7, $AF, $C0, $0C  ; CPU:$8630 PRG:8630  AF 81 A0 02 AF 89 A1 A2 A3 A4 A5 A6 A7 AF C0 0C
-    .byte $FF, $94, $BD, $DE, $DF, $E0, $9D, $9C, $9B, $9A, $99, $AF, $E5, $98, $97, $96  ; CPU:$8640 PRG:8640  FF 94 BD DE DF E0 9D 9C 9B 9A 99 AF E5 98 97 96
-    .byte $95, $94, $93, $92, $AF, $C0, $0C, $FF, $91, $BD, $DB, $DC, $DD, $88, $89, $8A  ; CPU:$8650 PRG:8650  95 94 93 92 AF C0 0C FF 91 BD DB DC DD 88 89 8A
-    .byte $8B, $AF, $E5, $AF, $8C, $8D, $8E, $8F, $90, $91, $02, $AF, $81, $C0, $0C, $FF  ; CPU:$8660 PRG:8660  8B AF E5 AF 8C 8D 8E 8F 90 91 02 AF 81 C0 0C FF
-    .byte $91, $BD, $D8, $D9, $DA, $87, $86, $85, $84, $83, $82, $81, $80, $7F, $7E, $7D  ; CPU:$8670 PRG:8670  91 BD D8 D9 DA 87 86 85 84 83 82 81 80 7F 7E 7D
-    .byte $7C, $7B, $02, $AF, $81, $C0, $0C, $FF, $91, $BD, $D6, $D7, $6D, $6E, $6F, $70  ; CPU:$8680 PRG:8680  7C 7B 02 AF 81 C0 0C FF 91 BD D6 D7 6D 6E 6F 70
-    .byte $71, $72, $73, $74, $75, $76, $77, $78, $79, $7A, $02, $AF, $81, $C0, $0C, $FF  ; CPU:$8690 PRG:8690  71 72 73 74 75 76 77 78 79 7A 02 AF 81 C0 0C FF
-    .byte $94, $BD, $6C, $6B, $6A, $69, $68, $67, $66, $65, $64, $63, $62, $61, $60, $5F  ; CPU:$86A0 PRG:86A0  94 BD 6C 6B 6A 69 68 67 66 65 64 63 62 61 60 5F
-    .byte $5E, $5D, $5C, $5B, $C0, $0C, $FF, $94, $BD, $49, $4A, $4B, $4C, $4D, $4E, $4F  ; CPU:$86B0 PRG:86B0  5E 5D 5C 5B C0 0C FF 94 BD 49 4A 4B 4C 4D 4E 4F
-    .byte $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $5A, $C0, $0C, $FF, $94, $BD  ; CPU:$86C0 PRG:86C0  50 51 52 53 54 55 56 57 58 59 5A C0 0C FF 94 BD
-    .byte $48, $47, $46, $45, $44, $43, $42, $41, $40, $3F, $3E, $3D, $3C, $3B, $3A, $39  ; CPU:$86D0 PRG:86D0  48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39
-    .byte $38, $37, $C0, $0C, $FF, $94, $BD, $25, $26, $27, $28, $29, $2A, $2B, $2C, $2D  ; CPU:$86E0 PRG:86E0  38 37 C0 0C FF 94 BD 25 26 27 28 29 2A 2B 2C 2D
-    .byte $2E, $2F, $30, $31, $32, $33, $34, $35, $36, $C0, $0C, $FF, $94, $BD, $24, $23  ; CPU:$86F0 PRG:86F0  2E 2F 30 31 32 33 34 35 36 C0 0C FF 94 BD 24 23
-    .byte $22, $21, $20, $1F, $1E, $1D, $1C, $1B, $1A, $19, $18, $17, $16, $15, $14, $13  ; CPU:$8700 PRG:8700  22 21 20 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13
-    .byte $C0, $0C, $FF, $94, $BD, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B  ; CPU:$8710 PRG:8710  C0 0C FF 94 BD 01 02 03 04 05 06 07 08 09 0A 0B
-    .byte $0C, $0D, $0E, $0F, $10, $11, $12, $C0, $0C, $FF, $81, $C3, $12, $C2, $81, $C1  ; CPU:$8720 PRG:8720  0C 0D 0E 0F 10 11 12 C0 0C FF 81 C3 12 C2 81 C1
-    .byte $09, $FF, $82, $C4, $C5, $02, $C6, $96, $C5, $FF, $C7, $C8, $C9, $FF, $CA, $CB  ; CPU:$8730 PRG:8730  09 FF 82 C4 C5 02 C6 96 C5 FF C7 C8 C9 FF CA CB
-    .byte $C7, $CC, $FF, $CD, $CA, $C7, $C9, $CB, $CE, $C9, $D5, $FF, $CF, $D0, $0B, $FF  ; CPU:$8740 PRG:8740  C7 CC FF CD CA C7 C9 CB CE C9 D5 FF CF D0 0B FF
-    .byte $8E, $D1, $D2, $C9, $D3, $CA, $C7, $D1, $CB, $FF, $D4, $CA, $D5, $C9, $D0, $10  ; CPU:$8750 PRG:8750  8E D1 D2 C9 D3 CA C7 D1 CB FF D4 CA D5 C9 D0 10
-    .byte $FF, $92, $C9, $CB, $CF, $C9, $D3, $CF, $D1, $CA, $CB, $D2, $C9, $CB, $CF, $FF  ; CPU:$8760 PRG:8760  FF 92 C9 CB CF C9 D3 CF D1 CA CB D2 C9 CB CF FF
-    .byte $CA, $CB, $C7, $CC, $49, $FF, $81, $0F, $07, $FF, $07, $F0, $81, $FE, $04, $FF  ; CPU:$8770 PRG:8770  CA CB C7 CC 49 FF 81 0F 07 FF 07 F0 81 FE 04 FF
-    .byte $82, $0F, $CF, $03, $FF, $85, $BB, $AA, $EE, $00, $C0, $03, $FF, $81, $BB, $02  ; CPU:$8780 PRG:8780  82 0F CF 03 FF 85 BB AA EE 00 C0 03 FF 81 BB 02
-    .byte $AA, $82, $00, $8C, $03, $FF, $85, $77, $D5, $F5, $77, $08, $12, $FF, $FF, $FF  ; CPU:$8790 PRG:8790  AA 82 00 8C 03 FF 85 77 D5 F5 77 08 12 FF FF FF
-    .byte $FF, $24, $00, $8A, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $0C, $FF  ; CPU:$87A0 PRG:87A0  FF 24 00 8A 1F 20 1F 20 1F 20 1F 20 1F 20 0C FF
-    .byte $9D, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21  ; CPU:$87B0 PRG:87B0  9D 1F 20 1F 20 1F 20 1F 20 1F 20 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $07, $0D, $21, $22, $21, $22, $21, $22, $21, $02, $22  ; CPU:$87C0 PRG:87C0  22 21 22 21 22 07 0D 21 22 21 22 21 22 21 02 22
-    .byte $97, $16, $0F, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20  ; CPU:$87D0 PRG:87D0  97 16 0F 22 21 22 21 22 21 22 21 22 1F 20 1F 20
-    .byte $1F, $20, $1F, $20, $1F, $20, $08, $04, $09, $00, $B7, $01, $10, $20, $1F, $20  ; CPU:$87E0 PRG:87E0  1F 20 1F 20 1F 20 08 04 09 00 B7 01 10 20 1F 20
-    .byte $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22  ; CPU:$87F0 PRG:87F0  1F 20 1F 20 1F 20 21 22 21 22 21 22 21 22 21 22
-    .byte $09, $05, $FF, $4F, $50, $54, $49, $4F, $4E, $53, $FF, $02, $11, $22, $21, $22  ; CPU:$8800 PRG:8800  09 05 FF 4F 50 54 49 4F 4E 53 FF 02 11 22 21 22
-    .byte $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20  ; CPU:$8810 PRG:8810  21 22 21 22 21 22 1F 20 1F 20 1F 20 1F 20 1F 20
-    .byte $0A, $06, $09, $15, $9E, $03, $12, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20  ; CPU:$8820 PRG:8820  0A 06 09 15 9E 03 12 20 1F 20 1F 20 1F 20 1F 20
-    .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $0B, $0C, $21, $22, $21, $22  ; CPU:$8830 PRG:8830  21 22 21 22 21 22 21 22 21 22 0B 0C 21 22 21 22
-    .byte $21, $22, $21, $02, $22, $90, $17, $13, $22, $21, $22, $21, $22, $21, $22, $21  ; CPU:$8840 PRG:8840  21 22 21 02 22 90 17 13 22 21 22 21 22 21 22 21
-    .byte $22, $1F, $20, $1F, $20, $18, $16, $1E, $93, $1B, $1F, $20, $1F, $20, $21, $22  ; CPU:$8850 PRG:8850  22 1F 20 1F 20 18 16 1E 93 1B 1F 20 1F 20 21 22
-    .byte $21, $22, $19, $FF, $31, $FF, $50, $4C, $41, $59, $45, $52, $03, $FF, $94, $32  ; CPU:$8860 PRG:8860  21 22 19 FF 31 FF 50 4C 41 59 45 52 03 FF 94 32
-    .byte $FF, $50, $4C, $41, $59, $45, $52, $53, $FF, $1C, $21, $22, $21, $22, $1F, $20  ; CPU:$8870 PRG:8870  FF 50 4C 41 59 45 52 53 FF 1C 21 22 21 22 1F 20
-    .byte $1F, $20, $1A, $16, $14, $AA, $1D, $1F, $20, $1F, $20, $21, $22, $21, $22, $21  ; CPU:$8880 PRG:8880  1F 20 1A 16 14 AA 1D 1F 20 1F 20 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21  ; CPU:$8890 PRG:8890  22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $18  ; CPU:$88A0 PRG:88A0  22 21 22 21 22 21 22 21 22 21 22 1F 20 1F 20 18
-    .byte $16, $1E, $90, $1B, $1F, $20, $1F, $20, $21, $22, $21, $22, $19, $FF, $53, $54  ; CPU:$88B0 PRG:88B0  16 1E 90 1B 1F 20 1F 20 21 22 21 22 19 FF 53 54
-    .byte $41, $47, $45, $03, $FF, $87, $31, $FF, $32, $FF, $33, $FF, $34, $06, $FF, $8A  ; CPU:$88C0 PRG:88C0  41 47 45 03 FF 87 31 FF 32 FF 33 FF 34 06 FF 8A
-    .byte $1C, $21, $22, $21, $22, $1F, $20, $1F, $20, $1A, $16, $14, $AA, $1D, $1F, $20  ; CPU:$88D0 PRG:88D0  1C 21 22 21 22 1F 20 1F 20 1A 16 14 AA 1D 1F 20
-    .byte $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22  ; CPU:$88E0 PRG:88E0  1F 20 21 22 21 22 21 22 21 22 21 22 21 22 21 22
-    .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22  ; CPU:$88F0 PRG:88F0  21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22
-    .byte $21, $22, $1F, $20, $1F, $20, $18, $16, $1E, $8F, $1B, $1F, $20, $1F, $20, $21  ; CPU:$8900 PRG:8900  21 22 1F 20 1F 20 18 16 1E 8F 1B 1F 20 1F 20 21
-    .byte $22, $21, $22, $19, $FF, $45, $41, $53, $59, $03, $FF, $84, $48, $41, $52, $44  ; CPU:$8910 PRG:8910  22 21 22 19 FF 45 41 53 59 03 FF 84 48 41 52 44
-    .byte $02, $FF, $92, $53, $54, $41, $43, $4B, $45, $44, $FF, $1C, $21, $22, $21, $22  ; CPU:$8920 PRG:8920  02 FF 92 53 54 41 43 4B 45 44 FF 1C 21 22 21 22
-    .byte $1F, $20, $1F, $20, $1A, $16, $14, $AA, $1D, $1F, $20, $1F, $20, $21, $22, $21  ; CPU:$8930 PRG:8930  1F 20 1F 20 1A 16 14 AA 1D 1F 20 1F 20 21 22 21
-    .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21  ; CPU:$8940 PRG:8940  22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F  ; CPU:$8950 PRG:8950  22 21 22 21 22 21 22 21 22 21 22 21 22 1F 20 1F
-    .byte $20, $18, $16, $1E, $90, $1B, $1F, $20, $1F, $20, $21, $22, $21, $22, $19, $FF  ; CPU:$8960 PRG:8960  20 18 16 1E 90 1B 1F 20 1F 20 21 22 21 22 19 FF
-    .byte $4C, $45, $56, $45, $4C, $03, $FF, $89, $31, $FF, $32, $FF, $33, $FF, $34, $FF  ; CPU:$8970 PRG:8970  4C 45 56 45 4C 03 FF 89 31 FF 32 FF 33 FF 34 FF
-    .byte $35, $04, $FF, $8A, $1C, $21, $22, $21, $22, $1F, $20, $1F, $20, $1A, $16, $14  ; CPU:$8980 PRG:8980  35 04 FF 8A 1C 21 22 21 22 1F 20 1F 20 1A 16 14
-    .byte $AA, $1D, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22  ; CPU:$8990 PRG:8990  AA 1D 1F 20 1F 20 21 22 21 22 21 22 21 22 21 22
-    .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22  ; CPU:$89A0 PRG:89A0  21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22
-    .byte $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $18, $16, $1E, $90, $1B, $1F  ; CPU:$89B0 PRG:89B0  21 22 21 22 21 22 1F 20 1F 20 18 16 1E 90 1B 1F
-    .byte $20, $1F, $20, $21, $22, $21, $22, $19, $FF, $54, $55, $4E, $45, $31, $03, $FF  ; CPU:$89C0 PRG:89C0  20 1F 20 21 22 21 22 19 FF 54 55 4E 45 31 03 FF
-    .byte $85, $54, $55, $4E, $45, $32, $03, $FF, $8F, $54, $55, $4E, $45, $33, $1C, $21  ; CPU:$89D0 PRG:89D0  85 54 55 4E 45 32 03 FF 8F 54 55 4E 45 33 1C 21
-    .byte $22, $21, $22, $1F, $20, $1F, $20, $1A, $16, $14, $B2, $1D, $1F, $20, $1F, $20  ; CPU:$89E0 PRG:89E0  22 21 22 1F 20 1F 20 1A 16 14 B2 1D 1F 20 1F 20
-    .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22  ; CPU:$89F0 PRG:89F0  21 22 21 22 21 22 21 22 21 22 21 22 21 22 21 22
-    .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $21, $22, $21, $22  ; CPU:$8A00 PRG:8A00  21 22 21 22 21 22 21 22 21 22 1F 20 21 22 21 22
-    .byte $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $18, $06, $1E, $9A  ; CPU:$8A10 PRG:8A10  1F 20 1F 20 1F 20 1F 20 1F 20 1F 20 18 06 1E 9A
-    .byte $1B, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21  ; CPU:$8A20 PRG:8A20  1B 1F 20 1F 20 1F 20 1F 20 1F 20 1F 20 21 22 21
-    .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $19, $06, $FF, $9A, $1C, $21, $22  ; CPU:$8A30 PRG:8A30  22 21 22 21 22 21 22 21 22 19 06 FF 9A 1C 21 22
-    .byte $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $1F, $20  ; CPU:$8A40 PRG:8A40  21 22 21 22 21 22 21 22 21 22 1F 20 1F 20 1F 20
-    .byte $1F, $20, $1F, $20, $1F, $20, $1A, $06, $14, $AD, $1D, $1F, $20, $1F, $20, $1F  ; CPU:$8A50 PRG:8A50  1F 20 1F 20 1F 20 1A 06 14 AD 1D 1F 20 1F 20 1F
-    .byte $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21  ; CPU:$8A60 PRG:8A60  20 1F 20 1F 20 1F 20 21 22 21 22 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21  ; CPU:$8A70 PRG:8A70  22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $21, $22, $40, $FF, $FF, $FF, $FF, $24, $00, $8A, $1F  ; CPU:$8A80 PRG:8A80  22 21 22 21 22 21 22 40 FF FF FF FF 24 00 8A 1F
-    .byte $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $02, $1F, $89, $20, $1F, $20, $1F  ; CPU:$8A90 PRG:8A90  20 1F 20 1F 20 1F 20 1F 20 02 1F 89 20 1F 20 1F
-    .byte $20, $1F, $20, $1F, $20, $02, $1F, $B4, $20, $1F, $20, $1F, $20, $1F, $20, $1F  ; CPU:$8AA0 PRG:8AA0  20 1F 20 1F 20 02 1F B4 20 1F 20 1F 20 1F 20 1F
-    .byte $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $24, $25, $21, $22, $21, $22  ; CPU:$8AB0 PRG:8AB0  20 21 22 21 22 21 22 21 22 21 24 25 21 22 21 22
-    .byte $21, $22, $21, $22, $21, $2E, $2F, $21, $22, $21, $22, $21, $22, $21, $22, $21  ; CPU:$8AC0 PRG:8AC0  21 22 21 22 21 2E 2F 21 22 21 22 21 22 21 22 21
-    .byte $22, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $26, $27, $09, $0E, $B7, $3A  ; CPU:$8AD0 PRG:8AD0  22 1F 20 1F 20 1F 20 1F 20 1F 26 27 09 0E B7 3A
-    .byte $3B, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21  ; CPU:$8AE0 PRG:8AE0  3B 1F 20 1F 20 1F 20 1F 20 1F 20 21 22 21 22 21
-    .byte $22, $21, $22, $21, $28, $29, $FF, $54, $4F, $50, $FF, $54, $45, $4E, $FF, $3C  ; CPU:$8AF0 PRG:8AF0  22 21 22 21 28 29 FF 54 4F 50 FF 54 45 4E FF 3C
-    .byte $3D, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F, $20, $1F, $20, $1F  ; CPU:$8B00 PRG:8B00  3D 21 22 21 22 21 22 21 22 21 22 1F 20 1F 20 1F
-    .byte $20, $1F, $20, $1F, $2A, $2B, $09, $23, $97, $5B, $5C, $1F, $20, $1F, $20, $1F  ; CPU:$8B10 PRG:8B10  20 1F 20 1F 2A 2B 09 23 97 5B 5C 1F 20 1F 20 1F
-    .byte $20, $1F, $20, $1F, $20, $21, $22, $21, $22, $21, $22, $21, $22, $21, $2C, $2D  ; CPU:$8B20 PRG:8B20  20 1F 20 1F 20 21 22 21 22 21 22 21 22 21 2C 2D
-    .byte $09, $FF, $90, $5D, $5E, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $1F  ; CPU:$8B30 PRG:8B30  09 FF 90 5D 5E 21 22 21 22 21 22 21 22 21 22 1F
-    .byte $20, $64, $65, $05, $63, $81, $6A, $0B, $FF, $81, $69, $06, $63, $87, $67, $68  ; CPU:$8B40 PRG:8B40  20 64 65 05 63 81 6A 0B FF 81 69 06 63 87 67 68
-    .byte $1F, $20, $21, $22, $66, $03, $FF, $84, $4E, $41, $4D, $45, $02, $FF, $82, $42  ; CPU:$8B50 PRG:8B50  1F 20 21 22 66 03 FF 84 4E 41 4D 45 02 FF 82 42
-    .byte $55, $02, $42, $82, $4C, $45, $04, $FF, $85, $53, $43, $4F, $52, $45, $02, $FF  ; CPU:$8B60 PRG:8B60  55 02 42 82 4C 45 04 FF 85 53 43 4F 52 45 02 FF
-    .byte $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60  ; CPU:$8B70 PRG:8B70  86 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 22 60
-    .byte $FF, $31, $6B, $FF, $59, $45, $48, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F  ; CPU:$8B80 PRG:8B80  FF 31 6B FF 59 45 48 13 FF 86 62 21 22 1F 20 5F
-    .byte $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $32, $6B, $FF, $43, $48, $45  ; CPU:$8B90 PRG:8B90  1A FF 8D 61 1F 20 21 22 60 FF 32 6B FF 43 48 45
-    .byte $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21  ; CPU:$8BA0 PRG:8BA0  13 FF 86 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21
-    .byte $22, $60, $FF, $33, $6B, $FF, $54, $52, $49, $13, $FF, $86, $62, $21, $22, $1F  ; CPU:$8BB0 PRG:8BB0  22 60 FF 33 6B FF 54 52 49 13 FF 86 62 21 22 1F
-    .byte $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $34, $6B, $FF, $48  ; CPU:$8BC0 PRG:8BC0  20 5F 1A FF 8D 61 1F 20 21 22 60 FF 34 6B FF 48
-    .byte $6B, $59, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F  ; CPU:$8BD0 PRG:8BD0  6B 59 13 FF 86 62 21 22 1F 20 5F 1A FF 8D 61 1F
-    .byte $20, $21, $22, $60, $FF, $35, $6B, $FF, $59, $41, $4E, $13, $FF, $86, $62, $21  ; CPU:$8BE0 PRG:8BE0  20 21 22 60 FF 35 6B FF 59 41 4E 13 FF 86 62 21
-    .byte $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $36, $6B  ; CPU:$8BF0 PRG:8BF0  22 1F 20 5F 1A FF 8D 61 1F 20 21 22 60 FF 36 6B
-    .byte $FF, $4A, $41, $43, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D  ; CPU:$8C00 PRG:8C00  FF 4A 41 43 13 FF 86 62 21 22 1F 20 5F 1A FF 8D
-    .byte $61, $1F, $20, $21, $22, $60, $FF, $37, $6B, $FF, $44, $6B, $48, $13, $FF, $86  ; CPU:$8C10 PRG:8C10  61 1F 20 21 22 60 FF 37 6B FF 44 6B 48 13 FF 86
-    .byte $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF  ; CPU:$8C20 PRG:8C20  62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 22 60 FF
-    .byte $38, $6B, $FF, $54, $49, $4E, $13, $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A  ; CPU:$8C30 PRG:8C30  38 6B FF 54 49 4E 13 FF 86 62 21 22 1F 20 5F 1A
-    .byte $FF, $8D, $61, $1F, $20, $21, $22, $60, $FF, $39, $6B, $FF, $42, $41, $42, $13  ; CPU:$8C40 PRG:8C40  FF 8D 61 1F 20 21 22 60 FF 39 6B FF 42 41 42 13
-    .byte $FF, $86, $62, $21, $22, $1F, $20, $5F, $1A, $FF, $8D, $61, $1F, $20, $21, $22  ; CPU:$8C50 PRG:8C50  FF 86 62 21 22 1F 20 5F 1A FF 8D 61 1F 20 21 22
-    .byte $60, $FF, $31, $30, $6B, $4B, $41, $54, $13, $FF, $87, $62, $21, $22, $1F, $20  ; CPU:$8C60 PRG:8C60  60 FF 31 30 6B 4B 41 54 13 FF 87 62 21 22 1F 20
-    .byte $6E, $6C, $19, $6D, $A3, $6F, $1F, $20, $21, $22, $60, $21, $22, $21, $22, $21  ; CPU:$8C70 PRG:8C70  6E 6C 19 6D A3 6F 1F 20 21 22 60 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21, $22, $21  ; CPU:$8C80 PRG:8C80  22 21 22 21 22 21 22 21 22 21 22 21 22 21 22 21
-    .byte $22, $21, $22, $21, $22, $62, $21, $22, $11, $FF, $06, $5A, $02, $FF, $06, $5A  ; CPU:$8C90 PRG:8C90  22 21 22 21 22 62 21 22 11 FF 06 5A 02 FF 06 5A
-    .byte $02, $FF, $06, $5A, $02, $FF, $06, $5A, $02, $FF, $06, $5A, $09, $FF, $FF, $FF  ; CPU:$8CA0 PRG:8CA0  02 FF 06 5A 02 FF 06 5A 02 FF 06 5A 09 FF FF FF
-    .byte $FF, $20, $00, $46, $FF, $83, $50, $4C, $41, $02, $4E, $85, $45, $44, $FF, $42  ; CPU:$8CB0 PRG:8CB0  FF 20 00 46 FF 83 50 4C 41 02 4E 85 45 44 FF 42
-    .byte $59, $16, $FF, $8B, $54, $52, $49, $43, $49, $41, $FF, $43, $48, $45, $4E, $35  ; CPU:$8CC0 PRG:8CC0  59 16 FF 8B 54 52 49 43 49 41 FF 43 48 45 4E 35
-    .byte $FF, $86, $50, $52, $4F, $47, $52, $41, $02, $4D, $85, $45, $44, $FF, $42, $59  ; CPU:$8CD0 PRG:8CD0  FF 86 50 52 4F 47 52 41 02 4D 85 45 44 FF 42 59
-    .byte $13, $FF, $8B, $53, $49, $4C, $56, $45, $52, $53, $FF, $4C, $49, $4E, $35, $FF  ; CPU:$8CE0 PRG:8CE0  13 FF 8B 53 49 4C 56 45 52 53 FF 4C 49 4E 35 FF
-    .byte $8A, $47, $52, $41, $50, $48, $49, $43, $FF, $42, $59, $16, $FF, $8A, $4B, $41  ; CPU:$8CF0 PRG:8CF0  8A 47 52 41 50 48 49 43 FF 42 59 16 FF 8A 4B 41
-    .byte $54, $48, $59, $FF, $43, $48, $45, $4E, $36, $FF, $90, $41, $52, $54, $FF, $44  ; CPU:$8D00 PRG:8D00  54 48 59 FF 43 48 45 4E 36 FF 90 41 52 54 FF 44
-    .byte $49, $52, $45, $43, $54, $49, $4F, $4E, $FF, $42, $59, $10, $FF, $8A, $50, $4F  ; CPU:$8D10 PRG:8D10  49 52 45 43 54 49 4F 4E FF 42 59 10 FF 8A 50 4F
-    .byte $4E, $59, $FF, $43, $48, $49, $4F, $55, $36, $FF, $88, $4D, $55, $53, $49, $43  ; CPU:$8D20 PRG:8D20  4E 59 FF 43 48 49 4F 55 36 FF 88 4D 55 53 49 43
-    .byte $FF, $42, $59, $18, $FF, $82, $4B, $4F, $02, $53, $88, $45, $4C, $FF, $48, $55  ; CPU:$8D30 PRG:8D30  FF 42 59 18 FF 82 4B 4F 02 53 88 45 4C FF 48 55
-    .byte $41, $4E, $47, $34, $FF, $89, $54, $48, $41, $4E, $4B, $53, $FF, $54, $4F, $17  ; CPU:$8D40 PRG:8D40  41 4E 47 34 FF 89 54 48 41 4E 4B 53 FF 54 4F 17
-    .byte $FF, $88, $4A, $41, $43, $4B, $FF, $59, $45, $48, $38, $FF, $85, $42, $47, $4D  ; CPU:$8D50 PRG:8D50  FF 88 4A 41 43 4B FF 59 45 48 38 FF 85 42 47 4D
-    .byte $40, $8E, $1B, $FF, $92, $57, $41, $56, $49, $4E, $47, $FF, $55, $50, $FF, $41  ; CPU:$8D60 PRG:8D60  40 8E 1B FF 92 57 41 56 49 4E 47 FF 55 50 FF 41
-    .byte $4E, $44, $FF, $44, $4F, $57, $4E, $2E, $FF, $85, $42, $47, $4D, $40, $8F, $1B  ; CPU:$8D70 PRG:8D70  4E 44 FF 44 4F 57 4E 2E FF 85 42 47 4D 40 8F 1B
-    .byte $FF, $87, $42, $4C, $4F, $57, $FF, $42, $55, $02, $42, $83, $4C, $45, $53, $34  ; CPU:$8D80 PRG:8D80  FF 87 42 4C 4F 57 FF 42 55 02 42 83 4C 45 53 34
-    .byte $FF, $85, $42, $47, $4D, $40, $7C, $1B, $FF, $90, $57, $4F, $4E, $44, $45, $52  ; CPU:$8D90 PRG:8D90  FF 85 42 47 4D 40 7C 1B FF 90 57 4F 4E 44 45 52
-    .byte $46, $55, $4C, $FF, $53, $45, $41, $42, $45, $44, $77, $FF, $13, $FF, $FF, $FF  ; CPU:$8DA0 PRG:8DA0  46 55 4C FF 53 45 41 42 45 44 77 FF 13 FF FF FF
-    .byte $FF, $24, $00, $66, $FF, $81, $FB, $06, $FA, $83, $01, $02, $03, $03, $FA, $84  ; CPU:$8DB0 PRG:8DB0  FF 24 00 66 FF 81 FB 06 FA 83 01 02 03 03 FA 84
-    .byte $04, $05, $06, $07, $02, $FA, $81, $F9, $0C, $FF, $81, $FC, $06, $11, $83, $08  ; CPU:$8DC0 PRG:8DC0  04 05 06 07 02 FA 81 F9 0C FF 81 FC 06 11 83 08
-    .byte $09, $0A, $03, $11, $84, $0B, $0C, $0D, $0E, $02, $11, $81, $FD, $0C, $FF, $84  ; CPU:$8DD0 PRG:8DD0  09 0A 03 11 84 0B 0C 0D 0E 02 11 81 FD 0C FF 84
-    .byte $FC, $11, $0F, $10, $02, $11, $84, $12, $13, $14, $15, $03, $11, $84, $17, $18  ; CPU:$8DE0 PRG:8DE0  FC 11 0F 10 02 11 84 12 13 14 15 03 11 84 17 18
-    .byte $19, $1A, $02, $11, $81, $FD, $0C, $FF, $8C, $FC, $11, $1B, $1C, $1D, $1E, $1F  ; CPU:$8DF0 PRG:8DF0  19 1A 02 11 81 FD 0C FF 8C FC 11 1B 1C 1D 1E 1F
-    .byte $20, $21, $22, $23, $24, $02, $11, $82, $26, $27, $03, $11, $81, $FD, $0C, $FF  ; CPU:$8E00 PRG:8E00  20 21 22 23 24 02 11 82 26 27 03 11 81 FD 0C FF
-    .byte $90, $FC, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $32, $33, $11, $35  ; CPU:$8E10 PRG:8E10  90 FC 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 11 35
-    .byte $36, $03, $11, $81, $FD, $0C, $FF, $94, $FC, $37, $38, $39, $3A, $3B, $3C, $3D  ; CPU:$8E20 PRG:8E20  36 03 11 81 FD 0C FF 94 FC 37 38 39 3A 3B 3C 3D
-    .byte $3E, $3F, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $0C, $FF, $94, $FC  ; CPU:$8E30 PRG:8E30  3E 3F 40 41 42 43 44 45 46 47 48 49 0C FF 94 FC
-    .byte $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $5A  ; CPU:$8E40 PRG:8E40  4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A
-    .byte $5B, $5C, $5D, $0C, $FF, $94, $5E, $5F, $60, $61, $62, $63, $64, $65, $66, $67  ; CPU:$8E50 PRG:8E50  5B 5C 5D 0C FF 94 5E 5F 60 61 62 63 64 65 66 67
-    .byte $68, $69, $6A, $6B, $6C, $6D, $6E, $6F, $70, $71, $0C, $FF, $94, $72, $73, $74  ; CPU:$8E60 PRG:8E60  68 69 6A 6B 6C 6D 6E 6F 70 71 0C FF 94 72 73 74
-    .byte $75, $76, $77, $78, $79, $7A, $7B, $7C, $7D, $7E, $7F, $80, $81, $82, $83, $84  ; CPU:$8E70 PRG:8E70  75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84
-    .byte $85, $0C, $FF, $89, $86, $87, $88, $89, $8A, $8B, $8C, $8D, $8E, $04, $8F, $87  ; CPU:$8E80 PRG:8E80  85 0C FF 89 86 87 88 89 8A 8B 8C 8D 8E 04 8F 87
-    .byte $93, $94, $95, $96, $97, $98, $99, $0C, $FF, $89, $9A, $9B, $9C, $9D, $9E, $9F  ; CPU:$8E90 PRG:8E90  93 94 95 96 97 98 99 0C FF 89 9A 9B 9C 9D 9E 9F
-    .byte $A0, $A1, $A2, $03, $8F, $88, $A6, $A7, $A8, $A9, $EF, $F0, $F1, $F8, $0C, $FF  ; CPU:$8EA0 PRG:8EA0  A0 A1 A2 03 8F 88 A6 A7 A8 A9 EF F0 F1 F8 0C FF
-    .byte $89, $AA, $AB, $AC, $AD, $AE, $AF, $B0, $B1, $B2, $02, $8F, $83, $B5, $B6, $B7  ; CPU:$8EB0 PRG:8EB0  89 AA AB AC AD AE AF B0 B1 B2 02 8F 83 B5 B6 B7
-    .byte $05, $16, $81, $F8, $0C, $FF, $8D, $B8, $B9, $BA, $BB, $BC, $BD, $BE, $BF, $C0  ; CPU:$8EC0 PRG:8EC0  05 16 81 F8 0C FF 8D B8 B9 BA BB BC BD BE BF C0
-    .byte $8F, $C2, $C3, $C4, $06, $16, $81, $F8, $0C, $FF, $8C, $C5, $C6, $C7, $C8, $C9  ; CPU:$8ED0 PRG:8ED0  8F C2 C3 C4 06 16 81 F8 0C FF 8C C5 C6 C7 C8 C9
-    .byte $CA, $CB, $CC, $CD, $CE, $CF, $D0, $07, $16, $81, $F8, $0C, $FF, $8A, $D1, $D2  ; CPU:$8EE0 PRG:8EE0  CA CB CC CD CE CF D0 07 16 81 F8 0C FF 8A D1 D2
-    .byte $D3, $D4, $D5, $D6, $D7, $D8, $F2, $F3, $09, $16, $81, $F8, $0C, $FF, $88, $D9  ; CPU:$8EF0 PRG:8EF0  D3 D4 D5 D6 D7 D8 F2 F3 09 16 81 F8 0C FF 88 D9
-    .byte $DA, $DB, $DC, $DD, $DE, $DF, $E0, $0B, $16, $81, $F8, $0C, $FF, $83, $E1, $E2  ; CPU:$8F00 PRG:8F00  DA DB DC DD DE DF E0 0B 16 81 F8 0C FF 83 E1 E2
-    .byte $E3, $10, $16, $81, $F8, $0C, $FF, $81, $F5, $12, $F6, $81, $F7, $77, $FF, $77  ; CPU:$8F10 PRG:8F10  E3 10 16 81 F8 0C FF 81 F5 12 F6 81 F7 77 FF 77
-    .byte $FF, $3B, $FF, $81, $3F, $06, $FF, $83, $CF, $03, $0C, $05, $FF, $84, $F3, $A0  ; CPU:$8F20 PRG:8F20  FF 3B FF 81 3F 06 FF 83 CF 03 0C 05 FF 84 F3 A0
-    .byte $00, $0F, $03, $FF, $86, $BF, $AF, $AB, $56, $55, $DD, $02, $FF, $82, $7B, $5A  ; CPU:$8F30 PRG:8F30  00 0F 03 FF 86 BF AF AB 56 55 DD 02 FF 82 7B 5A
-    .byte $03, $55, $81, $DD, $02, $FF, $81, $F7, $04, $F5, $81, $FD, $11, $FF, $FF, $FF  ; CPU:$8F40 PRG:8F40  03 55 81 DD 02 FF 81 F7 04 F5 81 FD 11 FF FF FF
-    .byte $FF, $24, $00, $66, $FF, $81, $C5, $09, $C0, $82, $01, $02, $03, $C0, $82, $DB  ; CPU:$8F50 PRG:8F50  FF 24 00 66 FF 81 C5 09 C0 82 01 02 03 C0 82 DB
-    .byte $DC, $02, $C0, $81, $BF, $0C, $FF, $82, $C6, $F9, $06, $76, $85, $D1, $03, $04  ; CPU:$8F60 PRG:8F60  DC 02 C0 81 BF 0C FF 82 C6 F9 06 76 85 D1 03 04
-    .byte $05, $06, $02, $76, $82, $DD, $DE, $02, $76, $81, $BE, $0C, $FF, $83, $C6, $76  ; CPU:$8F70 PRG:8F70  05 06 02 76 82 DD DE 02 76 81 BE 0C FF 83 C6 76
-    .byte $F9, $04, $76, $8D, $C7, $07, $08, $09, $0A, $0B, $76, $D9, $DF, $E0, $DA, $76  ; CPU:$8F80 PRG:8F80  F9 04 76 8D C7 07 08 09 0A 0B 76 D9 DF E0 DA 76
-    .byte $BE, $0C, $FF, $81, $C6, $06, $76, $8A, $F9, $0C, $0D, $0E, $0F, $10, $76, $E1  ; CPU:$8F90 PRG:8F90  BE 0C FF 81 C6 06 76 8A F9 0C 0D 0E 0F 10 76 E1
-    .byte $E2, $E3, $02, $76, $81, $BE, $0C, $FF, $85, $C6, $F9, $76, $16, $17, $04, $76  ; CPU:$8FA0 PRG:8FA0  E2 E3 02 76 81 BE 0C FF 85 C6 F9 76 16 17 04 76
-    .byte $8B, $11, $12, $13, $14, $15, $E4, $E5, $E6, $E7, $76, $BE, $0C, $FF, $81, $C6  ; CPU:$8FB0 PRG:8FB0  8B 11 12 13 14 15 E4 E5 E6 E7 76 BE 0C FF 81 C6
-    .byte $02, $76, $91, $18, $19, $76, $F9, $76, $28, $29, $2A, $2B, $2C, $2D, $E8, $E9  ; CPU:$8FC0 PRG:8FC0  02 76 91 18 19 76 F9 76 28 29 2A 2B 2C 2D E8 E9
-    .byte $EA, $EB, $76, $BE, $0C, $FF, $81, $C6, $02, $76, $83, $1A, $1B, $1C, $02, $76  ; CPU:$8FD0 PRG:8FD0  EA EB 76 BE 0C FF 81 C6 02 76 83 1A 1B 1C 02 76
-    .byte $8C, $35, $36, $37, $38, $39, $3A, $EC, $ED, $EE, $EF, $76, $BE, $0C, $FF, $87  ; CPU:$8FE0 PRG:8FE0  8C 35 36 37 38 39 3A EC ED EE EF 76 BE 0C FF 87
-    .byte $1D, $1E, $1F, $20, $21, $22, $23, $02, $76, $8B, $24, $25, $26, $27, $2E, $76  ; CPU:$8FF0 PRG:8FF0  1D 1E 1F 20 21 22 23 02 76 8B 24 25 26 27 2E 76
-    .byte $F0, $F1, $F2, $76, $BE, $0C, $FF, $94, $2F, $30, $31, $32, $33, $34, $D8, $76  ; CPU:$9000 PRG:9000  F0 F1 F2 76 BE 0C FF 94 2F 30 31 32 33 34 D8 76
-    .byte $F5, $3B, $3C, $3D, $3E, $3F, $40, $76, $F3, $F4, $76, $BE, $0C, $FF, $90, $41  ; CPU:$9010 PRG:9010  F5 3B 3C 3D 3E 3F 40 76 F3 F4 76 BE 0C FF 90 41
-    .byte $42, $43, $44, $45, $46, $D7, $F6, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $03  ; CPU:$9020 PRG:9020  42 43 44 45 46 D7 F6 47 48 49 4A 4B 4C 4D 4E 03
-    .byte $76, $81, $BE, $0C, $FF, $90, $D3, $4F, $50, $51, $52, $53, $76, $54, $55, $56  ; CPU:$9030 PRG:9030  76 81 BE 0C FF 90 D3 4F 50 51 52 53 76 54 55 56
-    .byte $57, $58, $59, $5A, $5B, $5C, $03, $76, $81, $BE, $0C, $FF, $91, $C6, $76, $5D  ; CPU:$9040 PRG:9040  57 58 59 5A 5B 5C 03 76 81 BE 0C FF 91 C6 76 5D
-    .byte $5E, $5F, $60, $61, $62, $63, $64, $65, $66, $67, $68, $69, $6A, $6B, $02, $76  ; CPU:$9050 PRG:9050  5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 02 76
-    .byte $81, $BE, $0C, $FF, $8B, $C6, $76, $6C, $6D, $6E, $6F, $70, $71, $72, $73, $74  ; CPU:$9060 PRG:9060  81 BE 0C FF 8B C6 76 6C 6D 6E 6F 70 71 72 73 74
-    .byte $03, $75, $86, $78, $79, $7A, $7B, $7C, $BE, $0C, $FF, $94, $C6, $7D, $7E, $7F  ; CPU:$9070 PRG:9070  03 75 86 78 79 7A 7B 7C BE 0C FF 94 C6 7D 7E 7F
-    .byte $80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $8A, $8B, $8C, $8D, $8E, $BE  ; CPU:$9080 PRG:9080  80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E BE
-    .byte $0C, $FF, $94, $C6, $8F, $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $9A  ; CPU:$9090 PRG:9090  0C FF 94 C6 8F 90 91 92 93 94 95 96 97 98 99 9A
-    .byte $9B, $9C, $9D, $9E, $75, $A0, $A1, $0C, $FF, $94, $C6, $A2, $A3, $A4, $A5, $A6  ; CPU:$90A0 PRG:90A0  9B 9C 9D 9E 75 A0 A1 0C FF 94 C6 A2 A3 A4 A5 A6
-    .byte $A7, $A8, $A9, $AA, $AB, $AC, $AD, $AE, $AF, $B0, $75, $B3, $B4, $B2, $0C, $FF  ; CPU:$90B0 PRG:90B0  A7 A8 A9 AA AB AC AD AE AF B0 75 B3 B4 B2 0C FF
-    .byte $8A, $F7, $B5, $B6, $B7, $B8, $B9, $BA, $BB, $BC, $BD, $03, $75, $87, $C1, $C2  ; CPU:$90C0 PRG:90C0  8A F7 B5 B6 B7 B8 B9 BA BB BC BD 03 75 87 C1 C2
-    .byte $C3, $C4, $B5, $B6, $9F, $0C, $FF, $8A, $D2, $C8, $C9, $CA, $CB, $CC, $CD, $CE  ; CPU:$90D0 PRG:90D0  C3 C4 B5 B6 9F 0C FF 8A D2 C8 C9 CA CB CC CD CE
-    .byte $CF, $D0, $03, $77, $87, $D4, $D5, $D6, $F8, $C8, $C9, $B1, $77, $FF, $77, $FF  ; CPU:$90E0 PRG:90E0  CF D0 03 77 87 D4 D5 D6 F8 C8 C9 B1 77 FF 77 FF
-    .byte $3C, $FF, $81, $CF, $05, $FF, $84, $BF, $33, $00, $AA, $04, $FF, $84, $AA, $23  ; CPU:$90F0 PRG:90F0  3C FF 81 CF 05 FF 84 BF 33 00 AA 04 FF 84 AA 23
-    .byte $00, $AA, $04, $FF, $84, $AA, $A7, $52, $DC, $04, $FF, $84, $FE, $F7, $55, $D5  ; CPU:$9100 PRG:9100  00 AA 04 FF 84 AA A7 52 DC 04 FF 84 FE F7 55 D5
-    .byte $1A, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $D9, $09, $DA, $82  ; CPU:$9110 PRG:9110  1A FF FF FF FF 24 00 77 FF 0F FF 81 D9 09 DA 82
-    .byte $02, $03, $06, $DA, $81, $DB, $0D, $FF, $81, $DD, $08, $01, $85, $C5, $04, $05  ; CPU:$9120 PRG:9120  02 03 06 DA 81 DB 0D FF 81 DD 08 01 85 C5 04 05
-    .byte $01, $D8, $04, $01, $81, $DC, $0D, $FF, $81, $DD, $08, $01, $84, $06, $07, $08  ; CPU:$9130 PRG:9130  01 D8 04 01 81 DC 0D FF 81 DD 08 01 84 06 07 08
-    .byte $09, $05, $01, $81, $DC, $0D, $FF, $81, $DD, $08, $01, $84, $0D, $0C, $0B, $0A  ; CPU:$9140 PRG:9140  09 05 01 81 DC 0D FF 81 DD 08 01 84 0D 0C 0B 0A
-    .byte $05, $01, $81, $DC, $0D, $FF, $81, $DD, $08, $01, $84, $0E, $0F, $10, $11, $02  ; CPU:$9150 PRG:9150  05 01 81 DC 0D FF 81 DD 08 01 84 0E 0F 10 11 02
-    .byte $01, $84, $86, $87, $88, $89, $0D, $FF, $81, $DD, $04, $01, $81, $D8, $02, $01  ; CPU:$9160 PRG:9160  01 84 86 87 88 89 0D FF 81 DD 04 01 81 D8 02 01
-    .byte $85, $16, $15, $14, $13, $12, $02, $01, $84, $8A, $8B, $8C, $8D, $0D, $FF, $81  ; CPU:$9170 PRG:9170  85 16 15 14 13 12 02 01 84 8A 8B 8C 8D 0D FF 81
-    .byte $DD, $05, $01, $8D, $D8, $23, $17, $18, $19, $1A, $1B, $1C, $01, $8E, $8F, $90  ; CPU:$9180 PRG:9180  DD 05 01 8D D8 23 17 18 19 1A 1B 1C 01 8E 8F 90
-    .byte $91, $0D, $FF, $83, $DD, $01, $D8, $03, $01, $88, $D8, $24, $22, $21, $20, $1F  ; CPU:$9190 PRG:9190  91 0D FF 83 DD 01 D8 03 01 88 D8 24 22 21 20 1F
-    .byte $1E, $1D, $02, $01, $83, $92, $93, $DC, $0D, $FF, $83, $DD, $01, $D8, $02, $01  ; CPU:$91A0 PRG:91A0  1E 1D 02 01 83 92 93 DC 0D FF 83 DD 01 D8 02 01
-    .byte $8E, $37, $25, $26, $27, $28, $29, $2A, $2B, $2C, $D8, $01, $95, $94, $DC, $0D  ; CPU:$91B0 PRG:91B0  8E 37 25 26 27 28 29 2A 2B 2C D8 01 95 94 DC 0D
-    .byte $FF, $93, $DD, $CC, $C9, $C8, $38, $36, $35, $34, $33, $32, $31, $30, $2F, $2D  ; CPU:$91C0 PRG:91C0  FF 93 DD CC C9 C8 38 36 35 34 33 32 31 30 2F 2D
-    .byte $2E, $96, $97, $98, $99, $0D, $FF, $93, $D1, $CD, $CA, $C7, $39, $3A, $3B, $3C  ; CPU:$91D0 PRG:91D0  2E 96 97 98 99 0D FF 93 D1 CD CA C7 39 3A 3B 3C
-    .byte $3D, $3E, $3F, $40, $41, $42, $43, $9D, $9C, $9B, $9A, $0D, $FF, $93, $D2, $CE  ; CPU:$91E0 PRG:91E0  3D 3E 3F 40 41 42 43 9D 9C 9B 9A 0D FF 93 D2 CE
-    .byte $CB, $C6, $4E, $4D, $4C, $4B, $4A, $49, $48, $47, $46, $45, $44, $5B, $5C, $9E  ; CPU:$91F0 PRG:91F0  CB C6 4E 4D 4C 4B 4A 49 48 47 46 45 44 5B 5C 9E
-    .byte $9F, $0D, $FF, $93, $D3, $D0, $A6, $AD, $4F, $50, $51, $52, $7D, $54, $55, $56  ; CPU:$9200 PRG:9200  9F 0D FF 93 D3 D0 A6 AD 4F 50 51 52 7D 54 55 56
-    .byte $57, $58, $59, $5A, $5D, $AE, $AF, $0D, $FF, $93, $D4, $A8, $A4, $A5, $6C, $6B  ; CPU:$9210 PRG:9210  57 58 59 5A 5D AE AF 0D FF 93 D4 A8 A4 A5 6C 6B
-    .byte $6A, $69, $68, $67, $66, $65, $64, $63, $62, $5F, $5E, $B0, $B1, $0D, $FF, $93  ; CPU:$9220 PRG:9220  6A 69 68 67 66 65 64 63 62 5F 5E B0 B1 0D FF 93
-    .byte $D5, $A9, $A3, $A7, $6D, $6E, $6F, $70, $71, $72, $73, $74, $75, $76, $77, $60  ; CPU:$9230 PRG:9230  D5 A9 A3 A7 6D 6E 6F 70 71 72 73 74 75 76 77 60
-    .byte $61, $C1, $C2, $0D, $FF, $93, $D6, $AA, $AB, $A0, $78, $79, $7A, $7B, $7C, $85  ; CPU:$9240 PRG:9240  61 C1 C2 0D FF 93 D6 AA AB A0 78 79 7A 7B 7C 85
-    .byte $7E, $7F, $80, $81, $82, $83, $84, $C0, $C3, $0D, $FF, $93, $CF, $AC, $D7, $A1  ; CPU:$9250 PRG:9250  7E 7F 80 81 82 83 84 C0 C3 0D FF 93 CF AC D7 A1
-    .byte $B2, $B3, $B4, $B5, $B6, $B7, $B8, $B9, $BA, $BB, $BC, $BD, $BE, $BF, $C4, $77  ; CPU:$9260 PRG:9260  B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C4 77
-    .byte $FF, $77, $FF, $4E, $FF, $82, $BB, $FE, $03, $FF, $85, $7F, $CC, $FF, $8B, $EF  ; CPU:$9270 PRG:9270  FF 77 FF 4E FF 82 BB FE 03 FF 85 7F CC FF 8B EF
-    .byte $02, $FF, $85, $7F, $55, $0F, $FF, $00, $03, $FF, $82, $F7, $F5, $15, $FF, $FF  ; CPU:$9280 PRG:9280  02 FF 85 7F 55 0F FF 00 03 FF 82 F7 F5 15 FF FF
-    .byte $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $E0, $08, $E1, $83, $84, $85, $9B  ; CPU:$9290 PRG:9290  FF FF 24 00 77 FF 0F FF 81 E0 08 E1 83 84 85 9B
-    .byte $04, $E1, $83, $C1, $D5, $D6, $0D, $FF, $86, $E2, $DE, $17, $36, $37, $E8, $02  ; CPU:$92A0 PRG:92A0  04 E1 83 C1 D5 D6 0D FF 86 E2 DE 17 36 37 E8 02
-    .byte $DE, $86, $6C, $83, $86, $9A, $9C, $AE, $02, $DE, $83, $C2, $D4, $D7, $0D, $FF  ; CPU:$92B0 PRG:92B0  DE 86 6C 83 86 9A 9C AE 02 DE 83 C2 D4 D7 0D FF
-    .byte $8E, $E2, $DE, $18, $35, $38, $51, $DE, $E8, $6D, $82, $87, $99, $9D, $E8, $02  ; CPU:$92C0 PRG:92C0  8E E2 DE 18 35 38 51 DE E8 6D 82 87 99 9D E8 02
-    .byte $DE, $83, $C3, $D3, $D8, $0D, $FF, $93, $E2, $DE, $19, $34, $39, $50, $DE, $E8  ; CPU:$92D0 PRG:92D0  DE 83 C3 D3 D8 0D FF 93 E2 DE 19 34 39 50 DE E8
-    .byte $DE, $81, $88, $98, $9E, $E8, $AF, $C0, $C4, $D2, $E3, $0D, $FF, $93, $E2, $16  ; CPU:$92E0 PRG:92E0  DE 81 88 98 9E E8 AF C0 C4 D2 E3 0D FF 93 E2 16
-    .byte $1A, $33, $3A, $E8, $52, $6B, $6E, $80, $89, $97, $9F, $E7, $B0, $BF, $C5, $D1  ; CPU:$92F0 PRG:92F0  1A 33 3A E8 52 6B 6E 80 89 97 9F E7 B0 BF C5 D1
-    .byte $E3, $0D, $FF, $8B, $01, $15, $1B, $32, $3B, $E7, $53, $6A, $6F, $DE, $8A, $02  ; CPU:$9300 PRG:9300  E3 0D FF 8B 01 15 1B 32 3B E7 53 6A 6F DE 8A 02
-    .byte $DE, $86, $AD, $B1, $BE, $C6, $DE, $E3, $0D, $FF, $8A, $02, $14, $1C, $31, $3C  ; CPU:$9310 PRG:9310  DE 86 AD B1 BE C6 DE E3 0D FF 8A 02 14 1C 31 3C
-    .byte $E8, $54, $69, $DE, $E8, $03, $DE, $86, $AC, $B2, $BD, $C7, $D0, $D9, $0D, $FF  ; CPU:$9320 PRG:9320  E8 54 69 DE E8 03 DE 86 AC B2 BD C7 D0 D9 0D FF
-    .byte $8A, $E2, $13, $1D, $30, $3D, $4F, $55, $68, $70, $E8, $03, $DE, $86, $AB, $B3  ; CPU:$9330 PRG:9330  8A E2 13 1D 30 3D 4F 55 68 70 E8 03 DE 86 AB B3
-    .byte $BC, $C8, $CF, $DA, $0D, $FF, $8E, $E2, $12, $1E, $2F, $3E, $4E, $56, $67, $71  ; CPU:$9340 PRG:9340  BC C8 CF DA 0D FF 8E E2 12 1E 2F 3E 4E 56 67 71
-    .byte $7F, $8B, $96, $A0, $AA, $02, $DE, $83, $C9, $CE, $DB, $0D, $FF, $8B, $03, $11  ; CPU:$9350 PRG:9350  7F 8B 96 A0 AA 02 DE 83 C9 CE DB 0D FF 8B 03 11
-    .byte $1F, $2E, $3F, $4D, $57, $66, $72, $7E, $8C, $02, $DE, $81, $E8, $02, $DE, $83  ; CPU:$9360 PRG:9360  1F 2E 3F 4D 57 66 72 7E 8C 02 DE 81 E8 02 DE 83
-    .byte $E8, $DE, $DC, $0D, $FF, $8B, $04, $10, $20, $2D, $40, $4C, $58, $65, $73, $7D  ; CPU:$9370 PRG:9370  E8 DE DC 0D FF 8B 04 10 20 2D 40 4C 58 65 73 7D
-    .byte $8D, $02, $DE, $81, $E8, $02, $DE, $83, $E8, $DE, $E3, $0D, $FF, $8A, $E2, $0F  ; CPU:$9380 PRG:9380  8D 02 DE 81 E8 02 DE 83 E8 DE E3 0D FF 8A E2 0F
-    .byte $21, $2C, $41, $4B, $59, $64, $74, $E8, $02, $DE, $87, $E8, $A9, $B4, $DE, $E8  ; CPU:$9390 PRG:9390  21 2C 41 4B 59 64 74 E8 02 DE 87 E8 A9 B4 DE E8
-    .byte $DE, $E3, $0D, $FF, $8A, $05, $0E, $22, $2B, $42, $4A, $5A, $63, $75, $DE, $02  ; CPU:$93A0 PRG:93A0  DE E3 0D FF 8A 05 0E 22 2B 42 4A 5A 63 75 DE 02
-    .byte $8E, $87, $E7, $A8, $B5, $DE, $E7, $DE, $E3, $0D, $FF, $93, $06, $0D, $23, $2A  ; CPU:$93B0 PRG:93B0  8E 87 E7 A8 B5 DE E7 DE E3 0D FF 93 06 0D 23 2A
-    .byte $DE, $49, $5B, $62, $76, $7C, $76, $7C, $A1, $A7, $B6, $BB, $CA, $CD, $DD, $0D  ; CPU:$93C0 PRG:93C0  DE 49 5B 62 76 7C 76 7C A1 A7 B6 BB CA CD DD 0D
-    .byte $FF, $8D, $07, $0C, $24, $29, $43, $48, $5C, $61, $77, $7B, $90, $95, $A2, $02  ; CPU:$93D0 PRG:93D0  FF 8D 07 0C 24 29 43 48 5C 61 77 7B 90 95 A2 02
-    .byte $FF, $82, $BA, $CB, $02, $CC, $0D, $FF, $8F, $08, $0B, $25, $28, $44, $47, $5D  ; CPU:$93E0 PRG:93E0  FF 82 BA CB 02 CC 0D FF 8F 08 0B 25 28 44 47 5D
-    .byte $60, $DF, $7A, $91, $94, $A3, $A6, $B7, $03, $FF, $81, $EA, $0D, $FF, $90, $09  ; CPU:$93F0 PRG:93F0  60 DF 7A 91 94 A3 A6 B7 03 FF 81 EA 0D FF 90 09
-    .byte $0A, $26, $27, $45, $46, $5E, $5F, $78, $79, $92, $93, $A4, $A5, $B8, $B9, $02  ; CPU:$9400 PRG:9400  0A 26 27 45 46 5E 5F 78 79 92 93 A4 A5 B8 B9 02
-    .byte $E9, $81, $E4, $77, $FF, $77, $FF, $43, $FF, $81, $0C, $02, $FF, $87, $F7, $DD  ; CPU:$9410 PRG:9410  E9 81 E4 77 FF 77 FF 43 FF 81 0C 02 FF 87 F7 DD
-    .byte $FF, $7F, $53, $98, $AA, $02, $FF, $81, $FC, $02, $FF, $84, $F7, $7B, $AA, $EE  ; CPU:$9420 PRG:9420  FF 7F 53 98 AA 02 FF 81 FC 02 FF 84 F7 7B AA EE
-    .byte $05, $FF, $84, $55, $EA, $AE, $EF, $04, $FF, $81, $F5, $02, $FA, $81, $FE, $12  ; CPU:$9430 PRG:9430  05 FF 84 55 EA AE EF 04 FF 81 F5 02 FA 81 FE 12
-    .byte $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $79, $02, $6D, $81, $69  ; CPU:$9440 PRG:9440  FF FF FF FF 24 00 77 FF 0F FF 81 79 02 6D 81 69
-    .byte $06, $7A, $89, $19, $1A, $7A, $21, $22, $7A, $6B, $6D, $7B, $0D, $FF, $81, $80  ; CPU:$9450 PRG:9450  06 7A 89 19 1A 7A 21 22 7A 6B 6D 7B 0D FF 81 80
-    .byte $02, $6C, $81, $68, $05, $84, $8A, $14, $13, $15, $1B, $20, $23, $84, $6A, $6C  ; CPU:$9460 PRG:9460  02 6C 81 68 05 84 8A 14 13 15 1B 20 23 84 6A 6C
-    .byte $7C, $0D, $FF, $81, $80, $02, $6C, $90, $68, $B5, $01, $06, $07, $0C, $0D, $12  ; CPU:$9470 PRG:9470  7C 0D FF 81 80 02 6C 90 68 B5 01 06 07 0C 0D 12
-    .byte $16, $1C, $1F, $24, $84, $6A, $6C, $7C, $0D, $FF, $81, $80, $02, $6C, $90, $68  ; CPU:$9480 PRG:9480  16 1C 1F 24 84 6A 6C 7C 0D FF 81 80 02 6C 90 68
-    .byte $B3, $02, $05, $08, $0B, $0E, $11, $17, $1D, $1E, $25, $84, $6A, $6C, $7C, $0D  ; CPU:$9490 PRG:9490  B3 02 05 08 0B 0E 11 17 1D 1E 25 84 6A 6C 7C 0D
-    .byte $FF, $81, $80, $02, $6C, $8B, $68, $B4, $03, $04, $09, $0A, $0F, $10, $18, $84  ; CPU:$94A0 PRG:94A0  FF 81 80 02 6C 8B 68 B4 03 04 09 0A 0F 10 18 84
-    .byte $BA, $02, $84, $83, $6A, $6C, $7C, $0D, $FF, $81, $80, $02, $6C, $8B, $68, $84  ; CPU:$94B0 PRG:94B0  BA 02 84 83 6A 6C 7C 0D FF 81 80 02 6C 8B 68 84
-    .byte $77, $78, $2A, $26, $27, $28, $29, $82, $83, $02, $84, $83, $6A, $6C, $7C, $0D  ; CPU:$94C0 PRG:94C0  77 78 2A 26 27 28 29 82 83 02 84 83 6A 6C 7C 0D
-    .byte $FF, $81, $80, $02, $6C, $81, $68, $02, $84, $02, $2E, $85, $2B, $2C, $2D, $2E  ; CPU:$94D0 PRG:94D0  FF 81 80 02 6C 81 68 02 84 02 2E 85 2B 2C 2D 2E
-    .byte $37, $03, $84, $83, $6A, $6C, $7C, $0D, $FF, $81, $80, $02, $6C, $81, $34, $02  ; CPU:$94E0 PRG:94E0  37 03 84 83 6A 6C 7C 0D FF 81 80 02 6C 81 34 02
-    .byte $6E, $87, $31, $32, $33, $6E, $35, $36, $38, $03, $6E, $83, $6F, $6C, $7C, $0D  ; CPU:$94F0 PRG:94F0  6E 87 31 32 33 6E 35 36 38 03 6E 83 6F 6C 7C 0D
-    .byte $FF, $82, $8D, $97, $02, $95, $8F, $94, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40  ; CPU:$9500 PRG:9500  FF 82 8D 97 02 95 8F 94 39 3A 3B 3C 3D 3E 3F 40
-    .byte $41, $85, $86, $87, $A3, $B9, $0D, $FF, $93, $96, $98, $B1, $AB, $93, $4A, $49  ; CPU:$9510 PRG:9510  41 85 86 87 A3 B9 0D FF 93 96 98 B1 AB 93 4A 49
-    .byte $48, $47, $46, $45, $44, $43, $42, $A5, $A6, $8E, $91, $B8, $0D, $FF, $93, $96  ; CPU:$9520 PRG:9520  48 47 46 45 44 43 42 A5 A6 8E 91 B8 0D FF 93 96
-    .byte $99, $B0, $AC, $92, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53, $A4, $A7, $AA  ; CPU:$9530 PRG:9530  99 B0 AC 92 4B 4C 4D 4E 4F 50 51 52 53 A4 A7 AA
-    .byte $8F, $B7, $0D, $FF, $93, $96, $9A, $AF, $AD, $81, $5C, $5B, $5A, $59, $58, $57  ; CPU:$9540 PRG:9540  8F B7 0D FF 93 96 9A AF AD 81 5C 5B 5A 59 58 57
-    .byte $56, $55, $54, $88, $A8, $A9, $90, $B7, $0D, $FF, $93, $A2, $9B, $AE, $B2, $5D  ; CPU:$9550 PRG:9550  56 55 54 88 A8 A9 90 B7 0D FF 93 A2 9B AE B2 5D
-    .byte $5E, $5F, $60, $61, $62, $63, $64, $65, $66, $89, $8A, $8B, $8C, $30, $0D, $FF  ; CPU:$9560 PRG:9560  5E 5F 60 61 62 63 64 65 66 89 8A 8B 8C 30 0D FF
-    .byte $84, $A1, $67, $9D, $9E, $0A, $67, $82, $9F, $A0, $02, $67, $81, $2F, $0D, $FF  ; CPU:$9570 PRG:9570  84 A1 67 9D 9E 0A 67 82 9F A0 02 67 81 2F 0D FF
-    .byte $84, $80, $6C, $71, $72, $0B, $6C, $81, $73, $02, $6C, $81, $B6, $0D, $FF, $84  ; CPU:$9580 PRG:9580  84 80 6C 71 72 0B 6C 81 73 02 6C 81 B6 0D FF 84
-    .byte $80, $6C, $71, $72, $0B, $6C, $81, $74, $02, $6C, $81, $B6, $0D, $FF, $84, $7F  ; CPU:$9590 PRG:9590  80 6C 71 72 0B 6C 81 74 02 6C 81 B6 0D FF 84 7F
-    .byte $7E, $75, $76, $0B, $7E, $81, $9C, $02, $7E, $81, $7D, $77, $FF, $77, $FF, $3E  ; CPU:$95A0 PRG:95A0  7E 75 76 0B 7E 81 9C 02 7E 81 7D 77 FF 77 FF 3E
-    .byte $FF, $82, $33, $CC, $02, $FF, $82, $33, $CC, $02, $FF, $82, $33, $CC, $02, $FF  ; CPU:$95B0 PRG:95B0  FF 82 33 CC 02 FF 82 33 CC 02 FF 82 33 CC 02 FF
-    .byte $82, $33, $0C, $02, $0F, $82, $03, $CC, $02, $FF, $81, $BB, $02, $AA, $83, $55  ; CPU:$95C0 PRG:95C0  82 33 0C 02 0F 82 03 CC 02 FF 81 BB 02 AA 83 55
-    .byte $95, $ED, $02, $FF, $82, $7B, $6A, $03, $5A, $83, $EE, $FF, $FE, $05, $FA, $81  ; CPU:$95D0 PRG:95D0  95 ED 02 FF 82 7B 6A 03 5A 83 EE FF FE 05 FA 81
-    .byte $FE, $11, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $A6, $05, $36  ; CPU:$95E0 PRG:95E0  FE 11 FF FF FF FF 24 00 77 FF 0F FF 81 A6 05 36
-    .byte $04, $46, $04, $36, $85, $46, $B6, $B7, $B8, $49, $0D, $FF, $81, $9C, $05, $FF  ; CPU:$95F0 PRG:95F0  04 46 04 36 85 46 B6 B7 B8 49 0D FF 81 9C 05 FF
-    .byte $84, $CA, $C7, $C8, $C9, $04, $FF, $85, $A7, $B2, $B3, $B4, $B5, $0D, $FF, $81  ; CPU:$9600 PRG:9600  84 CA C7 C8 C9 04 FF 85 A7 B2 B3 B4 B5 0D FF 81
-    .byte $9C, $02, $FF, $81, $AF, $02, $FF, $84, $0C, $0D, $0E, $0F, $03, $FF, $86, $D0  ; CPU:$9610 PRG:9610  9C 02 FF 81 AF 02 FF 84 0C 0D 0E 0F 03 FF 86 D0
-    .byte $B9, $BA, $BB, $BC, $BD, $0D, $FF, $8A, $9C, $04, $05, $06, $07, $FF, $08, $09  ; CPU:$9620 PRG:9620  B9 BA BB BC BD 0D FF 8A 9C 04 05 06 07 FF 08 09
-    .byte $0A, $0B, $03, $FF, $86, $CF, $CE, $BE, $BF, $C0, $C1, $0D, $FF, $8A, $10, $11  ; CPU:$9630 PRG:9630  0A 0B 03 FF 86 CF CE BE BF C0 C1 0D FF 8A 10 11
-    .byte $12, $13, $14, $FF, $15, $16, $17, $18, $03, $FF, $86, $CC, $CD, $C2, $C3, $C5  ; CPU:$9640 PRG:9640  12 13 14 FF 15 16 17 18 03 FF 86 CC CD C2 C3 C5
-    .byte $6D, $0D, $FF, $8B, $19, $1A, $1B, $1C, $1D, $CB, $1E, $1F, $20, $21, $22, $02  ; CPU:$9650 PRG:9650  6D 0D FF 8B 19 1A 1B 1C 1D CB 1E 1F 20 21 22 02
-    .byte $FF, $83, $33, $34, $35, $02, $FF, $81, $70, $0D, $FF, $90, $23, $24, $25, $26  ; CPU:$9660 PRG:9660  FF 83 33 34 35 02 FF 81 70 0D FF 90 23 24 25 26
-    .byte $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $32, $02, $FF, $81, $70  ; CPU:$9670 PRG:9670  27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 02 FF 81 70
-    .byte $0D, $FF, $90, $C4, $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42  ; CPU:$9680 PRG:9680  0D FF 90 C4 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42
-    .byte $43, $44, $45, $02, $FF, $81, $70, $0D, $FF, $8F, $9C, $47, $48, $DC, $4A, $4B  ; CPU:$9690 PRG:9690  43 44 45 02 FF 81 70 0D FF 8F 9C 47 48 DC 4A 4B
-    .byte $4C, $4D, $4E, $4F, $50, $51, $52, $53, $54, $03, $FF, $81, $70, $0D, $FF, $8F  ; CPU:$96A0 PRG:96A0  4C 4D 4E 4F 50 51 52 53 54 03 FF 81 70 0D FF 8F
-    .byte $9C, $FF, $55, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, $60, $61, $03  ; CPU:$96B0 PRG:96B0  9C FF 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 03
-    .byte $FF, $81, $70, $0D, $FF, $8F, $9C, $FF, $62, $63, $64, $65, $66, $67, $68, $69  ; CPU:$96C0 PRG:96C0  FF 81 70 0D FF 8F 9C FF 62 63 64 65 66 67 68 69
-    .byte $6A, $6B, $6C, $03, $6E, $03, $FF, $81, $70, $0D, $FF, $8F, $9C, $FF, $6F, $03  ; CPU:$96D0 PRG:96D0  6A 6B 6C 03 6E 03 FF 81 70 0D FF 8F 9C FF 6F 03
-    .byte $71, $72, $73, $74, $75, $76, $77, $03, $79, $03, $7B, $03, $FF, $81, $70, $0D  ; CPU:$96E0 PRG:96E0  71 72 73 74 75 76 77 03 79 03 7B 03 FF 81 70 0D
-    .byte $FF, $8F, $9C, $FF, $7C, $7D, $7E, $7F, $80, $81, $82, $83, $84, $03, $86, $87  ; CPU:$96F0 PRG:96F0  FF 8F 9C FF 7C 7D 7E 7F 80 81 82 83 84 03 86 87
-    .byte $88, $03, $FF, $81, $70, $0D, $FF, $81, $9C, $02, $FF, $8A, $89, $8A, $8B, $8C  ; CPU:$9700 PRG:9700  88 03 FF 81 70 0D FF 81 9C 02 FF 8A 89 8A 8B 8C
-    .byte $8D, $8E, $8F, $90, $03, $92, $05, $FF, $81, $70, $0D, $FF, $81, $9C, $03, $FF  ; CPU:$9710 PRG:9710  8D 8E 8F 90 03 92 05 FF 81 70 0D FF 81 9C 03 FF
-    .byte $89, $93, $94, $95, $96, $97, $98, $99, $9A, $9B, $05, $FF, $81, $70, $0D, $FF  ; CPU:$9720 PRG:9720  89 93 94 95 96 97 98 99 9A 9B 05 FF 81 70 0D FF
-    .byte $81, $9C, $03, $FF, $89, $9D, $9E, $9F, $A0, $A1, $A2, $A3, $A4, $A5, $05, $FF  ; CPU:$9730 PRG:9730  81 9C 03 FF 89 9D 9E 9F A0 A1 A2 A3 A4 A5 05 FF
-    .byte $81, $70, $0D, $FF, $81, $91, $03, $85, $89, $A8, $A9, $AA, $AB, $AC, $AD, $AE  ; CPU:$9740 PRG:9740  81 70 0D FF 81 91 03 85 89 A8 A9 AA AB AC AD AE
-    .byte $03, $B0, $05, $85, $81, $7A, $77, $FF, $77, $FF, $43, $FF, $85, $5F, $AA, $BF  ; CPU:$9750 PRG:9750  03 B0 05 85 81 7A 77 FF 77 FF 43 FF 85 5F AA BF
-    .byte $AA, $EE, $02, $FF, $85, $55, $D5, $3A, $BA, $AA, $04, $FF, $84, $FE, $33, $FF  ; CPU:$9760 PRG:9760  AA EE 02 FF 85 55 D5 3A BA AA 04 FF 84 FE 33 FF
-    .byte $BB, $04, $FF, $83, $CF, $03, $CF, $06, $FF, $82, $F0, $FC, $13, $FF, $FF, $FF  ; CPU:$9770 PRG:9770  BB 04 FF 83 CF 03 CF 06 FF 82 F0 FC 13 FF FF FF
-    .byte $FF, $24, $00, $77, $FF, $0F, $FF, $84, $EB, $EA, $D0, $D1, $02, $EA, $83, $CA  ; CPU:$9780 PRG:9780  FF 24 00 77 FF 0F FF 84 EB EA D0 D1 02 EA 83 CA
-    .byte $C9, $C8, $02, $EA, $81, $B5, $06, $EA, $81, $E9, $0D, $FF, $8D, $EC, $01, $CF  ; CPU:$9790 PRG:9790  C9 C8 02 EA 81 B5 06 EA 81 E9 0D FF 8D EC 01 CF
-    .byte $CC, $D3, $01, $C5, $C6, $C7, $01, $C1, $C0, $BF, $05, $01, $81, $E8, $0D, $FF  ; CPU:$97A0 PRG:97A0  CC D3 01 C5 C6 C7 01 C1 C0 BF 05 01 81 E8 0D FF
-    .byte $8D, $EC, $01, $CE, $CB, $D2, $01, $C4, $C3, $C2, $ED, $BB, $BC, $BD, $05, $01  ; CPU:$97B0 PRG:97B0  8D EC 01 CE CB D2 01 C4 C3 C2 ED BB BC BD 05 01
-    .byte $81, $E8, $0D, $FF, $81, $EC, $03, $01, $82, $90, $91, $04, $01, $89, $BA, $B9  ; CPU:$97C0 PRG:97C0  81 E8 0D FF 81 EC 03 01 82 90 91 04 01 89 BA B9
-    .byte $B8, $AA, $03, $01, $EF, $01, $E8, $0D, $FF, $90, $EC, $01, $EE, $8D, $8C, $8A  ; CPU:$97D0 PRG:97D0  B8 AA 03 01 EF 01 E8 0D FF 90 EC 01 EE 8D 8C 8A
-    .byte $8B, $01, $ED, $B4, $B3, $AF, $B7, $05, $06, $07, $02, $01, $81, $E8, $0D, $FF  ; CPU:$97E0 PRG:97E0  8B 01 ED B4 B3 AF B7 05 06 07 02 01 81 E8 0D FF
-    .byte $81, $EC, $02, $01, $83, $8E, $88, $89, $03, $01, $8A, $B0, $B1, $B2, $0B, $0A  ; CPU:$97F0 PRG:97F0  81 EC 02 01 83 8E 88 89 03 01 8A B0 B1 B2 0B 0A
-    .byte $09, $08, $AB, $01, $E8, $0D, $FF, $81, $EC, $03, $01, $8F, $92, $86, $85, $84  ; CPU:$9800 PRG:9800  09 08 AB 01 E8 0D FF 81 EC 03 01 8F 92 86 85 84
-    .byte $01, $AD, $AC, $8F, $0D, $0E, $0F, $10, $11, $01, $E8, $0D, $FF, $81, $EC, $02  ; CPU:$9810 PRG:9810  01 AD AC 8F 0D 0E 0F 10 11 01 E8 0D FF 81 EC 02
-    .byte $01, $90, $94, $7B, $7C, $7D, $7E, $7F, $04, $4E, $4F, $16, $15, $14, $13, $12  ; CPU:$9820 PRG:9820  01 90 94 7B 7C 7D 7E 7F 04 4E 4F 16 15 14 13 12
-    .byte $01, $E8, $0D, $FF, $81, $EC, $02, $01, $90, $95, $72, $71, $70, $6F, $80, $93  ; CPU:$9830 PRG:9830  01 E8 0D FF 81 EC 02 01 90 95 72 71 70 6F 80 93
-    .byte $23, $21, $1B, $1A, $19, $18, $17, $01, $E8, $0D, $FF, $93, $EC, $ED, $01, $96  ; CPU:$9840 PRG:9840  23 21 1B 1A 19 18 17 01 E8 0D FF 93 EC ED 01 96
-    .byte $73, $6C, $6D, $6E, $82, $83, $24, $22, $20, $1F, $1E, $1D, $1C, $01, $E8, $0D  ; CPU:$9850 PRG:9850  73 6C 6D 6E 82 83 24 22 20 1F 1E 1D 1C 01 E8 0D
-    .byte $FF, $81, $EC, $02, $01, $90, $97, $74, $6B, $6A, $62, $61, $81, $25, $26, $27  ; CPU:$9860 PRG:9860  FF 81 EC 02 01 90 97 74 6B 6A 62 61 81 25 26 27
-    .byte $28, $29, $2A, $2B, $01, $E8, $0D, $FF, $93, $E6, $A1, $9D, $9C, $75, $99, $69  ; CPU:$9870 PRG:9870  28 29 2A 2B 01 E8 0D FF 93 E6 A1 9D 9C 75 99 69
-    .byte $63, $5F, $60, $32, $31, $30, $2F, $2E, $2D, $2C, $01, $E8, $0D, $FF, $93, $E1  ; CPU:$9880 PRG:9880  63 5F 60 32 31 30 2F 2E 2D 2C 01 E8 0D FF 93 E1
-    .byte $A0, $9E, $9B, $76, $79, $68, $64, $5E, $5B, $01, $38, $37, $36, $35, $34, $33  ; CPU:$9890 PRG:9890  A0 9E 9B 76 79 68 64 5E 5B 01 38 37 36 35 34 33
-    .byte $4D, $E8, $0D, $FF, $93, $DF, $DE, $9F, $9A, $77, $78, $67, $65, $5D, $5A, $3F  ; CPU:$98A0 PRG:98A0  4D E8 0D FF 93 DF DE 9F 9A 77 78 67 65 5D 5A 3F
-    .byte $3E, $3D, $3C, $3B, $3A, $39, $01, $E8, $0D, $FF, $93, $DC, $DD, $E0, $E2, $7A  ; CPU:$98B0 PRG:98B0  3E 3D 3C 3B 3A 39 01 E8 0D FF 93 DC DD E0 E2 7A
-    .byte $A2, $A3, $A4, $5C, $59, $46, $45, $44, $43, $42, $41, $40, $01, $E8, $0D, $FF  ; CPU:$98C0 PRG:98C0  A2 A3 A4 5C 59 46 45 44 43 42 41 40 01 E8 0D FF
-    .byte $93, $DB, $DA, $D9, $D8, $E5, $98, $A6, $A5, $A9, $58, $4A, $49, $48, $47, $52  ; CPU:$98D0 PRG:98D0  93 DB DA D9 D8 E5 98 A6 A5 A9 58 4A 49 48 47 52
-    .byte $51, $50, $01, $E8, $0D, $FF, $88, $D5, $D4, $D6, $D7, $E3, $E4, $A7, $A8, $02  ; CPU:$98E0 PRG:98E0  51 50 01 E8 0D FF 88 D5 D4 D6 D7 E3 E4 A7 A8 02
-    .byte $E7, $82, $4C, $4B, $02, $02, $85, $53, $54, $55, $56, $57, $77, $FF, $77, $FF  ; CPU:$98F0 PRG:98F0  E7 82 4C 4B 02 02 85 53 54 55 56 57 77 FF 77 FF
-    .byte $43, $FF, $81, $BF, $07, $FF, $84, $56, $DD, $BB, $9A, $04, $FF, $84, $75, $55  ; CPU:$9900 PRG:9900  43 FF 81 BF 07 FF 84 56 DD BB 9A 04 FF 84 75 55
-    .byte $67, $55, $03, $FF, $85, $33, $CB, $33, $00, $04, $06, $FF, $02, $F0, $12, $FF  ; CPU:$9910 PRG:9910  67 55 03 FF 85 33 CB 33 00 04 06 FF 02 F0 12 FF
-    .byte $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $86, $DE, $DC, $E6, $87, $88, $89  ; CPU:$9920 PRG:9920  FF FF FF 24 00 77 FF 0F FF 86 DE DC E6 87 88 89
-    .byte $05, $DC, $85, $8F, $90, $97, $DB, $E6, $02, $DC, $81, $DF, $0D, $FF, $81, $E1  ; CPU:$9930 PRG:9930  05 DC 85 8F 90 97 DB E6 02 DC 81 DF 0D FF 81 E1
-    .byte $02, $01, $84, $04, $05, $06, $9C, $03, $01, $84, $83, $84, $85, $86, $02, $01  ; CPU:$9940 PRG:9940  02 01 84 04 05 06 9C 03 01 84 83 84 85 86 02 01
-    .byte $83, $4A, $01, $DD, $0D, $FF, $87, $E1, $01, $8A, $07, $08, $09, $0A, $02, $01  ; CPU:$9950 PRG:9950  83 4A 01 DD 0D FF 87 E1 01 8A 07 08 09 0A 02 01
-    .byte $86, $99, $82, $81, $80, $7F, $9B, $03, $01, $81, $DD, $0D, $FF, $8F, $E1, $01  ; CPU:$9960 PRG:9960  86 99 82 81 80 7F 9B 03 01 81 DD 0D FF 8F E1 01
-    .byte $0B, $0C, $0D, $0E, $0F, $E5, $01, $96, $7B, $7C, $7D, $7E, $9A, $03, $01, $81  ; CPU:$9970 PRG:9970  0B 0C 0D 0E 0F E5 01 96 7B 7C 7D 7E 9A 03 01 81
-    .byte $DD, $0D, $FF, $8F, $E1, $01, $10, $11, $12, $13, $14, $01, $DA, $01, $7A, $79  ; CPU:$9980 PRG:9980  DD 0D FF 8F E1 01 10 11 12 13 14 01 DA 01 7A 79
-    .byte $76, $75, $E0, $03, $01, $81, $DD, $0D, $FF, $88, $E1, $01, $15, $16, $17, $18  ; CPU:$9990 PRG:9990  76 75 E0 03 01 81 DD 0D FF 88 E1 01 15 16 17 18
-    .byte $19, $E8, $03, $01, $82, $78, $77, $05, $01, $81, $DD, $0D, $FF, $88, $E1, $01  ; CPU:$99A0 PRG:99A0  19 E8 03 01 82 78 77 05 01 81 DD 0D FF 88 E1 01
-    .byte $1A, $1B, $1C, $1D, $1E, $E9, $02, $01, $86, $70, $71, $72, $73, $74, $DA, $02  ; CPU:$99B0 PRG:99B0  1A 1B 1C 1D 1E E9 02 01 86 70 71 72 73 74 DA 02
-    .byte $01, $81, $DD, $0D, $FF, $90, $E1, $01, $1F, $20, $21, $22, $23, $2A, $01, $95  ; CPU:$99C0 PRG:99C0  01 81 DD 0D FF 90 E1 01 1F 20 21 22 23 2A 01 95
-    .byte $6F, $6E, $6D, $6C, $6B, $93, $02, $01, $81, $DD, $0D, $FF, $90, $E1, $E7, $24  ; CPU:$99D0 PRG:99D0  6F 6E 6D 6C 6B 93 02 01 81 DD 0D FF 90 E1 E7 24
-    .byte $25, $26, $27, $28, $29, $01, $65, $66, $67, $68, $69, $6A, $91, $02, $01, $81  ; CPU:$99E0 PRG:99E0  25 26 27 28 29 01 65 66 67 68 69 6A 91 02 01 81
-    .byte $DD, $0D, $FF, $81, $E1, $02, $01, $8D, $2B, $2C, $2D, $2E, $01, $E7, $64, $63  ; CPU:$99F0 PRG:99F0  DD 0D FF 81 E1 02 01 8D 2B 2C 2D 2E 01 E7 64 63
-    .byte $62, $61, $60, $5F, $5E, $02, $01, $81, $DD, $0D, $FF, $81, $E3, $02, $01, $84  ; CPU:$9A00 PRG:9A00  62 61 60 5F 5E 02 01 81 DD 0D FF 81 E3 02 01 84
-    .byte $2F, $30, $31, $32, $02, $01, $87, $57, $58, $59, $5A, $5B, $5C, $5D, $02, $01  ; CPU:$9A10 PRG:9A10  2F 30 31 32 02 01 87 57 58 59 5A 5B 5C 5D 02 01
-    .byte $81, $DD, $0D, $FF, $87, $E3, $BA, $BC, $33, $34, $35, $36, $02, $01, $8A, $9D  ; CPU:$9A20 PRG:9A20  81 DD 0D FF 87 E3 BA BC 33 34 35 36 02 01 8A 9D
-    .byte $55, $54, $53, $52, $51, $94, $C5, $C6, $C7, $0D, $FF, $88, $E3, $A9, $BB, $01  ; CPU:$9A30 PRG:9A30  55 54 53 52 51 94 C5 C6 C7 0D FF 88 E3 A9 BB 01
-    .byte $37, $38, $39, $3C, $02, $01, $89, $56, $45, $4E, $4F, $50, $AA, $AB, $AC, $AD  ; CPU:$9A40 PRG:9A40  37 38 39 3C 02 01 89 56 45 4E 4F 50 AA AB AC AD
-    .byte $0D, $FF, $93, $E3, $A7, $B8, $B9, $92, $3A, $3B, $3D, $3E, $8D, $44, $46, $4D  ; CPU:$9A50 PRG:9A50  0D FF 93 E3 A7 B8 B9 92 3A 3B 3D 3E 8D 44 46 4D
-    .byte $C8, $C4, $B1, $B0, $AF, $AE, $0D, $FF, $8C, $E3, $A5, $B7, $B6, $BF, $01, $3F  ; CPU:$9A60 PRG:9A60  C8 C4 B1 B0 AF AE 0D FF 8C E3 A5 B7 B6 BF 01 3F
-    .byte $40, $41, $42, $43, $47, $03, $01, $84, $04, $CC, $CD, $CE, $0D, $FF, $86, $A2  ; CPU:$9A70 PRG:9A70  40 41 42 43 47 03 01 84 04 CC CD CE 0D FF 86 A2
-    .byte $A3, $B4, $B5, $C1, $C3, $04, $01, $89, $49, $48, $4B, $01, $D5, $D3, $4C, $C9  ; CPU:$9A80 PRG:9A80  A3 B4 B5 C1 C3 04 01 89 49 48 4B 01 D5 D3 4C C9
-    .byte $CA, $0D, $FF, $88, $9F, $A0, $A1, $B3, $BD, $BE, $C0, $C2, $03, $E2, $88, $8B  ; CPU:$9A90 PRG:9A90  CA 0D FF 88 9F A0 A1 B3 BD BE C0 C2 03 E2 88 8B
-    .byte $8C, $D6, $D4, $D2, $D1, $D0, $CF, $77, $FF, $77, $FF, $43, $FF, $8C, $AA, $EE  ; CPU:$9AA0 PRG:9AA0  8C D6 D4 D2 D1 D0 CF 77 FF 77 FF 43 FF 8C AA EE
-    .byte $F7, $FE, $33, $FF, $3F, $FF, $55, $DA, $FF, $E2, $03, $FF, $83, $3F, $26, $CC  ; CPU:$9AB0 PRG:9AB0  F7 FE 33 FF 3F FF 55 DA FF E2 03 FF 83 3F 26 CC
-    .byte $02, $FF, $81, $33, $02, $FF, $81, $33, $02, $00, $83, $0C, $FF, $F3, $19, $FF  ; CPU:$9AC0 PRG:9AC0  02 FF 81 33 02 FF 81 33 02 00 83 0C FF F3 19 FF
-    .byte $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $B4, $06, $B5, $84, $3C, $3D  ; CPU:$9AD0 PRG:9AD0  FF FF FF 24 00 77 FF 0F FF 81 B4 06 B5 84 3C 3D
-    .byte $5B, $5C, $07, $B5, $81, $B6, $0D, $FF, $81, $BA, $03, $01, $81, $AF, $02, $01  ; CPU:$9AE0 PRG:9AE0  5B 5C 07 B5 81 B6 0D FF 81 BA 03 01 81 AF 02 01
-    .byte $84, $3B, $B2, $B3, $5D, $07, $01, $81, $B7, $0D, $FF, $81, $BA, $04, $01, $87  ; CPU:$9AF0 PRG:9AF0  84 3B B2 B3 5D 07 01 81 B7 0D FF 81 BA 04 01 87
-    .byte $AF, $01, $3A, $3E, $5A, $5E, $A4, $03, $01, $81, $AF, $02, $01, $81, $B7, $0D  ; CPU:$9B00 PRG:9B00  AF 01 3A 3E 5A 5E A4 03 01 81 AF 02 01 81 B7 0D
-    .byte $FF, $81, $BA, $06, $01, $85, $39, $3F, $59, $5F, $79, $06, $01, $81, $B7, $0D  ; CPU:$9B10 PRG:9B10  FF 81 BA 06 01 85 39 3F 59 5F 79 06 01 81 B7 0D
-    .byte $FF, $81, $BA, $04, $01, $88, $AE, $01, $38, $40, $58, $60, $78, $7A, $05, $01  ; CPU:$9B20 PRG:9B20  FF 81 BA 04 01 88 AE 01 38 40 58 60 78 7A 05 01
-    .byte $81, $B7, $0D, $FF, $81, $BA, $03, $01, $8A, $AD, $AF, $01, $37, $41, $57, $61  ; CPU:$9B30 PRG:9B30  81 B7 0D FF 81 BA 03 01 8A AD AF 01 37 41 57 61
-    .byte $77, $7B, $91, $03, $01, $82, $AF, $B7, $0D, $FF, $81, $BA, $04, $01, $8A, $22  ; CPU:$9B40 PRG:9B40  77 7B 91 03 01 82 AF B7 0D FF 81 BA 04 01 8A 22
-    .byte $23, $36, $42, $56, $62, $76, $7C, $90, $92, $03, $01, $81, $B7, $0D, $FF, $81  ; CPU:$9B50 PRG:9B50  23 36 42 56 62 76 7C 90 92 03 01 81 B7 0D FF 81
-    .byte $BA, $03, $01, $8C, $0F, $21, $24, $35, $43, $55, $63, $75, $7D, $B1, $93, $9E  ; CPU:$9B60 PRG:9B60  BA 03 01 8C 0F 21 24 35 43 55 63 75 7D B1 93 9E
-    .byte $02, $01, $81, $B7, $0D, $FF, $81, $BA, $02, $01, $90, $0E, $10, $20, $25, $34  ; CPU:$9B70 PRG:9B70  02 01 81 B7 0D FF 81 BA 02 01 90 0E 10 20 25 34
-    .byte $44, $54, $64, $74, $7E, $B1, $94, $9D, $9F, $01, $B7, $0D, $FF, $81, $BA, $02  ; CPU:$9B80 PRG:9B80  44 54 64 74 7E B1 94 9D 9F 01 B7 0D FF 81 BA 02
-    .byte $01, $90, $0D, $11, $1F, $26, $33, $45, $53, $65, $73, $80, $8E, $B0, $7F, $A0  ; CPU:$9B90 PRG:9B90  01 90 0D 11 1F 26 33 45 53 65 73 80 8E B0 7F A0
-    .byte $01, $B7, $0D, $FF, $8E, $BA, $01, $A6, $0C, $12, $1E, $27, $32, $46, $52, $66  ; CPU:$9BA0 PRG:9BA0  01 B7 0D FF 8E BA 01 A6 0C 12 1E 27 32 46 52 66
-    .byte $72, $80, $8D, $02, $7F, $83, $A1, $01, $B7, $0D, $FF, $81, $BA, $02, $01, $8B  ; CPU:$9BB0 PRG:9BB0  72 80 8D 02 7F 83 A1 01 B7 0D FF 81 BA 02 01 8B
-    .byte $0B, $13, $1D, $28, $31, $47, $51, $67, $71, $81, $8C, $02, $7F, $83, $A2, $01  ; CPU:$9BC0 PRG:9BC0  0B 13 1D 28 31 47 51 67 71 81 8C 02 7F 83 A2 01
-    .byte $B7, $0D, $FF, $93, $BA, $01, $02, $0A, $14, $1C, $29, $30, $48, $50, $68, $70  ; CPU:$9BD0 PRG:9BD0  B7 0D FF 93 BA 01 02 0A 14 1C 29 30 48 50 68 70
-    .byte $82, $8B, $95, $9C, $A3, $01, $B7, $0D, $FF, $93, $BA, $01, $03, $09, $15, $1B  ; CPU:$9BE0 PRG:9BE0  82 8B 95 9C A3 01 B7 0D FF 93 BA 01 03 09 15 1B
-    .byte $2A, $2F, $49, $4F, $69, $6F, $83, $8A, $96, $9B, $01, $AD, $B7, $0D, $FF, $90  ; CPU:$9BF0 PRG:9BF0  2A 2F 49 4F 69 6F 83 8A 96 9B 01 AD B7 0D FF 90
-    .byte $BA, $01, $A5, $08, $16, $1A, $2B, $2E, $4A, $4E, $8F, $6E, $84, $89, $97, $9A  ; CPU:$9C00 PRG:9C00  BA 01 A5 08 16 1A 2B 2E 4A 4E 8F 6E 84 89 97 9A
-    .byte $02, $01, $81, $B7, $0D, $FF, $93, $BA, $01, $04, $07, $01, $19, $01, $2D, $01  ; CPU:$9C10 PRG:9C10  02 01 81 B7 0D FF 93 BA 01 04 07 01 19 01 2D 01
-    .byte $4D, $6A, $6D, $85, $88, $98, $99, $AC, $01, $B7, $0D, $FF, $93, $B9, $A8, $05  ; CPU:$9C20 PRG:9C20  4D 6A 6D 85 88 98 99 AC 01 B7 0D FF 93 B9 A8 05
-    .byte $06, $17, $18, $A7, $2C, $4B, $4C, $6B, $6C, $86, $87, $A9, $AA, $AB, $BB, $B8  ; CPU:$9C30 PRG:9C30  06 17 18 A7 2C 4B 4C 6B 6C 86 87 A9 AA AB BB B8
-    .byte $77, $FF, $77, $FF, $42, $FF, $86, $BB, $AA, $2A, $8A, $AA, $EE, $02, $FF, $86  ; CPU:$9C40 PRG:9C40  77 FF 77 FF 42 FF 86 BB AA 2A 8A AA EE 02 FF 86
-    .byte $BB, $AF, $66, $98, $FA, $EE, $02, $FF, $86, $BB, $66, $99, $EE, $FF, $EE, $02  ; CPU:$9C50 PRG:9C50  BB AF 66 98 FA EE 02 FF 86 BB 66 99 EE FF EE 02
-    .byte $FF, $83, $BB, $46, $59, $02, $FF, $81, $EE, $03, $FF, $02, $F0, $02, $FF, $81  ; CPU:$9C60 PRG:9C60  FF 83 BB 46 59 02 FF 81 EE 03 FF 02 F0 02 FF 81
-    .byte $FE, $11, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81, $C0, $12, $BC  ; CPU:$9C70 PRG:9C70  FE 11 FF FF FF FF 24 00 77 FF 0F FF 81 C0 12 BC
-    .byte $81, $BF, $0C, $FF, $81, $C1, $12, $FF, $81, $BE, $0C, $FF, $81, $C1, $12, $FF  ; CPU:$9C80 PRG:9C80  81 BF 0C FF 81 C1 12 FF 81 BE 0C FF 81 C1 12 FF
-    .byte $81, $BE, $0C, $FF, $81, $C1, $0E, $FF, $85, $A0, $A7, $AE, $FF, $BE, $0C, $FF  ; CPU:$9C90 PRG:9C90  81 BE 0C FF 81 C1 0E FF 85 A0 A7 AE FF BE 0C FF
-    .byte $87, $C1, $0D, $0F, $28, $29, $42, $43, $08, $FF, $85, $A1, $A8, $95, $FF, $BE  ; CPU:$9CA0 PRG:9CA0  87 C1 0D 0F 28 29 42 43 08 FF 85 A1 A8 95 FF BE
-    .byte $0C, $FF, $8A, $0E, $0C, $10, $27, $2A, $41, $44, $5B, $5C, $73, $05, $FF, $85  ; CPU:$9CB0 PRG:9CB0  0C FF 8A 0E 0C 10 27 2A 41 44 5B 5C 73 05 FF 85
-    .byte $E8, $E1, $E3, $FF, $BE, $0C, $FF, $8A, $C1, $FF, $11, $26, $2B, $40, $45, $5A  ; CPU:$9CC0 PRG:9CC0  E8 E1 E3 FF BE 0C FF 8A C1 FF 11 26 2B 40 45 5A
-    .byte $5D, $72, $05, $FF, $85, $DF, $74, $DE, $B5, $E7, $0C, $FF, $8A, $C1, $FF, $12  ; CPU:$9CD0 PRG:9CD0  5D 72 05 FF 85 DF 74 DE B5 E7 0C FF 8A C1 FF 12
-    .byte $25, $2C, $E5, $46, $59, $5E, $71, $02, $FF, $88, $87, $9A, $9B, $A2, $E2, $B2  ; CPU:$9CE0 PRG:9CE0  25 2C E5 46 59 5E 71 02 FF 88 87 9A 9B A2 E2 B2
-    .byte $B6, $B9, $0C, $FF, $94, $C1, $FF, $13, $24, $2D, $3E, $47, $58, $5F, $70, $75  ; CPU:$9CF0 PRG:9CF0  B6 B9 0C FF 94 C1 FF 13 24 2D 3E 47 58 5F 70 75
-    .byte $86, $88, $99, $9C, $A5, $E4, $B3, $B7, $BA, $0C, $FF, $94, $C1, $FF, $14, $23  ; CPU:$9D00 PRG:9D00  86 88 99 9C A5 E4 B3 B7 BA 0C FF 94 C1 FF 14 23
-    .byte $2E, $3D, $48, $57, $60, $6F, $76, $85, $89, $98, $9D, $A6, $AD, $B4, $B8, $BB  ; CPU:$9D10 PRG:9D10  2E 3D 48 57 60 6F 76 85 89 98 9D A6 AD B4 B8 BB
-    .byte $0C, $FF, $8F, $C1, $FF, $15, $22, $2F, $3C, $49, $56, $61, $6E, $77, $84, $8A  ; CPU:$9D20 PRG:9D20  0C FF 8F C1 FF 15 22 2F 3C 49 56 61 6E 77 84 8A
-    .byte $97, $9E, $04, $FF, $81, $BE, $0C, $FF, $8E, $C1, $0B, $16, $E6, $30, $3B, $4A  ; CPU:$9D30 PRG:9D30  97 9E 04 FF 81 BE 0C FF 8E C1 0B 16 E6 30 3B 4A
-    .byte $55, $62, $6D, $78, $83, $8B, $96, $05, $FF, $81, $BE, $0C, $FF, $8D, $01, $0A  ; CPU:$9D40 PRG:9D40  55 62 6D 78 83 8B 96 05 FF 81 BE 0C FF 8D 01 0A
-    .byte $17, $20, $31, $3A, $4B, $54, $63, $6C, $79, $82, $8C, $06, $FF, $81, $BE, $0C  ; CPU:$9D50 PRG:9D50  17 20 31 3A 4B 54 63 6C 79 82 8C 06 FF 81 BE 0C
-    .byte $FF, $8E, $02, $09, $18, $1F, $32, $39, $4C, $53, $64, $6B, $7A, $81, $8D, $94  ; CPU:$9D60 PRG:9D60  FF 8E 02 09 18 1F 32 39 4C 53 64 6B 7A 81 8D 94
-    .byte $05, $FF, $81, $BE, $0C, $FF, $8E, $03, $08, $19, $1E, $33, $38, $4D, $52, $65  ; CPU:$9D70 PRG:9D70  05 FF 81 BE 0C FF 8E 03 08 19 1E 33 38 4D 52 65
-    .byte $6A, $7B, $80, $8E, $93, $05, $FF, $81, $BE, $0C, $FF, $8E, $04, $07, $1A, $1D  ; CPU:$9D80 PRG:9D80  6A 7B 80 8E 93 05 FF 81 BE 0C FF 8E 04 07 1A 1D
-    .byte $34, $37, $4E, $51, $66, $69, $7C, $7F, $8F, $92, $05, $FF, $81, $BE, $0C, $FF  ; CPU:$9D90 PRG:9D90  34 37 4E 51 66 69 7C 7F 8F 92 05 FF 81 BE 0C FF
-    .byte $8F, $05, $06, $1B, $1C, $35, $36, $4F, $50, $67, $68, $7D, $7E, $90, $91, $9F  ; CPU:$9DA0 PRG:9DA0  8F 05 06 1B 1C 35 36 4F 50 67 68 7D 7E 90 91 9F
-    .byte $04, $C3, $81, $BD, $77, $FF, $77, $FF, $45, $FF, $81, $5F, $03, $FF, $81, $F3  ; CPU:$9DB0 PRG:9DB0  04 C3 81 BD 77 FF 77 FF 45 FF 81 5F 03 FF 81 F3
-    .byte $02, $AA, $83, $FE, $B5, $DF, $03, $FF, $82, $22, $FA, $02, $FF, $81, $FD, $02  ; CPU:$9DC0 PRG:9DC0  02 AA 83 FE B5 DF 03 FF 82 22 FA 02 FF 81 FD 02
-    .byte $FF, $83, $B3, $AA, $66, $1C, $FF, $FF, $FF, $FF, $24, $00, $66, $FF, $81, $CB  ; CPU:$9DD0 PRG:9DD0  FF 83 B3 AA 66 1C FF FF FF FF 24 00 66 FF 81 CB
-    .byte $05, $BF, $81, $93, $0C, $BF, $81, $67, $0C, $FF, $81, $E2, $06, $A1, $84, $76  ; CPU:$9DE0 PRG:9DE0  05 BF 81 93 0C BF 81 67 0C FF 81 E2 06 A1 84 76
-    .byte $A1, $01, $02, $08, $A1, $81, $4D, $0C, $FF, $81, $E2, $03, $A1, $81, $21, $03  ; CPU:$9DF0 PRG:9DF0  A1 01 02 08 A1 81 4D 0C FF 81 E2 03 A1 81 21 03
-    .byte $A1, $84, $03, $04, $05, $06, $07, $A1, $81, $4D, $0C, $FF, $8C, $E2, $A1, $16  ; CPU:$9E00 PRG:9E00  A1 84 03 04 05 06 07 A1 81 4D 0C FF 8C E2 A1 16
-    .byte $17, $18, $A1, $4F, $07, $08, $09, $0A, $0B, $07, $A1, $81, $4D, $0C, $FF, $8C  ; CPU:$9E10 PRG:9E10  17 18 A1 4F 07 08 09 0A 0B 07 A1 81 4D 0C FF 8C
-    .byte $E2, $A1, $19, $1A, $1B, $A1, $41, $0C, $0D, $0E, $0F, $10, $07, $A1, $81, $4D  ; CPU:$9E20 PRG:9E20  E2 A1 19 1A 1B A1 41 0C 0D 0E 0F 10 07 A1 81 4D
-    .byte $0C, $FF, $8D, $E2, $1C, $1D, $1E, $1F, $20, $B4, $A1, $11, $12, $13, $14, $15  ; CPU:$9E30 PRG:9E30  0C FF 8D E2 1C 1D 1E 1F 20 B4 A1 11 12 13 14 15
-    .byte $06, $A1, $81, $4D, $0C, $FF, $8D, $E2, $22, $23, $24, $25, $26, $27, $28, $29  ; CPU:$9E40 PRG:9E40  06 A1 81 4D 0C FF 8D E2 22 23 24 25 26 27 28 29
-    .byte $2A, $2B, $2C, $2D, $06, $A1, $81, $4D, $0C, $FF, $8D, $2E, $2F, $30, $31, $32  ; CPU:$9E50 PRG:9E50  2A 2B 2C 2D 06 A1 81 4D 0C FF 8D 2E 2F 30 31 32
-    .byte $33, $34, $35, $36, $37, $38, $39, $3A, $06, $A1, $81, $4D, $0C, $FF, $8E, $E2  ; CPU:$9E60 PRG:9E60  33 34 35 36 37 38 39 3A 06 A1 81 4D 0C FF 8E E2
-    .byte $3C, $3D, $3E, $3F, $40, $A1, $42, $43, $44, $45, $46, $47, $4E, $05, $A1, $81  ; CPU:$9E70 PRG:9E70  3C 3D 3E 3F 40 A1 42 43 44 45 46 47 4E 05 A1 81
-    .byte $4D, $0C, $FF, $86, $E2, $48, $49, $4A, $4B, $4C, $03, $A1, $88, $50, $51, $52  ; CPU:$9E80 PRG:9E80  4D 0C FF 86 E2 48 49 4A 4B 4C 03 A1 88 50 51 52
-    .byte $53, $54, $55, $56, $57, $02, $A1, $81, $4D, $0C, $FF, $87, $E2, $59, $5A, $5B  ; CPU:$9E90 PRG:9E90  53 54 55 56 57 02 A1 81 4D 0C FF 87 E2 59 5A 5B
-    .byte $5C, $5D, $5E, $02, $A1, $88, $5F, $60, $61, $62, $63, $64, $65, $66, $02, $A1  ; CPU:$9EA0 PRG:9EA0  5C 5D 5E 02 A1 88 5F 60 61 62 63 64 65 66 02 A1
-    .byte $81, $4D, $0C, $FF, $86, $E2, $68, $69, $6A, $6B, $6C, $03, $A1, $88, $6E, $6F  ; CPU:$9EB0 PRG:9EB0  81 4D 0C FF 86 E2 68 69 6A 6B 6C 03 A1 88 6E 6F
-    .byte $70, $71, $72, $73, $74, $75, $02, $A1, $81, $4D, $0C, $FF, $94, $E2, $A1, $78  ; CPU:$9EC0 PRG:9EC0  70 71 72 73 74 75 02 A1 81 4D 0C FF 94 E2 A1 78
-    .byte $79, $7A, $7B, $E0, $7C, $B5, $B6, $80, $81, $82, $83, $84, $85, $86, $DD, $A1  ; CPU:$9ED0 PRG:9ED0  79 7A 7B E0 7C B5 B6 80 81 82 83 84 85 86 DD A1
-    .byte $4D, $0C, $FF, $81, $E2, $02, $A1, $91, $88, $89, $7D, $7E, $7F, $B7, $87, $8D  ; CPU:$9EE0 PRG:9EE0  4D 0C FF 81 E2 02 A1 91 88 89 7D 7E 7F B7 87 8D
-    .byte $8E, $8F, $90, $91, $92, $DB, $DC, $A1, $4D, $0C, $FF, $94, $9C, $AA, $BE, $A1  ; CPU:$9EF0 PRG:9EF0  8E 8F 90 91 92 DB DC A1 4D 0C FF 94 9C AA BE A1
-    .byte $DF, $8A, $8B, $8C, $E1, $E2, $97, $98, $99, $9A, $9B, $DE, $9D, $9E, $9F, $A0  ; CPU:$9F00 PRG:9F00  DF 8A 8B 8C E1 E2 97 98 99 9A 9B DE 9D 9E 9F A0
-    .byte $0C, $FF, $94, $77, $B8, $BD, $C0, $C5, $94, $95, $96, $CC, $CF, $E3, $A2, $A3  ; CPU:$9F10 PRG:9F10  0C FF 94 77 B8 BD C0 C5 94 95 96 CC CF E3 A2 A3
-    .byte $A4, $A5, $A6, $A7, $A8, $A9, $4D, $0C, $FF, $94, $6D, $B9, $BC, $C1, $C4, $C6  ; CPU:$9F20 PRG:9F20  A4 A5 A6 A7 A8 A9 4D 0C FF 94 6D B9 BC C1 C4 C6
-    .byte $E0, $C9, $CD, $D0, $D2, $D4, $A1, $AB, $AC, $AD, $AE, $AF, $B0, $4D, $0C, $FF  ; CPU:$9F30 PRG:9F30  E0 C9 CD D0 D2 D4 A1 AB AC AD AE AF B0 4D 0C FF
-    .byte $94, $58, $BA, $BB, $C2, $C3, $C7, $C8, $CA, $CE, $D1, $D3, $D5, $D6, $D7, $D8  ; CPU:$9F40 PRG:9F40  94 58 BA BB C2 C3 C7 C8 CA CE D1 D3 D5 D6 D7 D8
-    .byte $D9, $DA, $B1, $B2, $B3, $77, $FF, $77, $FF, $43, $FF, $82, $33, $CC, $06, $FF  ; CPU:$9F50 PRG:9F50  D9 DA B1 B2 B3 77 FF 77 FF 43 FF 82 33 CC 06 FF
-    .byte $82, $A0, $AA, $06, $FF, $83, $7B, $DA, $7F, $05, $FF, $81, $77, $02, $55, $07  ; CPU:$9F60 PRG:9F60  82 A0 AA 06 FF 83 7B DA 7F 05 FF 81 77 02 55 07
-    .byte $FF, $82, $F7, $FD, $11, $FF, $FF, $FF, $FF, $24, $00, $77, $FF, $0F, $FF, $81  ; CPU:$9F70 PRG:9F70  FF 82 F7 FD 11 FF FF FF FF 24 00 77 FF 0F FF 81
-    .byte $D9, $06, $DA, $83, $50, $51, $6C, $08, $DA, $81, $DB, $0D, $FF, $83, $DD, $FE  ; CPU:$9F80 PRG:9F80  D9 06 DA 83 50 51 6C 08 DA 81 DB 0D FF 83 DD FE
-    .byte $E3, $03, $FE, $89, $E3, $4F, $52, $6B, $FE, $E3, $84, $9C, $9D, $02, $FE, $82  ; CPU:$9F90 PRG:9F90  E3 03 FE 89 E3 4F 52 6B FE E3 84 9C 9D 02 FE 82
-    .byte $E4, $DC, $0D, $FF, $93, $DD, $FE, $E3, $FE, $28, $3F, $E3, $DF, $53, $6A, $6D  ; CPU:$9FA0 PRG:9FA0  E4 DC 0D FF 93 DD FE E3 FE 28 3F E3 DF 53 6A 6D
-    .byte $FE, $85, $9B, $9E, $FE, $E3, $FE, $DC, $0D, $FF, $93, $DD, $FE, $E4, $FE, $29  ; CPU:$9FB0 PRG:9FB0  FE 85 9B 9E FE E3 FE DC 0D FF 93 DD FE E4 FE 29
-    .byte $3E, $E4, $4E, $54, $69, $6E, $D4, $86, $9A, $9F, $FE, $E3, $FE, $DC, $0D, $FF  ; CPU:$9FC0 PRG:9FC0  3E E4 4E 54 69 6E D4 86 9A 9F FE E3 FE DC 0D FF
-    .byte $81, $DD, $02, $FE, $90, $E5, $2A, $3D, $FE, $4D, $55, $68, $6F, $D3, $FE, $99  ; CPU:$9FD0 PRG:9FD0  81 DD 02 FE 90 E5 2A 3D FE 4D 55 68 6F D3 FE 99
-    .byte $A0, $B6, $B7, $FE, $DC, $0D, $FF, $93, $DD, $12, $13, $27, $2B, $3C, $40, $4C  ; CPU:$9FE0 PRG:9FE0  A0 B6 B7 FE DC 0D FF 93 DD 12 13 27 2B 3C 40 4C
-    .byte $FE, $67, $70, $D2, $E3, $98, $A1, $B5, $B8, $CB, $CC, $0D, $FF, $93, $DD, $11  ; CPU:$9FF0 PRG:9FF0  FE 67 70 D2 E3 98 A1 B5 B8 CB CC 0D FF 93 DD 11
-    .byte $14, $26, $2C, $3B, $41, $4B, $FE, $66, $71, $E0, $FE, $97, $A2, $B4, $B9, $CA  ; CPU:$A000 PRG:A000  14 26 2C 3B 41 4B FE 66 71 E0 FE 97 A2 B4 B9 CA
-    .byte $CD, $0D, $FF, $87, $DD, $10, $15, $DE, $2D, $3A, $42, $02, $FE, $8A, $65, $72  ; CPU:$A010 PRG:A010  CD 0D FF 87 DD 10 15 DE 2D 3A 42 02 FE 8A 65 72
-    .byte $E1, $E3, $96, $A3, $B3, $BA, $C9, $CE, $0D, $FF, $84, $DD, $0F, $16, $25, $02  ; CPU:$A020 PRG:A020  E1 E3 96 A3 B3 BA C9 CE 0D FF 84 DD 0F 16 25 02
-    .byte $FE, $8D, $E3, $4A, $56, $64, $73, $E2, $FE, $95, $A4, $B2, $BB, $C8, $DC, $0D  ; CPU:$A030 PRG:A030  FE 8D E3 4A 56 64 73 E2 FE 95 A4 B2 BB C8 DC 0D
-    .byte $FF, $93, $01, $0E, $17, $24, $2E, $FE, $E4, $49, $57, $63, $74, $83, $87, $94  ; CPU:$A040 PRG:A040  FF 93 01 0E 17 24 2E FE E4 49 57 63 74 83 87 94
-    .byte $A5, $B1, $BC, $C7, $DC, $0D, $FF, $93, $02, $0D, $18, $23, $2F, $09, $FE, $06  ; CPU:$A050 PRG:A050  A5 B1 BC C7 DC 0D FF 93 02 0D 18 23 2F 09 FE 06
-    .byte $58, $62, $75, $82, $88, $93, $A6, $B0, $BD, $C6, $DC, $0D, $FF, $93, $03, $0C  ; CPU:$A060 PRG:A060  58 62 75 82 88 93 A6 B0 BD C6 DC 0D FF 93 03 0C
-    .byte $19, $22, $30, $39, $07, $FE, $81, $89, $76, $81, $89, $92, $A7, $AF, $BE, $C5  ; CPU:$A070 PRG:A070  19 22 30 39 07 FE 81 89 76 81 89 92 A7 AF BE C5
-    .byte $CF, $0D, $FF, $93, $04, $0B, $1A, $21, $31, $38, $81, $89, $59, $61, $77, $80  ; CPU:$A080 PRG:A080  CF 0D FF 93 04 0B 1A 21 31 38 81 89 59 61 77 80
-    .byte $8A, $91, $A8, $AE, $BF, $C4, $D0, $0D, $FF, $93, $05, $0A, $1B, $20, $32, $37  ; CPU:$A090 PRG:A090  8A 91 A8 AE BF C4 D0 0D FF 93 05 0A 1B 20 32 37
-    .byte $43, $48, $5A, $60, $78, $7F, $8B, $90, $A9, $AD, $C0, $C3, $D1, $0D, $FF, $93  ; CPU:$A0A0 PRG:A0A0  43 48 5A 60 78 7F 8B 90 A9 AD C0 C3 D1 0D FF 93
-    .byte $7E, $79, $1C, $1F, $33, $36, $44, $47, $5B, $5F, $79, $7E, $8C, $8F, $AA, $AC  ; CPU:$A0B0 PRG:A0B0  7E 79 1C 1F 33 36 44 47 5B 5F 79 7E 8C 8F AA AC
-    .byte $C1, $C2, $7E, $0D, $FF, $93, $7E, $79, $FF, $1E, $34, $35, $45, $46, $5C, $5E  ; CPU:$A0C0 PRG:A0C0  C1 C2 7E 0D FF 93 7E 79 FF 1E 34 35 45 46 5C 5E
-    .byte $7A, $7D, $8D, $7E, $D6, $D5, $AB, $D7, $7E, $0D, $FF, $83, $D8, $E6, $8E, $02  ; CPU:$A0D0 PRG:A0D0  7A 7D 8D 7E D6 D5 AB D7 7E 0D FF 83 D8 E6 8E 02
-    .byte $E6, $03, $8E, $85, $E6, $5D, $7B, $7C, $E6, $03, $8E, $02, $E6, $81, $D8, $77  ; CPU:$A0E0 PRG:A0E0  E6 03 8E 85 E6 5D 7B 7C E6 03 8E 02 E6 81 D8 77
-    .byte $FF, $77, $FF, $44, $FF, $83, $35, $03, $CC, $04, $FF, $81, $DF, $02, $00, $82  ; CPU:$A0F0 PRG:A0F0  FF 77 FF 44 FF 83 35 03 CC 04 FF 81 DF 02 00 82
-    .byte $54, $DF, $02, $FF, $85, $B3, $6C, $7F, $F3, $A5, $03, $FF, $86, $BB, $AE, $AB  ; CPU:$A100 PRG:A100  54 DF 02 FF 85 B3 6C 7F F3 A5 03 FF 86 BB AE AB
-    .byte $65, $AA, $EF, $02, $FF, $82, $FB, $FA, $03, $AA, $81, $EE, $11, $FF, $FF, $FF  ; CPU:$A110 PRG:A110  65 AA EF 02 FF 82 FB FA 03 AA 81 EE 11 FF FF FF
-    .byte $FF, $20, $00, $83, $5B, $5C, $5B, $10, $FF, $B1, $5B, $5C, $5B, $5C, $5B, $5C  ; CPU:$A120 PRG:A120  FF 20 00 83 5B 5C 5B 10 FF B1 5B 5C 5B 5C 5B 5C
-    .byte $5B, $5C, $5B, $5C, $5B, $5C, $5B, $5D, $5E, $5D, $1F, $0B, $0C, $0A, $0D, $0B  ; CPU:$A130 PRG:A130  5B 5C 5B 5C 5B 5C 5B 5D 5E 5D 1F 0B 0C 0A 0D 0B
-    .byte $0C, $0A, $0D, $0B, $0C, $0A, $0D, $0B, $0C, $24, $5D, $5E, $5D, $5E, $5D, $5E  ; CPU:$A140 PRG:A140  0C 0A 0D 0B 0C 0A 0D 0B 0C 24 5D 5E 5D 5E 5D 5E
-    .byte $5D, $5E, $5D, $5E, $5D, $5E, $5D, $5B, $5C, $5B, $20, $02, $FF, $82, $00, $09  ; CPU:$A150 PRG:A150  5D 5E 5D 5E 5D 5E 5D 5B 5C 5B 20 02 FF 82 00 09
-    .byte $02, $FF, $82, $00, $09, $02, $FF, $82, $00, $09, $02, $FF, $92, $21, $5B, $5C  ; CPU:$A160 PRG:A160  02 FF 82 00 09 02 FF 82 00 09 02 FF 92 21 5B 5C
-    .byte $5B, $5C, $5B, $5C, $5B, $5C, $5B, $5C, $5B, $5C, $5B, $5D, $5E, $5D, $1F, $0E  ; CPU:$A170 PRG:A170  5B 5C 5B 5C 5B 5C 5B 5C 5B 5C 5B 5D 5E 5D 1F 0E
-    .byte $FF, $83, $22, $10, $15, $08, $16, $87, $1C, $1B, $5D, $5B, $5C, $5B, $20, $0E  ; CPU:$A180 PRG:A180  FF 83 22 10 15 08 16 87 1C 1B 5D 5B 5C 5B 20 0E
-    .byte $FF, $82, $21, $11, $0A, $FF, $86, $1A, $5B, $5D, $5E, $5D, $1F, $0E, $FF, $82  ; CPU:$A190 PRG:A190  FF 82 21 11 0A FF 86 1A 5B 5D 5E 5D 1F 0E FF 82
-    .byte $22, $12, $0A, $FF, $86, $19, $5D, $5B, $5C, $5B, $20, $0E, $FF, $83, $21, $13  ; CPU:$A1A0 PRG:A1A0  22 12 0A FF 86 19 5D 5B 5C 5B 20 0E FF 83 21 13
-    .byte $14, $08, $17, $87, $1D, $18, $5B, $5D, $5E, $5D, $1F, $0E, $FF, $92, $22, $5D  ; CPU:$A1B0 PRG:A1B0  14 08 17 87 1D 18 5B 5D 5E 5D 1F 0E FF 92 22 5D
-    .byte $5E, $5D, $5E, $5D, $5E, $5D, $5E, $5D, $5E, $5D, $5E, $5D, $5B, $5C, $5B, $20  ; CPU:$A1C0 PRG:A1C0  5E 5D 5E 5D 5E 5D 5E 5D 5E 5D 5E 5D 5B 5C 5B 20
-    .byte $0E, $FF, $84, $21, $5B, $10, $15, $06, $16, $88, $1C, $1B, $5E, $5B, $5D, $5E  ; CPU:$A1D0 PRG:A1D0  0E FF 84 21 5B 10 15 06 16 88 1C 1B 5E 5B 5D 5E
-    .byte $5D, $1F, $0E, $FF, $88, $22, $5D, $11, $53, $54, $41, $2C, $45, $03, $FF, $87  ; CPU:$A1E0 PRG:A1E0  5D 1F 0E FF 88 22 5D 11 53 54 41 2C 45 03 FF 87
-    .byte $1A, $5C, $5D, $5B, $5C, $5B, $20, $0E, $FF, $85, $21, $5B, $11, $42, $55, $02  ; CPU:$A1F0 PRG:A1F0  1A 5C 5D 5B 5C 5B 20 0E FF 85 21 5B 11 42 55 02
-    .byte $42, $82, $4C, $45, $02, $FF, $87, $1A, $5E, $5B, $5D, $5E, $5D, $1F, $0E, $FF  ; CPU:$A200 PRG:A200  42 82 4C 45 02 FF 87 1A 5E 5B 5D 5E 5D 1F 0E FF
-    .byte $83, $22, $5D, $11, $04, $FF, $04, $30, $82, $1A, $5C, $02, $5D, $83, $5E, $5D  ; CPU:$A210 PRG:A210  83 22 5D 11 04 FF 04 30 82 1A 5C 02 5D 83 5E 5D
-    .byte $20, $0E, $FF, $88, $21, $5D, $11, $53, $43, $4F, $52, $45, $03, $FF, $87, $1A  ; CPU:$A220 PRG:A220  20 0E FF 88 21 5D 11 53 43 4F 52 45 03 FF 87 1A
-    .byte $5E, $5D, $5B, $5C, $5B, $1F, $0E, $FF, $83, $22, $5B, $11, $04, $FF, $04, $30  ; CPU:$A230 PRG:A230  5E 5D 5B 5C 5B 1F 0E FF 83 22 5B 11 04 FF 04 30
-    .byte $87, $1A, $5C, $5B, $5D, $5E, $5D, $20, $0E, $FF, $88, $21, $5D, $11, $54, $4F  ; CPU:$A240 PRG:A240  87 1A 5C 5B 5D 5E 5D 20 0E FF 88 21 5D 11 54 4F
-    .byte $54, $41, $4C, $03, $FF, $87, $1A, $5E, $5D, $5B, $5C, $5B, $1F, $0E, $FF, $83  ; CPU:$A250 PRG:A250  54 41 4C 03 FF 87 1A 5E 5D 5B 5C 5B 1F 0E FF 83
-    .byte $22, $5B, $12, $02, $FF, $06, $30, $87, $19, $5C, $5B, $5D, $5E, $5D, $20, $0E  ; CPU:$A260 PRG:A260  22 5B 12 02 FF 06 30 87 19 5C 5B 5D 5E 5D 20 0E
-    .byte $FF, $84, $21, $5D, $13, $14, $06, $17, $88, $1D, $18, $5E, $5D, $5B, $5C, $5B  ; CPU:$A270 PRG:A270  FF 84 21 5D 13 14 06 17 88 1D 18 5E 5D 5B 5C 5B
-    .byte $1F, $0E, $FF, $92, $22, $5B, $5C, $5B, $5C, $5B, $5C, $5B, $5C, $5B, $5C, $5B  ; CPU:$A280 PRG:A280  1F 0E FF 92 22 5B 5C 5B 5C 5B 5C 5B 5C 5B 5C 5B
-    .byte $5C, $5B, $5D, $5E, $5D, $20, $0E, $FF, $84, $21, $5D, $10, $15, $06, $16, $88  ; CPU:$A290 PRG:A290  5C 5B 5D 5E 5D 20 0E FF 84 21 5D 10 15 06 16 88
-    .byte $1C, $1B, $5E, $5D, $5B, $5C, $5B, $1F, $0E, $FF, $83, $22, $5B, $11, $08, $FF  ; CPU:$A2A0 PRG:A2A0  1C 1B 5E 5D 5B 5C 5B 1F 0E FF 83 22 5B 11 08 FF
-    .byte $87, $1A, $5C, $5B, $5D, $5E, $5D, $20, $0E, $FF, $83, $21, $5D, $11, $08, $FF  ; CPU:$A2B0 PRG:A2B0  87 1A 5C 5B 5D 5E 5D 20 0E FF 83 21 5D 11 08 FF
-    .byte $82, $1A, $5E, $02, $5D, $83, $5E, $5D, $1F, $0E, $FF, $83, $22, $5D, $11, $08  ; CPU:$A2C0 PRG:A2C0  82 1A 5E 02 5D 83 5E 5D 1F 0E FF 83 22 5D 11 08
-    .byte $FF, $87, $1A, $5E, $5D, $5B, $5C, $5B, $20, $0E, $FF, $83, $21, $5B, $11, $08  ; CPU:$A2D0 PRG:A2D0  FF 87 1A 5E 5D 5B 5C 5B 20 0E FF 83 21 5B 11 08
-    .byte $FF, $87, $1A, $5C, $5B, $5D, $5E, $5D, $1F, $0E, $FF, $83, $22, $5D, $11, $08  ; CPU:$A2E0 PRG:A2E0  FF 87 1A 5C 5B 5D 5E 5D 1F 0E FF 83 22 5D 11 08
-    .byte $FF, $82, $1A, $5E, $02, $5D, $83, $5E, $5D, $20, $02, $FF, $02, $FF, $02, $FF  ; CPU:$A2F0 PRG:A2F0  FF 82 1A 5E 02 5D 83 5E 5D 20 02 FF 02 FF 02 FF
-    .byte $02, $FF, $02, $FF, $02, $FF, $02, $FF, $83, $21, $5D, $11, $08, $FF, $8E, $1A  ; CPU:$A300 PRG:A300  02 FF 02 FF 02 FF 02 FF 83 21 5D 11 08 FF 8E 1A
-    .byte $5E, $5D, $5B, $5C, $5B, $1F, $C9, $CA, $FF, $CC, $61, $62, $5F, $02, $FF, $88  ; CPU:$A310 PRG:A310  5E 5D 5B 5C 5B 1F C9 CA FF CC 61 62 5F 02 FF 88
-    .byte $66, $67, $68, $FF, $79, $22, $5B, $12, $08, $FF, $98, $19, $5C, $5B, $5D, $5E  ; CPU:$A320 PRG:A320  66 67 68 FF 79 22 5B 12 08 FF 98 19 5C 5B 5D 5E
-    .byte $5D, $20, $C8, $C7, $C6, $C5, $74, $73, $71, $70, $6C, $6B, $6A, $69, $FF, $60  ; CPU:$A330 PRG:A330  5D 20 C8 C7 C6 C5 74 73 71 70 6C 6B 6A 69 FF 60
-    .byte $21, $5D, $12, $08, $FF, $99, $19, $5E, $5D, $5B, $5C, $5B, $1F, $FF, $C3, $C4  ; CPU:$A340 PRG:A340  21 5D 12 08 FF 99 19 5E 5D 5B 5C 5B 1F FF C3 C4
-    .byte $7A, $7B, $7D, $7E, $7F, $80, $81, $83, $85, $5F, $75, $22, $5B, $13, $14, $06  ; CPU:$A350 PRG:A350  7A 7B 7D 7E 7F 80 81 83 85 5F 75 22 5B 13 14 06
-    .byte $17, $B4, $1D, $18, $5C, $5B, $5D, $5E, $5D, $20, $C1, $9F, $98, $97, $96, $95  ; CPU:$A360 PRG:A360  17 B4 1D 18 5C 5B 5D 5E 5D 20 C1 9F 98 97 96 95
-    .byte $94, $90, $89, $88, $87, $86, $76, $CB, $21, $5D, $5E, $5D, $5E, $5D, $5E, $5D  ; CPU:$A370 PRG:A370  94 90 89 88 87 86 76 CB 21 5D 5E 5D 5E 5D 5E 5D
-    .byte $5E, $5D, $5E, $5D, $5E, $5D, $5B, $5C, $5B, $1F, $A0, $63, $99, $9A, $28, $3A  ; CPU:$A380 PRG:A380  5E 5D 5E 5D 5E 5D 5B 5C 5B 1F A0 63 99 9A 28 3A
-    .byte $3B, $3F, $9B, $9C, $9D, $9E, $02, $C2, $8F, $22, $5B, $5C, $5B, $5C, $5B, $5C  ; CPU:$A390 PRG:A390  3B 3F 9B 9C 9D 9E 02 C2 8F 22 5B 5C 5B 5C 5B 5C
-    .byte $5B, $5C, $5B, $5C, $5B, $5C, $5B, $55, $03, $F5, $81, $75, $04, $55, $03, $FF  ; CPU:$A3A0 PRG:A3A0  5B 5C 5B 5C 5B 5C 5B 55 03 F5 81 75 04 55 03 FF
-    .byte $81, $77, $02, $54, $82, $57, $55, $03, $FF, $81, $77, $04, $55, $03, $FF, $81  ; CPU:$A3B0 PRG:A3B0  81 77 02 54 82 57 55 03 FF 81 77 04 55 03 FF 81
-    .byte $77, $04, $55, $03, $FF, $81, $77, $04, $55, $03, $FF, $83, $77, $DD, $FF, $02  ; CPU:$A3C0 PRG:A3C0  77 04 55 03 FF 81 77 04 55 03 FF 83 77 DD FF 02
-    .byte $55, $8C, $FF, $BF, $AA, $66, $5D, $53, $55, $F5, $EF, $BB, $AA, $26, $03, $F5  ; CPU:$A3D0 PRG:A3D0  55 8C FF BF AA 66 5D 53 55 F5 EF BB AA 26 03 F5
-    .byte $FF, $FF, $FF, $20, $00, $20, $FF, $A2, $24, $1F, $0B, $0C, $0A, $0D, $0B, $0C  ; CPU:$A3E0 PRG:A3E0  FF FF FF 20 00 20 FF A2 24 1F 0B 0C 0A 0D 0B 0C
-    .byte $0A, $0D, $0B, $0C, $0A, $0D, $0B, $0C, $24, $1F, $0B, $0C, $0A, $0D, $0B, $0C  ; CPU:$A3F0 PRG:A3F0  0A 0D 0B 0C 0A 0D 0B 0C 24 1F 0B 0C 0A 0D 0B 0C
-    .byte $0A, $0D, $0B, $0C, $0A, $0D, $0B, $0C, $21, $20, $02, $FF, $82, $00, $09, $02  ; CPU:$A400 PRG:A400  0A 0D 0B 0C 0A 0D 0B 0C 21 20 02 FF 82 00 09 02
-    .byte $FF, $82, $00, $09, $02, $FF, $82, $00, $09, $02, $FF, $82, $21, $20, $02, $FF  ; CPU:$A410 PRG:A410  FF 82 00 09 02 FF 82 00 09 02 FF 82 21 20 02 FF
-    .byte $82, $00, $09, $02, $FF, $82, $00, $09, $02, $FF, $82, $00, $09, $02, $FF, $82  ; CPU:$A420 PRG:A420  82 00 09 02 FF 82 00 09 02 FF 82 00 09 02 FF 82
-    .byte $22, $1F, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $21, $20, $0E, $FF, $82, $21  ; CPU:$A430 PRG:A430  22 1F 0E FF 82 22 1F 0E FF 82 21 20 0E FF 82 21
-    .byte $20, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $21, $20  ; CPU:$A440 PRG:A440  20 0E FF 82 22 1F 0E FF 82 22 1F 0E FF 82 21 20
-    .byte $0E, $FF, $82, $21, $20, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $22, $1F, $0E  ; CPU:$A450 PRG:A450  0E FF 82 21 20 0E FF 82 22 1F 0E FF 82 22 1F 0E
-    .byte $FF, $82, $21, $20, $0E, $FF, $82, $21, $20, $0E, $FF, $82, $22, $1F, $0E, $FF  ; CPU:$A460 PRG:A460  FF 82 21 20 0E FF 82 21 20 0E FF 82 22 1F 0E FF
-    .byte $82, $22, $1F, $0E, $FF, $82, $21, $20, $0E, $FF, $82, $21, $20, $0E, $FF, $82  ; CPU:$A470 PRG:A470  82 22 1F 0E FF 82 21 20 0E FF 82 21 20 0E FF 82
-    .byte $22, $1F, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $21, $20, $0E, $FF, $82, $21  ; CPU:$A480 PRG:A480  22 1F 0E FF 82 22 1F 0E FF 82 21 20 0E FF 82 21
-    .byte $20, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $21, $20  ; CPU:$A490 PRG:A490  20 0E FF 82 22 1F 0E FF 82 22 1F 0E FF 82 21 20
-    .byte $0E, $FF, $82, $21, $20, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $22, $1F, $0E  ; CPU:$A4A0 PRG:A4A0  0E FF 82 21 20 0E FF 82 22 1F 0E FF 82 22 1F 0E
-    .byte $FF, $82, $21, $20, $0E, $FF, $82, $21, $20, $0E, $FF, $82, $22, $1F, $0E, $FF  ; CPU:$A4B0 PRG:A4B0  FF 82 21 20 0E FF 82 21 20 0E FF 82 22 1F 0E FF
-    .byte $82, $22, $1F, $0E, $FF, $82, $21, $20, $0E, $FF, $82, $21, $20, $0E, $FF, $82  ; CPU:$A4C0 PRG:A4C0  82 22 1F 0E FF 82 21 20 0E FF 82 21 20 0E FF 82
-    .byte $22, $1F, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $21, $20, $0E, $FF, $82, $21  ; CPU:$A4D0 PRG:A4D0  22 1F 0E FF 82 22 1F 0E FF 82 21 20 0E FF 82 21
-    .byte $20, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $21, $20  ; CPU:$A4E0 PRG:A4E0  20 0E FF 82 22 1F 0E FF 82 22 1F 0E FF 82 21 20
-    .byte $0E, $FF, $82, $21, $20, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $22, $1F, $0E  ; CPU:$A4F0 PRG:A4F0  0E FF 82 21 20 0E FF 82 22 1F 0E FF 82 22 1F 0E
-    .byte $FF, $82, $21, $20, $0E, $FF, $82, $21, $20, $0E, $FF, $82, $22, $42, $04, $30  ; CPU:$A500 PRG:A500  FF 82 21 20 0E FF 82 21 20 0E FF 82 22 42 04 30
-    .byte $03, $FF, $81, $54, $06, $30, $82, $22, $42, $04, $30, $03, $FF, $81, $54, $06  ; CPU:$A510 PRG:A510  03 FF 81 54 06 30 82 22 42 04 30 03 FF 81 54 06
-    .byte $30, $82, $21, $53, $04, $30, $0A, $FF, $82, $21, $53, $04, $30, $0A, $FF, $82  ; CPU:$A520 PRG:A520  30 82 21 53 04 30 0A FF 82 21 53 04 30 0A FF 82
-    .byte $22, $1F, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $21, $20, $0E, $FF, $82, $21  ; CPU:$A530 PRG:A530  22 1F 0E FF 82 22 1F 0E FF 82 21 20 0E FF 82 21
-    .byte $20, $0E, $FF, $82, $22, $1F, $0E, $FF, $82, $22, $1F, $0E, $FF, $81, $D5, $03  ; CPU:$A540 PRG:A540  20 0E FF 82 22 1F 0E FF 82 22 1F 0E FF 81 D5 03
-    .byte $F5, $81, $D5, $03, $F5, $81, $DD, $03, $FF, $81, $DD, $03, $FF, $81, $DD, $03  ; CPU:$A550 PRG:A550  F5 81 D5 03 F5 81 DD 03 FF 81 DD 03 FF 81 DD 03
-    .byte $FF, $81, $DD, $03, $FF, $81, $DD, $03, $FF, $81, $DD, $03, $FF, $81, $DD, $03  ; CPU:$A560 PRG:A560  FF 81 DD 03 FF 81 DD 03 FF 81 DD 03 FF 81 DD 03
-    .byte $FF, $81, $DD, $03, $FF, $81, $DD, $03, $FF, $81, $DD, $03, $FF, $82, $55, $D5  ; CPU:$A570 PRG:A570  FF 81 DD 03 FF 81 DD 03 FF 81 DD 03 FF 82 55 D5
-    .byte $02, $F5, $82, $55, $D5, $02, $F5, $81, $FD, $03, $FF, $81, $FD, $03, $FF, $FF  ; CPU:$A580 PRG:A580  02 F5 82 55 D5 02 F5 81 FD 03 FF 81 FD 03 FF FF
-    .byte $FF, $FF, $24, $00, $77, $FF, $2E, $FF, $8F, $47, $41, $4D, $45, $FF, $54, $45  ; CPU:$A590 PRG:A590  FF FF 24 00 77 FF 2E FF 8F 47 41 4D 45 FF 54 45
-    .byte $53, $54, $49, $4E, $47, $FF, $42, $59, $11, $FF, $86, $46, $52, $45, $44, $FF  ; CPU:$A5A0 PRG:A5A0  53 54 49 4E 47 FF 42 59 11 FF 86 46 52 45 44 FF
-    .byte $48, $02, $4F, $81, $54, $17, $FF, $8C, $44, $45, $42, $4F, $52, $41, $48, $FF  ; CPU:$A5B0 PRG:A5B0  48 02 4F 81 54 17 FF 8C 44 45 42 4F 52 41 48 FF
-    .byte $52, $4F, $53, $45, $54, $FF, $8C, $53, $54, $4F, $52, $59, $FF, $41, $4E, $44  ; CPU:$A5C0 PRG:A5C0  52 4F 53 45 54 FF 8C 53 54 4F 52 59 FF 41 4E 44
-    .byte $FF, $54, $57, $02, $45, $87, $4B, $49, $4E, $47, $FF, $42, $59, $0B, $FF, $87  ; CPU:$A5D0 PRG:A5D0  FF 54 57 02 45 87 4B 49 4E 47 FF 42 59 0B FF 87
-    .byte $50, $48, $49, $4C, $FF, $4D, $49, $02, $4B, $85, $45, $4C, $53, $4F, $4E, $52  ; CPU:$A5E0 PRG:A5E0  50 48 49 4C FF 4D 49 02 4B 85 45 4C 53 4F 4E 52
-    .byte $FF, $97, $4F, $52, $49, $47, $49, $4E, $41, $4C, $FF, $4D, $45, $52, $4D, $41  ; CPU:$A5F0 PRG:A5F0  FF 97 4F 52 49 47 49 4E 41 4C FF 4D 45 52 4D 41
-    .byte $49, $44, $FF, $41, $52, $54, $FF, $42, $59, $09, $FF, $88, $4D, $41, $52, $54  ; CPU:$A600 PRG:A600  49 44 FF 41 52 54 FF 42 59 09 FF 88 4D 41 52 54
-    .byte $49, $4E, $FF, $47, $02, $45, $56, $FF, $91, $53, $50, $45, $43, $49, $41, $4C  ; CPU:$A610 PRG:A610  49 4E FF 47 02 45 56 FF 91 53 50 45 43 49 41 4C
-    .byte $FF, $54, $48, $41, $4E, $4B, $53, $FF, $54, $4F, $0F, $FF, $98, $52, $49, $43  ; CPU:$A620 PRG:A620  FF 54 48 41 4E 4B 53 FF 54 4F 0F FF 98 52 49 43
-    .byte $48, $41, $52, $44, $FF, $FE, $FF, $50, $41, $54, $52, $49, $43, $49, $41, $FF  ; CPU:$A630 PRG:A630  48 41 52 44 FF FE FF 50 41 54 52 49 43 49 41 FF
-    .byte $46, $52, $49, $43, $4B, $77, $FF, $77, $FF, $77, $FF, $1E, $FF, $FF, $FF, $FF  ; CPU:$A640 PRG:A640  46 52 49 43 4B 77 FF 77 FF 77 FF 1E FF FF FF FF
-    .byte $00, $00, $B0, $06, $50, $06, $F4, $05, $A0, $05, $50, $05, $00, $05, $B8, $04  ; CPU:$A650 PRG:A650  00 00 B0 06 50 06 F4 05 A0 05 50 05 00 05 B8 04
-    .byte $78, $04, $38, $04, $F8, $03, $C0, $03, $88, $03, $58, $03, $28, $03, $FA, $02  ; CPU:$A660 PRG:A660  78 04 38 04 F8 03 C0 03 88 03 58 03 28 03 FA 02
-    .byte $D0, $02, $A8, $02, $80, $02, $5C, $02, $3C, $02, $1C, $02, $FC, $01, $E0, $01  ; CPU:$A670 PRG:A670  D0 02 A8 02 80 02 5C 02 3C 02 1C 02 FC 01 E0 01
-    .byte $C4, $01, $AC, $01, $94, $01, $7D, $01, $68, $01, $54, $01, $40, $01, $2E, $01  ; CPU:$A680 PRG:A680  C4 01 AC 01 94 01 7D 01 68 01 54 01 40 01 2E 01
-    .byte $1E, $01, $0E, $01, $FE, $00, $F0, $00, $E2, $00, $D6, $00, $CA, $00, $BE, $00  ; CPU:$A690 PRG:A690  1E 01 0E 01 FE 00 F0 00 E2 00 D6 00 CA 00 BE 00
-    .byte $B4, $00, $AA, $00, $A0, $00, $97, $00, $8F, $00, $87, $00, $7F, $00, $78, $00  ; CPU:$A6A0 PRG:A6A0  B4 00 AA 00 A0 00 97 00 8F 00 87 00 7F 00 78 00
-    .byte $71, $00, $6B, $00, $65, $00, $5F, $00, $5A, $00, $55, $00, $50, $00, $4B, $00  ; CPU:$A6B0 PRG:A6B0  71 00 6B 00 65 00 5F 00 5A 00 55 00 50 00 4B 00
-    .byte $47, $00, $43, $00, $3F, $00, $3C, $00, $38, $00, $00, $00, $0C, $00, $0C, $00  ; CPU:$A6C0 PRG:A6C0  47 00 43 00 3F 00 3C 00 38 00 00 00 0C 00 0C 00
-    .byte $0C, $00, $0C, $00, $0D, $00, $0E, $00, $1F, $00, $00, $00, $01, $00, $02, $00  ; CPU:$A6D0 PRG:A6D0  0C 00 0C 00 0D 00 0E 00 1F 00 00 00 01 00 02 00
-    .byte $03, $00, $04, $00, $05, $00, $06, $00, $07, $00, $08, $00, $09, $00, $0A, $00  ; CPU:$A6E0 PRG:A6E0  03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A 00
-    .byte $0B, $00, $0C, $00, $0D, $00, $0E, $00, $0F, $00, $80, $00, $81, $00, $82, $00  ; CPU:$A6F0 PRG:A6F0  0B 00 0C 00 0D 00 0E 00 0F 00 80 00 81 00 82 00
-    .byte $83, $00, $84, $00, $85, $00, $86, $00, $87, $00, $88, $00, $89, $00, $8A, $00  ; CPU:$A700 PRG:A700  83 00 84 00 85 00 86 00 87 00 88 00 89 00 8A 00
-    .byte $8B, $00, $8C, $00, $8D, $00, $8E, $00, $8F, $00, $A9, $00, $8D, $15, $40, $8D  ; CPU:$A710 PRG:A710  8B 00 8C 00 8D 00 8E 00 8F 00 A9 00 8D 15 40 8D
-    .byte $00, $07, $8D, $A1, $07, $60, $A5, $DD, $F0, $F0, $A5, $DE, $0A, $AA, $BD, $5B  ; CPU:$A720 PRG:A720  00 07 8D A1 07 60 A5 DD F0 F0 A5 DE 0A AA BD 5B
-    .byte $AB, $85, $DF, $BD, $5C, $AB, $85, $E0, $A6, $DF, $A4, $E0, $20, $5B, $A7, $60  ; CPU:$A730 PRG:A730  AB 85 DF BD 5C AB 85 E0 A6 DF A4 E0 20 5B A7 60
-    .byte $A9, $00, $8D, $A1, $07, $A5, $DE, $0A, $AA, $BD, $5B, $AB, $85, $DF, $BD, $5C  ; CPU:$A740 PRG:A740  A9 00 8D A1 07 A5 DE 0A AA BD 5B AB 85 DF BD 5C
-    .byte $AB, $85, $E0, $A6, $DF, $A4, $E0, $20, $A9, $AA, $60, $A9, $00, $8D, $15, $40  ; CPU:$A750 PRG:A750  AB 85 E0 A6 DF A4 E0 20 A9 AA 60 A9 00 8D 15 40
-    .byte $86, $D7, $84, $D8, $A2, $3B, $A9, $00, $9D, $11, $07, $CA, $10, $FA, $85, $D6  ; CPU:$A760 PRG:A760  86 D7 84 D8 A2 3B A9 00 9D 11 07 CA 10 FA 85 D6
-    .byte $A0, $08, $B1, $D7, $8D, $02, $07, $8D, $01, $07, $C8, $B1, $D7, $8D, $00, $07  ; CPU:$A770 PRG:A770  A0 08 B1 D7 8D 02 07 8D 01 07 C8 B1 D7 8D 00 07
-    .byte $8D, $15, $40, $60, $A0, $00, $B1, $D7, $85, $D9, $C8, $B1, $D7, $85, $DA, $A9  ; CPU:$A780 PRG:A780  8D 15 40 60 A0 00 B1 D7 85 D9 C8 B1 D7 85 DA A9
-    .byte $01, $8D, $07, $07, $A9, $00, $8D, $08, $07, $20, $FF, $A7, $A0, $02, $B1, $D7  ; CPU:$A790 PRG:A790  01 8D 07 07 A9 00 8D 08 07 20 FF A7 A0 02 B1 D7
-    .byte $85, $D9, $C8, $B1, $D7, $85, $DA, $A9, $02, $8D, $07, $07, $A9, $01, $8D, $08  ; CPU:$A7A0 PRG:A7A0  85 D9 C8 B1 D7 85 DA A9 02 8D 07 07 A9 01 8D 08
-    .byte $07, $20, $FF, $A7, $A0, $04, $B1, $D7, $85, $D9, $C8, $B1, $D7, $85, $DA, $A9  ; CPU:$A7B0 PRG:A7B0  07 20 FF A7 A0 04 B1 D7 85 D9 C8 B1 D7 85 DA A9
-    .byte $04, $8D, $07, $07, $A9, $02, $8D, $08, $07, $20, $FF, $A7, $A0, $06, $B1, $D7  ; CPU:$A7C0 PRG:A7C0  04 8D 07 07 A9 02 8D 08 07 20 FF A7 A0 06 B1 D7
-    .byte $85, $D9, $C8, $B1, $D7, $85, $DA, $A9, $08, $8D, $07, $07, $A9, $03, $8D, $08  ; CPU:$A7D0 PRG:A7D0  85 D9 C8 B1 D7 85 DA A9 08 8D 07 07 A9 03 8D 08
-    .byte $07, $20, $FF, $A7, $AD, $01, $07, $D0, $12, $CE, $11, $07, $CE, $12, $07, $CE  ; CPU:$A7E0 PRG:A7E0  07 20 FF A7 AD 01 07 D0 12 CE 11 07 CE 12 07 CE
-    .byte $13, $07, $CE, $14, $07, $AD, $02, $07, $8D, $01, $07, $CE, $01, $07, $60, $A5  ; CPU:$A7F0 PRG:A7F0  13 07 CE 14 07 AD 02 07 8D 01 07 CE 01 07 60 A5
-    .byte $D6, $2D, $07, $07, $F0, $22, $AD, $15, $40, $2D, $07, $07, $D0, $09, $AD, $07  ; CPU:$A800 PRG:A800  D6 2D 07 07 F0 22 AD 15 40 2D 07 07 D0 09 AD 07
-    .byte $07, $49, $FF, $25, $D6, $85, $D6, $AD, $00, $07, $2D, $07, $07, $F0, $08, $AE  ; CPU:$A810 PRG:A810  07 49 FF 25 D6 85 D6 AD 00 07 2D 07 07 F0 08 AE
-    .byte $08, $07, $BD, $11, $07, $F0, $12, $60, $AD, $00, $07, $2D, $07, $07, $D0, $01  ; CPU:$A820 PRG:A820  08 07 BD 11 07 F0 12 60 AD 00 07 2D 07 07 D0 01
-    .byte $60, $AE, $08, $07, $BD, $11, $07, $D0, $03, $4C, $13, $A9, $E0, $02, $F0, $F0  ; CPU:$A830 PRG:A830  60 AE 08 07 BD 11 07 D0 03 4C 13 A9 E0 02 F0 F0
-    .byte $BC, $1D, $07, $F0, $EB, $DE, $41, $07, $D0, $E6, $88, $F0, $0B, $88, $F0, $2B  ; CPU:$A840 PRG:A840  BC 1D 07 F0 EB DE 41 07 D0 E6 88 F0 0B 88 F0 2B
-    .byte $88, $F0, $55, $88, $F0, $59, $D0, $D8, $BD, $0D, $07, $18, $7D, $21, $07, $9D  ; CPU:$A850 PRG:A850  88 F0 55 88 F0 59 D0 D8 BD 0D 07 18 7D 21 07 9D
-    .byte $21, $07, $A9, $0F, $DD, $21, $07, $F0, $66, $B0, $06, $9D, $21, $07, $4C, $CF  ; CPU:$A860 PRG:A860  21 07 A9 0F DD 21 07 F0 66 B0 06 9D 21 07 4C CF
-    .byte $A8, $BD, $2D, $07, $29, $0F, $9D, $41, $07, $D0, $61, $BD, $21, $07, $38, $FD  ; CPU:$A870 PRG:A870  A8 BD 2D 07 29 0F 9D 41 07 D0 61 BD 21 07 38 FD
-    .byte $0D, $07, $9D, $21, $07, $B0, $0B, $BD, $3D, $07, $29, $0F, $9D, $21, $07, $4C  ; CPU:$A880 PRG:A880  0D 07 9D 21 07 B0 0B BD 3D 07 29 0F 9D 21 07 4C
-    .byte $CF, $A8, $BD, $3D, $07, $29, $0F, $DD, $21, $07, $F0, $33, $90, $E9, $BD, $31  ; CPU:$A890 PRG:A890  CF A8 BD 3D 07 29 0F DD 21 07 F0 33 90 E9 BD 31
-    .byte $07, $29, $0F, $9D, $41, $07, $D0, $34, $BD, $41, $07, $F0, $22, $D0, $2D, $BD  ; CPU:$A8A0 PRG:A8A0  07 29 0F 9D 41 07 D0 34 BD 41 07 F0 22 D0 2D BD
-    .byte $21, $07, $38, $FD, $0D, $07, $9D, $21, $07, $90, $0C, $F0, $0A, $BD, $39, $07  ; CPU:$A8B0 PRG:A8B0  21 07 38 FD 0D 07 9D 21 07 90 0C F0 0A BD 39 07
-    .byte $29, $0F, $9D, $41, $07, $D0, $15, $A0, $00, $98, $9D, $21, $07, $F0, $06, $BC  ; CPU:$A8C0 PRG:A8C0  29 0F 9D 41 07 D0 15 A0 00 98 9D 21 07 F0 06 BC
-    .byte $1D, $07, $20, $54, $AA, $9D, $41, $07, $98, $9D, $1D, $07, $BD, $21, $07, $48  ; CPU:$A8D0 PRG:A8D0  1D 07 20 54 AA 9D 41 07 98 9D 1D 07 BD 21 07 48
-    .byte $BD, $09, $07, $48, $A0, $05, $A9, $00, $5E, $09, $07, $90, $04, $18, $7D, $21  ; CPU:$A8E0 PRG:A8E0  BD 09 07 48 A0 05 A9 00 5E 09 07 90 04 18 7D 21
-    .byte $07, $1E, $21, $07, $88, $D0, $F1, $A8, $68, $9D, $09, $07, $68, $9D, $21, $07  ; CPU:$A8F0 PRG:A8F0  07 1E 21 07 88 D0 F1 A8 68 9D 09 07 68 9D 21 07
-    .byte $98, $4A, $4A, $4A, $4A, $1D, $29, $07, $48, $8A, $18, $2A, $2A, $A8, $68, $99  ; CPU:$A900 PRG:A900  98 4A 4A 4A 4A 1D 29 07 48 8A 18 2A 2A A8 68 99
-    .byte $00, $40, $60, $BD, $15, $07, $18, $65, $D9, $85, $DB, $BD, $19, $07, $65, $DA  ; CPU:$A910 PRG:A910  00 40 60 BD 15 07 18 65 D9 85 DB BD 19 07 65 DA
-    .byte $85, $DC, $A0, $00, $B1, $DB, $30, $03, $4C, $E9, $A9, $C9, $88, $B0, $03, $4C  ; CPU:$A920 PRG:A920  85 DC A0 00 B1 DB 30 03 4C E9 A9 C9 88 B0 03 4C
-    .byte $C3, $A9, $D0, $0A, $A9, $00, $9D, $15, $07, $9D, $19, $07, $F0, $D5, $C9, $89  ; CPU:$A930 PRG:A930  C3 A9 D0 0A A9 00 9D 15 07 9D 19 07 F0 D5 C9 89
-    .byte $D0, $12, $AD, $07, $07, $49, $FF, $2D, $00, $07, $8D, $15, $40, $8D, $00, $07  ; CPU:$A940 PRG:A940  D0 12 AD 07 07 49 FF 2D 00 07 8D 15 40 8D 00 07
-    .byte $20, $7A, $AA, $60, $C9, $8A, $D0, $1E, $BD, $45, $07, $1D, $49, $07, $F0, $75  ; CPU:$A950 PRG:A950  20 7A AA 60 C9 8A D0 1E BD 45 07 1D 49 07 F0 75
-    .byte $BD, $45, $07, $9D, $15, $07, $BD, $49, $07, $9D, $19, $07, $A9, $00, $9D, $45  ; CPU:$A960 PRG:A960  BD 45 07 9D 15 07 BD 49 07 9D 19 07 A9 00 9D 45
-    .byte $07, $9D, $49, $07, $F0, $9D, $C9, $8B, $D0, $0F, $C8, $B1, $DB, $9D, $45, $07  ; CPU:$A970 PRG:A970  07 9D 49 07 F0 9D C9 8B D0 0F C8 B1 DB 9D 45 07
-    .byte $C8, $B1, $DB, $9D, $49, $07, $4C, $D5, $A9, $C9, $8C, $D0, $0F, $C8, $B1, $DB  ; CPU:$A980 PRG:A980  C8 B1 DB 9D 49 07 4C D5 A9 C9 8C D0 0F C8 B1 DB
-    .byte $9D, $15, $07, $C8, $B1, $DB, $9D, $19, $07, $4C, $13, $A9, $C9, $8D, $D0, $09  ; CPU:$A990 PRG:A990  9D 15 07 C8 B1 DB 9D 19 07 4C 13 A9 C9 8D D0 09
-    .byte $C8, $B1, $DB, $8D, $02, $07, $4C, $D5, $A9, $C9, $8E, $D0, $09, $C8, $B1, $DB  ; CPU:$A9A0 PRG:A9A0  C8 B1 DB 8D 02 07 4C D5 A9 C9 8E D0 09 C8 B1 DB
-    .byte $9D, $03, $07, $4C, $D5, $A9, $C9, $8F, $D0, $1B, $C8, $B1, $DB, $9D, $09, $07  ; CPU:$A9B0 PRG:A9B0  9D 03 07 4C D5 A9 C9 8F D0 1B C8 B1 DB 9D 09 07
-    .byte $4C, $D5, $A9, $29, $3F, $18, $2A, $2A, $6D, $08, $07, $AA, $C8, $B1, $DB, $9D  ; CPU:$A9C0 PRG:A9C0  4C D5 A9 29 3F 18 2A 2A 6D 08 07 AA C8 B1 DB 9D
-    .byte $21, $07, $AE, $08, $07, $C8, $98, $18, $7D, $15, $07, $9D, $15, $07, $A9, $00  ; CPU:$A9D0 PRG:A9D0  21 07 AE 08 07 C8 98 18 7D 15 07 9D 15 07 A9 00
-    .byte $7D, $19, $07, $9D, $19, $07, $4C, $13, $A9, $9D, $11, $07, $18, $A9, $02, $7D  ; CPU:$A9E0 PRG:A9E0  7D 19 07 9D 19 07 4C 13 A9 9D 11 07 18 A9 02 7D
-    .byte $15, $07, $9D, $15, $07, $A9, $00, $7D, $19, $07, $9D, $19, $07, $A5, $D6, $2D  ; CPU:$A9F0 PRG:A9F0  15 07 9D 15 07 A9 00 7D 19 07 9D 19 07 A5 D6 2D
-    .byte $07, $07, $F0, $01, $60, $C8, $B1, $DB, $48, $8A, $18, $2A, $2A, $A8, $68, $F0  ; CPU:$AA00 PRG:AA00  07 07 F0 01 60 C8 B1 DB 48 8A 18 2A 2A A8 68 F0
-    .byte $04, $18, $7D, $03, $07, $0A, $AA, $BD, $50, $A6, $99, $02, $40, $E8, $BD, $50  ; CPU:$AA10 PRG:AA10  04 18 7D 03 07 0A AA BD 50 A6 99 02 40 E8 BD 50
-    .byte $A6, $09, $08, $99, $03, $40, $AE, $08, $07, $E0, $02, $F0, $20, $BD, $3D, $07  ; CPU:$AA20 PRG:AA20  A6 09 08 99 03 40 AE 08 07 E0 02 F0 20 BD 3D 07
-    .byte $4A, $4A, $4A, $4A, $9D, $21, $07, $20, $DC, $A8, $BD, $25, $07, $99, $01, $40  ; CPU:$AA30 PRG:AA30  4A 4A 4A 4A 9D 21 07 20 DC A8 BD 25 07 99 01 40
-    .byte $A0, $00, $20, $54, $AA, $9D, $41, $07, $98, $9D, $1D, $07, $60, $BD, $29, $07  ; CPU:$AA40 PRG:AA40  A0 00 20 54 AA 9D 41 07 98 9D 1D 07 60 BD 29 07
-    .byte $99, $00, $40, $60, $C8, $C0, $05, $F0, $0D, $98, $18, $2A, $2A, $6D, $08, $07  ; CPU:$AA50 PRG:AA50  99 00 40 60 C8 C0 05 F0 0D 98 18 2A 2A 6D 08 07
-    .byte $AA, $BD, $29, $07, $F0, $EE, $AE, $08, $07, $48, $4A, $4A, $4A, $4A, $9D, $0D  ; CPU:$AA60 PRG:AA60  AA BD 29 07 F0 EE AE 08 07 48 4A 4A 4A 4A 9D 0D
-    .byte $07, $68, $29, $0F, $60, $AD, $00, $07, $D0, $D9, $AD, $A1, $07, $F0, $D4, $A2  ; CPU:$AA70 PRG:AA70  07 68 29 0F 60 AD 00 07 D0 D9 AD A1 07 F0 D4 A2
-    .byte $01, $BD, $4D, $07, $9D, $00, $07, $E8, $E0, $4E, $D0, $F5, $A0, $00, $BD, $4D  ; CPU:$AA80 PRG:AA80  01 BD 4D 07 9D 00 07 E8 E0 4E D0 F5 A0 00 BD 4D
-    .byte $07, $99, $D7, $00, $C8, $E8, $E0, $54, $D0, $F4, $AD, $4D, $07, $8D, $00, $07  ; CPU:$AA90 PRG:AA90  07 99 D7 00 C8 E8 E0 54 D0 F4 AD 4D 07 8D 00 07
-    .byte $8D, $15, $40, $A9, $00, $8D, $A1, $07, $60, $8E, $A2, $07, $8C, $A3, $07, $AD  ; CPU:$AAA0 PRG:AAA0  8D 15 40 A9 00 8D A1 07 60 8E A2 07 8C A3 07 AD
-    .byte $A1, $07, $F0, $01, $60, $AD, $00, $07, $8D, $4D, $07, $A9, $00, $8D, $00, $07  ; CPU:$AAB0 PRG:AAB0  A1 07 F0 01 60 AD 00 07 8D 4D 07 A9 00 8D 00 07
-    .byte $8D, $15, $40, $A2, $01, $BD, $00, $07, $9D, $4D, $07, $E8, $E0, $4E, $D0, $F5  ; CPU:$AAC0 PRG:AAC0  8D 15 40 A2 01 BD 00 07 9D 4D 07 E8 E0 4E D0 F5
-    .byte $A0, $00, $B9, $D7, $00, $9D, $4D, $07, $C8, $E8, $E0, $54, $D0, $F4, $A9, $FF  ; CPU:$AAD0 PRG:AAD0  A0 00 B9 D7 00 9D 4D 07 C8 E8 E0 54 D0 F4 A9 FF
-    .byte $8D, $A1, $07, $AE, $A2, $07, $AC, $A3, $07, $4C, $5B, $A7, $01, $02, $04, $08  ; CPU:$AAE0 PRG:AAE0  8D A1 07 AE A2 07 AC A3 07 4C 5B A7 01 02 04 08
-    .byte $10, $48, $8A, $48, $98, $48, $A5, $E3, $F0, $4C, $A9, $0F, $8D, $15, $40, $A9  ; CPU:$AAF0 PRG:AAF0  10 48 8A 48 98 48 A5 E3 F0 4C A9 0F 8D 15 40 A9
-    .byte $00, $85, $D6, $A5, $E2, $0A, $AA, $BD, $6D, $AB, $85, $DF, $BD, $6E, $AB, $85  ; CPU:$AB00 PRG:AB00  00 85 D6 A5 E2 0A AA BD 6D AB 85 DF BD 6E AB 85
-    .byte $E0, $A0, $00, $B1, $DF, $AA, $BD, $EC, $AA, $05, $D6, $85, $D6, $A9, $0F, $8D  ; CPU:$AB10 PRG:AB10  E0 A0 00 B1 DF AA BD EC AA 05 D6 85 D6 A9 0F 8D
-    .byte $15, $40, $8A, $0A, $0A, $AA, $C8, $B1, $DF, $9D, $00, $40, $E8, $C8, $C0, $05  ; CPU:$AB20 PRG:AB20  15 40 8A 0A 0A AA C8 B1 DF 9D 00 40 E8 C8 C0 05
-    .byte $D0, $F5, $B1, $DF, $C9, $FF, $F0, $0E, $18, $A5, $DF, $69, $05, $85, $DF, $90  ; CPU:$AB30 PRG:AB30  D0 F5 B1 DF C9 FF F0 0E 18 A5 DF 69 05 85 DF 90
-    .byte $02, $E6, $E0, $4C, $11, $AB, $A9, $00, $85, $E3, $68, $A8, $68, $AA, $68, $60  ; CPU:$AB40 PRG:AB40  02 E6 E0 4C 11 AB A9 00 85 E3 68 A8 68 AA 68 60
-    .byte $A9, $04, $85, $E2, $A9, $01, $85, $E3, $4C, $F1, $AA, $65, $B0, $32, $B3, $4C  ; CPU:$AB50 PRG:AB50  A9 04 85 E2 A9 01 85 E3 4C F1 AA 65 B0 32 B3 4C
-    .byte $BB, $9D, $AB, $AC, $B7, $E5, $AE, $52, $B9, $A6, $BA, $56, $C0, $79, $AB, $7F  ; CPU:$AB60 PRG:AB60  BB 9D AB AC B7 E5 AE 52 B9 A6 BA 56 C0 79 AB 7F
-    .byte $AB, $85, $AB, $8B, $AB, $91, $AB, $97, $AB, $01, $44, $9C, $C8, $C0, $FF, $01  ; CPU:$AB70 PRG:AB70  AB 85 AB 8B AB 91 AB 97 AB 01 44 9C C8 C0 FF 01
-    .byte $09, $AB, $3B, $C1, $FF, $01, $40, $80, $4A, $28, $FF, $01, $40, $80, $63, $28  ; CPU:$AB80 PRG:AB80  09 AB 3B C1 FF 01 40 80 4A 28 FF 01 40 80 63 28
-    .byte $FF, $01, $5F, $A4, $3D, $C0, $FF, $01, $5E, $DB, $8C, $43, $FF, $A7, $AB, $99  ; CPU:$AB90 PRG:AB90  FF 01 5F A4 3D C0 FF 01 5E DB 8C 43 FF A7 AB 99
-    .byte $AC, $65, $AD, $09, $AE, $02, $0F, $82, $04, $84, $18, $87, $F0, $8F, $0B, $8D  ; CPU:$ABA0 PRG:ABA0  AC 65 AD 09 AE 02 0F 82 04 84 18 87 F0 8F 0B 8D
-    .byte $06, $8E, $02, $18, $00, $02, $00, $02, $1D, $02, $1E, $02, $1F, $02, $20, $04  ; CPU:$ABB0 PRG:ABB0  06 8E 02 18 00 02 00 02 1D 02 1E 02 1F 02 20 04
-    .byte $29, $02, $20, $04, $29, $02, $20, $06, $22, $08, $2A, $02, $22, $02, $21, $02  ; CPU:$ABC0 PRG:ABC0  29 02 20 04 29 02 20 06 22 08 2A 02 22 02 21 02
-    .byte $20, $04, $29, $02, $20, $04, $29, $02, $20, $06, $22, $08, $2A, $02, $22, $02  ; CPU:$ABD0 PRG:ABD0  20 04 29 02 20 04 29 02 20 06 22 08 2A 02 22 02
-    .byte $21, $02, $20, $04, $29, $02, $20, $04, $29, $04, $20, $02, $1E, $04, $27, $02  ; CPU:$ABE0 PRG:ABE0  21 02 20 04 29 02 20 04 29 04 20 02 1E 04 27 02
-    .byte $1E, $02, $1E, $04, $27, $12, $25, $82, $5A, $8F, $0C, $0C, $00, $02, $20, $02  ; CPU:$ABF0 PRG:ABF0  1E 02 1E 04 27 12 25 82 5A 8F 0C 0C 00 02 20 02
-    .byte $21, $03, $22, $01, $24, $02, $25, $06, $25, $02, $24, $02, $25, $04, $27, $08  ; CPU:$AC00 PRG:AC00  21 03 22 01 24 02 25 06 25 02 24 02 25 04 27 08
-    .byte $25, $02, $24, $02, $25, $03, $29, $01, $28, $02, $29, $04, $2C, $02, $29, $02  ; CPU:$AC10 PRG:AC10  25 02 24 02 25 03 29 01 28 02 29 04 2C 02 29 02
-    .byte $25, $02, $20, $06, $23, $06, $22, $04, $20, $03, $1E, $01, $1D, $02, $1E, $02  ; CPU:$AC20 PRG:AC20  25 02 20 06 23 06 22 04 20 03 1E 01 1D 02 1E 02
-    .byte $20, $02, $22, $04, $2A, $01, $24, $01, $25, $03, $29, $01, $28, $02, $29, $06  ; CPU:$AC30 PRG:AC30  20 02 22 04 2A 01 24 01 25 03 29 01 28 02 29 06
-    .byte $2E, $81, $95, $03, $29, $01, $00, $81, $00, $10, $27, $82, $08, $8F, $0F, $08  ; CPU:$AC40 PRG:AC40  2E 81 95 03 29 01 00 81 00 10 27 82 08 8F 0F 08
-    .byte $00, $02, $00, $02, $1D, $02, $1E, $02, $1F, $02, $20, $04, $29, $02, $20, $04  ; CPU:$AC50 PRG:AC50  00 02 00 02 1D 02 1E 02 1F 02 20 04 29 02 20 04
-    .byte $29, $02, $20, $06, $22, $08, $2A, $02, $22, $02, $21, $02, $20, $04, $29, $02  ; CPU:$AC60 PRG:AC60  29 02 20 06 22 08 2A 02 22 02 21 02 20 04 29 02
-    .byte $20, $04, $29, $02, $20, $06, $22, $08, $2A, $02, $22, $02, $21, $02, $20, $04  ; CPU:$AC70 PRG:AC70  20 04 29 02 20 06 22 08 2A 02 22 02 21 02 20 04
-    .byte $29, $02, $20, $04, $29, $04, $20, $03, $1E, $01, $1D, $02, $1E, $06, $27, $14  ; CPU:$AC80 PRG:AC80  29 02 20 04 29 04 20 03 1E 01 1D 02 1E 06 27 14
-    .byte $25, $8A, $8B, $50, $00, $8C, $50, $00, $89, $82, $04, $84, $18, $87, $F0, $8F  ; CPU:$AC90 PRG:AC90  25 8A 8B 50 00 8C 50 00 89 82 04 84 18 87 F0 8F
-    .byte $04, $8E, $02, $40, $00, $04, $1D, $04, $00, $04, $19, $04, $14, $04, $12, $04  ; CPU:$ACA0 PRG:ACA0  04 8E 02 40 00 04 1D 04 00 04 19 04 14 04 12 04
-    .byte $1B, $08, $00, $04, $1D, $04, $00, $04, $19, $04, $14, $04, $12, $04, $1B, $04  ; CPU:$ACB0 PRG:ACB0  1B 08 00 04 1D 04 00 04 19 04 14 04 12 04 1B 04
-    .byte $00, $04, $12, $04, $11, $04, $19, $08, $00, $82, $5A, $8F, $0A, $0C, $00, $04  ; CPU:$ACC0 PRG:ACC0  00 04 12 04 11 04 19 08 00 82 5A 8F 0A 0C 00 04
-    .byte $19, $03, $1E, $01, $20, $02, $22, $06, $1E, $02, $1D, $02, $1E, $04, $1F, $08  ; CPU:$ACD0 PRG:ACD0  19 03 1E 01 20 02 22 06 1E 02 1D 02 1E 04 1F 08
-    .byte $22, $02, $1B, $02, $19, $03, $20, $01, $1F, $02, $20, $04, $25, $02, $25, $02  ; CPU:$ACE0 PRG:ACE0  22 02 1B 02 19 03 20 01 1F 02 20 04 25 02 25 02
-    .byte $20, $02, $1D, $04, $20, $02, $1B, $06, $1A, $04, $1D, $03, $1B, $01, $1D, $02  ; CPU:$ACF0 PRG:ACF0  20 02 1D 04 20 02 1B 06 1A 04 1D 03 1B 01 1D 02
-    .byte $1B, $02, $1D, $02, $1E, $04, $22, $01, $21, $01, $22, $08, $25, $04, $1D, $04  ; CPU:$AD00 PRG:AD00  1B 02 1D 02 1E 04 22 01 21 01 22 08 25 04 1D 04
-    .byte $20, $06, $22, $06, $23, $04, $24, $82, $04, $8F, $0D, $08, $00, $02, $00, $02  ; CPU:$AD10 PRG:AD10  20 06 22 06 23 04 24 82 04 8F 0D 08 00 02 00 02
-    .byte $1D, $02, $1E, $02, $1F, $02, $1D, $04, $20, $02, $1D, $04, $20, $02, $1D, $06  ; CPU:$AD20 PRG:AD20  1D 02 1E 02 1F 02 1D 04 20 02 1D 04 20 02 1D 06
-    .byte $1E, $08, $22, $02, $22, $02, $21, $02, $1D, $04, $20, $02, $1D, $04, $20, $02  ; CPU:$AD30 PRG:AD30  1E 08 22 02 22 02 21 02 1D 04 20 02 1D 04 20 02
-    .byte $1D, $06, $1E, $08, $22, $02, $22, $02, $21, $02, $1D, $04, $20, $02, $1D, $04  ; CPU:$AD40 PRG:AD40  1D 06 1E 08 22 02 22 02 21 02 1D 04 20 02 1D 04
-    .byte $20, $04, $1D, $03, $16, $01, $15, $02, $16, $06, $1E, $14, $1D, $8A, $8B, $30  ; CPU:$AD50 PRG:AD50  20 04 1D 03 16 01 15 02 16 06 1E 14 1D 8A 8B 30
-    .byte $00, $8C, $30, $00, $89, $82, $1E, $8F, $08, $8E, $02, $40, $00, $20, $00, $0C  ; CPU:$AD60 PRG:AD60  00 8C 30 00 89 82 1E 8F 08 8E 02 40 00 20 00 0C
-    .byte $19, $04, $19, $0C, $14, $04, $14, $10, $19, $0C, $00, $04, $19, $8F, $0A, $06  ; CPU:$AD70 PRG:AD70  19 04 19 0C 14 04 14 10 19 0C 00 04 19 8F 0A 06
-    .byte $1E, $02, $1E, $06, $1E, $02, $1E, $06, $1F, $02, $1F, $06, $1F, $02, $1F, $06  ; CPU:$AD80 PRG:AD80  1E 02 1E 06 1E 02 1E 06 1F 02 1F 06 1F 02 1F 06
-    .byte $20, $02, $20, $06, $20, $02, $20, $06, $20, $06, $22, $04, $1D, $06, $1B, $02  ; CPU:$AD90 PRG:AD90  20 02 20 06 20 02 20 06 20 06 22 04 1D 06 1B 02
-    .byte $1B, $06, $1B, $02, $1B, $06, $14, $02, $14, $04, $14, $04, $14, $06, $20, $06  ; CPU:$ADA0 PRG:ADA0  1B 06 1B 02 1B 06 14 02 14 04 14 04 14 06 20 06
-    .byte $20, $04, $20, $8F, $0E, $0C, $00, $04, $20, $04, $19, $02, $11, $02, $14, $04  ; CPU:$ADB0 PRG:ADB0  20 04 20 8F 0E 0C 00 04 20 04 19 02 11 02 14 04
-    .byte $19, $04, $1D, $04, $1E, $02, $16, $02, $19, $04, $1E, $04, $1E, $04, $19, $02  ; CPU:$ADC0 PRG:ADC0  19 04 1D 04 1E 02 16 02 19 04 1E 04 1E 04 19 02
-    .byte $11, $02, $14, $04, $19, $04, $1D, $04, $1E, $02, $16, $02, $19, $04, $1E, $04  ; CPU:$ADD0 PRG:ADD0  11 02 14 04 19 04 1D 04 1E 02 16 02 19 04 1E 04
-    .byte $1E, $04, $19, $02, $11, $02, $14, $04, $19, $04, $19, $04, $12, $04, $12, $04  ; CPU:$ADE0 PRG:ADE0  1E 04 19 02 11 02 14 04 19 04 19 04 12 04 12 04
-    .byte $14, $04, $14, $04, $19, $02, $11, $02, $14, $04, $19, $04, $14, $0C, $19, $04  ; CPU:$ADF0 PRG:ADF0  14 04 14 04 19 02 11 02 14 04 19 04 14 0C 19 04
-    .byte $19, $8A, $8B, $18, $00, $8C, $18, $00, $89, $8F, $06, $8E, $03, $04, $44, $04  ; CPU:$AE00 PRG:AE00  19 8A 8B 18 00 8C 18 00 89 8F 06 8E 03 04 44 04
-    .byte $44, $04, $44, $04, $44, $02, $3F, $02, $44, $02, $3F, $02, $44, $02, $3F, $02  ; CPU:$AE10 PRG:AE10  44 04 44 04 44 02 3F 02 44 02 3F 02 44 02 3F 02
-    .byte $44, $02, $3F, $02, $44, $8F, $0B, $02, $3F, $01, $44, $01, $44, $02, $3F, $01  ; CPU:$AE20 PRG:AE20  44 02 3F 02 44 8F 0B 02 3F 01 44 01 44 02 3F 01
-    .byte $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02  ; CPU:$AE30 PRG:AE30  44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02
-    .byte $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01  ; CPU:$AE40 PRG:AE40  3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01
-    .byte $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01  ; CPU:$AE50 PRG:AE50  44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01
-    .byte $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02  ; CPU:$AE60 PRG:AE60  44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02
-    .byte $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01  ; CPU:$AE70 PRG:AE70  3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01
-    .byte $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01  ; CPU:$AE80 PRG:AE80  44 02 3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01
-    .byte $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02  ; CPU:$AE90 PRG:AE90  44 01 44 02 3F 01 44 01 44 02 3F 01 44 01 44 02
-    .byte $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01, $44, $02, $3F, $01, $44, $01  ; CPU:$AEA0 PRG:AEA0  3F 01 44 01 44 02 3F 01 44 01 44 02 3F 01 44 01
-    .byte $44, $02, $3F, $01, $44, $01, $44, $8F, $0C, $02, $40, $02, $40, $02, $44, $02  ; CPU:$AEB0 PRG:AEB0  44 02 3F 01 44 01 44 8F 0C 02 40 02 40 02 44 02
-    .byte $40, $02, $40, $02, $40, $02, $44, $02, $40, $02, $40, $02, $40, $02, $44, $02  ; CPU:$AEC0 PRG:AEC0  40 02 40 02 40 02 44 02 40 02 40 02 40 02 44 02
-    .byte $40, $02, $40, $02, $40, $01, $44, $01, $42, $01, $44, $01, $42, $8A, $8B, $AE  ; CPU:$AED0 PRG:AED0  40 02 40 02 40 01 44 01 42 01 44 01 42 8A 8B AE
-    .byte $00, $8C, $AE, $00, $89, $EF, $AE, $84, $AF, $D6, $AF, $2A, $B0, $02, $0F, $82  ; CPU:$AEE0 PRG:AEE0  00 8C AE 00 89 EF AE 84 AF D6 AF 2A B0 02 0F 82
-    .byte $BB, $84, $18, $87, $F0, $8F, $0D, $8E, $05, $8D, $02, $06, $1D, $06, $1B, $06  ; CPU:$AEF0 PRG:AEF0  BB 84 18 87 F0 8F 0D 8E 05 8D 02 06 1D 06 1B 06
-    .byte $19, $12, $1B, $0C, $19, $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C, $19, $08  ; CPU:$AF00 PRG:AF00  19 12 1B 0C 19 06 1D 06 1B 06 19 12 1B 0C 19 08
-    .byte $1D, $08, $1B, $08, $19, $08, $1D, $08, $20, $08, $1E, $24, $1D, $06, $1B, $06  ; CPU:$AF10 PRG:AF10  1D 08 1B 08 19 08 1D 08 20 08 1E 24 1D 06 1B 06
-    .byte $19, $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C, $19, $06, $1D, $06, $1B, $06  ; CPU:$AF20 PRG:AF20  19 06 1D 06 1B 06 19 12 1B 0C 19 06 1D 06 1B 06
-    .byte $19, $12, $1B, $0C, $19, $30, $19, $12, $12, $12, $14, $0C, $12, $06, $1D, $06  ; CPU:$AF30 PRG:AF30  19 12 1B 0C 19 30 19 12 12 12 14 0C 12 06 1D 06
-    .byte $1B, $06, $19, $12, $1B, $0C, $19, $06, $1D, $06, $1B, $06, $19, $12, $1B, $0C  ; CPU:$AF40 PRG:AF40  1B 06 19 12 1B 0C 19 06 1D 06 1B 06 19 12 1B 0C
-    .byte $19, $08, $1D, $08, $1B, $08, $19, $08, $1D, $08, $20, $08, $25, $24, $23, $06  ; CPU:$AF50 PRG:AF50  19 08 1D 08 1B 08 19 08 1D 08 20 08 25 24 23 06
-    .byte $22, $06, $20, $06, $22, $06, $20, $06, $1E, $0C, $19, $0C, $18, $06, $19, $06  ; CPU:$AF60 PRG:AF60  22 06 20 06 22 06 20 06 1E 0C 19 0C 18 06 19 06
-    .byte $1E, $06, $1D, $06, $1B, $12, $19, $0C, $18, $30, $19, $06, $12, $0C, $14, $0C  ; CPU:$AF70 PRG:AF70  1E 06 1D 06 1B 12 19 0C 18 30 19 06 12 0C 14 0C
-    .byte $16, $12, $18, $88, $82, $05, $84, $18, $87, $80, $8F, $04, $8E, $05, $12, $14  ; CPU:$AF80 PRG:AF80  16 12 18 88 82 05 84 18 87 80 8F 04 8E 05 12 14
-    .byte $06, $14, $12, $14, $06, $14, $12, $15, $06, $15, $12, $15, $06, $15, $12, $16  ; CPU:$AF90 PRG:AF90  06 14 12 14 06 14 12 15 06 15 12 15 06 15 12 16
-    .byte $06, $16, $12, $16, $06, $16, $12, $17, $06, $17, $12, $17, $06, $17, $12, $16  ; CPU:$AFA0 PRG:AFA0  06 16 12 16 06 16 12 17 06 17 12 17 06 17 12 16
-    .byte $06, $16, $12, $16, $06, $16, $12, $15, $06, $15, $12, $15, $06, $15, $30, $14  ; CPU:$AFB0 PRG:AFB0  06 16 12 16 06 16 12 15 06 15 12 15 06 15 30 14
-    .byte $8A, $12, $16, $12, $18, $0C, $16, $8B, $49, $00, $8C, $0A, $00, $06, $16, $0C  ; CPU:$AFC0 PRG:AFC0  8A 12 16 12 18 0C 16 8B 49 00 8C 0A 00 06 16 0C
-    .byte $18, $0C, $19, $12, $1B, $88, $82, $3A, $8F, $0A, $8E, $05, $12, $19, $06, $19  ; CPU:$AFD0 PRG:AFD0  18 0C 19 12 1B 88 82 3A 8F 0A 8E 05 12 19 06 19
-    .byte $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06, $19  ; CPU:$AFE0 PRG:AFE0  12 19 06 19 12 19 06 19 12 19 06 19 12 19 06 19
-    .byte $12, $19, $06, $19, $12, $19, $06, $19, $12, $19, $06, $19, $12, $1E, $06, $1E  ; CPU:$AFF0 PRG:AFF0  12 19 06 19 12 19 06 19 12 19 06 19 12 1E 06 1E
-    .byte $12, $1E, $06, $1E, $12, $1E, $06, $1E, $12, $1E, $06, $1E, $12, $19, $06, $19  ; CPU:$B000 PRG:B000  12 1E 06 1E 12 1E 06 1E 12 1E 06 1E 12 19 06 19
-    .byte $12, $19, $06, $19, $8A, $12, $1E, $12, $20, $0C, $1E, $8B, $4B, $00, $8C, $06  ; CPU:$B010 PRG:B010  12 19 06 19 8A 12 1E 12 20 0C 1E 8B 4B 00 8C 06
-    .byte $00, $06, $1E, $0C, $20, $0C, $1E, $12, $20, $88, $8F, $0B, $8E, $05, $06, $41  ; CPU:$B020 PRG:B020  00 06 1E 0C 20 0C 1E 12 20 88 8F 0B 8E 05 06 41
-    .byte $06, $41, $06, $41, $0C, $40, $0C, $42, $06, $40, $06, $41, $06, $41, $06, $41  ; CPU:$B030 PRG:B030  06 41 06 41 0C 40 0C 42 06 40 06 41 06 41 06 41
-    .byte $06, $41, $06, $41, $06, $41, $06, $43, $06, $41, $08, $40, $08, $40, $08, $40  ; CPU:$B040 PRG:B040  06 41 06 41 06 41 06 43 06 41 08 40 08 40 08 40
-    .byte $08, $42, $08, $44, $08, $42, $06, $41, $06, $41, $06, $41, $0C, $43, $06, $42  ; CPU:$B050 PRG:B050  08 42 08 44 08 42 06 41 06 41 06 41 0C 43 06 42
-    .byte $06, $42, $06, $41, $88, $6F, $B0, $6E, $B1, $3F, $B2, $F0, $B2, $02, $0F, $82  ; CPU:$B060 PRG:B060  06 42 06 41 88 6F B0 6E B1 3F B2 F0 B2 02 0F 82
-    .byte $04, $84, $0C, $87, $D0, $8F, $0C, $8E, $03, $8D, $06, $06, $0D, $06, $16, $04  ; CPU:$B070 PRG:B070  04 84 0C 87 D0 8F 0C 8E 03 8D 06 06 0D 06 16 04
-    .byte $14, $06, $0F, $06, $16, $04, $14, $06, $0D, $06, $16, $04, $14, $06, $0F, $06  ; CPU:$B080 PRG:B080  14 06 0F 06 16 04 14 06 0D 06 16 04 14 06 0F 06
-    .byte $16, $82, $5A, $02, $1D, $02, $1E, $10, $20, $04, $00, $02, $1E, $02, $1D, $02  ; CPU:$B090 PRG:B090  16 82 5A 02 1D 02 1E 10 20 04 00 02 1E 02 1D 02
-    .byte $1E, $02, $1D, $02, $1B, $02, $19, $06, $1D, $0A, $20, $04, $00, $02, $1E, $02  ; CPU:$B0A0 PRG:B0A0  1E 02 1D 02 1B 02 19 06 1D 0A 20 04 00 02 1E 02
-    .byte $1D, $02, $1E, $02, $1D, $02, $1B, $02, $19, $02, $1B, $02, $1D, $0C, $19, $04  ; CPU:$B0B0 PRG:B0B0  1D 02 1E 02 1D 02 1B 02 19 02 1B 02 1D 0C 19 04
-    .byte $00, $02, $1E, $02, $1D, $02, $1E, $02, $1D, $02, $1B, $02, $19, $10, $00, $0C  ; CPU:$B0C0 PRG:B0C0  00 02 1E 02 1D 02 1E 02 1D 02 1B 02 19 10 00 0C
-    .byte $00, $8A, $8B, $69, $00, $8C, $22, $00, $8E, $05, $8A, $8B, $72, $00, $8C, $22  ; CPU:$B0D0 PRG:B0D0  00 8A 8B 69 00 8C 22 00 8E 05 8A 8B 72 00 8C 22
-    .byte $00, $8E, $07, $8A, $8B, $7B, $00, $8C, $22, $00, $04, $14, $10, $1D, $04, $00  ; CPU:$B0E0 PRG:B0E0  00 8E 07 8A 8B 7B 00 8C 22 00 04 14 10 1D 04 00
-    .byte $03, $1E, $01, $1D, $02, $1E, $04, $22, $12, $20, $04, $00, $03, $1E, $01, $1D  ; CPU:$B0F0 PRG:B0F0  03 1E 01 1D 02 1E 04 22 12 20 04 00 03 1E 01 1D
-    .byte $03, $1E, $01, $1D, $02, $1B, $02, $19, $10, $1D, $04, $00, $04, $1E, $03, $1D  ; CPU:$B100 PRG:B100  03 1E 01 1D 02 1B 02 19 10 1D 04 00 04 1E 03 1D
-    .byte $01, $1E, $02, $1B, $12, $19, $04, $00, $04, $25, $03, $24, $01, $25, $02, $22  ; CPU:$B110 PRG:B110  01 1E 02 1B 12 19 04 00 04 25 03 24 01 25 02 22
-    .byte $12, $20, $04, $00, $04, $25, $03, $24, $01, $25, $02, $22, $12, $20, $04, $00  ; CPU:$B120 PRG:B120  12 20 04 00 04 25 03 24 01 25 02 22 12 20 04 00
-    .byte $03, $1E, $01, $1D, $02, $1E, $04, $22, $12, $20, $04, $00, $04, $1E, $03, $1D  ; CPU:$B130 PRG:B130  03 1E 01 1D 02 1E 04 22 12 20 04 00 04 1E 03 1D
-    .byte $01, $1E, $02, $1B, $1E, $19, $8E, $08, $8A, $8B, $E0, $00, $8C, $7B, $00, $04  ; CPU:$B140 PRG:B140  01 1E 02 1B 1E 19 8E 08 8A 8B E0 00 8C 7B 00 04
-    .byte $00, $8E, $03, $03, $29, $01, $28, $03, $29, $01, $2D, $03, $26, $01, $25, $03  ; CPU:$B150 PRG:B150  00 8E 03 03 29 01 28 03 29 01 2D 03 26 01 25 03
-    .byte $26, $01, $2B, $03, $25, $01, $24, $02, $25, $06, $2C, $04, $00, $88, $82, $04  ; CPU:$B160 PRG:B160  26 01 2B 03 25 01 24 02 25 06 2C 04 00 88 82 04
-    .byte $84, $02, $87, $18, $8F, $09, $8E, $03, $3C, $00, $04, $14, $02, $00, $06, $25  ; CPU:$B170 PRG:B170  84 02 87 18 8F 09 8E 03 3C 00 04 14 02 00 06 25
-    .byte $04, $22, $02, $1D, $02, $1E, $04, $20, $0C, $00, $04, $00, $02, $1D, $02, $1B  ; CPU:$B180 PRG:B180  04 22 02 1D 02 1E 04 20 0C 00 04 00 02 1D 02 1B
-    .byte $02, $1D, $04, $22, $02, $20, $10, $00, $04, $00, $02, $1D, $02, $1B, $02, $1D  ; CPU:$B190 PRG:B190  02 1D 04 22 02 20 10 00 04 00 02 1D 02 1B 02 1D
-    .byte $04, $20, $02, $20, $10, $00, $04, $00, $02, $1E, $02, $1D, $02, $1E, $02, $1D  ; CPU:$B1A0 PRG:B1A0  04 20 02 20 10 00 04 00 02 1E 02 1D 02 1E 02 1D
-    .byte $02, $1B, $02, $19, $06, $1D, $06, $1B, $04, $00, $8A, $8B, $53, $00, $8C, $0E  ; CPU:$B1B0 PRG:B1B0  02 1B 02 19 06 1D 06 1B 04 00 8A 8B 53 00 8C 0E
-    .byte $00, $8E, $05, $8A, $8B, $5C, $00, $8C, $0E, $00, $8E, $07, $8A, $8B, $65, $00  ; CPU:$B1C0 PRG:B1C0  00 8E 05 8A 8B 5C 00 8C 0E 00 8E 07 8A 8B 65 00
-    .byte $8C, $0E, $00, $04, $00, $04, $19, $03, $18, $01, $19, $02, $16, $12, $14, $04  ; CPU:$B1D0 PRG:B1D0  8C 0E 00 04 00 04 19 03 18 01 19 02 16 12 14 04
-    .byte $00, $04, $19, $03, $18, $01, $19, $02, $16, $12, $14, $04, $00, $03, $11, $01  ; CPU:$B1E0 PRG:B1E0  00 04 19 03 18 01 19 02 16 12 14 04 00 03 11 01
-    .byte $0F, $02, $11, $04, $16, $12, $14, $04, $00, $04, $19, $03, $18, $01, $19, $02  ; CPU:$B1F0 PRG:B1F0  0F 02 11 04 16 12 14 04 00 04 19 03 18 01 19 02
-    .byte $16, $12, $14, $04, $00, $03, $11, $01, $0F, $02, $11, $04, $16, $12, $14, $04  ; CPU:$B200 PRG:B200  16 12 14 04 00 03 11 01 0F 02 11 04 16 12 14 04
-    .byte $00, $03, $11, $01, $0F, $02, $11, $04, $16, $12, $14, $04, $00, $04, $19, $03  ; CPU:$B210 PRG:B210  00 03 11 01 0F 02 11 04 16 12 14 04 00 04 19 03
-    .byte $18, $01, $19, $02, $16, $12, $14, $04, $00, $04, $1D, $02, $1C, $06, $1B, $0C  ; CPU:$B220 PRG:B220  18 01 19 02 16 12 14 04 00 04 1D 02 1C 06 1B 0C
-    .byte $19, $04, $00, $8E, $08, $8A, $8B, $CE, $00, $8C, $65, $00, $20, $00, $88, $82  ; CPU:$B230 PRG:B230  19 04 00 8E 08 8A 8B CE 00 8C 65 00 20 00 88 82
-    .byte $44, $8F, $0A, $8E, $03, $40, $00, $06, $19, $06, $16, $04, $0F, $10, $14, $06  ; CPU:$B240 PRG:B240  44 8F 0A 8E 03 40 00 06 19 06 16 04 0F 10 14 06
-    .byte $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $06  ; CPU:$B250 PRG:B250  19 06 16 04 0F 10 14 06 19 06 16 04 0F 10 14 06
-    .byte $19, $06, $16, $04, $0F, $0C, $14, $04, $00, $8A, $8B, $31, $00, $8C, $08, $00  ; CPU:$B260 PRG:B260  19 06 16 04 0F 0C 14 04 00 8A 8B 31 00 8C 08 00
-    .byte $8E, $05, $8A, $8B, $3A, $00, $8C, $08, $00, $8E, $07, $8A, $8B, $43, $00, $8C  ; CPU:$B270 PRG:B270  8E 05 8A 8B 3A 00 8C 08 00 8E 07 8A 8B 43 00 8C
-    .byte $08, $00, $06, $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F  ; CPU:$B280 PRG:B280  08 00 06 19 06 16 04 0F 10 14 06 19 06 16 04 0F
-    .byte $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F  ; CPU:$B290 PRG:B290  10 14 06 19 06 16 04 0F 10 14 06 19 06 16 04 0F
-    .byte $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $06, $19, $06, $16, $04, $0F  ; CPU:$B2A0 PRG:B2A0  10 14 06 19 06 16 04 0F 10 14 06 19 06 16 04 0F
-    .byte $10, $14, $06, $19, $06, $16, $04, $0F, $10, $14, $04, $00, $04, $14, $02, $17  ; CPU:$B2B0 PRG:B2B0  10 14 06 19 06 16 04 0F 10 14 04 00 04 14 02 17
-    .byte $06, $18, $10, $19, $8E, $08, $8A, $8B, $8E, $00, $8C, $43, $00, $8E, $03, $02  ; CPU:$B2C0 PRG:B2C0  06 18 10 19 8E 08 8A 8B 8E 00 8C 43 00 8E 03 02
-    .byte $15, $02, $00, $02, $15, $02, $00, $02, $13, $02, $00, $02, $13, $02, $00, $02  ; CPU:$B2D0 PRG:B2D0  15 02 00 02 15 02 00 02 13 02 00 02 13 02 00 02
-    .byte $14, $02, $00, $02, $14, $06, $00, $01, $14, $01, $15, $01, $16, $01, $18, $88  ; CPU:$B2E0 PRG:B2E0  14 02 00 02 14 06 00 01 14 01 15 01 16 01 18 88
-    .byte $8F, $0A, $8E, $06, $06, $3D, $06, $3D, $04, $3D, $06, $3D, $06, $3D, $04, $3D  ; CPU:$B2F0 PRG:B2F0  8F 0A 8E 06 06 3D 06 3D 04 3D 06 3D 06 3D 04 3D
-    .byte $06, $3D, $06, $3D, $04, $3D, $06, $3D, $06, $3D, $04, $3D, $04, $3E, $02, $3F  ; CPU:$B300 PRG:B300  06 3D 06 3D 04 3D 06 3D 06 3D 04 3D 04 3E 02 3F
-    .byte $04, $3F, $02, $3F, $02, $3F, $02, $3F, $02, $3E, $02, $3E, $02, $41, $02, $3E  ; CPU:$B310 PRG:B310  04 3F 02 3F 02 3F 02 3F 02 3E 02 3E 02 41 02 3E
-    .byte $02, $3F, $02, $3F, $01, $41, $01, $41, $02, $3F, $8A, $8B, $1C, $00, $8C, $1C  ; CPU:$B320 PRG:B320  02 3F 02 3F 01 41 01 41 02 3F 8A 8B 1C 00 8C 1C
-    .byte $00, $89, $3C, $B3, $20, $B5, $DE, $B6, $66, $B7, $02, $0F, $82, $96, $84, $18  ; CPU:$B330 PRG:B330  00 89 3C B3 20 B5 DE B6 66 B7 02 0F 82 96 84 18
-    .byte $87, $F0, $8E, $09, $8D, $06, $8F, $0D, $08, $0D, $08, $0A, $06, $0F, $04, $08  ; CPU:$B340 PRG:B340  87 F0 8E 09 8D 06 8F 0D 08 0D 08 0A 06 0F 04 08
-    .byte $02, $08, $02, $0A, $02, $0C, $04, $0D, $04, $0D, $04, $0A, $04, $0A, $04, $0F  ; CPU:$B350 PRG:B350  02 08 02 0A 02 0C 04 0D 04 0D 04 0A 04 0A 04 0F
-    .byte $02, $0F, $04, $08, $02, $08, $02, $0A, $02, $0C, $82, $08, $01, $1C, $03, $1D  ; CPU:$B360 PRG:B360  02 0F 04 08 02 08 02 0A 02 0C 82 08 01 1C 03 1D
-    .byte $04, $1D, $08, $1D, $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B  ; CPU:$B370 PRG:B370  04 1D 08 1D 02 00 02 1B 02 1D 02 1E 04 1D 04 1B
-    .byte $06, $19, $0A, $14, $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B  ; CPU:$B380 PRG:B380  06 19 0A 14 02 00 02 1B 02 1D 02 1E 04 1D 04 1B
-    .byte $06, $1D, $0A, $20, $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B  ; CPU:$B390 PRG:B390  06 1D 0A 20 02 00 02 1B 02 1D 02 1E 04 1D 04 1B
-    .byte $10, $19, $10, $00, $01, $1F, $03, $20, $04, $20, $08, $20, $02, $00, $02, $22  ; CPU:$B3A0 PRG:B3A0  10 19 10 00 01 1F 03 20 04 20 08 20 02 00 02 22
-    .byte $02, $24, $02, $25, $04, $24, $04, $22, $02, $1F, $04, $20, $0A, $1D, $02, $00  ; CPU:$B3B0 PRG:B3B0  02 24 02 25 04 24 04 22 02 1F 04 20 0A 1D 02 00
-    .byte $02, $22, $02, $24, $02, $25, $04, $24, $04, $22, $02, $1F, $04, $20, $0A, $19  ; CPU:$B3C0 PRG:B3C0  02 22 02 24 02 25 04 24 04 22 02 1F 04 20 0A 19
-    .byte $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B, $10, $19, $10, $00  ; CPU:$B3D0 PRG:B3D0  02 00 02 1B 02 1D 02 1E 04 1D 04 1B 10 19 10 00
-    .byte $04, $00, $03, $1D, $01, $1E, $02, $20, $06, $25, $02, $00, $02, $1E, $02, $20  ; CPU:$B3E0 PRG:B3E0  04 00 03 1D 01 1E 02 20 06 25 02 00 02 1E 02 20
-    .byte $02, $22, $04, $20, $04, $1E, $06, $20, $0A, $19, $02, $00, $02, $1E, $02, $20  ; CPU:$B3F0 PRG:B3F0  02 22 04 20 04 1E 06 20 0A 19 02 00 02 1E 02 20
-    .byte $02, $22, $04, $20, $04, $1E, $03, $1D, $01, $1E, $02, $20, $0A, $25, $02, $00  ; CPU:$B400 PRG:B400  02 22 04 20 04 1E 03 1D 01 1E 02 20 0A 25 02 00
-    .byte $02, $22, $02, $24, $02, $25, $02, $28, $04, $27, $12, $25, $10, $00, $04, $00  ; CPU:$B410 PRG:B410  02 22 02 24 02 25 02 28 04 27 12 25 10 00 04 00
-    .byte $03, $1D, $01, $1E, $02, $20, $06, $25, $04, $00, $02, $1E, $02, $1D, $02, $1E  ; CPU:$B420 PRG:B420  03 1D 01 1E 02 20 06 25 04 00 02 1E 02 1D 02 1E
-    .byte $02, $1D, $02, $1E, $02, $22, $06, $20, $0A, $1D, $02, $00, $02, $1B, $02, $1D  ; CPU:$B430 PRG:B430  02 1D 02 1E 02 22 06 20 0A 1D 02 00 02 1B 02 1D
-    .byte $02, $1E, $02, $22, $02, $21, $02, $22, $02, $21, $06, $20, $06, $25, $04, $19  ; CPU:$B440 PRG:B440  02 1E 02 22 02 21 02 22 02 21 06 20 06 25 04 19
-    .byte $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B, $10, $19, $10, $00  ; CPU:$B450 PRG:B450  02 00 02 1B 02 1D 02 1E 04 1D 04 1B 10 19 10 00
-    .byte $04, $00, $03, $1D, $01, $1E, $02, $20, $06, $25, $02, $00, $02, $27, $02, $29  ; CPU:$B460 PRG:B460  04 00 03 1D 01 1E 02 20 06 25 02 00 02 27 02 29
-    .byte $02, $2A, $04, $28, $04, $27, $06, $25, $0A, $20, $02, $00, $02, $27, $02, $29  ; CPU:$B470 PRG:B470  02 2A 04 28 04 27 06 25 0A 20 02 00 02 27 02 29
-    .byte $02, $2A, $04, $28, $04, $27, $06, $25, $0A, $20, $02, $00, $02, $1B, $02, $1D  ; CPU:$B480 PRG:B480  02 2A 04 28 04 27 06 25 0A 20 02 00 02 1B 02 1D
-    .byte $02, $1E, $04, $1D, $04, $1B, $10, $19, $10, $00, $04, $1D, $04, $1D, $08, $1D  ; CPU:$B490 PRG:B490  02 1E 04 1D 04 1B 10 19 10 00 04 1D 04 1D 08 1D
-    .byte $02, $00, $02, $1B, $02, $1D, $02, $1E, $04, $1D, $04, $1B, $06, $19, $0A, $14  ; CPU:$B4A0 PRG:B4A0  02 00 02 1B 02 1D 02 1E 04 1D 04 1B 06 19 0A 14
-    .byte $02, $00, $02, $1B, $02, $1D, $02, $1E, $02, $1D, $02, $1C, $02, $1D, $02, $1C  ; CPU:$B4B0 PRG:B4B0  02 00 02 1B 02 1D 02 1E 02 1D 02 1C 02 1D 02 1C
-    .byte $02, $1D, $02, $1C, $02, $1D, $02, $1C, $02, $1D, $06, $25, $02, $00, $02, $22  ; CPU:$B4C0 PRG:B4C0  02 1D 02 1C 02 1D 02 1C 02 1D 06 25 02 00 02 22
-    .byte $02, $24, $02, $25, $04, $29, $04, $27, $10, $25, $10, $00, $01, $1F, $03, $20  ; CPU:$B4D0 PRG:B4D0  02 24 02 25 04 29 04 27 10 25 10 00 01 1F 03 20
-    .byte $04, $20, $08, $20, $02, $00, $02, $22, $02, $24, $02, $25, $04, $24, $04, $22  ; CPU:$B4E0 PRG:B4E0  04 20 08 20 02 00 02 22 02 24 02 25 04 24 04 22
-    .byte $02, $1F, $04, $20, $0A, $1D, $02, $00, $02, $22, $02, $24, $02, $25, $04, $24  ; CPU:$B4F0 PRG:B4F0  02 1F 04 20 0A 1D 02 00 02 22 02 24 02 25 04 24
-    .byte $04, $22, $02, $1F, $04, $20, $0A, $19, $02, $00, $02, $1B, $02, $1D, $02, $1E  ; CPU:$B500 PRG:B500  04 22 02 1F 04 20 0A 19 02 00 02 1B 02 1D 02 1E
-    .byte $04, $1D, $04, $1B, $10, $19, $10, $00, $8A, $8B, $2E, $00, $8C, $2E, $00, $89  ; CPU:$B510 PRG:B510  04 1D 04 1B 10 19 10 00 8A 8B 2E 00 8C 2E 00 89
-    .byte $82, $04, $87, $18, $87, $F0, $8E, $09, $8F, $0C, $40, $00, $01, $13, $03, $14  ; CPU:$B520 PRG:B520  82 04 87 18 87 F0 8E 09 8F 0C 40 00 01 13 03 14
-    .byte $04, $14, $08, $14, $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12  ; CPU:$B530 PRG:B530  04 14 08 14 02 00 02 12 02 14 02 16 04 14 04 12
-    .byte $06, $14, $0A, $11, $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12  ; CPU:$B540 PRG:B540  06 14 0A 11 02 00 02 12 02 14 02 16 04 14 04 12
-    .byte $06, $14, $0A, $1D, $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12  ; CPU:$B550 PRG:B550  06 14 0A 1D 02 00 02 12 02 14 02 16 04 14 04 12
-    .byte $10, $11, $10, $00, $01, $1C, $03, $1D, $04, $1D, $08, $1D, $02, $00, $02, $1E  ; CPU:$B560 PRG:B560  10 11 10 00 01 1C 03 1D 04 1D 08 1D 02 00 02 1E
-    .byte $02, $20, $02, $22, $04, $20, $04, $1E, $02, $1C, $04, $1D, $0A, $19, $02, $00  ; CPU:$B570 PRG:B570  02 20 02 22 04 20 04 1E 02 1C 04 1D 0A 19 02 00
-    .byte $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $06, $1D, $0A, $22, $02, $00  ; CPU:$B580 PRG:B580  02 1E 02 20 02 22 04 20 04 1E 06 1D 0A 22 02 00
-    .byte $02, $12, $02, $14, $02, $16, $04, $14, $04, $12, $10, $11, $10, $00, $04, $00  ; CPU:$B590 PRG:B590  02 12 02 14 02 16 04 14 04 12 10 11 10 00 04 00
-    .byte $03, $19, $01, $1B, $02, $1D, $06, $22, $02, $00, $02, $16, $02, $18, $02, $19  ; CPU:$B5A0 PRG:B5A0  03 19 01 1B 02 1D 06 22 02 00 02 16 02 18 02 19
-    .byte $04, $18, $04, $16, $06, $14, $0A, $11, $02, $00, $02, $16, $02, $18, $02, $19  ; CPU:$B5B0 PRG:B5B0  04 18 04 16 06 14 0A 11 02 00 02 16 02 18 02 19
-    .byte $04, $18, $04, $16, $03, $14, $01, $16, $02, $18, $06, $16, $04, $19, $02, $00  ; CPU:$B5C0 PRG:B5C0  04 18 04 16 03 14 01 16 02 18 06 16 04 19 02 00
-    .byte $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E, $10, $1D, $10, $00, $04, $00  ; CPU:$B5D0 PRG:B5D0  02 1E 02 20 02 22 04 20 04 1E 10 1D 10 00 04 00
-    .byte $03, $19, $01, $1B, $02, $1D, $06, $22, $04, $00, $02, $16, $02, $15, $02, $16  ; CPU:$B5E0 PRG:B5E0  03 19 01 1B 02 1D 06 22 04 00 02 16 02 15 02 16
-    .byte $02, $15, $02, $16, $02, $19, $06, $1D, $0A, $19, $02, $00, $02, $12, $02, $14  ; CPU:$B5F0 PRG:B5F0  02 15 02 16 02 19 06 1D 0A 19 02 00 02 12 02 14
-    .byte $02, $16, $02, $19, $02, $18, $02, $19, $02, $18, $06, $1D, $06, $22, $04, $11  ; CPU:$B600 PRG:B600  02 16 02 19 02 18 02 19 02 18 06 1D 06 22 04 11
-    .byte $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12, $10, $11, $10, $00  ; CPU:$B610 PRG:B610  02 00 02 12 02 14 02 16 04 14 04 12 10 11 10 00
-    .byte $04, $00, $03, $19, $01, $1B, $02, $1D, $06, $22, $02, $00, $02, $1E, $02, $20  ; CPU:$B620 PRG:B620  04 00 03 19 01 1B 02 1D 06 22 02 00 02 1E 02 20
-    .byte $02, $22, $04, $23, $04, $22, $06, $20, $0A, $1D, $02, $00, $02, $1E, $02, $20  ; CPU:$B630 PRG:B630  02 22 04 23 04 22 06 20 0A 1D 02 00 02 1E 02 20
-    .byte $02, $22, $04, $23, $04, $22, $06, $20, $0A, $1D, $02, $00, $02, $12, $02, $14  ; CPU:$B640 PRG:B640  02 22 04 23 04 22 06 20 0A 1D 02 00 02 12 02 14
-    .byte $02, $16, $04, $14, $04, $12, $10, $11, $10, $00, $04, $14, $04, $14, $08, $14  ; CPU:$B650 PRG:B650  02 16 04 14 04 12 10 11 10 00 04 14 04 14 08 14
-    .byte $02, $00, $02, $12, $02, $14, $02, $16, $04, $14, $04, $12, $06, $14, $0A, $11  ; CPU:$B660 PRG:B660  02 00 02 12 02 14 02 16 04 14 04 12 06 14 0A 11
-    .byte $02, $00, $02, $12, $02, $14, $02, $16, $02, $14, $02, $13, $02, $14, $02, $13  ; CPU:$B670 PRG:B670  02 00 02 12 02 14 02 16 02 14 02 13 02 14 02 13
-    .byte $02, $14, $02, $13, $02, $14, $02, $13, $02, $14, $06, $1D, $02, $00, $02, $1E  ; CPU:$B680 PRG:B680  02 14 02 13 02 14 02 13 02 14 06 1D 02 00 02 1E
-    .byte $02, $20, $02, $22, $04, $20, $04, $1E, $10, $1D, $10, $00, $01, $1C, $03, $1D  ; CPU:$B690 PRG:B690  02 20 02 22 04 20 04 1E 10 1D 10 00 01 1C 03 1D
-    .byte $04, $1D, $08, $1D, $02, $00, $02, $1E, $02, $20, $02, $22, $04, $20, $04, $1E  ; CPU:$B6A0 PRG:B6A0  04 1D 08 1D 02 00 02 1E 02 20 02 22 04 20 04 1E
-    .byte $02, $1C, $04, $1D, $0A, $19, $02, $00, $02, $1E, $02, $20, $02, $22, $04, $20  ; CPU:$B6B0 PRG:B6B0  02 1C 04 1D 0A 19 02 00 02 1E 02 20 02 22 04 20
-    .byte $04, $1E, $06, $1D, $0A, $22, $02, $00, $02, $12, $02, $14, $02, $16, $04, $15  ; CPU:$B6C0 PRG:B6C0  04 1E 06 1D 0A 22 02 00 02 12 02 14 02 16 04 15
-    .byte $04, $12, $10, $11, $10, $00, $8A, $8B, $0C, $00, $8C, $0C, $00, $89, $82, $20  ; CPU:$B6D0 PRG:B6D0  04 12 10 11 10 00 8A 8B 0C 00 8C 0C 00 89 82 20
-    .byte $84, $18, $87, $F0, $8E, $09, $8D, $06, $8F, $0D, $08, $19, $08, $16, $06, $1B  ; CPU:$B6E0 PRG:B6E0  84 18 87 F0 8E 09 8D 06 8F 0D 08 19 08 16 06 1B
-    .byte $04, $14, $02, $14, $02, $16, $02, $18, $04, $19, $04, $19, $04, $16, $04, $16  ; CPU:$B6F0 PRG:B6F0  04 14 02 14 02 16 02 18 04 19 04 19 04 16 04 16
-    .byte $04, $1B, $02, $1B, $04, $14, $02, $14, $02, $16, $02, $18, $04, $19, $04, $19  ; CPU:$B700 PRG:B700  04 1B 02 1B 04 14 02 14 02 16 02 18 04 19 04 19
-    .byte $04, $16, $04, $16, $04, $1B, $02, $1B, $04, $14, $02, $14, $02, $16, $02, $18  ; CPU:$B710 PRG:B710  04 16 04 16 04 1B 02 1B 04 14 02 14 02 16 02 18
-    .byte $04, $19, $04, $19, $04, $16, $04, $16, $06, $1B, $04, $14, $02, $14, $02, $16  ; CPU:$B720 PRG:B720  04 19 04 19 04 16 04 16 06 1B 04 14 02 14 02 16
-    .byte $02, $18, $04, $19, $04, $19, $04, $16, $02, $16, $04, $1B, $04, $1B, $02, $1B  ; CPU:$B730 PRG:B730  02 18 04 19 04 19 04 16 02 16 04 1B 04 1B 02 1B
-    .byte $02, $14, $02, $14, $02, $16, $02, $18, $04, $19, $04, $19, $04, $16, $04, $16  ; CPU:$B740 PRG:B740  02 14 02 14 02 16 02 18 04 19 04 19 04 16 04 16
-    .byte $03, $1B, $01, $1A, $02, $1B, $04, $14, $02, $14, $02, $16, $02, $18, $8A, $8B  ; CPU:$B750 PRG:B750  03 1B 01 1A 02 1B 04 14 02 14 02 16 02 18 8A 8B
-    .byte $2E, $00, $8C, $2E, $00, $89, $8F, $01, $8E, $45, $20, $3E, $8F, $09, $8E, $04  ; CPU:$B760 PRG:B760  2E 00 8C 2E 00 89 8F 01 8E 45 20 3E 8F 09 8E 04
-    .byte $04, $42, $04, $42, $04, $42, $04, $42, $04, $3E, $03, $42, $01, $40, $03, $3E  ; CPU:$B770 PRG:B770  04 42 04 42 04 42 04 42 04 3E 03 42 01 40 03 3E
-    .byte $01, $41, $02, $44, $02, $42, $04, $3D, $01, $41, $03, $42, $04, $3D, $01, $41  ; CPU:$B780 PRG:B780  01 41 02 44 02 42 04 3D 01 41 03 42 04 3D 01 41
-    .byte $03, $43, $03, $3D, $01, $41, $02, $44, $02, $42, $02, $3D, $01, $41, $01, $41  ; CPU:$B790 PRG:B790  03 43 03 3D 01 41 02 44 02 42 02 3D 01 41 01 41
-    .byte $02, $44, $02, $42, $8A, $8B, $20, $00, $8C, $20, $00, $89, $B6, $B7, $47, $B8  ; CPU:$B7A0 PRG:B7A0  02 44 02 42 8A 8B 20 00 8C 20 00 89 B6 B7 47 B8
-    .byte $D4, $B8, $3F, $B9, $02, $0F, $84, $14, $87, $B4, $8F, $0D, $8D, $06, $82, $CD  ; CPU:$B7B0 PRG:B7B0  D4 B8 3F B9 02 0F 84 14 87 B4 8F 0D 8D 06 82 CD
-    .byte $8E, $0C, $03, $1D, $01, $1C, $02, $1D, $06, $20, $04, $25, $0C, $25, $03, $24  ; CPU:$B7C0 PRG:B7C0  8E 0C 03 1D 01 1C 02 1D 06 20 04 25 0C 25 03 24
-    .byte $01, $25, $03, $27, $01, $25, $02, $24, $06, $25, $04, $22, $0C, $1E, $03, $1D  ; CPU:$B7D0 PRG:B7D0  01 25 03 27 01 25 02 24 06 25 04 22 0C 1E 03 1D
-    .byte $01, $1C, $03, $1D, $01, $1C, $02, $1D, $06, $25, $04, $1D, $03, $1B, $01, $1A  ; CPU:$B7E0 PRG:B7E0  01 1C 03 1D 01 1C 02 1D 06 25 04 1D 03 1B 01 1A
-    .byte $02, $1B, $06, $22, $04, $19, $03, $18, $01, $17, $02, $18, $0A, $20, $03, $1E  ; CPU:$B7F0 PRG:B7F0  02 1B 06 22 04 19 03 18 01 17 02 18 0A 20 03 1E
-    .byte $01, $1D, $02, $1E, $06, $1D, $04, $1B, $03, $1D, $01, $1C, $02, $1D, $06, $20  ; CPU:$B800 PRG:B800  01 1D 02 1E 06 1D 04 1B 03 1D 01 1C 02 1D 06 20
-    .byte $04, $25, $0C, $25, $03, $24, $01, $25, $03, $27, $01, $25, $02, $24, $06, $25  ; CPU:$B810 PRG:B810  04 25 0C 25 03 24 01 25 03 27 01 25 02 24 06 25
-    .byte $04, $22, $0C, $1E, $03, $1D, $01, $1C, $03, $1D, $01, $1C, $02, $1D, $06, $25  ; CPU:$B820 PRG:B820  04 22 0C 1E 03 1D 01 1C 03 1D 01 1C 02 1D 06 25
-    .byte $04, $1D, $03, $1B, $01, $1D, $02, $1E, $06, $1D, $04, $1B, $10, $19, $02, $21  ; CPU:$B830 PRG:B830  04 1D 03 1B 01 1D 02 1E 06 1D 04 1B 10 19 02 21
-    .byte $04, $20, $02, $21, $08, $20, $88, $82, $BB, $84, $14, $87, $B4, $8F, $0D, $8E  ; CPU:$B840 PRG:B840  04 20 02 21 08 20 88 82 BB 84 14 87 B4 8F 0D 8E
-    .byte $00, $04, $00, $02, $1D, $02, $1C, $04, $1D, $04, $25, $0C, $23, $02, $20, $02  ; CPU:$B850 PRG:B850  00 04 00 02 1D 02 1C 04 1D 04 25 0C 23 02 20 02
-    .byte $1E, $04, $22, $04, $20, $04, $1E, $04, $19, $0C, $21, $04, $00, $04, $00, $03  ; CPU:$B860 PRG:B860  1E 04 22 04 20 04 1E 04 19 0C 21 04 00 04 00 03
-    .byte $1D, $01, $1C, $02, $1D, $06, $25, $04, $00, $03, $1F, $01, $20, $04, $22, $04  ; CPU:$B870 PRG:B870  1D 01 1C 02 1D 06 25 04 00 03 1F 01 20 04 22 04
-    .byte $25, $04, $20, $02, $1F, $02, $20, $04, $22, $04, $25, $03, $24, $01, $22, $02  ; CPU:$B880 PRG:B880  25 04 20 02 1F 02 20 04 22 04 25 03 24 01 22 02
-    .byte $24, $06, $22, $04, $20, $04, $00, $02, $1D, $02, $1C, $04, $1D, $04, $25, $0C  ; CPU:$B890 PRG:B890  24 06 22 04 20 04 00 02 1D 02 1C 04 1D 04 25 0C
-    .byte $23, $02, $20, $02, $1E, $04, $22, $04, $20, $04, $1E, $04, $19, $0C, $21, $04  ; CPU:$B8A0 PRG:B8A0  23 02 20 02 1E 04 22 04 20 04 1E 04 19 0C 21 04
-    .byte $00, $04, $00, $03, $1D, $01, $1C, $02, $1D, $06, $25, $04, $22, $02, $12, $02  ; CPU:$B8B0 PRG:B8B0  00 04 00 03 1D 01 1C 02 1D 06 25 04 22 02 12 02
-    .byte $14, $02, $16, $02, $18, $02, $19, $02, $1B, $10, $1D, $02, $1E, $04, $20, $02  ; CPU:$B8C0 PRG:B8C0  14 02 16 02 18 02 19 02 1B 10 1D 02 1E 04 20 02
-    .byte $1E, $08, $20, $88, $8F, $0C, $8E, $00, $82, $5A, $06, $25, $06, $1D, $04, $20  ; CPU:$B8D0 PRG:B8D0  1E 08 20 88 8F 0C 8E 00 82 5A 06 25 06 1D 04 20
-    .byte $06, $25, $06, $1D, $04, $20, $06, $1E, $06, $16, $04, $19, $06, $1E, $06, $21  ; CPU:$B8E0 PRG:B8E0  06 25 06 1D 04 20 06 1E 06 16 04 19 06 1E 06 21
-    .byte $04, $19, $06, $1D, $06, $14, $04, $19, $06, $1B, $06, $1F, $04, $22, $06, $20  ; CPU:$B8F0 PRG:B8F0  04 19 06 1D 06 14 04 19 06 1B 06 1F 04 22 06 20
-    .byte $06, $18, $04, $1B, $04, $20, $04, $1E, $04, $1D, $04, $1B, $06, $25, $06, $1D  ; CPU:$B900 PRG:B900  06 18 04 1B 04 20 04 1E 04 1D 04 1B 06 25 06 1D
-    .byte $04, $20, $06, $25, $06, $1D, $04, $20, $06, $1E, $06, $16, $04, $19, $06, $1E  ; CPU:$B910 PRG:B910  04 20 06 25 06 1D 04 20 06 1E 06 16 04 19 06 1E
-    .byte $06, $21, $04, $19, $06, $1D, $06, $14, $04, $19, $06, $20, $06, $20, $04, $20  ; CPU:$B920 PRG:B920  06 21 04 19 06 1D 06 14 04 19 06 20 06 20 04 20
-    .byte $06, $19, $06, $14, $04, $19, $02, $21, $04, $20, $02, $21, $08, $20, $88, $8F  ; CPU:$B930 PRG:B930  06 19 06 14 04 19 02 21 04 20 02 21 08 20 88 8F
-    .byte $0D, $8E, $04, $04, $3E, $02, $44, $02, $42, $02, $3F, $02, $3F, $02, $44, $02  ; CPU:$B940 PRG:B940  0D 8E 04 04 3E 02 44 02 42 02 3F 02 3F 02 44 02
-    .byte $3F, $88, $5C, $B9, $AD, $B9, $F0, $B9, $33, $BA, $02, $0F, $82, $02, $84, $18  ; CPU:$B950 PRG:B950  3F 88 5C B9 AD B9 F0 B9 33 BA 02 0F 82 02 84 18
-    .byte $87, $78, $8F, $0D, $8E, $13, $8D, $05, $04, $1D, $04, $00, $04, $20, $04, $00  ; CPU:$B960 PRG:B960  87 78 8F 0D 8E 13 8D 05 04 1D 04 00 04 20 04 00
-    .byte $03, $1B, $01, $1A, $02, $1B, $06, $20, $04, $00, $04, $1D, $04, $00, $04, $20  ; CPU:$B970 PRG:B970  03 1B 01 1A 02 1B 06 20 04 00 04 1D 04 00 04 20
-    .byte $04, $00, $03, $22, $01, $21, $02, $22, $06, $1B, $04, $00, $04, $1D, $04, $00  ; CPU:$B980 PRG:B980  04 00 03 22 01 21 02 22 06 1B 04 00 04 1D 04 00
-    .byte $04, $20, $04, $00, $03, $1B, $01, $1A, $02, $1B, $06, $20, $04, $1D, $04, $19  ; CPU:$B990 PRG:B990  04 20 04 00 03 1B 01 1A 02 1B 06 20 04 1D 04 19
-    .byte $04, $00, $04, $17, $04, $00, $06, $15, $06, $14, $04, $00, $88, $82, $04, $8F  ; CPU:$B9A0 PRG:B9A0  04 00 04 17 04 00 06 15 06 14 04 00 88 82 04 8F
-    .byte $0D, $8E, $07, $04, $19, $04, $11, $04, $1D, $04, $0D, $04, $00, $02, $13, $06  ; CPU:$B9B0 PRG:B9B0  0D 8E 07 04 19 04 11 04 1D 04 0D 04 00 02 13 06
-    .byte $00, $04, $18, $04, $19, $04, $11, $04, $1D, $04, $0D, $04, $00, $04, $13, $04  ; CPU:$B9C0 PRG:B9C0  00 04 18 04 19 04 11 04 1D 04 0D 04 00 04 13 04
-    .byte $00, $04, $18, $04, $19, $04, $11, $04, $1D, $04, $0D, $04, $00, $02, $13, $06  ; CPU:$B9D0 PRG:B9D0  00 04 18 04 19 04 11 04 1D 04 0D 04 00 02 13 06
-    .byte $00, $04, $18, $04, $00, $04, $19, $08, $1B, $06, $19, $06, $18, $04, $00, $88  ; CPU:$B9E0 PRG:B9E0  00 04 18 04 00 04 19 08 1B 06 19 06 18 04 00 88
-    .byte $82, $24, $8F, $0C, $8E, $07, $04, $00, $04, $19, $04, $00, $04, $16, $04, $00  ; CPU:$B9F0 PRG:B9F0  82 24 8F 0C 8E 07 04 00 04 19 04 00 04 16 04 00
-    .byte $04, $1B, $04, $00, $04, $14, $04, $00, $04, $19, $04, $00, $04, $16, $04, $00  ; CPU:$BA00 PRG:BA00  04 1B 04 00 04 14 04 00 04 19 04 00 04 16 04 00
-    .byte $04, $1B, $04, $00, $04, $14, $04, $00, $04, $19, $04, $00, $04, $16, $04, $00  ; CPU:$BA10 PRG:BA10  04 1B 04 00 04 14 04 00 04 19 04 00 04 16 04 00
-    .byte $04, $1B, $04, $00, $04, $14, $04, $00, $04, $19, $08, $17, $06, $15, $06, $14  ; CPU:$BA20 PRG:BA20  04 1B 04 00 04 14 04 00 04 19 08 17 06 15 06 14
-    .byte $04, $00, $88, $8F, $0D, $8E, $03, $04, $40, $02, $44, $02, $41, $04, $40, $02  ; CPU:$BA30 PRG:BA30  04 00 88 8F 0D 8E 03 04 40 02 44 02 41 04 40 02
-    .byte $44, $02, $41, $02, $40, $02, $40, $02, $44, $04, $40, $02, $41, $02, $44, $02  ; CPU:$BA40 PRG:BA40  44 02 41 02 40 02 40 02 44 04 40 02 41 02 44 02
-    .byte $41, $04, $40, $02, $44, $02, $41, $02, $40, $02, $40, $02, $44, $02, $41, $04  ; CPU:$BA50 PRG:BA50  41 04 40 02 44 02 41 02 40 02 40 02 44 02 41 04
-    .byte $40, $02, $40, $04, $44, $02, $44, $02, $44, $02, $44, $04, $40, $02, $44, $02  ; CPU:$BA60 PRG:BA60  40 02 40 04 44 02 44 02 44 02 44 04 40 02 44 02
-    .byte $41, $04, $40, $02, $44, $02, $41, $04, $40, $02, $40, $04, $44, $02, $44, $02  ; CPU:$BA70 PRG:BA70  41 04 40 02 44 02 41 04 40 02 40 04 44 02 44 02
-    .byte $44, $02, $44, $02, $43, $01, $43, $01, $43, $02, $43, $04, $41, $02, $43, $02  ; CPU:$BA80 PRG:BA80  44 02 44 02 43 01 43 01 43 02 43 04 41 02 43 02
-    .byte $43, $02, $43, $02, $43, $01, $43, $01, $43, $02, $43, $04, $40, $01, $42, $01  ; CPU:$BA90 PRG:BA90  43 02 43 02 43 01 43 01 43 02 43 04 40 01 42 01
-    .byte $42, $02, $42, $02, $42, $88, $B0, $BA, $DB, $BA, $02, $BB, $27, $BB, $02, $0F  ; CPU:$BAA0 PRG:BAA0  42 02 42 02 42 88 B0 BA DB BA 02 BB 27 BB 02 0F
-    .byte $82, $49, $84, $18, $87, $F0, $8E, $07, $8D, $06, $8F, $0E, $01, $19, $02, $19  ; CPU:$BAB0 PRG:BAB0  82 49 84 18 87 F0 8E 07 8D 06 8F 0E 01 19 02 19
-    .byte $01, $19, $02, $18, $02, $18, $02, $16, $02, $16, $02, $18, $02, $18, $01, $19  ; CPU:$BAC0 PRG:BAC0  01 19 02 18 02 18 02 16 02 16 02 18 02 18 01 19
-    .byte $02, $19, $01, $19, $02, $1B, $02, $1B, $10, $1D, $89, $82, $49, $84, $18, $87  ; CPU:$BAD0 PRG:BAD0  02 19 01 19 02 1B 02 1B 10 1D 89 82 49 84 18 87
-    .byte $F0, $8E, $07, $01, $16, $02, $16, $01, $16, $02, $14, $02, $14, $02, $12, $02  ; CPU:$BAE0 PRG:BAE0  F0 8E 07 01 16 02 16 01 16 02 14 02 14 02 12 02
-    .byte $12, $02, $14, $02, $14, $01, $16, $02, $16, $01, $16, $02, $18, $02, $18, $10  ; CPU:$BAF0 PRG:BAF0  12 02 14 02 14 01 16 02 16 01 16 02 18 02 18 10
-    .byte $1A, $89, $82, $2A, $8E, $07, $01, $16, $02, $16, $01, $16, $02, $14, $02, $14  ; CPU:$BB00 PRG:BB00  1A 89 82 2A 8E 07 01 16 02 16 01 16 02 14 02 14
-    .byte $02, $12, $02, $12, $02, $14, $02, $14, $01, $12, $02, $12, $01, $12, $02, $14  ; CPU:$BB10 PRG:BB10  02 12 02 12 02 14 02 14 01 12 02 12 01 12 02 14
-    .byte $02, $14, $82, $78, $10, $16, $89, $8F, $0D, $8E, $03, $01, $43, $02, $43, $01  ; CPU:$BB20 PRG:BB20  02 14 82 78 10 16 89 8F 0D 8E 03 01 43 02 43 01
-    .byte $43, $02, $41, $02, $41, $01, $43, $02, $43, $01, $43, $02, $41, $02, $41, $01  ; CPU:$BB30 PRG:BB30  43 02 41 02 41 01 43 02 43 01 43 02 41 02 41 01
-    .byte $43, $02, $43, $01, $43, $02, $41, $02, $41, $10, $44, $89, $56, $BB, $1F, $BD  ; CPU:$BB40 PRG:BB40  43 02 43 01 43 02 41 02 41 10 44 89 56 BB 1F BD
-    .byte $EA, $BE, $47, $C0, $02, $0F, $82, $CD, $84, $18, $87, $F0, $8E, $0C, $8D, $06  ; CPU:$BB50 PRG:BB50  EA BE 47 C0 02 0F 82 CD 84 18 87 F0 8E 0C 8D 06
-    .byte $8F, $0F, $03, $22, $01, $20, $02, $1D, $06, $22, $04, $20, $0C, $20, $04, $00  ; CPU:$BB60 PRG:BB60  8F 0F 03 22 01 20 02 1D 06 22 04 20 0C 20 04 00
-    .byte $03, $22, $01, $20, $02, $1D, $04, $22, $02, $24, $02, $22, $06, $20, $02, $00  ; CPU:$BB70 PRG:BB70  03 22 01 20 02 1D 04 22 02 24 02 22 06 20 02 00
-    .byte $02, $1D, $02, $20, $02, $1D, $02, $1B, $02, $19, $06, $1C, $06, $1B, $08, $19  ; CPU:$BB80 PRG:BB80  02 1D 02 20 02 1D 02 1B 02 19 06 1C 06 1B 08 19
-    .byte $02, $00, $02, $19, $02, $1E, $02, $1C, $02, $1B, $02, $19, $03, $1D, $01, $1B  ; CPU:$BB90 PRG:BB90  02 00 02 19 02 1E 02 1C 02 1B 02 19 03 1D 01 1B
-    .byte $02, $1D, $06, $20, $04, $20, $0C, $20, $02, $1B, $02, $1D, $03, $1E, $01, $1C  ; CPU:$BBA0 PRG:BBA0  02 1D 06 20 04 20 0C 20 02 1B 02 1D 03 1E 01 1C
-    .byte $02, $19, $06, $16, $04, $19, $08, $20, $02, $20, $04, $1F, $0A, $1E, $02, $1C  ; CPU:$BBB0 PRG:BBB0  02 19 06 16 04 19 08 20 02 20 04 1F 0A 1E 02 1C
-    .byte $04, $1B, $22, $19, $82, $08, $8E, $00, $02, $23, $02, $23, $02, $23, $02, $23  ; CPU:$BBC0 PRG:BBC0  04 1B 22 19 82 08 8E 00 02 23 02 23 02 23 02 23
-    .byte $02, $23, $02, $23, $02, $23, $04, $22, $02, $22, $02, $22, $02, $22, $02, $22  ; CPU:$BBD0 PRG:BBD0  02 23 02 23 02 23 04 22 02 22 02 22 02 22 02 22
-    .byte $02, $22, $02, $22, $06, $25, $02, $00, $02, $20, $03, $22, $01, $20, $02, $22  ; CPU:$BBE0 PRG:BBE0  02 22 02 22 06 25 02 00 02 20 03 22 01 20 02 22
-    .byte $02, $20, $02, $22, $04, $25, $02, $20, $02, $22, $04, $25, $02, $20, $02, $23  ; CPU:$BBF0 PRG:BBF0  02 20 02 22 04 25 02 20 02 22 04 25 02 20 02 23
-    .byte $02, $23, $02, $23, $02, $23, $02, $23, $02, $23, $02, $23, $04, $22, $02, $22  ; CPU:$BC00 PRG:BC00  02 23 02 23 02 23 02 23 02 23 02 23 04 22 02 22
-    .byte $02, $22, $02, $22, $02, $22, $02, $22, $02, $22, $06, $25, $02, $00, $02, $20  ; CPU:$BC10 PRG:BC10  02 22 02 22 02 22 02 22 02 22 06 25 02 00 02 20
-    .byte $03, $22, $01, $20, $02, $22, $02, $20, $02, $22, $04, $25, $02, $20, $02, $22  ; CPU:$BC20 PRG:BC20  03 22 01 20 02 22 02 20 02 22 04 25 02 20 02 22
-    .byte $04, $25, $02, $20, $8A, $82, $CD, $8B, $E7, $00, $8C, $0C, $00, $8E, $11, $82  ; CPU:$BC30 PRG:BC30  04 25 02 20 8A 82 CD 8B E7 00 8C 0C 00 8E 11 82
-    .byte $CD, $06, $14, $02, $14, $03, $16, $01, $14, $02, $16, $02, $14, $03, $10, $01  ; CPU:$BC40 PRG:BC40  CD 06 14 02 14 03 16 01 14 02 16 02 14 03 10 01
-    .byte $11, $02, $16, $04, $19, $02, $1C, $02, $1B, $02, $19, $03, $1D, $01, $1C, $02  ; CPU:$BC50 PRG:BC50  11 02 16 04 19 02 1C 02 1B 02 19 03 1D 01 1C 02
-    .byte $1D, $06, $20, $04, $1D, $03, $1C, $01, $1B, $02, $1C, $06, $20, $04, $1C, $03  ; CPU:$BC60 PRG:BC60  1D 06 20 04 1D 03 1C 01 1B 02 1C 06 20 04 1C 03
-    .byte $1D, $01, $1C, $02, $1D, $06, $20, $04, $1D, $03, $1C, $01, $1B, $02, $1C, $06  ; CPU:$BC70 PRG:BC70  1D 01 1C 02 1D 06 20 04 1D 03 1C 01 1B 02 1C 06
-    .byte $20, $04, $20, $03, $1F, $01, $1E, $02, $1F, $06, $25, $04, $1F, $03, $20, $01  ; CPU:$BC80 PRG:BC80  20 04 20 03 1F 01 1E 02 1F 06 25 04 1F 03 20 01
-    .byte $1F, $02, $20, $04, $23, $01, $22, $01, $23, $02, $22, $02, $20, $03, $22, $01  ; CPU:$BC90 PRG:BC90  1F 02 20 04 23 01 22 01 23 02 22 02 20 03 22 01
-    .byte $21, $02, $22, $1A, $27, $8A, $8B, $56, $01, $8C, $05, $01, $8E, $0C, $08, $00  ; CPU:$BCA0 PRG:BCA0  21 02 22 1A 27 8A 8B 56 01 8C 05 01 8E 0C 08 00
-    .byte $02, $20, $04, $1F, $0A, $1E, $02, $1C, $04, $1B, $22, $19, $03, $22, $01, $20  ; CPU:$BCB0 PRG:BCB0  02 20 04 1F 0A 1E 02 1C 04 1B 22 19 03 22 01 20
-    .byte $02, $1D, $06, $22, $04, $20, $0C, $20, $04, $00, $03, $22, $01, $20, $02, $1D  ; CPU:$BCC0 PRG:BCC0  02 1D 06 22 04 20 0C 20 04 00 03 22 01 20 02 1D
-    .byte $04, $22, $02, $24, $02, $22, $06, $20, $02, $00, $02, $1D, $02, $20, $02, $1D  ; CPU:$BCD0 PRG:BCD0  04 22 02 24 02 22 06 20 02 00 02 1D 02 20 02 1D
-    .byte $02, $1B, $02, $19, $06, $1C, $06, $1B, $08, $19, $02, $00, $02, $19, $02, $1E  ; CPU:$BCE0 PRG:BCE0  02 1B 02 19 06 1C 06 1B 08 19 02 00 02 19 02 1E
-    .byte $02, $1C, $02, $1B, $02, $19, $03, $1D, $01, $1B, $02, $1D, $06, $20, $04, $20  ; CPU:$BCF0 PRG:BCF0  02 1C 02 1B 02 19 03 1D 01 1B 02 1D 06 20 04 20
-    .byte $0C, $20, $02, $1B, $02, $1D, $03, $1E, $01, $1C, $02, $19, $06, $16, $04, $19  ; CPU:$BD00 PRG:BD00  0C 20 02 1B 02 1D 03 1E 01 1C 02 19 06 16 04 19
-    .byte $08, $20, $02, $20, $04, $1F, $0A, $1E, $02, $1C, $04, $1B, $22, $19, $88, $82  ; CPU:$BD10 PRG:BD10  08 20 02 20 04 1F 0A 1E 02 1C 04 1B 22 19 88 82
-    .byte $B8, $84, $18, $87, $F0, $8F, $0A, $8E, $00, $04, $00, $04, $16, $04, $00, $04  ; CPU:$BD20 PRG:BD20  B8 84 18 87 F0 8F 0A 8E 00 04 00 04 16 04 00 04
-    .byte $16, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04  ; CPU:$BD30 PRG:BD30  16 04 00 04 16 04 00 04 16 04 00 04 16 04 00 04
-    .byte $16, $04, $00, $04, $17, $04, $00, $04, $17, $04, $00, $04, $1C, $04, $00, $04  ; CPU:$BD40 PRG:BD40  16 04 00 04 17 04 00 04 17 04 00 04 1C 04 00 04
-    .byte $1C, $04, $00, $04, $1C, $04, $00, $04, $1C, $04, $00, $04, $16, $04, $00, $04  ; CPU:$BD50 PRG:BD50  1C 04 00 04 1C 04 00 04 1C 04 00 04 16 04 00 04
-    .byte $16, $04, $00, $04, $18, $04, $00, $04, $18, $04, $00, $04, $1C, $04, $00, $04  ; CPU:$BD60 PRG:BD60  16 04 00 04 18 04 00 04 18 04 00 04 1C 04 00 04
-    .byte $1C, $02, $00, $02, $0F, $02, $14, $02, $18, $08, $1B, $02, $00, $02, $0D, $02  ; CPU:$BD70 PRG:BD70  1C 02 00 02 0F 02 14 02 18 08 1B 02 00 02 0D 02
-    .byte $12, $02, $16, $08, $19, $06, $00, $02, $0F, $02, $10, $06, $11, $10, $19, $82  ; CPU:$BD80 PRG:BD80  12 02 16 08 19 06 00 02 0F 02 10 06 11 10 19 82
-    .byte $08, $02, $20, $02, $20, $02, $20, $02, $20, $02, $20, $02, $20, $02, $20, $04  ; CPU:$BD90 PRG:BD90  08 02 20 02 20 02 20 02 20 02 20 02 20 02 20 04
-    .byte $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E, $06, $20, $02  ; CPU:$BDA0 PRG:BDA0  1E 02 1E 02 1E 02 1E 02 1E 02 1E 02 1E 06 20 02
-    .byte $00, $02, $20, $03, $22, $01, $20, $02, $22, $02, $20, $02, $22, $04, $25, $02  ; CPU:$BDB0 PRG:BDB0  00 02 20 03 22 01 20 02 22 02 20 02 22 04 25 02
-    .byte $20, $02, $22, $04, $25, $02, $20, $02, $20, $02, $20, $02, $20, $02, $20, $02  ; CPU:$BDC0 PRG:BDC0  20 02 22 04 25 02 20 02 20 02 20 02 20 02 20 02
-    .byte $20, $02, $20, $02, $20, $04, $1E, $02, $1E, $02, $1E, $02, $1E, $02, $1E, $02  ; CPU:$BDD0 PRG:BDD0  20 02 20 02 20 04 1E 02 1E 02 1E 02 1E 02 1E 02
-    .byte $1E, $02, $1E, $06, $20, $02, $00, $02, $20, $03, $22, $01, $20, $02, $22, $02  ; CPU:$BDE0 PRG:BDE0  1E 02 1E 06 20 02 00 02 20 03 22 01 20 02 22 02
-    .byte $20, $02, $22, $04, $25, $02, $20, $02, $22, $04, $25, $02, $20, $8A, $82, $B8  ; CPU:$BDF0 PRG:BDF0  20 02 22 04 25 02 20 02 22 04 25 02 20 8A 82 B8
-    .byte $8B, $E7, $00, $8C, $08, $00, $8E, $05, $82, $02, $04, $11, $04, $11, $04, $11  ; CPU:$BE00 PRG:BE00  8B E7 00 8C 08 00 8E 05 82 02 04 11 04 11 04 11
-    .byte $04, $11, $04, $10, $04, $10, $04, $10, $04, $10, $82, $B8, $04, $00, $04, $17  ; CPU:$BE10 PRG:BE10  04 11 04 10 04 10 04 10 04 10 82 B8 04 00 04 17
-    .byte $04, $00, $04, $17, $04, $00, $04, $12, $04, $00, $04, $12, $04, $00, $04, $17  ; CPU:$BE20 PRG:BE20  04 00 04 17 04 00 04 12 04 00 04 12 04 00 04 17
-    .byte $04, $00, $04, $17, $04, $00, $04, $12, $04, $00, $04, $12, $04, $00, $04, $19  ; CPU:$BE30 PRG:BE30  04 00 04 17 04 00 04 12 04 00 04 12 04 00 04 19
-    .byte $04, $00, $04, $19, $04, $00, $04, $17, $04, $00, $04, $17, $04, $00, $04, $1B  ; CPU:$BE40 PRG:BE40  04 00 04 19 04 00 04 17 04 00 04 17 04 00 04 1B
-    .byte $04, $00, $04, $1B, $04, $00, $04, $19, $04, $00, $04, $19, $8A, $8B, $44, $01  ; CPU:$BE50 PRG:BE50  04 00 04 1B 04 00 04 19 04 00 04 19 8A 8B 44 01
-    .byte $8C, $FD, $00, $8E, $00, $02, $00, $02, $0F, $02, $14, $02, $18, $08, $1B, $02  ; CPU:$BE60 PRG:BE60  8C FD 00 8E 00 02 00 02 0F 02 14 02 18 08 1B 02
-    .byte $00, $02, $0D, $02, $12, $02, $16, $08, $19, $06, $00, $02, $0F, $02, $10, $06  ; CPU:$BE70 PRG:BE70  00 02 0D 02 12 02 16 08 19 06 00 02 0F 02 10 06
-    .byte $11, $10, $19, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $16, $04  ; CPU:$BE80 PRG:BE80  11 10 19 04 00 04 16 04 00 04 16 04 00 04 16 04
-    .byte $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $17, $04  ; CPU:$BE90 PRG:BE90  00 04 16 04 00 04 16 04 00 04 16 04 00 04 17 04
-    .byte $00, $04, $17, $04, $00, $04, $1C, $04, $00, $04, $1C, $04, $00, $04, $1C, $04  ; CPU:$BEA0 PRG:BEA0  00 04 17 04 00 04 1C 04 00 04 1C 04 00 04 1C 04
-    .byte $00, $04, $1C, $04, $00, $04, $16, $04, $00, $04, $16, $04, $00, $04, $18, $04  ; CPU:$BEB0 PRG:BEB0  00 04 1C 04 00 04 16 04 00 04 16 04 00 04 18 04
-    .byte $00, $04, $18, $04, $00, $04, $1C, $04, $00, $04, $1C, $02, $00, $02, $0F, $02  ; CPU:$BEC0 PRG:BEC0  00 04 18 04 00 04 1C 04 00 04 1C 02 00 02 0F 02
-    .byte $14, $02, $18, $08, $1B, $02, $00, $02, $0D, $02, $12, $02, $16, $08, $19, $06  ; CPU:$BED0 PRG:BED0  14 02 18 08 1B 02 00 02 0D 02 12 02 16 08 19 06
-    .byte $00, $02, $0F, $02, $10, $06, $11, $10, $19, $88, $82, $43, $8F, $0A, $8E, $00  ; CPU:$BEE0 PRG:BEE0  00 02 0F 02 10 06 11 10 19 88 82 43 8F 0A 8E 00
-    .byte $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20  ; CPU:$BEF0 PRG:BEF0  04 19 04 20 04 19 04 20 04 19 04 20 04 19 04 20
-    .byte $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20  ; CPU:$BF00 PRG:BF00  04 19 04 20 04 19 04 20 04 19 04 20 04 19 04 20
-    .byte $04, $1E, $04, $25, $04, $1E, $04, $25, $04, $1E, $04, $25, $04, $1E, $04, $25  ; CPU:$BF10 PRG:BF10  04 1E 04 25 04 1E 04 25 04 1E 04 25 04 1E 04 25
-    .byte $04, $19, $04, $20, $04, $19, $04, $20, $04, $14, $04, $20, $04, $14, $04, $20  ; CPU:$BF20 PRG:BF20  04 19 04 20 04 19 04 20 04 14 04 20 04 14 04 20
-    .byte $04, $1E, $04, $25, $04, $1E, $04, $25, $10, $14, $10, $12, $02, $0D, $02, $14  ; CPU:$BF30 PRG:BF30  04 1E 04 25 04 1E 04 25 10 14 10 12 02 0D 02 14
-    .byte $1C, $19, $8E, $0C, $82, $0C, $02, $1D, $02, $1D, $02, $1D, $02, $1D, $02, $1D  ; CPU:$BF40 PRG:BF40  1C 19 8E 0C 82 0C 02 1D 02 1D 02 1D 02 1D 02 1D
-    .byte $02, $1D, $02, $1D, $04, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C  ; CPU:$BF50 PRG:BF50  02 1D 02 1D 04 1C 02 1C 02 1C 02 1C 02 1C 02 1C
-    .byte $02, $1C, $22, $1D, $02, $1D, $02, $1D, $02, $1D, $02, $1D, $02, $1D, $02, $1D  ; CPU:$BF60 PRG:BF60  02 1C 22 1D 02 1D 02 1D 02 1D 02 1D 02 1D 02 1D
-    .byte $02, $1D, $04, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C, $02, $1C  ; CPU:$BF70 PRG:BF70  02 1D 04 1C 02 1C 02 1C 02 1C 02 1C 02 1C 02 1C
-    .byte $22, $1D, $8A, $8E, $00, $82, $43, $8B, $A3, $00, $8C, $04, $00, $8E, $05, $04  ; CPU:$BF80 PRG:BF80  22 1D 8A 8E 00 82 43 8B A3 00 8C 04 00 8E 05 04
-    .byte $19, $04, $19, $04, $19, $04, $19, $04, $12, $04, $14, $04, $16, $04, $12, $82  ; CPU:$BF90 PRG:BF90  19 04 19 04 19 04 19 04 12 04 14 04 16 04 12 82
-    .byte $43, $04, $19, $04, $20, $04, $19, $04, $20, $04, $12, $04, $1C, $04, $12, $04  ; CPU:$BFA0 PRG:BFA0  43 04 19 04 20 04 19 04 20 04 12 04 1C 04 12 04
-    .byte $1C, $04, $19, $04, $20, $04, $19, $04, $20, $04, $12, $04, $1C, $04, $12, $04  ; CPU:$BFB0 PRG:BFB0  1C 04 19 04 20 04 19 04 20 04 12 04 1C 04 12 04
-    .byte $1C, $04, $1F, $04, $22, $04, $1F, $04, $22, $04, $19, $04, $20, $04, $19, $04  ; CPU:$BFC0 PRG:BFC0  1C 04 1F 04 22 04 1F 04 22 04 19 04 20 04 19 04
-    .byte $20, $04, $1B, $04, $22, $04, $1B, $04, $22, $04, $1B, $04, $22, $04, $1B, $04  ; CPU:$BFD0 PRG:BFD0  20 04 1B 04 22 04 1B 04 22 04 1B 04 22 04 1B 04
-    .byte $22, $8A, $8B, $FE, $00, $8C, $B7, $00, $8E, $00, $10, $14, $10, $12, $02, $0D  ; CPU:$BFE0 PRG:BFE0  22 8A 8B FE 00 8C B7 00 8E 00 10 14 10 12 02 0D
-    .byte $02, $14, $1C, $19, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20  ; CPU:$BFF0 PRG:BFF0  02 14 1C 19 04 19 04 20 04 19 04 20 04 19 04 20
-
-
-bank3_data:
-; ---- data $C000-$FEFF (16128 bytes) ----
-    .byte $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20, $04, $19, $04, $20  ; CPU:$C000 PRG:C000  04 19 04 20 04 19 04 20 04 19 04 20 04 19 04 20
-    .byte $04, $19, $04, $20, $04, $1E, $04, $25, $04, $1E, $04, $25, $04, $1E, $04, $25  ; CPU:$C010 PRG:C010  04 19 04 20 04 1E 04 25 04 1E 04 25 04 1E 04 25
-    .byte $04, $1E, $04, $25, $04, $19, $04, $20, $04, $19, $04, $20, $04, $14, $04, $20  ; CPU:$C020 PRG:C020  04 1E 04 25 04 19 04 20 04 19 04 20 04 14 04 20
-    .byte $04, $14, $04, $20, $04, $1E, $04, $25, $04, $1E, $04, $25, $10, $14, $10, $12  ; CPU:$C030 PRG:C030  04 14 04 20 04 1E 04 25 04 1E 04 25 10 14 10 12
-    .byte $02, $0D, $02, $14, $1C, $19, $88, $8E, $03, $8F, $0D, $04, $3F, $04, $44, $04  ; CPU:$C040 PRG:C040  02 0D 02 14 1C 19 88 8E 03 8F 0D 04 3F 04 44 04
-    .byte $3F, $03, $44, $01, $43, $88, $60, $C0, $CF, $C0, $64, $C1, $11, $C2, $02, $0F  ; CPU:$C050 PRG:C050  3F 03 44 01 43 88 60 C0 CF C0 64 C1 11 C2 02 0F
-    .byte $82, $89, $84, $14, $87, $78, $8E, $0C, $8F, $0C, $8D, $08, $02, $14, $01, $19  ; CPU:$C060 PRG:C060  82 89 84 14 87 78 8E 0C 8F 0C 8D 08 02 14 01 19
-    .byte $01, $19, $02, $19, $02, $1B, $04, $1D, $02, $1B, $02, $1D, $04, $1E, $02, $1D  ; CPU:$C070 PRG:C070  01 19 02 19 02 1B 04 1D 02 1B 02 1D 04 1E 02 1D
-    .byte $02, $1B, $02, $1B, $06, $1D, $02, $14, $01, $19, $01, $19, $02, $19, $02, $1B  ; CPU:$C080 PRG:C080  02 1B 02 1B 06 1D 02 14 01 19 01 19 02 19 02 1B
-    .byte $04, $1D, $02, $1B, $02, $1D, $04, $1E, $04, $1D, $08, $1B, $8E, $0F, $02, $14  ; CPU:$C090 PRG:C090  04 1D 02 1B 02 1D 04 1E 04 1D 08 1B 8E 0F 02 14
-    .byte $01, $19, $01, $19, $02, $19, $02, $1B, $04, $1D, $02, $1B, $02, $1D, $04, $1E  ; CPU:$C0A0 PRG:C0A0  01 19 01 19 02 19 02 1B 04 1D 02 1B 02 1D 04 1E
-    .byte $02, $1D, $02, $1B, $02, $1B, $06, $1D, $02, $14, $01, $19, $01, $19, $02, $19  ; CPU:$C0B0 PRG:C0B0  02 1D 02 1B 02 1B 06 1D 02 14 01 19 01 19 02 19
-    .byte $02, $1B, $04, $1D, $02, $1B, $02, $1D, $04, $1E, $04, $1D, $08, $1B, $88, $82  ; CPU:$C0C0 PRG:C0C0  02 1B 04 1D 02 1B 02 1D 04 1E 04 1D 08 1B 88 82
-    .byte $5A, $84, $0C, $87, $78, $8E, $00, $8F, $0A, $02, $1E, $01, $1D, $01, $1D, $02  ; CPU:$C0D0 PRG:C0D0  5A 84 0C 87 78 8E 00 8F 0A 02 1E 01 1D 01 1D 02
-    .byte $1D, $02, $1E, $04, $20, $02, $1E, $02, $1D, $04, $22, $02, $20, $02, $1E, $02  ; CPU:$C0E0 PRG:C0E0  1D 02 1E 04 20 02 1E 02 1D 04 22 02 20 02 1E 02
-    .byte $1E, $06, $20, $02, $1E, $01, $1D, $01, $1D, $02, $1D, $02, $1E, $04, $20, $02  ; CPU:$C0F0 PRG:C0F0  1E 06 20 02 1E 01 1D 01 1D 02 1D 02 1E 04 20 02
-    .byte $1E, $02, $1D, $01, $2A, $01, $25, $01, $22, $01, $1E, $01, $1D, $01, $20, $01  ; CPU:$C100 PRG:C100  1E 02 1D 01 2A 01 25 01 22 01 1E 01 1D 01 20 01
-    .byte $25, $01, $29, $01, $27, $01, $25, $01, $24, $01, $22, $04, $20, $8E, $03, $02  ; CPU:$C110 PRG:C110  25 01 29 01 27 01 25 01 24 01 22 04 20 8E 03 02
-    .byte $1E, $01, $1D, $01, $1D, $02, $1D, $02, $1E, $04, $20, $02, $1E, $02, $1D, $04  ; CPU:$C120 PRG:C120  1E 01 1D 01 1D 02 1D 02 1E 04 20 02 1E 02 1D 04
-    .byte $22, $02, $20, $02, $1E, $02, $1E, $06, $20, $02, $1E, $01, $1D, $01, $1D, $02  ; CPU:$C130 PRG:C130  22 02 20 02 1E 02 1E 06 20 02 1E 01 1D 01 1D 02
-    .byte $1D, $02, $1E, $04, $20, $02, $1E, $02, $1D, $01, $2A, $01, $25, $01, $22, $01  ; CPU:$C140 PRG:C140  1D 02 1E 04 20 02 1E 02 1D 01 2A 01 25 01 22 01
-    .byte $1E, $01, $1D, $01, $20, $01, $25, $01, $29, $01, $27, $01, $25, $01, $24, $01  ; CPU:$C150 PRG:C150  1E 01 1D 01 20 01 25 01 29 01 27 01 25 01 24 01
-    .byte $22, $04, $20, $88, $82, $4B, $8E, $00, $8F, $0A, $01, $19, $01, $00, $01, $19  ; CPU:$C160 PRG:C160  22 04 20 88 82 4B 8E 00 8F 0A 01 19 01 00 01 19
-    .byte $01, $19, $02, $19, $02, $14, $04, $19, $02, $14, $01, $19, $01, $00, $82, $14  ; CPU:$C170 PRG:C170  01 19 02 19 02 14 04 19 02 14 01 19 01 00 82 14
-    .byte $02, $19, $02, $00, $02, $19, $01, $14, $01, $00, $02, $14, $02, $19, $01, $20  ; CPU:$C180 PRG:C180  02 19 02 00 02 19 01 14 01 00 02 14 02 19 01 20
-    .byte $01, $20, $01, $20, $01, $20, $82, $4B, $01, $19, $01, $00, $01, $19, $01, $19  ; CPU:$C190 PRG:C190  01 20 01 20 01 20 82 4B 01 19 01 00 01 19 01 19
-    .byte $02, $19, $02, $14, $04, $19, $02, $14, $02, $19, $02, $12, $02, $00, $02, $12  ; CPU:$C1A0 PRG:C1A0  02 19 02 14 04 19 02 14 02 19 02 12 02 00 02 12
-    .byte $02, $00, $04, $14, $01, $20, $01, $1E, $01, $1D, $01, $1B, $8E, $03, $01, $19  ; CPU:$C1B0 PRG:C1B0  02 00 04 14 01 20 01 1E 01 1D 01 1B 8E 03 01 19
-    .byte $01, $00, $01, $19, $01, $19, $02, $19, $02, $14, $04, $19, $02, $14, $01, $19  ; CPU:$C1C0 PRG:C1C0  01 00 01 19 01 19 02 19 02 14 04 19 02 14 01 19
-    .byte $01, $00, $82, $14, $02, $19, $02, $00, $02, $19, $01, $14, $01, $00, $02, $14  ; CPU:$C1D0 PRG:C1D0  01 00 82 14 02 19 02 00 02 19 01 14 01 00 02 14
-    .byte $02, $19, $01, $20, $01, $20, $01, $20, $01, $20, $82, $4B, $01, $19, $01, $00  ; CPU:$C1E0 PRG:C1E0  02 19 01 20 01 20 01 20 01 20 82 4B 01 19 01 00
-    .byte $01, $19, $01, $19, $02, $19, $02, $14, $04, $19, $02, $14, $02, $19, $02, $12  ; CPU:$C1F0 PRG:C1F0  01 19 01 19 02 19 02 14 04 19 02 14 02 19 02 12
-    .byte $02, $00, $02, $12, $02, $00, $04, $14, $01, $20, $01, $1E, $01, $1D, $01, $1B  ; CPU:$C200 PRG:C200  02 00 02 12 02 00 04 14 01 20 01 1E 01 1D 01 1B
-    .byte $88, $8E, $05, $8F, $09, $02, $3E, $01, $44, $01, $44, $02, $44, $02, $44, $02  ; CPU:$C210 PRG:C210  88 8E 05 8F 09 02 3E 01 44 01 44 02 44 02 44 02
-    .byte $3E, $02, $44, $02, $3E, $02, $44, $88, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C220 PRG:C220  3E 02 44 02 3E 02 44 88 FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C230 PRG:C230  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C240 PRG:C240  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C250 PRG:C250  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C260 PRG:C260  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C270 PRG:C270  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C280 PRG:C280  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C290 PRG:C290  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C2A0 PRG:C2A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C2B0 PRG:C2B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C2C0 PRG:C2C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C2D0 PRG:C2D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C2E0 PRG:C2E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C2F0 PRG:C2F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C300 PRG:C300  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C310 PRG:C310  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C320 PRG:C320  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C330 PRG:C330  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C340 PRG:C340  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C350 PRG:C350  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C360 PRG:C360  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C370 PRG:C370  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C380 PRG:C380  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C390 PRG:C390  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C3A0 PRG:C3A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C3B0 PRG:C3B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C3C0 PRG:C3C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C3D0 PRG:C3D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C3E0 PRG:C3E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C3F0 PRG:C3F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C400 PRG:C400  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C410 PRG:C410  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C420 PRG:C420  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C430 PRG:C430  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C440 PRG:C440  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C450 PRG:C450  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C460 PRG:C460  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C470 PRG:C470  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C480 PRG:C480  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C490 PRG:C490  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C4A0 PRG:C4A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C4B0 PRG:C4B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C4C0 PRG:C4C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C4D0 PRG:C4D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C4E0 PRG:C4E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C4F0 PRG:C4F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C500 PRG:C500  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C510 PRG:C510  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C520 PRG:C520  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C530 PRG:C530  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C540 PRG:C540  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C550 PRG:C550  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C560 PRG:C560  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C570 PRG:C570  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C580 PRG:C580  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C590 PRG:C590  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C5A0 PRG:C5A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C5B0 PRG:C5B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C5C0 PRG:C5C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C5D0 PRG:C5D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C5E0 PRG:C5E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C5F0 PRG:C5F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C600 PRG:C600  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C610 PRG:C610  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C620 PRG:C620  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C630 PRG:C630  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C640 PRG:C640  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C650 PRG:C650  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C660 PRG:C660  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C670 PRG:C670  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C680 PRG:C680  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C690 PRG:C690  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C6A0 PRG:C6A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C6B0 PRG:C6B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C6C0 PRG:C6C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C6D0 PRG:C6D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C6E0 PRG:C6E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C6F0 PRG:C6F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C700 PRG:C700  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C710 PRG:C710  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C720 PRG:C720  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C730 PRG:C730  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C740 PRG:C740  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C750 PRG:C750  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C760 PRG:C760  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C770 PRG:C770  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C780 PRG:C780  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C790 PRG:C790  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C7A0 PRG:C7A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C7B0 PRG:C7B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C7C0 PRG:C7C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C7D0 PRG:C7D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C7E0 PRG:C7E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C7F0 PRG:C7F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C800 PRG:C800  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C810 PRG:C810  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C820 PRG:C820  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C830 PRG:C830  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C840 PRG:C840  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C850 PRG:C850  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C860 PRG:C860  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C870 PRG:C870  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C880 PRG:C880  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C890 PRG:C890  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C8A0 PRG:C8A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C8B0 PRG:C8B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C8C0 PRG:C8C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C8D0 PRG:C8D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C8E0 PRG:C8E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C8F0 PRG:C8F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C900 PRG:C900  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C910 PRG:C910  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C920 PRG:C920  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C930 PRG:C930  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C940 PRG:C940  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C950 PRG:C950  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C960 PRG:C960  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C970 PRG:C970  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C980 PRG:C980  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C990 PRG:C990  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C9A0 PRG:C9A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C9B0 PRG:C9B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C9C0 PRG:C9C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C9D0 PRG:C9D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C9E0 PRG:C9E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$C9F0 PRG:C9F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA00 PRG:CA00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA10 PRG:CA10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA20 PRG:CA20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA30 PRG:CA30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA40 PRG:CA40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA50 PRG:CA50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA60 PRG:CA60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA70 PRG:CA70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA80 PRG:CA80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CA90 PRG:CA90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CAA0 PRG:CAA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CAB0 PRG:CAB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CAC0 PRG:CAC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CAD0 PRG:CAD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CAE0 PRG:CAE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CAF0 PRG:CAF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB00 PRG:CB00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB10 PRG:CB10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB20 PRG:CB20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB30 PRG:CB30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB40 PRG:CB40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB50 PRG:CB50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB60 PRG:CB60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB70 PRG:CB70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB80 PRG:CB80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CB90 PRG:CB90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CBA0 PRG:CBA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CBB0 PRG:CBB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CBC0 PRG:CBC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CBD0 PRG:CBD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CBE0 PRG:CBE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CBF0 PRG:CBF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC00 PRG:CC00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC10 PRG:CC10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC20 PRG:CC20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC30 PRG:CC30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC40 PRG:CC40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC50 PRG:CC50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC60 PRG:CC60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC70 PRG:CC70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC80 PRG:CC80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CC90 PRG:CC90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CCA0 PRG:CCA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CCB0 PRG:CCB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CCC0 PRG:CCC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CCD0 PRG:CCD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CCE0 PRG:CCE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CCF0 PRG:CCF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD00 PRG:CD00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD10 PRG:CD10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD20 PRG:CD20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD30 PRG:CD30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD40 PRG:CD40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD50 PRG:CD50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD60 PRG:CD60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD70 PRG:CD70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD80 PRG:CD80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CD90 PRG:CD90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CDA0 PRG:CDA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CDB0 PRG:CDB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CDC0 PRG:CDC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CDD0 PRG:CDD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CDE0 PRG:CDE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CDF0 PRG:CDF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE00 PRG:CE00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE10 PRG:CE10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE20 PRG:CE20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE30 PRG:CE30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE40 PRG:CE40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE50 PRG:CE50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE60 PRG:CE60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE70 PRG:CE70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE80 PRG:CE80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CE90 PRG:CE90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CEA0 PRG:CEA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CEB0 PRG:CEB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CEC0 PRG:CEC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CED0 PRG:CED0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CEE0 PRG:CEE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CEF0 PRG:CEF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF00 PRG:CF00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF10 PRG:CF10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF20 PRG:CF20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF30 PRG:CF30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF40 PRG:CF40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF50 PRG:CF50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF60 PRG:CF60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF70 PRG:CF70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF80 PRG:CF80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CF90 PRG:CF90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CFA0 PRG:CFA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CFB0 PRG:CFB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CFC0 PRG:CFC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CFD0 PRG:CFD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CFE0 PRG:CFE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$CFF0 PRG:CFF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D000 PRG:D000  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D010 PRG:D010  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D020 PRG:D020  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D030 PRG:D030  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D040 PRG:D040  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D050 PRG:D050  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D060 PRG:D060  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D070 PRG:D070  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D080 PRG:D080  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D090 PRG:D090  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D0A0 PRG:D0A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D0B0 PRG:D0B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D0C0 PRG:D0C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D0D0 PRG:D0D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D0E0 PRG:D0E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D0F0 PRG:D0F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D100 PRG:D100  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D110 PRG:D110  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D120 PRG:D120  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D130 PRG:D130  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D140 PRG:D140  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D150 PRG:D150  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D160 PRG:D160  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D170 PRG:D170  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D180 PRG:D180  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D190 PRG:D190  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D1A0 PRG:D1A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D1B0 PRG:D1B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D1C0 PRG:D1C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D1D0 PRG:D1D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D1E0 PRG:D1E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D1F0 PRG:D1F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D200 PRG:D200  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D210 PRG:D210  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D220 PRG:D220  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D230 PRG:D230  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D240 PRG:D240  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D250 PRG:D250  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D260 PRG:D260  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D270 PRG:D270  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D280 PRG:D280  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D290 PRG:D290  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D2A0 PRG:D2A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D2B0 PRG:D2B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D2C0 PRG:D2C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D2D0 PRG:D2D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D2E0 PRG:D2E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D2F0 PRG:D2F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D300 PRG:D300  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D310 PRG:D310  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D320 PRG:D320  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D330 PRG:D330  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D340 PRG:D340  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D350 PRG:D350  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D360 PRG:D360  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D370 PRG:D370  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D380 PRG:D380  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D390 PRG:D390  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D3A0 PRG:D3A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D3B0 PRG:D3B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D3C0 PRG:D3C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D3D0 PRG:D3D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D3E0 PRG:D3E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D3F0 PRG:D3F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D400 PRG:D400  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D410 PRG:D410  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D420 PRG:D420  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D430 PRG:D430  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D440 PRG:D440  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D450 PRG:D450  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D460 PRG:D460  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D470 PRG:D470  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D480 PRG:D480  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D490 PRG:D490  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D4A0 PRG:D4A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D4B0 PRG:D4B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D4C0 PRG:D4C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D4D0 PRG:D4D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D4E0 PRG:D4E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D4F0 PRG:D4F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D500 PRG:D500  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D510 PRG:D510  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D520 PRG:D520  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D530 PRG:D530  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D540 PRG:D540  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D550 PRG:D550  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D560 PRG:D560  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D570 PRG:D570  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D580 PRG:D580  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D590 PRG:D590  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D5A0 PRG:D5A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D5B0 PRG:D5B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D5C0 PRG:D5C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D5D0 PRG:D5D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D5E0 PRG:D5E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D5F0 PRG:D5F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D600 PRG:D600  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D610 PRG:D610  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D620 PRG:D620  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D630 PRG:D630  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D640 PRG:D640  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D650 PRG:D650  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D660 PRG:D660  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D670 PRG:D670  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D680 PRG:D680  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D690 PRG:D690  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D6A0 PRG:D6A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D6B0 PRG:D6B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D6C0 PRG:D6C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D6D0 PRG:D6D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D6E0 PRG:D6E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D6F0 PRG:D6F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D700 PRG:D700  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D710 PRG:D710  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D720 PRG:D720  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D730 PRG:D730  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D740 PRG:D740  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D750 PRG:D750  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D760 PRG:D760  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D770 PRG:D770  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D780 PRG:D780  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D790 PRG:D790  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D7A0 PRG:D7A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D7B0 PRG:D7B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D7C0 PRG:D7C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D7D0 PRG:D7D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D7E0 PRG:D7E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D7F0 PRG:D7F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D800 PRG:D800  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D810 PRG:D810  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D820 PRG:D820  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D830 PRG:D830  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D840 PRG:D840  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D850 PRG:D850  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D860 PRG:D860  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D870 PRG:D870  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D880 PRG:D880  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D890 PRG:D890  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D8A0 PRG:D8A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D8B0 PRG:D8B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D8C0 PRG:D8C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D8D0 PRG:D8D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D8E0 PRG:D8E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D8F0 PRG:D8F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D900 PRG:D900  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D910 PRG:D910  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D920 PRG:D920  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D930 PRG:D930  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D940 PRG:D940  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D950 PRG:D950  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D960 PRG:D960  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D970 PRG:D970  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D980 PRG:D980  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D990 PRG:D990  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D9A0 PRG:D9A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D9B0 PRG:D9B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D9C0 PRG:D9C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D9D0 PRG:D9D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D9E0 PRG:D9E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$D9F0 PRG:D9F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA00 PRG:DA00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA10 PRG:DA10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA20 PRG:DA20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA30 PRG:DA30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA40 PRG:DA40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA50 PRG:DA50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA60 PRG:DA60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA70 PRG:DA70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA80 PRG:DA80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DA90 PRG:DA90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DAA0 PRG:DAA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DAB0 PRG:DAB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DAC0 PRG:DAC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DAD0 PRG:DAD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DAE0 PRG:DAE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DAF0 PRG:DAF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB00 PRG:DB00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB10 PRG:DB10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB20 PRG:DB20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB30 PRG:DB30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB40 PRG:DB40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB50 PRG:DB50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB60 PRG:DB60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB70 PRG:DB70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB80 PRG:DB80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DB90 PRG:DB90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DBA0 PRG:DBA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DBB0 PRG:DBB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DBC0 PRG:DBC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DBD0 PRG:DBD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DBE0 PRG:DBE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DBF0 PRG:DBF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC00 PRG:DC00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC10 PRG:DC10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC20 PRG:DC20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC30 PRG:DC30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC40 PRG:DC40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC50 PRG:DC50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC60 PRG:DC60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC70 PRG:DC70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC80 PRG:DC80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DC90 PRG:DC90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DCA0 PRG:DCA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DCB0 PRG:DCB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DCC0 PRG:DCC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DCD0 PRG:DCD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DCE0 PRG:DCE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DCF0 PRG:DCF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD00 PRG:DD00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD10 PRG:DD10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD20 PRG:DD20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD30 PRG:DD30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD40 PRG:DD40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD50 PRG:DD50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD60 PRG:DD60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD70 PRG:DD70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD80 PRG:DD80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DD90 PRG:DD90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DDA0 PRG:DDA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DDB0 PRG:DDB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DDC0 PRG:DDC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DDD0 PRG:DDD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DDE0 PRG:DDE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DDF0 PRG:DDF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE00 PRG:DE00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE10 PRG:DE10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE20 PRG:DE20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE30 PRG:DE30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE40 PRG:DE40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE50 PRG:DE50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE60 PRG:DE60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE70 PRG:DE70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE80 PRG:DE80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DE90 PRG:DE90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DEA0 PRG:DEA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DEB0 PRG:DEB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DEC0 PRG:DEC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DED0 PRG:DED0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DEE0 PRG:DEE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DEF0 PRG:DEF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF00 PRG:DF00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF10 PRG:DF10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF20 PRG:DF20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF30 PRG:DF30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF40 PRG:DF40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF50 PRG:DF50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF60 PRG:DF60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF70 PRG:DF70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF80 PRG:DF80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DF90 PRG:DF90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DFA0 PRG:DFA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DFB0 PRG:DFB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DFC0 PRG:DFC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DFD0 PRG:DFD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DFE0 PRG:DFE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$DFF0 PRG:DFF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E000 PRG:E000  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E010 PRG:E010  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E020 PRG:E020  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E030 PRG:E030  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E040 PRG:E040  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E050 PRG:E050  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E060 PRG:E060  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E070 PRG:E070  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E080 PRG:E080  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E090 PRG:E090  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E0A0 PRG:E0A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E0B0 PRG:E0B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E0C0 PRG:E0C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E0D0 PRG:E0D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E0E0 PRG:E0E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E0F0 PRG:E0F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E100 PRG:E100  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E110 PRG:E110  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E120 PRG:E120  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E130 PRG:E130  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E140 PRG:E140  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E150 PRG:E150  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E160 PRG:E160  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E170 PRG:E170  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E180 PRG:E180  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E190 PRG:E190  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E1A0 PRG:E1A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E1B0 PRG:E1B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E1C0 PRG:E1C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E1D0 PRG:E1D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E1E0 PRG:E1E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E1F0 PRG:E1F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E200 PRG:E200  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E210 PRG:E210  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E220 PRG:E220  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E230 PRG:E230  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E240 PRG:E240  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E250 PRG:E250  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E260 PRG:E260  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E270 PRG:E270  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E280 PRG:E280  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E290 PRG:E290  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E2A0 PRG:E2A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E2B0 PRG:E2B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E2C0 PRG:E2C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E2D0 PRG:E2D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E2E0 PRG:E2E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E2F0 PRG:E2F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E300 PRG:E300  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E310 PRG:E310  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E320 PRG:E320  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E330 PRG:E330  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E340 PRG:E340  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E350 PRG:E350  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E360 PRG:E360  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E370 PRG:E370  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E380 PRG:E380  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E390 PRG:E390  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E3A0 PRG:E3A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E3B0 PRG:E3B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E3C0 PRG:E3C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E3D0 PRG:E3D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E3E0 PRG:E3E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E3F0 PRG:E3F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E400 PRG:E400  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E410 PRG:E410  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E420 PRG:E420  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E430 PRG:E430  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E440 PRG:E440  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E450 PRG:E450  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E460 PRG:E460  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E470 PRG:E470  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E480 PRG:E480  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E490 PRG:E490  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E4A0 PRG:E4A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E4B0 PRG:E4B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E4C0 PRG:E4C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E4D0 PRG:E4D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E4E0 PRG:E4E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E4F0 PRG:E4F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E500 PRG:E500  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E510 PRG:E510  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E520 PRG:E520  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E530 PRG:E530  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E540 PRG:E540  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E550 PRG:E550  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E560 PRG:E560  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E570 PRG:E570  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E580 PRG:E580  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E590 PRG:E590  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E5A0 PRG:E5A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E5B0 PRG:E5B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E5C0 PRG:E5C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E5D0 PRG:E5D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E5E0 PRG:E5E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E5F0 PRG:E5F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E600 PRG:E600  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E610 PRG:E610  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E620 PRG:E620  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E630 PRG:E630  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E640 PRG:E640  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E650 PRG:E650  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E660 PRG:E660  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E670 PRG:E670  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E680 PRG:E680  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E690 PRG:E690  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E6A0 PRG:E6A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E6B0 PRG:E6B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E6C0 PRG:E6C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E6D0 PRG:E6D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E6E0 PRG:E6E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E6F0 PRG:E6F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E700 PRG:E700  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E710 PRG:E710  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E720 PRG:E720  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E730 PRG:E730  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E740 PRG:E740  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E750 PRG:E750  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E760 PRG:E760  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E770 PRG:E770  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E780 PRG:E780  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E790 PRG:E790  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E7A0 PRG:E7A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E7B0 PRG:E7B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E7C0 PRG:E7C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E7D0 PRG:E7D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E7E0 PRG:E7E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E7F0 PRG:E7F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E800 PRG:E800  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E810 PRG:E810  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E820 PRG:E820  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E830 PRG:E830  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E840 PRG:E840  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E850 PRG:E850  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E860 PRG:E860  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E870 PRG:E870  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E880 PRG:E880  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E890 PRG:E890  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E8A0 PRG:E8A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E8B0 PRG:E8B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E8C0 PRG:E8C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E8D0 PRG:E8D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E8E0 PRG:E8E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E8F0 PRG:E8F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E900 PRG:E900  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E910 PRG:E910  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E920 PRG:E920  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E930 PRG:E930  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E940 PRG:E940  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E950 PRG:E950  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E960 PRG:E960  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E970 PRG:E970  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E980 PRG:E980  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E990 PRG:E990  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E9A0 PRG:E9A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E9B0 PRG:E9B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E9C0 PRG:E9C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E9D0 PRG:E9D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E9E0 PRG:E9E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$E9F0 PRG:E9F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA00 PRG:EA00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA10 PRG:EA10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA20 PRG:EA20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA30 PRG:EA30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA40 PRG:EA40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA50 PRG:EA50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA60 PRG:EA60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA70 PRG:EA70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA80 PRG:EA80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EA90 PRG:EA90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EAA0 PRG:EAA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EAB0 PRG:EAB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EAC0 PRG:EAC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EAD0 PRG:EAD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EAE0 PRG:EAE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EAF0 PRG:EAF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB00 PRG:EB00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB10 PRG:EB10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB20 PRG:EB20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB30 PRG:EB30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB40 PRG:EB40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB50 PRG:EB50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB60 PRG:EB60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB70 PRG:EB70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB80 PRG:EB80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EB90 PRG:EB90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EBA0 PRG:EBA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EBB0 PRG:EBB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EBC0 PRG:EBC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EBD0 PRG:EBD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EBE0 PRG:EBE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EBF0 PRG:EBF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC00 PRG:EC00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC10 PRG:EC10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC20 PRG:EC20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC30 PRG:EC30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC40 PRG:EC40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC50 PRG:EC50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC60 PRG:EC60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC70 PRG:EC70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC80 PRG:EC80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EC90 PRG:EC90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ECA0 PRG:ECA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ECB0 PRG:ECB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ECC0 PRG:ECC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ECD0 PRG:ECD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ECE0 PRG:ECE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ECF0 PRG:ECF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED00 PRG:ED00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED10 PRG:ED10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED20 PRG:ED20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED30 PRG:ED30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED40 PRG:ED40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED50 PRG:ED50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED60 PRG:ED60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED70 PRG:ED70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED80 PRG:ED80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$ED90 PRG:ED90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EDA0 PRG:EDA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EDB0 PRG:EDB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EDC0 PRG:EDC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EDD0 PRG:EDD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EDE0 PRG:EDE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EDF0 PRG:EDF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE00 PRG:EE00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE10 PRG:EE10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE20 PRG:EE20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE30 PRG:EE30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE40 PRG:EE40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE50 PRG:EE50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE60 PRG:EE60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE70 PRG:EE70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE80 PRG:EE80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EE90 PRG:EE90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EEA0 PRG:EEA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EEB0 PRG:EEB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EEC0 PRG:EEC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EED0 PRG:EED0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EEE0 PRG:EEE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EEF0 PRG:EEF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF00 PRG:EF00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF10 PRG:EF10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF20 PRG:EF20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF30 PRG:EF30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF40 PRG:EF40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF50 PRG:EF50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF60 PRG:EF60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF70 PRG:EF70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF80 PRG:EF80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EF90 PRG:EF90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EFA0 PRG:EFA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EFB0 PRG:EFB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EFC0 PRG:EFC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EFD0 PRG:EFD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EFE0 PRG:EFE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$EFF0 PRG:EFF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F000 PRG:F000  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F010 PRG:F010  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F020 PRG:F020  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F030 PRG:F030  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F040 PRG:F040  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F050 PRG:F050  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F060 PRG:F060  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F070 PRG:F070  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F080 PRG:F080  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F090 PRG:F090  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F0A0 PRG:F0A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F0B0 PRG:F0B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F0C0 PRG:F0C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F0D0 PRG:F0D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F0E0 PRG:F0E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F0F0 PRG:F0F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F100 PRG:F100  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F110 PRG:F110  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F120 PRG:F120  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F130 PRG:F130  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F140 PRG:F140  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F150 PRG:F150  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F160 PRG:F160  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F170 PRG:F170  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F180 PRG:F180  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F190 PRG:F190  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F1A0 PRG:F1A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F1B0 PRG:F1B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F1C0 PRG:F1C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F1D0 PRG:F1D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F1E0 PRG:F1E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F1F0 PRG:F1F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F200 PRG:F200  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F210 PRG:F210  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F220 PRG:F220  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F230 PRG:F230  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F240 PRG:F240  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F250 PRG:F250  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F260 PRG:F260  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F270 PRG:F270  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F280 PRG:F280  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F290 PRG:F290  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F2A0 PRG:F2A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F2B0 PRG:F2B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F2C0 PRG:F2C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F2D0 PRG:F2D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F2E0 PRG:F2E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F2F0 PRG:F2F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F300 PRG:F300  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F310 PRG:F310  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F320 PRG:F320  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F330 PRG:F330  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F340 PRG:F340  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F350 PRG:F350  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F360 PRG:F360  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F370 PRG:F370  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F380 PRG:F380  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F390 PRG:F390  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F3A0 PRG:F3A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F3B0 PRG:F3B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F3C0 PRG:F3C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F3D0 PRG:F3D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F3E0 PRG:F3E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F3F0 PRG:F3F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F400 PRG:F400  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F410 PRG:F410  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F420 PRG:F420  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F430 PRG:F430  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F440 PRG:F440  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F450 PRG:F450  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F460 PRG:F460  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F470 PRG:F470  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F480 PRG:F480  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F490 PRG:F490  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F4A0 PRG:F4A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F4B0 PRG:F4B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F4C0 PRG:F4C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F4D0 PRG:F4D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F4E0 PRG:F4E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F4F0 PRG:F4F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F500 PRG:F500  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F510 PRG:F510  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F520 PRG:F520  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F530 PRG:F530  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F540 PRG:F540  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F550 PRG:F550  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F560 PRG:F560  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F570 PRG:F570  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F580 PRG:F580  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F590 PRG:F590  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F5A0 PRG:F5A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F5B0 PRG:F5B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F5C0 PRG:F5C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F5D0 PRG:F5D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F5E0 PRG:F5E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F5F0 PRG:F5F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F600 PRG:F600  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F610 PRG:F610  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F620 PRG:F620  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F630 PRG:F630  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F640 PRG:F640  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F650 PRG:F650  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F660 PRG:F660  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F670 PRG:F670  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F680 PRG:F680  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F690 PRG:F690  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F6A0 PRG:F6A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F6B0 PRG:F6B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F6C0 PRG:F6C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F6D0 PRG:F6D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F6E0 PRG:F6E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F6F0 PRG:F6F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F700 PRG:F700  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F710 PRG:F710  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F720 PRG:F720  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F730 PRG:F730  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F740 PRG:F740  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F750 PRG:F750  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F760 PRG:F760  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F770 PRG:F770  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F780 PRG:F780  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F790 PRG:F790  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F7A0 PRG:F7A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F7B0 PRG:F7B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F7C0 PRG:F7C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F7D0 PRG:F7D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F7E0 PRG:F7E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F7F0 PRG:F7F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F800 PRG:F800  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F810 PRG:F810  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F820 PRG:F820  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F830 PRG:F830  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F840 PRG:F840  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F850 PRG:F850  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F860 PRG:F860  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F870 PRG:F870  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F880 PRG:F880  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F890 PRG:F890  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F8A0 PRG:F8A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F8B0 PRG:F8B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F8C0 PRG:F8C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F8D0 PRG:F8D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F8E0 PRG:F8E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F8F0 PRG:F8F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F900 PRG:F900  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F910 PRG:F910  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F920 PRG:F920  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F930 PRG:F930  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F940 PRG:F940  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F950 PRG:F950  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F960 PRG:F960  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F970 PRG:F970  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F980 PRG:F980  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F990 PRG:F990  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F9A0 PRG:F9A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F9B0 PRG:F9B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F9C0 PRG:F9C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F9D0 PRG:F9D0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F9E0 PRG:F9E0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$F9F0 PRG:F9F0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA00 PRG:FA00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA10 PRG:FA10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA20 PRG:FA20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA30 PRG:FA30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA40 PRG:FA40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA50 PRG:FA50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA60 PRG:FA60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA70 PRG:FA70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA80 PRG:FA80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FA90 PRG:FA90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FAA0 PRG:FAA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FAB0 PRG:FAB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FAC0 PRG:FAC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FAD0 PRG:FAD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FAE0 PRG:FAE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FAF0 PRG:FAF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB00 PRG:FB00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB10 PRG:FB10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB20 PRG:FB20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB30 PRG:FB30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB40 PRG:FB40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB50 PRG:FB50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB60 PRG:FB60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB70 PRG:FB70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB80 PRG:FB80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FB90 PRG:FB90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FBA0 PRG:FBA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FBB0 PRG:FBB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FBC0 PRG:FBC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FBD0 PRG:FBD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FBE0 PRG:FBE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FBF0 PRG:FBF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC00 PRG:FC00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC10 PRG:FC10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC20 PRG:FC20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC30 PRG:FC30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC40 PRG:FC40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC50 PRG:FC50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC60 PRG:FC60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC70 PRG:FC70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC80 PRG:FC80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FC90 PRG:FC90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FCA0 PRG:FCA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FCB0 PRG:FCB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FCC0 PRG:FCC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FCD0 PRG:FCD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FCE0 PRG:FCE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FCF0 PRG:FCF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD00 PRG:FD00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD10 PRG:FD10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD20 PRG:FD20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD30 PRG:FD30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD40 PRG:FD40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD50 PRG:FD50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD60 PRG:FD60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD70 PRG:FD70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD80 PRG:FD80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FD90 PRG:FD90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FDA0 PRG:FDA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FDB0 PRG:FDB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FDC0 PRG:FDC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FDD0 PRG:FDD0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FDE0 PRG:FDE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FDF0 PRG:FDF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE00 PRG:FE00  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE10 PRG:FE10  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE20 PRG:FE20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE30 PRG:FE30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE40 PRG:FE40  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE50 PRG:FE50  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE60 PRG:FE60  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE70 PRG:FE70  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE80 PRG:FE80  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FE90 PRG:FE90  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FEA0 PRG:FEA0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FEB0 PRG:FEB0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FEC0 PRG:FEC0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FED0 PRG:FED0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FEE0 PRG:FEE0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FEF0 PRG:FEF0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-; -----------------------------------------------------------------------------
-; Routine: Reset
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Reset:
-    ldx #$FF                       ; CPU:$FF00 PRG:FF00  A2 FF
-    txs                            ; CPU:$FF02 PRG:FF02  9A
-    sei                            ; CPU:$FF03 PRG:FF03  78
-    cld                            ; CPU:$FF04 PRG:FF04  D8
-    lda #$00                       ; CPU:$FF05 PRG:FF05  A9 00
-    sta $2000                      ; CPU:$FF07 PRG:FF07  8D 00 20
-    sta $2001                      ; CPU:$FF0A PRG:FF0A  8D 01 20
-    lda #$30                       ; CPU:$FF0D PRG:FF0D  A9 30
-    jsr $FF49                      ; CPU:$FF0F PRG:FF0F  20 49 FF
-    jsr $FF57                      ; CPU:$FF12 PRG:FF12  20 57 FF
-    bcc Sub_8764_OnCarryClear_FF2F                 ; CPU:$FF15 PRG:FF15  90 18
-    lda #$10                       ; CPU:$FF17 PRG:FF17  A9 10
-    jsr $FF49                      ; CPU:$FF19 PRG:FF19  20 49 FF
-    lda #$30                       ; CPU:$FF1C PRG:FF1C  A9 30
-    jsr $FF49                      ; CPU:$FF1E PRG:FF1E  20 49 FF
-    jsr $FF4C                      ; CPU:$FF21 PRG:FF21  20 4C FF
-    jsr $FF4C                      ; CPU:$FF24 PRG:FF24  20 4C FF
-    lda #$10                       ; CPU:$FF27 PRG:FF27  A9 10
-    jsr $FF49                      ; CPU:$FF29 PRG:FF29  20 49 FF
-    jmp $FF3E                      ; CPU:$FF2C PRG:FF2C  4C 3E FF
-; -----------------------------------------------------------------------------
-; Routine: Sub_8764_OnCarryClear_FF2F
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_8764_OnCarryClear_FF2F:
-    lda #$20                       ; CPU:$FF2F PRG:FF2F  A9 20
-    jsr $FF49                      ; CPU:$FF31 PRG:FF31  20 49 FF
-    lda #$30                       ; CPU:$FF34 PRG:FF34  A9 30
-    jsr $FF49                      ; CPU:$FF36 PRG:FF36  20 49 FF
-    lda #$20                       ; CPU:$FF39 PRG:FF39  A9 20
-    jsr $FF49                      ; CPU:$FF3B PRG:FF3B  20 49 FF
-; -----------------------------------------------------------------------------
-; Routine: Sub_FF3E_CallNext_FF3E
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_FF3E_CallNext_FF3E:
-    lda #$30                       ; CPU:$FF3E PRG:FF3E  A9 30
-    sta $4100                      ; CPU:$FF40 PRG:FF40  8D 00 41
-    jsr $FF62                      ; CPU:$FF43 PRG:FF43  20 62 FF
-    jmp $8036                      ; CPU:$FF46 PRG:FF46  4C 36 80
-; -----------------------------------------------------------------------------
-; Routine: Sub_FF49_JumpNext_FF49
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_FF49_JumpNext_FF49:
-    sta $4100                      ; CPU:$FF49 PRG:FF49  8D 00 41
-; -----------------------------------------------------------------------------
-; Routine: Sub_FF4C_StoreAndContinue_FF4C
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_FF4C_StoreAndContinue_FF4C:
-    ldy #$04                       ; CPU:$FF4C PRG:FF4C  A0 04
-; -----------------------------------------------------------------------------
-; Routine: Sub_FF4C_OnNonzero_FF4E
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_FF4C_OnNonzero_FF4E:
-    ldx #$CE                       ; CPU:$FF4E PRG:FF4E  A2 CE
-; -----------------------------------------------------------------------------
-; Routine: Sub_FF4C_OnNonzero_FF50
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_FF4C_OnNonzero_FF50:
-    dex                            ; CPU:$FF50 PRG:FF50  CA
-    bne Sub_FF4C_OnNonzero_FF50                 ; CPU:$FF51 PRG:FF51  D0 FD
-    dey                            ; CPU:$FF53 PRG:FF53  88
-    bne Sub_FF4C_OnNonzero_FF4E                 ; CPU:$FF54 PRG:FF54  D0 F8
-    rts                            ; CPU:$FF56 PRG:FF56  60
-; -----------------------------------------------------------------------------
-; Routine: Sub_FF57_Return_FF57
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_FF57_Return_FF57:
-    lda #$41                       ; CPU:$FF57 PRG:FF57  A9 41
-    cmp $07F0                      ; CPU:$FF59 PRG:FF59  CD F0 07
-    bne Sub_FF57_OnNonzero_FF60                 ; CPU:$FF5C PRG:FF5C  D0 02
-    sec                            ; CPU:$FF5E PRG:FF5E  38
-    rts                            ; CPU:$FF5F PRG:FF5F  60
-; -----------------------------------------------------------------------------
-; Routine: Sub_FF57_OnNonzero_FF60
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_FF57_OnNonzero_FF60:
-    clc                            ; CPU:$FF60 PRG:FF60  18
-    rts                            ; CPU:$FF61 PRG:FF61  60
-; -----------------------------------------------------------------------------
-; Routine: Sub_FF62_Return_FF62
-; Global: Contextual control-flow entry identified from its parent routine and incoming branch usage.
-; Local: Continues its parent routine along the condition or operation encoded in this label,
-;        then returns, branches again, or rejoins shared code as documented by the instructions.
-; Parameters: Undetermined in Pass 1 unless implied by the caller.
-; Returns: Undetermined in Pass 1; status flags and registers may carry results.
-; Clobbers: Undetermined in Pass 1.
-; -----------------------------------------------------------------------------
-Sub_FF62_Return_FF62:
-    lda #$41                       ; CPU:$FF62 PRG:FF62  A9 41
-    sta $07F0                      ; CPU:$FF64 PRG:FF64  8D F0 07
-nmi_table:
-    rts                            ; CPU:$FF67 PRG:FF67  60
-; ---- data $FF68-$FFFF (152 bytes) ----
-    .byte $A9, $5A, $8D, $F0, $07, $60, $FF, $FF, $09, $30, $8D, $00, $41, $60, $FF, $FF  ; CPU:$FF68 PRG:FF68  A9 5A 8D F0 07 60 FF FF 09 30 8D 00 41 60 FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FF78 PRG:FF78  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FF88 PRG:FF88  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FF98 PRG:FF98  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FFA8 PRG:FFA8  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FFB8 PRG:FFB8  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FFC8 PRG:FFC8  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FFD8 PRG:FFD8  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF  ; CPU:$FFE8 PRG:FFE8  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-    .byte $FF, $FF, $89, $81, $00, $FF, $36, $80  ; CPU:$FFF8 PRG:FFF8  FF FF 89 81 00 FF 36 80
-
diff --git a/_wip/MAPPER8/Mermaids of Atlantis (U)/rom.nes b/_wip/MAPPER8/Mermaids of Atlantis (U)/rom.nes
deleted file mode 100644
index 9f7be3d..0000000
Binary files a/_wip/MAPPER8/Mermaids of Atlantis (U)/rom.nes and /dev/null differ
diff --git a/_wip/MMC1/AD&D Heroes of the Lance (U)/README.md b/_wip/MMC1/AD&D Heroes of the Lance (U)/README.md
index a40b9ef..be814ff 100644
--- a/_wip/MMC1/AD&D Heroes of the Lance (U)/README.md	
+++ b/_wip/MMC1/AD&D Heroes of the Lance (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/AD&D Hillsfar (U) [!]/README.md b/_wip/MMC1/AD&D Hillsfar (U) [!]/README.md
index 1ca5c64..90a04d2 100644
--- a/_wip/MMC1/AD&D Hillsfar (U) [!]/README.md	
+++ b/_wip/MMC1/AD&D Hillsfar (U) [!]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Bard's Tale - Tales of the Unknown, The (U) [!]/README.md b/_wip/MMC1/Bard's Tale - Tales of the Unknown, The (U) [!]/README.md
index dfe5d84..56e0381 100644
--- a/_wip/MMC1/Bard's Tale - Tales of the Unknown, The (U) [!]/README.md	
+++ b/_wip/MMC1/Bard's Tale - Tales of the Unknown, The (U) [!]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Baseball Simulator 1.000 (U)/README.md b/_wip/MMC1/Baseball Simulator 1.000 (U)/README.md
index 13f86c3..73ba9a3 100644
--- a/_wip/MMC1/Baseball Simulator 1.000 (U)/README.md	
+++ b/_wip/MMC1/Baseball Simulator 1.000 (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Baseball Stars (U)/README.md b/_wip/MMC1/Baseball Stars (U)/README.md
index 6035565..520e1cc 100644
--- a/_wip/MMC1/Baseball Stars (U)/README.md	
+++ b/_wip/MMC1/Baseball Stars (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Destiny of an Emperor (U)/README.md b/_wip/MMC1/Destiny of an Emperor (U)/README.md
index e162376..356973e 100644
--- a/_wip/MMC1/Destiny of an Emperor (U)/README.md	
+++ b/_wip/MMC1/Destiny of an Emperor (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Dragon Warrior (U) (PRG 0)/README.md b/_wip/MMC1/Dragon Warrior (U) (PRG 0)/README.md
index 5a003b1..098aaf9 100644
--- a/_wip/MMC1/Dragon Warrior (U) (PRG 0)/README.md	
+++ b/_wip/MMC1/Dragon Warrior (U) (PRG 0)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 64 KB (4 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Dragon Warrior (U) (PRG 1)/README.md b/_wip/MMC1/Dragon Warrior (U) (PRG 1)/README.md
index c6b4327..fe2db72 100644
--- a/_wip/MMC1/Dragon Warrior (U) (PRG 1)/README.md	
+++ b/_wip/MMC1/Dragon Warrior (U) (PRG 1)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 64 KB (4 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Dragon Warrior 2 (U)/README.md b/_wip/MMC1/Dragon Warrior 2 (U)/README.md
index 18b2c33..c54f93c 100644
--- a/_wip/MMC1/Dragon Warrior 2 (U)/README.md	
+++ b/_wip/MMC1/Dragon Warrior 2 (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Dragon Warrior 3 (U)/README.md b/_wip/MMC1/Dragon Warrior 3 (U)/README.md
index 7711344..e79543b 100644
--- a/_wip/MMC1/Dragon Warrior 3 (U)/README.md	
+++ b/_wip/MMC1/Dragon Warrior 3 (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 512 KB (32 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Dragon Warrior 4 (U)/README.md b/_wip/MMC1/Dragon Warrior 4 (U)/README.md
index e929320..ca6317b 100644
--- a/_wip/MMC1/Dragon Warrior 4 (U)/README.md	
+++ b/_wip/MMC1/Dragon Warrior 4 (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 512 KB (32 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Dungeon Magic - Sword of the Elements (U)/README.md b/_wip/MMC1/Dungeon Magic - Sword of the Elements (U)/README.md
index af14a9a..315771c 100644
--- a/_wip/MMC1/Dungeon Magic - Sword of the Elements (U)/README.md	
+++ b/_wip/MMC1/Dungeon Magic - Sword of the Elements (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Faria (U)/README.md b/_wip/MMC1/Faria (U)/README.md
index 605e322..dc353cb 100644
--- a/_wip/MMC1/Faria (U)/README.md	
+++ b/_wip/MMC1/Faria (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Final Fantasy (U) [a1]/README.md b/_wip/MMC1/Final Fantasy (U) [a1]/README.md
index bfb0b89..0030449 100644
--- a/_wip/MMC1/Final Fantasy (U) [a1]/README.md	
+++ b/_wip/MMC1/Final Fantasy (U) [a1]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Final Fantasy (U)/README.md b/_wip/MMC1/Final Fantasy (U)/README.md
index 57cb941..2b29547 100644
--- a/_wip/MMC1/Final Fantasy (U)/README.md	
+++ b/_wip/MMC1/Final Fantasy (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Formula One Built To Win (U) [!]/README.md b/_wip/MMC1/Formula One Built To Win (U) [!]/README.md
index 4a8e7bc..3b47eb4 100644
--- a/_wip/MMC1/Formula One Built To Win (U) [!]/README.md	
+++ b/_wip/MMC1/Formula One Built To Win (U) [!]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Greg Norman's Golf Power (U)/README.md b/_wip/MMC1/Greg Norman's Golf Power (U)/README.md
index 5bb2f3f..7f05535 100644
--- a/_wip/MMC1/Greg Norman's Golf Power (U)/README.md	
+++ b/_wip/MMC1/Greg Norman's Golf Power (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Legend of Zelda, The (U) (PRG 0)/README.md b/_wip/MMC1/Legend of Zelda, The (U) (PRG 0)/README.md
index 8e70173..10c0f45 100644
--- a/_wip/MMC1/Legend of Zelda, The (U) (PRG 0)/README.md	
+++ b/_wip/MMC1/Legend of Zelda, The (U) (PRG 0)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Legend of Zelda, The (U) (PRG 1)/README.md b/_wip/MMC1/Legend of Zelda, The (U) (PRG 1)/README.md
index ab10bdb..1c8de01 100644
--- a/_wip/MMC1/Legend of Zelda, The (U) (PRG 1)/README.md	
+++ b/_wip/MMC1/Legend of Zelda, The (U) (PRG 1)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Legend of the Ghost Lion (U)/README.md b/_wip/MMC1/Legend of the Ghost Lion (U)/README.md
index 95a32b0..65c310b 100644
--- a/_wip/MMC1/Legend of the Ghost Lion (U)/README.md	
+++ b/_wip/MMC1/Legend of the Ghost Lion (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/NES Open Tournament Golf (U) [a1]/README.md b/_wip/MMC1/NES Open Tournament Golf (U) [a1]/README.md
index 2850cd7..e1ab963 100644
--- a/_wip/MMC1/NES Open Tournament Golf (U) [a1]/README.md	
+++ b/_wip/MMC1/NES Open Tournament Golf (U) [a1]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/NES Open Tournament Golf (U)/README.md b/_wip/MMC1/NES Open Tournament Golf (U)/README.md
index a33a5cb..8db085e 100644
--- a/_wip/MMC1/NES Open Tournament Golf (U)/README.md	
+++ b/_wip/MMC1/NES Open Tournament Golf (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Nobunaga's Ambition (U)/README.md b/_wip/MMC1/Nobunaga's Ambition (U)/README.md
index ae5e085..ccb75d5 100644
--- a/_wip/MMC1/Nobunaga's Ambition (U)/README.md	
+++ b/_wip/MMC1/Nobunaga's Ambition (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Pirates! (U)/README.md b/_wip/MMC1/Pirates! (U)/README.md
index 5f43df8..0b2f701 100644
--- a/_wip/MMC1/Pirates! (U)/README.md	
+++ b/_wip/MMC1/Pirates! (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Romance of the Three Kingdoms (U)/README.md b/_wip/MMC1/Romance of the Three Kingdoms (U)/README.md
index 9d20757..e70df80 100644
--- a/_wip/MMC1/Romance of the Three Kingdoms (U)/README.md	
+++ b/_wip/MMC1/Romance of the Three Kingdoms (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Ultima - Exodus (U)/README.md b/_wip/MMC1/Ultima - Exodus (U)/README.md
index 91e380e..46b6368 100644
--- a/_wip/MMC1/Ultima - Exodus (U)/README.md	
+++ b/_wip/MMC1/Ultima - Exodus (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Ultima - Quest of the Avatar (U)/README.md b/_wip/MMC1/Ultima - Quest of the Avatar (U)/README.md
index 4e013c8..791f1ff 100644
--- a/_wip/MMC1/Ultima - Quest of the Avatar (U)/README.md	
+++ b/_wip/MMC1/Ultima - Quest of the Avatar (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Wizardry - Proving Grounds of the Mad Overlord (U)/README.md b/_wip/MMC1/Wizardry - Proving Grounds of the Mad Overlord (U)/README.md
index b27f848..ebc7817 100644
--- a/_wip/MMC1/Wizardry - Proving Grounds of the Mad Overlord (U)/README.md	
+++ b/_wip/MMC1/Wizardry - Proving Grounds of the Mad Overlord (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC1/Zelda 2 - The Adventure of Link (U)/README.md b/_wip/MMC1/Zelda 2 - The Adventure of Link (U)/README.md
index e92c67e..21d0f3d 100644
--- a/_wip/MMC1/Zelda 2 - The Adventure of Link (U)/README.md	
+++ b/_wip/MMC1/Zelda 2 - The Adventure of Link (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 1 |
 | Board | MMC1 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/AD&D Pool of Radiance (U)/README.md b/_wip/MMC3/AD&D Pool of Radiance (U)/README.md
index d50c11a..16a92db 100644
--- a/_wip/MMC3/AD&D Pool of Radiance (U)/README.md	
+++ b/_wip/MMC3/AD&D Pool of Radiance (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 512 KB (32 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Crystalis (Prototype) (U) [a1]/README.md b/_wip/MMC3/Crystalis (Prototype) (U) [a1]/README.md
index a26b497..1f5f301 100644
--- a/_wip/MMC3/Crystalis (Prototype) (U) [a1]/README.md	
+++ b/_wip/MMC3/Crystalis (Prototype) (U) [a1]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Crystalis (Prototype) (U)/README.md b/_wip/MMC3/Crystalis (Prototype) (U)/README.md
index 79a6dc1..4766c51 100644
--- a/_wip/MMC3/Crystalis (Prototype) (U)/README.md	
+++ b/_wip/MMC3/Crystalis (Prototype) (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Crystalis (U) [a1]/README.md b/_wip/MMC3/Crystalis (U) [a1]/README.md
index 87838cc..3e57af3 100644
--- a/_wip/MMC3/Crystalis (U) [a1]/README.md	
+++ b/_wip/MMC3/Crystalis (U) [a1]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Crystalis (U)/README.md b/_wip/MMC3/Crystalis (U)/README.md
index 4234c82..2fd8fcd 100644
--- a/_wip/MMC3/Crystalis (U)/README.md	
+++ b/_wip/MMC3/Crystalis (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Earth Bound (Prototype) (U)/README.md b/_wip/MMC3/Earth Bound (Prototype) (U)/README.md
index a09db10..79e7cc5 100644
--- a/_wip/MMC3/Earth Bound (Prototype) (U)/README.md	
+++ b/_wip/MMC3/Earth Bound (Prototype) (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Earth Bound Zero (Neo Demiforce v1.01 Hack-1) (U)/README.md b/_wip/MMC3/Earth Bound Zero (Neo Demiforce v1.01 Hack-1) (U)/README.md
index a080d15..f663a37 100644
--- a/_wip/MMC3/Earth Bound Zero (Neo Demiforce v1.01 Hack-1) (U)/README.md	
+++ b/_wip/MMC3/Earth Bound Zero (Neo Demiforce v1.01 Hack-1) (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Earth Bound Zero (Neo Demiforce v1.01 Hack-2) (U)/README.md b/_wip/MMC3/Earth Bound Zero (Neo Demiforce v1.01 Hack-2) (U)/README.md
index a241056..8fda2eb 100644
--- a/_wip/MMC3/Earth Bound Zero (Neo Demiforce v1.01 Hack-2) (U)/README.md	
+++ b/_wip/MMC3/Earth Bound Zero (Neo Demiforce v1.01 Hack-2) (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/F-117a Stealth Fighter (U) [!]/README.md b/_wip/MMC3/F-117a Stealth Fighter (U) [!]/README.md
index b74a2be..ad2be1e 100644
--- a/_wip/MMC3/F-117a Stealth Fighter (U) [!]/README.md	
+++ b/_wip/MMC3/F-117a Stealth Fighter (U) [!]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/King's Quest V (U)/README.md b/_wip/MMC3/King's Quest V (U)/README.md
index 58b70ec..d9bd9f5 100644
--- a/_wip/MMC3/King's Quest V (U)/README.md	
+++ b/_wip/MMC3/King's Quest V (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | yes |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Kirby's Adventure (U) (PRG 0)/README.md b/_wip/MMC3/Kirby's Adventure (U) (PRG 0)/README.md
index 269bc55..08d3186 100644
--- a/_wip/MMC3/Kirby's Adventure (U) (PRG 0)/README.md	
+++ b/_wip/MMC3/Kirby's Adventure (U) (PRG 0)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 512 KB (32 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Kirby's Adventure (U) (PRG 1) [!]/README.md b/_wip/MMC3/Kirby's Adventure (U) (PRG 1) [!]/README.md
index cce8cc2..804ef11 100644
--- a/_wip/MMC3/Kirby's Adventure (U) (PRG 1) [!]/README.md	
+++ b/_wip/MMC3/Kirby's Adventure (U) (PRG 1) [!]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 512 KB (32 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Magician (U) (Prototype)/README.md b/_wip/MMC3/Magician (U) (Prototype)/README.md
index c8f43ba..e7df8fa 100644
--- a/_wip/MMC3/Magician (U) (Prototype)/README.md	
+++ b/_wip/MMC3/Magician (U) (Prototype)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Might and Magic (U)/README.md b/_wip/MMC3/Might and Magic (U)/README.md
index 3957c2a..62135f3 100644
--- a/_wip/MMC3/Might and Magic (U)/README.md	
+++ b/_wip/MMC3/Might and Magic (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Ninja Gaiden 2 - The Dark Sword of Chaos (U) (Prototype)/README.md b/_wip/MMC3/Ninja Gaiden 2 - The Dark Sword of Chaos (U) (Prototype)/README.md
index 968fe1d..c15860a 100644
--- a/_wip/MMC3/Ninja Gaiden 2 - The Dark Sword of Chaos (U) (Prototype)/README.md	
+++ b/_wip/MMC3/Ninja Gaiden 2 - The Dark Sword of Chaos (U) (Prototype)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Tecmo NBA Basketball (U)/README.md b/_wip/MMC3/Tecmo NBA Basketball (U)/README.md
index b1a6e28..c9ffef4 100644
--- a/_wip/MMC3/Tecmo NBA Basketball (U)/README.md	
+++ b/_wip/MMC3/Tecmo NBA Basketball (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC3/Wizardry - The Knight of Diamonds (U)/README.md b/_wip/MMC3/Wizardry - The Knight of Diamonds (U)/README.md
index fc1bc0a..6905282 100644
--- a/_wip/MMC3/Wizardry - The Knight of Diamonds (U)/README.md	
+++ b/_wip/MMC3/Wizardry - The Knight of Diamonds (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 4 |
 | Board | MMC3 |
-| Mirroring | Four-screen |
+| Mirroring | Vertical |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 128 KB (8 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC5/Gemfire (U)/README.md b/_wip/MMC5/Gemfire (U)/README.md
index fc9e3b2..0078f5d 100644
--- a/_wip/MMC5/Gemfire (U)/README.md	
+++ b/_wip/MMC5/Gemfire (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 5 |
 | Board | MMC5 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC5/L'Empereur (U) [a1]/README.md b/_wip/MMC5/L'Empereur (U) [a1]/README.md
index fc02909..9697267 100644
--- a/_wip/MMC5/L'Empereur (U) [a1]/README.md	
+++ b/_wip/MMC5/L'Empereur (U) [a1]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 5 |
 | Board | MMC5 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC5/L'Empereur (U)/README.md b/_wip/MMC5/L'Empereur (U)/README.md
index 8f0cca7..3b923a7 100644
--- a/_wip/MMC5/L'Empereur (U)/README.md	
+++ b/_wip/MMC5/L'Empereur (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 5 |
 | Board | MMC5 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC5/Nobunaga's Ambition 2 (U)/README.md b/_wip/MMC5/Nobunaga's Ambition 2 (U)/README.md
index 71c64b8..5ffd424 100644
--- a/_wip/MMC5/Nobunaga's Ambition 2 (U)/README.md	
+++ b/_wip/MMC5/Nobunaga's Ambition 2 (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 5 |
 | Board | MMC5 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC5/Romance of the Three Kingdoms 2 (U) [!]/README.md b/_wip/MMC5/Romance of the Three Kingdoms 2 (U) [!]/README.md
index 48b9335..f2754be 100644
--- a/_wip/MMC5/Romance of the Three Kingdoms 2 (U) [!]/README.md	
+++ b/_wip/MMC5/Romance of the Three Kingdoms 2 (U) [!]/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 5 |
 | Board | MMC5 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 256 KB (16 x 16 KB), at file offset $0010 |
diff --git a/_wip/MMC5/Uncharted Waters (U)/README.md b/_wip/MMC5/Uncharted Waters (U)/README.md
index df54529..10a4448 100644
--- a/_wip/MMC5/Uncharted Waters (U)/README.md	
+++ b/_wip/MMC5/Uncharted Waters (U)/README.md	
@@ -20,7 +20,7 @@ Byte-identical ROM verified.
 | Format | iNES |
 | Mapper | 5 |
 | Board | MMC5 |
-| Mirroring | Four-screen |
+| Mirroring | Horizontal |
 | Four-screen VRAM | no |
 | Battery | yes |
 | PRG | 512 KB (32 x 16 KB), at file offset $0010 |
diff --git a/_wip/NROM/Golf (JU)/README.md b/_wip/NROM/Golf (JU)/README.md
deleted file mode 100644
index d7d26a9..0000000
--- a/_wip/NROM/Golf (JU)/README.md	
+++ /dev/null
@@ -1,79 +0,0 @@
-# Golf (JU) — Pass 1 complete, Pass 2 substantial, Pass 3 started
-
-ROM: `_wip/Golf (JU)/Golf (JU).nes` (24,592 bytes, iNES). Status: **Pass 1 complete, Pass 2 substantial, Pass 3 started — PAUSED.** PRG build is **byte-identical**.
-
-**Pass 1 (code/data split) — complete.** Reachable code traced from RESET ($C000) and NMI ($C0A6); all 4,063 reachable instructions are explicit source. NMI callbacks ($C5A0=`GameplayInputNmiCallback`, $C6C8, $CFAA, $DAA2; continuations $CFC3/$D03E/$D08A) and controller/attract paths ($DAA2, $C0C7=`InitializeRuntimeState`) are in source. All remaining `.incbin` spans have zero code entry points and are confirmed data.
-
-**Pass 2 (label naming) — substantial.** Startup/NMI/PPU/controller/course-decode routines named (batches 1–3 per `PASS2_PLAN.md`). All 112 subroutine-entry `Label_` labels renamed to `SubC` (108) or semantic names (4: `WaitForFramePreservingY`, `SpriteOffsetForController`, `SetPpuScrollAndMask`, `MultiplyABy32`); 349 internal branch-target `Label_` labels remain intentionally.
-
-**Pass 3 (data tables) — started, PAUSED.** Conversions completed:
-- Interrupt vectors at $FFFA–$FFFF → `.word NmiHandler`/`Reset`/`IrqLoop`
-- Course-stream split pointer table at $E6C3/$E6D5 (18 entries) → `CourseLayoutPointerLo`/`CourseLayoutPointerHi`
-- Bit-mask table $D6F4–$D6FB → `BitMaskTable` ($80 40 20 10 08 04 02 01)
-- PPU write table $FD0A–$FD11 → `PpuTableFd0a`
-- Score adjust table $D988–$D9B0 → `D988ScoreAdjustTable`
-- PPU value table $FF85–$FF9F → `FF85PpuValueTable`
-- Sprite/object tables (`sprite_object_tables.inc`) and gameplay PPU palette ($E1B8–$E1D7) already emitted as structured source.
-
-**Paused:** Remaining `.incbin` spans are largely Iwata's compressed level data ($E6E7–$F905, ~4.6 KB) and opaque lookup tables ($C786–$C84C, $CD85–$CE63, $D304–$D3B6, $D563–$D659, $D823–$D8EC, $DC59–$DD77, $E1D8–$E281, $E3DE–$E3FB, $E588–$E6AF, $FBBF–$FC23). Without runtime tracing / a code/data log to confirm consumers and structure, converting these risks guessy rewrites. Per repo convention, they remain as `.incbin` with address comments.
-
-Remaining `.incbin` spans ($C71E–$C720, $C786–$C84C, $CD85–$CE63, $D304–$D3B6, $D563–$D659, $D823–$D8EC, $DC59–$DD77, $E1D8–$E281, $E3DE–$E3FB, $E588–$E6AF, $E6E7–$F905, $FBBF–$FC23) remain as data per the no-guessy-rewrites convention; convert only when a consumer is identified.
-
-**Next Pass 3 candidates:** when runtime tracing tools are available, remaining structured tables (course-stream data, opaque lookup spans) can be converted where structure is confirmed.
-
-**Promotion:** not yet — `_wip` tier (PRG-only compare). Promotion requires full-ROM build (`header.s`/`chr.s` + vectors) and root inventory entry.
-
-
-## ROM Facts
-
-| Property | Value |
-|----------|-------|
-| Mapper | 0 (NROM) — from the iNES header |
-| PRG | 16 KB (header claims map at CPU $C000–$FFFF) |
-| CHR | 8 KB |
-| Mirroring | Vertical |
-| Battery-backed flag | clear |
-| ROM SHA-256 | `70986ed4fb441199a9ff50c7b5c6388d9f7a17c29990d1b5f7214572ae0a4bc6` |
-| PRG SHA-256 | `9f729074cd7c74340f325460173519427b1180f5101f8dc37da7b1c2b9b604d5` |
-
-## Interrupt Vectors (taken from PRG $3FFA–$3FFF)
-
-| Vector | Target | Note |
-|--------|--------|------|
-| NMI | `$C0A6` | per-frame heartbeat |
-| RESET | `$C000` | cold start at $C000 — the usual pattern in this repo |
-| IRQ | `$C0C4` | IRQ handler |
-
-## `copilot/` Contents
-
-| File | Purpose |
-|------|---------|
-| `Golf (JU).nes` | original ROM image (reference) |
-| `prg.bin` / `header.bin` / `chr.bin` | split image, produced by `_tools/splitnes.py` |
-| `prg.s` | Pass-1 disassembly: classified code/data split with audit comments; Pass 2 substantial. Data split into `course_streams.inc` and `sprite_object_tables.inc` |
-| `symbols.inc` | shared NES hardware constants (PPU/APU/controller) |
-| `locals.inc` | project-local zero-page aliases (Pass 2 batches kept alongside as `locals.inc.pass2-*` backups) |
-| `linker.cfg` | PRG at $C000, 16 KB, `fill = yes` |
-| `Makefile` | links `reconstructed_prg.bin` and `cmp`s it against `prg.bin` |
-| `reconstructed_prg.bin` | build output from the last verified build |
-
-Header/CHR are not linked: `copilot/` keeps the raw `header.bin`/`chr.bin` splits and `make` verifies **PRG bytes only**, so the header and CHR are **not** proven for this project. Promotion to the top level adds `header.s` / `chr.s` (as e.g. `Burger Time (U)`), a HEADER/PRG/CHR `linker.cfg`, and a full-ROM `make` target.
-
-## Build
-
-```bash
-cd "_wip/Golf (JU)/copilot"
-make        # → cmp reconstructed_prg.bin prg.bin → "BYTE-IDENTICAL"
-```
-
-## Next Steps
-
-1. **Pass 1** — done (byte-identical PRG build).
-2. **Pass 2** — substantial: startup/NMI/PPU/controller/course-decode routines and all 112
-   subroutine entry points named; 349 internal branch-target `Label_` labels remain.
-3. **Pass 3** — paused: convert the remaining `.incbin` spans (Iwata-compressed level data
-   `$E6E7–$F905`, opaque lookup tables) only once a consumer/structure is confirmed; per
-   repo convention they stay `.incbin` with address comments rather than be guessed at.
-4. **Promotion** — move to a top-level `/copilot/` folder, add a full-ROM build
-   (`header.s` + `chr.s` + HEADER/PRG/CHR `linker.cfg`), and write the power-on flow
-   `OVERVIEW.md` in the established style.
diff --git a/_wip/NROM/Volleyball (U)/Makefile b/_wip/NROM/Volleyball (U)/Makefile
deleted file mode 100644
index b254894..0000000
--- a/_wip/NROM/Volleyball (U)/Makefile	
+++ /dev/null
@@ -1,25 +0,0 @@
-CA65 ?= ca65
-LD65 ?= ld65
-
-all: reconstructed.nes verify
-
-prg.o: prg.s symbols.inc locals.inc prg.bin
-	$(CA65) -g -o $@ $<
-
-header.o: header.s header.bin
-	$(CA65) -g -o $@ $<
-
-chr.o: chr.s chr.bin
-	$(CA65) -g -o $@ $<
-
-reconstructed.nes: header.o prg.o chr.o linker.cfg
-	$(LD65) -C linker.cfg -m reconstructed.map -Ln reconstructed.lbl -o $@ header.o prg.o chr.o
-
-verify: reconstructed.nes rom.nes
-	cmp reconstructed.nes rom.nes
-	@echo "Byte-identical ROM verified."
-
-clean:
-	rm -f *.o reconstructed.nes reconstructed_prg.bin reconstructed.map reconstructed.lbl
-
-.PHONY: all verify clean
diff --git a/_wip/NROM/Volleyball (U)/README.md b/_wip/NROM/Volleyball (U)/README.md
deleted file mode 100644
index 92ab766..0000000
--- a/_wip/NROM/Volleyball (U)/README.md	
+++ /dev/null
@@ -1,66 +0,0 @@
-# Volleyball (U)
-
-## Status
-
-**Pass 0 skeleton.** The project builds and verifies byte-identical to the
-original ROM, but no disassembly exists yet: `prg.s` is a single
-`.incbin "prg.bin"` of the PRG image.
-
-`make` assembles `header.s`, `prg.s`, `chr.s`, links them with `ld65` and compares the
-result against `rom.nes`:
-
-```
-Byte-identical ROM verified.
-```
-
-## ROM
-
-| Property | Value |
-|----------|-------|
-| Format | iNES |
-| Mapper | 0 |
-| Board | NROM-256 |
-| Mirroring | Vertical |
-| Four-screen VRAM | no |
-| Battery | no |
-| PRG | 32 KB (2 x 16 KB), mapped at CPU $8000-$FFFF |
-| CHR | 8 KB (1 x 8 KB) |
-| Trainer | none |
-| Footer | none |
-| NMI vector | $8053 |
-| RESET vector | $8000 |
-| IRQ vector | $FFFF |
-| ROM file | `Volleyball (U).nes` |
-| SHA-256 | `5c3baa82f28963fc258c238c82b628dedafdc1342d201721ced196437c983c4d` |
-
-### Header notes
-
-- none
-
-## Open work
-
-- **Pass 1** - run `nesdis.py` over `prg.bin` to produce the code/data
-  split. The tracer reads the vectors from the last six bytes of the PRG
-  image, so the split seeds correctly.
-- **Pass 1** must emit the canonical audit comment
-  `; CPU:$C123 PRG:0123  AD 21 03` at column 35 for every instruction.
-- **Pass 2** - replace the address-derived `Label_XXXX` names and the raw
-  `$XXXX` call operands.
-- **Pass 3** - semantic zero-page aliases (applied only at the sites where
-  their role is proven) and named data tables.
-- **Promotion** to `NROM//` once Pass 3 is done, as `git mv`.
-
-## Files
-
-| File | Purpose |
-|------|---------|
-| `prg.s` | Pass 0 PRG include (replaced by the Pass 1 disassembly) |
-| `header.s` | iNES header include |
-| `chr.s` | CHR include |
-| `prg.bin` | 32768 bytes (32 KB) PRG image |
-| `chr.bin` | 8192 bytes (8 KB) CHR image |
-| `rom.nes` | byte-identical copy of the original ROM |
-| `linker.cfg` | HEADER / PRG / CHR memory areas |
-| `symbols.inc` | NES hardware register names |
-| `locals.inc` | zero-page aliases (empty at Pass 0) |
-| `Makefile` | build and byte-identity check |
diff --git a/_wip/NROM/Volleyball (U)/chr.s b/_wip/NROM/Volleyball (U)/chr.s
deleted file mode 100644
index a5c5801..0000000
--- a/_wip/NROM/Volleyball (U)/chr.s	
+++ /dev/null
@@ -1,2 +0,0 @@
-.segment "CHR"
-    .incbin "chr.bin"
diff --git a/_wip/NROM/Volleyball (U)/header.s b/_wip/NROM/Volleyball (U)/header.s
deleted file mode 100644
index 6091055..0000000
--- a/_wip/NROM/Volleyball (U)/header.s	
+++ /dev/null
@@ -1,2 +0,0 @@
-.segment "HEADER"
-    .incbin "header.bin"
diff --git a/_wip/NROM/Volleyball (U)/locals.inc b/_wip/NROM/Volleyball (U)/locals.inc
deleted file mode 100644
index 784d174..0000000
--- a/_wip/NROM/Volleyball (U)/locals.inc	
+++ /dev/null
@@ -1,4 +0,0 @@
-; Zero-page aliases for this project.
-; Empty at Pass 0.  Pass 1+ adds proven semantic names here;
-; addresses whose role is not yet determined keep the neutral ZpXX
-; form.
diff --git a/_wip/NROM/Volleyball (U)/prg.s b/_wip/NROM/Volleyball (U)/prg.s
deleted file mode 100644
index 8a2bbb1..0000000
--- a/_wip/NROM/Volleyball (U)/prg.s	
+++ /dev/null
@@ -1,18 +0,0 @@
-; Volleyball (U) NES disassembly - Pass 0 (build skeleton)
-;
-; The PRG image is included verbatim, so the project rebuilds
-; byte-identical to the original ROM from the first commit.  Pass 1
-; replaces this block with the traced disassembly; no ROM byte is
-; ever deleted or reformatted, only re-classified as code or data.
-;
-; Board:    NROM-256
-; PRG:      32 KB mapped at $8000-$FFFF
-; Vectors:  NMI=$8053  RESET=$8000  IRQ=$FFFF
-
-.setcpu "6502"
-
-.include "symbols.inc"
-.include "locals.inc"
-
-.segment "PRG"
-    .incbin "prg.bin"
diff --git a/_wip/NROM/Volleyball (U)/symbols.inc b/_wip/NROM/Volleyball (U)/symbols.inc
deleted file mode 100644
index 6944e05..0000000
--- a/_wip/NROM/Volleyball (U)/symbols.inc	
+++ /dev/null
@@ -1,108 +0,0 @@
-; =============================================================================
-; Nintendo Entertainment System hardware symbols
-; =============================================================================
-
-; -----------------------------------------------------------------------------
-; PPU registers
-; -----------------------------------------------------------------------------
-
-PPUCTRL             = $2000
-PPUMASK             = $2001
-PPUSTATUS           = $2002
-OAMADDR             = $2003
-OAMDATA             = $2004
-PPUSCROLL           = $2005
-PPUADDR             = $2006
-PPUDATA             = $2007
-
-OAMDMA              = $4014
-
-; -----------------------------------------------------------------------------
-; Controller ports
-;
-; $4016:
-;   Write: controller strobe
-;   Read:  controller port 1
-;
-; $4017:
-;   Read:  controller port 2
-;   Write: APU frame counter
-; -----------------------------------------------------------------------------
-
-JOY1                = $4016
-JOY2                = $4017
-
-; -----------------------------------------------------------------------------
-; APU pulse channel 1
-; -----------------------------------------------------------------------------
-
-APUPULSE1CTRL       = $4000
-APUPULSE1SWEEP      = $4001
-APUPULSE1TIMERLO    = $4002
-APUPULSE1TIMERHI    = $4003
-
-; -----------------------------------------------------------------------------
-; APU pulse channel 2
-; -----------------------------------------------------------------------------
-
-APUPULSE2CTRL       = $4004
-APUPULSE2SWEEP      = $4005
-APUPULSE2TIMERLO    = $4006
-APUPULSE2TIMERHI    = $4007
-
-; -----------------------------------------------------------------------------
-; APU triangle channel
-; -----------------------------------------------------------------------------
-
-APUTRIANGLECTRL     = $4008
-APUTRIANGLETIMERLO  = $400A
-APUTRIANGLETIMERHI  = $400B
-
-; -----------------------------------------------------------------------------
-; APU noise channel
-; -----------------------------------------------------------------------------
-
-APUNOISECTRL        = $400C
-APUNOISEPERIOD      = $400E
-APUNOISELENGTH      = $400F
-
-; -----------------------------------------------------------------------------
-; APU DMC channel
-; -----------------------------------------------------------------------------
-
-APUDMCCTRL          = $4010
-APUDMCDIRECT        = $4011
-APUDMCADDR          = $4012
-APUDMCLENGTH        = $4013
-
-; -----------------------------------------------------------------------------
-; APU status and frame counter
-;
-; $4015:
-;   Write: enable or disable the five APU channels
-;   Read:  channel and interrupt status
-;
-; $4017:
-;   Write: APU frame-counter mode and IRQ inhibit
-;   Read:  controller port 2
-; -----------------------------------------------------------------------------
-
-APUSTATUS           = $4015
-APUFRAMECOUNTER     = $4017
-
-; -----------------------------------------------------------------------------
-; Controller masks
-; -----------------------------------------------------------------------------
-
-PAD_RIGHT           = $01
-PAD_LEFT            = $02
-PAD_DOWN            = $04
-PAD_UP              = $08
-PAD_START           = $10
-PAD_SELECT          = $20
-PAD_B               = $40
-PAD_A               = $80
-
-PAD_HORIZONTAL      = PAD_LEFT | PAD_RIGHT
-PAD_VERTICAL        = PAD_UP | PAD_DOWN
-PAD_DPAD            = PAD_HORIZONTAL | PAD_VERTICAL
\ No newline at end of file