SGDK
A free and open development kit for the Sega Mega Drive
Loading...
Searching...
No Matches
vdp_tile.h
Go to the documentation of this file.
1
12
13#ifndef _VDP_TILE_H_
14#define _VDP_TILE_H_
15
16
17#include "vdp.h"
18#include "dma.h"
19
20
25#define TILE_ATTR_PRIORITY_SFT 15
30#define TILE_ATTR_PALETTE_SFT 13
35#define TILE_ATTR_VFLIP_SFT 12
40#define TILE_ATTR_HFLIP_SFT 11
45#define TILE_ATTR_PRIORITY_MASK (1 << TILE_ATTR_PRIORITY_SFT)
50#define TILE_ATTR_PALETTE_MASK (3 << TILE_ATTR_PALETTE_SFT)
55#define TILE_ATTR_VFLIP_MASK (1 << TILE_ATTR_VFLIP_SFT)
60#define TILE_ATTR_HFLIP_MASK (1 << TILE_ATTR_HFLIP_SFT)
65#define TILE_ATTR_MASK (TILE_ATTR_PRIORITY_MASK | TILE_ATTR_PALETTE_MASK | TILE_ATTR_VFLIP_MASK | TILE_ATTR_HFLIP_MASK)
66
80#define TILE_ATTR(pal, prio, flipV, flipH) (((flipH) << TILE_ATTR_HFLIP_SFT) + ((flipV) << TILE_ATTR_VFLIP_SFT) + ((pal) << TILE_ATTR_PALETTE_SFT) + ((prio) << TILE_ATTR_PRIORITY_SFT))
96#define TILE_ATTR_FULL(pal, prio, flipV, flipH, index) (((flipH) << TILE_ATTR_HFLIP_SFT) + ((flipV) << TILE_ATTR_VFLIP_SFT) + ((pal) << TILE_ATTR_PALETTE_SFT) + ((prio) << TILE_ATTR_PRIORITY_SFT) + (index))
97
113typedef struct
114{
115 u16 compression;
116 u16 numTile;
117 u32 *tiles;
118} TileSet;
119
136typedef struct
137{
138 u16 compression;
139 u16 w;
140 u16 h;
141 u16 *tilemap;
142} TileMap;
143
160
183void VDP_loadTileData(const u32 *data, u16 index, u16 num, TransferMethod tm);
209u16 VDP_loadTileSet(const TileSet *tileset, u16 index, TransferMethod tm);
232void VDP_loadFontData(const u32 *font, u16 length, TransferMethod tm);
257u16 VDP_loadFont(const TileSet *font, TransferMethod tm);
258
279void VDP_loadBMPTileData(const u32 *data, u16 index, u16 w, u16 h, u16 bmp_w);
304void VDP_loadBMPTileDataEx(const u32 *data, u16 index, u16 x, u16 y, u16 w, u16 h, u16 bmp_w);
305
322void VDP_fillTileData(u8 value, u16 index, u16 num, bool wait);
323
345void VDP_clearTileMap(u16 planeAddr, u16 ind, u16 num, bool wait);
365void VDP_fillTileMap(u16 planeAddr, u16 tile, u16 ind, u16 num);
400void VDP_setTileMapData(u16 planeAddr, const u16 *data, u16 ind, u16 num, u16 vramStep, TransferMethod tm);
430void VDP_setTileMapDataEx(u16 planeAddr, const u16 *data, u16 basetile, u16 ind, u16 num, u16 vramStep);
431
451void VDP_setTileMapXY(VDPPlane plane, u16 tile, u16 x, u16 y);
473void VDP_clearTileMapRect(VDPPlane plane, u16 x, u16 y, u16 w, u16 h);
500void VDP_fillTileMapRect(VDPPlane plane, u16 tile, u16 x, u16 y, u16 w, u16 h);
531void VDP_fillTileMapRectInc(VDPPlane plane, u16 basetile, u16 x, u16 y, u16 w, u16 h);
532
571void VDP_setTileMapDataRect(VDPPlane plane, const u16 *data, u16 x, u16 y, u16 w, u16 h, u16 wm, TransferMethod tm);
615void VDP_setTileMapDataRectEx(VDPPlane plane, const u16 *data, u16 basetile, u16 x, u16 y, u16 w, u16 h, u16 wm, TransferMethod tm);
616
651void VDP_setTileMapDataRow(VDPPlane plane, const u16 *data, u16 row, u16 x, u16 w, TransferMethod tm);
691void VDP_setTileMapDataRowEx(VDPPlane plane, const u16 *data, u16 basetile, u16 row, u16 x, u16 w, TransferMethod tm);
728void VDP_setTileMapDataColumnFast(VDPPlane plane, u16* data, u16 column, u16 y, u16 h, TransferMethod tm);
766void VDP_setTileMapDataColumn(VDPPlane plane, const u16 *data, u16 column, u16 y, u16 h, u16 wm, TransferMethod tm);
810void VDP_setTileMapDataColumnEx(VDPPlane plane, const u16 *data, u16 basetile, u16 column, u16 y, u16 h, u16 wm, TransferMethod tm);
811
851bool VDP_setTileMap(VDPPlane plane, const TileMap *tilemap, u16 x, u16 y, u16 w, u16 h, TransferMethod tm);
900bool VDP_setTileMapEx(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 xp, u16 yp, u16 x, u16 y, u16 w, u16 h, TransferMethod tm);
939bool VDP_setTileMapRow(VDPPlane plane, const TileMap *tilemap, u16 row, u16 x, u16 w, TransferMethod tm);
985bool VDP_setTileMapRowEx(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 row, u16 x, u16 y, u16 w, TransferMethod tm);
1025bool VDP_setTileMapColumn(VDPPlane plane, const TileMap *tilemap, u16 column, u16 y, u16 h, TransferMethod tm);
1072bool VDP_setTileMapColumnEx(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 column, u16 x, u16 y, u16 h, TransferMethod tm);
1073
1078bool VDP_setMap(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 x, u16 y);
1083bool VDP_setMapEx(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 x, u16 y, u16 xm, u16 ym, u16 wm, u16 hm);
1084
1085
1086#endif // _VDP_TILE_H_
DMA support.
TransferMethod
VRAM transfer method.
Definition dma.h:52
TileMap structure which contains tilemap background definition. Use the unpackTileMap() method to un...
Definition vdp_tile.h:137
Tile set structure which contains tiles definition. Use the unpackTileSet() method to unpack if comp...
Definition vdp_tile.h:114
unsigned long u32
Definition types.h:105
unsigned short u16
Definition types.h:100
unsigned char u8
Definition types.h:95
VDP main.
VDPPlane
Type used to define on which plane to work (used by some methods).
Definition vdp.h:519
u16 VDP_getPlaneAddress(VDPPlane plane, u16 x, u16 y)
Return the VRAM tilemap address for the specified plane position.
Definition vdp_tile.c:80
u16 VDP_loadFont(const TileSet *font, TransferMethod tm)
Load font from the specified TileSet structure.
Definition vdp_tile.c:60
void VDP_fillTileMapRect(VDPPlane plane, u16 tile, u16 x, u16 y, u16 w, u16 h)
Fill speficied region of tilemap.
Definition vdp_tile.c:209
void VDP_setTileMapDataColumnEx(VDPPlane plane, const u16 *data, u16 basetile, u16 column, u16 y, u16 h, u16 wm, TransferMethod tm)
Set a column of tilemap data - extended version (not supported when plane width is set to 128).
Definition vdp_tile.c:738
void VDP_setTileMapDataColumn(VDPPlane plane, const u16 *data, u16 column, u16 y, u16 h, u16 wm, TransferMethod tm)
Set a column of tilemap data (not supported when plane width is set to 128).
Definition vdp_tile.c:719
void VDP_setTileMapDataRow(VDPPlane plane, const u16 *data, u16 row, u16 x, u16 w, TransferMethod tm)
Set a row of tilemap data.
Definition vdp_tile.c:491
void VDP_clearTileMap(u16 planeAddr, u16 ind, u16 num, bool wait)
Clear tilemap.
Definition vdp_tile.c:97
bool VDP_setMap(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 x, u16 y)
Definition vdp_tile.c:904
bool VDP_setMapEx(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 x, u16 y, u16 xm, u16 ym, u16 wm, u16 hm)
Definition vdp_tile.c:909
void VDP_setTileMapDataRectEx(VDPPlane plane, const u16 *data, u16 basetile, u16 x, u16 y, u16 w, u16 h, u16 wm, TransferMethod tm)
Set tilemap data for specified region (extended version).
Definition vdp_tile.c:364
bool VDP_setTileMapRow(VDPPlane plane, const TileMap *tilemap, u16 row, u16 x, u16 w, TransferMethod tm)
Load tilemap row.
Definition vdp_tile.c:806
void VDP_setTileMapDataRowEx(VDPPlane plane, const u16 *data, u16 basetile, u16 row, u16 x, u16 w, TransferMethod tm)
Set a row of tilemap data - extended version.
Definition vdp_tile.c:510
void VDP_setTileMapDataEx(u16 planeAddr, const u16 *data, u16 basetile, u16 ind, u16 num, u16 vramStep)
Set tilemap data at specified index (extended version).
Definition vdp_tile.c:147
bool VDP_setTileMapColumn(VDPPlane plane, const TileMap *tilemap, u16 column, u16 y, u16 h, TransferMethod tm)
Load tilemap column (not supported when plane width is set to 128).
Definition vdp_tile.c:855
void VDP_clearTileMapRect(VDPPlane plane, u16 x, u16 y, u16 w, u16 h)
Clear specified region of tilemap.
Definition vdp_tile.c:204
bool VDP_setTileMapEx(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 xp, u16 yp, u16 x, u16 y, u16 w, u16 h, TransferMethod tm)
Load tilemap region at specified plane position.
Definition vdp_tile.c:782
void VDP_loadTileData(const u32 *data, u16 index, u16 num, TransferMethod tm)
Load tile data (pattern) in VRAM.
Definition vdp_tile.c:28
void VDP_loadBMPTileDataEx(const u32 *data, u16 index, u16 x, u16 y, u16 w, u16 h, u16 bmp_w)
Load 4bpp bitmap tile data in VRAM.
Definition vdp_tile.c:65
void VDP_setTileMapDataRect(VDPPlane plane, const u16 *data, u16 x, u16 y, u16 w, u16 h, u16 wm, TransferMethod tm)
Set tilemap data for specified region.
Definition vdp_tile.c:283
void VDP_fillTileMapRectInc(VDPPlane plane, u16 basetile, u16 x, u16 y, u16 w, u16 h)
Fill tilemap with index auto increment at specified region.
Definition vdp_tile.c:251
bool VDP_setTileMap(VDPPlane plane, const TileMap *tilemap, u16 x, u16 y, u16 w, u16 h, TransferMethod tm)
Load tilemap region.
Definition vdp_tile.c:758
void VDP_setTileMapXY(VDPPlane plane, u16 tile, u16 x, u16 y)
Set tilemap data (single position).
Definition vdp_tile.c:187
void VDP_setTileMapData(u16 planeAddr, const u16 *data, u16 ind, u16 num, u16 vramStep, TransferMethod tm)
Set tilemap data at specified index.
Definition vdp_tile.c:142
void VDP_loadBMPTileData(const u32 *data, u16 index, u16 w, u16 h, u16 bmp_w)
Load 4bpp bitmap tile data in VRAM.
bool VDP_setTileMapColumnEx(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 column, u16 x, u16 y, u16 h, TransferMethod tm)
Load tilemap column - extended version (not supported when plane width is set to 128).
Definition vdp_tile.c:879
bool VDP_setTileMapRowEx(VDPPlane plane, const TileMap *tilemap, u16 basetile, u16 row, u16 x, u16 y, u16 w, TransferMethod tm)
Load tilemap row (extended version).
Definition vdp_tile.c:830
u16 VDP_loadTileSet(const TileSet *tileset, u16 index, TransferMethod tm)
Load tile data (pattern) in VRAM.
Definition vdp_tile.c:38
void VDP_fillTileMap(u16 planeAddr, u16 tile, u16 ind, u16 num)
Fill tilemap.
Definition vdp_tile.c:106
void VDP_setTileMapDataColumnFast(VDPPlane plane, u16 *data, u16 column, u16 y, u16 h, TransferMethod tm)
Set a complete column of pre-arranged tilemap data (not supported when plane width is set to 128).
Definition vdp_tile.c:693
void VDP_loadFontData(const u32 *font, u16 length, TransferMethod tm)
Load font tile data in VRAM. Note that you should prefer the VDP_loadBMPFont(..) method to this one ...
Definition vdp_tile.c:33
void VDP_fillTileData(u8 value, u16 index, u16 num, bool wait)
Fill tile data in VRAM.
Definition vdp_tile.c:70