If I was a popular Tumblr blogger, I could go on here and say “my yaoi balls and my yuri nuts hurt” and receive notes one million billion. But alas. The peasant must toil the field.
okay I’m hacking on the House MD DS game. it’s nice of them to include a cast option in the credits, in case you bought the game without knowing the show.
That was easy. Good news: text is very, very injectable.
So, here’s a bit of info about how the DS works: It has two GPUs, one for each screen. Each screen can show 4 separate background layers, and one sprite (object) layer. So that’s a total of 10 layers, across two screens.
But you can also copy from one to the other, at the expense of lower framerate. So some games that do stuff like render 3D on both screens do it by having the main GPU (which has the 3D graphics functionality) render both screens, which means the framerate has two be half, as you’re doing twice the renders.
So here’s House MD DS, with all layers enabled:
And here it is with the 1st background layer of the main GPU turned off:
Yeah. For some reason this game DOES NOT AT ALL use the layer system of the DS, and renders ABSOLUTELY EVERYTHING into the background layer 1 of the main GPU, then copies that onto the second screen. What the hell? Was this made by some company that had never touched a DS before?
I thought it just might be the dialog screens, and the other gameplay sections use layers and sprites and such…
NOPE! works exactly the same.
all the images are just PNGs. They implemented a PNG loader on the DS and just load them at runtime.
This is a prank, right? this game isn’t real, one of ya’ll just made it up to troll me?
THERE’S A PANTIES SORTING MINIGAME?
I don’t even need to extract all the portraits: they’re just in a folder called “layouts\ui\avatars”
well I still need to extract the font, I guess..
MOTHERFUCKER!
(also: all the sound effects are just WAV files)
this image is labeled “bottom.png”.
No comment.
the game has all the screens defined as XML files for “layouts”.
each one has a group of polygons defined in it, and the <layout> element has an attribute called “num_ploys”.
THIRTEEN YEAR OLD TYPO DISCOVERED
yep, there’s a panties sorting minigame. watta hell
WAIT
The font is shaped the same, but it’s 1-bit, not the several-bits that the game’s font is! SO IT’S WRONG! so I actually still have to do some work!
motherfucker. it IS the right font, they just set all the colors to the same. It’s palettefucked. Easily fixable.
I decided to skip the font image so I could just use my existing methods (aka AVFE*) which’d give me widths as well, and then I finished that.
but then I realized something:
these two shades do not match. This font is SEMI-TRANSPARENT. oh no…
* Automated Visual Font Extraction, my patented** method for extracting fonts from games
** not really
Look at this background. Look at how it’s got, like, smooth gradients and shit.
Now let’s compare to the actual game:
It looks like shit.
You can especially see on the ground between the medical thingy and the bed. It’s because the DS has a limited number of colors and is converting this file at runtime. That’s right, the first image is the actual texture that the game is loading… it then has to down-convert it to be able to display it at all.
This means that the death generator is going to accidentally LOOK BETTER THAN THE GAME ITSELF
annoyingly they didn’t define the shadow-color with a distinct color. They just used a specific palette index. So I can modify it to make it useful… but then I have to somehow do dynamic palette manipulation on 142 PNG files which have different palettes.
That’s not going to be fun. Palette support is a fucking mess in most image editing programs/image manipulation libraries.
So I hacked some new backgrounds in and overwrote some images, and it turns out that they’ve done all of this in a very weird way:
There are 32 colors per avatar, except the avatar actually has 256 colors. When loaded, they’re converted so that some of them have alpha transparency.
Why they did this, rather than just using PNG’s built in transparency? I don’t know.
Left is how the sprite renders on a white background, right is what it looks like in the sprite file.
OKAY I wrote some code to fix the transparency. Here’s all the avatars
BTW check out @plorpl’s two posts that got me looking at this game:
It’s got the knitting octopus on the back, and waves on the front. It’s made entirely out of old jeans. I like that you can see the wear and tear from its previous life as jeans. It’s inspired by my DnD character, Tidal, a cheerful sea elf.
category of blorbo called “technically i like them but fanons obsession with them to the exclusion of other characters pavloved me into having a negative reaction whenever i see them”