Post

PS2IODB 2026 Release

PS2IODB 2026 Release

My project, the PlayStation 2 Icons Open Database (PS2IODB) is a website that freely hosts archived PlayStation 2 save icons, viewable for free and interactively right in your browser. As well as the website, the project provides a desktop app for contributors to contribute icons with.

The project has never been perfect. It started as a way for me to learn making SPAs/React. The desktop app is a simple fork of another existing tool to add export and QOL capabilities. The existing tool base wasn’t perfect either, not being able to read many different icons.

These imperfections didn’t stop the project from taking off and exceeding my expectations though. The first commit was on 19 April 2023 and now almost 3 years later we have 41 different contributors and 4997 icons for 3442 different titles, this is almost 80% of the icons we know of.

This treasure trove of nostalgia now leads to approximately 150 visitors per day from around the world, I hope bringing joy and a smile to each.

Icon Animations

One of the biggest imperfections of the project has been animation playback. Animations are shape/vector based rather than bone-based as you’d see in 3D animation today. This means that the object’s vertices have their position defined across multiple “shapes”. Shapes are like defining the whole model over again but with the vertices in the desired position for that shape.

An illustration showing a wave animation's shapes. Shape 0 shows a person standing. Shape 1 has their arm half raised. Shape 2 has the arm waving to the left, and shape 3 to the right.

But there is more to it - the animations define frame keys, allowing to interpolate between the shapes at different times with different strengths, allowing for more complex, smooth or interesting animations. For example in the waving example above, shape 2 and 3 could be interpolated between each other multiple times, making person wave their arm back and forth multiple times before placing it down again. This can also be seen as a storage space optimisation, as the memory cards that held this data are very small.

Up until now the animations on the site played through the shapes one by one, interpolating frames between the shapes to provide a smooth animation, totally ignoring the frame keys. This is clearly incorrect but has been good enough to satisfy visitors.

Despite the site not using this information for playback, the tool still extracts it, and we still store it, so when I was ready to figure out the system all icons could be cutover to their proper animations.

The Saviour Techwritescode

In July 2025, I was contacted on Discord by a stranger named tech, or techwritescode. He was asking how I implemented animation playback on the site (before I had made it open source), hoping to get some help for their implementation. I had to inform them that I hadn’t really done it, and it was just a dodgy placeholder implementation.

After further chat, it was clear that tech was very knowledgeable and knew far more about this topic than I did.

A graph made by tech to visualize frame keys weights & times relationships. Shown here is God of War 2. Different color lines identify different shapes. The Y axis is 0.0 - 1.0, and the X axis is time.

The primitive placeholder animation playback system (left) vs the playback using the frame keys data (right).

The above image and video show the frame keys graph and old/new animation playback of the God of War 2 save icon. The blue zig-zags in the graph can be seen manifesting in the animation playback as the two pillars pulsing back and forth between shapes.

Despite the promising results, there were still some ambiguities, and life got in the way. We both got busy with other things and fell out of contact. We reconnected in early December, and were able to get the ball rolling again.

I decided now as the time to finally make the site open source (make the repository public), and Tech was able to make 2 PRs [1] [2] to implement the new animation playback on the site, but not all was well.

The Bad News

Tech discovered that even the base tool that our extractor was forked from did not read the animation data correctly, always discarding the very first frame key. We cannot guess what the values for the first frame key are for each animation, meaning that with the new animation playback code, all existing animations looked very broken.

So, animation data on the site is invalid. In other words, all icons with animations on the site need to be re-contributed.

Fixing this will be a migration period for however long it takes. Icons with the broken animations, will continue to use the old animation playback system. Icons extracted from today with the animation fix, will have "version": 2 in the animation file, causing playback to use the accurate technique.

The Good News (Updates)

Since we have a bit of work ahead of us to re-contribute all of these animations, say hello to the brand new extractor!

The New Web Extractor

A screenshot of the new web-based PS2IODB extractor tool

The new web-based version of the extractor solves many problems, most notably:

  • Contributors can now contribute from any operating system, including mobile ones!
  • Fixes/updates to the extractor are provided to all users without need for redownload.
  • No differences between the icon preview on the desktop extractor and the website.
  • Users need not be wary of downloading anything, and no security risk thanks to the browser sandbox.

The new extractor brings with it fixes for other non-animation related problems, making a majority of previously broken icons (which we have a bit of a library of in our Discord’s #broken-icons channel) now extractable!

Screenshot of the new extractor viewing Katamari Damacy The infamously broken “Katamari Damacy” save icon, now viewable and extractable with the new web extractor.

The new extractor can be accessed at ps2iodb.com/extractor, there is also a link at the top of the home page.

Please note the new web extractor has not yet been battle tested, so if you encounter any issues please report at GitHub or in the Discord.

Animation Information

When viewing an icon with outdated animation data, the animate checkbox label will now have an orange squiggle below

The database now keeps track of the version of the animation data of each icon. This allows us to tell users when an animation is broken, and which are broken and correct.

The “Animate” label on the icon screen is interactable for icons with broken animations. Interacting shows a modal with information of error.

The browse screen’s new category filters; “Animated”, “Static”, “Broken Animation” & “Correct Animation”.

As well as being able to filter by broken/correct animation, users can now also filter by animated and static icons as a by-product!

Multiple Contributors

To encourage re-contribution of icons with broken animations, contribution will now be given to both the original contributor and the fixed animation contributor.

The updated contributors listing, showing multiple contributors for a single icon.

Icon Viewer QOL Improvements

The icon viewer has had some refinements to improve the user experience.

  • By default icons were displayed with a grid and axes helper guide, this has now been changed to a slight radial shadow. The shadow is invisible from below incase you wish to look underneath an icon.
    • The grid option is still available via the new Base setting.
  • The previous texture viewer modal was very ugly, it has now been revamped and looks rather nice.
  • Adjustments have been made to how the camera is positioned when an icon is loaded, and will no longer reset position when switching between states.
  • The sensitivity for rotating the icon now takes into account the screen dimensions to offer a nicer experience across desktop or mobile.

Screenshots of the icon view page, showing the new radial shadow base and the new texture viewer Left: The new default base option, the radial shadow. Right: The new texture viewer interface.

Thank You

The PS2IODB is by far my favourite of all my projects, and I have learnt a lot in the process.

When I started writing the first bits of code I thought it would maybe have 10% of the icons after a few years, never did I think we would be at 80% by now, and with the possibility of completion within grasp.

Thank you from the bottom of my heart to all who have contributed, spread the word, or just visited the site. It all means a lot to me!

This post is licensed under CC BY 4.0 by the author.