Users browsing this thread: 1 Guest(s)
All Things Event Hacking

#11
Posts: 2,549
Threads: 98
Thanks Received: 147
Thanks Given: 159
Joined: Aug 2009
Reputation: 52
Status
Nattak\'d
Zeemis' great tutorial will explain how to do the custom title screen. Thanks to everything he provides, it's really easy. http://www.youtube.com/watch?v=29q6SY9XAyU

As for question # 2, you would want to open the event dump and find the event in question. Then look for the 6B, or (load map) command. This is what it looks like.

CC/985F: 6B Load map $0017 (Narshe, mountaintop (WoB / "Long ago, the War of the Magi...")) instantly, (upper bits $2000), place party at (18, 25), facing down

The first part of this string of commands, "the 6B, XX" is the first map that is loaded in that prologue. So you would want to get the correct address from "C/985F" which is:
"C9A5F" and go to it. You will see "6B,17" Which is "Load map, Narsh Cliffs"
Changing the 17 value to something else will generate you a new map. To know what map you are changing it to, open up the Level Editor, "FF3LE" and it will tell you what map is what, or rather what byte to enter, on the left side once you click the arrow.
You'll notice that 017, or "$17" is "Narshe, Outside, Northern Cliff." Wink
Just know that to load the maps over 100, you will need to look at this excerpt, taken from this very thread.

"How to use the maps over #99 (maps that are more than 2 bytes) -
The third byte after the 6B, xx, is the second byte of the map to load (the high byte) but it also has various flags it can use to determine other things. The highest two bits are used to determine the direction you face when the map loads, there's another to indicate the location name, and I'm not sure what the others do. Basically, if you want to use maps 100-19F, set the lowest bit of the third byte. 20->21, A0->A1"

I hope that makes since.


We are born, live, die and then do the same thing over again.
Quote  

#12
Posts: 831
Threads: 41
Thanks Received: 16
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
I'm going to write what I've found about event commands before I forget it all or my notes are lost for all eternity.

3A - Allows party to move around during events

3C - Command that established the order of the party in an event. You always need to provide 4 bytes after it. Example, for a party of terra, locke and strago, the command 3C 00 01 07 FF tells a specific event that the party is going to be composed of these 3 characters (last space is blank). The game's camera will always follow the character on the first slot of this command (terra in this case). At the end, place the 45 byte which is used to refresh objects.

3F - This command is used to have a character join your party AND leave it. I believe the game determines if the character should be inserted or removed from your party by using the commands "Create Object" (3D) and "Delete Object" (3E).

B2 - Call Subroutines. This command will call subroutines in the CA, CB or CC bank.
Subroutine for having starry nights - B2 6A 03 01 (Calls subroutine $CB6A03)
Subroutine for game over if a battle is lost - B2 A9 5E 00 (Calls subroutine $CA5EA9)
Subroutine to place you at position XX, YY if you lose a battle during an event - B2 E7 C8 02 (Calls subroutine $CCC8E7), 7E XX YY (places party at position (XX,YY) )
Subroutine for Interceptor's Bark - B2 BF 6A 01 (Calls subroutine $CB6ABF) One bark per each subroutine

48 XX YY - calls and displays text in events. Most important is the first bit of YY. 0 means the text is displayed at the top of the screen, 8 means it's going to be displayed at the bottom of the screen.

89 - Assign Interceptor status to any character. If you want to give the status to locke (example), the event code is 89 01 00 40. 01 is Locke's ID.

E0 XX - This command is used ONLY when a character is performing an action, as a means of pausing an actual action. XX means the number of frames to pause. E0 04 means "pause for 4 frames".
Quote  

#13
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
Where does text get called from during the 48 command? Does this apply to NPC 'town dialogue', or just scripted events? What about in-battle dialogue?

Awesome listing, by the way.
Quote  

#14
Posts: 831
Threads: 41
Thanks Received: 16
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
You can use either 48 XX YY or 4B XX YY to have text appear during events. The difference is that when you use the 48 byte, you want the text to appear and dissappear very fast, without waiting for the player to press the a or b button to continue. When you use the byte 4B in front, it means you want the player to read the text and press a button before moving on. NPC's are given usually the 4B XX YY command so the game only continues after you press a button.

But yeah, some NPC dialogue is given through events, for example, strago's and relm's dialogue after you meet them:

CB/DCB3: 4B BB 07 Display dialogue STRAGO: What a beautiful day.
CB/DCB6: FE Return

