Skip to content

PM_Registers

Jose I Romero edited this page Dec 6, 2019 · 1 revision

Register Overview

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.

Register Mapping

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

Registers ($2000 to $20FF)

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
Enable

LCD I/O
Enable

$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

Second Counter Control

SEC_CTRL

Reset

Enable

$09

Second Counter Low

SEC_CNT_LO

Counter

$0A

Second Counter Middle

SEC_CNT_MID

Counter

$0B

Second Counter High

SEC_CNT_HI

Counter

$10

Battery Sensor

SYS_BATT

Low Battery

Battery ADC control

Battery ADC threshold value

$18

Timer 1 Prescalars

TMR1_SCALE

Enable Hi

Hi Scalar

Enable Lo

Lo Scalar

$19

Timers Osc. Enable
Timer 1 Osc. Select

TMR1_ENA_OSC
TMR1_OSC

Enable Osc. 1

Enable Osc. 2

2nd Osc. (Hi)

2nd Osc. (Lo)

$1A

Timer 2 Prescalars

TMR2_SCALE

Enable Hi

Hi Scalar

Enable Lo

Lo Scalar

$1B

Timer 2 Osc. Select

TMR2_OSC

2nd Osc. (Hi)

2nd Osc. (Lo)

$1C

Timer 3 Prescalars

TMR3_SCALE

Enable Hi

Hi Scalar

Enable Lo

Lo Scalar

$1D

Timer 3 Osc. Select

TMR3_OSC

2nd Osc. (Hi)

2nd Osc. (Lo)

$20

IRQ Priority 1

IRQ_PRI1

IRQ $03 ~ $04

IRQ $05 ~ $06

IRQ $07 ~ $08

IRQ $09 ~ $0A

$21

IRQ Priority 2

IRQ_PRI2

IRQ $0B ~ $0E

IRQ $13 ~ $14

IRQ $15 ~ $1C

IRQ ??? ($1D ~ $1F?)

$22

IRQ Priority 3

IRQ_PRI3

IRQ $0F~$10

$23

IRQ Enable 1

IRQ_ENA1

IRQ $03

IRQ $04

IRQ $05

IRQ $06

IRQ $07

IRQ $08

IRQ $09

IRQ $0A

$24

IRQ Enable 2

IRQ_ENA2

IRQ $0B

IRQ $0C

IRQ $0D

IRQ $0E

IRQ $13

IRQ $14

$25

IRQ Enable 3

IRQ_ENA3

IRQ $15

IRQ $16

IRQ $17

IRQ $18

IRQ $19

IRQ $1A

IRQ $1B

IRQ $1C

$26

IRQ Enable 4

IRQ_ENA4

IRQ $0F

IRQ $10

IRQ ???

IRQ ???

IRQ $1D

IRQ $1E

IRQ $1F

$27

IRQ Active 1

IRQ_ACT1

IRQ $03

IRQ $04

IRQ $05

IRQ $06

IRQ $07

IRQ $08

IRQ $09

IRQ $0A

$28

IRQ Active 2

IRQ_ACT2

IRQ $0B

IRQ $0C

IRQ $0D

IRQ $0E

IRQ $13

IRQ $14

$29

IRQ Active 3

IRQ_ACT3

IRQ $15

IRQ $16

IRQ $17

IRQ $18

IRQ $19

IRQ $1A

IRQ $1B

IRQ $1C

$2A

IRQ Active 4

IRQ_ACT4

IRQ $0F

IRQ $10

IRQ ???

IRQ ???

IRQ $1D

IRQ $1E

IRQ $1F

$30

Timer 1 Control (Lo)

TMR1_CTRL_L

16-bit Mode

???

Enable

Reset

???

$31

Timer 1 Control (Hi)

TMR1_CTRL_H

???

Enable

Reset

???

$32

Timer 1 Preset (Lo)

TMR1_PRE_L

Preset

$33

Timer 1 Preset (Hi)

TMR1_PRE_H

Preset

$34

Timer 1 Pivot (Lo)

TMR1_PVT_L

Pivot

$35

Timer 1 Pivot (Hi)

TMR1_PVT_H

Pivot

$36

Timer 1 Count (Lo)

TMR1_CNT_L

Count

$37

Timer 1 Count (Hi)

TMR1_CNT_H

Count

$38

Timer 2 Control (Lo)

TMR2_CTRL_L

16-bit Mode

???

Enable

Reset

???

$39

Timer 2 Control (Hi)

TMR2_CTRL_H

???

Enable

Reset

???

$3A

Timer 2 Preset (Lo)

TMR2_PRE_L

Preset

$3B

Timer 2 Preset (Hi)

TMR2_PRE_H

Preset

$3C

Timer 2 Pivot (Lo)

TMR2_PVT_L

Pivot

$3D

Timer 2 Pivot (Hi)

TMR2_PVT_H

Pivot

$3E

Timer 2 Count (Lo)

TMR2_CNT_L

Count

$3F

Timer 2 Count (Hi)

TMR2_CNT_H

Count

$40

256Hz Timer Control

TMR256_CTRL

Reset

Enable

$41

256Hz Timer Counter

TMR256_CNT

Count

$44

Unknown

???

???

???

$45

Unknown

???

???

???

???

???

$46

Unknown

???

$47

Unknown

???

???

$48

Timer 3 Control (Lo)

TMR3_CTRL_L

16-bit Mode

???

Enable

Reset

???

$49

Timer 3 Control (Hi)

TMR3_CTRL_H

???

Enable

Reset

???

$4A

Timer 3 Preset (Lo)

TMR3_PRE_L

Preset

$4B

Timer 3 Preset (Hi)

TMR3_PRE_H

Preset

$4C

Timer 3 Pivot (Lo)

TMR3_PVT_L

Pivot

$4D

Timer 3 Pivot (Hi)

TMR3_PVT_H

Pivot

$4E

Timer 3 Count (Lo)

TMR3_CNT_L

Count

$4F

Timer 3 Count (Hi)

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

I/O Direction Select

IO_DIR

???

???

IR Disable

Rumble

EEPROM Clock

EEPROM Data

IR Rx

IR Tx

$61

I/O Data Register

IO_DATA

???

???

IR Disable

Rumble

EEPROM Clock

EEPROM Data

IR Rx

IR Tx

$62

Unknown

???

???

$70

Audio Control

AUD_CTRL

???

Mutes audio if not 0!?

$71

Audio Volume

AUD_VOL

Cart Power (1=Off;0=On)

Volume

$80

PRC Stage Control

PRC_MODE

Map Size

Ena Copy

Ena Sprites

Ena Map

Invert Map

$81

PRC Rate Control

PRC_RATE

Frame counter

Rate divider

???

$82

PRC Map Tile Base Low

PRC_MAP_LO

Map Tile Base

$83

PRC Map Tile Base Middle

PRC_MAP_MID

Map Tile Base

$84

PRC Map Tile Base High

PRC_MAP_HI

Map Tile Base

$85

PRC Map Vertical Scroll

PRC_SCROLL_Y

Map Scroll Y

$86

PRC Map Horizontal Scroll

PRC_SCROLL_X

Map Scroll X

$87

PRC Sprite Tile Base Low

PRC_SPR_LO

Sprite Tile Base

$88

PRC Sprite Tile Base Middle

PRC_SPR_MID

Sprite Tile Base

$89

PRC Sprite Tile Base Hi

PRC_SPR_HI

Sprite Tile Base

$8A

PRC Counter

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 Raw Control Byte

LCD_CTRL

LCD Control I/O

$FF

LCD Raw Data Byte

LCD_DATA

LCD Data I/O