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 everything halfway between two steps.
author: hakuX
refresh: 120

# The game steps its logic once a frame (0x115B0, called by the frame
# 0x12070 at 0x1208D, before it draws). With the vblank at 120 Hz the frame
# runs every vblank; one that finds two vblanks since the last step (the
# game's count 0x4ED8F0) steps, the others only draw: 60 steps a second, 120
# frames. The draw's frame counter (0x11B60) counts the stepped frames.
# Every draw's matrix (model and camera in one, from a slot of the game's
# matrix stack) goes through SetTransform (0x2ADAA0): on a stepped frame it's
# matched in the frame before's (the same slot, near the place the last
# match gave, close enough) and the mean of the two is drawn, half a step
# back. The code is in the header page (sizeof_headers raised to 0x1000),
# the records in two buffers from MmAllocateContiguousMemory. Generated by
# tools/mods/pdo_120fps.py.
[default.xbe]
0x00010108: 20 0B 00 00 -> 00 10 00 00
0x00010B40: 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 00 80 40 0A D7 23 3B 9A 99 19 3F
0x00010B50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 00 00 3F 00 00 00 3F 00 00 00 3F 00 00 00 3F
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 -> 00 00 00 00 01 00 00 00 FF FF FF FF 02 00 00 00 FE FF FF FF 03 00 00 00 FD FF FF FF 04 00 00 00
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 -> FC FF FF FF 05 00 00 00 FB FF FF FF 06 00 00 00 FA FF FF FF 07 00 00 00 F9 FF FF FF 08 00 00 00
0x00010C20: 00 00 00 00 -> F8 FF FF FF
0x00010C30: 00 00 00 00 00 00 00 00 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 2C 0B 01 00 00 75 1E 68 00 80 04 00 FF 15 B4 C8 30 00 A3 2C 0B 01 00 85 C0 74 0A 05 00 40
0x00010C50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 02 00 A3 30 0B 01 00 A1 2C 0B 01 00 8B 0D 30 0B 01 00 A3 30 0B 01 00 89 0D 2C 0B 01 00 A1 28 0B
0x00010C70: 00 00 00 00 00 00 00 00 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 A3 34 0B 01 00 C7 05 28 0B 01 00 00 00 00 00 C7 05 38 0B 01 00 00 00 00 00 A1 F0 D8 4E 00
0x00010C90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 8B C8 2B 0D 24 0B 01 00 83 F9 02 72 22 83 F9 04 77 09 83 05 24 0B 01 00 02 EB 05 A3 24 0B 01 00
0x00010CB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> C7 05 20 0B 01 00 00 00 00 00 E9 F1 08 00 00 C7 05 20 0B 01 00 01 00 00 00 C3
0x00010CD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 83 3D 20 0B 01 00 00 75 06 FF 05 98 A0 41 00 E9 82 0E 00 00
0x00010CF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 8B 44 24 04 85 C0 74 12 83 F8 06 0F 82 2A 02 00 00 83 F8 09 0F 87 21 02 00 00 8B 0D 2C 0B 01 00
0x00010D10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 85 C9 0F 84 13 02 00 00 8B 15 28 0B 01 00 81 FA 00 08 00 00 0F 83 01 02 00 00 FF 05 28 0B 01 00
0x00010D30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 6B C2 48 03 C8 89 0D 3C 0B 01 00 53 55 56 57 8B 74 24 18 83 3D 20 0B 01 00 00 0F 85 BE 01 00 00
0x00010D50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 8B 1D 30 0B 01 00 8B EA 03 2D 38 0B 01 00 0F 11 05 A0 0B 01 00 0F 11 0D B0 0B 01 00 0F 11 15 C0
0x00010D70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 0B 01 00 0F 11 1D D0 0B 01 00 33 FF 8B 04 BD E0 0B 01 00 03 C5 3B 05 34 0B 01 00 0F 83 57 01 00
0x00010D90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 6B C0 48 03 C3 8B 4C 24 14 39 08 0F 85 46 01 00 00 39 70 04 0F 85 3D 01 00 00 F3 0F 10 46 30
0x00010DB0: 00 00 00 00 00 00 00 00 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 5C 40 38 F3 0F 59 C0 F3 0F 10 56 30 F3 0F 59 D2 F3 0F 10 4E 34 F3 0F 5C 48 3C F3 0F 59 C9
0x00010DD0: 00 00 00 00 00 00 00 00 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 F3 0F 10 4E 34 F3 0F 59 C9 F3 0F 58 D1 F3 0F 10 4E 38 F3 0F 5C 48 40 F3 0F 59 C9 F3
0x00010DF0: 00 00 00 00 00 00 00 00 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 58 C1 F3 0F 10 4E 38 F3 0F 59 C9 F3 0F 58 D1 F3 0F 59 15 44 0B 01 00 F3 0F 58 15 40 0B 01 00
0x00010E10: 00 00 00 00 00 00 00 00 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 C2 0F 83 CF 00 00 00 0F 8A C9 00 00 00 0F 10 46 00 0F 10 50 08 0F 5C C2 0F 59 C0 0F 10 4E
0x00010E30: 00 00 00 00 00 00 00 00 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 0F 10 50 18 0F 5C CA 0F 59 C9 0F 58 C1 0F 10 4E 20 0F 10 50 28 0F 5C CA 0F 59 C9 0F 58 C1 0F
0x00010E50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 28 C8 0F C6 C8 4E 0F 58 C1 0F 28 C8 0F C6 C8 B1 0F 58 C1 0F 2F 05 48 0B 01 00 0F 83 78 00 00 00
0x00010E70: 00 00 00 00 00 00 00 00 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 8A 72 00 00 00 8B 0C BD E0 0B 01 00 01 0D 38 0B 01 00 0F 10 1D 50 0B 01 00 0F 10 46 00 0F 10
0x00010E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 48 08 0F 58 C1 0F 59 C3 0F 11 05 60 0B 01 00 0F 10 46 10 0F 10 48 18 0F 58 C1 0F 59 C3 0F 11 05
0x00010EB0: 00 00 00 00 00 00 00 00 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 0B 01 00 0F 10 46 20 0F 10 48 28 0F 58 C1 0F 59 C3 0F 11 05 80 0B 01 00 0F 10 46 30 0F 10 48
0x00010ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 38 0F 58 C1 0F 59 C3 0F 11 05 90 0B 01 00 C7 44 24 18 60 0B 01 00 EB 0A 47 83 FF 11 0F 82 8A FE
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 00 00 00 -> FF FF 0F 10 05 A0 0B 01 00 0F 10 0D B0 0B 01 00 0F 10 15 C0 0B 01 00 0F 10 1D D0 0B 01 00 8B 0D
0x00010F10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 3C 0B 01 00 8B 44 24 14 89 01 89 71 04 8D 79 08 B9 10 00 00 00 F3 A5 5F 5E 5D 5B 8B 44 24 04 8B
0x00010F30: 00 00 00 00 00 00 00 00 -> 54 24 08 E9 70 CB 29 00
0x0001208D: E8 1E F5 FF FF -> E8 9E EB FF FF
0x00011B60: FF 05 98 A0 41 00 -> E9 6B F1 FF FF 90
0x002ADAA0: 8B 44 24 04 8B 54 24 08 -> E9 4B 32 D6 FF 90 90 90