CB/DCB7: 4B BC 07 Display dialogue RELM: Interceptor, please come back again and play!
CB/DCBA: FE Return

In any of these two, if you change the 07 byte to 87, the text box will be displayed at the bottom of the screen.

For in battle text and events, I'm not yet sure, I don't know how to manipulate in battle events yet.

Hope this helps :p
Quote  

#15
Posts: 161
Threads: 14
Thanks Received: 4
Thanks Given: 0
Joined: Sep 2010
Reputation: 5
Status
None
Yup Angelo got this spot on. I love the $48 command, ha. It was probably overused in my game but heh oh well. And congrats on finding the bytes for the text being displayed. I think I looked everywhere for a byte that made text display at the top of the screen WITH a text box. I could always find one w/o a text box at the top, but it wasn't ever what I wanted. I think that flag was never made Sad
Anyways, here's a helpful document for all event editors, as I can see that the event coders are all on this thread Laugh

http://www.angelfire.com/al2/imzogelmo/E...mmands.txt


This document is a list of ALL the event commands, what they do, and how to use them. I hope it helps, but also know, if you want to know what a command is "truly" doing, as in the actually ASM coding of it, you'll need to look through the $C0 banks.
Nevertheless, this document is brief in it's explanation and was a tremendous help to me Smile

P.S. Glad to see more people wanting to get into events, as well!


[Image: funnysiga.jpg]

MY YOUTUBE CHANNEL Laugh
http://www.youtube.com/user/xJCSx1
  Find
Quote  
[-] The following 1 user says Thank You to xJCSx for this post:
  • RPGX_Omega (05-13-2016)

#16
Posts: 831
Threads: 41
Thanks Received: 16
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
(02-20-2011, 09:58 AM)xJCSx Wrote: Yup Angelo got this spot on. I love the $48 command, ha. It was probably overused in my game but heh oh well. And congrats on finding the bytes for the text being displayed. I think I looked everywhere for a byte that made text display at the top of the screen WITH a text box. I could always find one w/o a text box at the top, but it wasn't ever what I wanted. I think that flag was never made Sad
Anyways, here's a helpful document for all event editors, as I can see that the event coders are all on this thread Laugh

http://www.angelfire.com/al2/imzogelmo/E...mmands.txt


This document is a list of ALL the event commands, what they do, and how to use them. I hope it helps, but also know, if you want to know what a command is "truly" doing, as in the actually ASM coding of it, you'll need to look through the $C0 banks.
Nevertheless, this document is brief in it's explanation and was a tremendous help to me Smile

P.S. Glad to see more people wanting to get into events, as well!

OHH I didn't know this document existed, This will surely make my life so much easier now, lol

Thanks Justin :p
Quote  

#17
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
Hey, maybe one of you two know where the correct document is, but....

4D : 3 : Invoke battle, enemy set A, background B. Background AND $80 disables mosaic. $40 disables swoosh sound.

For this event command, where can I find the list of what Enemy Set "A"s value is?
For example, I know from the Event Dump that the Whelk's A is $40, Vargas is $42, the opening battles with Lobos are $00-$04, and the battles with Phunbaba are $80-$83. I'm curious if I can find a list to figure out how to make this command summon any battle formation. Specifically Formation (decimal) 135. ...I'm pretty sure it can't be as simple as converting it to hex $87 because that's right by Phunbaba's ID already... Any thoughts/insight?
Quote  

#18
Posts: 831
Threads: 41
Thanks Received: 16
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
JCS is not available until the 9th of March, let's see...

I first thought that by looking at the enemy formations in FF6usME could prove to be useful, but I was wrong.

Then I found the "monster randomosity" on http://www14.brinkster.com/assassin17/guides.htm which probably does not help at all...

Give me some time to see if I can find another document or at least ask lenophis about it.

All I remember is that 4F makes you battle the flame eater from the burning house.

EDIT: Think I figured this out, only partially though.

Phunbaba's pack formation on usME are 384,385,386,387. If you convert 384 to hex, it is 180. the last two bits, 80, are the one used to call phunbaba. What happens to the first bit, I still don't know...but I already asked lenophis on this.

So you can probably use the usME's monster packs as a list to use with the 4D event command.
Quote  
[-] The following 1 user says Thank You to Angelo26 for this post:
  • RPGX_Omega (05-13-2016)

#19
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
Okay, I actually found it on my own by some miracle.

