Palette and graphics test rendering.

master
sigonasr2 5 months ago
parent b1cde6a168
commit ea0e2a0a46
  1. 37
      EarthboundBattleBackgrounds/EarthboundBattleBackgrounds/main.cpp
  2. BIN
      EarthboundBattleBackgrounds/x64/Debug/EarthboundBattleBackgrounds.exe

@ -237,6 +237,7 @@ struct Rom{
std::vector<uint16_t>arrayGraphicsData;
std::vector<Tile>tiles;
byte bpp;
private:
void buildTiles(){
int n{int(graphicsData.size())/(8*bpp)};
for(int i{};i<n;i++){
@ -255,7 +256,7 @@ struct Rom{
}
}
}
public:
BackgroundGraphics(std::u8string_view data,uint16_t index,byte bpp)
:bpp(bpp){
DataBlock graphicsPtr{data,0xD7A1U+index*4U};
@ -337,15 +338,47 @@ public:
}
}
uint8_t selectedPalette{};
void GraphicsDisplayTest(){
if(GetMouseWheel()<0)yOffset-=32;
if(GetMouseWheel()>0)yOffset+=32;
Clear(BLACK);
DrawStringDecal({},std::format("Selected Palette: {}",selectedPalette));
if(GetKey(PGUP).bPressed)selectedPalette=std::clamp(int(selectedPalette)-1,0,int(rom.palettes.size()-1));
if(GetKey(PGDN).bPressed)selectedPalette=std::clamp(int(selectedPalette)+1,0,int(rom.palettes.size()-1));;
Rom::BackgroundPalette&palette{rom.palettes[selectedPalette]};
for(uint8_t index=0;Pixel&col:palette.colors){
FillRectDecal(vf2d{index*8.f,8.f+yOffset+9},{8,8},col);
index++;
}
for(uint8_t row=0;Rom::BackgroundGraphics&graphics:rom.graphics){
for(uint8_t col=0;Rom::Tile&tile:graphics.tiles){
for(int x{};x<tile.size();x++){
for(int y{};y<tile[x].size();y++){
int paletteInd{tile[x][y]};
Pixel color{MAGENTA};
const bool ColorInRange{paletteInd<palette.colors.size()};
if(ColorInRange)color=palette.colors[paletteInd];
Draw(vi2d{col*8,row*8+yOffset+20}+vi2d{x,y},color);
}
}
col++;
}
row++;
}
}
int yOffset{0};
bool OnUserUpdate(float fElapsedTime) override
{
PaletteDisplayTest();
//PaletteDisplayTest();
GraphicsDisplayTest();
return true;
}

Loading…
Cancel
Save