name: 120 fps
description: Lifts the 30 fps cap to 120 frames a second (on a 120 Hz screen), the game at its normal speed. Use it instead of the 60 fps mod, not with it.
author: hakuX
refresh: 120

# Crimson Skies paces its frames itself: the gate at 0x12FB70 lets a frame
# through once the QueryPerformanceCounter time since the last one reaches
# the device object's minimum period (0x321A88), set at device creation
# (0x1308D9, 0x130B23) from 1/30 (0x2C8368; PAL: 1/25). Those loads take
# 1/120 (0x10F20) instead, the vblank at 120 Hz. The game advances by the
# frame's time in whole ms (the gate's _ftol2 truncates: 8 of 8.33 at 120
# fps, 4% slow); the hook at 0x12FBCD (0x10F24) puts the dropped fraction
# back into the gate's time base. Both live in the header page
# (sizeof_headers raised to 0x1000). Generated by mkmod.py from
# crimsonskies_120fps.asm.
[default.xbe]
0x00010108: 1C 0F 00 00 -> 00 10 00 00
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 -> 89 88 08 3C D9 C0 E8 FD 0A 1E 00 50 50 DA 24 24 DF 6E 08 DE C9 D8 35 18 EE 28 00 DB 1C 24 59 29
0x00010F40: 00 00 00 00 00 00 00 00 -> 4E 10 83 5E 14 00 58 C3
0x0012FBCD: E8 56 1E 0C 00 -> E8 52 13 EE FF
0x001308D9: F3 0F 10 05 68 83 2C 00 -> F3 0F 10 05 20 0F 01 00
0x00130B23: F3 0F 10 05 68 83 2C 00 -> F3 0F 10 05 20 0F 01 00
