Sonic Adventure

To create a upload data file for ranking purpose, you have to go to file select screen, highlight the desired file and press X+A buttons. After that you must hear a ring sound and a file called SONICADV_H04 will be created. Be careful, because it doesn´t alert you if there is not enough space on your VMU.

This file contains a HTML code inside that you can see in your browser typing that: x-avefront://—-.dream/vms/load/SONICADV_H04

In this HTML, there is a field called chaodata that contains game data from file selected previously. That field is encrypted and codified in BASE64. To decode we need to convert BASE64 into Bytes.

To decrypt bytes we will use next algorithm in PERL

#Decoding function from SEGA Encryption to Bytes Array 
#INPUT: Array of Bytes/Chars - Encoded data
#OUTPUT: Array of Bytes/Chars - Decoded data
sub XorAlgoritm 
{
    my (@BINDATA) = @_;

    my (@XOR_CODE) = (65, 84, 69, 90); # 0x5A455441
    my (@PLUS_VAL) = (65, 78, 65, 78); # 0x4E414E41

    my (@TMP_VAL) = (0, 0, 0, 0);

    for (my $i = 0; $i < 313; $i++)
    {
        my $TMP_VAL2 = 0;
        for (my $j = 0; $j < 4; $j++)
        {
            $BINDATA[$i * 4 + $j] ^= ($TMP_VAL[$j] ^ $XOR_CODE[$j]);
            $TMP_VAL[$j] = ($TMP_VAL[$j] + $PLUS_VAL[$j] + $TMP_VAL2);
            $TMP_VAL2 = $TMP_VAL[$j] >> 8;
            $TMP_VAL[$j] &= 255;
        }
    }

    return @BINDATA;
}

Then we will have an understable byte where we can extract all game info. Next Table show offsets from that bytes array and their meaning.

SONICADV_H04 UPLOAD DATA FORMAT

