mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-11-27 15:00:36 +00:00
f86e111fc5
More research on how cutscenes work. I normalized all the various C files as `cutscene.c`, marked all the isolated function as `static` and renamed the main entity as `{STAGE}_CutsceneExec` (e.g. `CEN_CutsceneExec`). I am using the `OVL_EXPORT` to automate the names. TO-DO: - [x] Rename entity as `{STAGE}_EntityCutscene` for consistency - [x] CEN - [x] DRE - [x] NO3 - [x] NZ0 - [x] ST0 - [x] MAR ~~SEL~~ The offset of the portrait data seems to be hardcoded. I have no idea how to resolve these offsets at compilation time. The entire cutscene script thing is very sketchy and horribly designed by the original developers. What a nightmare to integrate into our project. This is how a cutscene script gets decompiled: ``` LOAD_PORTRAIT(0x80188D8C, 0), SET_PORTRAIT(1, 0), SCRIPT_UNKNOWN_11(), PLAY_SOUND(0x37B), WAIT_FOR_SOUND(), SET_SPEED(4), 'T','h','a','t',' ','v','o','i','c','e','!',' ', SET_WAIT(16), SET_SPEED(3), 'A','l','u','c','a','r','d',',', LINE_BREAK(), SET_WAIT(16), SET_FLAG(2), 'i','t','\'','s',' ','y','o','u','!', SET_WAIT(48), NEXT_DIALOG(), ```
134 lines
4.8 KiB
YAML
134 lines
4.8 KiB
YAML
options:
|
|
platform: psx
|
|
basename: stsel
|
|
base_path: ..
|
|
build_path: build/us
|
|
target_path: disks/us/ST/SEL/SEL.BIN
|
|
asm_path: asm/us/st/sel
|
|
asset_path: assets/st/sel
|
|
src_path: src/st/sel
|
|
ld_script_path: build/us/stsel.ld
|
|
compiler: GCC
|
|
symbol_addrs_path:
|
|
- config/symbols.us.txt
|
|
- config/symbols.us.stsel.txt
|
|
undefined_funcs_auto_path: config/undefined_funcs_auto.us.stsel.txt
|
|
undefined_syms_auto_path: config/undefined_syms_auto.us.stsel.txt
|
|
find_file_boundaries: yes
|
|
use_legacy_include_asm: no
|
|
migrate_rodata_to_functions: no
|
|
asm_jtbl_label_macro: jlabel
|
|
extensions_path: tools/splat_ext
|
|
disassemble_all: True
|
|
section_order:
|
|
- ".data"
|
|
- ".rodata"
|
|
- ".text"
|
|
- ".bss"
|
|
- ".sbss"
|
|
sha1: a919a53a760107972049bfdeadde33376428eace
|
|
segments:
|
|
- name: stsel
|
|
type: code
|
|
start: 0x00000000
|
|
vram: 0x80180000
|
|
align: 4
|
|
subalign: 4
|
|
subsegments:
|
|
- [0x0, .data, 2C048]
|
|
- [0x3A8, .data, 2C048]
|
|
- [0x454, .data, 2C048]
|
|
- [0x46C, .data, 2C048]
|
|
- [0x4D0, .data, 3410C]
|
|
- [0x4E0, .data, banks]
|
|
- [0x728, data]
|
|
- [0x824, .data, cutscene]
|
|
- [0x8DC, .data, save_mgr_pre]
|
|
- [0x8E4, palette, memcard_0]
|
|
- [0x904, palette, memcard_1]
|
|
- [0x924, palette, memcard_2]
|
|
- [0x944, palette, memcard_3]
|
|
- [0x964, palette, memcard_4]
|
|
- [0x984, palette, memcard_5]
|
|
- [0x9A4, palette, memcard_6]
|
|
- [0x9C4, palette, memcard_7]
|
|
- [0x9E4, palette, memcard_8]
|
|
- [0xA04, palette, memcard_9]
|
|
- [0xA24, palette, memcard_10]
|
|
- [0xA44, palette, memcard_11]
|
|
- [0xA64, palette, memcard_12]
|
|
- [0xA84, palette, memcard_13]
|
|
- [0xAA4, palette, memcard_14]
|
|
- [0xAC4, palette, memcard_15]
|
|
- [0xAE4, ci4, memcard_0, 16, 48]
|
|
- [0xC64, ci4, memcard_1, 16, 48]
|
|
- [0xDE4, ci4, memcard_2, 16, 48]
|
|
- [0xF64, ci4, memcard_3, 16, 48]
|
|
- [0x10E4, ci4, memcard_4, 16, 48]
|
|
- [0x1264, ci4, memcard_5, 16, 48]
|
|
- [0x13E4, ci4, memcard_6, 16, 48]
|
|
- [0x1564, ci4, memcard_7, 16, 48]
|
|
- [0x16E4, ci4, memcard_8, 16, 48]
|
|
- [0x1864, ci4, memcard_9, 16, 48]
|
|
- [0x19E4, ci4, memcard_10, 16, 48]
|
|
- [0x1B64, ci4, memcard_11, 16, 48]
|
|
- [0x1CE4, ci4, memcard_12, 16, 48]
|
|
- [0x1E64, ci4, memcard_13, 16, 48]
|
|
- [0x1FE4, ci4, memcard_14, 16, 48]
|
|
- [0x2164, ci4, memcard_15, 16, 48]
|
|
- [0x22E4, .data, save_mgr]
|
|
- [0x2584, data]
|
|
- [0x25FC, .data, config_us] # subweapons
|
|
- [0x2700, .data, config_us] # equip
|
|
- [0x5314, .data, config_us] # accessories
|
|
- [0x5E54, .data, config_us] # menu
|
|
- [0x600C, .data, config_us] # spells
|
|
- [0x631C, .data, config_us] # relics
|
|
- [0x64FC, .data, config_us] # enemies
|
|
- [0xA37C, .data, config_us] # exp table
|
|
- [0xA50C, .data, lba_stage]
|
|
- [0xB2CC, .data, stream_info]
|
|
- [0xB304, data]
|
|
- [0xCD54, .data, CD54]
|
|
- [0xDBD4, data]
|
|
- [0x176C0, rodata]
|
|
- [0x27438, .rodata, 2C048] # strings in D_80180128
|
|
- [0x27620, .rodata, 2C048] # strings in D_801803D0
|
|
- [0x276A4, .rodata, 2C048] # strings func_801ACFBC
|
|
- [0x276C0, .rodata, 2C048] # DrawNavigationTips jtbl
|
|
- [0x276D8, .rodata, 2C048] # strings in func_801AD490
|
|
- [0x276F0, .rodata, 2C048] # strings in D_80180454
|
|
- [0x27748, .rodata, 2C048] # strings in func_801AD66C
|
|
- [0x27760, .rodata, 2C048] # strings in func_801AD78C
|
|
- [0x277A0, .rodata, 2C048] # strings in func_801ADF94
|
|
- [0x277C8, .rodata, 2C048] # Update strings and jtbl
|
|
- [0x27AE4, .rodata, 2C048] # "BASLUS-00067DRAX00"
|
|
- [0x27AF8, .rodata, 2C048] # FntPrint strings
|
|
- [0x27B14, .rodata, 33164] # func_801B3164
|
|
- [0x27B60, .rodata, 3410C] # E3 selection strings
|
|
- [0x27B98, .rodata, 3410C] # TestCollision
|
|
- [0x27BD8, .rodata, 3410C] # func_801B55C8
|
|
- [0x27BF8, .rodata, 3585C]
|
|
- [0x27CD4, .rodata, cutscene] # g_DiagActors strings
|
|
- [0x27CF4, .rodata, cutscene] # SEL_EntityCutscene jtbl
|
|
- [0x27D78, .rodata, save_mgr]
|
|
- [0x28040, .rodata, config_us] # equip strings
|
|
- [0x29B18, .rodata, config_us] # accessories strings
|
|
- [0x2A8B4, .rodata, config_us] # menu strings
|
|
- [0x2AE08, .rodata, config_us] # spells strings
|
|
- [0x2AFA0, .rodata, config_us] # relics strings
|
|
- [0x2B490, .rodata, config_us] # enemies strings
|
|
- [0x2BBF0, .rodata, lba_stage]
|
|
- [0x2BF9C, .rodata, stream]
|
|
- [0x2C048, c, 2C048]
|
|
- [0x33164, c, 33164]
|
|
- [0x3410C, c, 3410C]
|
|
- [0x3585C, c, 3585C]
|
|
- [0x3642C, c, cutscene]
|
|
- [0x380F0, c, save_mgr]
|
|
- [0x39744, c, stream]
|
|
- [0x3AB70, asm, handwritten/func_801BAB70]
|
|
- [0x3ABA4, asm, handwritten/DecDCTvlc]
|
|
- [0x3AEE4, .bss, bss]
|
|
- [0x56B28]
|