Basic Questions and Answers Thread

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

  1. nineko

    nineko I am the Holy Cat Member

    Joined:
    Mar 24, 2008
    Messages:
    1,902
    Location:
    italy
    As a general note, the Sound Test *should* follow the pointer list in most cases, which might or might not be sorted according to the real order in the ROM. What I mean is that the pointer list might be like: 1234, 5678, 2345, 6789, 3456. The songs don't need to be sorted like they are in the actual ROM, but the song starting at byte 2345 *should* be the third one in the Sound Test, even if it's actually the second one in the ROM. However, it is also possible that there is some kind of LUT which assigns other "pointer IDs" to "Sound Test IDs"; this is done, for example, in Sonic 2 as well (as seen on the SCHG on Retro), where it's sometimes known as "Master Playlist".


    Out of curiosity, I decided to look at the Columns 3 ROM, at the location specified by that same SCHG page, and the pointers actually seem to be sorted like the real ROM order in this particular case, so this might indeed be a case of "Pointer-to-SoundTest LUT". Just to make sure, did you double check that you're counting them right? It's easy to be off by one (and the Sound Test starts from 0 in Columns 3, which never helps if you're used to start counting from 1).


    What you can do if all else fails is change the order of the pointers by hand, and put later pointers in the first slot (or in an appropriate slot according to the LUT). In this way the other songs should appear as "BGM NO. 00" in the Sound Test, and you can easily work it out from there. This is how most hidden songs are found and ripped, btw. I first used this method to rip a VGM of an unused hidden song from Snow Bros many years ago while researching the Cube format, and I recently used it to rip the VGM packs of SkyRoads (thanks to ValleyBell who suggested that this technique could work there, which indeed worked) and Slider (discovering another unused hidden song in the process). This technique can't work, instead, for cases such as the recently discovered Marble Zone music in the 8-bit version of Sonic 1, because there's simply no pointer for that song, it's just unreferenced data at its best, so you can't swap another pointer to magically find it (but of course you can work out the value for the new pointer by hand, there just isn't one you can copy from).
     
    Last edited by a moderator: Nov 29, 2013
  2. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    Since I ripped and named all the songs properly some time ago, let me paste the file list from my Columns III folder:


    01 [empty].smz
    02 Chicken of Three Feathers.smz
    03 Sega Logo.smz
    04 Explorer.smz
    05 Enigma.smz
    06 Victory!.smz
    07 Morning.smz
    08 Mummy's Awakening.smz
    09 Chinese Bicycle.smz
    0A Yuki Gassen.smz
    0B Introductory Theme.smz
    0C Columns March.smz
    0D First Year of Genroku.smz
    0E Networked Melon.smz
    0F Sunday.smz
    10 Wild Shellfish.smz
    11 Yes, Yes!.smz
    12 The Opening Bell.smz
    13 Unfinished Roll.smz
    14 Column Dive.smz
    15 Grimoar Expert.smz
    16 Snowman.smz
    17 Pemo Pemo Kuroto.smz
    18 Kuroto's Origin.smz
    19 Ashimai.smz
    1A Everyone in the Harbor.smz
    1B Yes, Yes, Yes!.smz
    1C Industrial District.smz
    1D Pokasuka Beginning.smz
    1E The End.smz
    1F Scene of Carnage.smz
    Song 01 actually contains some SFX-like data, but all tracks point directly to a "Track End" coordination flag.

    Additionally I just did a quick research and found the sound test -> sound ID lists:


    BGM:   002E00 (U) / 002BBE (J)
    SFX:   002EFC (J) / 002C8C (J)
    Voice: 002FEA (J) / 002D66 (J)

    If you have sound tests with numbers between 80 and FF (like Sonic 1, for example) you can be pretty sure that they use the same order as the pointer list.

    EDIT: Added list locations for Columns III (J) ROM.
     
    Last edited by a moderator: Nov 29, 2013
  3. MainMemory

    MainMemory Well-Known Member Member

    Joined:
    Mar 29, 2011
    Messages:
    922
    I suppose you'll have to be more specific as to the type or art you are attempting to port.If you wish to port level art (tiles/blocks/chunks), LevelConverter is the tool you want.

    If you want to port sprite graphics for objects, enemies or players, MappingsConverter can convert the mappings and DPLCs (if any), and the art itself should be a simple copy/paste.

    If you want to port any other kind of art, you'll have to be more specific.
     
    Last edited by a moderator: Nov 29, 2013
  4. FFuser

    FFuser a.k.a Darklight Member

    Joined:
    Nov 14, 2013
    Messages:
    88
    Thanks Nineko and ValleyBell, that pointer switching technique helps to preview songs before ripping them. About the counting, I was off, but after recounting... the pointers to the "empty" song and "sega logo" on ValleyBell's list still throws it off a bit (both are not in the game's sound test, so even though Industrial District is the 26th song in the sound test, it ends up being the 28th music pointer).

    The LUT at location 2E00 in Columns 3 omits "81" and "83" from its list, so I guess that's why those wouldn't show up in the sound test but need to be accounted for when counting pointers?

    Btw, just to clarify, how do I find the sound test -> sound ID lists within the ROM data? Do I just search for something like a sequence between 00-1F and/or 80-FF?
     
  5. Onapa

    Onapa Newcomer Trialist

    Joined:
    Jul 18, 2013
    Messages:
    5
    Location:
    Michigan
    I suppose you'll have to be more specific as to the type or art you are attempting to port.
    If you wish to port level art (tiles/blocks/chunks), LevelConverter is the tool you want.


    If you want to port sprite graphics for objects, enemies or players, MappingsConverter can convert the mappings and DPLCs (if any), and the art itself should be a simple copy/paste.


    If you want to port any other kind of art, you'll have to be more specific.



    Thanks for the information.
     
  6. Devon

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

    Joined:
    Aug 26, 2013
    Messages:
    1,372
    Location:
    your mom
    You can just easily port the art in by just simply including it in the game, but the mappings need to be converted. You can use MainMemeory's Mappings Converter, which can convert mappings and DPLCs from one game to another, or you can used SonMapEd. First, set the game format to the game that you are porting from. Then load the mappings (if there is, load the DPLC for the art as well) and then set the game format to the game that your porting into. Then save the mappings (and DPLC, if there is) and include it in your game.

    I highly suggest using the mappings converter to keep things simple.
     
    Last edited by a moderator: Nov 30, 2013
  7. Crimson Neo

    Crimson Neo I changed a lot. Member

    Joined:
    Sep 9, 2013
    Messages:
    506
    Location:
    Where I didn't wanted to be.
    what is a good program to edit palettes in disassembly?

    because I tried to edit the title screen in S3K pallet (using a palette editor 1.1) and the file was corrupted, the palettes were out of place I already tried to fix but the error persists.
    what program someone recommend  for me?

    edit:palete editor is name of pogram.
     
    Last edited by a moderator: Dec 2, 2013
  8. LazloPsylus

    LazloPsylus The Railgun Member

    Joined:
    Nov 25, 2009
    Messages:
    Location:
    Academy City
    Hex editor, I would like you to meet kelvin, who wants to edit palettes. kelvin, hex editor. Hex editor, kelvin.

    Seriously, though, when tools don't seem to work with what you want, there's always either building your own tool or using our good friend, the hex editor.
     
  9. Onapa

    Onapa Newcomer Trialist

    Joined:
    Jul 18, 2013
    Messages:
    5
    Location:
    Michigan
    A Great pallet editor is HivePal. HivePal is pretty easy to use, compared to hex editing them. The only thing is you have to open the pallet files, bins most of the time, with the OPEN ROM tab or button.

    HivePal is old so if any one has a better alternative be my guest.

    A question I have is, what is the pallet editor you're talking about?

    (You don't need to answer it if you don't want to.)
     
    Last edited by a moderator: Dec 2, 2013
  10. Devon

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

    Joined:
    Aug 26, 2013
    Messages:
    1,372
    Location:
    your mom
    Well, there's also SonMapEd, which can also edit art and mappings.
     
  11. Crimson Neo

    Crimson Neo I changed a lot. Member

    Joined:
    Sep 9, 2013
    Messages:
    506
    Location:
    Where I didn't wanted to be.
    @Onapa I meant that the program name is called pallet editor,and thanks for suggestion.

    @Evanescense I've used hex editor before, but I do not use anymore because he a bit difficult use to me.

     
     
  12. warr1or2

    warr1or2 I AM CLG Member

    Joined:
    Apr 7, 2008
    Messages:
    416
    Location:
    Town Creek, AL
    I just need someone to lead me in the right direction.

    With my S1 mod, I extended the use of graphics using retro's guide to have the spindash art working right. Which had my character, Richter, looking good, not great. still some bugs.

    My question is, Is there a way to use different frames for loops in a level?

    His animation

    ; ---------------------------------------------------------------------------
    ; Richter Animation Script
    ; ---------------------------------------------------------------------------
    ; ---------------------------------------------------------------------------
    ; Key In
    ; Coding - (charani_Run).l
    ; Data - Whip to attack, His own Jump
    ; Needs Work - Ditto
    ; ---------------------------------------------------------------------------
            dc.w charani_Walk-Richteranidata
            dc.w charani_Run-Richteranidata    ; Richter Needs His Own Coding
            dc.w charani_Roll-Richteranidata ;    Richter Needs His Own Data
            dc.w charani_Roll2-Richteranidata    ; Richter Needs His Own Data
            dc.w charani_Push-Richteranidata
            dc.w charani_Wait-Richteranidata
            dc.w charani_Balance-Richteranidata
            dc.w charani_LookUp-Richteranidata
            dc.w charani_Duck-Richteranidata
            dc.w charani_Warp1-Richteranidata
            dc.w charani_Warp2-Richteranidata
            dc.w charani_Warp3-Richteranidata
            dc.w charani_Warp4-Richteranidata
            dc.w charani_Stop-Richteranidata
            dc.w charani_Float1-Richteranidata
            dc.w charani_Float2-Richteranidata
            dc.w charani_Spring-Richteranidata
            dc.w charani_LZHang-Richteranidata
            dc.w charani_Leap1-Richteranidata
            dc.w charani_Leap2-Richteranidata
            dc.w charani_Surf-Richteranidata
            dc.w charani_Bubble-Richteranidata
            dc.w charani_Death1-Richteranidata
            dc.w charani_Drown-Richteranidata
            dc.w charani_Death2-Richteranidata
            dc.w charani_Shrink-Richteranidata
            dc.w charani_Hurt-Richteranidata
            dc.w charani_LZSlide-Richteranidata
            dc.w charani_Blank-Richteranidata
            dc.w charani_Float3-Richteranidata
            dc.w charani_Float4-Richteranidata
            dc.w charani_Spin_Dash-Richteranidata
            dc.w charani_Spring_Jump-Richteranidata
            dc.w charani_Transform-Richteranidata
            dc.w charani_ArialKick-Richteranidata
            dc.w charani_Jump-Richteranidata
            dc.w charani_Whip-Richteranidata        
    charani_Walk:    dc.b $FF, 8, 9,    $0A, 9, $FF        ;0
    charani_Run:    dc.b $FF, $11, $12, $13, $14, $15, $16, $17, $18, $FF, $FF, $FF    ;1
    charani_Roll:    dc.b $2E, $29, $29, $29, $FE, 1, 0    ;2    
    charani_Roll2:    dc.b $FE, $29,    $FF    ; Needs Work     ;3 or 2?
    charani_Push:    dc.b $FD, $1A, $1B, $FF, $FF, $FF    ;4
    charani_Wait:    dc.b $17, 1, 2,    3, 2, $FF        ;5
    charani_Balance:    dc.b $1F, $1A, $1B, $FF        ;6
    charani_LookUp:    dc.b 5, $2E, $FF, 0            ;7
    charani_Duck:    dc.b 6, $4A, $4B, $FE, 1, 0        ;8
    charani_Warp1:    dc.b $3F, $33, $FF, 0            ;9
    charani_Warp2:    dc.b $3F, $34, $FF, 0            ;A
    charani_Warp3:    dc.b $3F, $35, $FF, 0            ;B
    charani_Warp4:    dc.b $3F, $36, $FF, 0            ;C
    charani_Stop:    dc.b 7,    $44, $44, $FF            ;D
    charani_Float1:    dc.b 7,    $3C, $3F, $FF            ;E
    charani_Float2:    dc.b 7,    $3C, $3D, $53, $3E, $54, $FF, 0 ;F
    charani_Spring:    dc.b $2E, $0B, $0C, $0D, $FE, 1, 0    ;10
    charani_LZHang:    dc.b 4,    $47, $48, $FF            ;11
    charani_Leap1:    dc.b $F, $43, $43, $43,    $FE, 1        ;12
    charani_Leap2:    dc.b $10, $43, $44, $44, $FE, 1, 0    ;13
    charani_Surf:    dc.b $3F, $49, $FF, 0            ;14
    charani_Bubble:    dc.b $B, $2F, $FD, 0, 0            ;15
    charani_Death1:    dc.b $16, $1D, $1C, $FE, 1, 0        ;16
    charani_Drown:    dc.b $2F, $2F, $FF, 0            ;17
    charani_Death2:    dc.b $16, $1D, $1C, $FE, 1, 0        ;18
    charani_Shrink:    dc.b 3,    $4E, $4F, $50, $51, $52, 0, $FE, 1, 0;19
    charani_Hurt:    dc.b 3,    $19, $FF, 0            ;1A
    charani_LZSlide:    dc.b 7, $55, $57, $FF        ;1B
    charani_Blank:    dc.b $77, 0, $FD, 0            ;1C
    charani_Float3:    dc.b 3,    $3C, $3D, $53, $3E, $54, $FF, 0    ;1D
    charani_Float4:    dc.b 3,    $3C, $FD, 0            ;1E
    charani_Spin_Dash:    dc.b 0, $2A, $2B, $2C, $2D, $FF    ;1F
    charani_Spring_Jump:    dc.b $FE, $1C, $1D, $1E, $1F, $1E, $1F,    $FF;20
    charani_Transform:    dc.b $2E, $5F, $5F, $FE, 1, 0    ;21
    charani_ArialKick:     dc.b 3, 4, 5, 6, $FE, 1, 0    ;22
    charani_Jump:    dc.b $2E, $0B, $0C, $0D, $FE, 1, 0    ;23
    charani_Whip:    dc.b 5, $3B, $3C, $3D, $FE, 1, 0    ;24
            even

    Note this is what i'm questioning changing

    charani_Walk:    dc.b $FF, 8, 9,    $0A, 9, $FF        ;0
    charani_Run:    dc.b $FF, $11, $12, $13, $14, $15, $16, $17, $18, $FF, $FF, $FF    ;1

    as you can see the Run animation has 8 frames, when it comes to loops frames use are that of

    charani_Spring_Jump:    dc.b $FE, $1C, $1D, $1E, $1F, $1E, $1F,    $FF;20

    The "SpringJump here is just richter's upward strike from Castlevania SOTN, only when in the loop when running, some frames of this animation Inverts, which is why i ask Is there a way of using different animations with the walk and run animations with loops and hills.

    I (think) have seen this used in Sonic 3k
     
  13. FFuser

    FFuser a.k.a Darklight Member

    Joined:
    Nov 14, 2013
    Messages:
    88
    I hate to keep bombarding with music questions, but one of the songs I'm working on sounds a little off in the sense that one (two?) of the channels seems to play slightly later than it's supposed to.

    What types of things would make the timing off like that when it's ripped/ported straight from the original game and what would I have to look into to fix that? I checked the coordination flags several times and I don't think any of them are wrong.

    If someone doesn't mind listening to it for a minute (because maybe you've heard and dealt with the same type of thing before and it's hard for me to describe) here it is: http://www.sendspace.com/file/pla6je

    It's "Explorer" from Columns 3 ported to work with Sonic 1. From looking closely at it in SMPSplayer, it starts off fine, but then whatever the FM1 and/or FM5 channels are playing is slightly delayed a little later in the song for some reason. Same deal in the actual Sonic game.

    Edit: Had to lower the duration of a "Rest" note on the FM5 channel to get that part in sync (or close to it) with the rest of the song. I don't know why that was necessary, but whatever. It worked for that case.

    What happened to the "Technical Discussion" section of the Retro forums? I'm still not finding the answer I'm looking for to understand and fix some specific parts of these songs and some of the topics that may have had some related information are just dead links now.
     
    Last edited by a moderator: Dec 5, 2013
  14. BlackYoshi

    BlackYoshi Active Member Member

    Joined:
    Nov 10, 2013
    Messages:
    27
    Location:
    Argentina
    how can i port custom SonMapED sprites and pallete to my rom?
     
    Last edited by a moderator: Dec 4, 2013
  15. Devon

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

    Joined:
    Aug 26, 2013
    Messages:
    1,372
    Location:
    your mom
  16. BlackYoshi

    BlackYoshi Active Member Member

    Joined:
    Nov 10, 2013
    Messages:
    27
    Location:
    Argentina
    i must undump my rom? because i don't know what i must do with this:

    " Go to File -> Save Data File. Since all we did today was edit the tile graphics, we just have to save the "Uncompressed Tile Graphics" to "sonic.bin" in "artunc". Once you saved it, build your rom and voila, your new art has replaced the old one! " ???

    how i can build the rom?

    im using sonik sprite as sprite editor, but it doesn't have all mappings, and sprite remix edition doesn't work in my pc.
     
  17. RocketRobz

    RocketRobz Coolest of TWL, and Sonic fan Member

    Joined:
    Aug 20, 2009
    Messages:
    80
    To build the ROM, double-click "built.bat" (without the quotes, of course)

    If you have a disassembly though.
     
  18. BlackYoshi

    BlackYoshi Active Member Member

    Joined:
    Nov 10, 2013
    Messages:
    27
    Location:
    Argentina
    i don't know how to do that disassembly, if exists a tool for that?
     
  19. RocketRobz

    RocketRobz Coolest of TWL, and Sonic fan Member

    Joined:
    Aug 20, 2009
    Messages:
    80
    Here

    Click on

    Sonic 1 Disassembly 2005

    and read the description, and click "Download".

    Then use a clean unhacked Sonic the Hedgehog (REV 00)[!] rom.

    and rename it to s1.bin, then double-click split.bat

    Now, for the art, use SonMapEd.

    Sonik Sprite is just from the old days of hacking.
     
  20. Devon

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

    Joined:
    Aug 26, 2013
    Messages:
    1,372
    Location:
    your mom
    Set it up: http://info.sonicretro.org/SCHG_How-to:Set_up_a_Sonic_1_split_disassembly (Download for disassembly included!)

    You now have all the necessary files! Click here to learn 68000 assembly, so you can put custom moves for Sonic and some new objects, or whatnot, and being able to understand it more clearly than with hex. Everyone now uses disassemblies. There will be new guides and some help that will use one, so if you want to be able to follow the guides and to be able to use someone's help, you'll need a disassembly. I do not know a user here that uses hex anymore (maybe except for SMPS music), except for some newcomers. So if there is anyone that is using hex, STOP, and download and set up a disassembly, as they are much easier to edit and understand.

    EDIT: I didn't realize Bobesh posted, so I quoted.
     
    Last edited by a moderator: Dec 4, 2013