Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ Here are some of the markdown rules:
* **No line between heading and first paragraph** - the next line after a heading should always be the first paragraph of the section
* **Never use numbered lists** - Just use `*` for all unordered lists.
* **Short inline code** - If the code is short, wrap it with backticks (e.g. `eax, 0x00`).
* **Don't mix bold and inline code** - Avoid `**\`literal\`**` styling. Use backticks for literals (commands, file names, extensions) and bold for emphasis, but not both at the same time.
* **HR before H2/H3** - Have an HR before HR/H3 but only if its not the first sub heading under a heading


Expand Down
56 changes: 54 additions & 2 deletions pages/consoles/gameboy/GameBoyFileFormats.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ recommend:
- gameboy
- fileformats
editlink: /consoles/gameboy/GameBoyFileFormats.md
updatedAt: '2026-03-28'
updatedAt: '2026-04-04'
excerpt: Find out about the most common Game Boy File formats in this post
---

Expand Down Expand Up @@ -90,6 +90,59 @@ The broad pattern is that Nintendo's Game Boy projects often kept graphics, colo
The most important refinement now is that the extension alone does not tell you whether a graphics bank is monochrome or color.
A `.CGX` file in a DMG-targeted workspace can still be ordinary 2bpp Game Boy tile data, while the matching `.SCR` and `.COL` files tell you how that bank was actually being laid out or colored inside the editor pipeline.

---
## IS-CGB-CAD data formats
The IS-SUPPORT leak material includes an `IS-CGB-CAD` tool distribution with a small set of internal file formats documented in Japanese as `DCG`, `DSC`, `DOB`, and `DCL`.
These are useful because they spell out the exact bit packing for Game Boy Color tile data, per-tile attributes, and object layout.

The formats line up closely with what the hardware expects on CGB.
They also clarify why the same project can carry both SNES-like CAD extensions (`CGX`, `COL`, `SCR`) and more directly named Game Boy specific blobs in the same workflow.

### DCG format - Tile Data
`DCG` is a tile + attribute + color bundle used by the CAD tool.

Range | Size | Meaning
---|---:|---
0x0000-0x17FF | 0x1800 | Character (tile) data
0x1800-0x197F | 0x0180 | Attributes (palette info in IS-CGB-CAD)
0x1980-0x19FF | 0x0080 | Color data

The character data is classic Game Boy 2bpp tiles: 16 bytes per 8x8 tile, with 2 bytes per row (low bitplane byte then high bitplane byte).

This plays the same role as SNES `CGX` (a raw tile bank), but the packing is different: Game Boy uses 2bpp row pairs, while SNES `CGX` is planar bitplanes (commonly 4bpp).

### DSC format - Screen Data
`DSC` is a background screen map in the same split form that the CGB hardware uses: one byte of tile index per cell and one byte of attributes per cell.

Range | Size | Meaning
---|---:|---
0x0000-0x03FF | 0x0400 | Character code (tile index)
0x0400-0x07FF | 0x0400 | Attribute byte

The attribute byte is documented with this bit layout:

Bits | Meaning
---|---
0-2 | CGB palette index
3 | character bank select
4 | unused (but used inside IS-CGB-CAD)
5 | horizontal flip
6 | vertical flip
7 | priority (0: follow OBJ-side priority, 1: BG highest priority)

This plays the same role as SNES `SCR` (a background tilemap), but the storage model differs: SNES packs tile index and attributes into 16-bit words, while CGB splits the tile index and attributes into separate byte arrays.

### DCL format - Palette data
`DCL` is a small palette block. It stores 2 bytes per color with 5 bits each for R, G, and B.


### DOB format - Object Data
`DOB` is a chunked object and animation container with tagged blocks like `"CGB "`, `"ANIM"`, `"GRP "`, `"SIZE"`, `"LINK"`, `"VER "`, and `"END "`.
Unlike many SNES CAD blobs that are fixed-size record regions, `DOB` is explicitly variable-length and carries its own version and filename link table.

If you are comparing this to the SNES CAD families, `DSC` is closest to `SCR` (BG tilemap), while `DOB` is closer to `OBJ`/`OBX` (object placement plus animation-related data).


---
## ICE and Debugger Support Files
Some of the strangest extensions in the leak make more sense once you look at the debugger workflow rather than the game code alone.
Expand Down Expand Up @@ -121,4 +174,3 @@ Tool | Role
`isas32` | Later assembler used heavily in Color-era branches
`islk32` | Later linker used with the newer assembler flow
`isd` | Debugger front end used with ICE startup scripts and debugger images

