ThomasSpeedrunner Help Thread

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

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

    Spanner The Tool Member

    Joined:
    Aug 9, 2007
    Messages:
    2,570
    If there's over five pages, perhaps I should split all this into another thread.
     
  2. Ravenfreak

    Ravenfreak Still hacking the 8-bit titles Member

    Joined:
    Feb 10, 2010
    Messages:
    410
    Location:
    O'Fallon, MO

    Not necessarily. Three major differences here:

    1. - The spindash allows for multiple charges, while the Super Peel-Out can only be charged once.
    2. - The spindash shoots Sonic off in a rolling state, while the Super Peel-Out shoots Sonic off in a super-fast running state.
    3. - The spindash's animation is in the Sonic 2 disassembly by default, while the Super Peel-Out does not have any disassembly assigned to it because there are no disassemblies of Sonic CD.
    How do I overcome these problems?

    1. You can still modify the code that allows you to rev up the spindash, that way it can behave exactly like the Super Peel-Out.

    2. You can also modify the code that sets him in his rolling state to his running state.

    3. Finally there are a few sprite sheets of Sonic from Sonic CD that you could grab from various sites and you can rip the few sprites that are used for his Peel-out animation. You don't need a Disassembly of Sonic CD for this at all. (Plus like Super Egg said, there isn't one.) While I know this is an older post I hope this helps a bit. Though I highly suggest that you start small to get a better understanding of how the 16 bit games work, and learn 68k asm. While that will take a while it's really worth it in the long run if you love to hack the genesis games. Plus this way you'll be doing the work instead of someone else doing it. (Sorry if I sound rude, i'm not being mean i'm just telling you to help you in the long run. Plus I think it's more rewarding when you code something by yourself.) I know you want to dream big and make a really awesome huge hack with tons of characters, but if you don't understand any pieces of code used in any of the 3 main Sonic games then you're not ready yet. Start by editing Sonic's and Tails' top speed and go on from there. Plus you also want Tails to fly right? Grab the S3K disassembly, and find his flying code then do your best to port it. But I highly recommend that you wait to try and port his flying code once you learn some 68k asm. Good luck with your hack.
     
  3. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?

    Not necessarily. Three major differences here:

    1. - The spindash allows for multiple charges, while the Super Peel-Out can only be charged once.
    2. - The spindash shoots Sonic off in a rolling state, while the Super Peel-Out shoots Sonic off in a super-fast running state.
    3. - The spindash's animation is in the Sonic 2 disassembly by default, while the Super Peel-Out does not have any disassembly assigned to it because there are no disassemblies of Sonic CD.
    How do I overcome these problems?

    1. You can still modify the code that allows you to rev up the spindash, that way it can behave exactly like the Super Peel-Out.

    2. You can also modify the code that sets him in his rolling state to his running state.

    3. Finally there are a few sprite sheets of Sonic from Sonic CD that you could grab from various sites and you can rip the few sprites that are used for his Peel-out animation. You don't need a Disassembly of Sonic CD for this at all. (Plus like Super Egg said, there isn't one.) While I know this is an older post I hope this helps a bit. Though I highly suggest that you start small to get a better understanding of how the 16 bit games work, and learn 68k asm. While that will take a while it's really worth it in the long run if you love to hack the genesis games. Plus this way you'll be doing the work instead of someone else doing it. (Sorry if I sound rude, i'm not being mean i'm just telling you to help you in the long run. Plus I think it's more rewarding when you code something by yourself.) I know you want to dream big and make a really awesome huge hack with tons of characters, but if you don't understand any pieces of code used in any of the 3 main Sonic games then you're not ready yet. Start by editing Sonic's and Tails' top speed and go on from there. Plus you also want Tails to fly right? Grab the S3K disassembly, and find his flying code then do your best to port it. But I highly recommend that you wait to try and port his flying code once you learn some 68k asm. Good luck with your hack.

    think that last one makes sense, but I'm not sure. Anyway, I think I might toy around with the Spindash code and see what I can accomplish. Expect results soon.
     
    Last edited by a moderator: Feb 17, 2013
  4. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    I think I'm on the right track with this. It's not done yet, but I think I'm getting closer.


    Code:
    
    
    ; ---------------------------------------------------------------------------
    
    ; Subroutine to check for starting a Super Peel-Out
    
    ; ---------------------------------------------------------------------------
    
    Sonic_CheckSuperPeelOut:
    
        tst.b    superpeelout_flag(a0)
    
        bne.s    Sonic_UpdateSuperPeelOut
    
        cmpi.b    #AniIDSonAni_Lookup,anim(a0)
    
        bne.w    return_1AC8C
    
        move.b    (Ctrl_1_Press_Logical).w,d0
    
        andi.b    #button_B_mask|button_C_mask,d0
    
        beq.w    return_1AC8C
    
        move.b    #AniIDSonAni_Run,anim(a0)
    
        move.w    #SndID_SpindashRev,d0
    
        jsr    (PlaySound).l
    
        addq.l    #4,sp
    
        move.b    #1,superpeelout_flag(a0)
    
        move.b    #0,superpeelout_counter(a0)
    
        cmpi.b    #$C,air_left(a0)    ; if he's drowning, branch to not make dust
    
        bcs.s    +
    
        move.b    #2,(Sonic_Dust+anim).w
    
    +
    
        bsr.w    Sonic_LevelBound
    
        bsr.w    AnglePos
    
    ; End of subroutine Sonic_CheckSuperPeelOut
    
     
    
     
    
    ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
    
     
    
     
    
    Sonic_UpdateSuperPeelOut:
    
        move.b    (Ctrl_1_Held_Logical).w,d0
    
        btst    #button_up,d0
    
        bne.w    Sonic_ChargingSuperPeelOut
    
     
    
        ; unleash the charged Super Peel-Out and start running quickly:
    
        move.b    #AniIDSonAni_Run,anim(a0)
    
        move.b    #0,superpeelout_flag(a0)
    
        moveq    #0,d0
    
        move.b    superpeelout_counter(a0),d0
    
        add.b    d0,d0
    
        move.w    SuperPeelOutSpeeds(pc,d0.w),inertia(a0)
    
        tst.b    (Super_Sonic_flag).w
    
        beq.s    +
    
        move.w    SuperPeelOutSpeedsSuper(pc,d0.w),inertia(a0)
    
    +
    
        move.w    inertia(a0),d0
    
        subi.w    #$800,d0
    
        add.w    d0,d0
    
        andi.w    #$1F00,d0
    
        neg.w    d0
    
        addi.w    #$2000,d0
    
        move.w    d0,(Horiz_scroll_delay_val).w
    
        btst    #0,status(a0)
    
        beq.s    +
    
        neg.w    inertia(a0)
    
    +
    
        bset    #0,status(a0)
    
        move.b    #0,(Sonic_Dust+anim).w
    
        move.w    #SndID_SpindashRelease,d0    ; spindash zoom sound
    
        jsr    (PlaySound).l
    
        move.b    angle(a0),d0
    
        jsr    (CalcSine).l
    
        muls.w    inertia(a0),d1
    
        asr.l    #8,d1
    
        move.w    d1,x_vel(a0)
    
        muls.w    inertia(a0),d0
    
        asr.l    #8,d0
    
        move.w    d0,y_vel(a0)
    
     
    
        bra.w    Obj01_SuperPeelOut_ResetScr
    
    ; ===========================================================================
    
     
    
    SuperPeelOutSpeeds:
    
        dc.w  $800    ; 0
    
        dc.w  $880    ; 1
    
        dc.w  $900    ; 2
    
        dc.w  $980    ; 3
    
        dc.w  $A00    ; 4
    
        dc.w  $A80    ; 5
    
        dc.w  $B00    ; 6
    
        dc.w  $B80    ; 7
    
        dc.w  $C00    ; 8
    
     
    
    SuperPeelOutSpeedsSuper:
    
        dc.w  $B00    ; 0
    
        dc.w  $B80    ; 1
    
        dc.w  $C00    ; 2
    
        dc.w  $C80    ; 3
    
        dc.w  $D00    ; 4
    
        dc.w  $D80    ; 5
    
        dc.w  $E00    ; 6
    
        dc.w  $E80    ; 7
    
        dc.w  $F00    ; 8
    
    ; ===========================================================================
    
    ; loc_1AD30:
    
    Sonic_ChargingSuperPeelOut:            ; If still charging the Super Peel-Out...
    
        tst.b    superpeelout_counter(a0)
    
        beq.s    +
    
        move.b    superpeelout_counter(a0),d0
    
        lsr.b    #5,d0
    
        sub.b    d0,superpeelout_counter(a0)
    
        bcc.s    +
    
        move.b    #0,superpeelout_counter(a0)
    
    +
    
        move.b    (Ctrl_1_Press_Logical).w,d0
    
        andi.b    #button_B_mask|button_C_mask,d0
    
        beq.w    Obj01_SuperPeelOut_ResetScr
    
        move.w    #(AniIDSonAni_Run<<8),anim(a0)
    
        move.w    #SndID_SpindashRev,d0
    
        jsr    (PlaySound).l
    
        addi.b    #$1,superpeelout_counter(a0)
    
        cmpi.b    #8,superpeelout_counter(a0)
    
        bcs.s    Obj01_SuperPeelOut_ResetScr
    
        move.b    #8,superpeelout_counter(a0)
    
        bra.s    Obj01_SuperPeelOut_ResetScr
    
        move.b    #8,superpeelout_counter(a0)
    
     
    
    Obj01_SuperPeelOut_ResetScr:
    
        addq.l    #4,sp
    
        cmpi.w    #$60,(Camera_Y_pos_bias).w
    
        beq.w    loc_1AD8C
    
        bhs.s    +
    
        addq.w    #4,(Camera_Y_pos_bias).w
    
    +    subq.w    #2,(Camera_Y_pos_bias).w
    
    ; End of subroutine Sonic_UpdateSuperPeelOut
    
    
    
    
    I think I'm on the right track. It's a modified version of the Spindash code. Not perfect (or even complete, for that matter), but it works. Still experimenting with different combinations of code, so expect results eventually, but, the verdict:

    Usable? Check.

    Buggy? Check.

    Complete? fuck NO.
     
    Last edited by a moderator: Feb 18, 2013
  5. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    The "Super Peel-Out" I'm working on (and until I've tried everything I possibly can and given up, I don't want help with it) now only has one charge. It's not very much progress, but it now has two things in common with the true Super Peel-Out:

    1. Both only have one charge (although the one I'm working on can be recharged just for the heck of it).

    2. Both send you shooting off at super-high speeds in a running state when released.

    I'm still working on it, but I think I'm getting closer.
     
  6. XtremerSadiqX

    XtremerSadiqX Burning Way Past Cool Member

    Joined:
    Feb 5, 2013
    Messages:
    76
    Location:
    Creedmoor City,NC
     Sonic 2 Recreation?

    [​IMG]
     
  7. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    I've decided to start experimenting with the homing attack as well, since Tails' flight is already ripe for the taking (although that won't be for a while). Here's what I have so far:


    Code:
    
    
    Sonic_CheckHomingAttack:
    
    
            cmpi.b  #1,jumping(a0)  ; is Sonic jumping?
    
            beq.s   +               ; if so, branch
    
            bra.s   return_1AD95    ; otherwise, return
    
    +
    
    
            move.b  (Ctrl_1_Press_Logical).w,d0
    
            andi.b  #button_B_mask|button_C_mask,d0 ; is B or C pressed?
    
            bne.s   +               ; if so, branch
    
            bra.w   return_1AD95    ; otherwise, return
    
    +
    
            move.w  #$700,x_vel(a0)  ; immediately set Sonic's x_vel to $10
    
            move.b  #2,anim(a0)     ; use "jumping" animation
    
            move.w  #SndID_SpindashRelease,d0       ; play the spindash release sound (or at least until I can get a sound for the jumpdash/homing attack)
    
     
    
    return_1AD95:
    
            rts
    
    
    
    
    
    If there's anything I can improve, let me know (I'm not necessarily asking for help here, just for suggestions).

     

    EDIT 1: Added "Ctrl_1_Press_Logical" line and changed $10 to $30 for x_vel.

     

    EDIT 2: Changed this bit:




            tst.b   jumping(a0)     ; is Sonic jumping?

            beq.s   return_1AD95    ; if not, return





    to this:




            cmpi.b  #1,jumping(a0)  ; is Sonic jumping?

            beq.s   +               ; if so, branch

            bra.s   return_1AD95    ; otherwise, return

    +




    and changed x_vel to $700.
     
    Last edited by a moderator: Feb 20, 2013
  8. redhotsonic

    redhotsonic Also known as RHS Member

    Joined:
    Aug 10, 2007
    Messages:
    2,969
    Location:
    England

     Sonic 2 Recreation?

    [​IMG]

    Ah, the old days... much improved since then =)

    Plus, I only just realised this topic.  Where the fuck did this appear from?
     
  9. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?

     Sonic 2 Recreation?

    [​IMG]

    Ah, the old days... much improved since then =)

    Plus, I only just realised this topic.  Where the fuck did this appear from?

    Dude, think about it. Clues:

    a) My display name.

    b) The title of this topic.

    c) The large (and looking back on it, insane) amount of questions I've asked since I got here (I'm trying not to ask as many questions now, and I am experimenting with the Super Peel-Out and homing attack as we speak).

    I'll give you the answer in thirty minutes if you don't figure it out by then.
     
  10. MainMemory

    MainMemory Well-Known Member Member

    Joined:
    Mar 29, 2011
    Messages:
    922
    Remember those posts that got removed from the Q&A thread that made that other guy look like he was triple posting?
     
    Last edited by a moderator: Feb 19, 2013
  11. XtremerSadiqX

    XtremerSadiqX Burning Way Past Cool Member

    Joined:
    Feb 5, 2013
    Messages:
    76
    Location:
    Creedmoor City,NC

     Sonic 2 Recreation?

    [​IMG]

    Ah, the old days... much improved since then =)

    Plus, I only just realised this topic.  Where the fuck did this appear from?

    From the looks and screenshots, S2Recreation has went all the way up.
     
  12. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Okey dokey...looks like I'm unable to port the Sonic 1 sound driver to my hack because my s2.constants.asm file doesn't want to play ball. It's something with the master playlist and all that annoying, super time-consuming stuff, so I figured, "You know what? I'm doing this later, when I actually have some damn free time on my hands." So yeah. It will be ported, though, and I've decided to try to, in terms of level design, do something fairly similar to Sonic Megamix. You'd be surprised at the amount of inspiration that comes from that one hack alone.

    As for the Homing Attack and Super Peel-Out, I'm still working on those. It may take me some time, plus I'm still revamping the already done level layouts and coming up with new ones, but while you're waiting for the official release, have a look at this video, showcasing the new Corrosion Plant Zone Act 1:

    http://www.mediafire.com/?fay2qoq455p7827

    Please tell me what you think of the layout and/or how I could improve upon it in any way. More rings (can't blame ya for that :p), more enemies, more gimmicks, whatever. Just as long as it's something that could be improved.
     
    Last edited by a moderator: Feb 20, 2013
  13. rika_chou

    rika_chou Adopt Member

    Joined:
    Aug 11, 2007
    Messages:
    689
    I don't think people are going to want to download such a large video, upload it to youtube or something. 
     
  14. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Youtube's being a bit of a jerk at the moment when it comes to uploading videos, so for the time being, I have to give them to the community in raw .avi format.
     
    Last edited by a moderator: Feb 20, 2013
  15. redhotsonic

    redhotsonic Also known as RHS Member

    Joined:
    Aug 10, 2007
    Messages:
    2,969
    Location:
    England
    Don't get cocky with me, mate.


    Youtube's being a bit of a jerk at the moment when it comes to uploading videos, so for the time being, I have to give them to the community in raw .avi format.

    I highly doubt anyone will want to download a RAW AVI format. What's wrong with youtube? Seems fine with me.
     
  16. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?

    Youtube's being a bit of a jerk at the moment when it comes to uploading videos, so for the time being, I have to give them to the community in raw .avi format.

    I highly doubt anyone will want to download a RAW AVI format. What's wrong with youtube? Seems fine with me.

    Apparently, it can't play ball with .avt files. 'Nuff said.
     
  17. redhotsonic

    redhotsonic Also known as RHS Member

    Joined:
    Aug 10, 2007
    Messages:
    2,969
    Location:
    England
    Maybe the file is too big in itself. Try downloading a converter to convert it into a different format at a smaller bitrate. MP4 or MPEG is a good choice, and YouTube should be fine with that.
     
  18. MainMemory

    MainMemory Well-Known Member Member

    Joined:
    Mar 29, 2011
    Messages:
    922
    The problem isn't that your video is AVI, I used to record AVIs with Gens Rerecording and upload them to YouTube, but you're using Fusion right? Fusion uses its own codec for videos, which YouTube doesn't have a decoder for. So you have to change them to a format YouTube understands. Personally I use VirtualDubMod and x264vfw for video compression.
     
  19. Spanner

    Spanner The Tool Member

    Joined:
    Aug 9, 2007
    Messages:
    2,570
    The thread was split by myself because it mostly was ThomasSpeedrunner posting all the time asking for help.
     
  20. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Well, Spanner, I personally don't mind this thread being here (because now at least other people aren't bothered by my question-asking), but I can assure you I'm trying not to ask as many questions as I experiment with some of Sonic's abilities. You know, so I can see what works and what doesn't.
     
    Last edited by a moderator: Feb 20, 2013
Thread Status:
Not open for further replies.