øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=14;area=showposts;start=510e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexcf8f.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;u=14e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexcf8f.html.zxÒ¼g^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ0P.ÍõOKtext/htmlISO-8859-1gzip0|ÖÍõÿÿÿÿÿÿÿÿTue, 10 Mar 2020 16:30:33 GMT0ó°° ®0®P®€§²ð®Ѽg^ÿÿÿÿÿÿÿÿ×)Íõ 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

511
I have a pet theory... 2F is steal evade right? And for a brief period it was being written to the wrong address due to my mistake with the headered/unheadered issue with the Cry offsets. It could be that it just happens that the mistaken address turned out to be Sing's message...

 :edit:
It occurs to me though that which messages are displayed by which commands is something that probably should be incorporated into the command editor isn't it ^_^; Is that information already documented?

512
Did you make any changes to the commands via anything else besides FF4kster (patches, hex editor, etc)?

513
General Discussion / I got my marks back
« on: December 20, 2013, 09:34:36 AM »
I did my first semester of Office Administration this fall and just got my marks back. My lowest mark was a 90! The rest were all 95!! BOOM!

 :banonsmash:

514
No apologies needed! That's the nature of conversations, they drift...

515
I see. I tried finding the boundaries myself but it's not straightforward. Between that and the issues I'm having getting the palettes working correctly I think I might just use hard-coded tiles for now and come back to this later. Seeing what would be involved in changing a map tile's graphic makes me skeptical that people would be inclined to do it without a devoted editor (which when the time comes I might just build into FF4kster after all!).

516
Nothing critical just something I noticed earlier today: in editing messages there are the six sub-headings Bank 1-3, Battle, Alerts, & Statuses (as you know) - but when they display they show different list lengths:

Bank 1: Shows 10 entries on screen

Bank 2: Shows 8 (But they are drawing from location so that might be it)

Bank 3: Shows 55 which bottoms out my list with the edge of the window
   Then Battle & Alerts are the same as Bank 3: All the way to the bottom

Like I said, nothing vital just a bit of inconsistency that I just noticed after my last post

Oh yeah I forgot about that. I just tried changing Bank 1's menu to go to the bottom of the screen and it seems to run just fine.

My general rule for menu lengths (at least for those side menus) is the full length of the list, or as many will fit on the screen, whichever is lesser. For Bank 2, it will only list as many as there are for the selected map since there are so few, but for Bank 3 it will show as many as will fit on the screen since there are so many. The list of maps in the Bank 2 editor would fill up the entire screen if it followed this rule so I made it sort of a top menu and limited its size to something reasonable for the given screen space.

What was going on with Bank 1 was that at one point in history the menus were being coded in an inefficient and wasteful way and I didn't notice it until I think the monster editor when someone pointed out the huge memory leak that was happening (which happened to be mostly due to something else but the menus were partly responsible as well). Anyway, due to the inefficiencies, the Bank 1 menu was being super slow when it filled the screen, but for some reason, limiting it to a few entries (10 was picked arbitrarily) seemed to alleviate the problem enough that it was usable. Anyway now it seems as though having it go all the way to the bottom no longer causes slowdown. I have yet to test it on Windows (I use Ubuntu as my main platform) but if there aren't any issues there either this will be fixed in the next upload.

 :edit:
I discovered a problem. The first magic called upon for Sing gets its byte, A9, changed to 2F somehow if you open a ROM and save it in FF4kster.

Interesting, I'll look into this soon.

This isn't happening for me. Anyone else?

Incidentally the only bytes read or written by FF4kster for Sing are the spell indexes, none of which are A9 by default.

517
Any chance we can keep the discussion here about FF4kster? Not that it isn't interesting stuff, just, if it's not related, maybe it could use its own thread...

I discovered a problem. The first magic called upon for Sing gets its byte, A9, changed to 2F somehow if you open a ROM and save it in FF4kster.

Interesting, I'll look into this soon.

