From a56add6d177f84ca6295b0efddd62b4b2a96ea1f Mon Sep 17 00:00:00 2001 From: bryanthaboi Date: Fri, 21 Aug 2026 08:30:44 -0400 Subject: [PATCH] screen position fixes for gen 2 --- src/ui/gen2/BoxMenu.lua | 3 +-- src/ui/gen2/CardFlip.lua | 3 +-- src/ui/gen2/CenterPcMenu.lua | 3 +-- src/ui/gen2/ContestMenu.lua | 3 +-- src/ui/gen2/CopyrightSplash.lua | 3 +-- src/ui/gen2/Credits.lua | 3 +-- src/ui/gen2/DecorationMenu.lua | 3 +-- src/ui/gen2/EggHatchAnim.lua | 5 +---- src/ui/gen2/EvolutionAnim.lua | 5 +---- src/ui/gen2/GameFreakPresents.lua | 3 +-- src/ui/gen2/GoldSilverIntro.lua | 3 +-- src/ui/gen2/HallOfFame.lua | 3 +-- src/ui/gen2/ItemPcMenu.lua | 3 +-- src/ui/gen2/MailCompose.lua | 3 +-- src/ui/gen2/MailRead.lua | 3 +-- src/ui/gen2/MainMenu.lua | 3 +-- src/ui/gen2/NamePick.lua | 3 +-- src/ui/gen2/OptionsMenu.lua | 3 +-- src/ui/gen2/PackMenu.lua | 3 +-- src/ui/gen2/PartyMenu.lua | 3 +-- src/ui/gen2/PcMenu.lua | 3 +-- src/ui/gen2/PokedexMenu.lua | 3 +-- src/ui/gen2/PrizeMenu.lua | 3 +-- src/ui/gen2/SaveMenu.lua | 3 +-- src/ui/gen2/SlotMachine.lua | 3 +-- src/ui/gen2/SummaryMenu.lua | 3 +-- src/ui/gen2/TradeAnim.lua | 5 +---- src/ui/gen2/TrainerCard.lua | 3 +-- src/ui/gen2/UnownPuzzle.lua | 3 +-- tests/engine/screen_position.lua | 17 +++++++++++++++++ 30 files changed, 46 insertions(+), 64 deletions(-) diff --git a/src/ui/gen2/BoxMenu.lua b/src/ui/gen2/BoxMenu.lua index b019a12b..c4abcbaa 100644 --- a/src/ui/gen2/BoxMenu.lua +++ b/src/ui/gen2/BoxMenu.lua @@ -838,8 +838,7 @@ function BoxMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/CardFlip.lua b/src/ui/gen2/CardFlip.lua index b9db6352..88e7a170 100644 --- a/src/ui/gen2/CardFlip.lua +++ b/src/ui/gen2/CardFlip.lua @@ -972,8 +972,7 @@ function CardFlip:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/CenterPcMenu.lua b/src/ui/gen2/CenterPcMenu.lua index 49d6794a..222f7213 100644 --- a/src/ui/gen2/CenterPcMenu.lua +++ b/src/ui/gen2/CenterPcMenu.lua @@ -313,8 +313,7 @@ function CenterPcMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/ContestMenu.lua b/src/ui/gen2/ContestMenu.lua index cc309f6a..52f5a52d 100644 --- a/src/ui/gen2/ContestMenu.lua +++ b/src/ui/gen2/ContestMenu.lua @@ -180,8 +180,7 @@ function ContestMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/CopyrightSplash.lua b/src/ui/gen2/CopyrightSplash.lua index e5271b1b..abeed958 100644 --- a/src/ui/gen2/CopyrightSplash.lua +++ b/src/ui/gen2/CopyrightSplash.lua @@ -108,8 +108,7 @@ function CopyrightSplash:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - SCREEN_W * scale) / 2), - math.floor((winH - SCREEN_H * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/Credits.lua b/src/ui/gen2/Credits.lua index 97ca86ba..8ab716e0 100644 --- a/src/ui/gen2/Credits.lua +++ b/src/ui/gen2/Credits.lua @@ -845,8 +845,7 @@ function Credits:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - SCREEN_W * scale) / 2), - math.floor((winH - SCREEN_H * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/DecorationMenu.lua b/src/ui/gen2/DecorationMenu.lua index fedc2db3..f8c100f6 100644 --- a/src/ui/gen2/DecorationMenu.lua +++ b/src/ui/gen2/DecorationMenu.lua @@ -267,8 +267,7 @@ function DecorationMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/EggHatchAnim.lua b/src/ui/gen2/EggHatchAnim.lua index 6b62db6d..931fd3b4 100644 --- a/src/ui/gen2/EggHatchAnim.lua +++ b/src/ui/gen2/EggHatchAnim.lua @@ -43,8 +43,6 @@ local EggHatchAnim = {} EggHatchAnim.__index = EggHatchAnim EggHatchAnim.isOpaque = true -local SCREEN_W, SCREEN_H = 160, 144 - -- Hatch_UpdateFrontpicBGMapCenter is called twice with different hlcoords: -- the egg sits at (7,4) and the hatchling at (6,3). Both are `lb bc, 7, 7` -- PlaceGraphic boxes, and the pic inside that box has already been padded to @@ -446,8 +444,7 @@ function EggHatchAnim:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - SCREEN_W * scale) / 2), - math.floor((winH - SCREEN_H * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/EvolutionAnim.lua b/src/ui/gen2/EvolutionAnim.lua index 72a57224..753d2880 100644 --- a/src/ui/gen2/EvolutionAnim.lua +++ b/src/ui/gen2/EvolutionAnim.lua @@ -40,8 +40,6 @@ local EvolutionAnim = {} EvolutionAnim.__index = EvolutionAnim EvolutionAnim.isOpaque = true -local SCREEN_W, SCREEN_H = 160, 144 - -- PrepMonFrontpic's box: hlcoord 7, 2, `lb bc, 7, 7`. local PIC_TILE_X, PIC_TILE_Y, PIC_TILES = 7, 2, 7 @@ -573,8 +571,7 @@ function EvolutionAnim:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - SCREEN_W * scale) / 2), - math.floor((winH - SCREEN_H * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/GameFreakPresents.lua b/src/ui/gen2/GameFreakPresents.lua index 668edfcb..7eab4456 100644 --- a/src/ui/gen2/GameFreakPresents.lua +++ b/src/ui/gen2/GameFreakPresents.lua @@ -372,8 +372,7 @@ function GameFreakPresents:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - SCREEN_W * scale) / 2), - math.floor((winH - SCREEN_H * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/GoldSilverIntro.lua b/src/ui/gen2/GoldSilverIntro.lua index b8eeb39f..1d6aabb3 100644 --- a/src/ui/gen2/GoldSilverIntro.lua +++ b/src/ui/gen2/GoldSilverIntro.lua @@ -1033,8 +1033,7 @@ function GoldSilverIntro:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - SCREEN_W * scale) / 2), - math.floor((winH - SCREEN_H * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/HallOfFame.lua b/src/ui/gen2/HallOfFame.lua index 8d593003..23ee87ce 100644 --- a/src/ui/gen2/HallOfFame.lua +++ b/src/ui/gen2/HallOfFame.lua @@ -657,8 +657,7 @@ function HallOfFame:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - SCREEN_W * scale) / 2), - math.floor((winH - SCREEN_H * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/ItemPcMenu.lua b/src/ui/gen2/ItemPcMenu.lua index 3984f95e..9ef4babe 100644 --- a/src/ui/gen2/ItemPcMenu.lua +++ b/src/ui/gen2/ItemPcMenu.lua @@ -592,8 +592,7 @@ function ItemPcMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/MailCompose.lua b/src/ui/gen2/MailCompose.lua index 409f6a93..4101c4c9 100644 --- a/src/ui/gen2/MailCompose.lua +++ b/src/ui/gen2/MailCompose.lua @@ -341,8 +341,7 @@ function MailCompose:drawWidescreen(winW, winH) G.setColor(1, 1, 1, 1) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/MailRead.lua b/src/ui/gen2/MailRead.lua index d3b22235..b96c857a 100644 --- a/src/ui/gen2/MailRead.lua +++ b/src/ui/gen2/MailRead.lua @@ -94,8 +94,7 @@ function MailRead:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/MainMenu.lua b/src/ui/gen2/MainMenu.lua index d6f97b70..15d653ec 100644 --- a/src/ui/gen2/MainMenu.lua +++ b/src/ui/gen2/MainMenu.lua @@ -218,8 +218,7 @@ function MainMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/NamePick.lua b/src/ui/gen2/NamePick.lua index ccfe5ff8..3f2dbee6 100644 --- a/src/ui/gen2/NamePick.lua +++ b/src/ui/gen2/NamePick.lua @@ -225,8 +225,7 @@ function NamePick:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/OptionsMenu.lua b/src/ui/gen2/OptionsMenu.lua index 0d3a3e11..89decadb 100644 --- a/src/ui/gen2/OptionsMenu.lua +++ b/src/ui/gen2/OptionsMenu.lua @@ -466,8 +466,7 @@ function OptionsMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/PackMenu.lua b/src/ui/gen2/PackMenu.lua index 72aa6132..10384b76 100644 --- a/src/ui/gen2/PackMenu.lua +++ b/src/ui/gen2/PackMenu.lua @@ -1027,8 +1027,7 @@ function PackMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/PartyMenu.lua b/src/ui/gen2/PartyMenu.lua index 6cae3190..cefa59aa 100644 --- a/src/ui/gen2/PartyMenu.lua +++ b/src/ui/gen2/PartyMenu.lua @@ -849,8 +849,7 @@ function PartyMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/PcMenu.lua b/src/ui/gen2/PcMenu.lua index 3d283807..cf365eca 100644 --- a/src/ui/gen2/PcMenu.lua +++ b/src/ui/gen2/PcMenu.lua @@ -453,8 +453,7 @@ function PcMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/PokedexMenu.lua b/src/ui/gen2/PokedexMenu.lua index fbd14aef..a0c4a685 100644 --- a/src/ui/gen2/PokedexMenu.lua +++ b/src/ui/gen2/PokedexMenu.lua @@ -1462,8 +1462,7 @@ function PokedexMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/PrizeMenu.lua b/src/ui/gen2/PrizeMenu.lua index d3b166b3..41f43756 100644 --- a/src/ui/gen2/PrizeMenu.lua +++ b/src/ui/gen2/PrizeMenu.lua @@ -560,8 +560,7 @@ function PrizeMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/SaveMenu.lua b/src/ui/gen2/SaveMenu.lua index 31811fed..c0eeb47b 100644 --- a/src/ui/gen2/SaveMenu.lua +++ b/src/ui/gen2/SaveMenu.lua @@ -228,8 +228,7 @@ function SaveMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/SlotMachine.lua b/src/ui/gen2/SlotMachine.lua index a85006dd..fe0bded1 100644 --- a/src/ui/gen2/SlotMachine.lua +++ b/src/ui/gen2/SlotMachine.lua @@ -1535,8 +1535,7 @@ function SlotMachine:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/SummaryMenu.lua b/src/ui/gen2/SummaryMenu.lua index 7fdbdd74..9ccc3723 100644 --- a/src/ui/gen2/SummaryMenu.lua +++ b/src/ui/gen2/SummaryMenu.lua @@ -1175,8 +1175,7 @@ function SummaryMenu:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/TradeAnim.lua b/src/ui/gen2/TradeAnim.lua index f0af7576..bd404038 100644 --- a/src/ui/gen2/TradeAnim.lua +++ b/src/ui/gen2/TradeAnim.lua @@ -58,8 +58,6 @@ local TradeAnimView = {} TradeAnimView.__index = TradeAnimView TradeAnimView.isOpaque = true -local SCREEN_W, SCREEN_H = 160, 144 - -- PlaceGraphic's box and the stats panel's Textbox, in tiles. local PIC_TILE_X, PIC_TILE_Y, PIC_TILES = 7, 2, 7 local PANEL_X, PANEL_Y = 3, 0 @@ -876,8 +874,7 @@ function TradeAnimView:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - SCREEN_W * scale) / 2), - math.floor((winH - SCREEN_H * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/TrainerCard.lua b/src/ui/gen2/TrainerCard.lua index f3bdb4ee..4b993c52 100644 --- a/src/ui/gen2/TrainerCard.lua +++ b/src/ui/gen2/TrainerCard.lua @@ -437,8 +437,7 @@ function TrainerCard:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/src/ui/gen2/UnownPuzzle.lua b/src/ui/gen2/UnownPuzzle.lua index 1b707f3b..ff8e7d8a 100644 --- a/src/ui/gen2/UnownPuzzle.lua +++ b/src/ui/gen2/UnownPuzzle.lua @@ -580,8 +580,7 @@ function UnownPuzzle:drawWidescreen(winW, winH) G.rectangle("fill", 0, 0, winW, winH) local scale = Chrome.fitScale(winW, winH) G.push() - G.translate(math.floor((winW - 160 * scale) / 2), - math.floor((winH - 144 * scale) / 2)) + G.translate(Chrome.fitOrigin(winW, winH, scale)) G.scale(scale, scale) self:drawPanel() G.pop() diff --git a/tests/engine/screen_position.lua b/tests/engine/screen_position.lua index c0b679c1..0616b3ca 100644 --- a/tests/engine/screen_position.lua +++ b/tests/engine/screen_position.lua @@ -110,4 +110,21 @@ eq(sy, cy2, "with a skin the Gold origin ignores the mode") TouchSkin.setActive(nil) ScreenPosition.setMode("center") +-- A hand-rolled centre in drawWidescreen skips the lift and the playfield +-- rect that Chrome.fitOrigin carries. +local listing = assert(io.popen('grep -rln "drawWidescreen" src/ui/gen2')) +local offenders = {} +for path in listing:lines() do + local f = assert(io.open(path, "r")) + local body = f:read("*a") + f:close() + if body:find("winH %- %d+ %* scale") + or body:find("winH %- SCREEN_H %* scale") then + offenders[#offenders + 1] = path + end +end +listing:close() +check(#offenders == 0, "no Gold screen centres its widescreen panel by hand: " + .. table.concat(offenders, " ")) + T.finish("screen_position")