External Hardware


This comes in two different blocks. 0x60 is direction select, and 0x61 is pin current.
If a bit in 0x60 is 0, it is inbound, if the bit is 1, it is outbound. Most of the bits should just be static, but EEPROM data needs to be toggled in order to read the data

Bit Description
0 Infrared Data
1 Infrared Data
2 EEPROM data
3 EEPROM clock
4 Rumble
5 Unknown
6 Unknown
7 Unknown


Infrared Data is mirrored, I'm assuming the port is mirrored to allow the bit to be read and write at the same time.

EEPROM access

The EEPROM contains 8192 bytes of data... the last 14 is the user settings block. EEPROM access is a raw bus with the pins mapped to the PM.

Global Settings

Address Description
8178 Enable rumble (0: disabled 1: enabled)
8179 Music volume (0-4)
8180 Sound volume (0-2)
8181 Contrast (0-63, 31 default)
8182 Prior second counter (lo byte)
8183 Prior second counter (med byte)
8184 Prior second counter (high byte)
8185 Years
8186 Months
8187 Days
8188 Hours
8189 Minutes
8190 Seconds
8191 Time Checksum


Most of the global settings are simply there to validate that the internal RTC is valid. The 'prior counter' is a used to verify if the second counter has been reset (the battery died), or overflown (battery has survived .5 years). The other time values are the base time. You add the number of seconds to that, and you get the current real-world time. The time checksum is simply the values of 8182 - 8190 added together.

Good description of EEPROM I/O

Return to Pokemon Mini specifications.