I would like to briefly explain how to convert pointers.
For example, suppose that there is ASMC (0x48281) on FE8U.
Let's calculate FE8J of this.
(The answer is FE8J: 0x48198 + 1.)
First, since the pointer is odd, it needs to be -1.
In ARM ASM specification, thumb code is because there is a rule to make it + 1 and odd.
Therefore, return -1 by doing -1.
0x48281 - 1 = 0x48280
Next, read the ROM of FE8U with FEBuilderGBA.
Menu -> Tool -> Pointer Calculation tool
Please enter 0x48280 in the place of Pointer.
Next, click the "Load Another ROM" button and specify the ROM of FE8J.
Please wait for a few seconds.
The address is displayed.
Because it is pointerized, it is + 0x08000000.
0x08048198 - 0x08000000 = 0x48198
When calling with ASMC, it needs to be +1.
FE8J: 0x48198 + 1
It is the same as the answer value.
Sometimes It make a mistake, but It will tell you the correct answer with about 80% probability.
Of course, conversion exceeding the version such as FE 8 -> FE 7, FE 7 -> FE 8 is also possible.
In terms of mechanism, the address of the entry of the function is the highest percentage of correct answers.
This magic is implemented by searching patterns by matching ROM.