[21]consolegfx.txt
Console Graphics Document Author: Klarth Contact: stevemonaco@hotmail.com http://rpgd.emulationworld.com/klarth Started on July 18, 2000 Version 0.7 - January 2, 2000 -- Initial Release covering 11 of the most common console graphic formats I. Table of Contents 1. Introduction and Terminology 2.
Read moreRead less
Console Graphics Document
Author: Klarth
Contact: stevemonaco@hotmail.com
http://rpgd.emulationworld.com/klarth
Started on July 18, 2000
Version 0.7 - January 2, 2000
-- Initial Release covering 11 of the most common console graphic formats
I. Table of Contents
1. Introduction and Terminology
2. 1BPP NES/Monochrome
3. 2BPP NES
4. 2BPP SNES/Gameboy/GBC
5. 3BPP SNES
6. 4BPP SNES/PC Engine
7. 8BPP SNES
8. Mode 7 SNES
9. 2BPP NGPC
10. 2BPP Virtual Boy
11. 4BPP SMS/Game Gear/WSC
12. 4BPP Genesis/x68k
13. Thanks Section
_______________________________________________________________________________________________
1. Introduction and Terminology
-----A. Introduction
There was a period when I didn't even look at this document for probably two or three
months, particularly after when I forced myself to do nearly all of the SNES formats.
This document really isn't for somebody beginning to learn graphics but rather for
somebody with a fairly strong bitmap graphic knowledge and to use this as a reference.
If you wish to put this document on your site, please contact me for authorization
*before* you post this file on your site. If I seem to "magically" disappear from the
scene, you may post this document *only* in its original form. If you use this doc
please credit me in a thanks section since I just like to see who reads and uses them.
-----B. Terminology
BPP: Bits per pixel.
Xth Bitplane: Tells how many bitplanes deep the pixel or row is; the top layer
is the first bitplane, the one below that is the second, and so on.
[rC: bpD]: row number C (0-7 in a 8x8 tile), bitplane number D (starting at 1).
[pA-B rC: bpD]: pixels A-B (leftmost pixel is 0), row number C (0-7 in a 8x8 tile),
bitplane number D (starting at 1. bp* means it's a linear format and stores the
bitplanes one after another bp 1 to bp Max.)
_______________________________________________________________________________________________
2. 1BPP NES/Monochrome
Colors Per Tile - 0-1
Space Used - 1 bit per pixel. 8 bytes per 8x8 tile.
Note: This is a tiled, linear bitmap format.
Each pair represents one byte
Format:
[r0, bp1], [r1, bp1], [r2, bp1], [r3, bp1], [r4, bp1], [r5, bp1], [r6, bp1], [r7, bp1]
Short Description:
The first bitplane is stored row by row, very simple.
_______________________________________________________________________________________________
3. 2BPP NES
Colors Per Tile - 0-3
Space Used - 2 bits per pixel. 16 bytes per 8x8 tile.
Note: This is a tiled, planar bitmap format.
Each pair represents one byte
Format:
[r0, bp1], [r1, bp1], [r2, bp1], [r3, bp1], [r4, bp1], [r5, bp1], [r6, bp1], [r7, bp1]
[r0, bp2], [r1, bp2], [r2, bp2], [r3, bp2], [r4, bp2], [r5, bp2], [r6, bp2], [r7, bp2]
Short Description:
Bitplane 1 is stored row by row and then bitplane 2 is stored row by row.
_______________________________________________________________________________________________
4. 2BPP SNES/Gameboy/GBC
Colors Per Tile - 0-3
Space Used - 2 bits per pixel. 16 bytes per 8x8 tile.
Note: This is a tiled, planar bitmap format.
Each pair represents one byte
Format:
[r0, bp1], [r0, bp2], [r1, bp1], [r1, bp2], [r2, bp1], [r2, bp2], [r3, bp1], [r3, bp2]
[r4, bp1], [r4, bp2], [r5, bp1], [r5, bp2], [r6, bp1], [r6, bp2], [r7, bp1], [r7, bp2]
Short Description:
Bitplanes 1 and 2 are intertwined row by row.
_______________________________________________________________________________________________
5. 3BPP SNES
Colors Per Tile - 0-7
Space Used - 3 bits per pixel. 24 bytes for a 8x8 tile.
Note: This is a tiled, planar bitmap format.
Each pair represents one byte.
Format:
[r0, bp1], [r0, bp2], [r1, bp1], [r1, bp2], [r2, bp1], [r2, bp2], [r3, bp1], [r3, bp2]
[r4, bp1], [r4, bp2], [r5, bp1], [r5, bp2], [r6, bp1], [r6, bp2], [r7, bp1], [r7, bp2]
[r0, bp3], [r1, bp3], [r2, bp3], [r3, bp3], [r4, bp3], [r5, bp3], [r6, bp3], [r7, bp3]
Short Description:
Bitplanes 1 and 2 are stored first, intertwined row by row. Then the third bitplane is
stored row by row. This format isn't used by many games since it's actually a type of
compression, because the SNES doesn't natively support the 3BPP format. There is a routine
that inserts the fourth bitplane before or while it's being transferred to VRAM so that it
can be used by the SNES.
_______________________________________________________________________________________________
6. 4BPP SNES/PC Engine
Colors Per Tile - 0-15
Space Used - 4 bits per pixel. 32 bytes for a 8x8 tile.
Note: This is a tiled, planar bitmap format.
Each pair represents one byte
Format:
[r0, bp1], [r0, bp2], [r1, bp1], [r1, bp2], [r2, bp1], [r2, bp2], [r3, bp1], [r3, bp2]
[r4, bp1], [r4, bp2], [r5, bp1], [r5, bp2], [r6, bp1], [r6, bp2], [r7, bp1], [r7, bp2]
[r0, bp3], [r0, bp4], [r1, bp3], [r1, bp4], [r2, bp3], [r2, bp4], [r3, bp3], [r3, bp4]
[r4, bp3], [r4, bp4], [r5, bp3], [r5, bp4], [r6, bp3], [r6, bp4], [r7, bp3], [r7, bp4]
Short Description:
Bitplanes 1 and 2 are stored first, intertwined row by row. Then bitplanes 3 and 4
are stored, intertwined row by row.
_______________________________________________________________________________________________
7. 8BPP SNES
Colors Per Tile - 0-255
Space Used - 8 bits per pixel. 64 bytes for a 8x8 tile.
Note: This is a tiled, planar bitmap format.
Each pair represents one byte.
Format:
[r0, bp1], [r0, bp2], [r1, bp1], [r1, bp2], [r2, bp1], [r2, bp2], [r3, bp1], [r3, bp2]
[r4, bp1], [r4, bp2], [r5, bp1], [r5, bp2], [r6, bp1], [r6, bp2], [r7, bp1], [r7, bp2]
[r0, bp3], [r0, bp4], [r1, bp3], [r1, bp4], [r2, bp3], [r2, bp4], [r3, bp3], [r3, bp4]
[r4, bp3], [r4, bp4], [r5, bp3], [r5, bp4], [r6, bp3], [r6, bp4], [r7, bp3], [r7, bp4]
[r0, bp5], [r0, bp6], [r1, bp5], [r1, bp6], [r2, bp5], [r2, bp6], [r3, bp5], [r3, bp6]
[r4, bp5], [r4, bp6], [r5, bp5], [r5, bp6], [r6, bp5], [r6, bp6], [r7, bp5], [r7, bp6]
[r0, bp7], [r0, bp8], [r1, bp7], [r1, bp8], [r2, bp7], [r2, bp8], [r3, bp7], [r3, bp8]
[r4, bp7], [r4, bp8], [r5, bp7], [r5, bp8], [r6, bp7], [r6, bp8], [r7, bp7], [r7, bp8]
Short Description:
Bitplanes 1 and 2 are stored first, intertwined row by row. Bitplanes 3 and 4 are stored
next intertwined row by row. Then Bitplanes 5 and 6 intertwined row by row. Finally,
Bitplanes 7 and 8 are stored intertwined row by row.
_______________________________________________________________________________________________
8. Mode 7 SNES
Colors Per Tile - 0-255
Space used - 8 bits per pixel. 64 bytes for a 8x8 tile.
Note: This is a tiled, linear bitmap format.
Each pair represents 1 byte.
Format:
[p0 r0: bp!], [p1 r0: bp!], [p2 r0: bp!], [p3 r0: bp!]
[p4 r0: bp!], [p5 r0: bp!], [p6 r0: bp!], [p7 r0: bp!]
[p0 r1: bp!], [p1 r1: bp!], [p2 r1: bp!], [p3 r1: bp!]
[p4 r1: bp!], [p5 r1: bp!], [p6 r1: bp!], [p7 r1: bp!]
...
[p0 r7: bp!], [p1 r7: bp!], [p2 r7: bp!], [p3 r7: bp!]
[p4 r7: bp!], [p5 r7: bp!], [p6 r7: bp!], [p7 r7: bp!]
Short Description:
Each pixel has it's bitplanes stored right after another, so each byte directly references
a palette color without needing to "combine" the bitplanes.
_______________________________________________________________________________________________
9. 2BPP Neo Geo Pocket Color
Colors Per Tile - 0-3
Space Used - 2 bits per pixel. 16 bytes per 8x8 tile.
Note: This is a tiled, linear bitmap format.
Each group represents one byte
Format:
[p4-7 r0: bp*], [p0-3 r0: bp*], [p4-7 r1: bp*], [p0-3 r1: bp*]
[p4-7 r2: bp*], [p0-3 r2: bp*], [p4-7 r3: bp*], [p0-3 r3: bp*]
[p4-7 r4: bp*], [p0-3 r4: bp*], [p4-7 r5: bp*], [p0-3 r5: bp*]
[p4-7 r6: bp*], [p0-3 r6: bp*], [p4-7 r7: bp*], [p0-3 r7: bp*]
Short Description:
To simplify, this is merely a mirror image of the 2BPP Virtual Boy format. Another
explanation would be to say that it's in Little Endian instead of Big Endian.
This is a linear format, so each pixel has it's bitplanes stored consecutively and then
moves to the next pixel's bitplanes, stored consecutively. Probably the easiest example
possible of a linear bitplane format. This format is the same as the Virtual Boy 2BPP
format, except that they are congruent mirror images of each other.
_______________________________________________________________________________________________
10. 2BPP Virtual Boy
Colors Per Tile - 0-3
Space Used - 2 bits per pixel. 16 bytes per 8x8 tile.
Note: This is a tiled, bitmap format.
Each represents one byte
Format:
[p0-3 r0: bp*], [p4-7 r0: bp*], [p0-3 r1: bp*], [p4-7 r1: bp*]
[p0-3 r2: bp*], [p4-7 r2: bp*], [p0-3 r3: bp*], [p4-7 r3: bp*]
[p0-3 r4: bp*], [p4-7 r4: bp*], [p0-3 r5: bp*], [p4-7 r5: bp*]
[p0-3 r6: bp*], [p4-7 r6: bp*], [p0-3 r7: bp*], [p4-7 r7: bp*]
Short Description:
To simplify, this is merely a mirror image of the 2BPP NGPC format. This is probably the
easiest example of a linear bitplane format. It is stored pixel by pixel and row by row.
This format is the same as the Virtual Boy 2BPP format, except that they are congruent
mirror images of each other.
_______________________________________________________________________________________________
11. 4BPP Game Gear/Sega Master System/Wonderswan Color
Colors Per Tile - 0-15
Space Used - 4 bits per pixel. 32 bytes per 8x8 tile.
Note: This is a tiled, linear bitmap format.
Each pair represents one byte
Format:
[r0, bp1], [r0, bp2], [r0, bp3], [r0, bp4], [r1, bp1], [r1, bp2], [r1, bp3], [r1, bp4]
[r2, bp1], [r2, bp2], [r2, bp3], [r2, bp4], [r3, bp1], [r3, bp2], [r3, bp3], [r3, bp4]
[r4, bp1], [r4, bp2], [r4, bp3], [r4, bp4], [r5, bp1], [r5, bp2], [r5, bp3], [r5, bp4]
[r6, bp1], [r6, bp2], [r6, bp3], [r6, bp4], [r7, bp1], [r7, bp2], [r7, bp3], [r7, bp4]
Short Description:
Bitplanes 1, 2, 3, and 4 are intertwined and stored row by row.
_______________________________________________________________________________________________
12. 4BPP Genesis/x68k
Colors Per Tile - 0-15
Space Used - 4 bits per pixel. 32 bytes per 8x8 tile.
Note: This is a tiled, big Endian, linear format.
Each pair represents one byte
Format:
[p1-2 r0: bp*], [p2-3 r0: bp*], [p4-5 r1: bp*], [p6-7 r1: bp*]
[p1-2 r2: bp*], [p2-3 r2: bp*], [p4-5 r3: bp*], [p6-7 r3: bp*]
[p1-2 r4: bp*], [p2-3 r4: bp*], [p4-5 r5: bp*], [p6-7 r5: bp*]
[p1-2 r6: bp*], [p2-3 r6: bp*], [p4-5 r7: bp*], [p6-7 r7: bp*]
Short Description:
Bitplanes 1, 2, 3, and 4 are intertwined and stored pixel by pixel.
_______________________________________________________________________________________________
13. Thanks Section
(wraith) - For showing me a more compact way of explaining how graphics are stored, which I
expanded on a bit. As well as SNES 3BPP information and other things.
Neil_ - His basic SNES graphics document taught me a bit more about bitmapped graphics.
prez - His NES graphics document taught me the basics of bitmapped graphics.
Retro Replay Retro Gaming History, Reviews & Emulation