øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=383;area=showposts;start=75e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexd82c-3.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;u=383e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexd82c-3.html.zx„¿h^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ .¹áOKtext/htmlISO-8859-1gzip@øÕ¹áÿÿÿÿÿÿÿÿWed, 11 Mar 2020 10:54:21 GMT0ó°° ®0®P®€§²ð®ƒ¿h^ÿÿÿÿÿÿÿÿt1¹á Show Posts - Kea

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 - Kea

Pages: « 1 2 3 4 5 6 7 »
76
(bestiary talk)

Might not be a bad idea, I can see why they did it, but it is very misleading.
It's done; it turned out to be another one-byte fix. I also fixed the save menu text error - that one was a find/replace mistake from when I was formatting the game script for reinsertion.

Right, Magic Evade is important, to keep in mind. I suppose it was just randomness. I think the -3 Agility is a good idea, but in reality I didn't notice too much of a difference in attack between the two.
I might take the Hand Axe to -5 Agility, then. Lowering Agility will also indirectly reduce its damage later since you won't have 16 Agility for an additional attack multiplier; makes it not so powerful by Mt. Hobs. Of course I would appreciate it if you ran through the updated Kaipo/Waterway section, but feel like you're obliged to do it; ROM hacking is a hobby in the end after all.

I actually hacked such a thing for default FFIV as well, tying it to an unused skill and giving most monsters four possible random actions to perform, even bosses. It did have limits though. It could only be single target.

But... then I got a bit crazy and worked myself into a corner with Job Classes and 90 new spells I put a lot of work on my plate and I couldn't actually complete that project. I could easily salvage the AI part, since it was meant to work in tandem with Chillyfeez's Enemy Leveling patch.

Yeah, under my system all three possibilities must share the same targeting. I ought to make a variant of this command that has the monster pick between three spots in the script to jump to.

I've seen/played some of your Combat Boost mod, I thought it was quite good. The new character commands were especially impressive and fun to play around with. It's too bad you got burned out on it; I can sympathize with giving yourself too much to handle.

77
I'd finished everything up until Antlion but had a hard time thinking of a good script for him...now I've got a good idea.

