-
Notifications
You must be signed in to change notification settings - Fork 3
PM_Registers
The Pokemon Mini maps $2000 ~ $20FF as hardware control registers. This area is reserved for hardware related functions such as video, audio, general purpose timers, hardware I/O and system control.
Much of this address space is mapped as Open-Bus, leading us to beleive that this area is not used for any purpose. Other areas respond to requests but their purpose is yet undetermined.
Registers tend to be controlled on a bit level, so for the sanity purposes, they will be broken down to this level. At any point they are shown spanning multiple columns, that indicates that it is a multi-bit value and should be treated as if they were a number.
The bits themselves come in four flavors: Read-only, Write-Only, Read-Write, and S-R Strobe. Write-Only registers typically return a zero value, and are generally only used for things such as resetting timers. S-R Strobes are used for clearing interrupt events, writting a logical '1' to any bit that is set will result in a bit being cleared, where as '0' leaves them unchanged. Unused bits always return '0'.
Any register not included on this list reads as Open-Bus and will be excluded unless a function has otherwise been determined.
Unused | Read/Write | Read Only | Write Only | S-R Strobe | Read/Write (BIOS, Software only) | Unknown (Read/Write) | Unknown (Weird) | Unknown (Unused) |
Register Map Legend
Address |
Register |
Const Name |
< Bit 7 > |
< Bit 6 > |
< Bit 5 > |
< Bit 4 > |
< Bit 3 > |
< Bit 2 > |
< Bit 1 > |
< Bit 0 > |
---|---|---|---|---|---|---|---|---|---|---|
$00 |
System Control 1 |
SYS_CTRL1 |
Startup Contrast |
Cartridge I/O |
LCD I/O |
|||||
$01 |
System Control 2 |
SYS_CTRL2 |
Ram vector |
Int abort |
Enable cart interrupts |
Power on reset |
Cart type |
|||
$02 |
System Control 3 |
SYS_CTRL3 |
Cart power state |
Cart power required |
Suspend mode |
??? |
RTC Timer valid |
??? |
||
$08 |
SEC_CTRL |
Reset |
Enable |
|||||||
$09 |
SEC_CNT_LO |
Counter |
||||||||
$0A |
SEC_CNT_MID |
Counter |
||||||||
$0B |
SEC_CNT_HI |
Counter |
||||||||
$10 |
Battery Sensor |
SYS_BATT |
Low Battery |
Battery ADC control |
Battery ADC threshold value |
|||||
$18 |
TMR1_SCALE |
Enable Hi |
Hi Scalar |
Enable Lo |
Lo Scalar |
|||||
$19 |
TMR1_ENA_OSC |
Enable Osc. 1 |
Enable Osc. 2 |
2nd Osc. (Hi) |
2nd Osc. (Lo) |
|||||
$1A |
TMR2_SCALE |
Enable Hi |
Hi Scalar |
Enable Lo |
Lo Scalar |
|||||
$1B |
TMR2_OSC |
2nd Osc. (Hi) |
2nd Osc. (Lo) |
|||||||
$1C |
TMR3_SCALE |
Enable Hi |
Hi Scalar |
Enable Lo |
Lo Scalar |
|||||
$1D |
TMR3_OSC |
2nd Osc. (Hi) |
2nd Osc. (Lo) |
|||||||
$20 |
IRQ_PRI1 |
IRQ $03 ~ $04 |
IRQ $05 ~ $06 |
IRQ $07 ~ $08 |
IRQ $09 ~ $0A |
|||||
$21 |
IRQ_PRI2 |
IRQ $0B ~ $0E |
IRQ $13 ~ $14 |
IRQ $15 ~ $1C |
IRQ ??? ($1D ~ $1F?) |
|||||
$22 |
IRQ_PRI3 |
IRQ $0F~$10 |
||||||||
$23 |
IRQ_ENA1 |
IRQ $03 |
IRQ $04 |
IRQ $05 |
IRQ $06 |
IRQ $07 |
IRQ $08 |
IRQ $09 |
IRQ $0A |
|
$24 |
IRQ_ENA2 |
IRQ $0B |
IRQ $0C |
IRQ $0D |
IRQ $0E |
IRQ $13 |
IRQ $14 |
|||
$25 |
IRQ_ENA3 |
IRQ $15 |
IRQ $16 |
IRQ $17 |
IRQ $18 |
IRQ $19 |
IRQ $1A |
IRQ $1B |
IRQ $1C |
|
$26 |
IRQ_ENA4 |
IRQ $0F |
IRQ $10 |
IRQ ??? |
IRQ ??? |
IRQ $1D |
IRQ $1E |
IRQ $1F |
||
$27 |
IRQ_ACT1 |
IRQ $03 |
IRQ $04 |
IRQ $05 |
IRQ $06 |
IRQ $07 |
IRQ $08 |
IRQ $09 |
IRQ $0A |
|
$28 |
IRQ_ACT2 |
IRQ $0B |
IRQ $0C |
IRQ $0D |
IRQ $0E |
IRQ $13 |
IRQ $14 |
|||
$29 |
IRQ_ACT3 |
IRQ $15 |
IRQ $16 |
IRQ $17 |
IRQ $18 |
IRQ $19 |
IRQ $1A |
IRQ $1B |
IRQ $1C |
|
$2A |
IRQ_ACT4 |
IRQ $0F |
IRQ $10 |
IRQ ??? |
IRQ ??? |
IRQ $1D |
IRQ $1E |
IRQ $1F |
||
$30 |
TMR1_CTRL_L |
16-bit Mode |
??? |
Enable |
Reset |
??? |
||||
$31 |
TMR1_CTRL_H |
??? |
Enable |
Reset |
??? |
|||||
$32 |
TMR1_PRE_L |
Preset |
||||||||
$33 |
TMR1_PRE_H |
Preset |
||||||||
$34 |
TMR1_PVT_L |
Pivot |
||||||||
$35 |
TMR1_PVT_H |
Pivot |
||||||||
$36 |
TMR1_CNT_L |
Count |
||||||||
$37 |
TMR1_CNT_H |
Count |
||||||||
$38 |
TMR2_CTRL_L |
16-bit Mode |
??? |
Enable |
Reset |
??? |
||||
$39 |
TMR2_CTRL_H |
??? |
Enable |
Reset |
??? |
|||||
$3A |
TMR2_PRE_L |
Preset |
||||||||
$3B |
TMR2_PRE_H |
Preset |
||||||||
$3C |
TMR2_PVT_L |
Pivot |
||||||||
$3D |
TMR2_PVT_H |
Pivot |
||||||||
$3E |
TMR2_CNT_L |
Count |
||||||||
$3F |
TMR2_CNT_H |
Count |
||||||||
$40 |
TMR256_CTRL |
Reset |
Enable |
|||||||
$41 |
TMR256_CNT |
Count |
||||||||
$44 |
Unknown |
??? |
??? |
??? |
||||||
$45 |
Unknown |
??? |
??? |
??? |
??? |
??? |
||||
$46 |
Unknown |
??? |
||||||||
$47 |
Unknown |
??? |
??? |
|||||||
$48 |
TMR3_CTRL_L |
16-bit Mode |
??? |
Enable |
Reset |
??? |
||||
$49 |
TMR3_CTRL_H |
??? |
Enable |
Reset |
??? |
|||||
$4A |
TMR3_PRE_L |
Preset |
||||||||
$4B |
TMR3_PRE_H |
Preset |
||||||||
$4C |
TMR3_PVT_L |
Pivot |
||||||||
$4D |
TMR3_PVT_H |
Pivot |
||||||||
$4E |
TMR3_CNT_L |
Count |
||||||||
$4F |
TMR3_CNT_H |
Count |
||||||||
$50 |
Unknown |
??? |
||||||||
$51 |
Unknown |
??? |
??? |
|||||||
$52 |
Key-Pad Status (Active 0) |
KEY_PAD |
Power |
Right |
Left |
Down |
Up |
C |
B |
A |
$53 |
Cart Bus |
CART_BUS |
CARD_N |
|||||||
$54 |
Unknown |
??? |
??? |
??? |
??? |
|||||
$55 |
Unknown |
??? |
??? |
|||||||
$60 |
IO_DIR |
??? |
??? |
IR Disable |
Rumble |
EEPROM Clock |
EEPROM Data |
IR Rx |
IR Tx |
|
$61 |
IO_DATA |
??? |
??? |
IR Disable |
Rumble |
EEPROM Clock |
EEPROM Data |
IR Rx |
IR Tx |
|
$62 |
Unknown |
??? |
??? |
|||||||
$70 |
AUD_CTRL |
??? |
Mutes audio if not 0!? |
|||||||
$71 |
AUD_VOL |
Cart Power (1=Off;0=On) |
Volume |
|||||||
$80 |
PRC_MODE |
Map Size |
Ena Copy |
Ena Sprites |
Ena Map |
Invert Map |
||||
$81 |
PRC_RATE |
Frame counter |
Rate divider |
??? |
||||||
$82 |
PRC_MAP_LO |
Map Tile Base |
||||||||
$83 |
PRC_MAP_MID |
Map Tile Base |
||||||||
$84 |
PRC_MAP_HI |
Map Tile Base |
||||||||
$85 |
PRC_SCROLL_Y |
Map Scroll Y |
||||||||
$86 |
PRC_SCROLL_X |
Map Scroll X |
||||||||
$87 |
PRC_SPR_LO |
Sprite Tile Base |
||||||||
$88 |
PRC_SPR_MID |
Sprite Tile Base |
||||||||
$89 |
PRC_SPR_HI |
Sprite Tile Base |
||||||||
$8A |
PRC_CNT |
Count |
||||||||
$8B |
Unknown (returns 0) |
|||||||||
$8C |
Unknown (returns 0) |
|||||||||
$8D |
Unknown (returns 0) |
|||||||||
$8E |
Unknown (returns 0) |
|||||||||
$8F |
Unknown (returns 0) |
|||||||||
$F0 |
Unknown (returns 0) |
|||||||||
$F1 |
Unknown (returns 0) |
|||||||||
$F2 |
Unknown (returns 0) |
|||||||||
$F3 |
Unknown (returns 0) |
|||||||||
$F4 |
Unknown (returns 0) |
|||||||||
$F5 |
Unknown (returns 0) |
|||||||||
$F6 |
Unknown (returns 0) |
|||||||||
$F7 |
Unknown (returns 0) |
|||||||||
$FE |
LCD_CTRL |
LCD Control I/O |
||||||||
$FF |
LCD_DATA |
LCD Data I/O |