Should I Scrap this?

Discussion in 'Showroom Archive' started by Pacca, Sep 23, 2014.

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

    Pacca Having an online identity crisis since 2019 Member

    Joined:
    Jul 5, 2014
    Messages:
    1,175
    Location:
    Limbo
    So I made a sonic 2 hack, and have run up into a shit ton of problems. At this point, I'm planning on either (a) salvaging what I can and continuing on, (b) Taking the existing level art, layouts, etc. and starting over with fresh code, or © Abandoning the project entirely. Some things to note:

    Sonic was orignally, meant to be replaced by knuckles, but due to issues with the player system and the sound driver, he is removed, leaving tails as the only playable character.

    Merry Meadow is a broken emerald hill zone, it isn't worth playing.

    Death Egg and Lost fortress are the most completed zones, followed by Spring Carnival

    All the effort in spring carnivals' layout went to act 2

    The special stages send you to a buggy Hidden Palace Zone. The giant emerald object sends you to the special stage, the only one placed in the level, however, is right at the begining, before the pipe with the shield monitor next to it.

    Download
     
    Last edited by a moderator: Sep 23, 2014
  2. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Were you using the Git disasm? If so, there's your problem. It's easy to port most of what you have to the Xenowhirl disasm.

    If you were already using the Xenowhirl disasm, disregard the above statement.

    Also, if I may add, it is likely best to just choose 1 project and stick with it. Hell, I've put 2 or 3 of my future projects on the backburner in order to get S2; TRoC progressing smoothly. This is especially true if you're a one-man show like me; that is to say, you're working alone on your hack. If you have a team, it's more possible to work on multiple projects at a time, but usually, sticking to 1 project is the best idea.
     
  3. Pacca

    Pacca Having an online identity crisis since 2019 Member

    Joined:
    Jul 5, 2014
    Messages:
    1,175
    Location:
    Limbo
    I'm using the github disasm because the Only copy of the Xenowhirl disasm I could find was just a single ASM file, with nothing else :/

    As for working on multiple projects, I am working on making version 1.0 of Robotnik Returns; perhaps I should finish that first.

    I'm afraid the existing gltiches will force me to restart with fresh code a some point, though.
     
  4. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Well, you have to split a clean S2 ROM with the Xenowhirl disasm before you can do any work with it. =P

    However, since I'm feelin' generous today, here ya go. A full Xenowhirl disasm complete with files. I normally wouldn't give out trivial things like this, but like I said, I'm in a generous mood today. =)
     
    Last edited by a moderator: Sep 23, 2014
  5. Crash

    Crash Well-Known Member Member

    Joined:
    Jul 15, 2010
    Messages:
    302
    Location:
    Australia
    Hey, Thomas, just because you don't understand how to use newer disassemblies doesn't mean that you should try to dissuade others from using them.
     
  6. ElectricSparx

    ElectricSparx Active Member Member

    Joined:
    Sep 14, 2014
    Messages:
    42
    Location:
    United States
    I would try downloading, but it says "too many people have viewed or downloaded this file recently."
     
  7. Hitaxas

    Hitaxas Retro 80's themed Paladins Twich streamer Member

    Joined:
    Aug 13, 2007
    Messages:
    167
    I can sort of agree with him though, the git disassembly is more complicated than it needs to be and I find the xenowhirl version to be much easier to do everything with. If somebody asked me where to start hacking Sonic 2, that is what I'd refer them to.

    Not saying that the Git is bad or anything, but the way everything is written in xeno's is so much easier to learn for somebody starting out.
     
  8. Clownacy

    Clownacy Retired Staff lolololo Member

    Joined:
    Aug 15, 2014
    Messages:
    1,016
    It is? When I stopped just copying from the SCHG and calling it a day, I decided to start working from the Community disasm. Better commented, better labelled (if you ignore the temp labels...), it's more user friendly (no need to split, equates are applied, all of the above).


    Having been shoehorning guides into them for a while, the older disasms left any impression but that they were easier to use. What's easy to use about what is essentially an earlier version of the Community disasm, only missing a large chunk of its commenting, and containing several errors (a hardcoded address, incorrect labels)?


    And that's just the thing: how is switching to a vague and unfriendly-er version of your original code base going to help? You could remake your hack, since it's clearly your changes that are at error, not the disasm; or you could try fixing your code. For future's sake, trying using an SVN tool (TortoiseSVN was recommended before) to track your changes, with its logging feature... in fact, that could help you salvage your disasm: You could compare your s2.asm to an unmodified one using the tool, and see if you can recognise any buggy changes you'd made previously.
     
  9. Pacca

    Pacca Having an online identity crisis since 2019 Member

    Joined:
    Jul 5, 2014
    Messages:
    1,175
    Location:
    Limbo
    I think I might have to switch to the Xenowhirl disasm. ALthough I can see everyones' point on how the Github version is an improved Xenowhirl disasm, it seems to break the flamewing drivers' SFX pointers, which I simply can't live with (the reason knuckels was removed was solely because his SFX were ruined).
     
  10. Clownacy

    Clownacy Retired Staff lolololo Member

    Joined:
    Aug 15, 2014
    Messages:
    1,016
    Ugh... what? Are you sure you don't need a custom p2bin or something? How can Git break a sound driver?
     
  11. SuperEgg

    SuperEgg I'm a guy that knows that you know that I know Member

    Joined:
    Oct 17, 2009
    Messages:
    Location:
    THE BEST GOD DAMN STATE OF TEXAS
    *me whistles away while using the Esrael's S2rev2 asm68k disasm with modified S2B driver.


    "I have none of there problems." SuperEgg started to say, "in fact, I think all you people arguing which Xenowhirl disasm to use is just plain silly. Lemme grab some party hats and let's go play pin the tail on the goat."


    "That isn't a real game you say? Wanna know what else isn't real?"


    The issues you're having plopping in Flamewing's driver into Sonic 2. If there are issues, it is purely on your end. The build process doesn't just stop and say "Is that the Flamewing driver? Oh fuck, it is. Welp, guess it's time to lay down and die."


    And as far as restarting your hack, yes, please do. It is a mess, there is no cohesion or any sense of direction. Now, before you even consider picking up another disasm, I want you to stop, grab a sheet of paper, and write down all those hack ideas that you have. Study them and see what works, and what doesn't. Plan out level layouts and art, music; i.e. Game Design. I literally can not play your hack all the way through because it is aimless. Besides the overall quality, it seems like a bump in the road. It isn't interesting, or for that matter entertaining. You know, it is bad when a hack doesn't have one thing for me to praise, but not one thing to rage about. A shitty hack is better than a boring hack, at least it invokes some kind of response.


    Anyways, like I said, plan it out. Legitimately plan it out. If you sit there and just implement ideas without even considering how it would fit, your hack will be shit. Good luck.
     
  12. Pacca

    Pacca Having an online identity crisis since 2019 Member

    Joined:
    Jul 5, 2014
    Messages:
    1,175
    Location:
    Limbo
    I've heard of certain Disassemblies messing with the SFX IDs of the Falmewing driver before. I've looked it up. The driver itself works beatifully; It just plays the S3k Mushroom sound every time you jump and cuts out the music every time you spindash (which I've tried and failed to correct manually)

    DId you play all the way through Death Egg zone? Most of the work went into this one zone, and I put a lot of thought into the layout for act 2.
     
  13. Clownacy

    Clownacy Retired Staff lolololo Member

    Joined:
    Aug 15, 2014
    Messages:
    1,016
    Where've you heard that? Either way, Xenowhirl is far from the best option, especially in the context of Sound IDs: Xeno's are mostly un-redefinable; they're hardcoded, meaning that you'd have to toy around either with the driver, or change a whole bunch of 'move.w $XX,d0'. You can't just change one equate variable, and have them all shift. As far as disasms that negatively affect sound IDs go, that's the most I've heard of it.

    Now, the error you say you're having is either an amazing screw up of the driver's code, or your Sound ID input code failing. The thing is, the relay code is so basic that an error should be obvious if you know what you're doing. The normal function is that a (hopefully valid) sound ID is moved to d0, then you branch to some code where the Z80 is stopped, the data within d0 is put in a certain area of Z80 RAM, and the Z80 is started.

    The things that can go wrong there are not particularly varied: The most likely one is that the data going into d0 could be rubbish, in that case, just correct your equates, and make sure the jump's isn't MHZ; if the song restarts when jumping, then that must mean a new sound was queued to play at that moment, so it could be that MHZ is constantly being played, making it a problem with your constants, and that's not something the Git disasm is directly responsible for, that just means you broke its constants. What I'm saying is that the fact that the jump sound plays MHZ probably means that the code relating to jumping is using MHZ's sound ID.
     
    Last edited by a moderator: Sep 23, 2014
  14. SuperEgg

    SuperEgg I'm a guy that knows that you know that I know Member

    Joined:
    Oct 17, 2009
    Messages:
    Location:
    THE BEST GOD DAMN STATE OF TEXAS
    No, and I shouldn't have to. If your hack can not capture my attention within the first 15 seconds, then you've lost my attention. I've already made a similar post a year or so back when somebody told me the same thing. That's not how things work. Sure, you did all this work on one level, congrats. I'm not knocking your hard work, but at the same token, if that is what you want to showcase, you best damn make that obvious. You can't just release a hack and assume people are going to ignore all the boring bits to get to the one level you worked the hardest on, especially that far into the game.

    This statement goes with anything, if your product fails to capture the audience within 10 seconds, then you're wasting your time and the audience's time.

    If it is boring to me after the first zone, why bother carrying on? I played through the first zone, and basically said "fuck it" and promptly close outta Regen to go back and convert a country song to SMPS. Yes, your hack is even more boring than manually writing music in SMPS. Like I said, not doubting your hard work, but if you want to showcase it, showcase it, hell, change the level order. But don't expect anybody to play through the whole hack just to find what you changed.

    Once again, this harkens back to my "unorganized" point I made earlier. You have lots of great idea, but none of them stick when held to the fire. Plan, plan, plan. I can not stress this enough.

    edit: Jut reread your first post, saw that you did mention said levels. Still doesn't change the fact that you could've alleviated the problem by having the level order fixed as so.
     
    Last edited by a moderator: Sep 23, 2014
  15. Pacca

    Pacca Having an online identity crisis since 2019 Member

    Joined:
    Jul 5, 2014
    Messages:
    1,175
    Location:
    Limbo
    It's the pinacle of incomplete; the first level is not even started. You shouldn't expect the attention grabbing qualities of a complete hack in this. And you cannot tell me there is nothing to rage about in Lost fortress act 2, I made that hard as balls :p

    Where've you heard that? Either way, Xenowhirl is far from the best option, especially in the context of Sound IDs: Xeno's are mostly un-redefinable; they're hardcoded, meaning that you'd have to toy around either with the driver, or change a whole bunch of 'move.w $XX,d0'. You can't just change one equate variable, and have them all shift. As far as disasms that negatively affect sound IDs go, that's the most I've heard of it.

    Now, the error you say you're having is either an amazing screw up of the driver's code, or your Sound ID input code failing. The thing is, the relay code is so basic that an error should be obvious if you know what you're doing. The normal function is that a (hopefully valid) sound ID is moved to d0, then you branch to some code where the Z80 is stopped, the data within d0 is put in a certain area of Z80 RAM, and the Z80 is started.

    The things that can go wrong there are not particularly varied: The most likely one is that the data going into d0 could be rubbish, in that case, just correct your equates, and make sure the jump's isn't MHZ; if the song restarts when jumping, then that must mean a new sound was queued to play at that moment, so it could be that MHZ is constantly being played, making it a problem with your constants, and that's not something the Git disasm is directly responsible for, that just means you broke its constants. What I'm saying is that the fact that the jump sound plays MHZ probably means that the code relating to jumping is using MHZ's sound ID.




    I've done most of these things. The code referencing the sounds are unchanged (and universally seem to be broken in odd places, like the fire sound effect Silver sonic makes in death egg), and changing the equates manually usually results in either (a) nothing or (b) switching to anther seemingly random sound effect. I can't find any logic in it at all, especially seeing as some of the sound effects (including all of tails' sounds) are perfectly normal. And from what I can tell, the sound driver is completely normal, I followed the guide to the letter.
     
  16. Spanner

    Spanner The Tool Member

    Joined:
    Aug 9, 2007
    Messages:
    2,570
    What's easier to use? Because the current community disassemblies are mostly a mess. I tried the Sonic 2 disassembly, but the way RAM was laid out was just ridiculous. You are just confusing people with all that, and not mentioning what the actual address would be for assistance. What some people are trying to do is turn away normal people from experimenting with things and create their own hack, and instead leaving it to the actual people with technical capabilities, the ones with the green labels that know everything about things.
    It's not as bad as the Sonic 1 disassembly however, which needs a complete rewrite from scratch. But I don't blame anyone but Hivebrain for that mess.

    The thing is, if all the current disassemblies shared a similar structure, layout, labeling scheme, etc, you'd actually be doing a great thing. But unfortunately because people differ on what should be which, it will never happen.
     
    Last edited by a moderator: Sep 23, 2014
  17. SuperEgg

    SuperEgg I'm a guy that knows that you know that I know Member

    Joined:
    Oct 17, 2009
    Messages:
    Location:
    THE BEST GOD DAMN STATE OF TEXAS
    Lost Fortress wasn't that hard. Dickish, sure, but hard? No. On that note, I made a slight edit on that point, but fact still stands. You could've edited the level order, a task that would've garnered you a grand total of ten extra seconds.

    Nevertheless, my opinion is still planted firmly on the ground. This hack is unorganized and a mess overall. Restarting would be best, but only after you've properly planned out this hack and put thought into making it. You have potential, sure, but not when you have your ideas all over the place.
     
  18. Clownacy

    Clownacy Retired Staff lolololo Member

    Joined:
    Aug 15, 2014
    Messages:
    1,016
    Oh, so there's S2's Git overhaul. What's so bad about it? I get that fixed addresses no longer exist, but in the hacking environment, unless you're porting from a disassembly that still uses those (and in a similar layout to boot), why have them? Once you've equated every RAM address, you can switch to the RAM reservation system, and can manage RAM in bulk. You're hardly losing anything since the equates mask the addresses anyhow.

    Fixed RAM is comparable to ditching labels, and using hardcoded ROM addresses, only loc_XXXXXX preserved the actual address in some form. But it's nothing some 'historical addresses' comments wouldn't fix. Confusing, though...? What? I have a harder time figuring out the size of Sonic 1's RAM variables, at least Sonic 2's explicitly defines them. What's so hard to understand about the system? It's relative, so what? And the excuse that only Techies can understand it is just that: I figured it out before I even became a Trialist, and if you think I came in blasting Techie skills... you haven't seen my first posts (cmpi: compare immediately, *rolls eyes*). A heads up might have been nice, but one error later ("Hey, adding $20 to that number made the RAM overflow by $20 bytes", "Oh, so that's what it does."), and I have it figured out.
     
  19. Spanner

    Spanner The Tool Member

    Joined:
    Aug 9, 2007
    Messages:
    2,570
    Not everyone is incapable of learning stuff, I'm just stating that not everyone is technically minded at start, at least you bothered to come in and learn a lot of things being able to contribute stuff in return.
     
  20. LooneyDude

    LooneyDude Back after a long absence! Member

    Joined:
    Feb 1, 2014
    Messages:
    277
    Location:
    EVERYWHERE
    I can't even try this out for myself because of Google Drive being stupid.
     
Thread Status:
Not open for further replies.