• Welcome to Final Fantasy Hacktics. Please login or sign up.
 

FFTA: Llednar as playable character - Problems & questions

Started by _Sephiran_, November 01, 2014, 06:25:12 pm

_Sephiran_

Hello :)

I have some questions about adding Llednar in my clan via AIO-Editor and Hex-Editor.
Unfortunately there are some problems with Llednar:

1)
The party menu shows the enemy Soldier sprite, instead Llednar's sprite. Is it somehow possible, to change the sprite into Llednar's sprite? I assume the game has a matching / useable Llednar sprite for the party menu (standing, not animated). Llednar's sprite appears in battle and his status screen, but not in the party menu.



2)
How can I disable / enable Llednar's invincibility? In the first two Storybattles, he is immune to damage. Unfortunately this immunity stays until the third Storybattle against Llednar starts. This is boring, because even as playable character, his invincibility stays.

And for some special Missions, I would like add this immunity to some other enemy characters. Is this even possible? Llednar's invincibility has some advantages over the standard physical/elemental (Job-)Immunity: Geomancy can't bypass it.

3)
Llednar's abilities are not listed as Expert-Abilities. The Special-Flag for Llednar's Job "Biskmatar" in the AOI-Editor is activated. This works for Cid, Babus and Ezel, but Llednar is different. When I change Llednar to an enemy or even an NPC, his movesets change back to normal. But as playable character, his movesets look like this:



Is there a way to fix this?

4)
Llednar receives no EXP. Is this changeable?

Can some of the problems fixed via hex-editor?
I appreciate your help and sorry for my English.

bcrobert

Well...these are all fixable via hex editor, technically. And they would probably be minor tweaks if you knew exactly where to edit each of these values. Unfortunately Llednar's many missing pieces have never been fully documented to my knowledge. And you didn't note one of the biggest hurdles. If Llednar gets the dialogue for a mission report, it comes out as gibberish because it points to a part of the ROM that doesn't have dialogue.

Tl;dr: It is absolutely feasible, but I do not know how to do it.
My FFTA hacking tools: http://ffhacktics.com/smf/index.php?topic=9559.0

Believe it or not, I'm still working on this game.

Darthatron

1) He doesn't have a menu sprite. It's stored differently to the animated sprites for walking and such. Only playable units have these (and also Mewt, if I recall correctly, implying that he was probably going to be playable at some point in development.)

2) I will look into this for you when I get a chance. I've been very busy with a new job and moving house over the past couple of months.

3) This is very strange... I can't imagine why. There must be some specific check. I'll see what I can find.

4) Yeah. There's a check for this. It makes it so characters you can't have or haven't got through normal methods (GameShark or something) don't gain exp. Change the byte at 12E5C3 from D9 to E0 in a hex editor. This will bypass all of the checks.
  • Modding version: Other/Unknown
  • Discord username: Darthatron

bcrobert

Quote from: Darthatron on November 02, 2014, 09:17:24 pm
4) Yeah. There's a check for this. It makes it so characters you can't have or haven't got through normal methods (GameShark or something) don't gain exp. Change the byte at 12E5C3 from D9 to E0 in a hex editor. This will bypass all of the checks.


I learned a thing. :D

Also that was a dick move for them to add that check. Did they really expect FFTA to have a big enough competitive metagame to justify cheat-blocking? Jerks.
My FFTA hacking tools: http://ffhacktics.com/smf/index.php?topic=9559.0

Believe it or not, I'm still working on this game.

Darthatron

Quote from: bcrobert on November 03, 2014, 01:22:10 am
I learned a thing. :D

Also that was a dick move for them to add that check. Did they really expect FFTA to have a big enough competitive metagame to justify cheat-blocking? Jerks.

I swear I've posted that somewhere. I looked through all my PMs and posts to find it and I couldn't. So odd. I've known about it for a loooooooong time.

And yes it is strange. High hopes I suppose.
  • Modding version: Other/Unknown
  • Discord username: Darthatron

_Sephiran_

Quote from: bcrobert on November 02, 2014, 01:21:31 am
Well...these are all fixable via hex editor, technically. And they would probably be minor tweaks if you knew exactly where to edit each of these values. Unfortunately Llednar's many missing pieces have never been fully documented to my knowledge. And you didn't note one of the biggest hurdles. If Llednar gets the dialogue for a mission report, it comes out as gibberish because it points to a part of the ROM that doesn't have dialogue.

