The Free Assets Thread

Discussion in 'Showroom' started by LuigiXHero, Feb 3, 2017.

  1. Panduhman02

    Panduhman02 Newcomer In Limbo

    Dec 2, 2018
    (My face after reading your post)

    Well.. That was awkward..m
    Anyways, since THAT doesn't work, I guess I'll have to screw around with sonic 1's code instead of 2' s. Thank you for letting me know how it "works" in-game. I'll contribute at least SOMETHING to this wonderful thread when I finally have something that works. Thank You!
  2. Kilo

    Kilo Foxy Fren Exiled

    Oct 9, 2017
    A warm and lovely place~
    Here's Splats. Recreated by us folks at the Sonic 1 Beta Research Station. This is based on actual code and info gathered from Sonic 2 prototypes. More info below:
    Some info is wrong (Eg the symbol leak was actually a source leak by drx), but it's the general idea.
    You will have to add Splats to the PLCs (And tinker with 2(a0)) yourself and make your own mappings, but that's easy enough.

    Edit: Fixes added n stuff.

    Attached Files:

    Last edited: Feb 19, 2020
  3. Trickster

    Trickster The Trickster Member

    Aug 22, 2018
    Brazil Bad Future
    One of the major flaws of Sonic 3&k is that Sonic has inconsistent arm lenth, so, I'm working on fix it.
    Welp, It's not my fault if Sega doesn't know how important is to give a proper and consistent arm lenth for sonic :T



    Currently, I only have the walking sprites done, but I'll update you guys when I complete it.
    I considered Sonic's idle sprite to do this, since It has the perfect arm lenth for sonic.

    feel free if you want to use this in your hack, considering that a major part of people who played S3K agree that Sonic's inconsistent arm lenth ruined one of another bad sonic games that had potential to be good.

    also, have a great february 30th!
    Niko and ProjectFM like this.
  4. DeltaWooloo

    DeltaWooloo I barely use this account Member

    Aug 7, 2019
    I do apologise regarding the thread being bumped but I believe what I'm about to show is a no-brainer.

    In Sonic (3) and Knuckles, when you hit a monitor from below, you hit it rather than it bouncing to the floor like in Sonic 1, 2 and 3. I'll demostrate it for you:

    Sonic 3 and Knuckles allows you to hit the monitor from below.

    This is not the case for Sonic 1 (applies to its sequel)

    If you want to make the monitor behave like S3K in Sonic 1 and 2, it's pretty simple to do.

    In Sonic 1 (Hivebrain), locate Touch_Monitor and this is what you will get:

            tst.w    $12(a0)        ; is Sonic moving upwards?
            bpl.s    loc_1AF1E    ; if not, branch
            move.w    $C(a0),d0
            subi.w    #$10,d0
            cmp.w    $C(a1),d0
            bcs.s    locret_1AF2E
            neg.w    $12(a0)        ; reverse Sonic's y-motion
            move.w    #-$180,$12(a1)
            tst.b    $25(a1)
            bne.s    locret_1AF2E
            addq.b    #4,$25(a1)    ; advance the monitor's routine counter
    If you look in the last 6 lines of code, it makes sure it reverses Sonic's y-motion in order for the monitor to fall. In S3K, the code is removed in order for this behaviour to occur, so remove the last 6 lines of code.

    In Sonic 2 (GitHub), locate Touch_Monitor and you will see this:

        btst    #1,status(a0)
        beq.s    loc_3F768
        tst.w    y_vel(a0)    ; is Sonic moving upwards?
        bpl.s    loc_3F768    ; if not, branch
        move.w    y_pos(a0),d0
        subi.w    #$10,d0
        cmp.w    y_pos(a1),d0
        blo.s    return_3F78A
        neg.w    y_vel(a0)    ; reverse Sonic's y-motion
        move.w    #-$180,y_vel(a1)
        tst.b    routine_secondary(a1)
        bne.s    return_3F78A
        move.b    #4,routine_secondary(a1) ; set the monitor's routine counter
    As I previously said, the last 6 lines reverses Sonic's y-motion in order for the monitor to fall. We don't want that so remove it.

    Now save, build and let's test it!


    And there we go, it behaves as intended! Enjoy! ;)
  5. Speems

    Speems Well-Known Member Member

    Mar 14, 2017
    Rochester Hills, MI
    For those who imported the Sonic 1 prototype's Sega screen (courtesy of DeltaWooloo) to their disassembly: easy yet obvious way to put a jingle there is to go to loc_24BC (which only exists if you port that Sega screen) and add the following code just after the $C00004 line:

    move.b #$96,d0; play Sega screen music
    bsr.w PlaySound_Special​

    The 96 can be a different jingle like the Chaos Emerald one (mainly if you didn't expand the music index), so 93 can be typed instead. Here's a video of the code in action:

    Of course I'll supply the custom jingle, which can be functional if the music index acknowledges it:

    No credit/permission is needed as this is a very simple thing to do with Delta's addition. Cheers!
    Crimson Neo, Niko, TomTalker and 4 others like this.
  6. Speems

    Speems Well-Known Member Member

    Mar 14, 2017
    Rochester Hills, MI
    I present to you...
    the Sonic 2 Chaos Emeralds for Sonic 1!

    I'm sure these will eventually get overused and wear out their welcome eventually, but I still wanted to give these designs some appreciation. It's also to finally make this odd aesthetic change available for most hackers, newcomers or veterans. Plop the files from the folder to artnem in your disassembly, and you're ready to go. GitHub's disassembly may require renaming for the files. These are self-ported by me using Flex 2 with the sprites directly from Sonic 2 with enough palette alterations to work. Please credit me if you use them. The Yamaguchi shades of blue are not included obviously. Be aware this is not compatible for any hacking that requires a 7th emerald unless you modify the files here to make it work.

    Attached Files:

    Niko, Samey and kenny0989 like this.
  7. Techokami

    Techokami For use only on NTSC Genesis Systems. Member

    Oct 29, 2007
    Had a spare font lying around in my workspace, and hey it fits into Sonic 1 just fine.
    A pre-made Nemesis compressed art file you can just drop into your project? Here you go! Credit is appreciated.
  8. Inferno

    Inferno Rom Hacker Member

    Oct 27, 2015
    Sky Base Zone, South Island
    S1D has code for a standalone FG object, in contrast to the pylon. I am happy to provide this, but you will have to adjust it yourself for mappings, art, etc. Made for Github disasm, should be easy enough to port to Hivebrain with enough knowledge. Should work in vanilla S1:
            moveq    #0,d0
            move.b    obRoutine(a0),d0
            move.w    FGObject_Index(pc,d0.w),d1
            jmp    FGObject_Index(pc,d1.w)
    ; ===========================================================================
    FGObject_Index:    dc.w FGObject_Main-FGObject_Index
            dc.w FGObject_Display-FGObject_Index
    ; ===========================================================================
            addq.b    #2,obRoutine(a0)
            move.l    #Map_FGObject,obMap(a0) ; Add mappings here!
            move.w    #$C000,obGfx(a0) ; Tweak this to change VRAM location tied to object!
            move.b    #$14,obRender(a0) ; This must always be at least $10! The $10 in this ensures it displays in front of all level art.
            move.b    #32,obActWid(a0)
            move.b  #$40,obHeight(a0)
            move.b    #0,obPriority(a0) ; This ensures it displays in front of almost ALL sprites.
            move.w    obX(a0), $30(a0) ; Move this here to ensure proper sprite deletion.
        ;-- Thank you based pylon --
            move.w    $30(a0), d1 ; Store the original X position in d1....
            move.w  d1,d2 ; ... and make sure to allow us to readd it in d2 so we don't assume we are at X = 0.
            subi.w  #$A0,d1 ; Subtract A0 from d1.
            sub.w   (v_screenposx).w,d1 ; Subtract the current screen position from d1.
            asr.w    #1,d1 ; Divide d1 by 2. (Tweak this to get different scroll rates!)
            add.w    d2, d1 ; Add the base X position to our offset.
            move.w    d1, obX(a0) ; Here's our new X position!
            jsr    DisplaySprite
            out_of_range    @delete,$30(a0)
            jmp DeleteObject
  9. Nik Pi

    Nik Pi Active Member Member

    Feb 14, 2022
    I wanna present here my recreation of Sonic 2 Nick arcade prototype's Emerald hill zone act 1 & 2 layout for realization in final game (GitHub disasm)
    It's part of my (at this moment) cancelled hack of S2, which was recreated some content from prototypes.
    At that moment, when i start it- i hasn't assets from proto, so, i made it using SonEd2 and SonLVL
    I spend for this 3 MONTHS!!1!
    So, you can use it. I wanna place it here, because it can be lost media. Once- i accidentally delete this from my another disasm, and THIS was preserved purely by chance.
    P.S.: nameoffile(O).bin- objects; nameoffile(R).bin- rings
    P.P.S: If you want to make a hack with restoring of proto features- write me. I really can help with things ;)

    Attached Files:

    Last edited: Sep 18, 2022