89 changes: 72 additions & 17 deletions pages/consoles/gameboy/GameBoySDK.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ recommend:
- gameboy
- sdk
editlink: /consoles/gameboy/GameBoySDK.md
updatedAt: '2020-01-11'
updatedAt: '2026-04-04'
---

# Official Game Boy Software Development Kit (by Intelligent Systems)
Expand All @@ -41,28 +41,84 @@ The official manual for the Software Development Kit was uploaded to archive.org
[Game Boy Development Manual V1.1 : Nintendo : Free Download, Borrow, and Streaming : Internet Archive](https://archive.org/details/GameBoyProgManVer1.1)

---
## Tools included
# Tools in the SDK
Just before the Intelligent Systems development FTP server was shut down, someone managed to backup the contents of the Game Boy color sdk and the files that were saved are as follows:
* IS-CGB-SDK.7z - Software development kit (libraries etc)
* IS-CGB-EMULATOR.7z - Color Game Boy Emulator
* IS-CGB-DEBUGGER.7z - Game Boy debugger
* IS-CGB-CAD.7z - Character/Graphics development tool
* IS-CGB-CHARACTER.7z - Character/Graphics development tool
* IS-CGB-CHARACTER Documentation.7z - Documentation for the CAD graphics tool

### Intelligent Systems Assembler (ISAS)
## Intelligent Systems Assembler (ISAS)
To assemble your GameBoy source code into Z80 machine code you could use the official Nintendo (Intelligent Systems) assembler and linker, **ISAS** and **ISLK** respectively.
*Last Known Version*: ISAS 1.26 / ISLK 1.26 (1999/10/26)

### Intelligent Systems eXecutable - ISX and CVTISX
## Intelligent Systems eXecutable - ISX and CVTISX
ISX is the format that the Assembler (ISAS) compiles the programs into, it is a compressed version of the rom, to convert it into a standard Game Boy rom you need to run it through CVTISX (ConvertISX).

### Intelligent Systems Character Designer (IS-CGB-CAD or DMG-CAD)
The archive only seems to contains the **IS-CGB-CAD** tool, which I presume is some sort of graphics/map editor. Graphics, Sprites and Tiles are known as "characters" for the GameBoy.
## Intelligent Systems CAD Tool (IS-CGB-CAD or DMG-CAD)
![IS-CGB-Character After importing CGX from DMG Zelda](/public/images/GameBoy/IS-CGB-Character-Importing-CGX-from-DMG-Zelda.png)
The archive only seems to contains the **IS-CGB-CAD** tool, which is a CAD (COmputer Aided Design) tool for graphics, sprites and Tiles, which are known as are known as "characters" for the GameBoy.
Its known as a Character development system.
So I presume it stands for Intelligent Systems Character A??? Designer or Development

### Others
Just before the Intelligent Systems development FTP server was shut down, someone managed to backup the contents of the Game Boy color sdk and the files that were saved are as follows:
* IS-CGB-SDK.7z - Software development kit (libraries etc)
* IS-CGB-EMULATOR.7z - Color Game Boy Emulator
* IS-CGB-DEBUGGER.7z - Game Boy debugger
* IS-CGB-CAD.7z - Character/Graphics development tool
* IS-CGB-CHARACTER.7z - Character/Graphics development tool
* IS-CGB-CHARACTER Documentation.7z - Documentation for the CAD graphics tool

Based on the `IS-CGB-CHARACTER-000703jp.exe` installer found in the IS-SUPPORT leak material, the CAD tool payload includes the following notable files:

Path in installer | What it is
---|---
`Program Executable Files\\ISCGBCAD.exe` | Main Win32 CAD editor executable
`Program Executable Files\\Iscgbcad.com` | 12 KB companion program (purpose unclear without deeper RE)
`Shared DLLs\\ISCGB.DLL` | Main shared DLL shipped with the tool
`Help Files (Japanese)\\FORMAT.TXT` | Japanese format notes (documents `DCG`, `DSC`, `DOB`, `DCL`)
`Help Files (Japanese)\\help\\*.html` | Japanese HTML help set for the editor UI
`Example Files\\O2T.C` | Small C example shipped with the installer

The `FORMAT.TXT` file is especially valuable because it gives concrete byte layouts and bitfields:
* `DCG` - a combined tile + attributes + color bundle (2bpp tile data plus palette metadata)
* `DSC` - a screen map with one byte of tile index plus one byte of attributes per cell (the split map model used by CGB)
* `DOB` - a chunked object and animation container with tagged blocks like `"CGB "`, `"ANIM"`, `"GRP "`, `"SIZE"`, `"LINK"`, `"VER "`, and `"END "`
* `DCL` - a small packed RGB555 palette block (2 bytes per color)

The executable payload also reveals how the editor talks to Nintendo's emulator / hardware layer.

Editor component | What it does
---|---
`ISCGBCAD.exe` | The Windows GUI editor. It loads `iscgb.dll` at runtime and resolves the `CGB*` API via `GetProcAddress`.
`ISCGB.DLL` | A shared DLL that exports the `CGB*` API used by the editor.
`Iscgbcad.com` | Despite the `.com` extension, this is a small CGB ROM image with the title `IS-CGB-CAD PIC`. The Windows editor looks for it and shows an error if it is missing.

The `ISCGB.DLL` export table includes these named entry points:

Export name | Likely role
---|---
`CGBOpen` | Open a connection / session
`CGBClose` | Close a connection / session
`CGBRead` | Read from the target
`CGBWrite` | Write to the target
`CGBSetMBC` | Configure MBC state (banking) for transfers
`CGBGo` | Start / run (or resume) execution
`CGBFindFirst` / `CGBFindNext` / `CGBFindClose` | Enumeration helpers used by the editor UI

The editor also looks up two unnamed exports by ordinal (`8324` and `16345`) in addition to the named ones.

At the strings-and-API level, `ISCGB.DLL` looks like it can use low-level SCSI-style device paths (for example `\\\\.\\SCSI%d:`), and it references `WNASPI32.DLL`, which suggests an ASPI-based transport path for talking to the emulator hardware.

In other words, `ISCGB.DLL` is not just a random dependency: it is the CAD tool's device and transfer layer.
The Windows GUI editor resolves these `CGB*` entry points at runtime and uses them to enumerate available targets, set bank state, and move data to and from the emulator/hardware environment.

When reverse engineering these binaries you will also see a lot of MFC plumbing.
For example, `AfxGetModuleState` is an internal MFC helper that returns a module state pointer (`AFX_MODULE_STATE`) used for resource loading and per-module bookkeeping in MFC-based EXEs, DLLs, and ActiveX controls.

Other shipped components in the installer are also worth calling out, because they hint at the UI layer and the Windows 9x-era driver stack the tool expected:

Component | Where it appears | Notes
---|---|---
VxD driver | `Shared DLLs\\CGBVIEW.VXD` | Windows 9x-style VxD, likely used by the viewer / emulator transport path
SYS companion | `Shared Sys\\Cgbview.sys` | Small `.sys` file shipped alongside the VxD
OCX UI controls | `Program DLLs\\PathBox.ocx`, `Program DLLs\\SolidPalette.ocx` | ActiveX controls likely used for path picking and palette preview UI
Version notes | `Help Files (Japanese)\\version.txt` | Shipped version/change notes for the tool
Bundled runtime DLLs | `Shared DLLs\\Mfc42.dll`, `Msvcrt.dll`, `Oleaut32.dll`, `Olepro32.dll`, `msvcirt.dll` | Redistributed Microsoft runtime components typical of the era

---
## Original Game Boy DMG SDK (Contained in Gigaleak archive called Other.7z)
Expand Down Expand Up @@ -137,7 +193,7 @@ This is a very old Game Boy assembler kit created around 1991 by Gremlin Graphic

The SDK can be downloaded from [Romhacking.net - Utilities - AZ40 GameBoy Assembler Kit](https://www.romhacking.net/utilities/731/).

## Executables included
### Executables included
There are a few executables that can be used in DOS for assembling, debugging and a few sound tools.

Name | Description
Expand All @@ -163,4 +219,3 @@ R.H.C was possibly Richard Hutchison as that was a college of Barry and worked o
# References
[^1]: [Barry Leitch - Video Game Music Preservation Foundation Wiki](http://www.vgmpf.com/Wiki/index.php/Barry%20Leitch#Game_Boy)
[^2]: [Romhacking.net - Utilities - AZ40 GameBoy Assembler Kit](https://www.romhacking.net/utilities/731/)

Loading
Loading