| .00000 | .10000 | .20000 | .30000 | .40000 | .50000 | .60000 | .70000 | .80000 | .90000 | .A0000 | .B0000 | .C0000 | .D0000 | .E0000 | .F0000 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0..... | Program Rom* (maximum size?) | |||||||||||||||
| 1..... | ||||||||||||||||
| 2..... | ||||||||||||||||
| 3..... | ||||||||||||||||
| 4..... | Work Ram | Color Ram | Address Reflect | Fio Registers | Timer Register | Work Ram | ||||||||||
| 5..... | ||||||||||||||||
| 6..... | Graphics Ram | Fdp Regs | Graphics Ram | Fdp Regs | ||||||||||||
| 7..... | ||||||||||||||||
| 8..... | ||||||||||||||||
| 9..... | ||||||||||||||||
| A..... | ||||||||||||||||
| B..... | ||||||||||||||||
| C..... | Dual-Port Ram | Sound Reset | ||||||||||||||
| D..... | ||||||||||||||||
| E..... | ||||||||||||||||
| F..... | ||||||||||||||||
The actual (non-mirrored) size of each region is shown in green, if visible
| Name | Address Bits | Address Space | Width | R/W | Start | Real Size |
|---|---|---|---|---|---|---|
| Program Rom | [ | data/prg* | 32-bit | R* | ||
| Work Ram | [ [ | data/? | 32-bit | R/W | ||
| Color Ram | [ | data/? | 32-bit | R/W | ||
| Address Reflect? | [ | data/? | 8-bit? | R? | ||
| Fio Registers | [ | data/? | 8-bit | R/W | ||
| Timer Register | [ | data/? | 16-bit? | R/W | ||
| Graphics Ram | [ | data/prg? | 16-bit | R/W | ||
| Fdp Registers | [ | data/? | 16-bit | R/W | ||
| Dual-Port Ram | [ | data/? | 8-bit | R/W | ||
| Sound Reset Clear | [ | data/? | 32-bit | W? | N/A | |
| Sound Reset Assert | [ | data/? | 32-bit | W? | N/A |
*The size and mapping of program rom depends on the cartridge. (but i think all extant games are basically the same. EXCEPT: Kirameki, which detects writes near address $300000 and switches the audio cpu program rom banks accordingly (TODO))
address bits legend:
0/1.aA
Accessing unmapped addresses will freeze the cpu, not trigger a bus error
The fdp registers occupy exactly
Color ram is mapped as 32-bit, but the first (highest) byte of each long-word is not connected to ram
Reading from "Address Reflect" returns the low byte of the address as data