øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=278;area=showposts;start=600e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index5c86.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;u=278e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index5c86.html.zxËåg^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ0P.2>OKtext/htmlISO-8859-1gzip8:Ö2>ÿÿÿÿÿÿÿÿTue, 10 Mar 2020 19:25:22 GMT0ó°° ®0®P®€§²ð®Êåg^ÿÿÿÿÿÿÿÿ-2> Show Posts - chillyfeez

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

601
Final Fantasy IV Research & Development / Re: Avalanche's Project: FF2
« on: February 08, 2015, 09:57:53 PM »
Namingway also uses MVP to transfer the new name into the place in RAM where characters' names are stored.

602
Just posted this on the Project II thread on RHDN, but it deserves to be on slick as well...

All offsets are ROM with header.

How to Turn "Call" into a Five Characer Word in the Magic Menu:
1) Open ROM with a hex editor
2) Jump to $00/B1A3 (this is the pointer into the list of magic names to "Call")
3) Change the two bytes at B1A3 from "FC B1" to "0B B2" (This will point to the first of the three blank spaces instead)
4) Jump to $00/B40C
5) Change it from "00" to "01" (Skipping this step will cause your new label to overwrite Child Rydia's "White" label)
6) Fill in your five character label beginning at B40D

That'll do it.

603
Final Fantasy IV Research & Development / Re: Command Stances
« on: February 08, 2015, 08:47:59 PM »
been a while since I've gotten that far in the game. do they really do that? I'd have thought they would have skipped that. That is kind of silly.

604
Final Fantasy IV Research & Development / Re: Avalanche's Project: FF2
« on: February 08, 2015, 08:44:24 PM »
So this is an html file that when loaded into a browser acts as a SNES ROM (plus emulator, I guess)?
I don't think I've ever seen exactly that done before. Is this your own idea? Have you done this with other games?
anyway, cool stuff.

605
Final Fantasy IV Research & Development / Re: Command Stances
« on: February 08, 2015, 08:36:13 PM »
Not without some custom code, LordGarmonde. The same routine will set the stance for everyone in the party.
I also didn't research that routine, so I don't exacly know how to change the victory stance.

606
Final Fantasy IV Research & Development / Command Stances
« on: February 08, 2015, 02:52:27 PM »
Alright, research on Command Stances and Poses complete!
As stated before, each stance is composed of 4 poses. The game will cycle through these four poses as long as the stance is held. The duration the stance is held depends, of course, on the purpose of the stance. So charging stance for Black magic if you're casting Meteo is a very long time, whereas for physical commands it can be very quick.

The table of Poses assigned to each stance is located (again, as stated previously) at $09/FD85 (ROM with header). Each entry is four bytes (one for each pose in the stance). The breakdown of what each value does is as follows:
Code: [Select]
00:Normal
01:Parry
02:Spread legs (as 1/2 of walking)
03:Crouch
04:Raise right arm (as 1/2 of right handed attack)
05:Extend left arm (as 1/2 of attack)
06:Raise left arm (as 1/2 of Left handed attack)
07:Take physical damage
08:Arms up (as cheering, etc)
09:Lay down (swoon)
0A:Chanting 1
0B:Chanting 2
0C-1D:glitchy stuff
1E:Disappear
1F-23:glitchy stuff
24:Special pose
25 and above:glitchy stuff

Accessing this table of poses are characters' stances, assigned both for charging and performing actions. By default, the game only uses stances 01-0F. Most other values call up data that is likely used for other things:
Code: [Select]
01:Resting
02:parry
03:Walking
04:crouching
05:right hand striking
06:left hand striking
07:getting hit
08:cheering
09:swoon
0a:chanting
0b:Charging (Chanting without motion)
0c:casting (raising arms, or whatever, no orbs)
od:raising left hand like to attack, but no motion
0e:"special" stance
0f:same
10:Resting
11-54:glitchy stuff, probably used for entirely separate purpose
55-5E:All FFs, presumably free to edit at will
5F and above: glitchy stuff, probably used for other purposes

You'll notice, though, that 55 through 5E ($09/FED5 through $09/FEFC in the table mentioned above) are empty and can be used to create custom stances. Also, stances 0E and 0F are both the special pose, and I don't think the game ever uses 0E.

