mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-12 08:21:02 +02:00
65 lines
2.3 KiB
Lua
65 lines
2.3 KiB
Lua
-- Driver: the Oak speech from NEW GAME through the shrink-away beat
|
|
-- (engine/movie/oak_speech/oak_speech.asm .next): RedPicFront ->
|
|
-- ShrinkPic1 -> ShrinkPic2 -> walking sprite -> fade to white ->
|
|
-- Pallet Town.
|
|
return function(game)
|
|
local U = dofile("tests/drivers/util.lua")
|
|
local DIR = os.getenv("SHOT_DIR") or "/tmp/shots"
|
|
|
|
U.wait(5)
|
|
U.tap(game, "start") -- skip intro movie
|
|
U.wait(10)
|
|
U.tap(game, "a") -- title -> menu
|
|
U.wait(5)
|
|
-- with an existing save the menu is CONTINUE / NEW GAME / OPTION
|
|
local ok, saved = pcall(function()
|
|
return require("src.core.SaveData").load() ~= nil
|
|
end)
|
|
if ok and saved then U.tap(game, "down") U.wait(3) end
|
|
U.tap(game, "a") -- NEW GAME
|
|
U.wait(10)
|
|
|
|
-- mash through the speech + both naming screens (preset 1)
|
|
local function top() return game.stack:top() end
|
|
local function speechState()
|
|
for _, s in ipairs(game.stack.states or {}) do
|
|
if s.shrink ~= nil or s.oakPic ~= nil then return s end
|
|
end
|
|
end
|
|
for _ = 1, 400 do
|
|
local s = speechState()
|
|
if s and s.step and s.step >= 9 then break end
|
|
U.tap(game, "a")
|
|
U.wait(2)
|
|
end
|
|
|
|
-- the shrink beat: captures aimed at each timeline window, with the
|
|
-- exact frame logged so the windows can be verified
|
|
local s = speechState()
|
|
local function frameNow()
|
|
return (s and s.shrink and s.shrink.frame) or -1
|
|
end
|
|
U.log("shrink beat entered:", tostring(s ~= nil and s.shrink ~= nil),
|
|
"frame:", frameNow())
|
|
U.shot(game, DIR .. "/shrink_1_redpic.png") -- frames 1-4: RedPicFront
|
|
U.log("shot1 frame:", frameNow())
|
|
U.wait(3)
|
|
U.shot(game, DIR .. "/shrink_2_pic1.png") -- frames 5-8: ShrinkPic1
|
|
U.log("shot2 frame:", frameNow())
|
|
U.wait(8)
|
|
U.shot(game, DIR .. "/shrink_3_pic2.png") -- frames 9-28: ShrinkPic2
|
|
U.log("shot3 frame:", frameNow())
|
|
U.wait(25)
|
|
U.shot(game, DIR .. "/shrink_4_sprite.png") -- frames 29-78: walk sprite
|
|
U.log("shot4 frame:", frameNow())
|
|
U.wait(43)
|
|
U.shot(game, DIR .. "/shrink_5_fade.png") -- frames 79-102: fade
|
|
U.log("shot5 frame:", frameNow())
|
|
U.wait(15)
|
|
U.wait(30)
|
|
U.shot(game, DIR .. "/shrink_6_overworld.png")
|
|
U.log("after speech: top==overworld:", tostring(top() == game.overworld),
|
|
"map:", game.overworld and game.overworld.map
|
|
and game.overworld.map.id or "?")
|
|
end
|