You're browsing the GameFAQs Message Boards as a guest. Sign Up for free (or Log In if you already have an account) to be able to post messages, change how messages are displayed, and view media in posts.
  1. Boards
  2. Final Fantasy
  3. Thanks for Making Final Fantasy Restored!

User Info: Armagon3650

Armagon3650
3 months ago#101
Armagon3650 posted...
D0EF - until then keep looping.


That loop branch is off by one byte sorry it should have been D0F0. The msg stuff for the "Resurrection Routine" still needs a little polishing I'll get around to it eventually.

User Info: Armagon3650

Armagon3650
3 months ago#102
What a pain in the....It wasn't easy to find a common pointer index from 2 separate banks. Hopefully I pulled it off. Anyway I had to make an adjustment to set the pointer index in an identical location from bank 0C.

I replaced all the ASL ($0A) with a subroutine that does it. stored the index in tmp 10. this is what it looks like now.

3151C: 20 97 F8 85
3151D: 10 (EA) I moved the NOP to the end of the routine 31604 (optional).

Ok so here is the "Prayer Spell" routine (designed to go into fixed bank for use in and out of battle):

A510 - Load Chr Index
AA - Put in X
6906 - add 6 this will be our loop counter.
8511 - store it in tmp $11
@_loop
BD2863 - load max mp level 1
DD2063 - Cmp to cur mp lvl 1
B003 - If equal skip it
FE2063 - otherwise add 1 mp to this level
E8 - shift everything up by 1
E411 - Cmp our loop counter to signify when done.
D0F0 - until then keep looping.
60 - and exit

I haven't put it in or tested it yet. But it should work. I sure spent enough time trying to make sure it was right. You don't have to put it in the fixed bank as long as you get a usable char index $(00, 40, 80, C0) to use.

User Info: Armagon3650

Armagon3650
3 months ago#103
MAGIC: INT MODIFIER
33694:$(84B6)
⦁AE8F6C - LDX - Load Magic =00
⦁D005 - BNE - If not magic skip
⦁A900 - LDA - Load $00
⦁20B8BE - JSR - (33EC8) Play SFX
⦁AD896C - LDA - Load Btl Attacker(0-3)
⦁297F - AND - Mask out high (N) bit (set for players I think).
⦁AE8F6C - LDX - Load Magic =00
⦁202DA3 - JSR - (3233D) Step and cast magic
⦁AD896C - LDA - Load Btl Attacker(0-3)
⦁20EBB5 - JSR - (335FB) Prep Entity Pointer index: [IB stat pointer (stored in Zero Page 90,91) $6800 +$12*Char position index(0-3)] [OB stat pointer (stored in zero page 92,93) $6100 + $40*Char position index(0-3)]
⦁A900 - LDA - Load $00
⦁AE8F6C - LDX - Load Magic =00
⦁D004 - BNE - If not magic skip and save $00 in 6873
⦁A012 - LDY - If magic load Int index
⦁B192 - LDA,Y - Get this char INT
⦁8D7368 - STA - Store it in 6873
⦁60 - RTS - And exit

Not gonna swear this is completely 100% accurate translation, but IT IS where the Int is loaded and stored for use by magic. I found it digging through magic routines and Anomie's notes over and over. I think I found the routine that utilizes it too, but its hard to decipher. With this and that routine you can implement it into new spells.
(edited 3 months ago)

User Info: Armagon3650

Armagon3650
3 months ago#104
INT MODIFIER APPLICATION TO EFFECTIVITY

I'm not even gonna bother wasting space trying to translate the application, but I will give a shorthand explanation. There must be a similar, but simpler routine, for Spell Accuracy at least. I'll give this shorthand explanation, but unless someone actually poses a question or interest, I'm not gonna delve further. I am keeping notes on the translations though.

Ok so there are 2 Applications of the effectivity modifier:
1. Spell effectivity + (Random Spell Effectivity-(Chr Int/4) = result
basically gives a result of Spell Effectivty and Chr INT/4 up to Spell Effectivity *2, adding to the minimum up to the original max.
this is technically done automatically by the routine

2. The other application uses the routine above, but it also increases the actual Spell Effectivity by using X as a multiplier to character intelligence.
New Spell Effectivity= Spell Effectivity + Chr INT(X)/32(capping at $FF), add this equation into the routine above,(replacing the "normal Spell Effectivity") to produce the result.
The end result is rather hard to simplify. The minimum effect is increased by Chr INT(X)/32,
The Double is increased by that same value *2. So the ratio of "random" is increased by the same amount.

BTW someone plz lemme know when Astral posts a thread for Rebalanced, with a link. I'm looking forward to it, and I have no idea how to navigate the forums.
(edited 3 months ago)

User Info: Armagon3650

Armagon3650
3 months ago#105
I'm gonna be working on the magic routines for awhile no point offsetting around code I'm not gonna be using. I think I can shift the battle routines so that if your target is dead it will simply skip your turn. Could be useful for not wasting Spell slots or stepping forward and swinging aimlessly at the air?

User Info: StyrixA

StyrixA
3 months ago#106
My theory on BB/Master Magic Defense issue. They wanted the Master to gain a Magic Defense bonus, but in play testing, they realized that it meant you ended up with a better overall character if you rushed class change. So they gave the BB the bonus instead, but this made switching to Master a downgrade.

My proposed solution: Give it a normal rate, just like the others, like +3, with a one time +20 boost at class change. I'm not sure how doable that is in the programing.

User Info: StyrixA

StyrixA
3 months ago#107
I'm about to try Rebalanced. Does anyone have comments on the biggest felt differences between that and Restored?

User Info: Armagon3650

Armagon3650
3 months ago#108
I tried Rebalanced I wasn't impressed. I wanna play the one Astral is working on. The Rebalanced I played still had a few bugs, but there were a few changes.

In my rewriting of the battle code I came across something related to the Surprised/First Strike calculations. It isn't technically a bug, since its not possible to exceed #255 adding Agility and Luck under normal circumstances. It might be useful for hackers to note:

313F3: 4A LSR: This kills the High Byte (Carry) from adding Agility + Luck
Ex: A total of #270 (Carry+0000 1110) Actually gives you a result of #01 after dividing by 8 (0000 0001)
Simple fix is to replace 313F3: 4A with 6A which divides the high byte (Carry) by 8 in the routine. Instead of dropping #256.

EDIT: Also I should point out that the "Prayer Spell" is currently insufficient. I haven't given it any pointers or what not yet anyway. But for anyone attempting to use it, It can't use tmp 10 folder in the magic menu to save the Char index. Too many things use the tmp 10 zero page, it gets overwritten. I'll have to find another way to implement it when I get back around to the Spells.
(edited 3 months ago)

User Info: Zzonkmiles

Zzonkmiles
3 months ago#109
Armagon3650 posted...
I tried Rebalanced I wasn't impressed. I wanna play the one Astral is working on. The Rebalanced I played still had a few bugs

Best of luck to you with your project.
PSN/YT: Zzonkmiles (Don't listen to Ondore's lies!)
Download Final Fantasy Zz Hard-Type at http://www.romhacking.net/hacks/1278/

User Info: Armagon3650

Armagon3650
3 months ago#110
Thx Zzonk. Idk how it got to this point. It all started with wanting to change just one value: BB/Master Magic Defense.

A month ago I didn't even know bytes and bits were, and now, its become a full scale assault on the code.
  1. Boards
  2. Final Fantasy
  3. Thanks for Making Final Fantasy Restored!