Users browsing this thread: 1 Guest(s)
Comprehensive ATB Enhancement hack

#1
Posts: 3
Threads: 1
Thanks Received: 3
Thanks Given: 2
Joined: Mar 2024
Reputation: 0
Status
None
Hi all, first time posting here. I've done a lot of modding for other games, but this is my first time ROMhacking. Halfway through my first ever playthrough of FF6, aspects of the ATB system bothered me enough to seek out a patch that would stop the gauges from filling during battle animations. After some digging around I found Think0028's simple nATB patch, but didn't like how it enforced Wait mode. C-Dude was helpful enough to revise a version that would allow the Active/Wait mode config setting to be functional once more, but I noticed that the ATB pause also had knock-on effects on status effect timers, checks for fleeing, the jump command, and even AI battle scripts.

After studying some SNES assembly references and the impressive patches made by other FF6 hackers (Leet Sketcher, assassin, HatZen08), I believe I have addressed all of these issues. Here is the readme:

Quote:Final Fantasy 6 -- Comprehensive ATB Enhancement v1.01
by RoSoDude https://rosodudemods.wordpress.com/

Final Fantasy 6's ATB system has some notable flaws compared to other entries in the series. In particular, ATB is always running in the background regardless of battle animations, so commands can quickly pile up on the queue as gauges fill up during animations. This functionally caps the effectiveness of the Speed stat. Furthermore, this can be abused by "Wait tricking" with the Wait mode config setting, where the player enters a command submenu to pause ATB during player character battle animations, but lets ATB resume during enemy character battle animations to gain a turn order advantage. Additionally, most commands have a short delay (0.53-1.07 seconds) before executing which is irrelevant if the delay coincides with a battle animation, but can also makes the timing of commands less responsive, often at the cost of strategic depth. Finally, the Battle Speed config setting only serves to make enemy ATB speed slower relative to the player, instead of adjusting the actual pace of battles as the player would expect.

This hack is intended to redress all of these flaws. As such, it alters gameplay balance to some degree, but the end result should be a more tactical and robust ATB system which can be tweaked to the user's preference using the in-game config settings.

This hack makes ATB gauges and other battle timers (status effect counters, poison/regen ticks, success checks for fleeing) pause during battle animations, similar to the "nATB" system implemented by Think0028 for Brave New World, also available as a standalone "simple nATB" patch. However, this version of the system supports the Active/Wait mode config setting instead of defaulting to Wait. Since the original ATB fill rate was originally balanced around running during the battle animations, pausing the ATB without other changes leads to excessively slow paced battles. To remedy this, a new ATB fill rate formula is implemented, which equally uses the Battle Speed config setting for both player and enemy characters. This fill rate is roughly 2.5x faster than the original on Battle Speed 1, and roughly 1.5x faster on Battle Speed 6. The formula is identical to HatZen08's Even Gauge, however in this hack the Battle Speed setting is also applied to status effect timers, so their effects are consistent with the turn order regardless of the config setting.

The poison/regen/sap tick rate, the duration of status effects like reflect/freeze/stop/sleep/doom countdown, the success chance for fleeing, the jump command duration, and AI battle timers were also originally balanced around running during battle animations, and thus acted too slowly with the ATB pause. All of these have been increased in frequency or decreased in duration to account for this discrepancy. The execution delay on several basic commands is removed to increase responsiveness during battle, but is maintained for other commands as an element of gameplay balance since the delay can no longer take place during battle animations.

The hack is for non-headered US ROMs (v1.0 or v1.1). It is compatible with other hacks like C.V. Reynold's Bug-Fix Compilation patch or Revised Old-Style Edition. This hack should be patched on top of those.

Hack features:
-ATB pauses during all battle animations (Active/Wait config setting still works). This also pauses status effect timers and all other elements of battle timing
-ATB fill rate formula rewritten so that battle speed config setting affects the gauge fill rate for the player (not just enemies) and is generally faster to account for the ATB pause. Fill rate no longer overflows for Speed stat above 235
-Battle speed config setting also now affects status effect timers, so they act in direct proportion to ATB fill rate regardless of setting
-Reflect/stop/sleep/freeze status durations are decreased by 3x
-Doom countdown timer starts at 4x reduced time
-Poison ticks 2x more often and regen/sap tick 3x more often
-Success chance for fleeing from battles builds up 2x as quickly
-Battle timers for AI scripts tick 3x more often
-Morph (a.k.a. Trance) decays 2x as quickly
-Execution delays for the fight, item, steal, mug, runic, leap, row, defend, and gil toss commands are removed
-Casting delay for summon command doubled to match the casting delay for magic, lore, pray, and shock commands
-The jump command lands after 4.32 seconds of (elapsed) air time, rather than 7.47 seconds
-Assassin's Premature Continuation v0.20 patch, Leet Sketcher's Rock Bottom v1.3 patch, and Leet Sketcher's Death Row v1.2 patch are included to maintain compatibility with bugfix patch collections which include them

Assembly code is provided in the following files as a reference for other modders:
-ATB_enhanced.asm: implements most of the features of the hack except poison/regen ticks and AI script battle timers
-patches_compat.asm: implements the remaining features on top of Premature Continuation/Rock Bottom/Off Death Row (asm for these not included)
NOTE FOR HACKERS: This hack uses 58 bytes of ROM freespace located at $C4B4D9 and makes use of 1 byte of RAM at $ECF1

Acknowledgements:
-Think0028 for creating the original "simple nATB" hack
-C-Dude for revising "simple nATB" to reinstate the Active/Wait config setting
-Lightning Hunter for correcting the patch to work with 1.1 ROMs
-Assassin for Premature Continuation v0.20
-Leet Sketcher for Rock Bottom v1.3 and Death Row v1.2
-HatZen08 for Even Gauge v1.1d

Changelist:
v1.00 
-Initial Release
1.01
-Fixed compatibility with 1.1 US ROMs
-Increased morph decay rate by 2x

The patch is attached, also available on RHDN: https://www.romhacking.net/hacks/8513/


Attached Files
.zip  Comprehensive ATB Enhancement_v1.01.zip (7.66 KB, 2 downloads)
Quote  
[-] The following 3 users say Thank You to RoSoDude for this post:
  • C-Dude (03-22-2024), Gi Nattak (03-22-2024), jack5881 (03-23-2024)

#2
Posts: 3
Threads: 1
Thanks Received: 3
Thanks Given: 2
Joined: Mar 2024
Reputation: 0
Status
None
Lightning Hunter alerted me that the patch did not actually work with 1.1 ROMs, so I have corrected that. Also, I forgot to increase the Morph (a.k.a. Trance) decay rate along with the other battle timer changes, so I have done that now as well.

The updated patch should be ready on RHDN shortly.
Quote  

#3
Posts: 2,548
Threads: 98
Thanks Received: 147
Thanks Given: 156
Joined: Aug 2009
Reputation: 52
Status
Nattak\'d
Right on, if you'd like we could host it here on our server as well.


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

#4
Posts: 3
Threads: 1
Thanks Received: 3
Thanks Given: 2
Joined: Mar 2024
Reputation: 0
Status
None
Sure, I've added it to the first post.
Quote  

#5
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
Pretty cool patch!
  Find
Quote  
[-] The following 1 user says Thank You to madsiur for this post:
  • RoSoDude (Yesterday)



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite