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

#1
Posts: 2,339
Threads: 93
Thanks Received: 340
Thanks Given: 310
Joined: Aug 2009
Reputation: 44
Status
Nattak\'d
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:
  • 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.
Quote  

#2
Posts: 264
Threads: 12
Thanks Received: 6
Thanks Given: 3
Joined: Oct 2009
Reputation: 6
Status
Lucky-Girl
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!"
  Find
Quote  

#3
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
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.
Quote  

#4
Posts: 2,765
Threads: 88
Thanks Received: 52
Thanks Given: 272
Joined: Jun 2009
Reputation: 25
Status
None
nice set of info Mike Smile


"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
Quote  

#5
Posts: 2,339
Threads: 93
Thanks Received: 340
Thanks Given: 310
Joined: Aug 2009
Reputation: 44
Status
Nattak\'d
(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.
Quote  

#6
Posts: 831
Threads: 41
Thanks Received: 20
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
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.
Quote  

#7
Posts: 413
Threads: 20
Thanks Received: 0
Thanks Given: 0
Joined: Sep 2010
Reputation: -1
Status
None
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 Laugh
Wurmi: UWAAAAH! D;
Quote  

#8
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
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
Quote  

#9
Posts: 831
Threads: 41
Thanks Received: 20
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
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!
Quote  

#10
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
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.
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite