It seems that mediafire deleted my original rsdk unpacker links. The program has been requested so I'm reposting here: rsdkunpack Source I might get around to cleaning up my packer source and releasing that later.
And now make Metal Sonic playable decently >:[ http://www.youtube.com/watch?v=mbTM-B5yqLs&list=UU9sj8a4jADi20xRBLZfg5Pg&index=3
Some ideas. When metal jumps would love to see him do the electrocution attack. Spin dash for the jet attack. ( although it would be cool to be able to pull that off while running somehow.) running than rolling could also make a nice use for the electrocution attack animation.
I was working long time ago on it, but I had some problems with collisions and I drop everything =\. The lastest "version" of animation kit supports all Sonic moveset for Metal Sonic, this thanks to a tool that I made for RSDK .ANI files
Epic bump, but just asking for curiosity sake: Does this unpacker work with the Sonic 1 remake that was released today? Because I've tried everything and I'm having no luck. EDIT: Let me rephrase this a bit: Sonic CD's RSDK unpacks perfectly fine, but Sonic 1's RSDK refuses to unpack. Can we get an updated version that is compatible with Sonic 1?
Ha ha, this was one of the first things I tried once I downloaded it; seems they've updated the format a bit. Until someone cracks it, we're out of luck.
From the first sight, the RSDK decryption algorithm is a different and a more complex one in Sonic 1, comparing to Sonic CD 2011. By the way, while looking for stuff in the binary of Sonic 1, I found this in the code. It may be related to decryption, but I'm not sure: Code (Text): /Users/Stephen/Desktop/sonic 1/05-10-13-international/Sonic1/Sonic1/RetroEngine/TextureLoader.c
Here is a half-assed RSDKvB unpacker that I threw together in an hour: http://projects.sappharad.com/tools/RSDKvB_unpacker.zip It will unpack all of the files in a Data.rsdk that don't have the encryption flag set in the file table. Ogg vorbis files will be named with an .ogg extension, everything else with bin. Real filenames are not available at this time, because everyone is probably interested in the music files anyway. This is a command-line tool. RSDKvB file format. All numerical values little endian Header "RSDKvB" text 0x6 - 16 bit number of files in archive 0x8 - Start of files Files: (Each entry is 24 bytes) 0x00-0x10 Filename "hash" 0x10 - 32-bit offset of file in archive 0x14 - 32-bit file size which must be & with 0x7FFFFFF. MSB is the encryption flag, if set file is encrypted. Enjoy. Feel free to point out any mistakes.
Wanted to look at the sprites as well, but this will do for now I guess. :v: Also I can confirm this works with the android release. Just remove the .xmf from Data.rsdk.
Thanks for the offset locations, I was also wondering about these. I'll see what I can do with the MSB encryption.
I recently found an alternative RSDK unpacker: Retrun-Sonic. It can even repack the archives. Support for the S1 remake isn't complete (no de-/encryption, filenames can be generated, although not extracted), but it works quite well so far. And it includes the source code.
If anyone wants the file paths from Sonic 1, here are 70% of them, in the order they're stored in Data.rsdk. Spoiler Data/Game/CreditsMobile.txt Data/Game/GameConfig.bin Data/Game/StringList.txt Data/Game/SystemText.gif Data/Game/Menu/ArrowButtons.png Data/Game/Menu/BG1.png Data/Game/Menu/Circle.png Data/Game/Menu/CWLogo.png Data/Game/Menu/DevLogos.png Data/Game/Menu/Heading_EN.fnt Data/Game/Menu/Heading_EN.png Data/Game/Menu/[email protected] Data/Game/Menu/Heading_JA.fnt Data/Game/Menu/[email protected] Data/Game/Menu/Heading_KO.fnt Data/Game/Menu/[email protected] Data/Game/Menu/Heading_RU.fnt Data/Game/Menu/Heading_RU.png Data/Game/Menu/[email protected] Data/Game/Menu/Heading_ZH.fnt Data/Game/Menu/[email protected] Data/Game/Menu/Heading_ZHS.fnt Data/Game/Menu/[email protected] Data/Game/Menu/HelpGraphics.png Data/Game/Menu/Intro.png Data/Game/Menu/Label_EN.fnt Data/Game/Menu/Label_EN.png Data/Game/Menu/[email protected] Data/Game/Menu/Label_JA.fnt Data/Game/Menu/[email protected] Data/Game/Menu/Label_KO.fnt Data/Game/Menu/[email protected] Data/Game/Menu/Label_RU.fnt Data/Game/Menu/Label_RU.png Data/Game/Menu/[email protected] Data/Game/Menu/Label_ZH.fnt Data/Game/Menu/[email protected] Data/Game/Menu/Label_ZHS.fnt Data/Game/Menu/[email protected] Data/Game/Menu/PlayerSelect.png Data/Game/Menu/Sega.png Data/Game/Menu/[email protected] Data/Game/Menu/SegaID.png Data/Game/Menu/SegaJP.png Data/Game/Menu/[email protected] Data/Game/Menu/SonicLogo.png Data/Game/Menu/Symbols.png Data/Game/Menu/Text_EN.fnt Data/Game/Menu/Text_EN.png Data/Game/Menu/Text_JA.fnt Data/Game/Menu/[email protected] Data/Game/Menu/Text_KO.fnt Data/Game/Menu/Text_KO.png Data/Game/Menu/Text_ZH.fnt Data/Game/Menu/[email protected] Data/Game/Menu/Text_ZHS.fnt Data/Game/Menu/[email protected] Data/Game/Menu/TimeAttack1.png Data/Game/Menu/TimeAttack2.png Data/Game/Menu/TimeAttack3.png Data/Game/Menu/TimeAttack4.png Data/Game/Menu/VirtualDPad.png Data/Game/Models/Achievements.bin Data/Game/Models/BackArrow.bin Data/Game/Models/BGCircle1.bin Data/Game/Models/BGCircle2.bin Data/Game/Models/BGLines.bin Data/Game/Models/Box.bin Data/Game/Models/Button.bin Data/Game/Models/ButtonH.bin Data/Game/Models/Cartridge.bin Data/Game/Models/Intro.bin Data/Game/Models/JPBox.bin Data/Game/Models/JPCartridge.bin Data/Game/Models/Leaderboards.bin Data/Game/Models/Options.bin Data/Game/Models/Package_EU.png Data/Game/Models/Package_JP.png Data/Game/Models/Package_US.png Data/Game/Models/Panel.bin Data/Game/Models/TimeAttack.bin Data/Music/Boss.ogg Data/Music/Continue.ogg Data/Music/Credits.ogg Data/Music/Drowning.ogg Data/Music/Ending.ogg Data/Music/FINAL.ogg Data/Music/Invincibility.ogg Data/Music/LABYRINTH.ogg Data/Music/MainMenu.ogg Data/Music/MARBLE.ogg Data/Music/MenuIntro.ogg Data/Music/STARLIGHT.ogg Data/Animations/Knuckles.ani Data/Animations/Sonic.ani Data/Animations/Tails.ani Data/Sprites/Players/KTE1.gif Data/Sprites/Players/KTE2.gif Data/Sprites/Players/KTE3.gif Data/Sprites/Players/Sonic1.gif Data/Sprites/Players/Sonic2.gif Data/Sprites/Players/Sonic3.gif Data/Sprites/Players/Tails1.gif Data/Sprites/Players/Tails2.gif Bytecode/Continue.bin Bytecode/Credits.bin Bytecode/Ending.bin Bytecode/GlobalCode.bin Bytecode/LSelect.bin Bytecode/SPECIAL.bin Bytecode/title.bin Bytecode/Zone01.bin Bytecode/Zone02.bin Bytecode/Zone03.bin Bytecode/Zone04.bin Bytecode/Zone05.bin Bytecode/Zone06.bin Data/SoundFX/Global/1Up.wav Data/SoundFX/Global/BackButton.wav Data/SoundFX/Global/BlueShield.wav Data/SoundFX/Global/BonusPoints.wav Data/SoundFX/Global/BubbleBounce.wav Data/SoundFX/Global/BubbleShield.wav Data/SoundFX/Global/Catch.wav Data/SoundFX/Global/Charge.wav Data/SoundFX/Global/Destroy.wav Data/SoundFX/Global/event.wav Data/SoundFX/Global/Explosion.wav Data/SoundFX/Global/FireDash.wav Data/SoundFX/Global/FireShield.wav Data/SoundFX/Global/Flying.wav Data/SoundFX/Global/Hurt.wav Data/SoundFX/Global/InstaShield.wav Data/SoundFX/Global/Jump.wav Data/SoundFX/Global/LampPost.wav Data/SoundFX/Global/Landing.wav Data/SoundFX/Global/LightningJump.wav Data/SoundFX/Global/LightningShield.wav Data/SoundFX/Global/LoseRings.wav Data/SoundFX/Global/MenuButton.wav Data/SoundFX/Global/release.wav Data/SoundFX/Global/Resume.wav Data/SoundFX/Global/Ring.wav Data/SoundFX/Global/Rolling.wav Data/SoundFX/Global/ScoreAdd.wav Data/SoundFX/Global/ScoreTotal.wav Data/SoundFX/Global/SELECT.wav Data/SoundFX/Global/SignPost.wav Data/SoundFX/Global/Skidding.wav Data/SoundFX/Global/Sliding.wav Data/SoundFX/Global/SpecialRing.wav Data/SoundFX/Global/SpecialWarp.wav Data/SoundFX/Global/Spike.wav Data/SoundFX/Global/SpikesMove.wav Data/SoundFX/Global/SPRING.wav Data/SoundFX/Global/Tired.wav Data/SoundFX/Global/Transform.wav Data/SoundFX/Stage/BatbrainFly.wav Data/SoundFX/Stage/BlockBreak.wav Data/SoundFX/Stage/BossHit.wav Data/SoundFX/Stage/Breathing.wav Data/SoundFX/Stage/Bumper.wav Data/SoundFX/Stage/ButtonPress.wav Data/SoundFX/Stage/Buzzsaw.wav Data/SoundFX/Stage/ChainPull.wav Data/SoundFX/Stage/Continue.wav Data/SoundFX/Stage/Crusher.wav Data/SoundFX/Stage/DrownAlert.wav Data/SoundFX/Stage/Drowning.wav Data/SoundFX/Stage/ElectricArc.wav Data/SoundFX/Stage/Emerald.wav Data/SoundFX/Stage/Exit_SS.wav Data/SoundFX/Stage/FireBurn.wav Data/SoundFX/Stage/FlameThrower.wav Data/SoundFX/Stage/FlappingDoor.wav Data/SoundFX/Stage/GemBlockSS.wav Data/SoundFX/Stage/LargeWall.wav Data/SoundFX/Stage/LedgeBreak.wav Data/SoundFX/Stage/PushBlock.wav Data/SoundFX/Stage/RotateSS.wav Data/SoundFX/Stage/Sega.wav Data/SoundFX/Stage/SmallFireball.wav Data/SoundFX/Stage/Waterfall.wav Data/SoundFX/Stage/Waterfall2.wav Data/SoundFX/Stage/WaterSplash.wav Data/Stages/Continue/128x128Tiles.bin Data/Stages/Continue/Backgrounds.bin Data/Stages/Continue/CollisionMasks.bin Data/Stages/Continue/StageConfig.bin Data/Stages/Credits/128x128Tiles.bin Data/Stages/Credits/Backgrounds.bin Data/Stages/Credits/CollisionMasks.bin Data/Stages/Credits/StageConfig.bin Data/Stages/Ending/128x128Tiles.bin Data/Stages/Ending/Backgrounds.bin Data/Stages/Ending/CollisionMasks.bin Data/Stages/Ending/StageConfig.bin Data/Stages/LSelect/128x128Tiles.bin Data/Stages/LSelect/Backgrounds.bin Data/Stages/LSelect/CollisionMasks.bin Data/Stages/LSelect/StageConfig.bin Data/Stages/SPECIAL/128x128Tiles.bin Data/Stages/SPECIAL/Backgrounds.bin Data/Stages/SPECIAL/CollisionMasks.bin Data/Stages/SPECIAL/StageConfig.bin Data/Stages/title/128x128Tiles.bin Data/Stages/title/Backgrounds.bin Data/Stages/title/CollisionMasks.bin Data/Stages/title/StageConfig.bin Data/Stages/Zone01/128x128Tiles.bin Data/Stages/Zone01/Backgrounds.bin Data/Stages/Zone01/CollisionMasks.bin Data/Stages/Zone01/StageConfig.bin Data/Stages/Zone02/128x128Tiles.bin Data/Stages/Zone02/Backgrounds.bin Data/Stages/Zone02/CollisionMasks.bin Data/Stages/Zone02/StageConfig.bin Data/Stages/Zone03/128x128Tiles.bin Data/Stages/Zone03/Backgrounds.bin Data/Stages/Zone03/CollisionMasks.bin Data/Stages/Zone03/StageConfig.bin Data/Stages/Zone04/128x128Tiles.bin Data/Stages/Zone04/Backgrounds.bin Data/Stages/Zone04/CollisionMasks.bin Data/Stages/Zone04/StageConfig.bin Data/Stages/Zone05/128x128Tiles.bin Data/Stages/Zone05/Backgrounds.bin Data/Stages/Zone05/CollisionMasks.bin Data/Stages/Zone05/StageConfig.bin Data/Stages/Zone06/128x128Tiles.bin Data/Stages/Zone06/Backgrounds.bin Data/Stages/Zone06/CollisionMasks.bin Data/Stages/Zone06/StageConfig.bin Will update again when I have the rest. I figured a proper list might be nice to have for a complete extractor. This was accomplished via brute force, by harvesting the game data for strings and building paths from any it finds. There are some patterns I don't try yet, I believe Stages/Zone-- folders probably have Act/ subfolders that I don't try for yet.
Just thought I'd mention it here, since nobody has posted about it. The tool that ValleyBell posted on the previous page was updated to support Sonic 1 RSDK files, including encrypted files and filenames are extracted. Well done guys.
.. I don't know if it's just me, but whenever I run this all I get are generated empty folders, with a lot of "Could not open [[folder here]] for writing!" Very annoying. Ah well.
It worked for me, but I'm on OS X so I had to compile it from source. Honestly, aside from the decryption part that ValleyBell wrote, the code is pretty messy and could use a re-write. Looking through the files, I didn't see anything we haven't already found.