mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-18 19:54:21 +02:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| faf82c2cec | |||
| e0e030003b | |||
| ce2afb83f1 | |||
| 28f741f72f | |||
| 22bcd95da1 | |||
| ea28f886f3 |
@@ -540,8 +540,9 @@ gains a field instead of the name gaining a prefix.
|
|||||||
`battle.crit`, `battle.accuracy`, `battle.turn_order`,
|
`battle.crit`, `battle.accuracy`, `battle.turn_order`,
|
||||||
`battle.enemy_action`, `battle.run`, `battle.exp_award`, `exp.gain`,
|
`battle.enemy_action`, `battle.run`, `battle.exp_award`, `exp.gain`,
|
||||||
`catch.rate`, `trainer.party`, `battle.overlay`, `battle.low_health_alarm`,
|
`catch.rate`, `trainer.party`, `battle.overlay`, `battle.low_health_alarm`,
|
||||||
`battle.catch_exp`, `battle.bottom_ui_visible` and
|
`battle.catch_exp`, `battle.bottom_ui_visible`,
|
||||||
`battle.status_hud_visible`. One payload difference: Gen 1's vanilla
|
`battle.status_hud_visible` and `battle.move_grid_navigation`. One payload
|
||||||
|
difference: Gen 1's vanilla
|
||||||
`battle.low_health_alarm` link reads `ctx.battle.data`, and Gold's battle
|
`battle.low_health_alarm` link reads `ctx.battle.data`, and Gold's battle
|
||||||
screen has no `.data` field, so the Gen 2 site **adds** `ctx.data` beside the
|
screen has no `.data` field, so the Gen 2 site **adds** `ctx.data` beside the
|
||||||
Gen 1 keys. A mod that calls `nextFn` is unaffected; one that reaches through
|
Gen 1 keys. A mod that calls `nextFn` is unaffected; one that reaches through
|
||||||
|
|||||||
@@ -12,6 +12,20 @@
|
|||||||
"tintColor": "3b5ca8",
|
"tintColor": "3b5ca8",
|
||||||
"category": "games",
|
"category": "games",
|
||||||
"versions": [
|
"versions": [
|
||||||
|
{
|
||||||
|
"version": "0.2.1",
|
||||||
|
"date": "2026-08-17",
|
||||||
|
"size": 13575320,
|
||||||
|
"downloadURL": "https://github.com/bryanthaboi/gen1recomp/releases/download/v0.2.1/gen1recomp++-0.2.1-ios.ipa",
|
||||||
|
"localizedDescription": "Download the correct version for your computer below.\n\n## Contributors\n\n- @bryanthaboi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"date": "2026-08-17",
|
||||||
|
"size": 13575299,
|
||||||
|
"downloadURL": "https://github.com/bryanthaboi/gen1recomp/releases/download/v0.2.0/gen1recomp++-0.2.0-ios.ipa",
|
||||||
|
"localizedDescription": "Download the correct version for your computer below.\n\n## Issues closed\n\n- #1396 Nurse dialogue & options\n- #1398 Alignment of options for changing Pokemon\n- #1400 Flying Bug\n- #1401 [Gold] battlergfx $d9/$da load the wrong row count (jumptable crossed vs macro names)\n- #1406 Magikarp salesman dialogue issues\n- #1407 Not able to nickname Magikarp\n- #1411 No indication for stone evolutions\n- #1413 Using a stone closes menu\n- #1415 Super Nerd dialogue issues\n- #1416 (Pokémon Gold) Pokédex doesn't register other trainers' pokémon as seen\n- #1417 (Pokémon Gold) Pokémon you get in trade aren't being registered as caught\n- #1419 (Pokémon Gold) Deposited pokémon don't get healed\n- #1421 (Pokémon Gold) Bad status and catch state appears on the HUD before they should\n- #1422 (Pokémon Gold) Impossible to have the pokédex register Ditto as caught after it transforms\n- #1423 (Pokémon Gold) No save prompt before changing boxes in the PC\n- #1424 (Pokémon Gold) Quantity for owned TMs not being displayed\n- #1425 (Pokémon Gold) Items quantity in your bag should be alligned to the right\n- #1427 (Pokémon Gold) Can't switch items' position in your bag\n- #1428 (Pokémon Gold) Game doesn't show how many pokémon other trainers have\n- #1429 Pikachu not sliding in before its cry. Stuck on standard pokeball release animation.\n- #1431 Shiny sparkle does not play on your sent out shiny pokemon\n- #1432 Experimental marked mods don't install Android\n- #1433 (Pokémon Gold) Missing prompt for depositing pokémon\n- #1435 When npcs stop you to talk or when you walk up to npcs to talk to them sometimes the player has the wrong sprite\n- #1437 Issues with player sprite on map\n- #1440 hold a direction during cutscene and face the wrong way\n- #1441 Magnet Train missing animation\n- #1442 Radio dial is missing in PokeGear radio\n- #1443 Skipping production logo also skips battle scene\n- #1444 Pokemon lack type immunity to status moves\n- #1447 Soft-lock on Cinnabar Island\n- #1449 Visual error on Route 28\n- #1456 Activating all mods doesn't work properly\n- #1461 #1265 didnt got fixed.\n- #1464 Experiance shared in battle\n- #1465 Changing Touch Layout crashes launcher\n- #1466 #1403 Still Happens\n- #1467 A clearer definition of the use of AI for this reconstruction\n- #1468 [Gold] BICYCLE is broken and some pokegear bug\n- #1469 [Gold] status effects aren't shown in the party overlay or the summary screen of the pokemon\n- #1470 Mod updater doesn't work properly when AppImage is running through Steam or Game Mode (Steam Deck)\n\n## Contributors\n\n- @bryanthaboi"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "0.1.99",
|
"version": "0.1.99",
|
||||||
"date": "2026-08-17",
|
"date": "2026-08-17",
|
||||||
|
|||||||
@@ -3850,6 +3850,7 @@ local function modalUp(imp)
|
|||||||
or imp._appPatchNotes
|
or imp._appPatchNotes
|
||||||
or imp._findDetails or imp._modVersions or imp._modDepResolver or imp._sortPopup
|
or imp._findDetails or imp._modVersions or imp._modDepResolver or imp._sortPopup
|
||||||
or imp._filterPopup or imp._modScopePopup or imp._indexManage
|
or imp._filterPopup or imp._modScopePopup or imp._indexManage
|
||||||
|
or imp._gamePopup
|
||||||
or imp._modActions or imp._modImports
|
or imp._modActions or imp._modImports
|
||||||
or imp._modHeaderActionsPopup or imp._profilesPopup or imp._singleProfileActions or imp._profileSavePrompt
|
or imp._modHeaderActionsPopup or imp._profilesPopup or imp._singleProfileActions or imp._profileSavePrompt
|
||||||
or imp._profileRenamePrompt or imp._findEntry or imp._gameManage) ~= nil
|
or imp._profileRenamePrompt or imp._findEntry or imp._gameManage) ~= nil
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ local BattleState = {}
|
|||||||
BattleState.__index = BattleState
|
BattleState.__index = BattleState
|
||||||
BattleState.isOpaque = true
|
BattleState.isOpaque = true
|
||||||
|
|
||||||
|
function BattleState:moveGridNavigation()
|
||||||
|
if not Runtime.wantsHook("battle.move_grid_navigation") then return false end
|
||||||
|
return Runtime.call("battle.move_grid_navigation", function() return false end,
|
||||||
|
self) == true
|
||||||
|
end
|
||||||
|
|
||||||
-- Armed while a battle line waits for PromptButton (home/text.asm). Any
|
-- Armed while a battle line waits for PromptButton (home/text.asm). Any
|
||||||
-- positive value means "hold until A/B"; the cart never times these out, so
|
-- positive value means "hold until A/B"; the cart never times these out, so
|
||||||
-- the victory jingle can keep looping through the post-win prompts.
|
-- the victory jingle can keep looping through the post-win prompts.
|
||||||
@@ -2043,7 +2049,22 @@ function BattleState:update(_dt)
|
|||||||
|
|
||||||
if self.phase == "moves" then
|
if self.phase == "moves" then
|
||||||
local moves = self:playerMoves()
|
local moves = self:playerMoves()
|
||||||
if input:wasPressed("up") then
|
local grid
|
||||||
|
if self:moveGridNavigation() then
|
||||||
|
local index, count = self.moveIndex, #moves
|
||||||
|
if input:wasPressed("left") or input:wasPressed("right") then
|
||||||
|
local other = math.floor((index - 1) / 2) * 2
|
||||||
|
+ (1 - (index - 1) % 2) + 1
|
||||||
|
grid = other <= count and other or index
|
||||||
|
elseif input:wasPressed("up") or input:wasPressed("down") then
|
||||||
|
local other = (1 - math.floor((index - 1) / 2)) * 2
|
||||||
|
+ (index - 1) % 2 + 1
|
||||||
|
grid = other <= count and other or index
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if grid then
|
||||||
|
self.moveIndex = grid
|
||||||
|
elseif input:wasPressed("up") then
|
||||||
self.moveIndex = self.moveIndex > 1 and self.moveIndex - 1 or #moves
|
self.moveIndex = self.moveIndex > 1 and self.moveIndex - 1 or #moves
|
||||||
elseif input:wasPressed("down") then
|
elseif input:wasPressed("down") then
|
||||||
self.moveIndex = self.moveIndex < #moves and self.moveIndex + 1 or 1
|
self.moveIndex = self.moveIndex < #moves and self.moveIndex + 1 or 1
|
||||||
|
|||||||
@@ -421,6 +421,7 @@ local GEN2_HOOKS = {
|
|||||||
-- nextFn gets nil there).
|
-- nextFn gets nil there).
|
||||||
"battle.catch_exp", "battle.low_health_alarm", "battle.overlay",
|
"battle.catch_exp", "battle.low_health_alarm", "battle.overlay",
|
||||||
"battle.bottom_ui_visible", "battle.status_hud_visible",
|
"battle.bottom_ui_visible", "battle.status_hud_visible",
|
||||||
|
"battle.move_grid_navigation",
|
||||||
-- One pic path resolver for both games: the Gen 1 site is the SHARED
|
-- One pic path resolver for both games: the Gen 1 site is the SHARED
|
||||||
-- src/pokemon/Sprites.lua and Gold's own battle screen calls the same hook
|
-- src/pokemon/Sprites.lua and Gold's own battle screen calls the same hook
|
||||||
-- with the Gen 1 ctx keys plus `letter` and `shiny`, which Red has no
|
-- with the Gen 1 ctx keys plus `letter` and `shiny`, which Red has no
|
||||||
|
|||||||
@@ -266,13 +266,49 @@ end
|
|||||||
|
|
||||||
do
|
do
|
||||||
local BattleState = require("src.battle.BattleState")
|
local BattleState = require("src.battle.BattleState")
|
||||||
|
local Gen2BattleState = require("src.ui.gen2.BattleState")
|
||||||
local battle = { wideLayout = function() return false end }
|
local battle = { wideLayout = function() return false end }
|
||||||
check(not BattleState.moveGridNavigation(battle),
|
check(not BattleState.moveGridNavigation(battle),
|
||||||
"classic move navigation stays a list without a mod")
|
"classic move navigation stays a list without a mod")
|
||||||
|
check(not Gen2BattleState.moveGridNavigation({}),
|
||||||
|
"Gold move navigation stays a list without a mod")
|
||||||
local unsub = wrap("battle.move_grid_navigation", function() return true end)
|
local unsub = wrap("battle.move_grid_navigation", function() return true end)
|
||||||
check(BattleState.moveGridNavigation(battle),
|
check(BattleState.moveGridNavigation(battle),
|
||||||
"a mod can opt the classic move menu into grid navigation")
|
"a mod can opt the classic move menu into grid navigation")
|
||||||
|
check(Gen2BattleState.moveGridNavigation({}),
|
||||||
|
"the same hook opts Gold's move menu into grid navigation")
|
||||||
|
|
||||||
|
local pressed, moveCount = "right", 4
|
||||||
|
local gold = setmetatable({
|
||||||
|
phase = "moves", moveIndex = 1,
|
||||||
|
slideFrame = math.huge,
|
||||||
|
game = { input = {
|
||||||
|
wasPressed = function(_, key) return key == pressed end,
|
||||||
|
} },
|
||||||
|
updateAlarm = function() end,
|
||||||
|
stepHpAnim = function() return false end,
|
||||||
|
playerMoves = function()
|
||||||
|
local moves = {}
|
||||||
|
for i = 1, moveCount do moves[i] = {} end
|
||||||
|
return moves
|
||||||
|
end,
|
||||||
|
}, { __index = Gen2BattleState })
|
||||||
|
gold:update(0)
|
||||||
|
check(gold.moveIndex == 2,
|
||||||
|
"Gold grid navigation moves right across a companion move row")
|
||||||
|
pressed, gold.moveIndex = "down", 1
|
||||||
|
gold:update(0)
|
||||||
|
check(gold.moveIndex == 3,
|
||||||
|
"Gold grid navigation moves down the companion move column")
|
||||||
|
pressed, moveCount, gold.moveIndex = "down", 3, 2
|
||||||
|
gold:update(0)
|
||||||
|
check(gold.moveIndex == 2,
|
||||||
|
"Gold grid navigation does not select an empty fourth move slot")
|
||||||
unsub()
|
unsub()
|
||||||
|
pressed, gold.moveIndex = "right", 1
|
||||||
|
gold:update(0)
|
||||||
|
check(gold.moveIndex == 1,
|
||||||
|
"removing the hook restores Gold's native vertical move list")
|
||||||
battle.wideLayout = function() return true end
|
battle.wideLayout = function() return true end
|
||||||
check(BattleState.moveGridNavigation(battle),
|
check(BattleState.moveGridNavigation(battle),
|
||||||
"the native wide move grid remains enabled without a mod")
|
"the native wide move grid remains enabled without a mod")
|
||||||
|
|||||||
Reference in New Issue
Block a user