don't click here

Basic Questions & Answers thread

Discussion in 'Engineering & Reverse Engineering' started by Tweaker, May 29, 2008.

  1. redhotsonic

    redhotsonic

    Also known as RHS Tech Member
    1,587
    10
    18
    United Kingdom
    YouTuber


    You'll have to make a new routine for the badnik. Using Eggman's code isn't going to work. Does Coltype stand for collision type? That shouldn't be changed.


    Try this for testing purposes.

    Use an unused RAM address for the badnik hits (a byte long will do). And another unsed ram address for the badnik timer (byte long again). Call these (badnikhit).w and (badniktimer).w


    When the badnik is created, set the (badnikhit).w to 4. And (badniktimer).w to 0.


    When you go to hit a badnik, it will jump to a routine somewhere to kill the badnik. At that routine, try adding this first:

    Code (ASM):
    1. Killbadnikroutine:
    2.     tst.b   (badniktimer).w     ; Is it 0?
    3.     beq.s   +           ; Yes?  skip then
    4.     rts
    5. +
    6.     tst.b   (badnikhit).w       ; Is it 0?
    7.     beq.s   +           ; Yes?  Kill badnik
    8.     subq.b  #1,(badnikhit).w    ; Subtract 1 from hit
    9.     move.b  #$20,(badniktimer).w    ; Start timer
    10.     rts
    11. +
    12. ;   etc
    So when it goes to kill the badnik, unless the (badnikhit).w is 0, it will not kill the badnik. It will subtract 1 from it for the next hit. It will then start the timer, to make the badnik invulnerable for a short period.


    Then, in the badnik's main code, try this:

    Code (ASM):
    1.     tst.b   (badniktimer).w     ; Is it 0?
    2.     beq.s   +           ; Yes?  skip then
    3.     subq.b  #1,(badniktimer).w  ; Subtract 1 from from timer
    4. +
    5. ;   etc
    Unless timer is 0, it will keep counting it down. So now, when it does eventually reach 0, the badnik can be hit again.



    After 4 hits, the badnik should then die.



    This is all from the top of my head. You might want to tweak it. If this works, you will then want to get rid of using RAM addresses and use the badniks own SSTs, like instead of (badnikhit).w, use obj_off30(a0). The only problem is, all badniks will take the new killbadnik routine into account, and might use that particular offset for something different.



    EDIT: Quoted previous post because of page-break. I have a habit of breaking pages recently.
     
  2. Truner

    Truner

    Member
    On the Sonic Retro wiki, is there an option to search for only completed hacks? I really don't feel like checking every single hack and see if it's completed or not if there's an option to do that with a function or something. Erazor and Megahack Ultra got me back in a Sonic hack mood, so I want to play everything that's not a demo.
     
  3. dsrb

    dsrb

    Member
    3,149
    0
    16
    You might have gotten away with searching for whatever format the template uses (‘|status=completed', or whatever) were it not for the fact that the reality is more complex than a simple choice between ‘completed’ and ‘demo'. Plenty of hacks have seen stable releases but are not ‘completed’ in the sense that their development has ceased, so they'd be marked as ‘in progress'. By opposite reasoning, so might hacks that haven't had a stable release yet.

    I suppose a good start towards making your request more feasible would be an additional field in the template for the release type: alpha, beta, stable, final, etc.

    Of course, someone with better knowledge of teh wikimantics can maybe correct me on any of the above. But that's my presumption from what I've seen.
     
  4. Truner

    Truner

    Member
    "final" seems like what I'm looking for. I'll try searching with it. If it doesn't work, I'll just manually check everything. Who knows, maybe I'll find some kind of gem. Thanks.
     
  5. RetroKoH

    RetroKoH

    Member
    1,709
    76
    28
    S1Fixed: A successor to ReadySonic
    We had a topic on this in the Site Affairs forum a little while back, and it had gotten started on. Unfortunately, as all things seem to do... it never really got finished or followed through upon. If you guys have any suggestions as to what you'd like it to look like, exactly... I do some wiki work here and there. I can fix it up a bit when I have time.
     
  6. BleuStar

    BleuStar

    20
    0
    0
    New Castle, Delaware
    Sonic The Hedgehog (RevBS) [!]
    I haven't been able to come across the SS garbage bug, and it doesn't show up with the new configuration.

    Thank you for the help!
     
  7. Sorry if this is a bit of a n00by question, but I'm thinking of starting a little Sonic 1 hacking project. I was wondering if there was an easier to use program for editing Sonic's graphics. I've tried opening Sonic.bin up in my graphics editor, but Sonic's tiles are all over the place (as opposed to them being neatly arranged like I'm used to in graphics editing)! A quick Google search later, I found a program, but it only works for compiled ROMs. I need one that works for a split disassembly.
     
  8. RetroKoH

    RetroKoH

    Member
    1,709
    76
    28
    S1Fixed: A successor to ReadySonic
    I think you're in luck. I'm scouting members to test my WIP, Sonic Triad. It currently has a fully functional palette an tile editor, fully functional with compression support and multiple tools and features. UNFORTUNATLY no Mappings support yet.

    I am able to use it no problem with art editing in my hack. I plan on adding more later.

    I can give you an early copy of Triad to test out. Again, it's a very early build, but it works with, and it is specifically meant for, disassemblies.
     
  9. TheInvisibleSun

    TheInvisibleSun

    OVER THE TOP TECHNO-BLAST Member
    1,630
    194
    43
    Buffalo, NY, USA
    The Water
    For some reason, when I try to add code (as in, in addition to existing code) to any of the monitors in Sonic 1, it will not build. The rom also fails to build if I add code to the Goggles Monitor and any of the 'Invalid' Monitors (but not the "S" monitor). Does anyone know why this is happening?
     
  10. Destructiox

    Destructiox

    Masochistic Maniac, Raving Lunatic Member
    237
    0
    0
    East Midlands, England
    Sonic 1 Lunacy.
    Edit your build.bat in any text editor and add 'pause' to the end. (Without 's of course.)
     
  11. TheInvisibleSun

    TheInvisibleSun

    OVER THE TOP TECHNO-BLAST Member
    1,630
    194
    43
    Buffalo, NY, USA
    The Water
    What it told me after I did this was:

    Reported Size: 100303C Reported Checksum:0
    Size Applied: FFFFFFFF Checksum Applied: 0

    Press any key to continue . . .
     
  12. Jimmy Hedgehog

    Jimmy Hedgehog

    Member
    1,728
    8
    18
    England - Slough
    Getting the motivation to continue old projects
    Any errors at all?
     
  13. redhotsonic

    redhotsonic

    Also known as RHS Tech Member
    1,587
    10
    18
    United Kingdom
    YouTuber

    You need to tell us why it didn't build. Whenever it doesn't build, it will tell you the errors. If it doesn't say anything, then it should create a new file called "errors.txt" or something like that.


    Until then, we can't help.
     
  14. TheInvisibleSun

    TheInvisibleSun

    OVER THE TOP TECHNO-BLAST Member
    1,630
    194
    43
    Buffalo, NY, USA
    The Water
    This is what my error.txt said:



    SN 68k version 2.53

    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\_INC\PALETTE POINTERS.ASM(31) : Warning : Size of pal_levels ($B) does not match ZoneCount ($7).
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\SONIC.ASM(3053) : Warning : Size of colpointers ($6) does not match ZoneCount ($7).
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\_INCOBJ\3A GOT THROUGH CARD.ASM(175) : Warning : Size of levelorder ($6) does not match ZoneCount ($7).
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\SONIC.ASM(6851) : Warning : Size of musiclist2 ($6) does not match ZoneCount ($7).
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\_INC\PATTERN LOAD CUES.ASM(23) : Warning : Size of plc_levels ($6) does not match ZoneCount ($7).
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\_INC\PATTERN LOAD CUES.ASM(36) : Warning : Size of plc_animals ($6) does not match ZoneCount ($7).
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\SONIC.ASM(9121) : Warning : Forward reference to redefinable symbol
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\SONIC.ASM(2313) : Warning : Forward reference to redefinable symbol
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\SONIC.ASM(2399) : Warning : Forward reference to redefinable symbol
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\_INCOBJ\89 ENDING SEQUENCE STH.ASM(37) : Error : Branch (32784 bytes) is out of range
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\_INCOBJ\59 SLZ ELEVATORS.ASM(10) : Warning : Forward reference to redefinable symbol
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\_INCOBJ\5A SLZ CIRCLING PLATFORM.ASM(10) : Warning : Forward reference to redefinable symbol
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\_INCOBJ\5B STAIRCASE.ASM(10) : Warning : Forward reference to redefinable symbol
    C:\USERS\JAEONE\SAVED GAMES\HACKING\SONIC\MY HACKS\SONIC 1 CONTRAST - COPY\_INCOBJ\5E SEESAW.ASM(10) : Warning : Forward reference to redefinable symbol

    Assembly completed.
    1 error(s) from 52346 lines in 8.27 seconds


    I put the "Error" in bold.
     
  15. Jimmy Hedgehog

    Jimmy Hedgehog

    Member
    1,728
    8
    18
    England - Slough
    Getting the motivation to continue old projects
    All of those warnings seem worrying too...but that's a branch error meaning a piece of code is just too far away for the branch (bsr.w etc) to reach. For help with that, Selbi had this guide (the out of range stuff is at the start): http://sonicresearch.org/forums/index.php?showtopic=857
     
  16. TheInvisibleSun

    TheInvisibleSun

    OVER THE TOP TECHNO-BLAST Member
    1,630
    194
    43
    Buffalo, NY, USA
    The Water
    Error Fixed. Thanks!
     
  17. Jimmy Hedgehog

    Jimmy Hedgehog

    Member
    1,728
    8
    18
    England - Slough
    Getting the motivation to continue old projects
    Awesome, glad to hear it. Now I have a question...leads on from an older one. To make Sonic move/act normally in a Special Stage, would I have to basically rewrite the Special Stage Sonic (Object 09)'s code to be near identical to the standard Object 01 Sonic's codes in related places? Or would there be something more than that?

    To put it simpler, is it even POSSIBLE to have normal movement/actions and such in special stages? I found simply changing the line of code to load the object to load the normal Sonic instead presents a problem...camera's not focused on him. Not only that but he doesn't have code for interaction with the special stage objects so things probably go wrong there too offscreen.
     
  18. RetroKoH

    RetroKoH

    Member
    1,709
    76
    28
    S1Fixed: A successor to ReadySonic
    I've got lotsa questions needing anwering, but I'll start with one.

    I've applied THIS

    So, my problem is when I rapidly press start through and skip to the first zone quickly enough... I can't see my rings, and on rare occasions cannot see my HUD either.

    Is this an effect of enabling skipping through the SEGA sound? Or is it not? Any one else encounter this?
     
  19. MarkeyJester

    MarkeyJester

    Original, No substitute Resident Jester
    2,236
    491
    63
    Japan
    After following that guide, when the SEGA sound is requested, the 68k will be locked within that loop constantly sending PCM bytes to the YM2612's DAC port, when the start button is pressed, it will break out of the loop, and skip the remaining areas of only the sound driver's software (Caused by the "addq.w #4,sp"), this will only skip back to the calling of the sound driver.

    This means it will have no effect on the gameplay area of the software, even if the SEGA sound is requested mid-game. That is provided of course, that you haven't changed anything else you weren't suppose to change.

    Edit: If it puts your mind at ease, I've never came across the bug myself.
     
  20. RetroKoH

    RetroKoH

    Member
    1,709
    76
    28
    S1Fixed: A successor to ReadySonic
    K! That narrows it down, I think I now know what is causing the problem then... just a matter of fixing it. Much thanks! :)