# Crysis 3 Remastered 1.3.0
# BID: 53EA0196A4AEB260

unsafeCheck: true

MASTER_WRITE:
  # Redirect Dynamic Resolution Timings to read always not from .text
  -
    type: bytes
    main_offset: 0x136A51C
    value_type: uint32
    value: 0xD503201F
  -
    type: bytes
    main_offset: 0x136A548
    value_type: uint32
    value: 
      - 0xD503201F
      - 0xD503201F
# Redirect Dynamic Resolution Timings readings to MAIN+0x3608E00
  -
    type: bytes
    main_offset: 0x136A520
    value_type: uint32
    value:
      - 0xD00114E8
      - 0xBD4E0100
      - 0xBD4E0501
      - 0xBD4E0902
      - 0xD503201F
      - 0xD503201F
  -
    type: bytes
    main_offset: 0x136A554
    value_type: uint32
    value:
      - 0xD00114E9
      - 0x91383129
# Write default values
  -
    type: bytes
    main_offset: 0x3443CA4
    value_type: float
    value: 28.5
  # MAIN + 0x22EA494
  -
    type: bytes
    main_offset: 0x3608E00
    value_type: float
    value: 33.5
  # MAIN + 0x22EAE14
  -
    type: bytes
    main_offset: 0x3608E04
    value_type: float
    value: 30.5
  # MAIN + 0x22EAB58
  -
    type: bytes
    main_offset: 0x3608E08
    value_type: float
    value: 32.5
  # MAIN + 0x22E9E48
  -
    type: bytes
    main_offset: 0x3608E0C
    value_type: float
    value: [31.5, 33.25]
ALL_FPS:
  # sys_MaxFPS
  -
    type: evaluate_write
    address: [MAIN, 0x34382D8]
    value_type: int32
    value: FPS_LOCK_TARGET
  # Renderer thread delay (default value)
  -
    type: write
    address: [MAIN, 0x3466BB0]
    value_type: float
    value: 0.01
  -
    type: evaluate_write
    address: [MAIN, 0x3443CA4]
    value_type: float
    value: "0.855 * FRAMETIME_TARGET"
  # MAIN + 0x22EA494
  -
    type: evaluate_write
    address: [MAIN, 0x3608E00]
    value_type: float
    value: "1.005 * FRAMETIME_TARGET"
  # MAIN + 0x22EAE14
  -
    type: evaluate_write
    address: [MAIN, 0x3608E04]
    value_type: float
    value: "0.915 * FRAMETIME_TARGET"
  # MAIN + 0x22EAB58
  -
    type: evaluate_write
    address: [MAIN, 0x3608E08]
    value_type: float
    value: "0.975 * FRAMETIME_TARGET"
  # MAIN + 0x22E9E48
  -
    type: evaluate_write
    address: [MAIN, 0x3608E0C]
    value_type: float
    value: ["0.945 * FRAMETIME_TARGET", "0.945 * FRAMETIME_TARGET"]
  -
    type: block
    what: timing