518
Quote
0xF1568 - 0xFE7F8: Remaining Tilesets [can break these down later] (3BPP)

Were these ever broken down after?

519
I missed that as well.

Sadly it means that is not the information I'm looking for (though it will be important later). The hunt continues...

 :edit:
*WEAPONS-GRADE FACEPALM*

This is indeed the information I've been looking for... it's just stored in a messed up way.

For one thing, I was looking at the wrong section of the data segment. The first set of graphic tiles is the castle apparently, but the first set of arrangements (formations, whatever) are for the Airship (tileset index 0 in FF4Tools; derp). They then follow that order, so the castle tileset is tileset 03, and since each tileset has 0x80 map tiles with 8 bytes per tile that's 0x400 bytes. So 0x400 * 3 = 0xC00 so the castle arrangements begin at A2C00.

Not only that, they're not stored with all four tile corners next to each other, oh no. That would make too much sense for these guys. Instead, the first 0x100 bytes are describing the top left corners of all the tiles; the next 0x100 bytes are the top right corners of all the tiles, followed by all the bottom left corners, then all the bottom right corners. So to read a tile arrangement you have to read pairs of bytes starting at A2C00 (for the castle) and then jumping ahead by 0x100 bytes for each corner. Wow.
 :lame:

Oh yeah and also apparently a 1 in the horizontal flip bit means "don't flip it" but a 1 in the vertical flip bit means "do flip it"... either that or I have something messed up in my horizontal flipping code but I don't think I do.

Anyway, I'm back on track now, thanks everyone for all your help  :childish:

520
Exactly. Like, if you have a tree tile, it's not just one tree tile, it's a "top left corner of a tree" tile, a "top right corner of a tree" tile, a "bottom left corner of a tree" tile, and a "bottom right corner of a tree" tile. For a tree, those are probably all different tiles but for other objects they might reuse some of them. In fact if the tree is symmetrical and has no shadow, the "right" tiles might just be the "left" tiles mirrored, so only two different graphic tiles arranged to make the four-tile image.

521
Excellent work! ... However... I actually knew that part already ^_^;

What I'm looking for is something a little different. This is partially my fault for not defining my terms clearly.

Map Tile: A 16x16 pixel object used to create maps. These have several properties including solidity, event trigger capability, warp trigger, probably a palette index, and probably other properties as well. It is composed of four graphic tiles in some order.

Graphic Tile: An 8x8 pixel object used to create map tiles (among other things). It has no properties on its own (probably) other than its visual appearance.

All graphics on the SNES are composed of graphic tiles. They are usually arranged in some combination to form sprites. For example, if you look at the graphic data for one of the characters, you will notice that there are "pieces missing". This is because the game re-uses these 8x8 tiles wherever possible. So if, say, the back top part of Cecil's head is the same in one pose as it is in another, you will only see that tile once in the ROM rather than twice. Somewhere else, the game is figuring out how to arrage the various 8x8 tiles to create the Cecil sprite it needs.

So what I need to figure out here is not so much "how are map tiles arranged to create a map" (good work on finding that though by the way, that's awesome), but rather "how are graphic tiles arranged to form a map tile".

For example, in the image attached to my previous post, tile 03 (row 0, column 3) looks kind of like it might be the left side of a piece of wall. Tile 04 looks like it might be the right side of a piece of wall. So I would expect that somewhere there's some kind of instruction or table or something that tells the game to construct a 16x16 tile out of two 03s on the right and two 04s on the left, in a square formation. This would create the graphic for one of the castle wall tiles (probably).

So the first question is "where is this information stored?" According to FF4.txt, A2000-A5FFF contains "Town Map Tile Formation Data (*4)". "Tile formation" sounds to me like it is probably describing this process of constructing map tiles from graphic tiles, and 4 bytes is exactly the number that I would expect to describe a single entry (e.g. the arrangement in the previous example might described as "03040304"). However, when I examine this data in a hex editor, it doesn't make any sense in that context.

That, then, leads to the next question: "how is the information encoded?" While it's possible that the data I'm looking for is somewhere else entirely, it's also possible that it is indeed in that section of ROM cited above, but the process for constructing a tile isn't simply done by listing tile indexes next to each other the way I would expect. In such a situation I would need to know how the game interprets the data.

522
Game Modification Station / Re: Final Fantasy IV - Project II
« on: December 17, 2013, 05:11:46 AM »
Any reason Tellah and FuSoYa can't both be Sages?

523
Perhaps an illustration would help explain what I'm talking about.

In the attached image, all the tiles are using the greyscale palette used by the castle wall tiles. This illustrates what I mean by different tiles having different palette indexes. The castle wall sections look correct but the water looks like stone, and so does everything else. Probably what's happening is the map has associated with it a "large" palette of X 8-color segments, and each tile has associated with it a segment index. Like so:

Code: [Select]
[########][########][########][########]... etc
00        01        02        03

So in the Sylph cave, the palette would consist of various shades of brown and green, whereas in the Feymarch it would consist of various shades of brown and red, but the damage floor tiles would always use, say, palette segment 6, which would be green for Sylph and red for Feymarch. Probably. In reality I have no idea how to figure this stuff out, I'm just speculating.

As well, you can see from the graphic tiles themselves what I'm talking about in terms of having to assemble the actual 16x16 tiles. The game tries to reuse tiles wherever it can, so no doubt there's a castle wall tile constructed by using tiles like so:

Code: [Select]
03 04
03 04

In "FF4.txt" there's a section of rom from A2000-A5FFF labelled "Town Map Tile Formation Data (*4)" which I initially assumed would list graphic tile indexes in the order they're used to construct map tiles (so for the above example, something like 03040304). However, upon inspection of the data in that section, that's definitely not how it's stored; or if it is, it's not as straightforward as that and there's something more complicated going on in there. For example, the first segment of four bytes from that section is:

Code: [Select]
5A 00
B1 04

Which if you assemble those tiles in that order (or any order really) don't make a recognizable map tile. In fact there isn't even a tile B1. I'm so confused...

 :blits:

524
Is that better, or is there still room for improvement?

Well, yes to both ^_^;

There isn't anything special about the word "read stat" or "write stat"; I was just using those as variable names. When naming variables, it is important that each variable have a unique name. So, if you use Read Stat for the name of a variable then you shouldn't call any other variables Read Stat, even if they're also being read (that's beside the point). The name can be anything you like (Foo, Bar, etc) but generally it's better to have names that relate to the function/purpose of the variable. In the case of Dark Wave, you have one stat that's being used as part of a division calculation but not actually modified so that's why I chose the name "Read Stat" for it. The other value is being modified so I called it "Write Stat" for that reason. They could just as easily have been called "Stat 1" and "Stat 2", though those wouldn't have been very helpful names.

The list of two addresses after Write Stat in the Dark Wave example meant that when that value changes, it changes two different addresses in memory (to the same value). In other words, if Write Stat (Current HP by default) were to get the value 2F (Steal Evade), then 2F would be written to both 1EBFB and 1EC00. For the kick example, it looks like several addresses are listed together that all take different values. So I would have imagined something more like this:

Kick

Deal a group physical attack with damage equal to Multiplier Stat * Base Stat. If Half Damage Enabled, divide the damage by 2. Resist Race monsters resist it and Immune Race monsters are immune to it.
  • Multiplier Stat: 1E91C
  • Base Stat: 1E931
  • Half Damage Enabled: 1E924
    • ON: 46DF
    • OFF: EAEA
  • Resist Race: 1E99F
  • Immune Race: 1E997

Basically, you should be able to read it as a regular sentence when you replace the variable names with their values. If they all have their default values, the sentence would read in such a way that it describes the default behaviour of the command.

Am I making any sense?

525
Even within a given tileset though, the individual tiles use different palettes. Take the castle for example. You have blue water, grey bricks, etc. What I'm looking for in #2 is the palettes for the individual tiles.