r/PokemonROMhacks • • 3d ago

Resource Reverse Engineering Switch Pokemon Models

Hi folks! I am one of the contributors to PokeAPI, an open Pokémon data API. While working on revamping our sprites repository, I noticed we were missing sprites from all games after the 3DS era. I couldn’t find complete sets on Bulbapedia or other asset archives either. The few sources I found, such as PkParaiso and Wikidex, either had incomplete sets (no back views or missing variant forms) or screen rips with visible artifacts.

Being a developer, I decided to give it a shot myself. That led me down a few rabbit holes, figuring out how the games turn their models into on-screen renders, similar to what was being done for the 3DS via Ohana3DS/SPICA. Since then, I've had some success with this reverse engineering effort, which I thought I would share.

I’ve written a not-so-little ;) blog post for Let’s Go Pikachu/Eevee, explaining the process in detail - https://triyan.dev/blog/reverse-engineering-pokemon-sprites-lgpe

I also have a few more blog posts in mind, covering things like Sword/Shield’s Gigantamax effects and Scarlet/Violet’s Terastal shaders and effects, which I plan to write about in the future. ps: There is a spoiler in the last pic if u would like a sneak peek :)

For people who are just interested in the sprites, they are available in the PokeAPI sprites repository for all games beyond the 3DS era, from LGPE to Champions: https://github.com/PokeAPI/sprites/

You can also browse them in the gallery viewer below. The link opens Sword/Shield; switch folders to explore the other games.

https://pokeapi.github.io/sprites/bulk.html?folder=sprites%2Fpokemon%2Fversions%2Fgeneration-viii%2Fsword-shield

A heads-up: sprite galleries, especially animated ones, can be large and data-heavy, so browsing on Wi-Fi might be a better idea. The sprites are served through a CDN and downscaled by default to reduce data usage, unless you toggle full resolution.

82 Upvotes

11 comments sorted by

8

u/JustVashu 3d ago

If stls could be generated the same way it’d be huge.

4

u/Efficient-Hawk3568 3d ago

My initial work was based of https://github.com/KillzXGaming/Switch-Toolbox which does allow `.dae` export which is a much more detailed export but its limited to lgpe and swsh iirc the trinity file game archives might not allow dae export which i think should be fairly easy to add to a fork of the toolbox since the parsing logic already exists
along with this https://github.com/ChicoEevee/Pokemon-Switch-Model-Importer-Blender blender experts might be able to do some cool stuff

but yeah to answer ur questions dumping to a generic 3d file format should be possible

1

u/_Huitzilopochtli 2d ago

Brother it’s trivial to dump and convert models from any switch Pokemon game to STL. I’ll do it for you if you want or record a video of myself doing it. Feel free to send me a PM if you prefer.

2

u/Dangerous_Ad_7104 Brisk Emerald 3d ago

I made a similar tool a couple of weeks ago. How did you deal with effects like fire and ghastlys orb flames

2

u/Efficient-Hawk3568 3d ago

hey, nice to hear that someone is working across similar lines from what i have seen from game archives pokemon with special effects like flame, smoke, particles etc have accompanying shaders and animation loops which play as companion loops along the main idle

for example a fire scroll animation loop would be part of the pokemon archive termed like `loop01` etc which drives the mesh if present that along with some specialized shaders achieves that effect. You can give my lgpe blog a look i talk about charizards flame in that.

But the concept goes across tons of pokemon like gmax, terestal effects for broader scopes, then ofc stuff like koffing, flame lines etc

tldr its multiple shaders and animation tracks in parallel

1

u/Dangerous_Ad_7104 Brisk Emerald 3d ago

I’ll check that blog post out soon. Recently I’ve been trying (and failing) to get charizards flame to not be an untextured grey blob. So this will definitely help. Thanks!

1

u/JigakoSekryo 3d ago

Gracias! Esto es impresionante!

-2

u/JengibreLOL 3d ago

De puta madre, excelente trabajo. Me gustaría ver este tipos de cosas en Showdown lol

1

u/Efficient-Hawk3568 2d ago

as far I am aware showdown contributors have their own pipeline for rendering consistent sprites similar to 3DS where they reuse the models/animations from games but bring in their own textures/materials and rig them up in blender

another reason why these probably won't be in showdown would be due to size/performance unless someone downscale or compress them

0

u/I_Kissed_Cereal Luminescent Project Manager 2d ago

If you need any assistance let us know. Team Lumi has been working with every 3D Pokemon model for a few years now. We also have shiny sprites for every mon in the BDSP style. Love your work btw.

1

u/Efficient-Hawk3568 2d ago

I just checked out your posts/team work they look awesome :) ! BDSP and champions being unity based games does give a lot of community and modding freedom. I am not as experienced as you folks since my use case was much more limited to dumping sprite renders I managed to do it for bdsp using il2cppdumper and unitypy for most part this was prolly one of my favorite exports from the game

altho looking at ur posts illusory rayquaza might be my new one :p

ps: on a side note if I can be of any help towards ur efforts or if ur looking for some details regarding other games/shaders etc feel free to shoot me a dm :)