name: 120 fps (in progress)
description: The game at 120 frames a second (on a 120 Hz screen), at its normal speed. In progress: each logic frame is shown twice (no blending yet).
author: hakuX
refresh: 120

# doa2.xbe runs its game as fiber tasks (24 slots at 0xA94570, scheduler
# 0xFA440). With the vblank at 120 Hz the main loop runs every vblank; the
# first pass of each 60 Hz tick (D3D's vblank count halved, checked at its
# controller update 0xFF3AF) is a logic frame; on the other frames
# the controllers aren't read and the scheduler skips the tasks that never
# drew: the logic keeps 60 updates a second, the tasks that draw run every
# frame, and so do the select screen's model loader (0x12F490, 0x12F460:
# skipped, its fighters were drawn every other tick) and the fight's render
# setup (0x116B20: skipped, the frames in between drew with the last
# frame's render state and draw lists, the ground under the fighters
# darker every other tick). The game's frame counter (0x87D56C) and the
# render setup's (0x850730) move on logic frames only (the menus' loop
# draws and runs every frame). A logic frame's 2D lists (text, icons:
# appended at 0xB0590, drawn by the 2D task 0x6D0B0) stay until the next
# logic frame's start, and the frames in between drop their appends: the
# select screen's "A Select / B Back", appended by a task that doesn't draw,
# was missing every other frame. The code is in the header page
# (sizeof_headers raised to 0x1000): the draws mark the current slot in a
# bitmap at 0x10CF0, CreateTask clears it. Generated by
# tools/mods/doa2_120fps.py.
[doa2.xbe]
0x00010108: 68 0C 00 00 -> 00 10 00 00
0x00010D00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> A1 F8 54 35 00 8B 80 E8 1D 00 00 D1 E8 3B 05 F8 0C 01 00 74 14 A3 F8 0C 01 00 C7 05 F4 0C 01 00 00 00 00 00 E9 C7 01 00 00 C7 05 F4 0C 01 00 01 00 00 00 C3
0x00010D40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 50 A1 14 48 A9 00 83 F8 18 73 07 0F AB 05 F0 0C 01 00 58 55 8B EC 83 EC 08 E9 F8 76 33 00
0x00010D60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 50 A1 14 48 A9 00 83 F8 18 73 07 0F AB 05 F0 0C 01 00 58 53 8B 1D F8 54 35 00 E9 38 76 33 00
0x00010D80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 50 A1 14 48 A9 00 83 F8 18 73 07 0F AB 05 F0 0C 01 00 58 55 8B EC 83 EC 14 E9 A8 74 33 00
0x00010DA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 56 8B 74 24 08 0F B3 35 F0 0C 01 00 E9 C4 97 0E 00
0x00010DC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> F6 C1 02 0F 85 DF 96 0E 00 83 3D F4 0C 01 00 00 0F 84 96 96 0E 00 50 A1 14 48 A9 00 0F A3 05 F0 0C 01 00 58 0F 82 82 96 0E 00 E9 31 00 00 00
0x00010DF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 8B 15 6C D5 87 00 83 3D F4 0C 01 00 00 75 01 42 C3
0x00010E04: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 8B 0D 6C D5 87 00 83 3D F4 0C 01 00 00 75 01 41 C3
0x00010E20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 81 7E 0C 90 F4 12 00 0F 84 3F 96 0E 00 81 7E 0C 60 F4 12 00 0F 84 32 96 0E 00 81 7E 0C 20 6B 11 00 0F 84 25 96 0E 00 E9 5C 96 0E 00
0x00010E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 25 FF 7F 00 00 83 3D F4 0C 01 00 00 75 01 40 C3
0x00010EA0: 00 00 00 00 00 00 00 00 00 00 00 -> C7 05 90 0E 01 00 01 00 00 00 C3
0x00010ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 83 3D F4 0C 01 00 00 74 03 33 C0 C3 A1 78 01 8A 00 E9 AF F6 09 00
0x00010EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 83 3D 90 0E 01 00 00 74 0F C7 05 90 0E 01 00 00 00 00 00 E8 F8 D3 09 00 E9 13 9D 0E 00
0x000FF3AF: E8 6C B8 FF FF -> E8 4C 19 F1 FF
0x000FA467: F6 C1 02 75 3C -> E9 54 69 F1 FF
0x00348450: 55 8B EC 83 EC 08 -> E9 EB 88 CC FF 90
0x003483B0: 53 8B 1D F8 54 35 00 -> E9 AB 89 CC FF 90 90
0x00348240: 55 8B EC 83 EC 14 -> E9 3B 8B CC FF 90
0x000D935B: 8B 15 6C D5 87 00 -> E8 90 7A F3 FF 90
0x000D9364: 42 -> 90
0x000DAF24: 8B 0D 6C D5 87 00 -> E8 DB 5E F3 FF 90
0x000DAF32: 41 -> 90
0x0005C46C: 25 FF 7F 00 00 40 -> E8 0F 4A FB FF 90
0x000FA570: 56 8B 74 24 08 -> E9 2B 68 F1 FF
0x0006D124: E8 D7 11 04 00 -> E8 77 3D FA FF
0x0006D130: E8 CB 11 04 00 -> E8 6B 3D FA FF
0x000B0590: A1 78 01 8A 00 -> E9 3B 09 F6 FF
