Basic Questions and Answers Thread

Discussion in 'Discussion & Q&A' started by Malevolence, Jul 7, 2009.

  1. NayTheGamer

    NayTheGamer rawr..... Member

    Joined:
    Sep 30, 2022
    Messages:
    92
    Location:
    England
    1. Pal_FadeFrom to PaletteFadeOut
    2. Pal_FadeTo to PaletteFadeIn
    3. DelayProgram to WaitForVBla
    4. EniDec.w to EniDec
    5. The art and mappings files (obviously)
    6. Playsound_Special With Sound having its capital letter (because my disassembly is quite fussy about capital letters and non capitals)
    7. ShowVDPGraphics to TilemapToVRAM
    thats it.
     
  2. Devon

    Devon Down you're going... down you're going... Member

    Joined:
    Aug 26, 2013
    Messages:
    1,372
    Location:
    your mom
    Okay, those look correct. Is your data compressed properly?
     
    Last edited: Dec 21, 2022
  3. NayTheGamer

    NayTheGamer rawr..... Member

    Joined:
    Sep 30, 2022
    Messages:
    92
    Location:
    England
    sorry for the late reply.
    Yes because it try's to load the art but gets overwritten by the SSRG Screen Which is still in the VRAM
     
  4. NayTheGamer

    NayTheGamer rawr..... Member

    Joined:
    Sep 30, 2022
    Messages:
    92
    Location:
    England
    this question is both related to rom hacking, the sonic retro splash screen and Sonic Retro itself :
    I Wonder if I could put in the Sonic Retro splash screen in my hack. I Have Both an Info account which is been around for a year, and I have A fourms account on sonic retro but that one is unverified so
    I'm not too sure :/
     
  5. RobiWanKenobi

    RobiWanKenobi Python Developer and ASM enthusiast Member

    Joined:
    Sep 10, 2022
    Messages:
    81
    Location:
    United States
    You need to be a tech member on Sonic Retro to get the code, if you recreate it, that is fine. Basically what I am saying is the code isn't given out.
     
  6. NayTheGamer

    NayTheGamer rawr..... Member

    Joined:
    Sep 30, 2022
    Messages:
    92
    Location:
    England
    ah ok (I'm no good at coding XD)
    EDIT: Actually I might be able to recrate it because you can just have the actual splash screen as the BG Then sonic or tails or whatever character as the FG (I Might just do a static one to save work)
     
  7. NayTheGamer

    NayTheGamer rawr..... Member

    Joined:
    Sep 30, 2022
    Messages:
    92
    Location:
    England
    welp, here we go again.
    this Bug is were everything is fine but not for objects as shown in this screenshot (how can I Fix this Bug?)
    blastem_20221222_171907.png
     
  8. RobiWanKenobi

    RobiWanKenobi Python Developer and ASM enthusiast Member

    Joined:
    Sep 10, 2022
    Messages:
    81
    Location:
    United States
    Change the mappings for the object, it uses the level art which you have changed, so it is out of order. SonMapED or flex 2 will help.
     
  9. NayTheGamer

    NayTheGamer rawr..... Member

    Joined:
    Sep 30, 2022
    Messages:
    92
    Location:
    England
    oh alright
     
  10. Devon

    Devon Down you're going... down you're going... Member

    Joined:
    Aug 26, 2013
    Messages:
    1,372
    Location:
    your mom
    What's funny is that the link to the splash screen in the lounge is dead and the only way a techie can get it now is with a Sonic 2 port someone made lmao. It was due to be replaced, but it never happened.
     
  11. NayTheGamer

    NayTheGamer rawr..... Member

    Joined:
    Sep 30, 2022
    Messages:
    92
    Location:
    England
    I could just recreate the code for it somewhere, but I'm no good at coding ASM Which is referring to me needing to learn ASM Language.
     
  12. Giovanni

    Giovanni It's Joe-vanni, not Geo-vanni. Member

    Joined:
    Apr 16, 2015
    Messages:
    311
    Location:
    Italy
    In an attempt to fix an error with Time Overs in my most recent hack, I found, quite possibly, one of the most bizarre errors.

    But anyway, disabling time overs. I figured "Hmm, let's stop the timer from updating!"

    So, I made it so that when the timer is at 9:59, it would stop updating, by clearing $FFFFFE1E, the time updating flag, but it comes with a flaw of its own: the signpost artwork won't load.

    broken signpost.gif

    So, I look at SignpostArtLoad, to find a check for $FFFFFE1E, and, sure enough, there's one!

    So I remove the check.

    upload_2023-1-10_13-7-3.png

    Somehow, removing the check will cause the pattern load cue for the Title Cards to just... not function. This will also happen if significant enough edits are made to the instruction (I haven't figured out the extremes, but just editing the RAM address of the tst.b instruction that checks for $FFFFFE1E may cause the bug to occur).

    I have managed to replicate the error in an otherwise blank Sonic 1 disassembly, so these are the only changes I made to the game to trigger this.
     
    Last edited: Jan 10, 2023
  13. Devon

    Devon Down you're going... down you're going... Member

    Joined:
    Aug 26, 2013
    Messages:
    1,372
    Location:
    your mom
    The reason for this is basically due to a clash with the boundary settings.

    When you first approach the signpost, the left boundary is set to the right boundary - 256. That is constantly checked as long as the timer is active. When you removed the timer check, you basically made it so that it's always applying that boundary once you've approached the signpost, no matter what. This boundary check also acts as a way to check if the signpost PLCs are already loaded, since if the boundary wasn't set, then the PLCs probably weren't loaded yet.

    When you touch the signpost, it clears the timer flag, updates the boundary again, at where the signpost is, and loads the title card PLCs. The timer flag check in SignpostArtLoad was supposed to prevent the new boundary setting here from being overridden. However, with the check gone, SignpostArtLoad will detect that the boundary is no longer at the right boundary - 256, and thus override the title card PLCs, while also messing up the left boundary.

    For a quick fix, in SignpostArtLoad, change the "beq.s" after the left boundary comparison to "ble.s". That way, even if the signpost overrides the boundary when touched, since the new value will be greater, the change to "ble" makes it so that the signpost PLCs won't get reloaded. AKA, it changes the check from if the left boundary is just set to that point to if the left boundary is set at that point OR BEYOND.
     
    Giovanni likes this.
  14. B.T.H Yeehaw!

    B.T.H Yeehaw! Newcomer Member

    Joined:
    Jun 20, 2020
    Messages:
    15
    Location:
    City Streets Zone
    EDIT: Ignore this entirely! Turns out that me deleting tiles was maddening GHZ's second art block, I just added more tiles on the first art block, which fixed up everything! If you want to read the rest of the stuff, go ahead.

    (Ignore the fact that for some reason the images are large, I'm new to this sort of thing, and I'll be on my last post after this one, so I don't think I'll be able to change it.)

    So, I'm editing Green Hill Zone to make a new Zone based off of it with a new palette, new tiles, new chunks, and to make some of the new tiles work, I decided to delete some of the unneeded tiles that, well, I didn't need, which would prove to screw me over later down the line. So after I finished fixing up some of the platforms to work with the deleted tiles, for SOME odd reason that I can't wrap my head around, the tiles and stuff look fine in SonLVL.
    (Don't mind that one screwed up tree, I haven't fixed it, yet.)
    SonLvlFHZPreview.png

    But ingame, most of the tiles are wonky and make NO sense!

    InGameFHZ.png

    What in the world is happening in game? It's like someone just put... EVERYTHING in a blender, if anyone who's smarter at this than me can figure this out, I would be most pleased.
     
    Last edited: Jan 25, 2023
  15. RobiWanKenobi

    RobiWanKenobi Python Developer and ASM enthusiast Member

    Joined:
    Sep 10, 2022
    Messages:
    81
    Location:
    United States
    I think you have one of a few issues:
    1, you have too many tiles
    2, your compression for blocks are broken
    3, the level loader isn't working correctly
    4, GHZ is weird with art loading with it.
     
  16. Inferno

    Inferno Rom Hacker Member

    Joined:
    Oct 27, 2015
    Messages:
    132
    Location:
    Sky Base Zone, South Island
    May I suggest merging the art blocks? There's numerous tutorials to do so, and it will prevent issues like this in the future.
     
  17. Giovanni

    Giovanni It's Joe-vanni, not Geo-vanni. Member

    Joined:
    Apr 16, 2015
    Messages:
    311
    Location:
    Italy
    Word of warning! Deleting all unused tiles mindlessly can and will cause issues with objects that specifically use the unused tiles in question. Specifically for GHZ, objects you should be mindful of before deleting all unused tiles include the following:
    - Platforms (they use their own graphics, which are stored among the level graphics)
    - Crumbling platforms (use a LOT of otherwise unused art tiles)
    - The large moving platforms (however, I personally feel it is an object with little to no use case, so if you delete its VRAM to use it for something else, you're only doing good in my book)

    And possibly more. In general, level editors won't be able to detect if an object actually uses unused tiles, so it will just delete them along with the truly unused ones, leading to the above mentioned graphical issues.
     
  18. BL3H

    BL3H Newcomer Trialist

    Joined:
    Jul 19, 2022
    Messages:
    9
    Location:
    Tails' Workshop, Angel Island
    One quick question, how would you check which item is selected when you press start in the Sonic 1 level select menu? I'm trying to set up an options menu and the S2 level select menu as level select.

    (this is on Hivebrain)
     
  19. Grosy

    Grosy Romhacker + owns a mega drive 2 Member

    Joined:
    Dec 30, 2021
    Messages:
    36
    How could i get peelout into s1 git (i will give credit to whoever tells me how in my hack)
     
  20. Devon

    Devon Down you're going... down you're going... Member

    Joined:
    Aug 26, 2013
    Messages:
    1,372
    Location:
    your mom
    The peelout works as follows:
    • It is activated by holding up and pressing a jump button. The peelout timer is set to 1. This timer increments by 1 every frame.
    • When the timer is nonzero, Sonic_MoveLeft, Sonic_MoveRight, Sonic_SlopeResist, Sonic_RollRepel, Sonic_Jump, and loc_12FC2 (handles calculating the X/Y velocities from the ground velocity/inertia + angle) are effectively disabled.
    • Also when the timer is nonzero, Sonic's ground velocity/inertia is continuously incremented by 100. The max speed is Sonic's max speed * 2 without speed shoes, and (Sonic's max speed * 2) - (Sonic's max speed / 2) with speed shoes.
    • The peelout is considered charged when the timer reaches 30, regardless of what Sonic's speed is.
    • If up is let go before the timer is 30, it resets to 0 and Sonic's ground velocity/inertia is set to 0.
    • Sonic's animation is set to walking (ID 0). Sonic_Animate checks if Sonic's speed is >= $A00, and if it is, it uses the peelout frames.
    I can present 2 options for you to follow for an implementation.
    • You can see Sonic CD's implementation of the peelout (and spindash) in my disassembly. Labels are different, but if you reference both my and the Sonic 1 disassembly, you should be able to follow along. You'll find your way by searching for "oPlayerCharge".
    • You can see a simplified (better :V) implementation I did for LuigiXHero here, alongside the Sonic CD spindash. It's based on the old 2005 disassembly, but again, if you cross reference disassemblies, you should be able to find your way through it. Search for the implementation by searching "Peelout" in the sonic1.asm.
     
    Last edited: Mar 17, 2023