Kitty Corp Meow Mix Forums

Super Smash Bros. Brawl Hacking => General Hacking Discussion => Topic started by: VILE on May 17, 2011, 03:03:57 AM



Title: BRSAR Notes - *Pretty Much Complete*
Post by: VILE on May 17, 2011, 03:03:57 AM
Took me a few hours, knock yourselves out.

BRSAR (Raw Sound ARchive)

BRSAR Header:
0x00(4) - RSAR ASCII
0x04(10)- A bunch of UNK values, lol
0x0E(2) - File count within archive
0x10(?) - BRSAR Relocation Group

BRSAR Relocation Group:
0x00(4) - Offset to file start (relative to start if BRSAR Header)
0x04(4) - Length of file
This goes on for as long as the File Count


SYMB (SYM Bank?)

SYMB Header:
0x00(4) - SYMB ASCII
0x04(4) - File Length
0x08(4) - Offset to String Relocation Group (relative to 0x08 of SYMB Header)
0x0C(4) - Mask Offset (relative to 0x08 of SYMB Header)
0x10(4) - Mask Offset (relative to 0x08 of SYMB Header)
0x14(4) - Mask Offset (relative to 0x08 of SYMB Header)
0x18(4) - Mask Offset (relative to 0x08 of SYMB Header)

String Relocation Group:
0x00(4) - Entry count

String Relocation Group: Entries:
0x00(4) - Offset to String (relative to 0x08 of SYMB Header)

Mask:
0x00(4) - UNK
0x04(4) - Entry Count

Mask Entry
0x00(14)- UNK


INFO (INFO)

INFO Header:
0x00(4) - INFO ASCII
0x04(4) - File Length
0x08(8) - 01 then offset to Sound Header
0x10(8) - 01 then offset to Banks Relocation Group (relative to 0x08 in INFO Header)
0x18(8) - 01 then offset to Types Relocation Group (relative to 0x08 in INFO Header)
0x20(8) - 01 then offset to Collections Relocation Group (relative to 0x08 in INFO Header)
0x28(8) - 01 then offset to Group Relocation Group (relative to 0x08 in INFO Header)
0x30(8) - 01 then offset to UNK Header (relative to 0x08 in INFO Header)
0x38(?) - INFO Relocation Group 1

Sound Header:
0x00(4) - String ID
0x04(4) - Group ID
0x08(4) - 00 00 00 00 constant
0x0C(8) - 01 then offset to Sound UNK 1 (relative to 0x08 in INFO Header)
0x14(1) - Flag 1
0x15(1) - Flag 2
0x16(1) - Flag 3
0x17(1) - Flag 4
0x18(8) - 01 (then 03 ??) then offset to Sound UNK 2 (relative to0x08 in INFO Header)
0x20(4) - UNK
0x24(4) - UNK
0x28(4) - UNK

Sound UNK 1:
0x00(4) - UNK
0x04(4) - UNK
0x08(4) - UNK

Sound UNK 2:
0x00(4) - Group Index
0x04(4) - UNK
0x08(4) - UNK
0x0C(4) - UNK

Banks Relocation Group:
0x00(4) - Entry count

Banks Relocation Group Entries:
0x00(1) - 01
0x01(7) - Offset to Bank Data (relative to 0x08 in INFO Header)

Bank Data:
0x00(4) - String ID
0x04(4) - Collection ID

Types Relocation Group:
0x00(4) - Entry count

Types Relocation Group Entries:
0x00(1) - 01
0x01(7) - Offset to Types Data (relative to 0x08 in INFO Header)

Types Data:
0x00(4) - UNK (Some sort of ID)
0x04(1) - UNK
0x05(11)- UNK

Collections Relocation Group:
0x00(4) - Entry count

Collections Relocation Group Entries:
0x00(1) - 01
0x01(7) - Offset to Collections Header (relative to 0x08 in INFO Header)

Collections Header:
0x00(4) - Length
0x04(4) - UNK
0x08(4) - FF FF FF FF constant
0x0C(8) - 00 00 00 00  00 00 00 00 constant
0x14(4) - Offset to Collections UNK Relocation Group

Collections UNK Relocation Group:
0x00(4) - Entry Count

Collections UNK Relocation Group Entry:
0x00(1) - 01
0x01(7) - Offset to Collections UNK

