Sonic CD Remix (Unstable Demo)

Discussion in 'Showroom' started by Pacca, Feb 26, 2018.

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

    Pacca Level 1 inflatable otter thing Member

    Joined:
    Jul 5, 2014
    Messages:
    1,126
    Location:
    Twinleaf Town
    The way I work on my rom hacks is relatively unorganized. I like to jump around from feature to feature, quickly adding small features whenever they come to mind, and jumping back and forth between larger additions. While this often results in a decent rom hack, it also turns my disassembly into a mess and makes it easy for me to lose track of my own edits. Sometimes, I even end up adding things that make no sense in regard to the project as a whole, just to test out an idea.

    I've recently realized that these facts can also causes all sorts of issues to crop up, which I could never reasonably track down. Sonic CD Remix in its' current state suffers from a couple of issues that I can't quite figure out, ranging from minor (special stage graphics being slightly corrupted sometimes) to extreme (level slot $26 fills VRAM with garbage when time traveled too for no obvious reason, there are random areas of lag, the camera occasionally "jitters", the Sonic 2 ending cutscene is completely broken). I ultimately decided that it would be best to start this project over from scratch, with an altered mindset, more care, and a way to keep track of what I'm doing.

    I figured it would be a shame for the perfectly playable rom that I had to go to waste though, so I packaged the most finished feeling parts together into this little demo. It contains 3 zones (Emerald Hill, Casino Night, Green Hill Zone), as well as past, future, and bad future variants for each, which can be accessed by the Sonic CD inspired time travel monitors. Some important things to note:
    • Emerald Hill is by far the most presentable level here. Each time zone feels unique; the past even adds water and the lost Snail badnik.
    • Green Hill suffers from minor visual issues with certain objects.
    • Casino Night Zone past is the most finished part of Casino Night. The other time zones in Casino Night and Green Hill have mostly unchanged artwork, as I don't have the art skills to do anything interesting with them :confused:
    • Like I mentioned early, the game occasionally lags in certain areas, and special stage graphics are sometimes partially overwritten by random garbage.
    • Green Hill has no boss. Going to the boss arena just sends you back to the Sega screen.
    • The music for Casino Night Zone good future and Green Hill Zone Good future are unchanged, as I was unable to make an edit that fit the feel that a good future should have.

    Here's an old video showcasing Emerald Hill Zone:


    And a newer video showing off Green Hill Zone:


    Download

    Mirror

    Also on Steam

    You can access the level select using the code FFF600:28. After you get to the level select, turn off the cheat and you can use it. Keep in mind that nearly everything in it is highly incomplete and not very presentable.

    You can also manually enter zones using the cheat code FFFE10:XX, where XX is a hex value between 00 and 6F. There are some zones not defined in the level select here...

    Do you guys have any recommendations for ways that I can keep track of what I'm doing, to assist in debugging and code cleanup? GitHub sounds awesome, but I don't want to throw money at the screen just to keep my code private.
     
    Last edited: May 17, 2018
    Calvin and ProjectFM like this.
  2. Novedicus

    Novedicus Well-Known Member Member

    Joined:
    Aug 26, 2013
    Messages:
    854
    GitLab supports free private repos.
     
    Pacca and TheStoneBanana like this.
  3. StephenUK

    StephenUK Working on a Quackshot disassembly Administrator

    Joined:
    Aug 5, 2007
    Messages:
    959
    If there's one recommendation I could give from my own experiences with time travel, it'd be to use a separate variable to define the timezone rather than assigning them with their own level IDs as you seem to have. That variable can then be used to load a different set of level load blocks and helps keep things a bit more simple, and will probably prevent the issues like you said you were getting with level ID $26. When I did it, I used a simple variable where 0 was the Past, 1 was Present, 2 was Bad Future and 3 was Good Future. When time travelling, it simply checked whether it was heading to the past or future and either added or subtracted 1 to hit the next timezone. The exception to the rule came when determining which future to load, in which case I added 1 to the time zone, checked if it was the Bad Future, and if so I ran a further check to see if I had enabled a Good Future. If I had, I added another 1, otherwise it stayed on a Bad Future. Obviously the same rules apply when going the other way. Subtract 1 from the variable, and if Good Future was enabled, subtract another 1. That way it always made sure that it was heading to the right future and always returned to the Present after one warp. From there, you can run checks in level event lists to work specifically based on the timezone variable, instead of having to extend the offset table by ridiculous amounts to keep track of everything. Just something to think about anyway.
     
  4. MarkeyJester

    MarkeyJester !%#@ Member

    Joined:
    Jun 27, 2009
    Messages:
    2,660
    I agree with Stephen, but ONLY if you have that time zone variable run against its own jump table for routines that are expected to function differently, on a different time zone, rather than having a single routine with several compares and tests all over the shop. Doing the latter can cause the routine to become large, complicated, messy, and can cost CPU time having to check the same variable for different things.

    A one time jump table to a unique routine which is designed specifically for the time zone in question, will remove all time zone variable checks within that routine (if the CPU is down that routine, it MUST be that time zone, so there's no need to check), take scrolling for example, you don't want one huge routine with compares everywhere to scroll it slightly differently depending on the time zone. You may as well have entirely different routines, one for each time zone, and run the correct routine based on only ONE check (in the form of a jump table).
     
    ProjectFM likes this.
  5. Pacca

    Pacca Level 1 inflatable otter thing Member

    Joined:
    Jul 5, 2014
    Messages:
    1,126
    Location:
    Twinleaf Town
    I actually used both an extended zone list and a time zone variable, the second being used to handle other minor differences like object behaviors and the title card artwork. I actually really like having unique zones for each time period, but reworking everything to not use separate zones seemed like a lot of work at the time (although in hindsight, it'd probably be easier then I anticipated). Also, having them as their own zones made it easy to add specialized features to each time period (Emerald Hill Past has water in it, for example), and kept things optimized in a similar fashion to what Markey said (as I could just give them custom level events/palette cycles/etc. without a check).

    Thanks for the advice, I'll take it to heart :3
     
    Last edited: Feb 26, 2018
  6. Pacca

    Pacca Level 1 inflatable otter thing Member

    Joined:
    Jul 5, 2014
    Messages:
    1,126
    Location:
    Twinleaf Town
    Due to an oversight, Green Hill Zone wasn't actually normally accessible in this demo; Casino Night transitioned into Hill top zone like it usually does (which is the most broken zone in the demo :eek:).

    The download link has been updated, I highly suggest re-downloading it if you plan to play it later. If your really curious to see whats' beyond the demo levels, the cheats section I mentioned still works.
     
  7. Bluestreak

    Bluestreak Lady in red, living in dread. Member

    Joined:
    Apr 1, 2016
    Messages:
    170
    Location:
    Eastwatch Island
    I've tried the game. I have some criticisms, mainly being presentation.

    I feel that Emerald Hill's past should have different trees and flora to be a nod to the prehistoric age, like ferns, more vines, brambles, and a corkscrew that's basically a long vine sorta. Meanwhile, a sky similar to Sonic Comet (palette-wise) would be great for the good future, along with new plants that evoke machinery working in harmony with the plants like Sonic CD's Palmtree Panic good future. Maybe change the graphics of the corkscrew to a more futuristic, clear-ish bridge.

    Casino Night's past would look much better if you gave it an "under construction" look to it, possibly taking place during daytime.

    Green Hill's past would also look better if you had prehistoric-style flora in it as well (albeit different from Emerald Hill).

    Also... You could use graphics from the Sonic 1 Bad Future Editions for Green Hill if allowed. Also PicsAndPixels has an amazing graphical set for a good future Green Hill. Maybe ask her if you can use it.

    Lastly: Please change the monitors back. The Mettaton monitors don't fit with the graphical style of Sonic at all, looking flat and cartoony like an SNES game versus the almost CG-ish look of Sonic. Mettaton doesn't even fit in a Sonic game imo.
     
    Pacca and ProjectFM like this.
  8. TheInvisibleSun

    TheInvisibleSun Visible Member

    Joined:
    Jul 2, 2013
    Messages:
    281
    Location:
    Buffalo, NY, USA
    Although I love this hack so far, might there be another means of time traveling instead of the monitors? I kept accidentally breaking them, unintentionally switching time periods. Perhaps there could be an object that you can spindash inside/in front of for a short time to do it (kind of like the Sonic Rush special stage access)?
     
    Pacca and ProjectFM like this.
  9. Pacca

    Pacca Level 1 inflatable otter thing Member

    Joined:
    Jul 5, 2014
    Messages:
    1,126
    Location:
    Twinleaf Town
    I hate to say it, but I'm not really an artist... I have a basic understanding of shading, but all the stuff I make usually looks rushed and flat. I appreciate the feedback, but I probably won't be able to do much with it on my own(particularly regarding the EHZ corkscrews; I can't even fathom how I'd safely edit that). The ideas are great though, I might be able to recycle some existing art to fit them...

    I don't really want to recycle artwork from other hacks. I might just ask that artist for permission to use those good future assets, though...

    I totally get where you're coming from here. Like I mentioned in the OP, a decent amount of the things that got implemented in the demo were experiments that had no right being in Sonic CD remix. This is one of them, and I have no intention of transferring the graphics to my second disassembly (as I'm remaking it from the ground up).

    I'm considering adding multiple options for time travel, allowing the user to choose between monitors and time posts. If that ever does come to fruition, maybe I'll try to add that in, too ;)
     
    TheInvisibleSun and Bluestreak like this.
Thread Status:
Not open for further replies.