don't click here

Basic Questions & Answers thread

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

  1. Chaos Rush

    Chaos Rush

    AKA J.Matz Member
    558
    49
    28
    I'm wondering:

    1. Are there any hacks of Sonic 1 that adds a spindash and nothing else?

    2. Are there any hacks of Sonic 1 that adds SRAM saving and nothing else?

    3. Are there any hacks of Sonic 2 that adds SRAM saving and nothing else?

    Yes, I'm aware that Sonic Classic Heroes effectively accomplishes both of this but the S3&K-style sprites and other added stuff makes it no longer feel like Sonic 1 and Sonic 2 to me, and I just want to play vanilla Sonic 1 and vanilla Sonic 2. If there aren't any 'simple' hacks like this, then I guess I'll just do it myself, but unfortunately I'm quite busy with another project at the moment.
     
  2. AURORA☆FIELDS

    AURORA☆FIELDS

    The cute one here Tech Member
    216
    24
    18
    Finland
    AMPS
    You are unlikely to find anything like this aside from a tutorial perspective. These things usually just get added as a part of the hack, rather than the sole purpose of it.
     
  3. Caverns 4

    Caverns 4

    Member
    346
    0
    16
    Sonic: Retold
    Though, now that you mention it, the guide for adding the spindash to Sonic 1 is rather... Out of date. It wouldn't be inappropriate if I updated it even though I didn't write it, would it?

    And though Sonic 1 has it on another site, I've never seen a guide on adding SRAM to Sonic 2. Best of done is tried adapting a Sonic 1 guide into the Sonic 2 disassembly.

    edit: Also, to be fair, a hack of Sonic 1 with SRAM would be kind of pointless, the game can be beaten with all emeralds pretty quickly without too much fuss.
     
  4. Violet

    Violet

    Member
    150
    2
    0
    Sweden
    Flicky Engine, Overdrive
    There's a hack that only adds the Spindash to STH1. (I think it's just called Sonic 1 with Spindash)
     
  5. RetroKoH

    RetroKoH

    Member
    1,661
    18
    18
    Project Sonic 8x16
    Unless you were adding it to a Sonic 1 hack with more... eh, substance... shall we say?
     
  6. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,651
    218
    43
    SonLVL
    Adding SRAM to a game isn't as straightforward as, say, adding the Spin Dash into Sonic 1. The actual process of adding and using SRAM support is fairly simple, but there are several points to consider: Do you want to save progress per-act or per-zone? Should the score be saved? Are you going to add a "New Game"/"Continue" selection to the title screen? Maybe you want multiple save slots?
     
  7. Caverns 4

    Caverns 4

    Member
    346
    0
    16
    Sonic: Retold
    Not that any of those would be particularly hard to work out - That's just about simple game design choice.

    I'd think that allowing for multiple save slots would only be as hard as coming up with a good structure to store whatever data is desired, and of course, coding the game to read it as needed. That said though, my thoughts aren't worth much, I haven't really dabbled in SRAM yet, after all.
     
  8. Chaos Rush

    Chaos Rush

    AKA J.Matz Member
    558
    49
    28
    I found a hack of Sonic 1 that just adds spindash and several bugfixes, it'll do for now. It still feels like Sonic 1 and that's what I want. (I'll also just stick to vanilla Sonic 2 as well) I mean, love Sonic Classic Heroes, but right now I'm in the mood for something that feels more 'official' and not a bombastic ROM hack, ya know? (Also I know there's that "Sonic 1 and 2" hack but the SRAM for that hack in particular doesn't work on Genesis Plus GX on Wii, and tbh I prefer to keep them as separate games)

    As for doing it myself, I'm not worried about how hard it is at all, because I've done plenty of ASM stuff on GBA and NES. I'll get around to it eventually, but right now I'm busy working on a NES game translation. When I get around to it though, I think I'll have progress saved per-zone like S3&K does. The Sonic Mania announcement suddenly made me think "gosh I gotta play through the classic games again".
     
  9. cokyen

    cokyen

    Member
    24
    0
    0
    We write to the Control Port to initialize the VDP registers.

    Code (Text):
    1.  
    2. move.l #VDPRegisters, a0
    3. move.l #0x18, d0    
    4. move.l #0x00008000, d1
    5.  
    6. @CopyVDP:
    7.     move.b (a0)+, d1
    8.     move.w d1, 0x00C00004
    9.     add.w #0x0100, d1      
    10.     dbra d0, @CopyVDP
    11.  
    The line move.w d1, 0x00C00004 essentials here is move.w 8 + register number + value , 0x00C0004 ...What does the first Niblet ( in this case 8) do? I read through Sonic2.doc and VDP docs. Does it have ton don with bits 15 and 14 in the VDP DOC Section: Programming VDP Register
     
  10. MarkeyJester

    MarkeyJester

    Time to Grow Up. Resident Jester
    2,127
    253
    63
    Japan
    http://forums.sonicretro.org/index.php?showtopic=35722&view=findpost&p=864819

     
  11. cokyen

    cokyen

    Member
    24
    0
    0
    Ok , is it 10 because it breaks it into two bytes and 10 would really be1000 for the higher byte which is 8 in binary?
     
  12. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    65
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    The higher byte's high nibble is not always 8; it can be 9 for some VDP registers, or take other values for other types of command words. For example, a DMA to the start of CRAM is triggered by one long-word command composed by the words $C000 and $0080, which must be written either as a long or as two words in that order. But yes, %1000 (binary) = 8 (decimal/hexadecimal). It is usually better to work in either binary or hexadecimal because they easily map one-to-one (four bits = 1 hexadecimal "digit"), whereas you have to convert to/from decimal.
     
  13. cokyen

    cokyen

    Member
    24
    0
    0
    1- What is the official name of and title of function of this first Niblet?

    2 - I do not see on then VDP Docs nor Sega2 doc any info on the first Niblet nor a summary of when it should be one value or another value? Is their an overview like this ?

    3 - I am using mostly documentation , conclusions based on many meticulolious repeated in efficient observation of manual and values ( say I observe 74 is assigned to VDP registe two via control port. ) I know a cell is 8 by 8 . I take the hex value 74 apart and convert it different ways like 07= 7 , 74 = 116 , 70 = 112 , 04 = 4 and divide amd multiply by 8 untill I understand why 74 is used to enable display , enable VInt , enable DMA , V28 mode PAL NTSC ...the notes from The tutorial I have mention the numbers 28 cells 224 pixels 240 pixels and so I see how that relates to the former numbers and enabling previous things ... Is their quicker and easier methods of learning this?
     
  14. MarkeyJester

    MarkeyJester

    Time to Grow Up. Resident Jester
    2,127
    253
    63
    Japan
    1 & 2: I have no idea what you're talking about, you might be looking for something that doesn't exists, either that or you're explaining it in a way that I cannot understand, and therefore cannot help you with.

    3: Treat it as binary:

    Code (Text):
    1.     move.w  #$8174,($C00004).l
    74 in binary is 0111 0100. The binary format is SDVM P100:

    • S = SMS mode (0 = No | 1 = Yes)
    • D = Display enabled (0 = No | 1 = Yes)
    • V = V-interrupt trigger on (0 = No | 1 = Yes)
    • M = DMA enabled (0 = No | 1 = Yes)
    • P = V-resolution (0 = 1C tiles (224) | 1 = 1E tiles (240))
    So, 74 has SMS mode off, Display on, V-interrupt trigger on, DMA on, V-resolution set to 1C tiles (224 pixels), the others are either unused, unknown, or documented thoroughly somewhere (it shouldn't be relative for you right now), so just assume that 1 must always be 1, and 0 must always be 0.
     
  15. cokyen

    cokyen

    Member
    24
    0
    0
    MarkeyJester, questions 1 and 2 ask : What is the name of the first niblet? This does not mean the first Niblet in this example but in general And what is the overarching function it covers , again in general, not for this particular example. Basically , can you provide me a description of what is common to what the first Niblet does , with any value it can have? Lastly, is their a summary of this somewhere ? I have Checked the VDP DC and sega 2 doc.
    Also thanks for answer to answer of question 3 . Any advice on learning methods through self taught means?
     
  16. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    65
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    1. It has no special name, and no special general function, not in this case, not in any other case. And the nibble isn't even special, it is just the high two bits of that nibble. Although the md.squee.co wiki page uses CD1 and CD0 for these two highest bits when they discuss command longwords.

    2. The same link I gave in the other thread: this; most command words are part of a long word used to trigger a DMA transfer, a write or a read; the remainder set VDP registers.

    3. I would recommend using a calculator that can support binary and hexadecimal displays and convert between them; that way, you could enter 74 (hex) in it, and see the resulting 01110100 binary, which would help immensely in seeing what it does.
     
  17. MrMaestro

    MrMaestro

    Not your average member of a forum
    20
    0
    0
    Singapore
    Solving a Rubik's cube
    Alright then, I need help with special stage and ending as the guide doesn't say about special stages and the ending part is incomplete.

    Any help is appreciated.
     
  18. RetroKoH

    RetroKoH

    Member
    1,661
    18
    18
    Project Sonic 8x16
    Not so much a basic question, but it doesn't warrant a topic of its own...

    But has anyone ever tried porting Sonic 3K Collision Engine to Sonic 1? I've recently tried this, as I'm backporting a lot of stuff from the S3K engine to S1. I feel like I'm almost there with the collision but something makes it unable to handle the angles properly, at all... and I dunno why.

    RAR containing my disasm. Pretty much all the code is in one .asm file, so it should be easy to navigate. It's pretty barebones as I started over from an empty ASM file... so there isn't a lot to navigate through, and yes plenty of things are not present or broken in the ROM, but right now I'm just focused on the collision.
     
  19. MrMaestro

    MrMaestro

    Not your average member of a forum
    20
    0
    0
    Singapore
    Solving a Rubik's cube
    I have tried a few times to port S3K's Collision Manager to S1 but for some reason I could never get it to work. However I did get S3K's Ring Manager to work and it saves a ton of ram in doing it, so my recommendation is to try that first then attempt again to do what I couldn't.
     
  20. RetroKoH

    RetroKoH

    Member
    1,661
    18
    18
    Project Sonic 8x16
    I already have the S3K Ring Manager in...