mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-22 21:46:51 +02:00
Pokemon Silver as a full launcher version, plus launcher mods-list and title-tempo fixes
Silver: derived import manifest (tools/make_silver_manifest.py re-resolves the Gold manifest's symbols from pokesilver.sym), silver GameVersion row, generation-keyed extractor routing, required-files override, edition save stamping (a Silver playthrough no longer writes into the Gold save), checkver-driven edition data, SILVER/KAMON/OSCAR/MAX presets, GOLD rival default, edition credits banner, Lugia title screen (OAM layouts, bob, trail, palettes as title.lua data keys with Gold defaults so old caches need no re-import), packaging for every build target, docs, and tests. Launcher: the installed-mods list is one continuous scroll (rows culled to the viewport) instead of a pager with an inner scroll viewport; the pad cursor's edge-scroll no longer runs it to the bottom. The game dropdown shows just the initial and caret. Find-tab behavior unchanged. Title tempo: a sprite-anim frame shows duration+1 ticks (engine/sprite_anims/core.asm GetSpriteAnimFrame), which locks both editions' 64-tick wing beat to the 64-tick sine bob; the title screens no longer run fast and out of phase.
This commit is contained in:
@@ -34,8 +34,14 @@ local NamePick = {}
|
||||
NamePick.__index = NamePick
|
||||
NamePick.isOpaque = true
|
||||
|
||||
-- data/player_names.asm PlayerNameArray, Gold's half of the IF.
|
||||
-- data/player_names.asm PlayerNameArray, one half of the IF per edition.
|
||||
local PRESETS = { "GOLD", "HIRO", "TAYLOR", "KARL" }
|
||||
local PRESETS_SILVER = { "SILVER", "KAMON", "OSCAR", "MAX" }
|
||||
|
||||
local function presetsFor()
|
||||
local silver = require("src.core.GameVersion").get() == "silver"
|
||||
return silver and PRESETS_SILVER or PRESETS
|
||||
end
|
||||
|
||||
-- menu_coords 0, 0, 10, TEXTBOX_Y - 1 (TEXTBOX_Y = 12).
|
||||
local BOX_X1, BOX_Y1, BOX_X2, BOX_Y2 = 0, 0, 10, 11
|
||||
@@ -60,7 +66,7 @@ function NamePick.new(game, opts)
|
||||
self.game = game
|
||||
self.onDone = opts.onDone
|
||||
self.items = { "NEW NAME" }
|
||||
for _, name in ipairs(opts.presets or PRESETS) do
|
||||
for _, name in ipairs(opts.presets or presetsFor()) do
|
||||
self.items[#self.items + 1] = name
|
||||
end
|
||||
-- `db 1 ; default option`: the cursor starts on NEW NAME, not on a preset.
|
||||
@@ -106,7 +112,7 @@ function NamePick:openNaming()
|
||||
if name and #name > 0 then
|
||||
self:choose(name)
|
||||
else
|
||||
self:choose(self.items[2] or "GOLD")
|
||||
self:choose(self.items[2] or presetsFor()[1])
|
||||
end
|
||||
end,
|
||||
})
|
||||
@@ -146,7 +152,7 @@ function NamePick:update(_dt)
|
||||
if self.fontOk then
|
||||
self:openNaming()
|
||||
else
|
||||
self:choose(self.items[2] or "GOLD")
|
||||
self:choose(self.items[2] or presetsFor()[1])
|
||||
end
|
||||
else
|
||||
-- A preset returns through MovePlayerPicLeft, so the pic walks back
|
||||
@@ -227,5 +233,7 @@ function NamePick:drawWidescreen(winW, winH)
|
||||
end
|
||||
|
||||
NamePick.PRESETS = PRESETS
|
||||
NamePick.PRESETS_SILVER = PRESETS_SILVER
|
||||
NamePick.presetsFor = presetsFor
|
||||
|
||||
return NamePick
|
||||
|
||||
Reference in New Issue
Block a user