FE_Builder_GBA -- If you have any questions, attach report7z

Whenever a player unit kills an enemy unit, the enemy unit drops its last item, even if that flag isn’t set. This happens whenever the patch “Less annoying fog” is applied.

This is because 0x32808 has the mysterious hook that competes with Less Annoying Fog.

FE8U Vanilla.
“Less Annoying Fog” hooks 0x3280C.

    08032800 200B   mov r0, #0xb
    08032802 5628   ldsb r0, [r5, r0] # pointer:0203A577
    08032804 F7E6 FE14   bl 0x08019430   //GetUnitStruct RET=RAM Unit:@UNIT

    08032808 68C1   ldr r1, [r0, #0xc] r0=RAM
    0803280A 2201   mov r2, #0x1

    0803280C 4311   orr r1 ,r2   //Less Annoying Fog@@EA
    0803280E 60C1   str r1, [r0, #0xc]

Your ROM just before installing Less Annoying Fog.

    08032800 200B   mov r0, #0xb
    08032802 5628   ldsb r0, [r5, r0] # pointer:0203A577
    08032804 F7E6 FE14   bl 0x08019430   //GetUnitStruct RET=RAM Unit:@UNIT

    08032808 4901   LDR r1, [PC, #0x4] # pointer:08032810 -> 09000EE9
    0803280A F09F F85B   BL 0x080D18C4   //_call_via_r1
    0803280E E001   B 0x8032814
    08032810 0EE9 0900   //LDRDATA

You can see that there is a strange hook just before 0x3280C, where Less Annoying Fog is installed.
It jumps to 0x009000EE9.

    08032800 200B   mov r0, #0xb
    08032802 5628   ldsb r0, [r5, r0] # pointer:0203A577
    08032804 F7E6 FE14   bl 0x08019430   //GetUnitStruct RET=RAM Unit:@UNIT

    08032808 4901   LDR r1, [PC, #0x4] # pointer:08032810 -> 09000EE9
    0803280A F09F F85B   BL 0x080D18C4   //_call_via_r1
    0803280E E001   B 0x8032814
    08032810 0EE9 0900   //LDRDATA

If Less Annoying Fog is installed in this state, the middle of this hook routine will be destroyed, as shown below.

    08032800 200B   mov r0, #0xb
    08032802 5628   ldsb r0, [r5, r0] # pointer:0203A577
    08032804 F7E6 FE14   bl 0x08019430   //GetUnitStruct RET=RAM Unit:@UNIT
    08032808 4901   LDR r1, [PC, #0x4] # pointer:08032810 -> 08AB96B1
    0803280A F09F 4B00   BL 0x080D1E0E
    0803280E 4718   BX r3
    08032810 96B1 08AB   //LDRDATA

You can see that the second half of the routine is messed up and broken due to a patch conflict.
It’s a miracle that it works without crashing in this state, but the result is that item drops always occur.

What are the hooks installed in 0x32808?
That mysterious patch conflicts with Less Annoying Fog, so you can’t use them at the same time.

As for “[TextSpeed][0x04]”, I’ve checked it and will fix it later.
Please let me know if there is something other than TextSpeed that causes this problem.

1 Like