øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=1883.msg20054e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index0278.htmldelayedslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=1883.210e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index0278.html.zx“g^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿȰ™b8íOKtext/htmlISO-8859-1gzip@øÕ8íÿÿÿÿÿÿÿÿÑHTue, 10 Mar 2020 05:15:22 GMT0ó°° ®0®P®€§²ð®’g^ÿÿÿÿÿÿÿÿ§B8í Grimoire LD's Notes, Patches, and Hacks (Dark Knight/Paladin Swap In Battle!)

Author Topic: Grimoire LD's Notes, Patches, and Hacks (Dark Knight/Paladin Swap In Battle!)  (Read 78663 times)

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Very great work! Limit skills, eh? I take it you know then how to darken a command so it cannot be used, correct? Or are they activated completely differently from a chosen selection? Or does it build up over five attacks using this command eventually using a 5 Attack string?

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Here's a Very simple one that I only just now noticed how simple it Really could be... Search to Taunt

Original Search Code that was altered...

Code: [Select]
$03/DFD5 A5 CE LDA $CE    [$00:00CE] A:0003 X:0066 Y:0000 P:envMxdizc - Load A from CE. - Load Caster's Slot.
$03/DFD7 A8 TAY A:0080 X:0066 Y:0000 P:eNvMxdizc - Transfer A to Y.
$03/DFD8 A5 CD LDA $CD    [$00:00CD] A:0080 X:0066 Y:0080 P:envMxdizc - Load A from CD.- Load Target's Slot.

New Taunt Code

Code: [Select]
$03/DFD5 A5 CD LDA $CD    [$00:00CD] A:0003 X:0066 Y:FFFF P:envMxdizc - Load Target's Slot.
$03/DFD7 A8 TAY A:0001 X:0066 Y:FFFF P:envMxdizc - Transfer A to Y.
$03/DFD8 A5 CE LDA $CE    [$00:00CE] A:0001 X:0066 Y:0001 P:envMxdizc - Load Caster's Slot.

This reverses its functionality. And it only took a two byte swap! But this does have its limits... it can't be multi-targeted without some real problems appearing.

In essence though this makes it so the chosen enemy will only target that specific character for its next action.

LordGarmonde

  • Baigan
  • *
  • Posts: 271
  • Gender: Male
  • "Power only breeds war..."
    • View Profile
SWEET!
One of my longer term goals is to put Golbez into the party and I'd love to have this ability to give him.  :childish:

Unrelated - I'm still working on my experience mod to eliminate the need for the reference tables. Do you know where the routine is that updates stats/TNL upon level up?
"Now I know; and knowing makes it even more confusing..."

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Well I'm glad you like it! I'll be putting the Sword Spirit into its own patch shortly, so there's that as well.

I do believe I had found something like that before... (goes back to newly updated first post which has all of his miscellaneous notes linked, realizes he forgot to include it...) Hah. (looks through the topic for it...)
http://slickproductions.org/forum/index.php?topic=1883.msg19497#msg19497 There we are. That is some relation to what's going on.

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Sword Spirit/Iaido/Draw Out/Katana Soul, what have you is now in patch form.

 :edit: (Looks at Avatar)   I never want to post again...
« Last Edit: January 10, 2014, 04:48:36 PM by Grimoire LD »

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,285
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
I take it you know then how to darken a command so it cannot be used, correct? Or are they activated completely differently from a chosen selection? Or does it build up over five attacks using this command eventually using a 5 Attack string?
The activation is automatic and (basically) random.
I cannibalized auto-hide in order to make it work (thanks to your research on the subject).

Conditions for auto-hide:
-Character is in critical status
-Character is Edward
-Character is not already hiding
Results in:
-Character targets self
-Character executes Hide

Conditions for limit break:
-Character is in critical status
-Character's lower HP byte has bits 0 and 1 set (mathematically, this means [HP] - 3 is evenly divisible by 4)
-Character has not already used a limit skill this battle (Dropped Item byte is 00)
Results in:
-Character targets all enemies
-Character executes "limit break" ability

Now, the Limit Break ability checks the character's Sprite/Class byte ($2001,X), then based on what value is there, re-targets if necessary and queues a Limit skill - One of Four new abilities (of which Attack Barrage is one) and Four super-spells (Phoenix is one, and the other three are beefed-up versions of Virus, Holy and Cure), depending on which character is limit breaking.

