name: 120 fps
description: The game at 120 frames a second (on a 120 Hz screen), at its normal speed: it still steps 60 times a second, and every other frame shows the camera and the characters halfway between two steps.
author: hakuX
refresh: 120

# default.xbe steps once a frame; with the vblank at 120 Hz its logic keeps
# 60 updates a second: a logic frame is the first main-loop pass of each
# 60 Hz tick (the game's vblank count 0xD21738 halved, checked where the
# main loop reads the controllers, 0x30E1E1). Only logic frames read the
# controllers, count the rumble down and bump the frame counter (0xD21734);
# on the other frames the task scheduler (0x30C9D0; 18 fiber tasks at
# 0xD21C00) runs only the tasks that drew (D3D's draws mark the current
# slot; a slot whose task changed starts unmarked). On a logic frame the
# scene task (entry 0x1CB9A0, switched to at 0x30CA66) builds the draw list
# from halfway values: the camera (eye, target, angles, fov at 0x977E00,
# its matrices rebuilt by 0x42690) and the 64 objects at 0x4B4E50 (35 bone
# matrices and the position each) between the last logic frame's and this
# one's (a cut or a jump: this one's); its real values come back when it
# yields. The game task (slot 13, 0x206270) puts its 2D (the HUD, menus) in
# the draw queue with 0x221210: on the frames in between that runs in its
# place, and the last of those callbacks (0x2213C0) keeps the logic frame's
# sprites and draw list for them instead of emptying them (emptied at the
# next logic frame when no frame came between).
# The code is in the header page (sizeof_headers raised to 0x1000),
# its buffer (287 KiB) from MmAllocateContiguousMemory. Generated by
# mkmod.py from ngb_120fps.asm.
[default.xbe]
0x00010108: F8 0A 00 00 -> 00 10 00 00
0x00010B00: 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 38 17 D2 00 D1 E8 3B 05 94 0F 01 00 74 44 A3 94 0F 01 00 C7 05 90 0F 01 00 00 00 00 00 80 3D
0x00010B20: 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 -> 98 0F 01 00 00 74 1D C6 05 98 0F 01 00 00 C7 05 FC 7D 8F 00 00 00 00 00 56 BE 10 CF C0 00 E8 5D
0x00010B40: 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 -> 1D 21 00 5E E8 47 CE 2F 00 E8 12 CF 2F 00 E9 ED D2 2F 00 C7 05 90 0F 01 00 01 00 00 00 C3 A8 20
0x00010B60: 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 -> 75 4B 50 52 A1 4C 1E D2 00 8B 15 8C 0F 01 00 85 D2 74 16 8D 54 82 10 51 8B 4E 0C 3B 0A 74 09 89
0x00010B80: 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 -> 0A 0F B3 05 9C 0F 01 00 59 83 3D 90 0F 01 00 00 74 20 0F A3 05 9C 0F 01 00 72 17 5A 58 81 7E 0C
0x00010BA0: 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 -> 70 62 20 00 75 07 60 E8 64 06 21 00 61 E9 DA BE 2F 00 5A 58 8B 46 04 E9 9A BE 2F 00 8B 1D 34 17
0x00010BC0: 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 -> D2 00 83 3D 90 0F 01 00 00 75 01 43 C3 50 A1 4C 1E D2 00 83 F8 12 73 07 0F AB 05 9C 0F 01 00 58
0x00010BE0: 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 -> C3 E8 E7 FF FF FF 55 89 E5 83 EC 14 E9 D5 8C 3B 00 E8 D7 FF FF FF 53 55 8B 2D C8 83 3D 00 E9 75
0x00010C00: 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 -> 8E 3B 00 E8 C5 FF FF FF 55 89 E5 83 EC 08 E9 33 8F 3B 00 E8 B5 FF FF FF 56 8B 35 C8 83 3D 00 E9
0x00010C20: 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 -> 03 92 3B 00 E8 A4 FF FF FF 83 EC 30 53 55 E9 92 A3 3B 00 E8 95 FF FF FF 83 EC 34 53 55 E9 D3 61
0x00010C40: 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 -> 3B 00 83 3D 90 0F 01 00 00 75 0C C6 05 98 0F 01 00 01 E9 79 4A 31 00 C6 05 98 0F 01 00 00 56 BE
0x00010C60: 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 -> 10 CF C0 00 E9 5D 07 21 00 81 7E 0C A0 B9 1C 00 75 17 60 E8 1A 00 00 00 61 FF 76 08 E8 12 96 31
0x00010C80: 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 60 E8 AF 00 00 00 61 C3 FF 76 08 E8 02 96 31 00 C3 8B 2D 8C 0F 01 00 85 ED 75 26 68 00 79 04
0x00010CA0: 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 FF 15 28 14 3E 00 85 C0 0F 84 86 00 00 00 89 C5 89 C7 B9 40 00 00 00 31 C0 F3 AB 89 2D 8C 0F
0x00010CC0: 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 -> 01 00 83 3D 90 0F 01 00 00 75 65 8D BD A0 00 00 00 BE 00 7E 97 00 B9 0D 00 00 00 F3 A5 31 DB 89
0x00010CE0: 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 -> DE 69 F6 00 28 00 00 81 C6 50 4E 4B 00 89 DF 69 FF F0 08 00 00 8D BC 3D 00 3D 02 00 B9 3C 02 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 F3 A5 43 83 FB 40 72 D6 C6 45 08 01 A1 34 17 D2 00 48 3B 45 00 75 18 83 7D 04 00 74 12 E8 9D
0x00010D20: 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 31 DB E8 55 01 00 00 43 83 FB 40 72 F5 E8 5B 19 03 00 C3 8B 2D 8C 0F 01 00 85 ED 74 7F
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 00 00 -> 80 7D 08 00 74 79 C6 45 08 00 8D B5 A0 00 00 00 BF 00 7E 97 00 B9 0D 00 00 00 F3 A5 8D B5 A0 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 00 -> 00 00 8D 7D 60 B9 0D 00 00 00 F3 A5 31 DB 89 DE 69 F6 F0 08 00 00 8D B4 35 00 3D 02 00 89 DF 69
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 00 00 -> FF 00 28 00 00 81 C7 50 4E 4B 00 B9 3C 02 00 00 F3 A5 43 83 FB 40 72 D6 8D B5 00 3D 02 00 8D BD
0x00010DA0: 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 01 00 00 B9 00 8F 00 00 F3 A5 A1 34 17 D2 00 89 45 00 C7 45 04 01 00 00 00 E8 D1 18 03 00 C3
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 -> 8D 75 60 8D 95 A0 00 00 00 31 C9 0F 10 04 0E 0F 10 0C 0A 0F 5C C1 0F 59 C0 0F 28 C8 0F C6 C9 55
0x00010DE0: 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 -> F3 0F 58 C1 0F 12 C8 F3 0F 58 C1 0F 2F 05 80 0F 01 00 77 78 83 C1 10 83 F9 20 72 CF BF 00 7E 97
0x00010E00: 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 31 C9 F3 0F 10 04 8E F3 0F 58 04 8A F3 0F 59 05 7C 0F 01 00 F3 0F 11 04 8F 41 83 F9 08 72 E3
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 -> B9 08 00 00 00 E8 43 00 00 00 B9 09 00 00 00 E8 39 00 00 00 B9 0B 00 00 00 E8 2F 00 00 00 F3 0F
0x00010E40: 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 -> 10 46 28 F3 0F 58 42 28 F3 0F 59 05 7C 0F 01 00 F3 0F 11 47 28 F3 0F 10 46 30 F3 0F 58 42 30 F3
0x00010E60: 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 -> 0F 59 05 7C 0F 01 00 F3 0F 11 47 30 C3 8B 04 8A 2B 04 8E 0F BF C0 D1 F8 03 04 8E 89 04 8F C3 89
0x00010E80: 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 -> DE 69 F6 F0 08 00 00 8D 94 35 00 3D 02 00 8D B4 35 00 01 00 00 89 DF 69 FF 00 28 00 00 81 C7 50
0x00010EA0: 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 -> 4E 4B 00 0F 10 86 C0 08 00 00 0F 10 8A C0 08 00 00 0F 5C C1 0F 59 C0 0F 28 C8 0F C6 C9 55 F3 0F
0x00010EC0: 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 -> 58 C1 0F 12 C8 F3 0F 58 C1 0F 2F 05 84 0F 01 00 0F 87 95 00 00 00 0F 10 3D 6C 0F 01 00 31 C9 0F
0x00010EE0: 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 -> 10 04 0E 0F 10 0C 0A 0F 58 C1 0F 59 C7 0F 11 04 0F 83 C1 10 81 F9 F0 08 00 00 72 E3 31 C9 89 C8
0x00010F00: 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 -> 83 E0 30 83 F8 30 74 58 0F 10 04 0F 0F 10 0C 0A 0F 59 C0 0F 59 C9 0F 28 D0 0F C6 D2 55 F3 0F 58
0x00010F20: 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 -> C2 0F 28 D0 0F 12 D2 F3 0F 58 C2 0F 28 D1 0F C6 D2 55 F3 0F 58 CA 0F 28 D1 0F 12 D2 F3 0F 58 CA
0x00010F40: 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 -> 0F 2F 05 88 0F 01 00 72 17 F3 0F 5E C8 F3 0F 51 C9 0F C6 C9 00 0F 10 04 0F 0F 59 C1 0F 11 04 0F
0x00010F60: 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 -> 83 C1 10 81 F9 C0 08 00 00 72 93 C3 00 00 00 3F 00 00 00 3F 00 00 00 3F 00 00 00 3F 00 00 00 3F
0x00010F80: 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 00 10 41 00 00 80 40 BD 37 86 35
0x0030E1E1: E8 AA F7 FF FF E8 75 F8 FF FF E8 50 FC FF FF -> E8 1A 29 D0 FF 90 90 90 90 90 90 90 90 90 90
0x0030CA4F: A8 20 75 39 8B 46 04 -> E9 0A 41 D0 FF 90 90
0x0030E316: 8B 1D 34 17 D2 00 -> E8 A1 28 D0 FF 90
0x0030CA66: 8B 46 08 50 E8 24 D8 01 00 -> E8 FE 41 D0 FF 90 90 90 90
0x002213C0: 56 BE 10 CF C0 00 -> E9 7D F8 DE FF 90
0x003C98C0: 55 8B EC 83 EC 14 -> E9 1C 73 C4 FF 90
0x003C9A70: 53 55 8B 2D C8 83 3D 00 -> E9 7C 71 C4 FF 90 90 90
0x003C9B40: 55 8B EC 83 EC 08 -> E9 BE 70 C4 FF 90
0x003C9E20: 56 8B 35 C8 83 3D 00 -> E9 EE 6D C4 FF 90 90
0x003CAFC0: 83 EC 30 53 55 -> E9 5F 5C C4 FF
0x003C6E10: 83 EC 34 53 55 -> E9 1E 9E C4 FF
0x0030E31C: 43 -> 90