Tl;dr: It is absolutely feasible, but I do not know how to do it.


Yes, the missing dialogue for mission report is another problem. :(

Quote from: Darthatron on November 02, 2014, 09:17:24 pm
1) He doesn't have a menu sprite. It's stored differently to the animated sprites for walking and such. Only playable units have these (and also Mewt, if I recall correctly, implying that he was probably going to be playable at some point in development.)


So the only way is switch the enemy soldier sprite with a (custom) Llednar sprite?

Quote from: Darthatron on November 02, 2014, 09:17:24 pm
2) I will look into this for you when I get a chance. I've been very busy with a new job and moving house over the past couple of months.


Thank you!

Quote from: Darthatron on November 02, 2014, 09:17:24 pm
3) This is very strange... I can't imagine why. There must be some specific check. I'll see what I can find.


This is even the case with original Llednar in his storybattles, after I changed him to a playable character.

Quote from: Darthatron on November 02, 2014, 09:17:24 pm
4) Yeah. There's a check for this. It makes it so characters you can't have or haven't got through normal methods (GameShark or something) don't gain exp. Change the byte at 12E5C3 from D9 to E0 in a hex editor. This will bypass all of the checks.


This works even with Llednar? Nice! Thank you!

Quote from: Darthatron on November 03, 2014, 06:22:44 am
I swear I've posted that somewhere. I looked through all my PMs and posts to find it and I couldn't. So odd. I've known about it for a loooooooong time.

And yes it is strange. High hopes I suppose.


I found this: http://ffhacktics.com/smf/index.php?topic=9705.msg188684#msg188684

_Sephiran_

Hello :)

I found something about Llednar's invincibility.
Unfortunately, it is only RAM-Editing and maybe useless information:

0x02402190 - 16 and 1A

