Please login or register.

Login with username, password and session length

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Darthatron

Pages: [1] 2 3 ... 9
FFTA/FFTA2 Hacking / Re: Animation pointers
« on: July 09, 2016, 04:54:01 AM »
I imagine there is some correlation between these index values and some code (or maybe even an unknonw byte??) in a-abilty data?

Not unlikely in the distant future. I never really played it much so I don't have any interest in hacking it (bar a few minor things that were requested) Plus, DS was never my forte.

But someone could come around at any moment and do something. That's what happened with me and FFTA.

Okay I will look into it better. :P

Try this one. Only the 4th and 3rd last bytes are different. This will make him use all of Cid's dialogue.
Code: [Select]
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

Sorry about the confusion. :(

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.
Code: [Select]
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.
Code: [Select]
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.

Code: [Select]
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 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 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 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 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 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 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

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:
Code: [Select]
1E E0
76 byte:
Code: [Select]
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)

Code: [Select]
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.

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 :)

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:

Code: [Select]
ROM:08121F38 ; =============== S U B R O U T I N E =======================================
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 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 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 loc_8121F74                             ; CODE XREF: sub_8121F38+30j
ROM:08121F74                 BL      sub_8009FD0
ROM:08121F78                 MOVS    R0, #1
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 ; ---------------------------------------------------------------------------

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:
Code: [Select]
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)

Code: [Select]
ROM:0812F3CC ; =============== S U B R O U T I N E =======================================
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 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 Return0                                 ; CODE XREF: CheckInvulnerability_Llednar+10j
ROM:0812F408                                         ; CheckInvulnerability_Llednar+20j ...
ROM:0812F408                 MOVS    R0, #0
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

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.

Law Cards work in a similar fashion to items.

Gold is a random value between 1000 and 2999.

AP is 50 (shown as 50 in game. Actual value is 5.)

So the way it currently works is that it randomly picks an item and then checks it can be dropped from the "Shop" byte (0xC) in the Item Data. Depending on where you are up to in the game it will drop an item that is either currently available in the shop OR has the up-most bit set (0x80). That's the last "Unknown" byte in the AIO Item Editor which all the Mythril items and generic healing items have set.

So it goes through all the items and works out how many can potentional drops there could be, then it randomly selects one of those items (Rand[1, X]) and that is the dropped item.

As for AP given, it is hard coded to 50AP by the looks of it.

Codez below for reference.

FFTA/FFTA2 Hacking / Re: Help!! FFTA EDITOR doesnt work on Europe roms!
« on: February 22, 2015, 08:30:44 AM »
The EU game is harder to hack because it has 5(?) different languages, so displaying text is hard.

FFTA/FFTA2 Hacking / Re: -
« on: February 13, 2015, 11:51:58 AM »
That cleared a few things up for me too. Thanks Elric.

FFTA/FFTA2 Hacking / Re: Raise the Level Cap
« on: January 29, 2015, 11:35:01 PM »
0c9bae: 63
0c9baa: 63
12e672: 62

Double exp gain:

12e658: e5 08

I made a mistake in my previous post. It's in the experience gain function.

Currently it's:
If the unit is level 49 or lower and has over 99 experience, let it level up.

We need to change it to:
If the unit is level 98 or lower and has over 99 experience, let it level up.

FFTA/FFTA2 Hacking / Re: FFTA hacking requests
« on: January 28, 2015, 10:18:20 PM »
To get 3/4 I would just get 1/4+1/2. I would probably be able to fit that in.

Code: [Select]
ROM:0812F7DC                 MOVS    R0, 460
ROM:0812F7E0                 MULS    R0, R4
ROM:0812F7E2                 ASRS    R4, R0, #8

That's taken from the Petrify check that you suggested. It takes 8 bytes instead of 6 and is a bit slower because it multiplies.

FFTA/FFTA2 Hacking / Re: Raise the Level Cap
« on: January 28, 2015, 10:09:48 PM »
Oh I never saw there was another problem! So sorry. Change the byte at 12E672 from 31 to 62 to change the level at which you stop gaining EXP from <=49 to <=98.

I'm sorry I was blind :(

This is correct.

FFTA/FFTA2 Hacking / Re: A little teaser of what's to come.
« on: January 15, 2015, 01:11:11 AM »
I'd say... 46.83%

FFTA/FFTA2 Hacking / Re: A little teaser of what's to come.
« on: January 12, 2015, 10:51:42 PM »
Still no ETA sorry. I've been super busy with stuff in my real life and haven't had too much of a chance to do much. I may release an unfinished version some time soon so everyone an test it out.

Pages: [1] 2 3 ... 9