diff --git a/src/nostalgia/core/gba/gfx.cpp b/src/nostalgia/core/gba/gfx.cpp index 4b36bc49..4ab5d7aa 100644 --- a/src/nostalgia/core/gba/gfx.cpp +++ b/src/nostalgia/core/gba/gfx.cpp @@ -141,13 +141,13 @@ ox::Error loadTileSheet(Context *ctx, oxReturnError(ox::readMC(ts, tsStat.size, &target)); // load external palette if available if (paletteAddr) { - 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)); + paletteAddr = target.defaultPalette; } - + 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); } diff --git a/src/nostalgia/core/sdl/gfx.cpp b/src/nostalgia/core/sdl/gfx.cpp index 52231c7e..27996514 100644 --- a/src/nostalgia/core/sdl/gfx.cpp +++ b/src/nostalgia/core/sdl/gfx.cpp @@ -75,8 +75,7 @@ ox::Error shutdownGfx(Context *ctx) { ox::Error initConsole(Context *ctx) { constexpr auto TilesheetAddr = "/TileSheets/Charset.ng"; - constexpr auto PaletteAddr = "/Palettes/Charset.npal"; - return loadTileSheet(ctx, TileSheetSpace::Background, 0, TilesheetAddr, PaletteAddr); + return loadTileSheet(ctx, TileSheetSpace::Background, 0, TilesheetAddr); } SDL_Color createSDL_Color(Color16 nc) { @@ -106,11 +105,10 @@ ox::Error loadTileSheet(Context *ctx, auto [tilesheet, tserr] = readMC(ctx, tilesheetPath); oxReturnError(tserr); NostalgiaPalette palette; - if (palettePath) { - oxReturnError(readMC(ctx, palettePath).get(&palette)); - } else { - palette = tilesheet.pal; + if (!palettePath) { + palettePath = tilesheet.defaultPalette; } + oxReturnError(readMC(ctx, palettePath).get(&palette)); const auto bytesPerTile = tilesheet.bpp == 8 ? 64 : 32; const auto tiles = tilesheet.tiles.size() / bytesPerTile; @@ -125,7 +123,7 @@ ox::Error loadTileSheet(Context *ctx, } else { for (std::size_t i = 0; i < tilesheet.tiles.size(); ++i) { static_cast(surface->pixels)[i * 2 + 0] = tilesheet.tiles[i] & 0xF; - static_cast(surface->pixels)[i * 2 + 1] = tilesheet.tiles[i] >> 4; + static_cast(surface->pixels)[i * 2 + 1] = tilesheet.tiles[i] >> 4; } }