Deconstructing the MvC2 Dreamcast CD

I’ve been intensely interested in getting rips/conversions of the MvC2 stage backgrounds for some time.
Here’s my understanding of the CD composition.

What’s on the disc?
DPMODEL: (empty)
DPSS: VMU art IIRC
DPTEX: PVR/art files for the online version: convert with pvr2png
DPWWW: browser
0dummy.bin: dummy file to ensure correct disc size.
1st_read.bin: so it boots properly. Of interest:
–> 0x156d10 is PRESS START BUTTON and CONTINUE
–> 0x1648e0 PRESS START BUTTON
–> 0x17ae10 NEW HERO
adx_.bin: sound files. ADX plug-ins & conversion tools available, such as http://www.wav-mp3.com/
pl??_DAT.bin: character data: hitboxes, attack data, palettes. ?? corresponds to character index. Use PalMod to edit the palettes.
pl??_VOI.bin: collections of voice-over files in the DTPK format. ?? corresponds to character index. I have an extracted version of these. Use the Python-based script to convert DTPK to a collection of miniDSF files, and then use the WinAMP miniDSF plugin from Hypothetical Technologies to convert to MP3/WAV/etc.
se
.bin: More DTPK sound files.
pl??_WIN.bin: the win screen art I THINK. ?? corresponds to character index. I don’t know how to play with these.
pl??FAC.bin: the face for the pre-match VS screen. ?? corresponds to character index. I don’t know how to play with these.
stg
*.bin : Stage files. Looking forward to figuring these out.

See rest of thread for interesting notes from others. This is kind of the tip of the iceberg. Playing around with it in nullDC with artmoney/cheatengine to tweak values is exposing a variety of interesting data.

The pl##_dat files have more than just the palette data they have attack data and hitboxes as well. There probably is more like special moves.
I would of posted earlier if I seen this thread.

SELTEX Character portraits on the character select screen (at least the big ones).

STG0BPOL(Training Mode stage) notes

Background Lighting (Doesn’t apply to the floor)
Byte 0x000230

0x00011F0 start of Vertexes?

Edit: Might as well post a picture

hype!

Starting to understand the vertices in the stages.

Each one is 32 bytes with texture mapping as the last 4 bytes. There is some parts i’m not sure about but can crash the game if edited. Words are joined together XXXX will be the X coordinate.

Here is what I got so far
X, Y, Z are the coordinates
BLND some type of blending is taking place



00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
?? ?? XX XX BL ND YY YY BL ND ZZ ZZ ?? ?? ?? ??


Second line is for texture manipulation first 8 bytes are the colors and alpha. The last 8 is the mapping.

Edit:
Hacked up picture.

More Notes
Polygon Files(STG##POL)

Universal
Stage Polygon file loaded in 0x0CEA0000 of the dreamcast memory (Unknown limit could be 256kb or 512kb I doubt it’s 1 mb)
Backgrounds are separate objects with it’s own lighting and filtering(Just a simple Bi-linear filter). Probably there is a max on objects as well.
Stages rotate as you go side to side, but the camera is different per stage from the looks of it so it could part of the DM files(which have a ton of pointers).
The camera is a little tricky as it’s mirrored all over the place.

Plans
Look into the textures
Look into the DM files
Active Background objects what makes them different.

Training stage
Locate the menu.

Older notes.

Defense modifier notes (these list the output damage). A whole bar = 144
Ryu’s Standing Jab modified to do 100 damage (Dc version used)

137
Akuma
Bonerine
Servbot
Roll

125
Wolverine
Anak
Spiderman
Strider

118
Son Son
Marrow
Morrigan

112
Psylocke
Dan
Felicia
Shuma
Ice Man
Dhalsim
Cammy

106
Spiral
Bulleta
Rockman
Ken
Sabretooth
Hayato
Jill
Chun-li
Magneto
Storm

100
Ryu
Guile
Cyke
Gambit
CapCom
Ruby Heart
Amingo
War Machine
Nash
Cable
Jin
Dict
Sakura
Venom
Iron Man

93
Doom
Tron
Thanos
Silver Samurai
Captain America
Omega
Rogue

87
Zangeif
Blackheart
Juggernaut
Hulk

81
Colossus

75
Sentinel

In case you want to edit the attack damage and double check my results.
Ryu
(In-File Location: 0x084E00)
(Ram Player 1 Slot 1 Location: 0x0C4A4E00)

Of course the stage order.
00 Air Ship Sky
01 Desert Evening
02 Inside a Factory
03 Carnival
04 Swamp
05 Water Cave
06 Clock Tower
07 Glacier
08 Temple Abyss
09 Air Ship Night Water
0A Day Desert
0B Training
0C Creepier Carnival
0D Meadow
0E Lava Cave
0F Winter Clock
10 Raft in River

Anthing else from my old notes are on my old computer.

what would knowing all this info mean for, say…making this game work on ggpo?

I think it’s completely tangential information.

Training Stage

Object 00 Light map.
Poly file
0x000237 switch 0x08 to 0x20

Ah, but a custom disk could be made, I bet…now if the characters can be unlocked from the start…And what is ‘creepier’ carnival?

The recolor of the clown stage.

Edit:
As for the character select All I know is that one of the camera data that is mirrored midmatch is the place for it in character select aka i haven’t messed with it.
I have to use Demul for memory editing and NullDC for the debugger and I’m always causing them to crash.

Edit 2: Forgot to mention all the data(besides textures) for the training menu is in the polygon file.
Edit 3: Fuck the NullDC Debugger thing is a piece of shit.

A full lifebar in MvC2 is 143 points of damage.

I’m really looking forward to what you guys do to the game. I respect the time and effort you and Preppy are devoting to this endeavor.

I get no credit here. I haven’t had any time yet to get into it myself: I posted what I was thinking about and it looks like several people have run with it or had previously been looking into it. I’m stoked about their work and look forward to getting set up to tinker again myself. :slight_smile:

No, the 143 health in training mode was to prevent the characters from being ko’d.

Okay found some of the character select data.
File: 1ST_READ.BIN

0x151FAC

Big portraits scale and rotation.
0x15215C

Haven’t figured out all of the data.

Whoa. I didn’t even think about something like that. You could optimize the Select screen for “characters actually used”. O_o

I’m probably going to just rearrange them so it’ll be quicker to select teams. Cause who knows somebody might want to troll with servbot assist in casuals.

That does make sense. However, consider the following examples:

If a full lifebar is 144 (not 143) then why did the exact combo that did 143 in training mode kill the same character in Versus mode?

Example 2:

The 6th hit kills Akuma in Versus mode and that is equal to 143 total damage in the combo.

Example 3:

Though there are some attacks that are different (in the Versus mode combo compared to training mode), the 20th hit of the combo reaches 143 damage and kills the character in Versus mode. The differences in terms of normal attacks are insignificant because both attacks do the same damage (i.e. hp and hk, lp and lk) and are late in the combo thereby damage scaling reduces the damage.