The 4D command invokes battles based on their Zone sets. The only Zone sets that are valid are the 2-option sets, the first of which is ID $00. It's imperative that you set both options to the same formation ID to insure the boss battle you want. (Alternately, randomized boss battles!)

Now my big problem is figuring out how to -stop- the command from continually activating once a battle is invoked.

Here's what I'm working on:
Trying to add a boss fight into this instance where a minor cutscene happens. It even has its own dedicated Event Bits, so I figured everything would work perfectly.

Lone Wolf pops in on the Cliff of Narshe just before the party can move to the next area for the big scene with Mog.
CC/D4A8: C1 If ($1E80($23C) [$1EC7, bit 4] is clear) or ($1E80($23D) [$1EC7, bit 5] is set), branch to $CA5EB3 (simply returns)
CC/D4B0: 3D Create object $1A
CC/D4B2: 41 Show object $1A
CC/D4B4: 45 Refresh objects
CC/D4B5: 1A Begin action queue for character $1A (NPC $1A), 2 bytes long (Wait until complete)
CC/D4B7: 89 Move vehicle/entity right 3 tiles
CC/D4B8: FF End queue
CC/D4B9: 1A Begin action queue for character $1A (NPC $1A), 5 bytes long (Wait until complete)
CC/D4BB: DC Make vehicle/entity jump (low)
CC/D4BC: CD Turn vehicle/entity right
CC/D4BD: E0 Pause for 4 * 4 (16) frames
CC/D4BF: FF End queue
CC/D4C0: 1A Begin action queue for character $1A (NPC $1A), 2 bytes long (Wait until complete)
CC/D4C2: 8B Move vehicle/entity left 3 tiles
CC/D4C3: FF End queue
CC/D4C4: 42 Hide object $1A
CC/D4C6: 45 Refresh objects
CC/D4C7: D4 Set event bit $1E80($23D) [$1EC7, bit 5]
CC/D4C9: DC Set event bit $1E80($640) [$1F48, bit 0]

CC/D4CB: 3D Create object $1C
CC/D4CD: 3D Create object $1B
CC/D4CF: 41 Show object $1C
CC/D4D1: 41 Show object $1B
CC/D4D3: 45 Refresh objects
CC/D4D4: 1C Begin action queue for character $1C (NPC $1C), 3 bytes long (Wait until complete)
CC/D4D6: C7 Set vehicle/entity to stay still when moving
CC/D4D7: 09 Do vehicle/entity graphical action $09 (kneeling)
CC/D4D8: FF End queue
CC/D4D9: DD Clear event bit $1E80($643) [$1F48, bit 3]
CC/D4DB: 3A Enable player to move while event commands execute
CC/D4DC: FE Return

In the italicized section, I tried this:
The idea was to kick out a party member and let Mog randomly struggle against Lone Wolf with you before you made your decision to save him or not.
3F 34 00 - remove Party member 3 from party
3F 0A 01 - assign character $0A to Party 1

D4 3D DC 40 - Set the Event bits as before.

4D 9A 3F - Invoke Battle $9A
B2 A9 5E 00 Call Subroutine for Game Over effect if the Party loses the fight.
96 - Restore screen from Fade-out

3F 0A 00 - remove character $0A from party

(Create Object $1C - beginning to setup the next cutscene where LoneWolf is actually holding poor Mog for leverage)

The problem is that once the battle ends with the party victorious... the map screen loads... and then the battle starts up again! It's an endless loop until you either quit the game or the party dies (Dying works perfectly). I tried this with and without the code where Mog replaced a party member and the same thing happened, so it's not any mistake there. I've tried NOPing out and restoring the "Refresh Screen" command. I tried using an FE Return command directing after the Fade-In, directly after the "Remove Mog" command, and not using one at all.

Something about the way the event bits are setup must be causing the loop, but I can't figure it out at all. I tried mimicking just about every different variation of the 4D command from the event dump and the best results I've gotten were the game just freezing up and looping the background music once the map screen returned after the fight.

Any thoughts?
Quote  

#20
Posts: 831
Threads: 41
Thanks Received: 16
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
It looks ok to me, what you did there...

Did you check that you didn't forget any commands? For example, when having a character move three spaces to the right, if I forget to end the character action with FE the game really does crazy things, like summoning the mine cart scene at vector, or even returns me to the moogle fight with the marshall at the start of the game.

I'd say that you need to post the actual code you have for that event, probably that way a bug may be found faster?
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite