Commit Graph

1966 Commits

Author SHA1 Message Date
Shane McGovern 3d372bfbb7 docs(portmaster): record successful TrimUI Brick test 2026-10-06 06:54:14 +01:00
Shane McGovern fce5f08650 feat(portmaster): prepare catalogue testing package 2026-10-06 04:58:36 +01:00
bryanthaboi 13e9a2316e Merge branch 'dev' of https://github.com/bryanthaboi/gen1recomp into dev 2026-10-05 15:52:18 -04:00
bryanthaboi 62988f759a Update em_pc.lua 2026-10-05 15:52:08 -04:00
bryanthaboi cfce7352fc Merge pull request #2678 from thibautbus/feat/emerald-translation-runtime
Make Emerald's screens reachable by translation mods
2026-10-05 15:46:24 -04:00
bryanthaboi 34377eef5a further performance udpdates 2026-10-05 15:45:58 -04:00
bryanthaboi 6613f5bc42 CLOSES #2691, CLOSES #2690, CLOSES #2677, CLOSES #2646 2026-10-05 12:48:22 -04:00
thibautbus f173250cc5 Trim the new comments to pret references
The comments this change adds keep only the pret source each line follows.
2026-10-05 18:19:57 +02:00
thibautbus 2fd5d09228 Resolve the translated texts once when each screen opens
Several screens looked their cart strings up in the script cache on every draw, every frame or every read. Each now resolves them once:

- the Battle Arena's judgment titles, when the window opens;
- the Battle Dome's tourney title, when the tree opens, and a match card's win and match-number texts, when the card is built;
- the Frontier Pass map's landmark names and descriptions, when the map opens;
- the Pokédex search screen's option texts, when the cursor moves instead of on every frame of the option list;
- the party menu's action labels, once per action list;
- the Battle Pyramid bag's "Return to" place, when the bag opens;
- the expanded placeholders, when their table is built for the current script cache.
2026-10-05 18:19:57 +02:00
bryanthaboi dd5d394f84 Merge pull request #2680 from thibautbus/fix/game3-name-order-in-cart-text
Join names to translated cart text the way the European carts do
2026-10-05 11:33:59 -04:00
bryanthaboi c4a7d2e114 Merge pull request #2679 from thibautbus/fix/frlg-honorific-placeholder
Print FireRed's honorific after the player's name
2026-10-05 11:23:37 -04:00
bryanthaboi 4d41d4b9a6 Merge pull request #2681 from thibautbus/fix/menu-labels-black-without-title
Draw a menu's choices in black when it has no title
2026-10-05 11:23:34 -04:00
bryanthaboi 72f2294d8d CLOSES #2649, CLOSES #2650, CLOSES #2652, CLOSES #2653, CLOSES #2654, CLOSES #2657, CLOSES #2658, CLOSES #2659, CLOSES #2660, CLOSES #2662, CLOSES #2664, CLOSES #2665, CLOSES #2666, CLOSES #2669, CLOSES #2671, CLOSES #2672, CLOSES #2674, CLOSES #2676, CLOSES #2682, CLOSES #2683, CLOSES #2684, CLOSES #2685, CLOSES #2686, CLOSES #2687, CLOSES #2688, CLOSES #2689
CLOSES #2649, CLOSES #2650, CLOSES #2652, CLOSES #2653, CLOSES #2654, CLOSES #2657, CLOSES #2658, CLOSES #2659, CLOSES #2660, CLOSES #2662, CLOSES #2664, CLOSES #2665, CLOSES #2666, CLOSES #2669, CLOSES #2671, CLOSES #2672, CLOSES #2674, CLOSES #2676, CLOSES #2682, CLOSES #2683, CLOSES #2684, CLOSES #2685, CLOSES #2686, CLOSES #2687, CLOSES #2688, CLOSES #2689
2026-10-05 11:06:01 -04:00
thibautbus 8b9165f121 Expand Emerald's placeholders from the script cache
The runtime expanded {RIVAL} and {KUN} from text/placeholders.lua, the values the extractor reads from the US cart, so a translation never reached them: the rival stayed MAY or BRENDAN and the Japanese honorific stayed empty. Each value is a cart string the script cache also holds under its pret label (gText_ExpandedPlaceholder_May, _Brendan, _Kun, _Chan...); the placeholders now read it from there, with the extract's value as the fallback.
2026-10-05 14:46:31 +02:00
thibautbus 686bcc74f7 Print Emerald's party menu actions from the cart's text
The rse/menus pack's cursor options are plain English strings. The Emerald profile lists sCursorOptions' strings, an action prints the cart's text for its option and a field move prints the move's name, as the cart does; the pack's labels still identify the actions.
2026-10-05 14:46:31 +02:00
thibautbus 62e62842ab Read the Emerald Pokédex search screen's text from the cart
The search screen's option titles and descriptions and its help lines come from the chrome pack's English copies. They are read by their pret labels instead (gText_DexSortNumericalTitle, gText_SearchForPkmnBasedOnParameters, gTypeNames[type]...), with the copies as the fallback.
2026-10-05 14:46:31 +02:00
thibautbus 09ace425f4 Read the Pyramid's floor names and Ever Grande City's fly destinations from the script cache
The map name popup prints a Battle Pyramid floor's name through RomText.refIr(), and the region map reads Ever Grande City's two fly destinations by sEverGrandeCityNames' labels, so both follow a text override.
2026-10-05 14:46:31 +02:00
thibautbus 6eb2b6413b Read the Battle Frontier's cart text from the script cache
Several Battle Frontier screens print a cart string from the pack their extractor wrote, so a text override never reaches them although the script cache holds the same string. RomText.irOr() and RomText.refIr() read the cache's text by label, or by the symbol and address a pack reference keeps, and fall back on the pack's copy. The records window, the S.S. Tidal menu, the Battle Dome, the Battle Arena, the Apprentice, the Frontier Pass, the Trainer Hill records and the Pyramid bag's "Return to" line use them; the Dome's and the Arena's strings, kept without a symbol, are read by the label of their table.
2026-10-05 14:46:31 +02:00
thibautbus e234323060 Translate Emerald map-section names
Mapsec.name() returns Strings(name): every caller displays the name, so the region map, the PokéNav, the map name popup, Match Call, TV and the other screens that print it follow, and the RSE summary's met location is translated the same way.
2026-10-05 14:46:31 +02:00
thibautbus 6b5993f7de Translate Emerald Pokédex categories and descriptions
The Pokédex entry passes its category and description through Strings() when drawn, and the starter selection and the Battle Factory build the same CopyMonCategoryText string the same way.
2026-10-05 14:46:31 +02:00
thibautbus 53af9e925e Translate Emerald contest categories and effect descriptions
SummaryData.contestEffectDescription() and contestCategoryName() translate by the English text, like the move and ability descriptions, and the RSE summary, the move relearner and the contest move window print them.
2026-10-05 14:46:31 +02:00
thibautbus ed27cd2821 Translate Emerald ability names
Pokemon.abilityName() returns Strings(name), so the RSE summary and the battle ability placeholders show a translated name, as FireRed's summary already did. FireRed's summary no longer translates the getter's result a second time, and the battle adapter keys an ability outside its built-in table by Pokemon.romAbilityName(), so a translated name cannot become an unknown ability key.
2026-10-05 14:46:31 +02:00
bryanthaboi 160895c6bb Drop the stale append-only note on GameVersion.ORDER 2026-10-05 08:13:18 -04:00
bryanthaboi 4e56874725 Make test.sh --quick a sub-minute smoke run and move the old pass to --standard 2026-10-05 08:07:00 -04:00
bryanthaboi b305652fdb Store Gen 3 cache pixel data deflated and write compressed PNGs
Same decoded pixels, about 60 percent smaller caches. Bumps the FireRed/LeafGreen, Emerald and Ruby/Sapphire cache versions.
2026-10-05 08:00:07 -04:00
bryanthaboi 5bee513600 Keep scripted player steps at walking speed while biking so Mr. Briney's boat stays on camera 2026-10-05 06:28:37 -04:00
bryanthaboi c6ea960ed2 Place object sprites by their ROM subsprite offsets and drop the sailor stand-ins for the Seagallop and SS Anne 2026-10-05 05:43:14 -04:00
bryanthaboi 586d56e6c7 Merge remote-tracking branch 'origin/dev' into dev 2026-10-05 05:07:47 -04:00
bryanthaboi 6774889505 Add Pokemon Ruby and Sapphire
Ruby and Sapphire 1.0/1.1/1.2 import, play, save, convert and link. Gen 3 shaders, braille, weather and reflection parity, link room players, RS custom carts and launcher support, Gen 3 link fixes for Emerald and FireRed/LeafGreen.
2026-10-05 05:07:42 -04:00
bryanthaboi 0b6aa0d79b Merge pull request #2675 from 1Jamie/game3-fixes
fix(game3): battle UI alignment, Pyramid double battles, Daycare steps, Faraway Mew, Leech Seed, Solar Beam in sun, and Seagallop cutscene
2026-10-05 05:07:20 -04:00
bryanthaboi 71efd7789d Merge pull request #2661 from 1Jamie/grandpas-garage
Add support for L/R in the overlay when playing gen3 games and add gba skin support
2026-10-05 05:07:16 -04:00
thibautbus 5528a92a59 Draw a menu's choices in black when it has no title
Since v0.3.29, Menu:draw sets the black text color only inside its title branch, where the title's white backing is drawn. A menu without a title, such as the Red/Blue/Yellow main menu (CONTINUE, NEW GAME, OPTION), printed its choices in whatever color was current: the white the box's fill and the previous frame leave behind. Tile glyphs are black on transparent and come out black whatever the color, so English never showed it, but a translation's TTF font draws in the current color and printed every choice white on white; only the tile cursor stayed visible.

