name: 120 fps
description: The game at 120 frames a second (on a 120 Hz screen) and its normal speed: characters, vehicles, objects and the first-person arms are drawn between the game's 30 updates a second (particles and effects still move 30 times a second). Use it instead of the 60 fps mod, not with it.
author: hakuX
refresh: 120

# Halo's frame limiter (0xBB5D0) waits 60 / F vblanks a frame, F being the
# video settings' frame rate (word 0x1F8C98): 0 there, the retail value,
# means 30. With 60 a frame takes one vblank, at 120 Hz. The frame's time
# step is the vblanks it took times a vblank's length (0xBB7F4: 1/60 s,
# 0x1F0CA0; now 1/120, 0x1F1194) and the game time (0xFA920) runs a tick per
# 1/30 s of it: the game keeps its speed, a tick every fourth frame.
# The frames between ticks draw what moves between the last two ticks, a
# quarter tick apart. Objects: before each tick (0xFAB11) their positions
# and node matrices are copied; after the frame's ticks (0xBD8A1) each is set
# between its two ticks for the director, the camera and the render; after
# the frame (0xBD983) its values come back. First person: the render rebuilds
# the arms each frame from the tick's pose and the camera (0xD7CC0); the pose
# of the last tick blends into it there. The code is in the header page (over
# the logo bitmap, sizeof_headers raised to 0x1000), its buffers (536 KiB)
# from MmAllocateContiguousMemory, asked for again each tick until there's
# room (a fast device's first ticks come while the game still holds its
# loading buffers). Generated by halo_120fps.py.
[default.xbe]
0x00010108: C8 0C 00 00 -> 00 10 00 00
0x00010A14: 07 33 AD 03 07 53 AD 03 A9 03 EA 00 03 73 A7 03 32 00 B3 FD 03 05 03 FD D3 43 F9 EA 00 03 E3 F9 -> 60 E8 E7 01 00 00 85 ED 75 23 68 40 48 08 00 FF 15 D4 66 1D 00 85 C0 74 7E 89 C7 B9 10 20 00 00
0x00010A34: 33 47 33 22 00 FF 03 05 73 FD 73 73 A7 73 EA 00 73 F7 D3 73 E3 F7 43 0F 03 FF 03 05 FF 33 2E 00 -> 50 31 C0 F3 AB 58 A3 F7 0D 01 00 89 C5 83 FD 01 74 65 E8 C3 00 00 00 31 D2 66 C7 47 06 00 00 66
0x00010A54: 03 7A 00 03 52 00 F9 33 03 F9 03 0F 33 FF 03 03 43 FF 13 F9 13 05 03 93 A3 F7 73 07 73 A7 63 23 -> 8B 06 66 85 C0 74 47 66 89 47 04 8B 5E 08 89 1F 0F B7 83 A0 01 00 00 83 C0 0C 50 01 D0 3D 00 C0
0x00010A74: 53 A3 05 13 A3 D3 F7 73 03 07 13 73 E3 F7 E3 A3 13 09 03 A3 F7 E3 93 13 05 43 53 F9 53 73 F9 B3 -> 03 00 58 77 29 66 89 47 06 89 57 08 60 8D BC 15 40 80 00 00 8D 73 0C A5 A5 A5 0F BF B3 A2 01 00
0x00010A94: 33 03 23 63 03 05 93 FF 43 03 E3 FF 33 F9 03 03 43 E3 FD B3 05 F9 D3 F5 D3 03 A3 FF E3 03 03 73 -> 00 01 DE 8D 48 F4 C1 E9 02 F3 A5 61 01 C2 83 C6 0C 83 C7 10 49 75 A2 61 E9 AF 8C 0F 00 FF 74 24
0x00010AB4: 26 F0 13 05 23 E3 FF 63 03 36 F0 13 23 33 C3 63 05 D3 FF 45 FF A3 93 F7 E3 03 63 26 F0 43 03 FF -> 04 E8 66 9E 0E 00 60 E8 5E 00 00 00 61 C2 04 00 60 E8 37 01 00 00 61 E9 90 A5 0A 00 60 E8 AE 01
0x00010AD4: 73 D3 F9 B3 F9 73 13 F9 53 13 E3 F7 93 03 23 F9 E3 D3 F9 D3 36 F0 03 23 63 83 63 03 03 22 F0 43 -> 00 00 61 FF 74 24 0C FF 74 24 0C FF 74 24 0C E8 18 2B 09 00 60 8B 2D F7 0D 01 00 83 FD 01 76 16
0x00010AF4: E3 FF 43 D3 F7 93 23 F9 A3 03 23 F7 B3 33 32 F0 13 03 53 F7 E3 43 F7 E3 05 A3 F7 A3 03 E3 F7 D3 -> 31 FF 87 7D 0C 85 FF 74 0D 8D B5 40 40 08 00 B9 00 02 00 00 F3 A5 61 C2 0C 00 A1 AC C6 2F 00 0F
0x00010B14: 05 D3 F7 C3 03 D3 F7 53 03 F9 13 07 13 33 03 03 13 F9 D3 F7 A3 F7 D3 F9 13 F9 43 D3 F9 03 03 03 -> B7 48 20 8B 70 34 8D 7D 40 C3 E8 DE 00 00 00 83 FD 01 0F 86 B8 00 00 00 A1 A0 8C 2F 00 D9 40 1C
0x00010B34: F9 93 F9 E3 23 23 F9 73 05 03 F9 63 F9 D3 43 13 03 07 73 F9 23 05 A3 F9 03 F9 23 03 F9 03 0F 53 -> D8 48 18 D8 0D EB 0D 01 00 D9 45 08 D8 0D EF 0D 01 00 DB F1 DA C1 D9 55 08 DE E9 D9 E8 DE C1 D9
0x00010B54: F9 73 FD E3 B3 F9 13 F9 23 F9 73 0F D3 F7 E3 03 03 93 F9 03 05 33 F9 13 E3 FF D3 03 03 E3 F7 D3 -> 55 00 D9 E8 DE D9 DF E0 9E 0F 86 81 00 00 00 E8 A6 FF FF FF E8 E9 00 00 00 75 6C 8D 84 15 40 80
0x00010B74: 07 A3 F9 13 F9 03 43 F7 D3 22 00 A3 F9 23 FD 43 E3 F7 D3 43 F9 43 F9 03 0D 03 F9 53 05 F9 E3 07 -> 00 00 D9 43 0C D8 20 DC C8 D9 43 10 D8 60 04 DC C8 DE C1 D9 43 14 D8 60 08 DC C8 DE C1 D8 1D F3
0x00010B94: 43 F9 03 03 B3 FF E3 03 F9 A3 07 D3 F9 53 F7 E3 03 93 F7 93 22 00 FB 03 FB E3 03 F9 73 A3 F7 D3 -> 0D 01 00 DF E0 9E 77 3F 7A 3D C6 47 0C 01 C6 45 04 01 60 8D B4 15 40 80 00 00 8D BC 15 40 40 04
0x00010BB4: 43 F9 03 05 03 07 23 F9 03 05 F9 A3 07 D3 F3 93 23 09 03 33 D3 FB 23 F9 43 05 13 F9 73 B3 F7 93 -> 00 8D 53 0C 6A 03 59 E8 25 00 00 00 0F BF 93 A2 01 00 00 01 DA 0F B7 8B A0 01 00 00 C1 E9 02 74
0x00010BD4: 03 E3 F7 33 0F 03 F9 D3 03 FB 43 23 F9 33 E3 F7 93 43 F9 05 13 F9 63 F9 07 F9 B3 05 43 22 F0 43 -> 05 E8 0B 00 00 00 61 83 C6 0C 83 C7 10 49 75 84 C3 8B 02 89 07 D9 02 D8 26 D8 4D 00 D8 06 D9 1A
0x00010BF4: 05 73 F9 23 F9 73 05 A3 F9 13 F9 43 03 F9 03 0F 33 F9 73 03 F9 E3 03 53 F9 13 F9 43 13 F9 73 43 -> 83 C6 04 83 C7 04 83 C2 04 49 75 E5 C3 8B 2D F7 0D 01 00 83 FD 01 76 49 80 7D 04 00 74 43 C6 45
0x00010C14: E3 F7 73 B3 F7 B3 07 93 F9 63 23 E3 F7 D3 F9 A3 03 03 A3 F9 03 D3 F7 E3 23 73 F9 63 03 F9 03 13 -> 04 00 E8 F3 FE FF FF 80 7F 0C 00 74 2B C6 47 0C 00 E8 2C 00 00 00 75 20 60 8D B4 15 40 40 04 00
0x00010C34: F9 B3 A3 0D 73 F9 23 03 F9 43 03 B3 F9 23 F9 03 03 D3 22 F0 B3 03 F9 73 07 13 26 F0 E3 03 D3 2A -> 8D 7B 0C A5 A5 A5 0F BF BB A2 01 00 00 01 DF 8D 48 F4 C1 E9 02 F3 A5 61 83 C6 0C 83 C7 10 49 75
0x00010C54: F0 73 03 23 26 F0 A3 03 43 F9 03 43 FB 93 0D D3 F9 03 03 F7 E3 05 F9 A3 53 F9 05 03 E3 FD B3 03 -> C6 C3 0F B7 47 06 85 C0 74 24 66 8B 16 66 3B 57 04 75 1A 8B 5E 08 3B 1F 75 13 0F B7 93 A0 01 00
0x00010C74: 03 F9 33 09 23 FF 73 03 03 03 E3 22 F0 63 07 63 FD E3 43 05 A3 F7 B3 05 D3 F9 33 0D 4B 05 47 13 -> 00 83 C2 0C 39 C2 75 05 8B 57 08 39 C0 C3 40 C3 8B 2D F7 0D 01 00 83 FD 01 0F 86 43 01 00 00 8B
0x00010C94: 03 03 49 13 73 A7 93 07 03 43 A3 C3 A3 73 13 05 13 49 03 0B 03 53 D3 F3 E3 73 13 09 03 43 73 A3 -> 74 24 2C 89 F0 2B 05 48 6B 27 00 2D 8C 00 00 00 31 D2 B9 A0 1E 00 00 F7 F1 83 F8 03 0F 87 20 01
0x00010CB4: D3 F3 E3 73 13 0B 03 23 53 47 03 07 49 13 07 49 03 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 00 93 89 DA C1 E2 0C 8D 94 15 40 00 08 00 A1 A0 8C 2F 00 8B 40 0C 3B 44 9D 10 74 43 89 44 9D
0x00010CD4: 00 00 00 00 00 00 00 00 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 8B 86 7C FF FF FF 87 44 9D 20 3B 44 9D 20 74 05 C6 44 1D 30 00 80 7C 1D 30 02 80 54 1D 30 00
0x00010CF4: 00 00 00 00 00 00 00 00 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 89 D7 8D B2 00 08 00 00 B9 00 02 00 00 F3 A5 61 60 8D BA 00 08 00 00 B9 00 02 00 00 F3 A5 61
0x00010D14: 00 00 00 00 00 00 00 00 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 7C 1D 30 02 0F 82 B7 00 00 00 D9 45 00 D9 E8 DE D9 DF E0 9E 0F 86 A7 00 00 00 60 8D BD 40 40
0x00010D34: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 08 00 B9 00 02 00 00 F3 A5 61 89 75 0C B1 40 D9 02 D8 0E D9 42 04 D8 4E 04 DE C1 D9 42 08 D8 4E
0x00010D54: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 08 DE C1 D9 42 0C D8 4E 0C DE C1 D9 EE DF F1 DD D8 0F 97 C0 89 D7 E8 68 00 00 00 89 F7 E8 61 00
0x00010D74: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 00 D8 E1 D8 4D 00 DE C1 31 DB D9 04 9A 80 FB 04 73 06 84 C0 74 02 D9 E0 D9 04 9E D8 E1 D8 4D
0x00010D94: 00 00 00 00 00 00 00 00 00 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 C1 D9 1C 9E 43 80 FB 08 72 DF 89 F7 E8 30 00 00 00 D9 E4 DF E0 9E 74 16 DE F9 31 DB D9 04
0x00010DB4: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 9E D8 C9 D9 1C 9E 43 80 FB 04 72 F2 DD D8 EB 04 DD D8 DD D8 83 C6 20 83 C2 20 FE C9 0F 85 6D FF
0x00010DD4: 00 00 00 00 00 00 00 00 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 FF C3 D9 EE 31 DB D9 04 9F DC C8 DE C1 43 80 FB 04 72 F3 D9 FA C3 00 00 F0 41 A4 70 7D 3F 00
0x00010DF4: 00 00 00 -> 00 80 41
0x000FAB11: E8 4A EC 00 00 -> E8 FE 5E F1 FF
0x000BD8A1: E8 7A D0 03 00 -> E8 0B 32 F5 FF
0x000BD983: E8 D8 D6 FF FF -> E8 3C 31 F5 FF
0x000D7CC0: E8 3B B9 FC FF -> E8 0B 8E F3 FF
0x000BB647: B9 1E 00 00 00 -> B9 3C 00 00 00
0x000BB7F6: A0 0C 1F 00 -> 94 11 1F 00
