PDA

View Full Version : [Tutorial] FireRed: Fixing the trainer's facing


NarutoActor
April 19th, 2011, 11:23 AM
Hello all, have you guys ever noticed that when you get in to a trainer battle you don't face them? You just go straight in to a battle. This doesn't occur in R/S/E. The theory is that GameFreak, was making FR seem more like the original R/B.

Well now thanks to the work of Jambo51, we have a fix.
Below are 3 attachments, 2 asm files(Binary), and a script. This hack changes the script that loads before a trainer battle. It also changes special 0x37.

Alright, now open a hex editor, and-
Insert the TFH.asm into free space
Insert the SSH.asm into free space

Go to 0x81C0A
Copy 0xA(10) Amount of Bytes and replace with:
01 49 08 47 00 00 XX XX XX 08

The XX's is the location of the SSH.asm routine that was inserted earlier. (+1)

In the Script replace the YY's With the pointer to the TFH routine (+1)
Compile the script, and record it's location.
Reverse the location so it can be pointed to in hex.

Now go to these three locations:
0x1a4ebd, 0x1a4ee4 and 0x1a4f15

Replace the pointer there with a pointer to the New script.

There you go, if you are going to be using this for your hack make sure to have this in your credits.

Jambo51-Trainer Facing fix
NarutoActor-Trainer Facing Tutorial.

With out that in your credits, you may not use this hack.

Crimson Stardust
April 19th, 2011, 01:02 PM
ok cool..
thanks for this hack narutoactor, it is good to have the player face to person he is battling..xD

Pokepal17
April 19th, 2011, 01:56 PM
Nice to see that someone finally figured this out and posted it. :3
However, I think you should add a few screens for visual aid, especially for people like me who are visual learners.

NarutoActor
April 19th, 2011, 07:32 PM
Lol what should I take a screen-shot of; A hex editor. xD

Tropical Sunlight
April 20th, 2011, 04:57 AM
Lol what should I take a screen-shot of; A hex editor. xD
Of course, why not? :P
It's hard to imagine it without pictures unless you're actually doing it. Which I haven't tried yet. :P

NarutoActor
April 20th, 2011, 07:38 AM
Really, I thought it was pretty self explanatory, and it only takes a few minutes. Just open a hex editor and follow those steps.

colcolstyles
April 20th, 2011, 09:23 AM
Do you mind posting the custom code (like, include it in the post instead of just attaching it)? This thread is kinda skimpy at the moment and it offers no explanation of why it works (if it even does; I haven't tested it). Also, perhaps you could disassemble the routines at those addresses and post them here, too? I'm interested in the project but not to the point where I'm willing to fire up Fusion just to look at some routines with no background. :\

NarutoActor
April 20th, 2011, 09:32 AM
The routines un-complied are included in the package. But that is a good suggestion.

Quilava's Master
July 3rd, 2011, 08:36 AM
There's a gltich. When you battle someone who uses "trainerbattle 0x1" i.e gym leaders your character faces right no matter which direction you talk to them from.

Edit: fixed it by only placing a pointer to the script @ 0x1a4ebd. I'm unsure if there are any unforseen errors created by not placing the pointer at the other two locations but so far so good.

Hackrex
November 27th, 2011, 06:24 AM
I have try it on a Firered (English) Rom and it works.
I have researched the Offsets for the German Rom (Feuerrot) and changed it in all three Scripts.
But my Hero is facing in the wrong direction. So, what is my mistake?

So here the change to the german offsets:
The change in the SSH.asm file
storeloc: .word 0x03005548
place: .word 0x083C7248
return: .word 0x08081C17

The change in the TFH(1).asm file
storeloc: .word 0x03005548
playerloc: .word 0x02036E38
lastresult: .word 0x020370D0

The change in the Facing(1).rbc file
#dynamic 0x800000

#org @main
callasm 0x8XXXXXX
compare LASTRESULT 0x0
if 0x1 call @down
compare LASTRESULT 0x1
if 0x1 call @up
compare LASTRESULT 0x2
if 0x1 call @left
compare LASTRESULT 0x3
if 0x1 call @right
goto 0x81A4FC7

On XXXXXX i have to put the offset to the TFH routine (+1).


On 081B6E where I have to insert this 01 49 08 47 00 00 YY YY YY 08
YY stands for the pointer for the Offset where I have inserted the SSH ASM.
And here the three offsets for changing the pointers.
1A7B71
1A7B98
1A7BC9

Did I make a mistake?
I hope you can help me.

Maybe I found the wrong offsets for the german rom, but I am sure that this are the right offsets. But the script doesn´t work.

And I have a question. Which of both asm scripts reads the direction to the trainer? Maybe this could be the reason why my hero is facing to the wrong direction

OK THERE ARE A LOT OF DIFFERENTS BETWEEN THE SCRIPT OF THE GERMAN AND THE ENGLISH ROM. I HOPE THERE WOULD BE A PERSON WHO CAN CHANGE BOTH ASM SCRIPTS FOR USING FOR THE GERMAN ROM AND THE BATTLESCRIPT,TOO. I TRIED TO CHANGE SOME DIFFERENTS, BUT IT DOESN´T WORK. HERE THE OFFSETS:
1A7B71<--1a4ebd
1A7B98<--1a4ee4
1A7BC9<--1a4f15
1A7B9C<--1a4ee8
1A4FBA--> 1A7C76
1A4F20--> 1A7BD4
1A4F19--> 1A7BCD
1A4FC7--> 1A7C81
1A4FC5--> 1A7C7F
1A501A--> 1A7CD4
1A5017--> 1A7CD1
1A5019--> 1A7CD3

I hope there is a person which can changes the three scripts which are needed to insert in the rom for the german rom. I don´t succed. Maybe this can help you:
hxxp://www.n-roms.de/gba/index.php?action=details&id=256