On this page
  1. Origin
  2. Related
  3. Games
  4. References
  5. Sources

In Active Time Battle, every combatant has its own clock and acts when it comes due, so faster combatants act more often and the clock keeps running while the player picks a command. Final Fantasy IV counts each timer down, with a length set by the ratio of a reference agility to the combatant’s1,2; Final Fantasy V keeps the countdown with a different length3; and Final Fantasy VI fills a gauge instead4.

  • CountdownFinal Fantasy IV (1991). The clocks run in real time, at a pace the battle speed option sets.1,2Final Fantasy V (1992). Heavier equipment makes a character wait longer between turns, and more agility less.5,3
  • GaugeFinal Fantasy VI (1994). (speed + 20) × 1.5 × 64 ÷ 16 added every 2 frames, paused only when wait mode and the time-stop flag are both set; the speed setting slows only monsters.6,4

#Origin

Square’s United States patent on “active time battle” names Hironobu Sakaguchi and Hiroyuki Ito as its inventors7. Takashi Tokita recalled that the idea came to Ito while watching a Formula One race, as cars of different speeds overtook one another8. Sakaguchi, in 2023, thought it was Ito’s idea, and said the first prototype wasn’t fun until the programmer Kiyoshi Yoshii refined it9. Nintendo and Square Enix both say the system began with Final Fantasy IV10.

Games

GameYearHowNote
Final Fantasy IV1991Countdownthe clocks run in real time, at a pace the battle speed option sets
Final Fantasy V1992Countdownheavier equipment makes a character wait longer between turns, and more agility less
Final Fantasy VI1994Gauge(speed + 20) × 1.5 × 64 ÷ 16 added every 2 frames, paused only when wait mode and the time-stop flag are both set; the speed setting slows only monsters
Every claim about this mechanic, by game (6)
Final Fantasy IV 1991At the start of a battle, each combatant's base timer duration is 50 times a reference party member's modified agility over 10 times its own modified agility, at least 1; the reference is the first present party member whose character ID is 1 or $0B, or failing that the first present one, so a combatant with twice the agility waits half as long between turns.Code
BattleMain waits 1, 2, 4, 6, 8, or 11 frames by the battle speed setting (BattleSpeedTbl plus one), holding while the game is paused or in wait mode, then decrements every combatant's timers (DecTimers) and runs a pending action. An action timer's duration is the base duration times a speed modifier over 16, and 16 is the normal modifier.Code
Final Fantasy V 1992A combatant's ATB timer is set to 120 + equipment weight ÷ 8 − agility, at least 1, adjusted for haste or slow, and UpdateTimer counts it down by one each tick and flags it when it reaches 0, when the turn comes due. The battle speed setting sets a wait of 0, 15, 30, 60, 120, or 240 when a character's turn arrives.Code
Final Fantasy IV and V both give each combatant a timer that counts down to its turn. Final Fantasy IV sets its length from a ratio, 50 times a reference party member's agility over 10 times the combatant's; Final Fantasy V sets it to 120 plus equipment weight ÷ 8 minus agility.Code
Final Fantasy VI 1994Each combatant's ATB gauge constant is (speed + 20) times 1.5 times a haste, normal, or slow constant of 84, 64, or 32, over 16; for monsters the speed term is first scaled by 255 − 24 × the battle speed setting, over 255, so the setting slows only the monsters. Every 2 frames UpdateBattleTime adds each present combatant's constant to its gauge, and a gauge that overflows gives that combatant a turn. It skips the update only when wait mode is on and the battle-time-stopped flag is also set, since it ANDs the two.Code
Final Fantasy V counts each combatant's ATB timer down by one per tick from 120 + weight ÷ 8 − agility; Final Fantasy VI instead adds a constant built from speed to a gauge every 2 frames and gives the turn when the gauge overflows.Code