INITIAL OFFSET BYTES COMMENTS
0x000 2 CHECKSUM
0x002 68 UNKNOW
0x048 4 PLAY TIME
0x04C 4 SONIC SCORE IN EMERALD COAST
0x050 4 SONIC SCORE IN WINDY VALLEY
0x054 4 SONIC SCORE IN TWINKLE PARK
0x058 4 SONIC SCORE IN SPEED MOUNTAIN
0x05C 4 SONIC SCORE IN RED MOUNTAIN
0x060 4 SONIC SCORE IN SKY DECK
0x064 4 SONIC SCORE IN LOST WORLD
0x068 4 SONIC SCORE IN ICE CAP
0x06C 4 SONIC SCORE IN CASINOPOLIS
0x070 4 SONIC SCORE IN FINAL EGG
0x074 4 TAILS SCORE IN WINDY VALLEY
0x078 4 TAILS SCORE IN SPEED MOUNTAIN
0x07C 4 TAILS SCORE IN SKY DECK
0x080 4 TAILS SCORE IN ICE CAP
0x084 4 TAILS SCORE IN CASINOPOLIS
0x088 4 KNUCKLES SCORE IN SPEED MOUNTAIN
0x08C 4 KNUCKLES SCORE IN RED MOUNTAIN
0x090 4 KNUCKLES SCORE IN SKY DECK
0x094 4 KNUCKLES SCORE IN LOST WORLD
0x098 4 KNUCKLES SCORE IN CASINOPOLIS
0x09C 4 AMY SCORE IN TWINKLE PARK
0x0A0 4 AMY SCORE IN FINAL EGG
0x0A4 4 AMY SCORE IN HOT SHELTER
0x0A8 4 E-102 SCORE IN EMERALD COAST
0x0AC 4 E-102 SCORE IN WINDY VALLEY
0x0B0 4 E-102 SCORE IN RED MOUNTAIN
0x0B4 4 E-102 SCORE IN FINAL EGG
0x0B8 4 E-102 SCORE IN HOT SHELTER
0x0BC 4 BIG SCORE IN EMERALD COAST
0x0C0 4 BIG SCORE IN TWINKLE PARK
0x0C4 4 BIG SCORE IN ICE CAP
0x0C8 4 BIG SCORE IN HOT SHELTER
0x0CC 3 SONIC TIME IN EMERALD COAST*
0x0CF 3 SONIC TIME IN WINDY VALLEY*
0x0D2 3 SONIC TIME IN TWINKLE PARK*
0x0D5 3 SONIC TIME IN SPEED MOUNTAIN*
0x0D8 3 SONIC TIME IN RED MOUNTAIN*
0x0DB 3 SONIC TIME IN SKY DECK*
0x0DE 3 SONIC TIME IN LOST WORLD*
0x0E1 3 SONIC TIME IN ICE CAP*
0x0E4 3 SONIC TIME IN CASINOPOLIS*
0x0E7 3 SONIC TIME IN FINAL EGG*
0x0EA 3 TAILS TIME IN WINDY VALLEY*
0x0ED 3 TAILS TIME IN SPEED MOUNTAIN*
0x0F0 3 TAILS TIME IN SKY DECK*
0x0F3 3 TAILS TIME IN ICE CAP*
0x0F6 3 TAILS TIME IN CASINOPOLIS*
0x0F9 3 KNUCKLES TIME IN SPEED MOUNTAIN*
0x0FC 3 KNUCKLES TIME IN RED MOUNTAIN*
0x0FF 3 KNUCKLES TIME IN SKY DECK*
0x102 3 KNUCKLES TIME IN LOST WORLD*
0x105 3 KNUCKLES TIME IN CASINOPOLIS*
0x108 3 AMY TIME IN TWINKLE PARK*
0x10B 3 AMY TIME IN FINAL EGG*
0x10E 3 AMY TIME IN HOT SHELTER*
0x111 3 E-102 TIME IN EMERALD COAST*
0x114 3 E-102 TIME IN WINDY VALLEY*
0x117 3 E-102 TIME IN RED MOUNTAIN*
0x11A 3 E-102 TIME IN FINAL EGG*
0x11D 3 E-102 TIME IN HOT SHELTER*
0x120 6 BIG WEIGHT IN EMERALD COAST**
0x126 6 BIG WEIGHT IN TWINKLE PARK**
0x12C 6 BIG WEIGHT IN ICE CAP**
0x132 6 BIG WEIGHT IN HOT SHELTER**
0x138 16 UNKNOW
0x148 2 SONIC RINGS IN EMERALD COAST
0x14A 2 SONIC RINGS IN WINDY VALLEY
0x14C 2 SONIC RINGS IN TWINKLE PARK
0x14E 2 SONIC RINGS IN SPEED MOUNTAIN
0x150 2 SONIC RINGS IN RED MOUNTAIN
0x152 2 SONIC RINGS IN SKY DECK
0x154 2 SONIC RINGS IN LOST WORLD
0x156 2 SONIC RINGS IN ICE CAP
0x158 2 SONIC RINGS IN CASINOPOLIS
0x15A 2 SONIC RINGS IN FINAL EGG
0x15C 2 TAILS RINGS IN WINDY VALLEY
0x15E 2 TAILS RINGS IN SPEED MOUNTAIN
0x160 2 TAILS RINGS IN SKY DECK
0x162 2 TAILS RINGS IN ICE CAP
0x164 2 TAILS RINGS IN CASINOPOLIS
0x166 2 KNUCKLES RINGS IN SPEED MOUNTAIN
0x168 2 KNUCKLES RINGS IN RED MOUNTAIN
0x16A 2 KNUCKLES RINGS IN SKY DECK
0x16C 2 KNUCKLES RINGS IN LOST WORLD
0x16E 2 KNUCKLES RINGS IN CASINOPOLIS
0x170 2 AMY RINGS IN TWINKLE PARK
0x172 2 AMY RINGS IN FINAL EGG
0x174 2 AMY RINGS IN HOT SHELTER
0x176 2 E-102 RINGS IN EMERALD COAST
0x178 2 E-102 RINGS IN WINDY VALLEY
0x17A 4 E-102 RINGS IN RED MOUNTAIN
0x17C 4 E-102 RINGS IN FINAL EGG
0x17E 4 E-102 RINGS IN HOT SHELTER
0x180 4 BIG RINGS IN EMERALD COAST
0x182 4 BIG RINGS IN TWINKLE PARK
0x184 4 BIG RINGS IN ICE CAP
0x186 4 BIG RINGS IN HOT SHELTER
0x188 4 SONIC SCORE IN SKY CHASE 1 (FIRST PLACE)
0x18C 4 SONIC SCORE IN SKY CHASE 1 (SECOND PLACE)
0x190 4 SONIC SCORE IN SKY CHASE 1 (THIRD PLACE)
0x194 4 TAILS SCORE IN SKY CHASE 1 (FIRST PLACE)
0x198 4 TAILS SCORE IN SKY CHASE 1 (SECOND PLACE)
0x19C 4 TAILS SCORE IN SKY CHASE 1 (THIRD PLACE)
0x1A0 4 SONIC SCORE IN SKY CHASE 1 (FIRST PLACE)
0x1A4 4 SONIC SCORE IN SKY CHASE 2 (SECOND PLACE)
0x1A8 4 SONIC SCORE IN SKY CHASE 2 (THIRD PLACE)
0x1AC 4 TAILS SCORE IN SKY CHASE 2 (FIRST PLACE)
0x1B0 4 TAILS SCORE IN SKY CHASE 2 (SECOND PLACE)
0x1B4 4 TAILS SCORE IN SKY CHASE 2 (THIRD PLACE)
0x1B8 4 SONIC SCORE IN ICE CAP (FIRST PLACE)
0x1BC 4 SONIC SCORE IN ICE CAP (SECOND PLACE)
0x1C0 4 SONIC SCORE IN ICE CAP (THIRD PLACE)
0x1C4 4 TAILS SCORE IN ICE CAP (FIRST PLACE)
0x1C8 4 TAILS SCORE IN ICE CAP (SECOND PLACE)
0x1CC 4 TAILS SCORE IN ICE CAP (THIRD PLACE)
0x1D0 4 SONIC SCORE IN SAND HILL (FIRST PLACE)
0x1D4 4 SONIC SCORE IN SAND HILL (SECOND PLACE)
0x1D8 4 SONIC SCORE IN SAND HILL (THIRD PLACE)
0x1DC 4 TAILS SCORE IN SAND HILL (FIRST PLACE)
0x1E0 4 TAILS SCORE IN SAND HILL (SECOND PLACE)
0x1E4 4 TAILS SCORE IN SAND HILL (THIRD PLACE)
0x1E8 4 AMY SCORE IN HEDGEHOG HAMMER (FIRST PLACE)
0x1EC 4 AMY SCORE IN HEDGEHOG HAMMER (SECOND PLACE)
0x1F0 4 AMY SCORE IN HEDGEHOG HAMMER (THIRD PLACE)
0x1F4 3 SONIC SCORE IN TWINCKLE CIRCUIT (FIRST PLACE)** *
0x1F7 3 SONIC SCORE IN TWINCKLE CIRCUIT (SECOND PLACE)** *
0x1FA 3 SONIC SCORE IN TWINCKLE CIRCUIT (THIRD PLACE)** *
0x1FD 6 UNKNOW
0x203 3 TAILS SCORE IN TWINCKLE CIRCUIT (FIRST PLACE)*
0x206 3 TAILS SCORE IN TWINCKLE CIRCUIT (SECOND PLACE) *
0x209 3 TAILS SCORE IN TWINCKLE CIRCUIT (THIRD PLACE)** *
0x20C 6 UNKNOW
0x212 3 KNUCKLES SCORE IN TWINCKLE CIRCUIT (FIRST PLACE)** *
0x215 3 KNUCKLES SCORE IN TWINCKLE CIRCUIT (SECOND PLACE)** *
0x218 3 KNUCKLES SCORE IN TWINCKLE CIRCUIT (THIRD PLACE)** *
0x21B 6 UNKNOW
0x221 3 AMY SCORE IN TWINCKLE CIRCUIT (FIRST PLACE)** *
0x224 3 AMY SCORE IN TWINCKLE CIRCUIT (SECOND PLACE)** *
0x227 3 AMY SCORE IN TWINCKLE CIRCUIT (THIRD PLACE)** *
0x22A 6 UNKNOW
0x230 3 E102 SCORE IN TWINCKLE CIRCUIT (FIRST PLACE)** *
0x233 3 E102 SCORE IN TWINCKLE CIRCUIT (SECOND PLACE)** *
0x236 3 E102 SCORE IN TWINCKLE CIRCUIT (THIRD PLACE)** *
0x239 6 UNKNOW
0x23F 3 BIG SCORE IN TWINCKLE CIRCUIT (FIRST PLACE)** *
0x242 3 BIG SCORE IN TWINCKLE CIRCUIT (SECOND PLACE)** *
0x245 3 BIG SCORE IN TWINCKLE CIRCUIT (THIRD PLACE)** *
0x248 6 UNKNOW
0x24E 3 SONIC SCORE IN BOSS (FIRST PLACE)** *
0x251 3 SONIC SCORE IN BOSS (SECOND PLACE)** *
0x254 3 SONIC SCORE IN BOSS (THIRD PLACE)** *
0x257 3 TAILS SCORE IN BOSS (FIRST PLACE)** *
0x25A 3 TAILS SCORE IN BOSS (SECOND PLACE)** *
0x25D 3 TAILS SCORE IN BOSS (THIRD PLACE)** *
0x260 3 KNUCKLES SCORE IN BOSS (FIRST PLACE)** *
0x263 3 KNUCKLES SCORE IN BOSS (SECOND PLACE)** *
0x266 3 KNUCKLES SCORE IN BOSS (THIRD PLACE)** *
0x269 3 AMY SCORE IN BOSS (FIRST PLACE)** *
0x26C 3 AMY SCORE IN BOSS (SECOND PLACE)** *
0x26F 3 AMY SCORE IN BOSS (THIRD PLACE)** *
0x272 3 E102 SCORE IN BOSS (FIRST PLACE)** *
0x275 3 E102 SCORE IN BOSS (SECOND PLACE)** *
0x278 3 E102 SCORE IN BOSS (THIRD PLACE)** *
0x27B 3 BIG SCORE IN BOSS (FIRST PLACE)** *
0x27E 3 BIG SCORE IN BOSS (SECOND PLACE)** *
0x281 3 BIG SCORE IN BOSS (THIRD PLACE)** *
0x284 17 EMBLEMS (see below)
0x290 1 OPTIONS
0x291 1 SONIC LIVES
0x292 1 TAILS LIVES
0x293 1 KNUCKLES LIVES
0x294 1 AMY LIVES
0x295 1 E102 LIVES
0x296 1 BIG LIVES

*: First Byte = minute ; Second Byte= seconds ; Third Byte= Milliseconds. In savegame third byte is encoded in 60th of second, to convert to milliseconds use this formula: (Third Byte Value * 1666) DIV 1000, where DIV is a integer division.

**: Weight must be multiply by 10 to get real value, also there is 3 values stored. First 2 bytes are first position, next 2 bytes are second position and final 2 bytes are third position

***: First Byte = minute ; Second Byte= seconds ; Third Byte= Milliseconds. NO conversion needed.

EMBLEMS FORMAT

OFFSET BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
0x284 Ice Cap Level A as Sonic Lost World Level A as Sonic Sky Deck Level A as Sonic Red Mountain Level A as Sonic Speed Highway Level A as Sonic Twinkle Park Level A as Sonic Windy Valley Level A as Sonic Emerald Coast Level A as Sonic
0x285 Speed Highway Level A as Knuckles Casinopolis Level A as Tails Ice cap Level A as Tails Sky Deck Level A as Tails Speed Highway Level A as Tails Windy Valley Level A as Tails Final Egg Level A as Sonic Casinopolis Level A as Sonic
0x286 Emerald Coast Level A as Gamma Hot Shelter Level A as Amy Final Egg Level A as Amy Twinckle Park Level A as Amy Casinopolis Level A as Knuckles Lost World Level A as Knuckles Sky Deck Level A as Knuckles Red Mountain Level A as Knuckles
0x287 Hot Shelter Level A as Big Ice Cap Level A as Big Twinckle Park Level A as Big Emerald Coast Level A as Big Hot Shelter Level A as Gamma Final Egg Level A as Gamma Red Mountain Level A as Gamma Windy Valley Level A as Gamma
0x288 Ice Cap Level B as Sonic Lost World Level B as Sonic Sky Deck Level B as Sonic Red Mountain Level B as Sonic Speed Highway Level B as Sonic Twinckle Park Level B as Sonic Windy Valley Level B as Sonic Emerald Coast Level B as Sonic
0x289 Speed Highway Level B as Knuckles Casinopolis Level B as Tails Ice cap Level B as Tails Sky Deck Level B as Tails Speed Highway Level B as Tails Windy Valley Level B as Tails Final Egg Level B as Sonic Casinopolis Level B as Sonic
0x28A Emerald Coast Level B as Gamma Hot Shelter Level B as Amy Final Egg Level B as Amy Twinckle Park Level B as Amy Casinopolis Level B as Knuckles Lost World Level B as Knuckles Sky Deck Level B as Knuckles Red Mountain Level B as Knuckles
0x28B Hot Shelter Level B as Big Ice Cap Level B as Big Twinckle Park Level B as Big Emerald Coast Level B as Big Hot Shelter Level B as Gamma Final Egg Level B as Gamma Red Mountain Level B as Gamma Windy Valley Level B as Gamma
0x28C Ice Cap Level C as Sonic Lost World Level C as Sonic Sky Deck Level C as Sonic Red Mountain Level C as Sonic Speed Highway Level C as Sonic Twinkle Park Level C as Sonic Windy Valley Level C as Sonic Emerald Coast Level C as Sonic
0x28D Speed Highway Level C as Knuckles Casinopolis Level C as Tails Ice cap Level C as Tails Sky Deck Level C as Tails Speed Highway Level C as Tails Windy Valley Level C as Tails Final Egg Level C as Sonic Casinopolis Level C as Sonic
0x28E Emerald Coast Level C as Gamma Hot Shelter Level C as Amy Final Egg Level C as Amy Twinckle Park Level C as Amy Casinopolis Level C as Knuckles Lost World Level C as Knuckles Sky Deck Level C as Knuckles Red Mountain Level C as Knuckles
0x28F Hot Shelter Level C as Big Ice Cap Level C as Big Twinckle Park Level C as Big Emerald Coast Level C as Big Hot Shelter Level C as Gamma Final Egg Level C as Gamma Red Mountain Level C as Gamma Windy Valley Level C as Gamma
0x290 Sky Chase Act 2 Emblem 1 Sky Chase Act 1 Emblem 1 Twinckle Circuit Emblem 1 Hedhehog Hammer Emblem 2 Sand Hill Emblem 2 Sky Chase Act 2 Emblem 2 Sky Chase Act 1 Emblem 2 Twinkle Circuit Emblem 2
0x291 Sonic Ending Chao Race Chao Race Chao Race Chao Race Chao Race Hedhehog Hammer Emblem 1 Sand Hill Emblem 1
0x292 Field Emblems Field Emblems Super Sonic Ending Big Ending Gamma Ending Amy Ending Knuckles Ending Tails Ending
0x293 Field Emblems Field Emblems Field Emblems Field Emblems Field Emblems Field Emblems Field Emblems Field Emblems
0x294 Field Emblems Field Emblems
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License