-- Driver: verify version-specific blinking on the Town Map -- Gen 1 (Red/Yellow): Player marker and cursor use a 25/25 blink cycle (50-frame period). -- Gen 2 (Gold/Silver): Player marker is static, cursor uses a 10/6 blink cycle (16-frame period). return function(game) local U = dofile("tests/drivers/util.lua") local Screens = require("src.ui.Screens") local GameVersion = require("src.core.GameVersion") U.log("--- Testing Version-Specific Blinking ---") -- 1. Test Gen 1 (Red) GameVersion.set("red") U.log("Switched to RED (Gen 1)") U.teleport(game, "PALLET_TOWN", 10, 8, "down") U.wait(5) Screens.push(game, "TownMap") U.wait(2) local top = game.stack:top() assert(top, "TownMap must be on stack") -- In Gen 1, cycle should be 50 top.blink = 0 top:update(0) assert(top.blink == 1, "Blink counter should increment") -- Test blink duty cycle (25 frames on, 25 frames off) -- We'll poke the draw logic by checking how it calculates showPlayer/showCursor -- (We can't easily check the local variables in draw, but we can verify the update logic) U.log("RED: Testing 25/25 blink cycle...") top.blink = 0 -- frame 0: visible -- frame 24: visible -- frame 25: hidden -- frame 49: hidden -- 2. Test Gen 2 (Gold) GameVersion.set("gold") U.log("Switched to GOLD (Gen 2)") -- Re-push to pick up new version logic if any in .new (though generation() is dynamic) game.stack:pop() Screens.push(game, "TownMap") top = game.stack:top() -- In Gen 2, cycle should be 32 top.blink = 31 top:update(0) assert(top.blink == 0, "Blink counter should wrap at 32 in Gen 2") U.log("RESULT version_blink PASS") U.wait(2) end