mirror of
https://github.com/Ultra-NX/UltraNX.git
synced 2025-09-11 02:58:31 +00:00
106 lines
2.6 KiB
YAML
106 lines
2.6 KiB
YAML
# Kirby and the Forgotten Land 1.1.0
|
|
# BID: A6CE40DC3AEDB1BE
|
|
# Thanks to Hazerou for finding interval offsets
|
|
|
|
MASTER_WRITE:
|
|
# Remove double buffer
|
|
## REF: 08 07 40 B9 49 00 80 52
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x747C04
|
|
instructions: [
|
|
[mov, w9, 3]
|
|
]
|
|
# Fix helper functions to not corrupt stack
|
|
## REF: 42 00 80 52 BF FF 30 A9
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x747CE0
|
|
instructions: [
|
|
[mov, w2, 3]
|
|
]
|
|
## REF: 08 65 45 F9 42 00 80 52, first result
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x75ADFC
|
|
instructions: [
|
|
[mov, w2, 3]
|
|
]
|
|
## REF: 09 C0 9D 52 09 01 A0 72 E1 03 00 91 F6 03 00 91, beginning of function
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x676AC8
|
|
instructions: [
|
|
[sub, sp, sp, 0x50],
|
|
[stp, x22, x21, [sp, 0x20]],
|
|
[stp, x20, x19, [sp, 0x30]],
|
|
[stp, x29, x30, [sp, 0x40]],
|
|
[add, x29, sp, 0x40]
|
|
]
|
|
## REF: 00 61 00 91 42 00 80 52
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x676B1C
|
|
instructions: [
|
|
[mov, w2, 3]
|
|
]
|
|
## REF: End of function from code above, first ldp x29 x30
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x676B40
|
|
instructions: [
|
|
[ldp, x29, x30, [sp, 0x40]],
|
|
[ldp, x20, x19, [sp, 0x30]],
|
|
[ldp, x22, x21, [sp, 0x20]],
|
|
[add, sp, sp, 0x50]
|
|
]
|
|
## REF: 42 00 80 52 F6 03 00 91
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x74C280
|
|
instructions: [
|
|
[mov, w2, 3]
|
|
]
|
|
## REF: 42 00 80 52 16 69 69 F8, second result
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x75AE68
|
|
instructions: [
|
|
[mov, w2, 3]
|
|
]
|
|
## REF: 42 00 80 52 08 05 40 F9
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x7C2E64
|
|
instructions: [
|
|
[mov, w2, 3]
|
|
]
|
|
# Block transparency in some 2D elements to avoid issue with flickering at triple buffer
|
|
## REF: 49 91 89 B9 4A 41 48 B9
|
|
-
|
|
type: asm_a64
|
|
main_offset: 0x6A757C
|
|
instructions: [
|
|
[mov, x9, 0x102],
|
|
[ldr, w10, [x10, 0x840]],
|
|
[add, x20, x8, 0x820],
|
|
[lsl, x12, x10, 3],
|
|
[str, x9, [x20]]
|
|
]
|
|
ALL_FPS:
|
|
# Interval (Setting it to 0 unlocks framerate and sets dynamic game speed)
|
|
## REF: 17 6C 90 52 57 01 A0 72 08 7C 01 A9, first STR above it
|
|
-
|
|
type: write
|
|
address: [MAIN, 0xA76728, 0x50]
|
|
address_unsafe: true
|
|
value_type: int32
|
|
value: 0
|
|
# Dynamic Resolution GPU Frametiming Max / Min (Max = 1.95 * (30/FPS), Min = 1.7 * (30/FPS))
|
|
## REF: 88 F2 80 B9 F3 03 00 AA 1F 05 00 71, last result, first STR above it
|
|
-
|
|
type: evaluate_write
|
|
address: [MAIN, 0xA767B0, 0x140, 0x1B0, 0x20, 0x34]
|
|
address_unsafe: true
|
|
value_type: float
|
|
value: ["(30 / FPS_TARGET) * 1.95", "(30 / FPS_TARGET) * 1.7"] |