ROM Hack Reverse engineering Golden Sun Dark Dawn EXP Multiplyer Code

  • Thread starter Thread starter NJim
  • Start date Start date
  • Views Views 10,290
  • Replies Replies 10

NJim

Member
Newcomer
Joined
May 1, 2009
Messages
18
Reaction score
0
Trophies
1
XP
126
Country
2x
5212194C E0820000
1212194C 00000080
D0000000 00000000

4x
5212194C E0820000
1212194C 00000100
D0000000 00000000

8x
5212194C E0820000
1212194C 00000180
D0000000 00000000

16x
5212194C E0820000
1212194C 00000200
D0000000 00000000

These are the codes for increasing the amount of EXP you get, but I feel that the game is way too easy even without cheats on, so I was wondering how I would go about making a code to cut EXP gain by half from these, and I have no idea about code making.

I noticed the only thing that changes is the last 3 digits of the 4th group, increasing by 20, then 80.
By the pattern of the way it increases, going backwards by that same pattern would result in 000 being 1x EXP. Obviously I can't go into the negatives so I can't for the life of me figure out how.
 
This isn't as straightforward as it looks because the code is changing instructions, it's looking for a code E0820000 which is
add r0, r2, r0 (r0 = r2 + r0)

and editing only the low bits, for example the x4 code is changed into E0820100
which is
add r0, r2, r0, lsl 2 (this shifts r0 left twice for x4 before adding)

what you want is the opposite, to do a right shift.
add r0, r2, r0, lsr 1
which is E08200A0 (you can use an assembler, maybe more information is in the rom hacking thread)

Since your code is only changing the last part of the instruction, the updated code should be

0.5x
5212194C E0820000
1212194C 000000A0
D0000000 00000000
 
  • Like
Reactions: joshuatm
Awesome! A 0.5x exp hack! But here is the problem with this hack, since the game is unbalanced difficulty-wise, when you fight Chaos Chimera, you are going to ragequit and turn your DS into a brick.
 
mellow.gif
wooow cool if you have time can possibility create an similar code exp 0.5 but for pokemon Black and White please
 
Looking at the posts above not really -- multiplying/dividing by 2 is the binary equivalent of multiplying/dividing by 10 in decimal in that you just shift the "decimal" point around and you have your operation (it is why the progression up there is 2,4,8,16.....).

Now it would not be that hard to do it in operations (0.75 == 0.5 + 0.25 after all*) but that would probably mean stashing some new code in there, adding a jump, doing the operation and jumping back. Nothing major or even out of the realm of applying it in cheats but considerably more troublesome than tweaking the existing codes.

*you should shift once, store the resulting value, shift again and redo the calculation for the new multiplier and then add results of the two operations together.

If your cart has cheat enable/disable I would instead suggest just disabling the exp cheats every so often and having the same thing happen (mean of 1 and 0.5 is 0.75 after all).
 
  • Like
Reactions: joshuatm and Rydian
sure, i thought about using the cheat every other time i play the game, just, of course it would be nice to not worry about it ;)
since you gave an outline of what needs to be done (thank you), it doesn't sound so hard... i will attempt to do it myself!
thanks a lot :)
 
So this might not get seen, given how old the thread is, but would there be a way to modify it to a 0x exp gain? Not sure if the game would even be possible at that point, but Dark Dawn is super easy so maybe it is.
 
So this might not get seen, given how old the thread is, but would there be a way to modify it to a 0x exp gain? Not sure if the game would even be possible at that point, but Dark Dawn is super easy so maybe it is.
Two main choices if continuing with the above stuff.
1) You slam it with a whole bunch of shifts. Offhand I am not sure how many shifts it allows in a single instruction ( http://problemkaputt.de/gbatek.htm#armopcodesdataprocessingalu should enlighten matters) but the end result of that is even end game super secret boss or whatever will give miniscule experience, if any.
2) Somewhere in there is a calculation it uses to determine the amount to add. Would not be hard to mov 0 into the register in question or memory area in question in place of a suitable instruction there.

Alternatively experience is probably going to be a value much like health, money, mana, potion count...
Easy enough to make a code that holds that, or indeed possibly a base level if a level 1 run is too hard but level 5 is better*.
https://web.archive.org/web/20080309104350/http://etk.scener.org/?op=tutorial
Do remember you have cheats for this -- quite possible to find out experience location if you also have infinite health, one hit kills, enemies set to 1 max health...

*depending up the game it might only put stats up on level up and simply holding the experience somewhere will not do. To that end you might want rather than a basic "write this until the end of time" cheat instead if greater than then set to whatever you want, or level up without the cheat on and then hold the value. Some games might be even more tricky and handle stat increases in battle calculations/end screen without getting back to the main game which could even make an easier resulting play but cross that bridge as and when (crude way is to make stats cheats as well).
 

Site & Scene News

Popular threads in this forum