mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-19 04:06:10 +02:00
CLOSES #1508
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
return function(game)
|
||||
local U = dofile("tests/drivers/util.lua")
|
||||
local DIR = os.getenv("SHOT_DIR") or "/tmp/bug1412"
|
||||
local Pokemon = require("src.pokemon.Pokemon")
|
||||
local Evolution = require("src.pokemon.Evolution")
|
||||
local Screens = require("src.ui.Screens")
|
||||
local TradeAnim = require("src.ui.TradeAnim")
|
||||
local TextBox = require("src.render.TextBox")
|
||||
|
||||
local function check(label, ok)
|
||||
U.log(ok and "PASS" or "FAIL", label)
|
||||
return ok
|
||||
end
|
||||
|
||||
U.log("Issue #1412: mon pics must be mirrored on the evolution and trade")
|
||||
U.log("screens, and only there; battle keeps the raw orientation.")
|
||||
|
||||
U.teleport(game, "ROUTE_1", 5, 5, "down")
|
||||
U.wait(10)
|
||||
check("the overworld fixture is ready", game.overworld ~= nil)
|
||||
|
||||
local mon = Pokemon.new(game.data, "PIKACHU", 20)
|
||||
game.save.party = { mon }
|
||||
-- engine/movie/evolution.asm:103
|
||||
Evolution.evolve(game, mon, "RAICHU", nil, "ITEM")
|
||||
U.wait(12)
|
||||
local top = game.stack:top()
|
||||
check("the evolution screen opened",
|
||||
top and top.screenId == "EvolutionState")
|
||||
U.shot(game, DIR .. "/bug1412_evo_old_pikachu.png")
|
||||
|
||||
for _ = 1, 600 do
|
||||
if top.done then break end
|
||||
U.wait(1)
|
||||
end
|
||||
check("the evolution finished", top.done and not top.canceled)
|
||||
U.wait(2)
|
||||
U.shot(game, DIR .. "/bug1412_evo_new_raichu.png")
|
||||
for _ = 1, 60 do
|
||||
if game.stack:top() == game.overworld then break end
|
||||
U.tap(game, "a")
|
||||
U.wait(4)
|
||||
end
|
||||
|
||||
-- engine/movie/trade.asm:751
|
||||
local sent = Pokemon.new(game.data, "SPEAROW", 10)
|
||||
local recv = Pokemon.new(game.data, "FARFETCHD", 10)
|
||||
recv.nickname = "DUX"
|
||||
recv.traded = true
|
||||
recv.ot = "TRAINER"
|
||||
U.teleport(game, "ROUTE_1", 5, 5, "down")
|
||||
local anim = Screens.push(game, "TradeAnim", {
|
||||
sent = sent, received = recv, enemyName = "TRAINER",
|
||||
})
|
||||
check("the trade cinematic opened", getmetatable(anim) == TradeAnim)
|
||||
for _ = 1, 200 do
|
||||
if anim.sub == "hold" then break end
|
||||
U.wait(1)
|
||||
end
|
||||
check("the sent SPEAROW pic is on screen",
|
||||
anim.phase == "show_player" and anim.sub == "hold" and anim.monVisible)
|
||||
U.shot(game, DIR .. "/bug1412_trade_sent_spearow.png")
|
||||
|
||||
local function topIsText()
|
||||
return getmetatable(game.stack:top()) == TextBox
|
||||
end
|
||||
for _ = 1, 8000 do
|
||||
if anim.phase == "show_enemy" and anim.monVisible then break end
|
||||
if anim.phase == "done" then break end
|
||||
if anim.waitingText or topIsText() then
|
||||
U.wait(1)
|
||||
else
|
||||
anim:update(1 / 60)
|
||||
end
|
||||
end
|
||||
U.wait(2)
|
||||
check("the received FARFETCH'D pic is on screen",
|
||||
anim.phase == "show_enemy" and anim.monVisible)
|
||||
U.shot(game, DIR .. "/bug1412_trade_recv_farfetchd.png")
|
||||
|
||||
U.log("shots in", DIR)
|
||||
U.log("Right: all four pics are mirrored left-right compared to the same")
|
||||
U.log("mon's battle front sprite (compare the hardware capture on #1412:")
|
||||
U.log("PIKACHU's face points the other way than it does in battle).")
|
||||
U.log("Wrong: any of the four matches the battle orientation.")
|
||||
U.log("Battle, pokedex, title, Hall of Fame, League PC, credits, and the")
|
||||
U.log("museum fossils are untouched and must still match the cart.")
|
||||
|
||||
while true do
|
||||
coroutine.yield()
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user