Fifth generation animated sprites demonstrated in Pokemon FireRed, public release to follow

frsprite.jpg

The fifth generation of Pokemon was always the most impressive in my mind. Blending 3D models with 2D sprites, it in many ways embodies the idea behind Square Enix's HD-2D concept; though it admittedly needs a little help from emulators to look its best. Beyond the overworld though, battles had never felt so alive thanks to each of the games' 649 Pokemon now having a looping animation when out on the field. For the first time, we now get an idea of what this might have looked like on the GBA.

Posted by Reddit user Zyphrost, we get to see an early fight in Pokemon FireRed with a Geodude and Sandshrew being a little more active than usual on-screen. According to their post, every Pokemon available in the third generation has had their animated sprite ported, including their shiny variations. Though back sprites are currently static there are plans to experiment with them, with one notable concern being the sheer amount of space they would take up. Paired with the limited screen space available for back sprites prior to Gen 5, it's easy to see why this might not be trivial.

Zyphrost provides some insight into what went into these sprites in a comment:

Zyphrost said:
I think the implementation pipeline should be relatively similar for the backsprites, especially now that I've been able to find out what a lot of the errors were when doing it for the front sprites. I think that the cropping is going to require a lot of manual passes, though. In the case of the front sprites, I didn't crop or downsize anything, and just ported the 96x96 sprites directly. In the case of the backsprites, it might be a little weirder, but still seems reasonable.

The method was actually something I hadn't seen online, which was challenging to figure out because my first pass at implementation was actually running a script to downsize the the 96x96 sprites to 64x64. They looked awful, but they did technically work. But it wasn't worth it aesthetically, and I knew that it would be functionally impossible for me to actually go ahead and manually downsize every single frame of every single Pokemon to 64x64, so I decided to take a swing with the full-size sprites.

Basically, the limitation is that the GBA can only display up to 64x64 pixels as a single object. The front sprites are larger, so I spliced them up into multiple pieces and then fit them together like a jigsaw puzzle. The other limitation is that the Gen V sprites are multiple frames (Pidgey has 22 frames of animation, for example). Since most of the canvas is transparent, I had to optimize for space by storing only the non-empty 8x8 tiles, mapping them to where they are in the grid. So, a typical canvas might have a hundred or so tile positions, but you usually only need 20-40 of them at a time.

This animation data is then packed into different files, one per mon, with a header that contains information for canvas size, frame count, anchoring coordinates, etc., as well as the compressed versions of the frame data. So the game's engine can decompress one frame at a time, converts it to the GBA tile format, and then uploads to VRAM. Every frame repeats this.

The innovation (I think) is the subsprite layout system. This is basically what defines how you're supposed to cut up the 96x96 canvases into smaller pieces with specific tile offsets so that when you stitch them together, it still looks like it's just one sprite. This is also roughly what I did for the HGSS backsprites (barring the animation data) which are 80x80, so those do look noticeably larger than the front sprites.

But yeah. There was a ton of stuff that went wrong in the implementation. For the longest time, there were just these random ass vertical stripes running through all of the sprite data (somehow even leaking into other sprites in the game, not just the battle sprites), and nothing seemed to fix them. But I managed to get that sorted eventually.

Those interested in seeing the sprites in action can find the video and original post linked below. A public release is planned, so you might see these sprites worked into future ROM hacks.

:arrow: Source
 
Animating the Pokémon was never hard, particularly since B&W used puppet-style animations, what it was is tedious and time consuming as fuck, i can see why they wouldn't even try until they reduced the scope of the game with Black & White.

Looks good in any case. I'd play a romhack with this applied.
 

The fifth generation of Pokemon was always the most impressive in my mind. Blending 3D models with 2D sprites, it in many ways embodies the idea behind Square Enix's HD-2D concept; though it admittedly needs a little help from emulators to look its best. Beyond the overworld though, battles had never felt so alive thanks to each of the games' 649 Pokemon now having a looping animation when out on the field. For the first time, we now get an idea of what this might have looked like on the GBA.

Posted by Reddit user Zyphrost, we get to see an early fight in Pokemon FireRed with a Geodude and Sandshrew being a little more active than usual on-screen. According to their post, every Pokemon available in the third generation has had their animated sprite ported, including their shiny variations. Though back sprites are currently static there are plans to experiment with them, with one notable concern being the sheer amount of space they would take up. Paired with the limited screen space available for back sprites prior to Gen 5, it's easy to see why this might not be trivial.

Zyphrost provides some insight into what went into these sprites in a comment:



Those interested in seeing the sprites in action can find the video and original post linked below. A public release is planned, so you might see these sprites worked into future ROM hacks.

:arrow: Source
So… is there a video of then being animated because a static image ain’t gonna cut it?
 
  • Like
Reactions: Red_Belmont
This is gonna be amazing when its figured out!
But I dont understand why wouldnt be possible to make it work even if the ROM size is bigger
I mean... I know it wouldnt fit on a 16Mb ROM cartridge, but maybe it would on a 32Mb?
Since its a ROM hack, the limitations would be to fit it in a cartridge or the limitations in a GBA ROM file goes beyond the Flash chip capacity?
 
This is gonna be amazing when its figured out!
But I dont understand why wouldnt be possible to make it work even if the ROM size is bigger
I mean... I know it wouldnt fit on a 16Mb ROM cartridge, but maybe it would on a 32Mb?
Since its a ROM hack, the limitations would be to fit it in a cartridge or the limitations in a GBA ROM file goes beyond the Flash chip capacity?
If I understand correctly, I think the issue is how much memory (RAM) is available to the game on a GBA, as each frame needs to be loaded into that.

And when that's the issue, you need to edit the sprites anyway. Plus what they said about the default sprite size in the. game.

Technically you could emulate it to have more RAM but that kind of ruins the point and would break general compatibility an awful lot more than increased ROM size. I think the Pokémon romhacking community never let themselves get limited by ROM size. I bet a lot of hacks still at least have the base game map data still.
 
  • Like
Reactions: Hirugaru
Getting worked up by things like these is why I preferred collaborating on Gen IV/V Hacks.
 
it was only a matter of time, this concept has been somewhat possible since binary was the norm back in the day
pokemon jupiter was an old ruby hack that replaced pokemon and characters with Golden Sun characters
and Djinn, that also had animated sprites during battle and not just at the start. (Ex. Emerald, Crystal, etc.)
 
  • Like
Reactions: Red_Belmont

The fifth generation of Pokemon was always the most impressive in my mind. Blending 3D models with 2D sprites, it in many ways embodies the idea behind Square Enix's HD-2D concept; though it admittedly needs a little help from emulators to look its best. Beyond the overworld though, battles had never felt so alive thanks to each of the games' 649 Pokemon now having a looping animation when out on the field. For the first time, we now get an idea of what this might have looked like on the GBA.

Posted by Reddit user Zyphrost, we get to see an early fight in Pokemon FireRed with a Geodude and Sandshrew being a little more active than usual on-screen. According to their post, every Pokemon available in the third generation has had their animated sprite ported, including their shiny variations. Though back sprites are currently static there are plans to experiment with them, with one notable concern being the sheer amount of space they would take up. Paired with the limited screen space available for back sprites prior to Gen 5, it's easy to see why this might not be trivial.

Zyphrost provides some insight into what went into these sprites in a comment:



Those interested in seeing the sprites in action can find the video and original post linked below. A public release is planned, so you might see these sprites worked into future ROM hacks.

:arrow: Source
Any date predicted for this to release? Or it's already out?
 

Site & Scene News

Popular threads in this forum