176 lines
6.7 KiB
Plaintext
176 lines
6.7 KiB
Plaintext
----------------------------
|
|
By DAX on 28/2/93
|
|
|
|
This is a short text file on how the data for the gfx on the SNES are
|
|
set up..
|
|
Everything is based around an 8x8 pixel 'Tile' and thinking in terms of
|
|
tiles makes the whole thing a lot easier.
|
|
|
|
4 Colour mode - 2 Bitplanes
|
|
---------------------------
|
|
If you split the screen into 8x8 pixel tiles, the order of the graphics data
|
|
is tile 0,1,2,3,4 etc.(with tile 0 being the first, and 1 being the one on
|
|
the right of it.)
|
|
|
|
Then for each tile, the data is stored as shown below.
|
|
00 01 02 03 04 05 06 07
|
|
10 11 12 13 14 15 16 17 Each number representing one pixel in
|
|
20 21 22 23 24 25 26 27 the 8x8 tile.
|
|
30 31 32 33 34 35 36 37
|
|
40 41 42 43 44 45 46 47
|
|
50 51 52 53 54 55 56 57
|
|
60 61 62 63 64 65 66 67
|
|
70 71 72 73 74 75 76 77
|
|
|
|
The data is stored in the SNES binary in the following format.
|
|
Bitplane 0 .. Line 00-07 (One Byte)
|
|
Line 10-17
|
|
Line 20-27
|
|
Line 30-37
|
|
Line 40-47
|
|
Line 50-57
|
|
Line 60-67
|
|
Line 70-77
|
|
then Bitplane 1 .. Line 00-07
|
|
Line 10-17
|
|
Line 20-27
|
|
Line 30-37
|
|
Line 40-47
|
|
Line 50-57
|
|
Line 60-67
|
|
Line 70-77
|
|
then comes the data for the next tile (the one on the right).etc.
|
|
|
|
16 Colour - 4 Bitplanes
|
|
-----------------------
|
|
The data for this mode is stored in the same format, with one main change.
|
|
The data is stored in the format
|
|
Bitplane 0 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 1 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 2 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 3 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
then the data for the next tile.
|
|
|
|
256 Colour - 8 Bitplanes
|
|
------------------------
|
|
This is simply an expansion of the 4 and 16 colour modes.
|
|
Bitplane 0 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 1 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 2 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 3 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 4 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 5 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 6 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
Bitplane 7 .. Line 00-07
|
|
|
|
|
Line 70-77
|
|
|
|
then the data for the next tile.
|
|
|
|
256 Colours - Mode 7 format
|
|
---------------------------
|
|
This has some very major differences to the other graphics data formats
|
|
|
|
there are two mode7 modes, normal and EXTBG, the data is stored in the
|
|
same way in both, apart from in EXTBG the Bitplane 7 value will be a
|
|
priority bit for the pixel, which cuts the colours down to 128.
|
|
|
|
Each byte of 'graphics data' is actually the colour value for that pixel
|
|
on the screen, so if the value is 64, then the colour of that pixel will
|
|
be the contents of colour register 64.
|
|
|
|
The data is stored in VRAM differently to the other modes, with the tile
|
|
numbers, and the graphics data 'interleaved', starting at $0000 in VRAM,
|
|
with alternate bytes containing one byte of tile, one byte of gfx - this
|
|
is shown below.
|
|
|
|
Word of VRAM. HI LO
|
|
Bit 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
|
|
content |------------------------------||------------------------------|
|
|
Graphics data(CHAR DATA) Tile number(NAME)
|
|
|
|
Because of the storing of 16 bit data in reverse format (LO-HI) this means
|
|
that if you set the VRAM addr to $0.the first byte written should be the
|
|
tile name for that position on screen and the second byte should be the first
|
|
byte of the Mode7 graphics data.if the VRAM addr is set to $1 the first byte
|
|
written will be the tile name for that position on scr, and the second byte
|
|
should be the second byte of the mode7 graphics data.
|
|
ETC
|
|
|
|
In mode7 you can only have a maximum of 256 tiles, because of the fact that
|
|
the mode7 data only takes up the first half of VRAM(32k) you can only have 16k
|
|
of graphics data which is 256 tiles of 8x8 with 256 colours.
|
|
This is quite a limitation, but can be used quite effectively.
|
|
|
|
The tile numbers are stored in a format according to a 128x128 tile screen
|
|
so tile 128($80) would be the tile below 0($0) on the screen, and so on.
|
|
so VRAM addr $0 is the top left tile, and $1 is the one on the right of it
|
|
$80 is the one on the left side, one row down.
|
|
|
|
the graphics data is stored based on an 8x8 tile again.
|
|
but slightly different.
|
|
Each byte(pixel) is stored so...
|
|
Bit number Contents
|
|
0 Bitplane 0 pixel value
|
|
1 Bitplane 1 pixel value
|
|
2 Bitplane 2 pixel value
|
|
3 Bitplane 3 pixel value
|
|
4 Bitplane 4 pixel value
|
|
5 Bitplane 5 pixel value
|
|
6 Bitplane 6 pixel value
|
|
7 Bitplane 7 pixel value /
|
|
(EXTBG mode - Priority value)
|
|
|
|
The data is then stored in the sequence
|
|
00,01,02,03,04,05,06,07
|
|
10,11,12,13,14,15,16,16 (Look at diagram at start of file
|
|
| | | for explanation)
|
|
70,71,72,73,74,75,76,77
|
|
|
|
with one byte for each position(pixel), according to the 8x8 tile format,
|
|
with one tile after another.
|
|
|
|
---------------------------------------------------------------------------
|
|
I hope this text file helps those of you having trouble converting graphics
|
|
for use on the SNES, I have been asked a few times recently for this info
|
|
so I decided to type up this short text file on it.
|
|
Hopefully it should explain it!
|
|
|
|
If you have any further questions contact :-
|
|
Dax or Corsair
|
|
|
|
|