Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # RRR & RRR2 Wii *.wam script. May work for other Wii/GC Jade Engine games.
- # Coef table was retrieved by disassembling the ELF with IDA Pro, at offset denoted by gcSND_gst_GameCubeCoefficientsTable
- set MEMORY_FILE2 binary "\x04\xAB\xFC\xED\x07\x89\xFE\xDF\x09\xA2\xFA\xE5\x0C\x90\xFA\xC1"
- set MEMORY_FILE3 binary "\x08\x4D\xFA\xA4\x09\x82\xFD\xF7\x0A\xF6\xFA\xFA\x0B\xE6\xFB\xF5"
- endian little
- get totalsize long
- get riff long
- get riffsz long
- get wave long
- get fmt long
- get fmt_sz long
- savepos data_offset
- math data_offset + fmt_sz
- get format short
- get channels short
- get freq long
- get byterate long
- set interleave long 0x6400
- get unk short
- get unk2 short
- goto data_offset
- get data long
- get data_sz long
- set num_samples long data_sz
- math num_samples / 8
- math num_samples * 7
- savepos data_offset
- # get loop points
- set loop_id long -1
- set loop_start long -1
- set loop_end long -1
- savepos cue_offset
- math cue_offset + data_sz
- if cue_offset >= totalsize
- set cue long -1
- else
- goto data_sz 0 SEEK_CUR
- get cue long
- endif
- if cue == 543520099 # cue
- get cue_sz long
- get cuepoints long
- savepos cue_off
- for i = 0 < cuepoints
- get id long
- get cue_pos long
- get data long
- get dummy long
- get dummy long
- get dummy long
- next i
- get list long
- get list_sz long
- savepos list_end
- math list_end + list_sz
- get adtl long
- savepos list_off
- for list_off = list_off < list_end
- get chunk_name long
- if chunk_name == 1818386796 # labl
- get dummy long
- get id long
- savepos tmp_off
- get name string
- if name == "loop"
- set loop_id long id
- endif
- savepos tmp_off2
- math tmp_off2 - tmp_off
- math tmp_off2 % 2
- if tmp_off2 == 1
- get dummy byte
- endif
- elif chunk_name == 1954051180 # ltxt
- get dummy long
- get id long
- get cue_time long
- if id == loop_id
- set loop_end long cue_time
- endif
- get rgn long
- get dummy longlong
- else
- print "Unknown chunk type at position %list_off%!"
- endif
- savepos list_off
- next
- if loop_end != -1
- savepos tmp_off
- goto cue_off
- for i = 0 < cuepoints
- get id long
- get cue_pos long
- get data long
- get dummy long
- get dummy long
- get dummy long
- if id == loop_id
- set loop_start long cue_pos
- math loop_end + loop_start
- break
- endif
- next i
- goto tmp_off
- endif
- print "Loop start: %loop_start%"
- print "Loop end: %loop_end%"
- print "Samples: %num_samples%"
- endif
- set memory_sz long data_sz
- math memory_sz + 0xc0
- xmath lastblock_sz_per_channel "(data_sz % (interleave * channels)) / channels"
- xmath data_sz_until_lastblock "data_sz - (lastblock_sz_per_channel * channels)"
- xmath lastblock_data_off "data_offset + data_sz_until_lastblock"
- xmath lastblock_padding "interleave - lastblock_sz_per_channel"
- xmath lastblock_memory_off "memory_sz - (lastblock_sz_per_channel * channels) - 1"
- for i = 0 < channels
- math memory_sz + lastblock_padding
- next i
- putVarChr MEMORY_FILE memory_sz 0
- log MEMORY_FILE 0 0
- # create genh
- putVarChr MEMORY_FILE 0 0x484e4547 long # "GENH"
- putVarChr MEMORY_FILE 4 channels long # ch
- putVarChr MEMORY_FILE 8 interleave long # interleave
- putVarChr MEMORY_FILE 0xc freq long
- if loop_start != -1
- putVarChr MEMORY_FILE 0x10 loop_start long
- putVarChr MEMORY_FILE 0x14 loop_end long # number of samples
- else
- putVarChr MEMORY_FILE 0x10 0xffffffff long
- putVarChr MEMORY_FILE 0x14 num_samples long # number of samples
- endif
- putVarChr MEMORY_FILE 0x18 0xc long # ?
- putVarChr MEMORY_FILE 0x1c 0xc0 long # stream start
- putVarChr MEMORY_FILE 0x20 0xc0 long # stream start
- putVarChr MEMORY_FILE 0x24 0xa0 long # coef 1
- putVarChr MEMORY_FILE 0x28 0xa0 long # coef 2
- putVarChr MEMORY_FILE 0x2c 0 long
- putVarChr MEMORY_FILE 0x34 0xa0 long # coef 1
- putVarChr MEMORY_FILE 0x38 0xa0 long # coef 2
- putVarChr MEMORY_FILE 0x9f 0 byte
- append
- log MEMORY_FILE 0 0x10 MEMORY_FILE2
- log MEMORY_FILE 0 0x10 MEMORY_FILE3
- log MEMORY_FILE data_offset data_sz_until_lastblock 0
- for i = 0 < channels
- log MEMORY_FILE lastblock_data_off lastblock_sz_per_channel 0
- append
- math lastblock_memory_off + interleave
- math lastblock_data_off + lastblock_sz_per_channel
- putVarChr MEMORY_FILE lastblock_memory_off 0 byte
- append
- next i
- append
- putVarChr MEMORY_FILE memory_sz 0 byte
- get name basename
- string name += ".genh"
- log name 0 memory_sz MEMORY_FILE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement