1819 Commits

Author SHA1 Message Date
bryanthaboi e7ce2a3a71 Merge pull request #2486 from 1Jamie/grandpas-garage 2026-09-25 20:22:48 -04:00
1jamie 76ede1171e feat: Gen 3 save editor, GBA extraction resilience, and UI/asset polish
- Save Editor (Gen 3):
  - Added full support for EV, IV, Nature, Ability, and Ribbons editing for Gen 3 Pokémon.
  - Implemented stat calculations, personality-based nature derivation, and Gen 3 save data structures.
  - Added comprehensive unit test suite in tests/save_editor_gen3_ev_iv_tests.lua.

- GBA Extraction & Graphics:
  - Added zero-copy ARM-safe ROM accessor and fast LZ77 string decompression.
  - Fixed bag chrome decompression string-buffer indexing preventing solid-color renders.
  - Fixed TM Case HM badge tile offset and palette mapping.
  - Added builtin moves fallback in src/core/game3/battle/builtin_moves.lua.
  - Improved parallel extraction resilience, desktop fallback search paths, and prefix handling.

- Android & Launchers:
  - Added dynamic high-res app launcher shortcuts and color palettes for all supported games.
  - Updated Android icon generator and intent dispatch handlers.
2026-09-25 16:20:40 -05:00
bryanthaboi c65fcf939d battle speed 2026-09-25 14:20:34 -04:00
bryanthaboi 389184789f import picker for custom cart 2026-09-25 13:18:59 -04:00
bryanthaboi 584350e9de CLOSES #2477 2026-09-25 13:08:56 -04:00
bryanthaboi 400f0a02f8 asdfasdf 2026-09-25 11:46:53 -04:00
bryanthaboi 26a7979ac1 splash 2026-09-25 11:32:35 -04:00
bryanthaboi 8d1e1551c7 mod count in saves 2026-09-25 11:12:10 -04:00
bryanthaboi b1216ad68a splash screen 2026-09-25 10:40:32 -04:00
bryanthaboi a685f16e00 updates to online 2026-09-25 10:28:21 -04:00
bryanthaboi f3f2e3b0b3 save editor options test runs on fixture data 2026-09-25 07:25:23 -04:00
bryanthaboi f8c95b8e8a CLOSES #2347, CLOSES #2384, CLOSES #2456, CLOSES #2460, CLOSES #2461, CLOSES #2468, CLOSES #2470, CLOSES #2471, CLOSES #2472, CLOSES #2473 2026-09-25 07:11:46 -04:00
bryanthaboi 437a8ef8c5 gen3 link battle and union room fixes 2026-09-25 05:46:24 -04:00
bryanthaboi fbbd636118 asdfasdf 2026-09-24 17:03:41 -04:00
bryanthaboi 78e66002ed another online fix 2026-09-24 16:31:44 -04:00
bryanthaboi 7e24e7e617 more workflow stuff 2026-09-24 16:07:47 -04:00
bryanthaboi 05552c1a63 asdfasdfsdf 2026-09-24 15:54:39 -04:00
bryanthaboi aec82a1b3b jobs update 2026-09-24 15:39:39 -04:00
bryanthaboi 95ad378d89 Update union_room.lua 2026-09-24 14:44:17 -04:00
bryanthaboi 079e9776bb more online fix attempts 2026-09-24 13:22:09 -04:00
bryanthaboi ff69ff7878 another one 2026-09-24 11:45:50 -04:00
bryanthaboi a3251d10d5 little clean up for mystery gifts 2026-09-24 11:24:20 -04:00
bryanthaboi 6fdff58b3d online fixes 2026-09-24 10:31:07 -04:00
bryanthaboi 72a17b27dd CLOSES #2444 2026-09-24 08:39:43 -04:00
bryanthaboi d51bdaff72 CLOSES #2441, CLOSES #2445, CLOSES #2448, CLOSES #2450 2026-09-24 06:24:54 -04:00
bryanthaboi 9335be1bbd online update 2026-09-24 05:17:32 -04:00
bryanthaboi 7bab073993 Merge pull request #2438 from colsonrice/fix/world-pipeline-field-fx-mirror 2026-09-23 22:45:45 -04:00
Colson Rice 833bee64b2 Keep the field effects upright when a render pipeline owns the world
endFrame composites a world override mirrored on LOVE 12, because a
pipeline's own projection pre-flips Y. ctx.drawFx puts the standing
effects into that same canvas as ordinary 2D, so the mirror inverts them
instead of righting them: a trainer's "!" draws upside down, below its
feet, on the mirrored half of the screen.

