# DRAGON BALL Z: KARAKOT + A NEW POWER AWAKENS SET 1.42
# BID: FFD9B653EAE305F7

unsafeCheck: true

15FPS:
  # Disable bUseFixedFrameRate in cutscenes to unlock framerate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    # Default is 0x47 in cutscenes, bUseFixedFrameRate |= 0x40 
    # By writing 7 we are making sure that other flags are maintained: 
    # bAllowMultiThreadedAnimationUpdate |= 4
    # bOptimizeAnimBlueprintMemberVariableAccess |= 2
    # bCanBlueprintsTickByDefault |= 1
    value: 7
  # r.DynamicRes.FrameTimeBudget = 1000/FPS
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [66.66, 66.66]
  # t.MaxFPS
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [0, 0]
  # r.VSync (disabling it since it hampers performance for no benefit)
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
20FPS:
  # Disable bUseFixedFrameRate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    value: 7
  # r.DynamicRes.FrameTimeBudget
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [50, 50]
  # t.MaxFPS
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [0, 0]
  # r.VSync
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
25FPS:
  # Disable bUseFixedFrameRate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    value: 7
  # r.DynamicRes.FrameTimeBudget
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [40, 40]
  # t.MaxFPS
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [25, 25]
  # r.VSync
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
  -
    type: block
    what: timing
30FPS:
  # Disable bUseFixedFrameRate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    value: 7
  # r.DynamicRes.FrameTimeBudget (default value)
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [33.33, 33.33]
  # t.MaxFPS (default value)
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [0, 0]
  # r.VSync (default value is 1)
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
35FPS:
  # Disable bUseFixedFrameRate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    value: 7
  # r.DynamicRes.FrameTimeBudget
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [28.57, 28.57]
  # t.MaxFPS
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [35, 35]
  # r.VSync
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
  -
    type: block
    what: timing
40FPS:
  # Disable bUseFixedFrameRate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    value: 7
  # r.DynamicRes.FrameTimeBudget
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [25, 25]
  # t.MaxFPS
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [40, 40]
  # r.VSync
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
  -
    type: block
    what: timing
45FPS:
  # Disable bUseFixedFrameRate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    value: 7
  # r.DynamicRes.FrameTimeBudget
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [22.22, 22.22]
  # t.MaxFPS
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [45, 45]
  # r.VSync
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
  -
    type: block
    what: timing
50FPS:
  # Disable bUseFixedFrameRate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    value: 7
  # r.DynamicRes.FrameTimeBudget
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [20, 20]
  # t.MaxFPS
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [50, 50]
  # r.VSync
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
  -
    type: block
    what: timing
55FPS:
  # Disable bUseFixedFrameRate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    value: 7
  # r.DynamicRes.FrameTimeBudget
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [18.18, 18.18]
  # t.MaxFPS
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [55, 55]
  # r.VSync
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
  -
    type: block
    what: timing
60FPS:
  # Disable bUseFixedFrameRate
  -
    type: write
    address: [MAIN, 0x92BF538, 0x810]
    value_type: uint32
    value: 7
  # r.DynamicRes.FrameTimeBudget
  -
    type: write
    address: [MAIN, 0x928A478, 0]
    value_type: float
    value: [16.66, 16.66]
  # t.MaxFPS (default value)
  -
    type: write
    address: [MAIN, 0x92BFDE8, 0]
    value_type: float
    value: [0, 0]
  # r.VSync
  -
    type: write
    address: [MAIN, 0x872BF28, 0]
    value_type: int32
    value: [0, 0]
