øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=14;area=showposts;start=495e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index40ce-3.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;u=14e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index40ce-3.html.zxѼg^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ0P.3OKtext/htmlISO-8859-1gzip@øÕ3ÿÿÿÿÿÿÿÿTue, 10 Mar 2020 16:30:32 GMT0ó°° ®0®P®€§²ð®Ѽg^ÿÿÿÿÿÿÿÿß,3 Show Posts - Pinkpuff

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

496
...also, I had to relay to Pinkpuff that yesterday I ran into a situation where I had an unrefreshed copy of the forum up on one monitor next to a current one and saw the two different versions of your avatar...I was just going to relay that as a funny double take moment but then I looked this morning and you changed it again! I'm starting to think that I might be shorting out...Princess Momo overload...lol  :childish:

 :scared: You recognize Minky Momo?? That's awesome, I usually have to explain to people who she is. Years ago I couldn't find any subtitled episodes so some friends and I got together and started translating it. We didn't get very far though. We all ended up becoming busy with other things and such. I might come back to it some day but we'll see...

Anyway, back to the map editor! I've got a cursor working now. It even scrolls and everything. My plan is to have it so that the controls are:
  • Arrows: Move cursor; if it reaches the edge of the visible portion of the map, it will scroll the map if possible.
  • Shifted Arrows: Expand cursor, increasing highlighted rectangular area
  • Tab: Switch to tile selector (use arrows to select a tile, tab again to go back to map editor)
  • Backspace: Change selected tile to currently highlighted tile (tile in top left corner if a rectangle is highlighted)
  • Enter: Fill highlighted rectangular area with selected tile
  • Space: Floodfill highlighted area and entire contiguous region of same tile
And if I'm particularly ambitious I'd like to also put a visible clipboard there on the right side and add the following controls:
  • C or Delete: Copy highlighted area to clipboard
  • V or Insert: Paste clipboard data into map, lining up top left corner of clipboard data with top left corner of highlighted rectangle

497
I'll probably think of some way around it eventually, but for now I'm going to keep focusing on the map editor.

498
Hmm, well that does appear to be what is happening. Though Cecil's level-ups were changed to Tellah's, Tellah's entire Level up Data was erased, despite Tellah 1 still having the normal Tellah Level-up Data (because I switched his data to Dark Knight Cecil's beforehand) which is nothing. By changing this, Tellah 2 and 3 still have Dark Knight Cecil's Level-up Data,. So I think that might be what is going on regardless of the case and  Cecil's data reads it as Cecil's Level Up Data.

So if I understand correctly... you changed Cecil's levelups to Tellah's, right? So now the situation is the actors DK Cecil, Tellah 1, Tellah 2, and Tellah 3 all have Tellah's levelups. Next, you changed Tellah 1's levelups to Cecil's. So now the situation is Tellah 1 has Cecil's (old) levelups and now actors DK Cecil, Tellah 2, and Tellah 3 all have what were Tellah's levelups, correct? Now you save rom and exit, then when you load up the editor you should see this:
ActorLevelups
DK CecilDK Cecil
Tellah 1Tellah
Tellah 2DK Cecil
Tellah 3DK Cecil

But when you look in the character editor you'll find that the levelups that are being called "DK Cecil" are actually what Tellah's were originally, and the levelups that are being called "Tellah" are what DK Cecil's were originally. This behaviour is "correct" and I'll explain why:

