Code: Select all
[..01 .... ...0 ....] W
This is the major bank select register.
[..01 .... ...1 .XXX] W
where X is the bank number:
This is the minor bank select register.
[1BBB AAAA AAAA AAAA] R
where B is the bank number, and A is address within bank:
This is the bankswitched PRG ROM.
[1111 1111 1111 1XXX] R
This is the vector ROM, which is fixed.
It overrides the bankswitched PRG ROM.
[010. 1XXX XXXX XXXX] R
where X is an address:
This is a fixed PRG ROM.
[011X XXXX XXXX XXXX] RW
This is PRG RAM.
I believe this would be sufficient to implement a 2A03 only NSF player cartridge (tell me if I missed anything). The code for the player which is always present belongs in the fixed PRG ROM starting at $4800. (For example, the reset, interrupts, and code to clear the RAM) Sixteen bytes of the stack are reserved for the NSF player program, so the PLAY routine and current file number and so on can be stored there (you can also use CIRAM if you need additional RAM).