Decoded VITA data files! All Vita games all look similar to each other, and since Wii Muramasa and Vita Muramasa Rebirth texture looks the same, it didn't take me that long to figure out where they moved the data around.
And just like all the games before, they are all in quads.
This is WIP Okoi Mike from Muramasa Rebirth DLC
This is WIP Sorceress from Dragon Crown
Also, updated the first post with current progress.
I dummied the PerspectiveCamera with defaults, removed projectionMatrix, modelViewMatrix, and clean up any optional stuff in it, I realized the whole thing is a lot simpler than I originally thought. Three.js is completely overkill. WebGL alone is enough to do the same thing.
So instead of workaround Three.js just to do some simple things, I'm going to roll my own library using just WebGL only.
For this update, I'm going to showcase backgrounds instead. This is the "Old Man and The Sea" update.
Looking at the bgs, I can't help to feel I'm actually ripping a movie frames here. That's some majestic sea waves!
And 66 MB for one map file! In estimate, Wii Muramasa will be 66 * 203 = 13,398 mb for backgrounds. For 6 games it will be 80,388 mb... 80 GB, THAT'S MADNESS!
How to use:
1) Open folder "quad_player", and there are 2 HTML files - "quad_frame.html" (frame viewer) and "quad_anim.html" (animation viewer). Open either one of them with your web browser.
2) Both HTML share the same UI, so the process is mostly the same.
Go to "quad_data" folder, and select all the files in a set, for both *.quad and *.png. For example, to view Elf sprite, select "Elf00.mbs.quad", "Elf00.0.gtx.png" and "Elf00.1.gtx.png" (aka "Elf00" set).
To know if it is finished loading, look at the bottom bar. For animation viewer, you'll see the list (as in screenshot above). For frame viewer, you'll see "0 of x Frames".
Ever since texture can be stored using a lossy video codec, the idea of switching palettes for a palette-swap character is also phased out. Everything is saved in RGB/RGBA pixels now.
That's how the playable characters' textures are in Dragon's Crown. This is also the same for Grand Knights History.
Unlike Dragon's Crown, Grand Knights History not only has 4 different colors for each class, but also multiple heads/faces (each with 4 different colors), and a bunch of head accessories.
This unfortunately means the sprites for each class are just bodies, no heads.
So on this week I bring you Grand Knights History "Headless" update. (oh, the horror!!!)
My computer is having some nasty burnt smell for the last few weeks, until the last Saturday my power supply unit (i mean the fan) doesn't want to work anymore.
Thinking it could be PSU problem, so I replaced it. Now my motherboard doesn't work anymore. The whole thing need to be replaced.
So my 70$ fix become 700$ upgrade! (at 1:4.13 USD exchange rate, so it is ~169.50 USD)
But it is an old computer though. Had it for 5-6 years, so it have a good run.
But upgrading computer also brings another whole set of problems.
The first one is it refused to boot from my old harddisk. Something to do with UEFI and stuff. End up spending days to fix it, only to discover CSM actually stands for "Compatibility Support Module", and it is default to "disable". It doesn't help every UEFI tutorial I read ask me to DISABLE it!
Then there is hardware issues: new motherboard = new sound card = new device driver. End up upgrade my OS from Ubuntu Xenial to Fossa.
But Fossa is 64-bit OS, now I have to recompile all my 32-bit programs.
... and then it is GTK 3 now, need to look for alternative for my GTK 2 programs.
... and then reconfigure the settings/preference of every programs.
... and then reconfigure "Send to/Open With" menu for every file type.
Never ending of fixing, never ending of headache...
The project will be on hold until I finish my computer upgrade.
- Rufas
I'm nearly done upgrading my computer. Except some super stubborn 32-bit windows programs that refuse to run, the others works pretty well.
As the matter of fact, I managed to figure out the list of required DEB and made a layered filesystem to mount on top of Ubuntu Fossa. I can reuse it for future upgrades without need to redo everything again!
At the mean time, I took a peek on another Vanillaware game on NDS - Kumatanchi. Except the images for gallery mode (in different file format), the sprites is the usual Vanillaware file format. It wasn't even hard to rip them.
And with that, this project is now expanded to 8 different games, with all up to WebGL + blending/antialias problem.
04-13-2021, 06:11 PM (This post was last modified: 05-13-2021, 01:19 PM by rufaswan.
Edit Reason: not 1000 , just 640 palettes
)
Wow! We have Racoon Sam on this thread! Nice to meet you!
The Princess Crown's palette problem is more towards assembly code related. On the main executable "0.bin", there is block of 640 16-colors palette for every sprites in the game. The sprite files have only the palette indexes as texture data.
And the game have palette-swap varieties, so the texture data and palette are paired on run-time to create the required sprites.
So now the question is, where are these texture data + palette pairing data at? Is it hardcoded within a function, or does it spread around into multiple *.evn event files data?
It also didn't help the sprite data is a bit weird. In Xenogears, it uses an INT to select a palette from a palettes set. In Princess Crown, it uses only a BITFLAG. So it uses 2 palettes as a set, but looking at the resulted sprites, it should have more palettes than that.
That's where I'm at right now.
I hope you'll find more enjoyment in reading assembly code than me
As mentioned last time, to view Elf sprites, you'll need to open "Elf00.mbs.quad", "Elf00.0.gtx.png" and "Elf00.1.gtx.png" (or Elf00 set).
If you view the PNGs directly, you can tell:
- "Elf00.0.gtx.png" is the body base sprites parts
- "Elf00.1.gtx.png" is the weapon sprite parts
With that, you'll notice
- "Elf00.0.gtx.png" can be replaced with its palette swapped varieties "Elf01.0.gtx.png", "Elf02.0.gtx.png" series
- "Elf00.1.gtx.png" can be replace with other weapons "Elf00_arms01.1.gtx.png", "Elf00_arms02.1.gtx.png" series.
Hence this week update - "Mix-and-Match" update.
You can try to mix-and-match different parts to create different set of sprites:
Also, I've start uploading SOME of the sprites to the site. But I won't be uploading everything due to large file size. I also skip all blending parts since we already have quad player for this purpose.
Until next week,
- Rufas
P.S. Don'r you just love WebGL is written in Javascript? I mean, when the error is so bad so fatal, the whole web browser just CRASHED! how fun...
Since I am not making any good progress on Princess Crown, and there are people who are willing to help (Thanks @tombmonkey and @Racoon Ram!), so I will post the current WIP progress of Princess Crown.
Trying to figure out the correct blending formula, I end up instead of taking a bunch of screenshots, I used youtube videos with ',' (comma) and '.' (period) keys to step backward/forward one frame to examine sprite frames.
Data-wise, that face part above (frame 440) is the same as the kick effect part (frame 273), both are type 1 (additive blending). The fact it end up become over-exposed means I'm back to don't know what happened anymore.
Therefore, I'm opening the project for anyone wishes to help out. If you're going to play any of these Vanillaware games, and you can play it as slow as possible (so take your time to enjoy the scenery ), and you are also recording the gameplay footage, let me know the console, the game, and the character/npc/enemy/boss you want to work at. I'll upload the sprites in *.quad files, and you'll report any incorrectly assembled sprites with the correct one from your in-game footage.
As the project is about 100% faithful rip, the sprites will look just like in the game. If the parts is half-transparent, then it will be half-transparent, even if it is originally opaque/solid. If the parts is colored, then it will be colored, even if it is originally grayscale.
Just a bit more, and these 8 games will be completed!