References

  1. ^ abAt the start of a battle, each combatant's base timer duration is 50 times a reference party member's modified agility over 10 times its own modified agility, at least 1; the reference is the first present party member whose character ID is 1 or $0B, or failing that the first present one, so a combatant with twice the agility waits half as long between turns.Codeeverything8215, FF4 disassembly
    How we know
    493@8d44:  clr_axy
    494        stx     $c7
    495@8d49:  lda     $3540,y
    496        bne     @8d5f
    497        lda     $c7
    498        bne     @8d7a
    499        lda     $2000,x
    500        and     #$1f
    501        cmp     #$01
    502        beq     @8d7a
    503        cmp     #$0b
    
    battle/init.asm lines 493–503 at a360e2e · upstream ↗
    518@8d7a:  lda     $2015,x
    ⋮
    521        ldx     #$0032
    522        stx     $393f
    523        jsr     Mult16
    ⋮
    533        lda     $2015,x
    534        sta     $df
    535        lda     #$0a
    536        sta     $e1
    537        jsr     Mult8
    ⋮
    542        jsr     Div16
    543        ldx     $3949
    544        bne     @8dbf
    ⋮
    
    battle/init.asm lines 518–550 at a360e2e · upstream ↗
    $1015 modified agility
    notes/ff4j-sfc-ram-map.txt#L722 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  2. ^ abBattleMain waits 1, 2, 4, 6, 8, or 11 frames by the battle speed setting (BattleSpeedTbl plus one), holding while the game is paused or in wait mode, then decrements every combatant's timers (DecTimers) and runs a pending action. An action timer's duration is the base duration times a speed modifier over 16, and 16 is the normal modifier.Codeeverything8215, FF4 disassembly
    How we know
    1021BattleMain:
    1022@85d9:  lda     $16ac                   ; battle speed
    1023        tax
    1024        lda     f:BattleSpeedTbl,x
    1025        inc
    1026        sta     $3538
    1027        stz     $38e6
    1028@85e8:  lda     #$02                    ; battle graphics $02: wait one frame
    1029        jsr     ExecBtlGfx
    1030        lda     $38d9
    1031        ora     $38da
    1032        bne     @85e8                   ; branch if paused or wait mode
    ⋮
    
    battle/battle.asm lines 1021–1033 at a360e2e · upstream ↗
    1067@8649:  jsr     DecTimers
    ⋮
    1081@866d:  jsr     GetPendingAction
    ⋮
    1085        jsr     DoAction
    
    battle/battle.asm lines 1067–1085 at a360e2e · upstream ↗
    1476; not stopped
    1477@96d6:  inx3                ; next timer
    1478        lda     #6          ; loop through 6 timers
    ⋮
    1504        dec     $2a04,x     ; decrement counter
    
    battle/battle.asm lines 1476–1504 at a360e2e · upstream ↗
    367; battle speed constants
    368BattleSpeedTbl:
    369@ff06:  .byte   0,1,3,5,7,10
    
    battle/battle_data.asm lines 367–369 at a360e2e · upstream ↗
    282ApplySpeedMod:
    283@9fd8:  ldx     $a9         ; base duration
    284        stx     $393d
    285        ldx     $3979       ; multiplier
    286        stx     $393f
    287        jsr     Mult16
    ⋮
    290        ldx     #$0010
    291        stx     $3947
    292        jsr     Div16
    293        ldx     $3949
    294        stx     $ab         ; mod. duration
    
    battle/timer_dur.asm lines 282–298 at a360e2e · upstream ↗
    898        lda     #$01        ; auto-battle speed modifier
    899        sta     $203b,x
    900        bra     @9086
    901@9081:  lda     #$10        ; normal speed modifier
    902        sta     $203b,x
    
    battle/init.asm lines 898–902 at a360e2e · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  3. ^ abFinal Fantasy IV and V both give each combatant a timer that counts down to its turn. Final Fantasy IV sets its length from a ratio, 50 times a reference party member's agility over 10 times the combatant's; Final Fantasy V sets it to 120 plus equipment weight ÷ 8 minus agility.Codeeverything8215, FF4 disassembly · everything8215, FF5 disassembly
    How we know
    521        ldx     #$0032
    ⋮
    535        lda     #$0a
    ⋮
    542        jsr     Div16
    ⋮
    548        sta     $2060,x
    
    battle/init.asm lines 518–550 at a360e2e · upstream ↗
    1477@96d6:  inx3                ; next timer
    1478        lda     #6          ; loop through 6 timers
    ⋮
    1504        dec     $2a04,x     ; decrement counter
    
    battle/battle.asm lines 1476–1504 at a360e2e · upstream ↗
    5407        jsr ShiftDivide_8	;weight/8
    5408        clc
    5409        adc #$78     		;+120
    5410        sec
    5411        sbc Agility    	;-agi
    
    src/battle/battle-main.asm lines 5405–5416 at 997c87d · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  4. ^ abFinal Fantasy V counts each combatant's ATB timer down by one per tick from 120 + weight ÷ 8 − agility; Final Fantasy VI instead adds a constant built from speed to a gauge every 2 frames and gives the turn when the gauge overflows.Codeeverything8215, FF5 disassembly · everything8215, FF6 disassembly
    How we know
    5409        adc #$78     		;+120
    5410        sec
    5411        sbc Agility    	;-agi
    
    src/battle/battle-main.asm lines 5405–5416 at 997c87d · upstream ↗
    4740        lda CurrentTimer,X
    ⋮
    4742        dec CurrentTimer,X
    4743        lda CurrentTimer,X
    4744        bne TimerActive
    4745FlagTimer:        	;flag EnableTimer when CurrentTimer hits 0
    
    src/battle/battle-main.asm lines 4740–4745 at 997c87d · upstream ↗
    91; [ increment atb gauge counter ]
    ⋮
    98        adc     near wTargetProp2::w7e3ac8,x     ; add atb constant
    99        sta     near wTargetProp1::w7e3218,x
    100        shorta
    101        bcc     _11ba       ; return if it didn't overflow
    
    src/battle/atb.asm lines 91–104 at 8130132 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  5. ^A combatant's ATB timer is set to 120 + equipment weight ÷ 8 − agility, at least 1, adjusted for haste or slow, and UpdateTimer counts it down by one each tick and flags it when it reaches 0, when the turn comes due. The battle speed setting sets a wait of 0, 15, 30, 60, 120, or 240 when a character's turn arrives.Codeeverything8215, FF5 disassembly
    How we know
    5397;initialize ATB (A: character index 0-12)
    5398.proc ResetATB
    ⋮
    5406        lda CharStruct::EqWeight,X
    5407        jsr ShiftDivide_8	;weight/8
    5408        clc
    5409        adc #$78     		;+120
    5410        sec
    5411        sbc Agility    	;-agi
    5412        beq :+
    5413        bcs :++
    5414:       lda #$01     		;min 1
    5415:       jsr HasteSlowMod
    ⋮
    
    src/battle/battle-main.asm lines 5397–5416 at 997c87d · upstream ↗
    4721;Advances a status/atb timer if that status is supposed to be checked this tick
    ⋮
    4725.proc UpdateTimer
    ⋮
    4740        lda CurrentTimer,X
    4741        beq FlagTimer
    4742        dec CurrentTimer,X
    4743        lda CurrentTimer,X
    4744        bne TimerActive
    4745FlagTimer:        	;flag EnableTimer when CurrentTimer hits 0
    
    src/battle/battle-main.asm lines 4721–4748 at 997c87d · upstream ↗
    11470        and #$0F		;battle mode and speed
    11471        tax
    11472        lda f:BattleSpeedTbl,X
    11473        sta ATBWaitTime
    
    src/battle/battle-main.asm lines 11470–11473 at 997c87d · upstream ↗
    5336;Waits when a character's turn arrives (amount depending on battle speed setting)
    5337.proc ATBWait
    ⋮
    5342        lda ATBWaitLeft
    5343        beq DoneWaiting
    5344        dec
    5345        sta ATBWaitLeft
    
    src/battle/battle-main.asm lines 5336–5349 at 997c87d · upstream ↗
    24789; d0/ecf2: battle speed constants
    24790BattleSpeedTbl:
    24791        .byte   0,15,30,60,120,240,0,0  ; active
    24792        .byte   0,15,30,60,120,240,0,0  ; wait
    
    src/battle/battle-main.asm lines 24789–24792 at 997c87d · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-25.

    Checked by a second AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  6. ^Each combatant's ATB gauge constant is (speed + 20) times 1.5 times a haste, normal, or slow constant of 84, 64, or 32, over 16; for monsters the speed term is first scaled by 255 − 24 × the battle speed setting, over 255, so the setting slows only the monsters. Every 2 frames UpdateBattleTime adds each present combatant's constant to its gauge, and a gauge that overflows gives that combatant a turn. It skips the update only when wait mode is on and the battle-time-stopped flag is also set, since it ANDs the two.Codeeverything8215, FF6 disassemblyrevised
    How we know
    1437; [ update atb gauge constant ]
    ⋮
    1439CalcSpeed:
    1440@09d2:  php
    1441        ldy     #$20
    1442        lda     near wTargetProp3::w7e3ef8,x
    1443        bit     #STATUS3::SLOW
    1444        bne     @09e4
    1445        ldy     #$40        ; y = haste/normal/slow constant (32/64/82)
    1446        bit     #STATUS3::HASTE
    1447        beq     @09e4
    1448        ldy     #$54
    ⋮
    1454        lsr
    ⋮
    
    src/battle/action_1.asm lines 1435–1470 at 8130132 · upstream ↗
    4; [ update battle time ]
    ⋮
    6UpdateBattleTime:
    ⋮
    10        lda     near w7e2f41       ; check if battle time is stopped by battle program
    11        and     near w7e3a8f       ; wait mode
    12        bne     @118b
    13        lda     near w7e3a6c       ; previous frame counter value
    14        ldx     #2
    15@112e:  cmp     $0e         ; current frame counter value
    16        beq     @1190       ; return if less than 2 frames have elapsed
    
    src/battle/atb.asm lines 4–16 at 8130132 · upstream ↗
    91; [ increment atb gauge counter ]
    ⋮
    97        lda     near wTargetProp1::w7e3218,x     ; atb gauge %
    98        adc     near wTargetProp2::w7e3ac8,x     ; add atb constant
    99        sta     near wTargetProp1::w7e3218,x
    100        shorta
    101        bcc     _11ba       ; return if it didn't overflow
    ⋮
    105@11d1:  stz     near wTargetProp1::w7e3218_H,x     ; clear atb gauge %
    ⋮
    116        jsr     SetFlag0     ; set $3aa0.7 (allow battle menu to open)
    ⋮
    121; [ open battle menu (character) or add action to advance wait queue (monster) ]
    ⋮
    149_120e:  jmp     _c24e66       ; add action to advance wait queue
    
    src/battle/atb.asm lines 91–149 at 8130132 · upstream ↗
    75@2481:  and     #$07        ; battle speed
    76        asl3
    77        sta     $ee
    78        asl
    79        adc     $ee
    80        not_a
    81        sta     near w7e3a90       ; set battle speed constant
    
    src/battle/init.asm lines 75–81 at 8130132 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Revised after a check by a second AI model, 2026-10-21.

    In the claim ledger

  7. ^Square's United States patent on "active time battle", in which enemies keep acting on their own timers while the player enters commands, names Hironobu Sakaguchi and Hiroyuki Itou as inventors. It was filed on 16 March 1992 and granted on 21 February 1995; Google Patents gives its priority date as 16 July 1991, from Japanese application 3-199828.PublisherUS patent 5,390,937 (Active Time Battle)
    How we know
    The movements of the player character and enemy character, i.e., their actions in combat, are executed repeatedly without interruption while time is passing at a fixed rate. This shall be referred to as "active time battle".
    description · archived copy ↗
    an enemy character on a display screen may launch an attack against a player character on the same screen, even while the player character is in the process of inputting a command, at elapse of a set time period specific to the enemy character.
    abstract · archived copy ↗
    Inventor Hironobu Sakaguchi Hiroyuki Itou … Filing date 1992-03-16 Publication date 1995-02-21
    bibliographic data · archived copy ↗
    JP3-199828
    priority applications · archived copy ↗

    The quote matches our archived copy.

    Checked by a second AI model, 2026-10-23.

    In the claim ledger

  8. ^Takashi Tokita told 1UP that the idea of Active Time Battle came from the planner Hiroyuki Ito, who was watching a Formula One race and saw the cars overtake one another: from that came characters whose speed differs by type. Tokita said it also let the team build enemies like those of shooting and action games, which change shape or fight as a wall closes in.Interview1UP, Tokita on FFIV
    How we know
    The planner, Hiroyuki Itoh, who directed Final Fantasy XII, was watching a Formula One race, and he saw all the cars surpass each other. From this, we thought of an interesting idea where character speed would differ depending on the type of character it was. That's where the initial idea came from.
    page 3, answer on the inspiration for Active Time Battle · archived copy ↗
    So, like in shooting and action games, there are instances where the enemies will change shape, or fight as a wall is closing in on them -- that was a new kind of enemy structure we were able to implement.
    page 3, next answer · archived copy ↗

    The quote matches our archived copy.

    Checked by a second AI model, 2026-10-23.

    In the claim ledger

  9. ^Hironobu Sakaguchi, in Square Enix's 2023 anniversary interview as transcribed by Nova Crystallis, said he thought it was Hiroyuki Ito who came up with Active Time Battle, because the move to the Super Famicom called for something special. The prototype wasn't fun, he said, and the programmer Kiyoshi Yoshii refined the system until it was in good shape.InterviewNova Crystallis, FF 35th anniversary interview, part 2
    How we know
    I think it was Hiroyuki Ito. We always try to do something new with the battle system, not just with the story and the setting. With the move to the Super Famicom for FFIV, we felt we really had to do something special, so he came up with ATB (Active Time Battle). The prototype was no good.
    section "The secrets behind the creation of 'Active Time Battle'", Sakaguchi's answer · archived copy ↗
    When we programmed a test, it just wasn't fun. The programmer was a guy called Yoshii
    same section, Sakaguchi · archived copy ↗
    But he concentrated really hard and refined the system. And it was in good shape by the end.
    same section, Sakaguchi's last answer · archived copy ↗

    The quote matches our archived copy.

    Checked by a second AI model, 2026-10-23.

    In the claim ledger

  10. ^Time always flows in battle: a player who doesn't act is attacked by the enemy regardless, and some enemies transform as time passes. Nintendo's page says the system, a standard of later Final Fantasy games, was used first in this game, and Square Enix's that Active Time Battle appeared from this game on.PublisherNintendo, VC Final Fantasy IV · Square Enix, FFIV official page
    How we know
    バトル中はつねに時間が流れており、こちらが行動しないと敵から一方的に攻められてしまいます。また、時間の経過とともに変身する敵がいるなど、さまざまなことが起こります。 … のちの『FF』シリーズで定番となるこのシステムは、このゲームで最初に使われました。
    game introduction, battle paragraph · archived copy ↗
    今作からバトル中も時間が流れる「アクティブタイムバトル」が登場しました。
    game.json, detail_content · archived copy ↗

    The quote matches our archived copy.

    Checked by a second AI model, 2026-10-23.

    In the claim ledger