So the activation, like in FFVI, is essentially random. That is, it's not unpredictable, but it's nearly impossible to force. While I did this because it was the easier way to go (I imagine, given enough time and motivation, that I could make a conditionally darked-out, user-initiated command, but I'm not sure I have either), I also prefer for Limits to be, well, limited. I personally have abused the living hell out of them in FFVII and FFX and find the inability to do so in FFIX refreshing. I was considering, though, working in a high-level white magic spell that essentially forces Limit conditions so that for a price, a high-level player could use them (still only once per battle) at will, sort of reminiscent of the Aura status in FFVIII.

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,285
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
  I never want to post again...
Right? only 477 more posts for me!

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
That is Beyond cool Chillyfeez! Talk about taking something that's already there and turning it on its head, you've added an Entire new facet to battle!

Your idea is a lot more workable, then the plan to put a command in people's menus that darken. One, you don't waste a precious Command spot, two, you can decide when it will be activated, not the player, and three. It's just all around more aesthetically pleasing. FFVI had it right with desperation attacks I feel. Just their rarity made them pretty rare sights.

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Hmm, though I had to sacrifice a bit of what I wanted I am not upset at all with the results...

Break Skills are complete! I only added 5 though and only the ones that hit stats. Not because I ran out of room with my chosen point, but because I think they're good enough and they capture the original spirit of the Break Skills (without the potential for absurd brokenness.)

Sylph was the victim this time. I haven't yet filled up the entire data though. There's a lot of free space I might want to use for other purposes perhaps.

Code: [Select]
EDIT: Code added to prevent crashes when enemies use these, meaning that the original byte placement representations are off by 4.)

