Users browsing this thread: 2 Guest(s)
Creating a new area after Kefka has been killed (FFVI Dragon's Den in FF3 US)

#1
Posts: 13
Threads: 2
Thanks Received: 0
Thanks Given: 0
Joined: May 2011
Reputation: 0
Status
None
Okay, next problem, lads!

FF6A opens the Dragon's Den after Kefka has been curbstomped (a wonderful word that I try to work into many conversations) and I have a fairly good idea of how to go about that.

My problem, however, is not simple. Also, I may have interpreted the meaning of the addresses below incorrectly. Please either correct or point me to where I may learn, thanks you...

First, and please excuse me if my English fails to convey my intent, I wish to create a situation like the following:

1) Kefka is killed [bit xx is set, but Kefka remains a la Hidon for fighting whenever the fancy strikes you - this is just so the new area will become accessible]
2) New area becomes accessible by airship [display dialogue message $0B8D, wait for button press)
3) If ($Eventbit?($3-digit bit???)[$SpecificKefkaDead?, bit ?] is set, branch to $CA02D5 (pause for 120 units)
4) Choose 3 parties.
5) Load map $(I don't know how the maps are determined with the numbers, but I was going to use 0C7, 0DE, you know...)

My first problem is obvious: I don't really know what I'm doing, but that's why I'm asking. I'm going to mess up about 10.000 copies of FFVI before I get it right, and this is just the give me that first push.

Secondly, I've never seen a concise explanation of what something like this means:

CA/019B: C0 If ($1E80($127) [$1EA4, bit 7] is set), branch to $CA02D5

It's easy to understand $CA019B:C0 as the event address, and I know that $1E80 has something to do with the Event bytes stored in RAM from $1E80 to $1EDF in bank $7E, and I am guessing that the $127 is the event bit itself, meaning "Serves to ensure that branching always occurs 1 (always remains clear)" whatever that means..., but I don't understand the second part in []s, although the 'branch to $address is simple enough to understand.

I suppose it would help if we had bank disassemblies beyond C0, C1, C2, C3, C5, D4, E5, and EE written up and exposed...

Sorry, tangent.

Anyway, my question is essentially "How would I create an overworld airship event similar to entering the Phoenix Cave or Kefka's tower, but instead directing it to a map of my choosing, as well as ONLY having it be available AFTER Kefka has snuffed it?"

Sorry for the half-educated rambling and what-have-you above...I'm getting excited about FFVI hacking, but I'm in that dangerous partially-educated stage where I regurgitate more than I understand.
  Find
Quote  

#2
Posts: 831
Threads: 41
Thanks Received: 16
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
Boy, you sure are learning really fast...let's start step by step...

(05-26-2011, 12:45 PM)danyetman Wrote: but I'm in that dangerous partially-educated stage where I regurgitate more than I understand.

I cannot stop laughing on this one Laugh

(05-26-2011, 12:45 PM)danyetman Wrote: First, and please excuse me if my English fails to convey my intent, I wish to create a situation like the following:

1) Kefka is killed [bit xx is set, but Kefka remains a la Hidon for fighting whenever the fancy strikes you - this is just so the new area will become accessible]
2) New area becomes accessible by airship [display dialogue message $0B8D, wait for button press)
3) If ($Eventbit?($3-digit bit???)[$SpecificKefkaDead?, bit ?] is set, branch to $CA02D5 (pause for 120 units)
4) Choose 3 parties.
5) Load map $(I don't know how the maps are determined with the numbers, but I was going to use 0C7, 0DE, you know...)

My first problem is obvious: I don't really know what I'm doing, but that's why I'm asking. I'm going to mess up about 10.000 copies of FFVI before I get it right, and this is just the give me that first push.

The event in thamasa where the cave that leads to the esper mountain becomes accessible after strago talks to the party about the village of the mage warriors will be a great starting point for this part that you want to do. This event, after it has occurred, will enable the cave to the espers be open for you to enter it.

My guess is that, after you beat final kefka, you don't want to activate the event of the end of the game; instead, you'd like to warp the parties out of kefka's tower and give the player the message of availability of a new dungeon. This can be done, as you have guessed, by using event bits.

The game has bits that, depending on whether they are set or cleared, will let the "game" know when an event has occurred or not (at least I believe so...). These are used by if/else statements to activate events or stop the game from activating them. Which brings the topic of your next question...

(05-26-2011, 12:45 PM)danyetman Wrote: Secondly, I've never seen a concise explanation of what something like this means:

CA/019B: C0 If ($1E80($127) [$1EA4, bit 7] is set), branch to $CA02D5

If you've seen if/else statements from any programming courses at college, this may make some sense. Depending on which events have taken place, the IF instruction asks the game: Has the event occurred? If it has, let's do the next instruction.

For that particular address, when [$1EA4, bit 7] is set, then the game executes the next instruction: "Load subroutine CA/02D5", or simply, "let's go to address CA/02D5, complete all actions, and return back to this point to continue executing other pieces of code.

(05-26-2011, 12:45 PM)danyetman Wrote: Anyway, my question is essentially "How would I create an overworld airship event similar to entering the Phoenix Cave or Kefka's tower, but instead directing it to a map of my choosing, as well as ONLY having it be available AFTER Kefka has snuffed it?"

Good question, I actually don't know about this one. My guess is that you would need a bit to mark the first time someone enters the phoenix cave or kefka's tower. And, when it's the first time you enter one of these places, you'd like to load the map of the falcon with the party on top of it, and have a specific event unfold only once. That's where the IF comes in handy.
Quote  

#3
Posts: 13
Threads: 2
Thanks Received: 0
Thanks Given: 0
Joined: May 2011
Reputation: 0
Status
None
(05-26-2011, 03:48 PM)angelo26 Wrote:
(05-26-2011, 12:45 PM)danyetman Wrote: but I'm in that dangerous partially-educated stage where I regurgitate more than I understand.

I cannot stop laughing on this one Laugh

I'm so glad that my ineptitude and inexperience gives you pleasure. We Germans have a word for that, actually. It's Schadenfreude. Go look it up...jerk.Laugh

(05-26-2011, 03:48 PM)angelo26 Wrote: If you've seen if/else statements from any programming courses at college, this may make some sense. Depending on which events have taken place, the IF instruction asks the game: Has the event occurred? If it has, let's do the next instruction.

For that particular address, when [$1EA4, bit 7] is set, then the game executes the next instruction: "Load subroutine CA/02D5", or simply, "let's go to address CA/02D5, complete all actions, and return back to this point to continue executing other pieces of code.

Yes, I took Visual Basic.NET in University, but that was several years ago, and the only programming language, I'm ashamed to say, that I'm reliably good at is...erm...Object REXX.

Laugh, and I shall smite thee with big...smitey...things...of smite-itude.

But back on topic:

"CA/019B: C0 If ($1E80($127) [$1EA4, bit 7] is set), branch to $CA02D5"

So, let me see if I understand this. $CA/019B: C0 is the instruction within the Hi-ROM bank of CA, which is basically just a convenient way of saying the Hex address of 000A019B gets changed to C0 from its previous value?

Then a simple If/Else, which translates to "If Eventbit $1E80 is set to $127, then jump to bank instruction $CA/02D5 and proceed from there, otherwise Eventbit $1EA4 is set to bit 7". I'm fairly confident in all of that...up until the "Eventbit $1EA4" part.

(05-26-2011, 03:48 PM)angelo26 Wrote:
(05-26-2011, 12:45 PM)danyetman Wrote: Anyway, my question is essentially "How would I create an overworld airship event similar to entering the Phoenix Cave or Kefka's tower, but instead directing it to a map of my choosing, as well as ONLY having it be available AFTER Kefka has snuffed it?"

Good question, I actually don't know about this one. My guess is that you would need a bit to mark the first time someone enters the phoenix cave or kefka's tower. And, when it's the first time you enter one of these places, you'd like to load the map of the falcon with the party on top of it, and have a specific event unfold only once. That's where the IF comes in handy.

I'd already discovered the "first time" instruction for Kefka's Tower, but I think I will take a look at the Thamasa/Esper Mountain event, though I was originally thinking of the Thamasa/Ebot's Rock event. Same difference.

The difficulty, I think, will be in finding a bit that is set after the defeat of Kefka and either before or after the credits in order to set up a save operation, followed by an event trigger that will 'unlock' the new area.

Ai yi yi yi....
  Find
Quote  

#4
Posts: 831
Threads: 41
Thanks Received: 16
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
(05-26-2011, 10:21 PM)danyetman Wrote:
(05-26-2011, 03:48 PM)angelo26 Wrote:
(05-26-2011, 12:45 PM)danyetman Wrote: but I'm in that dangerous partially-educated stage where I regurgitate more than I understand.

I cannot stop laughing on this one Laugh

I'm so glad that my ineptitude and inexperience gives you pleasure. We Germans have a word for that, actually. It's Schadenfreude. Go look it up...jerk.Laugh

Don't take it personal, neither your inexperience nor your ineptitude gives me pleasure. What I found funny was your combination of words on that sentence. I apologize for any misunderstanding.
Quote  

#5
Posts: 13
Threads: 2
Thanks Received: 0
Thanks Given: 0
Joined: May 2011
Reputation: 0
Status
None
(05-26-2011, 10:43 PM)angelo26 Wrote: Don't take it personal, neither your inexperience nor your ineptitude gives me pleasure. What I found funny was your combination of words on that sentence. I apologize for any misunderstanding.

I was teasing you - I wasn't offended, just amused.
  Find
Quote  

#6
Posts: 831
Threads: 41
Thanks Received: 16
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
(05-26-2011, 10:21 PM)danyetman Wrote: Yes, I took Visual Basic.NET in University, but that was several years ago, and the only programming language, I'm ashamed to say, that I'm reliably good at is...erm...Object REXX.

Laugh, and I shall smite thee with big...smitey...things...of smite-itude.

Don't worry, I'm terrible myself at programming, and I'm barely decent at C/C++.

(05-26-2011, 10:21 PM)danyetman Wrote: But back on topic:

"CA/019B: C0 If ($1E80($127) [$1EA4, bit 7] is set), branch to $CA02D5"

So, let me see if I understand this. $CA/019B: C0 is the instruction within the Hi-ROM bank of CA, which is basically just a convenient way of saying the Hex address of 000A019B gets changed to C0 from its previous value?

C0 is an instruction that is written in the C0 bank (the bank for all event instructions) to be used during events as an IF statement.

(05-26-2011, 10:21 PM)danyetman Wrote: I'd already discovered the "first time" instruction for Kefka's Tower, but I think I will take a look at the Thamasa/Esper Mountain event, though I was originally thinking of the Thamasa/Ebot's Rock event. Same difference.

The difficulty, I think, will be in finding a bit that is set after the defeat of Kefka and either before or after the credits in order to set up a save operation, followed by an event trigger that will 'unlock' the new area.

There's a document with all bits and their uses in the game, but I can't seem to find the thread in which it's posted.
EDIT: The event list document is here:

http://novaliaspirit.99k.org/ff6/file/ff...t_bits.txt
Quote  



Forum Jump:

Users browsing this thread: 2 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite