meanietux? On MY Memory Card?

In keeping with trying to reanimate my poor old Scratchpad, I figured I’d ramble a little bit about a project I’ve had sitting since April of last year, could never quite figure out what to do with, had a 1200 IQ idea about, and spent a night delving headfirst into semi-charted console modding waters to realize.

Something I was damn insistent on with any GH2 custom discs I release was having a custom save icon to go with it. If you’ve never owned a PS2, your memory card invariably ends up host to a variety of cute, tiny, colorful 3D models representing all of your save games. (Unless the save got borked, in which case you will only get the Blue Corrupted Cube of Doom. Nasty.) GH2’s save icon is a chunky imp hand throwing devil horns, as you can see in the screenshot below. (The brighter one is GH2DX.)

A variety of saves on my PCSX2 virtual memory card
See how many you recognize!

Now, while it’s long been known how to make GH2 PS2 save to a different folder on the memory card, it’ll still use the imp hand and normal save name. Worse yet, the PS2 doesn’t display disc IDs on the memory card screen. If you play enough custom discs with the foresight to change the disc ID but not enough foresight to come up with a new save icon, you’ll end up with a ton of identical-looking imp hands, and I just wasn’t having that. That felt as quick and dirty as ARK injection.

Of course, me not being a 3D modeler extraordinaire (seriously, I’ve got some old-ass models I did lying around, they’re nice, but I never could texture them…), around April 2020 when marfGH was really starting to dawn in my head, I had the big-brained idea to pluck the Flareon model from Pokemon Stadium. It only made sense; Stadium was an N64 game, and save icons are all incredibly low poly (500 tris or less, roughly). The Stadium Flareon was 700 tris, but I figured I could make it work. That wasn’t that many more, right?

There was a minor problem though. PS2 save icons have a hard limit of a single texture at 128×128. Stadium Flareon’s texture map is 224×128, meaning I would have to rewrap the UVs and fit the same amount of detail in less space, all while not being particularly well-versed in the art of texturing anything. I shelved it, and it forever became a sticking point in any future disc releases.

At some point in the last few months, I thought of a way around my dilemma. Rather than try to remap a bunch of detailing or even just outright retexturing the model, adjusting UVs and taking time away from stuff I actually want to do, I’d just make the model a single color like a statue. Remap the UVs in MilkShape from the front, shift the eye UVs away from the body, paste in the eyes down there in, and it’d be all set to go. This has the added bonus of being able to retexture the same model for subsequent discs (silver mari, gold mari, green mari…), and given that marfGH is now looking like a series of chart sampler discs rather than one big one, that’s important.

And yeah, the MilkShape exporter I used seemed to work beautifully! (Once I gave it a 24-bit bitmap.) I had my model viewable in your choice of PS2 save icon viewers, including PS2 Save Builder where it looked baller as fuck:

mari looking sharp as fuck in the PS2 Save Builder application
dcb suggested I paint him up in Somnolian colors. Was a very very good suggestion.

Aaaaaand then it showed up as the Blue Cube of Doom in the PCSX2 BIOS. A guy in MiloHax confirmed for me this also happened on hardware.

The dreaded Corrupted Cube of Doom

Now, initially, I thought the model export had gone wrong somehow, and Sony’s model parser was less tolerant of errors than a bunch of fanmade software. I tried other people’s libraries and tools for both reading in my model and also exporting out a new one and got the exact same result: all the tools would read it, while the PS2 BIOS would shit itself.

mari's model working JUST FINE in another PS2 icon viewer
[1:52 AM] mariteaux: well, for the final kick in the gonads for the evening
the iconsys library’s viewer also has no problem with it

Any time you look up the (rather scant) amount of custom save icon troubleshooting stuff online, usually, people pin the culprit down to either an icon.sys that isn’t pointing to the right model or a model with too many tris. In my case, it was the latter, and I realized this when I tried the original imp hand model (gh.icn) with the same exact save folder in PCSX2 under the exact same name and it worked just fine.

Into Blender mari went. Surprisingly, I still vaguely know how to get around the fucking thing, despite not having used it in a solid six years. Initially, I was gonna hand-reduce the tri count, but frankly, the Decimate modifier did a better job and in much less time. (I was rather gentle with it–like a ratio of 0.84 or so.) That got the model down from its original 704 tris to a crisp, and more importantly working, 585 tris.

mari! In my virtual PS2!
This is with the stock GH2 lighting and background settings, hence why he’s so bleached out. I’ll also have to dig back through MiloHax and find the discussions about hex-editing the game’s executable and changing the save name (which has a mandatory line break in it, so that’s fun).

So yeah, it seems like the polycount ceiling for PS2 save icons is around 600 or so, perhaps a bit higher, but 700 is definitely far too high.

Regardless, he works! I’ll need to tweak the lighting and background data on the save to keep him from being bleached out, which is thankfully piss easy to do. PS2 save icons have four points of color the BIOS will use to generate a gradient, then an ambient light applied to the model, and then three point lights, each with XYZ values and colors you can set individually. GH2 has an mc.dta file with each of these settings stored in Data Array format, which is especially handy. I’ll likely toy with it using PCSX2’s converted folder saves system (so everything’s a loose file and it’s a lot easier to get to), and then transfer it to that file rather than guessing at settings.

Aside from a single additional port I wanna do and then some dinking around to unlock everything in the game from the start, I think we’re finally clear for some kinda customs sampler disc from me! My plan is to release a real simple demo with some of my favorite customs to date and then one GH and one RB port each for flavor. Past that, the discs would come with 20 songs apiece, ten customs, ten ports, all tiered out as you’d expect. I have absolutely no shortage of stems to chart, and I have a ton of ports left over from the big marfGH disc that are fully playable, fun charts, but just haven’t been released yet. Absolutely trivial to add to a disc and throw on archives.

I’m also gonna look into WordPress email posting. Perhaps I can get some updates going from the eMachines box, seeing as it won’t run any browsers new enough to play nice with the WordPress block editor. Any time I can make that machine a little more useful for all the various things I do, I do so. Means I need my main machine less and less.

mari in my virtual PS2, tweaked and relit
This is with a different albedo applied, admittedly. I’ll reuse the Somnolian one for a bigger disc.

(Update: I wrote this two days before it went live and meant to have a post before it showing off some of the web and writing stuff I’ve been up to, but eh, plans. For what it’s worth, I cleaned up mari in the BIOS (new lighting, new background gradient!) and got a nice, solid, ten-song base with everything unlocked for a custom disc. Everything else is piss and far more in my area of expertise. Nothing’s ever easy, but hopefully soon. But not today, because I want to go play in my Windows XP sandbox.)

Leave a Comment