This appendix explains file formats that originate from VPW Studio.
The VPW Studio Palette format (henceforth "VPWSPal", based on its file extension:
.vpwspal
) is a modification of the text-based JASC Paint Shop Pro
palette format. This format was created to handle transparency and "sub-palettes"
in a relatively simple manner.
The first line of the file must be VPWStudio-PAL
.
This is what identifies the palette as VPWSPal format, in comparison to the JASC format.
Below that is a four digit number. The first two digits must
be 01
, but the two digits after that determine how many sub-palettes
are defined. This is currently only used for 16-color palette files. For 256-color
palette files, set the last two digits to 00
.
The third line represents the number of colors in the palette, and must
be 16
(targeting Ci4Palette
) or 256
(targeting
Ci8Palette
). Ignore the number of entries added by the existence of sub-palettes.
All remaining lines define the colors in the palette. The order is: red green blue alpha
Where red
, green
, and blue
have
values between 0
and 255
(inclusive). alpha
must either be 0
(representing transparent) or 255
(representing opaque).
All colors will be converted from 8 bits (0
-255
)
to 5 bits (0
-31
), for hardware compatibility purposes.
It is recommended to use multiples of 8 when choosing palette colors during the
design phase.
If the VPWSPal file contains any sub-palettes, their palette entries continue after the first set of colors.
16 colors, no sub-palettes:
VPWStudio-PAL 0100 16 0 0 0 0 16 16 16 255 66 57 66 255 111 65 61 255 99 90 99 255 144 57 78 255 144 83 32 255 150 86 75 255 193 118 85 255 206 148 123 255 210 168 71 255 255 248 96 255 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255
In case you'd prefer to see the differences visually, here are some side-by-side comparisons of JASC Paint Shop Pro palette format and the VPW Studio palette format.
16 colors, no sub-palettes | |
---|---|
JASC PSP | VPW Studio Palette |
JASC-PAL 0100 16 0 0 0 16 16 16 66 57 66 111 65 61 99 90 99 144 57 78 144 83 32 150 86 75 193 118 85 206 148 123 210 168 71 255 248 96 0 0 0 0 0 0 0 0 0 0 0 0 |
VPWStudio-PAL 0100 16 0 0 0 0 16 16 16 255 66 57 66 255 111 65 61 255 99 90 99 255 144 57 78 255 144 83 32 255 150 86 75 255 193 118 85 255 206 148 123 255 210 168 71 255 255 248 96 255 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255 |
The LocationFile format is a plain text database defining locations in ROM and RAM to be used by VPW Studio. Each non-comment line consists of a entry in the LocationFile.
Lines starting with the #
character are comments, and will be
ignored by the LocationFile loader.
LocationType:Location,Size;Comment
Location type can be one of three values:
ROM
, representing a ROM location (Z64 format assumed).RAM
, representing a RAM location.FTID
, representing a File Table ID.The location for this entry, specified in hex. If this is a RAM entry,
it must begin with 80
. Do not use 81
if you are
converting a GameShark code to a LocationFile entry; the size is handled
in the next section.
For File Table ID entries, this is a four digit hex number representing an index into the File Table.
The size of this entry, in decimal. For a normal entry, this is how many bytes to read/write.
When handling a Code Change entry (see below), the Size value represents the number of bytes between the first and second change.
In some games, the $WRESTLERDEFS
size is set to 1. This is
often the case when the wrestler definitions are a list of pointers. VPW Studio
manually handles the "list of pointers" case in the code (which is admittedly
not the best option).
All FTID
entry types have this value set to 1. It is currently
ignored by the program.
The comment section is typically used to provide a note about the location, but comments starting with special characters have different meanings.
Special characters currently handled:
$
– Data Location: Specific locations
VPW Studio looks for to handle ROM reads/writes.%
– Code Change: Locations used for modifying game code.Special location strings are mapped in the program, so you can't make things up and expect VPW Studio to understand them. The current list of handled special location strings:
Data Locations$FILETABLE
– Location of the FileTable in ROM.$FIRSTFILE
– Location of the first file described by the FileTable in ROM. (Size field does not matter.)$WRESTLERDEFS
– Location of Wrestler Definitions.$STABLEDEFS
– Location of Stable Definitions.$BODYTYPEDEFS
– Location of Body Type Definitions. (World Tour, VPW64, Revenge)$COSTUMEDEFS
– Location of Costume Definitions. (World Tour, Revenge)$HEADDEFS
– Location of Head/Mask Definitions. (World Tour, VPW64, Revenge)$CHAMPIONSHIPDEFS
– Location of Championship Definitions (World Tour, VPW64, Revenge)$VPW64COSTUMES_SMALL
– Location of costumes for the "Small" body type.$VPW64COSTUMES_MED
– Location of costumes for the "Medium" body type.$VPW64COSTUMES_LARGE
– Location of costumes for the "Large" body type.$VPW64COSTUMES_SALADIN
– Location of costumes for Saladin/Abdullah the Butcher.$VPW64COSTUMES_BABA
– Location of costumes for Giant Baba.$VPW64COSTUMES_JUDOKA
– Location of costumes for the Judoka body type.$VPW64COSTUMES_FEMALE
– Location of costumes for BlackWidow/Pretty Tomoko/Manami Toyota.$VPW64COSTUMES_UNUSED
– Location of costumes for an unused(?) body type.WCW/nWo Revenge and later only. Ending sequences use the same formats, but are not yet handled.
$INTRODEFS_LATER_ANIMS
– Location of introduction sequence animation definitions.$INTRODEFS_LATER_IMAGES
– Location of introduction sequence image definitions.$INTRODEFS_LATER_SEQUENCE
– Location of sequence data for introduction sequence."Might be shared between WM2K, VPW2, No Mercy"
$DEFAULTFACE_FACIALHAIR_VERTDISPLACEMENT
– Location of per-face table for facial hair vertical displacement.$DEFAULTFACE_PAINTACCESSORIES_VERTDISPLACEMENT
– Location of per-face table for facepaint and accessory vertical displacement.$FACIALHAIR_VERTDISPLACEMENT
– Location of per-facial hair item vertical displacement.$FACEPAINT_VERTDISPLACEMENT
– Location of per-facepaint item vertical displacement.$FACEPAINT_TYPE
– Location of per-facepaint item type/display flags.$FACEACCESSORIES_VERTDISPLACEMENT
– Location of per-face accessory item vertical displacement.$FACEACCESSORIES_TYPE
– Location of per-face accessory item type/display flags.$STORY_MODE_SINGLES_PARTICIPANTS
– Location of story mode singles participants.$STORY_MODE_SINGLE_GROUPS
– Location of story mode singles groupings.$STORY_MODE_TEAMS
– Location of story mode tag teams.$STORY_MODE_TEAM_GROUPS
– Location of story mode tag team groupings.$STORY_MODE_SCHEDULE
– Location of story mode schedule data.$STORY_MODE_BOOKING_INSTRUCTIONS
– Location of story mode booking instructions.$DEFAULT_CHAMPIONS
– Location of default champions.$BITPACKING_MAINTABLE
– ROM location of "menu item to number of bits" table.$BITPACKING_MOVEGROUP_WRESTLING
– ROM location of wrestling moveset move groups.$BITPACKING_MOVEGROUP_COMBO
– ROM location of combo moveset move groups.$BITPACKING_MOVEGROUP_SHOOT
– ROM location of shootfighting moveset move groups.$DEFAULT_RULESETS
– Default ruleset data (at least in VPW2 and No Mercy; might be in other games)$ATTRACT_MODE_DEMO_MATCHES
– Location of Demo Match data (VPW2 and No Mercy only; both use slightly different formats)$MASTER_MOVE_MODS
– "Master Move Mods" values%SETUPFT_FTSIZE1
– Location of the first filetable size value in the game's SetupFiletable
routine.%SETUPFT_FTLOCATION
– %SETUPFT_FTSIZE2
– Location of the second filetable size value in the game's SetupFiletable
routine.%SETUPFT_FTSIZE2_MINUS1
– %SETUPFT_FTBEGINS
– Location of the beginning address of the file table in the game's SetupFiletable
routine.%SETUPFT_MAXFILES_MINUS1
– Location of "maximum file count minus 1" in the game's SetupFiletable
routine.%GETFILELOC_MAXFILES
– Location of the maximum file count in the game's "Get File Location" routine.%GETFILELOC_FTBEGINS
– Location of the beginning address of the file table in the game's "Get File Location" routine.%LOADFILE_MAXFILES
– Location of the maximum file count in the game's LoadFile
routine.%LOADFILE_FTBEGINS
– Location of the beginning address of the file table in the game's LoadFile
routine.The FileTableDB format is a plain text database mapping File IDs to types and notes.
Lines starting with the #
character are comments, and will be
ignored by the FileTableDB loader.
FileID=Type;Notes|Settings
The ID file for this entry. Entries are in hex and should have 4 digits. Entries start from 0001, as 0000 is used as a "no file" index.
(This is the challenging part.)
Currently supported values:
Binary
– Default file type.AkiAnimation
– Animation data.AkiArchive
– An archive of files. Zoinkity's Midwaydec
uses "TEXarchive
" for this format, but not all archives exclusively
contain TEX files.AkiModel
– Model data.AkiTexture
– AKI texture wrapper (a.k.a. "TEX")AkiText
– AKI text archive.AkiLargeFont
– Large font data (24px wide)AkiSmallFont
– Small font data (16px wide)AkiFontChars
– Font Characters (typically Shift-JIS)MenuBackground
– Menu Background (use on first file in sequence only)Ci4Palette
– CI4 palette (16 colors * 2 bytes)Ci8Palette
– CI8 palette (256 colors * 2 bytes)I4Texture
– I4 texture (4BPP)Ci4Texture
– CI4 texture (4BPP)Ci8Texture
– CI8 texture (8BPP)RawCi4TexPal
– Raw CI4 texture and palette data (4BPP)RawCi8Texture
– Raw CI8 texture using external palette (8BPP)OneBppTexture
– Headered 1BPP data texture dataDoubleTex
– WCW/nWo Revenge credits faces (two TEX files, one after another)MenuBackground
– Used for the first file of a multi-part background image.Ci4Background
– Raw CI4 image used for some backgrounds in WWF No Mercy.MenuItems_NoGroup
– WWF No Mercy-specific menu item text (no groups).MenuItems_Shop
– WWF No Mercy-specific menu item text (Smackdown Mall Shop items).A note displayed in the FileTable dialog. If you are not adding any Settings
to this item, you do not need to do anything special, aside from avoiding the
"|
" character in your description.
Settings (also known as "ExtraData") are optional, but are recommended for some
file types. The beginning of the Settings string is denoted by a "|
"
at the end of the Note.
Currently supported values:
w:
(number) – Image widthh:
(number) – Image heightp:
(hex number) – Intended Palette File IDmh:
(true
or false
) – Horizontally mirror imagemv:
(true
or false
) – Vertically mirror imageCurrently unsupported values:
t:
(number) – Transparent color index (not implemented)The Stable Definition file is a text file following a specific pattern. Each game in the series defines Stable data differently, requiring the creation of an intermediate format.
Generally, the format consists of:
The stable number is decimal. Most other values are hexadecimal, with the
exception of "Number of Championships" for World Tour and VPW64, which is decimal.
"Max Wrestlers in Stable" assumes that the wrestler select screen(s) have not been
hacked to display more wrestlers.
WorldTour
Stable Number@Wrestler pointer list location={wrestler pointers},Championship text pointer,Number of Championships
Example stable definition: 0@80037068={80036444,80036498,800364EC,80036558,800365C8,80036624,80036688,800366E8,8003674C,800367B4,80036818,80036878,800368E8},80037278,3
VPW64
Stable Number@Wrestler pointer list location={wrestler pointers},Championship text pointer,Number of Championships
Example stable definition: 0@80048920={80047298,800473A4,8004828C,80048308,8004742C,800474B4,80048380,80048410,80048494,80048520,80048070,80045B2C},80048C8C,1
Revenge
Stable Number@Wrestler pointer list location={wrestler pointers},Stable graphic File ID
Example stable definition: 0@8003A1EC={80039390,80038EBC,800395E4,8003945C,800395A4,8003949C,80039628,800394E4,80039524},00BE
WM2K
Stable Number@Wrestler ID2 list pointer={wrestlers},Stable Name pointer
Example stable definition: 0@8004115C={01,02,07,11,06,17,10,00},8004AC20
VPW2
Stable Number@Wrestler ID2 list pointer={wrestlers},Stable Name text index
Example stable definition: 0@8003FA0C={01,02,03,04,05,06,07,00},00E6
NoMercy
Stable Number@Wrestler ID2 list pointer={wrestlers},Stable Name text index
Example stable definition: 0@80047150={01,0A,02,03,04,06,12,13,0E},0126
The Wrestler Definition file is a text file that stores game-specific information about wrestler definitions. If this sounds similar to the Stable Definition format, that's because it is. Much like stables, each game stores wrestler data differently.
The format consists of:
All values are hexadecimal.
Game Identifier – WorldTour
Wrestler ID4/Wrestler ID2=unknown1,flags1,unknown2,namePointer,profilePointer,heightPointer,weightPointer
(todo)
Game Identifier – VPW64
Wrestler ID4/Wrestler ID2=unknown1,flags1,unknown2,namePointer,profilePointer,heightPointer,weightPointer
(todo)
Game Identifier – Revenge
Wrestler ID4/Wrestler ID2=unknown1,unknown2,unknown3,namePointer,heightPointer,weightPointer,unknown4,managerID2,unknown5,unknown6
(todo)
Game Identifier – WM2K
Wrestler ID4/Wrestler ID2=namePointer,height,weight,movesetIndex,paramsIndex,theme,video,unknown,costumePointer1,costumePointer2,costumePointer3,costumePointer4
(todo)
Game Identifier – VPW2
Wrestler ID4/Wrestler ID2=theme,namecall,height,weight,voiceA,voiceB,movesetIndex,paramsIndex,appearanceIndex,profileIndex
Example wrestler definition: 0001/01=02,02,23,2D,01,00,02EE,02ED,0000,0002
Game Identifier – NoMercy
Wrestler ID4/Wrestler ID2=theme,video,height,unknown,weight,movesetIndex,paramsIndex,appearanceIndex,profileIndex
Example wrestler definition: 0001/01=25,1D,11,00,00AF,01FA,01F9,0000,0003
.vpwsproj
is an XML file.
(todo: this is perpetually changing and is not worth documenting until it's reached a stable state.)