The choices are now drawn after an unconditional black, as before v0.3.29, with or without a title.
2026-10-04 21:56:46 +02:00
thibautbus f26fe452e5 Fill a European row's name placeholder instead of prepending the name
Two screens print a name followed by a cart string, the way the US code builds them: the nickname screen's title (the species and gText_PkmnsNickname) and a secret base's name (the owner and gText_ApostropheSBase). The French, Italian and Spanish rows name it where their language puts it, through STR_VAR_1 ("Surnom de [STR_VAR_1]?", "BASE DE [STR_VAR_1]"), and their code fills the placeholder (pret pokeemerald multi-language, src/naming_screen.c:1746, src/secret_base.c:732); the German rows do the same ("Kosename f. [STR_VAR_1]"). A French nickname screen read "POUSSIFEUSurnom de ?".

Both now render the row with the name as STR_VAR_1 and use that text when the row prints it, a mod's catalog entry for the English source included; a row without the placeholder (FireRed's US and Japanese titles, the Japanese secret base row) keeps the name in front. English and Japanese text is unchanged.
2026-10-04 20:32:22 +02:00
thibautbus 6b8e275908 Print a European two-stage stat change once
A stat that rises or falls by two stages prints the cart's "sharply" or "harshly" row followed by its "rose!" or "fell!" row, as the US code buffers them. The French, Italian and Spanish rows for the two-stage change are the whole change ("monte beaucoup!", "sale di molto!", "subió mucho"), and their code skips the string that follows (pret pokeemerald multi-language, src/battle_message.c:4617); the German rows have the same shape ("steigt stark!"). A French battle printed "monte beaucoup!augmente!".

Secondary.sharpChange keeps the plain row only after a "sharply" or "harshly" row that ends with a space, as the US and Japanese ones do ("sharply ", "ぐーんと "). The move effects and the held items that raise a stat by two use it.
2026-10-04 20:32:21 +02:00
thibautbus f68358fdce Put a translated wild or foe word after the name when the cart does
The battle text joins a foe's name to the cart's sText_WildPkmnPrefix or sText_FoePkmnPrefix the way the US code does, word first. The French, Italian and Spanish carts write those rows to follow the name (" sauvage", " salvaje", " selvatico") and append them (pret pokeemerald multi-language, src/battle_message.c:4042 and :4649), and the German row has the same shape (" (Wild)"), so a French battle read " sauvageZIGZATON utilise RUGISSEMENT!".