Now, almost every command (except Twin) has a charging stance, and most commands have an action stance. Here is a chart that breaks down the offset of each stance for each command:
Code: [Select]
Command Charge Stance Offeset Default Action Stance Offset Default Notes
----- ------ -- ------ -- -----
Fight 0B7E60 02 * * Depends on weapon and, sometimes, handedness
Item 0B7E61 02 02C7B3 0C Same Action stance as Salve
White 0B7E62 0A 02C6D4 0C
Black 0B7E63 0A 02C6E1 0C Same Action stance as Recall, Ninja
Call 0B7E64 0A 02C71A 0F
DWave 0B7E65 0B 02C85F 0F
Jump 0B7E66 02 02C628/02C633/02C4CD 04/0C/0F Crouch/Jump/Land
Recall 0B7E67 02 02C6E1 0C Same Action stance as Black, Ninja
Sing 0B7E68 02 02C6C7 0B
Hide 0B7E69 02 02C5CB 0F
Salve 0B7E6A 02 02C7B3 0C Same Action Stance as Item
Pray 0B7E6B 0B 02C7F3 0C Same Action stance as Cover, Sneak
Aim 0B7E6C 02 02C88A/* 0F/* Uses Fight's Action stance after the "Aim" stance
Charge OB7E6D 0B N/A N/A Loads Fight into "Next Action" without changing graphic
Kick 0B7E6E 02 02C31D 0F
Gird 0B7E6F 02 N/A N/A No Action stance set
Twin N/A (00) N/A N/A Special Routine that sets "Black" for both twins
Boast 0B7E71 02 02C7AB 0F Same Action stance as Cry, Peep, SWave
Cry 0B7E72 02 02C7AB 0F Same Action stance as Boast, Peep, SWave
Cover 0B7E73 02 02C7F3 0C Same Action stance as Pray, Sneak
Peep 0B7E74 0B 02C7AB 0F Same Action stance as Boast, Cry, SWave
Crash 0B7E75 02 N/A N/A Crash occurs before Action stance is set
Dart 0B7E76 02 02C14C 0F
Sneak 0B7E77 02 02C7F3 0C Same Action stance as Pray, Cover
Ninja 0B7E78 0A 02C6E1 0C Same Action stance as Black, Recall
SWave 0B7E79 0B 02C7AB 0F Same Action stance as Boast, Cry, Peep
Change 0B7E7A 08 N/A N/A No Action stance set
Parry 0B7E7B 02 02C2A8 02
Show 0B7E7C 01 02c583 03 03 is "Walking," There is no other action stance here
Off 0B7E7D 02 N/A N/A No Action stance set

Note that some commands share the same action stance, so changing one will change the others as well.
There are too many variables that affect the action stance for Fight, so I didn't go into it at all. I don't imagine you'd really want to change any of those anyway - the results would look wrong.

I think that covers everything I was going to do with this topic. Does this all make sense?

607
Final Fantasy IV Research & Development / Re: Damage + Sap = Can't absorb??
« on: February 08, 2015, 02:17:21 PM »
I'm not really sure what you mean by a "bona fide" assembler. I used to use a program called "SNES Professional ASM Development Kit," but I eventually got to the point where doing all of the Assembly by hand was quicker. The program does a good job of turning your commands into code, but it doesn't keep track of processor status, so it pretty much always assumes your Accumulator is 8 bits and your x and y registers are 16, which makes it mess things up pretty regularly.
Anyway, I've done so much assembly by hand now that I'm pretty fast with it (I generally keep this open in the background so I can switch to it if I forget an opcode).
If you know of a program that would work better than the one I've tried, I'd be thrilled to give it a whirl.

608
Final Fantasy IV Research & Development / Re: Graphics info
« on: February 08, 2015, 09:40:31 AM »
If you're on the moon when the battle happens, then the monster is on the moon. The game actually looks at the current world identifier at (I think) 7E:1700 in RAM. It's much more simplistic than most people expect. That's why moon monsters automatically fight differently if you put them on earth.

609
That's cool. Sorry, I misunderstood. I thought you were looking for a way to actually keep those trap door battles.
I hate them too, but mostly because one character dying is practically unavoidable. I think I'd be OK with them if their battle script was different.

610
I'm not sure if you fully caught what I was suggesting...
But I also didn't think it through thoroughly, so it may be a moot point.
... Or maybe not...

What I was thinking was, where you would normally put the trap door NPC, you put an event trigger instead (fight with trap door). Then, assuming victory, the tile just beyond that would be the warp point. You could use the same event call for every instance of this, except the trap door would re-arm every time.
This wouldn't be a huge problem, though in theory...

Ok, here's what I'm thinking:
Let's say there's normally a trap door NPC at coordinates 15,5.
That means that the door is also at 15,5.
You'd have to make sure the door for this tileset is a trigger (I'm not looking, so I don't know). The trigger built into the door would be the event call for the trap door fight (that would be the only component of the event).
Then, at 15,4 there would be another trigger point that would function as the warp to the next room. In the next room, instead of a "return" tile, you'd have a warp tile to exit. This warp would warp you to 15,6 so that you don't have to fight the same trap door again if you don't want to (but it would be there again if you did choose to reenter that room).
In theory, this would all work. You'd have to eliminate practically all return tiles in the dungeon because of stack issues this would cause otherwise. Some players might object to regenerating trap doors, but it would be consistent with the challenge level of Combat Boost, and a second fight with each would be entirely elective. By doing it this way, you could reuse the same event call for every trap door.
Does that make sense? Sorry, I was kind of thinking it out as I typed... But I think it would work.

611
What about making the door tile an event trigger instead of a warp, then put an invisible warp in the next tile beyond?
The same event call could be used multiple times for the trap door battle, then the proper warp follows if the battle is won.

612
Final Fantasy IV Research & Development / Re: Throw's Special Graphic
« on: February 06, 2015, 07:33:18 AM »
Expect a new component to the Command editor in the near future!  :wink:
If you wanna hold off for a little while on that, Pinkpuff, I'll probably explore each command to find the location for the performance stance for each. I'll make a little chart and post it here. I'll also try out all the different position possibilities, since so far I only have listed about 1/16 of them.

613
Final Fantasy IV Research & Development / Re: Throw's Special Graphic
« on: February 06, 2015, 01:58:40 AM »
I've looked into this a bit more now. It gets pretty cool here.
Those single byte values (in my previous post) point into a table beginning at $09/FB85. The entries here are four bytes long and each represents a character's position. Cycling through these (up to) four positions encompasses what I've been calling a "stance." There are ten completely unused stances (data read all FFs). They're stances 55 through 5E. So you can make several custom stances without messing anything up!
To change stance 55, jump to $09/FCD5 and change those four bytes to whatever you want. Here's a key:
Code: [Select]
00: resting
01: parry
02: spread legs
03: crouch
04: raise right arm
05: extend left arm
06: raise left arm
07: getting hit
08: (cheer) arms up
09: swoon
0a: chanting 1
0b: chanting 2
0c: single tile glitch
0d-23: more glitches? (Haven't tested all)
24: special stance
25+: (untested)

So if you make the four bytes at 9FCD5 read
Code: [Select]
06 04 02 08Then change B7E60 to 55, then your characters will spend their time waiting to attack by raising the left arm, raising the right arm, spreading their legs and cheering. Obviously that would be really silly, but it's a good way to observe what can be done here!

OK, I'm exhausted. Bed time. :sleep:

614
Final Fantasy IV Research & Development / Re: Enemy Special/Magic Attacks
« on: February 05, 2015, 09:45:20 PM »
Umm... Target's max HP will be in 2709. I don't know where you got 2894 from...
Max HP is two bytes, so that's not a problem, but your fraction there would be 1/max HP, which would be zero for all intents and purposes.

I made a white wind spell for TfW, the ASM is pretty simple actually. I think it's just:
Code: [Select]
C2 20 REP #$20; make A 16 bits
AD 87 26 LDA $2687; load caster's current HP
09 00 80 ORA #$8000; set HP recovery bit
85 A4 STA $A4; store A in target damage
7B TDC; clear A
E2 20 SEP #$20; make A 8 bits again
I too am just scribbling this out, I'm not positive that's how I wrote it, but this should work.
What this does is restore the target's HP in the amount of the caster's current HP (which is what white wind does in most FF games)
 :edit: fixed a couple of errors in that code

615
Final Fantasy IV Research & Development / Re: Throw's Special Graphic
« on: February 05, 2015, 11:07:16 AM »
ok, I've got some findings here... the answer to Dark Knight's question plus some more...

SO there is a table that assigns a "charging" stance to each command (again, that is, what the character does in between selecting the command and actually executing it).
That's located at $0B/E760  :edit: that's $0B/7E60, sorry about that... Significant error (ROM w/Header). It works on a 1:1 basis with the commands as listed here, so the first byte is for fight, the second for Item, the Third for White magic, etc.

The breakdown of what each value will do is as follows:
Code: [Select]
01:Resting
02:parry
03:Walking
04:crouching
05:right hand striking
06:left hand striking
07:getting hit
08:cheering
09:swoon
0a:chanting
0b:Charging (Chanting without motion)
0c:casting (raising arms, or whatever, no orbs)
od:raising left hand like to attack, but no motion
0e:"special" stance
0f:same
10:Resting
11 and (I assume) above:glitch

Now, bear in mind that this will not change the position the character assumes while performing the action, just what s/he does before, however the values above are still important.
The stance taken for performing each action is, unfortunately, buried in a separate subroutine for each action, so finding all of them would take a while.
To change the stance for Dart, change the value at $01/434B from 0F to whichever value you want from above. Of course, you'll notice that there is no option to simply hold out the left hand, but you can do a left hand swing, or raise your hand up, or fall down and play dead if you so choose!
 :laugh:

If anybody is feeling industrious and wants to find the stance for other actions, set a breakpoint in geiger's for when the game executes $02/C048, and select each action in turn. The value that is stored into 7E:EFD0 (if the character is in slot 00, add 0x10 for each next slot up) is the value you want to change to change the action's stance.

*whew* just in time.
Off to work now!
 :cycle: