øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=278;area=showposts;start=75e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexa5b2-2.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;u=278e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexa5b2-2.html.zx»åg^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ0P.†%OKtext/htmlISO-8859-1gzip8:Ö†%ÿÿÿÿÿÿÿÿTue, 10 Mar 2020 19:25:06 GMT0ó°° ®0®P®€§²ð®ºåg^ÿÿÿÿÿÿÿÿ€0†% 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

76
So now that PinkPuff has given me an avenue for ROM expansion, I'm tapping into some of the stuff I wouldn't have been able to do before.

As previously stated, there will be some built-in "Disc Changes" throughout the game. Thanks to the ROM expansion (and Squall's suggestion as to how to handle it), the following banks of data will be reset three or four times throughout the game, at specific points (the first one is coming soon, after the Titan battle, I think):
-Enemy Experience Given (small but noticeable adjustments up - monsters get harder as the player levels up, so it's only right they should offer more EXP)
-Dialogue Bank 1
-Dialogue Bank 3 (These will enable me to not worry about dialogue space at all)
-Dialogue Bank 2 (This will enable me to have townspeople change their text without making major adjustments to their speech algorithms)
-Event Calls (there are only 86 of these, and I've used around 50 so far. Don't have to worry about running out of these now!)
-Location Triggers (This will allow different event calls to result from the same trigger points, and will also enable me to have progress-dependent treasure chests, a la FFVI!)

In addition to all of that, I now have more freedom to tweak various pieces of game mechanics that I would have gone without doing before for fear of space limitations.
Example: Avon, the hired Bard, is now better at using items than the rest of the characters.
I had already improved the Salve command so that, instead of just using one Cure1 item to cast the Cure1 spell on all party members, now he is able to split any single-target item among all targets (works for healing and attack items).
Now, I've also made adjustments to the damage calculation formula, so when Avon uses the Item command, the Damage/Healing output is equal to (Normal Damage/Healing output * Avon's Level) / 10; and when he uses the Salve command, the Damage/Healing output is equal to (Normal Damage/Healing output * Avon's Level) / 4, then the result is divided among the entire target party. This allows Avon to keep Cure1 potions somewhat relevant for most of the early portion of the game, keep Cure2 potions relevant for at least the first half of the game, and keep Cure3 potions a viable option for pretty much the whole game (they heal one character for 9999 beginning at level 58 or so).

For those interested in seeing how it all works, when the regular damage formula would load the damage into the X register, TfW will instead run the following subroutine:
Code: [Select]
$20/8000 AD 81 26    LDA $2681  [$00:2681]   Load user's ID
$20/8003 29 0F       AND #$0F               
$20/8005 C9 04       CMP #$04                Is it Avon?
$20/8007 F0 05       BEQ $05    [$800E]      If it IS Avon, skip to 800E
---------------------------------------------
$20/8009 7B          TDC                     
$20/800A AE 41 39    LDX $3941  [$00:3941]   
$20/800D 6B          RTL                     Otherwise use normal damage/healing output
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$20/800E AD 42 39    LDA $3942  [$00:3942]   Load upper byte of Damage/Healing output
$20/8011 30 07       BMI $07    [$801A]      If bit 7 is set, skip to 801A*
$20/8013 09 80       ORA #$80               
$20/8015 8D 42 39    STA $3942  [$00:3942]   Otherwise set bit 7*
$20/8018 80 EF       BRA $EF    [$8009]      And jump back to 8009
---------------------------------------------
$20/801A AD 42 39    LDA $3942  [$00:3942]   Load upper byte of Damage/Healing output
$20/801D 29 7F       AND #$7F               
$20/801F 8D 42 39    STA $3942  [$00:3942]   Clear bit 7*
$20/8022 AD D1 26    LDA $26D1  [$00:26D1]   Load Avon's Command used
$20/8025 C9 0A       CMP #$0A                Is it Salve?
$20/8027 F0 09       BEQ $09    [$8032]      If so skip to 8032
$20/8029 C9 01       CMP #$01                Is it Item?
$20/802B D0 DC       BNE $DC    [$8009]      If not jump back to 8009
---------------------------------------------
$20/802D A2 0A 00    LDX #$000A              Load 000A into X
$20/8030 80 03       BRA $03    [$8035]      Skip to 8035
---------------------------------------------
$20/8032 A2 04 00    LDX #$0004              Load 0004 into X
---------------------------------------------
$20/8035 AD 82 26    LDA $2682  [$00:2682]   Load Avon's Level
$20/8038 85 E8       STA $E8    [$00:06E8]   Store in E8
$20/803A C2 20       REP #$20               
$20/803C AD 41 39    LDA $3941  [$00:3941]   Load Damage/Healing output
$20/803F 20 5D 80    JSR $805D  [$00:805D]   E8 (2-byte) = Avon's Level * Damage/Healing output
$20/8042 A5 E8       LDA $E8    [$00:06E8]   Load result
$20/8044 20 7C 80    JSR $807C  [$00:807C]   Divide by X
$20/8047 AA          TAX                     Transfer result to X
$20/8048 7B          TDC                     Clear A
$20/8049 E2 20       SEP #$20                Set A to 8-bits
$20/804B 6B          RTL                     End

*NOTE: For some reason, this subroutine always runs twice - playing with the uppermost bit here (which isn't set for healing until after the routine runs) keeps the calculations from running twice.

77
This taken right from Vanilla:



So it has to be both Rydia Joins and Rosa's Sick, but you can change it to whatever you want in FF4kster, or take the flags out altogether (just move the finger to a flag and hit delete).

78
Yeah, it's the one that's set when you see Rosa in Kaipo.

What you could do to find it (if I hadn't just told you) would be to view the NPCs in Watery Pass 1F, look at Tellah, and see what flag would be necessary to trigger the "meeting tellah" event when you talk to him.

79
Final Fantasy IV Research & Development / Re: Changing details of Dark Wave
« on: September 13, 2016, 07:57:28 PM »
Hey, if you guys want to change the palette of the waves/coins/flying fartblasters: the byte in ROM that specifically determines which palette is used for Dark Wave is 1480C in ROM (2C80C in LoROM if you wanna fiddle live in Geiger's).
A few choices that I've found seem particularly conducive to coin color are 07, 11 and 15, but I'm sure there are others. These are the same palettes used by spells and (I think) weapons, so best not to mess with the palettes themselves, lest you suffer the consequences, but 1480C dictates which one is used by this command specifically, so have at it!

80
Oh, I saw it, but I was responding to this
And so it's basically just trial and error when looking for the position in which to place the title?
I thought maybe in addition to getting the title screen made, you'd want to fully understand the process, in the event that you might ever want to undertake a project like this again (or make changes down the road).

81
Trial and error works, but you could also figure it out. If you wanted to start right below the F in FINAL, you could find the tile that his the lowest part if the letter, figure out what tile number it is, find that in the tile map,  then move down exactly four lines (or, one row of tiles) from that point.

82
As I said, all of the data beginning at 46000 represent every tile in the title screen, left to right, top to bottom, so the first B3 04 represents the tile in the top left corner. The second B3 04 represents the second tile in the top row. The third B3 04 represents the third tile in the top row. And so on. The first four lines of data are the top row of tiles. The next four lines are the second row of tiles (which is where the actual graphics begin, with the top of the sword's orb).
And it's the B3 that tells the game which tile to use, not the 04. You're pretty much only going to use the second byte for palettes. The first byte chooses the tile.

83
OK, here we go...

So you've got your new tiles drawn for your title screen... now to arrange them properly on the title screen.

First thing you'll want to do is open your graphics editor and jump to the title screen graphics (44000 in ROM with no header - for the rest of the tutorial, I will assume no header). You'll want to have the viewer set like this:

Specifically, sixteen tiles across, with the top left serif of the F as the first tile. This is important. I'll explain why in a bit. Keep that graphics editor window open in the background.
Now, open your hex editor. Actually, possibly the best way to do it is to open your ROM in Geiger's SNEX9X Debugger and use the hex viewer, but it's not necessary to do that. it just makes viewing your results quicker.
You're gonna want to jump to 46000 in ROM (if you're using Geiger's, you'll jump to 8E000, the LoROM offset).
You'll see the following:

This is a map of all of the tiles in the title screen, Left to Right, Top to Bottom. Each tile is represented by two bytes.
Each "B3 04" represents one black (blank) tile.
"But what does it mean?" you may ask.
Good question.
These two bytes represent a (I'm told) pretty standard format of graphical representation. The bytes are reversed, so B3 04 actually means 04B3. Several pieces of information are encoded into these two bytes. In order to properly interpret the information, you have to know what the bits of those bytes represent. The sixteen bits of these two bytes represent the following:
Code: [Select]
vhopppcc cccccccc
v: vertical orientation - 0 = right side up, 1 = upside down
h: horizontal orientation - 0 = forwards, 1 = backwards
o: priority - this has to do with layering. it's not important here because there is only one layer, but if there were two layers of graphics, this bit would determine whether the tile was the one on top or the one behind
ppp: palette - SNES loads eight palettes at any given time, and the one being used by the tile in question is determined by these three bits: 000 = palette 0, 001 = palette 1, 010 = palette 2, 011 = palette 3... 111 = palette 7
cc cccccccc: Character - these ten bits determine which tile is being used out of the (predetermined) array. Technically, this enumeration allows for the use of up to 1024 different tiles, but FFIV only loads 324 into VRAM at a time, so this value will never be higher than 0101111111 (or 17F in hex)
So, using the first blank tile as an example, let's look at a tile and see what's going on.
B3 04
means: 04B3
in bits: 00000100 10110011
Code: [Select]
v h o ppp cc cccccccc
0 0 0 001 00 10110011
v=0: The tile is right side up
h=0: The tile is forward-facing
o=0: the tile is in the back layer
ppp=001: the tile uses palette 1
cccccccccc=0010110011: the tile uses tile #B3

OK, great tile B3. So what the heck is tile B3?
Well, this is where the particular arrangement in your graphics editor comes into play. If we label the axes of the array...

Row B, Column 3 is the empty tile between "1991" and "SQUARE."

Each horizontal row of tiles on the title screen is represented by four lines of data, meaning each row is 32 tiles, represented by 64 bytes in this fashion.

Let's look at a second example - the first tile that is not B3 04. That would be this one:

that's 84 08
or, 0884
or, 00001000 10000100
Code: [Select]
v h o ppp cc cccccccc
0 0 0 010 00 10000100
v=0: The tile is right side up
h=0: The tile is forward-facing
o=0: the tile is in the back layer
ppp=010: The tile uses palette 2
cccccccccc=0010000100: the tile uses tile #84
Referencing the grid above, row 8 column 4 is the top left of the orb on the hilt of the sword. But you probably could have guessed that.

So that's how all this works. The rest is just determining where your newly drawn tiles are going to be placed and changing the data from (presumably) B3 04 to whatever properly represents your tiles.
As far as which palette to choose... Assuming you eventually want to have the letters "fade in" like I had them do in TfW, then your letters should be simple in color: for now use palette 1 (001), which is the palette used by the copyright date, etc.. When I come in and do my thing, I'll be making changes, but keeping them plain white will assure visibility in the mean time.

Helpful hint: in case you didn't know, the Windows calculator can be used to easily convert numbers between hex, decimal and binary. In the menu at the top, change the view from "Standard" to "Scientific." you can then click the radio button of the format you're starting with, type in your value, then click the radio button of the format you want it converted to.

Hopefully that all made sense, but feel free to ask if you need anything explained in more detail.

84
::throws two pennies at the computer monitor::  Sounds like you figured it out, but I just wanted to add one more formation to the pile that chillyfeez-san created.  Golbez and Shadow Dragon battle.  Wouldn't that work as well?
Yes. Good example. Possibly the best example, actually, since it's one "special size" and one regular rectangular monster.

85
Seems to me like the bomb is trying to appear in the same space where rubi is. I guess you could try another arrangement number, where the second monster (bomb) is further forward.
Rubi's position, as a "special size" monster, ignores the position dictated by the arrangement, but bomb is a regular monster. Maybe try whatever formation is used by the trap door battles (just thinking of one where a second monster appears in front of the first), or maybe one of those "conjurers" or whatever (the little round summoners that I think show up in the feymarch cave). Oh, or the searchers from the giant of bab-il. One of those arrangement numbers should probably do the trick.
Also, if you go to edit rubi's "size," but don't actually cha he it, a new menu will pop up allowing yoiu to edit some of the special Size's details, including x-position. Change that to 0 to move him as far back as possible.

Regarding the character graphic, well, DK Cecil is 0, not 1. So when you say "change to 1," the game searches through RAM until it finds a value that matches Kain, thus a non-character graphic shows up. I'm guessing you'd also want to do 10 for P Cecil, not 11. But I haven't actually counted.

 :edit:
BTW, jsyk, these short answer questions are making it take longer for me to get my shit together about title screen edits. Just sayin'.
 :tongue:

86
1) What happens if you change the monsters in the Rydia encounter to Rubicant and a Bomb, then just copy Rydia's AI into Rubi's? Something along those lines should work, I would think...
2) by "normal," do you mean "not red?" If so, it's just another screen tint instruction. Make sure you do the screen tint during the Black Screen, before you load the ship map. I think, once you have tinted the screen one color, the next screen tint instruction will always un-tint, no matter the parameter. If that ends up being untrue, go with "15." If I'm off base about what "normal" means, well, story of my life. Just kidding. If 'm off base about what normal means, then please clarify.

87
Final Fantasy IV Research & Development / Re: Changing details of Dark Wave
« on: September 12, 2016, 01:17:22 PM »
OK, here it is.

Sorry it took so long, but I got a little fancy, as I tend to do.
I got into investigating the sound effects, which I hadn't planned to do because it was sort of uncharted territory.
Anyway, now instead of the "shink!" sound it usually makes when Cecil draws his weapon to do the attack, it makes the "obtained item" noise; and instead of the dark wave sound effect, it makes the "cha-ching" noise you hear when buying stuff at a shop. These seemed more consistent with a money-throwing attack.
 :cycle:

Anyway, the command is called "Coin." I couldn't think of anything better to call it that was 5 letters or less, but you can change that to whatever you want with FF4kster.
As discussed, it will attack all foes for an amount equaling 30 x the user's level.
The total damage done to all foes combined is the amount of GP expended.
If GP < Lv x 30 x Total # Monsters, then instead the damage will be Total GP / Total # Monsters (and the user ends up with zero GP).
If the player has zero GP, the character will simply walk forward, fist bump the air, then return to ranks.

Apply this patch to an unheadered copy of Final Fantasy II (U) (v1.1) [!]

Enjoy!

88
Final Fantasy IV Research & Development / Re: Hacking the Title Screen
« on: September 12, 2016, 10:15:25 AM »
Yeah, except it's not - strictly speaking - a scripted fight. All of the stuff that happens in that battle is in Rydia's (and Titan's) AI. If you happened to spend time leveling up to 99 before the fight, you could probably actually defeat Rydia, but the earthquake and subsequent events would still occur afterwards.

89
Final Fantasy IV Research & Development / Re: Changing details of Dark Wave
« on: September 12, 2016, 10:09:33 AM »
If its real money, toss them my way  :laugh:
OK, Squall, but I'll toss invisible money.
 :wink:

90
Final Fantasy IV Research & Development / Re: Hacking the Title Screen
« on: September 11, 2016, 10:35:07 PM »
I'll try to put together some tutorial stuff tomorrow after I wake up. It's not difficult, but it is a process.