Codebreaker-Codes (use only one code at the same time and don't save):

32402190 0016
32402190 001A

If the value in 0x02402190 (RAM) is 16 or 1A then Llednar will be invincible.
Other values make Llednar vulnerable. Problem: That address is probably
a "special" Story-Mission-Counter. 16 shows up, when [Quiet Sands] Mission is
available, 1A shows up on the [Present Day] Mission.

After each Story-Mission and / or cutscene the value increases at 1:

01 = [Snowball Fight] <- Llednar is vulnerable
02 = [Herb Picking] <- Llednar is vulnerable
...
15 = [Desert Patrol]  <- Llednar is vulnerable
16 = [Quiet Sands] Part 1 (vs. Llednar) <- Llednar is invincible
17 = [Quiet Sands] Part 2 (vs. Totema) <- Llednar is vulnerable again
...
1A = [Present Day] Part 2 (vs. Llednar) <- Llednar is invincible

It appears that adding Llednar's immunity to other characters via ROM-Editing is not an easy task.

Darthatron

That doesn't seem quite right. Could you link me to that page? WRAM only goes up to 0x203FFFF on the GBA system. But that byte would be very helpful to my research.
  • Modding version: Other/Unknown
  • Discord username: Darthatron

_Sephiran_

WRAM only goes up to 0x203FFFF ?
I thought it goes up to 0x2FFFFFF :



I'll post some screenshots with the addresses:

[Snowball Fight] Mission: 0x2402190 - 01


Before I start the [Desert Patrol] Mission: 0x2402190 -15


Before I start the [Quiet Sands] Mission: 0x2402190 -16 (Part 1)
If 0x2402190 = 16 (and later 1A) then Llednar gains his immunity.


I was only searching for Llednar's immunity address but i found some other stuff, too.

Address for Gold:


Overworld Map-Addresses:


Change the addresses for Cyril, Sprohm and Giza Plains to 0 and you get this:

Darthatron

November 09, 2015, 10:25:41 am #9 Last Edit: November 09, 2015, 11:00:41 am by Darthatron
Oh I know what's happening. VBA just duplicates those 0x40000 bytes afterwards, and editing them edits the originals. The actual "Clan Funds" value is stored at 0x02001F64.

I still can't find any references to 02002190 at all, though. Except in a function that is called just before a script is run:

ROM:08121F38 ; =============== S U B R O U T I N E =======================================
ROM:08121F38
ROM:08121F38
ROM:08121F38 sub_8121F38                             ; CODE XREF: Scene.LoadScript+CEp
ROM:08121F38                 PUSH    {LR}
ROM:08121F3A                 LDR     R3, =unk_2002190
ROM:08121F3C                 LDRB    R0, [R3,#(byte_200219C - 0x2002190)]
ROM:08121F3E                 SUBS    R0, #1
ROM:08121F40                 STRB    R0, [R3,#(byte_200219C - 0x2002190)]
ROM:08121F42                 MOVS    R2, #0
ROM:08121F44                 CMP     R2, R0
ROM:08121F46                 BGE     loc_8121F58
ROM:08121F48                 ADDS    R1, R3, #4
ROM:08121F4A
ROM:08121F4A loc_8121F4A                             ; CODE XREF: sub_8121F38+1Ej
ROM:08121F4A                 LDRH    R0, [R1,#2]
ROM:08121F4C                 STRH    R0, [R1]
ROM:08121F4E                 ADDS    R1, #2
ROM:08121F50                 ADDS    R2, #1
ROM:08121F52                 LDRB    R0, [R3,#(byte_200219C - 0x2002190)]
ROM:08121F54                 CMP     R2, R0
ROM:08121F56                 BLT     loc_8121F4A
ROM:08121F58
ROM:08121F58 loc_8121F58                             ; CODE XREF: sub_8121F38+Ej
ROM:08121F58                 LDRB    R0, [R3,#0xC]
ROM:08121F5A                 LSLS    R0, R0, #1
ROM:08121F5C                 ADDS    R1, R3, #4
ROM:08121F5E                 ADDS    R1, R1, R0
ROM:08121F60                 MOVS    R0, #0
ROM:08121F62                 STRH    R0, [R1]
ROM:08121F64                 LDRB    R0, [R3,#0xC]
ROM:08121F66                 CMP     R0, #0
ROM:08121F68                 BNE     loc_8121F74
ROM:08121F6A                 MOVS    R0, #0
ROM:08121F6C                 B       loc_8121F7A
ROM:08121F6C ; ---------------------------------------------------------------------------
ROM:08121F6E                 DCB    0
ROM:08121F6F                 DCB    0
ROM:08121F70 off_8121F70     DCD unk_2002190         ; DATA XREF: sub_8121F38+2r
ROM:08121F74 ; ---------------------------------------------------------------------------
ROM:08121F74
ROM:08121F74 loc_8121F74                             ; CODE XREF: sub_8121F38+30j
ROM:08121F74                 BL      sub_8009FD0
ROM:08121F78                 MOVS    R0, #1
ROM:08121F7A
ROM:08121F7A loc_8121F7A                             ; CODE XREF: sub_8121F38+34j
ROM:08121F7A                 POP     {R1}
ROM:08121F7C                 BX      R1
ROM:08121F7C ; End of function sub_8121F38
ROM:08121F7C
ROM:08121F7C ; ---------------------------------------------------------------------------


But that doesn't even edit that byte. It's actually 0xC bytes after. As far as I can tell, nothing else even touches that byte.

EDIT: Nevermind... It's always referenced as so:
ROM:080CF7FA                 LDR     R1, =WRAM_Base
ROM:080CF7FC                 LDR     R2, =0x2190
ROM:080CF7FE                 ADDS    R0, R1, R2


Very annoying to pin point references.

EDIT 2: I think this will work... Change the 4 bytes at 08130870 to 00 20 00 00

This will make Llednar always killable.

Change the first byte to 01 to make him never killable.

For future reference (Mainly for you, bcrobert)

ROM:0812F3CC ; =============== S U B R O U T I N E =======================================
ROM:0812F3CC
ROM:0812F3CC
ROM:0812F3CC CheckInvulnerability_Llednar            ; CODE XREF: sub_8130868+8p
ROM:0812F3CC                 PUSH    {R4,LR}
ROM:0812F3CE                 MOVS    R4, R0
ROM:0812F3D0                 MOVS    R0, #0xD        ; ID
ROM:0812F3D2                 BL      LoadByte        ; r0 = [02002030 + r0] (byte)
ROM:0812F3D6                 LSLS    R0, R0, #0x18
ROM:0812F3D8                 LSRS    R0, R0, #0x18
ROM:0812F3DA                 CMP     R0, #1
ROM:0812F3DC                 BEQ     Return0
ROM:0812F3DE                 LDR     R0, =WRAM_Base
ROM:0812F3E0                 LDR     R1, =0x2190
ROM:0812F3E2                 ADDS    R0, R0, R1
ROM:0812F3E4                 LDRB    R0, [R0]
ROM:0812F3E6                 CMP     R0, #0x16
ROM:0812F3E8                 BEQ     CheckLlednar
ROM:0812F3EA                 CMP     R0, #0x1A
ROM:0812F3EC                 BNE     Return0
ROM:0812F3EE
ROM:0812F3EE CheckLlednar                            ; CODE XREF: CheckInvulnerability_Llednar+1Cj
ROM:0812F3EE                 MOVS    R0, R4          ; pRAMCharacter
ROM:0812F3F0                 MOVS    R1, #UnitGet_bSpecialIndex ; index
ROM:0812F3F2                 BL      Unit.Get
ROM:0812F3F6                 CMP     R0, #0xD
ROM:0812F3F8                 BNE     Return0
ROM:0812F3FA                 MOVS    R0, #1
ROM:0812F3FC                 B       End
ROM:0812F3FC ; ---------------------------------------------------------------------------
ROM:0812F3FE                 DCB    0
ROM:0812F3FF                 DCB    0
ROM:0812F400 off_812F400     DCD WRAM_Base           ; DATA XREF: CheckInvulnerability_Llednar+12r
ROM:0812F404 dword_812F404   DCD 0x2190              ; DATA XREF: CheckInvulnerability_Llednar+14r
ROM:0812F408 ; ---------------------------------------------------------------------------
ROM:0812F408
ROM:0812F408 Return0                                 ; CODE XREF: CheckInvulnerability_Llednar+10j
ROM:0812F408                                         ; CheckInvulnerability_Llednar+20j ...
ROM:0812F408                 MOVS    R0, #0
ROM:0812F40A
ROM:0812F40A End                                     ; CODE XREF: CheckInvulnerability_Llednar+30j
ROM:0812F40A                 POP     {R4}
ROM:0812F40C                 POP     {R1}
ROM:0812F40E                 BX      R1
ROM:0812F40E ; End of function CheckInvulnerability_Llednar
  • Modding version: Other/Unknown
  • Discord username: Darthatron

_Sephiran_

November 09, 2015, 12:49:57 pm #10 Last Edit: November 09, 2015, 05:30:40 pm by _Sephiran_
Thank you :D

Quote from: Darthatron on November 09, 2015, 10:25:41 am

EDIT 2: I think this will work... Change the 4 bytes at 08130870 to 00 20 00 00

This will make Llednar always killable.



Yes, Llednar is now always killable. Perfect :)

Quote from: Darthatron on November 09, 2015, 10:25:41 am

Change the first byte to 01 to make him never killable.



If I change the 4 bytes at 08130870 to 01 20 00 00, everyone (not only Llednar) on the field will be invincible.  :o
No damage possible.  :shock:


Quote from: _Sephiran_ on November 01, 2014, 06:25:12 pm

3)
Llednar's abilities are not listed as Expert-Abilities. The Special-Flag for Llednar's Job "Biskmatar" in the AOI-Editor is activated. This works for Cid, Babus and Ezel, but Llednar is different. When I change Llednar to an enemy or even an NPC, his movesets change back to normal. But as playable character, his movesets look like this:



Is there a way to fix this?



I haven't found a solution for that problem.
Maybe that's because Llednar hasn't the A-Ability "Item". Every other playable Unit has this A-Ability.

@ Darthatron
If you have time, could you please look for a fix?


EDIT:
Some notes:

Invincible Ezel

ROM:0812F3F6                 CMP     R0, #0xD
Change
ROM:0812F3F6 - Byte 0D to 0A

0D = ID Llednar
0A = ID Ezel

01 = Normal Unit (all non-special units & monster are now invincible)
02 = Marche
03 = Mewt
04 = Ritz
05 = Queen Remedi
06 = Cid
07 = Doned
08 = Montblanc
09 = Babus
0A = Ezel
...
0D = Llednar

Same rules: Only in [Quiet Sands] Part 1 and [Present Day] Part 2 active.

Darthatron

Could you send me a .SAV (not save state) from inside of the battle with three Llednar's? One an ally. One an enemy. And one a guest. Then I will look into it :)
  • Modding version: Other/Unknown
  • Discord username: Darthatron

_Sephiran_

I've sent you a PM with the .sav file. :)

I have two questions. Changing the 4 bytes at 08130870 to 01 20 00 00
gives all units complete invulnerability in battle. Can this be changed?
Only one unit should be affected ...

Alternatively, can I bypass the vulnerability / invulnerability check like I can bypass the
EXP-Check for special characters? I managed to give Ezel invulnerability (ROM:0812F3F6 - Byte 0D to 0A),
but it lasts only for 2 Missions ([Quiet Sands] Part 1 and [Present Day] Part 2). I need the invulnerability
permanently on for a fixed character. I'm sure ROM:0812F3F6 - Byte 0D to 0A is not a clean edit,
what else should be changed?

Darthatron

ROM:0812F3E6                 CMP     R0, #0x16
ROM:0812F3E8                 BEQ     CheckLlednar
ROM:0812F3EA                 CMP     R0, #0x1A
ROM:0812F3EC                 BNE     Return0

change those 8 bytes to 00 and it will work fine all the time. You'll just need to change those 4 bytes to their original values. Then you can make that byte (0D for Llednar) any index you like.

As for the icon thing, I will look into it tomorrow morning and I am totally exhausted.
  • Modding version: Other/Unknown
  • Discord username: Darthatron

_Sephiran_

Quote from: Darthatron on November 10, 2015, 09:20:55 am
ROM:0812F3E6                 CMP     R0, #0x16
ROM:0812F3E8                 BEQ     CheckLlednar
ROM:0812F3EA                 CMP     R0, #0x1A
ROM:0812F3EC                 BNE     Return0

change those 8 bytes to 00 and it will work fine all the time. You'll just need to change those 4 bytes to their original values. Then you can make that byte (0D for Llednar) any index you like.


Thank you very much!
It works!  :D

Quote from: Darthatron on November 10, 2015, 09:20:55 am
As for the icon thing, I will look into it tomorrow morning and I am totally exhausted.


Thank you.
Take your time. There's no hurry.

Darthatron

I'm afraid if I don't do it sooner, rather than later, it would never get done. Ask Eternal ;)

Okay so the (stupid) reason that this is happening is that there is a check to see if the unit is Ezel, Cid, Babus or a guest/enemy and displays the Hume default jobs unless one of those conditions is met. After initially changing that condition (by re-writing the whole function; a 76 byte change) to include Llednar, I realised that the same thing can be achieved by just assuming that one of those conditions in met; a two byte change.

Both changes start at 080C8ECE.

2 byte:
1E E0

76 byte:
FF F7 B7 F9 00 28 1C D1 38 1C FF F7 C2 F9 00 28
17 D1 38 1C 09 21 FF F7 56 F9 00 28 11 D1 38 1C
0A 21 FF F7 50 F9 00 28 0B D1 38 1C 0D 21 FF F7
4A F9 00 28 05 D1 38 1C 5E 21 FF F7 44 F9 00 28
66 D0 38 1C 03 21 FE F7 C6 FF 00 00


Take your pick!

(I feel pretty stupid)
  • Modding version: Other/Unknown
  • Discord username: Darthatron

_Sephiran_

November 11, 2015, 10:10:30 am #16 Last Edit: November 11, 2015, 10:59:50 am by _Sephiran_
Again, many thanks for your efforts!
I have tested both versions and both are working. :)
This game has some strange checks.

Llednar as a playable character is nearly complete.
There are two problems left, but they have no higher priority.
Probably these problems are hard or (currently) impossible to fix.

However, if your time allows it, could you please look into it?
There's no hurry.


Problem 1 + my idea for a fix

Quote from: _Sephiran_ on November 01, 2014, 06:25:12 pm
The party menu shows the enemy Soldier sprite, instead Llednar's sprite. Is it somehow possible, to change the sprite into Llednar's sprite? I assume the game has a matching / useable Llednar sprite for the party menu (standing, not animated). Llednar's sprite appears in battle and his status screen, but not in the party menu.




Quote from: Darthatron on November 02, 2014, 09:17:24 pm
1) He doesn't have a menu sprite. It's stored differently to the animated sprites for walking and such. Only playable units have these (and also Mewt, if I recall correctly, implying that he was probably going to be playable at some point in development.)


Llednar hasn't a menu sprite. Because of this the enemy Soldier menu sprite appears. I planned to edit
the "enemy" Soldier menu sprite, but ... that's probably not a good idea. If I edit the enemy Soldier menu sprite,
then this will probably affect the normal Soldier menu sprite as well. I have a better idea. Mewt has a menu sprite.
He doesn't need it*. My plan: Repoint the menu sprite so Llednar has Mewt's menu sprite (is this possible?).
Then edit the menu sprite. This way nothing should go wrong, because Mewt's menu sprite is never used.
I found the sprite animations for walking, attacking and such. But where are the party menu sprites located?


* Some offtopic: Mewt as playable / enemy character:

Changing jobs has some bugs. You can't change
his job. Well, the option is there and useable but
his job won't change at all.

Unfortunately Mewt's missing sprites causes
the game to freeze. He has no cast animation and
even unarmed attacks are not possible.



Problem 2 + my idea for a fix

Quote from: bcrobert on November 02, 2014, 01:21:31 am

And you didn't note one of the biggest hurdles. If Llednar gets the dialogue for a mission report, it comes out as gibberish because it points to a part of the ROM that doesn't have dialogue.



bcrobert is right. If Llednar gets the dialogue for a mission report, the game shows some
unrelated text or even freezes. Is repointing an option? For example: Llednar finishes a mission
and the game uses the mission report from another character (for example Hume / Moogle / Cid's mission report).

EDIT:
Maybe this is helpful:

If you change the race of a unit, then this will also change the mission report.
Special characters have a special race. Llednar's race value: 13

For testing: The address for changing the race of the 3rd unit in your clan: RAM: 0x02000296

ID values:

01 = Hume
02 = Bangaa
03 = Numou
04 = Viera
05 = Moogle
-----------
06 = Ezel
07 = Babus
08 = Ritz
09 = Shara
0A = Cid
...
13 = Llednar

bcrobert

Well...if you change his race to human and move his abilities into the human A-abilities list then technically it would fix playable Llednar. BUT it would also require a lot of repointing, add Biskmatar to the human job wheel in a glitchy way, and be generally a pain.

Even if you make it so characters can't job change to Biskmatar, you run into a problem of Llednar being able to use any other human job at the cost of never being able to go back to his own job. So...yeah. It would be smarter to try and find the mechanic that points to post-mission dialogue and rewrite that to read from a list of pointers instead of using whatever asinine formula it uses right now.
My FFTA hacking tools: http://ffhacktics.com/smf/index.php?topic=9559.0

Believe it or not, I'm still working on this game.

Darthatron

November 12, 2015, 08:33:12 am #18 Last Edit: November 12, 2015, 10:27:51 pm by Darthatron
This will fix the game breaking mission dialog. Change the bytes at 0x08047978 to:

Original change thay didn't work. Was setting the wrong register. Whoops.
5E 20 31 79 81 42 01 D1 50 24 29 E0 09 29 01 D1
38 24 25 E0 0A 29 01 D1 30 24 21 E0 0D 29 0A D1
02 20 1D E0


Try this one. Only the 4th and 3rd last bytes are different. This will make him use all of Cid's dialogue. Leave the 4th last as 02 to use Hume's.
5E 20 31 79 81 42 01 D1 50 24 29 E0 09 29 01 D1
38 24 25 E0 0A 29 01 D1 30 24 21 E0 0D 29 0A D1
50 24 1D E0


This just adds Llednar into the checks for special characters.

ROM:08047952                 MOVS    R0, R6          ; RAMchar
ROM:08047954                 MOVS    R1, #SpecUnit.Marche ; CharacterID
ROM:08047956                 BL      Unit.CheckSpecificSpecialUnit
ROM:0804795A                 LSLS    R0, R0, #0x18
ROM:0804795C                 CMP     R0, #0
ROM:0804795E                 BEQ     CheckCid
ROM:08047960                 MOVS    R4, #0
ROM:08047962                 B       MissionCompleteText
ROM:08047962 ; END OF FUNCTION CHUNK FOR BattleJustFinished
ROM:08047962 ; ---------------------------------------------------------------------------
ROM:08047964 off_8047964     DCD word_201F514        ; DATA XREF: BattleJustFinished+EE4r
ROM:08047968 off_8047968     DCD OptionsMaybe        ; DATA XREF: BattleJustFinished:loc_8047938r
ROM:0804796C off_804796C     DCD word_201F4FC        ; DATA XREF: BattleJustFinished+EEEr
ROM:08047970 dword_8047970   DCD -0x2050             ; DATA XREF: BattleJustFinished+EF8r
ROM:08047974 off_8047974     DCD byte_201F4F2        ; DATA XREF: BattleJustFinished+F00r
ROM:08047978 ; ---------------------------------------------------------------------------
ROM:08047978 ; START OF FUNCTION CHUNK FOR BattleJustFinished
ROM:08047978
ROM:08047978 CheckCid                                ; CODE XREF: BattleJustFinished+F12j
ROM:08047978                 MOVS    R0, R6          ; RAMchar
ROM:0804797A                 MOVS    R1, #SpecUnit.Cid ; CharacterID
ROM:0804797C                 BL      Unit.CheckSpecificSpecialUnit
ROM:08047980                 LSLS    R0, R0, #0x18
ROM:08047982                 CMP     R0, #0
ROM:08047984                 BEQ     CheckEzel
ROM:08047986                 MOVS    R4, #0x50
ROM:08047988                 B       MissionCompleteText
ROM:0804798A ; ---------------------------------------------------------------------------
ROM:0804798A
ROM:0804798A CheckEzel                               ; CODE XREF: BattleJustFinished+F38j
ROM:0804798A                 MOVS    R0, R6          ; RAMchar
ROM:0804798C                 MOVS    R1, #SpecUnit.Ezel ; CharacterID
ROM:0804798E                 BL      Unit.CheckSpecificSpecialUnit
ROM:08047992                 LSLS    R0, R0, #0x18
ROM:08047994                 CMP     R0, #0
ROM:08047996                 BEQ     CheckBabus
ROM:08047998                 MOVS    R4, #0x30
ROM:0804799A                 B       MissionCompleteText
ROM:0804799C ; ---------------------------------------------------------------------------
ROM:0804799C
ROM:0804799C CheckBabus                              ; CODE XREF: BattleJustFinished+F4Aj
ROM:0804799C                 MOVS    R0, R6          ; RAMchar
ROM:0804799E                 MOVS    R1, #SpecUnit.Babus ; CharacterID
ROM:080479A0                 BL      Unit.CheckSpecificSpecialUnit
ROM:080479A4                 LSLS    R0, R0, #0x18
ROM:080479A6                 CMP     R0, #0
ROM:080479A8                 BEQ     CheckRitz
ROM:080479AA                 MOVS    R4, #0x38
ROM:080479AC                 B       MissionCompleteText
ROM:080479AE ; ---------------------------------------------------------------------------
ROM:080479AE
ROM:080479AE CheckRitz                               ; CODE XREF: BattleJustFinished+F5Cj
ROM:080479AE                 MOVS    R0, R6          ; RAMchar
ROM:080479B0                 MOVS    R1, #SpecUnit.Ritz ; CharacterID
ROM:080479B2                 BL      Unit.CheckSpecificSpecialUnit
ROM:080479B6                 LSLS    R0, R0, #0x18
ROM:080479B8                 CMP     R0, #0
ROM:080479BA                 BEQ     CheckShara
ROM:080479BC                 MOVS    R4, #0x40
ROM:080479BE                 B       MissionCompleteText
ROM:080479C0 ; ---------------------------------------------------------------------------
ROM:080479C0
ROM:080479C0 CheckShara                              ; CODE XREF: BattleJustFinished+F6Ej
ROM:080479C0                 MOVS    R0, R6          ; RAMchar
ROM:080479C2                 MOVS    R1, #SpecUnit.Shara ; CharacterID
ROM:080479C4                 BL      Unit.CheckSpecificSpecialUnit
ROM:080479C8                 LSLS    R0, R0, #0x18
ROM:080479CA                 CMP     R0, #0
ROM:080479CC                 BEQ     NotSpecial
ROM:080479CE                 MOVS    R4, #0x48
ROM:080479D0                 B       MissionCompleteText
ROM:080479D2 ; ---------------------------------------------------------------------------
ROM:080479D2
ROM:080479D2 NotSpecial                              ; CODE XREF: BattleJustFinished+F80j
ROM:080479D2                 LDRB    R0, [R6,#RAM_Unit.Race]
ROM:080479D4                 LSLS    R0, R0, #0x1B
ROM:080479D6                 LSRS    R4, R0, #0x18
  • Modding version: Other/Unknown
  • Discord username: Darthatron

_Sephiran_

Thank you very much.
I have changed the bytes at 0x08047978, but there are some errors.

If I complete a mission, the mission report shows the text for failing the mission:


If I fail a mission, I get this:


After a clan fight (with Llednar alone), the game will freeze:



This looks good: