A custom Game Boy Camera/Pocket Camera ROM for CGB/GBA/GBASP that runs by cartswapping.
It can be used to manuall 880D y modify registers that the original camera software could not, without needing to use a flash cart custom-built for the Game Boy Camera. If you have one of these custom carts, you'll probably want to use Photo! for more features and a better user experience.
Currently, it is missing several important features.
- Modify the camera registers and contrast setting
- Take a picture
- Remote control over the link cable
- Gallery to view and delete pictures
- Autoexposure
- Assisted mode similar to Photo!
- DMG support. This includes the original Game Boy / Pocket / Light / Super Game Boy 1 and 2. The DMG does not have enough RAM to store the entire payload, and we use CGB-exclusive features like DMA transfers and rotation. Though conceivably possible (and definitely possible for the SGB!), no support for these platforms is planned.
Download the appropriate release from our releases page, flash it onto a flash cart, and run it on your Game Boy Color/Advance/Game Boy Advance SP. When you see the screen that says "Press A to play," carefully remove the flash cart, insert your Game Boy Camera cart, and press any button. If for some reason you want to run it in an emulator, only some emulators support both the Game Boy Camera AND yanking Game Paks while the game is running. BGB or Sameboy are recommended.
- A: Take a photo. Once the viewfinder has stopped changing, pressing B again will save the picture, and pressing A will discard it.
- Select+Up: Switch to stock software stored on the ROM, allowing you to access the gallery, take a photo with the stock software's autoexposure, or print (printing is currently untested, but should work). You can return to Silihcam by holding SELECT+DOWN.
The camera registers are best described in the readme for Photo!, in AntonioND's Game Boy Camera Technical Information document, and in the sensor datasheet.
- M: Selects the edge enhancement mode (0: None, 1: Horizontal, 2: Vertical, or 3: 2D) using camera registers N and VH.
- C: Exposure Time (in steps of 16μS). Determines how long the sensor collects light before being read out.
- O: Output reference voltage. This is essentially the same as V, but changes the output voltage bias by smaller steps. In practice, increasing this value leads to all pixels looking 'brighter' to the MAC-GBD chip.
- G: Gain. Higher values need less light but produce a noiser image. Lower values need more light but produce a cleaner image.
- E: Edge Enhancement ratio. The higher it is, the more filtering will be done to make edges stand out in the image.
- V: Output node bias voltage (Vref), in steps of 0.5V. The original software always sets this to 3 (1.5V). In practice, increasing this value leads to all pixels looking 'brighter' to the MAC-GBD chip. Changing this may set the voltage the sensor outputs outside of the range of the MAC-GBD's analog-to-digital converter.
- Contrast: Determines what values are used in the dither table and how close together the values are to each other.
- Dither Table: The ROM has 3 tables of base values used for dithering: 0 for low light conditions, 1 for high light conditions, and 2 unused.
Silihcam can be controlled remotely by another Game Boy over the link cable port. This is useful for taking stabilized shots.
When the Silihcam cart is run on a device that is not CGB-compatible, pressing a button will instead launch the remote controller. It can also be launched on a CGB-compatible device by pressing a button in the launcher without cartswapping.
- Install RGBDS 0.6.1 and GNU Make (most systems already have this installed)
- Download or git clone this repository
- Navigate to the root folder (the one that has a file called Makefile in it)
- Run "make". The generated .gbc file can be found in the bin folder, along with a .sym file for debugging.
To recompile, run "make clean" before running make.
- The contributors to the GBDev Pan Docs.
- Toxa for help and for developing Photo!.
- HerrZatacke for help, developing 2bit PXLR Studio, and for the extensive dithering documentation.
- Lorenzooone, for force-gb-mode, a substantial portion of which is used as a loader for the payload.
- damieng for the 8-bit font.
- All of the members of the Game Boy development community and the Game Boy Camera Club Discord server.