All Things Event Hacking
This thread will be used to handle all things pertaining to event hacking & event related stuff, as well as some important hex addresses, questions, answers, sharing information, findings, & helping others whenever possible etc. I will also be updating stuff here all the time. Please feel more than welcome to contribute any useful information you might want to share, or discuss. This is not an in depth tutorial by any means. Much of this info here was gathered from Lenophis, assassin, Dragonsbrethren, Novalia Spirit, Cless, Master ZED, Imzogelmo, Djibriel, as well as other FF6 hackers.
_ _ _
The Basics:
First off if you don't know anything about editing FF6 events, like I did, you'll want to grab a copy of Imzogelmo's Event Dump, so get it here: http://www.angelfire.com/al2/imzogelmo/patches.html
A hex editor: http://www.x-ways.net/winhex.zip
Note: no table files are needed when hacking events.
Make sure when you load the ROM that you go to "option" > "display offset as" > "SNES Hi-ROM"
To get a standard hex address, from a Hi-ROM address that you will see in the event dump (ex:"CC/988B") subtract 0xBFFE00. Assuming you have a header that is. If not than subtract 0xC00000 instead.
If you are not sure what 0xBFFE00 or 0xC00000 is, it is hex, and that will not be covered in this thread. Teaching how to hex edit is rather hard to explain. It's not really all that bad though so... go learn it! =p
Here's some good links that will help you get started.
http://www.ascii.cl/conversion.htm
http://www.romhacking.net/start/#hex
The best way I've found to navigate much faster through the event dump, is use the "search" or "find" on your document reader program, and search for the dialog you know corresponds with the event. For instance if you wanted to find the event where Locke walks into Arvis' house in the beginning, I would search for the words "the term treasure hunting" because I know Locke says those exact words. Then that would bring me right to the event I'm looking for.
_ _ _
Keywords:
Useful information:
Thread with good info on action queues and how they work:
https://www.ff6hacking.com/forums/showth...ght=npc+10
_ _ _
The Basics:
First off if you don't know anything about editing FF6 events, like I did, you'll want to grab a copy of Imzogelmo's Event Dump, so get it here: http://www.angelfire.com/al2/imzogelmo/patches.html
A hex editor: http://www.x-ways.net/winhex.zip
Note: no table files are needed when hacking events.
Make sure when you load the ROM that you go to "option" > "display offset as" > "SNES Hi-ROM"
To get a standard hex address, from a Hi-ROM address that you will see in the event dump (ex:"CC/988B") subtract 0xBFFE00. Assuming you have a header that is. If not than subtract 0xC00000 instead.
If you are not sure what 0xBFFE00 or 0xC00000 is, it is hex, and that will not be covered in this thread. Teaching how to hex edit is rather hard to explain. It's not really all that bad though so... go learn it! =p
Here's some good links that will help you get started.
http://www.ascii.cl/conversion.htm
http://www.romhacking.net/start/#hex
The best way I've found to navigate much faster through the event dump, is use the "search" or "find" on your document reader program, and search for the dialog you know corresponds with the event. For instance if you wanted to find the event where Locke walks into Arvis' house in the beginning, I would search for the words "the term treasure hunting" because I know Locke says those exact words. Then that would bring me right to the event I'm looking for.
_ _ _
Keywords:
- 1. Byte = Small paired groupings of data that is used in hex. Any two digits make up a byte, for instance 00 or F6 or 01. To distinguish bytes from other numbers, a "$" is placed in front of it. ex: $20
Keep in mind that bytes can also mean different things, depending on what command the byte is following.
- 2. Hex Editor = A hex editor (or binary file editor or byte editor) is a type of computer program that allows a user to manipulate the fundamental binary (0 / 1, zero / one) data that makes up computer files.
- 3. Address: A precise position in the ROM data.
- 4. Offset: Another name for an address, used in hex editors, as well as tile editors.
- 5. Flag = A byte or bytes that will check and either enables or disables certain things from happening. If something is "flagged" to work a certain way, it will no matter what.
- 6. NOP = The byte used to cancel, or to skip to the next byte. There are two bytes to do the same action: $EA and $FD. When specifically working with events, you want to use $FD. If you are working on hex editing any other information that is -NOT- an event, you'll want to use $EA.
Useful information:
Thread with good info on action queues and how they work:
https://www.ff6hacking.com/forums/showth...ght=npc+10
- 1. Bank Dis-assemblies:
http://novaliaspirit.99k.org/ff6/docs.html
http://slickproductions.org/docs.php?id=FF6
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
Instances when interceptor status is given to Shadow - Remember that the "89" is the command to "inflict the following status ailments on character" Which in this case, is Dog Block on character $03, which is Shadow.
Code:CB/0AE2: 89 / Hex Address (B0CE2)
CB/7956: 89 / Hex Address (B7B56)
CC/7068: 89 / Hex Address (C7268)
Regarding the 2nd Ultros battle and the Dirt Dragon -
Code:CA/C0FF: F0 Play song 34 (Grand Finale #2), (high bit clear), full volume
Getting that music play for the Dirt Dragon battle, instead of the default boss music.
99.9999% of battles use the song determined by their formation data. There are a few exceptions like the 2nd battle with Ultros, but generally you need to change the song in the FF3usME > formation data. Now, since there's only 7 songs to choose from in that selection, you'll have to either:
1. Edit the 7 bytes in the C2 table (which would make what FF3usME reports incorrect).
2. Use a formation event (ie fighting Shadow in the Colosseum). Those events have all 127 songs entries available to it, so that would probably be easier to edit.
Instances where characters are assigned graphics and palettes - Note that all characters are assigned graphics and palettes at least once, and sometime in more than one instance.
Check out Madsiur's document here to see where all the characters are assigned their graphics and palettes throughout the game:
http://www.mediafire.com/?co0rb1i20hk2721
_ _ _
Locations of unique & important events:
_ _ _Code:Show title screen
Hi-ROM: CA/5E33:
The beginning intro scene - (1000 years ago...)
Hi-ROM: CC/988B
Hex: C9A8B
CB/9A6F: 8F Unlock all of Cyan's SwdTechs
CC/0F2B: 90 Grants Sabin the Bum Rush
Sabin & Edgar outside night time event
CA/7322: 50 Tint screen (cumulative) with color $9B
CA/7324: 52 Tint characters (cumulative) with color $9B
CC/BF77: 6B Load map $0000 (World of Balance) instantly, (upper bits $0400), place party at (84, 34), facing up, party is in the airship
CC/BF7D: FD Change graphic to Esper Terra
Index of Event Hex Commands $00 - $FF: (Under Construction)
Code:00 = begin action queue for character $00 (Terra) / Do graphical action 00
01 = begin action queue for character $01 (Locke) / Do graphical action 01
02 = begin action queue for character $02 (Cyan) / Do graphical action 02
03 = begin action queue for character $03 (Shadow) / Do graphical action 03
04 = begin action queue for character $04 (Edgar) / Do graphical action 04
05 = begin action queue for character $05 (Sabin) / Do graphical action 05
06 = begin action queue for character $06 (Celes) / Do graphical action 06
07 = begin action queue for character $07 (Strago) / Do graphical action 07
08 = begin action queue for character $08 (Relm) / Do graphical action 08
09 = begin action queue for character $09 / Do graphical action 09
0A = begin action queue for character $0A / Do graphical action 0A
0B = begin action queue for character $0B / Do graphical action 0B
0C = begin action queue for character $0C (Gogo) / Do graphical action 0C
0D = begin action queue for character $0D (Umaro) / Do graphical action 00
0E = begin action queue for character $0E / Do graphical action 0E
0F = begin action queue for character $0F / Do graphical action 0F
10 = begin action queue for character $10 / Do graphical action 10
11 = begin action queue for character $11 / Do graphical action 11
12 = begin action queue for character $12 / Do graphical action 12
13 = begin action queue for character $13 / Do graphical action 13
14 = begin action queue for character $14 / Do graphical action 14
15 = begin action queue for character $15 / Do graphical action 15
16 = begin action queue for character $16 / Do graphical action 16
17 = begin action queue for character $17 / Do graphical action 17
18 = begin action queue for character $18 / Do graphical action 18
19 = begin action queue for character $19 / Do graphical action 19
1A = begin action queue for character $1A / Do graphical action 1A
1B = begin action queue for character $1B / Do graphical action 1B
1C = begin action queue for character $1C / Do graphical action 1C
1D = begin action queue for character $1D / Do graphical action 1D
1E = begin action queue for character $1E / Do graphical action 1E
1F = begin action queue for character $1F / Do graphical action 1F
20 = begin action queue for character $20 / Do graphical action 20
21 = begin action queue for character $21 / Do graphical action 21
22 = begin action queue for character $22 / Do graphical action 22
23 = begin action queue for character $23 / Do graphical action 23
24 = begin action queue for character $24 / Do graphical action 24
25 = begin action queue for character $25 / Do graphical action 25
26 = begin action queue for character $26 / Do graphical action 26
27 = begin action queue for character $27 / Do graphical action 27
28 = begin action queue for character $28 / Do graphical action 28
29 = begin action queue for character $29 / Do graphical action 29
30 = begin action queue for character $30 (Camera)
31 = begin action queue for character $31 (Party Character 1)
32 = begin action queue for character $32 (Party Character 2)
33 = begin action queue for character $33 (Party Character 3)
34 = begin action queue for character $34 (Party Character 4)
35 = Pauses execution until camera queue is complete
36 = Disable ability to pass through objects for character XX
37 = Assign Graphics XX to Character YY
38 = hold screen
39 = free screen
3C = Makes Characters WW, XX, YY and ZZ be available in an event; also makes camera focus on character XX.
3D = create object
3E = delete object
3F = assign character $XX (Actor in stot 1) to party YY / Remove character $XX from party YY
41 = show object / Delete Character
42 = hide object
43 = assign palette $XX, to character
45 = refresh objects
46 = Make party XX the current one for the player to command
47 = make character in slot 0 the lead character
48 = display dialogue message, does not wait for button press to continue
4B = display dialogue message, and wait for button press to continue
4D = invoke battle, enemy set XX, background YY
50 = tint screen (cumulative) with color XX
52 = tint characters (cumulative) with color XX
53 = modify object color range from XX (color), XX (intensity)
55 = flash screen with color component(s) (corresponding colors: 2 = red, 5 = green, 6 = yellow, 8 = blue, 12 or C = cyan, 10 or A = magenta, E-F = white)
Note: Sometimes a byte can have 2 parts to it, for instance $55. The 1st part would be the color, and the second part of the byte would be the intensity. EX: $55, $20 = flash screen with red at low intensity. So keep that in mind for other similar bytes.
58 = shake screen
59 = unfade screen at speed XX
5A = fade screen at speed XX
5C = pause execution until fade in or fade out is complete
60 = change background layer $XX to palette $XX (Used for palettes greater than 6)
61 = colorize color range [$XX, $XX] to color [$XX] $03 = Flashback color
62 = mosaic screen
6A = Load map XX
6B = Load map XX
74 = replace current map's Layer 2 at
75 = refresh map after alteration
77 = perform level averaging on character $XX, and calculate new maximum HP/MP
78 = enable ability to pass through other objects for object
80 = move vehicle/entity up 1 tile
81 = move vehicle/entity right 1 tile
82 = move vehicle/entity down 1 tile
83 = move vehicle/entity left 1 tile
84 = move vehicle/entity up 2 tiles
85 = move vehicle/entity right 2 tiles
86 = move vehicle/entity down 2 tiles / give esper $XX to party
87 = move vehicle/entity left 2 tiles
88 = move vehicle/entity up 3 tiles / remove the following status ailments from character $XX (Actor in stot XX): Float, Dog Block, Hide, Chant (Casting Spell), Morph (Esper-form), Instant Death Protection, Frozen, Rage, Death (Wound), Petrify (Stone), Imp, Vanish (Clear), M-Tek, Poison, Zombie, Dark
89 = move vehicle/entity right 3 tiles /inflict the following status ailments on character
8F = unlocks all of Cyans Sword Techs
90 = move vehicle/entity up 5 tiles
91 = pause for 15 units
92 = pause for 30 units
93 = pause for 45 units / move vehicle/entity left 5 tiles
94 = pause for 60 units
95 = pause for 120 units
96 = move vehicle/entity down 6 tiles or... restore screen from fade
97 = fade screen to black or... move vehicle/entity left 6 tiles
98 = move vehicle/entity up 7 tiles
99 = invoke party selection screen
9A = move vehicle/entity down 7 tiles
9B = move vehicle/entity left 7 tiles
9C = move vehicle/entity up 8 tiles
A0 = move vehicle/entity right/up 1x1 tiles
A1 = reset timer 0
A2 = move vehicle/entity left/down 1x1 tiles
A9 = show title screen
AA = show intro with Magitek Armor walking through snowfields
AB = invoke game loading screen
B1 = end block of repeating commands
B2 = call subroutine
B4 = pause for 8 units
B5 = pause for XX units
C0 = If bit XX is set(clear), branch to $YYYY / set vehicle/entity's event speed to super slow
C1 = If bit XX is set(clear) OR bit YY is set(clear), branch to $ZZZZ / set vehicle's facing direction to slow
C2 = set vehicle/entity's event speed to normal
C3 = set vehicle/entity's event speed to fast
C4 = set vehicle/entity's event speed to super fast
C5 =
C6 = set vehicle/entity to move normally when moving
C7 = place airship at position $XX, $XX (overworld map coordinates) or... set vehicle/entity to stay still when moving
C8 = set object layering priority to X (low nibble X)
C9 =
CA =
CB =
CC = turn vehicle/entity up
CD = turn vehicle/entity right
CE = turn vehicle/entity down
CF = turn vehicle/entity left
D1 = hide vehicle
D4 = set event bit
D5 = set vehicle/entity's position to XX YY
DA = set event bit
DC = make vehicle/entity jump (low)
DD = clear event bit / hide mini-map
E0 = pause for XX* 4 frames
EA =
F0 = play song
F1 = fade in song
FA = stop temporarily played song
F4 = play sound effect XX
F6 = Makes sound effect XX stop
FC = go backwards XX bytes
FE = return (ends event)
FF = end queue
Vehicle/entity graphical actions:
Code:00 = Forward, Walking 1
01 = Forward, Standing
02 = Forward, Walking 2
03 = Backward, Walking 1
04 = Backward, Standing
05 = Backward, Walking 2
06 = Side, Walking 1
07 = Side, Standing
08 = Side, Walking 2
09 = Kneeling / Weak; 49 is flipped
0A = Attack pose (facing left); 4A is flipped
0B = Attacked pose (looking left); 4B is flipped
0C = Idle in Battle Pose
0D = Walking in Battle Pose
0E = Arms Raised, Walking
0F = Arms Raised, Jumping; 4F is flipped
10 = Spell Cast (looking left), first frame; 50 is flipped
11 = Spell Cast (looking left), second frame; 51 is flipped
12 = Dead pose (looking left); 52 is the same but looking right
13 = Front, eyes closed (blinking)
14 = Wink
15 = Eyes closed, looking to the left; 55 looking to the right
16 = Front, arms raised in air
17 = Back, arms raised in air
18 = mad/embarrassed
19 = Front, right arm raise
1A = Front, right arm waive
1B = Back, right arm raise
1C = Back, right arm waive
1D = laughing part 1
1E = laughing part 2
1F = shocked
20 = Front, head down
21 = Back, head down
22 = Head down sad left; 62 = reversed
23 = Front, head turned (left); 63 = Look to the right
24 = Moving the finger, first frame; 64= flipped
25 = Moving the finger, second frame; 65 is flipped
26 = unused pose with the Jap. text (Except for terra); 66 is flipped
27 = tent); 67 is flipped
28 = knocked down pose #2 (For special characters)
2C = used for NPCs special pose in some cases.
2D = used for KO'ed NPC
D1 = Make entity disappear
DC = jump low
DD = jump high
Play Song "$F0 command" List:
Code:00 = silence
01 = prelude
02 = title screen
03 = intro
04 = intro #2 (Magitek walking to Narshe)
05 = Terra
06 = WoB Overwold
07 = Shadow
08 = Thamasa
09 = Gau
0A = Figaro Castle
0B = Coin of Fate
0C = Doma Castle
0D = Locke
0E = Forever Rachel
0F = Relm
10 = Setzer
11 = Daryl
12 = Sad Celes
13 = Chocobo
14 = Decisive Battle
15 = Bar Theme
16 = Kefka
17 = Mines of Narshe
18 = Phantom Forest
19 = Veldt
1A = Sad Theme!
1B = The Empire Gestahl
1C = The Empire Marches
1D = Under Imperial Occupation
1E = Waterfall
1F = Metamorphosis
20 = Train Running
21 = Another World of Beasts
22 = Ultros #2 @ Opera House
23 = Mt. Koltz
24 = Battle Theme
25 = Unused Fanfare
26 = Wedding Waltz 2
27 = Aria di Mezzo Caratte
28 = Serpent Trench
29 = Zozo
2A = Town Music
2B = What!
2C = Opera Audience Mumbling (I think)
2D = Gogo's lair
2E = Returner's Hideout
2F = Used Fanfare
30 = Umaro's Cave
31 = Moogles
32 = The Unforgiven
33 = Atma
34 = WoR Town
35 = Falcon
36 = Rise of the Floating Continent
37 = WoR Jidoor
38 = Sleep @ Inn
39 = Wind
3A = Tide
3B = Dancing Mad Tier 1
3C = Phantom Train Stopping
3D = Opera House
3E = Rest in Peace
3F = Chocobos running
40 = Train Noises
41 = Wedding Waltz 1
42 = Ohhhhh Mariaaaaa
43 = Wedding Waltz 3
44 = Wedding Waltz interlude
45 = Singing interlude Between Draco & Maria
46 = 5 minutes until ultros drops weight
47 = Magitek Factory
48 = House on fire
49 = Cranes Activated
4A = Thamasa when House is Burning
4B = Floating Continent
4C = Searching for Friends
4D = Fanatic's Tower
4E = Kefka's Tower
4F = Dark World
50 = Dancing Mad Tier 4
51 = More Silence
52 = Rising to Kefka
53 = Ending Montage of Characters
54 = Final Ending segment
A5 = Unused Fanfare?
Sound Effects ($F4) (FULL LIST ON PAGE 4!):
Code:00 - Lore casting sound
01 - Casting black magic spell
02 - Casting white magic spell
03 - Esper summoning
04 - Footsteps - Escaping
05 - Ultima
06 - Earth Breaking
07 - Haste
08 - Phoenix scream
09 - Scan's "target" sound
0A - Rasp's first sound effect
0B - Rasp's second sound effect
0C -
0D -
0E -
0F -
10 - Bum Rush
15 - Thundaga
22 - Bio
2E - Sword Stab
35 - Dispel
37 - Ice crystalization (Second sound effect of Blizzara spell)
39 - Confuse
44 - Runic
50 - Shock
69 - Plasma (Mog's attack used in Water Rondo Dance)
6A - Jump sound
6D - Magicite Sound (when kefka transforms espers into magicite)
81 - Bismarck
89 - Burning House falling apart
B5 - Landing on the floor (after someone jumps)
B6 - Will of the wisp sound
BA - Falling Down
C7 - Fell hard on the floor
CD - Kefka's Laugh
CE - Splash
DF - Elevator sound
E8 - Huge Footstep (Phunbaba's)
More on page 4 of this thread!
Character ID's:
Code:Terra = 00
Locke = 01
Cyan = 02
Shadow = 03
Edgar = 04
Sabin = 05
Celes = 06
Strago = 07
Relm = 08
Setzer = 09
Mog = 0A
Gau = 0B
Gogo = 0C
Umaro = 0D
Soldier = 0E
Imp = 0F
Leo = 10
Banon = 11
Esper Terra = 12
Merchant = 13
Ghost = 14
Kefka = 15
Gestahl = 16
Important Hex Info:
Desperation attacks -
Code:C2/15C8: C0 08 CPY #$08
C2/15CA: B0 44 BCS $1610 (No DA if monster)
C2/15CC: AD 3F 3A LDA $3A3F
C2/15CF: C9 03 CMP #$03
C2/15D1: 90 3D BCC $1610 (No DA if turn 2 or less)
C2/15D3: B9 E5 3E LDA $3EE5,Y
C2/15D6: 89 02 BIT #$02
C2/15D8: F0 36 BEQ $1610 (No DA If not Near Fatal)
C2/15DA: 89 24 BIT #$24
C2/15DC: D0 32 BNE $1610 (No DA If Muddled or Image)
C2/15DE: B9 E4 3E LDA $3EE4,Y
C2/15E1: 89 12 BIT #$12
C2/15E3: D0 2B BNE $1610 (No DA If Clear or Zombie)
If you want to make it so that desperation attacks could happen anytime regardless of near fatal status, you would want to change the bytes "$F0 $36" (No DA If not Near Fatal) to "$EA, $EA" which is the NOP byte or "Non Operation Code" for FF6. That means that instead of the game reading the default code, it will instead bypass to the next command, thus allowing DA's to happen without near fatal status.
If you want to edit the 1 in 16 chance for a DA found @ C2/15EE: D0 20 BNE $1610
You would need to change four bytes. The two before that instruction, AND $0F needs to be changed to CMP $40 (29 0F -> C9 40) and the BNE should be changed to BCS (D0 -> B0). You can experiment with the CMP argument to tweak the frequency if 25% is too high.
Overworld Music Pointers: (Note these addresses are not in Hi-ROM)
Code:2E858A: World of Balance in-flight airship music
2E858C: World of Ruin in-flight airship music
2E858D: Chocobo music in the WoB.
2E858E: Chocobo music (on the Veldt?) (unable to be tested)
2E858F: Chocobo music (when the default world theme is "Dark World")
2E8590: Chocobo music in the WoR.
2E8591: World of Balance overworld music
2E8592: Veldt music
2E8593: World of Ruin, first 'dark' world music
2E8594: World of Ruin main overworld music
Say you want to have the first WoR music back when you exit the Airship. What you want to do is go to the address: 2E8594 and change the byte to $F4.
Editing Mog's Dance -
Code:C2/177D: B9 F8 3E LDA $3EF8,Y
C2/1780: 09 01 ORA #$01
C2/1782: 99 F8 3E STA $3EF8,Y (Set Dance status)
C2/1785: A9 FF LDA #$FF
C2/1787: 85 B7 STA $B7
C2/1789: B9 E1 32 LDA $32E1,Y (Which dance is selected)
C2/178C: 10 06 BPL $1794
C2/178E: AD 6F 3A LDA $3A6F
C2/1791: 99 E1 32 STA $32E1,Y
C2/1794: AE E2 11 LDX $11E2
C2/1797: DF 5B 8E ED CMP $ED8E5B,X (Check if background is same as dance)
C2/179B: F0 A4 BEQ $1741 (Branch if it is)
C2/179D: 20 53 4B JSR $4B53
C2/17A0: 90 0D BCC $17AF (50% chance of branch)
C2/17A2: AA TAX
C2/17A3: BF AB F9 D1 LDA $D1F9AB,X
C2/17A7: 85 B7 STA $B7
C2/17A9: 8D E2 11 STA $11E2 (Change background to dance background)
C2/17AC: 4C 41 17 JMP $1741
The two bytes to pay attention to if you want to make it so Mog never stumbles again are at C2/17A0
Yes, the "$90, $0D" You will want to NOP these 2 bytes.
the sequence uses the 0 or 1 RNG, so if you want to just change the odds, you'll have to call a different RNG and check for specific numbers, and that means adding more code.
Battle Time Counter function -
(Recalculate the amount by which to increase the ATB gauge. This will also affect the speed of the "wait timer" [which determines how long a character is in their ready stance], the Condemned counter, invisible timers for auto-expiring statuses, and the frequency of damage/healing from statuses like Regen and Poison.)
ATB Gauge colors -
Code:C1/6886: A929 LDA #$29 (Set yellow palette for ATB fully charged)
C1/6888: 8002 BRA $688C
C1/688A: A935 LDA #$35 (Set white palette for ATB charging)
Changing the inherent +20 to speed in battle - This will also affect the speed of the "wait timer" [which determines how long a
character is in their ready stance], the Condemned counter, invisible timers for auto-expiring statuses, and the frequency of damage/healing from statuses like Regen and Poison.
Code:C2/09EE: 83 01 STA $01,S (A = ATB multiplier * 1.5)
C2/09F0: BD 19 3B LDA $3B19,X (Speed)
C2/09F3: 69 14 ADC #$14
C2/09F5: EB XBA (Speed + 20 in top byte of Accumulator)
C2/09F6: E0 08 CPX #$08
Simple fix: Change the ADC #$14 found at C2/09F3 to NOP NOP. This will prevent the +20 from occuring.
Changing the # of battles to unlock the Paladin Shield -
Code:C2/5FFA: C9 66 CMP #$66 Compare accumulator to 66h (Cursed Shld value).
C2/5FFC: D0 0E BNE $600C Branch past the rest if it's not the shield.
C2/5FFE: EE C0 3E INC $3EC0 Increment battle count (loaded from 7E:1DD5).
C2/6001: D0 09 BNE $600C Branch past the rest if the battle count has not returned to 0.
C2/6003: A9 01 LDA #$01
C2/6005: 04 F0 TSB $F0 Tells the game to display "Dispelled..." text.
C2/6007: A9 67 LDA #$67
C2/6009: 9D 1F 16 STA $161F,X Stores the Paladin Shld in equipment spot.
To change the amount of battles it will take, you will have to manually set $1DD5 to a different starting value (it originally starts at 0).
_ _ _
We are born, live, die and then do the same thing over again.
07-11-2010, 11:43 PM
I sticky'd this thread, since it's an extremely useful reference. Now it will never get lost in the bowels of the board.
"The doom and gloom is justified.
A couple of people are going to die.
Even though you can turn back the time,
you're always a moment too late!"
09-27-2010, 04:15 AM
This is a really amazing collection of oft-needed hex-editing problems. Thanks a lot.
I'm curious about your list of Actors who are assigned sprites/palettes. Are these just unusual instances of getting new sprites/palettes? Because I would imagine that -all- of the PCs have at least one instance of being assigned a sprite/palette in events?
Also, I really appreciated your breakdown of Mog's Dances, do you happen to know where the pointers are that determine which background teaches which Dance set? I'd like to change it so that some Dances can't be gotten until really late in the game so that they can have significantly stronger movesets for balancing Mog's abilities and keeping Dance from becoming obsolete at endgame.
I'm curious about your list of Actors who are assigned sprites/palettes. Are these just unusual instances of getting new sprites/palettes? Because I would imagine that -all- of the PCs have at least one instance of being assigned a sprite/palette in events?
Also, I really appreciated your breakdown of Mog's Dances, do you happen to know where the pointers are that determine which background teaches which Dance set? I'd like to change it so that some Dances can't be gotten until really late in the game so that they can have significantly stronger movesets for balancing Mog's abilities and keeping Dance from becoming obsolete at endgame.
09-27-2010, 04:33 AM
nice set of info Mike
"Sometimes ninjas do wrong to each other, and in dat way the force of tha earf' comes around da moon - and at that presence, da dirt, it overshadows the grass, so you're like, I can't cut dis grass, there's no sun comin' through. So in order to enable each other the two fruits have to look each other in da eye and understand we can only be right, as da ripe is wrong, you know what I mean?"
-HNIC
(09-27-2010, 04:15 AM)DjinnAndTonic Wrote: This is a really amazing collection of oft-needed hex-editing problems. Thanks a lot.
I'm curious about your list of Actors who are assigned sprites/palettes. Are these just unusual instances of getting new sprites/palettes? Because I would imagine that -all- of the PCs have at least one instance of being assigned a sprite/palette in events?
Also, I really appreciated your breakdown of Mog's Dances, do you happen to know where the pointers are that determine which background teaches which Dance set? I'd like to change it so that some Dances can't be gotten until really late in the game so that they can have significantly stronger movesets for balancing Mog's abilities and keeping Dance from becoming obsolete at endgame.
You're very welcome, it's my pleasure...
I still need to work on making the complete list of where the actors are assigned sprites/palettes. All characters are assigned them at least once, and in some cases more than once. I'll try and get them all up here very soon.
And as for Mog's dances, that's a good idea you have there. I'll try and locate them for you, and get back to you on that.
We are born, live, die and then do the same thing over again.
10-02-2010, 01:40 PM
I think what you're looking for is this data?
Dance offsets
Attacks:
Location= 100080 Size= 4 bytes
Wind Song: 100080
Forest Suite: 100084
Desert Aria: 100088
Love Sonata: 10008C
Earth Blues: 100090
Water Rondo: 100094
Dusk Requiem: 100098
Snowman Jazz: 10009C
Backgrounds:
Location= 11FBAB Size= 1 byte
This info is available on http://masterzed.cavesofnarshe.com/ff3.html and just go to "Dance offsets" .
I'm still not sure how the game assigns the background to a specific dance. I've been having the idea for quite some time to custom edit mog's dances and be able to replace the backgrounds as well (like replacing the "Wind Song" background with the background from ultros and typon's battle), but I still have no idea.
Dance offsets
Attacks:
Location= 100080 Size= 4 bytes
Wind Song: 100080
Forest Suite: 100084
Desert Aria: 100088
Love Sonata: 10008C
Earth Blues: 100090
Water Rondo: 100094
Dusk Requiem: 100098
Snowman Jazz: 10009C
Backgrounds:
Location= 11FBAB Size= 1 byte
This info is available on http://masterzed.cavesofnarshe.com/ff3.html and just go to "Dance offsets" .
I'm still not sure how the game assigns the background to a specific dance. I've been having the idea for quite some time to custom edit mog's dances and be able to replace the backgrounds as well (like replacing the "Wind Song" background with the background from ultros and typon's battle), but I still have no idea.
10-02-2010, 02:00 PM
Wow cool!
Wurmi: ... i live in Peach`s castle together with Mario...you don`t know how bad that is D:
Mario: is this so bad?
Wurmi: *cries*
Mario: don`t worry i am here
Wurmi: UWAAAAH! D;
10-04-2010, 09:30 PM
Actually, the latest beta of FF3usME has a feature that lets you assign which background is pulled up during Mog's Dances.
However, to change which backgrounds actually -teach- the Dancesets, you need to do hex-editing. MasterZED actually sent me a list already which details where on the rom one would need to change the values for each background to assign which Danceset is learned by having Mog fight on that background.
Address | BG# | Description | Danceset taught
002D905B 00: Grass 0
002D905C 01: Brown Forest 1
002D905D 02: Desert 2
002D905E 03: Green Forest 1
002D905F 04: Building 3
002D9060 05: World of Ruin 0
002D9061 06: The Veldt 0
002D9062 07: Falling through the Clouds 0
002D9063 08: Dark Town 3
002D9064 09: Grey Cave 6
002D9065 0A: Brown Cave 6
002D9066 0B: Mountain Top 4
002D9067 0C: Mountain Cave 6
002D9068 0D: Raft on a River 5
002D9069 0E: Imperial Base 2
002D906A 0F: On Top of Train Car 1
002D906B 10: Inside of Train Car 3
002D906C 11: Blue/Purple Cave 6
002D906D 12: Icy Field 7
002D906E 13: Bright Town 3
002D906F 14: Factory 3
002D9070 15: Floating Island 4
002D9071 16: Kefka's Domain 4
002D9072 17: Opera Stage 3
002D9073 18: Opera House Rafters 3
002D9074 19: Flaming House 3
002D9075 1A: Castle 3
002D9076 1B: Magitek Research Facility w/ Tubes 3
002D9077 1C: Colloseum 0
002D9078 1D: Magitek Research Facility 3
002D9079 1E: Village 0
002D907A 1F: Waterfall 5
002D907B 20: Owzer's House 3
002D907C 21: Running on Train Tracks 1
002D907D 22: Bridge near Sealed Gate 6
002D907E 23: Underwater 5
002D907F 24: Zozo 3
002D9080 25: Airship, WoB, centered 0
002D9081 26: Tomb 6
002D9082 27: Doma 6
002D9083 28: Kefka's Domain 6
002D9084 29: Airship, WoR, right 0
002D9085 2A: Red Cave 6
002D9086 2B: Light Building 3
002D9087 2C: Riding Car out of MagResFac 6
002D9088 2D: Fanatics' Tower 3
002D9089 2E: Cyan's Dream World 3
002D908A 2F: Desert 2
002D908B 30: Airship, WoB, right 0
002D908C 31: -- 0
002D908D 32: -- 6
002D908E 33: Statue 1 6
002D908F 34: Statue 2 6
002D9090 35: Statue 3 6
002D9091 36: Kefka's Background 0
002D9092 37: Tentacles 3
002D9093 3F: Narshe 6
002D9094 6
002D9095 6
002D9096 6
002D9097 6
002D9098 6
002D9099 6
002D909A 6
0 Wind Song
1 Forest Suite
2 Desert Aria
3 Love Sonata
4 Earth Blues
5 Water Rondo
6 Dusk Requiem
7 Snowman Jazz
However, to change which backgrounds actually -teach- the Dancesets, you need to do hex-editing. MasterZED actually sent me a list already which details where on the rom one would need to change the values for each background to assign which Danceset is learned by having Mog fight on that background.
Address | BG# | Description | Danceset taught
002D905B 00: Grass 0
002D905C 01: Brown Forest 1
002D905D 02: Desert 2
002D905E 03: Green Forest 1
002D905F 04: Building 3
002D9060 05: World of Ruin 0
002D9061 06: The Veldt 0
002D9062 07: Falling through the Clouds 0
002D9063 08: Dark Town 3
002D9064 09: Grey Cave 6
002D9065 0A: Brown Cave 6
002D9066 0B: Mountain Top 4
002D9067 0C: Mountain Cave 6
002D9068 0D: Raft on a River 5
002D9069 0E: Imperial Base 2
002D906A 0F: On Top of Train Car 1
002D906B 10: Inside of Train Car 3
002D906C 11: Blue/Purple Cave 6
002D906D 12: Icy Field 7
002D906E 13: Bright Town 3
002D906F 14: Factory 3
002D9070 15: Floating Island 4
002D9071 16: Kefka's Domain 4
002D9072 17: Opera Stage 3
002D9073 18: Opera House Rafters 3
002D9074 19: Flaming House 3
002D9075 1A: Castle 3
002D9076 1B: Magitek Research Facility w/ Tubes 3
002D9077 1C: Colloseum 0
002D9078 1D: Magitek Research Facility 3
002D9079 1E: Village 0
002D907A 1F: Waterfall 5
002D907B 20: Owzer's House 3
002D907C 21: Running on Train Tracks 1
002D907D 22: Bridge near Sealed Gate 6
002D907E 23: Underwater 5
002D907F 24: Zozo 3
002D9080 25: Airship, WoB, centered 0
002D9081 26: Tomb 6
002D9082 27: Doma 6
002D9083 28: Kefka's Domain 6
002D9084 29: Airship, WoR, right 0
002D9085 2A: Red Cave 6
002D9086 2B: Light Building 3
002D9087 2C: Riding Car out of MagResFac 6
002D9088 2D: Fanatics' Tower 3
002D9089 2E: Cyan's Dream World 3
002D908A 2F: Desert 2
002D908B 30: Airship, WoB, right 0
002D908C 31: -- 0
002D908D 32: -- 6
002D908E 33: Statue 1 6
002D908F 34: Statue 2 6
002D9090 35: Statue 3 6
002D9091 36: Kefka's Background 0
002D9092 37: Tentacles 3
002D9093 3F: Narshe 6
002D9094 6
002D9095 6
002D9096 6
002D9097 6
002D9098 6
002D9099 6
002D909A 6
0 Wind Song
1 Forest Suite
2 Desert Aria
3 Love Sonata
4 Earth Blues
5 Water Rondo
6 Dusk Requiem
7 Snowman Jazz
10-05-2010, 12:08 AM
Ohhh, This data is very important!!
*Goes to try dance combinations right away*
BTW Djinn, do you have the sprite sheet for your BOF3 ryu? Looks awesome!
*Goes to try dance combinations right away*
BTW Djinn, do you have the sprite sheet for your BOF3 ryu? Looks awesome!
10-06-2010, 12:19 AM
Hey Gi Nattak~
I have another question for you. I notice that you pointed out where the Title screen and the Prologue events start, but I also noticed in your hack that you managed to add a custom Title screen.
I would like to know how you went about doing that.
Also, since I can see that you have a bit of expertise in editing backgrounds, I'm curious if you know how to display different maps during the "Long ago, War of the Magi, blah blah" prologue? It'd be nice not to have to show the boring Vector capital and Narshe all the time. I'd rather show off the Phoenix cave or Mt Kolts, for example. I realize this is kind of involved, but any initial information you can give me would go a long way in helping me understand this.
I have another question for you. I notice that you pointed out where the Title screen and the Prologue events start, but I also noticed in your hack that you managed to add a custom Title screen.
I would like to know how you went about doing that.
Also, since I can see that you have a bit of expertise in editing backgrounds, I'm curious if you know how to display different maps during the "Long ago, War of the Magi, blah blah" prologue? It'd be nice not to have to show the boring Vector capital and Narshe all the time. I'd rather show off the Phoenix cave or Mt Kolts, for example. I realize this is kind of involved, but any initial information you can give me would go a long way in helping me understand this.
« Next Oldest | Next Newest »
Users browsing this thread: 4 Guest(s)