Sources

Code

Primary

  • Hironobu, Sakaguchi, and Itou, Hiroyuki. 1995. “US 5,390,937: Video game apparatus, method and device for controlling same.” United States patent 5,390,937, filed 16 March 1992, Japanese priority application 3-199828 of 16 July 1991; Google Patents page. Square Co., Ltd. (assignee). original · archived · licence, all uses
  • Jeremy, Parish, and Tokita, Takashi. 2011. “A Conversation With the Creator of Final Fantasy IV (Takashi Tokita interview).” 1UP.com, A Conversation With the Creator of Final Fantasy IV, page 3 of 5. Ziff Davis. original · archived · licence, all uses
  • Hironobu, Sakaguchi,, Shibuya, Kazuko, Kitase, Yoshinori, and Nova Crystallis. 2023. “Final Fantasy 35th Anniversary Special Interview (Part 2 of 2 Transcription).” Nova Crystallis; a transcription of Square Enix's video interview released in 2023. Nova Crystallis. original · archived · licence, all uses
  • Co., Nintendo and Ltd. 2009. “VC ファイナルファンタジーIV (Wii Virtual Console product page).” Nintendo Wii Virtual Console, VC ファイナルファンタジーIV, game introduction page. Nintendo Co., Ltd. original · archived · licence, all uses
  • Co., Square Enix and Ltd. 2025. “ファイナルファンタジーIV (Square Enix official game page, game.json).” SQUARE ENIX official game detail page for Final Fantasy IV, data file game.json. Square Enix Co., Ltd. original · archived · licence, all uses