Files
gen1recomp/tests/engine/copyright_splash_backdrop.lua
T
bryanthaboi 1bd6e35931 copy rintro
2026-08-24 09:02:56 -04:00

46 lines
1.8 KiB
Lua

-- Crystal's boot copyright card is white text on black: SplashScreen sets
-- SCGB_GAMEFREAK_LOGO before calling Copyright, so the card runs on
-- PREDEFPAL_GAMEFREAK_LOGO_BG rather than the default BGP Gold's DMG boot
-- leaves up (../pokecrystal/engine/movie/splash.asm:21-30). The card used to
-- hardcode a white fill and Crystal shipped no extracted splash at all, so the
-- first screen of the game was blank white.
package.path = "./?.lua;./?/init.lua;" .. package.path
local T = require("tests.modkit")
local CopyrightSplash = require("src.ui.gen2.CopyrightSplash")
local function colorsEq(got, want, message)
T.eq(#got, 3, message .. " (three channels)")
for index = 1, 3 do
T.eq(got[index], want[index], message .. " channel " .. index)
end
end
local gold = CopyrightSplash.new({}, { title = {} })
colorsEq(gold.backdrop, { 1, 1, 1 }, "Gold keeps the white card")
colorsEq(gold.ink, { 0, 0, 0 }, "Gold keeps black text")
local crystal = CopyrightSplash.new({}, {
title = {
copyrightBackdrop = { 0, 0, 0 },
copyrightInk = { 1, 1, 1 },
},
})
colorsEq(crystal.backdrop, { 0, 0, 0 }, "Crystal's card is black")
colorsEq(crystal.ink, { 1, 1, 1 }, "Crystal's text is white")
-- The extractor has to emit the image too, or the card is an empty backdrop.
local CrystalMovie = require("src.import.CrystalMovie")
T.eq(type(CrystalMovie.extractTitle), "function",
"CrystalMovie still owns the Crystal title stage")
local CacheContract = require("src.import.CacheContract")
local required = CacheContract.VERSION_REQUIRED_FILES_OVERRIDE.crystal
local found = false
for _, path in ipairs(required) do
if path == "assets/generated/title/copyright_splash.png" then found = true end
end
T.eq(found, true, "a Crystal cache without the splash is rebuilt")
T.finish("copyright splash backdrop")