src/gba/renderers/tile-cache.h (view raw)
1/* Copyright (c) 2013-2015 Jeffrey Pfau
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6#ifndef GBA_TILE_CACHE_H
7#define GBA_TILE_CACHE_H
8
9#include "util/common.h"
10
11struct GBAVideo;
12
13struct GBAVideoTileCache {
14 uint16_t* cache;
15 struct GBAVideoTileCacheEntry {
16 uint32_t paletteVersion[16];
17 uint8_t vramClean;
18 uint8_t palette256;
19 } status[1024 * 3];
20 uint32_t globalPaletteVersion[32];
21 uint32_t globalPalette256Version[2];
22
23 uint16_t* vram;
24 uint16_t* palette;
25};
26
27void GBAVideoTileCacheInit(struct GBAVideoTileCache* cache);
28void GBAVideoTileCacheDeinit(struct GBAVideoTileCache* cache);
29void GBAVideoTileCacheAssociate(struct GBAVideoTileCache* cache, struct GBAVideo* video);
30void GBAVideoTileCacheWriteVRAM(struct GBAVideoTileCache* cache, uint32_t address);
31void GBAVideoTileCacheWritePalette(struct GBAVideoTileCache* cache, uint32_t address);
32const uint16_t* GBAVideoTileCacheGetTile16(struct GBAVideoTileCache* cache, unsigned tileId, unsigned paletteId);
33const uint16_t* GBAVideoTileCacheGetTile16IfDirty(struct GBAVideoTileCache* cache, unsigned tileId, unsigned paletteId);
34const uint16_t* GBAVideoTileCacheGetTile256(struct GBAVideoTileCache* cache, unsigned tileId, unsigned paletteId);
35const uint16_t* GBAVideoTileCacheGetTile256IfDirty(struct GBAVideoTileCache* cache, unsigned tileId, unsigned paletteId);
36
37#endif