I've created a new AI command that lets a monster pick between one of three spells (+basic physical) randomly:
Code: [Select]
@New AI command that randomly selects one of three spells, then casts it
@Exceptions are IDs 0xC0 and 0xC1, which are linked to the two types of physical attacks instead
.thumb
push {r4,r5,r14}
mov r4,r0
mov r5,r1 @r5 = command parameter offset
mov r0,#0x3 @Picking one of three commands
ldr r2,RandomNum        @Generates a random number between 0 and 2
bl Longcall
ldrb r1,[r5,r0] @Loading spell ID to use
cmp r1,#0xC0 @(spell IDs 0xC0 and 0xC1 are for Red and White Fangs - no loss)
bne Physical_2_check
ldr r2,Physical_1
b Branch
Physical_2_check:
cmp r1,#0xC1
bne Spell
ldr r2,Physical_2
b Branch
Spell:
ldr r2,SpellCast
Branch:
bl Longcall
cmp r0,#0x0
beq Jump_false @Proceed to the next command
Jump_true:
mov r0,#0x0
strb r0,[r4,#0x19] @Not a consecutive command
b Store_jump_bit
Jump_false:
strb r0,[r4,#0x19] @The spell cast has already specified where to go next
mov r0,#0x1
Store_jump_bit:
strb r0,[r4,#0x1A]
pop {r4,r5}
pop {r0}
bx r0

.align 2
RandomNum:
.long 0x0805AF55
SpellCast:
.long 0x080863DD
Physical_1:
.long 0x0808642D
Physical_2:
.long 0x08086409
Longcall:
bx r2

These two things might be related.  :happy:

78
Ah? I had assumed that because it was second on the list it was the SwordRat's uncommon drop? Is that not the case then? Good to know Gatlingers will have a better chance to drop it. I did pick up a Goblin Summon through all of that grinding though so I guess it wasn't a complete waste of time.

Did you increase the power of the Rod's magic attack or did this version do so? It dealt 60 damage to a normal foe!
The ingame bestiary in this version condenses multiple drops of the same item into one entry; the Sword Rat's actual drop list is Gold Needle x3/Steel Quill. That is a little confusing, so I might try to remove that behaviour.

The Rod's magic works a little differently than in vanilla; the spell it casts has only 3 base power, but the Rod itself has a very high fixed multiplier, so it's supposed to be good against enemies with low magic defence. That said, it seems like FF4a multiplies a spell's power by 4 before subtracting Magic Defence, so it might be a bit overtuned; I'll reduce it to 2 (8) base power.

Everything here seems to have 11 Attack which is normal as far as FFIV is concerned but that x2 multiplier for them does not appear to be cutting it.

I like the chance of a Polymorph Rod from the Gigantoads, nice touch!

Alright! Now that's a nice change of pace. The Toadgre's can cast Blizzara which is high damage for this point, but survivable and Toad (which they did cast originally anyhow) can be quite deadly. Well conceived.

Toadgre's I feel have the appropriate strength, if not a little less strength than this area should provide. I wonder if that Lilith's Kiss is a 1/8 item or much lower...
I could have sworn I increased everything's Attack in the desert and Underground Waterway. I must have missed it then; they will definitely become more threatening than they used to be. Toadgres could maybe use some more attack so that they're more of a threat earlier in their fights - they only use Blizzara when they're alone currently.

The faster Poison status isn't in yet (nor is the more expensive Poison spell). Echo Herbs aren't sold in shops yet which is an oversight on my part; I'll add some Echo Herbs to Kaipo's shop in the next version.

The Hand Axe is a legitimate thrown weapon, nice touch. Though I'm not sure giving the Dark Knight even more survivability with background usability as being such a great idea. I guess I'll see.

Did they change the way Magic Items worked in FF4A?  I noticed that Tellah seems to be dealing more damage with the Rod than Rydia was doing.
The Hand Axe reduces your Agility by 3 and only has 70% accuracy. The concept for the Hand Axe was that you'd only use it when the Shadow Blade couldn't do anything or when staying in the front row was too dangerous for Cecil. Maybe the current penalties aren't enough of a tradeoff, though...

Spells cast from items still have a fixed spell multiplier. It was probably just random variance, some monsters have Magic Evade now.

79
You're telling me that they simplified the Random Levelup condition into a Single Byte?! That is infuriating! FFIV SNES jumps through several hoops and I still don't fully understand it! Does FF4A have a better Level up system all around? As in no more TNL and all of that bizarre activity?

It's still got 16 bytes for every level a character can reach, but there's no such thing as TNL; each level in the ROM is defined by the total amount of experience needed to reach it, and a character's current EXP is stored in RAM as their absolute amount.

Glad to hear you're enjoying the mod! That's a strange glitch with the save menu...probably an arcane result of the text table repointing. I'll make sure to fix that.

Don't be too fussed about the Steel Quill; it's a good non-elemental weapon but doesn't outclass the Shadow Blade, and Gatlingers will have much better chances of dropping it when I edit their data. The general pattern for most rare drops is that they'll be available as a very rare drop before the area they're tuned towards, and then some time later as a rare or uncommon drop, or as a treasure. Some of them will just be hard to find, though!

I wanted to make the early enemies at least potentially dangerous; Helldivers won't wipe you if you know what they're doing, but they're a worthy foe now. Sword Rats are the same idea; they're there to make the early portion of the game a bit more thoughtful than hitting Attack.

The Dark Sword change lends some utility to Cecil, since he was otherwise pretty straightforward in how he was used. Dark Knights being adept at debilitating their opponents also helps contrast the class with the Paladin.

80
I've updated the notes download in the first post; it includes more info on stat calculation, status magic, and level calculations. One interesting thing is randomized levels; the level at which to start using random levelups is defined by a single byte. You could have everybody use random levels from the moment they join if you wanted.

Poison status is a bit of a joke in FF4...it takes an age for it to do anything, and even if it didn't everything you might want to use it on is immune to it anyway. It's more notable for being able to block other statuses than for anything it does on its own. So I'm changing the formula that determines how much time passes between Poison damage hits. The old formula was this:

Code: [Select]
min( [(A+20)*Agl factor]/16 ),255Where A is Agility for players, and (Level+10) for monsters. The poison timer for a monster, assuming its Agility factor is normal, is at least 20 and as many as 119 ticks. Since bosses start at Level 10 and only go up from there, poison status is pretty useless against them. The new formula is this:

Code: [Select]
[(A/4)+15]*Agl factor/16With this formula the Poison timer is between 17-42 ticks for monsters, and 15-39 ticks for players. Much more useful, and much more deadly when used against you.

The poison spell itself will be useful beyond setting the status, as well - it's Dark-elemental now, and a little more powerful than the basic Fire/Ice/Lightning magic, at the cost of being more MP-intensive and inaccurate.

I'm also toying with something a little more ambitious: making Agility static for all characters. All characters, with some exceptions (eg Tellah, Rydia's first levels), would never increase Agility on level up, though their speed relative to each other would be the same as normal. The only way to modify a character's Agility would be through equipment choices -  Agility-modifying equipment would be more common of course. This would mean that gaining levels wouldn't help you outspeed a boss, and their Agility scores could be more finely tuned. It could be an interesting twist on the usual mechanics.

Since some damage formulas rely on Agility, they'd have to be changed to account for it being a static stat starting in the 30-70s range. Attack Multipliers might be calculated like this:

Atk M = 1 + (Str*Agl)/256

Which gives a very similar progression as the original game; Cecil gains his third multiplier at Level 15-17 under both systems.

81
It is, yes. I can't think of any reason to use the 1.0 version, given the option.

If you want to give it a try, here's a UPS patch and readme. Give me your thoughts if you give it a try!

82
18x2 Attack is a little low, but Zombies have Dark-element physicals now, so Cecil ends up taking between 20-60 damage from each one. I also adjusted the Back Row modifier: instead of doubling defence, it halves the attacker's Attack Multiplier (to a minimum of 1), so the mages take about 20-32 damage even in the back row. I guess it couldn't hurt to bump it up a bit. Basic zombies aren't really supposed to be offensive threats anyway, the later types will be much nastier.

Now that I've changed the back row mechanics and added the new items I have everything up to Octomammoth done; Octo himself has a new AI routine designed to make him a threat for the entire course of his fight instead of being a pushover once you hit him a few times. I might release a test patch if there's interest.

83
It's worth noting that the B1 conditional isn't generally used to check if a monster was damaged; usually B6 is used:

Code: [Select]
$B6 XXXX YYYY
-Checks +$44 in the monster's battle data; ANDS with XXXX
-0x0001 = hit by Attack
-0x0002 = Hit by Magic (black?)
-0x0040 = Hit by Jump?
-0x004F = Hit by anything
-0x0100 = HP damage?
-If check passes, move to YYYY in script

In related news, I had thought I'd cleared up every limit on text indices, but when I tested chests this happened:


Turns out that at the start of the text pointer table, there's a halfword which defines the maximum text index; indexes past that don't read end codes properly when used in dialogue, leading to what you see above. But now I've fixed it, and can do things like this:

Gotta say, it's a good feeling to finally have this working perfectly. :childish:

84
Hmm, that is strange...  so the table itself now decides the chance to drop, rather than the drop byte assigned to monsters in default FFIV? Also they all have their own unique AI Indexes? But to my knowledge no enemy really deviates from its basic AI index as laid down in the original FFIV, right? (except for new enemies, of course)

The overall AI of monsters is the same (as far as I know), but the AI codes themselves are different; there's a code for a generalized status check for instance:

Code: [Select]
$B1 TT CCCC PPPP
-If has any bits set within CC CC of type TT, move to point PPPP in AI script
-Usually used for Confusion routines (enemies use normal battle scripts to act when Confused)
-Also used for Egged monsters - Egg status does not automatically set script
Values for TT:
-0x0: Check normal status
-0x1: Check special status (Barrier,Boss,Reflect,etc)
-0x2: Check turn status bits (was attacked, immune to damage)

85
Each monster has its own drop table in FF4A, as well as its own AI index. So you have a lot of monsters with a 0% chance to drop a Potion,Potion,Potion or Potion. Each monster's drop table has a byte listing the probability of dropping any item; by default it only allows four numbers for drop chance (0%,5%,25%, and 100%), so I've had to change the related code to allow additional possibilities.

86
Ha, that's far from the worst thing TOSE has done just in terms of hardcoding item properties. In the US and JP 1.0 versions, all items over a certain ID were considered armor for the purposes of elemental/racial properties. A weapon like Loki's Lute, which was supposed to be effective against all creature types, instead protected the user against all creature types. It's still hardcoded in 1.1, just in a less broken way.   :sad:

I've laid down the framework for allowing a practically unlimited number of items in the game instead of 325. That involved repointing a lot of tables, but most significantly expanding the text table to record the names and descriptions of the new items I plan to add. I'm very thankful to Dragonsbretheren's resources and tutorial on this subject; I might have resorted to using a hex editor otherwise.  :scared:

That all means I won't have to consider cannibalizing the Lunar Ruins equipment. Monster drops and equipment selection in general should be more interesting in my planned hack; I plan to make the majority of monsters drop at least one interesting item.

87
While investigating how to break the 324 item limit, I think I've found the final piece to the weapon animation puzzle - namely, what swing animations a weapon uses. In general, the animation applied to a weapon's sprite is determined by the weapon's type in item data; that means, for instance, that any weapon with the Boomerang icon (type 0xB) will use the throwing animation.

The exception is axes; some axes use a throwing animation, but most don't. Animations for axes are handled by this code:

Code: [Select]
080ABD8E 0608     lsl     r0,r1,#0x18 @r0 = weapon type
080ABD90 1604     asr     r4,r0,#0x18
080ABD92 2C0C     cmp     r4,#0xC    @0xC = Axe weapon type
080ABD94 D11C     bne     #0x80ABDD0 @If not an axe, skip the following checks
080ABD96 8831     ldrh    r1,[r6]    @Loading attacker's weapon's Item ID
080ABD98 293A     cmp     r1,#0x3A    @ID #0x3A = Ogrekiller
080ABD9A D007     beq     #0x80ABDAC @If weapon is Ogrekiller, do not use
080ABD9C 2096     mov     r0,#0x96   
080ABD9E 0040     lsl     r0,r0,#0x1 @ID #0x12C = Gigant Axe
080ABDA0 4281     cmp     r1,r0     
080ABDA2 D003     beq     #0x80ABDAC
080ABDA4 2947     cmp     r1,#0x47 @ID #0x47 = Poison Axe
080ABDA6 D001     beq     #0x80ABDAC
080ABDA8 2948     cmp     r1,#0x48    @ID #0x48 = Rune Axe
080ABDAA D109     bne     #0x80ABDC0
NoThrow: @If weapon's Item ID was one of the above...
080ABDAC 4A03     ldr     r2,=#0x8FEC
080ABDAE 18A8     add     r0,r5,r2   
080ABDB0 6801     ldr     r1,[r0]   
080ABDB2 2205     mov     r2,#0x5 @Use the Broadsword animation
080ABDB4 4311     orr     r1,r2     
080ABDB6 6001     str     r1,[r0]   
080ABDB8 E004     b       #0x80ABDC4
080ABDBA 0000     .short 0x0000
080ABDBC 8FEC     .long 0x00008FEC
080ABDBE 0000
Throw:
080ABDC0 4322     orr     r2,r4      @If weapon ID was none of the above...
080ABDC2 603A     str     r2,[r7]    @Set animation to weapon's own (ie 0xC)
080ABDC4 4B01     ldr     r3,=#0x8FE8
080ABDC6 18E8     add     r0,r5,r3   
080ABDC8 8801     ldrh    r1,[r0] @Proceed to loading from weapon graphics table

In practice, the only axes that use the throwing animation are the Dwarf Axe and the unused Hand Axe. Why TOSE felt the need to hardcode this is a mystery to me...

88
That's right - sound effects and animations are completely separate for weapons. I'm not sure if the same applies to spells, but at first glance they seem to have animation and sound tied together.

The advance version is generally more modular than its SNES counterpart; having eight megabytes of ROM instead of one (and that single MB divided into banks) let the devs be less frugal with their space. Not that the original with its enormous level-up tables was a masterpiece of efficient design itself...

89
Final Fantasy IV Research & Development / Re: Aim and Regen Commands
« on: July 19, 2015, 12:50:56 AM »
Oh, one thing I missed regarding Aim - it also sets your target's Evade to 0%. That's important since hit and evade calculations are separate.

90
I'll hold off on that for now...I managed to find out where the sound effects for weapons are, they're in a completely different (and redundant...) table.

EDIT: Specifically the table at 0xF96CF; each byte represents the attacking sound effect of the weapon of the corresponding ID. Considering the animation table has a free byte by default, one wonders why they didn't put the sound identifier there.

One funny thing you can do is, since music and sound effects are on the same list, is have weapons that play music or cut the music entirely when you attack with them. The Bell of Silence could live up to its name!

Pages: « 1 2 3 4 5 6 7 »