Skip to content

Add support for mapper 119 (TQROM)#558

Merged
bfirsh merged 1 commit intomainfrom
bfirsh/mapper-119
Feb 15, 2026
Merged

Add support for mapper 119 (TQROM)#558
bfirsh merged 1 commit intomainfrom
bfirsh/mapper-119

Conversation

@bfirsh
Copy link
Owner

@bfirsh bfirsh commented Feb 15, 2026

Summary

Implements mapper 119 (TQROM), an MMC3 variant that supports both CHR ROM and CHR RAM simultaneously. Bit 6 of CHR bank register values selects between CHR ROM (0) and CHR RAM (1), enabling mixed cartridge configurations used by Pin-Bot and High Speed (Rare).

The implementation adds a canWriteChr() mapper interface method that the PPU uses to determine if pattern table addresses can be written to, replacing the previous hardcoded check. Mapper119 maintains separate CHR RAM storage and routes bank switches appropriately.

Test plan

  • ✓ All 445 existing tests pass
  • ✓ Code formatting passes (Prettier)
  • ✓ Build completes without errors
  • ✓ Save state serialization (toJSON/fromJSON) preserves CHR RAM state

🤖 Generated with Claude Code

TQROM is an MMC3 variant that supports both CHR ROM and CHR RAM simultaneously.
Bit 6 of CHR bank register values selects between CHR ROM and CHR RAM, allowing
up to 64KB CHR ROM and 8KB CHR RAM on the same cartridge. This is used by Pin-Bot
and High Speed, both developed by Rare.

The implementation adds a canWriteChr() method to the mapper interface that
the PPU uses to determine if a pattern table address can be written to, replacing
the hardcoded vromCount check. Mapper119 stores CHR RAM separately and routes
bank switches appropriately based on bit 6.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@bfirsh bfirsh merged commit 5d51ece into main Feb 15, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant