1309 Commits

Author SHA1 Message Date
bryanthaboi e81362907a CLOSES #2843, CLOSES #2844, CLOSES #2845, CLOSES #2846 2026-10-10 14:06:59 -04:00
bryanthaboi daf8673954 CLOSES #2840, CLOSES #2841 2026-10-10 09:37:06 -04:00
bryanthaboi 8fae5bd472 CLOSES #2833, CLOSES #2835, CLOSES #2836, CLOSES #2838, CLOSES #2839 2026-10-10 09:16:28 -04:00
bryanthaboi 4ee2c8011f oakie doke 2026-10-10 07:34:17 -04:00
bryanthaboi 8f6360f695 CLOSES #2817, CLOSES #2818, CLOSES #2819, CLOSES #2820, CLOSES #2821, CLOSES #2822, CLOSES #2823, CLOSES #2824, CLOSES #2825, CLOSES #2826, CLOSES #2827, CLOSES #2831, CLOSES #2832 2026-10-09 23:06:42 -04:00
bryanthaboi 7a5054a60f CLOSES #2813 2026-10-09 13:42:02 -04:00
bryanthaboi 4db70c5764 CLOSES #2813, CLOSES #2815 2026-10-09 13:36:14 -04:00
bryanthaboi a12952dccb CLOSES #2814 2026-10-09 13:13:34 -04:00
bryanthaboi 30ca93614b rs 2026-10-09 10:50:30 -04:00
bryanthaboi 5445ef017e CLOSES #2802, CLOSES #2803, CLOSES #2804, CLOSES #2805, CLOSES #2806, CLOSES #2807, CLOSES #2808 2026-10-09 09:13:45 -04:00
bryanthaboi 630807f145 fix this break that 2026-10-09 08:25:29 -04:00
bryanthaboi 01b7835bae CLOSES #2799 2026-10-08 21:33:39 -04:00
bryanthaboi 130653f4c9 Merge pull request #2774 from artyrambles/st_pokemon.sprite_shinyfix 2026-10-08 20:59:41 -04:00
bryanthaboi ca007c5c0c CLOSES #2793, CLOSES #2794, CLOSES #2795, CLOSES #2796, CLOSES #2797, CLOSES #2798 2026-10-08 20:54:39 -04:00
Arty e0b1932ae5 Merge branch 'dev' into st_pokemon.sprite_shinyfix 2026-10-09 00:10:30 +02:00
bryanthaboi f84663022e CLOSES #2789, CLOSES #2790 2026-10-08 16:52:07 -04:00
bryanthaboi 5d1d88fa57 CLOSES #2785, CLOSES #2786, CLOSES #2787 2026-10-08 15:34:43 -04:00
bryanthaboi 64af27e075 CLOSES #2784 2026-10-08 14:44:47 -04:00
Arty ab0a218232 Update Gen3Compat.lua 2026-10-08 19:57:23 +02:00
Arty 753553927b Update Gen3Compat.lua 2026-10-08 19:55:42 +02:00
bryanthaboi 463292a10d CLOSES #2782
CLOSES #2782
2026-10-08 13:42:13 -04:00
bryanthaboi c708e3ee52 CLOSES #2781 2026-10-08 13:35:00 -04:00
bryanthaboi 2eec7c0fd5 CLOSES #2770, CLOSES #2772, CLOSES #2773, CLOSES #2775, CLOSES #2779, CLOSES #2780
CLOSES #2770, CLOSES #2772, CLOSES #2773, CLOSES #2775, CLOSES #2779, CLOSES #2780
2026-10-08 12:46:55 -04:00
bryanthaboi d98f454c89 CLOSES #2768, CLOSES #2771, CLOSES #2778 2026-10-08 12:12:15 -04:00
Arty 401c08eff6 removed the redundant function argument that caused the linter to have a panic attack
- it was a false positive to begin with but
2026-10-08 18:09:20 +02:00
bryanthaboi c819846a3d CLOSES #2759, CLOSES #2761, CLOSES #2762, CLOSES #2763, CLOSES #2764, CLOSES #2765, CLOSES #2766, CLOSES #2767
CLOSES #2759, CLOSES #2761, CLOSES #2762, CLOSES #2763, CLOSES #2764, CLOSES #2765, CLOSES #2766, CLOSES #2767
2026-10-08 10:20:26 -04:00
Arty 4b701f68a4 added shiny to ctx
- passing shiny fields to ctx, meaning that the hook now also contains shiny information in gen3
- now mods that wrap the pokemon.sprite and pokemon.icon in gen3 games can react to the pokemon being shiny, just like it was possible in gen1 and gen2
- please add this to the documentation as well
2026-10-08 15:57:11 +02:00
bryanthaboi e0f3575c49 Merge pull request #2757 from Nexhas28/debug/emerald-matt-2748 2026-10-07 22:44:40 -04:00
bryanthaboi 91d58affdc CLOSES #2732, CLOSES #2746, CLOSES #2756 2026-10-07 22:40:12 -04:00
bryanthaboi 527957de52 editor clean up 2026-10-07 19:07:05 -04:00
Shane McGovern 6eda75cc92 fix(emerald): recover Matt encounter after early Mossdeep Gym completion 2026-10-07 23:54:55 +01:00
bryanthaboi 0d0662cb04 launcher video 2026-10-07 17:11:53 -04:00
bryanthaboi b148773169 more 2026-10-07 17:02:29 -04:00
bryanthaboi b37445b06d Fix follower draw compatibility 2026-10-07 16:48:06 -04:00
bryanthaboi fde27a91f6 Merge pull request #2504 from tomasmorello/ps4-port 2026-10-07 15:43:01 -04:00
Autoresearch f5235858e9 Android: prevent audio focus freeze and add audio mode option (fixes #2742)
- On Android, allow game audio to mix with external audio by default instead of demanding exclusive audio focus and freezing when focus changes.
- Add an 'AUDIO MODE' option across Gen 1, Gen 2, and Gen 3 options menus and Launcher Settings:
  - BOTH: Game BGM and SFX mix with external media.
  - EXT ONLY: In-game BGM is muted while SFX remains active, mixing with external media.
  - GAME ONLY: Requests exclusive audio focus (AUDIOFOCUS_GAIN), pausing background media.
- Guard Gen 3 waitse/waitfanfare audio script waits with timeouts and Audio._suspended checks so script execution never blocks indefinitely when audio is paused or interrupted.
- Expose setAudioMixWithSystem / love.audio.setMixWithSystem via JNI / C++ to dynamically toggle Android audio focus behavior based on user setting.
- Add unit test suite in tests/engine/audio_focus_mode_test.lua.
2026-10-07 20:16:18 +01:00
bryanthaboi 3f834580dd Merge branch 'dev' of https://github.com/bryanthaboi/gen1recomp into dev 2026-10-07 14:31:40 -04:00
bryanthaboi e69b408744 union for all 2026-10-07 14:31:38 -04:00
bryanthaboi 7eb96ddb4d Merge pull request #2745 from thibautbus/fix/rs-secret-base-owner-name
Name a Ruby or Sapphire secret base from the cart's own row
2026-10-07 12:11:34 -04:00
bryanthaboi de6c5f5b89 Merge pull request #2747 from thibautbus/feat/metric-pokedex-units
Print Pokédex heights and weights in metric units when a mod gives them
2026-10-07 12:11:15 -04:00
HimioneGranger 0937e3f24b Add native Black/White battle-sprite importer with complete animations (#2598)
* Add native Black and White battle sprite importer and shared provider

* Reduce Gen 5 import scheduling and duplicate atlas work

* Play long Gen 5 idle animations from independent part tracks

* Skip part tracks when a late frame cannot be composed

* Fix importer picker lifecycle, Xbox formats, and CI coverage

* Fix Linux Gen 5 test discovery and picker regression checks

* Preserve original Gen 5 sprite resolution in provider API 2

* Trim importer comments and documentation
2026-10-07 12:10:37 -04:00
thibautbus 1caddb54e4 Print the Gen 3 Pokédex heights and weights in metric units
FireRed/LeafGreen's, Ruby/Sapphire's and Emerald's Pokédex pages print a species' height in feet and inches and its weight in pounds, converted from the cart's decimetres and hectograms; the localized carts print metres and kilograms. A mod can now give a Gen 3 species its metric height and weight the way it can on Red/Blue and Gold/Silver: the Gen 3 dexEntry schema takes heightM and weightKg, and a patch carries them into the dex table Pokemon.dexEntry reads.

src/core/game3/pokedex_units.lua tells whether a species has them, without loading the dex table itself, and formats them with one decimal and a comma before Strings("m") and Strings("kg"). FireRed/LeafGreen's entry page uses them for a seen or caught species, resolved once per species and caught state rather than on every draw; Ruby/Sapphire's and Emerald's entry pages use them for a caught species, each aligning the digits as its imperial weight does (two spaces per missing digit on Ruby/Sapphire's native page, as the cart's metric printer shifts the number by a digit's width, pokeruby src/pokedex.c:4300; {UNK_SPACER} on Emerald's), and keep the cart's unknown rows for a seen one.
2026-10-07 17:29:17 +02:00
thibautbus 722c2fc45e Print Gold and Silver's Pokédex heights and weights in metric units
The #DEX page prints the US cart's height in feet and inches, with the foot and inch tiles, and its weight in pounds; the localized carts print metres and kilograms ("TAI  ???m", "PDS  ???kg"). A mod can now give a species its metric height and weight the way it can on Red/Blue: mod.content.pokemon:patch(id, { dexEntry = { heightM = ..., weightKg = ... } }). src/core/gen2/PokedexText.lua copies them onto the #DEX entry beside the cart's own values, and the page then prints them with one decimal and a comma, right-aligned before the "m" and "kg" labels, "???" until the species is caught; the printout draws the same body, and the plain page drawn without the cache's dex sheet prints the metric values as it prints the imperial ones. The Gen 2 pokemon schema declares the dexEntry fields the #DEX page reads.

The Pokédex resolves the "m" and "kg" labels when it opens (PokedexMenu.new) rather than on every frame.
2026-10-07 17:29:17 +02:00
thibautbus 20a0fc65cd Print the metric unknown height and weight on a seen Red/Blue entry
The Pokédex page prints a species' dexEntry.heightM and weightKg when it carries them ("GR. %.1fm", "GEW. %.1fkg"), the way the localized carts print metres and kilograms. An entry seen but not caught printed nothing there, where the imperial fields print their question marks (engine/menus/pokedex.asm:449-450) and the localized carts their own mask ("GR.  ???m", "GEW  ???kg"). It now prints "GR. ???m" and "GEW. ???kg", which a translation mod words like the two formats.

The entry page resolves both masks when it opens (DexEntryMenu.new) rather than on every frame; the printer's one-off render still looks them up itself.
2026-10-07 16:04:25 +02:00
thibautbus f7b9006a8c Name a Ruby or Sapphire secret base from the cart's own row
A secret base is named after its owner: the owner's name, then the row the US carts append ("'s BASE"): Emerald's gText_ApostropheSBase, which Ruby and Sapphire's text aliases point at their gOtherText_PlayersBase. SB.name fills the STR_VAR_1 of Emerald's European rows, but Ruby and Sapphire's European rows name the owner with the player placeholder ("BASIS v. {PLAYER}", "BASE DE {PLAYER}"), which the German cart fills with the owner's name (pokeruby/src/secret_base.c:642, de_sub_8073174), and the TV's map name appended the row after the owner's name. With a translation mod, a base was named "MAYBASE DE " followed by the player's own name.

SB.nameWith fills either placeholder with the owner, or appends the row where it has none; the secret base's name and the TV's map name both use it.

The registry lists draw every registered base's name on every frame, so the rendered row is kept per row text, label and catalog state, and naming another owner only fills it.
2026-10-07 15:56:34 +02:00
bryanthaboi c68ba87907 Merge pull request #2743 from thibautbus/fix/rs-starter-category-utf8
Cut Ruby and Sapphire's starter category by characters
2026-10-07 09:46:17 -04:00
thibautbus d0cbee79de Cut Ruby and Sapphire's starter category by characters
The starter selection labels a starter with its category's first 11
characters (pokeruby/src/starter_choose.c:522), but cut the string at 11
bytes. An English category fits, but a translated one can be written in
multi-byte UTF-8: a Japanese category, three bytes a character, was cut
in the middle of its fourth character, and an accented letter can be cut
the same way. The label now keeps 11 characters (FrlgFont.truncate).
2026-10-07 15:19:47 +02:00
bryanthaboi cafb6e63da followups 2026-10-07 09:14:37 -04:00
bryanthaboi fcdaecd496 CLOSES #2726, CLOSES #2727, CLOSES #2729, CLOSES #2730, CLOSES #2731, CLOSES #2733, CLOSES #2734, CLOSES #2735, CLOSES #2736, CLOSES #2737, CLOSES #2740 2026-10-07 06:04:57 -04:00
bryanthaboi 2f89018cb3 home / migration box work 2026-10-07 04:19:41 -04:00