2025-09-05 17:12:01 +03:00

149 lines
3.1 KiB
YAML

# Kirby's Dream Buffet 1.0.0/1.0.0a
# BID: 82AF4E16BBC0BEC8
# Thanks to Hazerou for finding offsets
# Game was patched to use triple buffer, and to avoid flickering with some 2D transparent elements, I have disabled transparency in them.
# Issue with flickering exists because game is hardcoded to only register 2 textures into texturepool and 2 samplers into samplerpool for framebuffers.
unsafeCheck: true
MASTER_WRITE:
# Remove double buffer
-
type: asm_a64
main_offset: 0x861208
instructions: [
[mov, w9, 3]
]
# Fix helper functions to properly copy third buffer address to stack
-
type: asm_a64
main_offset: 0x8612DC
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x8654D8
instructions: [
[sub, sp, sp, 0x60],
[stp, x29, x30, [sp, 0x20]],
[add, x29, sp, 0x20],
[str, x23, [sp, 0x30]],
[stp, x22, x21, [sp, 0x40]],
[stp, x20, x19, [sp, 0x50]],
[stp, xzr, xzr, [sp, 0x10]]
]
-
type: asm_a64
main_offset: 0x86550C
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x8655B8
instructions: [
[stp, x8, x10, [sp]],
[bl, 0x85f028],
[ldp, x20, x19, [sp, 0x50]],
[ldr, x23, [sp, 0x30]],
[ldp, x22, x21, [sp, 0x40]],
[ldp, x29, x30, [sp, 0x20]],
[add, sp, sp, 0x60]
]
-
type: asm_a64
main_offset: 0x793298
instructions: [
[sub, sp, sp, 0x50],
[stp, x29, x30, [sp, 0x20]],
[add, x29, sp, 0x20],
[stp, x22, x21, [sp, 0x30]],
[stp, x20, x19, [sp, 0x40]],
]
-
type: asm_a64
main_offset: 0x7932E0
instructions: [
[stp, xzr, xzr, [sp, 0x10]]
]
-
type: asm_a64
main_offset: 0x7932EC
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x793310
instructions: [
[ldp, x20, x19, [sp, 0x40]],
[ldp, x22, x21, [sp, 0x30]],
[ldp, x29, x30, [sp, 0x20]],
[add, sp, sp, 0x50]
]
-
type: asm_a64
main_offset: 0x876B00
instructions: [
[add, x1, sp, 0x10],
[add, x23, sp, 0x10]
]
-
type: asm_a64
main_offset: 0x876B14
instructions: [
[mov, w2, 3],
[stp, xzr, xzr, [sp, 0x10]]
]
-
type: asm_a64
main_offset: 0x8CFC44
instructions: [
[mov, x1, sp],
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x8CFC5C
instructions: [
[mov, x26, sp]
]
-
type: asm_a64
main_offset: 0x876B14
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x8612DC
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x876A64
instructions: [
[mov, w2, 3]
]
# Disable transparency for some 2D elements to avoid issues with flickering at triple buffer
-
type: asm_a64
main_offset: 0x7BFB00
instructions: [
[mov, x9, 0x102],
[ldr, w10, [x10, 0x848]],
[lsl, x12, x10, 3],
[add, x20, x8, 0x828],
[str, x9, [x20]]
]
ALL_FPS:
# Interval
-
type: evaluate_write
address: [MAIN, 0xBEBFD8, 0]
value_type: int32
value: VSYNC_TARGET