Announcement

Collapse
No announcement yet.

SNES Boredom Hacking Suggestion (Music Codes for SPCs)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    That's where these codes come in. One a side note: If someone could get ZSNES to recognize Game Boy games, I could dump them with ZSNES. All of the games save the song data into RAM so it wouldn't be problem in that retrospect.
    Last edited by nensondubois; 10-23-2008, 04:16:16 PM.
    "Roll The Bones" - Rush
    Patreon.com/nensondubois Twitter #nensondubois_Youtube.com/user/nensondubois

    Comment


    • #32
      ZSNES can't recognize GB games.
      The Super Game Boy is dumped, but not the actual Gameboy hardware it contained.

      For the SGB games to work on ZSNES, the devs would have to add Gameboy emulation.

      Comment


      • #33
        The games can be recognized by it if you put them in a certain range even though they can't be played.
        "Roll The Bones" - Rush
        Patreon.com/nensondubois Twitter #nensondubois_Youtube.com/user/nensondubois

        Comment


        • #34
          If you can't play them then it's pretty useless.

          Comment


          • #35
            Not if you use my SGB music modifier code once the game has been loaded into the SGB and dump the music that way. There is another method of dumping the songs using real hardware and a FGPA chip.
            "Roll The Bones" - Rush
            Patreon.com/nensondubois Twitter #nensondubois_Youtube.com/user/nensondubois

            Comment


            • #36
              I've just gotten the Toy Story SPC tunes to play in an emulator. I used the SGB codes along with what I learned about borders(and picked up from Knurek about preferring ZSNES for ripping) to figure out the remaining pieces of data needed to perform this tricky little maneuver.

              I also learned that the SGB has a myriad of unripped versions of existing sounds built into it.

              I understand how the SOUND and SOU_TRN commands work. Any game that plays music in GBC mode in BGB, but plays nothing in SGB mode can likely be ripped as an SPC now.

              It's also possible that I could rip custom sub-effects used just to enhance music, but that's far lower on the scale of crap to try.

              If you have something in mind, I may be willing to put in the effort to rip it.

              I find this considerably more interesting than border hacking.

              Toy Story (Super GameBoy) (Timed/Tagged)
              (Copy/Paste to a browser address bar)
              www.angelfire.com/nc/ugetab/tssgb_SPC.zip

              Already e-mailed snesmusic about the set's qualification, so don't bug them about it.
              This reality is mine. Go hallucinate your own.

              Comment


              • #37
                Wow... I didn't think this was actually possible. This is amazing! Should I submit this to SNESmusic.org with both of us being credited because this is partially my project and I help in some ways rip them, gave the idea and a few other reasons. You don't feel like doing the other games do you? I also told SNESmusic as well before I knew you did.

                These two games ass well as the others listed in ReyVGM's border hacking topic Page 5 default have enhanced music when played on a Super Game Boy!
                Animaniacs
                Disney's Mulan
                Last edited by nensondubois; 10-25-2008, 09:57:29 PM.
                "Roll The Bones" - Rush
                Patreon.com/nensondubois Twitter #nensondubois_Youtube.com/user/nensondubois

                Comment


                • #38
                  Nenson, don't be an ass. If I hadn't felt vaguely like tackling this for the past several days, it wouldn't be done.

                  I know that when I submit an idea, it's something I'd like done, and may try to do myself. Your contribution to my doing this is that you wanted it done, and said so. My contribution to doing this was that I wanted it done, studied the SGB packets relevant to sound data, deduced the area in GB VRAM that was being used for the transfer, separated the data from the meta data, debugged multiple serial writing routines(a part that ReyVGM doesn't have motivation to learn, and he seems pretty determined), extracted the relevant data from the ROMs, investigated methods of injecting Sound APU data into 2 emulators, tested ways of playing the music contained in the data through the SNES RAM, documented all of the above for later use, looked for more games made by the same people who made Toy Story, ripped several GBSs to go with the new SPCs that came out of the games(see my page), and basically, I did the part that gets face time.

                  I also used the knowledge I gained to extract about 25 additional tracks from the SGB 1 BIOS, likely to be familiar to people who played some of the SGB enhanced games. (Using built-in SFX and Looping sounds was one of the ways SGB games were enhanced by it)

                  I've almost never seen a requester get credit for requesting that something be done. I've seen many people get credit for actually doing stuff though.

                  How about this, I'll keep what I've got, and you can do animaniacs. I expect it would only take me a little bit to do the 13(only?) songs I found, because it's basically the same as the last 3 games I did. I'll let you try, and when you do it, we can share credit, because I gave you all these great hints on how to start.
                  This reality is mine. Go hallucinate your own.

                  Comment


                  • #39
                    Ugetab, I said several times that I wanted to learn. But communicating though a forum wasn't going to cut it, I had to be in real time through a messenger service or IRC. You never responded to that, so I assumed you didn't want to waste your time with it or me.

                    It's easy for you to say that I should learn it, you have years of experience with it and have a real passion for it. But it's kind of hard to learn a process when I don't even know the basics of the language and am only able to make simple codes. Specially when I've never really had a passion for computer language or hacking and I'm only going to use it on this instance.
                    It took me 2 years to make my first invincibility code and it was by an accident, so you can guess how long it will take me to learn all of this without any assistance.

                    I already finished checking all the games and all I got is a short list of games that need border hacking to finally finish this, I will not bother you again with this if you chose to help me on this for the last time.

                    I know finding these borders isn't something you are interested in or care for, but if you help me on this (for the last time) you'll be doing a service to everyone interested in SGB information.

                    Please reconsider it
                    Last edited by ReyVGM; 10-26-2008, 12:24:48 AM.

                    Comment


                    • #40
                      I don't mock those who contribute, ReyVGM. I've simply dealt with Nensondubois for quite some time. I was noting that, even for someone who actually tries, it's not a task simple enough to be undertaken lightly.

                      I'll point out again that there's just no way to explain the nature of what you'd need to do to extract borders, beyond trial and error. I could probably make instructions to let you rip SPC tunes from SGB games easier than I could explain what it takes to show a different border, because there's the difference between definitively setup items, and ambiguously setup items. It's not much for me to swish the code around to find what's going on, but I put too much thought into border hacking to express it in a way that doesn't destroy the intent of the expression. SGB SPCs are definate. There's a point in the code where you can stop and go to the next step, and it's not really that hard to tell when you've hit it, if it's been explained. Borders rely on a setup that could be construed as similar, and if I took the time, I could probably extract the exact data sent to apply a border, but you're escaping from the realm of data into the realm of coding to find additional ones.

                      The simplest instruction I could give you is to watchpoint FF00 in BGB to find writes that put 0x30 into FF00, then find the last 30 write in the sub-routine, and then hit F7 once and watch it as it's putting out SGB packet. 'Run' the program if it's the wrong packet. That's the gist of the starting point. Find your way out of the routine when you hit the border sending packets(PCT_TRN/CHR_TRN), and see if there's another path in the code, or code similar to what's sending the noted packets, and see if you can force it to run without crashing everything else. Then, beyond that, you'll likely need to make a code to reproduce the effect, which can be more challenging.

                      I may be able to screw around for a bit and try to help you get started, but you can't just learn 'how to hack borders'. You'll have to keep trying stuff for a while until you really grasp at least the branching concepts, and can discern similar code as being related.
                      This reality is mine. Go hallucinate your own.

                      Comment


                      • #41
                        Originally posted by ugetab View Post
                        I don't mock those who contribute, ReyVGM. I've simply dealt with Nensondubois for quite some time. I was noting that, even for someone who actually tries, it's not a task simple enough to be undertaken lightly.
                        I never said or felt you were mocking me. Unless you are talking about nenson, which in that case I never seen you mocking him either. Or maybe I'm misunderstanding the meaning of what you said? (English is not my main language).

                        I'll point out again that there's just no way to explain the nature of what you'd need to do to extract borders, beyond trial and error. I could probably make instructions to let you rip SPC tunes from SGB games easier than I could explain what it takes to show a different border. The simplest instruction I could give you is to watchpoint FF00 in BGB to find writes that put 0x30 into FF00, then find the last 30 write in the sub-routine, and then hit F7 once and watch it as it's putting out SGB packet. 'Run' the program if it's the wrong packet. That's the gist of the starting point. Find your way out of the routine when you hit the border sending packets(PCT_TRN/CHR_TRN), and see if there's another path in the code, or code similar to what's sending the noted packets, and see if you can force it to run without crashing everything else. Then, beyond that, you'll likely need to make a code to reproduce the effect, which can be more challenging.
                        I gave up on trying to learn because everything you said pointed to be somewhat hard to do for someone with experience (like yourself) and almost impossible for someone without it (like me).
                        You trying to teach me how to do everything I need to do to find borders would be like me trying to teach a 6 year old how to play Romance of the Three Kindoms.


                        Granted, I would gladly take the time to soak myself in all the information needed for me to do this, but please understand that my daily computer hobbies or activities have nothing to do with computer language or debuggers. I don't even know what exactly is it that I'm seeing in a debugger.

                        Every time I play a game I try to contribute the most I can about what I've found, be it through codes for GameFAQs, GS codes for GSHI, information for Wikipedia, maps for VGMaps or screenshots for my own site. None of them require the use of Assembler or a debugger.

                        This hacking SGB borders help was just in this instance. I am not doing anything else that requires computer language expertise or debuggers.
                        It was a godsend in the first place that you took an interest in helping me in the first place, without you I wouldn't have gone as far as I did.
                        But, again, if I were to need to use Assembler or a debugger in the future, then I would gladly learn how to use them (just like I learned HTML or how to make codes by myself). But as far as I know, I won't need to use it again and I have never needed it before because my daily computer activities (or hobbies if you will) don't require that knowledge.

                        But now my project is done and all I got left is a short list of games to be checked (well, short compared to the 800 games I had to check!). I played them in every possible way and couldn't find the extra borders, thus, I came to you for help.

                        It's true, I don't have the motivation to learn (anymore). But not because I'm one of those people that ask help from others all the time and never bother to learn how to do it by themselves. But because it's something completely foreign to me, not foreign as in "another country", but foreign as in "another universe full of aliens".
                        And if I were to use it regularly, then I would learn it. But I won't use it regularly, because nothing of what I do in the computer requires it. Just in case, I'm not dissing Assembly language or debugging, but it's just something that I've never had to use before.

                        I just require your help one last time, if you wish (or force yourself) to help me this last time, then you just made my day (crosses fingers). If not, then no problem, I give you my thanks and I appreciate all the help you have given me so far
                        Last edited by ReyVGM; 10-26-2008, 07:28:04 AM.

                        Comment


                        • #42
                          I remember that guy, nensonduboius... more of a perfectionist to be correct when it comes to SPCs. He dumps vocal samples and he dumped a bunch for FIFA Soccer '96, and four were tracks! Just four!

                          However, he did dump Pagemaster, and I'm glad for that. However, I still noticed not all his tracks are at the first note...
                          Last edited by KungFuFurby; 10-26-2008, 07:49:47 AM.

                          Comment


                          • #43
                            Only the password track is off by a note and I'll re-rip it. and it's the same as the timed A bonus song. Also DK 94 has one voice and one song done in SGB and there are 14 tracks to Animaniacs. I'm not a bad person I just wanted to do this project because well I'm not sure how it started. Also you said before that you were willing to write a document for extracting SGB music, could you do that so I could finish the other games?
                            Last edited by nensondubois; 10-26-2008, 08:22:39 AM.
                            "Roll The Bones" - Rush
                            Patreon.com/nensondubois Twitter #nensondubois_Youtube.com/user/nensondubois

                            Comment


                            • #44
                              I didn't say I was willing, per se. I said it would be easier to do than writing a guide to hacking borders. The gist is: In BGB, use the above mentioned FF00 = 30 method to find the serial writing routine using BGB, step once to find the packet sent using the packet viewer, when it's a SOU_TRN, step out. If only 1 SOU_TRN gets done(seen by a reset, going to the first song), then you can save a save-state from the debugger window("abc.sna") and move on to the next paragraph. If there's more than 1, you'll have to adjust the data to the correct position in the ZSNES save-state, according to the size(8800), and the write position(8802). See next paragraph for info on them.

                              8800 is used to transfer the data. Not explicitly documented by others, the 16 bit address at 8800(Byte flipped, 000c = c00 data) is the length of the data(starting from 8804), 8802(Byte flipped, 002B = 2B00) is the location in the SNES APU(ARAM in Snes9X) to put the data at. Usually ends up at 2B00, which can be located in a save state quickly enough(33713 for a save-state of a running SGB in ZSNES). If it's not an address between 2B00 and 4AFF, then you may want to ask for help, as it'll get interesting at that point. Get the exact size of the data listed. The data will be terminated by a 04, preceeded by some null data. If you use the size at the start, this is simply a test against you misreading it and getting it wrong. If it's not 04 terminated, recheck your process. Open the "abc.sna" file in a hex editor(see my page), and search for the data listed in the debugger window at 8800. The first 4 bytes should have only 1 match in the .sna. When you find it, exclude the 8800 and 8802 variables, go to the 8804 data, and select data of a size indicated by the 8800 variable(byte-flipped), and copy it if there's a nearby 04 termination(don't select extra to get the 04 terminating byte). Paste it to 2B00 in the ZSnes save-state(33713). If it's an address from 2B00 to 4AFF, then subtract 2B00 from the 8802(byte-flipped) address, and add that amount to the the Save-state address for a start-pasting position. If it's outside the range I just noted, post here, because it'll probably need more customized care to get it ripped.

                              Once you've got all the relevant data pasted over the existing data in the APU part of the ZSnes file, then you can reload the save state. If it fails to load, you probably 'inserted' the data instead(In hexedit 2.0, it'll always ask if you want to turn on insert mode. Saying no overwrites existing data with new data). If it does load, use this code to try to select Song 1 in the APU:
                              7E034001

                              If it works, try 7E034002.
                              Keep adding to it as needed(I keep a .cht file for loading with just 7E034001, 02, 03, ... to keep it quick)

                              If the music plays, and you're ready to rip, simultaneously press F4, and F1. If you get the menu for ripping save states, and it says on the screen that it's loading the save state, then you can try ripping. If it can never find the end of the loop, make a very slight delay between hitting F4, then F1. Usually, you can just keep hitting the buttons and ripping until you get an almost instantly ripped SPC(or .sp1,.sp2,etc), and have that as a good rip. Remember to test them out in an SPC player to be sure they work and sound alright.

                              btw, there's not 14 tracks to Animaniacs SGB. 16 in the GBS amount to 13 SPCs due to excluding certain tracks from being SPCs. There's 13 that account for all the music in the GBS. It was also slightly unusual in it's execution, in that I actually had to do it the way I just outlined above, instead of taking easy assembly-understanding shortcuts.

                              Now, it's nothing for me to lose the claim on some game rips. If you'll rerip the Animaniacs set using the above, you can tag your name on it, even though I just handed you the key. Just remember that I want it done right for taking several minutes to explain it, instead of just doing it right myself to begin with.
                              This reality is mine. Go hallucinate your own.

                              Comment


                              • #45
                                Trickier still this project is.

                                Turns out that it can send multiple packets of data to the SGB in 1 sitting, and they have to be interperted. The 'Donkey Kong' SGB setup used about 3 or 4 separate items to put out 2 voices, setup a music piece to be accessible, and set the data for that music.

                                I may have to go back and check some of the games I already did, but I doubt there's any issue with them, since there's enough tracks coming from them to account for the GBS tunes.

                                Donkey Kong(2 voices, 1 song):
                                http://www.angelfire.com/nc/ugetab/dksgb_SPC.7z
                                This reality is mine. Go hallucinate your own.

                                Comment

                                Working...
                                X