Users browsing this thread: 3 Guest(s)
Vanillaware Ripping Project
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

[Image: zD2Lvve.png]

This is WIP Sorceress from Dragon Crown

[Image: eajzsph.png]

Also, updated the first post with current progress.

Until next week,
- Rufas
Thanked by: Barack Obama, SmithyGCN, Ton
I see u lik da laydeez. XD Just kiddin'. Very nice to see progress here.
God is good.  Big Grin

An old fart who sits on a chair, giving animation and pixeling advice,... and calls everyone son...
Thanked by: rufaswan
No major update this week. WebGL + Three.js documentation can be pretty dry, along with lots of irrelevant stuff to filter through. Zzz...

So I'm going to bribe you guys with a sheet and gets away with it. This is Demon King from Princess Crown:

[Image: hJU29Kh.png]

Meant to post these last week, but MediaFire uploader acting up on me. So here you go, along with this week:

WIP Okoi Mike

WIP Sorceress

WIP Maou

WIP Gradriel

That's all for today! Take care!
- Rufas
Thanked by: Ton, tombmonkey, Barack Obama
Found this example code and played around with it.

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.

[Image: GxG7FyV.png]


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! Starry Eyes

WebGL is the way to go from now on.
- Rufas
Thanked by: Barack Obama
The whole WebGL thing is a lot easier than expected. So here you are, the first release of WebGL sprite viewer!

[Image: quad%20viewer%20v0.1.png]

It may be built using web technology, but you don't have to be online to use it.


Sample data:
- Pooka / Cornelius (PS2 Odin Sphere)
- Odet (PS2 Odin Sphere)
- Momohime (battle) (Vita Muramasa)
- Momohime (normal) (Vita Muramasa)
- bg16b (Vita Muramasa)
- Elf (Vita Dragon Crown)
- Sorceress (Vita Dragon Crown)

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".

You can start playing around with it after that.

Let me know if you have any bugs. Thanks!
- Rufas
Love this, great work.
[Image: yXqxjiu.png]
Thanked by: rufaswan
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!!!)

[Image: ZraPKuZ.png]

It seems like I forgot an update last week, so to make up for it, here is all GKH class sprites (bodies only):

Until next week, take care!
- Rufas
Thanked by:
Amazing work, bro....!
Thanked by: rufaswan
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) Nervous

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
Thanked by:
Hey! How are you guys doing?

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.

[Image: euJFJIP.png]

And with that, this project is now expanded to 8 different games, with all up to WebGL + blending/antialias problem.

Updated the first post with current progress.

Take care!
- Rufas

Attached Files
.zip (Size: 574.93 KB / Downloads: 175)
Thanked by: Raccoon Sam
Stellar job!!

Can you elaborate a bit on the Princess Crown palette problem? Sounds like an interesting problem to tackle.
Once there was a way to get back homeward
Thanked by: rufaswan
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 Smile

Thanks for your interest!
- Rufas
Thanked by:
Another update on WebGL sprite viewer.

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:

[Image: KWCxhRf.png]

Here are all 6 playable characters on Dragon's Crown (Vita) for you to play around with:

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...
Thanked by:
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.

The master palette from 0.bin is included.

The source code is on my GitHub. I've been trying data from different places, so the notes is rather a mess.

Let me know if you have any ideas to solve this problem. Thanks!
- Rufas
Thanked by: Raccoon Sam
It's been 2 weeks, how are you guys doing?

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.

For example, I was able to the following frames from this video for debugging:

[Image: uHraRaz.png]

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 Big Grin ), 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!

Take care!
- Rufas
Thanked by:

Forum Jump: