Aslickproductions.org/forum/index.php?PHPSESSID=q4c29v6tmbbnv0gvgpv2lv9nn7&topic=1754.75e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexcaf5-3.htmlslickproductions.org/forum/index.php?board=13.160e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexcaf5-3.html.zx@g^,/OKtext/htmlISO-8859-1gzip@Tue, 10 Mar 2020 07:40:21 GMT0 0P@g^R$ Unknown info from FF4 that would be great to know

Author Topic: Unknown info from FF4 that would be great to know  (Read 17969 times)

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,285
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Unknown info from FF4 that would be great to know
« Reply #75 on: August 16, 2013, 10:56:39 AM »
Perhaps we can have an index thread then that links to all of them, kind of like how there's a "THE Command Thread" but then there's a thread for each separate command.
My vote is for this idea. The index thread can always be added to if new "sub-threads" are created (because you think of new stuff you want to figure out).

Dragonsbrethren

  • Forum Overlord
  • *
  • Posts: 1,820
    • View Profile
    • Dragonsbrethren Industries
Re: Unknown info from FF4 that would be great to know
« Reply #76 on: August 16, 2013, 11:21:42 AM »
Yeah, go ahead and make separate threads, that's fine.

Grimoire, the FE compare is probably so -Sort- and the TrashCan don't show up. (E7 and EB are a mystery. EB's the Carrot, but the game doesn't do anything special with those AFAIK.)

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: Unknown info from FF4 that would be great to know
« Reply #77 on: September 03, 2013, 02:05:33 PM »
I thought to add some of my miscellaneous and not very ground breaking findings here since there's no other real topic.

We all know that we can switch the first effect of Sing's effect to actually Do Something, but the game will still give the message "Nothing Happened" for the Song's effect. Now we obviously can't change that because it's used by a lot of other things but we can now change which battle message its referring to in order to fix that annoyance.

In LoRom/HiRom

0x3E9017 - A9 00 (LDA 00) - Stores message 00 for the first instance of Sing's effects.
0x3E901C - A9 00 (LDA 00) - Seems to be necessary to change both, otherwise both are considered 00 regardless of what they actually are.

In ROM at...

01EB17 - A9 00 (LDA 00) - Stores message 00 for the first instance of Sing's effects.
01EB1C - A9 00 (LDA 00) - Seems to be necessary to change both, otherwise both are considered 00 regardless of what they actually are.

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: Unknown info from FF4 that would be great to know
« Reply #78 on: September 04, 2013, 04:32:57 PM »
So in a bit of experimentation I was trying to prepare some sort of Solo Dungeon mod and thought to start with Rydia. To make it really work I'll have to wait until a graphics editor is out or find out how class sprite assignments work. (Since I plan for the choice between 3 different variant of a take on Summoner)

In the midst of this I tried a lot of shadow slot changing and I noticed something very special that I never saw before. Rydia is the only character in the game to change class (Cecil's character is erased and a new one is added for the Dark Knight. The only connection the two seem to have is you can't use Cover if the Dark Knight is in the party, bizarrely enough.)

Every other character has their class from start to finish. Rydia's class changes to use her new graphic. An interesting way to go about it. I grew suspicious when I saw there was no automated fashion this is done, at least according to the editor so I took a look around and quickly found the answer.

In LoRom - HiRom....

0x0E5B7 - C9 11 (CMP 11) - Compare Adult Rydia's ID (Somehow) if this is read...
0x0E5BB - A9 0B (LDA 0B) - Load 0B (Adult Rydia's Class) into...
0x0E5BD - 99 01 10 (STA 7E1001) - 7E1001 - Rydia's Information.

In ROM at...

0x067B7 - C9 11 (CMP 11) - Compare Adult Rydia's ID (Somehow) if this is read...
0x067BB - A9 0B (LDA 0B) - Load 0B (Adult Rydia's Class) into...
0x067BD - 99 01 10 (STA 7E1001) - 7E1001 - Rydia's Information.

The uses for this could be interesting, in case you didn't want Rydia to return in an aged fashion or wanted to use the assignment of byte to somewhere else. Or want another character to change their class. But it does solve to me how the game switches a class in the middle of the character's existence.

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: Unknown info from FF4 that would be great to know
« Reply #79 on: September 05, 2013, 08:02:25 AM »
7E358E is not just the collective enemy group Item Byte but is also the chance to gain said item. The value increases by 40 for each value it is set and then the Item Index is taken into account. For instance 40 = 1, 80 = 2, C0 = 3 as shown in the editor. This is excellent news! This means my "Seek" command  (which I plan to replace Peek with) which increases the chance of gaining any said item compound to its second variant (Always a +40) can be made real.

I just wanted to record this in case it wasn't known what the item chances actually were and if it was known they could be manipulated in combat.

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: Unknown info from FF4 that would be great to know
« Reply #80 on: November 04, 2013, 01:48:36 PM »
I thought this was pretty neat and worth posting for any person that wants to change the game's story significantly to where the game would star another character (or at least start the game as someone who is not Cecil.)




$00/92D6   BF 00 A9 0F   LDA $0FA900,x[$0F:A900]   A:0001   X:0000   Y:0000   P:envMxdIZC - Load starting character's stats from this point.

All you need to do is add 20 until you get the stats (including character ID) of the character you want to start the game as. This was originally gotten around before by changing Cecil's Class, but changing the starting point of the stats themselves lends a bit more legitimacy to the proceedings, so to speak.

In ROM this is located at  0x14D6.

In addition to this closeby is the calculating of the default Critical hit dealings and "steal prevention" (I am now under the impression that these never naturally change when leveling)

$00/92E7   BF 00 A9 0F   LDA $0FA900,x[$0F:A916]   A:0014   X:0016   Y:0002   P:eNvMxdIzc - Load the 14, 15, 16th bytes of the the default data and load it into 102D, 2E, 2F.

ROM - 14E7

And finally...

$00/92F8   BF 00 A9 0F   LDA $0FA900,x[$0F:A91E]   A:0063   X:001E   Y:0007   P:eNvMxdIzc - Loads bytes 17 - 1F into character stats starting at 1037 (Current EXP)

ROM - 14F8

$00/E67D   BF 00 AB 0F   LDA $0FAB00,x[$0F:AB05]   A:0001   X:0005   Y:0005   P:envMxdIzC - Load Starting Equipment. (Every 7 bytes is a set of a character's equipment)

ROM - 687D

And let's try and change the starting event, it is Event 10 strangely enough so finding this will be a bit tricky, likely. As it has never been looked for...

Ah! And finally found it! This is located at...

8081 in LoROM (Thank you Dragonsbrethren for the lead in the default items topic)

$00/8081   A9 10   LDA #$10   A:0081   X:21E0   Y:00F0   P:eNVMxdizC - Add 10 to A (Starting Events)
$00/8083   20 63 DF   JSR $DF63  [$00:DF63]   A:0010   X:21E0   Y:00F0   P:enVMxdizC - Jump to Subroutine (Event Dealings)

In Rom this is at...

281 - A9 10 - Starting Event.

This is Exceptionally useful when testing your hack and you don't want to have to rebuild your event library every single time you want to play a normal game. So you no longer need to destroy the main event and (granted there's a Load Map command within) can start the game from any point.

So there you go. This is the way to switch the main character in a more legitimate way than kicking Cecil out of the party or changing Cecil's class alone and finally for testing you no longer are confined in starting at Event 10, but may start the game where ever there is a Load Map function.

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: Unknown info from FF4 that would be great to know
« Reply #81 on: December 23, 2013, 04:50:20 PM »
A slight addendum to Chillyfeez's positively ancient "changing the effects of call items" thread.

I said then that Child Rydia was the only one looked at... which after all this time I've realized that makes No sense. Taking another look at the data I found that the check for Adult Rydia is right next to it

Code: [Select]
$01/9010 BF 25 C6 0F LDA $0FC625,x[$0F:C625] A:A800 X:0000 Y:6800 P:envmxdIZc - Load 1000 from ROM.
$01/9014 AA TAX A:1000 X:0000 Y:6800 P:envmxdIzc - Transfer A to X.
$01/9015 E2 20 SEP #$20 A:1000 X:1000 Y:6800 P:envmxdIzc - Set Processor Status.
$01/9017 68 PLA A:1000 X:1000 Y:6800 P:envMxdIzc - Pull A from Stack
$01/9018 60 RTS A:1000 X:1000 Y:6800 P:envMxdIZc - Return
------------------------------------------------------------------------------------------
$01/A8F4 BD 00 00 LDA $0000,x[$7E:1000] A:1000 X:1000 Y:6800 P:envMxdIZc - Load Character 1's ID.
$01/A8F7 29 3F AND #$3F A:1081 X:1000 Y:6800 P:eNvMxdIzc - Get rid of unneccessary bits.
$01/A8F9 60 RTS A:1001 X:1000 Y:6800 P:envMxdIzc - Return.
-------------------------------------------------------------------------------------------------------------------------------------
$01/A876 C9 03 CMP #$03 A:1001 X:1000 Y:6800 P:envMxdIzc - Is it Child Rydia?
$01/A878 F0 11 BEQ $11    [$A88B] A:1001 X:1000 Y:6800 P:eNvMxdIzc - If so branch to 01A88B
$01/A87A C9 11 CMP #$11 A:1001 X:1000 Y:6800 P:eNvMxdIzc - Is it Adult Rydia?
$01/A87C F0 0D BEQ $0D    [$A88B] A:1001 X:1000 Y:6800 P:eNvMxdIzc - If so branch to 01A88B
$01/A87E E6 45 INC $45    [$00:0145] A:1001 X:1000 Y:6800 P:eNvMxdIzc - +1 to x45.
$01/A880 A5 45 LDA $45    [$00:0145] A:1001 X:1000 Y:6800 P:envMxdIzc - Load A from 45.
$01/A882 C9 05 CMP #$05 A:1001 X:1000 Y:6800 P:envMxdIzc - Has it looked at every party member?
$01/A884 D0 EB BNE $EB    [$A871] A:1001 X:1000 Y:6800 P:eNvMxdIzc - If not loop back to 01A871. (Start of Process)
-------------------------------------------------------------------------------------------------------