don't click here

Basic Questions & Answers thread

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

  1. iirc the letters are spanned over a few art files, check all of them, make sure you have enough VRAM space too.
     
  2. Jimmy Hedgehog

    Jimmy Hedgehog

    Member
    1,728
    8
    18
    England - Slough
    Getting the motivation to continue old projects
    The letters are all in "ttlcards.bin" in the 2005 disassembly. Hmm...what comes in the VRAM after the Title Cards?
     
  3. E-122-Psi

    E-122-Psi

    Member
    2,470
    612
    93
    Okay, I've tried dumping VRAM with DebuGens, however I can only get the art tiles loaded from the file. Anyone know how to get the mappings editable?

    EDIT: Wait, never mind, figured it out. Feel stupid now.

    However I've found another problem. Does anyone know where in the ASM loads the file for the Special Stage 'GOT A CHAOS EMERALD' etc text, as I need to direct it to another file with a word edited into a 'Y'.
     
  4. I don't know if this has been asked before, but I downloaded the new version of SonED mainly to edit Sonic 3 and Sonic & Knuckles. I read carefully about renaming the two seperate games as "s3.bin" and "sk.bin", but when I go to run batch for the 3ksplit.txt it says unable to find s2.bin and sk.bin. What am I doing wrong?
     
  5. GT Koopa

    GT Koopa

    Member
    2,021
    18
    18
    Elgin, IL
    Flicky Turncoat DX, T.L.W.S. Vs M.G.W.
    Well, since this is a question...I will post this here.

    So about this Master Edition 2.

    It appeared last October in SSRG, and even earlier on Youtube (the Youtube account is now deactivated). While making a spiritual sequel to a hack somebody else had done already would seem to raise a few red flags, when the hack was released and I got to play it there were various things that seemed to be copied EXACTLY from the original Master Edition. Here is the quote of the edit I made of my last post back in that same month:


    I guess since it was an edit to an existing post, even though it was a few days later nobody thought it was edited...so everybody just stopped looking at the thread. After talking with Markey on SSRG's IRC, he mentioned that I should report it using the actual report button, something I never thought of doing back then. Is the original maker of Master Edition still around here? I want to solve this once and for all.

    Master Edition 1's Hidden Palace

    Master Edition 2's Hidden Palace

    Take a look for yourself.
     
  6. Mastered Realm

    Mastered Realm

    Member
    3,828
    553
    93
    -
    Who here tried extracting data.cpk from the PSN verison of Sonic 4? I tryied QuickBMS, CPK unpack and CRI Packed File Maker but they crashed when extracting the 1st file! :( The CPK is fine, I got the same CPK from two different sources of the PKG... (PSN version).
     
  7. alexman

    alexman

    Doing work once again Member
    3
    0
    0
    Music. Lots of it.
    My first post: I do not know if anyone asked this, and if so I'm sorry.

    I cannot find any tutorials on how to add Super Sonic into Sonic the Hedgehog 1. I searched the SSRG, Sonic Retro, Google, but nothing. Is there any other site or something that can help me out? If so, thank you very much. I appreciate it in advance.

    Now the next one: When I use the "Extra Characters" tutorial in the SCHG guide, I end up with a very glitched up character. Not only that, when I use my backup and replace everything I changed, I STILL get screweed up tiles. Should I just leave it alone for now, or am I doing something wrong (I add the animations, mappings, pattern load cues, art, everything)?

    I know this post is kind of short...sorry.

    EDIT: Never mind. Figured it out, but I can't use the actual art and animations. I guess I'll figure it out later on. :)
     
  8. Somebody else could probably give a more detailed answer, but to my knowledge, there are no tutorials for this.
    You should study current the ASM Guides, and once you are familiar with how things work, study the Sonic 2 disassembly. Somewhere in the Sonic object there will be the code for handling Super Sonic, it's most likely commented with easy to use variables names, so you can use that code as a reference to implement the same functionality in Sonic 1. An exacty copy/paste won't work, as function names and variable names/addresses do not match across games, so you'll have to manually fix those.
     
  9. coder12

    coder12

    Member
    Hey all, I hate to waste one of my trial posts on such a basic question, but I'm going nuts with this one. I've been reading for quite some time on my issue, but haven't found a solution for it.
    Whenever I try to convert an XM >> SMPS file, all of the voices I select are the same (except for the PCM channels). I have an x3v voice bank file that I use to choose my voices; however, not matter what voices I choose, Voice Bank: 0 is always the one that gets used.
    Also, I feel I should mention that this happens for all of my xm songs, that I'm using MPTracker for conversions from midi, and that this happens in all versions of xm>>smps that I had tried.

    Any help is (as always) appreciated! I'm hoping to make some great songs :thumbsup:


    Figured it out! The issue came in with my .xm files.
     
  10. Jimmy Hedgehog

    Jimmy Hedgehog

    Member
    1,728
    8
    18
    England - Slough
    Getting the motivation to continue old projects
    Hey, I can't remember if I've asked this before, but is there a way in Sonic 1 to retain your shield between acts if you still have it? Like Sonic 1 SMS did basically. This is the 2005 Hivebrain disassebly by the way. I've tried removing clear/remove shield lines apart from the hurt one but that seemed to do nothing...any ideas?
     
  11. vladikcomper

    vladikcomper

    Tech Member
    205
    134
    43
    Sonic Warped
    Basically, you need to remove a line that resets shield flag from Level init code. 'loc_39E8' is what you're looking for:

    Code (Text):
    1. loc_39E8:
    2.         move.b  d0,($FFFFFE1A).w
    3.         move.b  d0,($FFFFFE2C).w ; clear shield
    4.         move.b  d0,($FFFFFE2D).w ; clear invincibility
    5.         move.b  d0,($FFFFFE2E).w ; clear speed shoes
    6.         <...>
    D0 was set to zero somewhere before this code, so all these lines clear memory variables just like comments say. If you remove the 'move.b d0,($FFFFFE2C).w' line, the shield flag will remain unchanged, saving its value from the previous level.

    But the fact is, one flag is not enough to set up the shield. A shield object must be loaded to display its sprite (otherwise, you won't see the shield, but due to the flag set Sonic will be protected from one hit anyways). See how it's done in shield monitor's code, 'Obj2E_ChkShield'. So, you should put a new condition in 'loc_39E8' code, like 'if shield flag was set, load shield object'.

    It will look something like this:
    Code (Text):
    1.         tst.b   ($FFFFFE2C).w   ; is shield flag set?
    2.         beq.s   @skip   ; if not, branch
    3.         move.b  #$38,($FFFFD180).w ; load shield object ($38)
    4.  
    5. @skip:
    However, you can do it even without flag check. Just load the object. Obj38's code will test if the flag is clear and if it is, delete the object immediately. So you may end just with this:

    Code (Text):
    1. loc_39E8:
    2.         move.b  d0,($FFFFFE1A).w
    3.         move.b  #$38,($FFFFD180).w ; ++ load shield object  ($38)
    4.         move.b  d0,($FFFFFE2D).w ; clear invincibility
    5.         move.b  d0,($FFFFFE2E).w ; clear speed shoes
    6.         <...>
    Piece of cake, isn't it? =)
     
  12. Jimmy Hedgehog

    Jimmy Hedgehog

    Member
    1,728
    8
    18
    England - Slough
    Getting the motivation to continue old projects
    Oh wow, I didn't even realise it still protected you removing the flag (though now it seems obvious), I just looked at the lack of the shield object and thought "damn, no good". Thanks so much! ^_^
     
  13. SonikkuForever

    SonikkuForever

    Be cool, be wild, and be groovy! Member
    576
    0
    16
    Gathering information on Sega World Sydney and collecting Sonic merchandise.
    I've been looking for Sonic and Tails' models from Sonic Jam, as well as character models from Sonic R, for a while now. Does anyone know where I can find them? I think they'd look quite nice converted to papercrafts.
     
  14. E-122-Psi

    E-122-Psi

    Member
    2,470
    612
    93
    This may sound like a dumb question, but I'm very new to level editing. Is there a way to add solidity to 'walk through' walls in Sonic 1 (eg. I think SonED shows solidity as FF symbols). It's just I want to fill spots in walls that don't have collision and adding objects like unbreakable walls doesn't work properly.
     
  15. Destructiox

    Destructiox

    Masochistic Maniac, Raving Lunatic Member
    237
    0
    0
    East Midlands, England
    Sonic 1 Lunacy.
    Get on IRC, I can give a hand :v
     
  16. E-122-Psi

    E-122-Psi

    Member
    2,470
    612
    93
    Usual time or now?
     
  17. Jimmy Hedgehog

    Jimmy Hedgehog

    Member
    1,728
    8
    18
    England - Slough
    Getting the motivation to continue old projects
    Well, this is embarrassing. It seems I somehow managed to disable debug at some point, but don't know how. Again Sonic 1 Hivebrain disassembly. What would I have done to do this? XD Or a different approach, how/where would I put it back, and how do you change the debug code? Level select still works so I know it's just debug. Weird stuff.
     
  18. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    How would I be able to code an object so a subtype uses different art?

    EDIT:Or rather, a different animation depending on the subtype?
     
  19. MarkeyJester

    MarkeyJester

    Original, No substitute Resident Jester
    2,192
    406
    63
    Japan
    Your request is really quite simple, something as simple as:

    Code (Text):
    1.         move.b  $28(a0),$1C(a0)
    Would go down well, the above will set that what ever your subtype ID is, will be your animation ID. Of course, if you would like specific ID's based on the subtype you could try something along the lines of:

    Code (Text):
    1.         moveq   #$00,d0
    2.         move.b  $28(a0),d0
    3.         move.b  AniIDs(pc,d0.w),$1C(a0)
    With AniIDs being:

    Code (Text):
    1. ; ===========================================================================
    2. ; ---------------------------------------------------------------------------
    3. AniIDs:     dc.b    $00,$02,$20,$1A,$13
    4.         even
    5. ; ---------------------------------------------------------------------------
    6. ; ===========================================================================
    This would make it so that if the subtype is 00, it'll set animation ID 00, if it's 01, it'll set ID 02, if it's 02, it'll set 20, if it's 03, it'll set 1A, and so forth.

    You can do the same thing with almost anything, here's an example of setting different mappings and VRam addresses depending on the subtype:

    Code (Text):
    1.         moveq   #$00,d0
    2.         move.b  $28(a0),d0
    3.         add.w   d0,d0
    4.         move.w  d0,d1
    5.         add.w   d0,d0
    6.         add.w   d1,d0
    7.         lea ArtIDs(pc,d0.w),a1
    8.         move.w  (a1)+,$02(a0)
    9.         move.l  (a1)+,$04(a0)
    With ArtIDs being:

    Code (Text):
    1. ; ===========================================================================
    2. ; ---------------------------------------------------------------------------
    3. ArtIDs:     dc.w    $0020
    4.         dc.l    MapList01
    5.         dc.w    $2F60
    6.         dc.l    MapList02
    7.         dc.w    $2027
    8.         dc.l    MapList03
    9.         even
    10. ; ---------------------------------------------------------------------------
    11. ; ===========================================================================
    This will load whichever VRam read address (the word value) and the Mapping list address under it depending on the subtype ID, if the ID is 00, it'll load the first $0020 VRam and MapList01, if it's 01 it'll load $2F60 and MapList02, if it's 02, it'll load $2027 and MapList03.

    The important thing is to understand that it's all based on mathematics, to break down the above example:

    Code (Text):
    1.         move.b  $28(a0),d0  ; Load ID
    2.         add.w   d0,d0       ; Times by 2
    3.         move.w  d0,d1       ; store it
    4.         add.w   d0,d0       ; times by 2 (x4)
    5.         add.w   d1,d0       ; add x2 (x6)
    As you can see the ID is taken out of the Subtype space and is multiplied by 6, if the ID was 00, the result would be 0000, if the ID was 01, the result would be 0006, if the ID was 02, the result would be 000C, etc.

    EDIT: changing asm tags to code, the colours make it too damn hard to see.
     
  20. RetroKoH

    RetroKoH

    Member
    1,662
    22
    18
    Project Sonic 8x16
    So I am learning ASM and hacking, and I am, or course, a complete and total noob... So I am starting with the How-To's: Everything is going great and I've made plenty of progress easily... but I've run into a strange phenomenon in regards to Sonic 1's demo play:

    I was fixing the code that causes the demo to mess up whenever you hold down buttons... and have successfully fixed it... but something else happened:

    GHZ demo playthrough. I am mashing buttions around testing to make sure it doesn't interfere, and Demo Sonic hits the first Crabmeat and receives an EXTRA LIFE for it!!! Certainly weird. I have modded to give you an extra life for 50,000 pts, and last I checked, 100 is certainly not 50,000...

    EDIT: It also happens when I'm not pressing buttons as well... but this doesn't happen during normal gameplay.

    I am using the latest SVN disassembly (Or HG disassembly... whatever) and have been following the guide pretty well. I'm sure I haven't made any errors, I must have just missed changing something, OR this is another bug not yet reported...???