#pragma once #include "res/gfx/tilesets/cavern.4bpp.h" #include "res/gfx/tilesets/cemetery.4bpp.h" #include "res/gfx/tilesets/club.4bpp.h" #include "res/gfx/tilesets/facility.4bpp.h" #include "res/gfx/tilesets/forest.4bpp.h" #include "res/gfx/tilesets/gate.4bpp.h" #include "res/gfx/tilesets/gym.4bpp.h" #include "res/gfx/tilesets/house.4bpp.h" #include "res/gfx/tilesets/interior.4bpp.h" #include "res/gfx/tilesets/lab.4bpp.h" #include "res/gfx/tilesets/lobby.4bpp.h" #include "res/gfx/tilesets/mansion.4bpp.h" #include "res/gfx/tilesets/overworld.4bpp.h" #include "res/gfx/tilesets/plateau.4bpp.h" #include "res/gfx/tilesets/pokecenter.4bpp.h" #include "res/gfx/tilesets/reds_house.4bpp.h" #include "res/gfx/tilesets/ship.4bpp.h" #include "res/gfx/tilesets/ship_port.4bpp.h" #include "res/gfx/tilesets/underground.4bpp.h" struct tileset { enum { cavern, cemetery, club, facility, forest, gate, gym, house, interior, lab, lobby, mansion, overworld, plateau, pokecenter, reds_house, ship, ship_port, underground, }; static uint32_t pattern_name(uint32_t graphics_ix); static uint32_t load(uint32_t top, uint32_t i); }; struct buf_t { uint32_t * buf; uint32_t size; uint32_t base_address; }; extern uint32_t cell_data(const buf_t& buf, const uint32_t top); uint32_t tileset::pattern_name(uint32_t graphics_ix) { return tilesets[graphics_ix].base_address / 32; } uint32_t tileset::load(uint32_t top, uint32_t i) { tilesets[i].base_address = top = cell_data(tilesets[i], top); return top; }