Interestingly, the Korean version of DOA3 uses the 54430001 title ID like NTSC-M and NTSC-J. However, it seems to have the balance fixes/changes/updates as 3.2 (PAL).
I debugged cxbx using x32dbg (https://www.x64dbg.com)
You can attach cxbx, or load it and then go File->Change Command Line, and add:
/load "C:\path_to_xbe"
Then you have to go to Options->Preferences->Exceptions->Unknown Exception->Do not break->Save.
You can just launch normally then attach to cxbx-ldr. If you need to attach at early stages, then you can put an incompatibly save file to the save folder, and the game will stop to warn you that can't load it. It's right after the fbi warning, and right before the function where the costumes are loading.
Here are two mods. First one is pure hex editing, it will swap the Random slot with Tengu. And the second one is an extention of the first mod, and is meant to swap Tengu with a modded charaacter. Open Dead or Alive 3.1 (NTSC-JP) 'Default.xbe' in a hex editor, go to the address and edit the bytes.
MAKE TENGU PLAYABLE: 0x290AAA: FF -> 11 //Swap the Random slot with Tengu. You may want first to use the patch that unlocks Ein and the Random slot and also adds them to the Story Mode. You also can try to swap with 12_Genra or 17_Chen, they are not playable, but you can use them in Watch Mode or in Sparring Mode as addversary. (To make Chen visible open 'loadfile.afs' and swap 'chi.cat' with the fixed one from this post https://www.freestepdodge.com/threads/doa3-modding.8912/post-417921)
Now you can play Tengu(his button input controls are broken and can crash the game, though in watch mode he seems ok). Tengu uses Kasumi's first costume. To add more skins let's unlock the ability to load custom skins from the save folder: 0x076B22: 0C -> CC //Unlock Tengu to load costumes from the save folder. 0x228BA4: 20 20 20 -> 74 6E 67 //Fix the name for the Tengu costumes from ' ' to 'tng'. With this and the costumes unlocked, you can load costmes named like 'tng04.xpr', 'tng04.cat'.
And now the SECOND MOD. The big idea is to swap Tengu with a character that has the moveset modded using UsagiZ tutorials, like a normal doa3 character or Chen/Genra. By swapping Tengu with another character, I mean:
- in the first place to open the 'loadfile.afs' and swap 'tengu.bin' and 'tengu.mot'(and maybe also 'm_tengu.mot' and 'c_tengu.mot') with edited files from another character.
- The second step would be to add costumes for the new character to the save folder, named like 'tng05.xpr' and 'tng05.cat'.
- And the third step would be to swap the skeleton for Tengu with the skeleton for your character, for this you should go in 'Default.xbe' to address 0x2cfdc8, and insert the skeleton data from the skeleton file for your character, from the 'doa3_original_skeletons.zip' attached to this post(don't use here doa3 skeletons from the old archive with a '.doa3' extention, cause in that archive they are converted to the doax-doa2u format of skeletons).
Python:
#-------------------------------------------------------------------------------
# Name: python script, to dump Dead or Alive 3.1(NTSC-Japan) skeletons
#-------------------------------------------------------------------------------
xbepath=r"C:\doa3.2\Default.xbe"
outpath=r"C:\doa3.2\doa3_skeletons"
doa3_characters_lst="""
00 Zac ZACK
01 Tin TINA ARMSTRONG
02 Jan JANN LEE
03 Kte EIN
04 Ryu RYU HAYABUSA
05 Kas KASUMI
06 Gen GEN FU
07 Hik HELENA
08 Bay LEON
09 Bas BASS ARMSTRONG
0a Hak - HAKKYOKU-KEN (becomes Kokoro)
0b Nin HAYATE
0c Lei LEIFANG
0d Aya AYANE
0e Kor HITOMI
0f One - K-1 (Lisa)
10 Pro - PRO WRESTLER (becomes Alpha-152)
11 Tng + TENGU
12 BNi + GENRA
13 Sui BRAD WONG
14 Gok CHRISTIE
15 Tek - TEKONDO
16 Dem - DEMI HUMAN
17 Chi + CHIN
18 Sam BAYMAN"""
skel_names = [line.split(' ')[1] for line in doa3_characters_lst.splitlines()[1:]]
doa32_offsets = 0x2DC578
memoffset = doa32_offsets - 0x2d0518
def main():
with open(xbepath,'rb') as f:
f.seek(doa32_offsets - memoffset)
skel_offsets = [int.from_bytes(f.read(4), "little") for i in range(len(skel_names))]
for i in range(len(skel_names)):
#find the skeleton size
skel_end = skel_offsets[i] + 0x10
while skel_end != doa32_offsets and skel_end not in skel_offsets:
skel_end += 0x10
skel_size = skel_end - skel_offsets[i]
print(skel_names[i], hex(skel_offsets[i] - memoffset), hex(skel_size))
with open(outpath+'/'+skel_names[i]+'_doa3.skelet', 'wb') as fs:
f.seek(skel_offsets[i] - memoffset)
fs.write(f.read(skel_size))
if __name__ == '__main__':
main()
Maybe yes. But directly editing a character, that is already used in the game in some way, could be risky. Like, at some point it could be impossibly to make further changes without breaking the game play. I bet my money on Chen, his involvement in the game is minimal. Tengu in the other hand needs more love, looks like he is fully functional as an opponent(he's performance can be seen in the Watch Mode(I checked again, he is not fully playable, but he's cool and fresh anyway)), I thing he should be added(to doa3++?) to more modes as a non playable character, with a dedcated skin, or maybe Genra's second skin.
I support that, Tengu's always been my favorite. Is there a particular reason no one's been able to import models though? I've seen some impressive texture mods but no model swaps in all these years.
If we're able to figure out how to add character slots to the character select, the idea was always to bring in newer characters (Kokoro, Lisa, etc.) into 3++. Not a small undertaking, but the only reason we haven't done so is due to lack of ability to add a new character without (1) having a place for them to be selected on the select screen, and (2) file size limit/restrictions.
---------------This will bring the hidden test and cinematic costumes to the Character Selection screen.(ok, cinematic costumes are not working right now, you can use only the test costumes)
Additional requirements:
-Remove the save file and apply the patch that unlocks all costumes in a new game.
-Swap in loadfile.afs kas10.cat and kor07.cat with their fixed(by Gultigargar) versions from the attached archive.
-Later, you'll may want to swap Hitomi's test costumes(kor00,kor01,kor03,kor06) with modded costumes of your liking.
Unlock Hitomi Diver(to COS.9) and 4 Test costumes (COS.5=kor00, COS.6=kor01, COS.7=kor03, COS.8=kor06) 0x2906BA: 04 -> 09 add 5 more costume slots for Hitomi (Set to 08 to hide Hitomi Diver because Hitomi Diver may crash your game) 0x2117D0: 00 00 00 00 -> 01 01 01 01 set the costume count per slot for 4 new costume slots to 1 instead of 0 0x290692: 00 07 00 01 02 03 04 00 00 00 -> 00 01 03 06 07 00 01 02 03 04 Move Brad Wong's costumes to make room, and add Hitomi's costumes. 0x290714: F4 -> F7 fix Brad Wong's pointer to the new place
Unlock Kasumi Alpha costume. (unusable right now because selecting this costume will crash the game after you choose a stage, maybe this will be fixed later) 0x2906B1: 05 -> 06 add a new costume slot for Kasumi 0x290653: 00 -> 0A add Kasumi Alpha costume to the new slot
-----------------
Strange thing, at some point, when I was putting all of this together, Hitomi's diver costume was working, and then it wasn't.
0x2906BA: 04 -> 09 add 5 more costume slots for Hitomi (Set to 08 to hide Hitomi Diver because Hitomi Diver may crash your game) 0x2117D0: 00 00 00 00 -> 01 01 01 01 set the costume count per slot for 4 new costume slots to 1 instead of 0
Is there any way to use this info to trick the game into thinking the costumes in the TDATA folder are official, to include them into Random filter, and to potentially set them to have 4 selectable slots (A, X, Y, and LT+A) like Leifang's cos 1?
I see that if we set the values from 0x002906AC -> 0x002906BA to 09 it will ignore all of the TDATA costumes.
Is there any way to use this info to trick the game into thinking the costumes in the TDATA folder are official, to include them into Random filter, and to
potentially set them to have 4 selectable slots (A, X, Y, and LT+A) like Leifang's cos 1?
I kind of saw a possibility to load from TDATA, 14 costumes instead of 7. But it requires rewriting some shitty, Japanese style codded functions, 14 is not much more than 7, total number of costumes is still 128, and without proper testing this could turn to another buggy shit. So maybe another time.
Also by reversing all the functions related to a certain subject, like everything costumes related, could lead to really great mods. But again, this game is old, and we have doa 5 and 6 with tons of content. I don't think doa3 is worth a big effort, small hex fixes is all it deserves.
DOA3 costumes are stored in the TDATA folder, not UDATA. For the Japanese version of DOA3 it would be located at "Partition1\TDATA\54430001"
Each costume consists of two files, a .cat file and a .xpr file. Make sure to delete both.
DOA3 costumes are stored in the TDATA folder, not UDATA. For the Japanese version of DOA3 it would be located at "Partition1\TDATA\54430001"
Each costume consists of two files, a .cat file and a .xpr file. Make sure to delete both.
If we're able to figure out how to add character slots to the character select, the idea was always to bring in newer characters (Kokoro, Lisa, etc.) into 3++. Not a small undertaking, but the only reason we haven't done so is due to lack of ability to add a new character without (1) having a place for them to be selected on the select screen, and (2) file size limit/restrictions.