don't click here

RSDK Unpacker

Discussion in 'Engineering & Reverse Engineering' started by Glitch, Dec 1, 2012.

  1. AbsoluteG


    disgusted by origins plus Oldbie
    A black Hole
    life and shit..., a sonic 1 remake
    I tried both the Android and the the iOS version on my end, and it's giving me the same issue. v1.4 keeps whining about not being able to open any file for writing. Oddly enough the earlier version (1.3)was at least able to extract the files as .bin files.
  2. ValleyBell


    Tech Member
    researching PC-98/X68000 sound drivers
    He uses NetBSD and crosscompiles it for Windows and one of the functions worked differently on Windows (and stripped the actual file name off), so he didn't notice.
    He just released a fixed version 1.4a that works fine.
  3. Tanks


    Just tested, its working now. Great tool, glad for the fix. Now for someone to port one of their vanilla hacks. :P
  4. celebi23


    Just tried it out on the Data.rsdk.xmf from the Sonic 2 re-release & got this response:
  5. Sappharad


    You're doing it wrong. You forgot to specify the -3 argument for file format. It works just fine, but since he hard-coded the filenames you're not going to get all of them. Encryption does not appear to have changed since Sonic 1, although for some reason all of the strings in the iOS executable's string table are now mangled. Might be a compiler thing, because the Android build still has some.

    I re-ran the brute-force tool I started on when Sonic 1 was released, (didn't bother finishing it since someone else came up with the complete list first) so here's a partial list of files. (About half of the ones listed below are not in retrun's pre-loaded list)
    Data/Music/ActComplete.ogg - 89.bin
    Data/Music/AquaticRuin.ogg - 90.bin
    Data/Music/AquaticRuin_F.ogg - 91.bin
    Data/Music/Boss.ogg - 92.bin
    Data/Music/CasinoNight.ogg - 93.bin
    Data/Music/CasinoNight2.ogg - 94.bin
    Data/Music/CasinoNight2_F.ogg - 95.bin
    Data/Music/CasinoNight_F.ogg - 96.bin
    Data/Music/ChemicalPlant.ogg - 97.bin
    Data/Music/ChemicalPlant_F.ogg - 98.bin
    Data/Music/Continue.ogg - 99.bin
    Data/Music/Credits.ogg - 100.bin
    Data/Music/DeathEgg.ogg - 101.bin
    Data/Music/Drowning.ogg - 102.bin
    Data/Music/EmeraldHill.ogg - 103.bin
    Data/Music/EmeraldHill2.ogg - 104.bin
    Data/Music/EmeraldHill2_F.ogg - 105.bin
    Data/Music/EmeraldHill_F.ogg - 106.bin
    Data/Music/Ending.ogg - 107.bin
    Data/Music/Extra.ogg - 108.bin
    Data/Music/FinalBoss.ogg - 109.bin
    Data/Music/GameOver.ogg - 110.bin
    Data/Music/HillTop.ogg - 111.bin
    Data/Music/HillTop_F.ogg - 112.bin
    Data/Music/Invincibility.ogg - 113.bin
    Data/Music/Invincibility_F.ogg - 114.bin
    Data/Music/Metropolis.ogg - 117.bin
    Data/Music/Metropolis_F.ogg - 118.bin
    Data/Music/MysticCave.ogg - 119.bin
    Data/Music/MysticCave2.ogg - 120.bin
    Data/Music/MysticCave2_F.ogg - 121.bin
    Data/Music/MysticCave_F.ogg - 122.bin
    Data/Music/OilOcean.ogg - 123.bin
    Data/Music/OilOcean_F.ogg - 124.bin
    Data/Music/Options.ogg - 125.bin
    Data/Music/Results.ogg - 126.bin
    Data/Music/SkyChase.ogg - 127.bin
    Data/Music/SpecialStage.ogg - 128.bin
    Data/Music/Super.ogg - 129.bin
    Data/Music/Titlescreen.ogg - 130.bin
    Data/Music/WingFortress.ogg - 131.bin
    Data/Music/WingFortress_F.ogg - 132.bin
    Data/Animations/KNUCKLES.ani - 133.bin
    Data/Animations/SONIC.ani - 134.bin
    Data/Animations/TAILS.ani - 136.bin
    Data/Sprites/ARZ/Objects.gif - 138.bin
    Data/Sprites/ARZ/Objects2.gif - 139.bin
    Data/Sprites/ARZ/Objects3.gif - 140.bin
    Data/Sprites/ARZ/Objects4.gif - 141.bin
    Data/Sprites/CNZ/Objects.gif - 142.bin
    Data/Sprites/Continue/Objects.gif - 143.bin
    Data/Sprites/CPZ/Objects.gif - 144.bin
    Data/Sprites/CPZ/Objects2.gif - 145.bin
    Data/Sprites/CPZ/Objects3.gif - 146.bin
    Data/Sprites/DEZ/Objects.gif - 147.bin
    Data/Sprites/EHZ/Objects.gif - 148.bin
    Data/Sprites/Ending/Credits.gif - 149.bin
    Data/Sprites/Ending/Fall.gif - 150.bin
    Data/Sprites/Ending/Objects.gif - 151.bin
    Data/Sprites/Global/Display.gif - 152.bin
    Data/Sprites/Global/EggMobile.gif - 153.bin
    Data/Sprites/Global/Items.gif - 154.bin
    Data/Sprites/Global/Items2.gif - 155.bin
    Data/Sprites/Global/Items3.gif - 156.bin
    Data/Sprites/HPZ/Objects.gif - 157.bin
    Data/Sprites/HPZ/Objects2.gif - 158.bin
    Data/Sprites/HPZ/Objects3.gif - 159.bin
    Data/Sprites/HTZ/Objects.gif - 160.bin
    Data/Sprites/LevelSelect/Icons.gif - 161.bin
    Data/Sprites/LevelSelect/Text.gif - 162.bin
    Data/Sprites/MBZ/Objects.gif - 163.bin
    Data/Sprites/MCZ/Objects.gif - 164.bin
    Data/Sprites/MPZ/Objects.gif - 165.bin
    Data/Sprites/OOZ/Objects.gif - 166.bin
    Data/Sprites/Players/KTE1.gif - 167.bin
    Data/Sprites/Players/KTE2.gif - 168.bin
    Data/Sprites/Players/KTE3.gif - 169.bin
    Data/Sprites/Players/Sonic1.gif - 170.bin
    Data/Sprites/Players/Sonic2.gif - 171.bin
    Data/Sprites/Players/Sonic3.gif - 172.bin
    Data/Sprites/Players/Sonic4.gif - 173.bin
    Data/Sprites/Players/Tails1.gif - 174.bin
    Data/Sprites/Players/Tails2.gif - 175.bin
    Data/Sprites/Players/Tails3.gif - 176.bin
    Data/Sprites/SCZ/Objects.gif - 190.bin
    Data/Sprites/SCZ/Objects2.gif - 191.bin
    Data/Sprites/Special/Background.gif - 192.bin
    Data/Sprites/Special/Objects.gif - 193.bin
    Data/Sprites/Title/Title.gif - 194.bin
    Bytecode/Continue.bin - 195.bin
    Bytecode/CREDITS.bin - 196.bin
    Bytecode/ENDING.bin - 197.bin
    Bytecode/LSelect.bin - 199.bin
    Bytecode/Special.bin - 200.bin
    Bytecode/TITLE.bin - 201.bin
    Bytecode/Zone01.bin - 202.bin
    Bytecode/Zone02.bin - 203.bin
    Bytecode/Zone03.bin - 204.bin
    Bytecode/Zone04.bin - 205.bin
    Bytecode/Zone05.bin - 206.bin
    Bytecode/Zone06.bin - 207.bin
    Bytecode/Zone07.bin - 208.bin
    Bytecode/Zone08.bin - 209.bin
    Bytecode/Zone09.bin - 210.bin
    Bytecode/Zone10.bin - 211.bin
    Bytecode/Zone11.bin - 212.bin
    Bytecode/Zone12.bin - 213.bin
    Bytecode/ZoneM.bin - 214.bin
    Data/SoundFX/Global/1Up.wav - 215.bin
    Data/SoundFX/Global/BackButton.wav - 216.bin
    Data/SoundFX/Global/BlueShield.wav - 217.bin
    Data/SoundFX/Global/BonusPoints.wav - 218.bin
    Data/SoundFX/Global/BubbleBounce.wav - 219.bin
    Data/SoundFX/Global/BubbleShield.wav - 220.bin
    Data/SoundFX/Global/Catch.wav - 221.bin
    Data/SoundFX/Global/Charge.wav - 222.bin
    Data/SoundFX/Global/Continue.wav - 223.bin
    Data/SoundFX/Global/Destroy.wav - 224.bin
    Data/SoundFX/Global/Event.wav - 225.bin
    Data/SoundFX/Global/Explosion.wav - 226.bin
    Data/SoundFX/Global/FireDash.wav - 227.bin
    Data/SoundFX/Global/FireShield.wav - 228.bin
    Data/SoundFX/Global/Flying.wav - 229.bin
    Data/SoundFX/Global/Hurt.wav - 230.bin
    Data/SoundFX/Global/InstaShield.wav - 231.bin
    Data/SoundFX/Global/Jump.wav - 232.bin
    Data/SoundFX/Global/Landing.wav - 233.bin
    Data/SoundFX/Global/LightningJump.wav - 234.bin
    Data/SoundFX/Global/LightningShield.wav - 235.bin
    Data/SoundFX/Global/LoseRings.wav - 236.bin
    Data/SoundFX/Global/MenuButton.wav - 237.bin
    Data/SoundFX/Global/Release.wav - 238.bin
    Data/SoundFX/Global/Resume.wav - 239.bin
    Data/SoundFX/Global/Ring.wav - 240.bin
    Data/SoundFX/Global/Rolling.wav - 241.bin
    Data/SoundFX/Global/ScoreAdd.wav - 242.bin
    Data/SoundFX/Global/ScoreTotal.wav - 243.bin
    Data/SoundFX/Global/SELECT.wav - 244.bin
    Data/SoundFX/Global/SignPost.wav - 245.bin
    Data/SoundFX/Global/SignPost2p.wav - 246.bin
    Data/SoundFX/Global/Skidding.wav - 247.bin
    Data/SoundFX/Global/Sliding.wav - 248.bin
    Data/SoundFX/Global/SpecialRing.wav - 249.bin
    Data/SoundFX/Global/SpecialWarp.wav - 250.bin
    Data/SoundFX/Global/Spike.wav - 251.bin
    Data/SoundFX/Global/SpikesMove.wav - 252.bin
    Data/SoundFX/Global/Spring.wav - 253.bin
    Data/SoundFX/Global/StarPost.wav - 254.bin
    Data/SoundFX/Global/Teleport.wav - 255.bin
    Data/SoundFX/Global/Tired.wav - 256.bin
    Data/SoundFX/Global/Transform.wav - 257.bin
    Data/SoundFX/Stage/ArrowHit.wav - 258.bin
    Data/SoundFX/Stage/Beep.wav - 259.bin
    Data/SoundFX/Stage/BlockBreak.wav - 260.bin
    Data/SoundFX/Stage/BossHit.wav - 261.bin
    Data/SoundFX/Stage/BossSpark.wav - 262.bin
    Data/SoundFX/Stage/Breathing.wav - 263.bin
    Data/SoundFX/Stage/Bumper.wav - 264.bin
    Data/SoundFX/Stage/ButtonPress.wav - 265.bin
    Data/SoundFX/Stage/Buzzsaw.wav - 266.bin
    Data/SoundFX/Stage/ChemSplash.wav - 268.bin
    Data/SoundFX/Stage/Clank.wav - 269.bin
    Data/SoundFX/Stage/CNZBumper.wav - 270.bin
    Data/SoundFX/Stage/Crusher.wav - 271.bin
    Data/SoundFX/Stage/DrownAlert.wav - 274.bin
    Data/SoundFX/Stage/Drowning.wav - 275.bin
    Data/SoundFX/Stage/Electricity.wav - 276.bin
    Data/SoundFX/Stage/Elevator.wav - 277.bin
    Data/SoundFX/Stage/EMERALD.wav - 278.bin
    Data/SoundFX/Stage/Explosion2.wav - 280.bin
    Data/SoundFX/Stage/Explosion3.wav - 281.bin
    Data/SoundFX/Stage/FlameThrower.wav - 283.bin
    Data/SoundFX/Stage/Flipper.wav - 285.bin
    Data/SoundFX/Stage/GasPop.wav - 286.bin
    Data/SoundFX/Stage/Helicopter.wav - 287.bin
    Data/SoundFX/Stage/Horn1.wav - 288.bin
    Data/SoundFX/Stage/Horn2.wav - 289.bin
    Data/SoundFX/Stage/Horn3.wav - 290.bin
    Data/SoundFX/Stage/Horn4.wav - 291.bin
    Data/SoundFX/Stage/HornSweep.wav - 292.bin
    Data/SoundFX/Stage/HullClose.wav - 293.bin
    Data/SoundFX/Stage/Impact1.wav - 294.bin
    Data/SoundFX/Stage/Impact2.wav - 295.bin
    Data/SoundFX/Stage/LargeLaser.wav - 296.bin
    Data/SoundFX/Stage/LargeWall.wav - 297.bin
    Data/SoundFX/Stage/LaserCharge.wav - 298.bin
    Data/SoundFX/Stage/LaserSkim.wav - 299.bin
    Data/SoundFX/Stage/Launch.wav - 300.bin
    Data/SoundFX/Stage/LedgeBreak.wav - 301.bin
    Data/SoundFX/Stage/LedgeBreak2.wav - 302.bin
    Data/SoundFX/Stage/LiftTick.wav - 303.bin
    Data/SoundFX/Stage/LoudHorn.wav - 304.bin
    Data/SoundFX/Stage/MachineMove.wav - 305.bin
    Data/SoundFX/Stage/MediumLaser.wav - 306.bin
    Data/SoundFX/Stage/OctusShot.wav - 307.bin
    Data/SoundFX/Stage/OilSlide.wav - 308.bin
    Data/SoundFX/Stage/Plunger.wav - 310.bin
    Data/SoundFX/Stage/Rev.wav - 311.bin
    Data/SoundFX/Stage/Rumble.wav - 312.bin
    Data/SoundFX/Stage/Saw.wav - 314.bin
    Data/SoundFX/Stage/Sega.wav - 315.bin
    Data/SoundFX/Stage/SmallFireball.wav - 317.bin
    Data/SoundFX/Stage/SmallLaser.wav - 318.bin
    Data/SoundFX/Stage/Spear.wav - 319.bin
    Data/SoundFX/Stage/Thruster.wav - 322.bin
    Data/SoundFX/Stage/Waterfall.wav - 324.bin
    Data/SoundFX/Stage/Waterfall2.wav - 325.bin
    Data/SoundFX/Stage/WaterGeyser.wav - 326.bin
    Data/SoundFX/Stage/WaterSplash.wav - 327.bin
    Data/Stages/Continue/128x128Tiles.bin - 328.bin
    Data/Stages/Continue/16x16Tiles.gif - 329.bin
    Data/Stages/Continue/Act1.bin - 330.bin
    Data/Stages/Continue/Backgrounds.bin - 331.bin
    Data/Stages/Continue/CollisionMasks.bin - 332.bin
    Data/Stages/Continue/StageConfig.bin - 333.bin
    Data/Stages/CREDITS/128x128Tiles.bin - 334.bin
    Data/Stages/CREDITS/16x16Tiles.gif - 335.bin
    Data/Stages/CREDITS/Act1.bin - 336.bin
    Data/Stages/CREDITS/Backgrounds.bin - 337.bin
    Data/Stages/CREDITS/CollisionMasks.bin - 338.bin
    Data/Stages/CREDITS/StageConfig.bin - 339.bin
    Data/Stages/ENDING/128x128Tiles.bin - 340.bin
    Data/Stages/ENDING/16x16Tiles.gif - 341.bin
    Data/Stages/ENDING/Act1.bin - 342.bin
    Data/Stages/ENDING/Backgrounds.bin - 343.bin
    Data/Stages/ENDING/CollisionMasks.bin - 344.bin
    Data/Stages/ENDING/StageConfig.bin - 345.bin
    Data/Stages/LSelect/128x128Tiles.bin - 346.bin
    Data/Stages/LSelect/16x16Tiles.gif - 347.bin
    Data/Stages/LSelect/Act1.bin - 348.bin
    Data/Stages/LSelect/Act2.bin - 349.bin
    Data/Stages/LSelect/Act3.bin - 350.bin
    Data/Stages/LSelect/Backgrounds.bin - 351.bin
    Data/Stages/LSelect/CollisionMasks.bin - 352.bin
    Data/Stages/LSelect/StageConfig.bin - 353.bin
    Data/Stages/Special/128x128Tiles.bin - 354.bin
    Data/Stages/Special/16x16Tiles.gif - 355.bin
    Data/Stages/Special/Act1.bin - 356.bin
    Data/Stages/Special/Act2.bin - 357.bin
    Data/Stages/Special/Act3.bin - 358.bin
    Data/Stages/Special/Backgrounds.bin - 364.bin
    Data/Stages/Special/CollisionMasks.bin - 365.bin
    Data/Stages/Special/StageConfig.bin - 366.bin
    Data/Stages/TITLE/128x128Tiles.bin - 367.bin
    Data/Stages/TITLE/16x16Tiles.gif - 368.bin
    Data/Stages/TITLE/Act1.bin - 369.bin
    Data/Stages/TITLE/Backgrounds.bin - 370.bin
    Data/Stages/TITLE/CollisionMasks.bin - 371.bin
    Data/Stages/TITLE/StageConfig.bin - 372.bin
    Data/Stages/Zone01/128x128Tiles.bin - 373.bin
    Data/Stages/Zone01/16x16Tiles.gif - 374.bin
    Data/Stages/Zone01/Act1.bin - 375.bin
    Data/Stages/Zone01/Act2.bin - 376.bin
    Data/Stages/Zone01/Backgrounds.bin - 378.bin
    Data/Stages/Zone01/CollisionMasks.bin - 379.bin
    Data/Stages/Zone01/StageConfig.bin - 380.bin
    Data/Stages/Zone02/128x128Tiles.bin - 381.bin
    Data/Stages/Zone02/16x16Tiles.gif - 382.bin
    Data/Stages/Zone02/Act1.bin - 383.bin
    Data/Stages/Zone02/Act2.bin - 384.bin
    Data/Stages/Zone02/Backgrounds.bin - 386.bin
    Data/Stages/Zone02/CollisionMasks.bin - 387.bin
    Data/Stages/Zone02/StageConfig.bin - 388.bin
    Data/Stages/Zone03/128x128Tiles.bin - 389.bin
    Data/Stages/Zone03/16x16Tiles.gif - 390.bin
    Data/Stages/Zone03/Act1.bin - 391.bin
    Data/Stages/Zone03/Act2.bin - 392.bin
    Data/Stages/Zone03/Backgrounds.bin - 394.bin
    Data/Stages/Zone03/CollisionMasks.bin - 395.bin
    Data/Stages/Zone03/StageConfig.bin - 396.bin
    Data/Stages/Zone04/128x128Tiles.bin - 397.bin
    Data/Stages/Zone04/16x16Tiles.gif - 398.bin
    Data/Stages/Zone04/Act1.bin - 399.bin
    Data/Stages/Zone04/Act2.bin - 400.bin
    Data/Stages/Zone04/Backgrounds.bin - 402.bin
    Data/Stages/Zone04/CollisionMasks.bin - 403.bin
    Data/Stages/Zone04/StageConfig.bin - 404.bin
    Data/Stages/Zone05/128x128Tiles.bin - 405.bin
    Data/Stages/Zone05/16x16Tiles.gif - 406.bin
    Data/Stages/Zone05/Act1.bin - 407.bin
    Data/Stages/Zone05/Act2.bin - 408.bin
    Data/Stages/Zone05/Backgrounds.bin - 410.bin
    Data/Stages/Zone05/CollisionMasks.bin - 411.bin
    Data/Stages/Zone05/StageConfig.bin - 412.bin
    Data/Stages/Zone06/128x128Tiles.bin - 413.bin
    Data/Stages/Zone06/16x16Tiles.gif - 414.bin
    Data/Stages/Zone06/Act1.bin - 415.bin
    Data/Stages/Zone06/Act2.bin - 416.bin
    Data/Stages/Zone06/Backgrounds.bin - 418.bin
    Data/Stages/Zone06/CollisionMasks.bin - 419.bin
    Data/Stages/Zone06/StageConfig.bin - 420.bin
    Data/Stages/Zone07/128x128Tiles.bin - 421.bin
    Data/Stages/Zone07/16x16Tiles.gif - 422.bin
    Data/Stages/Zone07/Act1.bin - 423.bin
    Data/Stages/Zone07/Act2.bin - 424.bin
    Data/Stages/Zone07/Backgrounds.bin - 426.bin
    Data/Stages/Zone07/CollisionMasks.bin - 427.bin
    Data/Stages/Zone07/StageConfig.bin - 428.bin
    Data/Stages/Zone08/128x128Tiles.bin - 429.bin
    Data/Stages/Zone08/16x16Tiles.gif - 430.bin
    Data/Stages/Zone08/Act1.bin - 431.bin
    Data/Stages/Zone08/Act2.bin - 432.bin
    Data/Stages/Zone08/Backgrounds.bin - 433.bin
    Data/Stages/Zone08/CollisionMasks.bin - 434.bin
    Data/Stages/Zone08/StageConfig.bin - 435.bin
    Data/Stages/Zone09/128x128Tiles.bin - 436.bin
    Data/Stages/Zone09/16x16Tiles.gif - 437.bin
    Data/Stages/Zone09/Act1.bin - 438.bin
    Data/Stages/Zone09/Act2.bin - 439.bin
    Data/Stages/Zone09/Act3.bin - 440.bin
    Data/Stages/Zone09/Backgrounds.bin - 442.bin
    Data/Stages/Zone09/CollisionMasks.bin - 443.bin
    Data/Stages/Zone09/StageConfig.bin - 444.bin
    Data/Stages/Zone10/128x128Tiles.bin - 445.bin
    Data/Stages/Zone10/16x16Tiles.gif - 446.bin
    Data/Stages/Zone10/Act1.bin - 447.bin
    Data/Stages/Zone10/Backgrounds.bin - 448.bin
    Data/Stages/Zone10/CollisionMasks.bin - 449.bin
    Data/Stages/Zone10/StageConfig.bin - 450.bin
    Data/Stages/Zone11/128x128Tiles.bin - 451.bin
    Data/Stages/Zone11/16x16Tiles.gif - 452.bin
    Data/Stages/Zone11/Act1.bin - 453.bin
    Data/Stages/Zone11/Backgrounds.bin - 455.bin
    Data/Stages/Zone11/CollisionMasks.bin - 456.bin
    Data/Stages/Zone11/StageConfig.bin - 457.bin
    Data/Stages/Zone12/128x128Tiles.bin - 458.bin
    Data/Stages/Zone12/16x16Tiles.gif - 459.bin
    Data/Stages/Zone12/Act1.bin - 460.bin
    Data/Stages/Zone12/Backgrounds.bin - 462.bin
    Data/Stages/Zone12/CollisionMasks.bin - 463.bin
    Data/Stages/Zone12/StageConfig.bin - 464.bin
    Data/Stages/ZoneM/128x128Tiles.bin - 465.bin
    Data/Stages/ZoneM/16x16Tiles.gif - 466.bin
    Data/Stages/ZoneM/Act1.bin - 467.bin
    Data/Stages/ZoneM/Backgrounds.bin - 468.bin
    Data/Stages/ZoneM/CollisionMasks.bin - 469.bin
    Data/Stages/ZoneM/StageConfig.bin - 470.bin

    Interesting points to note:
    1. There don't appear to be any extra number codes defined on Level select other than 19921124, 4126, 1124, and 000.
    2. Boss Attack is a stage (expected) but there's another stage defined in the Dev menu called Egg Gauntlet. Not sure if this is related to boss attack since that has a separate entry. (Edit: See main thread game thread for this, Taxman mentioned it was cut content)

    I've only done a small analysis, might look at more once I finish the game.

    Edit: Updated file list above, all music files are accounted for in the list. (My brute-force tool now parses bytecode looking for the PlaySong command) Also included the "default" names that retrun will give to files that it doesn't know about, for anyone who wants to manually rename. Song 0x10 (Formerly known as "Hidden Palace") is called Extra.ogg. I'm not sure yet if I care enough to get the entire list, since I have the filenames that I was interested in.
  6. Sappharad


    Here is the level map for Egg Gauntlet. For lack of a better thread to put it.
    Warning! This is a full sized image, very large:

    Object placement exists for this level, but it is not included in this rendering.
  7. Rika Chou

    Rika Chou

    Tech Member
    Is there a background too?
  8. Sappharad


    Yes, but I haven't bothered to try and render it. Here are the 128x128 chunks that are probably from the background:

    Here is the map for Hidden Palace Zone: (Warning: Full sized)

    Interesting to note, the map for the beta Hidden Palace is also present. It is identical the map we've all seen before, they didn't change anything.
  9. ashthedragon


    Sonic Paradise Researcher
    Sonic Paradise & Sonic Ages
    Can the music be extracted? maybe with all those bits we can re-create it in a Mega Drive ROM, ala Robotnik's Revenge
  10. doc eggfan

    doc eggfan

    Are you pondering what I'm pondering? Wiki Sysop
    GreatMegaLD, GreatSC3k, Great SG1k
    Looking at the map, it looks like there was a secret path to bypass the MZ and WFZ bosses (to the right of MZ zone bumpers).
  11. Sappharad


    As I mentioned in the Sonic 1&2 thread, the music file for Egg Gauntlet is not present.

    Here is the map viewer that I included a picture of in the other thread:
    Supports Sonic CD, Sonic 1, and Sonic 2 formats. (Autodetected) From a properly extracted RSDK file, open the Act#.bin file from the stage you want to view. It expects to find the 16x16Tiles and 128x128Mappings in the same folder, because they will be if you extracted properly. You can use this tool to save the level maps to PNG, or just browse the 128x128 mappings. The windows are fully dockable, just like you'd expect from a good development tool. Source code is included.

    I discovered earlier today that the author of the retrun extractor had already written a Level editor for RSDK games. His UI kind of sucks, but since it's further along than mine I see no reason to continue developing it which is why I released what I had so far. I don't think his tool exports maps yet, so there's an advantage.

    How to use:
    1. Open an Act#.bin file
    2. Look at the map
    3. Select Export from the file menu to export a giant PNG image.

    Here was the screenshot of the map viewer:
  12. Techokami


    For use only on NTSC Genesis systems Researcher
    Sonic Worlds Next
    I played with his tool, and it kinda supports extracting maps. It crunches them down to half size which is rather silly. Also, it doesn't allow you to render tile priorities, which is also dumb, and I have the feeling they DO exist in the format. Finally it inherits a dumb thing from Java Swingset in which the file select dialog keeps resetting its location to the Documents folder, when all my stuff is properly organized elsewhere, so I have to re-navigate every time I want to open a different file or save something.
  13. MainMemory


    Kate the Wolf Tech Member
    Just because someone already made one doesn't mean you can't make one too. Yours might even end up better.

    I've personally thought about making a level editor myself, based on SonLVL, but I'm not super interested in editing these remakes (I only have Sonic CD on Steam anyway).
  14. Sappharad


    It's a shame he doesn't have a presence here, because it's difficult to tell what he does and doesn't know. Yes, VisualPlane is one of the properties on a 16x16 tile that he's not using. I'm guessing he's been reading this forum though, since he updated his site again with "instructions" how to play Egg Gauntlet on a rooted Android device with GBD installed. Most of the swing problems are fixable with a single line of code to use the Native OS GUI controls... UIManager.SetLookAndFeel(UIManager.GetSystemLookAndFeelClassName()) (That's from memory, so my memory might be off).

    He will be able to glean some information from the code I posted, which will help if he looks at it. There are some things I've provided that he has listed as ?? in his documentation. (Which I didn't use, because I didn't know it existed until today.) It's good that he's going to take the time to write something though, although I wonder if it would be possible to adapt MainMemory's SonLvl to support the format instead.

    Time is a big factor. I work on a number of projects, some of which require more time than others. It was just lucky coincidence that I have several vacation days this month, so I had a bit of time to throw together what I released. To be honest, editing was not the primary goal at this point but I structured it in code and UI such that it would make a great editor when the time comes to start that phase. (128x128 chunk viewer allowing you to see them all at once as opposed to what the other guy did, breaking the data up into objects with the actual properties separated out even the ones I'm not using yet instead of just throwing the data in, etc.) I think at least for Sonic 1 and Sonic 2 that it's too early to be modding them yet. I was surprised that Taxman didn't bother changing the encryption again for Sonic 2. (Or at least the very least the keys) Someone could wreck havoc in online mode for Sonic 2 by having the ability to modify the game. Giving people that kind of power now would just make it harder for us to hack future retro engine titles because then they'd need to put even more effort into stopping it.

    Sonic CD is a bit better candidate for modification at this point since it's running an older version of the engine and is unlikely to see any major updates other than compatibility. The level layout format is slightly different, the bytecode has less functionality, (I noticed that there appears to be an additional argument for the PlaySong opcode in Sonic 2 that wasn't there in Sonic CD) and files are organized slightly differently. That and it has an official PC port, which doesn't seem like it's going to be updated.

    I wouldn't definitively say I'll never touch it again (and posted the source in case someone else wants to) but the fact that someone else is working on one makes it easier for me to make the decision to not spend any more time on it right now. If there was some kind of better organized project (like what you've done with yours) I'd love to contribute occasionally. I have a good repository of knowledge regarding how the engine worked in Sonic CD and could at least provide information that would help with things that are unclear.
  15. MainMemory


    Kate the Wolf Tech Member
    The reason for that is because "nextvolume" is actually Shibunoa.
  16. Dr. Mecha

    Dr. Mecha

    Dallas, TX
    3d Models
    Can't seem to connect to your site for the latest version.
  17. Sappharad


    This is a very vague comment. Whose site? All of the sites with tools linked in this thread seem to be working for me.

    If you're referring to my site, the server has been IP blocked by AT&T for the past month. I've had a support ticket open with them for weeks, and they apparently don't know what the hell they're doing. I can't get an answer from them as to why it's blocked, but at this point they gave me a credit on my phone bill so I've basically had free data for the last month. The problem affects users on their land-line networks as well. Use a VPN service or a proxy as a work-around until they unblock it. (I think it was probably blocked because a no-longer-supported piece of software that was installed was exploited and used to launch a DDOS attack on somewhere. I ended up having the server re-imaged with a new OS and re-uploading clean copies of my stuff. I didn't re-install the exploited application and switched to an alternative, so the server is clean now.)
  18. Dr. Mecha

    Dr. Mecha

    Dallas, TX
    3d Models
    Could you at least post a mirror to both RSDK unpacker and Sonic-Retrun?
  19. flarn2006


    Sorry for the necro, but out of curiosity, has anyone tried just asking Taxman for info on the format? He's been active on Sonic Retro before, so I don't see why he'd try and hide it.

    I'm also curious why he doesn't release the editor here, so people can make their own levels and stuff. Just put in the license agreement that you aren't allowed to make an entire game with it and sell it without permission; that way he won't lose engine license sales.
  20. Sappharad


    But the format (both of them) has already been decrypted. We already know what there is to know, and ValleyBell's decryption logic is open source. What else do you want?