LCD Controller Overview
The Pokemon Mini LCD is a serial display with it's own on-board framebuffer, and display settings. These are all abstracted by the PRC, which handles display copies ($1000 ~ $12FF) and other various functions. No commercial roms directly access the display, relying on the PRC and BIOS to perform the various communications. This allows for the PM to have hardware changes without having to rely on the same display controller.
The display is driven by two data ports, $20FE and $20FF. Both ports are read\write, the only difference between them is one sets the CTRL line when accessing the data port on the LCD. The port is 8-bits wide, and has a small set of standard commands.
The LCD is probably using the on-glass controller IC SSD1828 or something very simliar.
The controller got 96x65 Graphic Display Data RAM (GDDRAM). The additional RAM is for an unused symbol driver. The PM most likely uses a parallel interface to the controller, but serial interface might be available on the connector of the LCD.
LCD Controller Commands
|$Bx||Set Row||x = Row (0-7, each is 8px high)|
|$1x||Set Column (high nibble)||x = Column (high nibble)|
|$0x||Set Column (low nibble)||x = Column (low nibble)|
|$81||Set Contrast||Next write sets Constrast Level ($00-$3F)|
|1010 011x||Invert Display select||x = 0 (normal) or 1 (invert)|
|1010 111x||Display ON/OFF||x = 0 (off) or 1 (on)|
|1010 010x||Entire Display ON/OFF||x = 0 (normal) or 1 (all Pixels on)|