[nostalgia/core] Make load tile sheet default to defaultPalette

This commit is contained in:
Gary Talent 2020-03-22 18:52:47 -05:00
parent 6d2155d1ed
commit 43318acffa
2 changed files with 11 additions and 13 deletions

View File

@ -141,13 +141,13 @@ ox::Error loadTileSheet(Context *ctx,
oxReturnError(ox::readMC(ts, tsStat.size, &target)); oxReturnError(ox::readMC(ts, tsStat.size, &target));
// load external palette if available // load external palette if available
if (paletteAddr) { if (paletteAddr) {
auto [palStat, palStatErr] = ctx->rom->stat(paletteAddr); paletteAddr = target.defaultPalette;
oxReturnError(palStatErr);
auto [pal, palErr] = ctx->rom->read(paletteAddr);
oxReturnError(palErr);
oxReturnError(ox::readMC(pal, palStat.size, &target.pal));
} }
auto [palStat, palStatErr] = ctx->rom->stat(paletteAddr);
oxReturnError(palStatErr);
auto [pal, palErr] = ctx->rom->read(paletteAddr);
oxReturnError(palErr);
oxReturnError(ox::readMC(pal, palStat.size, &target.pal));
return OxError(0); return OxError(0);
} }

View File

@ -75,8 +75,7 @@ ox::Error shutdownGfx(Context *ctx) {
ox::Error initConsole(Context *ctx) { ox::Error initConsole(Context *ctx) {
constexpr auto TilesheetAddr = "/TileSheets/Charset.ng"; constexpr auto TilesheetAddr = "/TileSheets/Charset.ng";
constexpr auto PaletteAddr = "/Palettes/Charset.npal"; return loadTileSheet(ctx, TileSheetSpace::Background, 0, TilesheetAddr);
return loadTileSheet(ctx, TileSheetSpace::Background, 0, TilesheetAddr, PaletteAddr);
} }
SDL_Color createSDL_Color(Color16 nc) { SDL_Color createSDL_Color(Color16 nc) {
@ -106,11 +105,10 @@ ox::Error loadTileSheet(Context *ctx,
auto [tilesheet, tserr] = readMC<NostalgiaGraphic>(ctx, tilesheetPath); auto [tilesheet, tserr] = readMC<NostalgiaGraphic>(ctx, tilesheetPath);
oxReturnError(tserr); oxReturnError(tserr);
NostalgiaPalette palette; NostalgiaPalette palette;
if (palettePath) { if (!palettePath) {
oxReturnError(readMC<NostalgiaPalette>(ctx, palettePath).get(&palette)); palettePath = tilesheet.defaultPalette;
} else {
palette = tilesheet.pal;
} }
oxReturnError(readMC<NostalgiaPalette>(ctx, palettePath).get(&palette));
const auto bytesPerTile = tilesheet.bpp == 8 ? 64 : 32; const auto bytesPerTile = tilesheet.bpp == 8 ? 64 : 32;
const auto tiles = tilesheet.tiles.size() / bytesPerTile; const auto tiles = tilesheet.tiles.size() / bytesPerTile;
@ -125,7 +123,7 @@ ox::Error loadTileSheet(Context *ctx,
} else { } else {
for (std::size_t i = 0; i < tilesheet.tiles.size(); ++i) { for (std::size_t i = 0; i < tilesheet.tiles.size(); ++i) {
static_cast<uint8_t*>(surface->pixels)[i * 2 + 0] = tilesheet.tiles[i] & 0xF; static_cast<uint8_t*>(surface->pixels)[i * 2 + 0] = tilesheet.tiles[i] & 0xF;
static_cast<uint8_t*>(surface->pixels)[i * 2 + 1] = tilesheet.tiles[i] >> 4; static_cast<uint8_t*>(surface->pixels)[i * 2 + 1] = tilesheet.tiles[i] >> 4;
} }
} }