don't click here

Project Sonic 1: Two-Eight

Discussion in 'Engineering & Reverse Engineering' started by MarkeyJester, Jun 24, 2010.

Thread Status:
Not open for further replies.
  1. MarkeyJester

    MarkeyJester

    Original, No substitute Resident Jester
    2,202
    432
    63
    Japan
    I was gonna keep this quiet for a while but to be frank, I just can't be bothered holding something that may be useful for public eyes (No really, I'm terrible for releasing work of my own earlier than planned).

    There have been conversations before now about the difference between hacking Sonic 1 and Sonic 2 and which one would be the best to go for, almost everyone will agree that Sonic 2 is the best to hack as the software features a set load of engines that have been improved since Sonic 1's release, though I couldn't get my head around the idea of a 128x128 chunk and path-swapper system somehow being better because of it's flexibility, although I do agree, I find that a lot of levels made out of this system tend to only be better depending on how they're used (Yeah, obvious I know).

    But rather than spend ages moaning about it, I decided to do the next best thing, put Sonic 1 into the same situation as Sonic 2.

    Download this.

    The link above is a disassembly of Sonic The Hedgehog (16-bit), but it is no ordinary disassembly, it has been modified to run 128x128 chunks and the path-swapper system whilst keeping everything else more or less intact, which I'm releasing publicly in the hope that some may be encouraged to work on Sonic 1 with this system, and possibly do things with Sonic 1's layout which may seem to have been impossible via the 256x256 system.

    -- -- -- --

    A few notes, I won't be providing any guides on how to port/make the 128x128 system work on Sonic 1, if you wish to understand the changes involved, simply search “; MJ:” in the source code, I have commented pretty much all of the coding that was done to enable the 128x128 system. Special chunks (S-Bends, Water slides, etc), these are done in pretty much the same way as the original 256x256 system was done, but altered to work with the 128 chunks, the wall change in LZ Act 3 which happens upon pressing a switch/button, had to be done differently as the layouts are no longer loaded into ram, but is still functional. The loops however, are done by the simple Path-Swapper object system as seen in Sonic 2.

    Using SonED 2. The disassembly will not contain any copy of SonED, you'll have to obtain/download this yourself, the disassembly does contain sep files though, which are setup ready to be used with SonED 2 for editing the levels, unfortunately, SonED 2 will think that you are editing Sonic 2, and although it was able to read the Sonic 1 object list, the object system itself will still be based on that of Sonic 2. What you'll need to be careful of is setting “Remember Sprite” and placing Rings, placing rings must be done by the double left click method and selecting from the list, attempting to double right click the rings in, will add the rings to a ring position file which doesn't exist and will not be read by Sonic 1. “Remember Sprite” must be set by increasing the Object's ID by +80, not by pressing the “0” key on your keyboard.

    As for porting levels from your pre-made Sonic 1 hacks (if you intend to), inside the disassembly there is a Converter in directory “SONED2S2DATA\Converter”, I've written to convert and optimise the 256 chunks, FG layouts and BG Layouts, of course there are probably plenty of other (better) converters out there which you may use. One strong note to point out is that, Sonic 1 uses 54 (Hex) chunks, multiplying this by 4 comes to 150 (Hex), which is far too much for the layout system as it must be FF or below, I found that I needed to delete chunks in LZ and SYZ simply because even after removing the duplicates, there were simply too many, you may need to take shortcuts in that department.

    I'd like to thank NeKit and Irixion for helping me test and fish out the bugs (Though I'm sure you'll probably find something missed out, in which case I would be grateful in knowing what it is), Please do not note any of the common bugs such as the SEGA PCM, spike behaviour, etc, those bugs are not related to the 128x128 system and will not be fixed, that'll be down to you, if nothing else, have fun.
     
  2. StephenUK

    StephenUK

    Liquor in the front, poker in the rear Tech Member
    1,678
    0
    16
    Manchester, UK
    Quackshot Disassembly
    Awesome work as always, now I can carry on working on S1 Remix without the tedious task of working with S2 and recreating all the zones. Shame I'd already done half the work, but hey, at least now I'm inspired. Keep up the great work.
     
  3. Fred

    Fred

    Oldbie
    1,563
    117
    43
    Heh. Sonic 1 2 8. I get it.

    Sega itself did this in the drx Sonic 2 proto, though they probably only converted GHZ. Good stuff, man. Might make for more refreshing Sonic 1 layouts.
     
  4. MKAmeX

    MKAmeX

    Member
    279
    0
    16
    California
    Needlemouse, Sonic Boom, Graphic Design
    Oh my! This is something I've wanted to implement for ages, but I have no technical know-how on these things, so it was nothing but a dream for people like me. I'll definitely be using this in my hack. =)

    This is seriously awesome, great job Markey!
     
  5. Varion Icaria

    Varion Icaria

    He's waiting.... Tech Member
    1,019
    11
    18
    S4: Cybernetic Outbreak
    Props to you man, I was working on something similar for S2 but adding S3's stuff as a base Disassembly, This should help out a lot of people Awesome job!
     
  6. Sinkdude

    Sinkdude

    20
    0
    1
    Sonic 1: Eggman's Vengance
    Thank you, pal! You know, you make a great idea like this one. I'm also converting something also: Sonic 1 badniks into Sonic 2. I'm still having trouble converting the Caterkiller to Sonic 2. (Question posted on pg 172 of "Basic Questions & Answers thread")
     
  7. Edit: Derp


    Nice to see this finally released! The hard work and sleepless nights! :) I'll using this for sure!
     
  8. Hanoch

    Hanoch

    Also known as TheKnock, Birashot Member
    491
    0
    0
    Israel
    everything
    It is still possible to do it with 256x256 chunks, simply by swapping the collision offest.
    Now all we need is Stealth to come here and release a modified version of soned2 to work with 128x128 for sonic 1's system.
     
  9. Mercury

    Mercury

    His Name Is Sonic Tech Member
    1,740
    21
    18
    Location Location
    AeStHete
    This is brill!

    Just the minor modifications I was making to my hack set me up against some of the frustrating limitations of Sonic 1's 256x256 system. I'm sure this will be a real boon to many Sonic 1 hackers.
     
  10. Spanner

    Spanner

    The Tool Member
    Good work. I didn't know what you did when you showed me an early build days ago, but it's great to see that something that has been requested for years has finally been implemented. However, this might still get the "Spindash" effect where people implement this in their hacks, but it doesn't really matter for something like this.
     
  11. dsrb

    dsrb

    Member
    3,149
    0
    16
  12. Ell678

    Ell678

    Am I Annoying You? Member
    2,378
    25
    28
    Barrow, England
    Sonic Incursion
    This is so cool! I can see myself using this in future projects. Thanks for sharing!

    EDIT - Am I missing something, or do some Act's have loading problems in SonED2? So far, Marble Zone 3 has never loaded, and some of them are completely hit and miss if they crash the program or not.
     
  13. MarkeyJester

    MarkeyJester

    Original, No substitute Resident Jester
    2,202
    432
    63
    Japan
    It works fine on my side using Version 1.03, and the "sep" files themselves seem ok, it could be the SonED 2 you're using is an older version, or possibly Direct X version? I don't actually know much about SonED in that department so that's all I can suggest I'm afraid.

    To which I'll be looking forward to =)
     
  14. Ell678

    Ell678

    Am I Annoying You? Member
    2,378
    25
    28
    Barrow, England
    Sonic Incursion
    I'm using the same SonED2 version as you, 1.03. I'm using Windows 7, 64-bit which is Direct X10.

    Not sure what's wrong then :( Like I said, it's just hit and miss with all the levels, except MZ3.
     
  15. Hayate

    Hayate

    Tech Member
    I love you.

    This will come in very useful for me, if I get around to doing something I've been planning for a while. =P
     


  16. SonED 2 uses an older version of DX so that won't matter—Try putting everything as close as you can to the root drive—if that doesn't work then it's not a problem with the disassembly but your copy of SonED.

    I've been nagging him to do this for a while. I gave it a try once but I didn't think it was going to be as hard as it was.
     
  17. This is exactly what I've been looking for, almost all my hacking efforts so far have been with Sonic 1, however, I was planning on switching to S2 for these reasons alone, Now I can work with Sonic 1, which I am more familiar with, while having the benefits Sonic 2's engine has in this area.

    Great job with this release :thumbsup:
     
  18. MarkeyJester

    MarkeyJester

    Original, No substitute Resident Jester
    2,202
    432
    63
    Japan
    To be fair, the engine itself only needed to be change correctly in a few spots, after working with the entire engine for about 2 years, it proved no problem at all, not much needed to be changed as the engine is structured to work for any size, why heck you could have 64x64 chunks in next to no time at all. The data however, is the real issue if anything, the fact that you are converting 54 (Hex) 256x256 chunks into FF (Hex) 128x128 chunks, means that for every 256x256 chunk, you'll get 4 128x128 chunks, so 54 x 4 = 150, 150 is far beyond the limit, of course there will no doubt be douplicate 128x128 chunks which can be erased removing 1 from the number of chunks, but this varies depending on the level involved, some will have enough douplicate chunks to reduce the number below 100, others won't, so revising and rationalising will be needed.

    Fun facts: Sonic 1 has more chunk space in total, as it can use up to 150 (Hex) 128x128 chunks worth of 256x256 chunks, where Sonic 2 is stopped by the limit of FF, Sonic 1 can also hold more blocks, up to 7FF, while Sonic 2 is stuck with 3FF to make way for a second solid data ("Top, Left/Right, All" solid bits).
     
  19. Hivebrain

    Hivebrain

    Administrator
    3,049
    161
    43
    53.4N, 1.5W
    Github
    I wonder how easy it would be to have a "chunksize" constant which could be set to a variety of values. It's something I'd like for the SVN disassembly.
     
  20. Hanoch

    Hanoch

    Also known as TheKnock, Birashot Member
    491
    0
    0
    Israel
    everything
    Wouldn't it need a variety of layout engines then? And a variety of Soned2's to edit those chunk sizes.
     
Thread Status:
Not open for further replies.