Levelup data is stored by character, but the pointers to the levelup data are stored by actor (thanks, FF4 programmers). What this means is I can't just read levelup data along with the rest of the character data. I have to read it with the actor data and assign it to the corresponding character as I go. So let's just do a quick trace of this process with the data changes made above:
  • Read first actor: DK Cecil
  • Pointer to levelup data: (points to what used to be Tellah's levelups)
  • Is this pointing to data I've already read so far: No (I haven't read any so far, this is the first one)
  • What character corresponds to this actor: DK Cecil
  • Assign DK Cecil (character) this levelup pointer (hence making what used to be Tellah's levelups to now be labelled as Cecil's)
  • ... read some more actors ...
  • Read actor: Tellah 1
  • Pointer to levelup data: (points to what used to be DK Cecil's levelups)
  • Is this pointing to data I've already read so far: No (Cecil's had been changed to something else, so this is the first one pointing to his old levelups)
  • What character corresponds to this actor: Tellah
  • Assign Tellah (character) this levelup pointer
  • ... read some more actors ...
  • Read actor: Tellah 2 (Tellah 3 will operate the same way as this)
  • Pointer to levelup data: (points to what used to be Tellah's levelups)
  • Is this pointing to data I've already read so far: Yes
  • Therefore we look at which character is the first one with this data: DK Cecil (thus it will be labelled DK Cecil's levelups)
  • What character corresponds to this actor: Tellah
  • This character already has levelup data so no assignment needed

Now let's suppose instead that you hadn't assigned Cecil's levelups to anyone. You left all Tellah's actors alone and just changed Cecil to have Tellah's levelups. Now when you save and re-load, the following happens:
  • Read first actor: DK Cecil
  • Read levelup pointer: (points to what used to be Tellah's levelup data)
  • Assign it to DK Cecil (character)
  • ... read some more actors ...
  • Read actor: Tellah 1 (the other Tellahs will all work like this)
  • Read levelup pointer: (also points to what used to be Tellah's levelup data, but would now be lablelled DK Cecil)
  • Assign it to Tellah (character)
  • ... read the rest of the actors, none of which point to what used to be DK Cecil's levelups ...

Notice that now there is nothing pointing to DK Cecil's former levelups. What this means is that the data is still there, it's hasn't been deleted or overwritten or anything, there's just no way to access it from within the editor. If you were to manually go in with a hex editor and update the pointer for one of the characters to point to DK Cecil's old levelups, they'd all be there and completely accessible.

Actually now that I think about it they might get overwritten in the saving process since nothing is pointing to it; the levelups that are actually being used might all just get written sequentially and the pointers computed based on that, in which case what I said above wouldn't hold true for DK Cecil but depending on what else you changed you might be able to salvage, say, FuSoYa's had you done that with his levelups rather than Cecil's.

Ideally, I'd like to be able to read all the levelup data regardless of whether anything points to it or not; that way you can assign pointers to whatever levelup sets you like without having to worry about it since the entire data set would always be read and written. But it's tricky to do that because of the way those particular pointers work. They care about the character's starting level. If you start at level 10, it will result in a different pointer from if you start at 15, even if the data begins at the same memory address. This means that in order to read the levelup data correctly I need to know the corresponding character's starting level, meaning it has to have a corresponding character.

Also I have an observation about the level up editor.  On the later levels (50+ or so) the MP increased byte is also used by the experience needed for level up.  It starts with $20 and moves on to $40--what this means if you put in a value that exceeds $BF for example the exp needed for level up increases as well.  As an example put $FA on Rydia or Rosa's level 40 MP level up data and you'll see the required exp for level up goes into well above 300,000. 

My recommendation is to have the max MP increased per level up not exceed 191 ($BF) or make it an even 190 ($BE).  Or you can be safe and cap it at 160 (A0)--I haven't tested it any further.  :)

Let me know if you need a further explanation. 

When you do this in FF4kster the result is that the MP ends up getting capped to 31 and the TNL goes bonkers. So I'm just going to do the lazy thing for now and cap it at 31.  :childish:

499
Hmm, that makes sense that such a thing would occur. So Level Up Index is not a single byte then, but something that is copied into the character's data itself? I was under the impression it was a byte in an initial character's data somewhere. A very nice addition if it is not.
...
Hmm... I just tested out the Level Up switching and took your words to heart so I changed Dark Knight Cecil's to Tellah's Level Ups and immediately gave Tellah Dark Knight Cecil's Level Ups now this had the effect of erasing Tellah's level-ups all together...

What's happening there is that there's a list of pointers, each corresponding to an actor, that point to a set of levelup data. Some point to the same set of data (e.g. Child Rydia and Adult Rydia). So when you change one of the pointers and don't change anything else to what it used to be, so that nothing points to that set of levelup data anymore, then when you load the rom again, it just reads the pointers and doesn't see that there's a set of data with nothing pointing to it.

Went looking for more pink boxes, I found another when you go to add a spell to a skillset, the box that holds the level when the spell is to be learned turns Pink when you exit out of it.

Ouch, the Message editing section has it as bad as the Event Editor section did, an entire bright pink screen when you go to edit a field message (Battle Messages work fine)

Thanks, I'll get on it.

Ah right, this reminds me of a thing that has bothered me for a while. Do we not have an Underground NPC Index available? Since every mention in the editor refers to the Overworld NPC Index, even in the Underground it uses those names.

I had forgotten completely about that... I'll see what I can do. Thanks for the reminder.

My suggestion is when a Level Up is switched, that immediately the person who is losing their level-up set should be given the other person's level-ups.

I'm not sure I understand... Suppose I want to change the plot a little at the end of the game and instead of Kain 3 I need a Yang 3. So I change Kain 3's levelups to Yang's levelups. Would Yang and Yang 2's levelups then become Kain's?

500
Happy new year! I unfortunately have to start the new year with a glitch in the editor...

Happy new year to you as well! And that's not unfortunate! If there are bugs in my program I want to know about them right away so that I can smash them!  :banonsmash:

And on that note, I uploaded the latest version again which now has fixed:
  • Maps displaying wrong index map (certain background maps will still have the "wrong" tileset such as the town water bg though)
  • Pink box appearing in event editor (this is a side effect of my changing screen modes to accomodate loading bmp files; I thought I found all of them but if there are any more instances of pink zones appearing let me know)
  • Level ups getting messed up from changing actor level up links
One thing to note about the levelups if you go messing with the levelup links for the actors, is that I think it's possible to just outright lose levelup data now, at least as far as the editor is concerned. For example, let's say you changed Cecil's levelup link to point to Rydia's levelups but then didn't change Rydia's (or anyone else's) to Cecil's. Now when you open the editor, Cecil's former levelups will just be gone, with no way to access them from within the editor, and both Rydia's and Cecil's levelups will now be called Cecil's. I can't think of a good way to fix that right now but I'll keep it in the back of my mind as something to brainstorm at some point.

501
I see, thank you! So it has to do with the "map index" of the given map... I should actually be able to code that in pretty easily so that it displays correctly. I'll just have to put something in the readme that reminds people that changing a map that shares an index with another map will change both maps. And if they don't read the readme well... that's not my fault  :happy:

Is the "town water background" coming up as a bunch of cargo boxes for you? For me it seems to be using the airship tileset instead of the town one. This matches what's in its map info data; it says it "should" be using tileset 0 but we know from playing the game that it somehow "knows" that it should be using town tileset...
 :hmm:

502
Progress Update

I put the tile editor on the back burner and began coding the map editor using hard-coded tiles (ripped directly from FF4Tools). What this means is that for now, the tiles will always look the same no matter what has been changed about them (i.e. even if you hack something that was formerly a warp tile into not warping, it will still appear as a warp tile in the editor), and they will have a fixed palette no matter what the map's palette is.

Currently, it gives you a menu of maps at the top and highlighting a map will display the correct tileset on the left side and will give you a preview of the top left 16-tile x 16-tile corner of the map in the center. While this map looks correct for almost all maps, overworld and underground/lunar alike, there are certain maps that look messed up and I'm not sure why. The "Glitch World" maps are all messed up of course but I was expecting that. I'm talking about things like, the ice shield treasure room in the Tower of Babel looks messed up while the icebrand room looks just fine.

I've uploaded the current working version so if you guys want to take a look at it and see if you can find a pattern, by all means please do so. Also let me know if it's slow updating; it seems to run fine under linux but when I compiled it for windows it seemed to take forever to update the tileset and the map. However it could simply be an emulator issue (it's been known to be sluggish with certain things anyway).

504
The mouse is overrated; the keyboard is much more efficient.

505
You could get the best of both worlds with a lot of work, by changing around which monsters have which race flags set so that the "natural order" is the preferred order... (i.e. make it so all the slime monsters have the race that normally would indicate spirit, all the giant monsters to have the race that would normally indicate robot, etc.) That would be where FF4kster's handy-dandy config files come into play (I'm looking at you, races.dat)...

506
Awesome!

I take it "Inflicted With Certain Status" translates to "if Caster's Status Byte 1 is equal to Status Determination"? (Ideally each variable in the list should appear in the description)

507
Glad to hear it!

508
Thanks so much!!

Also would you like me to rewrite the Kick Options again? I wasn't sure if the last iteration of that was enough to go off of for implementation.

If my rephrasing of it was accurate then there's no need, but if something needs to be corrected, then by all means.

509
Scaling will be easy when I get the tile graphics read from the rom directly, but it's unlikely to happen while I'm using the hard-coded tiles. Gamma correction, I have no idea how to do that. The background will ideally be whatever image that map has set as its background by default and maybe an option to turn it off and on or something.

510
I couldn't use FF4Kster, because the ROM I'm using is v1.0 Because the map editor I'm using only takes v1.0. And I screwed up Baron by trying to add a new Baron map via hex editor, But... That obviously didn't turn out well (I'm yet a n00b)

Don't worry, I'm working on the map editor for FF4kster as we speak. Soon you will be able to do it all with the one tool.