ThomasSpeedrunner Help Thread

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

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

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    While I figure out the homing attack and finish up coding the secret character, can someone tell me of a good program for making Genesis-styled sprites?

    (sorry for double post)
     
    Last edited by a moderator: Mar 2, 2013
  2. rika_chou

    rika_chou Adopt Member

    Joined:
    Aug 11, 2007
    Messages:
    689
    GraphicsGale is my favorite.
     
  3. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Okay. Will try it and see if it can get the job done fast enough.

    EDIT: What size picture should I be making?
     
    Last edited by a moderator: Mar 3, 2013
  4. rika_chou

    rika_chou Adopt Member

    Joined:
    Aug 11, 2007
    Messages:
    689
    ...any size? As long as it fits whatever you're drawing.
     
  5. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Okay then. Time to start making some sprites.

    ...

    As soon as I get better art skills :p
     
    Last edited by a moderator: Mar 3, 2013
  6. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    (I sometimes feel the need to make a separate post when asking a new question, so I apologize in advance for any double posts I make in this topic in the future)

    Which line would work better for calculating which direction to launch a jumpdash in? This:




    move.w inertia(a0),d0



    Or this:




    moveq inertia(a0),d0



    I need to know, because right now, the jumpdash direction is calculated at the start of a jump.
     
    Last edited by a moderator: Mar 3, 2013
  7. MainMemory

    MainMemory Well-Known Member Member

    Joined:
    Mar 29, 2011
    Messages:
    923
    The moveq instruction can only have an immediate value between -128 and 127 as the first argument, the second line won't assemble. Also, inertia only takes effect when Sonic is on the ground, in the air he only uses x_vel.

    I just use the direction Sonic's facing, rather than the direction he's moving. So if you jump off a slope, you might be moving backwards a bit, but still be able to use the homing attack forwards.
     
    Last edited by a moderator: Mar 3, 2013
  8. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    How can that be done? The only related bit of something that I know of is bit 0 in the status SST, which is only used for when you're on the ground and leftfacing...isn't it?
     
    Last edited by a moderator: Mar 3, 2013
  9. MainMemory

    MainMemory Well-Known Member Member

    Joined:
    Mar 29, 2011
    Messages:
    923
    No... it's "Orientation. Clear is right and set is left." Bit 1 is for ground/air.
     
  10. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Oh. I originally thought it was only used on the ground. SST's can be so confusing sometimes...
     
    Last edited by a moderator: Mar 3, 2013
  11. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Okay...can anyone give me some tips or something on coding custom badniks or bosses? I kinda have my hands full with the secret character and revamping level layouts, so that doesn't leave me much time to experiment with badniks or bosses.
     
    Last edited by a moderator: Mar 3, 2013
  12. DanielHall

    DanielHall Well-Known Member Member

    Joined:
    Jan 18, 2010
    Messages:
    860
    Location:
    North Wales
    Have you checked out the objects tutorial on Sonic Retro?
     
  13. Dark Lips

    Dark Lips Well-Known Member Member

    Joined:
    Nov 14, 2008
    Messages:
    293
    Location:
    Wolverhampton UK
    I find the best way to make your own stuff in asm is to experiment with an existing object/boss in a fresh asm so you dont mess your hack up... then you comment the code as you go so you know what each instruction does.
     
  14. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Yes, but the problem there is that the idea covers a Sonic 1 disassembly dating back to 2005. Not to mention that the old disassemblies try to cram everything into the same file. At least the Sonic 1 Hg disassembly separates things (and oh man, does it separate them) instead of doing the opposite and CRAMMING EVERY LINE OF CODE INTO THE EXACT SAME ASM FILE.

    That sounds like a very good idea. I will try that out once I'm done with the level layouts. I've got some awesome layouts in my mind, and they shouldn't too terribly long to make.
     
  15. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Erm...can someone tell me if I'm on the right track with my Super Peel-Out code?

    WARNING: HUGE WALL OF ASM BELOW:


    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)
    
    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.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  $0 ; 0
    
    dc.w  $0 ; 1
    
    dc.w  $0 ; 2
    
    dc.w  $0 ; 3
    
    dc.w  $0 ; 4
    
    dc.w  $0 ; 5
    
    dc.w  $0 ; 6
    
    dc.w  $0 ; 7
    
    dc.w  $B00 ; 8
    
     
    
    SuperPeelOutSpeedsSuper:
    
    dc.w  $0 ; 0
    
    dc.w  $0 ; 1
    
    dc.w  $0 ; 2
    
    dc.w  $0 ; 3
    
    dc.w  $0 ; 4
    
    dc.w  $0 ; 5
    
    dc.w  $0 ; 6
    
    dc.w  $0 ; 7
    
    dc.w  $1000 ; 8
    
    ; ===========================================================================
    
    ; loc_1AD30:
    
    Sonic_ChargingSuperPeelOut: ; If still charging the Super Peel-Out...
    
    tst.b superpeelout_counter(a0)
    
    beq.s Display_SuperPeelOut_Init
    
    move.b superpeelout_counter(a0),d0
    
    lsr.b #5,d0
    
    sub.b d0,superpeelout_counter(a0)
    
    bcc.s Display_SuperPeelOut_Init
    
    move.b #0,superpeelout_counter(a0)
    
     
    
    Display_SuperPeelOut_Init:
    
    btst #6,status(a0) ; is Sonic underwater?
    
    beq.s Display_SuperPeelOut_Normal ; if not, display the Super Peel-Out normally
    
    bne.s Display_SuperPeelOut_Underwater ; if so, display the underwater Super Peel-Out animation set
    
     
    
    Display_SuperPeelOut_Normal:
    
    cmpi.b #3,superpeelout_counter(a0)
    
    ble.s +
    
     
    
    move.w #(AniIDSonAni_Run<<8),anim(a0)
    
    bra.s PlayRevSound
    
    +
    
    move.w #(AniIDSonAni_Walk<<8),anim(a0)
    
    bra.s PlayRevSound
    
     
    
    Display_SuperPeelOut_Underwater:
    
    cmpi.b #3,superpeelout_counter(a0)
    
    ble.s +
    
     
    
    move.w #(AniIDSonAni_Run<<8),anim(a0)
    
    bra.s PlayRevSound
    
    +
    
    move.w #(AniIDSonAni_Walk<<8),anim(a0)
    
     
    
    PlayRevSound:
    
    cmpi.b #SndID_SpindashRev,d0
    
    beq.s Charge_SuperPeelOut_Main
    
    move.w #SndID_SpindashRev,d0
    
    jsr (PlaySound).l
    
     
    
    Charge_SuperPeelOut_Main:
    
    move.b ($FFFFFE05).w,d0
    
    andi.b #4,d0
    
    bne.s Obj01_SuperPeelOut_ResetScr
    
    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
    
    
    
    
     
  16. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    (sorry for triple post, but you'll understand why I'm troubling you about this in due time)

    Anyway, I tried to restore HPZ today, and THIS is what I ended with:

    [​IMG]

    Does anyone have any clue why it won't read the art or collision data? I have all necessary files, so...yeah.

    EDIT: Never mind. I just had to change a bit in the HPZ project files. Why I've decided to only restore HPZ, however, is a different story...
     
    Last edited by a moderator: Mar 5, 2013
  17. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    (Why the hell does nobody other than myself look at this thread?)

    Does anyone know of a good emulator for recording YOUTUBE-COMPATIBLE video files with?
     
  18. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    Use The newest version of Gens there is an option to record a video and then after you finish recording it you play it and while your playing the video you can start an AVI dump and then when it's finished stop the dumb and it will give you an option to save it as a certain compression type. I chose the Microsoft video option it's the best choice out of the others and it's the only one that works with YouTubes codec.
     
    Last edited by a moderator: Mar 5, 2013
  19. nineko

    nineko I am the Holy Cat Member

    Joined:
    Mar 24, 2008
    Messages:
    1,902
    Location:
    italy
    Use Gens Rerecording with a codec supported by Youtube.


    May I recommend the TSCC codec?
     
  20. ThomasThePencil

    ThomasThePencil resident psycho Member

    Joined:
    Jan 29, 2013
    Messages:
    910
    Location:
    the united states. where else?
    Program sais "thomas will you register Camtasia Studio"

    And I say "NO"

    Program is mad

    It lock up AVI thing

    HELP MEH

    Hopefully you understand what I'm trying to say here.
     
    Last edited by a moderator: Mar 6, 2013
Thread Status:
Not open for further replies.