Discussion in 'Engineering & Reverse Engineering' started by TheInvisibleSun, Aug 31, 2012.
Now we're getting somewhere
I really like that shot. It's like you actually are playing the original game, but on a black & white TV - it somehow feels more natural than it did previously.
New Marble Zone palette, courtesy of KingofHarts' Sonic Triad palette editor:
A) Raw generated grayscale palette.
B) This version is slightly tweaked, to brighten it up a bit, and accentuate some of the lighter greys in the palette.
Which one do you guys prefer?
The latter, it gives the essence that there's a strong light coming from the left of the world, like a sunrise. Mind you, the reversed pillar on the right doesn't help the light source, but eh who cares...
Wow... I'll say it myself, if I may. I like the second one better, and taking your suggestions, I will try to make smaller edits like this, possible directly from the program. Awesome stuff.
The grayscale versions of the levels give me an almost gameboy-like vibe. Very good, keep it up!
I know this is primarily an art hack, but perhaps once you get the pallets and level layouts squared away, consider also expanding the idea: he's not stealing just the colors, but the very music of life! (etc.) The ideas aren't entirely dissimilar, and it'd give the opportunity to have low-def mixes of the musics or something.
This sounds like a neat idea (maybe some tracks would be only D&B before Sonic fixes them, perhaps)!
The easy part for me, is actually triggering the music via monitor, but the only problem would be that I really don't know how to add/edit Sonic 1's music yet. I didn't see a "How To" on the guide when I looked for it either (though admittedly, I didn't search too hard, since it wasn't my primary concern at the time).
So, over Thanksgiving Break, I worked on this quite a bit. I now have fully functional Restart and Music Monitors!
However, those monitors have glitchy sprites and animations; I tried to use the guide on the Wiki, but it didn't work properly, so I just left them broken until I figure out how to fix them.
As far as the Music Monitors, the default music in the video is not final; I'm still trying to figure out how exactly The Sonic One Music Editor works, so the music present is very WIP.
Also, thanks to KingofHart's Triad, I also have non-crappy Ending palette now.
-Still gotta change the layouts; saving these for last (since this is the easiest thing to do from a technical standpoint)
-I still have yet to figure out how to make a 'Door Trigger' for the Change monitors (Basically, a system that would only allow you to finish the stage if you got one of the monitors)
-If I'm going to have multiple Color Monitors, I have to figure out how to load the colors individually. Right now, I can only load them starting from the first color (e.g I can load colors 00-->1F, but I can't load 10-->1F)
This is the code I'm using, if anyone else can figure out how to do it:
move.w #$2F,d0 ;Length ($F = full line)
lea (Pal_GHZ2),a1 ;Palette location
lea ($FFFFFB20),a2 ;RAM location ($FB00 = line 1)
music sfx_Teleport,1 ; play teleport sound
-I also still have to figure out how to trigger the change in the palette cycle rotations (which are a bit more complex than the normals).
-Another thing that I want to figure out, is something redhotsonic mentioned earlier in the thread:
I have no idea how to make Lampposts remember the palette/color state, but really I'm interested in fixing this.
I'll also be updating the first post soon as well.
I'd imagine the checkpoint thing SHOULDN'T be too hard... When hitting the monitor, does this set a flag in the VRAM? OR does it simply change the palette?
If its the former, then you want only 2 new flags for checkpoints. If its the latter, than you will want to assign two variables for bkg color and 2 for Sonic's color. Call them whatever you want... how about "f_colbkg" and "f_colson"... these two will be for telling the level whether or not you currently have color for each of the two or not... then create two more flags for checkpoints. If you don't know how these work, a quick skim through the checkpoint object should answer all of your questions... its very simple. Everything such as time, position, etc is stored in the checkpoint variables when the checkpoint is hit. When you die and respawn, these checkpoint variables' values are then moved back to the variables that they were derived from in the first place.
Now... You can have the colors reset each time you die without a checkpoint or start the next level... just like Time does in the game. If you are at a checkpoint though, the game will check the checkpoint variables to see if you hit the boxes before passing the post. If so, color will stay in the level. If not, then your still in B&W.
Hope this helps. If you are still unsure I could provide an example later. Not right now though. I'm going to go watch The Watch. Ain't seen it yet and have been out of the loop of American movies/music/general media/culture for some time. Need my fix...
I've decided to do it this way (this is the only way I'm able to do it right now anyway lol). The Signpost and Giant Ring will not appear unless any of the Change Monitors are found. The Restart Monitor, as previously shown, will return you to the beginning of the stage. The only issue is that some enemies have glitchy graphics after Sonic returns from the Signpost area.
Also might as well re-post this here, as part of the update:
The new 'All Emeralds' Ending'
Next, I'm going to tackle the Lamppost issue.
Just thought I'd update you guys on the progress of this project, since I put a lot of time into it in the past week.
-Resolved the glitches involved with the Signpost. If you have any one or more of the Color Monitors, then the screen will still lock, and the signpost and ring will appear. If not, then none of these will show. (Thanks again, Mercury)
-Finally fixed the Lamppost issue (and all of its auxiliary problems), so if you've collected one of the Color Monitors before hitting a lamppost (which as of now, are Sonic, Goggles, 'S', and Music), they will return with the lamppost after death. (Thanks, KingofHarts for the help above.) Had to go through a lot of hoops to do it, but what I eventually had to do was:
Make new flags for each of the Color Monitors (and thus had the monitors set them to #1), and lamp variables. The Lamppost basically checks if any of these were set. If any of them were set to #1, then the lamppost would simply run the monitors' effect again. Because PalFadeIn_Alt cancels out PalLoad_Loop, it canceled out the returning colors. Therefore, I had the game check if you were returning from a lamppost and if you had the 'S' monitor in the lampost data, after the fade. If so, then the Color Change would be initiated, if not, it would go on as usual. However, since the Goggles Monitor used PalLoad3_Water and PalLoad4_Water, this still resulted in a nasty glitch where all the water blacks out. Therefore, I had to load the underwater palettes manually (like the normal ones) with the level starting routines (with the conditions that you are returning from a lamppost and and that f_gogglesmonitor is at #1).
-Fixed a few small things like the Spike Bug, Walk-Jump, etc.
-Found a temporary work around to the Monitor mapping problem I posted in Basic Q&A, by shifting some mappings around. Reset Monitor uses the Eggman Art, while 'S' and Music now share the new 'C' Monitor art I made.
-'Sonic Has Passed' now reads as "Sonic Has Restored"
- Restored Music comes back from Drowning Countdown and invincibility.
-FZ has a slightly different Layout now.
UPDATE TRIPLE POST:
Got more done in the past two to three days:
-Removed the HUD in the Ending (this has always bothered me, since a HUD is a bit pointless in an ending sequence imo)
-Made the Shield into a High-Jump Shield. Having this shield now increases your jump height by $100, as well as protects you from a single hit. I figured this would be a relevant power-up. It and its Monitor therefore have new art and animations (and so do the Invincibility Stars, since they share mappings with the Shield).
-The Title Screen and Level Select Menu have had their colors stolen by Eggman as well :v:. They are both grayscale now, using Sonic TrIad, plus a few tweaks made to fix a few coloring conflicts. The "Press Start Button" also appears now, and there is a new Level Select Code, but I'm not telling what it is yet .
-Removed both speed caps.
- Restart and Music Monitors both have new art.
-Fixed the physics in the Special Stages (using the guide).
-Eggman's dastardly plan has also even reached the Special Zone! Special Stages are now grayscale until the emerald is collected, upon which the stage is returned back to normal.
-I've finally figured out how to load palette cycles! It was actually easier than I thought it would be (made a massive oversight); I just had the cycling routine use the alternate palette if the Monitor is broken. These are all finished (including the effect for the Ending), except for Scrap Brain Zone's (not sure what I'm planning to do for these).
-Speaking of Monitors, there is now a new "Cycle S" Monitor (which shares art/mappings with the S Monitor's "C" art, due to current VRAM limitations), that changes the cycled palette of the given stage.
-Default Music is now just silence, until I can make the remixes correctly. I felt it was a better fitting placeholder than the 'broken' music.
So, what I have left to do now includes:
-New Normal Stage and Special Stage Layouts
-A modified Title Screen and End Title, for naming.
-New Default music.
-A new "END" or "GOAL" Sign/Object for the stages.
-I have no idea how to allow gamesaves at the moment, but I want to do this in the future (since the game won't be as quickly beatable as Vanilla Sonic 1).
- SBZ 1 and 2's palettes and cycles, and Special Effects for the end of SBZ2 and FZ.
-Eventually, I might make 3 separate Color Monitors (for each line in the palette), once I figure out how to load colors selectively from a palette (can't find the right RAM address).
Hopefully, I'll be able to make another release sometime next week, as I'll be going on hiatus once school starts up again, until the summer (architecture school is no joke, and time is not something to be trifled with).
Yesterday, I spent hours making a new layout for GHZ 1. Somehow, crazy glitches began to appear in everything involving Green Hill (Acts 2 and 3 had completely jumbled chunks, and the Ending was missing one completely, making it unfinishable). I suspect this might be due to a new chunk I added to Act 1. What I had to eventually do, was reset everything having to do with GHZ back to a 2-week old revision (the original layout). Therefore, this release only has a slightly modified GHZ 1-3 with the several monitors hidden throughout. After this though, there may not be an actual "new layout" release until the Hacking Contest, as real life calls.
I also recorded some videos of some of the changes detailed in the posts above:
Beta 02 Download
EDIT: Whoops, wrong link. Link fixed.
I'll be updating the first post soon.
I guess there's not much interest in this project, huh?
Anyway, there was a game-breaking glitch in the old build, concerning the lamppost.
This build not only fixes said glitch, but it also changes a few other things:
-High-Jump Shield's arrows now always point upward, as they are supposed to.
-Special Stage entry now requires that all of the Color Monitors are found. Finding all of them also nets you a 20,000 point bonus. This way, there is some sort of incentive in actually finding all of the monitors. SBZ Act 1 and all other Zones' Act 3's therefore also have Giant Rings now.
I've also been considering doing something bigger as a 100% completion reward, maybe something like an extra bonus level, if possible. If this is done, should I do it by a required total point value by the end of the game? Or should I trigger it the same way the 'All Emeralds' Ending is triggered (and make completed levels count as emeralds, and then have the bonus require (v_emeralds).w to equal $18 to access whatever reward).
Trying it out now. Just a thought/suggestion. Music is completely gone until the monitor is found. Should this apply to all sound (ie sfx, and invincibility) or do you just want it to apply to music only?
Also got the Hi-Jump after getting 100 rings, didnt see it in the last two change lists, though I could've missed it. Is that intentional?
Have only played Acts of GHZ... I'm looking forward to playing more later.
Also a bonus end level would be great. You should do it as a 100% bonus (all monitors and emeralds together)
For tracking all monitors... the simplest way you could do that is to have a global variable that is checked at the end of the level. If all monitors are found, then this variable is simply increased by $01. At the end, just as you would check the emerald variable, you would check this to see if you've met the highest total possible (aka ALL monitors in ALL acts, which by my count, would be 18, OR $12)
Guess the only question is... what would the level be?
ONE final thought. Please apply MarkeyJester's fade-in fix from the SCHG... normally it is not THAT big a deal, but this hack would benefit from it, I think.
Right now, the default 'no music' is just a placeholder, until I can actually edit the music properly (I'm seeking to have bass and percussion only versions before the music monitor is hit).
Really? I just tried to replicate this, but after getting 100 rings I still had a normal jump . What other circumstances was this under?
I'm thinking I might do something completely original. However, I'm also considering porting a level from a different game too...
Not sure what this does, but I'll look into it.
*EDIT* I would apply the fix, but the nomenclature of the coding/subroutines in his guide are so different than that of my dissasembly, that it might take too long to translate it all over to mine properly. Maybe later...
Interesting hack, make a wiki page if you haven't already.
Sonic 1 Color Contrast
It's my first wiki entry, so I guess its kind of weak. I guess I'll add screenshots eventually.
I'll help add to the page this week, though I'll leave screenshots entirely to you. For a first entry in the wiki, its not bad at all.
Added "GOAL" signs for GHZ, MZ and SYZ.
What do you guys think of them?
Separate names with a comma.