ThomasSpeedrunner Help Thread

Discussion in 'Discussion and Q&A Archive' started by ThomasThePencil, Jan 29, 2013.

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

    nineko I am the Holy Cat Member

    Joined:
    Mar 24, 2008
    Messages:
    1,902
    Location:
    italy
    In before Sonic Classic Heroes[​IMG]
     
  2. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    ...Ah. Wow. I completely forgot about that.

    Anyway, now I want to make Tails use his 'Stop' animation when falling from a spring instead of his 'Walk' animation. I, personally, think it fits slightly better. With the 'Walk' animation, you feel like you never activated the spring to begin with. But with the 'Stop' animation, you get a slightly better understanding of the fact that your character is falling. What should I do?
     
  3. redhotsonic

    redhotsonic Also known as RHS Member

    Joined:
    Aug 10, 2007
    Messages:
    2,969
    Location:
    England
    In before Sonic Classic Heroes[​IMG]

     
    Don't forget my hack; Sonic 2 Recreation:

    [​IMG]
     
    Last edited by a moderator: Jan 31, 2013
  4. 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
    In before Sonic Classic Heroes[​IMG]


    Don't forget my hack; Sonic 2 Recreation:

    [​IMG]
    I'm still waiting to play it =P
     
  5. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    I was not hoping for this to turn into a completely different discussion. Anyway, since it already has, I might as well reroute the subject to something important.


    First up, should I port all art-related files from the S3K disassembly?

    Secondly, how can I add a new move (Tails' flying, in this case) in Sonic 2?

    Lastly, does anyone know how to port the S1 sound driver to Sonic 2? (The closest thing I found was an Xenowhirl-based guide that doesn't work with the Hg disassembly)

    All code used as part of your answers must be compatible with the Hg disassembly.
     
  6. MainMemory

    MainMemory Well-Known Member Member

    Joined:
    Mar 29, 2011
    Messages:
    922
    1. For Knuckles? Yes.2. I can't answer, because I couldn't have done it myself without access to secret tech member knowledge.

    3. Why?
     
    Last edited by a moderator: Feb 1, 2013
  7. nineko

    nineko I am the Holy Cat Member

    Joined:
    Mar 24, 2008
    Messages:
    1,902
    Location:
    italy
    To make the game lag, obviously.
     
  8. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    *sigh* In case nobody bothered to even try to interpret that last one, here's the interpretation:

    I WANNA ADD SEPARATE SONGS FOR EACH ACT.

    Seriously. And they're gonna be original compositions, too.

    Also...


    'Secret tech member knowledge?' WHAT IS THIS?
     
    Last edited by a moderator: Feb 1, 2013
  9. MainMemory

    MainMemory Well-Known Member Member

    Joined:
    Mar 29, 2011
    Messages:
    922
    It is exactly what it sounds like: there is a thread in Sonic Retro's Tech Member Lounge where you can find code for Tails flying in Sonic 2 already ported from S3K.

    And um, what exactly is stopping you from adding new songs with the S2 driver? Tool programmers pretending Sonic 1 is the only game people hack?
     
  10. nineko

    nineko I am the Holy Cat Member

    Joined:
    Mar 24, 2008
    Messages:
    1,902
    Location:
    italy
    For the record, http://forums.sonicretro.org/index.php?showtopic=9625 explains how to use different songs in different acts in Sonic 2.


    MainMemory: as a "tool programmer" I can tell you that's not the reason, at least in my case; I targeted the Sonic 1 format because it's the easiest one to work with. I promised to myself I was going to add support for Sonic 2 and 3 eventually, but I also knew that people could use Erik JS's Music Pointer Fixer, so I never bothered in the end. These days there are even more options than before, thanks to Flamewing and ValleyBell.


    There are better drivers and better tools nowadays, let's stop using the Sonic 1 driver once and for all, the 68k will thank you!


    edit: I'm also awesome because I got post #1337 and I didn't even notice it. It would be even better if this wasn't topic #1335, but one can't have everything.
     
    Last edited by a moderator: Feb 1, 2013
  11. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    There are two problems here:

    1.)

    Can't access the Tech Member Lounge; hell, I haven't even been validated yet over on Sonic Retro.

    2.)

    The forum mentioned here is a link to a post dating back to November 2007. Here's my own, updated method of accomplishing the same thing:

    How To Play An Alternate Song on Act 2 in Sonic 2

    Today, I'll be showing you how to add an "Act 2" music playlist in Sonic 2 with barely any work needed at all!

    First, go to Level_GetBgm, which should look like this:





    Level_GetBgm:

        tst.w    (Demo_mode_flag).w

        bmi.s    +

        moveq    #0,d0

        move.b    (Current_Zone).w,d0

        lea    MusicList(pc),a1

        tst.w    (Two_player_mode).w

        beq.s    Level_PlayBgm

        lea    MusicList2(pc),a1

     




     

    And change it to this:



     

    Level_GetBgm:

        tst.w    (Demo_mode_flag).w

        bmi.s    +

        moveq    #0,d0

        move.b    (Current_Zone).w,d0

        tst.b   (Current_Act).w         ; are we on act 2?

        bne.s   Level_GetBgm2           ; if we are, branch

        lea    MusicList(pc),a1

        tst.w    (Two_player_mode).w

        beq.s    Level_PlayBgm

        lea    MusicList2(pc),a1

     



    Then, make a new label called Level_GetBgm2, and put something similar under it so it looks like this:


    Code:
    
    
    Level_GetBgm2:
    
        tst.w    (Demo_mode_flag).w
    
        bmi.s    +
    
        moveq    #0,d0
    
        move.b    (Current_Zone).w,d0
    
        lea    MusicList3(pc),a1
    
        tst.w    (Two_player_mode).w
    
        beq.s    Level_PlayBgm
    
        lea    MusicList4(pc),a1
    
     
    
    
    
    
     

    Now to create MusicList3 and MusicList4. Go to MusicList2 and put this below the "even" command:



     


    ; ---------------------------------------------------------------------------

    ; 1P Music Playlist for Act 2

    ; ---------------------------------------------------------------------------

    MusicList3: zoneOrderedTable 1,1

        zoneTableEntry.b MusID_EHZ2    ; 0 ; EHZ

        zoneTableEntry.b MusID_EHZ     ; 1

        zoneTableEntry.b MusID_MTZ    ; 2

        zoneTableEntry.b MusID_OOZ    ; 3

        zoneTableEntry.b MusID_MTZ2    ; 4 ; MTZ1,2

        zoneTableEntry.b MusID_MTZ    ; 5 ; MTZ3 (This one does nothing, as you can simply change the second MTZ entry in the first MusicList to MusID_MTZ3)

        zoneTableEntry.b MusID_WFZ    ; 6 ; WFZ (This one does nothing)

        zoneTableEntry.b MusID_HTZ2    ; 7 ; HTZ

        zoneTableEntry.b MusID_HPZ    ; 8

        zoneTableEntry.b MusID_SCZ    ; 9

        zoneTableEntry.b MusID_OOZ2    ; 10 ; OOZ

        zoneTableEntry.b MusID_MCZ2    ; 11 ; MCZ

        zoneTableEntry.b MusID_CNZ2    ; 12 ; CNZ

        zoneTableEntry.b MusID_CPZ2    ; 13 ; CPZ

        zoneTableEntry.b MusID_DEZ    ; 14 ; DEZ (This one does nothing)

        zoneTableEntry.b MusID_ARZ2    ; 15 ; ARZ

        zoneTableEntry.b MusID_SCZ    ; 16 ; SCZ (This one does nothing)

        zoneTableEnd

            even

     




    OPTIONAL: You can change the "MusicList4" in Level_GetBgm2 back to "MusicList2" if you want, but otherwise, paste the following below the "even" command in MusicList3:





    ; ---------------------------------------------------------------------------

    ; 2P Music Playlist for Act 2

    ; ---------------------------------------------------------------------------

    MusicList4: zoneOrderedTable 1,1

        zoneTableEntry.b MusID_EHZ2_2P    ; 0  ; EHZ 2P

        zoneTableEntry.b MusID_EHZ    ; 1

        zoneTableEntry.b MusID_MTZ    ; 2

        zoneTableEntry.b MusID_OOZ    ; 3

        zoneTableEntry.b MusID_MTZ    ; 4

        zoneTableEntry.b MusID_MTZ    ; 5

        zoneTableEntry.b MusID_WFZ    ; 6

        zoneTableEntry.b MusID_HTZ    ; 7

        zoneTableEntry.b MusID_HPZ    ; 8

        zoneTableEntry.b MusID_SCZ    ; 9

        zoneTableEntry.b MusID_OOZ    ; 10

        zoneTableEntry.b MusID_MCZ2_2P    ; 11 ; MCZ 2P

        zoneTableEntry.b MusID_CNZ2_2P    ; 12 ; CNZ 2P

        zoneTableEntry.b MusID_CPZ    ; 13

        zoneTableEntry.b MusID_DEZ    ; 14

        zoneTableEntry.b MusID_ARZ    ; 15

        zoneTableEntry.b MusID_SCZ    ; 16

        zoneTableEnd

        even

     




    Now go find 12 (or 13 if MTZ will have its own music) more songs.

     

    EDIT: Why are the ASM tags being a bunch of jerks today? :/

     

    EDIT 2: Can someone give me a good "placeholder/test" song for EHZ2? I want to test to see if this works.
     
    Last edited by a moderator: Feb 2, 2013
  12. Spanner

    Spanner The Tool Member

    Joined:
    Aug 9, 2007
    Messages:
    2,570
    You'll find that a lot of guides are not catering to the Hg disassembly, this is because people still prefer using the S1 2005/S2 2007 disassemblies rather than the constantly updating Hg versions. If you did some work yourself you could easily adapt the guides to the newer disassemblies, it's not that hard, it's just that "if it ain't broke, don't fix it".
     
  13. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    That would explain why 90% of all Sonic 1 and Sonic 2 Sonic Community Hacking Guide How-To's are for the Hivebrain and Xenowhirl disassemblies, respectively. I could try to upgrade some of the guides if I wanted to, but I'm not very experienced with ASM. However, I do have some basic understanding of it, so I'll try to improve any Sonic 2 guides I can so that they function properly with both the set-in-stone Xenowhirl disassembly and the constantly-updated Hg disassembly.

    So, in my case...

    TO THE SONIC COMMUNITY HACKING GUIDE!
     
    Last edited by a moderator: Feb 2, 2013
  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
    OR.......................

    You could simply use the Xenowhirl disasm. Fuck the HG disasm. Problem solved.
     
  15. MainMemory

    MainMemory Well-Known Member Member

    Joined:
    Mar 29, 2011
    Messages:
    922
    I have yet to see any actual reason to not use the Hg disassembly other than your own personal dislike of macros.
     
  16. 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
    I don't hate macros, I just hate it's use in excess. Beside the point in this case. I suggest him using the Xenowhirl because there are guides to using it.
     
  17. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    FINALLY, SOMEBODY WHO UNDERSTANDS!

    Seriously, everybody thinks that the Xenowhirl disassembly is five times simpler than the Hg disassembly, when in actuality, it is not.

    Besides, as we get closer to replicating the code of Sonic, things start getting more complicated. 'Nuff said.
     
    Last edited by a moderator: Feb 2, 2013
  18. Ayla

    Ayla Sonic Hacking Contest Founder & Commentator Member

    Joined:
    Mar 3, 2008
    Messages:
    256
    Location:
    Portland, OR
    Superegg is absolutely right on this one.  There is more documentation on Xenowhirl since it has been around longer.  Which one to use is nothing more than personal taste, but I personally agree with the suggestion of pointing beginners to Xenowhirl rather than Mercury.

    In other words, I'm glad you find the Mercury disasm easier to use, but don't flip the fuck out when someone suggests one thing over another.  This argument is fucking retarded and it ends right now.
     
  19. 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

    FINALLY, SOMEBODY WHO UNDERSTANDS!

    Seriously, everybody thinks that the Xenowhirl disassembly is five times simpler than the Hg disassembly, when in actuality, it is not.

    Besides, as we get closer to replicating the code of Sonic, things start getting more complicated. 'Nuff said.

    What?  What in God's name are we replicating? Nothing. That doesn't even make sense.  If you mean, we are "modding" or "hacking" the code, that would make sense, but an asston of macros =/= easier. I've been hacking for years, and I still have issue half the time hacking the Xenowhirl Sonic 2 disasm as is. The HG disasm is an abomination of overused macros and stupid temporary labels. Let me ask you this. How is 


    + move.w
    better than


    loc_ballsysoundsubname:
      move.w

    It's not. Certainly not for a beginner hacker. Seeing as how you are just beginning to code, I doubt you even know what I'm talking about, but you will.
     
  20. MainMemory

    MainMemory Well-Known Member Member

    Joined:
    Mar 29, 2011
    Messages:
    922
    Instead of simply avoiding a disassembly because it doesn't have enough documentation, someone could try writing documentation for it, which is exactly what ThomasSpeedrunner is trying to do.
     
    But we've done this argument so many times already and it always ends the same way, so I'm going to stop responding to SuperEgg and wait until someone needs help, since that's what this topic is for.
     
Thread Status:
Not open for further replies.