name: 60 fps
description: Stages at 60 frames a second, the game at its normal speed: the camera and the models are drawn between the game's 30 steps a second (effects still move 30 times a second).
author: hakuX

# Otogi's logic steps once per frame (its clock counts frames). The stage
# loop in 0x42DE0 renders (0x428A0) and presents (0x15280), then steps the
# clock and runs the logic (0x41BB0, 0x42770). Its present waits one vblank
# instead of two (D3D's presentation interval 0x10512C, for that Swap only:
# menus and cutscenes keep 30); every other frame goes back to the render
# without the clock step and the logic, which keeps 30 steps a second. The
# first render after each step draws halfway between the last two: the
# camera from its start (the render call 0x4318F), each model from its first
# draw (DrawModel 0x23BC0, or its plain twin 0x22640; its world matrix at
# +0, its local node matrices at [+0x40]), until the render's end puts
# their values back. Models the render builds from others differ at their
# draw in the render after, without blending, from what the blended one
# took: those follow what they come from. The code is in the header page
# (sizeof_headers raised to 0x1000), its buffer (1 MiB) from
# MmAllocateContiguousMemory. Generated by mkmod.py from otogi_60fps.asm.
[default.xbe]
0x00010108: F8 09 00 00 -> 00 10 00 00
0x00010A00: 00 00 00 00 00 00 00 00 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 35 2C 51 10 00 C7 05 2C 51 10 00 01 00 00 80 E8 6B 48 00 00 8F 05 2C 51 10 00 C3 80 35 E3 0D
0x00010A20: 00 00 00 00 00 00 00 00 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 01 74 08 C7 04 24 86 31 04 00 C3 A1 DF 0D 01 00 83 F8 01 76 02 FF 00 38 1D E0 80 1D 00 C3
0x00010A40: 00 00 00 00 00 00 00 00 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 8B 2D DF 0D 01 00 85 ED 75 34 68 00 00 10 00 FF 15 00 3E 17 00 85 C0 75 03 40 EB 1B 89 C7 B9
0x00010A60: 00 00 00 00 00 00 00 00 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 20 00 00 50 31 C0 F3 AB 58 C7 40 0C 00 00 00 80 C7 40 18 00 00 00 80 A3 DF 0D 01 00 89 C5 83
0x00010A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> FD 01 76 3D 8B 45 00 3B 45 18 74 35 89 45 18 E8 33 00 00 00 C6 45 04 01 61 E8 02 1E 03 00 60 8B
0x00010AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 2D DF 0D 01 00 C6 45 04 00 E8 BD 02 00 00 80 7D 14 00 74 0B 8D B5 80 00 00 00 E8 7A 00 00 00 61
0x00010AC0: 00 00 00 00 00 00 00 00 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 61 E9 D9 1D 03 00 8B 45 00 48 3B 45 0C 0F 94 45 14 40 89 45 0C 8D B5 80 00 00 00 8D 7D 20 B9
0x00010AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 16 00 00 00 F3 A5 8D BD 80 00 00 00 E8 2B 00 00 00 80 7D 14 00 74 24 8D 75 20 8D 95 80 00 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 -> 8D BD E0 00 00 00 B9 16 00 00 00 E8 46 00 00 00 8D B5 E0 00 00 00 E8 1E 00 00 00 C3 BE 20 6B 38
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 -> 01 B9 10 00 00 00 F3 A5 BE B4 6A 38 01 A5 A5 A5 BE 08 6B 38 01 A5 A5 A5 C3 BF 20 6B 38 01 B9 10
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 -> 00 00 00 F3 A5 BF B4 6A 38 01 A5 A5 A5 BF 08 6B 38 01 A5 A5 A5 C3 D9 06 D8 02 D8 0D D7 0D 01 00
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 -> D9 1F 83 C6 04 83 C2 04 83 C7 04 49 75 E8 C3 E8 19 00 00 00 56 8B 74 24 08 E9 47 30 01 00 E8 0A
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 -> 00 00 00 56 8B 74 24 08 E9 B8 1A 01 00 60 8B 5C 24 28 8B 2D DF 0D 01 00 83 FD 01 76 09 85 DB 74
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 -> 05 E8 57 00 00 00 61 C3 89 DF C1 EF 04 81 E7 FF 03 00 00 B8 08 00 00 00 89 FE C1 E6 05 8D B4 35
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 -> 00 02 00 00 39 1E 74 12 83 3E 00 74 0D 47 81 E7 FF 03 00 00 48 75 E1 31 FF C3 89 F7 C3 8B 43 48
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 -> 3B 47 04 75 17 8B 43 40 3B 47 10 75 0F 8B 47 04 8B 40 54 C1 E0 06 83 C0 40 3B 47 08 C3 8B 4B 48
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 -> 85 C9 0F 84 83 00 00 00 83 7B 40 00 74 7D 8B 51 54 81 FA FF 00 00 00 77 72 C1 E2 06 83 C2 40 E8
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 -> 84 FF FF FF 85 FF 74 63 39 1F 75 60 E8 AC FF FF FF 75 74 80 7F 19 00 75 52 8B 45 00 80 7D 04 00
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 -> 74 0A 3B 47 0C 74 44 E9 91 00 00 00 3B 47 0C 75 3A 80 7F 1B 00 75 34 C6 47 1B 01 8B 77 14 03 77
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 -> 08 57 8D BC 35 00 82 00 00 89 DE B9 10 00 00 00 F3 A7 75 0F 8B 73 40 89 D1 83 E9 40 C1 E9 02 F3
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 -> A7 74 07 8B 04 24 C6 40 19 01 5F C3 8B 45 08 8D 34 50 81 FE 00 7E 0F 00 77 F1 89 75 08 89 1F 89
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 -> 47 14 89 57 1C EB 0A 3B 57 1C 76 05 C6 47 19 01 C3 89 4F 04 89 57 08 8B 43 40 89 47 10 8B 45 00
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 -> 89 47 0C C7 47 18 00 00 00 00 8B 47 14 01 D0 8D BC 05 00 82 00 00 89 D1 E9 CC 00 00 00 48 3B 47
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 -> 0C 0F 94 47 18 40 89 47 0C C6 47 1B 00 57 8B 77 14 8D B4 35 00 82 00 00 89 D1 89 F7 01 CE C1 E9
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 -> 02 F3 A5 89 D1 E8 9F 00 00 00 5F 80 7F 18 00 74 59 8B 77 14 8D B4 35 00 82 00 00 8D 14 16 D9 46
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 -> 30 D8 62 30 DC C8 D9 46 34 D8 62 34 DC C8 DE C1 D9 46 38 D8 62 38 DC C8 DE C1 D8 1D DB 0D 01 00
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 -> DF E0 9E 77 25 7A 23 C6 47 1A 01 8B 4F 08 C1 E9 02 51 89 DF 6A 10 59 E8 FA FD FF FF 59 83 E9 10
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 -> 74 08 8B 7B 40 E9 EC FD FF FF C3 8D BD 00 02 00 00 B9 00 04 00 00 80 7F 1A 00 74 26 C6 47 1A 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 00 00 -> 51 57 8B 1F E8 54 FE FF FF 75 15 8B 77 14 03 77 08 8D B4 35 00 82 00 00 8B 4F 08 E8 20 00 00 00
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 -> 5F 59 83 C7 20 49 75 CE C3 51 89 DE B9 10 00 00 00 F3 A5 59 83 E9 40 C1 E9 02 8B 73 40 F3 A5 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 -> 51 89 DF B9 10 00 00 00 F3 A5 59 83 E9 40 C1 E9 02 8B 7B 40 F3 A5 C3 00 00 00 3F 40 54 09 4B
0x0004318F: E8 0C F7 FF FF -> E8 AC D8 FC FF
0x000431A6: E8 D5 20 FD FF -> E8 55 D8 FC FF
0x000431AB: 38 1D E0 80 1D 00 -> E8 6C D8 FC FF 90
0x00023BC0: 56 8B 74 24 08 -> E9 AA CF FE FF
0x00022640: 56 8B 74 24 08 -> E9 39 E5 FE FF