BattleText.withMonPrefix joins the two in the row's order: a row that starts with a space follows the name, and the US and Japanese rows ("Wild ", "やせいの ") still go first. Both the battle string placeholder (B_ATK_NAME_WITH_PREFIX and the other WITH_PREFIX codes) and the buffered name (State.prefixedName) use it, in FireRed/LeafGreen and Emerald alike.
2026-10-04 20:32:21 +02:00
1jamie b4809beedb fix(game3): battle UI, Pyramid battles, Daycare, Faraway Mew, status timing, Solar Beam, and Seagallop cutscene
- Fixes #2667: Align FireRed battle UI text and cursor positions with vanilla layout.
- Fixes #2663: Fix Battle Pyramid double trainer sight crash and party resolution.
- Fixes #2651: Fix crash when picking up Pokemon at the daycare (native step-counting and exp/level sync).
- Fixes #2668: Fix Faraway Island Mew encounter and grass rustle collision/despawn state.
- Fixes #2647: Fix status display and Leech Seed absorption/healing sequence timing.
- Fixes #2673: Set animTurn = 1 for instant Solar Beam execution in sunlight.
- Fix Cinnabar Island Seagallop boat cutscene off-map culling and sprite fallback.
2026-10-04 11:00:11 -05:00
thibautbus d639aa0cd3 Print FireRed's honorific after the player's name
FireRed's {KUN} placeholder always expanded to nothing: the frlg dialect has no placeholder source, so the text IR dropped it. On the cart it is gExpandedPlaceholder_Kun or _Chan by the player's gender (pokefirered/src/string_util.c:386), empty on the US cart and くん/ちゃん on the Japanese one.

The frlg dialect now names those two labels, and {KUN} prints the script cache's string for the player's gender, so a translation's text override for either label reaches every line that uses the placeholder. With the cache not loaded, or both strings empty as on the US cart, it still prints nothing and never asks for the gender. A label whose own text holds {KUN} expands it to nothing rather than recursing. Emerald keeps reading {KUN} from its placeholders.
2026-10-04 13:00:46 +02:00
1jamie b8319dd2f8 fix(ui): declare applied as local in TouchControlsEditor 2026-10-03 16:05:29 -05:00
1jamie 15ec173e43 forgot to update readme to say where the l and r were sourced from 2026-10-03 15:59:38 -05:00
1jamie a39efc30f4 feat(game3): add GBA shoulder buttons, touch overlay editor support, and bundled gba_purple skin 2026-10-03 15:50:39 -05:00
bryanthaboi 340e2567ec CLOSES #2644, CLOSES #2645 2026-10-03 06:57:16 -04:00
bryanthaboi 46d255d18c CLOSES #2639, CLOSES #2640, CLOSES #2642, CLOSES #2643 2026-10-03 05:49:13 -04:00
bryanthaboi dc0756c236 CLOSES #2632, CLOSES #2634, CLOSES #2637, CLOSES #2638 2026-10-02 22:57:54 -04:00
bryanthaboi cb02aebd01 Update launch_update_mods_bug2037.lua 2026-10-02 16:09:07 -04:00
bryanthaboi a2b22e7190 Merge branch 'dev' of https://github.com/bryanthaboi/gen1recomp into dev 2026-10-02 16:03:51 -04:00
bryanthaboi 362df3ee2a chopped heads 2026-10-02 16:03:49 -04:00
bryanthaboi 211f09ff00 launcher auto index 2026-10-02 15:19:41 -04:00
bryanthaboi 7cfd79d0e9 Merge pull request #2629 from Code-Grub/fix/find-thumbnail-queue-starvation
fix(launcher): dead rows no longer starve FIND MODS thumbnails
2026-10-02 14:45:26 -04:00
Code-Grub 8899f4dca6 fix(launcher): dead rows no longer starve FIND MODS thumbnails
_queueFindEnrichment allows two thumbnail starts per frame, but it counted a
row against that allowance even when _startFindThumb ignored it. A row already
resolved to "failed", or with no thumbnail at all, is ignored there, so two such
rows above a card spent the allowance every frame and the card never got a
download. It stayed on its MOD placeholder (no spinner) for the whole session.

Skip rows that have already resolved, so only a row that actually starts a
download is counted. Adds a regression test that fails without the change.
2026-10-02 14:36:40 -04:00
bryanthaboi 24433fecc2 CLOSES #2626 2026-10-02 14:10:22 -04:00