$03/DAAE A5 CD LDA $CD    [$00:06CD] A:00F0 X:0140 Y:0000 P:eNvMxdizc - Load Character ID into A.
$03/DAB0 30 05 BMI $05    [$DAB7] A:00F0 X:0140 Y:0000 P:eNvMxdizc - If a monster skip Audiovisual Call
----------------------------------------------------------------------------------------------------------------
$03/DAAE A9 C0 LDA #$C0 A:0003 X:0034 Y:0000 P:envMxdizc - Load Weapon Swing into A.
$03/DAB0 8D C4 33 STA $33C4  [$7E:33C4] A:00C0 X:0034 Y:0000 P:eNvMxdizc - Store A in Audiovisual Call.
---------------------------------------------------------------------------------------------------------------
$03/DAB3 AD A2 28 LDA $28A2  [$7E:28A2] A:00C0 X:0034 Y:0000 P:eNvMxdizc - Load Stored Element into A.
$03/DAB6 C9 01 CMP #$01 A:0001 X:0034 Y:0000 P:envMxdizc - Is it Fire?
$03/DAB8 D0 13 BNE $13    [$DACD] A:0001 X:0034 Y:0000 P:envMxdiZC - If not, branch to next check.
----------------------------------------------------------------------------------------------------------------------------------------------------------
$03/DABA AD 1D 27 LDA $271D  [$7E:271D] A:0001 X:0034 Y:0000 P:envMxdiZC - Load Target's Attack Power into A.
$03/DABD C9 09 CMP #$09 A:000E X:0034 Y:0000 P:envMxdizC - Is it more than 08?
$03/DABF 90 0B BCC $0B    [$DACC] A:000E X:0034 Y:0000 P:envMxdizC - If not, branch to Return.
$03/DAC1 48 PHA A:000E X:0034 Y:0000 P:envMxdizC - Push A onto stack
$03/DAC2 4A LSR A A:000E X:0034 Y:0000 P:envMxdizC - /2
$03/DAC3 4A LSR A A:0007 X:0034 Y:0000 P:envMxdizc - /2
$03/DAC4 85 E3 STA $E3    [$00:00E3] A:0003 X:0034 Y:0000 P:envMxdizC - Store A in E3.
$03/DAC6 68 PLA A:0003 X:0034 Y:0000 P:envMxdizC - Pull A from Stack.
$03/DAC7 E5 E3 SBC $E3    [$00:00E3] A:000E X:0034 Y:0000 P:envMxdizC - Minus current stat by 1/4 of its original value.
$03/DAC9 8D 1D 27 STA $271D  [$7E:271D] A:000B X:0034 Y:0000 P:envMxdizC - Store A in Attack Power.
$03/DACC 60 RTS A:000B X:0034 Y:0000 P:envMxdizC - Return
-------------------------------------------------------------------------------------------------------------------------------
$03/DACD C9 02 CMP #$02 A:0002 X:0034 Y:0000 P:envMxdizC - Is it Ice?
$03/DACF D0 13 BNE $13    [$DAE4] A:0002 X:0034 Y:0000 P:envMxdiZC - If not, branch to next check.
$03/DAD1 AD 3B 27 LDA $273B  [$7E:273B] A:0002 X:0034 Y:0000 P:envMxdiZC - Load Target's Speed into A.
$03/DAD4 C9 20 CMP #$20 A:0010 X:0034 Y:0000 P:envMxdizC - Is it 20 or above?
$03/DAD6 B0 0B BCS $0B    [$DAE3] A:0010 X:0034 Y:0000 P:eNvMxdizc - If so branch to return.
$03/DAD8 48 PHA A:0010 X:0034 Y:0000 P:eNvMxdizc - Push Speed onto stack.
$03/DAD9 4A LSR A A:0010 X:0034 Y:0000 P:eNvMxdizc - /2
$03/DADA 4A LSR A A:0008 X:0034 Y:0000 P:envMxdizc - /2
$03/DADB 85 E3 STA $E3    [$00:00E3] A:0004 X:0034 Y:0000 P:envMxdizc - Store A  in E3.
$03/DADD 68 PLA A:0004 X:0034 Y:0000 P:envMxdizc - Pull A from Stack.
$03/DADE 65 E3 ADC $E3    [$00:00E3] A:0010 X:0034 Y:0000 P:envMxdizc - Add the value in E3 onto A (to slow target down.)
$03/DAE0 8D 3B 27 STA $273B  [$7E:273B] A:0014 X:0034 Y:0000 P:envMxdizc - Store A in Target's Speed.
$03/DAE3 60 RTS A:0014 X:0034 Y:0000 P:envMxdizc - Return
---------------------------------------------------------------------------------------------------------------------------------
$03/DAE4 C9 04 CMP #$04 A:0004 X:0034 Y:0000 P:envMxdizC - Is it Lightning?
$03/DAE6 D0 12 BNE $12    [$DAFB] A:0004 X:0034 Y:0000 P:envMxdiZC - If not, branch to next check.
$03/DAE8 AD 28 27 LDA $2728  [$7E:2728] A:0004 X:0034 Y:0000 P:envMxdiZC - Load Target's Physical Defense Multiplier into A.
$03/DAEF 48 PHA A:0002 X:0034 Y:0000 P:envMxdiZC - Push A.
$03/DAF1 4A LSR A A:0001 X:0034 Y:0000 P:envMxdizc - /2
$03/DAF2 85 E3 STA $E3    [$00:00E3] A:0000 X:0034 Y:0000 P:envMxdiZC - Store Physical Defense into E3.
$03/DAF4 68 PLA A:0000 X:0034 Y:0000 P:envMxdiZC - Pull A.
$03/DAF5 E5 E3 SBC $E3    [$00:00E3] A:0002 X:0034 Y:0000 P:envMxdizC - Subtract value in E3 from Physical Defense.
$03/DAFA 30 05 BMI $05    [$DB01] A:00FF X:02A6 Y:0000 P:eNvMxdizc - If negative, branch to End.
$03/DAF7 8D 28 27 STA $2728  [$7E:2728] A:0002 X:0034 Y:0000 P:envMxdizC - Store in Target's Physical Defense.
$03/DAFA 60 RTS A:0002 X:0034 Y:0000 P:envMxdizC - Return
---------------------------------------------------------------------------------------------------------------------------------------------------------
$03/DAFB C9 08 CMP #$08 A:0008 X:0034 Y:0000 P:envMxdizC - Is it Darkness Element?
$03/DAFD D0 14 BNE $14    [$DB19] A:00F0 X:01BE Y:4510 P:eNvMxdIzc - Branch to next one if not.
$03/DAFF AD 17 27 LDA $2717  [$7E:2717] A:0008 X:0034 Y:0000 P:envMxdiZC - Load A from Target's Spell Power.
$03/DB06 48 PHA A:0028 X:0034 Y:0000 P:envMxdizC - Push A onto Stack.
$03/DB07 4A LSR A A:0028 X:0034 Y:0000 P:envMxdizC - /2
$03/DB08 4A LSR A A:0014 X:0034 Y:0000 P:envMxdizc - /2
$03/DB09 85 E3 STA $E3    [$00:00E3] A:000A X:0034 Y:0000 P:envMxdizc - Store A in E3.
$03/DB0B 68 PLA A:000A X:0034 Y:0000 P:envMxdizc - Pull A from Stack.
$03/DB0C E5 E3 SBC $E3    [$00:00E3] A:0028 X:0034 Y:0000 P:envMxdizc - Subtract A from E3.
                        30 07 BMI $07    [$DB19] A:00F0 X:01BE Y:4510 P:eNvMxdIzc - Branch if Minus to End.
