ROM Hack Dragon Ball Fusions Hacking Thread

DarkSynopsis

Well-Known Member
Member
Joined
Oct 15, 2014
Messages
483
Trophies
0
Age
33
Location
New Zealand
Website
ninjasfate.com
XP
2,598
Country
New Zealand
So it looks like the US release of this game has been censored http://www.kanzenshuu.com/2016/12/0...ds-american-release-changes-swords-to-sticks/

Would this be an easy thing to fix with a ROM hack?

Seems like it would be easy, I believe I found the files affected but I've no clue on how to repack the .cpk and I've not even started the game so don't have a save to boot up a battle to see if a stick is now a sword.

I know a user on that iso site who is looking into it and has played the game, so I stopped.
 

Don Ravioli

Active Member
Newcomer
Joined
Mar 25, 2016
Messages
41
Trophies
0
Age
32
XP
82
Country
France
u are really worried about such a small thing

When the franchise as a whole is about people fighting each other, and one sword (Trunks's) has been an iconic part of the franchise, yes. But tell me, why even ask if you don't care about the game ?
 

DarkSynopsis

Well-Known Member
Member
Joined
Oct 15, 2014
Messages
483
Trophies
0
Age
33
Location
New Zealand
Website
ninjasfate.com
XP
2,598
Country
New Zealand
The QuickBMS script works.

It does? need to try it again then, I tried a cpk repacker the other day and it worked great on Citra but didn't work on the 3DS at all.

Looks like the QuickBMS reimports and wants the same file size? the sword models are just a bit bigger in size then the sticks, I tried force re-import and the game just freezes when one would be used :(
 
Last edited by DarkSynopsis, , Reason: Tried QuickBMS.

auriejir

Member
Newcomer
Joined
Jul 2, 2016
Messages
6
Trophies
0
Age
33
XP
75
Country
France
Hi, I'm working on a special moves editor.
I think I've located the 30 slots for saved moves and I was going to run some tests to see if I'm right but it would seem that there is a checksum.

I noticed that the 4 last octets change significantly from one save to another so I guess this is it but I'm far from being an expert. Anyone knows which algorithm is used ?

Naturally, if anyone is interested, I can indicate what I found out.

edit : ok, I found my answer on 4chan, here are my notes...
"The dragonball fusion checksum turned out to be a very straightforward crc32.
Starting from 0x0 -> eof - 4 (where the checksum is stored)."

character.jprm :

character (0x100 -> 0x15F)
0xAC -> 0xAF : player XP (~ 50 million to 100)
0x101 : character rank (0:C 1:B 2:A 3:S 4:G)
0x102 : character race (0:saiyan, 1:earthling, 2:outworlder, 3:alien, 4:namekian)
0x104 : character sex (1: female, 0: otherwise)
0x11C -> 0x11F : character voice
0x13C : abilities
- d3fd a31e : mood maker;
- f40d 598a : fight maniac;
- 7cfb f162 : acrobat;
- 63c4 e569 : regeneration;
- 3c7d d792 : tough;
- c2f3 6cc8 : ultra speed;
- 83c6 150b : first striker;

0x150 : first special move (see move section)

0x1BC -> 0x2B5 : general appearance, repeated 3 times for base, current and whatever. unless you are in a fusion, change the 3 at once to see the change.

0x1BC -> 0x1BF : Default top clothing
- 68e0 2348 : c18 - no logo
- a800 0a48 : hit;
- b800 8000 : furry shirt;

0x1C0 -> 0x1C3 : Default bottom clothing
- 49c0 0d48 : pilot2

0x1C4 -> 0x1C7 : ears
- fa01 2000 : saiyan female;
- 4a02 a003 : female kai;
- ea01 0028 : saiyan male;
- 4a42 a103 : buu female;
- 0a42 0101 : namekian;

0x1C8 -> 0x1CB : hair
- 6b53 0100 : child bulma;
- 9b16 0000 : supreme loli;
- ab05 0000 : broly;
- cb52 0100 : ultimate gohan;
- cb16 0000 : c18;
- 1b14 0000 : namekian turban;
- 1b15 0000 : lame fridge head;
- 3b03 0000 : spiky headshell;
- ab04 0000 : cell jr
- 8b05 0000 : cooler
- 3b0c 0000 : freezer (g)
- 4b06 0000 : shu shenron
- ab4c 0100 : pinich ?
- 7b02 0000 : vegeto

0x1D0 -> 0x1D3 : character face
- 9c13 0000 : grumpy female saiyan;
- ac16 0000 : jolly female kai;
- dc12 0000 : angry male saiyan;
- cc16 0000 : female buu;
- 3c14 0000 : bicolor frowny namekian;
- fc14 0000 : scary alien;


0x20C 0x260 0x2B4 : your size (0->3) and puting 05 or 01 after give you a saiyan tail (also, last item before repeat). putting 1 -> C too. aliens : 60. (no tail)

colors (litteral web colors) :
0x1D4 -> 0x1D6 : skin color
0x1DC -> 0x1DE : main hair color
0x1E0 -> 0x1E2 : hair highlight
0x1FC -> 0x1FE : tail color
0x200 -> 0x202 : eye color
- f7f5 bf : light yellow skin;
- aed0 ff : custom violet;
- f6d3 b8 : vanilla skin;
- f2ff a1 : broly green;
- e52b 6f : ssg red;
- f4ae b0 : soupa sayajin rosé;
- 0074 28 : dark green hair preset;
- 00d4 f1 : ss blue;
- 5f34 11 : saiyan tail brown;
- 8eef 17 : light green eye preset;

after this, there are 0s and then goes the freeform fusion character. same organization than the main character, rang starts at 0x328.

0x750 -> 0x4B2F : recruited goons
patern : (there is xp somewhere, id is position)
0f00 0000 0000 0000 ffff ffff ffff ffff
att1 att2 att3

0x4D7C : special moves count
0x4D80 -> 0x4DBB : special moves inventory, value -2 vs equiped one
0a04 : max kame -1 ki (inventory) -> 0c04 : max kame -1 ki ( equiped )

moves : (9c0d 9704 6e02)
- 980d : ssj (only legit one); 990d : ssj2; 9a0d : ssj3; 9b0d : ssj4;
- 9c0d : ssg (best usable one); 9d0d : ssgss (unused useless);
- 9704 : prelude (wis +75kiko);
- a504 : prelude (vados -1 ki);
- 7e02 : angry rush(max dmg);
- 6e02 : time slip smash (-1 ki);
- 710a : botamo beam (-1 ki);
- b80c : heal shout (-1 ki);
- be0d : time skip (-1 ki);
- a608 : ult maid burst (-1 ki);
- ad0a : Lightning Shower Rain (-1 ki);
- a300 : quick rush;
- 6906 : Galaxy Assault Rain (-1 ki);
- 8301 : super vegito sword (-1 ki);
- 8401 : super spirit sword (reach+);
- 0c04 : max kame (-1 ki);
oh, and since I'm giving everything...
Code:
#!/usr/bin/env python
import binascii
import re

def reCalcCRC32(fileNameIn = 'character.jprm'):
    fileContent = open(fileNameIn,'rb')
    fileText = fileContent.read()
    fileContent.close()
    bkp = open(fileNameIn+'.ori','wb')
    bkp.write(fileText)
    bkp.close()
    crc = "%08X" % (binascii.crc32(fileText[0:-4]) & 0xFFFFFFFF)
    reverseCRC = re.findall('..?',crc)[::-1]
    finalCRC = ''.join([chr(int(reverseCRC[i],16)) for i in range(4)])
    fileContent = open(fileNameIn,'wb')
    fileContent.write(fileText[0:-4]+finalCRC)
    fileContent.close()
    return ''.join(reverseCRC)

#fileNameInput=raw_input("file to open : ")
print reCalcCRC32()#fileNameInput,"out.bin"
 
Last edited by auriejir,

youngjay

Member
Newcomer
Joined
Apr 5, 2017
Messages
5
Trophies
0
Age
23
XP
59
Country
Hi, I'm working on a special moves editor.
I think I've located the 30 slots for saved moves and I was going to run some tests to see if I'm right but it would seem that there is a checksum.

I noticed that the 4 last octets change significantly from one save to another so I guess this is it but I'm far from being an expert. Anyone knows which algorithm is used ?

Naturally, if anyone is interested, I can indicate what I found out.

edit : ok, I found my answer on 4chan, here are my notes...
"The dragonball fusion checksum turned out to be a very straightforward crc32.
Starting from 0x0 -> eof - 4 (where the checksum is stored).""

character.jprm :

character (0x100 -> 0x15F)
0x101 : character rank (0:C 1:B 2:A 3:S 4:G)
0x102 : character race (0:saiyan,1:earthling,2:outworlder,3:alien,4:namekian)
0x104 : character sex (1: female,0 otherwise)
0x11C : modified to 0x11F, no visible change
0x13C : abilities (d3fd a31e : mood maker; f40d 598a : fight maniac; 7cfb f162 : acrobat; 63c4 e569 : regeneration)
0x150 : first special move (see move section)

0x1BC -> 0x2B5 : general appearance, repeated 3 times for base, current and whatever. unless you are in a fusion, change the 3 at once to see the change.

0x1BC -> 0x1BF : Default top clothing (68e0 2348 : c18 - no logo)
0x1C0 -> 0x1C3 : Default bottom clothing (49c0 0d48 : pilot2)
0x1C4 -> 0x1C7 : ears (fa01 2000 : saiyan; 4a02 a003 : kai)
0x1C8 -> 0x1CB : hair (6b53 0100 : child bulma; 9b16 0000 : supreme loli)
0x1D0 -> 0x1D3 : character face (9c13 0000 : grumpy saiyan; ac16 0000 : jolly kai)

0x20C 0x260 0x2B4 : your size (0->3) and putting 05 after give you a saiyan tail (also, last item before repeat)

colors (litteral web colors) :
0x1D4 -> 0x1D6 : skin color (yellow : f7f5 bf; violet : ead0 ff; vanilla : f6d3 b8)
0x1DC -> 0x1DE : main hair color (broly green : f2ff a1; ssg red : e52b 6f)
0x1E0 -> 0x1E2 : hair highlight (dark green : 0074 28; ss blue : 00d4 f1)
0x1FC -> 0x1FE : tail color (brown : 5f34 11)
0x200 -> 0x202 : eye color (light green : 8eef 17)

0x4D7C : special moves count
0x4D80 -> 0x4DBB : special moves inventory, value -2 vs equiped one
0a04 : max kame -1 ki (inventory) -> 0c04 : max kame -1 ki ( equiped )

moves : (9c0d 9704 6e02)
980d : ssj (only legit one); 990d : ssj2; 9a0d : ssj3; 9b0d : ssj4;
9c0d : ssg (best usable one); 9d0d : ssgss (unused useless);
9704 : prelude (wis +75kiko);
a504 : prelude (vados -1 ki);
7e02 : angry rush(max dmg);
6e02 : time slip smash (-1 ki);
710a : botamo beam (-1 ki);
b80c : heal shout (-1 ki);
be0d : time skip (-1 ki);
a608 : ult maid burst (-1 ki);
ad0a : Lightning Shower Rain (-1 ki);
a300 : quick rush;
6906 : Galaxy Assault Rain (-1 ki);
0c04 : max kame (-1 ki);

So how would I be able to add ssj onto my character's moveset? Any screenshots for visuals would be very helpful
 
Last edited by youngjay,

auriejir

Member
Newcomer
Joined
Jul 2, 2016
Messages
6
Trophies
0
Age
33
XP
75
Country
France
So how would I be able to add ssj onto my character's moveset? Any screenshots for visuals would be very helpful
well, you must understand this : there is no graphical help for this, we are talking about hex editing, it is as plain as opening your save with any hex editor and overwriting stuff.
you must also make a backup before any attempt at anything, better safe than sorry.

The process is fairly simple : look for the address I identified as "moves section" (0x150) and then put the value you want (here 980d).
the real problem for you might be to then recalculate your checksum so that your game don't consider your save corrupted and delete it. it is a crc32 sum of the whole file minus the 4 last words, don't forget to write it in the 3DS big endian way (57 05 0d 76 become 76 0d 05 57). I had a script for this but I don't have it here. I edited my post to add the crc32 recalculation script.

note that, even if my end goal is to make an editor on the 3DS, the project is just started and may never actually produce anything. I also don't intend to help loosers who only want easy wins in multi; I am however willing to help anyone who want to understand how this thing works since this game's character system is way more powerful than the character creation allows you to do. for example, look at my character (the values are in my notes) :
WVW69kYxB78Ll_e72s
and, I guess, you could make a fridge the same way, your character's appearance is completely separated from its race or anything.
 
Last edited by auriejir,

ThisisCanada

Member
Newcomer
Joined
Dec 28, 2016
Messages
7
Trophies
0
Age
26
XP
83
Country
United States
well, you must understand this : there is no graphical help for this, we are talking about hex editing, it is as plain as opening your save with any hex editor and overwriting stuff.
you must also make a backup before any attempt at anything, better safe than sorry.

The process is fairly simple : look for the address I identified as "moves section" (0x150) and then put the value you want (here 980d).
the real problem for you might be to then recalculate your checksum so that your game don't consider your save corrupted and delete it. it is a crc32 sum of the whole file minus the 4 last words, don't forget to write it in the 3DS big endian way (57 05 0d 76 become 76 0d 05 57). I had a script for this but I don't have it here.

note that, even if my end goal is to make an editor on the 3DS, the project is just started and may never actually produce anything. I also don't intend to help loosers who only want easy wins in multi; I am however willing to help anyone who want to understand how this thing works since this game's character system is way more powerful than the character creation allows you to do. for example, look at my character (the values are in my notes) :
WVW69kYxB78Ll_e72s
and, I guess, you could make a fridge the same way, your character's appearance is completely separated from its race or anything.

Hello I am part of a community developing gateway codes and NTR plugins for DragonBall Fusion. It is only truly a couple of us there with the know how on how to create codes.

It seems like you might be just the type of person we are looking for.
Just click this discord link... https://discord.gg/UmRXeXH
 

auriejir

Member
Newcomer
Joined
Jul 2, 2016
Messages
6
Trophies
0
Age
33
XP
75
Country
France
well, thanks for the invite, I would have loved to work with you in may, back when I was really into it with way too many time at hand... but I just took a job and I don't think I can find any time to sleep now so it won't be easy (I checked anyway). well, let's say that my personal projects are on hold for the time being.

that being said, I periodically check this thread so if you have questions that I can answer, I will try my best to do it.

now, let's go to sleep, I have almost 4 whole hours before work...
 

BurnyBurnyBurnyBurny

New Member
Newbie
Joined
Jan 17, 2024
Messages
2
Trophies
0
Age
27
XP
12
Country
United States
Hi, random nobody here - I have been going through all this inb my own adventures in save editing....I have a question. why are the costume options in the save editor so limited? there are so many characters with unique outfits, but you just cant use them. For what reason is this so? is there a way to get more avt files of other characters in game, or more outfit pieces to use in the editor?
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Nut on the hill