-
Notifications
You must be signed in to change notification settings - Fork 1
Home
The Route is described and compared with previous tases and speedruns.
The sketch glitch is the major glitch used in this run. Missing a sketch with Relm within certain conditions induces big chunks of copy from ROM to RAM that can lead to some nice things. The technical details of the sketch glitch are described here, and the consequences are exposed here. To make easier setting up the numerous tests, a Test bench has been written. Here is also the route that is needed to get the right spell in the 28th position.
Triggering the sketch glitch can kill ennemies, making them untargetable, which disable all commands that target ennemis by default. Here is the results on the Triangle Island.
A useful manipulation through the entire tas will getting preemptives, or as a general matter, being able to escape quickly. These factors are determined by the value of the frame counter at the beginning of the battle, so it can be manipulated easily by delaying the battle. Writing a script to predict this will save a lot of time.
Let's see if we can do something from JP Glitch attacks.
A fast way to trigger the ending is to modify the event pointer, a 24-bit address that stores where in the list of events ($CA0000-$CCE5FF) we are. This event pointer is stored at $E5-$E7. During a fight, the game makes a backup to $12E5-$12E7 and restores at the end of the fight, so the modification should be placed there. The list of events that triggers the ending starts at $CA1362. So this should trigger the ending if executed during a fight:
A9 62 13 LDA #$1362 Well, only if we are in 16-bit accumulator mode
8D E5 12 STA $12E5 Address $12E7 should commonly be #$CA, so no need to write it
It should be possible to corrupt a savefile by reseting at the right time, as it is done in the Chrono Trigger TAS. Relevent addresses for accessing new areas are:
$1F60: World Map XY position (2 bytes)
$1F64: Map zone (0x01FF) and flags (0xFE00) (2 bytes)
$1FC0: Character XY position (2 bytes)
Several exploits can be used, such as reseting between X and Y position to access to world map coordinates, reseting before character position to access new positions inside a town/dongeon, or reseting between the two bytes of the map zone to access new zones. Here is a list of location ids.
There are a lot of possible optimisations (small, mostly) that have to be kept in mind during the TAS.
List of SRAM addresses with some adds by me.
- Map of the ROM data: http://www.rpglegion.com/ff6/hack/ff3info.txt
- Incomplete map of RAM data: http://www.ff6hacking.com/forums/archive/index.php?thread-1408.html
- Another map of RAM data and stuff: http://www.rpglegion.com/ff6/hack/info.htm
- Event bits and other stuff: http://novaliaspirit.99k.org/ff6/docs.html
- Snes opcodes good description: http://softpixel.com/~cwright/sianse/docs/65816NFO.HTM
- Full 65816 Programming Guide (469 pages): http://www.romhacking.net/documents/423/
- Many lists: http://www.tales-cless.org/docs/ff6hack.htm
- Many stuff: http://mnrogar.slickproductions.org/index.htm