pokemon/tileset.hpp
2023-07-24 13:25:39 -07:00

68 lines
1.6 KiB
C++

#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;
}