don't click here

Sonic 3 Complete

Discussion in 'Engineering & Reverse Engineering' started by Tiddles, Dec 25, 2009.

  1. Tiddles

    Tiddles

    Diamond Dust Tech Member
    471
    0
    0
    Leicester, England
    Get in an accident and wake up in 1973
    Yes, there's duplicate data that can be thrown out, and thanks to the new disassembly, it mostly will be in future releases.

    But there's still more stuff I need to extract from Sonic 3 for things I want to do, and to make my life easy I need to be able to build the full version to test things out before I figure out which bits and pieces are needed.

    I'll try to do something with the palette next time anyway, possibly just as an option, but because of this limitation, there probably won't be any sock work - it's not something I really planned to put a lot of work into, so I won't, at least for now, but I'll do something since it's popular and Tribeam did a lot of the legwork anyway. I'm hoping to put in the reverse too and allow playable Knuckles to use the NPC palette. In many ways this is more appropriate for a Sonic 3 revival, given that the pink palette is pretty much used exclusively in Sonic 3 alone.
     
  2. Jayextee

    Jayextee

    Unpopular Opinions™ Member
    3,253
    64
    28
    Atro City
    I DONE MAKED GAMES.
    From possibly the one person on this forum who prefers the slightly pinker Knuckles, I salute you. :)
     
  3. Tribeam

    Tribeam

    I code Lua and Lua accessories Member
    80
    0
    6
    If you want I can send some source files, such as the tiles, and what all I changed in the ASM(if I can remember all of them lol)
     
  4. Tiddles

    Tiddles

    Diamond Dust Tech Member
    471
    0
    0
    Leicester, England
    Get in an accident and wake up in 1973
    That'd be helpful, thanks a lot. You never know, maybe eventually I'll be able to fit it all in with a reduced tileset or some such jiggerypokery. Probably not soon, but sometime.
     
  5. Mister Johs

    Mister Johs

    Member
    2
    0
    0
    New York
    Sonic TAK
    About the order of the levels, I suggested

    4. Carnival Night
    5. Sandopolis
    6. Lauch Base
    7. Mushroom Valley
    8. Flying Battery
    9. IceCap
    10. Lava Reef

    - The cannon at the end of CNZ can shoot Sonic, Tails & Knuckles into Sandopolis
    - Then Sandopolis can be followed by Launch Base by using the current Icecap ending sequence
    - Of course Sonic can use the FBZ door as a snowboard into Icecap
    - Icecap can be followed by Lava Reef by using the current Sandopolis ending sequence

    As for Knuckles, he could have a CNZ Act 2 sub-boss where the capsule is, then use the gravity elevator to the real CNZ boss.
     
  6. Tribeam

    Tribeam

    I code Lua and Lua accessories Member
    80
    0
    6
    http://www.speedyshare.com/files/28536685/Cutscene.rar

    Heres the whole cutscene folder, I forgot what files I edited and what was what, so I just took the whole folder.

    As for ASM I'm not exactly sure where I edited the art files(I messed up my hack source and replaced it with a backup and now I don't have the edited knuckles stuff)
    But I looked into it and I THINK its at the "Knuckles_Load_PLC_6618A" and "Knuckles_Load_PLC_661E0" labels

    change the #ArtUnc_Knux parts
    to whatever you label the knuckels.bin(in the cutscene folder) to.

    This might be it, idk, I haven't tried it again cause I got things to do other than hacking but, hey, I tried heh
     
  7. Tiddles

    Tiddles

    Diamond Dust Tech Member
    471
    0
    0
    Leicester, England
    Get in an accident and wake up in 1973
    No worries, I'm sure I can figure out the rest, although it might be a while before I add it in! Thanks for your help!
     
  8. Tiddles

    Tiddles

    Diamond Dust Tech Member
    471
    0
    0
    Leicester, England
    Get in an accident and wake up in 1973
    Yeah, funny story: I said I wasn't going to work on this for a while, but it turns out that I did.
    [​IMG]
    Tribeam's work was a great help - thank you for sharing it! Ultimately I did something slightly different in the end, because Tails' colours are used in Knuckles' palette line, for his shoes. Here they are in the ROM Tribeam posted, looking a little muddier than usual, compared to my current build:
    [​IMG] [​IMG]
    I continued along the same lines of replacing those colours with sock green and shoe red, but then I filled the old red entry with the darker of Tails' oranges and mapped the shoe colours onto it. So we still lose a little bit of detail in some frames where both oranges were used, but you'd never notice it unless you were looking for it, unlike the original sock travesty.
    [​IMG]
    We still lose a colour in the Hidden Palace fight, but this time it's the shoe colour, which is closer to the replaced colour than the red was. In fact, this is the same muddy looking shoe business as in Tribeam's ROM, so really the only difference is that I'm restricting that difference to this fight, instead of having it as a consistent look for AI Knuckles.
    [​IMG]
    I also forced a palette reload after the fight. Presumably he had a spare pair of shoes in the emerald chamber. That was necessary for this:
    [​IMG]
    These dizzy stars needed updating for the new palette too, and they wanted orange (no matter how many times I offered them lemon-lime).

    To avoid using a whole doubled up set of art for Knuckles, I chopped out all the art that isn't used by cutscene Knuckles from the copy (updating the relevant frames in the DPLC). It's still expensive, but now manageable. I also did some magic to ensure the alternative artwork was only used in the right places, since the same art/DPLC call is used for a correctly palletised Knuckles sometimes (continue screen, ending). Knuckles' intro needed some duplicate art too to work with his main palette - it uses some of the HPZ special art.

    If you wanted to tidy this all up properly in a hack, it would probably be best to just merge few extra frames into the S3 cutscene Knuckles art, redo mappings and DPLC and use that everywhere a palette line 2 Knuckles is needed. I didn't do that because I still want to be able to build a mostly binary compatible version on some occasions, as I've mentioned before.

    What's left for colouring Knuckles in? Fix up the competition mode palette, and then stick options all over the place to use a pinker Knuckles throughout. Does anybody actually want a patch for yellow socks? I don't know what else that might impact for player Knuckles, and it saves me time if I don't bother... but speak now if you want it, while I'm doing the pink option anyway.

    By the way, for anyone following the monitor behaviour saga, Sonic now behaves more sensibly in Sandopolis - he'll jump well clear of any monitors, so you'd best get them before the sign lands if you want them. You can still perform a nifty double bounce on the monitors if you manage to position yourself just right before the victory, though, due to a bit of slope action.
     
  9. MastaSys

    MastaSys

    Member
    692
    51
    28
    Actually I find it very pretty accurate, considering the limitations, I don't know how hard was actually to do, but if sega didn't do back then so it wasn't easy.
    Now it's very consistent, I really like it, congrats.
    Is that tails' screen from the new intro you made? :)


    You're missing completely the point of changing the level order.
     
  10. Mister Johs

    Mister Johs

    Member
    2
    0
    0
    New York
    Sonic TAK
    I didn't notice the Tails and Knuckles confortation until now. If Tails is given a intro, he could use Sonic's beta intro of surfing to Angel Island

    I know, the original Sonic 3 was to have Carnival Night followed by Flying Battery and Mushroom Valley followed by Sandopolis (that's the mystery transition). The simplest I can think of is Sonic, Tails and Knuckles using....
    [​IMG]
    the mushroom to float to Sandopolis

    [​IMG]
    jumping off the cliff with the wind pushing them up to Sandopolis
     
  11. Tiddles

    Tiddles

    Diamond Dust Tech Member
    471
    0
    0
    Leicester, England
    Get in an accident and wake up in 1973
    Thanks, and yes it is. I was considering posting a video of it, but then there would be nothing surprising in the next release - and it's nice to have something, considering I don't get to surprise people often with such a conservative project. That said, it's not particularly exciting to look at...

    I'm sorry, but I'm afraid Ernest Borgnine has already been confirmed.

    By which I mean: I'm sorry, but it's already done, and it isn't that. No sprites for it, and S3C is rarely about new original artwork - it's only really FBZ EggRobo and the new font, that's it.

    Although now I'm starting to think that being secretive is just going to make it more disappointing when it shows up. Look at it this way: it's Sonic's intro with all the fun bits taken out of it. Nothing more than that. But hey, at least everyone gets an intro now!

    The only change that might happen is Flying Battery moving ahead of Icecap, and it won't be happening soon. There've been a lot of good ideas about how to go from Mushroom Valley to Sandopolis, but I think we've kind of done that topic to death as it stands.

    Going back a bit:

    I really wanted to do this, but based on what's documented, there doesn't appear to be enough free RAM to buffer and manipulate the tiles.

    "The Doomsday Zone" doesn't strike me as a problem. Just "The Doomsday" on the level select looked silly to me though. (The Doomsday what?) So no plans to change that.

    It would make more sense, wouldn't it. Not ruling it out, but ultimately it's satisfactory, not completely inaccurate and not something that changed from S3 to S&K, so I'm not planning on it at the moment.
     
  12. Josh

    Josh

    Oldbie
    2,123
    1,087
    93
    USA
    I was just futzing about with this, when I had an idea. I use a USB Saturn controller, which is what struck me. Not sure how hard it'd be to implement, and I realize it might not gel with the spirit of the project. But when Debug Mode is enabled, why not assign the object placement and gravity controls to X, Y, and Z? That'd free up the other three buttons to be used as they regularly are, and as someone how spams all three of them to quickly charge my spin dashes, I often find myself cycling through random things when debug is on.

    Thanks for all your hard work on this! You've made the greatest game of all time even better. xD
     
  13. LOst

    LOst

    Tech Member
    4,891
    8
    18
    Tiddles, I have had some time thinking about how to deal with monitors and their falling code. I know you want to have the falling code in Sonic 3 complete, as well as having it working in reverse gravity. But since there is no complete proof about why it was disabled in Sonic 3 & Knuckles except for the end of act hidden monitors and auto player in Sandopolis Act 1, I have come up with this solution:

    Deal with two kinds of monitors.

    The default monitor (object $26) can be the falling monitor. The second monitor object has the falling code removed, and its type should replace all end of act hidden monitors' types (in the object layout), as well as any monitor on stage THAT causes bugs (that we might not know about now, but in future testing) because of falling code.

    Simply put, where bugs may appear, or will appear, the monitor is replaced with another monitor type not allowing falling.

    The simplest way to do this is to use a Container Object. The Container Object has one job, to choose what monitor to use:
    - Replace the global object list's action pointer for the default monitor with the Container Object's initial action routine pointer.
    - Make the Container Object's initial action read the object parameter byte (object sub type) and test for a negative value. If it is positive, change the Container Object's action pointer to the monitor "that can fall", and branch there. If it is negative, remove the most significiant bit by ANDing the byte with $7F, and change the Container Object's action pointer to the "non-fallable" monitor, and branch there.

    This requires two copies of monitor code. But you can optimize them to run shared subroutines to save space. The Container Object lets you share monitor object number $26, without having to add extra overhead checks while the monitor is reading the object parameter (which already tells which monitor item it is using).

    Example of a fall-able monitor object with item 2 in the object layout data:
    $26, $02

    Example of a non-fallable monitor with item 2 in the object layout data:
    $26, $82

    The Container Object reads the $82 byte, and ANDs it with $7F so that both monitors don't have to know about the choice the Container Object did (as it was a one time thing, for choosing action).

    Then you have two monitors, both looking the same, but works differently depending on the game situation.

    Oh, and if the most significiant bit is already used by the monitors, go ahead and use another bit. I don't know what is fastest:
    -Use the most significiant bit, so that you can word sign-extend the byte, and check if it was negative.
    -AND off the bit you choose (any bit), and read the CPU flag if the bit was set or not at that same time (if that is even possible? I haven't read the 68000 manual in years).
    Both are cool ways ;)
     
  14. Tiddles

    Tiddles

    Diamond Dust Tech Member
    471
    0
    0
    Leicester, England
    Get in an accident and wake up in 1973
    Here's a new release, especially for the 20th anniversary of a different game. Download it from the <a href="http://info.sonicretro.org/Sonic 3 Complete (hack)" target="_blank" style="background: url(http://info.sonicretro.org/images/5/50/Reticon.png) right no-repeat; padding-right: 20px; border-bottom: 1px dotted #3366BB; color: #3366BB; cursor:pointer; text-decoration:none;" class="wiki">Sonic 3 Complete (hack)</a> wiki page or go through the customiser. It's a fairly minor release compared to the last one, but there are a fair few nice things in it.

    The changes are these:

    Fixed and improvements over previous S3C versions
    • Fixed Blue Sphere starting paused after quitting with Start/B
    • Fixed crash for Knuckles on Sonic 3 version of MGZ2 if taking the high left route early on
    • Fixed bugs in Desert Palace and Chrome Gadget when using Sonic 3 layouts
    • Fixed possible boss graphic corruption when restarting from last LBZ1 starpost for Sonic/Tails
    • Tails now takes a less straight flight path at the end of LBZ in a Sonic game
    • Music track IDs references no longer change with patch options, e.g. 25 is always the S3 title music. A new range of IDs F0-FA hold alternative music tracks.
    Features
    • Knuckles appears in the same colours throughout the game, both in cutscenes and as a playable character.
    • Tails now has an introduction sequence.
    • Tails now has his own colours in the results screens.
    • 2P Tails is less prone to suicide before the final battles of LBZ.
    • Alternative level select background for S&K mode.
    • The new level select font is now also used on data select. This has allowed for improved character spacing on later zone numbers.
    • The level select screen has been rearranged to better reflect the actual zone arrangement.
    Sonic 3-ification
    • Sonic 1-3 style monitor behaviour - jumping under the base of a monitor will make it fall.
    • The logo in the all-super emeralds ending now drops in from the top of the screen as in Sonic 3's credits
    Bugfixes over S3&K
    • Fixed object and ring layout oddities in various zones, including the infamous double ring in AIZ1 and the improperly retracting spikes in CNZ2.
    • Tails' tails no longer disappear while he is jumping after the credits
    • Fixed Knuckles being unable to jump off underwater objects
    • Added MoDule's bugfixes for jumping out of shallow water, roll jump hitbox and Tails' camera height
    • Added flamewing's bugfix for transforming as the timer runs out
    • Fixed wrong colours on Super Emerald 6 (the leftmost one) as Sonic or Tails in Special Stage results
    • Fixed Knuckles' socks in continue icon in Super Emerald special stage results
    • Added falling animations when floor collapses in Hidden Palace and Death Egg
    • Going into debug when dead now restarts object processing
    Additions and changes to patch options
    • The zone medley credits track will end with the correct theme to match your chosen title theme, regardless of which track is chosen for each.
    • New music options:
      • Disable all music
      • Continue Knuckles fight music throughout HPZ
      • Play Sonic 3 music when playing Angel Island through Launch Base; use Sonic & Knuckles music for the rest of the game.
      • Always play Sonic & Knuckles music in the S&K game mode
      • Use Sonic 3 music when playing as Sonic/Tails, S&K music when playing as Knuckles.
      • Use the slow act results theme from Sonic 3D (similar to S&K collection)
      • Knuckles and miniboss theme options are no longer combined into one patch; they can be selected individually.
      • Special HPZ Knuckles music patch removed. The same behaviour can be achieved by patching in the S&K miniboss music while keeping the S3 Knuckles theme.
    • New patch to use "cutscene pink" for Knuckles' main colours
    • New patch to use S&K monitor behaviour
    I hope you enjoy it (and that I don't wake up to a million bugs)!
     
  15. Liliam

    Liliam

    Oldbie
    1,563
    117
    43
    Neat! I played around a bit, and I like what I see. The retracting spikes in Carnival Night finally being fixed is particularly a breath of fresh air. I still have much more to check out, though, so more comments are definitely coming later.

    Two nagging issues so far:

    [​IMG]

    That TAILS graphic is sinful ugly. At least switch over to lighter blues, like so:

    [​IMG]

    Another thing: you REALLY need to make the CNZ flipper bumpers force Tails out of flight mode. Right now, Tails is stuck in the ones right after Knuckles floods the stage, going perpetually in a loop due to the lower gravity while flying.
     
  16. Aquaslash

    Aquaslash

    <The Has-been Legend> Moderator
    Haha, that's the same thing I did to Tails's text years ago. Glad to see someone else pick it up. Darker blues are better IMO.

    *proceeds to swap the orange and yellow emeralds*
     
  17. Tiddles

    Tiddles

    Diamond Dust Tech Member
    471
    0
    0
    Leicester, England
    Get in an accident and wake up in 1973
    I was never completely satisfied with that text, it's true. It's that jaggly 'A' that makes it unpleasant I think. I did try using the lighter blues; I tried a lot of things, but on balance, throughout the game, I found that the darker ones look better - AIZ2 is probably the place it looks worst of all, followed by SSZ and AIZ1.

    Some of the jarring quality also seems to wear off as you get used to it, too, I found - and my "which picture looks better" tests on Sonic laymen were favouring the inverted version over the original in the end.

    It's one of those things that's been on my list for a while but never seems to be at the front of it. I'll see if I can do something next time.

    Let me know how that goes. I did look at that but chickened out because it seemed like a significant headache to change it everywhere it'd need changing. In the end I took the easy option and changed the one place where it was still yellow (CE results screen) to be a bit more orangey (although it still looks a bit yellow!)
     
  18. Aquaslash

    Aquaslash

    <The Has-been Legend> Moderator
    I've done it on older builds. I just find the palettes with hive pal and make the orange one yellow and the yellow one orange.
     
  19. Tiddles

    Tiddles

    Diamond Dust Tech Member
    471
    0
    0
    Leicester, England
    Get in an accident and wake up in 1973
    IIRC my concern was Hidden Palace - it normally uses Tails' oranges. It could be moved to the second line, but that affects Knuckles' shoes (and I only just fixed all that!) - it would also involve changing code to ensure that the correct palette is loaded in all possible HPZ permutations, because there's a whole lot of crazy stuff going on there that I found when dealing with Knuckles' socks. As it is now, the positions of the oranges in line 2 already vary between appearances due to the AI Knuckles changes.
     
  20. Aquaslash

    Aquaslash

    <The Has-been Legend> Moderator
    I'm not sure how the palettes are laid out in that area. I'd almost suggest new art, but there's probably no room for it. I'll have to take a look and see if I can figure out something.

    EDIT: Having just looked at the area in the original game, the orange emerald is the only one of its kind. I would suggest to make it use the second line and change the art accordingly to use the ring yellows, but that probably clashes with your Knuckles deal a bit.