øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=278;area=showposts;start=1200e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index3b4e.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;u=278e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index3b4e.html.zxÜåg^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ0P.#;OKtext/htmlISO-8859-1gzip8:Ö#;ÿÿÿÿÿÿÿÿTue, 10 Mar 2020 19:25:39 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

1201
I've had (probably) similar problems trying to edit conditions:
I wanted to make a monster that reacts in a particular way to being attacked by Edge's Dart command, but it wasn't working.
Likewise, I wanted a particular reaction to a character using the Item command with a particular element (say, a specific reaction to lit-bolt) but it seems the game treats elemental attack items as spells in that respect, so the condition has to be an elemental spell in order for an elemental item to trigger a reaction.
Other custom conditions (that I can't remember at the moment) didn't work either.
I was kind of hoping that once the monster editor was released, you would have figured out whatever it was I was missing.
Maybe the game isn't really capable of observing all of the conditions the human mind can conceive?

1202
We'll be here to test it whenever :)

1203
Come to think of it, how does the game know if a monster is on the moon? I know map data has an "underworld" bit, but I don't recall a "moon" bit...

1204
Hey pinkpuff,
Just checking in. Any progress worth mentioning on the monster editor? Anything else we might be able to help with?

1205
Yup I knew about that actually, and as far as I can tell the editor is actually reading things correctly now
Ok, glad that didn't screw you up.
Quote
Sorry I haven't been updating very much but this is a slow process and there hasn't really been much to report...
No worries. I can't even begin to imagine how much tedious work must be involved in actually writing ff4kster.

1206
Hi again, Pinkpuff -
So I know you've already got a full plate with this battle sequence stuff, but I just discovered part of the system that I hadn't previously noticed.
Phoenix's condition indices table (http://rb.thundaga.com/monsters/eci.txt) also explains how to modify condition indices.

The table at 76800-768FF is the breakdown of each condition, variable lengths, each terminated by FF.
The non-FF bytes in that table reference the index of four-byte conditions at 76900-76AFF.

SO...
For example, condition 18 (picked at random) reads:
13 04 4B FF

That's:
13 (02 00 00 03), If condition flag is 03
04 (0A 00 00 00), and HP damage
4B (01 17 00 0B), and Self's HP is less than [index 0B in table at 76200]
FF

Look up condition 18 in Phoenix's list, and that is exactly what it days (apparently, index 0B in table at 76200 is 16,000), but you could theoretically change this to whichever three conditions you want, such as:
15 (02 00 00 05), If condition flag is 05
02 (0B 00 00 00), and only enemy alive
09 (07 19 C2 01), and hit by a character ice-elemental spell (literally, "if any enemy attacks with magic command with element 01, ice")
FF

One could even, if so inclined, change the individual conditions, as well as create new ones (a third of the table is FFs). There are thousands of possibilities here.

Sorry, I know that doesn't make the job of creating an AI editor any easier...

1207
Hey PinkPuff -
I just put this together for my own purposes. Seeing as how you are working on the monster editor, thought you might have some use for it.
it's a graphical representation of each of the "special" monster sprite arrangements.
The dashes are empty space, the 1s are sprite space, and the 0s are sprites that are not directly related to the graphical pointer (usually because they are subject to change during the battle)
I also noted which monster they are used for when that info is known, and took my best guess when it is not. for a select few, I have absolutely no idea.
Anyway, here you are:
Code: [Select]
80 (D. Mist)

------111-
-----1111-
--1111111-
--11111-1-
--11111---
--1111111-
-11111111-
1111111111

81 (D. Mist as Mist)

-----11-1111111--
---11111111111---
11111-11111---11-
-----111111111111
--11111111-------
-------11111111--
------1111-------

82 (Titan)

-000-
00000
00000
00000
0000-
0000-
0000-
00000

83 (Titan Quaking)

--00--
00000-
000000
00000-
0000--
0000--
0000--
00000-

84 (Octomamm 1)

--1111-1111--1----
--1111-1111--11---
--1-111--11--11---
-----111-111111---
-----1111--1111111
111--1111----11111
11----111----11---
111---111--1111---
----11-----11-----
--1111-111-11-----
--111--111-11-----
--11---111-11-----

85 (OCtomamm 2)

-----111-----
11-1-11------
1111-11111---
1111-1111111-
-111-1111----
-1111--111111
-1111---11111
--111---11---
11111---11---
11---11111---
11-1111111---
11-111--11---
11-1----11---

86 (Octomamm 3)

1111111------
1111111------
-1111111111--
-111--11111--
-1111-11111--
-1111----1111
--111----1111
--111----1111
--111-1--111-
--1111111111-
--11---11111-
--1-------1--

87 (Octomamm 4)

----111-1---
11--11111---
111-11111111
111111111111
111111--1111
-11111111111
-111-1111-11
-111111-----
-111111-----
---11-------
---11-------

88 (Octomamm 5)

-------1-----
-------11----
11-----11----
111-11-11----
111111-111111
111111--11111
-111--1111---
-111111111---
----1111-----
--111-11-----
--111-11-----
--111--------

89 (Octomamm 6)

11-----------
111---111-1--
1111--11111--
1111--11-----
-111111-11111
---1111-11---
-----11-11---
-----11------

8A (Octomamm 7)

11---1111--
111--1111--
1111---11--
1111---1111
-111-----11
-111---1111
-------1111
-------1-11

8B (Octomamm 8)

11---------
111-------1
1111--111-1
1111--11111
-111--11---
-111--11---

8C (Antlion)

11111111
11111111
11111111
11111111
11111111
---11111

8D (MomBomb after transformation?)

-111111111
1111111111
1111111111
1111111111
1111111111
111111111-
-11111111-
1111111---
11111-----

8E (Milon)

-1111
11111
11110
00111
00111

8F (Milon Z. & Elements as Milon Z.)

-111111-
-1111111
1100000-
1000000-
00000000
00000000
00000000
0000000-

90 (Rubicant)

-1111--
-11111-
-11111-
1111111
111111-
111111-
111111-
111111-
0000000
0000000
0000000
0000000
0000000
000000-

91 (Rubicant on Guard)

--11111
-111111
-11111-
-111111
-111111
-111111
111111-
1111111
0000000
0000000
000000-
0000000
000000-
000000-

92 (Kainazzo)

111111111-
1111111111
1111111111
1111111111
1111111111
-111111111

93 (Kainazzo gathering water)

111111111--
1111111111-
11111111111
11111111111
11111000000
00000000000
---0000000-

94 (Kainazzo in Shell)

-111111-
11111111
11111111
-1111111
-1111111

95 (Valvalis)

-11111--
11111111
00000000
00000000
-000000-
-0000000
00000000
00000000
0000000-

96 (Valvalis on guard)

--1111--
11111110
00000000
00000000
00000000
00000000
00000000
-000000-
----111-
--1100--

97 (Dark Elf before change)

111111
111111
111111
111111
111111
111111

98 (Sandy)

1111
1111
1111
1111
1111
1111
1111
-111
-111
-111
-111

99 (Cindy)

-1111-
-1111-
111111
111111
111111
11111-

9A (Mindy)

1111
1111
1111
-111

9B (Calbrena)

000000
-0000-
-0000-
-0000-
000000
000000
000000
000000
000000
00000-
-0000-
-0000-

9C (EvilWall)

1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
111111111111111-
11111111111111--
1111111111111---
1111111111111---
111111111111----
11111111111-----
1111111111------
1111111111------
111111111-------
11111111--------
1111111---------
1111111---------

9D (K. Eblan)

111--11
-111111
-111111
1111111
1111111
1111111
1111111
1111111
111111-
111111-

9E (Q. Eblan)

---111-
1111111
1111111
1111111
1111111
-111111
---1111
----111

9F (K. Eblan after change)

111--11
-111111
-111111
1111111
1111111
1111111
1111111
1111111
111111-
111111-

A0 (Q. Eblan after change)

---111-
1111111
1111111
1111111
1111111
-111111
---1111
----111

A1 (Baigan)

111111
111111
11111-
--11--
-1111-
11111-
11-11-
11111-

A2 (Right Arm)

-11
111
11-

A3 (Left Arm)

111
111

A4 (MomBomb, before change)

0000
0000
0000
0000

A5 (Dr. Lugae)

111
111
11-
11-

A6 (Balnab)

-111-
11111
11111
11111
11111
11111
11111
11111
11111

A7 (Balnab-Z)

-111-
-1111
11111
11111
11111
11111
1111-
1111-
11111

A8 (???)

1111
1111
1111
1111
1111
1111

A9 (Golbez)

--111----
111111---
111111---
1111111--
111111---
-111111--
-111111--
-1111111-
-11111111
-11111111
-11111111
-11111111
-1111111-

AA (Odin)

--1111--
--1111--
--111111
--111111
--111111
--111111
11111111
11111111
11111111
11111111

AB (Odin, Sword Raised)

111111--
--1111--
--111111
---11111
--111111
--111111
11111111
11111111
11111111
11111111

AC (Odin, Striking?)

---1111-
---11111
---11111
---11111
--111111
--111111
11111111
11111111
11111111
11111111

AD (???)

---111
--1111
111111
111111
111111
111111
111111
111111
111111
111111

AE (Leviatan)

11----
11111-
111111
111111
111111
111111
111111
111111
111111
1111--

AF (Bahamut)

-11111
111111
111111
111111
111111
111111
111111
111111

B0 (Bahamut, casting MegaNuke)

---11111--
-111111111
1111111111
1111111111
1111111111
1111111--1
111111111-
1111111111

B1 (???)

111

B2 (???)

111

B3 (Elements, as Kainazzo?)

000000000--
0000000000-
00000000000
00000000000
00000000000
00000000000
---0000000-

B4 (Elements, as Valvalis?)

--0000--
00000000
00000000
00000000
00000000
00000000
00000000
00000000
-000000-
----000-
--0000--

B5 (Asura?)

-1-11---
-111111-
1111111-
11111111
11111111
-1111111
-1111111
-1111111
-111111-
-11111--
--111---
---1----

B6 (Asura)

-1-11---
-111111-
1111111-
11111111
11111111
-1111111
-1111111
-1111111
-111111-
-11111--
--111---
---1----

B7 (Asura?)

-1-11---
-111111-
1111111-
11111111
11111111
-1111111
-1111111
-1111111
-111111-
-11111--
--111---
---1----

B8 (CPU)

111111111
111111111
111111111
111111111
111111111
111111111
111111111
111111111
111111111

B9 (Zeromus, Final Form)

--0111-111111--1111
-001111111111111111
--01111111111111111
--01111111111111---
--01111111111111---
--011111111111111--
011111111111111111-
-111111111111111-1-
-110000000000000---
-1100000000000-----
--100000000000-----
--000000000--------
--00000000---------
--10000000000------
-000000000000------
---0000000011------

BA (Defender)

000
000
000

BB (Wyvern)

---11111--
-111111111
1111111111
1111111111
1111111111
1111111--1
111111111-
1111111111

BC (Attacker)

000
000
000

BD (Ogopogo)

---111
--1111
111111
111111
111111
111111
111111
111111
111111
111111

BE (Zemus)

----111--1-
11111111111
1111111111-
-11111111--
--1111111--
--111111---
--111111---
--111111---
--111111---
--11111----
--11111----
---111-----
---111-----
---111-----
---111-----
---1-------

BF (Zeromus, Initial Form)

---11111----
--1111111---
-1111111111-
111111111111
111111111---
-11111111---
11111111----
111111------

1208
Sure thing. Happy I could help.

1209
OK, attached are an IPS and an SRM file. Patch the IPS to a vanilla FF2v1.1 ROM.
You'll load in the Baron area with Edge, Kain, DK Cecil and Rosa in your party. Walk around and you will encounter a (modified) witch.
Do nothing, and she will do nothing.
Physically attack her, and she will say "That tickles!"
Jump attack her, and she will say "Stop hitting me,Kain!"
If she is attacked and her HP falls below 1000 (she starts at 1300), she will cast recover (bringing her HP back to full).

Here's how:
Changed Sequence Group 02 (7623C) to read: 00 00 FF
(by default, do nothing)

Changed Sequence Group 00 (76230) to read: 48 02 06 2F 40 FD FF
If Condition 48 (HP falls below 1000 and physically attacked)
Then Sequence 02 (modified, as explained below)
If Condition 06 (Physically attacked by a character)
Then Sequence 2F (modified, as explained below)
If Condition 40 (Condition flag is 01 and hit by Jump)
Then Sequence FD (modified, as explained below)

Changed Sequence 02 (76B04) to read: F9 16 AB FF
F9 (set target to...)
16 (self)
AB (cast spell AB, Recover)

Changed Sequence 2F (76BB9) to read: FD F1 00 FB F4 81 FC FF
FD (start attack chain)
F1 00 (display battle dialogue 00)
FB (separates battle chain commands)
F4 81 (sets condition flag to 01, assuring condition 40 is met if Jump attacked)
FC (end battle chain)

Changed Sequence FD (772B5) to read: F1 01 FF
F1 01 (display battle dialogue 01)

Of course, I changed the battle dialogue to say what I needed, too.

Then, I set the Witch's Attack Sequence Group to 02, and set her Reflex Group to 00
And there you have it!

 :edit: Couple of notes on this process:
- I chose to edit the particular Sequence Groups and Sequences that I did because they are, by default, the exact same length as what I needed - so for the purpose of this exercise, it was just quicker that way. The one good thing about how the "AI" system is set up, though, is that you can make these strings as long as you need them to be, and don't have to change pointers in order to make them work. the game just counts FFs until it gets to the string it needs (which is in all other respects highly inefficient).
- On a related note, the game reads Sequence Group strings in order from left to right. Once it finds a condition that is met, it uses the paired attack sequence. I spent a good half hour toiling away with my reflex group because I couldn't understand why the monster wasn't casting Recover. I had it set as the last of the three instructions, so the "physical attack" condition was met, and the game carried out THAT reflex action and ignored the rest. So you can always pick out the Attack (non-Reflex) Sequence Groups because they always end with 00 xx FF, thereby giving the monster something to do if no other condition happens to exist.

1210
It's a very long and complicated process to break down a single attack sequence. Phoenix's documents (found readily at http://rb.thundaga.com/) explain it best, but even still you have to switch constantly between three documents:
- attack sequence group data
  http://rb.thundaga.com/monsters/eag.txt
- enemy condition indices
  http://rb.thundaga.com/monsters/eci.txt
- enemy attack sequences
  http://rb.thundaga.com/monsters/eas.txt
This last one has two parts, which are sort of presented backwards in terms of usefulness.

Okay, let's say your monster uses attack sequence group AB.
That's 44 BC 08 40 09 2B 0A 42 FF
This is a string of two byte commands, terminated by an FF. Each two byte command is (first byte) a condition and (second) an attack sequence performed if that condition is met.
So first, we have 44 BC, if condition 44, then attack sequence BC
Condition 44 means "if hp is less than 100 and hp damage"
Sequence BC is F2 7E F3 22 AD FF
This is a string of commands that may or may not have parameters, depending on the command, terminated by an FF.
This particular string translates to:
F2 7E - display battle dialogue 7E while performing next attack
F3 22 - change music to 22
AD - cast enemy spell AD (user dies, next enemy brought in)
So... if the enemy sustains damage and remaining hp is less than 100, display dialogue 7E, play music 22, and die, giving way to the next enemy.

Next in the sequence group is 08 40
If condition 08 (hit by a character fire spell)
Then sequence 40 (96 FF)
Which means cast enemy spell 96 (fire)
So... if the enemy is hit by a character's fire spell, counter with (enemy spell) fire

Next is 09 2B
If condition 09 (hit by a character ice spell)
Then sequence 2B (9D FF)
Which means cast enemy spell 9D (wave)
So... if the enemy is hit by a character's ice spell, counter with (enemy spell) wave

Finally, 0A 42
If condition 0A (hit by a character lightning spell)
Then sequence 42 (99 FF)
Which means cast enemy spell 99 (thunder)
So... if the enemy is hit by a character's lightning spell, counter with (enemy spell) thunder

So this is clearly the reflex group for an enemy that counters magic with its own of the same element, then says something, changes the music to song 22, and gives way to another monster when hp gets critical. Song 22 is Calcobrena, so I'm guessing that this is the big Calbrena's reflex group (I don't remember all of those magic counters, but then again, this battle happens just before getting Rydia back...)
 :edit: Battle Message 7E is "Ran out of power," which is displayed when big Calbrena breaks up into Cal and Brena (and is immediately preceded by "Turned into Calbrena"), so yes, this IS Calbrena's reflex group.

I just picked this one group at random. Attack groups and reflex groups exist in the same table, and a reflex group CAN be assigned as a monster's attack group, but doing so will freeze the game when fighting that monster.

I hope this helps. I was kinda hoping the random sequence I picked would include an attack chain, as that brings an extra element of complication into the mix. I could break more down if you want (not tonight, it's 3:30 am).

1211
Vivify:
There might not be a quick fix for you, because as far as I know, nobody has discovered yet how to edit the characters that participate in story-driven autobattles (like this one, the tellah-edward battle, tellah-golbez, etc.)

Best thing might be to get a clean ROM and copy/paste all of the information you've changed. Everything  ff4kster does edits a documented set of data in the game.
So, for example, if you've done extensive event editing, copy the event pointers(90200-903FF) and event data (90400-96882) from your edited ROM to the clean file.
It'll still take some time, but will presumably be quicker than rewriting every change you've made.
I'd recommend using Cygnus hex editor for this process. It allows you to open up two ROMs side-by-side, which makes copy/paste from one ROM to another a pretty painless process. Maybe other hex editors will work just as well, but I can vouch for Cygnus.

 :edit:To clarify, I would only use this method to copy events, levelup data, and dialogue banks. Everything else would probably be quicker to redo right on ff4kster.

1212
Interestingly, in the process of tracking down the Golbez bug, I found that the character level up data looks like it isn't being written to the rom...
You mean all characters' level up data? If so, then that's new in the last couple of releases. I did quite a bit of levelup editing in February that worked fine.

1213
That is interesting. I am assuming that the game is looking for Specific sections to jump to. If you use This Spell in This Index then Jump 1C further to use the actual spell. I'm assuming that Asura and Bahamut are handled a little differently though. That may be worth a look.
... you mean because those are the only two where the order of the *cast* spell is not the same as the order of the *effect* spell, right? I've thought of that as well. I've also considered that maybe the different order has something to do with the multiple effect spells associated with Asura.
Don't know how much time you've spent looking at the game's graphics, but it's also worth noting that:
a) the summoned monsters' graphics are all grouped together,
b) they are the last monster graphics that appear (beginning at 68A18 - the earliest monster graphics begin at 48200),
c) they follow the same order of appearance as the effect spell,
and d) there is a large amount of non-graphical data separating the summoned monsters' graphics and all other monsters' graphics
Incidentally, I've also learned how to make an enemy look like a chocobo (change the graphic pointer to C217 and the "size" to 01), or a sylph (C5D4/C5E0/C5EC, 00). Not very useful knowledge about summoning, but a fun side effect of my search. The other non-enemy summons (Shiva, Indra, Jinn) are all irregular sizes, so while I'm sure it is possible, I don't know enough about how the irregular-sized monsters are encoded to make them enemies.
Some pieces of info I'm missing that surely are key:
- the location of the subroutine(s) for the effect spells
-also, I'm sure the effect spells must also have a separate range identified somewhere. If that could be found, then maybe changing the range of the cast spell wouldn't cause the party to permanently disappear (not to mention possibly make other monsters summonable).
(SORRY, this is totally off-topic)

1214
OK, I think I just discovered a pretty serious glitch (fortunately, I keep backups of everything, including previous versions of ff4kster)...

It seems that, in all versions of ff4kster since editing map properties became available (that is, the version I downloaded on 3/11), the game freezes when you try to change your overworld map character. In other words, if I have Cecil and anyone else in my party, and I'm walking around, and I hit R, the game freezes.

I tested this with a completely clean FF2 v1.1 ROM.  All I did was open the ROM in ff4kster, save it without making any changes, and play from the beginning. Once I had Kain in the party, I hit R - Game Freezes.

Tried also loading a saved game with several characters.  It's fine until you hit R, then freezes.

As a matter of fact, even when there's nobody else in the party, hit R and the game freezes.

Can anyone else confirm that this is happening?
Seems when I fall back to the version of ff4kster I downloaded on 2/9 (the pre- map properties editing version), this problem no longer exists.

1215
hmm... making spells 40+ into summons seems to invariably summon Asura (completely effectively - party comes back afterwards). Not useful at all, really, but different than the game-ruining effect of setting spells before 31 to be summons.
(sorry, I'll stop talking non-ff4kster now)