$03/DB0E 8D 17 27 STA $2717  [$7E:2717] A:001D X:0034 Y:0000 P:envMxdizC - Store A in Target's Wisdom
$03/DB15 8D 18 27 STA $2718  [$7E:2718] A:00F0 X:01BE Y:4510 P:eNvMxdIzc - Store A in Target's Will
$03/DB11 60 RTS A:001D X:0034 Y:0000 P:envMxdizC - Return
-----------------------------------------------------------------------------------------------------------------------------------------------------
$03/DB12 C9 10 CMP #$10 A:0010 X:0034 Y:0000 P:envMxdizC - Is it Holy?
$03/DB14 D0 13 BNE $13    [$DB29] A:0010 X:0034 Y:0000 P:envMxdiZC - If not, branch to 13 bytes away, (left open just in case I want to expand)
$03/DB16 AD 24 27 LDA $2724  [$7E:2724] A:0010 X:0034 Y:0000 P:envMxdiZC - Load Target's Magical Defense into A.
$03/DB19 C9 02 CMP #$02 A:000B X:0034 Y:0000 P:envMxdizC - Is it less than 02?
$03/DB1B 90 0B BCC $0B    [$DB28] A:000B X:0034 Y:0000 P:envMxdizC - If so branch to return.
$03/DB1D 48 PHA A:000B X:0034 Y:0000 P:envMxdizC - Push A.
$03/DB1E 4A LSR A A:000B X:0034 Y:0000 P:envMxdizC - /2
$03/DB1F 4A LSR A A:0005 X:0034 Y:0000 P:envMxdizC - /2
$03/DB20 85 E3 STA $E3    [$00:00E3] A:0002 X:0034 Y:0000 P:envMxdizC - - Store Magical Defense into A.
$03/DB22 68 PLA A:0002 X:0034 Y:0000 P:envMxdizC  - Pull A.
$03/DB23 E5 E3 SBC $E3    [$00:00E3] A:000B X:0034 Y:0000 P:envMxdizC - Subtract A from E3.
$03/DB25 8D 24 27 STA $2724  [$7E:2724] A:0009 X:0034 Y:0000 P:envMxdizC - Store A in Magical Defense.
$03/DB28 60 RTS A:0009 X:0034 Y:0000 P:envMxdizC - Return
------------------------------------------------------------------------------------------------------------------------------------------------

And there you have it! The way it works is that it reads the Element as assigned by the Stored Elemental of the spell and from there branches onto different paths. From there it will take an enemy stat and divide it by 1/4. I wanted to originally make calculations between the target's stats and your own. But I don't think its worth the trouble. To prevent overflow issues each branch has a set limit to how far it can be pushed down.









In the Patch you will see that Dark Knight Cecil starts with a Break Skill and 50 MP, he will gain more as you level. He'll learn the last one at Level 20.

In addition, Tellah can now use Swords and will learn the Break Skills when he relearns all of his spells on Mt. Ordeals.

Paladin Cecil will have a much slower time of obtaining the Break Skills again, learning the first one at 24 and the last one at 40.

Cecil and Tellah are the only two that will be able to use Break Skills in this patch. (of course as the patch is aimed at modders you can do whatever you want with it, heh.)


Everything has a cost, and the cost this time was the Sylph Formula. This means that Sylph's effect has been changed as well. The effect is now a more powerful Osmose (you weren't spending MP to use it anyhow...)

In addition because of the new Break Skills, five spells had to be replaced...

Hold - Seal Break (Lowers Target's Magic Defense by 1/4)
Armor - Power Break (Lowers Target's Attack by 1/4)
Safe - Speed Break (Increases Target's Speed Rating by 1/4, generally making it half as powerful as Slow)
Dispel/Curse - Armor Break (Lowers Target's Defense Multipliers by 1/2)
Sight - Mind Break (Lowers Target's Wisdom and Will by 1/4)


Not huge losses, I should hope. I do hope the new Battle Skills were worth it.

 :edit: 3/14/15 - I changed the routines of Armor Break and Mind Break. Armor Break now decreases an enemy's Defense Multiplier's by 2/3 to a minimum of 00. Mind Break now properly cuts Wisdom AND Will by 1/4. I was unaware enemy's used the Will stat beforehand.


« Last Edit: March 14, 2015, 12:13:35 PM by Grimoire LD »

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Geomancy is coming along great! I am finished with the coding, now I just need to test it all. I have to say I am very proud of myself on this one. It works Nearly identical (in function, not so much in skills) to how it works in FFIII!

Here's a few snapshots...









Have a good night everyone. This patch will be released tomorrow!

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
When I first thought of this project I cynically said "Geomancy? For what? The three types of cave that you visit endlessly through the game?" And though there are a Lot of caves, there's also a fair amount of other dungeon types with different backgrounds, so I decided to take advantage of it.

Geomancy has been flawlessly included into FFIV! This command replaces Peep and uses every last byte Peep had to offer to make it work. This command, as true to Geomancy in FFIII NES, reads the battle background and will use an ability in correspondence. Because of space limitations several backgrounds share the same Geomancy effect unfortunately. The majority of moves are enemy only spells, but this patch also adds in two new spells. CalmWind for the Field and AirBlade for Forests, Deserts, Beaches, and Mountains. Like FFIII however there is a 35% chance upon use that it will Backfire, self destructing the User and dealing the User's HP damage to the enemies.


Code: [Select]
$03/E153 20 8B 85 JSR $858B  [$03:858B] A:0003 X:0028 Y:0000 P:envMxdizc - Generate Random Number
$03/E156 C9 28 CMP #$28 A:0027 X:0000 Y:0000 P:envMxdizc - Is it 35 or less?
$03/E158 B0 04 BCS $04    [$E15E] A:0027 X:0000 Y:0000 P:eNvMxdizc - If not, branch to Field Check
$03/E15A A9 91 LDA #$91 A:0027 X:0000 Y:0000 P:eNvMxdizc - Load Backfire into A.
$03/E15C 80 49 BRA $49    [$E1A7] A:0091 X:0000 Y:0000 P:eNvMxdizc - Branch to End
-------------------------------------------------------------------------------------------------------------------------------
$03/E15E AD 02 18 LDA $1802  [$7E:1802] A:0039 X:0000 Y:0000 P:envMxdizC - Load battle background into A.
$03/E161 D0 04 BNE $04    [$E167] A:0000 X:0000 Y:0000 P:envMxdiZC - If not 00 branch to next Field Check. (Field)
$03/E163 A9 5F LDA #$5F A:0000 X:0000 Y:0000 P:envMxdiZC - Load CalmWind into A.
$03/E165 80 40 BRA $40    [$E1A7] A:005F X:0000 Y:0000 P:envMxdizC - Branch to End
--------------------------------------------------------------------------------------------------------------------------------
$03/E167 C9 04 CMP #$04 A:0001 X:0000 Y:0000 P:envMxdizC - Is it Forest, Mountain, or Indoors?
$03/E169 B0 04 BCS $04    [$E16F] A:0001 X:0000 Y:0000 P:eNvMxdizc - If not, branch to next Field Check.
$03/E16B A9 60 LDA #$60 A:0001 X:0000 Y:0000 P:eNvMxdizc - Load AirBlade into A.
$03/E16D 80 38 BRA $38    [$E1A7] A:0060 X:0000 Y:0000 P:envMxdizc - Branch to End.
---------------------------------------------------------------------------------------------------------------------------
$03/E16F C9 07 CMP #$07 A:0004 X:0000 Y:0000 P:envMxdiZC - Is it Cave with Rivers, Moon, or On Board Ship?
$03/E171 B0 04 BCS $04    [$E177] A:0004 X:0000 Y:0000 P:eNvMxdizc - If not, branch to next Field Check
$03/E173 A9 74 LDA #$74 A:0004 X:0000 Y:0000 P:eNvMxdizc - Load ColdMist into A.
$03/E175 80 30 BRA $30    [$E1A7] A:0074 X:0000 Y:0000 P:envMxdizc - Branch to End.
-------------------------------------------------------------------------------------------------------------------------------
$03/E177 C9 07 CMP #$07 A:0007 X:0000 Y:0000 P:envMxdiZC - Is it Watery Caves?
$03/E179 D0 04 BNE $04    [$E17F] A:0007 X:0000 Y:0000 P:envMxdiZC - If not, branch to next Field Check.
$03/E17B A9 9B LDA #$9B A:0007 X:0000 Y:0000 P:envMxdiZC - Load Big Wave into A.
$03/E17D 80 28 BRA $28    [$E1A7] A:009B X:0000 Y:0000 P:eNvMxdizC - Branch to End.
--------------------------------------------------------------------------------------------------------------------------------
$03/E17F C9 08 CMP #$08 A:0008 X:0000 Y:0000 P:envMxdizC - Is it Cave Background?
$03/E181 D0 04 BNE $04    [$E187] A:0008 X:0000 Y:0000 P:envMxdiZC - If not, branch to next Field Check.
$03/E183 A9 A1 LDA #$A1 A:0008 X:0000 Y:0000 P:envMxdiZC - Load (Enemy) Quake into A.
$03/E185 80 20 BRA $20    [$E1A7] A:00A1 X:0000 Y:0000 P:eNvMxdizC - Branch to End.
----------------------------------------------------------------------------------------------------------------------------------
$03/E187 C9 0B CMP #$0B A:0009 X:0000 Y:0000 P:envMxdizC - Is it Desert or Beach?
$03/E189 B0 02 BCS $02    [$E18D] A:0009 X:0000 Y:0000 P:eNvMxdizc - If not, branch to next Field Check.
$03/E18B 80 DE BRA $DE    [$E16B] A:0009 X:0000 Y:0000 P:eNvMxdizc - Loop back to AirBlade Routine.
----------------------------------------------------------------------------------------------------------------------------------
$03/E18D C9 0B CMP #$0B A:000B X:0000 Y:0000 P:envMxdiZC - Is it Sylph Cave/Feymarch?
$03/E18F D0 04 BNE $04    [$E195] A:000B X:0000 Y:0000 P:envMxdiZC - If not, branch to next Field Check.
$03/E191 A9 6F LDA #$6F A:000B X:0000 Y:0000 P:envMxdiZC - Load Breath into A.
$03/E193 80 12 BRA $12    [$E1A7] A:006F X:0000 Y:0000 P:envMxdizC - Branch to End.
--------------------------------------------------------------------------------------------------------------------------------------
$03/E195 C9 0D CMP #$0D A:000D X:0000 Y:0000 P:envMxdizC - Is it Technological Background, Lunar Caverns?
$03/E197 B0 04 BCS $04    [$E19D] A:000D X:0000 Y:0000 P:eNvMxdizc -If not,  branch to Random Choice.
$03/E199 A9 99 LDA #$99 A:000C X:0000 Y:0000 P:eNvMxdizc - Load Thunder into A.
$03/E19B 80 0A BRA $0A    [$E1A7] A:0099 X:0000 Y:0000 P:eNvMxdizc - Branch to End.
-----------------------------------------------------------------------------------------------------------------------------------------
$03/E19D A2 00 00 LDX #$0000 A:000D X:0000 Y:0000 P:envMxdiZC - Load 0000 into X
$03/E1A0 A9 0D LDA #$0D A:000D X:0000 Y:0000 P:envMxdiZC - Load 0D into A
$03/E1A2 20 79 83 JSR $8379  [$03:8379] A:000D X:0000 Y:0000 P:envMxdizC - Jump to RNG.
$03/E1A5 80 BA BRA $BA    [$E161] A:0001 X:0000 Y:0000 P:eNvMxdizc - Loop back to first Field Check.
------------------------------------------------------------------------------------------------------------------------------------------
$03/E1A7 8D D2 26 STA $26D2  [$7E:26D2] A:0091 X:0000 Y:0000 P:eNvMxdizc - Store A in Next Action to take
$03/E1AA 4C 46 CC JMP $CC46  [$03:CC46] A:0091 X:0000 Y:0000 P:eNvMxdizc - Jump to Magic Routine

I think this is probably one of my finest crafted routines, I used every bit of space meticulously and cannot think of a way to shorten it at all.

Now what you can expect from this patch... Rydia will be given the Geomancy skill in this patch in replacement of White Magic and will have it throughout the game. This was a difficult decision. I wanted to give Geomancy to a character with staying power, my initial thought was Rosa, but she's not with you in one or two Geomancy unique areas (Watery Caves comes to mind) my other thought was Cecil, but that just seemed a bit out of character for him, so in the end I went with Rydia. Aside from Rosa she is with Cecil for the most time, Kain has large gaps of being gone and Edge joins pretty late into the fray.





The battlefields that represent which effect will be used are as follows.

CalmWind (Puts all enemies to sleep) - Field
AirBlade (Deals Wind Elemental Damage) - Forests, Mountains, Indoors, Beach, Desert
ColdMist (Deals Low Ice Elemental Damage) - Caves with Rivers, Moon, On Board Ship
Big Wave (Deals 1/4 of target's life to target.) - Watery Caves
(Enemy) Quake (Deals High Damage)- Caves with Holes
Breath (Causes a multitude of stats effects) - Sylph Cave/Feymarch
Thunder  (Deals 1/4 of target's life to target. Lightning Elemental) - Towers and Giant
Random Choice - Lunar Caverns, Lunar Core, Underworld, Zeromus, Night Battle (in case a hacker wanted to give Edward Geo.)

And that is that! As always, please give me your thoughts on these.


JCE3000GT

  • Master of FF4
  • *
  • Posts: 1,429
  • Gender: Male
  • Vladof
    • View Profile
    • BlitzKrieg Innovations
Wow, that's pretty cool.  I like it. 

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Thanks JCE3000GT. Also are my patches, patching correctly? They're working fine for me obviously when I patch them to my roms, I just want to make sure that there's no issue with other v1.1's or anything like that.

I have an idea for the next project (FFIII Sing) but the problem with that is it would be going to Edward... Cecil already has his Break Skills, Sing couldn't be more unfitting for Kain if it tried to be, Rosa already has ArrowStorm and Hunt, and Rydia has Geomancy... Though FFIII's Sing uses a spell on the party which was dependent on the Harp Equipped. That is a neat idea and very easy to implement, but in the normal game you have Edward for maybe an hour or two tops and a scheme to include him in the final party would go a bit beyond a simple Command Upgrade Hack.

Should I just release the Patch with the three new Harps (Five spells) and allow Sing to work with the weapon chosen, even though Edward would only be around to collect one or two of them and let the hackers have their go at it? Or should I put some effort to include Edward into the party in a narrative sense so he can collect and use the other three harps?

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,285
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Depends, I'd think...
Would the spells be hard-coded into the command and entirely dependent on specific harps, or would they take spell data from the weapon itself, thereby allowing a hacker to create his/her own new harps that would work with the command?

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
That is difficult to say... It was planned to be a CMP/BNE fest, but your ideas sounds Much more appealing. The only issue is that then they would be able to cast it from the weapon itself... unless the visual byte is read instead.... even some weapons in the final game have some visuals attached to weapons without abilities any longer. This might even lend itself well to Magic Weapons that don't need to use their spell from the weapon!

This has really got me thinking Chillyfeez, thank you for simple, but poignant advice. I think I might want to try it your way. With just that I really might be able to exchange the normal Sing formula for a much smaller formula like Boast or Cry. (Load Weapon Visual), (Store it in Next Action to Take) and you're done. And this will free up the fairly large Sing formula for something on a grander scale.

 :edit: Or I could be Smart and realize that Spells at 0 Power do Not Activate! Which means you can tie any spell to any weapon, if it has 0 power it cannot activate. Thank you very much Square! This was some pretty good foresight on your part.

That makes this much simpler.

« Last Edit: January 11, 2014, 11:09:57 PM by Grimoire LD »