GB Camera Tech Info V1.2 by Jeff F. ----------------------------------- The GameBoy Camera has memory mapped I/O registers in the cart RAM area ($a000-$bfff). The GameBoy Camera also has 16 x 8KByte RAM banks for a total of 128KBytes of cart RAM. Writing a value of $0 to $f to address $4000 selects a cart RAM bank for access. Writing a value of $10 to this address selects the Camera I/O registers instead. Here are the known registers: A000 (R/W) (bit 0 is set low when hardware is ready) A001 (W) A002 (W) A003 (W) A004 (W) A005 (W) A006-A035 (W) Many places in the GameBoy Camera software a 1 is written to bit 0 of $a000. The software then reads this bit and halts until it is set to a 0 by the hardware. It is this halt condition that prevents the GameBoy Camera ROM from executing on GB emulators. Since all of the registers are written but most are never read, there must be some sort of DMA that automatically writes camera output data to cart RAM. Save RAM Format --------------- 0000 - 11fb Scratch pad ram #1 (ignore) 11fc - 1ffb "Game Face" Photo (16x14 tiles) 1ffc - 1fff Scratch pad ram #2 (ignore) Photo #1 2000 - 2dff Large Photo (16x14 tiles) 2e00 - 2eff Small Photo (4x4 tiles) 2f00 - 2fff Photo Info Photo #2 3000 - 3dff Large Photo (16x14 tiles) 3e00 - 3eff Small Photo (4x4 tiles) 3f00 - 3fff Photo Info ... etc ... Photo #30 1f000 - 1fdff Large Photo (16x14 tiles) 1fe00 - 1feff Small Photo (4x4 tiles) 1ff00 - 1ffff Photo Info The Large Photo is stored as standard GB tiles and they are present on the screen in this format: $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1a,$1b,$1c,$1d,$1e,$1f .... $d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$db,$dc,$dd,$de,$df The Small Photo is identical to the large photo but much smaller and is presented like this: $e0,$e1,$e2,$e3 $e4,$e5,$e6,$e7 $e8,$e9,$ea,$eb $ec,$ed,$ee,$ef The format of the Photo Info is not yet known but is not needed for viewing GB camera photos. Photo Info Block ---------------- The last byte of the Photo Info area seems to indicate whether the photo is active or deleted plus area 011b2-011cf seems to be a part of this as well I think. $17 = active, 00010111 $6e = deleted, 01101110 $00 = active, 00000000