Actions

SCHG

SCHG:Sonic & Sega All-Stars Racing

From Sonic Retro

Sonic Community Hacking Guide
Sonic & Sega All-Stars Racing
Formats
SSRT

XPAC

/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, 

Sonic Retro
[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
SSASR PC Title.png

Main page (Arcade|J2ME)
Comparisons
Achievements
Downloadable content
Changelog
Credits


Magazine articles
Reception
Merchandise


Hidden content
Bugs
Hacking guide


Missions
Collection

Sonic Community Hacking Guide
General
SonED2 Manual | Subroutine Equivalency List
Game-Specific
Sonic the Hedgehog (16-bit) | Sonic the Hedgehog (8-bit) | Sonic CD (prototype 510) | Sonic CD | Sonic CD (PC) | Sonic CD (2011) | Sonic 2 (Simon Wai prototype) | Sonic 2 (16-bit) | Sonic 2 (Master System) | Sonic 3 | Sonic 3 & Knuckles | Chaotix | Sonic Jam | Sonic Jam 6 | Sonic Adventure | Sonic Adventure DX: Director's Cut | Sonic Adventure DX: PC | Sonic Adventure (2010) | Sonic Adventure 2 | Sonic Adventure 2: Battle | Sonic Adventure 2 (PC) | Sonic Heroes | Sonic Riders | Sonic the Hedgehog (2006) | Sonic & Sega All-Stars Racing | Sonic Unleashed (Xbox 360/PS3) | Sonic Colours | Sonic Generations | Sonic Forces
Technical information
Sonic Eraser | Sonic 2 (Nick Arcade prototype) | Sonic CD (prototype; 1992-12-04) | Dr. Robotnik's Mean Bean Machine | Sonic Triple Trouble | Tails Adventures | Sonic Crackers | Sonic 3D: Flickies' Island | Sonic & Knuckles Collection | Sonic R | Sonic Shuffle | Sonic Advance | Sonic Advance 3 | Sonic Battle | Shadow the Hedgehog | Sonic Rush | Sonic Classic Collection | Sonic Free Riders | Sonic Lost World
Legacy Guides
The Nemesis Hacking Guides The Esrael Hacking Guides
ROM: Sonic 1 | Sonic 2 | Sonic 2 Beta | Sonic 3

Savestate: Sonic 1 | Sonic 2 Beta/Final | Sonic 3

Sonic 1 (English / Portuguese) | Sonic 2 Beta (English / Portuguese) | Sonic 2 and Knuckles (English / Portuguese)
Move to Sega Retro
Number Systems (or scrap) | Assembly Hacking Guide | 68000 Instruction Set | 68000 ASM-to-Hex Code Reference | SMPS Music Hacking Guide | Mega Drive technical information