mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-27 08:51:27 +02:00
74 lines
2.4 KiB
Lua
74 lines
2.4 KiB
Lua
-- Chrome.print / Chrome.cursor / Chrome.printRight are the flat,
|
|
-- hardcoded-black primitives ~40 Gen 2 screens still call directly, so any
|
|
-- glyph through them rendered solid black regardless of COLORS. Made the
|
|
-- primitives themselves palette-aware instead of migrating 40 files.
|
|
package.path = "./?.lua;./?/init.lua;" .. package.path
|
|
|
|
local T = require("tests.harness")
|
|
|
|
love = require("tests.love_stub")
|
|
|
|
require("src.core.Logger").warn = function() end
|
|
|
|
local GbcPalette = require("src.render.GbcPalette")
|
|
local Chrome = require("src.ui.gen2.Chrome")
|
|
|
|
local calls
|
|
local function spy(name)
|
|
local original = GbcPalette[name]
|
|
GbcPalette[name] = function(...)
|
|
calls[name] = (calls[name] or 0) + 1
|
|
return original(...)
|
|
end
|
|
end
|
|
|
|
local function reset()
|
|
calls = {}
|
|
spy("resolve"); spy("use"); spy("useRaw"); spy("with")
|
|
end
|
|
|
|
local function touched()
|
|
return (calls.resolve or 0) + (calls.use or 0) + (calls.useRaw or 0) + (calls.with or 0)
|
|
end
|
|
|
|
do
|
|
GbcPalette.available = function() return true end
|
|
GbcPalette.setCustomRamp({ { 255, 0, 255 }, { 200, 0, 200 }, { 100, 0, 100 },
|
|
{ 0, 0, 0 } })
|
|
|
|
reset()
|
|
Chrome.print("HELLO", 1, 1)
|
|
T.check(touched() > 0, "Chrome.print() reaches the GbcPalette seam when a shader is available")
|
|
|
|
reset()
|
|
Chrome.cursor(1, 1)
|
|
T.check(touched() > 0, "Chrome.cursor() reaches the GbcPalette seam when a shader is available")
|
|
|
|
reset()
|
|
Chrome.printRight("42", 10, 1)
|
|
T.check(touched() > 0, "Chrome.printRight() reaches the GbcPalette seam when a shader is available")
|
|
end
|
|
|
|
-- Unthemed / no-shader boot must still degrade to the plain literal black
|
|
-- glyph draw, byte-identical to before this fix.
|
|
do
|
|
GbcPalette.available = function() return false end
|
|
|
|
reset()
|
|
local ok = pcall(Chrome.print, "HELLO", 1, 1)
|
|
T.check(ok, "Chrome.print() does not error with no shader available")
|
|
T.eq(touched(), 0, "Chrome.print() does not touch GbcPalette when no shader is available")
|
|
|
|
reset()
|
|
ok = pcall(Chrome.cursor, 1, 1)
|
|
T.check(ok, "Chrome.cursor() does not error with no shader available")
|
|
T.eq(touched(), 0, "Chrome.cursor() does not touch GbcPalette when no shader is available")
|
|
|
|
reset()
|
|
ok = pcall(Chrome.printRight, "42", 10, 1)
|
|
T.check(ok, "Chrome.printRight() does not error with no shader available")
|
|
T.eq(touched(), 0, "Chrome.printRight() does not touch GbcPalette when no shader is available")
|
|
end
|
|
|
|
T.finish()
|