Sonic 3C(ustomizable)

Discussion in 'Engineering & Reverse Engineering' started by Hayate, Jan 2, 2010.

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

    DigitalDuck

    Arriving four years late. Member
    5,109
    253
    63
    Lincs, UK
    TurBoa, S1RL
    <!--quoteo(post=464601:date=Jun 8 2010, 04:44 AM:name=FraGag)--><div class='quotetop'>QUOTE (FraGag @ Jun 8 2010, 04:44 AM) <a href="index.php?act=findpost&pid=464601">[​IMG]</a></div><div class='quotemain'><!--quotec-->Levels need to be designed specifically to be used in split-screen, because you need to work with art in 8x16 tiles instead of 8x8 tiles; if you don't do that, they won't render correctly. The levels in Sonic 3 & Knuckles probably weren't designed with that restriction (it is a restriction) in mind, so you'd have to make new levels from scratch.<!--QuoteEnd--></div><!--QuoteEEnd-->

    Not to mention that AIZ, HCZ, CNZ, ICZ, and LBZ all contain water, which is a big problem when it comes to split-screen.
     
  2. Covarr

    Covarr

    Sentient Cash Register Member
    4,233
    3
    18
    Trapped in my own thoughts.
    Two stageplays, a screenplay, and an album
    <!--quoteo(post=464605:date=Jun 7 2010, 08:46 PM:name=DigitalDuck)--><div class='quotetop'>QUOTE (DigitalDuck @ Jun 7 2010, 08:46 PM) <a href="index.php?act=findpost&pid=464605">[​IMG]</a></div><div class='quotemain'><!--quotec--><!--quoteo(post=464601:date=Jun 8 2010, 04:44 AM:name=FraGag)--><div class='quotetop'>QUOTE (FraGag @ Jun 8 2010, 04:44 AM) <a href="index.php?act=findpost&pid=464601">[​IMG]</a></div><div class='quotemain'><!--quotec-->Levels need to be designed specifically to be used in split-screen, because you need to work with art in 8x16 tiles instead of 8x8 tiles; if you don't do that, they won't render correctly. The levels in Sonic 3 & Knuckles probably weren't designed with that restriction (it is a restriction) in mind, so you'd have to make new levels from scratch.<!--QuoteEnd--></div><!--QuoteEEnd-->

    Not to mention that AIZ, HCZ, CNZ, ICZ, and LBZ all contain water, which is a big problem when it comes to split-screen.
    <!--QuoteEnd--></div><!--QuoteEEnd-->
    Didn't Azure Lake have water?
     
  3. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,603
    198
    43
    SonLVL
    That works like the oil in Oil Ocean Zone.
     
  4. MarkeyJester

    MarkeyJester

    A D V A N C E Resident Jester
    2,098
    229
    43
    Japan
    Yes, Azure Lake Zone did infact have water, but not the kind you're thinking of, it's more of a design of water (In the BG) rather than an actual water palette line swap.
     
  5. Hayate

    Hayate

    Tech Member
    <!--quoteo(post=464601:date=Jun 8 2010, 04:44 AM:name=FraGag)--><div class='quotetop'>QUOTE (FraGag @ Jun 8 2010, 04:44 AM) <a href="index.php?act=findpost&pid=464601">[​IMG]</a></div><div class='quotemain'><!--quotec--><!--quoteo(post=464393:date=Jun 7 2010, 04:45 PM:name=E-122-Psi)--><div class='quotetop'>QUOTE (E-122-Psi @ Jun 7 2010, 04:45 PM) <a href="index.php?act=findpost&pid=464393">[​IMG]</a></div><div class='quotemain'><!--quotec-->Just a thought, I know the split screen mode works differently from Sonic 2 but could it be in any way utilized for co-op mode?<!--QuoteEnd--></div><!--QuoteEEnd-->
    Levels need to be designed specifically to be used in split-screen, because you need to work with art in 8x16 tiles instead of 8x8 tiles; if you don't do that, they won't render correctly. The levels in Sonic 3 & Knuckles probably weren't designed with that restriction (it is a restriction) in mind, so you'd have to make new levels from scratch.
    <!--QuoteEnd--></div><!--QuoteEEnd-->

    That applies only to Sonic 2. Sonic 3 doesn't use interlace mode for its competition mode... which is why it doesn't look like shit on an emulator (unlike Sonic 2).


    <!--quoteo(post=464605:date=Jun 8 2010, 04:46 AM:name=DigitalDuck)--><div class='quotetop'>QUOTE (DigitalDuck @ Jun 8 2010, 04:46 AM) <a href="index.php?act=findpost&pid=464605">[​IMG]</a></div><div class='quotemain'><!--quotec--><!--quoteo(post=464601:date=Jun 8 2010, 04:44 AM:name=FraGag)--><div class='quotetop'>QUOTE (FraGag @ Jun 8 2010, 04:44 AM) <a href="index.php?act=findpost&pid=464601">[​IMG]</a></div><div class='quotemain'><!--quotec-->Levels need to be designed specifically to be used in split-screen, because you need to work with art in 8x16 tiles instead of 8x8 tiles; if you don't do that, they won't render correctly. The levels in Sonic 3 & Knuckles probably weren't designed with that restriction (it is a restriction) in mind, so you'd have to make new levels from scratch.<!--QuoteEnd--></div><!--QuoteEEnd-->

    Not to mention that AIZ, HCZ, CNZ, ICZ, and LBZ all contain water, which is a big problem when it comes to split-screen.
    <!--QuoteEnd--></div><!--QuoteEEnd-->

    I swear one day I'm going to prove this "no water in multiplayer" wrong. It is certainly not impossible to change the palette more than twice per frame. S3K does this with its single player water levels anyway - the palette changes several times close to the waterline, not once. If you don't believe me just look at CNZ or something and try to explain why the background changes palette at a different position to the foreground.
     
  6. DigitalDuck

    DigitalDuck

    Arriving four years late. Member
    5,109
    253
    63
    Lincs, UK
    TurBoa, S1RL
    <!--quoteo(post=464700:date=Jun 8 2010, 01:05 PM:name=Hayate)--><div class='quotetop'>QUOTE (Hayate @ Jun 8 2010, 01:05 PM) <a href="index.php?act=findpost&pid=464700">[​IMG]</a></div><div class='quotemain'><!--quotec-->I swear one day I'm going to prove this "no water in multiplayer" wrong. It is certainly not impossible to change the palette more than twice per frame. S3K does this with its single player water levels anyway - the palette changes several times close to the waterline, not once. If you don't believe me just look at CNZ or something and try to explain why the background changes palette at a different position to the foreground.<!--QuoteEnd--></div><!--QuoteEEnd-->

    The palette changes twice (I think it's designed with LBZ in mind, where you can actually see the water line from above and below). Now, changing twice is not a problem. For two players, you're going to have to change the palette FIVE times.

    I mean, I'd certainly like to see someone do it, but it's certainly not going to be easy.
     
  7. Hayate

    Hayate

    Tech Member
    <!--quoteo(post=464714:date=Jun 8 2010, 02:22 PM:name=DigitalDuck)--><div class='quotetop'>QUOTE (DigitalDuck @ Jun 8 2010, 02:22 PM) <a href="index.php?act=findpost&pid=464714">[​IMG]</a></div><div class='quotemain'><!--quotec-->(I think it's designed with LBZ in mind, where you can actually see the water line from above and below)<!--QuoteEnd--></div><!--QuoteEEnd-->

    The water surface in LBZ and HCZ is done by dynamic art on the background tiles, very similarly to the MHZ parallax. That doesn't require palette changes.

    The thing is that the CNZ water palette changing is a very subtle effect and you wouldn't notice it unless you were looking for it. Since it's not very important, I think SEGA just put it in there to show off. In which case changing the palette an arbitrary number of times should not be difficult. The way I see it is: just set the HBlank interrupt register to the difference between the current line and the line you next want to change the palette on, and have some kind of routine counter to keep track of where you are on the screen.
     
  8. <!--quoteo(post=464700:date=Jun 8 2010, 08:05 AM:name=Hayate)--><div class='quotetop'>QUOTE (Hayate @ Jun 8 2010, 08:05 AM) <a href="index.php?act=findpost&pid=464700">[​IMG]</a></div><div class='quotemain'><!--quotec--><!--quoteo(post=464601:date=Jun 8 2010, 04:44 AM:name=FraGag)--><div class='quotetop'>QUOTE (FraGag @ Jun 8 2010, 04:44 AM) <a href="index.php?act=findpost&pid=464601">[​IMG]</a></div><div class='quotemain'><!--quotec--><!--quoteo(post=464393:date=Jun 7 2010, 04:45 PM:name=E-122-Psi)--><div class='quotetop'>QUOTE (E-122-Psi @ Jun 7 2010, 04:45 PM) <a href="index.php?act=findpost&pid=464393">[​IMG]</a></div><div class='quotemain'><!--quotec-->Just a thought, I know the split screen mode works differently from Sonic 2 but could it be in any way utilized for co-op mode?<!--QuoteEnd--></div><!--QuoteEEnd-->
    Levels need to be designed specifically to be used in split-screen, because you need to work with art in 8x16 tiles instead of 8x8 tiles; if you don't do that, they won't render correctly. The levels in Sonic 3 & Knuckles probably weren't designed with that restriction (it is a restriction) in mind, so you'd have to make new levels from scratch.
    <!--QuoteEnd--></div><!--QuoteEEnd-->

    That applies only to Sonic 2. Sonic 3 doesn't use interlace mode for its competition mode... which is why it doesn't look like shit on an emulator (unlike Sonic 2).
    <!--QuoteEnd--></div><!--QuoteEEnd-->
    Using Sonic 3's system would mean you'd have to make a copy of the art at half the size manually. Just scaling it down automatically will probably look horrible, and you have objects to consider as well. Furthermore, level events would have to be reprogrammed to wait for the second player to catch up where the camera locks or something like that. IMO it would be too much work.
     
  9. DigitalDuck

    DigitalDuck

    Arriving four years late. Member
    5,109
    253
    63
    Lincs, UK
    TurBoa, S1RL
    <!--quoteo(post=464868:date=Jun 8 2010, 10:41 PM:name=FraGag)--><div class='quotetop'>QUOTE (FraGag @ Jun 8 2010, 10:41 PM) <a href="index.php?act=findpost&pid=464868">[​IMG]</a></div><div class='quotemain'><!--quotec-->Using Sonic 3's system would mean you'd have to make a copy of the art at half the size manually. Just scaling it down automatically will probably look horrible, and you have objects to consider as well. Furthermore, level events would have to be reprogrammed to wait for the second player to catch up where the camera locks or something like that. IMO it would be too much work.<!--QuoteEnd--></div><!--QuoteEEnd-->

    While the act switch mid-level in AIZ and ICZ would be difficult to do, I see no reason why bosses couldn't just be replaced with a signpost in two-player, and nearly all cutscenes are completely unneeded so could be completely removed. The only cutscenes that are necessary/need to be changed:

    - Knuckles cutscene in HCZ2. Simply remove the bridge, and force all players to the bottom path.
    - Collapsing level in MGZ2. Since it's near the end of the level anyway, you could probably just move the end signpost to where Robotnik normally pops up for the final time before the boss.
    - Eggmobile cutscene in LBZ2. The signpost would be placed at the first boss location, so this can also easily be avoided.
    - Knuckles cutscene in MHZ2. Simply remove the wall, and force all players to the bottom path.
    - Collapsing level in FBZ2. The signpost would be placed at the Barrier Robotnik location, so this can also easily be avoided.
    - Rising sand in SZ2. I have no fucking idea how you'd get around that one.
    - Drillbot cutscenes in LRZ1. Just remove the Drillbot and the ground it digs into.
    - HPZ isn't really a level.
    - Rehash bosses in SSZ. Just make sure the teleporters are already there.
    - Knuckles can easily complete DEZ minus the miniboss, so the only problem is the gravity shifting; I think it'd be better if they only affected the character that pressed it, although that would seem weird.

    Obviously, these changes would only be made in two-player mode. It looks like it only requires a few bytes per point to implement (a check plus a removal), but the question is whether the two-player mode itself can be implemented easily.
     
  10. E-122-Psi

    E-122-Psi

    Member
    2,206
    422
    63
    <!--quoteo(post=464119:date=Jun 6 2010, 10:56 PM:name=SonarDragon)--><div class='quotetop'>QUOTE (SonarDragon @ Jun 6 2010, 10:56 PM) <a href="index.php?act=findpost&pid=464119">[​IMG]</a></div><div class='quotemain'><!--quotec--><!--quoteo(post=464075:date=Jun 6 2010, 07:23 PM:name=E-122-Psi)--><div class='quotetop'>QUOTE (E-122-Psi @ Jun 6 2010, 07:23 PM) <a href="index.php?act=findpost&pid=464075">[​IMG]</a></div><div class='quotemain'><!--quotec--><!--quoteo(post=464030:date=Jun 6 2010, 05:01 PM:name=SonarDragon)--><div class='quotetop'>QUOTE (SonarDragon @ Jun 6 2010, 05:01 PM) <a href="index.php?act=findpost&pid=464030">[​IMG]</a></div><div class='quotemain'><!--quotec--><!--quoteo(post=463809:date=Jun 5 2010, 08:23 PM:name=E-122-Psi)--><div class='quotetop'>QUOTE (E-122-Psi @ Jun 5 2010, 08:23 PM) <a href="index.php?act=findpost&pid=463809">[​IMG]</a></div><div class='quotemain'><!--quotec-->Fixed leg position. Got a little engrossed and touched up your walk cycle too (as well as rotating it so you have one less 'Sonic Stunt Double' too worry about):

    [​IMG]<!--QuoteEnd--></div><!--QuoteEEnd-->
    I wasn't too fond the shines and stuff, so I screwed with it *the first one*
    Fell free to ignore me though, it sucks.
    [​IMG]
    <!--QuoteEnd--></div><!--QuoteEEnd-->

    Actually I think that looks better, the only problem is you edited the earlier sprite with the 'wonky legs' (probably easy to edit though).
    <!--QuoteEnd--></div><!--QuoteEEnd-->
    Could you fix it? I'm kinda lazy...
    <!--QuoteEnd--></div><!--QuoteEEnd-->

    Done, plus some new dash sprites:

    [​IMG]

    I toned down the shine slightly where I thought it was overdone. Hope you don't mind.
     
  11. Willie

    Willie

    Each day the world turns Laugh 'til it all burns Member
    Looks great.
     
  12. SonarDragon

    SonarDragon

    Member
    223
    0
    0
    <!--quoteo(post=464905:date=Jun 8 2010, 07:16 PM:name=E-122-Psi)--><div class='quotetop'>QUOTE (E-122-Psi @ Jun 8 2010, 07:16 PM) <a href="index.php?act=findpost&pid=464905">[​IMG]</a></div><div class='quotemain'><!--quotec-->[​IMG]<!--QuoteEnd--></div><!--QuoteEEnd-->
    Looks good, but her dress lacks the third shade on the walking animations.
     
  13. Hayate

    Hayate

    Tech Member
    <!--quoteo(post=464868:date=Jun 8 2010, 10:41 PM:name=FraGag)--><div class='quotetop'>QUOTE (FraGag @ Jun 8 2010, 10:41 PM) <a href="index.php?act=findpost&pid=464868">[​IMG]</a></div><div class='quotemain'><!--quotec-->Using Sonic 3's system would mean you'd have to make a copy of the art at half the size manually. Just scaling it down automatically will probably look horrible, and you have objects to consider as well.<!--QuoteEnd--></div><!--QuoteEEnd-->

    Scaling down in software would be no worse than using interlace mode.

    If it wasn't for Amy's jump height and Hyper Sonic, I'd be tempted to just do it at full size and cope with the halved screen height.

    <!--quoteo--><div class='quotetop'>QUOTE </div><div class='quotemain'><!--quotec-->Furthermore, level events would have to be reprogrammed to wait for the second player to catch up where the camera locks or something like that. IMO it would be too much work.<!--QuoteEnd--></div><!--QuoteEEnd-->

    Or you could just move the 1p camera addresses somewhere else, and write the minimum of both to what everything checks, so it always looks at whoever's coordinates are behind.

    <!--quoteo--><div class='quotetop'>QUOTE </div><div class='quotemain'><!--quotec-->List of stuff which "needs" changing to make two-player mode work<!--QuoteEnd--></div><!--QuoteEEnd-->

    Actually, none of this is really necessary.
    - There are no palette conflicts because the palette can be changed on hblank. This rules out any problems supposedly caused by Knuckles cutscenes.
    - Assuming you have the extra $2000 bytes of VRAM space necessary for two-player levels ($1000 bytes per plane per player), the plane mappings are already independent.
    - Anything else not covered by the above is only caused by lack of VRAM space. So really, once you can find a way somehow to free up enough VRAM space to accommodate both players and all art that could possibly be onscreen at once, there are no other problems.

    <!--quoteo(post=464905:date=Jun 9 2010, 12:16 AM:name=E-122-Psi)--><div class='quotetop'>QUOTE (E-122-Psi @ Jun 9 2010, 12:16 AM) <a href="index.php?act=findpost&pid=464905">[​IMG]</a></div><div class='quotemain'><!--quotec-->Done, plus some new dash sprites:

    [​IMG]

    I toned down the shine slightly where I thought it was overdone. Hope you don't mind.<!--QuoteEnd--></div><!--QuoteEEnd-->

    I'll put these in next time I go work on S3Cz. They'll make my life a lot happier. :v:
     
  14. DigitalDuck

    DigitalDuck

    Arriving four years late. Member
    5,109
    253
    63
    Lincs, UK
    TurBoa, S1RL
    <!--quoteo(post=465274:date=Jun 10 2010, 12:29 AM:name=Hayate)--><div class='quotetop'>QUOTE (Hayate @ Jun 10 2010, 12:29 AM) <a href="index.php?act=findpost&pid=465274">[​IMG]</a></div><div class='quotemain'><!--quotec-->Actually, none of this is really necessary.
    - There are no palette conflicts because the palette can be changed on hblank. This rules out any problems supposedly caused by Knuckles cutscenes.<!--QuoteEnd--></div><!--QuoteEEnd-->

    My list had nothing to do with palettes. If (for example) you have player 1, as Sonic, arrive at the HCZ2 scene with Knuckles, the Knuckles cutscene starts. If player 2, as Knuckles, then arrives, you not only have the bizarreness of having two Knuckles, but Knuckles can also smash through the wall, allowing Sonic to then walk past both Knuckles and Knuckles, before Sonic's screen lock stops Sonic, but not Knuckles.

    Take another example. The collapsing ground in MGZ2. The first player arrives, and either has to wait for the second player before s/he can continue, or goes ahead, and the ground collapses before player 2 even gets there, meaning player 2 cannot finish.

    My list of things to change were to do with things that cannot possibly work with two players simultaneously. Fixing palettes will do fuck all about these things.
     
  15. Hayate

    Hayate

    Tech Member
    I see what you're getting at there...

    Well, it's not like this hack is really going to have two-player anyway.
     
  16. DigitalDuck

    DigitalDuck

    Arriving four years late. Member
    5,109
    253
    63
    Lincs, UK
    TurBoa, S1RL
    <!--quoteo(post=465286:date=Jun 10 2010, 12:58 AM:name=Hayate)--><div class='quotetop'>QUOTE (Hayate @ Jun 10 2010, 12:58 AM) <a href="index.php?act=findpost&pid=465286">[​IMG]</a></div><div class='quotemain'><!--quotec-->Well, it's not like this hack is really going to have two-player anyway.<!--QuoteEnd--></div><!--QuoteEEnd-->

    It's something worth thinking about, though. I mean, you could always release a separate hack featuring two-player only...
     
  17. Hayate

    Hayate

    Tech Member
    <!--quoteo(post=465287:date=Jun 10 2010, 01:00 AM:name=DigitalDuck)--><div class='quotetop'>QUOTE (DigitalDuck @ Jun 10 2010, 01:00 AM) <a href="index.php?act=findpost&pid=465287">[​IMG]</a></div><div class='quotemain'><!--quotec--><!--quoteo(post=465286:date=Jun 10 2010, 12:58 AM:name=Hayate)--><div class='quotetop'>QUOTE (Hayate @ Jun 10 2010, 12:58 AM) <a href="index.php?act=findpost&pid=465286">[​IMG]</a></div><div class='quotemain'><!--quotec-->Well, it's not like this hack is really going to have two-player anyway.<!--QuoteEnd--></div><!--QuoteEEnd-->

    It's something worth thinking about, though. I mean, you could always release a separate hack featuring two-player only...
    <!--QuoteEnd--></div><!--QuoteEEnd-->

    I actually wanted to do this to appease the people who would be like OMG YOU DELETED COMPETITION MODE D:

    But it's hardly a priority so I probably won't get started on it for 5+ years
     
  18. Hayate

    Hayate

    Tech Member
    Okay, the new walking and running sprites are now in (at least for half the directions, I couldn't be bothered doing rotated mappings, I should probably code a program to do that), and they're looking great.

    I've also fixed the start locations problems. Does anyone know what word_1E3C5C is used for? I did a quick look around and found it's only used (indirectly) by the prison capsules. This label is halfway through Sonic's start locations array, which I've now duplicated and moved elsewhere, so if it isn't needed I'd like to remove the original array.
     
  19. <!--quoteo(post=465499:date=Jun 10 2010, 09:13 PM:name=Hayate)--><div class='quotetop'>QUOTE (Hayate @ Jun 10 2010, 09:13 PM) <a href="index.php?act=findpost&pid=465499">[​IMG]</a></div><div class='quotemain'><!--quotec-->I've also fixed the start locations problems. Does anyone know what word_1E3C5C is used for? I did a quick look around and found it's only used (indirectly) by the prison capsules. This label is halfway through Sonic's start locations array, which I've now duplicated and moved elsewhere, so if it isn't needed I'd like to remove the original array.<!--QuoteEnd--></div><!--QuoteEEnd-->
    It's the start location for Sandopolis Zone Act 2. I dunno why it would be referenced separately but it seems safe to replace it with NewStartLocationsArray+$44.
     
  20. Hayate

    Hayate

    Tech Member
    Hmm, yes, on closer inspection it does only read two words. I may as well replace them with literals!
     
Thread Status:
Not open for further replies.