Collections UNK:
0x00(4) - UNK
0x04(4) - UNK

Group Relocation Group:
0x00(4) - Entry count

Group Relocation Group Entries:
0x00(1) - 01
0x01(7) - Offset to Group Data (relative to 0x08 in INFO Header)

Group Data:
0x00(4) - ID
0x04(4) - FF FF FF FF constant
0x08(4) - UNK
0x0C(4) - UNK
0x10(4) - Offset to RWSD (relative to 0x00 in BRSAR Header)
0x14(4) - RWSD length
0x18(4) - Offset to Raw Data (relative to 0x00 in BRSAR Header)
0x1C(4) - Length of Raw Data
0x20(8) - 01 then offset to Group Data Relocation Group (relative to 0x08 in INFO Header)

Raw Data:
Raw data

Group Data Relocation Group:
0x00(4) - Entry count

Group Data Relocation Group Entry:
0x00(1) - UNK (usually 01)
0x01(7) - Offset to Sound Group Header (relative to 0x08 in INFO Header)

Sound Group Header:
0x00(4) - Group ID
0x10(4) - 00 00 00 00 / Offset to RWSD (relative to RWSD offset)
0x14(4) - RWSD length
0x18(4) - 00 00 00 00 / Offset to Sound Data (relative to Sound Data offset)
0x1C(4) - Length of Sound Data

UNK Header:
0x00(16)- A bynch of 16bit UNK values


FILE (FILE)

FILE Header:
0x00(4) - FILE ASCII
0x04(4) - Length


RWSD (RaW SounD)

RWSD Header:
0x00(4) - RWSD ASCII
0x04(10)- A bunch of UNK values, lol
0x0E(2) - File count within archive
0x10(?) - RWSD Relocation Group

RWSD Relocation Group:
0x00(4) - Offset to file start (relative to start if RWSD Header)
0x04(4) - Length of file
This goes on for as long as the File Count


DATA (DATA)

DATA Header:
0x00(4) - DATA ASCII
0x04(4) - Offset to WAVE (relativetostart of DATA Header)
0x08(?) - Additional Sound Header Offset Relocation Group

Additional Sound Header Relocation Group:
0x00(4) - Entry count

Additional Sound Header Relocation Group Entry:
0x00(1) - 01
0x01(7) - Offset to Additional Sound Header Offset (relative to 0x08 from DATA Header)

Additional Sound Header Offset Entry:
0x00(1) - 01
0x01(7) - Offset to Additional Sound Header (relative to 0x08 from DATA Header)

Additional Sound Header:
0x00(4) - UNK float
0x04(4) - UNK float
0x08(2) - UNK
0x0A(2) - UNK
0x0C(4) - UNK
0x10(4) - UNK
0x14(4) - UNK
0x18(4) - UNK
0x1C(4) - UNK
0x20(4) - Additional Sound Header UNK 1 Relocation Group

Additional Sound Header UNK 1 Relocation Group:
0x00(4) - Entry count

Additional Sound Header UNK 1 Relocation Group Entry:
0x00(1) - 01
0x01(7) - Offset to Additional Sound Header UNK 2 Relocation Group Offset (relative to 0x08 in DATA Header)

Additional Sound Header UNK 2 Relocation Group:
0x00(4) - Entry count

Additional Sound Header UNK 2 Relocation Group Entry:
0x00(1) - 01
0x01(7) - Offset to Additional Sound Header UNK 2 (relative to 0x08 in DATA Header)

Additional Sound Header UNK 2:
0x00(4) - UNK
0x04(4) - UNK
0x08(4) - UNK
0x0C(4) - UNK
0x10(?) - Additional Sound Header UNK 3 Relocation Group

Additional Sound Header UNK 3 Relocation Group:
0x00(4) - Entry Count

Additional Sound Header UNK 3 Relocation Group Entry:
0x00(1) - 01
0x01(7) - Offset to Additional Sound Header UNK 3 (relative to 0x08 in DATA Header)

Additional Sound Header UNK 3:
0x00(4) - Index
0x04(4) - 7F 7F 7F 7F constant
0x08(4) - UNK
0x0C(4) - UNK float
0x10(4) - UNK float
0x14(4) - UNK
0x18(4) - UNK
0x1C(4) - UNK
0x20(4) - UNK
0x24(4) - UNK
0x28(4) - UNK
0x2C(4) - UNK


