don't click here

Random Hack/Mini Project Thread

Discussion in 'Engineering & Reverse Engineering' started by Malevolence, Jul 4, 2009.

  1. BleuStar


    New Castle, Delaware
    Sonic The Hedgehog (RevBS) [!]
    Here are my "BleuStar" revisions of Sonic The Hedgehog and Sonic The Hedgehog 2. The purpose of
    these hacks are to add additional features that were edited or cut from the final games and fixes to most
    aspects of the games using the SCHGs but at the same time keeping them true to the original games
    (No Spin Dash in Sonic 1 and no flight as Tails in Sonic 2).

    The hacks can be considered mixes between the later revisions of both games, but these hacks were
    created as somewhat of a response to Tiddles' Sonic 3 Complete hack as I wanted to create "complete"
    or "fixed" versions of these games with less bugs and more detail.


    Features of Sonic The Hedgehog (With credit to)
    *Palettes of running sprites fixed. (Using SonMapEd)
    *Shoe stripe added to certain sprites. (Using SonMapEd)
    *Release date on rom header changed to 1991.JUN
    *Level select code is UDDDLR (instead of UDLR) if the console is Japanese.
    *Fixed demo playback (FraGag)
    *Fixed the race condition with Pattern Load Cues (FragGag)
    *Fixed the SEGA Sound (Puto)
    *"Press Start Button" text appears on the title screen (Quickman, Not shown above)
    *Level Select order is corrected (STHX)
    *Fixed the Hidden Points bug (1337Rooster)
    *Fixed the Accidental Deletion of Scattered Rings (redhotsonic)
    *Fixed the Walk-Jump Bug (Cinossu and Mercury)
    *Change Spike behavior/Fixed Spike Bug (FraGag)
    *Fixed the Special Stage jumping physics (Mercury)
    *Removed the Ground and Air Speed Caps (Tweaker and Puto, respectively)
    *Ported the REV01/REVXB Background Effects (jman2050)

    Features of Sonic The Hedgehog 2 (With credit to)
    *Release date on rom header changed to 1992.NOV
    *Copyright text changed to "© SEGA 1992" (Not shown above)
    *Fixed demo playback (FraGag)
    *Fixed the race condition with Pattern Load Cues (FraGag)
    *Fixed Numerous Super Sonic Bugs (MoDule)
    *Corrected height when roll jumping (MoDule)
    *Fixed Jump Height Bug When Exiting Water (MoDule)
    *Fixed Spin Dash Code (GARY M 9887?)
    *Fixed Screen Boundary Spin Dash Bug (Flamewing)
    *Fixed Camera Y Position for Tails (MoDule)
    *Fixed Tails subanimation error (Flamewing)
    *Fixed Tails' respawn speeds (redhotsonic)
    *Fixed Accidental Deletion of Scattered Rings (redhotsonic)
    *Fixed monitor collision bug (redhotsonic)
    *Fixed Rexon crash (redhotsonic)
    *Fixed EHZ Deformation Bug (qiuu)
    *Corrected CPZ boss attack behavior (redhotsonic)
    *Fixed Bug in ARZ Boss Arrow's Platform Behavior (MoDule)
    *Fixed ARZ boss sprite behavior (redhotsonic)
    *Fixed multiple CNZ boss bugs (redhotsonic)
    *Fixed HTZ background scrolling mountains (Flamewing)
    *Fixed OOZ Launcher Speed Up Glitch (MoDule)
    *Fixed DEZ Giant Mech collision glitch (Flamewing)
    *Fixed Boss Deconstruction Behavior (Original guide by Esrael, Optimization by redhotsonic)
    *Remove the Air Speed Cap (Guide written by Selbi; code by Puto)
    *Disabled floor collision while dying (Guide written by Esrael, Alternate fix by flamewing)
    *Super Sonic is now enabled by double jumping with any button (Original guide by Vladikcomper, addition by redhotsonic, influnced by Tiddles' Sonic 3 Complete)
    *Player retains rings when losing a life or returning from a Special Stage (Mercury)
    *Restored lost CPZ boss feature (Esrael)
    *Improved ObjectMove subroutines (redhotsonic)
    *Imported Labyrinth Zone water ripple effect in CPZ2 & ARZ (MoDule)
    *Fixed ARZ "Walk on Air" glitch (MoDule)


    * The "incorrect" fade in/fade out progression routines in both games are not changed due to them
    being a staple of the main Sonic titles.

    *In Sonic 1, the beginning of the Green Hill Zone demo doesn't have Sonic moving for five seconds.

    *The Labyrinth Zone ripple effect in Sonic 2's CPZ2 and ARZ is said to be obsolete. This could be due to the fact that
    the effect will noticeably slow down that act/zone if there are numerous objects on the screen.

    *Locking on Sonic & Knuckles with this version of Sonic The Hedgehog 2 will not work as it exceeds
    the size of the required rom combination.

    If there are any problems with the games, and are not listed, please let me know
  2. Dark Sonic

    Dark Sonic

    Working on my art!
    ^ I like this idea. It's just a simple collection of bug fixes in order to smooth out the original games without adding 17 new features. I'm going to download these.
  3. BleuStar


    New Castle, Delaware
    Sonic The Hedgehog (RevBS) [!]
    Thank you! I'm actually very flattered considering that these are my first hacks and that they're really just simple tests for future hacks.
    One thing I'm trying to work with is the Sega sound's pitch for both games and I'm trying to make it accurate in both, but for Sonic 2,
    I'm having trouble with that.
  4. dsrb


    These are mostly fixes by redhotsonic, Esrael, and other people in the S2 thread, right? If so, it's good to have an otherwise-vanilla ROM of them that isn't part of a large-scale hack, but some credit would be a good idea.
  5. Aerosol


    Not here. Moderator
    Not where I want to be.
    Sonic (?): Coming summer of 2055...?

    Don't expect too much from this. I'm just dicking around with Tile Molester and some sprites I found on Spriters Resource.
  6. Machenstein


    I'm glad to see someone doing this. I attempted to do something like this for Sonic 2, but I didn't get very far. Would it possible to create a customizer for these versions though? Sonic 3 Complete, for example, has both an in-game customizer and an online one. It would be neat to allow the player to choose what features they want in Sonic 1 and 2 and what features they don't.
  7. Saw this and a couple other shots from the chat last night, still really cool. Hope to see it finished soon, best of luck!
  8. BleuStar


    New Castle, Delaware
    Sonic The Hedgehog (RevBS) [!]
    I'm not exactly sure how to make a customizer, and even then I still have to work out more bugs. I'd love to get to know how to make one though!
  9. Tiddles


    Diamond Dust Tech Member
    Leicester, England
    Get in an accident and wake up in 1973
    An in-game menu is generally a better solution; I'd move everything to one myself if I didn't have a) RAM shortage for keeping track of all the options and b) not enough ROM space to include all the player sprite artwork etc.

    The principle of how the ROM customisation works is fairly simple, but putting it together is quite involved. The way I do it is still largely the same as Hayate started implementing for Sonic 3 Customizable. You just do code like

    Code (Text):
    1. SlotBonus_Clear_Continue_Counter:
    3. ;=====================================================================================
    4.         if  patch_option=27     ; PATCH OPTION 27 - Old slot machine continue configuration
    5. ;-------------------------------------------------------------------------------------
    6.         nop
    7.         nop
    8.         nop
    9. ;-------------------------------------------------------------------------------------
    10.         else                ; DEFAULT
    11. ;-------------------------------------------------------------------------------------
    12.         bclr    #0,($FFFFFE43).w
    13. ;-------------------------------------------------------------------------------------
    14.         endif
    15. ;=====================================================================================
    17.         move.b  ($FFFFFE43).w,($FFFFFE1B).w
    18.         movem.l d0-d1/a1-a5,-(sp)
    19.         jsr (Create_New_Sprite).l
    21. ;=====================================================================================
    22.         if  patch_option=31     ; PATCH OPTION 31 - No slot machine continue HUD
    23. ;-------------------------------------------------------------------------------------
    24.         bra.s   $$skip
    25. ;-------------------------------------------------------------------------------------
    26.         else                ; DEFAULT
    27. ;-------------------------------------------------------------------------------------
    28.         bne.s   $$skip
    29. ;-------------------------------------------------------------------------------------
    30.         endif
    31. ;=====================================================================================
    33.         move.l  #SlotMachine_Continue_Counter,(a1)
    34.     $$skip:
    35.         movem.l (sp)+,d0-d1/a1-a5
    36.         rts
    What I do then is have a customised build script that takes patch number as a parameter, so if you do, say, "build 27" you get the original slot machine mechanics. Then I have a release script that builds each ROM patch number in turn and uses UIPS to generate an IPS patch to change the original into that patch. All the customiser website does is use a web form to decide which of those patches to apply, then uses Derrick Sobodash's apply_ips function for PHP to do that for you and zip it up. (But note that the linked function uses another function called ppack() which I couldn't find documented so I had to make up my own.)

    The absolutely critical thing I haven't mentioned is that whenever you do a patch like this, all sides of each if/elseif/else MUST match in binary length. If any of the patches don't obey that rule, you'll get code shifting around, and you won't be able to use multiple patches together, and your patch sizes will get massive (which is the least of your worries in that situation, but at least it helps to see when it's happened). You also have to be careful about how you design these things. You can't do things like "if patch option 27 and 30 are both applied, do this" because that will never happen in the build process - each patch has to be able to stand alone. You can get around that by patching jumps and branches in separate places - so you have a block for patch option 27 that you could never possibly get to unless patch option 30 had been applied to affect something else. This sort of technique gets used a lot with the Big Arm disable patch where a bunch of things have to behave differently.

    Frankly, it's a massive pain in the dick, so do yourself and your players a favour and do it all as an in-game menu. Not that that's a walk in the park to program either without a fair bit of experience - my menu stuff is probably the first (mostly) self-contained 68K code I've had to do, and I gnashed my teeth about it for quite a while, but that's partly because I wanted to make something fairly flexible so I'd be able to expand it in future.

    While I'm here, though: I haven't played your releases yet, but many thanks for putting these together. I'm all in favour of creative hacks, but sometimes you just want to replay the originals, and it's a real boon to be able to take advantage of engine improvements, tweaks and bugfixes while doing so. That was my whole aim with S3C and I'm glad to see similar releases happening with the other games.
  10. BleuStar


    New Castle, Delaware
    Sonic The Hedgehog (RevBS) [!]
    Coming from the person who made my favorite rom hack (even beating out Megamix), I feel honored!
    I just feel as though I can't "really" make them complete with the issues (remaining bugs: see "Notes") in the games.
  11. RetroKoH


    Project Sonic 8x16
    Anger... I was working on the exact same thing...[​IMG]
    Ah, no matter. [​IMG] Are these disassemblies by any chance?
  12. RedQuartz


    Brown Sonic
    I was playing around with Sonic 1 Music Editor when I had an idea. What would happen if I got the rest of the songs in Sonic 1 to use Green Hill Zone's samples? I then spent around 40 minutes doing just that. Almost every song has GHZ's sample data, minus the credits. There's also two palette changes, as well as edits to the level select, but that's pretty much it.
  13. BleuStar


    New Castle, Delaware
    Sonic The Hedgehog (RevBS) [!]
    Nope, these are full rom releases.
  14. BleuStar


    New Castle, Delaware
    Sonic The Hedgehog (RevBS) [!]
    I think my hack is pretty much complete. I managed to create workarounds for certain things.
  15. Ell678


    Am I Annoying You? Member
    Barrow, England
    Sonic Incursion
    While I stopped working on this a very long time ago, I thought I'd upload it anyway. It's the work I did on Sonic 2 Alt, before I seemed to lose creativity, got frustrated and left it. It's woefully unfinished and bugged, but EMZ to CPZ are fully playable, just use level select to bypass the bosses (they are broke).
  16. TheInvisibleSun


    Buffalo, NY, USA
    The Water
    Jukebox Hill Zone

    Just me pretty much screwing around with the sound effects and music. When I figure out how to actually import music into Sonic 1, it might become something more.

    Though I am having issues with assigning code to the 'S' and 'Goggle' monitors. Only one or the other works, but not both at the same time.
  17. Just a little bored, enough to make a little necropost. I have swapped the levels' files in Sonic Rush E3 Beta over Leaf Storm Act 2. So, enjoy:

    1) Leaf Storm Act 1 Download
    This act is the most complete stage along with Act 2 and the Leaf Storm Boss. It has some differences from the final.

    2) Water Palace Act 1 Download
    Water Palace is incomplete but playable, it doesn't have enemies or water.

    3) Dead Line Act 1 Download
    Dead Line is impossible to finish and has mostly garbled graphics. Literally, it ends with a "dead line"!
  18. redhotsonic


    Also known as RHS Tech Member
    United Kingdom
    Sonic 2 Time Attack - Coming 21st November

    1st of all, sorry for the bad quality and rubbish fps. To celebrate Sonic 2's 20th birthday, I've made a "Time Attack" edition of the MegaDrive game (hack of Sonic 2). Test your speed on Sonic 2 whilst it watches and records your times! Then go to "Your Times" menu, take a screenshot, and share with your friends!

    This video demonstrates a quick go on EHZ1, setting a new time. I then try it again to show what happens if you fail to beat your time. Then setting an option to "Kill me" mode on, I try again to show what happens when you fail to beat your time with this option set. I try again to beat it (but fail because I went wrong). Then try again and I beat the time, to show what it does when you beat it.

    I then set "Super Sonic" mode on and do EHZ2, and show the difference with that. I then show that there are two separate time recordings; one for Normal Sonic and another for Super Sonic.

    To be released on SSRG forums and SonicRetro forums on 21st November. A full description on all features and details will be released with the game, so until then, enjoy this teaser =P
  19. Overlord


    Now playable in Smash Bros Ultimate Moderator
    Long-term happiness
    >World Record Times

    This intrigues me. =P Loving this hack though, as someone who still regularly plays a lot of vanilla Sonic 2 I can easily see me getting some play out of this!
  20. redhotsonic


    Also known as RHS Tech Member
    United Kingdom
    Thanks. Unfortunately, World Record Times will be the only feature "not ready" by 21st November. But I will explain the idea behind it.

    The plan is to make a little program to extract all your times out of the SRAM and to post your times on an online database. Then you can go onto the website and see what rank you are. But the program will also extract the very best time from each zone/act from the database, and insert it into the SRAM.

    That way, in the game, you can still see your times, but see who is the best by going onto "World Record Times". I also plan to insert this "World Record Time" in small text whilst playing a level (probably where the lives HUD used to be).

    At this moment in time, it is unknown if this will be hosted on the Retro Channel, or if I'll be using a separate database and hosting it on SSRG.