The condition is now Renderer.mirrorsWorldOverride, named because it is
not only the blit's business, and ctx.drawFx runs its block under the
matching mirror about the bound canvas. project() is left alone: it
already answers in screen rows.
2026-09-23 19:30:25 -04:00
bryanthaboi c8b64177f6 classic goia 2026-09-23 17:18:42 -04:00
bryanthaboi 8a3f8424f5 Merge pull request #2406 from thibautbus/feat/game3-japanese-rom-font
Draw Japanese text in FireRed with the cart's own Japanese fonts
2026-09-23 16:44:04 -04:00
bryanthaboi 2a09429699 Merge pull request #2434 from bryanthaboi/feat/game3-mods
feat(game3): in-game MODS entry with FRLG-styled mod manager
2026-09-23 16:44:00 -04:00
bryanthaboi c9c20d361e Merge remote-tracking branch 'origin/dev' into pr-2406
# Conflicts:
#	src/import/gba/versions.lua
2026-09-23 16:43:55 -04:00
bryanthaboi d2fdd3becc Merge remote-tracking branch 'origin/dev' into feat/game3-mods
# Conflicts:
#	src/ui/game3/start_menu.lua
2026-09-23 16:41:24 -04:00
bryanthaboi 09cb9e9493 Merge pull request #2442 from 1Jamie/grandpas-garage
feat(game3): implement roaming legendary beasts, Seagallop ferry, poison sfx, battle trapping moves, field weather, and overworld fixes
2026-09-23 16:38:59 -04:00
bryanthaboi d408c9d78f Merge remote-tracking branch 'origin/dev' into pr-2442
# Conflicts:
#	src/core/game3/scripting/natives_seagallop.lua
2026-09-23 16:37:33 -04:00
bryanthaboi 123feef3a1 CLOSES #2425, CLOSES #2428, CLOSES #2431, CLOSES #2432, CLOSES #2433, CLOSES #2435, CLOSES #2436, CLOSES #2437, CLOSES #2440
CLOSES #2425, CLOSES #2428, CLOSES #2431, CLOSES #2432, CLOSES #2433, CLOSES #2435, CLOSES #2436, CLOSES #2437, CLOSES #2440
2026-09-23 16:34:15 -04:00
1jamie a366339873 fix(game3/battle): guard from_rom and move_target_byte against nil ROM pack in headless tests 2026-09-23 14:12:44 -05:00
1jamie ce79dc86d5 fix(game3): implement if_can_escape and if_cant_escape AI script commands 2026-09-23 14:04:03 -05:00
1jamie d74c43a71b fix(game3): make Engine.canSwitch and State.prefixedName resilient to unpopulated RomText cache 2026-09-23 13:59:20 -05:00
1jamie 703e103e3c fix(game3): make battle AI pack loading graceful when running outside full ROM cache 2026-09-23 13:55:54 -05:00
1jamie bb3a1cf3a6 fix(game3): fix Flags.get lookup in save repairRoamer and add Moves.priority fallbacks 2026-09-23 13:52:24 -05:00
1jamie 8621d024dc feat(game3): implement roaming legendary beasts, Seagallop ferry, field weather, and overworld fixes
- Implement roaming legendary beast system (Raikou, Entei, Suicune) matching pokefirered (src/roamer.c), including 31-cap IV fix, Roar despawn fix, battle flee logic, and trapping interactions (Mean Look, Shadow Tag, Arena Trap, Wrap).
- Implement Seagallop ferry crossing cutscene and transit between Sevii Islands and Kanto.
- Implement field weather engine, weather extraction, and particle rendering.
- Implement renewable hidden items and step events.
- Fix poison step sound effect (SE_FIELD_POISON).
- Fix encounter cooldown lookup for grass/cave terrain.
- Add comprehensive test suites for roamers, weather, Seagallop animations, and ladders.
2026-09-23 13:46:57 -05:00
thibautbus 7e96172391 Space and cut FireRed Japanese text the way the cart does
A Japanese glyph advances by its width plus the window's letter spacing,
which a Latin one ignores (pokefirered/src/text.c:853): 1 for the normal
font (new_menu_helpers.c:413, the field message printer), 0 for the small
one (gFontInfos, new_menu_helpers.c:65). The engine already adds that
spacing, but only to a string carrying the {JPN} control code a ROM-
extracted one does; a mod's Japanese text has none, so its kana ran a pixel
tighter per character than on the cart. A glyph drawn from a Japanese sheet
now takes the window's spacing either way, and only once, falling back to
the message printer's spacing when the window sets none.

Name limits count characters (PLAYER_NAME_LENGTH, POKEMON_NAME_LENGTH), but
the start menu, the continue screen and the PC's hovered-mon panel cut names
with string.sub, in bytes. A kana is three bytes, so a five-kana species name
lost two characters in the PC and a Japanese player name was cut inside a
character. FrlgFont.truncate cuts by UTF-8 character, and those sites use it;
Latin names are cut as before, and an accented Latin name, whose accented
letters are two bytes, is no longer cut short either.
2026-09-23 18:23:27 +02:00
thibautbus 3252a3f2c9 Draw Japanese text in FireRed with the cart's own Japanese fonts
game3 prints every string with the US cart's Latin font, and FrlgFont has
no glyph for a kana, so a Japanese translation of FireRed would print
blank. The US cart still carries its Japanese fonts, which its text
printer draws for a string in Japanese mode (pokefirered/src/text.c:141,
:227): pret builds them into the US ROM, with the normal font's width
table.

The font extractor now bakes both, the normal font from its eight-to-a-row
layout (DecompressGlyph_Normal, text.c:1452) with its widths and the small
one sixteen to a row (DecompressGlyph_Small, text.c:1372), as
chrome/fonts/japanese_{normal,small}_{fg,shadow}.rgba and
japanese_widths.lua. LeafGreen's addresses follow the same -0x24 shift as
the rest of text.o. Cache version 120 re-imports existing caches.

FrlgFont numbers a Japanese character by its byte in the Japanese block of
pokefirered/charmap.txt (kana 01-A0, the full-width space, !?。ー), plus
the symbols the font keeps at the Latin block's codes in their full-width
forms (digits, letters, 『』「」, 円, /, :), offset past the Latin
glyphs. A character with no Latin glyph draws from the Japanese sheet, at
the width the cart gives it (the table for the normal font, 8px for the
small one). Latin text is drawn as before.
2026-09-23 18:07:32 +02:00
bryanthaboi dee935a4ea CLOSES #2430 2026-09-23 11:58:32 -04:00
Shane McGovern 2454173ac6 feat(game3): in-game MODS entry with FRLG-styled mod manager
Add a gated MODS row to the FireRed/LeafGreen start menu and an always-on
MODS row in the option menu. Both open a manager on the game3 stack that
reuses ManagerState behavior (list, detail, options, staged apply, profiles)
and draws with FRLG chrome. Nested name/quantity prompts route to the Gen 3
naming screen and a quantity dialog; APPLY & RESTART returns to the title.
2026-09-23 15:15:44 +01:00
bryanthaboi 312fa7eb44 rom rememberer2 2026-09-23 07:21:01 -04:00
bryanthaboi 2501e1d0b9 rom rememberer 2026-09-23 06:38:06 -04:00
bryanthaboi eaedbccb3b skip game3 trade rules test when no rom cache 2026-09-23 06:00:44 -04:00
bryanthaboi ebbf4709c8 CLOSES #2411, CLOSES #2418, CLOSES #2420, CLOSES #2422, CLOSES #2423, CLOSES #2424 2026-09-23 05:51:05 -04:00