WAVE (WAVE)

WAVE Header:
0x00(4) - WAVE ASCII
0x04(4) - Length
0x08(?) - WAVE Header Relocation Group

WAVE Header Relocation Group:
0x00(4) - Entry count

WAVE Header Relocation Group Entries:
0x00(4) - Offset to WAVE Header (relative to 0x00 in WAVE Header)

WAVE Header:
0x00(1) - Encoding
0x01(2) - Is Looped (boolean, 0 = true, 1 = false)
0x03(3) - Frequency
0x06(4) - UNK
0x0A(2) - Flags
0x0C(4) - Samples
0x10(4) - UNK
0x14(4) - Offset to raw sound (relative to base raw sound)
0x18(4) - UNK
0x1C(4) - UNK
0x20(4) - UNK
0x24(4) - UNK
0x28(1) - UNK
0x29(4) - UNK
0x2D(4) - UNK
0x31(4) - UNK
0x35(4) - UNK
0x39(7) - UNK
0x3C(32)- UNK
0x5C(2) - Gain
0x5E(2) - PS
0x60(2) - YN1
0x62(2) - YN2
0x64(2) - LPS
0x66(3) - LYN1
0x69(3) - LYN2


Title: Re: BRSAR Notes - *Pretty Much Complete*
Post by: Jaklub on May 17, 2011, 10:23:48 AM
Not sure, but I think I found something wrong.
Code:
0x00(4) - Offset to String (relative to 0x00 in String Relocation Group)
I think it should be
Code:
0x00(4) - Offset to String (relative to 0x08 in SYMB Header)
as skipping A818 bytes from 0x0 in String Relocation Group takes you to "d_player_versus_common". Skipping from 0x08 in SYMB Header takes you to "snd_player_system" instead (and there are no strings before it), which seems to make more sense.


Title: Re: BRSAR Notes - *Pretty Much Complete*
Post by: VILE on May 17, 2011, 05:29:35 PM
Not sure, but I think I found something wrong.
Code:
0x00(4) - Offset to String (relative to 0x00 in String Relocation Group)
I think it should be
Code:
0x00(4) - Offset to String (relative to 0x08 in SYMB Header)
as skipping A818 bytes from 0x0 in String Relocation Group takes you to "d_player_versus_common". Skipping from 0x08 in SYMB Header takes you to "snd_player_system" instead (and there are no strings before it), which seems to make more sense.

*fixed*

Thanks for spotting that, didn't test it but I don't doubt that I would have made a mistake like that, it was pretty hectic writing all those relocation groups.


Title: Re: BRSAR Notes - *Pretty Much Complete*
Post by: Diddy Kong on July 03, 2011, 01:45:17 AM
anything else i should know about this? cuz i wanna greatly extend a sound to put steve erkal in the "GO" and "time" announcers


Title: Re: BRSAR Notes - *Pretty Much Complete*
Post by: VILE on July 03, 2011, 01:55:10 AM
I don't think you realise that there are thousands (or high hundreds) of offsets to edit. Unless you write a program for this, it is virtually impossible.


Title: Re: BRSAR Notes - *Pretty Much Complete*
Post by: DarkPikachu on July 03, 2011, 08:03:54 AM
this will be useful *copys*

I don't think you realise that there are thousands (or high hundreds) of offsets to edit. Unless you write a program for this, it is virtually impossible.
well not impossible...
just take an ungodly amount of time,
and a critical amount of brain power to make it work right... heh


Title: Re: BRSAR Notes - *Pretty Much Complete*
Post by: VILE on July 03, 2011, 09:15:43 AM
this will be useful *copys*
well not impossible...
just take an ungodly amount of time,
and a critical amount of brain power to make it work right... heh

That's why I said it was "virtually" impossible :P

The amount of time to edit 1 sound would be more than that of the time it would take to write  a BRSAR extracting and compiling program.


Title: Re: BRSAR Notes - *Pretty Much Complete*
Post by: Diddy Kong on July 03, 2011, 01:27:09 PM
i also came here to look because jaklub uploaded a video with sonic's announcer rediculously long without speed-up or slow-down


Title: Re: BRSAR Notes - *Pretty Much Complete*
Post by: DarkPikachu on July 12, 2011, 08:34:49 AM
@mods

may I suggest a move to the programming board

and if better, create a sub-board "Notes" :)