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 2's update steps once per frame (its clock counts frames). The
# stage loop at 0x4BA50 runs the game timers and the update (0x114F0,
# 0x4BC10), renders (0x4BD70) and presents (D3D Swap, 0x4BA91), then steps
# the clock. Its present waits one vblank instead of two (D3D's
# presentation interval 0x1EE404, for that Swap only: menus keep 30), and
# the loop goes back to the render (0x4BA63) without the clock step, the
# timers and the update until KeTickCount says most of a 30th of a second
# went by: every other frame at 60 frames a second, more often below (up to
# 8 steps behind, one a frame), so the game keeps 30 steps a second. The
# first render after a step on time draws halfway between the last two: the
# camera from its start (the render call 0x4BA75), each model from its first
# draw (DrawModel 0x56EA0, or its plain twin 0x57170; its world matrix at
# +0, its local node matrices at [+0x40], their count at [[+0x48]+0x18],
# and the skin matrices at [+0x44] when they follow), 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 otogi2_60fps.asm.
[default.xbe]
0x00010108: 08 0A 00 00 -> 00 10 00 00
0x00010A10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> C6 05 D0 0E 01 00 01 FF 35 04 E4 1E 00 C7 05 04 E4 1E 00 01 00 00 80 E8 24 BF 1C 00 8F 05 04 E4
0x00010A30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 1E 00 C3 A1 50 59 1F 00 8B 00 8B 0D C8 0E 01 00 A3 C8 0E 01 00 80 3D D0 0E 01 00 00 74 41 C6 05
0x00010A50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> D0 0E 01 00 00 29 C8 3D E8 03 00 00 72 05 B8 E8 03 00 00 8D 04 40 03 05 CC 0E 01 00 83 F8 4B 7D
0x00010A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 0D A3 CC 0E 01 00 C7 04 24 63 BA 04 00 C3 83 E8 64 3D 20 03 00 00 7E 09 B8 20 03 00 00 EB 02 31
0x00010A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> C0 A3 CC 0E 01 00 8B 0D C4 0E 01 00 83 F9 01 76 05 FF 01 89 41 1C 38 1D 14 74 23 00 C3 60 8B 2D
0x00010AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> C4 0E 01 00 85 ED 75 35 68 00 00 10 00 FF 15 EC 58 1F 00 85 C0 0F 84 8A 00 00 00 89 C7 B9 80 20
0x00010AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 00 50 31 C0 F3 AB 58 C7 40 0C 00 00 00 80 C7 40 18 00 00 00 80 A3 C4 0E 01 00 89 C5 83 FD 01
0x00010AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 76 63 80 7D 10 00 74 15 8D BD 00 02 00 00 B9 00 20 00 00 31 C0 F3 AB 89 45 08 88 45 10 8B 45 00
0x00010B10: 00 00 00 00 00 00 00 00 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 45 18 74 40 89 45 18 83 7D 1C 23 0F 9C 85 FC 01 00 00 E8 33 00 00 00 C6 45 04 01 61 E8 3E B2
0x00010B30: 00 00 00 00 00 00 00 00 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 00 60 8B 2D C4 0E 01 00 C6 45 04 00 E8 0C 03 00 00 80 7D 14 00 74 0B 8D B5 80 00 00 00 E8 83
0x00010B50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 00 00 61 C3 61 E9 15 B2 03 00 8B 45 00 48 3B 45 0C 0F 94 45 14 8A 8D FC 01 00 00 20 4D 14 40
0x00010B70: 00 00 00 00 00 00 00 00 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 45 0C 8D B5 80 00 00 00 8D 7D 20 B9 16 00 00 00 F3 A5 8D BD 80 00 00 00 E8 2B 00 00 00 80 7D
0x00010B90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 14 00 74 24 8D 75 20 8D 95 80 00 00 00 8D BD E0 00 00 00 B9 16 00 00 00 E8 46 00 00 00 8D B5 E0
0x00010BB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 00 00 E8 1E 00 00 00 C3 BE E0 FA 9D 00 B9 10 00 00 00 F3 A5 BE 74 FA 9D 00 A5 A5 A5 BE C8 FA
0x00010BD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 9D 00 A5 A5 A5 C3 BF E0 FA 9D 00 B9 10 00 00 00 F3 A5 BF 74 FA 9D 00 A5 A5 A5 BF C8 FA 9D 00 A5
0x00010BF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> A5 A5 C3 D9 06 D8 02 D8 0D BC 0E 01 00 D9 1F 83 C6 04 83 C2 04 83 C7 04 49 75 E8 C3 E8 1A 00 00
0x00010C10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 00 53 57 8B 7C 24 0C E9 8A 62 04 00 E8 0A 00 00 00 56 8B 74 24 08 E9 4A 65 04 00 60 8B 5C 24 28
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 -> 8B 2D C4 0E 01 00 83 FD 01 76 09 85 DB 74 05 E8 6D 00 00 00 61 C3 89 DF C1 EF 04 81 E7 FF 03 00
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 -> 00 B8 08 00 00 00 89 FE C1 E6 05 8D B4 35 00 02 00 00 39 1E 74 12 83 3E 00 74 0D 47 81 E7 FF 03
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 -> 00 00 48 75 E1 31 FF C3 89 F7 C3 8B 43 48 3B 47 04 75 14 8B 43 40 3B 47 10 75 0C 52 51 E8 06 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 -> 00 00 3B 57 08 59 5A C3 8B 4B 48 8B 51 18 C1 E2 06 8B 43 40 01 D0 3B 43 44 75 02 01 D2 83 C2 40
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 00 00 00 00 00 00 -> C3 8B 4B 48 85 C9 74 70 83 7B 40 00 74 6A 81 79 18 FF 00 00 00 77 61 E8 CC FF FF FF 8B 4B 48 E8
0x00010CD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 72 FF FF FF 85 FF 74 50 39 1F 75 4D E8 9A FF FF FF 75 66 80 7F 19 00 75 3F 8B 45 00 80 7D 04 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 -> 74 1C 3B 47 0C 74 05 E9 83 00 00 00 80 7F 1A 00 74 26 E8 1F 01 00 00 75 1F E9 E7 00 00 00 3B 47
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 -> 0C 75 15 80 7F 1B 00 75 0F C6 47 1B 01 E8 04 01 00 00 74 04 C6 47 19 01 C3 8B 45 08 8D 34 50 81
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 -> FE 00 7E 0F 00 76 05 C6 45 10 01 C3 89 75 08 89 1F 89 47 14 89 57 1C EB 0A 3B 57 1C 76 05 C6 47
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 -> 19 01 C3 89 4F 04 89 57 08 8B 43 40 89 47 10 8B 45 00 89 47 0C C7 47 18 00 00 00 00 8B 47 14 01
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 -> D0 8D BC 05 00 82 00 00 89 D1 E9 0D 01 00 00 48 3B 47 0C 0F 94 47 18 40 89 47 0C C6 47 1B 00 57
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 -> 8B 77 14 8D B4 35 00 82 00 00 89 D1 89 F7 01 CE C1 E9 02 F3 A5 89 D1 E8 E0 00 00 00 5F 80 7F 18
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 -> 00 74 41 80 BD FC 01 00 00 00 74 38 8B 77 14 8D B4 35 00 82 00 00 8D 14 16 D9 46 30 D8 62 30 DC
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 -> C8 D9 46 34 D8 62 34 DC C8 DE C1 D9 46 38 D8 62 38 DC C8 DE C1 D8 1D C0 0E 01 00 DF E0 9E 77 04
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 -> 7A 02 EB 01 C3 C6 47 1A 01 8B 4F 08 8B 77 14 8D B4 35 00 82 00 00 8D 14 0E C1 E9 02 51 89 DF 6A
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 -> 10 59 E8 DC FD FF FF 59 83 E9 10 74 08 8B 7B 40 E9 CE FD FF FF C3 57 8B 77 14 03 77 08 8D BC 35
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 -> 00 82 00 00 89 DE B9 10 00 00 00 F3 A7 75 0D 8B 73 40 89 D1 83 E9 40 C1 E9 02 F3 A7 5F C3 8D BD
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 -> 00 02 00 00 B9 00 04 00 00 80 7F 1A 00 74 26 C6 47 1A 00 51 57 8B 1F E8 0F FE FF FF 75 15 8B 77
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 -> 14 03 77 08 8D B4 35 00 82 00 00 8B 4F 08 E8 20 00 00 00 5F 59 83 C7 20 49 75 CE C3 51 89 DE B9
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 -> 10 00 00 00 F3 A5 59 83 E9 40 C1 E9 02 8B 73 40 F3 A5 C3 51 89 DF B9 10 00 00 00 F3 A5 59 83 E9
0x00010EB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 40 C1 E9 02 8B 7B 40 F3 A5 C3 90 90 00 00 00 3F 40 54 09 4B
0x0004BA75: E8 F6 02 00 00 -> E8 33 50 FC FF
0x0004BA91: E8 BA 0E 19 00 -> E8 7A 4F FC FF
0x0004BA96: 38 1D 14 74 23 00 -> E8 98 4F FC FF 90
0x00056EA0: 53 57 8B 7C 24 0C -> E9 67 9D FB FF 90
0x00057170: 56 8B 74 24 08 -> E9 A7 9A FB FF
