SCHG:Sonic & Sega All-Stars Racing
From Sonic Retro
Sonic Community Hacking Guide Sonic & Sega All-Stars Racing |
---|
Formats |
SSRT |
Contents
/Resource
/Ghosts
These files are the time trial recordings of the staff. The file format is unknown, but it seems to be a modified version of the gzip/deflate compressor (deflate 1.2.1 Copyright 1995-2003 Jean-loup Gailly; can be seen at Offset 0x2c5de1 / 0xa00b47 in the main .exe)
/Movies
The movies are encoded in CRI Movie 1 or 2
/Shaders
All shaders are in High Level Shading Language (a code language for writing effects for DirectX applications) written text-files
Audio.xpac
“ | I wrote a small utility in Visual Basic which looked for the RIFF WAVE chunks and used them to split the big file, that's it. The resulting files are valid files which can be played in your media player of choice.
As for the xwma files, I found an xwma to wav converter on the internet, I even included it with one of the downloads. I didn't keep it though, and Rapidshare fucked up with my account so I don't know if it's there anymore. The link used to be this: http://rapidshare.com/files/359066202/ASR_Songs.rar. When it used to work, it contained all the songs in xwma format and the xwma to wav converter. |
„ |
—Nineko, [1] |
Nineko discovered, that the file just contains RIFF files (raw wavs) and XMLs, which can be easily splitted with the tool that he added to the download.
The files were encoded with Microsofts DirectX SDK (speeches and sfx into ADPCM, songs and jingles in xWMA), which also includes the necessary decoders.
For adjustment, Audio.xpacs included XML files contain parameters, which controll the way the songs are processed.
Base.xpac
Structure
0x0 / 0x1c5bfff - 0x243 / 0x1c5bfff (File pointers?)
Pad-Bytes
0x800 / 0x1c5bfff - 0x591a / 0x1c5bfff (First SSRT Container [Archivement pictures])
Pad-Bytes
Second SSRT Container [AI Behaviours?]
Pad-Bytes
Thirt SSRT Container [Gadget Weights]
Pad-Bytes
Fourth SSRT Container [Item Data?]
Pad-Bytes
Fifth SSRT Container [Item Data!]
Pad-Bytes
Sixth SSRT Container [Mission Parameters]
Pad-Bytes
Seventh SSRT Container [other Mission stuff]
Pad-Bytes
SSRT Archive 1 (Archivement pictures)
Structure
The files are headerless *.tga pictures. They appear in the combination DATA | Identifer.
Example: whatisthisidontevenknowwtfboomTHISISANSTUPIDFILENAME
At the end of the SSRT is a list of the files. Each filename is listed with an unique Identifer for the file and an variable for the archivement.
Example: THISISANSTUPIDFILENAME TROP_DESC_2 Stupid TROP_NAME_2 this_is_a_stupid_file.tga
So the file with the ending THISISANSTUPIDFILENAME is the 2nd archivement and has the name this_is_a_stupid_file.tga
Mission
At 0060b64c (Offset: 0x60b650 / 0x1c5bfff) the mission parameters starts.
Score type
The real usage of the variable is unknown. By editing it, the type of scoring can be partially changed. Also it can give the players a certain weapon (like the punching glove). In some cases the changing can make a mission uncompletable (as an example the eliminator-missions: normally it ends ends when the player survived all rounds or gets disqualifised. A change of kScoreType can force the time counter to be set on 000. Because the counter can't elapse, the mission goes endless) or force the game to crash.
Value | The missions in which they're normaly used |
---|---|
kScoreType_RevengeControll | Revenge the enemies |
kScoreType_CollectUniversal | Collect stuff |
kScoreType_RaceDistance | Try to be faster than the enemy |
kScoreType_DriftSeconds | Drift the whole track along |
kScoreType_Eliminator | Survive as long as possible |
kScoreType_HitItems | Destroy as much objects as possible |
kScoreType_BoostSeconds | Use the boost as much as possible |
kScoreType_GrandPrix | Win the cup |
kScoreType_TimeGates | Finish the stage |
kScoreType_AvoidItems | Destroy as less objects as possible |
kScoreType_BattleRace | Beat the enemy |
kScoreType_Gates | Drive trough all gates, before the time elapses |
kScoreType_BossBattle | Beat the boss |
kScoreType_CaptureTheFlag | Capture the flag |
kScoreType_BattleArena | Beat the enemy |
kScoreType_Grab | Grab the enemies |
kScoreType_KingOfTheHill | Win the large cup |
kScoreType_TimeAttack | Finish the race in time |
kScoreType_ZoneContest | Win the zone contest |
kScoreType_Survival | Survive the enemy |
kScoreType_JumpToScore | Do jumps or stunts to score |
kScoreType_Demolition | Destroy the capsules |
kScoreType_Tutorial | Tutorial |
Tracks
This variable determines the track you're going to play in the mission.
Value | Track |
---|---|
seasidehill_easy | Strandparadies - Wallagune
Seaside Hill - Whale Lagoon |
seasidehill_medium | Strandparadies - Meeresruine
Seaside Hill - Ocean Ruin |
seasidehill_hard | Strandparadies - Verlorener Palast
Seaside Hill - Lost Palace |
seasidehill_arena | Strandparadies - Strandparadies Platz
Seaside Hill - Seaside Hill Place |
samba_easy | Karnevalland - Sonnenscheintour
Carnivaland - Sunshine Tour |
samba_medium | Samba Di Jeanero -
Carnivaland |
samba_hard | Samba Di Jeanero -
Carnivaland |
samba_arena | Samba Di Jeanero -
Carnivaland |
billyhatcher_easy | Schneeburg - Eiszapfental
Blizzard Castle - Icicle Valley |
billyhatcher_medium | |
billyhatcher_hard | |
billyhatcher_arena | |
houseofthedead_easy | Curien_Mansion |
houseofthedead_medium | Curien_Mansion |
houseofthedead_hard | Curien_Mansion |
houseofthedead_arena | Curien_Mansion |
finalfortress_easy | Finale Festung -
Final Fortress - |
finalfortress_medium | Finale Festung -
Final Fortress - |
finalfortress_hard | Finale Festung -
Final Fortress - |
finalfortress_arena | Finale Festung -
Final Fortress - |
jetsetradio_easy | Tokyo-to -
Tokyo-to - |
jetsetradio_medium | Tokyo-to -
Tokyo-to - |
jetsetradio_hard | Tokyo-to -
Tokyo-to - |
jetsetradio_arena | Tokyo-to -
Tokyo-to - |
casinopark_easy | Casino Park - Roulette-Route
Casino Park - Roulette Road |
casionpark_medium | Casino Park -
Casino Park - |
casinopark_hard | Casino Park -
Casino Park - |
casinopark_arena | Casino Park -
Casino Park - |
monkeyball_easy | |
monkeyball_medium | |
monkeyball_hard | |
monkeyball_arena |
Changing the Track
Mission One is
Mission_01 GS_Rival_Mission1 Mission_01_RivalRace l_Baddies soniccar amy MISSION_Start_Line MISSION_End_Line seasidehill_easy l_Hazards sonicrival MISSION_01
You can easily detect tracks by their suffix "_(difficulty)" or "_arena". In this example the easy course of Seaside Hill is the choosen track. You can replace it with every track as long as at least one empty bit (00; ".") is between it and the next variable.
16 letters + 4 spaces = 19 letters avaiable (one needed as seperator) original
casinopark_hard (15 letters + 4 spaces) works
houseofthedead_arena (20 letters) don't work
Characters
1 vs 1
Mission One is
Mission_01 GS_Rival_Mission1 Mission_01_RivalRace l_Baddies soniccar amy MISSION_Start_Line MISSION_End_Line seasidehill_easy l_Hazards sonicrival MISSION_01
The first listed characters are the players enemies, while the last character is the players one. In this example soniccar (Sonic) is the players character.
You can edit those characters as long as there is one empty bit (00; ".") between both and the character length between both isn't extended.
8 letters + 4 spaces + 3 letters = 15 symbols [Sonic (soniccar)] original
6 letters + 6 spaces + 3 letters = 15 symbols [Shadow (shadow)] works
14 letters + 11 letters = 25 letters [Zobio and Zobikio (houseofthedead) and Ryo (ryoforklift)] doesn't work, because it's too long
Multiple Enemies
Mission Three is kScoreType_Eliminator Mission_03 GS_Knockout_Easy Mission_03_Knockout samba aiai bigthecat tails bdjoe amy knuckles billyhatcher_easy l_Gadgets MISSION_03
In this mission are multiple enemies. Unlike the spacer between Enemy|Player (00; "."), the enemies are separated with a simple space (20; " "). To drain the number of characters you can simply delete one and add the number of removed bits as empty bits at the end of the enemy list.
5 letters + 1 space (enemy seperator) + 3 letters + 4 spaces (normal seperator) [B D Joe] original
5 letters + 1 space (enemy seperator) + 4 spaces (normal seperator)
count 3; enemy seperator not needed -> count 4
5 letters + 4+4 spaces (normal seperator)
As long as there is space new enemies can be added too.
3 letters + 1 space (enemy seperator) + 3 letters + 6 spaces (normal seperator)
3 letters + 1 space (enemy seperator) + 3 letters + 1 space (enemy seperator) + 3 letters + 2 spaces (normal seperator)
Multiple characters controlled by the player will work
Bugs in characters
Mii and Avatar normally load the players profile information to update the characters parts. Because this is impossible on the PC, these parts won't be loaded (the Miis head and Avatars complete body)
Sonic and Sega All-Stars Racing.exe
Command line parameters
NOTICE: These parameters are blocked by the game
Command | Value |
---|---|
-autoheapdump | 0=off
1=on |
-quickstart | 0=off
1=on |
-miss_unlock | x=Unlocks mission 1 to X |
-unlock | 1=all
2=racers 3=racks 4=missions 5=extras |
-no_ai_racers | 0=off
1=on |
-reset_status | 0=off
1=on |
-audio_debug | 0=off
1=on |
-num_laps | |
-30hz | 0=off
1=on |
-coleventofflne | 0=off
1=on |
References
Sonic & Sega All-Stars Racing | |
---|---|
Main page (Arcade|J2ME) Magazine articles Hidden content |
show;hide
Battle arenas:
Nintendo DS only: DLC: |